2025-11-24T09:00:12.063 [DEBUG] [Thread-187105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:00:16.517 [DEBUG] [Thread-187106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:00:23.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:00:23.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:00:23.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-11-24T09:00:24.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 0, 16), 9.93, 51.29, 0.0, 27.74, 14.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:00:24.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:00:16
2025-11-24T09:00:24.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:00:24.798 [DEBUG] [Thread-187107] [transport.py] [_log()] starting thread (client mode): 0xd31b0580
2025-11-24T09:00:24.799 [DEBUG] [Thread-187107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:00:24.819 [DEBUG] [Thread-187107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:00:24.819 [INFO] [Thread-187107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:00:24.822 [DEBUG] [Thread-187107] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] client lang: <none>
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] server lang: <none>
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] kex follows: False
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] Compression: none
2025-11-24T09:00:24.823 [DEBUG] [Thread-187107] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:00:24.840 [DEBUG] [Thread-187107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:00:24.841 [DEBUG] [Thread-187107] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:00:24.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:00:24.842 [DEBUG] [Thread-187107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:00:24.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:00:24.845 [DEBUG] [Thread-187107] [transport.py] [_log()] userauth is OK
2025-11-24T09:00:24.845 [DEBUG] [Thread-187107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:00:24.845 [DEBUG] [Thread-187107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:00:24.845 [DEBUG] [Thread-187107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:00:24.845 [DEBUG] [Thread-187107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:00:24.860 [INFO] [Thread-187107] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:00:24.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:00:25.467 [DEBUG] [Thread-187107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:00:25.467 [DEBUG] [Thread-187107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:00:25.468 [DEBUG] [Thread-187107] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:00:25.509 [DEBUG] [Thread-187107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:00:25.509 [DEBUG] [Thread-187107] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:00:25.512 [DEBUG] [Thread-187107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:00:25.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:00:25.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:00:25.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:00:25.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:00:25.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:00:25.537 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:00:25.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:00:25.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:00:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:00:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.291370 -999.00  +14.60  23.82     53   +5.10 1 1 1 1 1   888    0 11.86 144.17 ----- 23.8 23.8 166.8 29.3 20.6 -26.2 19.6 -24.2 18.4 -23.9 19.0 -25.3
2025-11-24T09:00:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:00:25.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:00:25.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.291370
2025-11-24T09:00:25.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:00:25.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:00:25.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:00:25.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:00:25.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:00:25.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:00:16', tmtdew=9.93, humidity=51.29, cloud=0.0, wind=27.74, temperature=14.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T06:59:34.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:00:25.541 [DEBUG] [Thread-187107] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:00:25.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:00:25.636 [DEBUG] [Thread-187110] [transport.py] [_log()] starting thread (client mode): 0xd31b3790
2025-11-24T09:00:25.636 [DEBUG] [Thread-187110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:00:25.651 [DEBUG] [Thread-187110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:00:25.651 [INFO] [Thread-187110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:00:25.658 [DEBUG] [Thread-187110] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] client lang: <none>
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] server lang: <none>
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] kex follows: False
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:00:25.659 [DEBUG] [Thread-187110] [transport.py] [_log()] Compression: none
2025-11-24T09:00:25.660 [DEBUG] [Thread-187110] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:00:25.716 [DEBUG] [Thread-187110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:00:25.717 [DEBUG] [Thread-187110] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:00:25.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:00:25.718 [DEBUG] [Thread-187110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:00:25.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:00:25.773 [DEBUG] [Thread-187110] [transport.py] [_log()] userauth is OK
2025-11-24T09:00:25.773 [DEBUG] [Thread-187110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:00:25.773 [DEBUG] [Thread-187110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:00:25.773 [DEBUG] [Thread-187110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:00:25.773 [DEBUG] [Thread-187110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:00:25.798 [INFO] [Thread-187110] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:00:25.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:00:25.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:00:26.625 [DEBUG] [Thread-187110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:00:26.626 [DEBUG] [Thread-187110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:00:26.673 [DEBUG] [Thread-187110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:00:26.674 [DEBUG] [Thread-187110] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:00:26.683 [DEBUG] [Thread-187110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:00:26.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:00:26.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-11-24T09:00:26.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-11-24T09:00:26.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:00:26.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:00:26.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:00:26.719 [DEBUG] [Thread-187110] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:00:27.089 [DEBUG] [Thread-187112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:00:42.142 [DEBUG] [Thread-187113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:00:56.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:00:56.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:00:56.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:00:57.177 [DEBUG] [Thread-187114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:00:57.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 0, 48), 10.73, 48.52, 0.0, 24.63, 14.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:00:57.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:00:48
2025-11-24T09:00:57.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:00:57.707 [DEBUG] [Thread-187115] [transport.py] [_log()] starting thread (client mode): 0xd0700130
2025-11-24T09:00:57.707 [DEBUG] [Thread-187115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:00:57.723 [DEBUG] [Thread-187115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:00:57.723 [INFO] [Thread-187115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] client lang: <none>
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] server lang: <none>
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] kex follows: False
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] Compression: none
2025-11-24T09:00:57.726 [DEBUG] [Thread-187115] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:00:57.742 [DEBUG] [Thread-187115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:00:57.743 [DEBUG] [Thread-187115] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:00:57.743 [DEBUG] [Thread-187115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:00:57.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:00:57.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:00:57.743 [DEBUG] [Thread-187115] [transport.py] [_log()] userauth is OK
2025-11-24T09:00:57.743 [DEBUG] [Thread-187115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:00:57.743 [DEBUG] [Thread-187115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:00:57.743 [DEBUG] [Thread-187115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:00:57.743 [DEBUG] [Thread-187115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:00:57.760 [INFO] [Thread-187115] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:00:57.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:00:58.571 [DEBUG] [Thread-187115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:00:58.572 [DEBUG] [Thread-187115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:00:58.572 [DEBUG] [Thread-187115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:00:58.612 [DEBUG] [Thread-187115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:00:58.612 [DEBUG] [Thread-187115] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:00:58.614 [DEBUG] [Thread-187115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:00:58.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:00:58.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:00:58.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:00:58.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:00:58.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:00:58.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:00:58.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:00:58.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:00:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:00:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.292064 -999.00  +14.30  23.12     54   +5.20 1 1 1 1 1   888    0 11.98 148.25 ----- 23.1 23.1 139.4 28.9 20.6 -26.6 19.6 -24.8 18.4 -25.1 19.1 -26.1
2025-11-24T09:00:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:00:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:00:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.292064
2025-11-24T09:00:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:00:58.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:00:58.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:00:58.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:00:58.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:00:58.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:00:48', tmtdew=10.73, humidity=48.52, cloud=0.0, wind=24.63, temperature=14.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:00:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:00:58.633 [DEBUG] [Thread-187115] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:00:58.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:00:58.726 [DEBUG] [Thread-187118] [transport.py] [_log()] starting thread (client mode): 0xc9b816f0
2025-11-24T09:00:58.726 [DEBUG] [Thread-187118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:00:58.746 [DEBUG] [Thread-187118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:00:58.746 [INFO] [Thread-187118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] client lang: <none>
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] server lang: <none>
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] kex follows: False
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:00:58.753 [DEBUG] [Thread-187118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:00:58.754 [DEBUG] [Thread-187118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:00:58.754 [DEBUG] [Thread-187118] [transport.py] [_log()] Compression: none
2025-11-24T09:00:58.754 [DEBUG] [Thread-187118] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:00:58.811 [DEBUG] [Thread-187118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:00:58.811 [DEBUG] [Thread-187118] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:00:58.811 [DEBUG] [Thread-187118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:00:58.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:00:58.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:00:58.875 [DEBUG] [Thread-187118] [transport.py] [_log()] userauth is OK
2025-11-24T09:00:58.875 [DEBUG] [Thread-187118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:00:58.875 [DEBUG] [Thread-187118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:00:58.875 [DEBUG] [Thread-187118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:00:58.875 [DEBUG] [Thread-187118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:00:58.888 [INFO] [Thread-187118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:00:58.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:00:58.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:00:59.418 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:00:59.418 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:00:59.737 [DEBUG] [Thread-187118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:00:59.737 [DEBUG] [Thread-187118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:00:59.785 [DEBUG] [Thread-187118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:00:59.785 [DEBUG] [Thread-187118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:00:59.793 [DEBUG] [Thread-187118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:00:59.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:00:59.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:00:59.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-11-24T09:00:59.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:00:59.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:00:59.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:00:59.829 [DEBUG] [Thread-187118] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:01:12.206 [DEBUG] [Thread-187120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:01:16.599 [DEBUG] [Thread-187121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:01:27.267 [DEBUG] [Thread-187122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:01:29.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:01:29.842 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:01:29.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-11-24T09:01:30.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 1, 21), 10.55, 49.19, 0.0, 24.53, 14.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:01:30.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:01:21
2025-11-24T09:01:30.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:01:30.923 [DEBUG] [Thread-187123] [transport.py] [_log()] starting thread (client mode): 0xd31ccdf0
2025-11-24T09:01:30.923 [DEBUG] [Thread-187123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:01:30.934 [DEBUG] [Thread-187123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:01:30.934 [INFO] [Thread-187123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:01:30.938 [DEBUG] [Thread-187123] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:01:30.938 [DEBUG] [Thread-187123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:01:30.938 [DEBUG] [Thread-187123] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:01:30.938 [DEBUG] [Thread-187123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:01:30.938 [DEBUG] [Thread-187123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:01:30.938 [DEBUG] [Thread-187123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:01:30.938 [DEBUG] [Thread-187123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:01:30.938 [DEBUG] [Thread-187123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:01:30.938 [DEBUG] [Thread-187123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:01:30.939 [DEBUG] [Thread-187123] [transport.py] [_log()] client lang: <none>
2025-11-24T09:01:30.939 [DEBUG] [Thread-187123] [transport.py] [_log()] server lang: <none>
2025-11-24T09:01:30.939 [DEBUG] [Thread-187123] [transport.py] [_log()] kex follows: False
2025-11-24T09:01:30.939 [DEBUG] [Thread-187123] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:01:30.940 [DEBUG] [Thread-187123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:01:30.940 [DEBUG] [Thread-187123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:01:30.940 [DEBUG] [Thread-187123] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:01:30.940 [DEBUG] [Thread-187123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:01:30.940 [DEBUG] [Thread-187123] [transport.py] [_log()] Compression: none
2025-11-24T09:01:30.940 [DEBUG] [Thread-187123] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:01:30.960 [DEBUG] [Thread-187123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:01:30.961 [DEBUG] [Thread-187123] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:01:30.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:01:30.962 [DEBUG] [Thread-187123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:01:30.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:01:31.005 [DEBUG] [Thread-187123] [transport.py] [_log()] userauth is OK
2025-11-24T09:01:31.005 [DEBUG] [Thread-187123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:01:31.006 [DEBUG] [Thread-187123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:01:31.006 [DEBUG] [Thread-187123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:01:31.006 [DEBUG] [Thread-187123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:01:31.028 [INFO] [Thread-187123] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:01:31.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:01:31.687 [DEBUG] [Thread-187123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:01:31.696 [DEBUG] [Thread-187123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:01:31.696 [DEBUG] [Thread-187123] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:01:31.728 [DEBUG] [Thread-187123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:01:31.729 [DEBUG] [Thread-187123] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:01:31.732 [DEBUG] [Thread-187123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:01:31.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:01:31.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:01:31.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:01:31.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:01:31.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:01:31.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:01:31.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:01:31.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:01:31.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:01:31.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.292411 -999.00  +14.10  18.81     56   +5.60 1 1 1 1 1   888    0 11.54 133.12 ----- 18.8 18.8 147.2 24.6 20.5 -26.0 19.6 -24.8 18.4 -25.1 19.0 -27.0
2025-11-24T09:01:31.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:01:31.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:01:31.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.292411
2025-11-24T09:01:31.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:01:31.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:01:31.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:01:31.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:01:31.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:01:31.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:01:21', tmtdew=10.55, humidity=49.19, cloud=0.0, wind=24.53, temperature=14.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:01:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:01:31.760 [DEBUG] [Thread-187123] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:01:31.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:01:31.855 [DEBUG] [Thread-187126] [transport.py] [_log()] starting thread (client mode): 0xd3136830
2025-11-24T09:01:31.855 [DEBUG] [Thread-187126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:01:31.871 [DEBUG] [Thread-187126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:01:31.871 [INFO] [Thread-187126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:01:31.878 [DEBUG] [Thread-187126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] client lang: <none>
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] server lang: <none>
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] kex follows: False
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:01:31.879 [DEBUG] [Thread-187126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:01:31.889 [DEBUG] [Thread-187126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:01:31.889 [DEBUG] [Thread-187126] [transport.py] [_log()] Compression: none
2025-11-24T09:01:31.889 [DEBUG] [Thread-187126] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:01:31.937 [DEBUG] [Thread-187126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:01:31.938 [DEBUG] [Thread-187126] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:01:31.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:01:31.940 [DEBUG] [Thread-187126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:01:31.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:01:31.996 [DEBUG] [Thread-187126] [transport.py] [_log()] userauth is OK
2025-11-24T09:01:31.996 [DEBUG] [Thread-187126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:01:31.996 [DEBUG] [Thread-187126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:01:31.997 [DEBUG] [Thread-187126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:01:31.997 [DEBUG] [Thread-187126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:01:32.015 [INFO] [Thread-187126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:01:32.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:01:32.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:01:32.873 [DEBUG] [Thread-187126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:01:32.873 [DEBUG] [Thread-187126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:01:32.921 [DEBUG] [Thread-187126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:01:32.921 [DEBUG] [Thread-187126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:01:32.929 [DEBUG] [Thread-187126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:01:32.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:01:32.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-11-24T09:01:32.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-11-24T09:01:32.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:01:32.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:01:32.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:01:32.961 [DEBUG] [Thread-187126] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:01:42.296 [DEBUG] [Thread-187128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:01:57.345 [DEBUG] [Thread-187129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:01:59.564 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:01:59.565 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:02:02.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:02:02.983 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:02:02.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-11-24T09:02:03.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 1, 53), 10.05, 50.87, 0.0, 25.89, 14.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:02:03.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:01:53
2025-11-24T09:02:03.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:02:04.020 [DEBUG] [Thread-187130] [transport.py] [_log()] starting thread (client mode): 0xd31b0820
2025-11-24T09:02:04.020 [DEBUG] [Thread-187130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:02:04.041 [DEBUG] [Thread-187130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:02:04.041 [INFO] [Thread-187130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] client lang: <none>
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] server lang: <none>
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] kex follows: False
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] Compression: none
2025-11-24T09:02:04.045 [DEBUG] [Thread-187130] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:02:04.063 [DEBUG] [Thread-187130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:02:04.063 [DEBUG] [Thread-187130] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:02:04.064 [DEBUG] [Thread-187130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:02:04.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:02:04.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:02:04.066 [DEBUG] [Thread-187130] [transport.py] [_log()] userauth is OK
2025-11-24T09:02:04.066 [DEBUG] [Thread-187130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:02:04.066 [DEBUG] [Thread-187130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:02:04.066 [DEBUG] [Thread-187130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:02:04.066 [DEBUG] [Thread-187130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:02:04.085 [INFO] [Thread-187130] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:02:04.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:02:04.872 [DEBUG] [Thread-187130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:02:04.872 [DEBUG] [Thread-187130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:02:04.872 [DEBUG] [Thread-187130] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:02:04.913 [DEBUG] [Thread-187130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:02:04.913 [DEBUG] [Thread-187130] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:02:04.915 [DEBUG] [Thread-187130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:02:04.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:02:04.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:02:04.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:02:04.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:02:04.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:02:04.937 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:02:04.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.292759 -999.00  +14.00  18.65     56   +5.60 1 1 1 1 1   888    0 11.06 118.64 ----- 18.6 18.6 151.0 22.5 20.5 -26.8 19.7 -25.4 18.3 -24.4 19.0 -27.2
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.292759
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:02:04.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:01:53', tmtdew=10.05, humidity=50.87, cloud=0.0, wind=25.89, temperature=14.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:01:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:02:04.939 [DEBUG] [Thread-187130] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:02:05.011 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:02:05.022 [DEBUG] [Thread-187133] [transport.py] [_log()] starting thread (client mode): 0xd07ce590
2025-11-24T09:02:05.022 [DEBUG] [Thread-187133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:02:05.038 [DEBUG] [Thread-187133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:02:05.038 [INFO] [Thread-187133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] client lang: <none>
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] server lang: <none>
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] kex follows: False
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:02:05.046 [DEBUG] [Thread-187133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:02:05.048 [DEBUG] [Thread-187133] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:02:05.048 [DEBUG] [Thread-187133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:02:05.048 [DEBUG] [Thread-187133] [transport.py] [_log()] Compression: none
2025-11-24T09:02:05.048 [DEBUG] [Thread-187133] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:02:05.103 [DEBUG] [Thread-187133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:02:05.103 [DEBUG] [Thread-187133] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:02:05.103 [DEBUG] [Thread-187133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:02:05.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:02:05.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:02:05.165 [DEBUG] [Thread-187133] [transport.py] [_log()] userauth is OK
2025-11-24T09:02:05.165 [DEBUG] [Thread-187133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:02:05.165 [DEBUG] [Thread-187133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:02:05.165 [DEBUG] [Thread-187133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:02:05.165 [DEBUG] [Thread-187133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:02:05.188 [INFO] [Thread-187133] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:02:05.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:02:05.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:02:06.069 [DEBUG] [Thread-187133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:02:06.069 [DEBUG] [Thread-187133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:02:06.118 [DEBUG] [Thread-187133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:02:06.118 [DEBUG] [Thread-187133] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:02:06.130 [DEBUG] [Thread-187133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:02:06.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:02:06.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')
2025-11-24T09:02:06.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-11-24T09:02:06.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:02:06.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:02:06.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:02:06.168 [DEBUG] [Thread-187133] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:02:12.385 [DEBUG] [Thread-187135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:02:16.839 [DEBUG] [Thread-187136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:02:27.421 [DEBUG] [Thread-187137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:02:36.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:02:36.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:02:36.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-11-24T09:02:36.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 2, 25), 9.9, 51.32, 0.0, 25.5, 13.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:02:36.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:02:25
2025-11-24T09:02:37.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:02:37.280 [DEBUG] [Thread-187138] [transport.py] [_log()] starting thread (client mode): 0xd07005e0
2025-11-24T09:02:37.280 [DEBUG] [Thread-187138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:02:37.299 [DEBUG] [Thread-187138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:02:37.299 [INFO] [Thread-187138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:02:37.302 [DEBUG] [Thread-187138] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:02:37.302 [DEBUG] [Thread-187138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] client lang: <none>
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] server lang: <none>
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] kex follows: False
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] Compression: none
2025-11-24T09:02:37.303 [DEBUG] [Thread-187138] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:02:37.322 [DEBUG] [Thread-187138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:02:37.323 [DEBUG] [Thread-187138] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:02:37.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:02:37.324 [DEBUG] [Thread-187138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:02:37.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:02:37.326 [DEBUG] [Thread-187138] [transport.py] [_log()] userauth is OK
2025-11-24T09:02:37.326 [DEBUG] [Thread-187138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:02:37.326 [DEBUG] [Thread-187138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:02:37.326 [DEBUG] [Thread-187138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:02:37.326 [DEBUG] [Thread-187138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:02:37.351 [INFO] [Thread-187138] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:02:37.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:02:37.972 [DEBUG] [Thread-187138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:02:37.973 [DEBUG] [Thread-187138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:02:37.973 [DEBUG] [Thread-187138] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:02:38.013 [DEBUG] [Thread-187138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:02:38.014 [DEBUG] [Thread-187138] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:02:38.016 [DEBUG] [Thread-187138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:02:38.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:02:38.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:02:38.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:02:38.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:02:38.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:02:38.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:02:38.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:02:38.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:02:38.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:02:38.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.293106 -999.00  +14.00  14.07     57   +5.60 1 1 1 1 1   888    0 11.21 123.79 ----- 14.1 14.1 153.0 24.0 20.6 -26.7 19.6 -26.8 18.4 -24.4 19.1 -25.9
2025-11-24T09:02:38.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:02:38.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:02:38.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.293106
2025-11-24T09:02:38.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:02:38.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:02:38.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:02:38.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:02:38.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:02:38.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:02:25', tmtdew=9.9, humidity=51.32, cloud=0.0, wind=25.5, temperature=13.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:02:04.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:02:38.050 [DEBUG] [Thread-187138] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:02:38.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:02:38.145 [DEBUG] [Thread-187141] [transport.py] [_log()] starting thread (client mode): 0xd31b0340
2025-11-24T09:02:38.145 [DEBUG] [Thread-187141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:02:38.160 [DEBUG] [Thread-187141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:02:38.160 [INFO] [Thread-187141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:02:38.168 [DEBUG] [Thread-187141] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:02:38.168 [DEBUG] [Thread-187141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:02:38.168 [DEBUG] [Thread-187141] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:02:38.168 [DEBUG] [Thread-187141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:02:38.168 [DEBUG] [Thread-187141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:02:38.168 [DEBUG] [Thread-187141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:02:38.168 [DEBUG] [Thread-187141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:02:38.168 [DEBUG] [Thread-187141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:02:38.168 [DEBUG] [Thread-187141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:02:38.168 [DEBUG] [Thread-187141] [transport.py] [_log()] client lang: <none>
2025-11-24T09:02:38.169 [DEBUG] [Thread-187141] [transport.py] [_log()] server lang: <none>
2025-11-24T09:02:38.169 [DEBUG] [Thread-187141] [transport.py] [_log()] kex follows: False
2025-11-24T09:02:38.169 [DEBUG] [Thread-187141] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:02:38.169 [DEBUG] [Thread-187141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:02:38.169 [DEBUG] [Thread-187141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:02:38.169 [DEBUG] [Thread-187141] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:02:38.169 [DEBUG] [Thread-187141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:02:38.169 [DEBUG] [Thread-187141] [transport.py] [_log()] Compression: none
2025-11-24T09:02:38.169 [DEBUG] [Thread-187141] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:02:38.229 [DEBUG] [Thread-187141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:02:38.229 [DEBUG] [Thread-187141] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:02:38.230 [DEBUG] [Thread-187141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:02:38.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:02:38.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:02:38.285 [DEBUG] [Thread-187141] [transport.py] [_log()] userauth is OK
2025-11-24T09:02:38.285 [DEBUG] [Thread-187141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:02:38.286 [DEBUG] [Thread-187141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:02:38.286 [DEBUG] [Thread-187141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:02:38.286 [DEBUG] [Thread-187141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:02:38.305 [INFO] [Thread-187141] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:02:38.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:02:38.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:02:39.161 [DEBUG] [Thread-187141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:02:39.161 [DEBUG] [Thread-187141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:02:39.209 [DEBUG] [Thread-187141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:02:39.209 [DEBUG] [Thread-187141] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:02:39.217 [DEBUG] [Thread-187141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:02:39.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:02:39.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:02:39.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') -> 00000000
2025-11-24T09:02:39.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:02:39.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:02:39.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:02:39.256 [DEBUG] [Thread-187141] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:02:42.452 [DEBUG] [Thread-187143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:02:57.488 [DEBUG] [Thread-187144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:02:59.707 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:02:59.708 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:03:09.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:03:09.254 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:03:09.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-11-24T09:03:09.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 2, 58), 9.41, 53.0, 0.0, 22.64, 13.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:03:09.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:02:58
2025-11-24T09:03:10.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:03:10.296 [DEBUG] [Thread-187145] [transport.py] [_log()] starting thread (client mode): 0xd073b280
2025-11-24T09:03:10.297 [DEBUG] [Thread-187145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:03:10.317 [DEBUG] [Thread-187145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:03:10.317 [INFO] [Thread-187145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:03:10.320 [DEBUG] [Thread-187145] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:03:10.320 [DEBUG] [Thread-187145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:03:10.320 [DEBUG] [Thread-187145] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] client lang: <none>
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] server lang: <none>
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] kex follows: False
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] Compression: none
2025-11-24T09:03:10.321 [DEBUG] [Thread-187145] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:03:10.338 [DEBUG] [Thread-187145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:03:10.338 [DEBUG] [Thread-187145] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:03:10.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:03:10.339 [DEBUG] [Thread-187145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:03:10.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:03:10.341 [DEBUG] [Thread-187145] [transport.py] [_log()] userauth is OK
2025-11-24T09:03:10.341 [DEBUG] [Thread-187145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:03:10.341 [DEBUG] [Thread-187145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:03:10.342 [DEBUG] [Thread-187145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:03:10.342 [DEBUG] [Thread-187145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:03:10.365 [INFO] [Thread-187145] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:03:10.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:03:11.155 [DEBUG] [Thread-187145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:03:11.155 [DEBUG] [Thread-187145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:03:11.155 [DEBUG] [Thread-187145] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:03:11.196 [DEBUG] [Thread-187145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:03:11.196 [DEBUG] [Thread-187145] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:03:11.198 [DEBUG] [Thread-187145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:03:11.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:03:11.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:03:11.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:03:11.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:03:11.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:03:11.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:03:11.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:03:11.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:03:11.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:03:11.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.293453 -999.00  +13.90  17.25     57   +5.60 1 1 1 1 1   888    0 11.82 137.79 ----- 17.2 17.2 164.4 24.4 20.6 -26.6 19.6 -25.7 18.4 -24.7 19.0 -26.5
2025-11-24T09:03:11.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:03:11.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:03:11.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.293453
2025-11-24T09:03:11.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:03:11.222 [DEBUG] [Thread-187145] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:03:11.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:03:11.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:03:11.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:03:11.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:03:11.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:02:58', tmtdew=9.41, humidity=53.0, cloud=0.0, wind=22.64, temperature=13.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:02:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:03:11.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:03:11.306 [DEBUG] [Thread-187148] [transport.py] [_log()] starting thread (client mode): 0xd0739750
2025-11-24T09:03:11.306 [DEBUG] [Thread-187148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:03:11.321 [DEBUG] [Thread-187148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:03:11.321 [INFO] [Thread-187148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] client lang: <none>
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] server lang: <none>
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] kex follows: False
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] Compression: none
2025-11-24T09:03:11.330 [DEBUG] [Thread-187148] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:03:11.387 [DEBUG] [Thread-187148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:03:11.387 [DEBUG] [Thread-187148] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:03:11.387 [DEBUG] [Thread-187148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:03:11.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:03:11.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:03:11.444 [DEBUG] [Thread-187148] [transport.py] [_log()] userauth is OK
2025-11-24T09:03:11.444 [DEBUG] [Thread-187148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:03:11.444 [DEBUG] [Thread-187148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:03:11.444 [DEBUG] [Thread-187148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:03:11.444 [DEBUG] [Thread-187148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:03:11.462 [INFO] [Thread-187148] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:03: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-11-24T09:03:11.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:03:12.314 [DEBUG] [Thread-187148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:03:12.315 [DEBUG] [Thread-187148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:03:12.363 [DEBUG] [Thread-187148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:03:12.363 [DEBUG] [Thread-187148] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:03:12.372 [DEBUG] [Thread-187148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:03:12.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:03:12.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:03: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-11-24T09:03:12.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:03:12.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:03:12.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:03:12.409 [DEBUG] [Thread-187148] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:03:12.524 [DEBUG] [Thread-187150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:03:16.925 [DEBUG] [Thread-187151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:03:27.585 [DEBUG] [Thread-187152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:03:42.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:03:42.428 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:03:42.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-11-24T09:03:42.612 [DEBUG] [Thread-187153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:03:43.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 3, 30), 9.61, 52.35, 0.0, 24.16, 13.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:03:43.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:03:30
2025-11-24T09:03:43.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:03:43.452 [DEBUG] [Thread-187154] [transport.py] [_log()] starting thread (client mode): 0xd31b2860
2025-11-24T09:03:43.452 [DEBUG] [Thread-187154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:03:43.463 [DEBUG] [Thread-187154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:03:43.463 [INFO] [Thread-187154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:03:43.466 [DEBUG] [Thread-187154] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] client lang: <none>
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] server lang: <none>
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] kex follows: False
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:03:43.467 [DEBUG] [Thread-187154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:03:43.468 [DEBUG] [Thread-187154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:03:43.468 [DEBUG] [Thread-187154] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:03:43.468 [DEBUG] [Thread-187154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:03:43.468 [DEBUG] [Thread-187154] [transport.py] [_log()] Compression: none
2025-11-24T09:03:43.468 [DEBUG] [Thread-187154] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:03:43.487 [DEBUG] [Thread-187154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:03:43.487 [DEBUG] [Thread-187154] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:03:43.487 [DEBUG] [Thread-187154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:03:43.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:03:43.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:03:43.528 [DEBUG] [Thread-187154] [transport.py] [_log()] userauth is OK
2025-11-24T09:03:43.528 [DEBUG] [Thread-187154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:03:43.528 [DEBUG] [Thread-187154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:03:43.529 [DEBUG] [Thread-187154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:03:43.529 [DEBUG] [Thread-187154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:03:43.555 [INFO] [Thread-187154] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:03:43.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:03:44.188 [DEBUG] [Thread-187154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:03:44.188 [DEBUG] [Thread-187154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:03:44.189 [DEBUG] [Thread-187154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:03:44.229 [DEBUG] [Thread-187154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:03:44.229 [DEBUG] [Thread-187154] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:03:44.231 [DEBUG] [Thread-187154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:03:44.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:03:44.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:03:44.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:03:44.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:03:44.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:03:44.249 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:03:44.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:03:44.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:03:44.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:03:44.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.293800 -999.00  +14.10  15.00     57   +5.70 1 1 1 1 1   888    0 11.54 133.01 ----- 15.0 15.0 154.4 21.7 20.6 -26.9 19.7 -25.0 18.4 -24.3 19.1 -26.8
2025-11-24T09:03:44.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:03:44.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:03:44.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.293800
2025-11-24T09:03:44.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:03:44.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:03:44.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:03:44.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:03:44.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:03:44.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:03:30', tmtdew=9.61, humidity=52.35, cloud=0.0, wind=24.16, temperature=13.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:03:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:03:44.250 [DEBUG] [Thread-187154] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:03:44.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:03:44.337 [DEBUG] [Thread-187157] [transport.py] [_log()] starting thread (client mode): 0xd31361a0
2025-11-24T09:03:44.337 [DEBUG] [Thread-187157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:03:44.352 [DEBUG] [Thread-187157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:03:44.352 [INFO] [Thread-187157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:03:44.359 [DEBUG] [Thread-187157] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:03:44.359 [DEBUG] [Thread-187157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:03:44.360 [DEBUG] [Thread-187157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:03:44.360 [DEBUG] [Thread-187157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:03:44.360 [DEBUG] [Thread-187157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:03:44.360 [DEBUG] [Thread-187157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:03:44.360 [DEBUG] [Thread-187157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:03:44.360 [DEBUG] [Thread-187157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:03:44.360 [DEBUG] [Thread-187157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:03:44.360 [DEBUG] [Thread-187157] [transport.py] [_log()] client lang: <none>
2025-11-24T09:03:44.360 [DEBUG] [Thread-187157] [transport.py] [_log()] server lang: <none>
2025-11-24T09:03:44.360 [DEBUG] [Thread-187157] [transport.py] [_log()] kex follows: False
2025-11-24T09:03:44.361 [DEBUG] [Thread-187157] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:03:44.361 [DEBUG] [Thread-187157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:03:44.361 [DEBUG] [Thread-187157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:03:44.361 [DEBUG] [Thread-187157] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:03:44.361 [DEBUG] [Thread-187157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:03:44.361 [DEBUG] [Thread-187157] [transport.py] [_log()] Compression: none
2025-11-24T09:03:44.361 [DEBUG] [Thread-187157] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:03:44.417 [DEBUG] [Thread-187157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:03:44.418 [DEBUG] [Thread-187157] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:03:44.428 [DEBUG] [Thread-187157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:03:44.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:03:44.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:03:44.474 [DEBUG] [Thread-187157] [transport.py] [_log()] userauth is OK
2025-11-24T09:03:44.474 [DEBUG] [Thread-187157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:03:44.474 [DEBUG] [Thread-187157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:03:44.474 [DEBUG] [Thread-187157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:03:44.474 [DEBUG] [Thread-187157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:03:44.493 [INFO] [Thread-187157] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:03:44.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:03:44.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:03:45.331 [DEBUG] [Thread-187157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:03:45.331 [DEBUG] [Thread-187157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:03:45.379 [DEBUG] [Thread-187157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:03:45.379 [DEBUG] [Thread-187157] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:03:45.390 [DEBUG] [Thread-187157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:03:45.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:03:45.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-11-24T09:03:45.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-11-24T09:03:45.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:03:45.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:03:45.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:03:45.427 [DEBUG] [Thread-187157] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:03:57.646 [DEBUG] [Thread-187159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:03:59.849 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:03:59.850 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:04:12.703 [DEBUG] [Thread-187160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:04:15.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:04:15.449 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:04:15.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-11-24T09:04:16.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 4, 2), 9.63, 52.22, 0.0, 24.28, 13.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:04:16.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:04:02
2025-11-24T09:04:16.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:04:16.414 [DEBUG] [Thread-187161] [transport.py] [_log()] starting thread (client mode): 0xc9b80c10
2025-11-24T09:04:16.414 [DEBUG] [Thread-187161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:04:16.434 [DEBUG] [Thread-187161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:04:16.434 [INFO] [Thread-187161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:04:16.437 [DEBUG] [Thread-187161] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] client lang: <none>
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] server lang: <none>
2025-11-24T09:04:16.438 [DEBUG] [Thread-187161] [transport.py] [_log()] kex follows: False
2025-11-24T09:04:16.439 [DEBUG] [Thread-187161] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:04:16.439 [DEBUG] [Thread-187161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:04:16.439 [DEBUG] [Thread-187161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:04:16.439 [DEBUG] [Thread-187161] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:04:16.439 [DEBUG] [Thread-187161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:04:16.439 [DEBUG] [Thread-187161] [transport.py] [_log()] Compression: none
2025-11-24T09:04:16.439 [DEBUG] [Thread-187161] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:04:16.456 [DEBUG] [Thread-187161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:04:16.457 [DEBUG] [Thread-187161] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:04:16.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:04:16.458 [DEBUG] [Thread-187161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:04:16.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:04:16.460 [DEBUG] [Thread-187161] [transport.py] [_log()] userauth is OK
2025-11-24T09:04:16.460 [DEBUG] [Thread-187161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:04:16.460 [DEBUG] [Thread-187161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:04:16.460 [DEBUG] [Thread-187161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:04:16.460 [DEBUG] [Thread-187161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:04:16.481 [INFO] [Thread-187161] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:04:16.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:04:16.967 [DEBUG] [Thread-187163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:04:17.103 [DEBUG] [Thread-187161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:04:17.104 [DEBUG] [Thread-187161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:04:17.104 [DEBUG] [Thread-187161] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:04:17.145 [DEBUG] [Thread-187161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:04:17.145 [DEBUG] [Thread-187161] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:04:17.147 [DEBUG] [Thread-187161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:04:17.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:04:17.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:04:17.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:04:17.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:04:17.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:04:17.174 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:04:17.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.294148 -999.00  +14.00  11.23     57   +5.70 1 1 1 1 1   888    0 11.83 134.65 ----- 11.2 11.2 152.2 21.1 20.6 -25.7 19.7 -24.8 18.4 -25.2 19.1 -25.5
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.294148
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:04:17.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:04:02', tmtdew=9.63, humidity=52.22, cloud=0.0, wind=24.28, temperature=13.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:03:34.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:04:17.175 [DEBUG] [Thread-187161] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:04:17.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:04:17.260 [DEBUG] [Thread-187165] [transport.py] [_log()] starting thread (client mode): 0xd31cffa0
2025-11-24T09:04:17.260 [DEBUG] [Thread-187165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:04:17.277 [DEBUG] [Thread-187165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:04:17.277 [INFO] [Thread-187165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] client lang: <none>
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] server lang: <none>
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] kex follows: False
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:04:17.288 [DEBUG] [Thread-187165] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:04:17.289 [DEBUG] [Thread-187165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:04:17.289 [DEBUG] [Thread-187165] [transport.py] [_log()] Compression: none
2025-11-24T09:04:17.289 [DEBUG] [Thread-187165] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:04:17.347 [DEBUG] [Thread-187165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:04:17.347 [DEBUG] [Thread-187165] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:04:17.347 [DEBUG] [Thread-187165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:04:17.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:04:17.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:04:17.410 [DEBUG] [Thread-187165] [transport.py] [_log()] userauth is OK
2025-11-24T09:04:17.410 [DEBUG] [Thread-187165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:04:17.410 [DEBUG] [Thread-187165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:04:17.410 [DEBUG] [Thread-187165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:04:17.410 [DEBUG] [Thread-187165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:04:17.427 [INFO] [Thread-187165] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:04:17.427 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:04:17.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:04:18.344 [DEBUG] [Thread-187165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:04:18.344 [DEBUG] [Thread-187165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:04:18.393 [DEBUG] [Thread-187165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:04:18.393 [DEBUG] [Thread-187165] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:04:18.403 [DEBUG] [Thread-187165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:04:18.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:04:18.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-11-24T09:04:18.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-11-24T09:04:18.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:04:18.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:04:18.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:04:18.439 [DEBUG] [Thread-187165] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:04:27.733 [DEBUG] [Thread-187167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:04:42.770 [DEBUG] [Thread-187168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:04:48.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:04:48.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:04:48.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:04:49.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 4, 35), 9.81, 51.6, 0.0, 18.55, 13.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:04:49.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:04:35
2025-11-24T09:04:49.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:04:49.446 [DEBUG] [Thread-187169] [transport.py] [_log()] starting thread (client mode): 0xd31363e0
2025-11-24T09:04:49.446 [DEBUG] [Thread-187169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:04:49.467 [DEBUG] [Thread-187169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:04:49.467 [INFO] [Thread-187169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:04:49.470 [DEBUG] [Thread-187169] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] client lang: <none>
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] server lang: <none>
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] kex follows: False
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] Compression: none
2025-11-24T09:04:49.471 [DEBUG] [Thread-187169] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:04:49.488 [DEBUG] [Thread-187169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:04:49.489 [DEBUG] [Thread-187169] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:04:49.489 [DEBUG] [Thread-187169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:04:49.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:04:49.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:04:49.491 [DEBUG] [Thread-187169] [transport.py] [_log()] userauth is OK
2025-11-24T09:04:49.491 [DEBUG] [Thread-187169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:04:49.491 [DEBUG] [Thread-187169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:04:49.491 [DEBUG] [Thread-187169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:04:49.491 [DEBUG] [Thread-187169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:04:49.515 [INFO] [Thread-187169] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:04:49.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:04:50.154 [DEBUG] [Thread-187169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:04:50.154 [DEBUG] [Thread-187169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:04:50.155 [DEBUG] [Thread-187169] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:04:50.195 [DEBUG] [Thread-187169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:04:50.196 [DEBUG] [Thread-187169] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:04:50.199 [DEBUG] [Thread-187169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:04:50.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:04:50.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:04:50.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:04:50.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:04:50.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:04:50.223 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:04:50.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:04:50.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:04:50.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:04:50.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.294495 -999.00  +14.20  16.64     56   +5.70 1 1 1 1 1   888    0 12.21 144.02 ----- 16.6 16.6 143.5 21.7 20.7 -25.8 19.8 -24.5 18.6 -23.7 19.2 -25.4
2025-11-24T09:04:50.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:04:50.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:04:50.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.294495
2025-11-24T09:04:50.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:04:50.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:04:50.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:04:50.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:04:50.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:04:50.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:04:35', tmtdew=9.81, humidity=51.6, cloud=0.0, wind=18.55, temperature=13.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:04:04.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:04:50.226 [DEBUG] [Thread-187169] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:04:50.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:04:50.328 [DEBUG] [Thread-187172] [transport.py] [_log()] starting thread (client mode): 0xd0710f10
2025-11-24T09:04:50.328 [DEBUG] [Thread-187172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:04:50.344 [DEBUG] [Thread-187172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:04:50.344 [INFO] [Thread-187172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:04:50.361 [DEBUG] [Thread-187172] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:04:50.361 [DEBUG] [Thread-187172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:04:50.361 [DEBUG] [Thread-187172] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:04:50.361 [DEBUG] [Thread-187172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:04:50.361 [DEBUG] [Thread-187172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:04:50.361 [DEBUG] [Thread-187172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:04:50.361 [DEBUG] [Thread-187172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:04:50.361 [DEBUG] [Thread-187172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:04:50.361 [DEBUG] [Thread-187172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:04:50.362 [DEBUG] [Thread-187172] [transport.py] [_log()] client lang: <none>
2025-11-24T09:04:50.362 [DEBUG] [Thread-187172] [transport.py] [_log()] server lang: <none>
2025-11-24T09:04:50.362 [DEBUG] [Thread-187172] [transport.py] [_log()] kex follows: False
2025-11-24T09:04:50.362 [DEBUG] [Thread-187172] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:04:50.362 [DEBUG] [Thread-187172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:04:50.362 [DEBUG] [Thread-187172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:04:50.362 [DEBUG] [Thread-187172] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:04:50.362 [DEBUG] [Thread-187172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:04:50.362 [DEBUG] [Thread-187172] [transport.py] [_log()] Compression: none
2025-11-24T09:04:50.362 [DEBUG] [Thread-187172] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:04:50.409 [DEBUG] [Thread-187172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:04:50.410 [DEBUG] [Thread-187172] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:04:50.411 [DEBUG] [Thread-187172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:04:50.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:04:50.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:04:50.465 [DEBUG] [Thread-187172] [transport.py] [_log()] userauth is OK
2025-11-24T09:04:50.465 [DEBUG] [Thread-187172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:04:50.465 [DEBUG] [Thread-187172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:04:50.465 [DEBUG] [Thread-187172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:04:50.465 [DEBUG] [Thread-187172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:04:50.484 [INFO] [Thread-187172] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:04:50.494 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:04:50.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:04:51.332 [DEBUG] [Thread-187172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:04:51.333 [DEBUG] [Thread-187172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:04:51.380 [DEBUG] [Thread-187172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:04:51.381 [DEBUG] [Thread-187172] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:04:51.390 [DEBUG] [Thread-187172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:04:51.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:04:51.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-11-24T09:04:51.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-11-24T09:04:51.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:04:51.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:04:51.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:04:51.428 [DEBUG] [Thread-187172] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:04:57.799 [DEBUG] [Thread-187174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:04:59.992 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:04:59.993 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:05:12.845 [DEBUG] [Thread-187175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:05:17.034 [DEBUG] [Thread-187176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:05:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:05:21.458 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:05:21.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-11-24T09:05:22.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 5, 7), 9.64, 52.18, 0.0, 17.42, 14.03, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:05:22.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:05:07
2025-11-24T09:05:22.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:05:22.552 [DEBUG] [Thread-187177] [transport.py] [_log()] starting thread (client mode): 0xd0711360
2025-11-24T09:05:22.552 [DEBUG] [Thread-187177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:05:22.572 [DEBUG] [Thread-187177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:05:22.572 [INFO] [Thread-187177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] client lang: <none>
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] server lang: <none>
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] kex follows: False
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:05:22.575 [DEBUG] [Thread-187177] [transport.py] [_log()] Compression: none
2025-11-24T09:05:22.576 [DEBUG] [Thread-187177] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:05:22.591 [DEBUG] [Thread-187177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:05:22.591 [DEBUG] [Thread-187177] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:05:22.592 [DEBUG] [Thread-187177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:05:22.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:05:22.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:05:22.593 [DEBUG] [Thread-187177] [transport.py] [_log()] userauth is OK
2025-11-24T09:05:22.593 [DEBUG] [Thread-187177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:05:22.593 [DEBUG] [Thread-187177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:05:22.593 [DEBUG] [Thread-187177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:05:22.593 [DEBUG] [Thread-187177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:05:22.603 [INFO] [Thread-187177] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:05:22.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:05:23.218 [DEBUG] [Thread-187177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:05:23.218 [DEBUG] [Thread-187177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:05:23.218 [DEBUG] [Thread-187177] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:05:23.259 [DEBUG] [Thread-187177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:05:23.259 [DEBUG] [Thread-187177] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:05:23.261 [DEBUG] [Thread-187177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:05:23.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:05:23.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:05:23.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:05:23.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:05:23.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:05:23.277 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:05:23.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:05:23.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:05:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:05:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.295189 -999.00  +14.20  17.41     56   +5.80 1 1 1 1 1   888    0 12.36 146.97 ----- 17.4 17.4 131.8 27.0 20.8 -25.4 19.9 -24.7 18.7 -24.1 19.2 -26.2
2025-11-24T09:05:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:05:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:05:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.295189
2025-11-24T09:05:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:05:23.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:05:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:05:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:05:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:05:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:05:07', tmtdew=9.64, humidity=52.18, cloud=0.0, wind=17.42, temperature=14.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:05:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:05:23.278 [DEBUG] [Thread-187177] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:05:23.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:05:23.368 [DEBUG] [Thread-187180] [transport.py] [_log()] starting thread (client mode): 0xd31b3490
2025-11-24T09:05:23.369 [DEBUG] [Thread-187180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:05:23.384 [DEBUG] [Thread-187180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:05:23.385 [INFO] [Thread-187180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] client lang: <none>
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] server lang: <none>
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] kex follows: False
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] Compression: none
2025-11-24T09:05:23.392 [DEBUG] [Thread-187180] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:05:23.447 [DEBUG] [Thread-187180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:05:23.447 [DEBUG] [Thread-187180] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:05:23.447 [DEBUG] [Thread-187180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:05:23.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:05:23.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:05:23.508 [DEBUG] [Thread-187180] [transport.py] [_log()] userauth is OK
2025-11-24T09:05:23.508 [DEBUG] [Thread-187180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:05:23.508 [DEBUG] [Thread-187180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:05:23.508 [DEBUG] [Thread-187180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:05:23.508 [DEBUG] [Thread-187180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:05:23.525 [INFO] [Thread-187180] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:05:23.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:05:23.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:05:24.390 [DEBUG] [Thread-187180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:05:24.391 [DEBUG] [Thread-187180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:05:24.439 [DEBUG] [Thread-187180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:05:24.439 [DEBUG] [Thread-187180] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:05:24.447 [DEBUG] [Thread-187180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:05:24.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:05:24.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-11-24T09:05:24.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-11-24T09:05:24.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:05:24.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:05:24.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:05:24.481 [DEBUG] [Thread-187180] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:05:27.873 [DEBUG] [Thread-187182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:05:42.930 [DEBUG] [Thread-187183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:05:54.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:05:54.502 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:05:54.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-11-24T09:05:55.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 5, 40), 9.88, 51.45, 0.0, 18.44, 14.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:05:55.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:05:40
2025-11-24T09:05:55.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:05:55.561 [DEBUG] [Thread-187184] [transport.py] [_log()] starting thread (client mode): 0xc9b80a30
2025-11-24T09:05:55.561 [DEBUG] [Thread-187184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:05:55.581 [DEBUG] [Thread-187184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:05:55.582 [INFO] [Thread-187184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:05:55.585 [DEBUG] [Thread-187184] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:05:55.585 [DEBUG] [Thread-187184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:05:55.585 [DEBUG] [Thread-187184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:05:55.585 [DEBUG] [Thread-187184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:05:55.585 [DEBUG] [Thread-187184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:05:55.585 [DEBUG] [Thread-187184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:05:55.585 [DEBUG] [Thread-187184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:05:55.585 [DEBUG] [Thread-187184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:05:55.585 [DEBUG] [Thread-187184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:05:55.586 [DEBUG] [Thread-187184] [transport.py] [_log()] client lang: <none>
2025-11-24T09:05:55.586 [DEBUG] [Thread-187184] [transport.py] [_log()] server lang: <none>
2025-11-24T09:05:55.586 [DEBUG] [Thread-187184] [transport.py] [_log()] kex follows: False
2025-11-24T09:05:55.586 [DEBUG] [Thread-187184] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:05:55.586 [DEBUG] [Thread-187184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:05:55.586 [DEBUG] [Thread-187184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:05:55.586 [DEBUG] [Thread-187184] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:05:55.586 [DEBUG] [Thread-187184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:05:55.586 [DEBUG] [Thread-187184] [transport.py] [_log()] Compression: none
2025-11-24T09:05:55.586 [DEBUG] [Thread-187184] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:05:55.605 [DEBUG] [Thread-187184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:05:55.606 [DEBUG] [Thread-187184] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:05:55.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:05:55.607 [DEBUG] [Thread-187184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:05:55.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:05:55.609 [DEBUG] [Thread-187184] [transport.py] [_log()] userauth is OK
2025-11-24T09:05:55.609 [DEBUG] [Thread-187184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:05:55.609 [DEBUG] [Thread-187184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:05:55.610 [DEBUG] [Thread-187184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:05:55.610 [DEBUG] [Thread-187184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:05:55.634 [INFO] [Thread-187184] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:05:55.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:05:56.279 [DEBUG] [Thread-187184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:05:56.288 [DEBUG] [Thread-187184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:05:56.289 [DEBUG] [Thread-187184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:05:56.320 [DEBUG] [Thread-187184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:05:56.320 [DEBUG] [Thread-187184] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:05:56.323 [DEBUG] [Thread-187184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:05:56.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:05:56.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:05:56.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:05:56.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:05:56.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:05:56.346 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:05:56.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:05:56.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:05:56.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:05:56.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.295536 -999.00  +14.30  13.81     57   +5.90 1 1 1 1 1   888    0 12.43 154.13 ----- 13.8 13.8 136.4 18.9 20.9 -25.6 20.0 -24.4 18.7 -24.5 19.4 -25.7
2025-11-24T09:05:56.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:05:56.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:05:56.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.295536
2025-11-24T09:05:56.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:05:56.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:05:56.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:05:56.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:05:56.349 [DEBUG] [Thread-187184] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:05:56.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:05:56.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:05:40', tmtdew=9.88, humidity=51.45, cloud=0.0, wind=18.44, temperature=14.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:05:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:05:56.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:05:56.443 [DEBUG] [Thread-187187] [transport.py] [_log()] starting thread (client mode): 0xd0710880
2025-11-24T09:05:56.443 [DEBUG] [Thread-187187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:05:56.458 [DEBUG] [Thread-187187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:05:56.458 [INFO] [Thread-187187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:05:56.465 [DEBUG] [Thread-187187] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] client lang: <none>
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] server lang: <none>
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] kex follows: False
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] Compression: none
2025-11-24T09:05:56.466 [DEBUG] [Thread-187187] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:05:56.529 [DEBUG] [Thread-187187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:05:56.530 [DEBUG] [Thread-187187] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:05:56.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:05:56.531 [DEBUG] [Thread-187187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:05:56.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:05:56.584 [DEBUG] [Thread-187187] [transport.py] [_log()] userauth is OK
2025-11-24T09:05:56.585 [DEBUG] [Thread-187187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:05:56.585 [DEBUG] [Thread-187187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:05:56.585 [DEBUG] [Thread-187187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:05:56.585 [DEBUG] [Thread-187187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:05:56.608 [INFO] [Thread-187187] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:05:56.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:05:56.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:05:57.436 [DEBUG] [Thread-187187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:05:57.436 [DEBUG] [Thread-187187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:05:57.485 [DEBUG] [Thread-187187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:05:57.485 [DEBUG] [Thread-187187] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:05:57.494 [DEBUG] [Thread-187187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:05:57.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:05:57.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-11-24T09:05:57.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-11-24T09:05:57.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:05:57.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:05:57.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:05:57.530 [DEBUG] [Thread-187187] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:05:57.965 [DEBUG] [Thread-187189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:06:00.134 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:06:00.135 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:06:13.003 [DEBUG] [Thread-187190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:06:17.097 [DEBUG] [Thread-187191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:06:27.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:06:27.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:06:27.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-11-24T09:06:28.031 [DEBUG] [Thread-187192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:06:28.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 6, 12), 9.82, 51.66, 0.0, 17.15, 14.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:06:28.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:06:12
2025-11-24T09:06:28.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:06:28.626 [DEBUG] [Thread-187193] [transport.py] [_log()] starting thread (client mode): 0xd31cc2e0
2025-11-24T09:06:28.626 [DEBUG] [Thread-187193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:06:28.647 [DEBUG] [Thread-187193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:06:28.647 [INFO] [Thread-187193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] client lang: <none>
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] server lang: <none>
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] kex follows: False
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] Compression: none
2025-11-24T09:06:28.651 [DEBUG] [Thread-187193] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:06:28.669 [DEBUG] [Thread-187193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:06:28.670 [DEBUG] [Thread-187193] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:06:28.671 [DEBUG] [Thread-187193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:06:28.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:06:28.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:06:28.672 [DEBUG] [Thread-187193] [transport.py] [_log()] userauth is OK
2025-11-24T09:06:28.673 [DEBUG] [Thread-187193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:06:28.673 [DEBUG] [Thread-187193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:06:28.673 [DEBUG] [Thread-187193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:06:28.673 [DEBUG] [Thread-187193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:06:28.690 [INFO] [Thread-187193] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:06:28.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:06:29.284 [DEBUG] [Thread-187193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:06:29.284 [DEBUG] [Thread-187193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:06:29.284 [DEBUG] [Thread-187193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:06:29.325 [DEBUG] [Thread-187193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:06:29.325 [DEBUG] [Thread-187193] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:06:29.328 [DEBUG] [Thread-187193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:06:29.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:06:29.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:06:29.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:06:29.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:06:29.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:06:29.348 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:06:29.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:06:29.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:06:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:06:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.295884 -999.00  +14.30  15.02     57   +5.90 1 1 1 1 1   888    0 12.60 152.52 ----- 15.0 15.0 152.0 20.1 20.9 -26.6 20.1 -24.0 18.7 -24.2 19.4 -26.4
2025-11-24T09:06:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:06:29.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:06:29.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.295884
2025-11-24T09:06:29.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:06:29.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:06:29.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:06:29.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:06:29.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:06:29.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:06:12', tmtdew=9.82, humidity=51.66, cloud=0.0, wind=17.15, temperature=14.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:06:04.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:06:29.350 [DEBUG] [Thread-187193] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:06:29.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:06:29.444 [DEBUG] [Thread-187196] [transport.py] [_log()] starting thread (client mode): 0xd31b0580
2025-11-24T09:06:29.444 [DEBUG] [Thread-187196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:06:29.458 [DEBUG] [Thread-187196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:06:29.459 [INFO] [Thread-187196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:06:29.466 [DEBUG] [Thread-187196] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:06:29.466 [DEBUG] [Thread-187196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:06:29.466 [DEBUG] [Thread-187196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] client lang: <none>
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] server lang: <none>
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] kex follows: False
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] Compression: none
2025-11-24T09:06:29.467 [DEBUG] [Thread-187196] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:06:29.524 [DEBUG] [Thread-187196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:06:29.525 [DEBUG] [Thread-187196] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:06:29.525 [DEBUG] [Thread-187196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:06:29.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:06:29.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:06:29.580 [DEBUG] [Thread-187196] [transport.py] [_log()] userauth is OK
2025-11-24T09:06:29.581 [DEBUG] [Thread-187196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:06:29.581 [DEBUG] [Thread-187196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:06:29.581 [DEBUG] [Thread-187196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:06:29.581 [DEBUG] [Thread-187196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:06:29.601 [INFO] [Thread-187196] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:06:29.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:06:29.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:06:30.499 [DEBUG] [Thread-187196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:06:30.499 [DEBUG] [Thread-187196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:06:30.547 [DEBUG] [Thread-187196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:06:30.547 [DEBUG] [Thread-187196] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:06:30.555 [DEBUG] [Thread-187196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:06:30.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:06:30.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-11-24T09:06:30.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:06:30.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:06:30.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:06:30.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:06:30.594 [DEBUG] [Thread-187196] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:06:43.059 [DEBUG] [Thread-187198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:06:58.109 [DEBUG] [Thread-187199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:07:00.276 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:07:00.277 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:07:00.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:07:00.617 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:07:00.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-11-24T09:07:01.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 6, 45), 9.74, 51.9, 0.0, 20.66, 14.27, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:07:01.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:06:45
2025-11-24T09:07:01.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:07:01.711 [DEBUG] [Thread-187200] [transport.py] [_log()] starting thread (client mode): 0xd31b1540
2025-11-24T09:07:01.711 [DEBUG] [Thread-187200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:07:01.732 [DEBUG] [Thread-187200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:07:01.732 [INFO] [Thread-187200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] client lang: <none>
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] server lang: <none>
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] kex follows: False
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:07:01.735 [DEBUG] [Thread-187200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:07:01.736 [DEBUG] [Thread-187200] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:07:01.736 [DEBUG] [Thread-187200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:07:01.736 [DEBUG] [Thread-187200] [transport.py] [_log()] Compression: none
2025-11-24T09:07:01.736 [DEBUG] [Thread-187200] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:07:01.755 [DEBUG] [Thread-187200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:07:01.756 [DEBUG] [Thread-187200] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:07:01.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:07:01.757 [DEBUG] [Thread-187200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:07:01.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:07:01.759 [DEBUG] [Thread-187200] [transport.py] [_log()] userauth is OK
2025-11-24T09:07:01.759 [DEBUG] [Thread-187200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:07:01.760 [DEBUG] [Thread-187200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:07:01.760 [DEBUG] [Thread-187200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:07:01.760 [DEBUG] [Thread-187200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:07:01.776 [INFO] [Thread-187200] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:07:01.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:07:02.434 [DEBUG] [Thread-187200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:07:02.434 [DEBUG] [Thread-187200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:07:02.435 [DEBUG] [Thread-187200] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:07:02.475 [DEBUG] [Thread-187200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:07:02.475 [DEBUG] [Thread-187200] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:07:02.477 [DEBUG] [Thread-187200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:07:02.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:07:02.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:07:02.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:07:02.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:07:02.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:07:02.497 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:07:02.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:07:02.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:07:02.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:07:02.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.296231 -999.00  +14.30  10.22     57   +6.00 1 1 1 1 1   888    0 12.97 168.26 ----- 10.2 10.2 162.1 23.1 21.0 -25.9 20.1 -24.3 18.8 -23.4 19.4 -25.8
2025-11-24T09:07:02.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:07:02.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:07:02.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.296231
2025-11-24T09:07:02.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:07:02.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:07:02.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:07:02.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:07:02.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:07:02.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:06:45', tmtdew=9.74, humidity=51.9, cloud=0.0, wind=20.66, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:06:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:07:02.498 [DEBUG] [Thread-187200] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:07:02.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:07:02.581 [DEBUG] [Thread-187203] [transport.py] [_log()] starting thread (client mode): 0xd31b3a30
2025-11-24T09:07:02.581 [DEBUG] [Thread-187203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:07:02.595 [DEBUG] [Thread-187203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:07:02.595 [INFO] [Thread-187203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:07:02.602 [DEBUG] [Thread-187203] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:07:02.602 [DEBUG] [Thread-187203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:07:02.602 [DEBUG] [Thread-187203] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] client lang: <none>
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] server lang: <none>
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] kex follows: False
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] Compression: none
2025-11-24T09:07:02.603 [DEBUG] [Thread-187203] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:07:02.660 [DEBUG] [Thread-187203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:07:02.660 [DEBUG] [Thread-187203] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:07:02.660 [DEBUG] [Thread-187203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:07:02.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:07:02.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:07:02.717 [DEBUG] [Thread-187203] [transport.py] [_log()] userauth is OK
2025-11-24T09:07:02.717 [DEBUG] [Thread-187203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:07:02.717 [DEBUG] [Thread-187203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:07:02.717 [DEBUG] [Thread-187203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:07:02.717 [DEBUG] [Thread-187203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:07:02.734 [INFO] [Thread-187203] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:07:02.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:07:02.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:07:03.561 [DEBUG] [Thread-187203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:07:03.561 [DEBUG] [Thread-187203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:07:03.608 [DEBUG] [Thread-187203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:07:03.609 [DEBUG] [Thread-187203] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:07:03.618 [DEBUG] [Thread-187203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:07:03.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:07: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-11-24T09:07:03.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-11-24T09:07:03.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:07:03.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:07:03.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:07:03.654 [DEBUG] [Thread-187203] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:07:13.147 [DEBUG] [Thread-187205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:07:17.242 [DEBUG] [Thread-187206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:07:28.195 [DEBUG] [Thread-187207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:07:33.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:07:33.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:07:33.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-11-24T09:07:34.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 7, 17), 9.67, 52.13, 0.0, 19.59, 14.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:07:34.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:07:17
2025-11-24T09:07:34.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:07:34.667 [DEBUG] [Thread-187208] [transport.py] [_log()] starting thread (client mode): 0xd3151990
2025-11-24T09:07:34.667 [DEBUG] [Thread-187208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:07:34.687 [DEBUG] [Thread-187208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:07:34.688 [INFO] [Thread-187208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:07:34.697 [DEBUG] [Thread-187208] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:07:34.698 [DEBUG] [Thread-187208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:07:34.698 [DEBUG] [Thread-187208] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:07:34.698 [DEBUG] [Thread-187208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:07:34.698 [DEBUG] [Thread-187208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:07:34.698 [DEBUG] [Thread-187208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:07:34.698 [DEBUG] [Thread-187208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:07:34.698 [DEBUG] [Thread-187208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:07:34.699 [DEBUG] [Thread-187208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:07:34.699 [DEBUG] [Thread-187208] [transport.py] [_log()] client lang: <none>
2025-11-24T09:07:34.699 [DEBUG] [Thread-187208] [transport.py] [_log()] server lang: <none>
2025-11-24T09:07:34.699 [DEBUG] [Thread-187208] [transport.py] [_log()] kex follows: False
2025-11-24T09:07:34.699 [DEBUG] [Thread-187208] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:07:34.699 [DEBUG] [Thread-187208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:07:34.699 [DEBUG] [Thread-187208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:07:34.699 [DEBUG] [Thread-187208] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:07:34.700 [DEBUG] [Thread-187208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:07:34.700 [DEBUG] [Thread-187208] [transport.py] [_log()] Compression: none
2025-11-24T09:07:34.700 [DEBUG] [Thread-187208] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:07:34.719 [DEBUG] [Thread-187208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:07:34.720 [DEBUG] [Thread-187208] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:07:34.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:07:34.720 [DEBUG] [Thread-187208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:07:34.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:07:34.722 [DEBUG] [Thread-187208] [transport.py] [_log()] userauth is OK
2025-11-24T09:07:34.723 [DEBUG] [Thread-187208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:07:34.723 [DEBUG] [Thread-187208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:07:34.723 [DEBUG] [Thread-187208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:07:34.723 [DEBUG] [Thread-187208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:07:34.746 [INFO] [Thread-187208] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:07:34.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:07:35.364 [DEBUG] [Thread-187208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:07:35.364 [DEBUG] [Thread-187208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:07:35.364 [DEBUG] [Thread-187208] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:07:35.404 [DEBUG] [Thread-187208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:07:35.405 [DEBUG] [Thread-187208] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:07:35.408 [DEBUG] [Thread-187208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:07:35.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:07:35.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:07:35.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:07:35.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:07:35.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:07:35.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:07:35.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:07:35.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:07:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:07:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.296578 -999.00  +14.70  20.15     56   +6.20 1 1 1 1 1   888    0 13.03 168.77 ----- 20.1 20.1 171.8 23.4 21.2 -25.3 20.2 -23.3 18.9 -23.3 19.6 -24.1
2025-11-24T09:07:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:07:35.441 [DEBUG] [Thread-187208] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:07:35.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:07:35.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.296578
2025-11-24T09:07:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:07:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:07:35.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:07:35.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:07:35.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:07:35.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:07:17', tmtdew=9.67, humidity=52.13, cloud=0.0, wind=19.59, temperature=14.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:07:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:07:35.527 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:07:35.540 [DEBUG] [Thread-187211] [transport.py] [_log()] starting thread (client mode): 0xc9b82c20
2025-11-24T09:07:35.540 [DEBUG] [Thread-187211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:07:35.554 [DEBUG] [Thread-187211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:07:35.554 [INFO] [Thread-187211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:07:35.562 [DEBUG] [Thread-187211] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:07:35.562 [DEBUG] [Thread-187211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:07:35.562 [DEBUG] [Thread-187211] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:07:35.562 [DEBUG] [Thread-187211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:07:35.562 [DEBUG] [Thread-187211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:07:35.562 [DEBUG] [Thread-187211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] client lang: <none>
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] server lang: <none>
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] kex follows: False
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:07:35.563 [DEBUG] [Thread-187211] [transport.py] [_log()] Compression: none
2025-11-24T09:07:35.564 [DEBUG] [Thread-187211] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:07:35.621 [DEBUG] [Thread-187211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:07:35.621 [DEBUG] [Thread-187211] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:07:35.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:07:35.623 [DEBUG] [Thread-187211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:07:35.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:07:35.677 [DEBUG] [Thread-187211] [transport.py] [_log()] userauth is OK
2025-11-24T09:07:35.677 [DEBUG] [Thread-187211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:07:35.677 [DEBUG] [Thread-187211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:07:35.677 [DEBUG] [Thread-187211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:07:35.678 [DEBUG] [Thread-187211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:07:35.709 [INFO] [Thread-187211] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:07:35.709 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:07:35.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:07:36.540 [DEBUG] [Thread-187211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:07:36.540 [DEBUG] [Thread-187211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:07:36.588 [DEBUG] [Thread-187211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:07:36.588 [DEBUG] [Thread-187211] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:07:36.596 [DEBUG] [Thread-187211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:07:36.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:07: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')
2025-11-24T09:07:36.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:07:36.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:07:36.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:07:36.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:07:36.628 [DEBUG] [Thread-187211] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:07:43.233 [DEBUG] [Thread-187213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:07:58.278 [DEBUG] [Thread-187214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:08:00.415 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:08:00.417 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:08:06.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:08:06.651 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:08:06.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:08:07.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 7, 49), 9.58, 52.14, 0.0, 22.34, 14.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:08:07.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:07:49
2025-11-24T09:08:07.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:08:07.699 [DEBUG] [Thread-187215] [transport.py] [_log()] starting thread (client mode): 0xc9b829e0
2025-11-24T09:08:07.699 [DEBUG] [Thread-187215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:08:07.706 [DEBUG] [Thread-187215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:08:07.706 [INFO] [Thread-187215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] client lang: <none>
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] server lang: <none>
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] kex follows: False
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:08:07.709 [DEBUG] [Thread-187215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:08:07.710 [DEBUG] [Thread-187215] [transport.py] [_log()] Compression: none
2025-11-24T09:08:07.710 [DEBUG] [Thread-187215] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:08:07.725 [DEBUG] [Thread-187215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:08:07.725 [DEBUG] [Thread-187215] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:08:07.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:08:07.725 [DEBUG] [Thread-187215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:08:07.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:08:07.726 [DEBUG] [Thread-187215] [transport.py] [_log()] userauth is OK
2025-11-24T09:08:07.726 [DEBUG] [Thread-187215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:08:07.726 [DEBUG] [Thread-187215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:08:07.726 [DEBUG] [Thread-187215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:08:07.726 [DEBUG] [Thread-187215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:08:07.744 [INFO] [Thread-187215] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:08:07.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:08:08.378 [DEBUG] [Thread-187215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:08:08.378 [DEBUG] [Thread-187215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:08:08.378 [DEBUG] [Thread-187215] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:08:08.418 [DEBUG] [Thread-187215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:08:08.419 [DEBUG] [Thread-187215] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:08:08.422 [DEBUG] [Thread-187215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:08:08.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:08:08.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:08:08.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:08:08.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:08:08.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:08:08.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:08:08.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:08:08.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:08:08.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:08:08.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.296925 -999.00  +15.10  15.88     55   +6.20 1 1 1 1 1   888    0 12.83 161.38 ----- 15.9 15.9 144.2 27.9 21.2 -25.3 20.3 -23.7 19.1 -23.5 19.7 -24.8
2025-11-24T09:08:08.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:08:08.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:08:08.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.296925
2025-11-24T09:08:08.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:08:08.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:08:08.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:08:08.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:08:08.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:08:08.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:07:49', tmtdew=9.58, humidity=52.14, cloud=0.0, wind=22.34, temperature=14.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:07:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:08:08.449 [DEBUG] [Thread-187215] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:08:08.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:08:08.540 [DEBUG] [Thread-187218] [transport.py] [_log()] starting thread (client mode): 0xd317f700
2025-11-24T09:08:08.541 [DEBUG] [Thread-187218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:08:08.555 [DEBUG] [Thread-187218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:08:08.556 [INFO] [Thread-187218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:08:08.563 [DEBUG] [Thread-187218] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:08:08.563 [DEBUG] [Thread-187218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:08:08.563 [DEBUG] [Thread-187218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:08:08.563 [DEBUG] [Thread-187218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:08:08.563 [DEBUG] [Thread-187218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] client lang: <none>
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] server lang: <none>
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] kex follows: False
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] Compression: none
2025-11-24T09:08:08.564 [DEBUG] [Thread-187218] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:08:08.624 [DEBUG] [Thread-187218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:08:08.625 [DEBUG] [Thread-187218] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:08:08.625 [DEBUG] [Thread-187218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:08:08.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:08:08.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:08:08.680 [DEBUG] [Thread-187218] [transport.py] [_log()] userauth is OK
2025-11-24T09:08:08.680 [DEBUG] [Thread-187218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:08:08.680 [DEBUG] [Thread-187218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:08:08.680 [DEBUG] [Thread-187218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:08:08.680 [DEBUG] [Thread-187218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:08:08.694 [INFO] [Thread-187218] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:08:08.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:08:08.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:08:09.557 [DEBUG] [Thread-187218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:08:09.557 [DEBUG] [Thread-187218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:08:09.605 [DEBUG] [Thread-187218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:08:09.605 [DEBUG] [Thread-187218] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:08:09.614 [DEBUG] [Thread-187218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:08:09.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:08:09.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-11-24T09:08: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-11-24T09:08:09.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:08:09.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:08:09.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:08:09.650 [DEBUG] [Thread-187218] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:08:13.309 [DEBUG] [Thread-187220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:08:17.368 [DEBUG] [Thread-187221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:08:28.363 [DEBUG] [Thread-187222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:08:39.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:08:39.673 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:08:39.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-11-24T09:08:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 8, 22), 9.82, 51.3, 0.0, 20.29, 14.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:08:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:08:22
2025-11-24T09:08:40.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:08:40.685 [DEBUG] [Thread-187223] [transport.py] [_log()] starting thread (client mode): 0xd317fc70
2025-11-24T09:08:40.685 [DEBUG] [Thread-187223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:08:40.705 [DEBUG] [Thread-187223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:08:40.705 [INFO] [Thread-187223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:08:40.708 [DEBUG] [Thread-187223] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:08:40.708 [DEBUG] [Thread-187223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:08:40.708 [DEBUG] [Thread-187223] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:08:40.708 [DEBUG] [Thread-187223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:08:40.708 [DEBUG] [Thread-187223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:08:40.708 [DEBUG] [Thread-187223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:08:40.708 [DEBUG] [Thread-187223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:08:40.708 [DEBUG] [Thread-187223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] client lang: <none>
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] server lang: <none>
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] kex follows: False
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] Compression: none
2025-11-24T09:08:40.709 [DEBUG] [Thread-187223] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:08:40.726 [DEBUG] [Thread-187223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:08:40.726 [DEBUG] [Thread-187223] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:08:40.727 [DEBUG] [Thread-187223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:08:40.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:08:40.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:08:40.729 [DEBUG] [Thread-187223] [transport.py] [_log()] userauth is OK
2025-11-24T09:08:40.729 [DEBUG] [Thread-187223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:08:40.729 [DEBUG] [Thread-187223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:08:40.729 [DEBUG] [Thread-187223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:08:40.729 [DEBUG] [Thread-187223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:08:40.747 [INFO] [Thread-187223] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:08:40.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:08:41.396 [DEBUG] [Thread-187223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:08:41.396 [DEBUG] [Thread-187223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:08:41.397 [DEBUG] [Thread-187223] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:08:41.437 [DEBUG] [Thread-187223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:08:41.437 [DEBUG] [Thread-187223] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:08:41.439 [DEBUG] [Thread-187223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:08:41.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:08:41.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:08:41.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:08:41.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:08:41.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:08:41.455 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:08:41.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.297273 -999.00  +15.10  14.13     53   +5.70 1 1 1 1 1   888    0 12.72 159.23 ----- 14.1 14.1 138.2 23.4 21.3 -26.4 20.4 -24.4 19.1 -24.2 19.7 -24.7
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.297273
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:08:41.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:08:22', tmtdew=9.82, humidity=51.3, cloud=0.0, wind=20.29, temperature=14.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:08:04.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:08:41.457 [DEBUG] [Thread-187223] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:08:41.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:08:41.540 [DEBUG] [Thread-187226] [transport.py] [_log()] starting thread (client mode): 0xd317e080
2025-11-24T09:08:41.540 [DEBUG] [Thread-187226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:08:41.555 [DEBUG] [Thread-187226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:08:41.555 [INFO] [Thread-187226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:08:41.562 [DEBUG] [Thread-187226] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] client lang: <none>
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] server lang: <none>
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] kex follows: False
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] Compression: none
2025-11-24T09:08:41.563 [DEBUG] [Thread-187226] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:08:41.619 [DEBUG] [Thread-187226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:08:41.619 [DEBUG] [Thread-187226] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:08:41.619 [DEBUG] [Thread-187226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:08:41.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:08:41.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:08:41.677 [DEBUG] [Thread-187226] [transport.py] [_log()] userauth is OK
2025-11-24T09:08:41.677 [DEBUG] [Thread-187226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:08:41.677 [DEBUG] [Thread-187226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:08:41.677 [DEBUG] [Thread-187226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:08:41.677 [DEBUG] [Thread-187226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:08:41.691 [INFO] [Thread-187226] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:08:41.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:08:41.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:08:42.530 [DEBUG] [Thread-187226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:08:42.531 [DEBUG] [Thread-187226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:08:42.578 [DEBUG] [Thread-187226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:08:42.578 [DEBUG] [Thread-187226] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:08:42.587 [DEBUG] [Thread-187226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:08:42.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:08:42.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-11-24T09:08:42.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-11-24T09:08:42.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:08:42.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:08:42.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:08:42.620 [DEBUG] [Thread-187226] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:08:43.391 [DEBUG] [Thread-187228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:08:58.444 [DEBUG] [Thread-187229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:09:00.560 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:09:00.561 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:09:12.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:09:12.636 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:09:12.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-11-24T09:09:13.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 8, 54), 10.65, 48.69, 0.0, 23.5, 14.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:09:13.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:08:54
2025-11-24T09:09:13.476 [DEBUG] [Thread-187230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:09:13.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:09:13.753 [DEBUG] [Thread-187231] [transport.py] [_log()] starting thread (client mode): 0xd3135fc0
2025-11-24T09:09:13.753 [DEBUG] [Thread-187231] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:09:13.773 [DEBUG] [Thread-187231] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:09:13.773 [INFO] [Thread-187231] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] client lang: <none>
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] server lang: <none>
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] kex follows: False
2025-11-24T09:09:13.775 [DEBUG] [Thread-187231] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:09:13.776 [DEBUG] [Thread-187231] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:09:13.776 [DEBUG] [Thread-187231] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:09:13.776 [DEBUG] [Thread-187231] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:09:13.776 [DEBUG] [Thread-187231] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:09:13.776 [DEBUG] [Thread-187231] [transport.py] [_log()] Compression: none
2025-11-24T09:09:13.776 [DEBUG] [Thread-187231] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:09:13.786 [DEBUG] [Thread-187231] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:09:13.786 [DEBUG] [Thread-187231] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:09:13.786 [DEBUG] [Thread-187231] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:09:13.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:09:13.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:09:13.787 [DEBUG] [Thread-187231] [transport.py] [_log()] userauth is OK
2025-11-24T09:09:13.787 [DEBUG] [Thread-187231] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:09:13.787 [DEBUG] [Thread-187231] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:09:13.787 [DEBUG] [Thread-187231] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:09:13.787 [DEBUG] [Thread-187231] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:09:13.797 [INFO] [Thread-187231] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:09:13.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:09:14.418 [DEBUG] [Thread-187231] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:09:14.418 [DEBUG] [Thread-187231] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:09:14.418 [DEBUG] [Thread-187231] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:09:14.459 [DEBUG] [Thread-187231] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:09:14.459 [DEBUG] [Thread-187231] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:09:14.461 [DEBUG] [Thread-187231] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:09:14.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:09:14.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:09:14.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:09:14.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:09:14.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:09:14.478 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:09:14.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:09:14.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.297967 -999.00  +14.60  22.87     52   +4.90 1 1 1 1 1   888    0 12.78 154.05 ----- 22.9 22.9 160.8 27.6 21.2 -26.0 20.3 -25.3 19.1 -24.2 19.7 -25.1
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.297967
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:09:14.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:08:54', tmtdew=10.65, humidity=48.69, cloud=0.0, wind=23.5, temperature=14.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:09:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:09:14.479 [DEBUG] [Thread-187231] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:09:14.553 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:09:14.564 [DEBUG] [Thread-187234] [transport.py] [_log()] starting thread (client mode): 0xd317de70
2025-11-24T09:09:14.564 [DEBUG] [Thread-187234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:09:14.579 [DEBUG] [Thread-187234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:09:14.579 [INFO] [Thread-187234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] client lang: <none>
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] server lang: <none>
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] kex follows: False
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:09:14.586 [DEBUG] [Thread-187234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:09:14.587 [DEBUG] [Thread-187234] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:09:14.587 [DEBUG] [Thread-187234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:09:14.587 [DEBUG] [Thread-187234] [transport.py] [_log()] Compression: none
2025-11-24T09:09:14.587 [DEBUG] [Thread-187234] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:09:14.643 [DEBUG] [Thread-187234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:09:14.643 [DEBUG] [Thread-187234] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:09:14.643 [DEBUG] [Thread-187234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:09:14.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:09:14.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:09:14.701 [DEBUG] [Thread-187234] [transport.py] [_log()] userauth is OK
2025-11-24T09:09:14.701 [DEBUG] [Thread-187234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:09:14.701 [DEBUG] [Thread-187234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:09:14.701 [DEBUG] [Thread-187234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:09:14.701 [DEBUG] [Thread-187234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:09:14.714 [INFO] [Thread-187234] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:09:14.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:09:14.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:09:15.572 [DEBUG] [Thread-187234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:09:15.573 [DEBUG] [Thread-187234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:09:15.621 [DEBUG] [Thread-187234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:09:15.621 [DEBUG] [Thread-187234] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:09:15.631 [DEBUG] [Thread-187234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:09:15.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:09:15.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-11-24T09:09:15.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-11-24T09:09:15.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:09:15.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:09:15.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:09:15.676 [DEBUG] [Thread-187234] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:09:17.543 [DEBUG] [Thread-187236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:09:28.506 [DEBUG] [Thread-187237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:09:43.547 [DEBUG] [Thread-187238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:09:45.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:09:45.672 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:09:45.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-11-24T09:09:47.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 9, 27), 10.78, 48.22, 0.0, 23.49, 14.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:09:47.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:09:27
2025-11-24T09:09:48.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:09:48.171 [DEBUG] [Thread-187239] [transport.py] [_log()] starting thread (client mode): 0xd317cac0
2025-11-24T09:09:48.171 [DEBUG] [Thread-187239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:09:48.191 [DEBUG] [Thread-187239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:09:48.191 [INFO] [Thread-187239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] client lang: <none>
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] server lang: <none>
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] kex follows: False
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:09:48.194 [DEBUG] [Thread-187239] [transport.py] [_log()] Compression: none
2025-11-24T09:09:48.195 [DEBUG] [Thread-187239] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:09:48.210 [DEBUG] [Thread-187239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:09:48.210 [DEBUG] [Thread-187239] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:09:48.210 [DEBUG] [Thread-187239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:09:48.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:09:48.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:09:48.211 [DEBUG] [Thread-187239] [transport.py] [_log()] userauth is OK
2025-11-24T09:09:48.211 [DEBUG] [Thread-187239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:09:48.211 [DEBUG] [Thread-187239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:09:48.211 [DEBUG] [Thread-187239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:09:48.211 [DEBUG] [Thread-187239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:09:48.220 [INFO] [Thread-187239] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:09:48.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:09:48.835 [DEBUG] [Thread-187239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:09:48.835 [DEBUG] [Thread-187239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:09:48.835 [DEBUG] [Thread-187239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:09:48.876 [DEBUG] [Thread-187239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:09:48.876 [DEBUG] [Thread-187239] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:09:48.878 [DEBUG] [Thread-187239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:09:48.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:09:48.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:09:48.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:09:48.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:09:48.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:09:48.897 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:09:48.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:09:48.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.298314 -999.00  +14.50  20.04     52   +4.90 1 1 1 1 1   888    0 12.62 146.24 ----- 20.0 20.0 151.6 30.9 21.0 -27.0 20.2 -25.1 19.0 -25.5 19.7 -26.6
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.298314
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:09:48.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:09:27', tmtdew=10.78, humidity=48.22, cloud=0.0, wind=23.49, temperature=14.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:09:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:09:48.899 [DEBUG] [Thread-187239] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:09:48.980 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:09:48.994 [DEBUG] [Thread-187242] [transport.py] [_log()] starting thread (client mode): 0xd3152b60
2025-11-24T09:09:48.995 [DEBUG] [Thread-187242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:09:49.009 [DEBUG] [Thread-187242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:09:49.009 [INFO] [Thread-187242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] client lang: <none>
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] server lang: <none>
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] kex follows: False
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:09:49.016 [DEBUG] [Thread-187242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:09:49.017 [DEBUG] [Thread-187242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:09:49.017 [DEBUG] [Thread-187242] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:09:49.017 [DEBUG] [Thread-187242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:09:49.017 [DEBUG] [Thread-187242] [transport.py] [_log()] Compression: none
2025-11-24T09:09:49.017 [DEBUG] [Thread-187242] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:09:49.072 [DEBUG] [Thread-187242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:09:49.072 [DEBUG] [Thread-187242] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:09:49.072 [DEBUG] [Thread-187242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:09:49.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:09:49.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:09:49.129 [DEBUG] [Thread-187242] [transport.py] [_log()] userauth is OK
2025-11-24T09:09:49.129 [DEBUG] [Thread-187242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:09:49.129 [DEBUG] [Thread-187242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:09:49.129 [DEBUG] [Thread-187242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:09:49.129 [DEBUG] [Thread-187242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:09:49.144 [INFO] [Thread-187242] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:09:49.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:09:49.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:09:49.980 [DEBUG] [Thread-187242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:09:49.980 [DEBUG] [Thread-187242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:09:50.027 [DEBUG] [Thread-187242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:09:50.028 [DEBUG] [Thread-187242] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:09:50.037 [DEBUG] [Thread-187242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:09:50.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:09:50.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-11-24T09:09:50.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-11-24T09:09:50.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:09:50.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:09:50.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:09:50.073 [DEBUG] [Thread-187242] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:09:58.581 [DEBUG] [Thread-187244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:10:00.706 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:10:00.707 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:10:13.642 [DEBUG] [Thread-187245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:10:17.619 [DEBUG] [Thread-187246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:10:20.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:10:20.096 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:10:20.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-11-24T09:10:20.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 9, 59), 11.36, 46.29, 0.0, 27.49, 14.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:10:20.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:09:59
2025-11-24T09:10:20.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:10:21.108 [DEBUG] [Thread-187247] [transport.py] [_log()] starting thread (client mode): 0xd317df30
2025-11-24T09:10:21.108 [DEBUG] [Thread-187247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:10:21.129 [DEBUG] [Thread-187247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:10:21.129 [INFO] [Thread-187247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:10:21.132 [DEBUG] [Thread-187247] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:10:21.132 [DEBUG] [Thread-187247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:10:21.132 [DEBUG] [Thread-187247] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:10:21.132 [DEBUG] [Thread-187247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:10:21.132 [DEBUG] [Thread-187247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:10:21.132 [DEBUG] [Thread-187247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:10:21.132 [DEBUG] [Thread-187247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:10:21.132 [DEBUG] [Thread-187247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] client lang: <none>
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] server lang: <none>
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] kex follows: False
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] Compression: none
2025-11-24T09:10:21.133 [DEBUG] [Thread-187247] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:10:21.148 [DEBUG] [Thread-187247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:10:21.148 [DEBUG] [Thread-187247] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:10:21.148 [DEBUG] [Thread-187247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:10:21.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:10:21.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:10:21.148 [DEBUG] [Thread-187247] [transport.py] [_log()] userauth is OK
2025-11-24T09:10:21.148 [DEBUG] [Thread-187247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:10:21.148 [DEBUG] [Thread-187247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:10:21.148 [DEBUG] [Thread-187247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:10:21.148 [DEBUG] [Thread-187247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:10:21.157 [INFO] [Thread-187247] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:10:21.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:10:21.754 [DEBUG] [Thread-187247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:10:21.754 [DEBUG] [Thread-187247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:10:21.755 [DEBUG] [Thread-187247] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:10:21.795 [DEBUG] [Thread-187247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:10:21.796 [DEBUG] [Thread-187247] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:10:21.798 [DEBUG] [Thread-187247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:10:21.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:10:21.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:10:21.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:10:21.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:10:21.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:10:21.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:10:21.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:10:21.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:10:21.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:10:21.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.298661 -999.00  +14.40  20.33     51   +4.40 1 1 1 1 1   888    0 13.24 160.77 ----- 20.3 20.3 156.5 26.9 21.0 -26.6 20.1 -25.3 18.9 -25.0 19.6 -27.0
2025-11-24T09:10:21.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:10:21.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:10:21.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.298661
2025-11-24T09:10:21.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:10:21.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:10:21.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:10:21.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:10:21.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:10:21.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:09:59', tmtdew=11.36, humidity=46.29, cloud=0.0, wind=27.49, temperature=14.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:10:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:10:21.834 [DEBUG] [Thread-187247] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:10:21.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:10:21.931 [DEBUG] [Thread-187250] [transport.py] [_log()] starting thread (client mode): 0xd317f0a0
2025-11-24T09:10:21.932 [DEBUG] [Thread-187250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:10:21.947 [DEBUG] [Thread-187250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:10:21.947 [INFO] [Thread-187250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:10:21.958 [DEBUG] [Thread-187250] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:10:21.958 [DEBUG] [Thread-187250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:10:21.958 [DEBUG] [Thread-187250] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:10:21.958 [DEBUG] [Thread-187250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:10:21.958 [DEBUG] [Thread-187250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:10:21.958 [DEBUG] [Thread-187250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:10:21.958 [DEBUG] [Thread-187250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:10:21.959 [DEBUG] [Thread-187250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:10:21.959 [DEBUG] [Thread-187250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:10:21.959 [DEBUG] [Thread-187250] [transport.py] [_log()] client lang: <none>
2025-11-24T09:10:21.959 [DEBUG] [Thread-187250] [transport.py] [_log()] server lang: <none>
2025-11-24T09:10:21.959 [DEBUG] [Thread-187250] [transport.py] [_log()] kex follows: False
2025-11-24T09:10:21.959 [DEBUG] [Thread-187250] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:10:21.959 [DEBUG] [Thread-187250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:10:21.960 [DEBUG] [Thread-187250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:10:21.960 [DEBUG] [Thread-187250] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:10:21.960 [DEBUG] [Thread-187250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:10:21.961 [DEBUG] [Thread-187250] [transport.py] [_log()] Compression: none
2025-11-24T09:10:21.961 [DEBUG] [Thread-187250] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:10:22.022 [DEBUG] [Thread-187250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:10:22.023 [DEBUG] [Thread-187250] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:10:22.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:10:22.024 [DEBUG] [Thread-187250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:10:22.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:10:22.081 [DEBUG] [Thread-187250] [transport.py] [_log()] userauth is OK
2025-11-24T09:10:22.082 [DEBUG] [Thread-187250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:10:22.082 [DEBUG] [Thread-187250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:10:22.082 [DEBUG] [Thread-187250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:10:22.082 [DEBUG] [Thread-187250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:10:22.101 [INFO] [Thread-187250] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:10:22.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:10:22.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:10:22.931 [DEBUG] [Thread-187250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:10:22.931 [DEBUG] [Thread-187250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:10:22.980 [DEBUG] [Thread-187250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:10:22.980 [DEBUG] [Thread-187250] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:10:22.989 [DEBUG] [Thread-187250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:10:22.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:10:22.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:10:23.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-11-24T09:10:23.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:10:23.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:10:23.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:10:23.025 [DEBUG] [Thread-187250] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:10:28.679 [DEBUG] [Thread-187252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:10:43.731 [DEBUG] [Thread-187253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:10:53.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:10:53.047 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:10:53.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-11-24T09:10:53.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 10, 31), 11.71, 45.26, 0.0, 23.94, 14.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:10:53.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:10:31
2025-11-24T09:10:53.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:10:54.032 [DEBUG] [Thread-187254] [transport.py] [_log()] starting thread (client mode): 0xd31cd150
2025-11-24T09:10:54.032 [DEBUG] [Thread-187254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:10:54.043 [DEBUG] [Thread-187254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:10:54.043 [INFO] [Thread-187254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:10:54.046 [DEBUG] [Thread-187254] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:10:54.046 [DEBUG] [Thread-187254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:10:54.046 [DEBUG] [Thread-187254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:10:54.046 [DEBUG] [Thread-187254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:10:54.046 [DEBUG] [Thread-187254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:10:54.046 [DEBUG] [Thread-187254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:10:54.046 [DEBUG] [Thread-187254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] client lang: <none>
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] server lang: <none>
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] kex follows: False
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] Compression: none
2025-11-24T09:10:54.047 [DEBUG] [Thread-187254] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:10:54.057 [DEBUG] [Thread-187254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:10:54.058 [DEBUG] [Thread-187254] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:10:54.059 [DEBUG] [Thread-187254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:10:54.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:10:54.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:10:54.101 [DEBUG] [Thread-187254] [transport.py] [_log()] userauth is OK
2025-11-24T09:10:54.101 [DEBUG] [Thread-187254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:10:54.101 [DEBUG] [Thread-187254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:10:54.101 [DEBUG] [Thread-187254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:10:54.101 [DEBUG] [Thread-187254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:10:54.121 [INFO] [Thread-187254] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:10:54.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:10:54.762 [DEBUG] [Thread-187254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:10:54.763 [DEBUG] [Thread-187254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:10:54.763 [DEBUG] [Thread-187254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:10:54.804 [DEBUG] [Thread-187254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:10:54.804 [DEBUG] [Thread-187254] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:10:54.807 [DEBUG] [Thread-187254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:10:54.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:10:54.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:10:54.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:10:54.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:10:54.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:10:54.839 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:10:54.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:10:54.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:10:54.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:10:54.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.299009 -999.00  +14.40  28.46     52   +4.70 1 1 1 1 1   888    0 12.96 153.41 ----- 28.5 28.5 137.2 33.2 21.0 -26.5 20.2 -25.9 18.9 -25.3 19.6 -26.3
2025-11-24T09:10:54.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:10:54.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:10:54.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.299009
2025-11-24T09:10:54.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:10:54.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:10:54.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:10:54.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:10:54.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:10:54.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:10:31', tmtdew=11.71, humidity=45.26, cloud=0.0, wind=23.94, temperature=14.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:10:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:10:54.842 [DEBUG] [Thread-187254] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:10:54.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:10:54.937 [DEBUG] [Thread-187257] [transport.py] [_log()] starting thread (client mode): 0xd3163370
2025-11-24T09:10:54.938 [DEBUG] [Thread-187257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:10:54.952 [DEBUG] [Thread-187257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:10:54.952 [INFO] [Thread-187257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:10:54.959 [DEBUG] [Thread-187257] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:10:54.960 [DEBUG] [Thread-187257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:10:54.960 [DEBUG] [Thread-187257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:10:54.960 [DEBUG] [Thread-187257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:10:54.960 [DEBUG] [Thread-187257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:10:54.960 [DEBUG] [Thread-187257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:10:54.960 [DEBUG] [Thread-187257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:10:54.961 [DEBUG] [Thread-187257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:10:54.961 [DEBUG] [Thread-187257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:10:54.961 [DEBUG] [Thread-187257] [transport.py] [_log()] client lang: <none>
2025-11-24T09:10:54.961 [DEBUG] [Thread-187257] [transport.py] [_log()] server lang: <none>
2025-11-24T09:10:54.961 [DEBUG] [Thread-187257] [transport.py] [_log()] kex follows: False
2025-11-24T09:10:54.961 [DEBUG] [Thread-187257] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:10:54.961 [DEBUG] [Thread-187257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:10:54.961 [DEBUG] [Thread-187257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:10:54.962 [DEBUG] [Thread-187257] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:10:54.962 [DEBUG] [Thread-187257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:10:54.962 [DEBUG] [Thread-187257] [transport.py] [_log()] Compression: none
2025-11-24T09:10:54.962 [DEBUG] [Thread-187257] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:10:55.018 [DEBUG] [Thread-187257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:10:55.019 [DEBUG] [Thread-187257] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:10:55.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:10:55.019 [DEBUG] [Thread-187257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:10:55.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:10:55.077 [DEBUG] [Thread-187257] [transport.py] [_log()] userauth is OK
2025-11-24T09:10:55.077 [DEBUG] [Thread-187257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:10:55.078 [DEBUG] [Thread-187257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:10:55.078 [DEBUG] [Thread-187257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:10:55.078 [DEBUG] [Thread-187257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:10:55.097 [INFO] [Thread-187257] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:10:55.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:10:55.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:10:55.927 [DEBUG] [Thread-187257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:10:55.927 [DEBUG] [Thread-187257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:10:55.975 [DEBUG] [Thread-187257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:10:55.975 [DEBUG] [Thread-187257] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:10:55.984 [DEBUG] [Thread-187257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:10:55.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:10:55.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:10:56.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-11-24T09:10:56.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:10:56.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:10:56.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:10:56.021 [DEBUG] [Thread-187257] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:10:58.760 [DEBUG] [Thread-187259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:11:00.848 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:11:00.849 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:11:13.819 [DEBUG] [Thread-187260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:11:17.971 [DEBUG] [Thread-187261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:11:26.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:11:26.027 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:11: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-11-24T09:11:26.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 11, 4), 12.23, 43.72, 0.0, 23.4, 15.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:11:26.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:11:04
2025-11-24T09:11:26.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:11:27.038 [DEBUG] [Thread-187262] [transport.py] [_log()] starting thread (client mode): 0xd317e6e0
2025-11-24T09:11:27.038 [DEBUG] [Thread-187262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:11:27.059 [DEBUG] [Thread-187262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:11:27.060 [INFO] [Thread-187262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:11:27.063 [DEBUG] [Thread-187262] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:11:27.063 [DEBUG] [Thread-187262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:11:27.071 [DEBUG] [Thread-187262] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] client lang: <none>
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] server lang: <none>
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] kex follows: False
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] Compression: none
2025-11-24T09:11:27.072 [DEBUG] [Thread-187262] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:11:27.091 [DEBUG] [Thread-187262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:11:27.092 [DEBUG] [Thread-187262] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:11:27.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:11:27.093 [DEBUG] [Thread-187262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:11:27.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:11:27.095 [DEBUG] [Thread-187262] [transport.py] [_log()] userauth is OK
2025-11-24T09:11:27.096 [DEBUG] [Thread-187262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:11:27.096 [DEBUG] [Thread-187262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:11:27.096 [DEBUG] [Thread-187262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:11:27.096 [DEBUG] [Thread-187262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:11:27.116 [INFO] [Thread-187262] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:11:27.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:11:27.710 [DEBUG] [Thread-187262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:11:27.710 [DEBUG] [Thread-187262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:11:27.711 [DEBUG] [Thread-187262] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:11:27.751 [DEBUG] [Thread-187262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:11:27.752 [DEBUG] [Thread-187262] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:11:27.754 [DEBUG] [Thread-187262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:11:27.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:11:27.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:11:27.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:11:27.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:11:27.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:11:27.782 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:11:27.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:11:27.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:11:27.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:11:27.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.299009 -999.00  +14.40  28.46     52   +4.70 1 1 1 1 1   888    0 12.96 153.41 ----- 28.5 28.5 137.2 33.2 21.0 -26.5 20.2 -25.9 18.9 -25.3 19.6 -26.3
2025-11-24T09:11:27.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:11:27.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:11:27.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.299009
2025-11-24T09:11:27.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:11:27.784 [DEBUG] [Thread-187262] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:11:27.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:11:27.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:11:27.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:11:27.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:11:27.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:11:04', tmtdew=12.23, humidity=43.72, cloud=0.0, wind=23.4, temperature=15.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:10:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:11:27.873 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:11:27.885 [DEBUG] [Thread-187265] [transport.py] [_log()] starting thread (client mode): 0xd3153130
2025-11-24T09:11:27.885 [DEBUG] [Thread-187265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:11:27.899 [DEBUG] [Thread-187265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:11:27.900 [INFO] [Thread-187265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:11:27.907 [DEBUG] [Thread-187265] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:11:27.907 [DEBUG] [Thread-187265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:11:27.907 [DEBUG] [Thread-187265] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:11:27.907 [DEBUG] [Thread-187265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:11:27.907 [DEBUG] [Thread-187265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:11:27.907 [DEBUG] [Thread-187265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] client lang: <none>
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] server lang: <none>
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] kex follows: False
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] Compression: none
2025-11-24T09:11:27.908 [DEBUG] [Thread-187265] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:11:27.964 [DEBUG] [Thread-187265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:11:27.964 [DEBUG] [Thread-187265] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:11:27.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:11:27.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:11:27.964 [DEBUG] [Thread-187265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:11:28.021 [DEBUG] [Thread-187265] [transport.py] [_log()] userauth is OK
2025-11-24T09:11:28.021 [DEBUG] [Thread-187265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:11:28.021 [DEBUG] [Thread-187265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:11:28.021 [DEBUG] [Thread-187265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:11:28.021 [DEBUG] [Thread-187265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:11:28.036 [INFO] [Thread-187265] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:11: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-11-24T09:11:28.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:11:28.856 [DEBUG] [Thread-187267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:11:28.878 [DEBUG] [Thread-187265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:11:28.878 [DEBUG] [Thread-187265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:11:28.926 [DEBUG] [Thread-187265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:11:28.926 [DEBUG] [Thread-187265] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:11:28.935 [DEBUG] [Thread-187265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:11:28.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:11:28.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-11-24T09:11:28.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-11-24T09:11:28.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:11:28.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:11:28.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:11:28.972 [DEBUG] [Thread-187265] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:11:43.902 [DEBUG] [Thread-187268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:11:58.933 [DEBUG] [Thread-187269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:11:58.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:11:58.994 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:11:58.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:11:59.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 11, 36), 11.75, 45.38, 0.0, 18.93, 14.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:11:59.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:11:36
2025-11-24T09:11:59.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:11:59.994 [DEBUG] [Thread-187270] [transport.py] [_log()] starting thread (client mode): 0xd31536d0
2025-11-24T09:11:59.994 [DEBUG] [Thread-187270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:12:00.014 [DEBUG] [Thread-187270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:12:00.014 [INFO] [Thread-187270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:12:00.017 [DEBUG] [Thread-187270] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:12:00.017 [DEBUG] [Thread-187270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:12:00.017 [DEBUG] [Thread-187270] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:12:00.017 [DEBUG] [Thread-187270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:12:00.017 [DEBUG] [Thread-187270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:12:00.017 [DEBUG] [Thread-187270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:12:00.017 [DEBUG] [Thread-187270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:12:00.017 [DEBUG] [Thread-187270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] client lang: <none>
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] server lang: <none>
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] kex follows: False
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] Compression: none
2025-11-24T09:12:00.018 [DEBUG] [Thread-187270] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:12:00.033 [DEBUG] [Thread-187270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:12:00.034 [DEBUG] [Thread-187270] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:12:00.034 [DEBUG] [Thread-187270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:12:00.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:12:00.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:12:00.036 [DEBUG] [Thread-187270] [transport.py] [_log()] userauth is OK
2025-11-24T09:12:00.037 [DEBUG] [Thread-187270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:12:00.037 [DEBUG] [Thread-187270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:12:00.037 [DEBUG] [Thread-187270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:12:00.037 [DEBUG] [Thread-187270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:12:00.063 [INFO] [Thread-187270] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:12:00.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:12:00.673 [DEBUG] [Thread-187270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:12:00.673 [DEBUG] [Thread-187270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:12:00.674 [DEBUG] [Thread-187270] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:12:00.715 [DEBUG] [Thread-187270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:12:00.715 [DEBUG] [Thread-187270] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:12:00.718 [DEBUG] [Thread-187270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:12:00.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:12:00.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:12:00.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:12:00.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:12:00.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:12:00.754 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:12:00.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:12:00.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:12:00.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:12:00.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.299356 -999.00  +14.40  29.36     51   +4.60 1 1 1 1 1   888    0 12.72 144.06 ----- 29.4 29.4 165.8 35.3 20.9 -27.7 20.1 -25.7 18.9 -25.8 19.6 -27.2
2025-11-24T09:12:00.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:12:00.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:12:00.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.299356
2025-11-24T09:12:00.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:12:00.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:12:00.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:12:00.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:12:00.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:12:00.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:11:36', tmtdew=11.75, humidity=45.38, cloud=0.0, wind=18.93, temperature=14.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:11:04.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:12:00.757 [DEBUG] [Thread-187270] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:12:00.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:12:00.853 [DEBUG] [Thread-187273] [transport.py] [_log()] starting thread (client mode): 0xd3150340
2025-11-24T09:12:00.853 [DEBUG] [Thread-187273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:12:00.868 [DEBUG] [Thread-187273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:12:00.868 [INFO] [Thread-187273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:12:00.875 [DEBUG] [Thread-187273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] client lang: <none>
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] server lang: <none>
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] kex follows: False
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:12:00.876 [DEBUG] [Thread-187273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:12:00.877 [DEBUG] [Thread-187273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:12:00.877 [DEBUG] [Thread-187273] [transport.py] [_log()] Compression: none
2025-11-24T09:12:00.877 [DEBUG] [Thread-187273] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:12:00.934 [DEBUG] [Thread-187273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:12:00.935 [DEBUG] [Thread-187273] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:12:00.936 [DEBUG] [Thread-187273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:12:00.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:12:00.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:12:00.989 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:12:00.990 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:12:00.994 [DEBUG] [Thread-187273] [transport.py] [_log()] userauth is OK
2025-11-24T09:12:00.994 [DEBUG] [Thread-187273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:12:00.994 [DEBUG] [Thread-187273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:12:00.994 [DEBUG] [Thread-187273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:12:00.995 [DEBUG] [Thread-187273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:12:01.013 [INFO] [Thread-187273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:12: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-11-24T09:12:01.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:12:01.881 [DEBUG] [Thread-187273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:12:01.881 [DEBUG] [Thread-187273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:12:01.929 [DEBUG] [Thread-187273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:12:01.929 [DEBUG] [Thread-187273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:12:01.937 [DEBUG] [Thread-187273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:12:01.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:12: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')
2025-11-24T09:12:01.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-11-24T09:12:01.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:12:01.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:12:01.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:12:01.972 [DEBUG] [Thread-187273] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:12:13.969 [DEBUG] [Thread-187275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:12:18.050 [DEBUG] [Thread-187276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:12:29.003 [DEBUG] [Thread-187277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:12:31.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:12:31.995 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:12:32.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-11-24T09:12:32.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 12, 9), 11.55, 46.08, 0.0, 20.41, 14.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:12:32.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:12:09
2025-11-24T09:12:32.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:12:33.040 [DEBUG] [Thread-187278] [transport.py] [_log()] starting thread (client mode): 0xd3153ac0
2025-11-24T09:12:33.040 [DEBUG] [Thread-187278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:12:33.060 [DEBUG] [Thread-187278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:12:33.061 [INFO] [Thread-187278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:12:33.064 [DEBUG] [Thread-187278] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:12:33.064 [DEBUG] [Thread-187278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] client lang: <none>
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] server lang: <none>
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] kex follows: False
2025-11-24T09:12:33.065 [DEBUG] [Thread-187278] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:12:33.066 [DEBUG] [Thread-187278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:12:33.066 [DEBUG] [Thread-187278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:12:33.066 [DEBUG] [Thread-187278] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:12:33.066 [DEBUG] [Thread-187278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:12:33.066 [DEBUG] [Thread-187278] [transport.py] [_log()] Compression: none
2025-11-24T09:12:33.066 [DEBUG] [Thread-187278] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:12:33.084 [DEBUG] [Thread-187278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:12:33.085 [DEBUG] [Thread-187278] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:12:33.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:12:33.086 [DEBUG] [Thread-187278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:12:33.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:12:33.088 [DEBUG] [Thread-187278] [transport.py] [_log()] userauth is OK
2025-11-24T09:12:33.088 [DEBUG] [Thread-187278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:12:33.088 [DEBUG] [Thread-187278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:12:33.088 [DEBUG] [Thread-187278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:12:33.088 [DEBUG] [Thread-187278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:12:33.126 [INFO] [Thread-187278] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:12:33.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:12:33.738 [DEBUG] [Thread-187278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:12:33.738 [DEBUG] [Thread-187278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:12:33.739 [DEBUG] [Thread-187278] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:12:33.780 [DEBUG] [Thread-187278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:12:33.780 [DEBUG] [Thread-187278] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:12:33.783 [DEBUG] [Thread-187278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:12:33.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:12:33.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:12:33.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:12:33.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:12:33.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:12:33.808 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:12:33.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:12:33.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:12:33.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:12:33.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.299703 -999.00  +14.10  17.83     53   +4.80 1 1 1 1 1   888    0 12.90 154.47 ----- 17.8 17.8 162.4 25.9 20.9 -27.3 20.0 -25.7 18.8 -25.7 19.5 -26.5
2025-11-24T09:12:33.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:12:33.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:12:33.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.299703
2025-11-24T09:12:33.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:12:33.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:12:33.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:12:33.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:12:33.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:12:33.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:12:09', tmtdew=11.55, humidity=46.08, cloud=0.0, wind=20.41, temperature=14.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:11:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:12:33.811 [DEBUG] [Thread-187278] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:12:33.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:12:33.908 [DEBUG] [Thread-187281] [transport.py] [_log()] starting thread (client mode): 0xd073b8e0
2025-11-24T09:12:33.908 [DEBUG] [Thread-187281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:12:33.923 [DEBUG] [Thread-187281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:12:33.923 [INFO] [Thread-187281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:12:33.931 [DEBUG] [Thread-187281] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:12:33.931 [DEBUG] [Thread-187281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:12:33.931 [DEBUG] [Thread-187281] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:12:33.931 [DEBUG] [Thread-187281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:12:33.932 [DEBUG] [Thread-187281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:12:33.932 [DEBUG] [Thread-187281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:12:33.932 [DEBUG] [Thread-187281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:12:33.932 [DEBUG] [Thread-187281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:12:33.932 [DEBUG] [Thread-187281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:12:33.932 [DEBUG] [Thread-187281] [transport.py] [_log()] client lang: <none>
2025-11-24T09:12:33.932 [DEBUG] [Thread-187281] [transport.py] [_log()] server lang: <none>
2025-11-24T09:12:33.932 [DEBUG] [Thread-187281] [transport.py] [_log()] kex follows: False
2025-11-24T09:12:33.932 [DEBUG] [Thread-187281] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:12:33.933 [DEBUG] [Thread-187281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:12:33.933 [DEBUG] [Thread-187281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:12:33.933 [DEBUG] [Thread-187281] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:12:33.933 [DEBUG] [Thread-187281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:12:33.933 [DEBUG] [Thread-187281] [transport.py] [_log()] Compression: none
2025-11-24T09:12:33.933 [DEBUG] [Thread-187281] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:12:33.990 [DEBUG] [Thread-187281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:12:33.991 [DEBUG] [Thread-187281] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:12:33.991 [DEBUG] [Thread-187281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:12:33.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:12:33.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:12:34.050 [DEBUG] [Thread-187281] [transport.py] [_log()] userauth is OK
2025-11-24T09:12:34.050 [DEBUG] [Thread-187281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:12:34.050 [DEBUG] [Thread-187281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:12:34.050 [DEBUG] [Thread-187281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:12:34.050 [DEBUG] [Thread-187281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:12:34.069 [INFO] [Thread-187281] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:12:34.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:12:34.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:12:34.938 [DEBUG] [Thread-187281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:12:34.938 [DEBUG] [Thread-187281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:12:34.988 [DEBUG] [Thread-187281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:12:34.988 [DEBUG] [Thread-187281] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:12:34.999 [DEBUG] [Thread-187281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:12:35.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:12:35.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-11-24T09:12:35.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:12:35.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:12:35.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:12:35.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:12:35.042 [DEBUG] [Thread-187281] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:12:44.033 [DEBUG] [Thread-187283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:12:59.074 [DEBUG] [Thread-187284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:13:01.131 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:13:01.132 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:13:05.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:13:05.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:13:05.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-11-24T09:13:05.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 12, 41), 10.73, 48.29, 0.0, 16.11, 14.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:13:05.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:12:41
2025-11-24T09:13:05.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:13:06.071 [DEBUG] [Thread-187285] [transport.py] [_log()] starting thread (client mode): 0xd3152290
2025-11-24T09:13:06.071 [DEBUG] [Thread-187285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:13:06.095 [DEBUG] [Thread-187285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:13:06.095 [INFO] [Thread-187285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:13:06.099 [DEBUG] [Thread-187285] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] client lang: <none>
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] server lang: <none>
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] kex follows: False
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] Compression: none
2025-11-24T09:13:06.108 [DEBUG] [Thread-187285] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:13:06.125 [DEBUG] [Thread-187285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:13:06.125 [DEBUG] [Thread-187285] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:13:06.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:13:06.126 [DEBUG] [Thread-187285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:13:06.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:13:06.168 [DEBUG] [Thread-187285] [transport.py] [_log()] userauth is OK
2025-11-24T09:13:06.168 [DEBUG] [Thread-187285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:13:06.168 [DEBUG] [Thread-187285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:13:06.168 [DEBUG] [Thread-187285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:13:06.168 [DEBUG] [Thread-187285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:13:06.195 [INFO] [Thread-187285] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:13:06.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:13:06.838 [DEBUG] [Thread-187285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:13:06.838 [DEBUG] [Thread-187285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:13:06.838 [DEBUG] [Thread-187285] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:13:06.879 [DEBUG] [Thread-187285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:13:06.879 [DEBUG] [Thread-187285] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:13:06.881 [DEBUG] [Thread-187285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:13:06.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:13:06.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:13:06.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:13:06.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:13:06.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:13:06.897 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:13:06.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.300050 -999.00  +14.10  21.14     54   +5.10 1 1 1 1 1   888    0 12.87 146.77 ----- 21.1 21.1 179.8 24.5 20.9 -26.6 20.0 -24.5 18.8 -23.7 19.5 -25.9
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.300050
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:13:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:12:41', tmtdew=10.73, humidity=48.29, cloud=0.0, wind=16.11, temperature=14.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:12:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:13:06.906 [DEBUG] [Thread-187285] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:13:06.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:13:06.992 [DEBUG] [Thread-187288] [transport.py] [_log()] starting thread (client mode): 0xd31512d0
2025-11-24T09:13:06.992 [DEBUG] [Thread-187288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:13:07.007 [DEBUG] [Thread-187288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:13:07.007 [INFO] [Thread-187288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] client lang: <none>
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] server lang: <none>
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] kex follows: False
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:13:07.016 [DEBUG] [Thread-187288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:13:07.017 [DEBUG] [Thread-187288] [transport.py] [_log()] Compression: none
2025-11-24T09:13:07.017 [DEBUG] [Thread-187288] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:13:07.079 [DEBUG] [Thread-187288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:13:07.079 [DEBUG] [Thread-187288] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:13:07.079 [DEBUG] [Thread-187288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:13:07.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:13:07.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:13:07.137 [DEBUG] [Thread-187288] [transport.py] [_log()] userauth is OK
2025-11-24T09:13:07.137 [DEBUG] [Thread-187288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:13:07.137 [DEBUG] [Thread-187288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:13:07.137 [DEBUG] [Thread-187288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:13:07.137 [DEBUG] [Thread-187288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:13:07.156 [INFO] [Thread-187288] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:13:07.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:13:07.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:13:08.006 [DEBUG] [Thread-187288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:13:08.006 [DEBUG] [Thread-187288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:13:08.054 [DEBUG] [Thread-187288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:13:08.054 [DEBUG] [Thread-187288] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:13:08.065 [DEBUG] [Thread-187288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:13:08.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:13:08.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-11-24T09:13:08.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-11-24T09:13:08.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:13:08.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:13:08.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:13:08.103 [DEBUG] [Thread-187288] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:13:14.117 [DEBUG] [Thread-187290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:13:18.238 [DEBUG] [Thread-187291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:13:29.170 [DEBUG] [Thread-187292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:13:38.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:13:38.107 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:13:38.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-11-24T09:13:38.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 13, 13), 10.61, 48.72, 0.0, 15.97, 14.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:13:38.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:13:13
2025-11-24T09:13:39.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:13:39.190 [DEBUG] [Thread-187293] [transport.py] [_log()] starting thread (client mode): 0xd0710340
2025-11-24T09:13:39.190 [DEBUG] [Thread-187293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:13:39.210 [DEBUG] [Thread-187293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:13:39.210 [INFO] [Thread-187293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] client lang: <none>
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] server lang: <none>
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] kex follows: False
2025-11-24T09:13:39.213 [DEBUG] [Thread-187293] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:13:39.214 [DEBUG] [Thread-187293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:13:39.214 [DEBUG] [Thread-187293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:13:39.214 [DEBUG] [Thread-187293] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:13:39.214 [DEBUG] [Thread-187293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:13:39.214 [DEBUG] [Thread-187293] [transport.py] [_log()] Compression: none
2025-11-24T09:13:39.214 [DEBUG] [Thread-187293] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:13:39.229 [DEBUG] [Thread-187293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:13:39.230 [DEBUG] [Thread-187293] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:13:39.230 [DEBUG] [Thread-187293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:13:39.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:13:39.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:13:39.231 [DEBUG] [Thread-187293] [transport.py] [_log()] userauth is OK
2025-11-24T09:13:39.231 [DEBUG] [Thread-187293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:13:39.231 [DEBUG] [Thread-187293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:13:39.231 [DEBUG] [Thread-187293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:13:39.231 [DEBUG] [Thread-187293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:13:39.259 [INFO] [Thread-187293] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:13:39.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:13:39.894 [DEBUG] [Thread-187293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:13:39.894 [DEBUG] [Thread-187293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:13:39.894 [DEBUG] [Thread-187293] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:13:39.935 [DEBUG] [Thread-187293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:13:39.935 [DEBUG] [Thread-187293] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:13:39.937 [DEBUG] [Thread-187293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:13:39.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:13:39.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:13:39.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:13:39.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:13:39.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:13:39.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:13:39.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:13:39.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:13:39.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:13:39.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.300745 -999.00  +14.10  14.03     55   +5.40 1 1 1 1 1   888    0 12.47 132.85 ----- 14.0 14.0 175.0 26.2 20.8 -26.7 19.7 -29.9 18.8 -26.2 19.4 -26.8
2025-11-24T09:13:39.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:13:39.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:13:39.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.300745
2025-11-24T09:13:39.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:13:39.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:13:39.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:13:39.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:13:39.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:13:39.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:13:13', tmtdew=10.61, humidity=48.72, cloud=0.0, wind=15.97, temperature=14.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:13:04.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:13:39.956 [DEBUG] [Thread-187293] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:13:40.031 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:13:40.044 [DEBUG] [Thread-187296] [transport.py] [_log()] starting thread (client mode): 0xd31537f0
2025-11-24T09:13:40.044 [DEBUG] [Thread-187296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:13:40.059 [DEBUG] [Thread-187296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:13:40.059 [INFO] [Thread-187296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] client lang: <none>
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] server lang: <none>
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] kex follows: False
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:13:40.067 [DEBUG] [Thread-187296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:13:40.076 [DEBUG] [Thread-187296] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:13:40.076 [DEBUG] [Thread-187296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:13:40.076 [DEBUG] [Thread-187296] [transport.py] [_log()] Compression: none
2025-11-24T09:13:40.076 [DEBUG] [Thread-187296] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:13:40.126 [DEBUG] [Thread-187296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:13:40.127 [DEBUG] [Thread-187296] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:13:40.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:13:40.127 [DEBUG] [Thread-187296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:13:40.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:13:40.185 [DEBUG] [Thread-187296] [transport.py] [_log()] userauth is OK
2025-11-24T09:13:40.185 [DEBUG] [Thread-187296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:13:40.185 [DEBUG] [Thread-187296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:13:40.186 [DEBUG] [Thread-187296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:13:40.186 [DEBUG] [Thread-187296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:13:40.201 [INFO] [Thread-187296] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:13:40.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:13:40.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:13:41.092 [DEBUG] [Thread-187296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:13:41.092 [DEBUG] [Thread-187296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:13:41.140 [DEBUG] [Thread-187296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:13:41.140 [DEBUG] [Thread-187296] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:13:41.148 [DEBUG] [Thread-187296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:13:41.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:13:41.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-11-24T09:13:41.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-11-24T09:13:41.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:13:41.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:13:41.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:13:41.180 [DEBUG] [Thread-187296] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:13:44.208 [DEBUG] [Thread-187298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:13:59.248 [DEBUG] [Thread-187299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:14:01.273 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:14:01.274 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:14:11.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:14:11.202 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:14:11.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-11-24T09:14:11.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 13, 46), 10.7, 48.65, 0.0, 20.96, 15.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:14:11.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:13:46
2025-11-24T09:14:12.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:14:12.184 [DEBUG] [Thread-187300] [transport.py] [_log()] starting thread (client mode): 0xd31cc910
2025-11-24T09:14:12.184 [DEBUG] [Thread-187300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:14:12.207 [DEBUG] [Thread-187300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:14:12.207 [INFO] [Thread-187300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] client lang: <none>
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] server lang: <none>
2025-11-24T09:14:12.210 [DEBUG] [Thread-187300] [transport.py] [_log()] kex follows: False
2025-11-24T09:14:12.211 [DEBUG] [Thread-187300] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:14:12.211 [DEBUG] [Thread-187300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:14:12.211 [DEBUG] [Thread-187300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:14:12.211 [DEBUG] [Thread-187300] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:14:12.211 [DEBUG] [Thread-187300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:14:12.211 [DEBUG] [Thread-187300] [transport.py] [_log()] Compression: none
2025-11-24T09:14:12.211 [DEBUG] [Thread-187300] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:14:12.227 [DEBUG] [Thread-187300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:14:12.227 [DEBUG] [Thread-187300] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:14:12.227 [DEBUG] [Thread-187300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:14:12.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:14:12.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:14:12.228 [DEBUG] [Thread-187300] [transport.py] [_log()] userauth is OK
2025-11-24T09:14:12.228 [DEBUG] [Thread-187300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:14:12.228 [DEBUG] [Thread-187300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:14:12.228 [DEBUG] [Thread-187300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:14:12.228 [DEBUG] [Thread-187300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:14:12.237 [INFO] [Thread-187300] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:14:12.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:14:12.896 [DEBUG] [Thread-187300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:14:12.896 [DEBUG] [Thread-187300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:14:12.897 [DEBUG] [Thread-187300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:14:12.938 [DEBUG] [Thread-187300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:14:12.938 [DEBUG] [Thread-187300] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:14:12.941 [DEBUG] [Thread-187300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:14:12.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:14:12.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:14:12.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:14:12.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:14:12.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:14:12.963 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:14:12.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:14:12.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:14:12.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:14:12.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.301092 -999.00  +14.40  21.07     55   +5.60 1 1 1 1 1   888    0 12.12 121.75 ----- 21.1 21.1 156.6 24.1 20.9 -27.0 19.8 -23.8 18.8 -23.8 19.6 -24.8
2025-11-24T09:14:12.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:14:12.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:14:12.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.301092
2025-11-24T09:14:12.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:14:12.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:14:12.966 [DEBUG] [Thread-187300] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:14:12.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:14:12.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:14:12.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:14:12.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:13:46', tmtdew=10.7, humidity=48.65, cloud=0.0, wind=20.96, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:13:34.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:14:13.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:14:13.064 [DEBUG] [Thread-187303] [transport.py] [_log()] starting thread (client mode): 0xd0710ac0
2025-11-24T09:14:13.064 [DEBUG] [Thread-187303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:14:13.084 [DEBUG] [Thread-187303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:14:13.084 [INFO] [Thread-187303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:14:13.105 [DEBUG] [Thread-187303] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:14:13.105 [DEBUG] [Thread-187303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:14:13.105 [DEBUG] [Thread-187303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:14:13.105 [DEBUG] [Thread-187303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:14:13.105 [DEBUG] [Thread-187303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:14:13.105 [DEBUG] [Thread-187303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:14:13.105 [DEBUG] [Thread-187303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:14:13.105 [DEBUG] [Thread-187303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:14:13.105 [DEBUG] [Thread-187303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:14:13.105 [DEBUG] [Thread-187303] [transport.py] [_log()] client lang: <none>
2025-11-24T09:14:13.106 [DEBUG] [Thread-187303] [transport.py] [_log()] server lang: <none>
2025-11-24T09:14:13.106 [DEBUG] [Thread-187303] [transport.py] [_log()] kex follows: False
2025-11-24T09:14:13.106 [DEBUG] [Thread-187303] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:14:13.106 [DEBUG] [Thread-187303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:14:13.106 [DEBUG] [Thread-187303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:14:13.106 [DEBUG] [Thread-187303] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:14:13.106 [DEBUG] [Thread-187303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:14:13.106 [DEBUG] [Thread-187303] [transport.py] [_log()] Compression: none
2025-11-24T09:14:13.106 [DEBUG] [Thread-187303] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:14:13.149 [DEBUG] [Thread-187303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:14:13.150 [DEBUG] [Thread-187303] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:14:13.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:14:13.151 [DEBUG] [Thread-187303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:14:13.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:14:13.206 [DEBUG] [Thread-187303] [transport.py] [_log()] userauth is OK
2025-11-24T09:14:13.206 [DEBUG] [Thread-187303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:14:13.206 [DEBUG] [Thread-187303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:14:13.206 [DEBUG] [Thread-187303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:14:13.206 [DEBUG] [Thread-187303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:14:13.225 [INFO] [Thread-187303] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:14:13.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:14:13.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:14:14.076 [DEBUG] [Thread-187303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:14:14.077 [DEBUG] [Thread-187303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:14:14.125 [DEBUG] [Thread-187303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:14:14.125 [DEBUG] [Thread-187303] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:14:14.134 [DEBUG] [Thread-187303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:14:14.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:14:14.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-11-24T09:14:14.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-11-24T09:14:14.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:14:14.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:14:14.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:14:14.171 [DEBUG] [Thread-187303] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:14:14.291 [DEBUG] [Thread-187305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:14:18.288 [DEBUG] [Thread-187306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:14:29.341 [DEBUG] [Thread-187307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:14:44.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:14:44.193 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:14:44.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:14:44.374 [DEBUG] [Thread-187308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:14:44.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 14, 18), 10.87, 48.14, 0.0, 20.64, 15.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:14:44.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:14:18
2025-11-24T09:14:45.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:14:45.237 [DEBUG] [Thread-187309] [transport.py] [_log()] starting thread (client mode): 0xd31cded0
2025-11-24T09:14:45.238 [DEBUG] [Thread-187309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:14:45.257 [DEBUG] [Thread-187309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:14:45.257 [INFO] [Thread-187309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] client lang: <none>
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] server lang: <none>
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] kex follows: False
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:14:45.260 [DEBUG] [Thread-187309] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:14:45.269 [DEBUG] [Thread-187309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:14:45.269 [DEBUG] [Thread-187309] [transport.py] [_log()] Compression: none
2025-11-24T09:14:45.269 [DEBUG] [Thread-187309] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:14:45.289 [DEBUG] [Thread-187309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:14:45.290 [DEBUG] [Thread-187309] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:14:45.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:14:45.291 [DEBUG] [Thread-187309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:14:45.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:14:45.293 [DEBUG] [Thread-187309] [transport.py] [_log()] userauth is OK
2025-11-24T09:14:45.293 [DEBUG] [Thread-187309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:14:45.293 [DEBUG] [Thread-187309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:14:45.293 [DEBUG] [Thread-187309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:14:45.293 [DEBUG] [Thread-187309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:14:45.318 [INFO] [Thread-187309] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:14:45.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:14:45.983 [DEBUG] [Thread-187309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:14:45.983 [DEBUG] [Thread-187309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:14:45.983 [DEBUG] [Thread-187309] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:14:46.024 [DEBUG] [Thread-187309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:14:46.024 [DEBUG] [Thread-187309] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:14:46.027 [DEBUG] [Thread-187309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:14:46.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:14:46.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:14:46.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:14:46.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:14:46.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:14:46.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:14:46.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:14:46.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:14:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:14:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.301439 -999.00  +14.30  14.75     54   +5.30 1 1 1 1 1   888    0 11.70 104.14 ----- 14.8 14.8 163.8 23.9 20.9 -25.4 19.9 -26.3 18.8 -24.1 19.6 -24.9
2025-11-24T09:14:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:14:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:14:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.301439
2025-11-24T09:14:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:14:46.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:14:46.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:14:46.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:14:46.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:14:46.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:14:18', tmtdew=10.87, humidity=48.14, cloud=0.0, wind=20.64, temperature=15.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:14:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:14:46.056 [DEBUG] [Thread-187309] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:14:46.128 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:14:46.146 [DEBUG] [Thread-187312] [transport.py] [_log()] starting thread (client mode): 0xd31b31f0
2025-11-24T09:14:46.147 [DEBUG] [Thread-187312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:14:46.169 [DEBUG] [Thread-187312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:14:46.169 [INFO] [Thread-187312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:14:46.184 [DEBUG] [Thread-187312] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] client lang: <none>
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] server lang: <none>
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] kex follows: False
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] Compression: none
2025-11-24T09:14:46.185 [DEBUG] [Thread-187312] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:14:46.250 [DEBUG] [Thread-187312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:14:46.250 [DEBUG] [Thread-187312] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:14:46.250 [DEBUG] [Thread-187312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:14:46.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:14:46.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:14:46.310 [DEBUG] [Thread-187312] [transport.py] [_log()] userauth is OK
2025-11-24T09:14:46.310 [DEBUG] [Thread-187312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:14:46.310 [DEBUG] [Thread-187312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:14:46.310 [DEBUG] [Thread-187312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:14:46.310 [DEBUG] [Thread-187312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:14:46.333 [INFO] [Thread-187312] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:14:46.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:14:46.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:14:47.195 [DEBUG] [Thread-187312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:14:47.196 [DEBUG] [Thread-187312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:14:47.244 [DEBUG] [Thread-187312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:14:47.244 [DEBUG] [Thread-187312] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:14:47.253 [DEBUG] [Thread-187312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:14:47.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:14:47.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-11-24T09:14:47.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-11-24T09:14:47.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:14:47.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:14:47.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:14:47.290 [DEBUG] [Thread-187312] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:14:59.399 [DEBUG] [Thread-187314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:15:01.416 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:15:01.416 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:15:14.455 [DEBUG] [Thread-187315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:15:17.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:15:17.312 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:15:17.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:15:18.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 14, 52), 11.29, 46.66, 0.0, 23.01, 15.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:15:18.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:14:52
2025-11-24T09:15:18.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:15:18.403 [DEBUG] [Thread-187316] [transport.py] [_log()] starting thread (client mode): 0xd3151990
2025-11-24T09:15:18.403 [DEBUG] [Thread-187316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:15:18.423 [DEBUG] [Thread-187316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:15:18.423 [INFO] [Thread-187316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] client lang: <none>
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] server lang: <none>
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] kex follows: False
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] Compression: none
2025-11-24T09:15:18.427 [DEBUG] [Thread-187316] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:15:18.443 [DEBUG] [Thread-187316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:15:18.444 [DEBUG] [Thread-187316] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:15:18.444 [DEBUG] [Thread-187316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:15:18.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:15:18.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:15:18.488 [DEBUG] [Thread-187316] [transport.py] [_log()] userauth is OK
2025-11-24T09:15:18.489 [DEBUG] [Thread-187316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:15:18.489 [DEBUG] [Thread-187316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:15:18.489 [DEBUG] [Thread-187316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:15:18.489 [DEBUG] [Thread-187316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:15:18.512 [INFO] [Thread-187316] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:15:18.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:15:18.632 [DEBUG] [Thread-187318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:15:19.143 [DEBUG] [Thread-187316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:15:19.144 [DEBUG] [Thread-187316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:15:19.144 [DEBUG] [Thread-187316] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:15:19.184 [DEBUG] [Thread-187316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:15:19.185 [DEBUG] [Thread-187316] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:15:19.188 [DEBUG] [Thread-187316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:15:19.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:15:19.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:15:19.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:15:19.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:15:19.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:15:19.209 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:15:19.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:15:19.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:15:19.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:15:19.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.301786 -999.00  +14.30  16.14     55   +5.50 1 1 1 1 1   888    0 11.95 112.01 ----- 16.1 16.1 158.0 21.9 21.1 -25.5 19.9 -24.4 18.9 -24.6 19.6 -25.1
2025-11-24T09:15:19.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:15:19.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:15:19.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.301786
2025-11-24T09:15:19.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:15:19.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:15:19.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:15:19.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:15:19.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:15:19.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:14:52', tmtdew=11.29, humidity=46.66, cloud=0.0, wind=23.01, temperature=15.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:14:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:15:19.212 [DEBUG] [Thread-187316] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:15:19.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:15:19.310 [DEBUG] [Thread-187320] [transport.py] [_log()] starting thread (client mode): 0xd07ce590
2025-11-24T09:15:19.310 [DEBUG] [Thread-187320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:15:19.326 [DEBUG] [Thread-187320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:15:19.326 [INFO] [Thread-187320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:15:19.334 [DEBUG] [Thread-187320] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:15:19.334 [DEBUG] [Thread-187320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:15:19.335 [DEBUG] [Thread-187320] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:15:19.335 [DEBUG] [Thread-187320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:15:19.335 [DEBUG] [Thread-187320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:15:19.335 [DEBUG] [Thread-187320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:15:19.335 [DEBUG] [Thread-187320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:15:19.335 [DEBUG] [Thread-187320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:15:19.335 [DEBUG] [Thread-187320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:15:19.335 [DEBUG] [Thread-187320] [transport.py] [_log()] client lang: <none>
2025-11-24T09:15:19.335 [DEBUG] [Thread-187320] [transport.py] [_log()] server lang: <none>
2025-11-24T09:15:19.336 [DEBUG] [Thread-187320] [transport.py] [_log()] kex follows: False
2025-11-24T09:15:19.336 [DEBUG] [Thread-187320] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:15:19.336 [DEBUG] [Thread-187320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:15:19.336 [DEBUG] [Thread-187320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:15:19.336 [DEBUG] [Thread-187320] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:15:19.336 [DEBUG] [Thread-187320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:15:19.336 [DEBUG] [Thread-187320] [transport.py] [_log()] Compression: none
2025-11-24T09:15:19.336 [DEBUG] [Thread-187320] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:15:19.400 [DEBUG] [Thread-187320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:15:19.400 [DEBUG] [Thread-187320] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:15:19.401 [DEBUG] [Thread-187320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:15:19.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:15:19.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:15:19.458 [DEBUG] [Thread-187320] [transport.py] [_log()] userauth is OK
2025-11-24T09:15:19.458 [DEBUG] [Thread-187320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:15:19.458 [DEBUG] [Thread-187320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:15:19.458 [DEBUG] [Thread-187320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:15:19.459 [DEBUG] [Thread-187320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:15:19.477 [INFO] [Thread-187320] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:15:19.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:15:19.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:15:20.320 [DEBUG] [Thread-187320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:15:20.320 [DEBUG] [Thread-187320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:15:20.367 [DEBUG] [Thread-187320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:15:20.367 [DEBUG] [Thread-187320] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:15:20.375 [DEBUG] [Thread-187320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:15:20.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:15:20.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:15:20.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:15:20.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:15:20.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:15:20.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:15:20.408 [DEBUG] [Thread-187320] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:15:29.495 [DEBUG] [Thread-187322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:15:44.540 [DEBUG] [Thread-187323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:15:50.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:15:50.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:15:50.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-11-24T09:15:51.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 15, 24), 11.57, 45.75, 0.0, 22.09, 14.94, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:15:51.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:15:24
2025-11-24T09:15:51.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:15:51.564 [DEBUG] [Thread-187324] [transport.py] [_log()] starting thread (client mode): 0xd31b31f0
2025-11-24T09:15:51.564 [DEBUG] [Thread-187324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:15:51.585 [DEBUG] [Thread-187324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:15:51.585 [INFO] [Thread-187324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:15:51.588 [DEBUG] [Thread-187324] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:15:51.588 [DEBUG] [Thread-187324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:15:51.588 [DEBUG] [Thread-187324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:15:51.588 [DEBUG] [Thread-187324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:15:51.588 [DEBUG] [Thread-187324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:15:51.588 [DEBUG] [Thread-187324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:15:51.588 [DEBUG] [Thread-187324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:15:51.588 [DEBUG] [Thread-187324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:15:51.588 [DEBUG] [Thread-187324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:15:51.589 [DEBUG] [Thread-187324] [transport.py] [_log()] client lang: <none>
2025-11-24T09:15:51.589 [DEBUG] [Thread-187324] [transport.py] [_log()] server lang: <none>
2025-11-24T09:15:51.589 [DEBUG] [Thread-187324] [transport.py] [_log()] kex follows: False
2025-11-24T09:15:51.589 [DEBUG] [Thread-187324] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:15:51.589 [DEBUG] [Thread-187324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:15:51.589 [DEBUG] [Thread-187324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:15:51.589 [DEBUG] [Thread-187324] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:15:51.589 [DEBUG] [Thread-187324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:15:51.589 [DEBUG] [Thread-187324] [transport.py] [_log()] Compression: none
2025-11-24T09:15:51.589 [DEBUG] [Thread-187324] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:15:51.607 [DEBUG] [Thread-187324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:15:51.607 [DEBUG] [Thread-187324] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:15:51.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:15:51.608 [DEBUG] [Thread-187324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:15:51.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:15:51.611 [DEBUG] [Thread-187324] [transport.py] [_log()] userauth is OK
2025-11-24T09:15:51.611 [DEBUG] [Thread-187324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:15:51.611 [DEBUG] [Thread-187324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:15:51.611 [DEBUG] [Thread-187324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:15:51.611 [DEBUG] [Thread-187324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:15:51.636 [INFO] [Thread-187324] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:15:51.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:15:52.287 [DEBUG] [Thread-187324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:15:52.287 [DEBUG] [Thread-187324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:15:52.287 [DEBUG] [Thread-187324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:15:52.328 [DEBUG] [Thread-187324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:15:52.328 [DEBUG] [Thread-187324] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:15:52.331 [DEBUG] [Thread-187324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:15:52.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:15:52.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:15:52.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:15:52.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:15:52.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:15:52.351 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:15:52.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:15:52.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.302133 -999.00  +14.90  23.74     54   +5.80 1 1 1 1 1   888    0 11.86 106.82 ----- 23.7 23.7 160.4 28.4 21.2 -27.0 20.1 -23.9 19.1 -23.1 19.8 -24.6
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.302133
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:15:52.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:15:24', tmtdew=11.57, humidity=45.75, cloud=0.0, wind=22.09, temperature=14.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:15:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:15:52.353 [DEBUG] [Thread-187324] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:15:52.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:15:52.435 [DEBUG] [Thread-187327] [transport.py] [_log()] starting thread (client mode): 0xd317dcf0
2025-11-24T09:15:52.435 [DEBUG] [Thread-187327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:15:52.451 [DEBUG] [Thread-187327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:15:52.451 [INFO] [Thread-187327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:15:52.458 [DEBUG] [Thread-187327] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:15:52.458 [DEBUG] [Thread-187327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:15:52.458 [DEBUG] [Thread-187327] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:15:52.458 [DEBUG] [Thread-187327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:15:52.458 [DEBUG] [Thread-187327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:15:52.458 [DEBUG] [Thread-187327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:15:52.458 [DEBUG] [Thread-187327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] client lang: <none>
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] server lang: <none>
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] kex follows: False
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] Compression: none
2025-11-24T09:15:52.459 [DEBUG] [Thread-187327] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:15:52.516 [DEBUG] [Thread-187327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:15:52.516 [DEBUG] [Thread-187327] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:15:52.516 [DEBUG] [Thread-187327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:15:52.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:15:52.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:15:52.573 [DEBUG] [Thread-187327] [transport.py] [_log()] userauth is OK
2025-11-24T09:15:52.573 [DEBUG] [Thread-187327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:15:52.573 [DEBUG] [Thread-187327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:15:52.573 [DEBUG] [Thread-187327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:15:52.573 [DEBUG] [Thread-187327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:15:52.587 [INFO] [Thread-187327] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:15:52.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:15:52.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:15:53.498 [DEBUG] [Thread-187327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:15:53.499 [DEBUG] [Thread-187327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:15:53.547 [DEBUG] [Thread-187327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:15:53.547 [DEBUG] [Thread-187327] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:15:53.556 [DEBUG] [Thread-187327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:15:53.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:15:53.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-11-24T09:15:53.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-11-24T09:15:53.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:15:53.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:15:53.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:15:53.593 [DEBUG] [Thread-187327] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:15:59.572 [DEBUG] [Thread-187329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:16:01.556 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:16:01.557 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:16:14.624 [DEBUG] [Thread-187330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:16:18.685 [DEBUG] [Thread-187331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:16:23.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:16:23.592 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:16:23.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-11-24T09:16:24.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 15, 56), 12.01, 44.44, 0.0, 24.39, 14.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:16:24.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:15:56
2025-11-24T09:16:24.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:16:24.672 [DEBUG] [Thread-187332] [transport.py] [_log()] starting thread (client mode): 0xd0701cc0
2025-11-24T09:16:24.672 [DEBUG] [Thread-187332] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:16:24.682 [DEBUG] [Thread-187332] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:16:24.682 [INFO] [Thread-187332] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:16:24.684 [DEBUG] [Thread-187332] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] client lang: <none>
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] server lang: <none>
2025-11-24T09:16:24.685 [DEBUG] [Thread-187332] [transport.py] [_log()] kex follows: False
2025-11-24T09:16:24.686 [DEBUG] [Thread-187332] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:16:24.686 [DEBUG] [Thread-187332] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:16:24.686 [DEBUG] [Thread-187332] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:16:24.686 [DEBUG] [Thread-187332] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:16:24.686 [DEBUG] [Thread-187332] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:16:24.686 [DEBUG] [Thread-187332] [transport.py] [_log()] Compression: none
2025-11-24T09:16:24.686 [DEBUG] [Thread-187332] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:16:24.705 [DEBUG] [Thread-187332] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:16:24.706 [DEBUG] [Thread-187332] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:16:24.707 [DEBUG] [Thread-187332] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:16:24.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:16:24.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:16:24.709 [DEBUG] [Thread-187332] [transport.py] [_log()] userauth is OK
2025-11-24T09:16:24.710 [DEBUG] [Thread-187332] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:16:24.710 [DEBUG] [Thread-187332] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:16:24.710 [DEBUG] [Thread-187332] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:16:24.710 [DEBUG] [Thread-187332] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:16:24.742 [INFO] [Thread-187332] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:16:24.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:16:25.316 [DEBUG] [Thread-187332] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:16:25.316 [DEBUG] [Thread-187332] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:16:25.316 [DEBUG] [Thread-187332] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:16:25.357 [DEBUG] [Thread-187332] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:16:25.357 [DEBUG] [Thread-187332] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:16:25.359 [DEBUG] [Thread-187332] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:16:25.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:16:25.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:16:25.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:16:25.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:16:25.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:16:25.378 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:16:25.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.302481 -999.00  +14.80  19.05     50   +4.60 1 1 1 1 1   888    0 11.56 96.21 ----- 19.1 19.1 157.8 25.4 21.1 -27.6 20.2 -26.6 19.0 -25.8 19.7 -26.5
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.302481
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:16:25.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:15:56', tmtdew=12.01, humidity=44.44, cloud=0.0, wind=24.39, temperature=14.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:15:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:16:25.379 [DEBUG] [Thread-187332] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:16:25.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:16:25.463 [DEBUG] [Thread-187335] [transport.py] [_log()] starting thread (client mode): 0xd0710070
2025-11-24T09:16:25.463 [DEBUG] [Thread-187335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:16:25.482 [DEBUG] [Thread-187335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:16:25.482 [INFO] [Thread-187335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] client lang: <none>
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] server lang: <none>
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] kex follows: False
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] Compression: none
2025-11-24T09:16:25.490 [DEBUG] [Thread-187335] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:16:25.549 [DEBUG] [Thread-187335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:16:25.549 [DEBUG] [Thread-187335] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:16:25.549 [DEBUG] [Thread-187335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:16:25.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:16:25.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:16:25.605 [DEBUG] [Thread-187335] [transport.py] [_log()] userauth is OK
2025-11-24T09:16:25.605 [DEBUG] [Thread-187335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:16:25.605 [DEBUG] [Thread-187335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:16:25.605 [DEBUG] [Thread-187335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:16:25.605 [DEBUG] [Thread-187335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:16:25.619 [INFO] [Thread-187335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:16:25.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:16:25.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:16:26.476 [DEBUG] [Thread-187335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:16:26.477 [DEBUG] [Thread-187335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:16:26.525 [DEBUG] [Thread-187335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:16:26.525 [DEBUG] [Thread-187335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:16:26.533 [DEBUG] [Thread-187335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:16:26.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:16:26.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-11-24T09:16:26.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-11-24T09:16:26.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:16:26.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:16:26.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:16:26.565 [DEBUG] [Thread-187335] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:16:29.650 [DEBUG] [Thread-187337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:16:44.692 [DEBUG] [Thread-187338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:16:56.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:16:56.579 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:16:56.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-11-24T09:16:57.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 16, 29), 11.66, 45.41, 0.0, 24.07, 14.39, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:16:57.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:16:29
2025-11-24T09:16:57.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:16:57.551 [DEBUG] [Thread-187339] [transport.py] [_log()] starting thread (client mode): 0xd0702920
2025-11-24T09:16:57.551 [DEBUG] [Thread-187339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:16:57.572 [DEBUG] [Thread-187339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:16:57.573 [INFO] [Thread-187339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] client lang: <none>
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] server lang: <none>
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] kex follows: False
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] Compression: none
2025-11-24T09:16:57.576 [DEBUG] [Thread-187339] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:16:57.595 [DEBUG] [Thread-187339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:16:57.596 [DEBUG] [Thread-187339] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:16:57.605 [DEBUG] [Thread-187339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:16:57.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:16:57.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:16:57.606 [DEBUG] [Thread-187339] [transport.py] [_log()] userauth is OK
2025-11-24T09:16:57.606 [DEBUG] [Thread-187339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:16:57.606 [DEBUG] [Thread-187339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:16:57.606 [DEBUG] [Thread-187339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:16:57.606 [DEBUG] [Thread-187339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:16:57.620 [INFO] [Thread-187339] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:16:57.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:16:58.281 [DEBUG] [Thread-187339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:16:58.283 [DEBUG] [Thread-187339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:16:58.284 [DEBUG] [Thread-187339] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:16:58.322 [DEBUG] [Thread-187339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:16:58.322 [DEBUG] [Thread-187339] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:16:58.327 [DEBUG] [Thread-187339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:16:58.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:16:58.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:16:58.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:16:58.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:16:58.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:16:58.354 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:16:58.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:16:58.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:16:58.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:16:58.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.302828 -999.00  +14.60  21.72     51   +4.60 1 1 1 1 1   888    0 11.41 93.70 ----- 21.7 21.7 143.6 30.4 21.1 -26.3 20.2 -25.0 19.0 -24.1 19.7 -27.2
2025-11-24T09:16:58.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:16:58.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:16:58.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.302828
2025-11-24T09:16:58.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:16:58.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:16:58.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:16:58.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:16:58.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:16:58.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:16:29', tmtdew=11.66, humidity=45.41, cloud=0.0, wind=24.07, temperature=14.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:16:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:16:58.357 [DEBUG] [Thread-187339] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:16:58.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:16:58.452 [DEBUG] [Thread-187342] [transport.py] [_log()] starting thread (client mode): 0xd31b0c10
2025-11-24T09:16:58.452 [DEBUG] [Thread-187342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:16:58.468 [DEBUG] [Thread-187342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:16:58.468 [INFO] [Thread-187342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:16:58.479 [DEBUG] [Thread-187342] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:16:58.479 [DEBUG] [Thread-187342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] client lang: <none>
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] server lang: <none>
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] kex follows: False
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:16:58.480 [DEBUG] [Thread-187342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:16:58.481 [DEBUG] [Thread-187342] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:16:58.481 [DEBUG] [Thread-187342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:16:58.481 [DEBUG] [Thread-187342] [transport.py] [_log()] Compression: none
2025-11-24T09:16:58.481 [DEBUG] [Thread-187342] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:16:58.546 [DEBUG] [Thread-187342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:16:58.547 [DEBUG] [Thread-187342] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:16:58.547 [DEBUG] [Thread-187342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:16:58.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:16:58.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:16:58.602 [DEBUG] [Thread-187342] [transport.py] [_log()] userauth is OK
2025-11-24T09:16:58.602 [DEBUG] [Thread-187342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:16:58.602 [DEBUG] [Thread-187342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:16:58.602 [DEBUG] [Thread-187342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:16:58.602 [DEBUG] [Thread-187342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:16:58.622 [INFO] [Thread-187342] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:16:58.622 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:16:58.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:16:59.461 [DEBUG] [Thread-187342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:16:59.462 [DEBUG] [Thread-187342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:16:59.509 [DEBUG] [Thread-187342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:16:59.510 [DEBUG] [Thread-187342] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:16:59.519 [DEBUG] [Thread-187342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:16:59.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:16:59.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-11-24T09:16:59.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:16:59.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:16:59.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:16:59.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:16:59.553 [DEBUG] [Thread-187342] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:16:59.728 [DEBUG] [Thread-187344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:17:01.699 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:17:01.700 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:17:14.773 [DEBUG] [Thread-187345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:17:18.904 [DEBUG] [Thread-187346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:17:29.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:17:29.555 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:17:29.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-11-24T09:17:29.806 [DEBUG] [Thread-187347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:17:30.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 17, 1), 11.44, 46.26, 0.0, 19.41, 14.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:17:30.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:17:01
2025-11-24T09:17:30.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:17:30.667 [DEBUG] [Thread-187348] [transport.py] [_log()] starting thread (client mode): 0xd07cee90
2025-11-24T09:17:30.667 [DEBUG] [Thread-187348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:17:30.688 [DEBUG] [Thread-187348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:17:30.688 [INFO] [Thread-187348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:17:30.691 [DEBUG] [Thread-187348] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] client lang: <none>
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] server lang: <none>
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] kex follows: False
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] Compression: none
2025-11-24T09:17:30.692 [DEBUG] [Thread-187348] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:17:30.708 [DEBUG] [Thread-187348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:17:30.708 [DEBUG] [Thread-187348] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:17:30.708 [DEBUG] [Thread-187348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:17:30.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:17:30.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:17:30.709 [DEBUG] [Thread-187348] [transport.py] [_log()] userauth is OK
2025-11-24T09:17:30.709 [DEBUG] [Thread-187348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:17:30.709 [DEBUG] [Thread-187348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:17:30.709 [DEBUG] [Thread-187348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:17:30.709 [DEBUG] [Thread-187348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:17:30.718 [INFO] [Thread-187348] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:17:30.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:17:31.358 [DEBUG] [Thread-187348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:17:31.358 [DEBUG] [Thread-187348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:17:31.358 [DEBUG] [Thread-187348] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:17:31.399 [DEBUG] [Thread-187348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:17:31.399 [DEBUG] [Thread-187348] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:17:31.401 [DEBUG] [Thread-187348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:17:31.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:17:31.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:17:31.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:17:31.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:17:31.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:17:31.419 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:17:31.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:17:31.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.303175 -999.00  +14.60  16.08     52   +4.90 1 1 1 1 1   888    0 11.41 88.67 ----- 16.1 16.1 164.0 24.4 21.1 -25.6 20.2 -24.9 18.9 -24.5 19.7 -24.9
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.303175
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:17:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:17:01', tmtdew=11.44, humidity=46.26, cloud=0.0, wind=19.41, temperature=14.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:16:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:17:31.421 [DEBUG] [Thread-187348] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:17:31.496 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:17:31.508 [DEBUG] [Thread-187351] [transport.py] [_log()] starting thread (client mode): 0xd31b3ac0
2025-11-24T09:17:31.508 [DEBUG] [Thread-187351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:17:31.523 [DEBUG] [Thread-187351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:17:31.523 [INFO] [Thread-187351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:17:31.530 [DEBUG] [Thread-187351] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:17:31.530 [DEBUG] [Thread-187351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:17:31.530 [DEBUG] [Thread-187351] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] client lang: <none>
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] server lang: <none>
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] kex follows: False
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] Compression: none
2025-11-24T09:17:31.531 [DEBUG] [Thread-187351] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:17:31.592 [DEBUG] [Thread-187351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:17:31.592 [DEBUG] [Thread-187351] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:17:31.592 [DEBUG] [Thread-187351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:17:31.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:17:31.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:17:31.650 [DEBUG] [Thread-187351] [transport.py] [_log()] userauth is OK
2025-11-24T09:17:31.650 [DEBUG] [Thread-187351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:17:31.650 [DEBUG] [Thread-187351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:17:31.650 [DEBUG] [Thread-187351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:17:31.650 [DEBUG] [Thread-187351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:17:31.664 [INFO] [Thread-187351] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:17: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-11-24T09:17:31.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:17:32.501 [DEBUG] [Thread-187351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:17:32.501 [DEBUG] [Thread-187351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:17:32.549 [DEBUG] [Thread-187351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:17:32.549 [DEBUG] [Thread-187351] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:17:32.558 [DEBUG] [Thread-187351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:17:32.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:17:32.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-11-24T09:17:32.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-11-24T09:17:32.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:17:32.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:17:32.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:17:32.592 [DEBUG] [Thread-187351] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:17:44.834 [DEBUG] [Thread-187353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:17:59.878 [DEBUG] [Thread-187354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:18:01.845 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:18:01.847 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:18:02.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:18:02.615 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:18:02.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-11-24T09:18:03.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 17, 33), 11.92, 44.58, 0.0, 29.54, 14.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:18:03.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:17:33
2025-11-24T09:18:03.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:18:03.701 [DEBUG] [Thread-187355] [transport.py] [_log()] starting thread (client mode): 0xd317cb50
2025-11-24T09:18:03.701 [DEBUG] [Thread-187355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:18:03.712 [DEBUG] [Thread-187355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:18:03.712 [INFO] [Thread-187355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:18:03.713 [DEBUG] [Thread-187355] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:18:03.713 [DEBUG] [Thread-187355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:18:03.713 [DEBUG] [Thread-187355] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:18:03.713 [DEBUG] [Thread-187355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:18:03.713 [DEBUG] [Thread-187355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] client lang: <none>
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] server lang: <none>
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] kex follows: False
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] Compression: none
2025-11-24T09:18:03.714 [DEBUG] [Thread-187355] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:18:03.722 [DEBUG] [Thread-187355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:18:03.722 [DEBUG] [Thread-187355] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:18:03.722 [DEBUG] [Thread-187355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:18:03.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:18:03.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:18:03.724 [DEBUG] [Thread-187355] [transport.py] [_log()] userauth is OK
2025-11-24T09:18:03.724 [DEBUG] [Thread-187355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:18:03.724 [DEBUG] [Thread-187355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:18:03.724 [DEBUG] [Thread-187355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:18:03.724 [DEBUG] [Thread-187355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:18:03.747 [INFO] [Thread-187355] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:18:03.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:18:04.335 [DEBUG] [Thread-187355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:18:04.336 [DEBUG] [Thread-187355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:18:04.336 [DEBUG] [Thread-187355] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:18:04.377 [DEBUG] [Thread-187355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:18:04.377 [DEBUG] [Thread-187355] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:18:04.380 [DEBUG] [Thread-187355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:18:04.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:18:04.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:18:04.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:18:04.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:18:04.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:18:04.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:18:04.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:18:04.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:18:04.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:18:04.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.303870 -999.00  +15.10  20.28     48   +4.40 1 1 1 1 1   888    0 11.49 92.72 ----- 20.3 20.3 168.6 31.9 21.2 -25.9 20.2 -23.8 19.1 -23.9 19.9 -24.9
2025-11-24T09:18:04.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:18:04.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:18:04.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.303870
2025-11-24T09:18:04.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:18:04.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:18:04.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:18:04.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:18:04.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:18:04.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:17:33', tmtdew=11.92, humidity=44.58, cloud=0.0, wind=29.54, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:17:34.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:18:04.397 [DEBUG] [Thread-187355] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:18:04.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:18:04.480 [DEBUG] [Thread-187358] [transport.py] [_log()] starting thread (client mode): 0xd07cf250
2025-11-24T09:18:04.480 [DEBUG] [Thread-187358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:18:04.495 [DEBUG] [Thread-187358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:18:04.495 [INFO] [Thread-187358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:18:04.502 [DEBUG] [Thread-187358] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:18:04.502 [DEBUG] [Thread-187358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] client lang: <none>
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] server lang: <none>
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] kex follows: False
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] Compression: none
2025-11-24T09:18:04.503 [DEBUG] [Thread-187358] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:18:04.560 [DEBUG] [Thread-187358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:18:04.560 [DEBUG] [Thread-187358] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:18:04.560 [DEBUG] [Thread-187358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:18:04.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:18:04.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:18:04.617 [DEBUG] [Thread-187358] [transport.py] [_log()] userauth is OK
2025-11-24T09:18:04.617 [DEBUG] [Thread-187358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:18:04.617 [DEBUG] [Thread-187358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:18:04.617 [DEBUG] [Thread-187358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:18:04.617 [DEBUG] [Thread-187358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:18:04.633 [INFO] [Thread-187358] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:18:04.633 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:18:04.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:18:05.495 [DEBUG] [Thread-187358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:18:05.495 [DEBUG] [Thread-187358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:18:05.543 [DEBUG] [Thread-187358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:18:05.543 [DEBUG] [Thread-187358] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:18:05.551 [DEBUG] [Thread-187358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:18:05.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:18: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')
2025-11-24T09:18:05.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-11-24T09:18:05.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:18:05.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:18:05.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:18:05.582 [DEBUG] [Thread-187358] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:18:14.910 [DEBUG] [Thread-187360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:18:19.248 [DEBUG] [Thread-187361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:18:29.969 [DEBUG] [Thread-187362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:18:35.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:18:35.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:18:35.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-11-24T09:18:36.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 18, 6), 12.39, 43.22, 0.0, 27.28, 14.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:18:36.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:18:06
2025-11-24T09:18:36.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:18:36.590 [DEBUG] [Thread-187363] [transport.py] [_log()] starting thread (client mode): 0xc9b812d0
2025-11-24T09:18:36.590 [DEBUG] [Thread-187363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:18:36.614 [DEBUG] [Thread-187363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:18:36.614 [INFO] [Thread-187363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] client lang: <none>
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] server lang: <none>
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] kex follows: False
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] Compression: none
2025-11-24T09:18:36.618 [DEBUG] [Thread-187363] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:18:36.627 [DEBUG] [Thread-187363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:18:36.628 [DEBUG] [Thread-187363] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:18:36.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:18:36.629 [DEBUG] [Thread-187363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:18:36.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:18:36.631 [DEBUG] [Thread-187363] [transport.py] [_log()] userauth is OK
2025-11-24T09:18:36.631 [DEBUG] [Thread-187363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:18:36.631 [DEBUG] [Thread-187363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:18:36.631 [DEBUG] [Thread-187363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:18:36.632 [DEBUG] [Thread-187363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:18:36.656 [INFO] [Thread-187363] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:18:36.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:18:37.326 [DEBUG] [Thread-187363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:18:37.326 [DEBUG] [Thread-187363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:18:37.326 [DEBUG] [Thread-187363] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:18:37.367 [DEBUG] [Thread-187363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:18:37.367 [DEBUG] [Thread-187363] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:18:37.369 [DEBUG] [Thread-187363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:18:37.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:18:37.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:18:37.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:18:37.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:18:37.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:18:37.399 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:18:37.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.304217 -999.00  +15.20  21.92     47   +4.10 1 1 1 1 1   888    0 11.75 95.33 ----- 21.9 21.9 170.0 29.5 21.2 -27.4 20.3 -25.5 19.2 -25.0 19.9 -26.1
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.304217
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:18:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:18:06', tmtdew=12.39, humidity=43.22, cloud=0.0, wind=27.28, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:18:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:18:37.402 [DEBUG] [Thread-187363] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:18:37.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:18:37.484 [DEBUG] [Thread-187366] [transport.py] [_log()] starting thread (client mode): 0xc9b83a30
2025-11-24T09:18:37.484 [DEBUG] [Thread-187366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:18:37.500 [DEBUG] [Thread-187366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:18:37.500 [INFO] [Thread-187366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] client lang: <none>
2025-11-24T09:18:37.507 [DEBUG] [Thread-187366] [transport.py] [_log()] server lang: <none>
2025-11-24T09:18:37.508 [DEBUG] [Thread-187366] [transport.py] [_log()] kex follows: False
2025-11-24T09:18:37.508 [DEBUG] [Thread-187366] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:18:37.508 [DEBUG] [Thread-187366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:18:37.508 [DEBUG] [Thread-187366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:18:37.508 [DEBUG] [Thread-187366] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:18:37.508 [DEBUG] [Thread-187366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:18:37.508 [DEBUG] [Thread-187366] [transport.py] [_log()] Compression: none
2025-11-24T09:18:37.508 [DEBUG] [Thread-187366] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:18:37.564 [DEBUG] [Thread-187366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:18:37.564 [DEBUG] [Thread-187366] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:18:37.565 [DEBUG] [Thread-187366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:18:37.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:18:37.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:18:37.621 [DEBUG] [Thread-187366] [transport.py] [_log()] userauth is OK
2025-11-24T09:18:37.621 [DEBUG] [Thread-187366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:18:37.621 [DEBUG] [Thread-187366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:18:37.621 [DEBUG] [Thread-187366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:18:37.621 [DEBUG] [Thread-187366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:18:37.639 [INFO] [Thread-187366] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:18:37.639 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:18:37.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:18:38.485 [DEBUG] [Thread-187366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:18:38.485 [DEBUG] [Thread-187366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:18:38.533 [DEBUG] [Thread-187366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:18:38.533 [DEBUG] [Thread-187366] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:18:38.542 [DEBUG] [Thread-187366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:18:38.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:18:38.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-11-24T09:18:38.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-11-24T09:18:38.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:18:38.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:18:38.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:18:38.583 [DEBUG] [Thread-187366] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:18:45.002 [DEBUG] [Thread-187368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:19:00.040 [DEBUG] [Thread-187369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:19:01.989 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:19:01.990 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:19:08.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:19:08.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:19:08.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:19:09.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 18, 38), 12.42, 43.14, 0.0, 25.0, 14.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:19:09.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:18:38
2025-11-24T09:19:09.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:19:09.730 [DEBUG] [Thread-187370] [transport.py] [_log()] starting thread (client mode): 0xc9b83df0
2025-11-24T09:19:09.730 [DEBUG] [Thread-187370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:19:09.745 [DEBUG] [Thread-187370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:19:09.745 [INFO] [Thread-187370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:19:09.748 [DEBUG] [Thread-187370] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] client lang: <none>
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] server lang: <none>
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] kex follows: False
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:19:09.749 [DEBUG] [Thread-187370] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:19:09.750 [DEBUG] [Thread-187370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:19:09.750 [DEBUG] [Thread-187370] [transport.py] [_log()] Compression: none
2025-11-24T09:19:09.750 [DEBUG] [Thread-187370] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:19:09.767 [DEBUG] [Thread-187370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:19:09.768 [DEBUG] [Thread-187370] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:19:09.769 [DEBUG] [Thread-187370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:19:09.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:19:09.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:19:09.772 [DEBUG] [Thread-187370] [transport.py] [_log()] userauth is OK
2025-11-24T09:19:09.772 [DEBUG] [Thread-187370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:19:09.772 [DEBUG] [Thread-187370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:19:09.772 [DEBUG] [Thread-187370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:19:09.772 [DEBUG] [Thread-187370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:19:09.792 [INFO] [Thread-187370] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:19:09.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:19:10.424 [DEBUG] [Thread-187370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:19:10.424 [DEBUG] [Thread-187370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:19:10.425 [DEBUG] [Thread-187370] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:19:10.465 [DEBUG] [Thread-187370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:19:10.465 [DEBUG] [Thread-187370] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:19:10.467 [DEBUG] [Thread-187370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:19:10.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:19:10.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:19:10.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:19:10.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:19:10.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:19:10.483 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:19:10.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.304564 -999.00  +15.10  19.61     47   +4.00 1 1 1 1 1   888    0 11.90 98.42 ----- 19.6 19.6 152.1 28.0 21.2 -26.9 20.1 -28.7 19.1 -25.1 19.9 -26.2
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.304564
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:19:10.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:18:38', tmtdew=12.42, humidity=43.14, cloud=0.0, wind=25.0, temperature=14.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:18:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:19:10.484 [DEBUG] [Thread-187370] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:19:10.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:19:10.572 [DEBUG] [Thread-187373] [transport.py] [_log()] starting thread (client mode): 0xc9b80730
2025-11-24T09:19:10.572 [DEBUG] [Thread-187373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:19:10.587 [DEBUG] [Thread-187373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:19:10.587 [INFO] [Thread-187373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:19:10.595 [DEBUG] [Thread-187373] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:19:10.595 [DEBUG] [Thread-187373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] client lang: <none>
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] server lang: <none>
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] kex follows: False
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] Compression: none
2025-11-24T09:19:10.596 [DEBUG] [Thread-187373] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:19:10.652 [DEBUG] [Thread-187373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:19:10.652 [DEBUG] [Thread-187373] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:19:10.652 [DEBUG] [Thread-187373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:19:10.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:19:10.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:19:10.709 [DEBUG] [Thread-187373] [transport.py] [_log()] userauth is OK
2025-11-24T09:19:10.709 [DEBUG] [Thread-187373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:19:10.709 [DEBUG] [Thread-187373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:19:10.709 [DEBUG] [Thread-187373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:19:10.709 [DEBUG] [Thread-187373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:19:10.724 [INFO] [Thread-187373] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:19:10.724 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:19:10.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:19:11.584 [DEBUG] [Thread-187373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:19:11.584 [DEBUG] [Thread-187373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:19:11.632 [DEBUG] [Thread-187373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:19:11.632 [DEBUG] [Thread-187373] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:19:11.640 [DEBUG] [Thread-187373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:19:11.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:19:11.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:19: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') -> 00000000
2025-11-24T09:19:11.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:19:11.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:19:11.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:19:11.672 [DEBUG] [Thread-187373] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:19:15.080 [DEBUG] [Thread-187375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:19:19.300 [DEBUG] [Thread-187376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:19:30.118 [DEBUG] [Thread-187377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:19:41.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:19:41.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:19:41.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-11-24T09:19:42.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 19, 11), 12.33, 43.47, 0.0, 26.98, 14.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:19:42.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:19:11
2025-11-24T09:19:42.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:19:42.746 [DEBUG] [Thread-187378] [transport.py] [_log()] starting thread (client mode): 0xc9b827d0
2025-11-24T09:19:42.746 [DEBUG] [Thread-187378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:19:42.766 [DEBUG] [Thread-187378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:19:42.766 [INFO] [Thread-187378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:19:42.769 [DEBUG] [Thread-187378] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:19:42.769 [DEBUG] [Thread-187378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:19:42.769 [DEBUG] [Thread-187378] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:19:42.769 [DEBUG] [Thread-187378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] client lang: <none>
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] server lang: <none>
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] kex follows: False
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] Compression: none
2025-11-24T09:19:42.771 [DEBUG] [Thread-187378] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:19:42.788 [DEBUG] [Thread-187378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:19:42.788 [DEBUG] [Thread-187378] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:19:42.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:19:42.789 [DEBUG] [Thread-187378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:19:42.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:19:42.792 [DEBUG] [Thread-187378] [transport.py] [_log()] userauth is OK
2025-11-24T09:19:42.792 [DEBUG] [Thread-187378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:19:42.792 [DEBUG] [Thread-187378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:19:42.792 [DEBUG] [Thread-187378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:19:42.792 [DEBUG] [Thread-187378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:19:42.828 [INFO] [Thread-187378] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:19:42.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:19:43.467 [DEBUG] [Thread-187378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:19:43.468 [DEBUG] [Thread-187378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:19:43.468 [DEBUG] [Thread-187378] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:19:43.508 [DEBUG] [Thread-187378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:19:43.508 [DEBUG] [Thread-187378] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:19:43.510 [DEBUG] [Thread-187378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:19:43.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:19:43.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:19:43.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:19:43.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:19:43.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:19:43.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:19:43.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:19:43.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:19:43.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:19:43.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.304911 -999.00  +15.10  25.75     50   +4.70 1 1 1 1 1   888    0 11.71 92.71 ----- 25.8 25.8 156.0 31.0 21.2 -26.7 20.3 -25.1 19.2 -25.5 19.9 -26.9
2025-11-24T09:19:43.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:19:43.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:19:43.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.304911
2025-11-24T09:19:43.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:19:43.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:19:43.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:19:43.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:19:43.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:19:43.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:19:11', tmtdew=12.33, humidity=43.47, cloud=0.0, wind=26.98, temperature=14.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:19:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:19:43.540 [DEBUG] [Thread-187378] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:19:43.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:19:43.624 [DEBUG] [Thread-187381] [transport.py] [_log()] starting thread (client mode): 0xc9b81180
2025-11-24T09:19:43.624 [DEBUG] [Thread-187381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:19:43.640 [DEBUG] [Thread-187381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:19:43.640 [INFO] [Thread-187381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:19:43.647 [DEBUG] [Thread-187381] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:19:43.647 [DEBUG] [Thread-187381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:19:43.647 [DEBUG] [Thread-187381] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:19:43.647 [DEBUG] [Thread-187381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:19:43.647 [DEBUG] [Thread-187381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] client lang: <none>
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] server lang: <none>
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] kex follows: False
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] Compression: none
2025-11-24T09:19:43.648 [DEBUG] [Thread-187381] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:19:43.707 [DEBUG] [Thread-187381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:19:43.708 [DEBUG] [Thread-187381] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:19:43.708 [DEBUG] [Thread-187381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:19:43.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:19:43.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:19:43.766 [DEBUG] [Thread-187381] [transport.py] [_log()] userauth is OK
2025-11-24T09:19:43.766 [DEBUG] [Thread-187381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:19:43.766 [DEBUG] [Thread-187381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:19:43.766 [DEBUG] [Thread-187381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:19:43.766 [DEBUG] [Thread-187381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:19:43.780 [INFO] [Thread-187381] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:19:43.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:19:43.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:19:44.642 [DEBUG] [Thread-187381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:19:44.642 [DEBUG] [Thread-187381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:19:44.690 [DEBUG] [Thread-187381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:19:44.690 [DEBUG] [Thread-187381] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:19:44.698 [DEBUG] [Thread-187381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:19:44.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:19:44.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-11-24T09:19:44.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-11-24T09:19:44.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:19:44.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:19:44.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:19:44.731 [DEBUG] [Thread-187381] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:19:45.149 [DEBUG] [Thread-187383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:20:00.190 [DEBUG] [Thread-187384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:20:02.141 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:20:02.142 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:20:14.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:20:14.751 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:20:14.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-11-24T09:20:15.218 [DEBUG] [Thread-187385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:20:15.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 19, 43), 12.07, 44.55, 0.0, 27.4, 15.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:20:15.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:19:43
2025-11-24T09:20:15.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:20:15.818 [DEBUG] [Thread-187386] [transport.py] [_log()] starting thread (client mode): 0xd07ced10
2025-11-24T09:20:15.818 [DEBUG] [Thread-187386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:20:15.839 [DEBUG] [Thread-187386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:20:15.839 [INFO] [Thread-187386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] client lang: <none>
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] server lang: <none>
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] kex follows: False
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] Compression: none
2025-11-24T09:20:15.842 [DEBUG] [Thread-187386] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:20:15.857 [DEBUG] [Thread-187386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:20:15.858 [DEBUG] [Thread-187386] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:20:15.858 [DEBUG] [Thread-187386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:20:15.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:20:15.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:20:15.860 [DEBUG] [Thread-187386] [transport.py] [_log()] userauth is OK
2025-11-24T09:20:15.860 [DEBUG] [Thread-187386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:20:15.860 [DEBUG] [Thread-187386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:20:15.860 [DEBUG] [Thread-187386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:20:15.860 [DEBUG] [Thread-187386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:20:15.892 [INFO] [Thread-187386] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:20:15.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:20:19.497 [DEBUG] [Thread-187388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:20:20.629 [DEBUG] [Thread-187386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:20:20.629 [DEBUG] [Thread-187386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:20:20.629 [DEBUG] [Thread-187386] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:20:20.670 [DEBUG] [Thread-187386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:20:20.670 [DEBUG] [Thread-187386] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:20:20.672 [DEBUG] [Thread-187386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:20:20.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:20:20.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:20:20.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:20:20.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:20:20.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:20:20.711 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:20:20.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:20:20.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:20:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:20:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.305258 -999.00  +14.80  24.65     49   +4.40 1 1 1 1 1   888    0 11.90 88.22 ----- 24.6 24.6 138.4 29.1 21.2 -26.0 20.3 -25.3 19.2 -24.8 19.9 -27.2
2025-11-24T09:20:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:20:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:20:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.305258
2025-11-24T09:20:20.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:20:20.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:20:20.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:20:20.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:20:20.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:20:20.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:19:43', tmtdew=12.07, humidity=44.55, cloud=0.0, wind=27.4, temperature=15.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:19:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:20:20.712 [DEBUG] [Thread-187386] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:20:20.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:20:20.804 [DEBUG] [Thread-187390] [transport.py] [_log()] starting thread (client mode): 0xc9b81fc0
2025-11-24T09:20:20.804 [DEBUG] [Thread-187390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:20:20.819 [DEBUG] [Thread-187390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:20:20.819 [INFO] [Thread-187390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:20:20.826 [DEBUG] [Thread-187390] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:20:20.826 [DEBUG] [Thread-187390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:20:20.826 [DEBUG] [Thread-187390] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:20:20.826 [DEBUG] [Thread-187390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:20:20.826 [DEBUG] [Thread-187390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:20:20.826 [DEBUG] [Thread-187390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:20:20.826 [DEBUG] [Thread-187390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] client lang: <none>
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] server lang: <none>
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] kex follows: False
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] Compression: none
2025-11-24T09:20:20.827 [DEBUG] [Thread-187390] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:20:20.884 [DEBUG] [Thread-187390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:20:20.884 [DEBUG] [Thread-187390] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:20:20.885 [DEBUG] [Thread-187390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:20:20.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:20:20.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:20:20.942 [DEBUG] [Thread-187390] [transport.py] [_log()] userauth is OK
2025-11-24T09:20:20.943 [DEBUG] [Thread-187390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:20:20.943 [DEBUG] [Thread-187390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:20:20.943 [DEBUG] [Thread-187390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:20:20.943 [DEBUG] [Thread-187390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:20:20.960 [INFO] [Thread-187390] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:20:20.960 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:20:20.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:20:21.788 [DEBUG] [Thread-187390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:20:21.788 [DEBUG] [Thread-187390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:20:21.836 [DEBUG] [Thread-187390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:20:21.836 [DEBUG] [Thread-187390] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:20:21.844 [DEBUG] [Thread-187390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:20:21.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:20:21.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-11-24T09:20:21.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-11-24T09:20:21.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:20:21.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:20:21.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:20:21.877 [DEBUG] [Thread-187390] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:20:30.250 [DEBUG] [Thread-187392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:20:45.301 [DEBUG] [Thread-187393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:20:51.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:20:51.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:20:51.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-11-24T09:20:52.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 20, 48), 12.48, 43.14, 0.0, 25.71, 14.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:20:52.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:20:48
2025-11-24T09:20:52.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:20:52.912 [DEBUG] [Thread-187394] [transport.py] [_log()] starting thread (client mode): 0xd0700280
2025-11-24T09:20:52.913 [DEBUG] [Thread-187394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:20:52.932 [DEBUG] [Thread-187394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:20:52.933 [INFO] [Thread-187394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] client lang: <none>
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] server lang: <none>
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] kex follows: False
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:20:52.936 [DEBUG] [Thread-187394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:20:52.937 [DEBUG] [Thread-187394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:20:52.937 [DEBUG] [Thread-187394] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:20:52.937 [DEBUG] [Thread-187394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:20:52.937 [DEBUG] [Thread-187394] [transport.py] [_log()] Compression: none
2025-11-24T09:20:52.937 [DEBUG] [Thread-187394] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:20:52.953 [DEBUG] [Thread-187394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:20:52.954 [DEBUG] [Thread-187394] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:20:52.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:20:52.955 [DEBUG] [Thread-187394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:20:52.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:20:52.958 [DEBUG] [Thread-187394] [transport.py] [_log()] userauth is OK
2025-11-24T09:20:52.958 [DEBUG] [Thread-187394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:20:52.958 [DEBUG] [Thread-187394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:20:52.958 [DEBUG] [Thread-187394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:20:52.958 [DEBUG] [Thread-187394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:20:52.982 [INFO] [Thread-187394] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:20:52.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:20:53.635 [DEBUG] [Thread-187394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:20:53.635 [DEBUG] [Thread-187394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:20:53.635 [DEBUG] [Thread-187394] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:20:53.676 [DEBUG] [Thread-187394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:20:53.676 [DEBUG] [Thread-187394] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:20:53.679 [DEBUG] [Thread-187394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:20:53.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:20:53.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:20:53.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:20:53.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:20:53.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:20:53.703 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:20:53.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:20:53.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:20:53.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:20:53.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.305606 -999.00  +14.80  21.89     49   +4.50 1 1 1 1 1   888    0 11.58 83.30 ----- 21.9 21.9 156.6 32.8 21.2 -28.1 20.2 -24.6 19.1 -25.1 19.9 -26.0
2025-11-24T09:20:53.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:20:53.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:20:53.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.305606
2025-11-24T09:20:53.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:20:53.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:20:53.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:20:53.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:20:53.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:20:53.706 [DEBUG] [Thread-187394] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:20:53.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:20:48', tmtdew=12.48, humidity=43.14, cloud=0.0, wind=25.71, temperature=14.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:20:04.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:20:53.789 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:20:53.799 [DEBUG] [Thread-187397] [transport.py] [_log()] starting thread (client mode): 0xd31b3850
2025-11-24T09:20:53.799 [DEBUG] [Thread-187397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:20:53.814 [DEBUG] [Thread-187397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:20:53.814 [INFO] [Thread-187397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:20:53.821 [DEBUG] [Thread-187397] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] client lang: <none>
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] server lang: <none>
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] kex follows: False
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] Compression: none
2025-11-24T09:20:53.822 [DEBUG] [Thread-187397] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:20:53.882 [DEBUG] [Thread-187397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:20:53.883 [DEBUG] [Thread-187397] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:20:53.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:20:53.884 [DEBUG] [Thread-187397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:20:53.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:20:53.938 [DEBUG] [Thread-187397] [transport.py] [_log()] userauth is OK
2025-11-24T09:20:53.938 [DEBUG] [Thread-187397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:20:53.939 [DEBUG] [Thread-187397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:20:53.939 [DEBUG] [Thread-187397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:20:53.939 [DEBUG] [Thread-187397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:20:53.958 [INFO] [Thread-187397] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:20: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-11-24T09:20:53.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:20:54.871 [DEBUG] [Thread-187397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:20:54.871 [DEBUG] [Thread-187397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:20:54.920 [DEBUG] [Thread-187397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:20:54.920 [DEBUG] [Thread-187397] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:20:54.928 [DEBUG] [Thread-187397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:20:54.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:20:54.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-11-24T09:20:54.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-11-24T09:20:54.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:20:54.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:20:54.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:20:54.960 [DEBUG] [Thread-187397] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:21:00.335 [DEBUG] [Thread-187399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:21:02.284 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:21:02.294 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:21:15.400 [DEBUG] [Thread-187400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:21:19.669 [DEBUG] [Thread-187401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:21:24.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:21:24.982 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:21:24.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-11-24T09:21:25.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 21, 20), 12.72, 42.43, 0.0, 24.61, 14.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:21:25.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:21:20
2025-11-24T09:21:25.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:21:25.947 [DEBUG] [Thread-187402] [transport.py] [_log()] starting thread (client mode): 0xd07009a0
2025-11-24T09:21:25.947 [DEBUG] [Thread-187402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:21:25.967 [DEBUG] [Thread-187402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:21:25.967 [INFO] [Thread-187402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:21:25.968 [DEBUG] [Thread-187402] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:21:25.968 [DEBUG] [Thread-187402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:21:25.968 [DEBUG] [Thread-187402] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:21:25.968 [DEBUG] [Thread-187402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] client lang: <none>
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] server lang: <none>
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] kex follows: False
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] Compression: none
2025-11-24T09:21:25.969 [DEBUG] [Thread-187402] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:21:25.976 [DEBUG] [Thread-187402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:21:25.977 [DEBUG] [Thread-187402] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:21:25.977 [DEBUG] [Thread-187402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:21:25.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:21:25.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:21:25.978 [DEBUG] [Thread-187402] [transport.py] [_log()] userauth is OK
2025-11-24T09:21:25.979 [DEBUG] [Thread-187402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:21:25.979 [DEBUG] [Thread-187402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:21:25.979 [DEBUG] [Thread-187402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:21:25.979 [DEBUG] [Thread-187402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:21:25.995 [INFO] [Thread-187402] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:21:25.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:21:26.710 [DEBUG] [Thread-187402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:21:26.710 [DEBUG] [Thread-187402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:21:26.710 [DEBUG] [Thread-187402] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:21:26.751 [DEBUG] [Thread-187402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:21:26.751 [DEBUG] [Thread-187402] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:21:26.753 [DEBUG] [Thread-187402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:21:26.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:21:26.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:21:26.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:21:26.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:21:26.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:21:26.770 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:21:26.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.305953 -999.00  +14.60  11.95     50   +4.40 1 1 1 1 1   888    0 12.05 93.06 ----- 11.9 11.9 163.6 26.0 21.2 -26.1 20.2 -27.0 19.1 -25.0 19.9 -25.9
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.305953
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:21:26.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:21:20', tmtdew=12.72, humidity=42.43, cloud=0.0, wind=24.61, temperature=14.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:20:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:21:26.771 [DEBUG] [Thread-187402] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:21:26.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:21:26.858 [DEBUG] [Thread-187405] [transport.py] [_log()] starting thread (client mode): 0xd0701630
2025-11-24T09:21:26.858 [DEBUG] [Thread-187405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:21:26.872 [DEBUG] [Thread-187405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:21:26.873 [INFO] [Thread-187405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:21:26.880 [DEBUG] [Thread-187405] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:21:26.880 [DEBUG] [Thread-187405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:21:26.880 [DEBUG] [Thread-187405] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:21:26.881 [DEBUG] [Thread-187405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:21:26.881 [DEBUG] [Thread-187405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:21:26.881 [DEBUG] [Thread-187405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:21:26.881 [DEBUG] [Thread-187405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:21:26.881 [DEBUG] [Thread-187405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:21:26.881 [DEBUG] [Thread-187405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:21:26.881 [DEBUG] [Thread-187405] [transport.py] [_log()] client lang: <none>
2025-11-24T09:21:26.881 [DEBUG] [Thread-187405] [transport.py] [_log()] server lang: <none>
2025-11-24T09:21:26.881 [DEBUG] [Thread-187405] [transport.py] [_log()] kex follows: False
2025-11-24T09:21:26.881 [DEBUG] [Thread-187405] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:21:26.882 [DEBUG] [Thread-187405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:21:26.882 [DEBUG] [Thread-187405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:21:26.882 [DEBUG] [Thread-187405] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:21:26.882 [DEBUG] [Thread-187405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:21:26.882 [DEBUG] [Thread-187405] [transport.py] [_log()] Compression: none
2025-11-24T09:21:26.882 [DEBUG] [Thread-187405] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:21:26.938 [DEBUG] [Thread-187405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:21:26.938 [DEBUG] [Thread-187405] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:21:26.938 [DEBUG] [Thread-187405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:21:26.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:21:26.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:21:26.994 [DEBUG] [Thread-187405] [transport.py] [_log()] userauth is OK
2025-11-24T09:21:26.994 [DEBUG] [Thread-187405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:21:26.994 [DEBUG] [Thread-187405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:21:26.994 [DEBUG] [Thread-187405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:21:26.994 [DEBUG] [Thread-187405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:21:27.014 [INFO] [Thread-187405] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:21:27.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:21:27.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:21:27.874 [DEBUG] [Thread-187405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:21:27.874 [DEBUG] [Thread-187405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:21:27.921 [DEBUG] [Thread-187405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:21:27.921 [DEBUG] [Thread-187405] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:21:27.931 [DEBUG] [Thread-187405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:21:27.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:21:27.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-11-24T09:21:27.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-11-24T09:21:27.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:21:27.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:21:27.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:21:27.965 [DEBUG] [Thread-187405] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:21:30.430 [DEBUG] [Thread-187407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:21:45.476 [DEBUG] [Thread-187408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:21:57.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:21:57.987 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:21:57.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:21:58.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 21, 53), 12.45, 43.19, 0.0, 17.8, 14.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:21:58.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:21:53
2025-11-24T09:21:58.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:21:58.986 [DEBUG] [Thread-187409] [transport.py] [_log()] starting thread (client mode): 0xd0703a90
2025-11-24T09:21:58.986 [DEBUG] [Thread-187409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:21:59.005 [DEBUG] [Thread-187409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:21:59.005 [INFO] [Thread-187409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] client lang: <none>
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] server lang: <none>
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] kex follows: False
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] Compression: none
2025-11-24T09:21:59.008 [DEBUG] [Thread-187409] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:21:59.024 [DEBUG] [Thread-187409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:21:59.024 [DEBUG] [Thread-187409] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:21:59.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:21:59.024 [DEBUG] [Thread-187409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:21:59.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:21:59.025 [DEBUG] [Thread-187409] [transport.py] [_log()] userauth is OK
2025-11-24T09:21:59.025 [DEBUG] [Thread-187409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:21:59.025 [DEBUG] [Thread-187409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:21:59.025 [DEBUG] [Thread-187409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:21:59.025 [DEBUG] [Thread-187409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:21:59.035 [INFO] [Thread-187409] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:21:59.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:21:59.662 [DEBUG] [Thread-187409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:21:59.662 [DEBUG] [Thread-187409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:21:59.663 [DEBUG] [Thread-187409] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:21:59.703 [DEBUG] [Thread-187409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:21:59.703 [DEBUG] [Thread-187409] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:21:59.705 [DEBUG] [Thread-187409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:21:59.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:21:59.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:21:59.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:21:59.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:21:59.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:21:59.722 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:21:59.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.306648 -999.00  +14.70  15.43     50   +4.40 1 1 1 1 1   888    0 12.02 94.96 ----- 15.4 15.4 159.5 21.8 21.2 -26.1 20.3 -24.2 19.1 -24.9 19.9 -25.5
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.306648
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:21:59.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:21:53', tmtdew=12.45, humidity=43.19, cloud=0.0, wind=17.8, temperature=14.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:21:34.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:21:59.723 [DEBUG] [Thread-187409] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:21: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-11-24T09:21:59.809 [DEBUG] [Thread-187412] [transport.py] [_log()] starting thread (client mode): 0xd0739420
2025-11-24T09:21:59.809 [DEBUG] [Thread-187412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:21:59.824 [DEBUG] [Thread-187412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:21:59.824 [INFO] [Thread-187412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:21:59.831 [DEBUG] [Thread-187412] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] client lang: <none>
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] server lang: <none>
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] kex follows: False
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] Compression: none
2025-11-24T09:21:59.832 [DEBUG] [Thread-187412] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:21:59.888 [DEBUG] [Thread-187412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:21:59.889 [DEBUG] [Thread-187412] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:21:59.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:21:59.889 [DEBUG] [Thread-187412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:21:59.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:21:59.954 [DEBUG] [Thread-187412] [transport.py] [_log()] userauth is OK
2025-11-24T09:21:59.954 [DEBUG] [Thread-187412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:21:59.954 [DEBUG] [Thread-187412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:21:59.955 [DEBUG] [Thread-187412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:21:59.955 [DEBUG] [Thread-187412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:21:59.972 [INFO] [Thread-187412] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:21:59.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:21:59.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:22:00.502 [DEBUG] [Thread-187414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:22:00.846 [DEBUG] [Thread-187412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:22:00.846 [DEBUG] [Thread-187412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:22:00.894 [DEBUG] [Thread-187412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:22:00.894 [DEBUG] [Thread-187412] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:22:00.902 [DEBUG] [Thread-187412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:22:00.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:22:00.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-11-24T09:22:00.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-11-24T09:22:00.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:22:00.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:22:00.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:22:00.936 [DEBUG] [Thread-187412] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:22:02.435 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:22:02.436 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:22:15.544 [DEBUG] [Thread-187415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:22:19.720 [DEBUG] [Thread-187416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:22:30.589 [DEBUG] [Thread-187417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:22:30.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:22:30.946 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:22:30.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-11-24T09:22:31.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 22, 26), 12.18, 43.95, 0.0, 21.26, 14.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:22:31.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:22:26
2025-11-24T09:22:31.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:22:32.047 [DEBUG] [Thread-187418] [transport.py] [_log()] starting thread (client mode): 0xd07cc580
2025-11-24T09:22:32.047 [DEBUG] [Thread-187418] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:22:32.067 [DEBUG] [Thread-187418] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:22:32.067 [INFO] [Thread-187418] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:22:32.070 [DEBUG] [Thread-187418] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:22:32.070 [DEBUG] [Thread-187418] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:22:32.070 [DEBUG] [Thread-187418] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:22:32.070 [DEBUG] [Thread-187418] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:22:32.070 [DEBUG] [Thread-187418] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] client lang: <none>
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] server lang: <none>
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] kex follows: False
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] Compression: none
2025-11-24T09:22:32.071 [DEBUG] [Thread-187418] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:22:32.086 [DEBUG] [Thread-187418] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:22:32.087 [DEBUG] [Thread-187418] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:22:32.087 [DEBUG] [Thread-187418] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:22:32.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:22:32.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:22:32.088 [DEBUG] [Thread-187418] [transport.py] [_log()] userauth is OK
2025-11-24T09:22:32.088 [DEBUG] [Thread-187418] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:22:32.088 [DEBUG] [Thread-187418] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:22:32.088 [DEBUG] [Thread-187418] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:22:32.088 [DEBUG] [Thread-187418] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:22:32.104 [INFO] [Thread-187418] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:22:32.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:22:32.688 [DEBUG] [Thread-187418] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:22:32.689 [DEBUG] [Thread-187418] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:22:32.689 [DEBUG] [Thread-187418] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:22:32.730 [DEBUG] [Thread-187418] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:22:32.730 [DEBUG] [Thread-187418] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:22:32.733 [DEBUG] [Thread-187418] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:22:32.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:22:32.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:22:32.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:22:32.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:22:32.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:22:32.768 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:22:32.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:22:32.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:22:32.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:22:32.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.306995 -999.00  +15.10  16.27     50   +4.90 1 1 1 1 1   888    0 11.84 91.58 ----- 16.3 16.3 162.6 20.8 21.3 -26.0 20.2 -28.7 19.2 -23.9 19.9 -25.2
2025-11-24T09:22:32.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:22:32.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:22:32.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.306995
2025-11-24T09:22:32.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:22:32.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:22:32.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:22:32.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:22:32.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:22:32.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:22:26', tmtdew=12.18, humidity=43.95, cloud=0.0, wind=21.26, temperature=14.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:22:04.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:22:32.772 [DEBUG] [Thread-187418] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:22:32.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:22:32.868 [DEBUG] [Thread-187421] [transport.py] [_log()] starting thread (client mode): 0xd07cf190
2025-11-24T09:22:32.868 [DEBUG] [Thread-187421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:22:32.881 [DEBUG] [Thread-187421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:22:32.881 [INFO] [Thread-187421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:22:32.889 [DEBUG] [Thread-187421] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:22:32.889 [DEBUG] [Thread-187421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:22:32.890 [DEBUG] [Thread-187421] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:22:32.890 [DEBUG] [Thread-187421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:22:32.890 [DEBUG] [Thread-187421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:22:32.890 [DEBUG] [Thread-187421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:22:32.890 [DEBUG] [Thread-187421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:22:32.890 [DEBUG] [Thread-187421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:22:32.890 [DEBUG] [Thread-187421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:22:32.890 [DEBUG] [Thread-187421] [transport.py] [_log()] client lang: <none>
2025-11-24T09:22:32.891 [DEBUG] [Thread-187421] [transport.py] [_log()] server lang: <none>
2025-11-24T09:22:32.891 [DEBUG] [Thread-187421] [transport.py] [_log()] kex follows: False
2025-11-24T09:22:32.891 [DEBUG] [Thread-187421] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:22:32.891 [DEBUG] [Thread-187421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:22:32.891 [DEBUG] [Thread-187421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:22:32.891 [DEBUG] [Thread-187421] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:22:32.891 [DEBUG] [Thread-187421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:22:32.891 [DEBUG] [Thread-187421] [transport.py] [_log()] Compression: none
2025-11-24T09:22:32.892 [DEBUG] [Thread-187421] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:22:32.953 [DEBUG] [Thread-187421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:22:32.953 [DEBUG] [Thread-187421] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:22:32.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:22:32.954 [DEBUG] [Thread-187421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:22:32.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:22:33.010 [DEBUG] [Thread-187421] [transport.py] [_log()] userauth is OK
2025-11-24T09:22:33.011 [DEBUG] [Thread-187421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:22:33.011 [DEBUG] [Thread-187421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:22:33.011 [DEBUG] [Thread-187421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:22:33.011 [DEBUG] [Thread-187421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:22:33.038 [INFO] [Thread-187421] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:22: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-11-24T09:22:33.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:22:33.946 [DEBUG] [Thread-187421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:22:33.946 [DEBUG] [Thread-187421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:22:33.994 [DEBUG] [Thread-187421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:22:33.994 [DEBUG] [Thread-187421] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:22:34.002 [DEBUG] [Thread-187421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:22:34.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:22:34.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:22:34.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-11-24T09:22:34.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:22:34.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:22:34.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:22:34.035 [DEBUG] [Thread-187421] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:22:45.617 [DEBUG] [Thread-187423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:23:00.672 [DEBUG] [Thread-187424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:23:02.575 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:23:02.576 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:23:04.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:23:04.058 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:23:04.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:23:04.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 22, 58), 11.85, 44.98, 0.0, 26.66, 14.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:23:04.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:22:58
2025-11-24T09:23:05.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:23:05.172 [DEBUG] [Thread-187425] [transport.py] [_log()] starting thread (client mode): 0xd31b0130
2025-11-24T09:23:05.173 [DEBUG] [Thread-187425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:23:05.192 [DEBUG] [Thread-187425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:23:05.192 [INFO] [Thread-187425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] client lang: <none>
2025-11-24T09:23:05.195 [DEBUG] [Thread-187425] [transport.py] [_log()] server lang: <none>
2025-11-24T09:23:05.196 [DEBUG] [Thread-187425] [transport.py] [_log()] kex follows: False
2025-11-24T09:23:05.196 [DEBUG] [Thread-187425] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:23:05.196 [DEBUG] [Thread-187425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:23:05.196 [DEBUG] [Thread-187425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:23:05.196 [DEBUG] [Thread-187425] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:23:05.196 [DEBUG] [Thread-187425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:23:05.196 [DEBUG] [Thread-187425] [transport.py] [_log()] Compression: none
2025-11-24T09:23:05.196 [DEBUG] [Thread-187425] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:23:05.223 [DEBUG] [Thread-187425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:23:05.223 [DEBUG] [Thread-187425] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:23:05.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:23:05.224 [DEBUG] [Thread-187425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:23:05.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:23:05.226 [DEBUG] [Thread-187425] [transport.py] [_log()] userauth is OK
2025-11-24T09:23:05.226 [DEBUG] [Thread-187425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:23:05.226 [DEBUG] [Thread-187425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:23:05.227 [DEBUG] [Thread-187425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:23:05.227 [DEBUG] [Thread-187425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:23:05.251 [INFO] [Thread-187425] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:23:05.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:23:05.810 [DEBUG] [Thread-187425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:23:05.811 [DEBUG] [Thread-187425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:23:05.811 [DEBUG] [Thread-187425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:23:05.852 [DEBUG] [Thread-187425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:23:05.852 [DEBUG] [Thread-187425] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:23:05.855 [DEBUG] [Thread-187425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:23:05.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:23:05.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:23:05.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:23:05.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:23:05.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:23:05.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:23:05.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:23:05.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:23:05.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:23:05.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.307342 -999.00  +15.10  28.66     49   +4.60 1 1 1 1 1   888    0 11.81 86.73 ----- 28.7 28.7 173.8 33.5 21.3 -26.3 20.3 -24.7 19.2 -24.2 20.0 -25.7
2025-11-24T09:23:05.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:23:05.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:23:05.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.307342
2025-11-24T09:23:05.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:23:05.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:23:05.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:23:05.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:23:05.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:23:05.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:22:58', tmtdew=11.85, humidity=44.98, cloud=0.0, wind=26.66, temperature=14.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:22:34.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:23:05.884 [DEBUG] [Thread-187425] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:23:05.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:23:05.978 [DEBUG] [Thread-187428] [transport.py] [_log()] starting thread (client mode): 0xd31b08e0
2025-11-24T09:23:05.978 [DEBUG] [Thread-187428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:23:05.993 [DEBUG] [Thread-187428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:23:05.993 [INFO] [Thread-187428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] client lang: <none>
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] server lang: <none>
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] kex follows: False
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:23:06.001 [DEBUG] [Thread-187428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:23:06.002 [DEBUG] [Thread-187428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:23:06.002 [DEBUG] [Thread-187428] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:23:06.002 [DEBUG] [Thread-187428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:23:06.002 [DEBUG] [Thread-187428] [transport.py] [_log()] Compression: none
2025-11-24T09:23:06.002 [DEBUG] [Thread-187428] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:23:06.062 [DEBUG] [Thread-187428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:23:06.063 [DEBUG] [Thread-187428] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:23:06.063 [DEBUG] [Thread-187428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:23:06.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:23:06.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:23:06.122 [DEBUG] [Thread-187428] [transport.py] [_log()] userauth is OK
2025-11-24T09:23:06.123 [DEBUG] [Thread-187428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:23:06.123 [DEBUG] [Thread-187428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:23:06.123 [DEBUG] [Thread-187428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:23:06.123 [DEBUG] [Thread-187428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:23:06.142 [INFO] [Thread-187428] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:23:06.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:23:06.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:23:07.035 [DEBUG] [Thread-187428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:23:07.035 [DEBUG] [Thread-187428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:23:07.083 [DEBUG] [Thread-187428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:23:07.083 [DEBUG] [Thread-187428] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:23:07.091 [DEBUG] [Thread-187428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:23:07.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:23:07.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-11-24T09:23:07.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-11-24T09:23:07.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:23:07.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:23:07.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:23:07.128 [DEBUG] [Thread-187428] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:23:15.700 [DEBUG] [Thread-187430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:23:19.774 [DEBUG] [Thread-187431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:23:30.756 [DEBUG] [Thread-187432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:23:37.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:23:37.138 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:23:37.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-11-24T09:23:37.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 23, 31), 12.25, 43.84, 0.0, 23.48, 14.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:23:37.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:23:31
2025-11-24T09:23:38.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:23:38.201 [DEBUG] [Thread-187433] [transport.py] [_log()] starting thread (client mode): 0xd0703df0
2025-11-24T09:23:38.201 [DEBUG] [Thread-187433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:23:38.214 [DEBUG] [Thread-187433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:23:38.214 [INFO] [Thread-187433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] client lang: <none>
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] server lang: <none>
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] kex follows: False
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:23:38.216 [DEBUG] [Thread-187433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:23:38.217 [DEBUG] [Thread-187433] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:23:38.217 [DEBUG] [Thread-187433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:23:38.217 [DEBUG] [Thread-187433] [transport.py] [_log()] Compression: none
2025-11-24T09:23:38.217 [DEBUG] [Thread-187433] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:23:38.232 [DEBUG] [Thread-187433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:23:38.232 [DEBUG] [Thread-187433] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:23:38.232 [DEBUG] [Thread-187433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:23:38.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:23:38.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:23:38.232 [DEBUG] [Thread-187433] [transport.py] [_log()] userauth is OK
2025-11-24T09:23:38.233 [DEBUG] [Thread-187433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:23:38.233 [DEBUG] [Thread-187433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:23:38.233 [DEBUG] [Thread-187433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:23:38.233 [DEBUG] [Thread-187433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:23:38.241 [INFO] [Thread-187433] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:23:38.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:23:38.895 [DEBUG] [Thread-187433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:23:38.895 [DEBUG] [Thread-187433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:23:38.895 [DEBUG] [Thread-187433] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:23:38.936 [DEBUG] [Thread-187433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:23:38.937 [DEBUG] [Thread-187433] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:23:38.940 [DEBUG] [Thread-187433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:23:38.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:23:38.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:23:38.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:23:38.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:23:38.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:23:38.964 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:23:38.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:23:38.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:23:38.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:23:38.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.307689 -999.00  +15.20  22.96     48   +4.50 1 1 1 1 1   888    0 11.72 83.71 ----- 23.0 23.0 146.0 31.3 21.4 -26.6 20.4 -24.7 19.3 -23.9 20.0 -25.5
2025-11-24T09:23:38.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:23:38.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:23:38.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.307689
2025-11-24T09:23:38.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:23:38.966 [DEBUG] [Thread-187433] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:23:38.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:23:38.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:23:38.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:23:38.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:23:38.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:23:31', tmtdew=12.25, humidity=43.84, cloud=0.0, wind=23.48, temperature=14.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:23:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:23:39.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:23:39.079 [DEBUG] [Thread-187436] [transport.py] [_log()] starting thread (client mode): 0xd0713fd0
2025-11-24T09:23:39.079 [DEBUG] [Thread-187436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:23:39.093 [DEBUG] [Thread-187436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:23:39.093 [INFO] [Thread-187436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:23:39.101 [DEBUG] [Thread-187436] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:23:39.101 [DEBUG] [Thread-187436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:23:39.101 [DEBUG] [Thread-187436] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:23:39.101 [DEBUG] [Thread-187436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:23:39.101 [DEBUG] [Thread-187436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:23:39.102 [DEBUG] [Thread-187436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:23:39.102 [DEBUG] [Thread-187436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:23:39.102 [DEBUG] [Thread-187436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:23:39.102 [DEBUG] [Thread-187436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:23:39.102 [DEBUG] [Thread-187436] [transport.py] [_log()] client lang: <none>
2025-11-24T09:23:39.102 [DEBUG] [Thread-187436] [transport.py] [_log()] server lang: <none>
2025-11-24T09:23:39.102 [DEBUG] [Thread-187436] [transport.py] [_log()] kex follows: False
2025-11-24T09:23:39.102 [DEBUG] [Thread-187436] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:23:39.102 [DEBUG] [Thread-187436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:23:39.103 [DEBUG] [Thread-187436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:23:39.103 [DEBUG] [Thread-187436] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:23:39.103 [DEBUG] [Thread-187436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:23:39.103 [DEBUG] [Thread-187436] [transport.py] [_log()] Compression: none
2025-11-24T09:23:39.103 [DEBUG] [Thread-187436] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:23:39.162 [DEBUG] [Thread-187436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:23:39.162 [DEBUG] [Thread-187436] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:23:39.163 [DEBUG] [Thread-187436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:23:39.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:23:39.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:23:39.218 [DEBUG] [Thread-187436] [transport.py] [_log()] userauth is OK
2025-11-24T09:23:39.218 [DEBUG] [Thread-187436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:23:39.218 [DEBUG] [Thread-187436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:23:39.218 [DEBUG] [Thread-187436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:23:39.219 [DEBUG] [Thread-187436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:23:39.238 [INFO] [Thread-187436] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:23:39.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:23:39.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:23:40.084 [DEBUG] [Thread-187436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:23:40.084 [DEBUG] [Thread-187436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:23:40.133 [DEBUG] [Thread-187436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:23:40.133 [DEBUG] [Thread-187436] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:23:40.142 [DEBUG] [Thread-187436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:23:40.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:23:40.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-11-24T09:23:40.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-11-24T09:23:40.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:23:40.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:23:40.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:23:40.179 [DEBUG] [Thread-187436] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:23:45.794 [DEBUG] [Thread-187438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:24:00.841 [DEBUG] [Thread-187439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:24:02.715 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:24:02.716 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:24:10.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:24:10.186 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:24:10.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-11-24T09:24:10.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 24, 3), 11.91, 44.87, 0.0, 26.47, 14.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:24:10.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:24:03
2025-11-24T09:24:11.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:24:11.265 [DEBUG] [Thread-187440] [transport.py] [_log()] starting thread (client mode): 0xd0701e40
2025-11-24T09:24:11.265 [DEBUG] [Thread-187440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:24:11.286 [DEBUG] [Thread-187440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:24:11.287 [INFO] [Thread-187440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] client lang: <none>
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] server lang: <none>
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] kex follows: False
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] Compression: none
2025-11-24T09:24:11.290 [DEBUG] [Thread-187440] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:24:11.306 [DEBUG] [Thread-187440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:24:11.306 [DEBUG] [Thread-187440] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:24:11.306 [DEBUG] [Thread-187440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:24:11.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:24:11.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:24:11.307 [DEBUG] [Thread-187440] [transport.py] [_log()] userauth is OK
2025-11-24T09:24:11.307 [DEBUG] [Thread-187440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:24:11.307 [DEBUG] [Thread-187440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:24:11.307 [DEBUG] [Thread-187440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:24:11.307 [DEBUG] [Thread-187440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:24:11.315 [INFO] [Thread-187440] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:24:11.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:24:11.924 [DEBUG] [Thread-187440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:24:11.924 [DEBUG] [Thread-187440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:24:11.924 [DEBUG] [Thread-187440] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:24:11.965 [DEBUG] [Thread-187440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:24:11.965 [DEBUG] [Thread-187440] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:24:11.968 [DEBUG] [Thread-187440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:24:11.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:24:11.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:24:11.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:24:11.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:24:11.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:24:11.991 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:24:11.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:24:11.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:24:11.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:24:11.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.308036 -999.00  +15.20  19.45     47   +4.20 1 1 1 1 1   888    0 11.66 82.04 ----- 19.4 19.4 177.0 33.5 21.2 -27.0 20.2 -31.3 19.3 -26.0 19.9 -27.6
2025-11-24T09:24:11.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:24:11.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:24:11.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.308036
2025-11-24T09:24:11.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:24:11.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:24:11.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:24:11.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:24:11.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:24:11.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:24:03', tmtdew=11.91, humidity=44.87, cloud=0.0, wind=26.47, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:23:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:24:11.994 [DEBUG] [Thread-187440] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:24:12.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:24:12.089 [DEBUG] [Thread-187443] [transport.py] [_log()] starting thread (client mode): 0xd31b33d0
2025-11-24T09:24:12.090 [DEBUG] [Thread-187443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:24:12.104 [DEBUG] [Thread-187443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:24:12.104 [INFO] [Thread-187443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:24:12.112 [DEBUG] [Thread-187443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:24:12.112 [DEBUG] [Thread-187443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:24:12.112 [DEBUG] [Thread-187443] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:24:12.112 [DEBUG] [Thread-187443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:24:12.112 [DEBUG] [Thread-187443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:24:12.112 [DEBUG] [Thread-187443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] client lang: <none>
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] server lang: <none>
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] kex follows: False
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] Compression: none
2025-11-24T09:24:12.113 [DEBUG] [Thread-187443] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:24:12.170 [DEBUG] [Thread-187443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:24:12.170 [DEBUG] [Thread-187443] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:24:12.171 [DEBUG] [Thread-187443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:24:12.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:24:12.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:24:12.226 [DEBUG] [Thread-187443] [transport.py] [_log()] userauth is OK
2025-11-24T09:24:12.227 [DEBUG] [Thread-187443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:24:12.227 [DEBUG] [Thread-187443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:24:12.227 [DEBUG] [Thread-187443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:24:12.227 [DEBUG] [Thread-187443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:24:12.246 [INFO] [Thread-187443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:24:12.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:24:12.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:24:13.074 [DEBUG] [Thread-187443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:24:13.083 [DEBUG] [Thread-187443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:24:13.124 [DEBUG] [Thread-187443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:24:13.124 [DEBUG] [Thread-187443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:24:13.132 [DEBUG] [Thread-187443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:24:13.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:24:13.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-11-24T09:24:13.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-11-24T09:24:13.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:24:13.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:24:13.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:24:13.172 [DEBUG] [Thread-187443] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:24:15.889 [DEBUG] [Thread-187445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:24:19.894 [DEBUG] [Thread-187446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:24:30.936 [DEBUG] [Thread-187447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:24:43.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:24:43.170 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:24:43.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-11-24T09:24:43.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 24, 35), 12.13, 44.15, 0.0, 24.97, 15.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:24:43.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:24:35
2025-11-24T09:24:44.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:24:44.185 [DEBUG] [Thread-187448] [transport.py] [_log()] starting thread (client mode): 0xd31cca60
2025-11-24T09:24:44.186 [DEBUG] [Thread-187448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:24:44.205 [DEBUG] [Thread-187448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:24:44.205 [INFO] [Thread-187448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] client lang: <none>
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] server lang: <none>
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] kex follows: False
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:24:44.207 [DEBUG] [Thread-187448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:24:44.208 [DEBUG] [Thread-187448] [transport.py] [_log()] Compression: none
2025-11-24T09:24:44.208 [DEBUG] [Thread-187448] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:24:44.218 [DEBUG] [Thread-187448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:24:44.219 [DEBUG] [Thread-187448] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:24:44.219 [DEBUG] [Thread-187448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:24:44.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:24:44.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:24:44.228 [DEBUG] [Thread-187448] [transport.py] [_log()] userauth is OK
2025-11-24T09:24:44.228 [DEBUG] [Thread-187448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:24:44.228 [DEBUG] [Thread-187448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:24:44.229 [DEBUG] [Thread-187448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:24:44.229 [DEBUG] [Thread-187448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:24:44.237 [INFO] [Thread-187448] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:24:44.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:24:44.900 [DEBUG] [Thread-187448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:24:44.901 [DEBUG] [Thread-187448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:24:44.901 [DEBUG] [Thread-187448] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:24:44.942 [DEBUG] [Thread-187448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:24:44.942 [DEBUG] [Thread-187448] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:24:44.945 [DEBUG] [Thread-187448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:24:44.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:24:44.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:24:44.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:24:44.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:24:44.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:24:44.968 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:24:44.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:24:44.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:24:44.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:24:44.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.308383 -999.00  +15.10  22.67     49   +4.70 1 1 1 1 1   888    0 11.67 80.14 ----- 22.7 22.7 168.0 31.8 21.2 -26.5 19.9 -28.4 19.1 -25.6 19.9 -26.4
2025-11-24T09:24:44.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:24:44.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:24:44.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.308383
2025-11-24T09:24:44.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:24:44.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:24:44.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:24:44.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:24:44.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:24:44.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:24:35', tmtdew=12.13, humidity=44.15, cloud=0.0, wind=24.97, temperature=15.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:24:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:24:44.972 [DEBUG] [Thread-187448] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:24:45.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:24:45.071 [DEBUG] [Thread-187451] [transport.py] [_log()] starting thread (client mode): 0xd31b1390
2025-11-24T09:24:45.071 [DEBUG] [Thread-187451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:24:45.086 [DEBUG] [Thread-187451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:24:45.086 [INFO] [Thread-187451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] client lang: <none>
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] server lang: <none>
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] kex follows: False
2025-11-24T09:24:45.096 [DEBUG] [Thread-187451] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:24:45.097 [DEBUG] [Thread-187451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:24:45.097 [DEBUG] [Thread-187451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:24:45.097 [DEBUG] [Thread-187451] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:24:45.097 [DEBUG] [Thread-187451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:24:45.097 [DEBUG] [Thread-187451] [transport.py] [_log()] Compression: none
2025-11-24T09:24:45.097 [DEBUG] [Thread-187451] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:24:45.158 [DEBUG] [Thread-187451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:24:45.159 [DEBUG] [Thread-187451] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:24:45.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:24:45.160 [DEBUG] [Thread-187451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:24:45.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:24:45.216 [DEBUG] [Thread-187451] [transport.py] [_log()] userauth is OK
2025-11-24T09:24:45.217 [DEBUG] [Thread-187451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:24:45.217 [DEBUG] [Thread-187451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:24:45.217 [DEBUG] [Thread-187451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:24:45.217 [DEBUG] [Thread-187451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:24:45.235 [INFO] [Thread-187451] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:24:45.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:24:45.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:24:45.973 [DEBUG] [Thread-187453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:24:46.084 [DEBUG] [Thread-187451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:24:46.084 [DEBUG] [Thread-187451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:24:46.133 [DEBUG] [Thread-187451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:24:46.133 [DEBUG] [Thread-187451] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:24:46.143 [DEBUG] [Thread-187451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:24:46.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:24:46.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-11-24T09:24:46.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-11-24T09:24:46.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:24:46.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:24:46.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:24:46.181 [DEBUG] [Thread-187451] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:25:01.027 [DEBUG] [Thread-187454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:25:02.859 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:25:02.860 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:25:16.058 [DEBUG] [Thread-187455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:25:16.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:25:16.204 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:25:16.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-11-24T09:25:16.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 25, 8), 12.07, 44.35, 0.0, 22.74, 15.27, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:25:16.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:25:08
2025-11-24T09:25:17.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:25:17.197 [DEBUG] [Thread-187456] [transport.py] [_log()] starting thread (client mode): 0xd0703640
2025-11-24T09:25:17.197 [DEBUG] [Thread-187456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:25:17.217 [DEBUG] [Thread-187456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:25:17.217 [INFO] [Thread-187456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] client lang: <none>
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] server lang: <none>
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] kex follows: False
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:25:17.220 [DEBUG] [Thread-187456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:25:17.221 [DEBUG] [Thread-187456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:25:17.221 [DEBUG] [Thread-187456] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:25:17.221 [DEBUG] [Thread-187456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:25:17.221 [DEBUG] [Thread-187456] [transport.py] [_log()] Compression: none
2025-11-24T09:25:17.221 [DEBUG] [Thread-187456] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:25:17.238 [DEBUG] [Thread-187456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:25:17.238 [DEBUG] [Thread-187456] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:25:17.238 [DEBUG] [Thread-187456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:25:17.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:25:17.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:25:17.239 [DEBUG] [Thread-187456] [transport.py] [_log()] userauth is OK
2025-11-24T09:25:17.239 [DEBUG] [Thread-187456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:25:17.239 [DEBUG] [Thread-187456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:25:17.239 [DEBUG] [Thread-187456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:25:17.239 [DEBUG] [Thread-187456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:25:17.265 [INFO] [Thread-187456] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:25:17.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:25:17.887 [DEBUG] [Thread-187456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:25:17.888 [DEBUG] [Thread-187456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:25:17.888 [DEBUG] [Thread-187456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:25:17.928 [DEBUG] [Thread-187456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:25:17.929 [DEBUG] [Thread-187456] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:25:17.931 [DEBUG] [Thread-187456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:25:17.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:25:17.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:25:17.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:25:17.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:25:17.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:25:17.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:25:17.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:25:17.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:25:17.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:25:17.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.308731 -999.00  +15.20  24.19     49   +4.60 1 1 1 1 1   888    0 11.72 76.22 ----- 24.2 24.2 155.6 27.9 21.2 -26.9 20.2 -24.7 19.3 -24.5 19.9 -26.3
2025-11-24T09:25:17.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:25:17.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:25:17.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.308731
2025-11-24T09:25:17.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:25:17.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:25:17.958 [DEBUG] [Thread-187456] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:25:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:25:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:25:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:25:17.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:25:08', tmtdew=12.07, humidity=44.35, cloud=0.0, wind=22.74, temperature=15.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:24:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:25: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-11-24T09:25:18.053 [DEBUG] [Thread-187459] [transport.py] [_log()] starting thread (client mode): 0xd07039a0
2025-11-24T09:25:18.053 [DEBUG] [Thread-187459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:25:18.067 [DEBUG] [Thread-187459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:25:18.068 [INFO] [Thread-187459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:25:18.079 [DEBUG] [Thread-187459] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:25:18.079 [DEBUG] [Thread-187459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:25:18.079 [DEBUG] [Thread-187459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:25:18.079 [DEBUG] [Thread-187459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:25:18.079 [DEBUG] [Thread-187459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:25:18.080 [DEBUG] [Thread-187459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:25:18.080 [DEBUG] [Thread-187459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:25:18.080 [DEBUG] [Thread-187459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:25:18.080 [DEBUG] [Thread-187459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:25:18.080 [DEBUG] [Thread-187459] [transport.py] [_log()] client lang: <none>
2025-11-24T09:25:18.080 [DEBUG] [Thread-187459] [transport.py] [_log()] server lang: <none>
2025-11-24T09:25:18.080 [DEBUG] [Thread-187459] [transport.py] [_log()] kex follows: False
2025-11-24T09:25:18.080 [DEBUG] [Thread-187459] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:25:18.080 [DEBUG] [Thread-187459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:25:18.081 [DEBUG] [Thread-187459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:25:18.081 [DEBUG] [Thread-187459] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:25:18.081 [DEBUG] [Thread-187459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:25:18.081 [DEBUG] [Thread-187459] [transport.py] [_log()] Compression: none
2025-11-24T09:25:18.081 [DEBUG] [Thread-187459] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:25:18.147 [DEBUG] [Thread-187459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:25:18.147 [DEBUG] [Thread-187459] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:25:18.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:25:18.148 [DEBUG] [Thread-187459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:25:18.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:25:18.209 [DEBUG] [Thread-187459] [transport.py] [_log()] userauth is OK
2025-11-24T09:25:18.209 [DEBUG] [Thread-187459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:25:18.210 [DEBUG] [Thread-187459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:25:18.210 [DEBUG] [Thread-187459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:25:18.210 [DEBUG] [Thread-187459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:25:18.235 [INFO] [Thread-187459] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:25:18.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:25:18.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:25:19.066 [DEBUG] [Thread-187459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:25:19.066 [DEBUG] [Thread-187459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:25:19.113 [DEBUG] [Thread-187459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:25:19.113 [DEBUG] [Thread-187459] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:25:19.122 [DEBUG] [Thread-187459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:25:19.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:25:19.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-11-24T09:25:19.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-11-24T09:25:19.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:25:19.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:25:19.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:25:19.156 [DEBUG] [Thread-187459] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:25:20.253 [DEBUG] [Thread-187461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:25:31.091 [DEBUG] [Thread-187462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:25:46.141 [DEBUG] [Thread-187463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:25:49.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:25:49.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:25:49.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-11-24T09:25:49.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 25, 40), 12.2, 43.55, 0.0, 28.06, 15.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:25:49.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:25:40
2025-11-24T09:25:50.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:25:50.309 [DEBUG] [Thread-187464] [transport.py] [_log()] starting thread (client mode): 0xd0701c30
2025-11-24T09:25:50.310 [DEBUG] [Thread-187464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:25:50.328 [DEBUG] [Thread-187464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:25:50.328 [INFO] [Thread-187464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:25:50.331 [DEBUG] [Thread-187464] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] client lang: <none>
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] server lang: <none>
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] kex follows: False
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] Compression: none
2025-11-24T09:25:50.332 [DEBUG] [Thread-187464] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:25:50.347 [DEBUG] [Thread-187464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:25:50.347 [DEBUG] [Thread-187464] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:25:50.347 [DEBUG] [Thread-187464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:25:50.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:25:50.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:25:50.348 [DEBUG] [Thread-187464] [transport.py] [_log()] userauth is OK
2025-11-24T09:25:50.348 [DEBUG] [Thread-187464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:25:50.348 [DEBUG] [Thread-187464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:25:50.348 [DEBUG] [Thread-187464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:25:50.348 [DEBUG] [Thread-187464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:25:50.363 [INFO] [Thread-187464] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:25:50.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:25:50.980 [DEBUG] [Thread-187464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:25:50.980 [DEBUG] [Thread-187464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:25:50.980 [DEBUG] [Thread-187464] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:25:51.021 [DEBUG] [Thread-187464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:25:51.021 [DEBUG] [Thread-187464] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:25:51.023 [DEBUG] [Thread-187464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:25:51.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:25:51.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:25:51.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:25:51.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:25:51.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:25:51.043 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:25:51.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:25:51.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:25:51.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:25:51.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.309078 -999.00  +15.20  28.20     48   +4.40 1 1 1 1 1   888    0 12.01 82.54 ----- 28.2 28.2 177.8 29.7 21.3 -27.2 20.3 -24.4 19.3 -24.2 20.1 -25.5
2025-11-24T09:25:51.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:25:51.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:25:51.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.309078
2025-11-24T09:25:51.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:25:51.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:25:51.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:25:51.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:25:51.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:25:51.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:25:40', tmtdew=12.2, humidity=43.55, cloud=0.0, wind=28.06, temperature=15.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:25:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:25:51.044 [DEBUG] [Thread-187464] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:25:51.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:25:51.129 [DEBUG] [Thread-187467] [transport.py] [_log()] starting thread (client mode): 0xd0712c20
2025-11-24T09:25:51.129 [DEBUG] [Thread-187467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:25:51.144 [DEBUG] [Thread-187467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:25:51.144 [INFO] [Thread-187467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] client lang: <none>
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] server lang: <none>
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] kex follows: False
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] Compression: none
2025-11-24T09:25:51.157 [DEBUG] [Thread-187467] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:25:51.214 [DEBUG] [Thread-187467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:25:51.214 [DEBUG] [Thread-187467] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:25:51.214 [DEBUG] [Thread-187467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:25:51.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:25:51.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:25:51.271 [DEBUG] [Thread-187467] [transport.py] [_log()] userauth is OK
2025-11-24T09:25:51.271 [DEBUG] [Thread-187467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:25:51.271 [DEBUG] [Thread-187467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:25:51.271 [DEBUG] [Thread-187467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:25:51.271 [DEBUG] [Thread-187467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:25:51.287 [INFO] [Thread-187467] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:25:51.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:25:51.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:25:52.192 [DEBUG] [Thread-187467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:25:52.201 [DEBUG] [Thread-187467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:25:52.240 [DEBUG] [Thread-187467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:25:52.240 [DEBUG] [Thread-187467] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:25:52.248 [DEBUG] [Thread-187467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:25:52.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:25:52.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-11-24T09:25: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-11-24T09:25:52.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:25:52.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:25:52.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:25:52.279 [DEBUG] [Thread-187467] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:26:01.174 [DEBUG] [Thread-187469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:26:03.005 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:26:03.006 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:26:16.228 [DEBUG] [Thread-187470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:26:20.317 [DEBUG] [Thread-187471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:26:22.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:26:22.302 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:26:22.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-11-24T09:26:23.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 26, 13), 12.18, 43.6, 0.0, 27.0, 14.94, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:26:23.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:26:13
2025-11-24T09:26:23.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:26:23.453 [DEBUG] [Thread-187472] [transport.py] [_log()] starting thread (client mode): 0xd0739180
2025-11-24T09:26:23.453 [DEBUG] [Thread-187472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:26:23.473 [DEBUG] [Thread-187472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:26:23.473 [INFO] [Thread-187472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:26:23.476 [DEBUG] [Thread-187472] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] client lang: <none>
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] server lang: <none>
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] kex follows: False
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] Compression: none
2025-11-24T09:26:23.477 [DEBUG] [Thread-187472] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:26:23.491 [DEBUG] [Thread-187472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:26:23.491 [DEBUG] [Thread-187472] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:26:23.491 [DEBUG] [Thread-187472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:26:23.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:26:23.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:26:23.492 [DEBUG] [Thread-187472] [transport.py] [_log()] userauth is OK
2025-11-24T09:26:23.492 [DEBUG] [Thread-187472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:26:23.492 [DEBUG] [Thread-187472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:26:23.492 [DEBUG] [Thread-187472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:26:23.492 [DEBUG] [Thread-187472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:26:23.507 [INFO] [Thread-187472] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:26:23.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:26:24.124 [DEBUG] [Thread-187472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:26:24.125 [DEBUG] [Thread-187472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:26:24.125 [DEBUG] [Thread-187472] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:26:24.165 [DEBUG] [Thread-187472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:26:24.165 [DEBUG] [Thread-187472] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:26:24.167 [DEBUG] [Thread-187472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:26:24.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:26:24.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:26:24.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:26:24.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:26:24.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:26:24.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:26:24.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.309772 -999.00  +14.90  21.47     50   +4.60 1 1 1 1 1   888    0 12.16 88.78 ----- 21.5 21.5 192.5 29.6 21.3 -27.3 19.9 -28.1 19.2 -24.7 19.9 -26.0
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.309772
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:26:24.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:26:13', tmtdew=12.18, humidity=43.6, cloud=0.0, wind=27.0, temperature=14.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:26:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:26:24.186 [DEBUG] [Thread-187472] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:26:24.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:26:24.274 [DEBUG] [Thread-187475] [transport.py] [_log()] starting thread (client mode): 0xc9b81630
2025-11-24T09:26:24.274 [DEBUG] [Thread-187475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:26:24.289 [DEBUG] [Thread-187475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:26:24.289 [INFO] [Thread-187475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] client lang: <none>
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] server lang: <none>
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] kex follows: False
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:26:24.296 [DEBUG] [Thread-187475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:26:24.297 [DEBUG] [Thread-187475] [transport.py] [_log()] Compression: none
2025-11-24T09:26:24.297 [DEBUG] [Thread-187475] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:26:24.357 [DEBUG] [Thread-187475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:26:24.358 [DEBUG] [Thread-187475] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:26:24.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:26:24.358 [DEBUG] [Thread-187475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:26:24.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:26:24.414 [DEBUG] [Thread-187475] [transport.py] [_log()] userauth is OK
2025-11-24T09:26:24.414 [DEBUG] [Thread-187475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:26:24.414 [DEBUG] [Thread-187475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:26:24.414 [DEBUG] [Thread-187475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:26:24.414 [DEBUG] [Thread-187475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:26:24.428 [INFO] [Thread-187475] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:26:24.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:26:24.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:26:25.291 [DEBUG] [Thread-187475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:26:25.291 [DEBUG] [Thread-187475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:26:25.339 [DEBUG] [Thread-187475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:26:25.339 [DEBUG] [Thread-187475] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:26:25.347 [DEBUG] [Thread-187475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:26:25.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:26:25.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-11-24T09:26:25.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-11-24T09:26:25.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:26:25.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:26:25.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:26:25.379 [DEBUG] [Thread-187475] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:26:31.261 [DEBUG] [Thread-187477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:26:46.300 [DEBUG] [Thread-187478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:26:55.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:26:55.383 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:26:55.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-11-24T09:26:56.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 26, 45), 11.73, 45.3, 0.0, 18.86, 14.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:26:56.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:26:45
2025-11-24T09:26:56.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:26:56.475 [DEBUG] [Thread-187479] [transport.py] [_log()] starting thread (client mode): 0xd0712890
2025-11-24T09:26:56.476 [DEBUG] [Thread-187479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:26:56.495 [DEBUG] [Thread-187479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:26:56.495 [INFO] [Thread-187479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] client lang: <none>
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] server lang: <none>
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] kex follows: False
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] Compression: none
2025-11-24T09:26:56.497 [DEBUG] [Thread-187479] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:26:56.510 [DEBUG] [Thread-187479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:26:56.511 [DEBUG] [Thread-187479] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:26:56.511 [DEBUG] [Thread-187479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:26:56.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:26:56.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:26:56.513 [DEBUG] [Thread-187479] [transport.py] [_log()] userauth is OK
2025-11-24T09:26:56.513 [DEBUG] [Thread-187479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:26:56.513 [DEBUG] [Thread-187479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:26:56.514 [DEBUG] [Thread-187479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:26:56.514 [DEBUG] [Thread-187479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:26:56.532 [INFO] [Thread-187479] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:26:56.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:26:57.084 [DEBUG] [Thread-187479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:26:57.085 [DEBUG] [Thread-187479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:26:57.085 [DEBUG] [Thread-187479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:26:57.125 [DEBUG] [Thread-187479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:26:57.125 [DEBUG] [Thread-187479] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:26:57.127 [DEBUG] [Thread-187479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:26:57.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:26:57.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:26:57.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:26:57.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:26:57.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:26:57.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:26:57.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.310119 -999.00  +15.10  19.78     51   +5.00 1 1 1 1 1   888    0 12.05 89.08 ----- 19.8 19.8 192.0 24.1 21.3 -25.9 20.0 -25.3 19.3 -23.7 20.0 -25.2
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.310119
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:26:57.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:26:45', tmtdew=11.73, humidity=45.3, cloud=0.0, wind=18.86, temperature=14.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:26:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:26:57.148 [DEBUG] [Thread-187479] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:26:57.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:26:57.231 [DEBUG] [Thread-187482] [transport.py] [_log()] starting thread (client mode): 0xd3153520
2025-11-24T09:26:57.232 [DEBUG] [Thread-187482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:26:57.249 [DEBUG] [Thread-187482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:26:57.250 [INFO] [Thread-187482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:26:57.257 [DEBUG] [Thread-187482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:26:57.257 [DEBUG] [Thread-187482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:26:57.257 [DEBUG] [Thread-187482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:26:57.257 [DEBUG] [Thread-187482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:26:57.257 [DEBUG] [Thread-187482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:26:57.257 [DEBUG] [Thread-187482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:26:57.257 [DEBUG] [Thread-187482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] client lang: <none>
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] server lang: <none>
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] kex follows: False
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] Compression: none
2025-11-24T09:26:57.258 [DEBUG] [Thread-187482] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:26:57.316 [DEBUG] [Thread-187482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:26:57.316 [DEBUG] [Thread-187482] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:26:57.316 [DEBUG] [Thread-187482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:26:57.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:26:57.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:26:57.374 [DEBUG] [Thread-187482] [transport.py] [_log()] userauth is OK
2025-11-24T09:26:57.374 [DEBUG] [Thread-187482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:26:57.374 [DEBUG] [Thread-187482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:26:57.374 [DEBUG] [Thread-187482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:26:57.374 [DEBUG] [Thread-187482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:26:57.388 [INFO] [Thread-187482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:26:57.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:26:57.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:26:58.284 [DEBUG] [Thread-187482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:26:58.285 [DEBUG] [Thread-187482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:26:58.332 [DEBUG] [Thread-187482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:26:58.332 [DEBUG] [Thread-187482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:26:58.340 [DEBUG] [Thread-187482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:26:58.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:26:58.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:26:58.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:26:58.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:26:58.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:26:58.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:26:58.372 [DEBUG] [Thread-187482] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:27:01.328 [DEBUG] [Thread-187484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:27:03.149 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:27:03.150 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:27:16.365 [DEBUG] [Thread-187485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:27:20.440 [DEBUG] [Thread-187486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:27:28.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:27:28.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:27:28.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-11-24T09:27:29.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 27, 17), 11.54, 45.88, 0.0, 17.56, 14.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:27:29.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:27:17
2025-11-24T09:27:29.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:27:29.442 [DEBUG] [Thread-187487] [transport.py] [_log()] starting thread (client mode): 0xd3150460
2025-11-24T09:27:29.442 [DEBUG] [Thread-187487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:27:29.462 [DEBUG] [Thread-187487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:27:29.462 [INFO] [Thread-187487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] client lang: <none>
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] server lang: <none>
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] kex follows: False
2025-11-24T09:27:29.465 [DEBUG] [Thread-187487] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:27:29.466 [DEBUG] [Thread-187487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:27:29.466 [DEBUG] [Thread-187487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:27:29.466 [DEBUG] [Thread-187487] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:27:29.466 [DEBUG] [Thread-187487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:27:29.466 [DEBUG] [Thread-187487] [transport.py] [_log()] Compression: none
2025-11-24T09:27:29.466 [DEBUG] [Thread-187487] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:27:29.484 [DEBUG] [Thread-187487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:27:29.484 [DEBUG] [Thread-187487] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:27:29.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:27:29.486 [DEBUG] [Thread-187487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:27:29.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:27:29.487 [DEBUG] [Thread-187487] [transport.py] [_log()] userauth is OK
2025-11-24T09:27:29.488 [DEBUG] [Thread-187487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:27:29.488 [DEBUG] [Thread-187487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:27:29.488 [DEBUG] [Thread-187487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:27:29.488 [DEBUG] [Thread-187487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:27:29.502 [INFO] [Thread-187487] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:27:29.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:27:30.107 [DEBUG] [Thread-187487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:27:30.107 [DEBUG] [Thread-187487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:27:30.108 [DEBUG] [Thread-187487] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:27:30.149 [DEBUG] [Thread-187487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:27:30.149 [DEBUG] [Thread-187487] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:27:30.152 [DEBUG] [Thread-187487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:27:30.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:27:30.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:27:30.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:27:30.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:27:30.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:27:30.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:27:30.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:27:30.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:27:30.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:27:30.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.310467 -999.00  +15.10  16.85     51   +5.10 1 1 1 1 1   888    0 12.30 94.21 ----- 16.9 16.9 192.6 23.2 21.3 -25.7 20.1 -24.6 19.3 -23.5 19.9 -26.7
2025-11-24T09:27:30.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:27:30.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:27:30.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.310467
2025-11-24T09:27:30.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:27:30.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:27:30.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:27:30.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:27:30.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:27:30.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:27:17', tmtdew=11.54, humidity=45.88, cloud=0.0, wind=17.56, temperature=14.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:27:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:27:30.192 [DEBUG] [Thread-187487] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:27:30.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:27:30.289 [DEBUG] [Thread-187490] [transport.py] [_log()] starting thread (client mode): 0xd073b280
2025-11-24T09:27:30.289 [DEBUG] [Thread-187490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:27:30.305 [DEBUG] [Thread-187490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:27:30.305 [INFO] [Thread-187490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:27:30.312 [DEBUG] [Thread-187490] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] client lang: <none>
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] server lang: <none>
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] kex follows: False
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:27:30.313 [DEBUG] [Thread-187490] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:27:30.314 [DEBUG] [Thread-187490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:27:30.314 [DEBUG] [Thread-187490] [transport.py] [_log()] Compression: none
2025-11-24T09:27:30.314 [DEBUG] [Thread-187490] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:27:30.370 [DEBUG] [Thread-187490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:27:30.371 [DEBUG] [Thread-187490] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:27:30.371 [DEBUG] [Thread-187490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:27:30.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:27:30.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:27:30.431 [DEBUG] [Thread-187490] [transport.py] [_log()] userauth is OK
2025-11-24T09:27:30.431 [DEBUG] [Thread-187490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:27:30.431 [DEBUG] [Thread-187490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:27:30.431 [DEBUG] [Thread-187490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:27:30.431 [DEBUG] [Thread-187490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:27:30.451 [INFO] [Thread-187490] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:27:30.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:27:30.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:27:31.320 [DEBUG] [Thread-187490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:27:31.320 [DEBUG] [Thread-187490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:27:31.368 [DEBUG] [Thread-187490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:27:31.368 [DEBUG] [Thread-187490] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:27:31.376 [DEBUG] [Thread-187490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:27:31.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:27:31.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')
2025-11-24T09:27:31.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') -> 00000000
2025-11-24T09:27:31.401 [DEBUG] [Thread-187492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:27:31.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:27:31.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:27:31.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:27:31.410 [DEBUG] [Thread-187490] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:27:46.441 [DEBUG] [Thread-187493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:28:01.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:28:01.404 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:28:01.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-11-24T09:28:01.475 [DEBUG] [Thread-187494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:28:02.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 27, 50), 11.61, 46.13, 0.0, 22.27, 14.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:28:02.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:27:50
2025-11-24T09:28:02.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:28:02.476 [DEBUG] [Thread-187495] [transport.py] [_log()] starting thread (client mode): 0xd3152b60
2025-11-24T09:28:02.476 [DEBUG] [Thread-187495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:28:02.495 [DEBUG] [Thread-187495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:28:02.496 [INFO] [Thread-187495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] client lang: <none>
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] server lang: <none>
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] kex follows: False
2025-11-24T09:28:02.499 [DEBUG] [Thread-187495] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:28:02.500 [DEBUG] [Thread-187495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:28:02.500 [DEBUG] [Thread-187495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:28:02.500 [DEBUG] [Thread-187495] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:28:02.500 [DEBUG] [Thread-187495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:28:02.500 [DEBUG] [Thread-187495] [transport.py] [_log()] Compression: none
2025-11-24T09:28:02.500 [DEBUG] [Thread-187495] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:28:02.518 [DEBUG] [Thread-187495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:28:02.519 [DEBUG] [Thread-187495] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:28:02.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:28:02.520 [DEBUG] [Thread-187495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:28:02.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:28:02.521 [DEBUG] [Thread-187495] [transport.py] [_log()] userauth is OK
2025-11-24T09:28:02.522 [DEBUG] [Thread-187495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:28:02.522 [DEBUG] [Thread-187495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:28:02.522 [DEBUG] [Thread-187495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:28:02.522 [DEBUG] [Thread-187495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:28:02.546 [INFO] [Thread-187495] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:28:02.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:28:03.136 [DEBUG] [Thread-187495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:28:03.145 [DEBUG] [Thread-187495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:28:03.145 [DEBUG] [Thread-187495] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:28:03.177 [DEBUG] [Thread-187495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:28:03.177 [DEBUG] [Thread-187495] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:28:03.180 [DEBUG] [Thread-187495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:28:03.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:28:03.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:28:03.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:28:03.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:28:03.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:28:03.202 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:28:03.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.310814 -999.00  +15.00  21.61     51   +5.10 1 1 1 1 1   888    0 12.52 95.92 ----- 21.6 21.6 193.0 24.6 21.3 -25.5 20.1 -27.7 19.3 -23.7 20.0 -25.5
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.310814
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:28:03.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:27:50', tmtdew=11.61, humidity=46.13, cloud=0.0, wind=22.27, temperature=14.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:27:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:28:03.203 [DEBUG] [Thread-187495] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:28:03.275 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:28:03.287 [DEBUG] [Thread-187498] [transport.py] [_log()] starting thread (client mode): 0xd0712cb0
2025-11-24T09:28:03.287 [DEBUG] [Thread-187498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:28:03.292 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:28:03.293 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:28:03.301 [DEBUG] [Thread-187498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:28:03.302 [INFO] [Thread-187498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] client lang: <none>
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] server lang: <none>
2025-11-24T09:28:03.309 [DEBUG] [Thread-187498] [transport.py] [_log()] kex follows: False
2025-11-24T09:28:03.310 [DEBUG] [Thread-187498] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:28:03.310 [DEBUG] [Thread-187498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:28:03.310 [DEBUG] [Thread-187498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:28:03.310 [DEBUG] [Thread-187498] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:28:03.310 [DEBUG] [Thread-187498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:28:03.310 [DEBUG] [Thread-187498] [transport.py] [_log()] Compression: none
2025-11-24T09:28:03.310 [DEBUG] [Thread-187498] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:28:03.364 [DEBUG] [Thread-187498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:28:03.364 [DEBUG] [Thread-187498] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:28:03.365 [DEBUG] [Thread-187498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:28:03.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:28:03.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:28:03.426 [DEBUG] [Thread-187498] [transport.py] [_log()] userauth is OK
2025-11-24T09:28:03.426 [DEBUG] [Thread-187498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:28:03.426 [DEBUG] [Thread-187498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:28:03.426 [DEBUG] [Thread-187498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:28:03.426 [DEBUG] [Thread-187498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:28:03.440 [INFO] [Thread-187498] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:28:03.440 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:28:03.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:28:04.339 [DEBUG] [Thread-187498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:28:04.339 [DEBUG] [Thread-187498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:28:04.391 [DEBUG] [Thread-187498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:28:04.392 [DEBUG] [Thread-187498] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:28:04.404 [DEBUG] [Thread-187498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:28:04.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:28:04.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-11-24T09:28:04.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-11-24T09:28:04.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:28:04.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:28:04.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:28:04.452 [DEBUG] [Thread-187498] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:28:16.507 [DEBUG] [Thread-187500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:28:20.471 [DEBUG] [Thread-187501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:28:31.545 [DEBUG] [Thread-187502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:28:34.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:28:34.452 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:28:34.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-11-24T09:28:35.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 28, 22), 12.06, 44.82, 0.0, 22.37, 14.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:28:35.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:28:22
2025-11-24T09:28:35.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:28:35.510 [DEBUG] [Thread-187503] [transport.py] [_log()] starting thread (client mode): 0xc9b828c0
2025-11-24T09:28:35.510 [DEBUG] [Thread-187503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:28:35.523 [DEBUG] [Thread-187503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:28:35.524 [INFO] [Thread-187503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:28:35.525 [DEBUG] [Thread-187503] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] client lang: <none>
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] server lang: <none>
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] kex follows: False
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] Compression: none
2025-11-24T09:28:35.526 [DEBUG] [Thread-187503] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:28:35.539 [DEBUG] [Thread-187503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:28:35.539 [DEBUG] [Thread-187503] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:28:35.540 [DEBUG] [Thread-187503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:28:35.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:28:35.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:28:35.542 [DEBUG] [Thread-187503] [transport.py] [_log()] userauth is OK
2025-11-24T09:28:35.542 [DEBUG] [Thread-187503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:28:35.542 [DEBUG] [Thread-187503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:28:35.542 [DEBUG] [Thread-187503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:28:35.542 [DEBUG] [Thread-187503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:28:35.567 [INFO] [Thread-187503] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:28:35.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:28:36.180 [DEBUG] [Thread-187503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:28:36.181 [DEBUG] [Thread-187503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:28:36.181 [DEBUG] [Thread-187503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:28:36.221 [DEBUG] [Thread-187503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:28:36.221 [DEBUG] [Thread-187503] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:28:36.225 [DEBUG] [Thread-187503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:28:36.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:28:36.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:28:36.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:28:36.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:28:36.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:28:36.248 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:28:36.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:28:36.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:28:36.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:28:36.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.311161 -999.00  +15.10  26.64     47   +4.10 1 1 1 1 1   888    0 12.37 95.27 ----- 26.6 26.6 161.2 30.6 21.4 -25.5 20.2 -24.5 19.4 -24.0 20.1 -25.9
2025-11-24T09:28:36.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:28:36.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:28:36.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.311161
2025-11-24T09:28:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:28:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:28:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:28:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:28:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:28:36.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:28:22', tmtdew=12.06, humidity=44.82, cloud=0.0, wind=22.37, temperature=14.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:28:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:28:36.251 [DEBUG] [Thread-187503] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:28:36.344 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:28:36.356 [DEBUG] [Thread-187506] [transport.py] [_log()] starting thread (client mode): 0xd31529e0
2025-11-24T09:28:36.356 [DEBUG] [Thread-187506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:28:36.375 [DEBUG] [Thread-187506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:28:36.375 [INFO] [Thread-187506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:28:36.382 [DEBUG] [Thread-187506] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] client lang: <none>
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] server lang: <none>
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] kex follows: False
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:28:36.383 [DEBUG] [Thread-187506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:28:36.384 [DEBUG] [Thread-187506] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:28:36.384 [DEBUG] [Thread-187506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:28:36.384 [DEBUG] [Thread-187506] [transport.py] [_log()] Compression: none
2025-11-24T09:28:36.384 [DEBUG] [Thread-187506] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:28:36.443 [DEBUG] [Thread-187506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:28:36.444 [DEBUG] [Thread-187506] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:28:36.445 [DEBUG] [Thread-187506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:28:36.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:28:36.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:28:36.503 [DEBUG] [Thread-187506] [transport.py] [_log()] userauth is OK
2025-11-24T09:28:36.503 [DEBUG] [Thread-187506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:28:36.503 [DEBUG] [Thread-187506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:28:36.503 [DEBUG] [Thread-187506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:28:36.504 [DEBUG] [Thread-187506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:28:36.526 [INFO] [Thread-187506] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:28:36.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:28:36.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:28:37.365 [DEBUG] [Thread-187506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:28:37.365 [DEBUG] [Thread-187506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:28:37.413 [DEBUG] [Thread-187506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:28:37.413 [DEBUG] [Thread-187506] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:28:37.423 [DEBUG] [Thread-187506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:28:37.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:28:37.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-11-24T09:28:37.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-11-24T09:28:37.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:28:37.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:28:37.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:28:37.454 [DEBUG] [Thread-187506] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:28:46.584 [DEBUG] [Thread-187508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:29:01.633 [DEBUG] [Thread-187509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:29:03.435 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:29:03.437 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:29:07.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:29:07.455 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:29:07.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-11-24T09:29:08.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 28, 54), 13.06, 41.19, 0.0, 25.23, 15.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:29:08.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:28:54
2025-11-24T09:29:08.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:29:08.443 [DEBUG] [Thread-187510] [transport.py] [_log()] starting thread (client mode): 0xd3151660
2025-11-24T09:29:08.443 [DEBUG] [Thread-187510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:29:08.463 [DEBUG] [Thread-187510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:29:08.463 [INFO] [Thread-187510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:29:08.465 [DEBUG] [Thread-187510] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] client lang: <none>
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] server lang: <none>
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] kex follows: False
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] Compression: none
2025-11-24T09:29:08.466 [DEBUG] [Thread-187510] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:29:08.482 [DEBUG] [Thread-187510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:29:08.483 [DEBUG] [Thread-187510] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:29:08.483 [DEBUG] [Thread-187510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:29:08.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:29:08.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:29:08.495 [DEBUG] [Thread-187510] [transport.py] [_log()] userauth is OK
2025-11-24T09:29:08.495 [DEBUG] [Thread-187510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:29:08.495 [DEBUG] [Thread-187510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:29:08.495 [DEBUG] [Thread-187510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:29:08.495 [DEBUG] [Thread-187510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:29:08.516 [INFO] [Thread-187510] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:29:08.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:29:09.110 [DEBUG] [Thread-187510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:29:09.110 [DEBUG] [Thread-187510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:29:09.110 [DEBUG] [Thread-187510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:29:09.151 [DEBUG] [Thread-187510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:29:09.151 [DEBUG] [Thread-187510] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:29:09.157 [DEBUG] [Thread-187510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:29:09.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:29:09.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:29:09.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:29:09.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:29:09.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:29:09.181 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:29:09.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:29:09.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:29:09.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:29:09.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.311508 -999.00  +15.10  17.80     47   +4.00 1 1 1 1 1   888    0 12.55 101.44 ----- 17.8 17.8 168.4 26.7 21.4 -25.6 20.4 -26.0 19.4 -24.5 20.1 -26.0
2025-11-24T09:29:09.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:29:09.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:29:09.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.311508
2025-11-24T09:29:09.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:29:09.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:29:09.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:29:09.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:29:09.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:29:09.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:28:54', tmtdew=13.06, humidity=41.19, cloud=0.0, wind=25.23, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:28:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:29:09.184 [DEBUG] [Thread-187510] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:29:09.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:29:09.284 [DEBUG] [Thread-187513] [transport.py] [_log()] starting thread (client mode): 0xd07393f0
2025-11-24T09:29:09.284 [DEBUG] [Thread-187513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:29:09.299 [DEBUG] [Thread-187513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:29:09.299 [INFO] [Thread-187513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] client lang: <none>
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] server lang: <none>
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] kex follows: False
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:29:09.307 [DEBUG] [Thread-187513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:29:09.308 [DEBUG] [Thread-187513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:29:09.308 [DEBUG] [Thread-187513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:29:09.308 [DEBUG] [Thread-187513] [transport.py] [_log()] Compression: none
2025-11-24T09:29:09.308 [DEBUG] [Thread-187513] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:29:09.375 [DEBUG] [Thread-187513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:29:09.375 [DEBUG] [Thread-187513] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:29:09.376 [DEBUG] [Thread-187513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:29:09.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:29:09.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:29:09.430 [DEBUG] [Thread-187513] [transport.py] [_log()] userauth is OK
2025-11-24T09:29:09.430 [DEBUG] [Thread-187513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:29:09.430 [DEBUG] [Thread-187513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:29:09.430 [DEBUG] [Thread-187513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:29:09.430 [DEBUG] [Thread-187513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:29:09.449 [INFO] [Thread-187513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:29:09.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:29:09.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:29:10.263 [DEBUG] [Thread-187513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:29:10.264 [DEBUG] [Thread-187513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:29:10.311 [DEBUG] [Thread-187513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:29:10.311 [DEBUG] [Thread-187513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:29:10.320 [DEBUG] [Thread-187513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:29:10.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:29:10.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-11-24T09:29:10.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:29:10.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:29:10.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:29:10.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:29:10.354 [DEBUG] [Thread-187513] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:29:16.663 [DEBUG] [Thread-187515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:29:20.502 [DEBUG] [Thread-187516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:29:31.724 [DEBUG] [Thread-187517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:29:40.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:29:40.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:29:40.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-11-24T09:29:41.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 29, 26), 13.05, 41.29, 0.0, 27.14, 15.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:29:41.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:29:26
2025-11-24T09:29:41.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:29:41.347 [DEBUG] [Thread-187518] [transport.py] [_log()] starting thread (client mode): 0xd317d9f0
2025-11-24T09:29:41.347 [DEBUG] [Thread-187518] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:29:41.368 [DEBUG] [Thread-187518] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:29:41.368 [INFO] [Thread-187518] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] client lang: <none>
2025-11-24T09:29:41.378 [DEBUG] [Thread-187518] [transport.py] [_log()] server lang: <none>
2025-11-24T09:29:41.379 [DEBUG] [Thread-187518] [transport.py] [_log()] kex follows: False
2025-11-24T09:29:41.379 [DEBUG] [Thread-187518] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:29:41.379 [DEBUG] [Thread-187518] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:29:41.379 [DEBUG] [Thread-187518] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:29:41.379 [DEBUG] [Thread-187518] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:29:41.379 [DEBUG] [Thread-187518] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:29:41.379 [DEBUG] [Thread-187518] [transport.py] [_log()] Compression: none
2025-11-24T09:29:41.379 [DEBUG] [Thread-187518] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:29:41.397 [DEBUG] [Thread-187518] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:29:41.398 [DEBUG] [Thread-187518] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:29:41.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:29:41.399 [DEBUG] [Thread-187518] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:29:41.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:29:41.401 [DEBUG] [Thread-187518] [transport.py] [_log()] userauth is OK
2025-11-24T09:29:41.401 [DEBUG] [Thread-187518] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:29:41.401 [DEBUG] [Thread-187518] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:29:41.401 [DEBUG] [Thread-187518] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:29:41.401 [DEBUG] [Thread-187518] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:29:41.423 [INFO] [Thread-187518] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:29:41.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:29:42.020 [DEBUG] [Thread-187518] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:29:42.020 [DEBUG] [Thread-187518] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:29:42.020 [DEBUG] [Thread-187518] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:29:42.062 [DEBUG] [Thread-187518] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:29:42.062 [DEBUG] [Thread-187518] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:29:42.066 [DEBUG] [Thread-187518] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:29:42.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:29:42.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:29:42.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:29:42.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:29:42.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:29:42.100 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:29:42.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:29:42.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:29:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:29:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.311856 -999.00  +15.10  22.83     48   +4.20 1 1 1 1 1   888    0 13.05 109.75 ----- 22.8 22.8 177.2 27.7 21.4 -26.3 20.4 -24.4 19.4 -25.2 20.1 -26.1
2025-11-24T09:29:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:29:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:29:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.311856
2025-11-24T09:29:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:29:42.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:29:42.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:29:42.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:29:42.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:29:42.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:29:26', tmtdew=13.05, humidity=41.29, cloud=0.0, wind=27.14, temperature=15.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:29:04.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:29:42.103 [DEBUG] [Thread-187518] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:29:42.187 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:29:42.200 [DEBUG] [Thread-187521] [transport.py] [_log()] starting thread (client mode): 0xd317dd80
2025-11-24T09:29:42.200 [DEBUG] [Thread-187521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:29:42.215 [DEBUG] [Thread-187521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:29:42.216 [INFO] [Thread-187521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:29:42.223 [DEBUG] [Thread-187521] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:29:42.223 [DEBUG] [Thread-187521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] client lang: <none>
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] server lang: <none>
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] kex follows: False
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:29:42.224 [DEBUG] [Thread-187521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:29:42.225 [DEBUG] [Thread-187521] [transport.py] [_log()] Compression: none
2025-11-24T09:29:42.225 [DEBUG] [Thread-187521] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:29:42.283 [DEBUG] [Thread-187521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:29:42.284 [DEBUG] [Thread-187521] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:29:42.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:29:42.285 [DEBUG] [Thread-187521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:29:42.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:29:42.344 [DEBUG] [Thread-187521] [transport.py] [_log()] userauth is OK
2025-11-24T09:29:42.344 [DEBUG] [Thread-187521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:29:42.344 [DEBUG] [Thread-187521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:29:42.344 [DEBUG] [Thread-187521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:29:42.344 [DEBUG] [Thread-187521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:29:42.363 [INFO] [Thread-187521] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:29:42.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:29:42.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:29:43.316 [DEBUG] [Thread-187521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:29:43.317 [DEBUG] [Thread-187521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:29:43.368 [DEBUG] [Thread-187521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:29:43.368 [DEBUG] [Thread-187521] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:29:43.378 [DEBUG] [Thread-187521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:29:43.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:29:43.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-11-24T09:29:43.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-11-24T09:29:43.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:29:43.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:29:43.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:29:43.415 [DEBUG] [Thread-187521] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:29:46.755 [DEBUG] [Thread-187523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:30:01.810 [DEBUG] [Thread-187524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:30:03.578 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:30:03.579 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:30:13.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:30:13.437 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:30:13.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-11-24T09:30:14.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 29, 59), 13.48, 40.33, 0.0, 22.92, 15.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:30:14.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:29:59
2025-11-24T09:30:14.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:30:14.478 [DEBUG] [Thread-187525] [transport.py] [_log()] starting thread (client mode): 0xd317f250
2025-11-24T09:30:14.479 [DEBUG] [Thread-187525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:30:14.491 [DEBUG] [Thread-187525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:30:14.491 [INFO] [Thread-187525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] client lang: <none>
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] server lang: <none>
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] kex follows: False
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:30:14.495 [DEBUG] [Thread-187525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:30:14.496 [DEBUG] [Thread-187525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:30:14.496 [DEBUG] [Thread-187525] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:30:14.496 [DEBUG] [Thread-187525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:30:14.496 [DEBUG] [Thread-187525] [transport.py] [_log()] Compression: none
2025-11-24T09:30:14.496 [DEBUG] [Thread-187525] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:30:14.511 [DEBUG] [Thread-187525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:30:14.511 [DEBUG] [Thread-187525] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:30:14.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:30:14.512 [DEBUG] [Thread-187525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:30:14.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:30:14.552 [DEBUG] [Thread-187525] [transport.py] [_log()] userauth is OK
2025-11-24T09:30:14.552 [DEBUG] [Thread-187525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:30:14.553 [DEBUG] [Thread-187525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:30:14.553 [DEBUG] [Thread-187525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:30:14.553 [DEBUG] [Thread-187525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:30:14.566 [INFO] [Thread-187525] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:30:14.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:30:15.144 [DEBUG] [Thread-187525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:30:15.144 [DEBUG] [Thread-187525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:30:15.144 [DEBUG] [Thread-187525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:30:15.185 [DEBUG] [Thread-187525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:30:15.185 [DEBUG] [Thread-187525] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:30:15.188 [DEBUG] [Thread-187525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:30:15.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:30:15.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:30:15.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:30:15.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:30:15.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:30:15.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:30:15.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:30:15.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:30:15.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:30:15.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.312550 -999.00  +15.40  24.54     46   +3.90 1 1 1 1 1   888    0 14.04 133.67 ----- 24.5 24.5 162.6 28.3 21.6 -26.6 20.6 -23.5 19.5 -23.1 20.4 -25.2
2025-11-24T09:30:15.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:30:15.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:30:15.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.312550
2025-11-24T09:30:15.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:30:15.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:30:15.217 [DEBUG] [Thread-187525] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:30:15.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:30:15.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:30:15.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:30:15.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:29:59', tmtdew=13.48, humidity=40.33, cloud=0.0, wind=22.92, temperature=15.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:30:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:30:15.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:30:15.306 [DEBUG] [Thread-187528] [transport.py] [_log()] starting thread (client mode): 0xd317ead0
2025-11-24T09:30:15.307 [DEBUG] [Thread-187528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:30:15.321 [DEBUG] [Thread-187528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:30:15.321 [INFO] [Thread-187528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:30:15.328 [DEBUG] [Thread-187528] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] client lang: <none>
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] server lang: <none>
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] kex follows: False
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] Compression: none
2025-11-24T09:30:15.329 [DEBUG] [Thread-187528] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:30:15.384 [DEBUG] [Thread-187528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:30:15.385 [DEBUG] [Thread-187528] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:30:15.385 [DEBUG] [Thread-187528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:30:15.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:30:15.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:30:15.442 [DEBUG] [Thread-187528] [transport.py] [_log()] userauth is OK
2025-11-24T09:30:15.442 [DEBUG] [Thread-187528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:30:15.442 [DEBUG] [Thread-187528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:30:15.442 [DEBUG] [Thread-187528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:30:15.442 [DEBUG] [Thread-187528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:30:15.456 [INFO] [Thread-187528] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:30:15.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:30:15.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:30:16.298 [DEBUG] [Thread-187528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:30:16.298 [DEBUG] [Thread-187528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:30:16.346 [DEBUG] [Thread-187528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:30:16.346 [DEBUG] [Thread-187528] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:30:16.354 [DEBUG] [Thread-187528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:30:16.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09: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')
2025-11-24T09:30: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-11-24T09:30:16.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:30:16.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:30:16.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:30:16.386 [DEBUG] [Thread-187528] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:30:16.832 [DEBUG] [Thread-187530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:30:20.904 [DEBUG] [Thread-187531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:30:31.870 [DEBUG] [Thread-187532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:30:46.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:30:46.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:30: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-11-24T09:30:46.900 [DEBUG] [Thread-187533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:30:47.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 30, 31), 13.69, 39.72, 0.0, 16.55, 15.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:30:47.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:30:31
2025-11-24T09:30:48.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:30:48.265 [DEBUG] [Thread-187534] [transport.py] [_log()] starting thread (client mode): 0xd317d030
2025-11-24T09:30:48.265 [DEBUG] [Thread-187534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:30:48.284 [DEBUG] [Thread-187534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:30:48.284 [INFO] [Thread-187534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] client lang: <none>
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] server lang: <none>
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] kex follows: False
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] Compression: none
2025-11-24T09:30:48.286 [DEBUG] [Thread-187534] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:30:48.304 [DEBUG] [Thread-187534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:30:48.304 [DEBUG] [Thread-187534] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:30:48.305 [DEBUG] [Thread-187534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:30:48.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:30:48.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:30:48.306 [DEBUG] [Thread-187534] [transport.py] [_log()] userauth is OK
2025-11-24T09:30:48.306 [DEBUG] [Thread-187534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:30:48.306 [DEBUG] [Thread-187534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:30:48.306 [DEBUG] [Thread-187534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:30:48.306 [DEBUG] [Thread-187534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:30:48.324 [INFO] [Thread-187534] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:30:48.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:30:48.916 [DEBUG] [Thread-187534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:30:48.916 [DEBUG] [Thread-187534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:30:48.917 [DEBUG] [Thread-187534] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:30:48.958 [DEBUG] [Thread-187534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:30:48.958 [DEBUG] [Thread-187534] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:30:48.961 [DEBUG] [Thread-187534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:30:48.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:30:48.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:30:48.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:30:48.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:30:48.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:30:48.995 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:30:48.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:30:48.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:30:48.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:30:48.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.312897 -999.00  +15.30  21.46     47   +4.10 1 1 1 1 1   888    0 14.05 131.63 ----- 21.5 21.5 155.4 28.3 21.7 -26.5 20.7 -25.1 19.6 -23.7 20.4 -26.0
2025-11-24T09:30:48.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:30:48.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:30:48.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.312897
2025-11-24T09:30:48.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:30:48.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:30:48.998 [DEBUG] [Thread-187534] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:30:48.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:30:48.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:30:48.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:30:48.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:30:31', tmtdew=13.69, humidity=39.72, cloud=0.0, wind=16.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-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:30:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:30:49.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:30:49.100 [DEBUG] [Thread-187537] [transport.py] [_log()] starting thread (client mode): 0xd317ece0
2025-11-24T09:30:49.100 [DEBUG] [Thread-187537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:30:49.117 [DEBUG] [Thread-187537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:30:49.117 [INFO] [Thread-187537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:30:49.124 [DEBUG] [Thread-187537] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:30:49.124 [DEBUG] [Thread-187537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:30:49.124 [DEBUG] [Thread-187537] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:30:49.124 [DEBUG] [Thread-187537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:30:49.124 [DEBUG] [Thread-187537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:30:49.124 [DEBUG] [Thread-187537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:30:49.124 [DEBUG] [Thread-187537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:30:49.124 [DEBUG] [Thread-187537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:30:49.124 [DEBUG] [Thread-187537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:30:49.124 [DEBUG] [Thread-187537] [transport.py] [_log()] client lang: <none>
2025-11-24T09:30:49.125 [DEBUG] [Thread-187537] [transport.py] [_log()] server lang: <none>
2025-11-24T09:30:49.125 [DEBUG] [Thread-187537] [transport.py] [_log()] kex follows: False
2025-11-24T09:30:49.125 [DEBUG] [Thread-187537] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:30:49.125 [DEBUG] [Thread-187537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:30:49.125 [DEBUG] [Thread-187537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:30:49.125 [DEBUG] [Thread-187537] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:30:49.125 [DEBUG] [Thread-187537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:30:49.125 [DEBUG] [Thread-187537] [transport.py] [_log()] Compression: none
2025-11-24T09:30:49.125 [DEBUG] [Thread-187537] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:30:49.186 [DEBUG] [Thread-187537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:30:49.187 [DEBUG] [Thread-187537] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:30:49.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:30:49.188 [DEBUG] [Thread-187537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:30:49.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:30:49.242 [DEBUG] [Thread-187537] [transport.py] [_log()] userauth is OK
2025-11-24T09:30:49.242 [DEBUG] [Thread-187537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:30:49.242 [DEBUG] [Thread-187537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:30:49.242 [DEBUG] [Thread-187537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:30:49.243 [DEBUG] [Thread-187537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:30:49.261 [INFO] [Thread-187537] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:30:49.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:30:49.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:30:50.166 [DEBUG] [Thread-187537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:30:50.166 [DEBUG] [Thread-187537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:30:50.214 [DEBUG] [Thread-187537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:30:50.214 [DEBUG] [Thread-187537] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:30:50.222 [DEBUG] [Thread-187537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:30:50.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:30:50.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-11-24T09:30:50.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-11-24T09:30:50.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:30:50.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:30:50.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:30:50.254 [DEBUG] [Thread-187537] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:31:01.936 [DEBUG] [Thread-187539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:31:03.729 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:31:03.730 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:31:16.973 [DEBUG] [Thread-187540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:31:20.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:31:20.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:31:20.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-11-24T09:31:21.000 [DEBUG] [Thread-187541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:31:21.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 31, 4), 13.34, 40.69, 0.0, 20.77, 15.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:31:21.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:31:04
2025-11-24T09:31:21.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:31:21.383 [DEBUG] [Thread-187542] [transport.py] [_log()] starting thread (client mode): 0xd317e3e0
2025-11-24T09:31:21.383 [DEBUG] [Thread-187542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:31:21.403 [DEBUG] [Thread-187542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:31:21.403 [INFO] [Thread-187542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:31:21.406 [DEBUG] [Thread-187542] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:31:21.406 [DEBUG] [Thread-187542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:31:21.406 [DEBUG] [Thread-187542] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:31:21.406 [DEBUG] [Thread-187542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:31:21.406 [DEBUG] [Thread-187542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:31:21.406 [DEBUG] [Thread-187542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:31:21.406 [DEBUG] [Thread-187542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:31:21.406 [DEBUG] [Thread-187542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] client lang: <none>
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] server lang: <none>
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] kex follows: False
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] Compression: none
2025-11-24T09:31:21.407 [DEBUG] [Thread-187542] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:31:21.423 [DEBUG] [Thread-187542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:31:21.424 [DEBUG] [Thread-187542] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:31:21.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:31:21.426 [DEBUG] [Thread-187542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:31:21.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:31:21.469 [DEBUG] [Thread-187542] [transport.py] [_log()] userauth is OK
2025-11-24T09:31:21.469 [DEBUG] [Thread-187542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:31:21.469 [DEBUG] [Thread-187542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:31:21.469 [DEBUG] [Thread-187542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:31:21.470 [DEBUG] [Thread-187542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:31:21.501 [INFO] [Thread-187542] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:31:21.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:31:22.128 [DEBUG] [Thread-187542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:31:22.128 [DEBUG] [Thread-187542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:31:22.129 [DEBUG] [Thread-187542] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:31:22.170 [DEBUG] [Thread-187542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:31:22.170 [DEBUG] [Thread-187542] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:31:22.173 [DEBUG] [Thread-187542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:31:22.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:31:22.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:31:22.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:31:22.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:31:22.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:31:22.203 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:31:22.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:31:22.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:31:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:31:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.312897 -999.00  +15.30  21.46     47   +4.10 1 1 1 1 1   888    0 14.05 131.63 ----- 21.5 21.5 155.4 28.3 21.7 -26.5 20.7 -25.1 19.6 -23.7 20.4 -26.0
2025-11-24T09:31:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:31:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:31:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.312897
2025-11-24T09:31:22.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:31:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:31:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:31:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:31:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:31:22.206 [DEBUG] [Thread-187542] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:31:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:31:04', tmtdew=13.34, humidity=40.69, cloud=0.0, wind=20.77, temperature=15.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:30:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:31:22.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:31:22.302 [DEBUG] [Thread-187545] [transport.py] [_log()] starting thread (client mode): 0xd317f1f0
2025-11-24T09:31:22.302 [DEBUG] [Thread-187545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:31:22.317 [DEBUG] [Thread-187545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:31:22.317 [INFO] [Thread-187545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] client lang: <none>
2025-11-24T09:31:22.324 [DEBUG] [Thread-187545] [transport.py] [_log()] server lang: <none>
2025-11-24T09:31:22.325 [DEBUG] [Thread-187545] [transport.py] [_log()] kex follows: False
2025-11-24T09:31:22.325 [DEBUG] [Thread-187545] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:31:22.325 [DEBUG] [Thread-187545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:31:22.325 [DEBUG] [Thread-187545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:31:22.325 [DEBUG] [Thread-187545] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:31:22.325 [DEBUG] [Thread-187545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:31:22.325 [DEBUG] [Thread-187545] [transport.py] [_log()] Compression: none
2025-11-24T09:31:22.325 [DEBUG] [Thread-187545] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:31:22.381 [DEBUG] [Thread-187545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:31:22.381 [DEBUG] [Thread-187545] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:31:22.381 [DEBUG] [Thread-187545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:31:22.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:31:22.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:31:22.438 [DEBUG] [Thread-187545] [transport.py] [_log()] userauth is OK
2025-11-24T09:31:22.438 [DEBUG] [Thread-187545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:31:22.438 [DEBUG] [Thread-187545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:31:22.438 [DEBUG] [Thread-187545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:31:22.438 [DEBUG] [Thread-187545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:31:22.452 [INFO] [Thread-187545] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:31:22.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:31:22.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:31:23.274 [DEBUG] [Thread-187545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:31:23.274 [DEBUG] [Thread-187545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:31:23.322 [DEBUG] [Thread-187545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:31:23.322 [DEBUG] [Thread-187545] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:31:23.331 [DEBUG] [Thread-187545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:31:23.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:31:23.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-11-24T09:31:23.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-11-24T09:31:23.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:31:23.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:31:23.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:31:23.374 [DEBUG] [Thread-187545] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:31:32.010 [DEBUG] [Thread-187547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:31:47.049 [DEBUG] [Thread-187548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:31:53.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:31:53.397 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:31:53.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-11-24T09:31:54.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 31, 36), 13.89, 38.95, 0.0, 26.11, 15.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:31:54.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:31:36
2025-11-24T09:31:54.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:31:54.418 [DEBUG] [Thread-187549] [transport.py] [_log()] starting thread (client mode): 0xd317c220
2025-11-24T09:31:54.418 [DEBUG] [Thread-187549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:31:54.439 [DEBUG] [Thread-187549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:31:54.439 [INFO] [Thread-187549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:31:54.442 [DEBUG] [Thread-187549] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:31:54.442 [DEBUG] [Thread-187549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] client lang: <none>
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] server lang: <none>
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] kex follows: False
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:31:54.443 [DEBUG] [Thread-187549] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:31:54.444 [DEBUG] [Thread-187549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:31:54.444 [DEBUG] [Thread-187549] [transport.py] [_log()] Compression: none
2025-11-24T09:31:54.444 [DEBUG] [Thread-187549] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:31:54.462 [DEBUG] [Thread-187549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:31:54.463 [DEBUG] [Thread-187549] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:31:54.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:31:54.464 [DEBUG] [Thread-187549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:31:54.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:31:54.467 [DEBUG] [Thread-187549] [transport.py] [_log()] userauth is OK
2025-11-24T09:31:54.467 [DEBUG] [Thread-187549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:31:54.467 [DEBUG] [Thread-187549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:31:54.467 [DEBUG] [Thread-187549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:31:54.467 [DEBUG] [Thread-187549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:31:54.506 [INFO] [Thread-187549] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:31:54.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:31:55.140 [DEBUG] [Thread-187549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:31:55.140 [DEBUG] [Thread-187549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:31:55.141 [DEBUG] [Thread-187549] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:31:55.182 [DEBUG] [Thread-187549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:31:55.182 [DEBUG] [Thread-187549] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:31:55.185 [DEBUG] [Thread-187549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:31:55.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:31:55.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:31:55.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:31:55.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:31:55.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:31:55.211 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:31:55.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:31:55.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:31:55.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:31:55.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.313244 -999.00  +15.50  15.76     45   +3.70 1 1 1 1 1   888    0 14.03 147.28 ----- 15.8 15.8 169.6 27.4 21.8 -26.7 20.8 -24.9 19.7 -23.7 20.5 -25.4
2025-11-24T09:31:55.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:31:55.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:31:55.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.313244
2025-11-24T09:31:55.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:31:55.213 [DEBUG] [Thread-187549] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:31:55.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:31:55.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:31:55.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:31:55.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:31:55.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:31:36', tmtdew=13.89, humidity=38.95, cloud=0.0, wind=26.11, temperature=15.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:31:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:31:55.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:31:55.307 [DEBUG] [Thread-187552] [transport.py] [_log()] starting thread (client mode): 0xd31cd510
2025-11-24T09:31:55.307 [DEBUG] [Thread-187552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:31:55.322 [DEBUG] [Thread-187552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:31:55.322 [INFO] [Thread-187552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:31:55.329 [DEBUG] [Thread-187552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:31:55.329 [DEBUG] [Thread-187552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:31:55.329 [DEBUG] [Thread-187552] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] client lang: <none>
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] server lang: <none>
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] kex follows: False
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] Compression: none
2025-11-24T09:31:55.330 [DEBUG] [Thread-187552] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:31:55.386 [DEBUG] [Thread-187552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:31:55.386 [DEBUG] [Thread-187552] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:31:55.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:31:55.387 [DEBUG] [Thread-187552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:31:55.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:31:55.447 [DEBUG] [Thread-187552] [transport.py] [_log()] userauth is OK
2025-11-24T09:31:55.447 [DEBUG] [Thread-187552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:31:55.447 [DEBUG] [Thread-187552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:31:55.447 [DEBUG] [Thread-187552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:31:55.447 [DEBUG] [Thread-187552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:31:55.466 [INFO] [Thread-187552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:31:55.467 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:31:55.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:31:56.308 [DEBUG] [Thread-187552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:31:56.308 [DEBUG] [Thread-187552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:31:56.355 [DEBUG] [Thread-187552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:31:56.355 [DEBUG] [Thread-187552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:31:56.364 [DEBUG] [Thread-187552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:31:56.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:31:56.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-11-24T09:31:56.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-11-24T09:31:56.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:31:56.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:31:56.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:31:56.398 [DEBUG] [Thread-187552] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:32:02.082 [DEBUG] [Thread-187554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:32:03.871 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:32:03.872 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:32:17.123 [DEBUG] [Thread-187555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:32:21.251 [DEBUG] [Thread-187556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:32:26.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:32:26.414 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:32:26.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-11-24T09:32:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 32, 8), 14.0, 38.67, 0.0, 24.63, 15.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:32:27.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:32:08
2025-11-24T09:32:27.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:32:27.482 [DEBUG] [Thread-187557] [transport.py] [_log()] starting thread (client mode): 0xd3151390
2025-11-24T09:32:27.483 [DEBUG] [Thread-187557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:32:27.502 [DEBUG] [Thread-187557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:32:27.502 [INFO] [Thread-187557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:32:27.505 [DEBUG] [Thread-187557] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:32:27.505 [DEBUG] [Thread-187557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:32:27.505 [DEBUG] [Thread-187557] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:32:27.505 [DEBUG] [Thread-187557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:32:27.505 [DEBUG] [Thread-187557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:32:27.505 [DEBUG] [Thread-187557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:32:27.505 [DEBUG] [Thread-187557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:32:27.505 [DEBUG] [Thread-187557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:32:27.505 [DEBUG] [Thread-187557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:32:27.506 [DEBUG] [Thread-187557] [transport.py] [_log()] client lang: <none>
2025-11-24T09:32:27.506 [DEBUG] [Thread-187557] [transport.py] [_log()] server lang: <none>
2025-11-24T09:32:27.506 [DEBUG] [Thread-187557] [transport.py] [_log()] kex follows: False
2025-11-24T09:32:27.506 [DEBUG] [Thread-187557] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:32:27.506 [DEBUG] [Thread-187557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:32:27.506 [DEBUG] [Thread-187557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:32:27.506 [DEBUG] [Thread-187557] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:32:27.506 [DEBUG] [Thread-187557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:32:27.506 [DEBUG] [Thread-187557] [transport.py] [_log()] Compression: none
2025-11-24T09:32:27.506 [DEBUG] [Thread-187557] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:32:27.524 [DEBUG] [Thread-187557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:32:27.524 [DEBUG] [Thread-187557] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:32:27.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:32:27.525 [DEBUG] [Thread-187557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:32:27.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:32:27.527 [DEBUG] [Thread-187557] [transport.py] [_log()] userauth is OK
2025-11-24T09:32:27.527 [DEBUG] [Thread-187557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:32:27.527 [DEBUG] [Thread-187557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:32:27.527 [DEBUG] [Thread-187557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:32:27.528 [DEBUG] [Thread-187557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:32:27.562 [INFO] [Thread-187557] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:32:27.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:32:28.179 [DEBUG] [Thread-187557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:32:28.179 [DEBUG] [Thread-187557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:32:28.179 [DEBUG] [Thread-187557] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:32:28.220 [DEBUG] [Thread-187557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:32:28.220 [DEBUG] [Thread-187557] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:32:28.222 [DEBUG] [Thread-187557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:32:28.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:32:28.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:32:28.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:32:28.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:32:28.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:32:28.250 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:32:28.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:32:28.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:32:28.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:32:28.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.313592 -999.00  +15.80  22.05     41   +2.60 1 1 1 1 1   888    0 14.98 153.95 ----- 22.1 22.1 157.0 27.5 21.8 -28.0 20.9 -25.7 19.8 -25.8 20.4 -26.3
2025-11-24T09:32:28.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:32:28.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:32:28.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.313592
2025-11-24T09:32:28.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:32:28.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:32:28.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:32:28.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:32:28.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:32:28.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:32:08', tmtdew=14.0, humidity=38.67, cloud=0.0, wind=24.63, temperature=15.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:31:34.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:32:28.251 [DEBUG] [Thread-187557] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:32:28.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:32:28.336 [DEBUG] [Thread-187560] [transport.py] [_log()] starting thread (client mode): 0xd3153b50
2025-11-24T09:32:28.337 [DEBUG] [Thread-187560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:32:28.351 [DEBUG] [Thread-187560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:32:28.351 [INFO] [Thread-187560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:32:28.359 [DEBUG] [Thread-187560] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:32:28.359 [DEBUG] [Thread-187560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:32:28.359 [DEBUG] [Thread-187560] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:32:28.359 [DEBUG] [Thread-187560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:32:28.359 [DEBUG] [Thread-187560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:32:28.359 [DEBUG] [Thread-187560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:32:28.359 [DEBUG] [Thread-187560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:32:28.359 [DEBUG] [Thread-187560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:32:28.359 [DEBUG] [Thread-187560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:32:28.359 [DEBUG] [Thread-187560] [transport.py] [_log()] client lang: <none>
2025-11-24T09:32:28.368 [DEBUG] [Thread-187560] [transport.py] [_log()] server lang: <none>
2025-11-24T09:32:28.368 [DEBUG] [Thread-187560] [transport.py] [_log()] kex follows: False
2025-11-24T09:32:28.368 [DEBUG] [Thread-187560] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:32:28.368 [DEBUG] [Thread-187560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:32:28.368 [DEBUG] [Thread-187560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:32:28.368 [DEBUG] [Thread-187560] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:32:28.368 [DEBUG] [Thread-187560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:32:28.368 [DEBUG] [Thread-187560] [transport.py] [_log()] Compression: none
2025-11-24T09:32:28.368 [DEBUG] [Thread-187560] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:32:28.418 [DEBUG] [Thread-187560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:32:28.418 [DEBUG] [Thread-187560] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:32:28.418 [DEBUG] [Thread-187560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:32:28.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:32:28.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:32:28.474 [DEBUG] [Thread-187560] [transport.py] [_log()] userauth is OK
2025-11-24T09:32:28.474 [DEBUG] [Thread-187560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:32:28.474 [DEBUG] [Thread-187560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:32:28.474 [DEBUG] [Thread-187560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:32:28.474 [DEBUG] [Thread-187560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:32:28.488 [INFO] [Thread-187560] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:32:28.488 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:32:28.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:32:29.371 [DEBUG] [Thread-187560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:32:29.371 [DEBUG] [Thread-187560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:32:29.420 [DEBUG] [Thread-187560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:32:29.420 [DEBUG] [Thread-187560] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:32:29.429 [DEBUG] [Thread-187560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:32:29.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:32:29.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-11-24T09:32:29.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-11-24T09:32:29.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:32:29.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:32:29.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:32:29.469 [DEBUG] [Thread-187560] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:32:32.156 [DEBUG] [Thread-187562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:32:47.194 [DEBUG] [Thread-187563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:32:59.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:32:59.473 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:32:59.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-11-24T09:33:00.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 32, 41), 14.55, 37.59, 0.0, 29.45, 15.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:33:00.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:32:41
2025-11-24T09:33:00.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:33:00.585 [DEBUG] [Thread-187564] [transport.py] [_log()] starting thread (client mode): 0xd317d810
2025-11-24T09:33:00.585 [DEBUG] [Thread-187564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:33:00.604 [DEBUG] [Thread-187564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:33:00.604 [INFO] [Thread-187564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] client lang: <none>
2025-11-24T09:33:00.607 [DEBUG] [Thread-187564] [transport.py] [_log()] server lang: <none>
2025-11-24T09:33:00.608 [DEBUG] [Thread-187564] [transport.py] [_log()] kex follows: False
2025-11-24T09:33:00.608 [DEBUG] [Thread-187564] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:33:00.608 [DEBUG] [Thread-187564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:33:00.608 [DEBUG] [Thread-187564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:33:00.608 [DEBUG] [Thread-187564] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:33:00.608 [DEBUG] [Thread-187564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:33:00.608 [DEBUG] [Thread-187564] [transport.py] [_log()] Compression: none
2025-11-24T09:33:00.608 [DEBUG] [Thread-187564] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:33:00.626 [DEBUG] [Thread-187564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:33:00.626 [DEBUG] [Thread-187564] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:33:00.627 [DEBUG] [Thread-187564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:33:00.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:33:00.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:33:00.630 [DEBUG] [Thread-187564] [transport.py] [_log()] userauth is OK
2025-11-24T09:33:00.630 [DEBUG] [Thread-187564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:33:00.630 [DEBUG] [Thread-187564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:33:00.631 [DEBUG] [Thread-187564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:33:00.631 [DEBUG] [Thread-187564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:33:00.654 [INFO] [Thread-187564] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:33:00.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:33:01.266 [DEBUG] [Thread-187564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:33:01.266 [DEBUG] [Thread-187564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:33:01.267 [DEBUG] [Thread-187564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:33:01.307 [DEBUG] [Thread-187564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:33:01.307 [DEBUG] [Thread-187564] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:33:01.309 [DEBUG] [Thread-187564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:33:01.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:33:01.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:33:01.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:33:01.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:33:01.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:33:01.326 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:33:01.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:33:01.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:33:01.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:33:01.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.313939 -999.00  +15.60  27.14     38   +1.70 1 1 1 1 1   888    0 15.53 185.41 ----- 27.1 27.1 170.0 31.9 21.8 -25.6 20.8 -27.3 19.7 -25.0 20.5 -26.3
2025-11-24T09:33:01.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:33:01.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:33:01.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.313939
2025-11-24T09:33:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:33:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:33:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:33:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:33:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:33:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:32:41', tmtdew=14.55, humidity=37.59, cloud=0.0, wind=29.45, temperature=15.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:32:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:33:01.327 [DEBUG] [Thread-187564] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:33:01.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:33:01.414 [DEBUG] [Thread-187567] [transport.py] [_log()] starting thread (client mode): 0xd317dcc0
2025-11-24T09:33:01.414 [DEBUG] [Thread-187567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:33:01.429 [DEBUG] [Thread-187567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:33:01.429 [INFO] [Thread-187567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:33:01.437 [DEBUG] [Thread-187567] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:33:01.437 [DEBUG] [Thread-187567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:33:01.437 [DEBUG] [Thread-187567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:33:01.437 [DEBUG] [Thread-187567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:33:01.437 [DEBUG] [Thread-187567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:33:01.437 [DEBUG] [Thread-187567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:33:01.437 [DEBUG] [Thread-187567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:33:01.437 [DEBUG] [Thread-187567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] client lang: <none>
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] server lang: <none>
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] kex follows: False
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] Compression: none
2025-11-24T09:33:01.438 [DEBUG] [Thread-187567] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:33:01.500 [DEBUG] [Thread-187567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:33:01.501 [DEBUG] [Thread-187567] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:33:01.501 [DEBUG] [Thread-187567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:33:01.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:33:01.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:33:01.559 [DEBUG] [Thread-187567] [transport.py] [_log()] userauth is OK
2025-11-24T09:33:01.559 [DEBUG] [Thread-187567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:33:01.559 [DEBUG] [Thread-187567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:33:01.559 [DEBUG] [Thread-187567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:33:01.559 [DEBUG] [Thread-187567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:33:01.578 [INFO] [Thread-187567] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:33:01.578 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:33:01.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:33:02.232 [DEBUG] [Thread-187569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:33:02.485 [DEBUG] [Thread-187567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:33:02.485 [DEBUG] [Thread-187567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:33:02.533 [DEBUG] [Thread-187567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:33:02.533 [DEBUG] [Thread-187567] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:33:02.541 [DEBUG] [Thread-187567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:33:02.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:33: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')
2025-11-24T09:33:02.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-11-24T09:33:02.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:33:02.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:33:02.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:33:02.579 [DEBUG] [Thread-187567] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:33:04.014 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:33:04.016 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:33:17.280 [DEBUG] [Thread-187570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:33:21.483 [DEBUG] [Thread-187571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:33:32.308 [DEBUG] [Thread-187572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:33:32.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:33:32.600 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:33:32.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-11-24T09:33:33.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 33, 13), 15.21, 35.78, 0.0, 26.96, 15.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:33:33.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:33:13
2025-11-24T09:33:33.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:33:33.587 [DEBUG] [Thread-187573] [transport.py] [_log()] starting thread (client mode): 0xd3152140
2025-11-24T09:33:33.588 [DEBUG] [Thread-187573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:33:33.597 [DEBUG] [Thread-187573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:33:33.597 [INFO] [Thread-187573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:33:33.600 [DEBUG] [Thread-187573] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:33:33.600 [DEBUG] [Thread-187573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:33:33.600 [DEBUG] [Thread-187573] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:33:33.600 [DEBUG] [Thread-187573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:33:33.600 [DEBUG] [Thread-187573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:33:33.600 [DEBUG] [Thread-187573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:33:33.600 [DEBUG] [Thread-187573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:33:33.600 [DEBUG] [Thread-187573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:33:33.600 [DEBUG] [Thread-187573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:33:33.600 [DEBUG] [Thread-187573] [transport.py] [_log()] client lang: <none>
2025-11-24T09:33:33.601 [DEBUG] [Thread-187573] [transport.py] [_log()] server lang: <none>
2025-11-24T09:33:33.601 [DEBUG] [Thread-187573] [transport.py] [_log()] kex follows: False
2025-11-24T09:33:33.601 [DEBUG] [Thread-187573] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:33:33.601 [DEBUG] [Thread-187573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:33:33.601 [DEBUG] [Thread-187573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:33:33.601 [DEBUG] [Thread-187573] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:33:33.601 [DEBUG] [Thread-187573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:33:33.601 [DEBUG] [Thread-187573] [transport.py] [_log()] Compression: none
2025-11-24T09:33:33.601 [DEBUG] [Thread-187573] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:33:33.620 [DEBUG] [Thread-187573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:33:33.621 [DEBUG] [Thread-187573] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:33:33.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:33:33.622 [DEBUG] [Thread-187573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:33:33.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:33:33.624 [DEBUG] [Thread-187573] [transport.py] [_log()] userauth is OK
2025-11-24T09:33:33.624 [DEBUG] [Thread-187573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:33:33.625 [DEBUG] [Thread-187573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:33:33.625 [DEBUG] [Thread-187573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:33:33.625 [DEBUG] [Thread-187573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:33:33.639 [INFO] [Thread-187573] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:33:33.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:33:34.218 [DEBUG] [Thread-187573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:33:34.218 [DEBUG] [Thread-187573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:33:34.218 [DEBUG] [Thread-187573] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:33:34.259 [DEBUG] [Thread-187573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:33:34.259 [DEBUG] [Thread-187573] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:33:34.261 [DEBUG] [Thread-187573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:33:34.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:33:34.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:33:34.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:33:34.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:33:34.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:33:34.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:33:34.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:33:34.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:33:34.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:33:34.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.314286 -999.00  +15.90  28.35     39   +2.00 1 1 1 1 1   888    0 15.63 187.07 ----- 28.4 28.4 201.6 38.5 21.6 -27.6 20.8 -27.7 19.8 -26.1 20.3 -28.0
2025-11-24T09:33:34.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:33:34.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:33:34.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.314286
2025-11-24T09:33:34.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:33:34.280 [DEBUG] [Thread-187573] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:33:34.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:33:34.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:33:34.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:33:34.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:33:34.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:33:13', tmtdew=15.21, humidity=35.78, cloud=0.0, wind=26.96, temperature=15.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:32:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:33:34.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:33:34.365 [DEBUG] [Thread-187576] [transport.py] [_log()] starting thread (client mode): 0xd3150fd0
2025-11-24T09:33:34.365 [DEBUG] [Thread-187576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:33:34.384 [DEBUG] [Thread-187576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:33:34.385 [INFO] [Thread-187576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] client lang: <none>
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] server lang: <none>
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] kex follows: False
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:33:34.392 [DEBUG] [Thread-187576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:33:34.393 [DEBUG] [Thread-187576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:33:34.393 [DEBUG] [Thread-187576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:33:34.393 [DEBUG] [Thread-187576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:33:34.393 [DEBUG] [Thread-187576] [transport.py] [_log()] Compression: none
2025-11-24T09:33:34.393 [DEBUG] [Thread-187576] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:33:34.452 [DEBUG] [Thread-187576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:33:34.453 [DEBUG] [Thread-187576] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:33:34.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:33:34.453 [DEBUG] [Thread-187576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:33:34.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:33:34.510 [DEBUG] [Thread-187576] [transport.py] [_log()] userauth is OK
2025-11-24T09:33:34.510 [DEBUG] [Thread-187576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:33:34.510 [DEBUG] [Thread-187576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:33:34.510 [DEBUG] [Thread-187576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:33:34.510 [DEBUG] [Thread-187576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:33:34.524 [INFO] [Thread-187576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:33:34.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:33:34.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:33:35.382 [DEBUG] [Thread-187576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:33:35.383 [DEBUG] [Thread-187576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:33:35.430 [DEBUG] [Thread-187576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:33:35.431 [DEBUG] [Thread-187576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:33:35.440 [DEBUG] [Thread-187576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:33:35.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:33:35.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:33:35.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-11-24T09:33:35.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:33:35.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:33:35.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:33:35.477 [DEBUG] [Thread-187576] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:33:47.341 [DEBUG] [Thread-187578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:34:02.380 [DEBUG] [Thread-187579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:34:04.156 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:34:04.157 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:34:05.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:34:05.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:34:05.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:34:06.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 33, 46), 15.58, 34.5, 0.0, 24.05, 15.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:34:06.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:33:46
2025-11-24T09:34:06.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:34:06.574 [DEBUG] [Thread-187580] [transport.py] [_log()] starting thread (client mode): 0xd0711b10
2025-11-24T09:34:06.575 [DEBUG] [Thread-187580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:34:06.594 [DEBUG] [Thread-187580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:34:06.594 [INFO] [Thread-187580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:34:06.597 [DEBUG] [Thread-187580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] client lang: <none>
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] server lang: <none>
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] kex follows: False
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:34:06.598 [DEBUG] [Thread-187580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:34:06.599 [DEBUG] [Thread-187580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:34:06.599 [DEBUG] [Thread-187580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:34:06.599 [DEBUG] [Thread-187580] [transport.py] [_log()] Compression: none
2025-11-24T09:34:06.599 [DEBUG] [Thread-187580] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:34:06.616 [DEBUG] [Thread-187580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:34:06.617 [DEBUG] [Thread-187580] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:34:06.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:34:06.617 [DEBUG] [Thread-187580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:34:06.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:34:06.618 [DEBUG] [Thread-187580] [transport.py] [_log()] userauth is OK
2025-11-24T09:34:06.618 [DEBUG] [Thread-187580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:34:06.618 [DEBUG] [Thread-187580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:34:06.618 [DEBUG] [Thread-187580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:34:06.618 [DEBUG] [Thread-187580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:34:06.627 [INFO] [Thread-187580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:34:06.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:34:07.270 [DEBUG] [Thread-187580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:34:07.270 [DEBUG] [Thread-187580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:34:07.270 [DEBUG] [Thread-187580] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:34:07.311 [DEBUG] [Thread-187580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:34:07.311 [DEBUG] [Thread-187580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:34:07.314 [DEBUG] [Thread-187580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:34:07.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:34:07.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:34:07.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:34:07.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:34:07.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:34:07.338 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:34:07.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:34:07.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:34:07.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:34:07.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.314633 -999.00  +15.60  16.65     40   +2.30 1 1 1 1 1   888    0 15.80 185.56 ----- 16.6 16.6 188.6 31.3 21.6 -25.7 20.4 -29.2 19.6 -25.3 20.3 -26.2
2025-11-24T09:34:07.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:34:07.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:34:07.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.314633
2025-11-24T09:34:07.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:34:07.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:34:07.341 [DEBUG] [Thread-187580] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:34:07.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:34:07.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:34:07.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:34:07.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:33:46', tmtdew=15.58, humidity=34.5, cloud=0.0, wind=24.05, temperature=15.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:33:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:34:07.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:34:07.437 [DEBUG] [Thread-187583] [transport.py] [_log()] starting thread (client mode): 0xd31cd510
2025-11-24T09:34:07.438 [DEBUG] [Thread-187583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:34:07.452 [DEBUG] [Thread-187583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:34:07.452 [INFO] [Thread-187583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:34:07.460 [DEBUG] [Thread-187583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:34:07.460 [DEBUG] [Thread-187583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:34:07.460 [DEBUG] [Thread-187583] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:34:07.460 [DEBUG] [Thread-187583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:34:07.460 [DEBUG] [Thread-187583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:34:07.460 [DEBUG] [Thread-187583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:34:07.460 [DEBUG] [Thread-187583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:34:07.460 [DEBUG] [Thread-187583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:34:07.460 [DEBUG] [Thread-187583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:34:07.460 [DEBUG] [Thread-187583] [transport.py] [_log()] client lang: <none>
2025-11-24T09:34:07.461 [DEBUG] [Thread-187583] [transport.py] [_log()] server lang: <none>
2025-11-24T09:34:07.461 [DEBUG] [Thread-187583] [transport.py] [_log()] kex follows: False
2025-11-24T09:34:07.461 [DEBUG] [Thread-187583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:34:07.461 [DEBUG] [Thread-187583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:34:07.470 [DEBUG] [Thread-187583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:34:07.470 [DEBUG] [Thread-187583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:34:07.470 [DEBUG] [Thread-187583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:34:07.470 [DEBUG] [Thread-187583] [transport.py] [_log()] Compression: none
2025-11-24T09:34:07.470 [DEBUG] [Thread-187583] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:34:07.519 [DEBUG] [Thread-187583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:34:07.520 [DEBUG] [Thread-187583] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:34:07.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:34:07.521 [DEBUG] [Thread-187583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:34:07.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:34:07.575 [DEBUG] [Thread-187583] [transport.py] [_log()] userauth is OK
2025-11-24T09:34:07.575 [DEBUG] [Thread-187583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:34:07.575 [DEBUG] [Thread-187583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:34:07.575 [DEBUG] [Thread-187583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:34:07.576 [DEBUG] [Thread-187583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:34:07.595 [INFO] [Thread-187583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:34:07.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:34:07.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:34:08.488 [DEBUG] [Thread-187583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:34:08.488 [DEBUG] [Thread-187583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:34:08.536 [DEBUG] [Thread-187583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:34:08.536 [DEBUG] [Thread-187583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:34:08.544 [DEBUG] [Thread-187583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:34:08.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:34:08.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-11-24T09:34:08.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-11-24T09:34:08.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:34:08.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:34:08.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:34:08.577 [DEBUG] [Thread-187583] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:34:17.407 [DEBUG] [Thread-187585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:34:21.679 [DEBUG] [Thread-187586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:34:32.456 [DEBUG] [Thread-187587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:34:38.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:34:38.598 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:34:38.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-11-24T09:34:39.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 34, 18), 15.71, 34.24, 0.0, 23.87, 15.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:34:39.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:34:18
2025-11-24T09:34:39.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:34:39.740 [DEBUG] [Thread-187588] [transport.py] [_log()] starting thread (client mode): 0xd317d630
2025-11-24T09:34:39.740 [DEBUG] [Thread-187588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:34:39.755 [DEBUG] [Thread-187588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:34:39.755 [INFO] [Thread-187588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] client lang: <none>
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] server lang: <none>
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] kex follows: False
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] Compression: none
2025-11-24T09:34:39.758 [DEBUG] [Thread-187588] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:34:39.774 [DEBUG] [Thread-187588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:34:39.774 [DEBUG] [Thread-187588] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:34:39.774 [DEBUG] [Thread-187588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:34:39.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:34:39.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:34:39.775 [DEBUG] [Thread-187588] [transport.py] [_log()] userauth is OK
2025-11-24T09:34:39.775 [DEBUG] [Thread-187588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:34:39.775 [DEBUG] [Thread-187588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:34:39.775 [DEBUG] [Thread-187588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:34:39.775 [DEBUG] [Thread-187588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:34:39.785 [INFO] [Thread-187588] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:34:39.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:34:40.402 [DEBUG] [Thread-187588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:34:40.403 [DEBUG] [Thread-187588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:34:40.403 [DEBUG] [Thread-187588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:34:40.444 [DEBUG] [Thread-187588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:34:40.444 [DEBUG] [Thread-187588] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:34:40.446 [DEBUG] [Thread-187588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:34:40.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:34:40.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:34:40.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:34:40.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:34:40.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:34:40.463 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:34:40.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.315328 -999.00  +15.60  26.60     39   +1.70 1 1 1 1 1   888    0 16.49 204.17 ----- 26.6 26.6 193.0 35.5 21.6 -27.7 20.3 -28.9 19.7 -25.0 20.4 -26.9
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.315328
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:34:40.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:34:18', tmtdew=15.71, humidity=34.24, cloud=0.0, wind=23.87, temperature=15.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:34:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:34:40.465 [DEBUG] [Thread-187588] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:34:40.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:34:40.550 [DEBUG] [Thread-187591] [transport.py] [_log()] starting thread (client mode): 0xd073a920
2025-11-24T09:34:40.550 [DEBUG] [Thread-187591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:34:40.566 [DEBUG] [Thread-187591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:34:40.566 [INFO] [Thread-187591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] client lang: <none>
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] server lang: <none>
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] kex follows: False
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] Compression: none
2025-11-24T09:34:40.574 [DEBUG] [Thread-187591] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:34:40.631 [DEBUG] [Thread-187591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:34:40.631 [DEBUG] [Thread-187591] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:34:40.631 [DEBUG] [Thread-187591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:34:40.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:34:40.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:34:40.688 [DEBUG] [Thread-187591] [transport.py] [_log()] userauth is OK
2025-11-24T09:34:40.688 [DEBUG] [Thread-187591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:34:40.688 [DEBUG] [Thread-187591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:34:40.688 [DEBUG] [Thread-187591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:34:40.688 [DEBUG] [Thread-187591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:34:40.702 [INFO] [Thread-187591] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:34:40.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:34:40.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:34:41.532 [DEBUG] [Thread-187591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:34:41.532 [DEBUG] [Thread-187591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:34:41.580 [DEBUG] [Thread-187591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:34:41.580 [DEBUG] [Thread-187591] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:34:41.589 [DEBUG] [Thread-187591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:34:41.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:34:41.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-11-24T09:34:41.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-11-24T09:34:41.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:34:41.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:34:41.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:34:41.620 [DEBUG] [Thread-187591] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:34:47.488 [DEBUG] [Thread-187593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:35:02.552 [DEBUG] [Thread-187594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:35:04.298 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:35:04.309 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:35:11.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:35:11.642 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:35:11.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-11-24T09:35:12.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 34, 50), 16.05, 33.46, 0.0, 21.77, 15.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:35:12.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:34:50
2025-11-24T09:35:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:35:12.749 [DEBUG] [Thread-187595] [transport.py] [_log()] starting thread (client mode): 0xd0712620
2025-11-24T09:35:12.749 [DEBUG] [Thread-187595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:35:12.762 [DEBUG] [Thread-187595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:35:12.762 [INFO] [Thread-187595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:35:12.765 [DEBUG] [Thread-187595] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:35:12.765 [DEBUG] [Thread-187595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:35:12.765 [DEBUG] [Thread-187595] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:35:12.765 [DEBUG] [Thread-187595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:35:12.765 [DEBUG] [Thread-187595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:35:12.765 [DEBUG] [Thread-187595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:35:12.765 [DEBUG] [Thread-187595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:35:12.765 [DEBUG] [Thread-187595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:35:12.765 [DEBUG] [Thread-187595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:35:12.766 [DEBUG] [Thread-187595] [transport.py] [_log()] client lang: <none>
2025-11-24T09:35:12.766 [DEBUG] [Thread-187595] [transport.py] [_log()] server lang: <none>
2025-11-24T09:35:12.766 [DEBUG] [Thread-187595] [transport.py] [_log()] kex follows: False
2025-11-24T09:35:12.766 [DEBUG] [Thread-187595] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:35:12.766 [DEBUG] [Thread-187595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:35:12.766 [DEBUG] [Thread-187595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:35:12.766 [DEBUG] [Thread-187595] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:35:12.766 [DEBUG] [Thread-187595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:35:12.766 [DEBUG] [Thread-187595] [transport.py] [_log()] Compression: none
2025-11-24T09:35:12.766 [DEBUG] [Thread-187595] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:35:12.783 [DEBUG] [Thread-187595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:35:12.784 [DEBUG] [Thread-187595] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:35:12.784 [DEBUG] [Thread-187595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:35:12.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:35:12.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:35:12.787 [DEBUG] [Thread-187595] [transport.py] [_log()] userauth is OK
2025-11-24T09:35:12.787 [DEBUG] [Thread-187595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:35:12.787 [DEBUG] [Thread-187595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:35:12.787 [DEBUG] [Thread-187595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:35:12.787 [DEBUG] [Thread-187595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:35:12.823 [INFO] [Thread-187595] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:35:12.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:35:13.572 [DEBUG] [Thread-187595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:35:13.581 [DEBUG] [Thread-187595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:35:13.581 [DEBUG] [Thread-187595] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:35:13.613 [DEBUG] [Thread-187595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:35:13.613 [DEBUG] [Thread-187595] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:35:13.616 [DEBUG] [Thread-187595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:35:13.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:35:13.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:35:13.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:35:13.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:35:13.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:35:13.634 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:35:13.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.315675 -999.00  +15.30  24.20     37   +1.10 1 1 1 1 1   888    0 16.31 191.17 ----- 24.2 24.2 198.2 27.9 21.4 -26.0 20.3 -26.1 19.6 -24.6 20.2 -27.0
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.315675
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:35:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:34:50', tmtdew=16.05, humidity=33.46, cloud=0.0, wind=21.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-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:34:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:35:13.635 [DEBUG] [Thread-187595] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:35:13.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:35:13.717 [DEBUG] [Thread-187598] [transport.py] [_log()] starting thread (client mode): 0xd31cf730
2025-11-24T09:35:13.717 [DEBUG] [Thread-187598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:35:13.732 [DEBUG] [Thread-187598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:35:13.732 [INFO] [Thread-187598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:35:13.739 [DEBUG] [Thread-187598] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:35:13.739 [DEBUG] [Thread-187598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:35:13.739 [DEBUG] [Thread-187598] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:35:13.739 [DEBUG] [Thread-187598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:35:13.739 [DEBUG] [Thread-187598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:35:13.739 [DEBUG] [Thread-187598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:35:13.739 [DEBUG] [Thread-187598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] client lang: <none>
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] server lang: <none>
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] kex follows: False
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] Compression: none
2025-11-24T09:35:13.740 [DEBUG] [Thread-187598] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:35:13.800 [DEBUG] [Thread-187598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:35:13.800 [DEBUG] [Thread-187598] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:35:13.800 [DEBUG] [Thread-187598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:35:13.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:35:13.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:35:13.858 [DEBUG] [Thread-187598] [transport.py] [_log()] userauth is OK
2025-11-24T09:35:13.858 [DEBUG] [Thread-187598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:35:13.858 [DEBUG] [Thread-187598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:35:13.858 [DEBUG] [Thread-187598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:35:13.858 [DEBUG] [Thread-187598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:35:13.872 [INFO] [Thread-187598] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:35:13.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:35:13.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:35:14.714 [DEBUG] [Thread-187598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:35:14.714 [DEBUG] [Thread-187598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:35:14.763 [DEBUG] [Thread-187598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:35:14.763 [DEBUG] [Thread-187598] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:35:14.775 [DEBUG] [Thread-187598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:35:14.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:35:14.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:35:14.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-11-24T09:35:14.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:35:14.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:35:14.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:35:14.817 [DEBUG] [Thread-187598] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:35:17.581 [DEBUG] [Thread-187600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:35:21.717 [DEBUG] [Thread-187601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:35:32.627 [DEBUG] [Thread-187602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:35:44.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:35:44.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:35:44.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:35:45.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 35, 23), 15.54, 34.77, 0.0, 26.54, 15.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:35:45.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:35:23
2025-11-24T09:35:45.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:35:45.919 [DEBUG] [Thread-187603] [transport.py] [_log()] starting thread (client mode): 0xd31b3b20
2025-11-24T09:35:45.919 [DEBUG] [Thread-187603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:35:45.931 [DEBUG] [Thread-187603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:35:45.932 [INFO] [Thread-187603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:35:45.934 [DEBUG] [Thread-187603] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:35:45.934 [DEBUG] [Thread-187603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:35:45.934 [DEBUG] [Thread-187603] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:35:45.934 [DEBUG] [Thread-187603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:35:45.934 [DEBUG] [Thread-187603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:35:45.934 [DEBUG] [Thread-187603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:35:45.934 [DEBUG] [Thread-187603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:35:45.934 [DEBUG] [Thread-187603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:35:45.934 [DEBUG] [Thread-187603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:35:45.934 [DEBUG] [Thread-187603] [transport.py] [_log()] client lang: <none>
2025-11-24T09:35:45.935 [DEBUG] [Thread-187603] [transport.py] [_log()] server lang: <none>
2025-11-24T09:35:45.935 [DEBUG] [Thread-187603] [transport.py] [_log()] kex follows: False
2025-11-24T09:35:45.935 [DEBUG] [Thread-187603] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:35:45.935 [DEBUG] [Thread-187603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:35:45.935 [DEBUG] [Thread-187603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:35:45.935 [DEBUG] [Thread-187603] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:35:45.935 [DEBUG] [Thread-187603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:35:45.935 [DEBUG] [Thread-187603] [transport.py] [_log()] Compression: none
2025-11-24T09:35:45.935 [DEBUG] [Thread-187603] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:35:45.954 [DEBUG] [Thread-187603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:35:45.954 [DEBUG] [Thread-187603] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:35:45.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:35:45.956 [DEBUG] [Thread-187603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:35:45.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:35:45.997 [DEBUG] [Thread-187603] [transport.py] [_log()] userauth is OK
2025-11-24T09:35:45.997 [DEBUG] [Thread-187603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:35:45.997 [DEBUG] [Thread-187603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:35:45.997 [DEBUG] [Thread-187603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:35:45.997 [DEBUG] [Thread-187603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:35:46.016 [INFO] [Thread-187603] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:35:46.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:35:46.638 [DEBUG] [Thread-187603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:35:46.638 [DEBUG] [Thread-187603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:35:46.638 [DEBUG] [Thread-187603] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:35:46.679 [DEBUG] [Thread-187603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:35:46.679 [DEBUG] [Thread-187603] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:35:46.682 [DEBUG] [Thread-187603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:35:46.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:35:46.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:35:46.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:35:46.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:35:46.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:35:46.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:35:46.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:35:46.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:35:46.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:35:46.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.316022 -999.00  +15.50  17.01     39   +1.90 1 1 1 1 1   888    0 17.00 207.53 ----- 17.0 17.0 193.8 26.0 21.6 -24.5 20.3 -23.8 19.6 -22.6 20.4 -24.5
2025-11-24T09:35:46.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:35:46.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:35:46.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.316022
2025-11-24T09:35:46.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:35:46.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:35:46.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:35:46.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:35:46.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:35:46.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:35:23', tmtdew=15.54, humidity=34.77, cloud=0.0, wind=26.54, temperature=15.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:35:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:35:46.700 [DEBUG] [Thread-187603] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:35:46.772 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:35:46.786 [DEBUG] [Thread-187606] [transport.py] [_log()] starting thread (client mode): 0xd31b1360
2025-11-24T09:35:46.786 [DEBUG] [Thread-187606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:35:46.802 [DEBUG] [Thread-187606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:35:46.802 [INFO] [Thread-187606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:35:46.809 [DEBUG] [Thread-187606] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:35:46.809 [DEBUG] [Thread-187606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:35:46.809 [DEBUG] [Thread-187606] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:35:46.809 [DEBUG] [Thread-187606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:35:46.809 [DEBUG] [Thread-187606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:35:46.809 [DEBUG] [Thread-187606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:35:46.809 [DEBUG] [Thread-187606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:35:46.809 [DEBUG] [Thread-187606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] client lang: <none>
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] server lang: <none>
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] kex follows: False
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] Compression: none
2025-11-24T09:35:46.810 [DEBUG] [Thread-187606] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:35:46.866 [DEBUG] [Thread-187606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:35:46.866 [DEBUG] [Thread-187606] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:35:46.874 [DEBUG] [Thread-187606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:35:46.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:35:46.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:35:46.922 [DEBUG] [Thread-187606] [transport.py] [_log()] userauth is OK
2025-11-24T09:35:46.922 [DEBUG] [Thread-187606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:35:46.922 [DEBUG] [Thread-187606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:35:46.922 [DEBUG] [Thread-187606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:35:46.922 [DEBUG] [Thread-187606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:35:46.936 [INFO] [Thread-187606] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:35:46.937 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:35:46.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:35:47.661 [DEBUG] [Thread-187608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:35:47.828 [DEBUG] [Thread-187606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:35:47.828 [DEBUG] [Thread-187606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:35:47.876 [DEBUG] [Thread-187606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:35:47.876 [DEBUG] [Thread-187606] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:35:47.886 [DEBUG] [Thread-187606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:35:47.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:35:47.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-11-24T09:35:47.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-11-24T09:35:47.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:35:47.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:35:47.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:35:47.923 [DEBUG] [Thread-187606] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:36:02.714 [DEBUG] [Thread-187609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:36:04.452 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:36:04.453 [DEBUG] [Thread-17 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:36:17.745 [DEBUG] [Thread-187610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:36:17.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:36:17.926 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:36:17.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-11-24T09:36:18.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 35, 55), 14.99, 36.0, 0.0, 28.04, 15.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:36:18.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:35:55
2025-11-24T09:36:18.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:36:18.932 [DEBUG] [Thread-187611] [transport.py] [_log()] starting thread (client mode): 0xd31cd420
2025-11-24T09:36:18.932 [DEBUG] [Thread-187611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:36:18.951 [DEBUG] [Thread-187611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:36:18.951 [INFO] [Thread-187611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:36:18.954 [DEBUG] [Thread-187611] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:36:18.954 [DEBUG] [Thread-187611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:36:18.954 [DEBUG] [Thread-187611] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:36:18.954 [DEBUG] [Thread-187611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:36:18.954 [DEBUG] [Thread-187611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:36:18.954 [DEBUG] [Thread-187611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:36:18.954 [DEBUG] [Thread-187611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] client lang: <none>
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] server lang: <none>
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] kex follows: False
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] Compression: none
2025-11-24T09:36:18.955 [DEBUG] [Thread-187611] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:36:18.972 [DEBUG] [Thread-187611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:36:18.972 [DEBUG] [Thread-187611] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:36:18.973 [DEBUG] [Thread-187611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:36:18.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:36:18.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:36:18.974 [DEBUG] [Thread-187611] [transport.py] [_log()] userauth is OK
2025-11-24T09:36:18.974 [DEBUG] [Thread-187611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:36:18.975 [DEBUG] [Thread-187611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:36:18.975 [DEBUG] [Thread-187611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:36:18.975 [DEBUG] [Thread-187611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:36:18.998 [INFO] [Thread-187611] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:36:18.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:36:19.632 [DEBUG] [Thread-187611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:36:19.632 [DEBUG] [Thread-187611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:36:19.632 [DEBUG] [Thread-187611] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:36:19.673 [DEBUG] [Thread-187611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:36:19.673 [DEBUG] [Thread-187611] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:36:19.675 [DEBUG] [Thread-187611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:36:19.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:36:19.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:36:19.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:36:19.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:36:19.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:36:19.692 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:36:19.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.316369 -999.00  +16.20  14.84     39   +2.50 1 1 1 1 1   888    0 16.96 204.42 ----- 14.8 14.8 179.6 19.4 21.8 -25.4 20.6 -23.6 19.8 -22.9 20.6 -24.5
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.316369
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:36:19.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:36:19.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:35:55', tmtdew=14.99, humidity=36.0, cloud=0.0, wind=28.04, temperature=15.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:35:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:36:19.693 [DEBUG] [Thread-187611] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:36:19.766 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:36:19.777 [DEBUG] [Thread-187614] [transport.py] [_log()] starting thread (client mode): 0xd31b0d00
2025-11-24T09:36:19.777 [DEBUG] [Thread-187614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:36:19.791 [DEBUG] [Thread-187614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:36:19.791 [INFO] [Thread-187614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] client lang: <none>
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] server lang: <none>
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] kex follows: False
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:36:19.799 [DEBUG] [Thread-187614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:36:19.800 [DEBUG] [Thread-187614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:36:19.800 [DEBUG] [Thread-187614] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:36:19.800 [DEBUG] [Thread-187614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:36:19.800 [DEBUG] [Thread-187614] [transport.py] [_log()] Compression: none
2025-11-24T09:36:19.800 [DEBUG] [Thread-187614] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:36:19.860 [DEBUG] [Thread-187614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:36:19.860 [DEBUG] [Thread-187614] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:36:19.860 [DEBUG] [Thread-187614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:36:19.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:36:19.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:36:19.918 [DEBUG] [Thread-187614] [transport.py] [_log()] userauth is OK
2025-11-24T09:36:19.918 [DEBUG] [Thread-187614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:36:19.918 [DEBUG] [Thread-187614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:36:19.918 [DEBUG] [Thread-187614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:36:19.918 [DEBUG] [Thread-187614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:36:19.932 [INFO] [Thread-187614] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:36:19.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:36:19.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:36:20.804 [DEBUG] [Thread-187614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:36:20.804 [DEBUG] [Thread-187614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:36:20.853 [DEBUG] [Thread-187614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:36:20.853 [DEBUG] [Thread-187614] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:36:20.862 [DEBUG] [Thread-187614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:36:20.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:36:20.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-11-24T09:36:20.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-11-24T09:36:20.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:36:20.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:36:20.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:36:20.895 [DEBUG] [Thread-187614] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:36:21.798 [DEBUG] [Thread-187616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:36:32.774 [DEBUG] [Thread-187617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:36:47.826 [DEBUG] [Thread-187618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:36:50.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:36:50.918 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:36:50.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-11-24T09:36:51.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 36, 27), 14.63, 36.87, 0.0, 25.27, 15.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:36:51.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:36:27
2025-11-24T09:36:51.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:36:51.899 [DEBUG] [Thread-187619] [transport.py] [_log()] starting thread (client mode): 0xd7bc5510
2025-11-24T09:36:51.899 [DEBUG] [Thread-187619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:36:51.919 [DEBUG] [Thread-187619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:36:51.920 [INFO] [Thread-187619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:36:51.922 [DEBUG] [Thread-187619] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] client lang: <none>
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] server lang: <none>
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] kex follows: False
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] Compression: none
2025-11-24T09:36:51.923 [DEBUG] [Thread-187619] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:36:51.940 [DEBUG] [Thread-187619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:36:51.941 [DEBUG] [Thread-187619] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:36:51.941 [DEBUG] [Thread-187619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:36:51.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:36:51.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:36:51.989 [DEBUG] [Thread-187619] [transport.py] [_log()] userauth is OK
2025-11-24T09:36:51.989 [DEBUG] [Thread-187619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:36:51.989 [DEBUG] [Thread-187619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:36:51.989 [DEBUG] [Thread-187619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:36:51.989 [DEBUG] [Thread-187619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:36:52.013 [INFO] [Thread-187619] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:36:52.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:36:52.722 [DEBUG] [Thread-187619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:36:52.722 [DEBUG] [Thread-187619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:36:52.722 [DEBUG] [Thread-187619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:36:52.763 [DEBUG] [Thread-187619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:36:52.763 [DEBUG] [Thread-187619] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:36:52.765 [DEBUG] [Thread-187619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:36:52.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:36:52.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:36:52.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:36:52.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:36:52.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:36:52.783 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:36:52.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:36:52.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:36:52.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:36:52.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.316717 -999.00  +16.00  26.63     43   +3.70 1 1 1 1 1   888    0 16.73 193.42 ----- 26.6 26.6 169.4 35.1 21.8 -26.3 20.6 -25.1 19.8 -24.3 20.6 -25.4
2025-11-24T09:36:52.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:36:52.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:36:52.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.316717
2025-11-24T09:36:52.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:36:52.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:36:52.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:36:52.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:36:52.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:36:52.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:36:27', tmtdew=14.63, humidity=36.87, cloud=0.0, wind=25.27, temperature=15.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:36:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:36:52.784 [DEBUG] [Thread-187619] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:36:52.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:36:52.868 [DEBUG] [Thread-187622] [transport.py] [_log()] starting thread (client mode): 0xd7bc5660
2025-11-24T09:36:52.868 [DEBUG] [Thread-187622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:36:52.883 [DEBUG] [Thread-187622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:36:52.883 [INFO] [Thread-187622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] client lang: <none>
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] server lang: <none>
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] kex follows: False
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] Compression: none
2025-11-24T09:36:52.891 [DEBUG] [Thread-187622] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:36:52.953 [DEBUG] [Thread-187622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:36:52.954 [DEBUG] [Thread-187622] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:36:52.954 [DEBUG] [Thread-187622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:36:52.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:36:52.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:36:53.010 [DEBUG] [Thread-187622] [transport.py] [_log()] userauth is OK
2025-11-24T09:36:53.011 [DEBUG] [Thread-187622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:36:53.011 [DEBUG] [Thread-187622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:36:53.011 [DEBUG] [Thread-187622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:36:53.011 [DEBUG] [Thread-187622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:36:53.024 [INFO] [Thread-187622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:36:53.024 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:36:53.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:36:53.881 [DEBUG] [Thread-187622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:36:53.890 [DEBUG] [Thread-187622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:36:53.929 [DEBUG] [Thread-187622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:36:53.929 [DEBUG] [Thread-187622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:36:53.937 [DEBUG] [Thread-187622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:36:53.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:36:53.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-11-24T09:36:53.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-11-24T09:36:53.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:36:53.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:36:53.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:36:53.970 [DEBUG] [Thread-187622] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:37:02.861 [DEBUG] [Thread-187624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:37:17.894 [DEBUG] [Thread-187625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:37:21.856 [DEBUG] [Thread-187626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:37:23.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:37:23.992 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:37:24.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-11-24T09:37:24.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 36, 27), 14.63, 36.87, 0.0, 25.27, 15.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:37:24.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:36:27
2025-11-24T09:37:24.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:37:24.977 [DEBUG] [Thread-187627] [transport.py] [_log()] starting thread (client mode): 0xd317ded0
2025-11-24T09:37:24.977 [DEBUG] [Thread-187627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:37:24.996 [DEBUG] [Thread-187627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:37:24.996 [INFO] [Thread-187627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:37:25.008 [DEBUG] [Thread-187627] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:37:25.009 [DEBUG] [Thread-187627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:37:25.009 [DEBUG] [Thread-187627] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:37:25.009 [DEBUG] [Thread-187627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:37:25.009 [DEBUG] [Thread-187627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:37:25.009 [DEBUG] [Thread-187627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:37:25.010 [DEBUG] [Thread-187627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:37:25.010 [DEBUG] [Thread-187627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:37:25.010 [DEBUG] [Thread-187627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:37:25.010 [DEBUG] [Thread-187627] [transport.py] [_log()] client lang: <none>
2025-11-24T09:37:25.010 [DEBUG] [Thread-187627] [transport.py] [_log()] server lang: <none>
2025-11-24T09:37:25.010 [DEBUG] [Thread-187627] [transport.py] [_log()] kex follows: False
2025-11-24T09:37:25.010 [DEBUG] [Thread-187627] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:37:25.011 [DEBUG] [Thread-187627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:37:25.011 [DEBUG] [Thread-187627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:37:25.011 [DEBUG] [Thread-187627] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:37:25.011 [DEBUG] [Thread-187627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:37:25.011 [DEBUG] [Thread-187627] [transport.py] [_log()] Compression: none
2025-11-24T09:37:25.011 [DEBUG] [Thread-187627] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:37:25.030 [DEBUG] [Thread-187627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:37:25.030 [DEBUG] [Thread-187627] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:37:25.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:37:25.032 [DEBUG] [Thread-187627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:37:25.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:37:25.034 [DEBUG] [Thread-187627] [transport.py] [_log()] userauth is OK
2025-11-24T09:37:25.034 [DEBUG] [Thread-187627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:37:25.034 [DEBUG] [Thread-187627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:37:25.034 [DEBUG] [Thread-187627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:37:25.034 [DEBUG] [Thread-187627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:37:25.059 [INFO] [Thread-187627] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:37:25.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:37:25.701 [DEBUG] [Thread-187627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:37:25.701 [DEBUG] [Thread-187627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:37:25.701 [DEBUG] [Thread-187627] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:37:25.742 [DEBUG] [Thread-187627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:37:25.742 [DEBUG] [Thread-187627] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:37:25.745 [DEBUG] [Thread-187627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:37:25.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:37:25.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:37:25.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:37:25.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:37:25.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:37:25.765 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:37:25.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:37:25.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.317064 -999.00  +15.60  15.65     45   +3.90 1 1 1 1 1   888    0 16.52 189.04 ----- 15.7 15.7 169.2 28.4 21.9 -25.3 20.8 -24.3 19.9 -23.6 20.6 -25.4
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.317064
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:37:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:36:27', tmtdew=14.63, humidity=36.87, cloud=0.0, wind=25.27, temperature=15.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:36:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:37:25.767 [DEBUG] [Thread-187627] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:37:25.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:37:25.850 [DEBUG] [Thread-187630] [transport.py] [_log()] starting thread (client mode): 0xd3153d30
2025-11-24T09:37:25.850 [DEBUG] [Thread-187630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:37:25.870 [DEBUG] [Thread-187630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:37:25.870 [INFO] [Thread-187630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:37:25.877 [DEBUG] [Thread-187630] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:37:25.877 [DEBUG] [Thread-187630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] client lang: <none>
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] server lang: <none>
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] kex follows: False
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] Compression: none
2025-11-24T09:37:25.878 [DEBUG] [Thread-187630] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:37:25.934 [DEBUG] [Thread-187630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:37:25.943 [DEBUG] [Thread-187630] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:37:25.943 [DEBUG] [Thread-187630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:37:25.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:37:25.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:37:25.997 [DEBUG] [Thread-187630] [transport.py] [_log()] userauth is OK
2025-11-24T09:37:25.997 [DEBUG] [Thread-187630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:37:25.997 [DEBUG] [Thread-187630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:37:25.997 [DEBUG] [Thread-187630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:37:25.997 [DEBUG] [Thread-187630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:37:26.013 [INFO] [Thread-187630] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:37:26.014 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:37:26.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:37:26.884 [DEBUG] [Thread-187630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:37:26.884 [DEBUG] [Thread-187630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:37:26.932 [DEBUG] [Thread-187630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:37:26.932 [DEBUG] [Thread-187630] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:37:26.942 [DEBUG] [Thread-187630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:37:26.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:37:26.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')
2025-11-24T09:37:26.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-11-24T09:37:26.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:37:26.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:37:26.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:37:26.978 [DEBUG] [Thread-187630] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:37:32.925 [DEBUG] [Thread-187632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:37:47.973 [DEBUG] [Thread-187633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:37:57.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:37:57.001 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:37:57.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:37:57.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 37, 32), 13.48, 40.31, 0.0, 23.4, 15.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:37:57.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:37:32
2025-11-24T09:37:57.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:37:57.990 [DEBUG] [Thread-187634] [transport.py] [_log()] starting thread (client mode): 0xd0712050
2025-11-24T09:37:57.990 [DEBUG] [Thread-187634] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:37:58.010 [DEBUG] [Thread-187634] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:37:58.010 [INFO] [Thread-187634] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] client lang: <none>
2025-11-24T09:37:58.013 [DEBUG] [Thread-187634] [transport.py] [_log()] server lang: <none>
2025-11-24T09:37:58.014 [DEBUG] [Thread-187634] [transport.py] [_log()] kex follows: False
2025-11-24T09:37:58.014 [DEBUG] [Thread-187634] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:37:58.014 [DEBUG] [Thread-187634] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:37:58.014 [DEBUG] [Thread-187634] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:37:58.014 [DEBUG] [Thread-187634] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:37:58.014 [DEBUG] [Thread-187634] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:37:58.014 [DEBUG] [Thread-187634] [transport.py] [_log()] Compression: none
2025-11-24T09:37:58.014 [DEBUG] [Thread-187634] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:37:58.022 [DEBUG] [Thread-187634] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:37:58.023 [DEBUG] [Thread-187634] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:37:58.023 [DEBUG] [Thread-187634] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:37:58.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:37:58.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:37:58.025 [DEBUG] [Thread-187634] [transport.py] [_log()] userauth is OK
2025-11-24T09:37:58.025 [DEBUG] [Thread-187634] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:37:58.025 [DEBUG] [Thread-187634] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:37:58.025 [DEBUG] [Thread-187634] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:37:58.025 [DEBUG] [Thread-187634] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:37:58.050 [INFO] [Thread-187634] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:37:58.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:37:58.607 [DEBUG] [Thread-187634] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:37:58.607 [DEBUG] [Thread-187634] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:37:58.608 [DEBUG] [Thread-187634] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:37:58.648 [DEBUG] [Thread-187634] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:37:58.648 [DEBUG] [Thread-187634] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:37:58.651 [DEBUG] [Thread-187634] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:37:58.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:37:58.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:37:58.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:37:58.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:37:58.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:37:58.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:37:58.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:37:58.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:37:58.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:37:58.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.317411 -999.00  +15.50  18.67     46   +4.10 1 1 1 1 1   888    0 16.85 200.86 ----- 18.7 18.7 175.2 26.1 21.8 -25.9 20.6 -26.1 19.9 -25.0 20.6 -26.2
2025-11-24T09:37:58.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:37:58.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:37:58.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.317411
2025-11-24T09:37:58.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:37:58.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:37:58.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:37:58.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:37:58.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:37:58.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:37:32', tmtdew=13.48, humidity=40.31, cloud=0.0, wind=23.4, temperature=15.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:37:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:37:58.681 [DEBUG] [Thread-187634] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:37:58.765 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:37:58.776 [DEBUG] [Thread-187637] [transport.py] [_log()] starting thread (client mode): 0xd0712440
2025-11-24T09:37:58.776 [DEBUG] [Thread-187637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:37:58.791 [DEBUG] [Thread-187637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:37:58.791 [INFO] [Thread-187637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] client lang: <none>
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] server lang: <none>
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] kex follows: False
2025-11-24T09:37:58.800 [DEBUG] [Thread-187637] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:37:58.801 [DEBUG] [Thread-187637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:37:58.801 [DEBUG] [Thread-187637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:37:58.801 [DEBUG] [Thread-187637] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:37:58.801 [DEBUG] [Thread-187637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:37:58.801 [DEBUG] [Thread-187637] [transport.py] [_log()] Compression: none
2025-11-24T09:37:58.801 [DEBUG] [Thread-187637] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:37:58.862 [DEBUG] [Thread-187637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:37:58.862 [DEBUG] [Thread-187637] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:37:58.862 [DEBUG] [Thread-187637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:37:58.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:37:58.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:37:58.919 [DEBUG] [Thread-187637] [transport.py] [_log()] userauth is OK
2025-11-24T09:37:58.919 [DEBUG] [Thread-187637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:37:58.919 [DEBUG] [Thread-187637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:37:58.919 [DEBUG] [Thread-187637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:37:58.919 [DEBUG] [Thread-187637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:37:58.934 [INFO] [Thread-187637] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:37:58.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:37:58.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:37:59.789 [DEBUG] [Thread-187637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:37:59.798 [DEBUG] [Thread-187637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:37:59.837 [DEBUG] [Thread-187637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:37:59.837 [DEBUG] [Thread-187637] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:37:59.846 [DEBUG] [Thread-187637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:37:59.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:37:59.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-11-24T09:37:59.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-11-24T09:37:59.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:37:59.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:37:59.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:37:59.880 [DEBUG] [Thread-187637] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:38:03.004 [DEBUG] [Thread-187639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:38:18.051 [DEBUG] [Thread-187640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:38:21.894 [DEBUG] [Thread-187641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:38:29.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:38:29.878 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:38:29.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-11-24T09:38:30.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 38, 5), 13.37, 40.62, 0.0, 24.6, 15.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:38:30.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:38:05
2025-11-24T09:38:30.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:38:30.934 [DEBUG] [Thread-187642] [transport.py] [_log()] starting thread (client mode): 0xd07118d0
2025-11-24T09:38:30.935 [DEBUG] [Thread-187642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:38:30.953 [DEBUG] [Thread-187642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:38:30.953 [INFO] [Thread-187642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] client lang: <none>
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] server lang: <none>
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] kex follows: False
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] Compression: none
2025-11-24T09:38:30.955 [DEBUG] [Thread-187642] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:38:30.965 [DEBUG] [Thread-187642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:38:30.966 [DEBUG] [Thread-187642] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:38:30.966 [DEBUG] [Thread-187642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:38:30.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:38:30.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:38:30.967 [DEBUG] [Thread-187642] [transport.py] [_log()] userauth is OK
2025-11-24T09:38:30.967 [DEBUG] [Thread-187642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:38:30.967 [DEBUG] [Thread-187642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:38:30.967 [DEBUG] [Thread-187642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:38:30.967 [DEBUG] [Thread-187642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:38:30.983 [INFO] [Thread-187642] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:38:30.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:38:31.621 [DEBUG] [Thread-187642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:38:31.622 [DEBUG] [Thread-187642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:38:31.622 [DEBUG] [Thread-187642] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:38:31.663 [DEBUG] [Thread-187642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:38:31.663 [DEBUG] [Thread-187642] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:38:31.665 [DEBUG] [Thread-187642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:38:31.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:38:31.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:38:31.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:38:31.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:38:31.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:38:31.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:38:31.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.317758 -999.00  +15.50  20.26     47   +4.30 1 1 1 1 1   888    0 16.63 186.11 ----- 20.3 20.3 167.2 24.2 21.9 -25.7 20.6 -24.4 19.9 -22.6 20.6 -25.0
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.317758
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:38:31.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:38:05', tmtdew=13.37, humidity=40.62, cloud=0.0, wind=24.6, temperature=15.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:37:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:38:31.683 [DEBUG] [Thread-187642] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:38: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-11-24T09:38:31.767 [DEBUG] [Thread-187645] [transport.py] [_log()] starting thread (client mode): 0xd0701720
2025-11-24T09:38:31.767 [DEBUG] [Thread-187645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:38:31.781 [DEBUG] [Thread-187645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:38:31.781 [INFO] [Thread-187645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] client lang: <none>
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] server lang: <none>
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] kex follows: False
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:38:31.788 [DEBUG] [Thread-187645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:38:31.789 [DEBUG] [Thread-187645] [transport.py] [_log()] Compression: none
2025-11-24T09:38:31.789 [DEBUG] [Thread-187645] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:38:31.849 [DEBUG] [Thread-187645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:38:31.849 [DEBUG] [Thread-187645] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:38:31.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:38:31.850 [DEBUG] [Thread-187645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:38:31.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:38:31.906 [DEBUG] [Thread-187645] [transport.py] [_log()] userauth is OK
2025-11-24T09:38:31.906 [DEBUG] [Thread-187645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:38:31.906 [DEBUG] [Thread-187645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:38:31.906 [DEBUG] [Thread-187645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:38:31.906 [DEBUG] [Thread-187645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:38:31.920 [INFO] [Thread-187645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:38:31.920 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:38:31.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:38:32.761 [DEBUG] [Thread-187645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:38:32.761 [DEBUG] [Thread-187645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:38:32.809 [DEBUG] [Thread-187645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:38:32.809 [DEBUG] [Thread-187645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:38:32.817 [DEBUG] [Thread-187645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:38:32.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:38:32.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:38:32.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-11-24T09:38:32.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:38:32.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:38:32.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:38:32.849 [DEBUG] [Thread-187645] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:38:33.085 [DEBUG] [Thread-187647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:38:48.125 [DEBUG] [Thread-187648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:39:02.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:39:02.847 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:39:02.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-11-24T09:39:03.156 [DEBUG] [Thread-187649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:39:03.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 38, 37), 13.23, 40.81, 0.0, 18.67, 15.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:39:03.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:38:37
2025-11-24T09:39:03.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:39:03.897 [DEBUG] [Thread-187650] [transport.py] [_log()] starting thread (client mode): 0xd0711570
2025-11-24T09:39:03.897 [DEBUG] [Thread-187650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:39:03.919 [DEBUG] [Thread-187650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:39:03.919 [INFO] [Thread-187650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] client lang: <none>
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] server lang: <none>
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] kex follows: False
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] Compression: none
2025-11-24T09:39:03.920 [DEBUG] [Thread-187650] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:39:03.929 [DEBUG] [Thread-187650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:39:03.929 [DEBUG] [Thread-187650] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:39:03.930 [DEBUG] [Thread-187650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:39:03.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:39:03.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:39:03.931 [DEBUG] [Thread-187650] [transport.py] [_log()] userauth is OK
2025-11-24T09:39:03.931 [DEBUG] [Thread-187650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:39:03.932 [DEBUG] [Thread-187650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:39:03.932 [DEBUG] [Thread-187650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:39:03.932 [DEBUG] [Thread-187650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:39:03.964 [INFO] [Thread-187650] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:39:03.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:39:04.718 [DEBUG] [Thread-187650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:39:04.727 [DEBUG] [Thread-187650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:39:04.727 [DEBUG] [Thread-187650] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:39:04.759 [DEBUG] [Thread-187650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:39:04.759 [DEBUG] [Thread-187650] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:39:04.761 [DEBUG] [Thread-187650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:39:04.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:39:04.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:39:04.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:39:04.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:39:04.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:39:04.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:39:04.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.318453 -999.00  +15.50  18.94     44   +3.60 1 1 1 1 1   888    0 16.42 180.63 ----- 18.9 18.9 161.2 21.6 22.1 -26.2 20.9 -24.3 19.9 -23.4 20.8 -26.1
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.318453
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:39:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:38:37', tmtdew=13.23, humidity=40.81, cloud=0.0, wind=18.67, temperature=15.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:38:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:39:04.779 [DEBUG] [Thread-187650] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:39:04.850 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:39:04.863 [DEBUG] [Thread-187653] [transport.py] [_log()] starting thread (client mode): 0xd317e0e0
2025-11-24T09:39:04.863 [DEBUG] [Thread-187653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:39:04.878 [DEBUG] [Thread-187653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:39:04.878 [INFO] [Thread-187653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:39:04.885 [DEBUG] [Thread-187653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:39:04.885 [DEBUG] [Thread-187653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:39:04.885 [DEBUG] [Thread-187653] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:39:04.885 [DEBUG] [Thread-187653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:39:04.885 [DEBUG] [Thread-187653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:39:04.885 [DEBUG] [Thread-187653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:39:04.885 [DEBUG] [Thread-187653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:39:04.885 [DEBUG] [Thread-187653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] client lang: <none>
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] server lang: <none>
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] kex follows: False
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] Compression: none
2025-11-24T09:39:04.886 [DEBUG] [Thread-187653] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:39:04.947 [DEBUG] [Thread-187653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:39:04.948 [DEBUG] [Thread-187653] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:39:04.948 [DEBUG] [Thread-187653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:39:04.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:39:04.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:39:05.007 [DEBUG] [Thread-187653] [transport.py] [_log()] userauth is OK
2025-11-24T09:39:05.008 [DEBUG] [Thread-187653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:39:05.008 [DEBUG] [Thread-187653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:39:05.008 [DEBUG] [Thread-187653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:39:05.008 [DEBUG] [Thread-187653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:39:05.027 [INFO] [Thread-187653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:39:05.027 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:39:05.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:39:05.898 [DEBUG] [Thread-187653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:39:05.898 [DEBUG] [Thread-187653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:39:05.946 [DEBUG] [Thread-187653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:39:05.946 [DEBUG] [Thread-187653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:39:05.954 [DEBUG] [Thread-187653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:39:05.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:39:05.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-11-24T09:39:05.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-11-24T09:39:05.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:39:05.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:39:05.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:39:05.985 [DEBUG] [Thread-187653] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:39:18.195 [DEBUG] [Thread-187655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:39:22.263 [DEBUG] [Thread-187656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:39:33.262 [DEBUG] [Thread-187657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:39:35.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:39:35.993 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:39:36.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-11-24T09:39:36.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 39, 10), 13.21, 40.82, 0.0, 19.39, 15.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:39:36.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:39:10
2025-11-24T09:39:36.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:39:37.123 [DEBUG] [Thread-187658] [transport.py] [_log()] starting thread (client mode): 0xd31cd120
2025-11-24T09:39:37.123 [DEBUG] [Thread-187658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:39:37.143 [DEBUG] [Thread-187658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:39:37.143 [INFO] [Thread-187658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] client lang: <none>
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] server lang: <none>
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] kex follows: False
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] Compression: none
2025-11-24T09:39:37.146 [DEBUG] [Thread-187658] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:39:37.162 [DEBUG] [Thread-187658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:39:37.162 [DEBUG] [Thread-187658] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:39:37.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:39:37.162 [DEBUG] [Thread-187658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:39:37.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:39:37.163 [DEBUG] [Thread-187658] [transport.py] [_log()] userauth is OK
2025-11-24T09:39:37.163 [DEBUG] [Thread-187658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:39:37.163 [DEBUG] [Thread-187658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:39:37.163 [DEBUG] [Thread-187658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:39:37.163 [DEBUG] [Thread-187658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:39:37.194 [INFO] [Thread-187658] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:39:37.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:39:37.859 [DEBUG] [Thread-187658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:39:37.859 [DEBUG] [Thread-187658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:39:37.859 [DEBUG] [Thread-187658] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:39:37.900 [DEBUG] [Thread-187658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:39:37.900 [DEBUG] [Thread-187658] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:39:37.902 [DEBUG] [Thread-187658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:39:37.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:39:37.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:39:37.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:39:37.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:39:37.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:39:37.923 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:39:37.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.318800 -999.00  +15.50  21.41     44   +3.60 1 1 1 1 1   888    0 16.36 175.04 ----- 21.4 21.4 170.8 32.0 22.1 -24.5 21.1 -24.7 20.0 -24.2 20.8 -24.5
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.318800
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:39:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:39:10', tmtdew=13.21, humidity=40.82, cloud=0.0, wind=19.39, temperature=15.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:39:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:39:37.924 [DEBUG] [Thread-187658] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:39:37.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:39:38.008 [DEBUG] [Thread-187661] [transport.py] [_log()] starting thread (client mode): 0xd317cbb0
2025-11-24T09:39:38.008 [DEBUG] [Thread-187661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:39:38.024 [DEBUG] [Thread-187661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:39:38.024 [INFO] [Thread-187661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] client lang: <none>
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] server lang: <none>
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] kex follows: False
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:39:38.033 [DEBUG] [Thread-187661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:39:38.034 [DEBUG] [Thread-187661] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:39:38.034 [DEBUG] [Thread-187661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:39:38.034 [DEBUG] [Thread-187661] [transport.py] [_log()] Compression: none
2025-11-24T09:39:38.034 [DEBUG] [Thread-187661] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:39:38.096 [DEBUG] [Thread-187661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:39:38.097 [DEBUG] [Thread-187661] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:39:38.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:39:38.098 [DEBUG] [Thread-187661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:39:38.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:39:38.159 [DEBUG] [Thread-187661] [transport.py] [_log()] userauth is OK
2025-11-24T09:39:38.159 [DEBUG] [Thread-187661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:39:38.159 [DEBUG] [Thread-187661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:39:38.159 [DEBUG] [Thread-187661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:39:38.159 [DEBUG] [Thread-187661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:39:38.189 [INFO] [Thread-187661] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:39:38.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:39:38.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:39:39.150 [DEBUG] [Thread-187661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:39:39.150 [DEBUG] [Thread-187661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:39:39.198 [DEBUG] [Thread-187661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:39:39.198 [DEBUG] [Thread-187661] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:39:39.206 [DEBUG] [Thread-187661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:39:39.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:39:39.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:39:39.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-11-24T09:39:39.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:39:39.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:39:39.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:39:39.237 [DEBUG] [Thread-187661] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:39:48.296 [DEBUG] [Thread-187663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:40:03.343 [DEBUG] [Thread-187664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:40:09.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:40:09.259 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:40:09.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-11-24T09:40:09.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 39, 42), 14.82, 36.91, 0.0, 28.3, 16.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:40:09.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:39:42
2025-11-24T09:40:10.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:40:10.228 [DEBUG] [Thread-187665] [transport.py] [_log()] starting thread (client mode): 0xd0702230
2025-11-24T09:40:10.228 [DEBUG] [Thread-187665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:40:10.250 [DEBUG] [Thread-187665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:40:10.250 [INFO] [Thread-187665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:40:10.253 [DEBUG] [Thread-187665] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:40:10.254 [DEBUG] [Thread-187665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:40:10.254 [DEBUG] [Thread-187665] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:40:10.254 [DEBUG] [Thread-187665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:40:10.254 [DEBUG] [Thread-187665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:40:10.254 [DEBUG] [Thread-187665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:40:10.254 [DEBUG] [Thread-187665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:40:10.254 [DEBUG] [Thread-187665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:40:10.254 [DEBUG] [Thread-187665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:40:10.254 [DEBUG] [Thread-187665] [transport.py] [_log()] client lang: <none>
2025-11-24T09:40:10.255 [DEBUG] [Thread-187665] [transport.py] [_log()] server lang: <none>
2025-11-24T09:40:10.255 [DEBUG] [Thread-187665] [transport.py] [_log()] kex follows: False
2025-11-24T09:40:10.255 [DEBUG] [Thread-187665] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:40:10.255 [DEBUG] [Thread-187665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:40:10.255 [DEBUG] [Thread-187665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:40:10.255 [DEBUG] [Thread-187665] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:40:10.255 [DEBUG] [Thread-187665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:40:10.255 [DEBUG] [Thread-187665] [transport.py] [_log()] Compression: none
2025-11-24T09:40:10.256 [DEBUG] [Thread-187665] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:40:10.276 [DEBUG] [Thread-187665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:40:10.276 [DEBUG] [Thread-187665] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:40:10.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:40:10.277 [DEBUG] [Thread-187665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:40:10.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:40:10.279 [DEBUG] [Thread-187665] [transport.py] [_log()] userauth is OK
2025-11-24T09:40:10.280 [DEBUG] [Thread-187665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:40:10.280 [DEBUG] [Thread-187665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:40:10.280 [DEBUG] [Thread-187665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:40:10.280 [DEBUG] [Thread-187665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:40:10.303 [INFO] [Thread-187665] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:40:10.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:40:13.780 [DEBUG] [Thread-187665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:40:13.780 [DEBUG] [Thread-187665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:40:13.780 [DEBUG] [Thread-187665] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:40:13.821 [DEBUG] [Thread-187665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:40:13.821 [DEBUG] [Thread-187665] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:40:13.824 [DEBUG] [Thread-187665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:40:13.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:40:13.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:40:13.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:40:13.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:40:13.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:40:13.859 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:40:13.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:40:13.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:40:13.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:40:13.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.319147 -999.00  +16.10  20.33     43   +3.60 1 1 1 1 1   888    0 16.43 172.52 ----- 20.3 20.3 174.6 25.9 22.3 -25.2 21.1 -23.9 20.2 -22.8 21.0 -24.4
2025-11-24T09:40:13.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:40:13.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:40:13.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.319147
2025-11-24T09:40:13.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:40:13.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:40:13.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:40:13.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:40:13.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:40:13.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:39:42', tmtdew=14.82, humidity=36.91, cloud=0.0, wind=28.3, temperature=16.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:39:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:40:13.862 [DEBUG] [Thread-187665] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:40:13.945 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:40:13.957 [DEBUG] [Thread-187668] [transport.py] [_log()] starting thread (client mode): 0xd0703160
2025-11-24T09:40:13.957 [DEBUG] [Thread-187668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:40:13.975 [DEBUG] [Thread-187668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:40:13.975 [INFO] [Thread-187668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:40:13.986 [DEBUG] [Thread-187668] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:40:13.986 [DEBUG] [Thread-187668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:40:13.986 [DEBUG] [Thread-187668] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:40:13.986 [DEBUG] [Thread-187668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:40:13.986 [DEBUG] [Thread-187668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:40:13.987 [DEBUG] [Thread-187668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:40:13.987 [DEBUG] [Thread-187668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:40:13.987 [DEBUG] [Thread-187668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:40:13.987 [DEBUG] [Thread-187668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:40:13.987 [DEBUG] [Thread-187668] [transport.py] [_log()] client lang: <none>
2025-11-24T09:40:13.987 [DEBUG] [Thread-187668] [transport.py] [_log()] server lang: <none>
2025-11-24T09:40:13.987 [DEBUG] [Thread-187668] [transport.py] [_log()] kex follows: False
2025-11-24T09:40:13.987 [DEBUG] [Thread-187668] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:40:13.988 [DEBUG] [Thread-187668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:40:13.988 [DEBUG] [Thread-187668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:40:13.988 [DEBUG] [Thread-187668] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:40:13.988 [DEBUG] [Thread-187668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:40:13.988 [DEBUG] [Thread-187668] [transport.py] [_log()] Compression: none
2025-11-24T09:40:13.989 [DEBUG] [Thread-187668] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:40:14.052 [DEBUG] [Thread-187668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:40:14.053 [DEBUG] [Thread-187668] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:40:14.054 [DEBUG] [Thread-187668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:40:14.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:40:14.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:40:14.112 [DEBUG] [Thread-187668] [transport.py] [_log()] userauth is OK
2025-11-24T09:40:14.112 [DEBUG] [Thread-187668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:40:14.112 [DEBUG] [Thread-187668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:40:14.112 [DEBUG] [Thread-187668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:40:14.113 [DEBUG] [Thread-187668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:40:14.137 [INFO] [Thread-187668] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:40: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-11-24T09:40:14.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:40:14.975 [DEBUG] [Thread-187668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:40:14.976 [DEBUG] [Thread-187668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:40:15.024 [DEBUG] [Thread-187668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:40:15.024 [DEBUG] [Thread-187668] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:40:15.033 [DEBUG] [Thread-187668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:40:15.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:40:15.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-11-24T09:40:15.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-11-24T09:40:15.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:40:15.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:40:15.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:40:15.066 [DEBUG] [Thread-187668] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:40:18.373 [DEBUG] [Thread-187670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:40:22.301 [DEBUG] [Thread-187671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:40:33.417 [DEBUG] [Thread-187672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:40:45.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:40:45.098 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:40:45.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:40:45.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 40, 14), 15.24, 35.88, 0.0, 28.62, 16.39, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:40:45.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:40:14
2025-11-24T09:40:46.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:40:46.214 [DEBUG] [Thread-187673] [transport.py] [_log()] starting thread (client mode): 0xd073bbb0
2025-11-24T09:40:46.214 [DEBUG] [Thread-187673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:40:46.233 [DEBUG] [Thread-187673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:40:46.233 [INFO] [Thread-187673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:40:46.237 [DEBUG] [Thread-187673] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:40:46.237 [DEBUG] [Thread-187673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:40:46.237 [DEBUG] [Thread-187673] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:40:46.237 [DEBUG] [Thread-187673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:40:46.237 [DEBUG] [Thread-187673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:40:46.237 [DEBUG] [Thread-187673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:40:46.237 [DEBUG] [Thread-187673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:40:46.237 [DEBUG] [Thread-187673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:40:46.237 [DEBUG] [Thread-187673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:40:46.238 [DEBUG] [Thread-187673] [transport.py] [_log()] client lang: <none>
2025-11-24T09:40:46.238 [DEBUG] [Thread-187673] [transport.py] [_log()] server lang: <none>
2025-11-24T09:40:46.238 [DEBUG] [Thread-187673] [transport.py] [_log()] kex follows: False
2025-11-24T09:40:46.238 [DEBUG] [Thread-187673] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:40:46.238 [DEBUG] [Thread-187673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:40:46.238 [DEBUG] [Thread-187673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:40:46.238 [DEBUG] [Thread-187673] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:40:46.238 [DEBUG] [Thread-187673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:40:46.238 [DEBUG] [Thread-187673] [transport.py] [_log()] Compression: none
2025-11-24T09:40:46.238 [DEBUG] [Thread-187673] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:40:46.247 [DEBUG] [Thread-187673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:40:46.248 [DEBUG] [Thread-187673] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:40:46.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:40:46.250 [DEBUG] [Thread-187673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:40:46.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:40:46.252 [DEBUG] [Thread-187673] [transport.py] [_log()] userauth is OK
2025-11-24T09:40:46.252 [DEBUG] [Thread-187673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:40:46.252 [DEBUG] [Thread-187673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:40:46.252 [DEBUG] [Thread-187673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:40:46.252 [DEBUG] [Thread-187673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:40:46.286 [INFO] [Thread-187673] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:40:46.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:40:46.897 [DEBUG] [Thread-187673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:40:46.897 [DEBUG] [Thread-187673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:40:46.897 [DEBUG] [Thread-187673] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:40:46.938 [DEBUG] [Thread-187673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:40:46.938 [DEBUG] [Thread-187673] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:40:46.940 [DEBUG] [Thread-187673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:40:46.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:40:46.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:40:46.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:40:46.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:40:46.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:40:46.954 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:40:46.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:40:46.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:40:46.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:40:46.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.319494 -999.00  +16.60  22.00     39   +2.80 1 1 1 1 1   888    0 16.81 185.41 ----- 22.0 22.0 182.4 31.0 22.2 -27.0 21.2 -25.7 20.2 -23.7 21.0 -25.9
2025-11-24T09:40:46.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:40:46.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:40:46.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.319494
2025-11-24T09:40:46.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:40:46.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:40:46.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:40:46.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:40:46.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:40:46.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:40:14', tmtdew=15.24, humidity=35.88, cloud=0.0, wind=28.62, temperature=16.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:40:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:40:46.955 [DEBUG] [Thread-187673] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:40:47.027 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:40:47.039 [DEBUG] [Thread-187676] [transport.py] [_log()] starting thread (client mode): 0xd0739120
2025-11-24T09:40:47.039 [DEBUG] [Thread-187676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:40:47.056 [DEBUG] [Thread-187676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:40:47.057 [INFO] [Thread-187676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] client lang: <none>
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] server lang: <none>
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] kex follows: False
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] Compression: none
2025-11-24T09:40:47.064 [DEBUG] [Thread-187676] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:40:47.126 [DEBUG] [Thread-187676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:40:47.126 [DEBUG] [Thread-187676] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:40:47.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:40:47.126 [DEBUG] [Thread-187676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:40:47.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:40:47.182 [DEBUG] [Thread-187676] [transport.py] [_log()] userauth is OK
2025-11-24T09:40:47.183 [DEBUG] [Thread-187676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:40:47.183 [DEBUG] [Thread-187676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:40:47.183 [DEBUG] [Thread-187676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:40:47.183 [DEBUG] [Thread-187676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:40:47.197 [INFO] [Thread-187676] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:40:47.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:40:47.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:40:48.119 [DEBUG] [Thread-187676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:40:48.119 [DEBUG] [Thread-187676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:40:48.167 [DEBUG] [Thread-187676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:40:48.167 [DEBUG] [Thread-187676] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:40:48.175 [DEBUG] [Thread-187676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:40:48.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:40:48.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-11-24T09:40:48.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-11-24T09:40:48.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:40:48.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:40:48.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:40:48.207 [DEBUG] [Thread-187676] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:40:48.449 [DEBUG] [Thread-187678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:41:03.486 [DEBUG] [Thread-187679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:41:18.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:41:18.229 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:41:18.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-11-24T09:41:18.516 [DEBUG] [Thread-187680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:41:18.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 40, 47), 15.09, 35.93, 0.0, 26.52, 15.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:41:18.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:40:47
2025-11-24T09:41:19.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:41:19.233 [DEBUG] [Thread-187681] [transport.py] [_log()] starting thread (client mode): 0xd0739360
2025-11-24T09:41:19.233 [DEBUG] [Thread-187681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:41:19.244 [DEBUG] [Thread-187681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:41:19.244 [INFO] [Thread-187681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:41:19.247 [DEBUG] [Thread-187681] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:41:19.247 [DEBUG] [Thread-187681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:41:19.247 [DEBUG] [Thread-187681] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] client lang: <none>
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] server lang: <none>
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] kex follows: False
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:41:19.248 [DEBUG] [Thread-187681] [transport.py] [_log()] Compression: none
2025-11-24T09:41:19.249 [DEBUG] [Thread-187681] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:41:19.258 [DEBUG] [Thread-187681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:41:19.259 [DEBUG] [Thread-187681] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:41:19.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:41:19.260 [DEBUG] [Thread-187681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:41:19.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:41:19.262 [DEBUG] [Thread-187681] [transport.py] [_log()] userauth is OK
2025-11-24T09:41:19.263 [DEBUG] [Thread-187681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:41:19.263 [DEBUG] [Thread-187681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:41:19.263 [DEBUG] [Thread-187681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:41:19.263 [DEBUG] [Thread-187681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:41:19.299 [INFO] [Thread-187681] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:41:19.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:41:19.940 [DEBUG] [Thread-187681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:41:19.940 [DEBUG] [Thread-187681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:41:19.940 [DEBUG] [Thread-187681] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:41:19.981 [DEBUG] [Thread-187681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:41:19.981 [DEBUG] [Thread-187681] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:41:19.983 [DEBUG] [Thread-187681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:41:19.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:41:19.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:41:19.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:41:19.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:41:19.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:41:20.000 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:41:20.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.319842 -999.00  +16.50  19.23     38   +2.30 1 1 1 1 1   888    0 16.85 186.96 ----- 19.2 19.2 182.8 27.7 22.3 -25.0 21.1 -27.8 20.2 -24.5 20.9 -25.1
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.319842
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:41:20.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:40:47', tmtdew=15.09, humidity=35.93, cloud=0.0, wind=26.52, temperature=15.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:40:34.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:41:20.001 [DEBUG] [Thread-187681] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:41:20.074 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:41:20.084 [DEBUG] [Thread-187684] [transport.py] [_log()] starting thread (client mode): 0xc9b83880
2025-11-24T09:41:20.084 [DEBUG] [Thread-187684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:41:20.098 [DEBUG] [Thread-187684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:41:20.098 [INFO] [Thread-187684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] client lang: <none>
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] server lang: <none>
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] kex follows: False
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] Compression: none
2025-11-24T09:41:20.105 [DEBUG] [Thread-187684] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:41:20.162 [DEBUG] [Thread-187684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:41:20.162 [DEBUG] [Thread-187684] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:41:20.162 [DEBUG] [Thread-187684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:41:20.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:41:20.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:41:20.222 [DEBUG] [Thread-187684] [transport.py] [_log()] userauth is OK
2025-11-24T09:41:20.223 [DEBUG] [Thread-187684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:41:20.223 [DEBUG] [Thread-187684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:41:20.223 [DEBUG] [Thread-187684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:41:20.223 [DEBUG] [Thread-187684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:41:20.236 [INFO] [Thread-187684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:41:20.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:41:20.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:41:21.082 [DEBUG] [Thread-187684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:41:21.082 [DEBUG] [Thread-187684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:41:21.137 [DEBUG] [Thread-187684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:41:21.137 [DEBUG] [Thread-187684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:41:21.149 [DEBUG] [Thread-187684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:41:21.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:41:21.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-11-24T09:41:21.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:41:21.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:41:21.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:41:21.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:41:21.205 [DEBUG] [Thread-187684] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:41:22.527 [DEBUG] [Thread-187686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:41:33.546 [DEBUG] [Thread-187687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:41:48.605 [DEBUG] [Thread-187688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:41:51.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:41:51.219 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:41:51.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-11-24T09:41:52.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 41, 19), 15.26, 35.5, 0.0, 26.96, 15.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:41:52.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:41:19
2025-11-24T09:41:52.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:41:52.305 [DEBUG] [Thread-187689] [transport.py] [_log()] starting thread (client mode): 0xc9b83b50
2025-11-24T09:41:52.305 [DEBUG] [Thread-187689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:41:52.325 [DEBUG] [Thread-187689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:41:52.325 [INFO] [Thread-187689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:41:52.328 [DEBUG] [Thread-187689] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] client lang: <none>
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] server lang: <none>
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] kex follows: False
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] Compression: none
2025-11-24T09:41:52.329 [DEBUG] [Thread-187689] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:41:52.346 [DEBUG] [Thread-187689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:41:52.346 [DEBUG] [Thread-187689] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:41:52.346 [DEBUG] [Thread-187689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:41:52.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:41:52.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:41:52.347 [DEBUG] [Thread-187689] [transport.py] [_log()] userauth is OK
2025-11-24T09:41:52.347 [DEBUG] [Thread-187689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:41:52.347 [DEBUG] [Thread-187689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:41:52.347 [DEBUG] [Thread-187689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:41:52.347 [DEBUG] [Thread-187689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:41:52.365 [INFO] [Thread-187689] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:41:52.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:41:52.998 [DEBUG] [Thread-187689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:41:52.998 [DEBUG] [Thread-187689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:41:52.998 [DEBUG] [Thread-187689] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:41:53.039 [DEBUG] [Thread-187689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:41:53.039 [DEBUG] [Thread-187689] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:41:53.042 [DEBUG] [Thread-187689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:41:53.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:41:53.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:41:53.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:41:53.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:41:53.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:41:53.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:41:53.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.320189 -999.00  +16.50  20.03     39   +2.50 1 1 1 1 1   888    0 17.85 210.85 ----- 20.0 20.0 154.2 31.2 22.4 -26.7 21.1 -24.7 20.3 -24.2 21.1 -25.3
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.320189
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:41:53.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:41:19', tmtdew=15.26, humidity=35.5, cloud=0.0, wind=26.96, temperature=15.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:41:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:41:53.061 [DEBUG] [Thread-187689] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:41:53.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:41:53.144 [DEBUG] [Thread-187692] [transport.py] [_log()] starting thread (client mode): 0xd7bc5600
2025-11-24T09:41:53.144 [DEBUG] [Thread-187692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:41:53.158 [DEBUG] [Thread-187692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:41:53.158 [INFO] [Thread-187692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] client lang: <none>
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] server lang: <none>
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] kex follows: False
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] Compression: none
2025-11-24T09:41:53.165 [DEBUG] [Thread-187692] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:41:53.225 [DEBUG] [Thread-187692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:41:53.225 [DEBUG] [Thread-187692] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:41:53.225 [DEBUG] [Thread-187692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:41:53.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:41:53.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:41:53.287 [DEBUG] [Thread-187692] [transport.py] [_log()] userauth is OK
2025-11-24T09:41:53.287 [DEBUG] [Thread-187692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:41:53.287 [DEBUG] [Thread-187692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:41:53.287 [DEBUG] [Thread-187692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:41:53.287 [DEBUG] [Thread-187692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:41:53.300 [INFO] [Thread-187692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:41:53.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:41:53.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:41:54.178 [DEBUG] [Thread-187692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:41:54.178 [DEBUG] [Thread-187692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:41:54.226 [DEBUG] [Thread-187692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:41:54.226 [DEBUG] [Thread-187692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:41:54.234 [DEBUG] [Thread-187692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:41:54.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:41:54.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-11-24T09:41: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') -> 00000000
2025-11-24T09:41:54.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:41:54.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:41:54.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:41:54.266 [DEBUG] [Thread-187692] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:42:03.640 [DEBUG] [Thread-187694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:42:18.687 [DEBUG] [Thread-187695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:42:22.562 [DEBUG] [Thread-187696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:42:24.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:42:24.289 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:42:24.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-11-24T09:42:25.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 41, 52), 15.81, 33.89, 0.0, 29.36, 16.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:42:25.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:41:52
2025-11-24T09:42:25.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:42:25.411 [DEBUG] [Thread-187697] [transport.py] [_log()] starting thread (client mode): 0xd7bc5a20
2025-11-24T09:42:25.411 [DEBUG] [Thread-187697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:42:25.431 [DEBUG] [Thread-187697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:42:25.431 [INFO] [Thread-187697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] client lang: <none>
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] server lang: <none>
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] kex follows: False
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:42:25.434 [DEBUG] [Thread-187697] [transport.py] [_log()] Compression: none
2025-11-24T09:42:25.435 [DEBUG] [Thread-187697] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:42:25.450 [DEBUG] [Thread-187697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:42:25.450 [DEBUG] [Thread-187697] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:42:25.450 [DEBUG] [Thread-187697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:42:25.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:42:25.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:42:25.492 [DEBUG] [Thread-187697] [transport.py] [_log()] userauth is OK
2025-11-24T09:42:25.492 [DEBUG] [Thread-187697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:42:25.492 [DEBUG] [Thread-187697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:42:25.492 [DEBUG] [Thread-187697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:42:25.492 [DEBUG] [Thread-187697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:42:25.518 [INFO] [Thread-187697] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:42:25.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:42:26.181 [DEBUG] [Thread-187697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:42:26.181 [DEBUG] [Thread-187697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:42:26.181 [DEBUG] [Thread-187697] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:42:26.222 [DEBUG] [Thread-187697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:42:26.222 [DEBUG] [Thread-187697] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:42:26.224 [DEBUG] [Thread-187697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:42:26.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:42:26.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:42:26.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:42:26.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:42:26.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:42:26.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:42:26.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:42:26.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:42:26.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:42:26.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.320536 -999.00  +16.30  23.32     38   +2.10 1 1 1 1 1   888    0 18.24 224.22 ----- 23.3 23.3 168.6 29.7 22.3 -26.7 21.4 -27.1 20.3 -24.8 21.1 -25.8
2025-11-24T09:42:26.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:42:26.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:42:26.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.320536
2025-11-24T09:42:26.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:42:26.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:42:26.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:42:26.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:42:26.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:42:26.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:41:52', tmtdew=15.81, humidity=33.89, cloud=0.0, wind=29.36, temperature=16.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:41:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:42:26.243 [DEBUG] [Thread-187697] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:42:26.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:42:26.325 [DEBUG] [Thread-187700] [transport.py] [_log()] starting thread (client mode): 0xd0702920
2025-11-24T09:42:26.326 [DEBUG] [Thread-187700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:42:26.340 [DEBUG] [Thread-187700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:42:26.340 [INFO] [Thread-187700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] client lang: <none>
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] server lang: <none>
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] kex follows: False
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] Compression: none
2025-11-24T09:42:26.348 [DEBUG] [Thread-187700] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:42:26.410 [DEBUG] [Thread-187700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:42:26.410 [DEBUG] [Thread-187700] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:42:26.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:42:26.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:42:26.411 [DEBUG] [Thread-187700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:42:26.467 [DEBUG] [Thread-187700] [transport.py] [_log()] userauth is OK
2025-11-24T09:42:26.467 [DEBUG] [Thread-187700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:42:26.467 [DEBUG] [Thread-187700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:42:26.467 [DEBUG] [Thread-187700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:42:26.467 [DEBUG] [Thread-187700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:42:26.485 [INFO] [Thread-187700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:42:26.485 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:42:26.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:42:27.349 [DEBUG] [Thread-187700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:42:27.349 [DEBUG] [Thread-187700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:42:27.397 [DEBUG] [Thread-187700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:42:27.397 [DEBUG] [Thread-187700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:42:27.405 [DEBUG] [Thread-187700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:42:27.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:42:27.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-11-24T09:42:27.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:42:27.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:42:27.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:42:27.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:42:27.440 [DEBUG] [Thread-187700] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:42:33.726 [DEBUG] [Thread-187702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:42:48.774 [DEBUG] [Thread-187703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:42:57.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:42:57.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:42:57.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-11-24T09:42:58.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 42, 24), 15.8, 33.87, 0.0, 30.52, 15.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:42:58.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:42:24
2025-11-24T09:42:58.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:42:58.647 [DEBUG] [Thread-187704] [transport.py] [_log()] starting thread (client mode): 0xd07039a0
2025-11-24T09:42:58.647 [DEBUG] [Thread-187704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:42:58.668 [DEBUG] [Thread-187704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:42:58.668 [INFO] [Thread-187704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:42:58.671 [DEBUG] [Thread-187704] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] client lang: <none>
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] server lang: <none>
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] kex follows: False
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] Compression: none
2025-11-24T09:42:58.672 [DEBUG] [Thread-187704] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:42:58.688 [DEBUG] [Thread-187704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:42:58.689 [DEBUG] [Thread-187704] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:42:58.689 [DEBUG] [Thread-187704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:42:58.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:42:58.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:42:58.690 [DEBUG] [Thread-187704] [transport.py] [_log()] userauth is OK
2025-11-24T09:42:58.690 [DEBUG] [Thread-187704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:42:58.690 [DEBUG] [Thread-187704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:42:58.690 [DEBUG] [Thread-187704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:42:58.690 [DEBUG] [Thread-187704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:42:58.705 [INFO] [Thread-187704] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:42:58.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:42:59.350 [DEBUG] [Thread-187704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:42:59.350 [DEBUG] [Thread-187704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:42:59.350 [DEBUG] [Thread-187704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:42:59.391 [DEBUG] [Thread-187704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:42:59.391 [DEBUG] [Thread-187704] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:42:59.393 [DEBUG] [Thread-187704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:42:59.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:42:59.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:42:59.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:42:59.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:42:59.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:42:59.410 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:42:59.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:42:59.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:42:59.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:42:59.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.321230 -999.00  +16.00  27.47     37   +1.60 1 1 1 1 1   888    0 18.41 218.51 ----- 27.5 27.5 138.2 34.0 22.3 -26.6 21.2 -26.8 20.3 -24.8 21.0 -27.2
2025-11-24T09:42:59.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:42:59.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:42:59.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.321230
2025-11-24T09:42:59.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:42:59.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:42:59.411 [DEBUG] [Thread-187704] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:42:59.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:42:59.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:42:59.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:42:59.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:42:24', tmtdew=15.8, humidity=33.87, cloud=0.0, wind=30.52, temperature=15.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:42:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:42:59.486 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:42:59.498 [DEBUG] [Thread-187707] [transport.py] [_log()] starting thread (client mode): 0xc9b82500
2025-11-24T09:42:59.498 [DEBUG] [Thread-187707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:42:59.514 [DEBUG] [Thread-187707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:42:59.514 [INFO] [Thread-187707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] client lang: <none>
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] server lang: <none>
2025-11-24T09:42:59.522 [DEBUG] [Thread-187707] [transport.py] [_log()] kex follows: False
2025-11-24T09:42:59.523 [DEBUG] [Thread-187707] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:42:59.523 [DEBUG] [Thread-187707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:42:59.523 [DEBUG] [Thread-187707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:42:59.523 [DEBUG] [Thread-187707] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:42:59.523 [DEBUG] [Thread-187707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:42:59.523 [DEBUG] [Thread-187707] [transport.py] [_log()] Compression: none
2025-11-24T09:42:59.523 [DEBUG] [Thread-187707] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:42:59.583 [DEBUG] [Thread-187707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:42:59.583 [DEBUG] [Thread-187707] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:42:59.583 [DEBUG] [Thread-187707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:42:59.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:42:59.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:42:59.642 [DEBUG] [Thread-187707] [transport.py] [_log()] userauth is OK
2025-11-24T09:42:59.642 [DEBUG] [Thread-187707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:42:59.642 [DEBUG] [Thread-187707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:42:59.642 [DEBUG] [Thread-187707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:42:59.642 [DEBUG] [Thread-187707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:42:59.658 [INFO] [Thread-187707] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:42:59.658 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:42:59.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:43:00.533 [DEBUG] [Thread-187707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:43:00.533 [DEBUG] [Thread-187707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:43:00.581 [DEBUG] [Thread-187707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:43:00.581 [DEBUG] [Thread-187707] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:43:00.589 [DEBUG] [Thread-187707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:43:00.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:43:00.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-11-24T09:43:00.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-11-24T09:43:00.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:43:00.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:43:00.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:43:00.620 [DEBUG] [Thread-187707] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:43:03.812 [DEBUG] [Thread-187709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:43:18.876 [DEBUG] [Thread-187710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:43:22.639 [DEBUG] [Thread-187711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:43:30.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:43:30.642 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:43:30.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:43:31.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 42, 56), 16.08, 33.44, 0.0, 29.17, 15.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:43:31.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:42:56
2025-11-24T09:43:31.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:43:31.786 [DEBUG] [Thread-187712] [transport.py] [_log()] starting thread (client mode): 0xc9b82260
2025-11-24T09:43:31.786 [DEBUG] [Thread-187712] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:43:31.806 [DEBUG] [Thread-187712] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:43:31.806 [INFO] [Thread-187712] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:43:31.809 [DEBUG] [Thread-187712] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] client lang: <none>
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] server lang: <none>
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] kex follows: False
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] Compression: none
2025-11-24T09:43:31.810 [DEBUG] [Thread-187712] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:43:31.828 [DEBUG] [Thread-187712] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:43:31.828 [DEBUG] [Thread-187712] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:43:31.828 [DEBUG] [Thread-187712] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:43:31.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:43:31.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:43:31.829 [DEBUG] [Thread-187712] [transport.py] [_log()] userauth is OK
2025-11-24T09:43:31.829 [DEBUG] [Thread-187712] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:43:31.829 [DEBUG] [Thread-187712] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:43:31.829 [DEBUG] [Thread-187712] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:43:31.829 [DEBUG] [Thread-187712] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:43:31.840 [INFO] [Thread-187712] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:43:31.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:43:32.446 [DEBUG] [Thread-187712] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:43:32.447 [DEBUG] [Thread-187712] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:43:32.447 [DEBUG] [Thread-187712] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:43:32.488 [DEBUG] [Thread-187712] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:43:32.488 [DEBUG] [Thread-187712] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:43:32.491 [DEBUG] [Thread-187712] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:43:32.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:43:32.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:43:32.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:43:32.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:43:32.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:43:32.518 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:43:32.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:43:32.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:43:32.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:43:32.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.321578 -999.00  +15.70  20.51     38   +1.50 1 1 1 1 1   888    0 18.65 227.46 ----- 20.5 20.5 136.8 27.5 22.3 -27.5 21.3 -25.3 20.3 -25.1 21.1 -25.0
2025-11-24T09:43:32.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:43:32.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:43:32.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.321578
2025-11-24T09:43:32.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:43:32.520 [DEBUG] [Thread-187712] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:43:32.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:43:32.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:43:32.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:43:32.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:43:32.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:42:56', tmtdew=16.08, humidity=33.44, cloud=0.0, wind=29.17, temperature=15.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:43:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:43:32.609 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:43:32.623 [DEBUG] [Thread-187715] [transport.py] [_log()] starting thread (client mode): 0xc9b81cf0
2025-11-24T09:43:32.623 [DEBUG] [Thread-187715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:43:32.642 [DEBUG] [Thread-187715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:43:32.642 [INFO] [Thread-187715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:43:32.649 [DEBUG] [Thread-187715] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] client lang: <none>
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] server lang: <none>
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] kex follows: False
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] Compression: none
2025-11-24T09:43:32.650 [DEBUG] [Thread-187715] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:43:32.706 [DEBUG] [Thread-187715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:43:32.706 [DEBUG] [Thread-187715] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:43:32.706 [DEBUG] [Thread-187715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:43:32.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:43:32.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:43:32.767 [DEBUG] [Thread-187715] [transport.py] [_log()] userauth is OK
2025-11-24T09:43:32.767 [DEBUG] [Thread-187715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:43:32.767 [DEBUG] [Thread-187715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:43:32.767 [DEBUG] [Thread-187715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:43:32.767 [DEBUG] [Thread-187715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:43:32.781 [INFO] [Thread-187715] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:43:32.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:43:32.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:43:33.643 [DEBUG] [Thread-187715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:43:33.643 [DEBUG] [Thread-187715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:43:33.698 [DEBUG] [Thread-187715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:43:33.698 [DEBUG] [Thread-187715] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:43:33.707 [DEBUG] [Thread-187715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:43:33.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:43:33.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:43:33.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:43:33.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:43:33.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:43:33.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:43:33.738 [DEBUG] [Thread-187715] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:43:33.910 [DEBUG] [Thread-187717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:43:48.945 [DEBUG] [Thread-187718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:44:03.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:44:03.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:44:03.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-11-24T09:44:03.986 [DEBUG] [Thread-187719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:44:04.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 43, 29), 16.4, 32.74, 0.0, 26.79, 15.94, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:44:04.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:43:29
2025-11-24T09:44:04.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:44:04.832 [DEBUG] [Thread-187720] [transport.py] [_log()] starting thread (client mode): 0xc9b81c60
2025-11-24T09:44:04.832 [DEBUG] [Thread-187720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:44:04.852 [DEBUG] [Thread-187720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:44:04.852 [INFO] [Thread-187720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] client lang: <none>
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] server lang: <none>
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] kex follows: False
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] Compression: none
2025-11-24T09:44:04.855 [DEBUG] [Thread-187720] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:44:04.871 [DEBUG] [Thread-187720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:44:04.871 [DEBUG] [Thread-187720] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:44:04.871 [DEBUG] [Thread-187720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:44:04.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:44:04.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:44:04.873 [DEBUG] [Thread-187720] [transport.py] [_log()] userauth is OK
2025-11-24T09:44:04.873 [DEBUG] [Thread-187720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:44:04.873 [DEBUG] [Thread-187720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:44:04.873 [DEBUG] [Thread-187720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:44:04.873 [DEBUG] [Thread-187720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:44:04.886 [INFO] [Thread-187720] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:44:04.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:44:05.542 [DEBUG] [Thread-187720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:44:05.543 [DEBUG] [Thread-187720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:44:05.543 [DEBUG] [Thread-187720] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:44:05.583 [DEBUG] [Thread-187720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:44:05.583 [DEBUG] [Thread-187720] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:44:05.586 [DEBUG] [Thread-187720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:44:05.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:44:05.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:44:05.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:44:05.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:44:05.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:44:05.608 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:44:05.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:44:05.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:44:05.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:44:05.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.321925 -999.00  +15.70  15.90     37   +1.40 1 1 1 1 1   888    0 18.38 221.33 ----- 15.9 15.9 146.2 29.4 22.4 -27.2 21.3 -24.7 20.3 -24.7 21.1 -25.2
2025-11-24T09:44:05.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:44:05.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:44:05.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.321925
2025-11-24T09:44:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:44:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:44:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:44:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:44:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:44:05.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:43:29', tmtdew=16.4, humidity=32.74, cloud=0.0, wind=26.79, temperature=15.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:43:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:44:05.617 [DEBUG] [Thread-187720] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:44:05.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:44:05.715 [DEBUG] [Thread-187723] [transport.py] [_log()] starting thread (client mode): 0xd0738460
2025-11-24T09:44:05.715 [DEBUG] [Thread-187723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:44:05.737 [DEBUG] [Thread-187723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:44:05.737 [INFO] [Thread-187723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:44:05.748 [DEBUG] [Thread-187723] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:44:05.748 [DEBUG] [Thread-187723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:44:05.748 [DEBUG] [Thread-187723] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:44:05.749 [DEBUG] [Thread-187723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:44:05.749 [DEBUG] [Thread-187723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:44:05.749 [DEBUG] [Thread-187723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:44:05.749 [DEBUG] [Thread-187723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:44:05.749 [DEBUG] [Thread-187723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:44:05.749 [DEBUG] [Thread-187723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:44:05.749 [DEBUG] [Thread-187723] [transport.py] [_log()] client lang: <none>
2025-11-24T09:44:05.749 [DEBUG] [Thread-187723] [transport.py] [_log()] server lang: <none>
2025-11-24T09:44:05.750 [DEBUG] [Thread-187723] [transport.py] [_log()] kex follows: False
2025-11-24T09:44:05.750 [DEBUG] [Thread-187723] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:44:05.750 [DEBUG] [Thread-187723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:44:05.750 [DEBUG] [Thread-187723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:44:05.750 [DEBUG] [Thread-187723] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:44:05.750 [DEBUG] [Thread-187723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:44:05.750 [DEBUG] [Thread-187723] [transport.py] [_log()] Compression: none
2025-11-24T09:44:05.750 [DEBUG] [Thread-187723] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:44:05.810 [DEBUG] [Thread-187723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:44:05.811 [DEBUG] [Thread-187723] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:44:05.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:44:05.812 [DEBUG] [Thread-187723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:44:05.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:44:05.871 [DEBUG] [Thread-187723] [transport.py] [_log()] userauth is OK
2025-11-24T09:44:05.871 [DEBUG] [Thread-187723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:44:05.872 [DEBUG] [Thread-187723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:44:05.872 [DEBUG] [Thread-187723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:44:05.872 [DEBUG] [Thread-187723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:44:05.891 [INFO] [Thread-187723] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:44:05.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:44:05.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:44:06.770 [DEBUG] [Thread-187723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:44:06.770 [DEBUG] [Thread-187723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:44:06.818 [DEBUG] [Thread-187723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:44:06.818 [DEBUG] [Thread-187723] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:44:06.828 [DEBUG] [Thread-187723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:44:06.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:44:06.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-11-24T09:44:06.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-11-24T09:44:06.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:44:06.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:44:06.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:44:06.865 [DEBUG] [Thread-187723] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:44:19.016 [DEBUG] [Thread-187725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:44:22.689 [DEBUG] [Thread-187726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:44:34.076 [DEBUG] [Thread-187727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:44:36.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:44:36.887 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:44:36.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-11-24T09:44:37.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 44, 1), 16.68, 32.15, 0.0, 27.72, 15.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:44:37.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:44:01
2025-11-24T09:44:37.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:44:37.944 [DEBUG] [Thread-187728] [transport.py] [_log()] starting thread (client mode): 0xd31b28c0
2025-11-24T09:44:37.944 [DEBUG] [Thread-187728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:44:37.964 [DEBUG] [Thread-187728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:44:37.964 [INFO] [Thread-187728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] client lang: <none>
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] server lang: <none>
2025-11-24T09:44:37.967 [DEBUG] [Thread-187728] [transport.py] [_log()] kex follows: False
2025-11-24T09:44:37.968 [DEBUG] [Thread-187728] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:44:37.968 [DEBUG] [Thread-187728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:44:37.968 [DEBUG] [Thread-187728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:44:37.968 [DEBUG] [Thread-187728] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:44:37.968 [DEBUG] [Thread-187728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:44:37.968 [DEBUG] [Thread-187728] [transport.py] [_log()] Compression: none
2025-11-24T09:44:37.968 [DEBUG] [Thread-187728] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:44:37.985 [DEBUG] [Thread-187728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:44:37.986 [DEBUG] [Thread-187728] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:44:37.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:44:37.987 [DEBUG] [Thread-187728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:44:37.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:44:37.988 [DEBUG] [Thread-187728] [transport.py] [_log()] userauth is OK
2025-11-24T09:44:37.989 [DEBUG] [Thread-187728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:44:37.989 [DEBUG] [Thread-187728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:44:37.989 [DEBUG] [Thread-187728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:44:37.989 [DEBUG] [Thread-187728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:44:38.013 [INFO] [Thread-187728] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:44:38.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:44:38.625 [DEBUG] [Thread-187728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:44:38.625 [DEBUG] [Thread-187728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:44:38.625 [DEBUG] [Thread-187728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:44:38.666 [DEBUG] [Thread-187728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:44:38.666 [DEBUG] [Thread-187728] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:44:38.669 [DEBUG] [Thread-187728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:44:38.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:44:38.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:44:38.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:44:38.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:44:38.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:44:38.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:44:38.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:44:38.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:44:38.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:44:38.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.322272 -999.00  +16.00  21.37     37   +1.60 1 1 1 1 1   888    0 19.20 233.55 ----- 21.4 21.4 168.0 31.8 22.4 -26.6 21.4 -25.2 20.3 -25.3 21.1 -25.4
2025-11-24T09:44:38.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:44:38.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:44:38.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.322272
2025-11-24T09:44:38.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:44:38.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:44:38.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:44:38.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:44:38.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:44:38.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:44:01', tmtdew=16.68, humidity=32.15, cloud=0.0, wind=27.72, temperature=15.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:44:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:44:38.697 [DEBUG] [Thread-187728] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:44:38.769 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:44:38.781 [DEBUG] [Thread-187731] [transport.py] [_log()] starting thread (client mode): 0xd0700130
2025-11-24T09:44:38.781 [DEBUG] [Thread-187731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:44:38.797 [DEBUG] [Thread-187731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:44:38.797 [INFO] [Thread-187731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:44:38.804 [DEBUG] [Thread-187731] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:44:38.804 [DEBUG] [Thread-187731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:44:38.804 [DEBUG] [Thread-187731] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:44:38.804 [DEBUG] [Thread-187731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:44:38.804 [DEBUG] [Thread-187731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:44:38.804 [DEBUG] [Thread-187731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:44:38.804 [DEBUG] [Thread-187731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:44:38.804 [DEBUG] [Thread-187731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] client lang: <none>
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] server lang: <none>
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] kex follows: False
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] Compression: none
2025-11-24T09:44:38.805 [DEBUG] [Thread-187731] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:44:38.863 [DEBUG] [Thread-187731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:44:38.863 [DEBUG] [Thread-187731] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:44:38.863 [DEBUG] [Thread-187731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:44:38.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:44:38.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:44:38.925 [DEBUG] [Thread-187731] [transport.py] [_log()] userauth is OK
2025-11-24T09:44:38.925 [DEBUG] [Thread-187731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:44:38.925 [DEBUG] [Thread-187731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:44:38.925 [DEBUG] [Thread-187731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:44:38.925 [DEBUG] [Thread-187731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:44:38.939 [INFO] [Thread-187731] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:44:38.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:44:38.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:44:39.837 [DEBUG] [Thread-187731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:44:39.837 [DEBUG] [Thread-187731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:44:39.885 [DEBUG] [Thread-187731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:44:39.885 [DEBUG] [Thread-187731] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:44:39.894 [DEBUG] [Thread-187731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:44:39.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:44:39.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-11-24T09:44:39.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-11-24T09:44:39.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:44:39.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:44:39.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:44:39.931 [DEBUG] [Thread-187731] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:44:49.111 [DEBUG] [Thread-187733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:45:04.160 [DEBUG] [Thread-187734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:45:09.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:45:09.953 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:45:09.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-11-24T09:45:10.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 44, 35), 16.7, 31.9, 0.0, 23.8, 16.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:45:10.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:44:35
2025-11-24T09:45:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:45:11.110 [DEBUG] [Thread-187735] [transport.py] [_log()] starting thread (client mode): 0xd0703850
2025-11-24T09:45:11.110 [DEBUG] [Thread-187735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:45:11.125 [DEBUG] [Thread-187735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:45:11.125 [INFO] [Thread-187735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] client lang: <none>
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] server lang: <none>
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] kex follows: False
2025-11-24T09:45:11.127 [DEBUG] [Thread-187735] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:45:11.128 [DEBUG] [Thread-187735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:45:11.128 [DEBUG] [Thread-187735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:45:11.128 [DEBUG] [Thread-187735] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:45:11.128 [DEBUG] [Thread-187735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:45:11.128 [DEBUG] [Thread-187735] [transport.py] [_log()] Compression: none
2025-11-24T09:45:11.128 [DEBUG] [Thread-187735] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:45:11.144 [DEBUG] [Thread-187735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:45:11.146 [DEBUG] [Thread-187735] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:45:11.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:45:11.149 [DEBUG] [Thread-187735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:45:11.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:45:11.152 [DEBUG] [Thread-187735] [transport.py] [_log()] userauth is OK
2025-11-24T09:45:11.152 [DEBUG] [Thread-187735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:45:11.152 [DEBUG] [Thread-187735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:45:11.152 [DEBUG] [Thread-187735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:45:11.152 [DEBUG] [Thread-187735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:45:11.189 [INFO] [Thread-187735] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:45:11.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:45:12.436 [DEBUG] [Thread-187735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:45:12.436 [DEBUG] [Thread-187735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:45:12.437 [DEBUG] [Thread-187735] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:45:12.477 [DEBUG] [Thread-187735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:45:12.477 [DEBUG] [Thread-187735] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:45:12.481 [DEBUG] [Thread-187735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:45:12.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:45:12.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:45:12.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:45:12.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:45:12.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:45:12.516 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:45:12.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:45:12.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:45:12.520 [DEBUG] [Thread-187735] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:45:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:45:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.322619 -999.00  +16.10  18.83     38   +2.10 1 1 1 1 1   888    0 18.63 217.58 ----- 18.8 18.8 189.4 29.9 22.4 -26.6 21.1 -28.7 20.4 -25.0 21.1 -26.4
2025-11-24T09:45:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:45:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:45:12.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.322619
2025-11-24T09:45:12.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:45:12.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:45:12.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:45:12.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:45:12.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:45:12.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:44:35', tmtdew=16.7, humidity=31.9, cloud=0.0, wind=23.8, temperature=16.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:44:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:45:12.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:45:12.645 [DEBUG] [Thread-187738] [transport.py] [_log()] starting thread (client mode): 0xd07003a0
2025-11-24T09:45:12.645 [DEBUG] [Thread-187738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:45:12.661 [DEBUG] [Thread-187738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:45:12.661 [INFO] [Thread-187738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:45:12.669 [DEBUG] [Thread-187738] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:45:12.669 [DEBUG] [Thread-187738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:45:12.669 [DEBUG] [Thread-187738] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:45:12.669 [DEBUG] [Thread-187738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:45:12.669 [DEBUG] [Thread-187738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:45:12.669 [DEBUG] [Thread-187738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:45:12.669 [DEBUG] [Thread-187738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:45:12.669 [DEBUG] [Thread-187738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] client lang: <none>
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] server lang: <none>
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] kex follows: False
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] Compression: none
2025-11-24T09:45:12.670 [DEBUG] [Thread-187738] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:45:12.727 [DEBUG] [Thread-187738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:45:12.728 [DEBUG] [Thread-187738] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:45:12.729 [DEBUG] [Thread-187738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:45:12.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:45:12.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:45:12.784 [DEBUG] [Thread-187738] [transport.py] [_log()] userauth is OK
2025-11-24T09:45:12.785 [DEBUG] [Thread-187738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:45:12.786 [DEBUG] [Thread-187738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:45:12.787 [DEBUG] [Thread-187738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:45:12.787 [DEBUG] [Thread-187738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:45:12.806 [INFO] [Thread-187738] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:45:12.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:45:12.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:45:13.698 [DEBUG] [Thread-187738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:45:13.698 [DEBUG] [Thread-187738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:45:13.746 [DEBUG] [Thread-187738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:45:13.747 [DEBUG] [Thread-187738] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:45:13.756 [DEBUG] [Thread-187738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:45:13.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:45:13.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-11-24T09:45: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') -> 00000000
2025-11-24T09:45:13.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:45:13.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:45:13.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:45:13.796 [DEBUG] [Thread-187738] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:45:19.196 [DEBUG] [Thread-187740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:45:24.404 [DEBUG] [Thread-187741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:45:34.343 [DEBUG] [Thread-187742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:45:43.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:45:43.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:45:43.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-11-24T09:45:44.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 45, 40), 16.67, 32.16, 0.0, 32.47, 16.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:45:44.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:45:40
2025-11-24T09:45:44.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:45:44.912 [DEBUG] [Thread-187743] [transport.py] [_log()] starting thread (client mode): 0xc9b81cc0
2025-11-24T09:45:44.912 [DEBUG] [Thread-187743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:45:44.923 [DEBUG] [Thread-187743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:45:44.923 [INFO] [Thread-187743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:45:44.926 [DEBUG] [Thread-187743] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:45:44.926 [DEBUG] [Thread-187743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:45:44.927 [DEBUG] [Thread-187743] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:45:44.927 [DEBUG] [Thread-187743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:45:44.927 [DEBUG] [Thread-187743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:45:44.927 [DEBUG] [Thread-187743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:45:44.927 [DEBUG] [Thread-187743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:45:44.927 [DEBUG] [Thread-187743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:45:44.927 [DEBUG] [Thread-187743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:45:44.927 [DEBUG] [Thread-187743] [transport.py] [_log()] client lang: <none>
2025-11-24T09:45:44.928 [DEBUG] [Thread-187743] [transport.py] [_log()] server lang: <none>
2025-11-24T09:45:44.928 [DEBUG] [Thread-187743] [transport.py] [_log()] kex follows: False
2025-11-24T09:45:44.928 [DEBUG] [Thread-187743] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:45:44.928 [DEBUG] [Thread-187743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:45:44.928 [DEBUG] [Thread-187743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:45:44.929 [DEBUG] [Thread-187743] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:45:44.929 [DEBUG] [Thread-187743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:45:44.929 [DEBUG] [Thread-187743] [transport.py] [_log()] Compression: none
2025-11-24T09:45:44.929 [DEBUG] [Thread-187743] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:45:44.948 [DEBUG] [Thread-187743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:45:44.949 [DEBUG] [Thread-187743] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:45:44.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:45:44.950 [DEBUG] [Thread-187743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:45:44.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:45:44.993 [DEBUG] [Thread-187743] [transport.py] [_log()] userauth is OK
2025-11-24T09:45:44.993 [DEBUG] [Thread-187743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:45:44.993 [DEBUG] [Thread-187743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:45:44.993 [DEBUG] [Thread-187743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:45:44.993 [DEBUG] [Thread-187743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:45:45.029 [INFO] [Thread-187743] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:45:45.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:45:45.647 [DEBUG] [Thread-187743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:45:45.647 [DEBUG] [Thread-187743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:45:45.647 [DEBUG] [Thread-187743] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:45:45.687 [DEBUG] [Thread-187743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:45:45.687 [DEBUG] [Thread-187743] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:45:45.689 [DEBUG] [Thread-187743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:45:45.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:45:45.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:45:45.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:45:45.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:45:45.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:45:45.709 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:45:45.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:45:45.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.322966 -999.00  +16.00  23.29     39   +2.10 1 1 1 1 1   888    0 18.62 222.21 ----- 23.3 23.3 195.6 34.3 22.4 -26.4 21.1 -28.2 20.4 -25.1 21.0 -26.8
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.322966
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:45:45.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:45:40', tmtdew=16.67, humidity=32.16, cloud=0.0, wind=32.47, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:45:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:45:45.711 [DEBUG] [Thread-187743] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:45:45.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:45:45.795 [DEBUG] [Thread-187746] [transport.py] [_log()] starting thread (client mode): 0xd31b3eb0
2025-11-24T09:45:45.795 [DEBUG] [Thread-187746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:45:45.811 [DEBUG] [Thread-187746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:45:45.811 [INFO] [Thread-187746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:45:45.818 [DEBUG] [Thread-187746] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:45:45.818 [DEBUG] [Thread-187746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:45:45.818 [DEBUG] [Thread-187746] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] client lang: <none>
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] server lang: <none>
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] kex follows: False
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] Compression: none
2025-11-24T09:45:45.819 [DEBUG] [Thread-187746] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:45:45.874 [DEBUG] [Thread-187746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:45:45.874 [DEBUG] [Thread-187746] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:45:45.874 [DEBUG] [Thread-187746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:45:45.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:45:45.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:45:45.931 [DEBUG] [Thread-187746] [transport.py] [_log()] userauth is OK
2025-11-24T09:45:45.931 [DEBUG] [Thread-187746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:45:45.931 [DEBUG] [Thread-187746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:45:45.931 [DEBUG] [Thread-187746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:45:45.931 [DEBUG] [Thread-187746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:45:45.945 [INFO] [Thread-187746] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:45:45.945 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:45:45.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:45:46.821 [DEBUG] [Thread-187746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:45:46.821 [DEBUG] [Thread-187746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:45:46.868 [DEBUG] [Thread-187746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:45:46.869 [DEBUG] [Thread-187746] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:45:46.878 [DEBUG] [Thread-187746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:45:46.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:45:46.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:45:46.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-11-24T09:45:46.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:45:46.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:45:46.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:45:46.929 [DEBUG] [Thread-187746] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:45:49.373 [DEBUG] [Thread-187748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:46:04.416 [DEBUG] [Thread-187749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:46:16.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:46:16.951 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:46:16.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-11-24T09:46:17.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 46, 12), 17.0, 31.47, 0.0, 33.24, 16.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:46:17.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:46:12
2025-11-24T09:46:17.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:46:17.937 [DEBUG] [Thread-187750] [transport.py] [_log()] starting thread (client mode): 0xd0738460
2025-11-24T09:46:17.937 [DEBUG] [Thread-187750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:46:17.958 [DEBUG] [Thread-187750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:46:17.958 [INFO] [Thread-187750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] client lang: <none>
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] server lang: <none>
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] kex follows: False
2025-11-24T09:46:17.961 [DEBUG] [Thread-187750] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:46:17.962 [DEBUG] [Thread-187750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:46:17.962 [DEBUG] [Thread-187750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:46:17.962 [DEBUG] [Thread-187750] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:46:17.962 [DEBUG] [Thread-187750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:46:17.962 [DEBUG] [Thread-187750] [transport.py] [_log()] Compression: none
2025-11-24T09:46:17.962 [DEBUG] [Thread-187750] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:46:17.978 [DEBUG] [Thread-187750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:46:17.978 [DEBUG] [Thread-187750] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:46:17.978 [DEBUG] [Thread-187750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:46:17.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:46:17.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:46:17.979 [DEBUG] [Thread-187750] [transport.py] [_log()] userauth is OK
2025-11-24T09:46:17.979 [DEBUG] [Thread-187750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:46:17.979 [DEBUG] [Thread-187750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:46:17.979 [DEBUG] [Thread-187750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:46:17.979 [DEBUG] [Thread-187750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:46:17.992 [INFO] [Thread-187750] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:46:17.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:46:18.609 [DEBUG] [Thread-187750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:46:18.609 [DEBUG] [Thread-187750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:46:18.610 [DEBUG] [Thread-187750] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:46:18.651 [DEBUG] [Thread-187750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:46:18.651 [DEBUG] [Thread-187750] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:46:18.654 [DEBUG] [Thread-187750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:46:18.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:46:18.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:46:18.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:46:18.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:46:18.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:46:18.681 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:46:18.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:46:18.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:46:18.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:46:18.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.323314 -999.00  +16.40  22.56     37   +2.00 1 1 1 1 1   888    0 18.95 225.56 ----- 22.6 22.6 151.2 29.9 22.3 -26.2 21.2 -24.0 20.4 -23.6 21.2 -25.0
2025-11-24T09:46:18.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:46:18.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:46:18.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.323314
2025-11-24T09:46:18.690 [DEBUG] [Thread-187750] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:46:18.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:46:18.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:46:18.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:46:18.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:46:18.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:46:18.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:46:12', tmtdew=17.0, humidity=31.47, cloud=0.0, wind=33.24, temperature=16.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:45:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:46:18.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:46:18.790 [DEBUG] [Thread-187753] [transport.py] [_log()] starting thread (client mode): 0xd31b0340
2025-11-24T09:46:18.791 [DEBUG] [Thread-187753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:46:18.806 [DEBUG] [Thread-187753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:46:18.806 [INFO] [Thread-187753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:46:18.818 [DEBUG] [Thread-187753] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:46:18.818 [DEBUG] [Thread-187753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:46:18.818 [DEBUG] [Thread-187753] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:46:18.818 [DEBUG] [Thread-187753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:46:18.818 [DEBUG] [Thread-187753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:46:18.818 [DEBUG] [Thread-187753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:46:18.819 [DEBUG] [Thread-187753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:46:18.819 [DEBUG] [Thread-187753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:46:18.819 [DEBUG] [Thread-187753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:46:18.819 [DEBUG] [Thread-187753] [transport.py] [_log()] client lang: <none>
2025-11-24T09:46:18.819 [DEBUG] [Thread-187753] [transport.py] [_log()] server lang: <none>
2025-11-24T09:46:18.819 [DEBUG] [Thread-187753] [transport.py] [_log()] kex follows: False
2025-11-24T09:46:18.819 [DEBUG] [Thread-187753] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:46:18.819 [DEBUG] [Thread-187753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:46:18.820 [DEBUG] [Thread-187753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:46:18.820 [DEBUG] [Thread-187753] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:46:18.820 [DEBUG] [Thread-187753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:46:18.820 [DEBUG] [Thread-187753] [transport.py] [_log()] Compression: none
2025-11-24T09:46:18.820 [DEBUG] [Thread-187753] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:46:18.876 [DEBUG] [Thread-187753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:46:18.877 [DEBUG] [Thread-187753] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:46:18.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:46:18.879 [DEBUG] [Thread-187753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:46:18.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:46:18.936 [DEBUG] [Thread-187753] [transport.py] [_log()] userauth is OK
2025-11-24T09:46:18.936 [DEBUG] [Thread-187753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:46:18.936 [DEBUG] [Thread-187753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:46:18.936 [DEBUG] [Thread-187753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:46:18.936 [DEBUG] [Thread-187753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:46:18.958 [INFO] [Thread-187753] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:46:18.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:46:18.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:46:19.463 [DEBUG] [Thread-187755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:46:19.816 [DEBUG] [Thread-187753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:46:19.817 [DEBUG] [Thread-187753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:46:19.868 [DEBUG] [Thread-187753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:46:19.868 [DEBUG] [Thread-187753] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:46:19.878 [DEBUG] [Thread-187753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:46:19.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:46:19.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:46:19.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:46:19.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:46:19.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:46:19.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:46:19.916 [DEBUG] [Thread-187753] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:46:24.658 [DEBUG] [Thread-187756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:46:34.516 [DEBUG] [Thread-187757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:46:49.545 [DEBUG] [Thread-187758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:46:49.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:46:49.914 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:46:49.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-11-24T09:46:50.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 46, 44), 16.93, 31.85, 0.0, 31.09, 16.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:46:50.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:46:44
2025-11-24T09:46:50.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:46:50.882 [DEBUG] [Thread-187759] [transport.py] [_log()] starting thread (client mode): 0xd31b10c0
2025-11-24T09:46:50.882 [DEBUG] [Thread-187759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:46:50.901 [DEBUG] [Thread-187759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:46:50.901 [INFO] [Thread-187759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:46:50.913 [DEBUG] [Thread-187759] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:46:50.913 [DEBUG] [Thread-187759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] client lang: <none>
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] server lang: <none>
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] kex follows: False
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] Compression: none
2025-11-24T09:46:50.914 [DEBUG] [Thread-187759] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:46:50.932 [DEBUG] [Thread-187759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:46:50.932 [DEBUG] [Thread-187759] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:46:50.932 [DEBUG] [Thread-187759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:46:50.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:46:50.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:46:50.932 [DEBUG] [Thread-187759] [transport.py] [_log()] userauth is OK
2025-11-24T09:46:50.932 [DEBUG] [Thread-187759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:46:50.932 [DEBUG] [Thread-187759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:46:50.932 [DEBUG] [Thread-187759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:46:50.932 [DEBUG] [Thread-187759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:46:50.942 [INFO] [Thread-187759] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:46:50.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:46:51.566 [DEBUG] [Thread-187759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:46:51.566 [DEBUG] [Thread-187759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:46:51.567 [DEBUG] [Thread-187759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:46:51.607 [DEBUG] [Thread-187759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:46:51.607 [DEBUG] [Thread-187759] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:46:51.609 [DEBUG] [Thread-187759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:46:51.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:46:51.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:46:51.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:46:51.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:46:51.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:46:51.629 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:46:51.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.323661 -999.00  +16.50  28.74     36   +1.50 1 1 1 1 1   888    0 18.91 224.71 ----- 28.7 28.7 170.8 32.9 22.4 -26.3 21.4 -25.1 20.5 -24.1 21.2 -25.9
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.323661
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:46:51.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:46:44', tmtdew=16.93, humidity=31.85, cloud=0.0, wind=31.09, temperature=16.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:46:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:46:51.630 [DEBUG] [Thread-187759] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:46:51.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:46:51.712 [DEBUG] [Thread-187762] [transport.py] [_log()] starting thread (client mode): 0xd31cc9d0
2025-11-24T09:46:51.712 [DEBUG] [Thread-187762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:46:51.726 [DEBUG] [Thread-187762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:46:51.726 [INFO] [Thread-187762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] client lang: <none>
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] server lang: <none>
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] kex follows: False
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] Compression: none
2025-11-24T09:46:51.734 [DEBUG] [Thread-187762] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:46:51.790 [DEBUG] [Thread-187762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:46:51.790 [DEBUG] [Thread-187762] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:46:51.790 [DEBUG] [Thread-187762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:46:51.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:46:51.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:46:51.847 [DEBUG] [Thread-187762] [transport.py] [_log()] userauth is OK
2025-11-24T09:46:51.847 [DEBUG] [Thread-187762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:46:51.847 [DEBUG] [Thread-187762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:46:51.847 [DEBUG] [Thread-187762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:46:51.847 [DEBUG] [Thread-187762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:46:51.867 [INFO] [Thread-187762] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:46:51.868 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:46:51.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:46:52.746 [DEBUG] [Thread-187762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:46:52.746 [DEBUG] [Thread-187762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:46:52.795 [DEBUG] [Thread-187762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:46:52.795 [DEBUG] [Thread-187762] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:46:52.804 [DEBUG] [Thread-187762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:46:52.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:46:52.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-11-24T09:46:52.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-11-24T09:46:52.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:46:52.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:46:52.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:46:52.841 [DEBUG] [Thread-187762] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:47:04.580 [DEBUG] [Thread-187764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:47:19.628 [DEBUG] [Thread-187765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:47:22.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:47:22.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:47:22.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-11-24T09:47:23.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 47, 16), 16.76, 32.21, 0.0, 31.99, 16.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:47:23.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:47:16
2025-11-24T09:47:23.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:47:23.977 [DEBUG] [Thread-187766] [transport.py] [_log()] starting thread (client mode): 0xd0701e40
2025-11-24T09:47:23.977 [DEBUG] [Thread-187766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:47:23.997 [DEBUG] [Thread-187766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:47:23.997 [INFO] [Thread-187766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:47:23.998 [DEBUG] [Thread-187766] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:47:23.998 [DEBUG] [Thread-187766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:47:23.998 [DEBUG] [Thread-187766] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:47:23.998 [DEBUG] [Thread-187766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:47:23.998 [DEBUG] [Thread-187766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:47:23.998 [DEBUG] [Thread-187766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:47:23.998 [DEBUG] [Thread-187766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:47:23.998 [DEBUG] [Thread-187766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:47:23.998 [DEBUG] [Thread-187766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:47:23.998 [DEBUG] [Thread-187766] [transport.py] [_log()] client lang: <none>
2025-11-24T09:47:23.999 [DEBUG] [Thread-187766] [transport.py] [_log()] server lang: <none>
2025-11-24T09:47:23.999 [DEBUG] [Thread-187766] [transport.py] [_log()] kex follows: False
2025-11-24T09:47:23.999 [DEBUG] [Thread-187766] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:47:23.999 [DEBUG] [Thread-187766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:47:23.999 [DEBUG] [Thread-187766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:47:23.999 [DEBUG] [Thread-187766] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:47:23.999 [DEBUG] [Thread-187766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:47:23.999 [DEBUG] [Thread-187766] [transport.py] [_log()] Compression: none
2025-11-24T09:47:23.999 [DEBUG] [Thread-187766] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:47:24.006 [DEBUG] [Thread-187766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:47:24.006 [DEBUG] [Thread-187766] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:47:24.006 [DEBUG] [Thread-187766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:47:24.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:47:24.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:47:24.007 [DEBUG] [Thread-187766] [transport.py] [_log()] userauth is OK
2025-11-24T09:47:24.007 [DEBUG] [Thread-187766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:47:24.007 [DEBUG] [Thread-187766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:47:24.007 [DEBUG] [Thread-187766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:47:24.007 [DEBUG] [Thread-187766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:47:24.016 [INFO] [Thread-187766] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:47:24.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:47:24.635 [DEBUG] [Thread-187766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:47:24.636 [DEBUG] [Thread-187766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:47:24.636 [DEBUG] [Thread-187766] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:47:24.677 [DEBUG] [Thread-187766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:47:24.677 [DEBUG] [Thread-187766] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:47:24.679 [DEBUG] [Thread-187766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:47:24.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:47:24.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:47:24.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:47:24.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:47:24.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:47:24.697 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:47:24.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:47:24.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:47:24.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:47:24.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.324355 -999.00  +16.40  25.24     38   +2.00 1 1 1 1 1   888    0 19.05 219.72 ----- 25.2 25.2 166.6 30.9 22.4 -26.4 21.4 -24.8 20.5 -24.4 21.3 -26.4
2025-11-24T09:47:24.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:47:24.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:47:24.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.324355
2025-11-24T09:47:24.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:47:24.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:47:24.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:47:24.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:47:24.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:47:24.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:47:16', tmtdew=16.76, humidity=32.21, cloud=0.0, wind=31.99, temperature=16.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:47:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:47:24.698 [DEBUG] [Thread-187766] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:47:24.720 [DEBUG] [Thread-187769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:47:24.772 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:47:24.784 [DEBUG] [Thread-187770] [transport.py] [_log()] starting thread (client mode): 0xd31cc400
2025-11-24T09:47:24.784 [DEBUG] [Thread-187770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:47:24.800 [DEBUG] [Thread-187770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:47:24.801 [INFO] [Thread-187770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] client lang: <none>
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] server lang: <none>
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] kex follows: False
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:47:24.808 [DEBUG] [Thread-187770] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:47:24.809 [DEBUG] [Thread-187770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:47:24.809 [DEBUG] [Thread-187770] [transport.py] [_log()] Compression: none
2025-11-24T09:47:24.809 [DEBUG] [Thread-187770] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:47:24.866 [DEBUG] [Thread-187770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:47:24.866 [DEBUG] [Thread-187770] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:47:24.866 [DEBUG] [Thread-187770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:47:24.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:47:24.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:47:24.922 [DEBUG] [Thread-187770] [transport.py] [_log()] userauth is OK
2025-11-24T09:47:24.922 [DEBUG] [Thread-187770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:47:24.922 [DEBUG] [Thread-187770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:47:24.922 [DEBUG] [Thread-187770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:47:24.922 [DEBUG] [Thread-187770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:47:24.941 [INFO] [Thread-187770] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:47:24.941 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:47:24.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:47:25.828 [DEBUG] [Thread-187770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:47:25.828 [DEBUG] [Thread-187770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:47:25.876 [DEBUG] [Thread-187770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:47:25.876 [DEBUG] [Thread-187770] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:47:25.884 [DEBUG] [Thread-187770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:47:25.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:47:25.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-11-24T09:47:25.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-11-24T09:47:25.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:47:25.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:47:25.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:47:25.916 [DEBUG] [Thread-187770] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:47:34.676 [DEBUG] [Thread-187772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:47:49.727 [DEBUG] [Thread-187773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:47:55.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:47:55.931 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:47:55.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-11-24T09:47:56.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 47, 49), 16.36, 32.98, 0.0, 32.68, 16.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:47:56.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:47:49
2025-11-24T09:47:56.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:47:57.100 [DEBUG] [Thread-187774] [transport.py] [_log()] starting thread (client mode): 0xd0710700
2025-11-24T09:47:57.100 [DEBUG] [Thread-187774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:47:57.122 [DEBUG] [Thread-187774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:47:57.122 [INFO] [Thread-187774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] client lang: <none>
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] server lang: <none>
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] kex follows: False
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] Compression: none
2025-11-24T09:47:57.125 [DEBUG] [Thread-187774] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:47:57.143 [DEBUG] [Thread-187774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:47:57.144 [DEBUG] [Thread-187774] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:47:57.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:47:57.154 [DEBUG] [Thread-187774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:47:57.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:47:57.156 [DEBUG] [Thread-187774] [transport.py] [_log()] userauth is OK
2025-11-24T09:47:57.156 [DEBUG] [Thread-187774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:47:57.157 [DEBUG] [Thread-187774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:47:57.157 [DEBUG] [Thread-187774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:47:57.157 [DEBUG] [Thread-187774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:47:57.183 [INFO] [Thread-187774] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:47:57.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:47:57.801 [DEBUG] [Thread-187774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:47:57.801 [DEBUG] [Thread-187774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:47:57.801 [DEBUG] [Thread-187774] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:47:57.842 [DEBUG] [Thread-187774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:47:57.842 [DEBUG] [Thread-187774] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:47:57.845 [DEBUG] [Thread-187774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:47:57.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:47:57.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:47:57.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:47:57.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:47:57.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:47:57.880 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:47:57.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:47:57.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:47:57.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:47:57.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.324702 -999.00  +16.30  22.19     38   +2.00 1 1 1 1 1   888    0 19.50 236.09 ----- 22.2 22.2 155.1 27.0 22.5 -27.8 21.5 -24.9 20.5 -25.3 21.3 -25.5
2025-11-24T09:47:57.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:47:57.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:47:57.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.324702
2025-11-24T09:47:57.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:47:57.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:47:57.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:47:57.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:47:57.883 [DEBUG] [Thread-187774] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:47:57.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:47:57.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:47:49', tmtdew=16.36, humidity=32.98, cloud=0.0, wind=32.68, temperature=16.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:47:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:47:57.966 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:47:57.979 [DEBUG] [Thread-187777] [transport.py] [_log()] starting thread (client mode): 0xd0711000
2025-11-24T09:47:57.979 [DEBUG] [Thread-187777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:47:57.993 [DEBUG] [Thread-187777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:47:57.993 [INFO] [Thread-187777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:47:58.000 [DEBUG] [Thread-187777] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:47:58.000 [DEBUG] [Thread-187777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:47:58.000 [DEBUG] [Thread-187777] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:47:58.000 [DEBUG] [Thread-187777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:47:58.000 [DEBUG] [Thread-187777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:47:58.000 [DEBUG] [Thread-187777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] client lang: <none>
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] server lang: <none>
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] kex follows: False
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] Compression: none
2025-11-24T09:47:58.001 [DEBUG] [Thread-187777] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:47:58.059 [DEBUG] [Thread-187777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:47:58.060 [DEBUG] [Thread-187777] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:47:58.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:47:58.061 [DEBUG] [Thread-187777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:47:58.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:47:58.115 [DEBUG] [Thread-187777] [transport.py] [_log()] userauth is OK
2025-11-24T09:47:58.115 [DEBUG] [Thread-187777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:47:58.115 [DEBUG] [Thread-187777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:47:58.115 [DEBUG] [Thread-187777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:47:58.115 [DEBUG] [Thread-187777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:47:58.133 [INFO] [Thread-187777] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:47:58.134 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:47:58.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:47:58.977 [DEBUG] [Thread-187777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:47:58.977 [DEBUG] [Thread-187777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:47:59.029 [DEBUG] [Thread-187777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:47:59.029 [DEBUG] [Thread-187777] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:47:59.037 [DEBUG] [Thread-187777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:47:59.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:47:59.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-11-24T09:47:59.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-11-24T09:47:59.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:47:59.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:47:59.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:47:59.069 [DEBUG] [Thread-187777] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:48:04.755 [DEBUG] [Thread-187779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:48:19.798 [DEBUG] [Thread-187780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:48:24.944 [DEBUG] [Thread-187781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:48:29.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:48:29.092 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:48:29.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-11-24T09:48:29.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 48, 21), 16.58, 32.48, 0.0, 26.93, 16.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:48:29.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:48:21
2025-11-24T09:48:30.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:48:30.183 [DEBUG] [Thread-187782] [transport.py] [_log()] starting thread (client mode): 0xd07127d0
2025-11-24T09:48:30.184 [DEBUG] [Thread-187782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:48:30.204 [DEBUG] [Thread-187782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:48:30.204 [INFO] [Thread-187782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] client lang: <none>
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] server lang: <none>
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] kex follows: False
2025-11-24T09:48:30.207 [DEBUG] [Thread-187782] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:48:30.208 [DEBUG] [Thread-187782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:48:30.208 [DEBUG] [Thread-187782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:48:30.208 [DEBUG] [Thread-187782] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:48:30.208 [DEBUG] [Thread-187782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:48:30.208 [DEBUG] [Thread-187782] [transport.py] [_log()] Compression: none
2025-11-24T09:48:30.208 [DEBUG] [Thread-187782] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:48:30.226 [DEBUG] [Thread-187782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:48:30.227 [DEBUG] [Thread-187782] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:48:30.227 [DEBUG] [Thread-187782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:48:30.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:48:30.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:48:30.230 [DEBUG] [Thread-187782] [transport.py] [_log()] userauth is OK
2025-11-24T09:48:30.230 [DEBUG] [Thread-187782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:48:30.230 [DEBUG] [Thread-187782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:48:30.230 [DEBUG] [Thread-187782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:48:30.230 [DEBUG] [Thread-187782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:48:30.255 [INFO] [Thread-187782] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:48:30.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:48:30.894 [DEBUG] [Thread-187782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:48:30.894 [DEBUG] [Thread-187782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:48:30.895 [DEBUG] [Thread-187782] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:48:30.935 [DEBUG] [Thread-187782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:48:30.935 [DEBUG] [Thread-187782] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:48:30.938 [DEBUG] [Thread-187782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:48:30.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:48:30.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:48:30.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:48:30.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:48:30.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:48:30.975 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:48:30.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:48:30.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:48:30.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:48:30.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.325050 -999.00  +16.30  25.71     39   +2.30 1 1 1 1 1   888    0 19.45 229.33 ----- 25.7 25.7 182.0 34.1 22.5 -26.4 21.1 -30.6 20.4 -24.4 21.2 -28.3
2025-11-24T09:48:30.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:48:30.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:48:30.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.325050
2025-11-24T09:48:30.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:48:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:48:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:48:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:48:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:48:30.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:48:21', tmtdew=16.58, humidity=32.48, cloud=0.0, wind=26.93, temperature=16.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:48:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:48:30.979 [DEBUG] [Thread-187782] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:48:31.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:48:31.073 [DEBUG] [Thread-187785] [transport.py] [_log()] starting thread (client mode): 0xd0739cc0
2025-11-24T09:48:31.073 [DEBUG] [Thread-187785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:48:31.087 [DEBUG] [Thread-187785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:48:31.088 [INFO] [Thread-187785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:48:31.095 [DEBUG] [Thread-187785] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:48:31.095 [DEBUG] [Thread-187785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:48:31.095 [DEBUG] [Thread-187785] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:48:31.095 [DEBUG] [Thread-187785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:48:31.095 [DEBUG] [Thread-187785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] client lang: <none>
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] server lang: <none>
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] kex follows: False
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] Compression: none
2025-11-24T09:48:31.096 [DEBUG] [Thread-187785] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:48:31.154 [DEBUG] [Thread-187785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:48:31.155 [DEBUG] [Thread-187785] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:48:31.155 [DEBUG] [Thread-187785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:48:31.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:48:31.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:48:31.211 [DEBUG] [Thread-187785] [transport.py] [_log()] userauth is OK
2025-11-24T09:48:31.211 [DEBUG] [Thread-187785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:48:31.211 [DEBUG] [Thread-187785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:48:31.211 [DEBUG] [Thread-187785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:48:31.212 [DEBUG] [Thread-187785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:48:31.236 [INFO] [Thread-187785] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:48:31.237 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:48:31.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:48:32.102 [DEBUG] [Thread-187785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:48:32.103 [DEBUG] [Thread-187785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:48:32.151 [DEBUG] [Thread-187785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:48:32.151 [DEBUG] [Thread-187785] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:48:32.160 [DEBUG] [Thread-187785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:48:32.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:48: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')
2025-11-24T09:48:32.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:48:32.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:48:32.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:48:32.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:48:32.197 [DEBUG] [Thread-187785] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:48:34.842 [DEBUG] [Thread-187787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:48:49.890 [DEBUG] [Thread-187788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:49:02.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:49:02.228 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:49:02.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-11-24T09:49:02.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 48, 54), 16.33, 32.94, 0.0, 26.33, 16.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:49:02.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:48:54
2025-11-24T09:49:03.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:49:03.256 [DEBUG] [Thread-187789] [transport.py] [_log()] starting thread (client mode): 0xd3150850
2025-11-24T09:49:03.257 [DEBUG] [Thread-187789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:49:03.277 [DEBUG] [Thread-187789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:49:03.278 [INFO] [Thread-187789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:49:03.281 [DEBUG] [Thread-187789] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:49:03.281 [DEBUG] [Thread-187789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:49:03.281 [DEBUG] [Thread-187789] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:49:03.281 [DEBUG] [Thread-187789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] client lang: <none>
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] server lang: <none>
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] kex follows: False
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] Compression: none
2025-11-24T09:49:03.282 [DEBUG] [Thread-187789] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:49:03.300 [DEBUG] [Thread-187789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:49:03.301 [DEBUG] [Thread-187789] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:49:03.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:49:03.302 [DEBUG] [Thread-187789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:49:03.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:49:03.304 [DEBUG] [Thread-187789] [transport.py] [_log()] userauth is OK
2025-11-24T09:49:03.304 [DEBUG] [Thread-187789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:49:03.304 [DEBUG] [Thread-187789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:49:03.304 [DEBUG] [Thread-187789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:49:03.305 [DEBUG] [Thread-187789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:49:03.342 [INFO] [Thread-187789] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:49:03.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:49:03.995 [DEBUG] [Thread-187789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:49:03.995 [DEBUG] [Thread-187789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:49:03.995 [DEBUG] [Thread-187789] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:49:04.036 [DEBUG] [Thread-187789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:49:04.036 [DEBUG] [Thread-187789] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:49:04.038 [DEBUG] [Thread-187789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:49:04.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:49:04.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:49:04.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:49:04.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:49:04.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:49:04.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:49:04.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:49:04.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:49:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:49:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.325397 -999.00  +16.10  24.93     38   +2.00 1 1 1 1 1   888    0 19.82 238.24 ----- 24.9 24.9 180.8 33.4 22.4 -26.2 21.1 -27.5 20.4 -26.0 21.2 -26.2
2025-11-24T09:49:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:49:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:49:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.325397
2025-11-24T09:49:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:49:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:49:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:49:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:49:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:49:04.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:48:54', tmtdew=16.33, humidity=32.94, cloud=0.0, wind=26.33, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:48:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:49:04.056 [DEBUG] [Thread-187789] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:49:04.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:49:04.142 [DEBUG] [Thread-187792] [transport.py] [_log()] starting thread (client mode): 0xd3151a80
2025-11-24T09:49:04.142 [DEBUG] [Thread-187792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:49:04.158 [DEBUG] [Thread-187792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:49:04.158 [INFO] [Thread-187792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] client lang: <none>
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] server lang: <none>
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] kex follows: False
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:49:04.165 [DEBUG] [Thread-187792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:49:04.166 [DEBUG] [Thread-187792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:49:04.166 [DEBUG] [Thread-187792] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:49:04.166 [DEBUG] [Thread-187792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:49:04.166 [DEBUG] [Thread-187792] [transport.py] [_log()] Compression: none
2025-11-24T09:49:04.166 [DEBUG] [Thread-187792] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:49:04.220 [DEBUG] [Thread-187792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:49:04.220 [DEBUG] [Thread-187792] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:49:04.220 [DEBUG] [Thread-187792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:49:04.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:49:04.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:49:04.278 [DEBUG] [Thread-187792] [transport.py] [_log()] userauth is OK
2025-11-24T09:49:04.278 [DEBUG] [Thread-187792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:49:04.278 [DEBUG] [Thread-187792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:49:04.278 [DEBUG] [Thread-187792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:49:04.278 [DEBUG] [Thread-187792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:49:04.292 [INFO] [Thread-187792] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:49:04.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:49:04.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:49:04.925 [DEBUG] [Thread-187794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:49:05.135 [DEBUG] [Thread-187792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:49:05.135 [DEBUG] [Thread-187792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:49:05.183 [DEBUG] [Thread-187792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:49:05.183 [DEBUG] [Thread-187792] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:49:05.192 [DEBUG] [Thread-187792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:49:05.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:49:05.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-11-24T09:49:05.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-11-24T09:49:05.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:49:05.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:49:05.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:49:05.227 [DEBUG] [Thread-187792] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:49:19.970 [DEBUG] [Thread-187795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:49:25.009 [DEBUG] [Thread-187796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:49:35.005 [DEBUG] [Thread-187797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:49:35.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:49:35.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:49:35.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:49:35.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 49, 26), 15.9, 33.94, 0.0, 25.3, 16.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:49:35.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:49:26
2025-11-24T09:49:36.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:49:36.290 [DEBUG] [Thread-187798] [transport.py] [_log()] starting thread (client mode): 0xd07003a0
2025-11-24T09:49:36.290 [DEBUG] [Thread-187798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:49:36.311 [DEBUG] [Thread-187798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:49:36.312 [INFO] [Thread-187798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] client lang: <none>
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] server lang: <none>
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] kex follows: False
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:49:36.315 [DEBUG] [Thread-187798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:49:36.316 [DEBUG] [Thread-187798] [transport.py] [_log()] Compression: none
2025-11-24T09:49:36.316 [DEBUG] [Thread-187798] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:49:36.333 [DEBUG] [Thread-187798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:49:36.333 [DEBUG] [Thread-187798] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:49:36.334 [DEBUG] [Thread-187798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:49:36.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:49:36.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:49:36.336 [DEBUG] [Thread-187798] [transport.py] [_log()] userauth is OK
2025-11-24T09:49:36.336 [DEBUG] [Thread-187798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:49:36.336 [DEBUG] [Thread-187798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:49:36.336 [DEBUG] [Thread-187798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:49:36.336 [DEBUG] [Thread-187798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:49:36.360 [INFO] [Thread-187798] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:49:36.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:49:37.002 [DEBUG] [Thread-187798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:49:37.003 [DEBUG] [Thread-187798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:49:37.003 [DEBUG] [Thread-187798] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:49:37.044 [DEBUG] [Thread-187798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:49:37.044 [DEBUG] [Thread-187798] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:49:37.047 [DEBUG] [Thread-187798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:49:37.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:49:37.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:49:37.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:49:37.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:49:37.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:49:37.082 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:49:37.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:49:37.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:49:37.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:49:37.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.325744 -999.00  +16.20  25.30     38   +2.20 1 1 1 1 1   888    0 19.47 226.94 ----- 25.3 25.3 193.8 29.2 22.4 -25.8 21.1 -28.4 20.4 -25.0 21.1 -26.9
2025-11-24T09:49:37.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:49:37.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:49:37.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.325744
2025-11-24T09:49:37.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:49:37.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:49:37.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:49:37.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:49:37.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:49:37.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:49:26', tmtdew=15.9, humidity=33.94, cloud=0.0, wind=25.3, temperature=16.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:49:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:49:37.085 [DEBUG] [Thread-187798] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:49:37.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:49:37.181 [DEBUG] [Thread-187801] [transport.py] [_log()] starting thread (client mode): 0xd0739180
2025-11-24T09:49:37.181 [DEBUG] [Thread-187801] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:49:37.196 [DEBUG] [Thread-187801] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:49:37.196 [INFO] [Thread-187801] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] client lang: <none>
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] server lang: <none>
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] kex follows: False
2025-11-24T09:49:37.207 [DEBUG] [Thread-187801] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:49:37.208 [DEBUG] [Thread-187801] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:49:37.208 [DEBUG] [Thread-187801] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:49:37.208 [DEBUG] [Thread-187801] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:49:37.208 [DEBUG] [Thread-187801] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:49:37.208 [DEBUG] [Thread-187801] [transport.py] [_log()] Compression: none
2025-11-24T09:49:37.208 [DEBUG] [Thread-187801] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:49:37.274 [DEBUG] [Thread-187801] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:49:37.275 [DEBUG] [Thread-187801] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:49:37.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:49:37.276 [DEBUG] [Thread-187801] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:49:37.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:49:37.330 [DEBUG] [Thread-187801] [transport.py] [_log()] userauth is OK
2025-11-24T09:49:37.330 [DEBUG] [Thread-187801] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:49:37.330 [DEBUG] [Thread-187801] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:49:37.330 [DEBUG] [Thread-187801] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:49:37.330 [DEBUG] [Thread-187801] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:49:37.347 [INFO] [Thread-187801] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:49:37.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:49:37.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:49:38.203 [DEBUG] [Thread-187801] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:49:38.203 [DEBUG] [Thread-187801] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:49:38.252 [DEBUG] [Thread-187801] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:49:38.252 [DEBUG] [Thread-187801] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:49:38.262 [DEBUG] [Thread-187801] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:49:38.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:49:38.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:49:38.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-11-24T09:49:38.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:49:38.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:49:38.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:49:38.303 [DEBUG] [Thread-187801] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:49:50.046 [DEBUG] [Thread-187803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:50:05.098 [DEBUG] [Thread-187804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:50:08.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:50:08.318 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:50:08.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:50:09.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 49, 59), 16.05, 33.69, 0.0, 23.31, 15.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:50:09.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:49:59
2025-11-24T09:50:09.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:50:09.367 [DEBUG] [Thread-187805] [transport.py] [_log()] starting thread (client mode): 0xd0710a00
2025-11-24T09:50:09.367 [DEBUG] [Thread-187805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:50:09.386 [DEBUG] [Thread-187805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:50:09.386 [INFO] [Thread-187805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] client lang: <none>
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] server lang: <none>
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] kex follows: False
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] Compression: none
2025-11-24T09:50:09.389 [DEBUG] [Thread-187805] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:50:09.405 [DEBUG] [Thread-187805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:50:09.405 [DEBUG] [Thread-187805] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:50:09.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:50:09.405 [DEBUG] [Thread-187805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:50:09.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:50:09.413 [DEBUG] [Thread-187805] [transport.py] [_log()] userauth is OK
2025-11-24T09:50:09.413 [DEBUG] [Thread-187805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:50:09.413 [DEBUG] [Thread-187805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:50:09.413 [DEBUG] [Thread-187805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:50:09.413 [DEBUG] [Thread-187805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:50:09.429 [INFO] [Thread-187805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:50:09.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:50:10.291 [DEBUG] [Thread-187805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:50:10.291 [DEBUG] [Thread-187805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:50:10.291 [DEBUG] [Thread-187805] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:50:10.331 [DEBUG] [Thread-187805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:50:10.332 [DEBUG] [Thread-187805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:50:10.334 [DEBUG] [Thread-187805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:50:10.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:50:10.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:50:10.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:50:10.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:50:10.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:50:10.348 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:50:10.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.326091 -999.00  +16.10  16.94     36   +1.20 1 1 1 1 1   888    0 19.34 221.53 ----- 16.9 16.9 183.0 25.9 22.3 -26.1 20.9 -30.5 20.3 -24.9 21.1 -26.3
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.326091
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:50:10.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:49:59', tmtdew=16.05, humidity=33.69, cloud=0.0, wind=23.31, temperature=15.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:49:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:50:10.349 [DEBUG] [Thread-187805] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:50:10.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:50:10.445 [DEBUG] [Thread-187808] [transport.py] [_log()] starting thread (client mode): 0xd0713460
2025-11-24T09:50:10.445 [DEBUG] [Thread-187808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:50:10.459 [DEBUG] [Thread-187808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:50:10.460 [INFO] [Thread-187808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:50:10.467 [DEBUG] [Thread-187808] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:50:10.467 [DEBUG] [Thread-187808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:50:10.467 [DEBUG] [Thread-187808] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:50:10.467 [DEBUG] [Thread-187808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:50:10.467 [DEBUG] [Thread-187808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:50:10.467 [DEBUG] [Thread-187808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:50:10.467 [DEBUG] [Thread-187808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:50:10.468 [DEBUG] [Thread-187808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:50:10.468 [DEBUG] [Thread-187808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:50:10.468 [DEBUG] [Thread-187808] [transport.py] [_log()] client lang: <none>
2025-11-24T09:50:10.468 [DEBUG] [Thread-187808] [transport.py] [_log()] server lang: <none>
2025-11-24T09:50:10.468 [DEBUG] [Thread-187808] [transport.py] [_log()] kex follows: False
2025-11-24T09:50:10.468 [DEBUG] [Thread-187808] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:50:10.468 [DEBUG] [Thread-187808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:50:10.469 [DEBUG] [Thread-187808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:50:10.469 [DEBUG] [Thread-187808] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:50:10.469 [DEBUG] [Thread-187808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:50:10.469 [DEBUG] [Thread-187808] [transport.py] [_log()] Compression: none
2025-11-24T09:50:10.469 [DEBUG] [Thread-187808] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:50:10.525 [DEBUG] [Thread-187808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:50:10.525 [DEBUG] [Thread-187808] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:50:10.526 [DEBUG] [Thread-187808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:50:10.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:50:10.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:50:10.581 [DEBUG] [Thread-187808] [transport.py] [_log()] userauth is OK
2025-11-24T09:50:10.582 [DEBUG] [Thread-187808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:50:10.582 [DEBUG] [Thread-187808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:50:10.582 [DEBUG] [Thread-187808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:50:10.582 [DEBUG] [Thread-187808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:50:10.600 [INFO] [Thread-187808] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:50:10.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:50:10.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:50:11.499 [DEBUG] [Thread-187808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:50:11.499 [DEBUG] [Thread-187808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:50:11.547 [DEBUG] [Thread-187808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:50:11.547 [DEBUG] [Thread-187808] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:50:11.555 [DEBUG] [Thread-187808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:50:11.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:50:11.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-11-24T09:50:11.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-11-24T09:50:11.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:50:11.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:50:11.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:50:11.587 [DEBUG] [Thread-187808] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:50:20.144 [DEBUG] [Thread-187810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:50:25.056 [DEBUG] [Thread-187811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:50:35.191 [DEBUG] [Thread-187812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:50:41.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:50:41.603 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:50:41.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-11-24T09:50:42.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 50, 31), 15.85, 34.15, 0.0, 20.94, 15.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:50:42.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:50:31
2025-11-24T09:50:42.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:50:42.568 [DEBUG] [Thread-187813] [transport.py] [_log()] starting thread (client mode): 0xd317cb50
2025-11-24T09:50:42.568 [DEBUG] [Thread-187813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:50:42.588 [DEBUG] [Thread-187813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:50:42.588 [INFO] [Thread-187813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:50:42.591 [DEBUG] [Thread-187813] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:50:42.591 [DEBUG] [Thread-187813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:50:42.591 [DEBUG] [Thread-187813] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:50:42.591 [DEBUG] [Thread-187813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:50:42.591 [DEBUG] [Thread-187813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:50:42.591 [DEBUG] [Thread-187813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:50:42.591 [DEBUG] [Thread-187813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:50:42.591 [DEBUG] [Thread-187813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] client lang: <none>
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] server lang: <none>
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] kex follows: False
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] Compression: none
2025-11-24T09:50:42.592 [DEBUG] [Thread-187813] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:50:42.605 [DEBUG] [Thread-187813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:50:42.605 [DEBUG] [Thread-187813] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:50:42.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:50:42.607 [DEBUG] [Thread-187813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:50:42.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:50:42.608 [DEBUG] [Thread-187813] [transport.py] [_log()] userauth is OK
2025-11-24T09:50:42.608 [DEBUG] [Thread-187813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:50:42.609 [DEBUG] [Thread-187813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:50:42.609 [DEBUG] [Thread-187813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:50:42.609 [DEBUG] [Thread-187813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:50:42.627 [INFO] [Thread-187813] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:50:42.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:50:43.294 [DEBUG] [Thread-187813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:50:43.294 [DEBUG] [Thread-187813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:50:43.295 [DEBUG] [Thread-187813] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:50:43.335 [DEBUG] [Thread-187813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:50:43.336 [DEBUG] [Thread-187813] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:50:43.339 [DEBUG] [Thread-187813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:50:43.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:50:43.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:50:43.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:50:43.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:50:43.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:50:43.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:50:43.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:50:43.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:50:43.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:50:43.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.326439 -999.00  +15.90  17.34     38   +1.80 1 1 1 1 1   888    0 19.22 212.30 ----- 17.3 17.3 188.8 22.5 22.3 -26.1 20.9 -28.4 20.4 -24.3 21.1 -26.8
2025-11-24T09:50:43.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:50:43.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:50:43.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.326439
2025-11-24T09:50:43.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:50:43.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:50:43.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:50:43.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:50:43.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:50:43.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:50:31', tmtdew=15.85, humidity=34.15, cloud=0.0, wind=20.94, temperature=15.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:50:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:50:43.365 [DEBUG] [Thread-187813] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:50:43.448 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:50:43.461 [DEBUG] [Thread-187816] [transport.py] [_log()] starting thread (client mode): 0xd07135b0
2025-11-24T09:50:43.461 [DEBUG] [Thread-187816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:50:43.476 [DEBUG] [Thread-187816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:50:43.476 [INFO] [Thread-187816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:50:43.483 [DEBUG] [Thread-187816] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:50:43.484 [DEBUG] [Thread-187816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:50:43.484 [DEBUG] [Thread-187816] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:50:43.484 [DEBUG] [Thread-187816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:50:43.484 [DEBUG] [Thread-187816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:50:43.484 [DEBUG] [Thread-187816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:50:43.484 [DEBUG] [Thread-187816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:50:43.485 [DEBUG] [Thread-187816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:50:43.485 [DEBUG] [Thread-187816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:50:43.485 [DEBUG] [Thread-187816] [transport.py] [_log()] client lang: <none>
2025-11-24T09:50:43.485 [DEBUG] [Thread-187816] [transport.py] [_log()] server lang: <none>
2025-11-24T09:50:43.485 [DEBUG] [Thread-187816] [transport.py] [_log()] kex follows: False
2025-11-24T09:50:43.485 [DEBUG] [Thread-187816] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:50:43.485 [DEBUG] [Thread-187816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:50:43.485 [DEBUG] [Thread-187816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:50:43.486 [DEBUG] [Thread-187816] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:50:43.486 [DEBUG] [Thread-187816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:50:43.486 [DEBUG] [Thread-187816] [transport.py] [_log()] Compression: none
2025-11-24T09:50:43.486 [DEBUG] [Thread-187816] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:50:43.542 [DEBUG] [Thread-187816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:50:43.543 [DEBUG] [Thread-187816] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:50:43.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:50:43.544 [DEBUG] [Thread-187816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:50:43.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:50:43.601 [DEBUG] [Thread-187816] [transport.py] [_log()] userauth is OK
2025-11-24T09:50:43.602 [DEBUG] [Thread-187816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:50:43.602 [DEBUG] [Thread-187816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:50:43.602 [DEBUG] [Thread-187816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:50:43.602 [DEBUG] [Thread-187816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:50:43.616 [INFO] [Thread-187816] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:50:43.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:50:43.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:50:44.455 [DEBUG] [Thread-187816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:50:44.455 [DEBUG] [Thread-187816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:50:44.503 [DEBUG] [Thread-187816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:50:44.503 [DEBUG] [Thread-187816] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:50:44.512 [DEBUG] [Thread-187816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:50:44.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:50:44.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T09:50:44.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:50:44.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:50:44.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:50:44.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:50:44.544 [DEBUG] [Thread-187816] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:50:50.221 [DEBUG] [Thread-187818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:51:05.270 [DEBUG] [Thread-187819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:51:14.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:51:14.566 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:51:14.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-11-24T09:51:15.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 51, 4), 16.2, 33.36, 0.0, 21.91, 15.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:51:15.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:51:04
2025-11-24T09:51:15.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:51:15.537 [DEBUG] [Thread-187820] [transport.py] [_log()] starting thread (client mode): 0xc9b83130
2025-11-24T09:51:15.537 [DEBUG] [Thread-187820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:51:15.547 [DEBUG] [Thread-187820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:51:15.547 [INFO] [Thread-187820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:51:15.550 [DEBUG] [Thread-187820] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:51:15.550 [DEBUG] [Thread-187820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:51:15.550 [DEBUG] [Thread-187820] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:51:15.550 [DEBUG] [Thread-187820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:51:15.550 [DEBUG] [Thread-187820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:51:15.550 [DEBUG] [Thread-187820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] client lang: <none>
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] server lang: <none>
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] kex follows: False
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] Compression: none
2025-11-24T09:51:15.551 [DEBUG] [Thread-187820] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:51:15.566 [DEBUG] [Thread-187820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:51:15.566 [DEBUG] [Thread-187820] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:51:15.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:51:15.567 [DEBUG] [Thread-187820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:51:15.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:51:15.568 [DEBUG] [Thread-187820] [transport.py] [_log()] userauth is OK
2025-11-24T09:51:15.568 [DEBUG] [Thread-187820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:51:15.568 [DEBUG] [Thread-187820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:51:15.568 [DEBUG] [Thread-187820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:51:15.568 [DEBUG] [Thread-187820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:51:15.583 [INFO] [Thread-187820] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:51:15.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:51:16.237 [DEBUG] [Thread-187820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:51:16.237 [DEBUG] [Thread-187820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:51:16.237 [DEBUG] [Thread-187820] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:51:16.279 [DEBUG] [Thread-187820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:51:16.279 [DEBUG] [Thread-187820] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:51:16.280 [DEBUG] [Thread-187820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:51:16.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:51:16.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:51:16.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:51:16.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:51:16.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:51:16.290 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:51:16.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.327133 -999.00  +16.30  20.03     37   +1.60 1 1 1 1 1   888    0 18.71 193.80 ----- 20.0 20.0 182.6 25.1 22.4 -25.3 21.4 -24.5 20.6 -24.1 21.3 -25.1
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.327133
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:51:16.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:51:04', tmtdew=16.2, humidity=33.36, cloud=0.0, wind=21.91, temperature=15.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:51:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:51:16.291 [DEBUG] [Thread-187820] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:51:16.365 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:51:16.377 [DEBUG] [Thread-187823] [transport.py] [_log()] starting thread (client mode): 0xc9b82b60
2025-11-24T09:51:16.377 [DEBUG] [Thread-187823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:51:16.391 [DEBUG] [Thread-187823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:51:16.391 [INFO] [Thread-187823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] client lang: <none>
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] server lang: <none>
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] kex follows: False
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] Compression: none
2025-11-24T09:51:16.399 [DEBUG] [Thread-187823] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:51:16.456 [DEBUG] [Thread-187823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:51:16.456 [DEBUG] [Thread-187823] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:51:16.456 [DEBUG] [Thread-187823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:51:16.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:51:16.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:51:16.513 [DEBUG] [Thread-187823] [transport.py] [_log()] userauth is OK
2025-11-24T09:51:16.513 [DEBUG] [Thread-187823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:51:16.513 [DEBUG] [Thread-187823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:51:16.513 [DEBUG] [Thread-187823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:51:16.513 [DEBUG] [Thread-187823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:51:16.527 [INFO] [Thread-187823] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:51:16.527 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:51:16.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:51:17.395 [DEBUG] [Thread-187823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:51:17.395 [DEBUG] [Thread-187823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:51:17.444 [DEBUG] [Thread-187823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:51:17.444 [DEBUG] [Thread-187823] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:51:17.452 [DEBUG] [Thread-187823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:51:17.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:51:17.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-11-24T09:51:17.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-11-24T09:51:17.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:51:17.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:51:17.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:51:17.482 [DEBUG] [Thread-187823] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:51:20.299 [DEBUG] [Thread-187825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:51:25.285 [DEBUG] [Thread-187826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:51:35.367 [DEBUG] [Thread-187827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:51:47.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:51:47.505 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:51:47.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-11-24T09:51:48.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 51, 36), 16.33, 32.79, 0.0, 21.53, 16.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:51:48.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:51:36
2025-11-24T09:51:48.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:51:48.608 [DEBUG] [Thread-187828] [transport.py] [_log()] starting thread (client mode): 0xc9b82380
2025-11-24T09:51:48.608 [DEBUG] [Thread-187828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:51:48.623 [DEBUG] [Thread-187828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:51:48.623 [INFO] [Thread-187828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] client lang: <none>
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] server lang: <none>
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] kex follows: False
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] Compression: none
2025-11-24T09:51:48.626 [DEBUG] [Thread-187828] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:51:48.642 [DEBUG] [Thread-187828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:51:48.643 [DEBUG] [Thread-187828] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:51:48.643 [DEBUG] [Thread-187828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:51:48.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:51:48.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:51:48.645 [DEBUG] [Thread-187828] [transport.py] [_log()] userauth is OK
2025-11-24T09:51:48.645 [DEBUG] [Thread-187828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:51:48.645 [DEBUG] [Thread-187828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:51:48.645 [DEBUG] [Thread-187828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:51:48.645 [DEBUG] [Thread-187828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:51:48.659 [INFO] [Thread-187828] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:51:48.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:51:49.236 [DEBUG] [Thread-187828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:51:49.236 [DEBUG] [Thread-187828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:51:49.236 [DEBUG] [Thread-187828] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:51:49.277 [DEBUG] [Thread-187828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:51:49.277 [DEBUG] [Thread-187828] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:51:49.279 [DEBUG] [Thread-187828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:51:49.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:51:49.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:51:49.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:51:49.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:51:49.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:51:49.296 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:51:49.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:51:49.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.327480 -999.00  +16.80  13.05     37   +2.30 1 1 1 1 1   888    0 18.86 198.30 ----- 13.1 13.1 175.4 26.6 22.5 -25.5 21.4 -25.5 20.6 -23.1 21.5 -24.9
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.327480
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:51:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:51:36', tmtdew=16.33, humidity=32.79, cloud=0.0, wind=21.53, temperature=16.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:51:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:51:49.297 [DEBUG] [Thread-187828] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:51:49.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:51:49.384 [DEBUG] [Thread-187831] [transport.py] [_log()] starting thread (client mode): 0xd3153820
2025-11-24T09:51:49.384 [DEBUG] [Thread-187831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:51:49.404 [DEBUG] [Thread-187831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:51:49.404 [INFO] [Thread-187831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] client lang: <none>
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] server lang: <none>
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] kex follows: False
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] Compression: none
2025-11-24T09:51:49.412 [DEBUG] [Thread-187831] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:51:49.471 [DEBUG] [Thread-187831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:51:49.471 [DEBUG] [Thread-187831] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:51:49.472 [DEBUG] [Thread-187831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:51:49.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:51:49.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:51:49.529 [DEBUG] [Thread-187831] [transport.py] [_log()] userauth is OK
2025-11-24T09:51:49.529 [DEBUG] [Thread-187831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:51:49.529 [DEBUG] [Thread-187831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:51:49.529 [DEBUG] [Thread-187831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:51:49.529 [DEBUG] [Thread-187831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:51:49.543 [INFO] [Thread-187831] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:51:49.543 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:51:49.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:51:50.402 [DEBUG] [Thread-187833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:51:50.433 [DEBUG] [Thread-187831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:51:50.433 [DEBUG] [Thread-187831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:51:50.481 [DEBUG] [Thread-187831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:51:50.481 [DEBUG] [Thread-187831] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:51:50.494 [DEBUG] [Thread-187831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:51:50.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:51:50.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-11-24T09:51:50.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-11-24T09:51:50.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:51:50.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:51:50.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:51:50.529 [DEBUG] [Thread-187831] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:52:05.442 [DEBUG] [Thread-187834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:52:20.482 [DEBUG] [Thread-187835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:52:20.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:52:20.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:52:20.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-11-24T09:52:21.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 52, 9), 15.99, 33.6, 0.0, 27.9, 16.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:52:21.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:52:09
2025-11-24T09:52:21.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:52:21.621 [DEBUG] [Thread-187836] [transport.py] [_log()] starting thread (client mode): 0xd3153250
2025-11-24T09:52:21.621 [DEBUG] [Thread-187836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:52:21.641 [DEBUG] [Thread-187836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:52:21.641 [INFO] [Thread-187836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:52:21.645 [DEBUG] [Thread-187836] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:52:21.645 [DEBUG] [Thread-187836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:52:21.645 [DEBUG] [Thread-187836] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:52:21.645 [DEBUG] [Thread-187836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:52:21.645 [DEBUG] [Thread-187836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:52:21.645 [DEBUG] [Thread-187836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:52:21.645 [DEBUG] [Thread-187836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:52:21.645 [DEBUG] [Thread-187836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:52:21.645 [DEBUG] [Thread-187836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:52:21.646 [DEBUG] [Thread-187836] [transport.py] [_log()] client lang: <none>
2025-11-24T09:52:21.646 [DEBUG] [Thread-187836] [transport.py] [_log()] server lang: <none>
2025-11-24T09:52:21.646 [DEBUG] [Thread-187836] [transport.py] [_log()] kex follows: False
2025-11-24T09:52:21.646 [DEBUG] [Thread-187836] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:52:21.646 [DEBUG] [Thread-187836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:52:21.646 [DEBUG] [Thread-187836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:52:21.646 [DEBUG] [Thread-187836] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:52:21.646 [DEBUG] [Thread-187836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:52:21.646 [DEBUG] [Thread-187836] [transport.py] [_log()] Compression: none
2025-11-24T09:52:21.646 [DEBUG] [Thread-187836] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:52:21.659 [DEBUG] [Thread-187836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:52:21.659 [DEBUG] [Thread-187836] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:52:21.660 [DEBUG] [Thread-187836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:52:21.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:52:21.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:52:21.661 [DEBUG] [Thread-187836] [transport.py] [_log()] userauth is OK
2025-11-24T09:52:21.662 [DEBUG] [Thread-187836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:52:21.662 [DEBUG] [Thread-187836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:52:21.662 [DEBUG] [Thread-187836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:52:21.662 [DEBUG] [Thread-187836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:52:21.680 [INFO] [Thread-187836] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:52:21.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:52:22.248 [DEBUG] [Thread-187836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:52:22.248 [DEBUG] [Thread-187836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:52:22.248 [DEBUG] [Thread-187836] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:52:22.289 [DEBUG] [Thread-187836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:52:22.289 [DEBUG] [Thread-187836] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:52:22.292 [DEBUG] [Thread-187836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:52:22.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:52:22.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:52:22.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:52:22.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:52:22.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:52:22.325 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:52:22.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:52:22.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:52:22.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:52:22.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.327827 -999.00  +17.10  17.69     37   +2.50 1 1 1 1 1   888    0 19.09 202.71 ----- 17.7 17.7 174.4 24.1 22.7 -24.3 21.4 -26.6 20.7 -23.3 21.6 -24.3
2025-11-24T09:52:22.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:52:22.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:52:22.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.327827
2025-11-24T09:52:22.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:52:22.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:52:22.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:52:22.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:52:22.328 [DEBUG] [Thread-187836] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:52:22.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:52:22.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:52:09', tmtdew=15.99, humidity=33.6, cloud=0.0, wind=27.9, temperature=16.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:52:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:52:22.410 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:52:22.422 [DEBUG] [Thread-187839] [transport.py] [_log()] starting thread (client mode): 0xd7bc5660
2025-11-24T09:52:22.422 [DEBUG] [Thread-187839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:52:22.437 [DEBUG] [Thread-187839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:52:22.437 [INFO] [Thread-187839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:52:22.444 [DEBUG] [Thread-187839] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:52:22.445 [DEBUG] [Thread-187839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:52:22.445 [DEBUG] [Thread-187839] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:52:22.445 [DEBUG] [Thread-187839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:52:22.445 [DEBUG] [Thread-187839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:52:22.445 [DEBUG] [Thread-187839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:52:22.445 [DEBUG] [Thread-187839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:52:22.445 [DEBUG] [Thread-187839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:52:22.446 [DEBUG] [Thread-187839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:52:22.446 [DEBUG] [Thread-187839] [transport.py] [_log()] client lang: <none>
2025-11-24T09:52:22.446 [DEBUG] [Thread-187839] [transport.py] [_log()] server lang: <none>
2025-11-24T09:52:22.446 [DEBUG] [Thread-187839] [transport.py] [_log()] kex follows: False
2025-11-24T09:52:22.446 [DEBUG] [Thread-187839] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:52:22.446 [DEBUG] [Thread-187839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:52:22.446 [DEBUG] [Thread-187839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:52:22.446 [DEBUG] [Thread-187839] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:52:22.447 [DEBUG] [Thread-187839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:52:22.447 [DEBUG] [Thread-187839] [transport.py] [_log()] Compression: none
2025-11-24T09:52:22.447 [DEBUG] [Thread-187839] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:52:22.506 [DEBUG] [Thread-187839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:52:22.507 [DEBUG] [Thread-187839] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:52:22.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:52:22.508 [DEBUG] [Thread-187839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:52:22.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:52:22.567 [DEBUG] [Thread-187839] [transport.py] [_log()] userauth is OK
2025-11-24T09:52:22.568 [DEBUG] [Thread-187839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:52:22.568 [DEBUG] [Thread-187839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:52:22.568 [DEBUG] [Thread-187839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:52:22.568 [DEBUG] [Thread-187839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:52:22.587 [INFO] [Thread-187839] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:52:22.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:52:22.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:52:23.420 [DEBUG] [Thread-187839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:52:23.420 [DEBUG] [Thread-187839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:52:23.468 [DEBUG] [Thread-187839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:52:23.468 [DEBUG] [Thread-187839] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:52:23.476 [DEBUG] [Thread-187839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:52:23.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:52:23.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')
2025-11-24T09:52:23.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-11-24T09:52:23.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:52:23.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:52:23.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:52:23.511 [DEBUG] [Thread-187839] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:52:25.554 [DEBUG] [Thread-187841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:52:35.512 [DEBUG] [Thread-187842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:52:50.570 [DEBUG] [Thread-187843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:52:53.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:52:53.534 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:52:53.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-11-24T09:52:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 52, 41), 15.82, 34.28, 0.0, 22.85, 16.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:52:54.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:52:41
2025-11-24T09:52:54.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:52:54.607 [DEBUG] [Thread-187844] [transport.py] [_log()] starting thread (client mode): 0xd31928f0
2025-11-24T09:52:54.607 [DEBUG] [Thread-187844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:52:54.627 [DEBUG] [Thread-187844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:52:54.627 [INFO] [Thread-187844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] client lang: <none>
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] server lang: <none>
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] kex follows: False
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] Compression: none
2025-11-24T09:52:54.630 [DEBUG] [Thread-187844] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:52:54.639 [DEBUG] [Thread-187844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:52:54.639 [DEBUG] [Thread-187844] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:52:54.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:52:54.640 [DEBUG] [Thread-187844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:52:54.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:52:54.681 [DEBUG] [Thread-187844] [transport.py] [_log()] userauth is OK
2025-11-24T09:52:54.681 [DEBUG] [Thread-187844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:52:54.681 [DEBUG] [Thread-187844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:52:54.681 [DEBUG] [Thread-187844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:52:54.681 [DEBUG] [Thread-187844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:52:54.702 [INFO] [Thread-187844] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:52:54.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:52:55.275 [DEBUG] [Thread-187844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:52:55.275 [DEBUG] [Thread-187844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:52:55.275 [DEBUG] [Thread-187844] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:52:55.316 [DEBUG] [Thread-187844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:52:55.316 [DEBUG] [Thread-187844] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:52:55.318 [DEBUG] [Thread-187844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:52:55.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:52:55.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:52:55.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:52:55.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:52:55.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:52:55.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:52:55.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:52:55.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:52:55.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:52:55.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.328175 -999.00  +17.20  20.89     39   +3.10 1 1 1 1 1   888    0 19.46 206.03 ----- 20.9 20.9 166.0 28.9 22.8 -24.1 21.8 -23.7 20.9 -24.4 21.7 -24.7
2025-11-24T09:52:55.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:52:55.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:52:55.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.328175
2025-11-24T09:52:55.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:52:55.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:52:55.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:52:55.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:52:55.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:52:55.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:52:41', tmtdew=15.82, humidity=34.28, cloud=0.0, wind=22.85, temperature=16.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:52:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:52:55.337 [DEBUG] [Thread-187844] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:52: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-11-24T09:52:55.423 [DEBUG] [Thread-187847] [transport.py] [_log()] starting thread (client mode): 0xd3191c00
2025-11-24T09:52:55.423 [DEBUG] [Thread-187847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:52:55.443 [DEBUG] [Thread-187847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:52:55.443 [INFO] [Thread-187847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] client lang: <none>
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] server lang: <none>
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] kex follows: False
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] Compression: none
2025-11-24T09:52:55.451 [DEBUG] [Thread-187847] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:52:55.512 [DEBUG] [Thread-187847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:52:55.512 [DEBUG] [Thread-187847] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:52:55.512 [DEBUG] [Thread-187847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:52:55.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:52:55.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:52:55.571 [DEBUG] [Thread-187847] [transport.py] [_log()] userauth is OK
2025-11-24T09:52:55.571 [DEBUG] [Thread-187847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:52:55.571 [DEBUG] [Thread-187847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:52:55.571 [DEBUG] [Thread-187847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:52:55.571 [DEBUG] [Thread-187847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:52:55.586 [INFO] [Thread-187847] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:52:55.586 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:52:55.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:52:56.430 [DEBUG] [Thread-187847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:52:56.431 [DEBUG] [Thread-187847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:52:56.479 [DEBUG] [Thread-187847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:52:56.479 [DEBUG] [Thread-187847] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:52:56.488 [DEBUG] [Thread-187847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:52:56.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:52:56.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-11-24T09:52:56.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-11-24T09:52:56.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:52:56.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:52:56.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:52:56.533 [DEBUG] [Thread-187847] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:53:05.601 [DEBUG] [Thread-187849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:53:20.638 [DEBUG] [Thread-187850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:53:25.606 [DEBUG] [Thread-187851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:53:26.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:53:26.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:53:26.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-11-24T09:53:27.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 53, 14), 15.83, 34.27, 0.0, 21.42, 16.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:53:27.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:53:14
2025-11-24T09:53:27.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:53:27.625 [DEBUG] [Thread-187852] [transport.py] [_log()] starting thread (client mode): 0xd317c0a0
2025-11-24T09:53:27.625 [DEBUG] [Thread-187852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:53:27.646 [DEBUG] [Thread-187852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:53:27.646 [INFO] [Thread-187852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] client lang: <none>
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] server lang: <none>
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] kex follows: False
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] Compression: none
2025-11-24T09:53:27.650 [DEBUG] [Thread-187852] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:53:27.658 [DEBUG] [Thread-187852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:53:27.658 [DEBUG] [Thread-187852] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:53:27.658 [DEBUG] [Thread-187852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:53:27.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:53:27.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:53:27.659 [DEBUG] [Thread-187852] [transport.py] [_log()] userauth is OK
2025-11-24T09:53:27.659 [DEBUG] [Thread-187852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:53:27.659 [DEBUG] [Thread-187852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:53:27.659 [DEBUG] [Thread-187852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:53:27.659 [DEBUG] [Thread-187852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:53:27.690 [INFO] [Thread-187852] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:53:27.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:53:28.316 [DEBUG] [Thread-187852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:53:28.316 [DEBUG] [Thread-187852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:53:28.316 [DEBUG] [Thread-187852] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:53:28.357 [DEBUG] [Thread-187852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:53:28.357 [DEBUG] [Thread-187852] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:53:28.360 [DEBUG] [Thread-187852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:53:28.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:53:28.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:53:28.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:53:28.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:53:28.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:53:28.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:53:28.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.328175 -999.00  +17.20  20.89     39   +3.10 1 1 1 1 1   888    0 19.46 206.03 ----- 20.9 20.9 166.0 28.9 22.8 -24.1 21.8 -23.7 20.9 -24.4 21.7 -24.7
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.328175
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:53:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:53:14', tmtdew=15.83, humidity=34.27, cloud=0.0, wind=21.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-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:52:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:53:28.383 [DEBUG] [Thread-187852] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:53:28.455 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:53:28.466 [DEBUG] [Thread-187855] [transport.py] [_log()] starting thread (client mode): 0xd317fa00
2025-11-24T09:53:28.466 [DEBUG] [Thread-187855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:53:28.482 [DEBUG] [Thread-187855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:53:28.482 [INFO] [Thread-187855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:53:28.489 [DEBUG] [Thread-187855] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] client lang: <none>
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] server lang: <none>
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] kex follows: False
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] Compression: none
2025-11-24T09:53:28.490 [DEBUG] [Thread-187855] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:53:28.550 [DEBUG] [Thread-187855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:53:28.551 [DEBUG] [Thread-187855] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:53:28.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:53:28.552 [DEBUG] [Thread-187855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:53:28.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:53:28.614 [DEBUG] [Thread-187855] [transport.py] [_log()] userauth is OK
2025-11-24T09:53:28.615 [DEBUG] [Thread-187855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:53:28.615 [DEBUG] [Thread-187855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:53:28.615 [DEBUG] [Thread-187855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:53:28.615 [DEBUG] [Thread-187855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:53:28.634 [INFO] [Thread-187855] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:53:28.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:53:28.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:53:29.496 [DEBUG] [Thread-187855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:53:29.496 [DEBUG] [Thread-187855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:53:29.543 [DEBUG] [Thread-187855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:53:29.544 [DEBUG] [Thread-187855] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:53:29.553 [DEBUG] [Thread-187855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:53:29.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:53:29.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-11-24T09:53:29.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-11-24T09:53:29.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:53:29.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:53:29.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:53:29.590 [DEBUG] [Thread-187855] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:53:35.679 [DEBUG] [Thread-187857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:53:50.729 [DEBUG] [Thread-187858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:53:59.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:53:59.596 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:53:59.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:54:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 53, 46), 15.24, 35.58, 0.0, 23.43, 16.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:54:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:53:46
2025-11-24T09:54:00.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:54:00.662 [DEBUG] [Thread-187859] [transport.py] [_log()] starting thread (client mode): 0xd317e560
2025-11-24T09:54:00.662 [DEBUG] [Thread-187859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:54:00.683 [DEBUG] [Thread-187859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:54:00.683 [INFO] [Thread-187859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:54:00.693 [DEBUG] [Thread-187859] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:54:00.693 [DEBUG] [Thread-187859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:54:00.693 [DEBUG] [Thread-187859] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:54:00.693 [DEBUG] [Thread-187859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:54:00.693 [DEBUG] [Thread-187859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:54:00.693 [DEBUG] [Thread-187859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:54:00.693 [DEBUG] [Thread-187859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:54:00.693 [DEBUG] [Thread-187859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] client lang: <none>
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] server lang: <none>
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] kex follows: False
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] Compression: none
2025-11-24T09:54:00.694 [DEBUG] [Thread-187859] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:54:00.712 [DEBUG] [Thread-187859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:54:00.713 [DEBUG] [Thread-187859] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:54:00.714 [DEBUG] [Thread-187859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:54:00.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:54:00.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:54:00.716 [DEBUG] [Thread-187859] [transport.py] [_log()] userauth is OK
2025-11-24T09:54:00.716 [DEBUG] [Thread-187859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:54:00.716 [DEBUG] [Thread-187859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:54:00.716 [DEBUG] [Thread-187859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:54:00.716 [DEBUG] [Thread-187859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:54:00.735 [INFO] [Thread-187859] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:54:00.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:54:01.391 [DEBUG] [Thread-187859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:54:01.391 [DEBUG] [Thread-187859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:54:01.391 [DEBUG] [Thread-187859] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:54:01.432 [DEBUG] [Thread-187859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:54:01.432 [DEBUG] [Thread-187859] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:54:01.434 [DEBUG] [Thread-187859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:54:01.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:54:01.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:54:01.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:54:01.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:54:01.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:54:01.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:54:01.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:54:01.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:54:01.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:54:01.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.328522 -999.00  +17.00  19.02     40   +3.30 1 1 1 1 1   888    0 19.33 201.98 ----- 19.0 19.0 152.6 23.2 22.9 -25.3 21.9 -25.2 20.9 -23.9 21.8 -24.4
2025-11-24T09:54:01.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:54:01.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:54:01.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.328522
2025-11-24T09:54:01.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:54:01.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:54:01.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:54:01.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:54:01.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:54:01.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:53:46', tmtdew=15.24, humidity=35.58, cloud=0.0, wind=23.43, temperature=16.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:53:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:54:01.463 [DEBUG] [Thread-187859] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:54:01.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:54:01.545 [DEBUG] [Thread-187862] [transport.py] [_log()] starting thread (client mode): 0xd317d0f0
2025-11-24T09:54:01.545 [DEBUG] [Thread-187862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:54:01.560 [DEBUG] [Thread-187862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:54:01.560 [INFO] [Thread-187862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] client lang: <none>
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] server lang: <none>
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] kex follows: False
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:54:01.568 [DEBUG] [Thread-187862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:54:01.569 [DEBUG] [Thread-187862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:54:01.569 [DEBUG] [Thread-187862] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:54:01.569 [DEBUG] [Thread-187862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:54:01.569 [DEBUG] [Thread-187862] [transport.py] [_log()] Compression: none
2025-11-24T09:54:01.569 [DEBUG] [Thread-187862] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:54:01.629 [DEBUG] [Thread-187862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:54:01.630 [DEBUG] [Thread-187862] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:54:01.631 [DEBUG] [Thread-187862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:54:01.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:54:01.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:54:01.685 [DEBUG] [Thread-187862] [transport.py] [_log()] userauth is OK
2025-11-24T09:54:01.686 [DEBUG] [Thread-187862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:54:01.686 [DEBUG] [Thread-187862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:54:01.686 [DEBUG] [Thread-187862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:54:01.686 [DEBUG] [Thread-187862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:54:01.704 [INFO] [Thread-187862] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:54:01.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:54:01.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:54:02.570 [DEBUG] [Thread-187862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:54:02.571 [DEBUG] [Thread-187862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:54:02.618 [DEBUG] [Thread-187862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:54:02.618 [DEBUG] [Thread-187862] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:54:02.626 [DEBUG] [Thread-187862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:54:02.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:54:02.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-11-24T09:54: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-11-24T09:54:02.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:54:02.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:54:02.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:54:02.658 [DEBUG] [Thread-187862] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:54:05.772 [DEBUG] [Thread-187864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:54:21.133 [DEBUG] [Thread-187865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:54:25.675 [DEBUG] [Thread-187866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:54:32.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:54:32.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:54:32.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-11-24T09:54:33.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 54, 19), 15.31, 35.41, 0.0, 24.97, 16.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:54:33.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:54:19
2025-11-24T09:54:33.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:54:33.725 [DEBUG] [Thread-187867] [transport.py] [_log()] starting thread (client mode): 0xd3190790
2025-11-24T09:54:33.726 [DEBUG] [Thread-187867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:54:33.744 [DEBUG] [Thread-187867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:54:33.744 [INFO] [Thread-187867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] client lang: <none>
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] server lang: <none>
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] kex follows: False
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:54:33.754 [DEBUG] [Thread-187867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:54:33.755 [DEBUG] [Thread-187867] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:54:33.755 [DEBUG] [Thread-187867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:54:33.755 [DEBUG] [Thread-187867] [transport.py] [_log()] Compression: none
2025-11-24T09:54:33.755 [DEBUG] [Thread-187867] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:54:33.772 [DEBUG] [Thread-187867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:54:33.773 [DEBUG] [Thread-187867] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:54:33.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:54:33.774 [DEBUG] [Thread-187867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:54:33.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:54:33.776 [DEBUG] [Thread-187867] [transport.py] [_log()] userauth is OK
2025-11-24T09:54:33.776 [DEBUG] [Thread-187867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:54:33.776 [DEBUG] [Thread-187867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:54:33.777 [DEBUG] [Thread-187867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:54:33.777 [DEBUG] [Thread-187867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:54:33.795 [INFO] [Thread-187867] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:54:33.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:54:34.456 [DEBUG] [Thread-187867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:54:34.456 [DEBUG] [Thread-187867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:54:34.456 [DEBUG] [Thread-187867] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:54:34.497 [DEBUG] [Thread-187867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:54:34.497 [DEBUG] [Thread-187867] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:54:34.499 [DEBUG] [Thread-187867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:54:34.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:54:34.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:54:34.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:54:34.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:54:34.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:54:34.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:54:34.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.328869 -999.00  +17.00  19.92     40   +3.30 1 1 1 1 1   888    0 19.88 216.53 ----- 19.9 19.9 165.2 27.6 23.0 -25.4 22.1 -24.1 21.0 -23.5 21.8 -25.7
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.328869
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:54:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:54:19', tmtdew=15.31, humidity=35.41, cloud=0.0, wind=24.97, temperature=16.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:53:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:54:34.519 [DEBUG] [Thread-187867] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:54:34.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:54:34.603 [DEBUG] [Thread-187870] [transport.py] [_log()] starting thread (client mode): 0xd3191990
2025-11-24T09:54:34.603 [DEBUG] [Thread-187870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:54:34.618 [DEBUG] [Thread-187870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:54:34.618 [INFO] [Thread-187870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:54:34.625 [DEBUG] [Thread-187870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:54:34.625 [DEBUG] [Thread-187870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] client lang: <none>
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] server lang: <none>
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] kex follows: False
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] Compression: none
2025-11-24T09:54:34.626 [DEBUG] [Thread-187870] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:54:34.683 [DEBUG] [Thread-187870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:54:34.683 [DEBUG] [Thread-187870] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:54:34.683 [DEBUG] [Thread-187870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:54:34.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:54:34.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:54:34.741 [DEBUG] [Thread-187870] [transport.py] [_log()] userauth is OK
2025-11-24T09:54:34.741 [DEBUG] [Thread-187870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:54:34.741 [DEBUG] [Thread-187870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:54:34.741 [DEBUG] [Thread-187870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:54:34.741 [DEBUG] [Thread-187870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:54:34.755 [INFO] [Thread-187870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:54:34.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:54:34.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:54:35.594 [DEBUG] [Thread-187870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:54:35.594 [DEBUG] [Thread-187870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:54:35.642 [DEBUG] [Thread-187870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:54:35.642 [DEBUG] [Thread-187870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:54:35.653 [DEBUG] [Thread-187870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:54:35.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:54:35.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-11-24T09:54:35.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-11-24T09:54:35.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:54:35.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:54:35.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:54:35.702 [DEBUG] [Thread-187870] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:54:36.158 [DEBUG] [Thread-187872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:54:51.195 [DEBUG] [Thread-187873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:55:05.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:55:05.720 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:55:05.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-11-24T09:55:06.219 [DEBUG] [Thread-187874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:55:06.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 54, 51), 15.82, 34.14, 0.0, 29.85, 16.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:55:06.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:54:51
2025-11-24T09:55:06.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:55:06.773 [DEBUG] [Thread-187875] [transport.py] [_log()] starting thread (client mode): 0xd3192e90
2025-11-24T09:55:06.774 [DEBUG] [Thread-187875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:55:06.794 [DEBUG] [Thread-187875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:55:06.794 [INFO] [Thread-187875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:55:06.805 [DEBUG] [Thread-187875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:55:06.805 [DEBUG] [Thread-187875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:55:06.805 [DEBUG] [Thread-187875] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:55:06.805 [DEBUG] [Thread-187875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:55:06.805 [DEBUG] [Thread-187875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:55:06.806 [DEBUG] [Thread-187875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:55:06.806 [DEBUG] [Thread-187875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:55:06.806 [DEBUG] [Thread-187875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:55:06.806 [DEBUG] [Thread-187875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:55:06.806 [DEBUG] [Thread-187875] [transport.py] [_log()] client lang: <none>
2025-11-24T09:55:06.806 [DEBUG] [Thread-187875] [transport.py] [_log()] server lang: <none>
2025-11-24T09:55:06.806 [DEBUG] [Thread-187875] [transport.py] [_log()] kex follows: False
2025-11-24T09:55:06.806 [DEBUG] [Thread-187875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:55:06.806 [DEBUG] [Thread-187875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:55:06.807 [DEBUG] [Thread-187875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:55:06.807 [DEBUG] [Thread-187875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:55:06.807 [DEBUG] [Thread-187875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:55:06.807 [DEBUG] [Thread-187875] [transport.py] [_log()] Compression: none
2025-11-24T09:55:06.807 [DEBUG] [Thread-187875] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:55:06.817 [DEBUG] [Thread-187875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:55:06.818 [DEBUG] [Thread-187875] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:55:06.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:55:06.819 [DEBUG] [Thread-187875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:55:06.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:55:06.821 [DEBUG] [Thread-187875] [transport.py] [_log()] userauth is OK
2025-11-24T09:55:06.821 [DEBUG] [Thread-187875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:55:06.821 [DEBUG] [Thread-187875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:55:06.821 [DEBUG] [Thread-187875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:55:06.821 [DEBUG] [Thread-187875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:55:06.840 [INFO] [Thread-187875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:55:06.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:55:10.124 [DEBUG] [Thread-187875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:55:10.124 [DEBUG] [Thread-187875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:55:10.125 [DEBUG] [Thread-187875] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:55:10.165 [DEBUG] [Thread-187875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:55:10.165 [DEBUG] [Thread-187875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:55:10.168 [DEBUG] [Thread-187875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:55:10.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:55:10.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:55:10.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:55:10.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:55:10.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:55:10.224 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:55:10.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.329216 -999.00  +17.10  23.39     39   +3.00 1 1 1 1 1   888    0 19.93 221.73 ----- 23.4 23.4 163.8 26.5 23.1 -26.5 22.0 -24.5 21.1 -23.8 21.9 -25.0
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.329216
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:54:51', tmtdew=15.82, humidity=34.14, cloud=0.0, wind=29.85, temperature=16.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:54:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:55:10.225 [DEBUG] [Thread-187875] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:55:10.297 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:55:10.308 [DEBUG] [Thread-187878] [transport.py] [_log()] starting thread (client mode): 0xd7bc67d0
2025-11-24T09:55:10.308 [DEBUG] [Thread-187878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:55:10.322 [DEBUG] [Thread-187878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:55:10.322 [INFO] [Thread-187878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] client lang: <none>
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] server lang: <none>
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] kex follows: False
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:55:10.331 [DEBUG] [Thread-187878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:55:10.332 [DEBUG] [Thread-187878] [transport.py] [_log()] Compression: none
2025-11-24T09:55:10.332 [DEBUG] [Thread-187878] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:55:10.390 [DEBUG] [Thread-187878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:55:10.391 [DEBUG] [Thread-187878] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:55:10.391 [DEBUG] [Thread-187878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:55:10.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:55:10.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:55:10.453 [DEBUG] [Thread-187878] [transport.py] [_log()] userauth is OK
2025-11-24T09:55:10.453 [DEBUG] [Thread-187878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:55:10.453 [DEBUG] [Thread-187878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:55:10.453 [DEBUG] [Thread-187878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:55:10.454 [DEBUG] [Thread-187878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:55:10.473 [INFO] [Thread-187878] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:55:10.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:55:10.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:55:11.339 [DEBUG] [Thread-187878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:55:11.339 [DEBUG] [Thread-187878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:55:11.387 [DEBUG] [Thread-187878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:55:11.387 [DEBUG] [Thread-187878] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:55:11.395 [DEBUG] [Thread-187878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:55:11.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:55:11.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-11-24T09:55:11.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:55:11.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:55:11.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:55:11.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:55:11.427 [DEBUG] [Thread-187878] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:55:21.254 [DEBUG] [Thread-187880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:55:25.711 [DEBUG] [Thread-187881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:55:36.298 [DEBUG] [Thread-187882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:55:41.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:55:41.449 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:55:41.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-11-24T09:55:42.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 55, 23), 16.03, 33.67, 0.0, 27.51, 16.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:55:42.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:55:23
2025-11-24T09:55:42.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:55:42.546 [DEBUG] [Thread-187883] [transport.py] [_log()] starting thread (client mode): 0xd31526b0
2025-11-24T09:55:42.546 [DEBUG] [Thread-187883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:55:42.565 [DEBUG] [Thread-187883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:55:42.565 [INFO] [Thread-187883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] client lang: <none>
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] server lang: <none>
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] kex follows: False
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] Compression: none
2025-11-24T09:55:42.569 [DEBUG] [Thread-187883] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:55:42.586 [DEBUG] [Thread-187883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:55:42.586 [DEBUG] [Thread-187883] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:55:42.586 [DEBUG] [Thread-187883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:55:42.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:55:42.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:55:42.587 [DEBUG] [Thread-187883] [transport.py] [_log()] userauth is OK
2025-11-24T09:55:42.587 [DEBUG] [Thread-187883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:55:42.587 [DEBUG] [Thread-187883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:55:42.587 [DEBUG] [Thread-187883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:55:42.587 [DEBUG] [Thread-187883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:55:42.613 [INFO] [Thread-187883] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:55:42.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:55:43.268 [DEBUG] [Thread-187883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:55:43.268 [DEBUG] [Thread-187883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:55:43.268 [DEBUG] [Thread-187883] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:55:43.309 [DEBUG] [Thread-187883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:55:43.309 [DEBUG] [Thread-187883] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:55:43.311 [DEBUG] [Thread-187883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:55:43.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:55:43.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:55:43.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:55:43.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:55:43.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:55:43.328 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:55:43.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:55:43.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:55:43.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:55:43.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.329911 -999.00  +16.80  19.29     37   +2.10 1 1 1 1 1   888    0 19.12 187.81 ----- 19.3 19.3 153.8 33.6 23.1 -27.3 22.1 -25.9 21.2 -25.6 21.9 -26.4
2025-11-24T09:55:43.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:55:43.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:55:43.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.329911
2025-11-24T09:55:43.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:55:43.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:55:43.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:55:43.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:55:43.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:55:43.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:55:23', tmtdew=16.03, humidity=33.67, cloud=0.0, wind=27.51, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:55:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:55:43.329 [DEBUG] [Thread-187883] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:55:43.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:55:43.415 [DEBUG] [Thread-187886] [transport.py] [_log()] starting thread (client mode): 0xd3192950
2025-11-24T09:55:43.415 [DEBUG] [Thread-187886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:55:43.430 [DEBUG] [Thread-187886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:55:43.430 [INFO] [Thread-187886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] client lang: <none>
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] server lang: <none>
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] kex follows: False
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] Compression: none
2025-11-24T09:55:43.438 [DEBUG] [Thread-187886] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:55:43.502 [DEBUG] [Thread-187886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:55:43.502 [DEBUG] [Thread-187886] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:55:43.502 [DEBUG] [Thread-187886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:55:43.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:55:43.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:55:43.560 [DEBUG] [Thread-187886] [transport.py] [_log()] userauth is OK
2025-11-24T09:55:43.560 [DEBUG] [Thread-187886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:55:43.560 [DEBUG] [Thread-187886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:55:43.560 [DEBUG] [Thread-187886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:55:43.560 [DEBUG] [Thread-187886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:55:43.575 [INFO] [Thread-187886] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:55:43.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:55:43.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:55:44.424 [DEBUG] [Thread-187886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:55:44.433 [DEBUG] [Thread-187886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:55:44.472 [DEBUG] [Thread-187886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:55:44.472 [DEBUG] [Thread-187886] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:55:44.480 [DEBUG] [Thread-187886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:55:44.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:55: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')
2025-11-24T09:55:44.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-11-24T09:55:44.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:55:44.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:55:44.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:55:44.512 [DEBUG] [Thread-187886] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:55:51.338 [DEBUG] [Thread-187888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:56:06.399 [DEBUG] [Thread-187889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:56:14.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:56:14.521 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:56:14.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-11-24T09:56:15.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 55, 56), 16.05, 33.52, 0.0, 24.16, 16.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:56:15.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:55:56
2025-11-24T09:56:15.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:56:15.649 [DEBUG] [Thread-187890] [transport.py] [_log()] starting thread (client mode): 0xd31ccdf0
2025-11-24T09:56:15.649 [DEBUG] [Thread-187890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:56:15.668 [DEBUG] [Thread-187890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:56:15.669 [INFO] [Thread-187890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] client lang: <none>
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] server lang: <none>
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] kex follows: False
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] Compression: none
2025-11-24T09:56:15.672 [DEBUG] [Thread-187890] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:56:15.689 [DEBUG] [Thread-187890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:56:15.689 [DEBUG] [Thread-187890] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:56:15.689 [DEBUG] [Thread-187890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:56:15.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:56:15.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:56:15.690 [DEBUG] [Thread-187890] [transport.py] [_log()] userauth is OK
2025-11-24T09:56:15.690 [DEBUG] [Thread-187890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:56:15.690 [DEBUG] [Thread-187890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:56:15.690 [DEBUG] [Thread-187890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:56:15.690 [DEBUG] [Thread-187890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:56:15.699 [INFO] [Thread-187890] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:56:15.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:56:16.311 [DEBUG] [Thread-187890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:56:16.311 [DEBUG] [Thread-187890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:56:16.311 [DEBUG] [Thread-187890] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:56:16.352 [DEBUG] [Thread-187890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:56:16.352 [DEBUG] [Thread-187890] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:56:16.355 [DEBUG] [Thread-187890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:56:16.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:56:16.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:56:16.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:56:16.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:56:16.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:56:16.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:56:16.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:56:16.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:56:16.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:56:16.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.330258 -999.00  +16.60  25.19     39   +2.60 1 1 1 1 1   888    0 19.25 186.36 ----- 25.2 25.2 188.4 29.7 23.1 -26.4 22.1 -25.4 21.1 -24.0 21.9 -27.4
2025-11-24T09:56:16.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:56:16.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:56:16.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.330258
2025-11-24T09:56:16.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:56:16.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:56:16.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:56:16.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:56:16.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:56:16.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:55:56', tmtdew=16.05, humidity=33.52, cloud=0.0, wind=24.16, temperature=16.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:55:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:56:16.370 [DEBUG] [Thread-187890] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:56:16.445 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:56:16.458 [DEBUG] [Thread-187893] [transport.py] [_log()] starting thread (client mode): 0xd3193640
2025-11-24T09:56:16.458 [DEBUG] [Thread-187893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:56:16.476 [DEBUG] [Thread-187893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:56:16.476 [INFO] [Thread-187893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:56:16.486 [DEBUG] [Thread-187893] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:56:16.486 [DEBUG] [Thread-187893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:56:16.486 [DEBUG] [Thread-187893] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:56:16.486 [DEBUG] [Thread-187893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:56:16.486 [DEBUG] [Thread-187893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:56:16.486 [DEBUG] [Thread-187893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:56:16.486 [DEBUG] [Thread-187893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:56:16.486 [DEBUG] [Thread-187893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:56:16.486 [DEBUG] [Thread-187893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:56:16.486 [DEBUG] [Thread-187893] [transport.py] [_log()] client lang: <none>
2025-11-24T09:56:16.487 [DEBUG] [Thread-187893] [transport.py] [_log()] server lang: <none>
2025-11-24T09:56:16.487 [DEBUG] [Thread-187893] [transport.py] [_log()] kex follows: False
2025-11-24T09:56:16.487 [DEBUG] [Thread-187893] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:56:16.487 [DEBUG] [Thread-187893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:56:16.487 [DEBUG] [Thread-187893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:56:16.487 [DEBUG] [Thread-187893] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:56:16.487 [DEBUG] [Thread-187893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:56:16.487 [DEBUG] [Thread-187893] [transport.py] [_log()] Compression: none
2025-11-24T09:56:16.487 [DEBUG] [Thread-187893] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:56:16.545 [DEBUG] [Thread-187893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:56:16.545 [DEBUG] [Thread-187893] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:56:16.545 [DEBUG] [Thread-187893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:56:16.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:56:16.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:56:16.600 [DEBUG] [Thread-187893] [transport.py] [_log()] userauth is OK
2025-11-24T09:56:16.600 [DEBUG] [Thread-187893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:56:16.600 [DEBUG] [Thread-187893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:56:16.600 [DEBUG] [Thread-187893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:56:16.600 [DEBUG] [Thread-187893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:56:16.615 [INFO] [Thread-187893] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:56:16.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:56:16.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:56:17.460 [DEBUG] [Thread-187893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:56:17.460 [DEBUG] [Thread-187893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:56:17.508 [DEBUG] [Thread-187893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:56:17.508 [DEBUG] [Thread-187893] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:56:17.519 [DEBUG] [Thread-187893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:56:17.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:56: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')
2025-11-24T09:56:17.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-11-24T09:56:17.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:56:17.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:56:17.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:56:17.556 [DEBUG] [Thread-187893] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:56:21.427 [DEBUG] [Thread-187895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:56:25.762 [DEBUG] [Thread-187896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:56:36.465 [DEBUG] [Thread-187897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:56:47.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:56:47.579 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:56:47.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-11-24T09:56:48.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 56, 28), 16.06, 33.52, 0.0, 28.16, 16.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:56:48.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:56:28
2025-11-24T09:56:48.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:56:48.662 [DEBUG] [Thread-187898] [transport.py] [_log()] starting thread (client mode): 0xd317f190
2025-11-24T09:56:48.662 [DEBUG] [Thread-187898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:56:48.682 [DEBUG] [Thread-187898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:56:48.683 [INFO] [Thread-187898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:56:48.686 [DEBUG] [Thread-187898] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:56:48.686 [DEBUG] [Thread-187898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:56:48.686 [DEBUG] [Thread-187898] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:56:48.686 [DEBUG] [Thread-187898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:56:48.686 [DEBUG] [Thread-187898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:56:48.686 [DEBUG] [Thread-187898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] client lang: <none>
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] server lang: <none>
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] kex follows: False
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] Compression: none
2025-11-24T09:56:48.687 [DEBUG] [Thread-187898] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:56:48.705 [DEBUG] [Thread-187898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:56:48.706 [DEBUG] [Thread-187898] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:56:48.707 [DEBUG] [Thread-187898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:56:48.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:56:48.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:56:48.710 [DEBUG] [Thread-187898] [transport.py] [_log()] userauth is OK
2025-11-24T09:56:48.710 [DEBUG] [Thread-187898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:56:48.710 [DEBUG] [Thread-187898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:56:48.710 [DEBUG] [Thread-187898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:56:48.710 [DEBUG] [Thread-187898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:56:48.735 [INFO] [Thread-187898] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:56:48.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:56:49.370 [DEBUG] [Thread-187898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:56:49.370 [DEBUG] [Thread-187898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:56:49.370 [DEBUG] [Thread-187898] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:56:49.411 [DEBUG] [Thread-187898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:56:49.411 [DEBUG] [Thread-187898] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:56:49.413 [DEBUG] [Thread-187898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:56:49.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:56:49.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:56:49.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:56:49.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:56:49.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:56:49.434 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:56:49.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.330605 -999.00  +16.60  15.08     38   +2.20 1 1 1 1 1   888    0 19.13 184.95 ----- 15.1 15.1 183.2 33.2 23.0 -27.5 21.7 -29.4 21.1 -24.2 21.9 -26.1
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.330605
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:56:49.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:56:28', tmtdew=16.06, humidity=33.52, cloud=0.0, wind=28.16, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:56:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:56:49.435 [DEBUG] [Thread-187898] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:56:49.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:56:49.518 [DEBUG] [Thread-187901] [transport.py] [_log()] starting thread (client mode): 0xd3152740
2025-11-24T09:56:49.518 [DEBUG] [Thread-187901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:56:49.536 [DEBUG] [Thread-187901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:56:49.536 [INFO] [Thread-187901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:56:49.543 [DEBUG] [Thread-187901] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] client lang: <none>
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] server lang: <none>
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] kex follows: False
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] Compression: none
2025-11-24T09:56:49.544 [DEBUG] [Thread-187901] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:56:49.608 [DEBUG] [Thread-187901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:56:49.608 [DEBUG] [Thread-187901] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:56:49.608 [DEBUG] [Thread-187901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:56:49.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:56:49.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:56:49.664 [DEBUG] [Thread-187901] [transport.py] [_log()] userauth is OK
2025-11-24T09:56:49.664 [DEBUG] [Thread-187901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:56:49.664 [DEBUG] [Thread-187901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:56:49.664 [DEBUG] [Thread-187901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:56:49.664 [DEBUG] [Thread-187901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:56:49.682 [INFO] [Thread-187901] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:56:49.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:56:49.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:56:50.565 [DEBUG] [Thread-187901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:56:50.566 [DEBUG] [Thread-187901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:56:50.613 [DEBUG] [Thread-187901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:56:50.614 [DEBUG] [Thread-187901] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:56:50.623 [DEBUG] [Thread-187901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:56:50.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:56:50.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-11-24T09:56:50.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-11-24T09:56:50.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:56:50.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:56:50.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:56:50.665 [DEBUG] [Thread-187901] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:56:51.512 [DEBUG] [Thread-187903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:57:06.563 [DEBUG] [Thread-187904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:57:20.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:57:20.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:57:20.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-11-24T09:57:21.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 57), 16.34, 33.04, 0.0, 24.76, 16.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:57:21.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:57:00
2025-11-24T09:57:21.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:57:21.601 [DEBUG] [Thread-187905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:57:21.742 [DEBUG] [Thread-187906] [transport.py] [_log()] starting thread (client mode): 0xd31cc580
2025-11-24T09:57:21.742 [DEBUG] [Thread-187906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:57:21.762 [DEBUG] [Thread-187906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:57:21.762 [INFO] [Thread-187906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:57:21.765 [DEBUG] [Thread-187906] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:57:21.765 [DEBUG] [Thread-187906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:57:21.765 [DEBUG] [Thread-187906] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:57:21.765 [DEBUG] [Thread-187906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:57:21.765 [DEBUG] [Thread-187906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:57:21.765 [DEBUG] [Thread-187906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:57:21.765 [DEBUG] [Thread-187906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:57:21.765 [DEBUG] [Thread-187906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:57:21.765 [DEBUG] [Thread-187906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:57:21.766 [DEBUG] [Thread-187906] [transport.py] [_log()] client lang: <none>
2025-11-24T09:57:21.766 [DEBUG] [Thread-187906] [transport.py] [_log()] server lang: <none>
2025-11-24T09:57:21.766 [DEBUG] [Thread-187906] [transport.py] [_log()] kex follows: False
2025-11-24T09:57:21.766 [DEBUG] [Thread-187906] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:57:21.766 [DEBUG] [Thread-187906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:57:21.766 [DEBUG] [Thread-187906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:57:21.766 [DEBUG] [Thread-187906] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:57:21.774 [DEBUG] [Thread-187906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:57:21.775 [DEBUG] [Thread-187906] [transport.py] [_log()] Compression: none
2025-11-24T09:57:21.775 [DEBUG] [Thread-187906] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:57:21.793 [DEBUG] [Thread-187906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:57:21.793 [DEBUG] [Thread-187906] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:57:21.794 [DEBUG] [Thread-187906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:57:21.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:57:21.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:57:21.796 [DEBUG] [Thread-187906] [transport.py] [_log()] userauth is OK
2025-11-24T09:57:21.796 [DEBUG] [Thread-187906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:57:21.797 [DEBUG] [Thread-187906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:57:21.797 [DEBUG] [Thread-187906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:57:21.797 [DEBUG] [Thread-187906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:57:21.814 [INFO] [Thread-187906] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:57:21.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:57:22.437 [DEBUG] [Thread-187906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:57:22.437 [DEBUG] [Thread-187906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:57:22.437 [DEBUG] [Thread-187906] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:57:22.478 [DEBUG] [Thread-187906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:57:22.478 [DEBUG] [Thread-187906] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:57:22.480 [DEBUG] [Thread-187906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:57:22.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:57:22.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:57:22.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:57:22.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:57:22.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:57:22.490 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:57:22.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:57:22.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:57:22.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:57:22.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.330952 -999.00  +16.70  16.68     36   +1.80 1 1 1 1 1   888    0 19.02 186.40 ----- 16.7 16.7 202.3 22.1 23.1 -26.3 21.7 -28.1 21.1 -24.5 21.7 -27.1
2025-11-24T09:57:22.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:57:22.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:57:22.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.330952
2025-11-24T09:57:22.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:57:22.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:57:22.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:57:22.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:57:22.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:57:22.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:57:00', tmtdew=16.34, humidity=33.04, cloud=0.0, wind=24.76, temperature=16.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:56:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:57:22.491 [DEBUG] [Thread-187906] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:57: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-11-24T09:57:22.576 [DEBUG] [Thread-187909] [transport.py] [_log()] starting thread (client mode): 0xd3150e20
2025-11-24T09:57:22.576 [DEBUG] [Thread-187909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:57:22.590 [DEBUG] [Thread-187909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:57:22.590 [INFO] [Thread-187909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] client lang: <none>
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] server lang: <none>
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] kex follows: False
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:57:22.598 [DEBUG] [Thread-187909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:57:22.599 [DEBUG] [Thread-187909] [transport.py] [_log()] Compression: none
2025-11-24T09:57:22.599 [DEBUG] [Thread-187909] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:57:22.655 [DEBUG] [Thread-187909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:57:22.655 [DEBUG] [Thread-187909] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:57:22.655 [DEBUG] [Thread-187909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:57:22.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:57:22.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:57:22.713 [DEBUG] [Thread-187909] [transport.py] [_log()] userauth is OK
2025-11-24T09:57:22.713 [DEBUG] [Thread-187909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:57:22.713 [DEBUG] [Thread-187909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:57:22.713 [DEBUG] [Thread-187909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:57:22.713 [DEBUG] [Thread-187909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:57:22.727 [INFO] [Thread-187909] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:57:22.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:57:22.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:57:23.607 [DEBUG] [Thread-187909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:57:23.607 [DEBUG] [Thread-187909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:57:23.655 [DEBUG] [Thread-187909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:57:23.655 [DEBUG] [Thread-187909] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:57:23.664 [DEBUG] [Thread-187909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:57:23.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:57:23.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-11-24T09:57:23.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-11-24T09:57:23.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:57:23.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:57:23.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:57:23.701 [DEBUG] [Thread-187909] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:57:25.848 [DEBUG] [Thread-187911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:57:36.629 [DEBUG] [Thread-187912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:57:51.667 [DEBUG] [Thread-187913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:57:53.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:57:53.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:57:53.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-11-24T09:57:54.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 57, 33), 16.14, 33.49, 0.0, 21.35, 16.27, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:57:54.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:57:33
2025-11-24T09:57:54.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:57:54.795 [DEBUG] [Thread-187914] [transport.py] [_log()] starting thread (client mode): 0xd317ca30
2025-11-24T09:57:54.795 [DEBUG] [Thread-187914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:57:54.816 [DEBUG] [Thread-187914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:57:54.817 [INFO] [Thread-187914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] client lang: <none>
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] server lang: <none>
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] kex follows: False
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] Compression: none
2025-11-24T09:57:54.820 [DEBUG] [Thread-187914] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:57:54.838 [DEBUG] [Thread-187914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:57:54.838 [DEBUG] [Thread-187914] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:57:54.839 [DEBUG] [Thread-187914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:57:54.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:57:54.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:57:54.841 [DEBUG] [Thread-187914] [transport.py] [_log()] userauth is OK
2025-11-24T09:57:54.841 [DEBUG] [Thread-187914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:57:54.842 [DEBUG] [Thread-187914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:57:54.842 [DEBUG] [Thread-187914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:57:54.842 [DEBUG] [Thread-187914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:57:54.874 [INFO] [Thread-187914] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:57:54.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:57:55.554 [DEBUG] [Thread-187914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:57:55.554 [DEBUG] [Thread-187914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:57:55.554 [DEBUG] [Thread-187914] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:57:55.595 [DEBUG] [Thread-187914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:57:55.595 [DEBUG] [Thread-187914] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:57:55.598 [DEBUG] [Thread-187914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:57:55.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:57:55.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:57:55.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:57:55.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:57:55.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:57:55.624 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:57:55.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.331300 -999.00  +16.50  12.25     37   +1.80 1 1 1 1 1   888    0 18.98 182.19 ----- 12.2 12.2 186.5 23.8 23.0 -26.6 21.8 -27.2 21.1 -24.2 22.0 -24.4
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.331300
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:57:55.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:57:33', tmtdew=16.14, humidity=33.49, cloud=0.0, wind=21.35, temperature=16.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:57:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:57:55.625 [DEBUG] [Thread-187914] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:57:55.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:57:55.707 [DEBUG] [Thread-187917] [transport.py] [_log()] starting thread (client mode): 0xd073a650
2025-11-24T09:57:55.708 [DEBUG] [Thread-187917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:57:55.722 [DEBUG] [Thread-187917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:57:55.722 [INFO] [Thread-187917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] client lang: <none>
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] server lang: <none>
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] kex follows: False
2025-11-24T09:57:55.729 [DEBUG] [Thread-187917] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:57:55.730 [DEBUG] [Thread-187917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:57:55.730 [DEBUG] [Thread-187917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:57:55.730 [DEBUG] [Thread-187917] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:57:55.730 [DEBUG] [Thread-187917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:57:55.730 [DEBUG] [Thread-187917] [transport.py] [_log()] Compression: none
2025-11-24T09:57:55.730 [DEBUG] [Thread-187917] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:57:55.787 [DEBUG] [Thread-187917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:57:55.787 [DEBUG] [Thread-187917] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:57:55.787 [DEBUG] [Thread-187917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:57:55.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:57:55.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:57:55.844 [DEBUG] [Thread-187917] [transport.py] [_log()] userauth is OK
2025-11-24T09:57:55.844 [DEBUG] [Thread-187917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:57:55.844 [DEBUG] [Thread-187917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:57:55.844 [DEBUG] [Thread-187917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:57:55.844 [DEBUG] [Thread-187917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:57:55.858 [INFO] [Thread-187917] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:57:55.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:57:55.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:57:56.718 [DEBUG] [Thread-187917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:57:56.718 [DEBUG] [Thread-187917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:57:56.766 [DEBUG] [Thread-187917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:57:56.766 [DEBUG] [Thread-187917] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:57:56.775 [DEBUG] [Thread-187917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:57:56.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:57:56.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-11-24T09:57:56.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-11-24T09:57:56.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:57:56.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:57:56.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:57:56.811 [DEBUG] [Thread-187917] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:58:06.711 [DEBUG] [Thread-187919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:58:21.753 [DEBUG] [Thread-187920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:58:25.882 [DEBUG] [Thread-187921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:58:26.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:58:26.807 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:58:26.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-11-24T09:58:27.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 58, 5), 16.82, 31.98, 0.0, 30.37, 16.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:58:27.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:58:05
2025-11-24T09:58:27.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:58:27.978 [DEBUG] [Thread-187922] [transport.py] [_log()] starting thread (client mode): 0xd07105b0
2025-11-24T09:58:27.978 [DEBUG] [Thread-187922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:58:28.000 [DEBUG] [Thread-187922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:58:28.000 [INFO] [Thread-187922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:58:28.003 [DEBUG] [Thread-187922] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] client lang: <none>
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] server lang: <none>
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] kex follows: False
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] Compression: none
2025-11-24T09:58:28.004 [DEBUG] [Thread-187922] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:58:28.019 [DEBUG] [Thread-187922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:58:28.019 [DEBUG] [Thread-187922] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:58:28.019 [DEBUG] [Thread-187922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:58:28.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:58:28.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:58:28.020 [DEBUG] [Thread-187922] [transport.py] [_log()] userauth is OK
2025-11-24T09:58:28.020 [DEBUG] [Thread-187922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:58:28.020 [DEBUG] [Thread-187922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:58:28.020 [DEBUG] [Thread-187922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:58:28.020 [DEBUG] [Thread-187922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:58:28.047 [INFO] [Thread-187922] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:58:28.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:58:28.695 [DEBUG] [Thread-187922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:58:28.695 [DEBUG] [Thread-187922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:58:28.695 [DEBUG] [Thread-187922] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:58:28.736 [DEBUG] [Thread-187922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:58:28.736 [DEBUG] [Thread-187922] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:58:28.738 [DEBUG] [Thread-187922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:58:28.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:58:28.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:58:28.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:58:28.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:58:28.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:58:28.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:58:28.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:58:28.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:58:28.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:58:28.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.331647 -999.00  +16.80  18.68     36   +1.70 1 1 1 1 1   888    0 18.58 163.85 ----- 18.7 18.7 173.6 22.9 23.1 -26.7 21.7 -27.3 21.1 -24.9 22.0 -25.0
2025-11-24T09:58:28.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:58:28.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:58:28.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.331647
2025-11-24T09:58:28.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:58:28.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:58:28.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:58:28.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:58:28.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:58:28.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:58:05', tmtdew=16.82, humidity=31.98, cloud=0.0, wind=30.37, temperature=16.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:57:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:58:28.757 [DEBUG] [Thread-187922] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:58:28.832 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:58:28.853 [DEBUG] [Thread-187925] [transport.py] [_log()] starting thread (client mode): 0xd3151600
2025-11-24T09:58:28.853 [DEBUG] [Thread-187925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:58:28.868 [DEBUG] [Thread-187925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:58:28.868 [INFO] [Thread-187925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:58:28.875 [DEBUG] [Thread-187925] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] client lang: <none>
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] server lang: <none>
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] kex follows: False
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] Compression: none
2025-11-24T09:58:28.876 [DEBUG] [Thread-187925] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:58:28.935 [DEBUG] [Thread-187925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:58:28.935 [DEBUG] [Thread-187925] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:58:28.935 [DEBUG] [Thread-187925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:58:28.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:58:28.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:58:28.992 [DEBUG] [Thread-187925] [transport.py] [_log()] userauth is OK
2025-11-24T09:58:28.992 [DEBUG] [Thread-187925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:58:28.992 [DEBUG] [Thread-187925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:58:28.992 [DEBUG] [Thread-187925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:58:28.992 [DEBUG] [Thread-187925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:58:29.005 [INFO] [Thread-187925] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:58:29.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:58:29.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:58:29.887 [DEBUG] [Thread-187925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:58:29.887 [DEBUG] [Thread-187925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:58:29.935 [DEBUG] [Thread-187925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:58:29.935 [DEBUG] [Thread-187925] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:58:29.943 [DEBUG] [Thread-187925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:58:29.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:58:29.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')
2025-11-24T09:58:29.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:58:29.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:58:29.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:58:29.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:58:29.975 [DEBUG] [Thread-187925] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:58:36.791 [DEBUG] [Thread-187927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:58:51.872 [DEBUG] [Thread-187928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:58:59.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:58:59.998 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:59:00.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-11-24T09:59:00.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 58, 38), 17.24, 30.83, 0.0, 27.31, 16.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:59:00.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:58:38
2025-11-24T09:59:00.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:59:01.102 [DEBUG] [Thread-187929] [transport.py] [_log()] starting thread (client mode): 0xd3191c90
2025-11-24T09:59:01.102 [DEBUG] [Thread-187929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:59:01.121 [DEBUG] [Thread-187929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:59:01.121 [INFO] [Thread-187929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:59:01.124 [DEBUG] [Thread-187929] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:59:01.125 [DEBUG] [Thread-187929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:59:01.125 [DEBUG] [Thread-187929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:59:01.125 [DEBUG] [Thread-187929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:59:01.125 [DEBUG] [Thread-187929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:59:01.125 [DEBUG] [Thread-187929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:59:01.126 [DEBUG] [Thread-187929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:59:01.126 [DEBUG] [Thread-187929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:59:01.126 [DEBUG] [Thread-187929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:59:01.126 [DEBUG] [Thread-187929] [transport.py] [_log()] client lang: <none>
2025-11-24T09:59:01.126 [DEBUG] [Thread-187929] [transport.py] [_log()] server lang: <none>
2025-11-24T09:59:01.126 [DEBUG] [Thread-187929] [transport.py] [_log()] kex follows: False
2025-11-24T09:59:01.126 [DEBUG] [Thread-187929] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:59:01.126 [DEBUG] [Thread-187929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:59:01.126 [DEBUG] [Thread-187929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:59:01.127 [DEBUG] [Thread-187929] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:59:01.127 [DEBUG] [Thread-187929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:59:01.127 [DEBUG] [Thread-187929] [transport.py] [_log()] Compression: none
2025-11-24T09:59:01.127 [DEBUG] [Thread-187929] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:59:01.145 [DEBUG] [Thread-187929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:59:01.146 [DEBUG] [Thread-187929] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:59:01.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:59:01.147 [DEBUG] [Thread-187929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:59:01.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:59:01.149 [DEBUG] [Thread-187929] [transport.py] [_log()] userauth is OK
2025-11-24T09:59:01.149 [DEBUG] [Thread-187929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:59:01.149 [DEBUG] [Thread-187929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:59:01.149 [DEBUG] [Thread-187929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:59:01.149 [DEBUG] [Thread-187929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:59:01.188 [INFO] [Thread-187929] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:59:01.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:59:01.786 [DEBUG] [Thread-187929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:59:01.786 [DEBUG] [Thread-187929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:59:01.786 [DEBUG] [Thread-187929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:59:01.827 [DEBUG] [Thread-187929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:59:01.827 [DEBUG] [Thread-187929] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:59:01.831 [DEBUG] [Thread-187929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:59:01.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:59:01.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:59:01.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:59:01.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:59:01.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:59:01.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:59:01.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.331994 -999.00  +16.90  27.39     35   +1.70 1 1 1 1 1   888    0 18.44 154.87 ----- 27.4 27.4 175.6 40.4 23.1 -27.0 21.7 -33.1 21.0 -25.1 21.8 -27.6
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.331994
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:59:01.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:58:38', tmtdew=17.24, humidity=30.83, cloud=0.0, wind=27.31, temperature=16.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:58:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:59:01.852 [DEBUG] [Thread-187929] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:59:01.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:59:01.945 [DEBUG] [Thread-187932] [transport.py] [_log()] starting thread (client mode): 0xd3152e00
2025-11-24T09:59:01.946 [DEBUG] [Thread-187932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:59:01.961 [DEBUG] [Thread-187932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:59:01.961 [INFO] [Thread-187932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:59:01.968 [DEBUG] [Thread-187932] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:59:01.968 [DEBUG] [Thread-187932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:59:01.968 [DEBUG] [Thread-187932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:59:01.968 [DEBUG] [Thread-187932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:59:01.968 [DEBUG] [Thread-187932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:59:01.968 [DEBUG] [Thread-187932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:59:01.968 [DEBUG] [Thread-187932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:59:01.968 [DEBUG] [Thread-187932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:59:01.968 [DEBUG] [Thread-187932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:59:01.969 [DEBUG] [Thread-187932] [transport.py] [_log()] client lang: <none>
2025-11-24T09:59:01.969 [DEBUG] [Thread-187932] [transport.py] [_log()] server lang: <none>
2025-11-24T09:59:01.969 [DEBUG] [Thread-187932] [transport.py] [_log()] kex follows: False
2025-11-24T09:59:01.969 [DEBUG] [Thread-187932] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:59:01.969 [DEBUG] [Thread-187932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:59:01.969 [DEBUG] [Thread-187932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:59:01.969 [DEBUG] [Thread-187932] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:59:01.969 [DEBUG] [Thread-187932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:59:01.969 [DEBUG] [Thread-187932] [transport.py] [_log()] Compression: none
2025-11-24T09:59:01.969 [DEBUG] [Thread-187932] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:59:02.023 [DEBUG] [Thread-187932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:59:02.023 [DEBUG] [Thread-187932] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:59:02.023 [DEBUG] [Thread-187932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:59:02.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:59:02.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:59:02.081 [DEBUG] [Thread-187932] [transport.py] [_log()] userauth is OK
2025-11-24T09:59:02.081 [DEBUG] [Thread-187932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:59:02.081 [DEBUG] [Thread-187932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:59:02.081 [DEBUG] [Thread-187932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:59:02.081 [DEBUG] [Thread-187932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:59:02.095 [INFO] [Thread-187932] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:59:02.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:59:02.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:59:02.956 [DEBUG] [Thread-187932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:59:02.956 [DEBUG] [Thread-187932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:59:03.004 [DEBUG] [Thread-187932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:59:03.004 [DEBUG] [Thread-187932] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:59:03.017 [DEBUG] [Thread-187932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:59:03.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:59:03.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-11-24T09:59:03.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T09:59:03.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:59:03.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:59:03.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:59:03.049 [DEBUG] [Thread-187932] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:59:06.913 [DEBUG] [Thread-187934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:59:21.972 [DEBUG] [Thread-187935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:59:25.924 [DEBUG] [Thread-187936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:59:33.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T09:59:33.064 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T09:59:33.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T09:59:33.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 59, 11), 17.56, 30.1, 0.0, 25.34, 16.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T09:59:33.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:59:11
2025-11-24T09:59:33.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T09:59:34.143 [DEBUG] [Thread-187937] [transport.py] [_log()] starting thread (client mode): 0xd31ce800
2025-11-24T09:59:34.144 [DEBUG] [Thread-187937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:59:34.159 [DEBUG] [Thread-187937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T09:59:34.159 [INFO] [Thread-187937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T09:59:34.163 [DEBUG] [Thread-187937] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:59:34.163 [DEBUG] [Thread-187937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T09:59:34.163 [DEBUG] [Thread-187937] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:59:34.163 [DEBUG] [Thread-187937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:59:34.163 [DEBUG] [Thread-187937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] client lang: <none>
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] server lang: <none>
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] kex follows: False
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] Compression: none
2025-11-24T09:59:34.164 [DEBUG] [Thread-187937] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:59:34.174 [DEBUG] [Thread-187937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:59:34.174 [DEBUG] [Thread-187937] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:59:34.175 [DEBUG] [Thread-187937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T09:59:34.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T09:59:34.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:59:34.177 [DEBUG] [Thread-187937] [transport.py] [_log()] userauth is OK
2025-11-24T09:59:34.177 [DEBUG] [Thread-187937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:59:34.177 [DEBUG] [Thread-187937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:59:34.177 [DEBUG] [Thread-187937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T09:59:34.177 [DEBUG] [Thread-187937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:59:34.195 [INFO] [Thread-187937] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:59:34.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:59:34.992 [DEBUG] [Thread-187937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:59:34.992 [DEBUG] [Thread-187937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:59:34.993 [DEBUG] [Thread-187937] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T09:59:35.033 [DEBUG] [Thread-187937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:59:35.033 [DEBUG] [Thread-187937] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:59:35.036 [DEBUG] [Thread-187937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:59:35.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:59:35.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T09:59:35.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T09:59:35.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T09:59:35.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:59:35.072 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T09:59:35.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:59:35.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:59:35.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T09:59:35.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.332341 -999.00  +16.40  18.22     36   +1.50 1 1 1 1 1   888    0 17.99 147.09 ----- 18.2 18.2 180.0 30.5 22.9 -27.1 21.3 -30.9 20.9 -24.8 21.8 -26.9
2025-11-24T09:59:35.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T09:59:35.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T09:59:35.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.332341
2025-11-24T09:59:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T09:59:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T09:59:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T09:59:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T09:59:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T09:59:35.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:59:11', tmtdew=17.56, humidity=30.1, cloud=0.0, wind=25.34, temperature=16.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:58:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T09:59:35.073 [DEBUG] [Thread-187937] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:59:35.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T09:59:35.169 [DEBUG] [Thread-187940] [transport.py] [_log()] starting thread (client mode): 0xd0711180
2025-11-24T09:59:35.169 [DEBUG] [Thread-187940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T09:59:35.185 [DEBUG] [Thread-187940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T09:59:35.185 [INFO] [Thread-187940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T09:59:35.194 [DEBUG] [Thread-187940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] client lang: <none>
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] server lang: <none>
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] kex follows: False
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] Compression: none
2025-11-24T09:59:35.195 [DEBUG] [Thread-187940] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T09:59:35.259 [DEBUG] [Thread-187940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T09:59:35.259 [DEBUG] [Thread-187940] [transport.py] [_log()] Switch to new keys ...
2025-11-24T09:59:35.259 [DEBUG] [Thread-187940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T09:59:35.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T09:59:35.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T09:59:35.320 [DEBUG] [Thread-187940] [transport.py] [_log()] userauth is OK
2025-11-24T09:59:35.320 [DEBUG] [Thread-187940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T09:59:35.320 [DEBUG] [Thread-187940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T09:59:35.320 [DEBUG] [Thread-187940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T09:59:35.320 [DEBUG] [Thread-187940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T09:59:35.334 [INFO] [Thread-187940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T09:59:35.334 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T09:59:35.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T09:59:36.280 [DEBUG] [Thread-187940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T09:59:36.280 [DEBUG] [Thread-187940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T09:59:36.327 [DEBUG] [Thread-187940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T09:59:36.328 [DEBUG] [Thread-187940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T09:59:36.337 [DEBUG] [Thread-187940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T09:59:36.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T09:59:36.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-11-24T09:59:36.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-11-24T09:59:36.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T09:59:36.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T09:59:36.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T09:59:36.373 [DEBUG] [Thread-187940] [transport.py] [_log()] EOF in transport thread
2025-11-24T09:59:37.015 [DEBUG] [Thread-187942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T09:59:52.071 [DEBUG] [Thread-187943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:00:06.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:00:06.406 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:00:06.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-11-24T10:00:07.114 [DEBUG] [Thread-187944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:00:07.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 9, 59, 43), 17.52, 30.05, 0.0, 20.61, 16.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:00:07.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 09:59:43
2025-11-24T10:00:07.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:00:07.555 [DEBUG] [Thread-187945] [transport.py] [_log()] starting thread (client mode): 0xd7bc5660
2025-11-24T10:00:07.556 [DEBUG] [Thread-187945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:00:07.565 [DEBUG] [Thread-187945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:00:07.566 [INFO] [Thread-187945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:00:07.569 [DEBUG] [Thread-187945] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:00:07.569 [DEBUG] [Thread-187945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:00:07.569 [DEBUG] [Thread-187945] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:00:07.569 [DEBUG] [Thread-187945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:00:07.570 [DEBUG] [Thread-187945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:00:07.570 [DEBUG] [Thread-187945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:00:07.570 [DEBUG] [Thread-187945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:00:07.570 [DEBUG] [Thread-187945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:00:07.570 [DEBUG] [Thread-187945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:00:07.570 [DEBUG] [Thread-187945] [transport.py] [_log()] client lang: <none>
2025-11-24T10:00:07.570 [DEBUG] [Thread-187945] [transport.py] [_log()] server lang: <none>
2025-11-24T10:00:07.570 [DEBUG] [Thread-187945] [transport.py] [_log()] kex follows: False
2025-11-24T10:00:07.570 [DEBUG] [Thread-187945] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:00:07.571 [DEBUG] [Thread-187945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:00:07.571 [DEBUG] [Thread-187945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:00:07.571 [DEBUG] [Thread-187945] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:00:07.571 [DEBUG] [Thread-187945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:00:07.571 [DEBUG] [Thread-187945] [transport.py] [_log()] Compression: none
2025-11-24T10:00:07.571 [DEBUG] [Thread-187945] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:00:07.601 [DEBUG] [Thread-187945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:00:07.603 [DEBUG] [Thread-187945] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:00:07.604 [DEBUG] [Thread-187945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:00:07.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:00:07.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:00:07.609 [DEBUG] [Thread-187945] [transport.py] [_log()] userauth is OK
2025-11-24T10:00:07.609 [DEBUG] [Thread-187945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:00:07.610 [DEBUG] [Thread-187945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:00:07.610 [DEBUG] [Thread-187945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:00:07.610 [DEBUG] [Thread-187945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:00:07.634 [INFO] [Thread-187945] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:00:07.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:00:10.684 [DEBUG] [Thread-187945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:00:10.685 [DEBUG] [Thread-187945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:00:10.685 [DEBUG] [Thread-187945] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:00:10.726 [DEBUG] [Thread-187945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:00:10.726 [DEBUG] [Thread-187945] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:00:10.728 [DEBUG] [Thread-187945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:00:10.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:00:10.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:00:10.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:00:10.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:00:10.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:00:10.750 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:00:10.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:00:10.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:00:10.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:00:10.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.333036 -999.00  +16.00  18.24     36   +1.20 1 1 1 1 1   888    0 18.23 137.65 ----- 18.2 18.2 151.6 29.8 22.8 -26.9 21.6 -24.6 20.9 -25.1 21.8 -26.3
2025-11-24T10:00:10.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:00:10.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:00:10.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.333036
2025-11-24T10:00:10.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:00:10.757 [DEBUG] [Thread-187945] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:00:10.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:00:10.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:00:10.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:00:10.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:00:10.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T09:59:43', tmtdew=17.52, humidity=30.05, cloud=0.0, wind=20.61, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T07:59:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:00:10.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:00:10.855 [DEBUG] [Thread-187948] [transport.py] [_log()] starting thread (client mode): 0xd0712d10
2025-11-24T10:00:10.855 [DEBUG] [Thread-187948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:00:10.869 [DEBUG] [Thread-187948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:00:10.869 [INFO] [Thread-187948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] client lang: <none>
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] server lang: <none>
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] kex follows: False
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:00:10.877 [DEBUG] [Thread-187948] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:00:10.878 [DEBUG] [Thread-187948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:00:10.878 [DEBUG] [Thread-187948] [transport.py] [_log()] Compression: none
2025-11-24T10:00:10.878 [DEBUG] [Thread-187948] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:00:10.938 [DEBUG] [Thread-187948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:00:10.939 [DEBUG] [Thread-187948] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:00:10.939 [DEBUG] [Thread-187948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:00:10.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:00:10.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:00:10.996 [DEBUG] [Thread-187948] [transport.py] [_log()] userauth is OK
2025-11-24T10:00:10.996 [DEBUG] [Thread-187948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:00:10.996 [DEBUG] [Thread-187948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:00:10.996 [DEBUG] [Thread-187948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:00:10.996 [DEBUG] [Thread-187948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:00:11.010 [INFO] [Thread-187948] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:00:11.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:00:11.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:00:11.894 [DEBUG] [Thread-187948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:00:11.902 [DEBUG] [Thread-187948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:00:11.942 [DEBUG] [Thread-187948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:00:11.942 [DEBUG] [Thread-187948] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:00:11.952 [DEBUG] [Thread-187948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:00:11.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:00:11.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-11-24T10:00:11.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-11-24T10:00:11.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:00:11.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:00:11.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:00:11.990 [DEBUG] [Thread-187948] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:00:22.154 [DEBUG] [Thread-187950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:00:26.201 [DEBUG] [Thread-187951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:00:37.209 [DEBUG] [Thread-187952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:00:42.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:00:42.013 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:00:42.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-11-24T10:00:42.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 0, 16), 17.37, 30.35, 0.0, 22.76, 16.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:00:42.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:00:16
2025-11-24T10:00:42.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:00:43.134 [DEBUG] [Thread-187953] [transport.py] [_log()] starting thread (client mode): 0xd07107f0
2025-11-24T10:00:43.134 [DEBUG] [Thread-187953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:00:43.158 [DEBUG] [Thread-187953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:00:43.158 [INFO] [Thread-187953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:00:43.161 [DEBUG] [Thread-187953] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] client lang: <none>
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] server lang: <none>
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] kex follows: False
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] Compression: none
2025-11-24T10:00:43.162 [DEBUG] [Thread-187953] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:00:43.179 [DEBUG] [Thread-187953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:00:43.180 [DEBUG] [Thread-187953] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:00:43.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:00:43.181 [DEBUG] [Thread-187953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:00:43.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:00:43.183 [DEBUG] [Thread-187953] [transport.py] [_log()] userauth is OK
2025-11-24T10:00:43.183 [DEBUG] [Thread-187953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:00:43.184 [DEBUG] [Thread-187953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:00:43.184 [DEBUG] [Thread-187953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:00:43.184 [DEBUG] [Thread-187953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:00:43.207 [INFO] [Thread-187953] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:00:43.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:00:43.860 [DEBUG] [Thread-187953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:00:43.861 [DEBUG] [Thread-187953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:00:43.861 [DEBUG] [Thread-187953] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:00:43.901 [DEBUG] [Thread-187953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:00:43.901 [DEBUG] [Thread-187953] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:00:43.903 [DEBUG] [Thread-187953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:00:43.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:00:43.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:00:43.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:00:43.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:00:43.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:00:43.920 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:00:43.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:00:43.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:00:43.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:00:43.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.333383 -999.00  +16.00  11.78     36   +1.20 1 1 1 1 1   888    0 17.74 124.43 ----- 11.8 11.8 149.6 21.7 22.9 -25.5 21.8 -24.4 20.9 -25.3 21.7 -25.4
2025-11-24T10:00:43.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:00:43.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:00:43.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.333383
2025-11-24T10:00:43.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:00:43.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:00:43.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:00:43.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:00:43.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:00:43.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:00:16', tmtdew=17.37, humidity=30.35, cloud=0.0, wind=22.76, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:00:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:00:43.921 [DEBUG] [Thread-187953] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:00:43.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:00:44.008 [DEBUG] [Thread-187956] [transport.py] [_log()] starting thread (client mode): 0xd7bc5720
2025-11-24T10:00:44.009 [DEBUG] [Thread-187956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:00:44.023 [DEBUG] [Thread-187956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:00:44.023 [INFO] [Thread-187956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:00:44.030 [DEBUG] [Thread-187956] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] client lang: <none>
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] server lang: <none>
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] kex follows: False
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] Compression: none
2025-11-24T10:00:44.031 [DEBUG] [Thread-187956] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:00:44.088 [DEBUG] [Thread-187956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:00:44.089 [DEBUG] [Thread-187956] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:00:44.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:00:44.090 [DEBUG] [Thread-187956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:00:44.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:00:44.145 [DEBUG] [Thread-187956] [transport.py] [_log()] userauth is OK
2025-11-24T10:00:44.145 [DEBUG] [Thread-187956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:00:44.145 [DEBUG] [Thread-187956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:00:44.145 [DEBUG] [Thread-187956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:00:44.145 [DEBUG] [Thread-187956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:00:44.164 [INFO] [Thread-187956] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:00:44.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:00:44.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:00:45.006 [DEBUG] [Thread-187956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:00:45.006 [DEBUG] [Thread-187956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:00:45.055 [DEBUG] [Thread-187956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:00:45.055 [DEBUG] [Thread-187956] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:00:45.064 [DEBUG] [Thread-187956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:00:45.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:00:45.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-11-24T10:00:45.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-11-24T10:00:45.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:00:45.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:00:45.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:00:45.095 [DEBUG] [Thread-187956] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:00:52.250 [DEBUG] [Thread-187958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:01:07.298 [DEBUG] [Thread-187959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:01:15.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:01:15.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:01:15.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-11-24T10:01:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 0, 48), 17.32, 30.83, 0.0, 19.73, 16.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:01:15.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:00:48
2025-11-24T10:01:16.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:01:16.195 [DEBUG] [Thread-187960] [transport.py] [_log()] starting thread (client mode): 0xd3193a60
2025-11-24T10:01:16.195 [DEBUG] [Thread-187960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:01:16.215 [DEBUG] [Thread-187960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:01:16.216 [INFO] [Thread-187960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] client lang: <none>
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] server lang: <none>
2025-11-24T10:01:16.226 [DEBUG] [Thread-187960] [transport.py] [_log()] kex follows: False
2025-11-24T10:01:16.227 [DEBUG] [Thread-187960] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:01:16.227 [DEBUG] [Thread-187960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:01:16.227 [DEBUG] [Thread-187960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:01:16.227 [DEBUG] [Thread-187960] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:01:16.227 [DEBUG] [Thread-187960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:01:16.227 [DEBUG] [Thread-187960] [transport.py] [_log()] Compression: none
2025-11-24T10:01:16.227 [DEBUG] [Thread-187960] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:01:16.246 [DEBUG] [Thread-187960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:01:16.247 [DEBUG] [Thread-187960] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:01:16.248 [DEBUG] [Thread-187960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:01:16.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:01:16.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:01:16.250 [DEBUG] [Thread-187960] [transport.py] [_log()] userauth is OK
2025-11-24T10:01:16.251 [DEBUG] [Thread-187960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:01:16.251 [DEBUG] [Thread-187960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:01:16.251 [DEBUG] [Thread-187960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:01:16.251 [DEBUG] [Thread-187960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:01:16.287 [INFO] [Thread-187960] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:01:16.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:01:16.935 [DEBUG] [Thread-187960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:01:16.935 [DEBUG] [Thread-187960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:01:16.935 [DEBUG] [Thread-187960] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:01:16.975 [DEBUG] [Thread-187960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:01:16.976 [DEBUG] [Thread-187960] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:01:16.979 [DEBUG] [Thread-187960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:01:16.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:01:16.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:01:16.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:01:17.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:01:17.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:01:17.013 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:01:17.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:01:17.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:01:17.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:01:17.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.333730 -999.00  +16.10  20.67     37   +1.40 1 1 1 1 1   888    0 17.39 108.89 ----- 20.7 20.7 168.8 24.0 22.9 -25.3 21.8 -24.2 20.9 -24.2 21.9 -25.3
2025-11-24T10:01:17.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:01:17.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:01:17.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.333730
2025-11-24T10:01:17.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:01:17.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:01:17.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:01:17.016 [DEBUG] [Thread-187960] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:01:17.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:01:17.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:01:17.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:00:48', tmtdew=17.32, humidity=30.83, cloud=0.0, wind=19.73, temperature=16.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:00:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:01:17.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:01:17.116 [DEBUG] [Thread-187963] [transport.py] [_log()] starting thread (client mode): 0xd07113c0
2025-11-24T10:01:17.116 [DEBUG] [Thread-187963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:01:17.131 [DEBUG] [Thread-187963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:01:17.131 [INFO] [Thread-187963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:01:17.142 [DEBUG] [Thread-187963] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:01:17.142 [DEBUG] [Thread-187963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:01:17.142 [DEBUG] [Thread-187963] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:01:17.142 [DEBUG] [Thread-187963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:01:17.142 [DEBUG] [Thread-187963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:01:17.143 [DEBUG] [Thread-187963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:01:17.143 [DEBUG] [Thread-187963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:01:17.143 [DEBUG] [Thread-187963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:01:17.143 [DEBUG] [Thread-187963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:01:17.143 [DEBUG] [Thread-187963] [transport.py] [_log()] client lang: <none>
2025-11-24T10:01:17.143 [DEBUG] [Thread-187963] [transport.py] [_log()] server lang: <none>
2025-11-24T10:01:17.143 [DEBUG] [Thread-187963] [transport.py] [_log()] kex follows: False
2025-11-24T10:01:17.143 [DEBUG] [Thread-187963] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:01:17.143 [DEBUG] [Thread-187963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:01:17.144 [DEBUG] [Thread-187963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:01:17.144 [DEBUG] [Thread-187963] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:01:17.144 [DEBUG] [Thread-187963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:01:17.144 [DEBUG] [Thread-187963] [transport.py] [_log()] Compression: none
2025-11-24T10:01:17.144 [DEBUG] [Thread-187963] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:01:17.214 [DEBUG] [Thread-187963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:01:17.214 [DEBUG] [Thread-187963] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:01:17.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:01:17.215 [DEBUG] [Thread-187963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:01:17.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:01:17.273 [DEBUG] [Thread-187963] [transport.py] [_log()] userauth is OK
2025-11-24T10:01:17.273 [DEBUG] [Thread-187963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:01:17.273 [DEBUG] [Thread-187963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:01:17.273 [DEBUG] [Thread-187963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:01:17.273 [DEBUG] [Thread-187963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:01:17.292 [INFO] [Thread-187963] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:01:17.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:01:17.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:01:18.139 [DEBUG] [Thread-187963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:01:18.139 [DEBUG] [Thread-187963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:01:18.187 [DEBUG] [Thread-187963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:01:18.187 [DEBUG] [Thread-187963] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:01:18.197 [DEBUG] [Thread-187963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:01:18.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:01:18.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-11-24T10:01:18.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-11-24T10:01:18.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:01:18.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:01:18.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:01:18.245 [DEBUG] [Thread-187963] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:01:22.324 [DEBUG] [Thread-187965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:01:26.256 [DEBUG] [Thread-187966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:01:37.367 [DEBUG] [Thread-187967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:01:48.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:01:48.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:01:48.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:01:49.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 1, 20), 17.01, 31.48, 0.0, 19.78, 16.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:01:49.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:01:20
2025-11-24T10:01:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:01:49.377 [DEBUG] [Thread-187968] [transport.py] [_log()] starting thread (client mode): 0xc9b81420
2025-11-24T10:01:49.377 [DEBUG] [Thread-187968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:01:49.386 [DEBUG] [Thread-187968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:01:49.386 [INFO] [Thread-187968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] client lang: <none>
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] server lang: <none>
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] kex follows: False
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] Compression: none
2025-11-24T10:01:49.389 [DEBUG] [Thread-187968] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:01:49.405 [DEBUG] [Thread-187968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:01:49.406 [DEBUG] [Thread-187968] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:01:49.406 [DEBUG] [Thread-187968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:01:49.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:01:49.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:01:49.408 [DEBUG] [Thread-187968] [transport.py] [_log()] userauth is OK
2025-11-24T10:01:49.408 [DEBUG] [Thread-187968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:01:49.409 [DEBUG] [Thread-187968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:01:49.409 [DEBUG] [Thread-187968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:01:49.409 [DEBUG] [Thread-187968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:01:49.433 [INFO] [Thread-187968] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:01:49.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:01:50.064 [DEBUG] [Thread-187968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:01:50.064 [DEBUG] [Thread-187968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:01:50.065 [DEBUG] [Thread-187968] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:01:50.106 [DEBUG] [Thread-187968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:01:50.106 [DEBUG] [Thread-187968] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:01:50.109 [DEBUG] [Thread-187968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:01:50.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:01:50.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:01:50.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:01:50.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:01:50.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:01:50.139 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:01:50.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:01:50.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:01:50.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:01:50.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.334077 -999.00  +16.20  21.93     37   +1.60 1 1 1 1 1   888    0 16.89 96.55 ----- 21.9 21.9 169.4 26.3 23.0 -25.2 21.7 -28.0 21.1 -22.8 21.9 -25.3
2025-11-24T10:01:50.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:01:50.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:01:50.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.334077
2025-11-24T10:01:50.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:01:50.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:01:50.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:01:50.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:01:50.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:01:50.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:01:20', tmtdew=17.01, humidity=31.48, cloud=0.0, wind=19.78, temperature=16.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:01:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:01:50.142 [DEBUG] [Thread-187968] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:01:50.226 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:01:50.240 [DEBUG] [Thread-187971] [transport.py] [_log()] starting thread (client mode): 0xd0702350
2025-11-24T10:01:50.240 [DEBUG] [Thread-187971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:01:50.259 [DEBUG] [Thread-187971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:01:50.259 [INFO] [Thread-187971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:01:50.266 [DEBUG] [Thread-187971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] client lang: <none>
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] server lang: <none>
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] kex follows: False
2025-11-24T10:01:50.267 [DEBUG] [Thread-187971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:01:50.268 [DEBUG] [Thread-187971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:01:50.268 [DEBUG] [Thread-187971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:01:50.268 [DEBUG] [Thread-187971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:01:50.268 [DEBUG] [Thread-187971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:01:50.268 [DEBUG] [Thread-187971] [transport.py] [_log()] Compression: none
2025-11-24T10:01:50.268 [DEBUG] [Thread-187971] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:01:50.328 [DEBUG] [Thread-187971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:01:50.329 [DEBUG] [Thread-187971] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:01:50.330 [DEBUG] [Thread-187971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:01:50.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:01:50.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:01:50.385 [DEBUG] [Thread-187971] [transport.py] [_log()] userauth is OK
2025-11-24T10:01:50.385 [DEBUG] [Thread-187971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:01:50.385 [DEBUG] [Thread-187971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:01:50.385 [DEBUG] [Thread-187971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:01:50.385 [DEBUG] [Thread-187971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:01:50.404 [INFO] [Thread-187971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:01:50.405 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:01:50.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:01:51.288 [DEBUG] [Thread-187971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:01:51.288 [DEBUG] [Thread-187971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:01:51.340 [DEBUG] [Thread-187971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:01:51.340 [DEBUG] [Thread-187971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:01:51.348 [DEBUG] [Thread-187971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:01:51.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:01:51.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-11-24T10:01:51.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-11-24T10:01:51.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:01:51.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:01:51.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:01:51.380 [DEBUG] [Thread-187971] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:01:52.395 [DEBUG] [Thread-187973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:02:07.453 [DEBUG] [Thread-187974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:02:21.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:02:21.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:02:21.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-11-24T10:02:22.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 1, 53), 16.51, 32.46, 0.0, 25.0, 16.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:02:22.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:01:53
2025-11-24T10:02:22.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:02:22.484 [DEBUG] [Thread-187975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:02:22.514 [DEBUG] [Thread-187976] [transport.py] [_log()] starting thread (client mode): 0xd07118a0
2025-11-24T10:02:22.514 [DEBUG] [Thread-187976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:02:22.534 [DEBUG] [Thread-187976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:02:22.534 [INFO] [Thread-187976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:02:22.537 [DEBUG] [Thread-187976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:02:22.537 [DEBUG] [Thread-187976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] client lang: <none>
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] server lang: <none>
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] kex follows: False
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] Compression: none
2025-11-24T10:02:22.538 [DEBUG] [Thread-187976] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:02:22.555 [DEBUG] [Thread-187976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:02:22.555 [DEBUG] [Thread-187976] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:02:22.555 [DEBUG] [Thread-187976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:02:22.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:02:22.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:02:22.556 [DEBUG] [Thread-187976] [transport.py] [_log()] userauth is OK
2025-11-24T10:02:22.556 [DEBUG] [Thread-187976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:02:22.556 [DEBUG] [Thread-187976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:02:22.556 [DEBUG] [Thread-187976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:02:22.556 [DEBUG] [Thread-187976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:02:22.571 [INFO] [Thread-187976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:02:22.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:02:23.215 [DEBUG] [Thread-187976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:02:23.215 [DEBUG] [Thread-187976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:02:23.215 [DEBUG] [Thread-187976] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:02:23.256 [DEBUG] [Thread-187976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:02:23.256 [DEBUG] [Thread-187976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:02:23.258 [DEBUG] [Thread-187976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:02:23.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:02:23.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:02:23.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:02:23.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:02:23.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:02:23.277 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:02:23.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:02:23.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.334425 -999.00  +16.50  17.57     38   +2.30 1 1 1 1 1   888    0 16.81 88.01 ----- 17.6 17.6 139.8 21.1 23.1 -26.2 21.6 -28.6 21.1 -23.2 21.9 -26.7
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.334425
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:02:23.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:01:53', tmtdew=16.51, humidity=32.46, cloud=0.0, wind=25.0, temperature=16.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:01:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:02:23.279 [DEBUG] [Thread-187976] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:02:23.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:02:23.366 [DEBUG] [Thread-187979] [transport.py] [_log()] starting thread (client mode): 0xd317e980
2025-11-24T10:02:23.366 [DEBUG] [Thread-187979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:02:23.380 [DEBUG] [Thread-187979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:02:23.380 [INFO] [Thread-187979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:02:23.387 [DEBUG] [Thread-187979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] client lang: <none>
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] server lang: <none>
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] kex follows: False
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] Compression: none
2025-11-24T10:02:23.388 [DEBUG] [Thread-187979] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:02:23.444 [DEBUG] [Thread-187979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:02:23.444 [DEBUG] [Thread-187979] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:02:23.444 [DEBUG] [Thread-187979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:02:23.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:02:23.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:02:23.500 [DEBUG] [Thread-187979] [transport.py] [_log()] userauth is OK
2025-11-24T10:02:23.500 [DEBUG] [Thread-187979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:02:23.500 [DEBUG] [Thread-187979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:02:23.500 [DEBUG] [Thread-187979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:02:23.500 [DEBUG] [Thread-187979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:02:23.514 [INFO] [Thread-187979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:02:23.514 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:02:23.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:02:24.357 [DEBUG] [Thread-187979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:02:24.357 [DEBUG] [Thread-187979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:02:24.405 [DEBUG] [Thread-187979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:02:24.405 [DEBUG] [Thread-187979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:02:24.413 [DEBUG] [Thread-187979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:02:24.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:02:24.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-11-24T10:02:24.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-11-24T10:02:24.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:02:24.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:02:24.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:02:24.446 [DEBUG] [Thread-187979] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:02:26.284 [DEBUG] [Thread-187981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:02:37.514 [DEBUG] [Thread-187982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:02:52.575 [DEBUG] [Thread-187983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:02:54.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:02:54.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:02:54.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-11-24T10:02:55.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 2, 25), 16.58, 32.26, 0.0, 22.06, 16.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:02:55.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:02:25
2025-11-24T10:02:55.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:02:55.565 [DEBUG] [Thread-187984] [transport.py] [_log()] starting thread (client mode): 0xd31506a0
2025-11-24T10:02:55.565 [DEBUG] [Thread-187984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:02:55.586 [DEBUG] [Thread-187984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:02:55.586 [INFO] [Thread-187984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:02:55.590 [DEBUG] [Thread-187984] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:02:55.590 [DEBUG] [Thread-187984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:02:55.590 [DEBUG] [Thread-187984] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:02:55.590 [DEBUG] [Thread-187984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:02:55.590 [DEBUG] [Thread-187984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:02:55.590 [DEBUG] [Thread-187984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] client lang: <none>
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] server lang: <none>
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] kex follows: False
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] Compression: none
2025-11-24T10:02:55.591 [DEBUG] [Thread-187984] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:02:55.609 [DEBUG] [Thread-187984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:02:55.609 [DEBUG] [Thread-187984] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:02:55.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:02:55.610 [DEBUG] [Thread-187984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:02:55.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:02:55.612 [DEBUG] [Thread-187984] [transport.py] [_log()] userauth is OK
2025-11-24T10:02:55.613 [DEBUG] [Thread-187984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:02:55.613 [DEBUG] [Thread-187984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:02:55.613 [DEBUG] [Thread-187984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:02:55.613 [DEBUG] [Thread-187984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:02:55.636 [INFO] [Thread-187984] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:02:55.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:02:56.250 [DEBUG] [Thread-187984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:02:56.250 [DEBUG] [Thread-187984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:02:56.250 [DEBUG] [Thread-187984] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:02:56.291 [DEBUG] [Thread-187984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:02:56.291 [DEBUG] [Thread-187984] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:02:56.293 [DEBUG] [Thread-187984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:02:56.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:02:56.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:02:56.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:02:56.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:02:56.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:02:56.311 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:02:56.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:02:56.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:02:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:02:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.334772 -999.00  +16.50  16.99     38   +2.40 1 1 1 1 1   888    0 16.41 85.09 ----- 17.0 17.0 140.4 27.8 23.1 -26.6 22.1 -24.8 21.2 -24.6 21.9 -25.8
2025-11-24T10:02:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:02:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:02:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.334772
2025-11-24T10:02:56.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:02:56.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:02:56.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:02:56.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:02:56.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:02:56.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:02:25', tmtdew=16.58, humidity=32.26, cloud=0.0, wind=22.06, temperature=16.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:02:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:02:56.312 [DEBUG] [Thread-187984] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:02:56.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:02:56.396 [DEBUG] [Thread-187987] [transport.py] [_log()] starting thread (client mode): 0xc9b81330
2025-11-24T10:02:56.396 [DEBUG] [Thread-187987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:02:56.410 [DEBUG] [Thread-187987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:02:56.410 [INFO] [Thread-187987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] client lang: <none>
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] server lang: <none>
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] kex follows: False
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:02:56.418 [DEBUG] [Thread-187987] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:02:56.419 [DEBUG] [Thread-187987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:02:56.419 [DEBUG] [Thread-187987] [transport.py] [_log()] Compression: none
2025-11-24T10:02:56.419 [DEBUG] [Thread-187987] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:02:56.475 [DEBUG] [Thread-187987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:02:56.475 [DEBUG] [Thread-187987] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:02:56.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:02:56.475 [DEBUG] [Thread-187987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:02:56.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:02:56.532 [DEBUG] [Thread-187987] [transport.py] [_log()] userauth is OK
2025-11-24T10:02:56.532 [DEBUG] [Thread-187987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:02:56.532 [DEBUG] [Thread-187987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:02:56.532 [DEBUG] [Thread-187987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:02:56.532 [DEBUG] [Thread-187987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:02:56.546 [INFO] [Thread-187987] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:02:56.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:02:56.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:02:57.390 [DEBUG] [Thread-187987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:02:57.390 [DEBUG] [Thread-187987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:02:57.438 [DEBUG] [Thread-187987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:02:57.438 [DEBUG] [Thread-187987] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:02:57.446 [DEBUG] [Thread-187987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:02:57.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:02:57.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-11-24T10:02:57.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-11-24T10:02:57.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:02:57.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:02:57.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:02:57.478 [DEBUG] [Thread-187987] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:03:07.611 [DEBUG] [Thread-187989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:03:22.662 [DEBUG] [Thread-187990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:03:26.350 [DEBUG] [Thread-187991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:03:27.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:03:27.501 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:03:27.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-11-24T10:03:28.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 2, 57), 16.99, 31.84, 0.0, 23.43, 16.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:03:28.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:02:57
2025-11-24T10:03:28.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:03:28.595 [DEBUG] [Thread-187992] [transport.py] [_log()] starting thread (client mode): 0xd31cde70
2025-11-24T10:03:28.595 [DEBUG] [Thread-187992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:03:28.608 [DEBUG] [Thread-187992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:03:28.608 [INFO] [Thread-187992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:03:28.611 [DEBUG] [Thread-187992] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:03:28.611 [DEBUG] [Thread-187992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:03:28.611 [DEBUG] [Thread-187992] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:03:28.611 [DEBUG] [Thread-187992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:03:28.611 [DEBUG] [Thread-187992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:03:28.611 [DEBUG] [Thread-187992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] client lang: <none>
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] server lang: <none>
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] kex follows: False
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] Compression: none
2025-11-24T10:03:28.612 [DEBUG] [Thread-187992] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:03:28.629 [DEBUG] [Thread-187992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:03:28.629 [DEBUG] [Thread-187992] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:03:28.630 [DEBUG] [Thread-187992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:03:28.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:03:28.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:03:28.632 [DEBUG] [Thread-187992] [transport.py] [_log()] userauth is OK
2025-11-24T10:03:28.632 [DEBUG] [Thread-187992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:03:28.632 [DEBUG] [Thread-187992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:03:28.632 [DEBUG] [Thread-187992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:03:28.632 [DEBUG] [Thread-187992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:03:28.651 [INFO] [Thread-187992] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:03:28.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:03:29.293 [DEBUG] [Thread-187992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:03:29.293 [DEBUG] [Thread-187992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:03:29.293 [DEBUG] [Thread-187992] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:03:29.334 [DEBUG] [Thread-187992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:03:29.334 [DEBUG] [Thread-187992] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:03:29.337 [DEBUG] [Thread-187992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:03:29.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:03:29.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:03:29.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:03:29.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:03:29.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:03:29.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:03:29.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:03:29.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:03:29.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:03:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.335119 -999.00  +16.80  23.52     37   +2.30 1 1 1 1 1   888    0 16.56 84.82 ----- 23.5 23.5 167.6 27.8 23.2 -24.6 22.2 -24.6 21.2 -23.8 22.0 -24.7
2025-11-24T10:03:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:03:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:03:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.335119
2025-11-24T10:03:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:03:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:03:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:03:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:03:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:03:29.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:02:57', tmtdew=16.99, humidity=31.84, cloud=0.0, wind=23.43, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:02:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:03:29.356 [DEBUG] [Thread-187992] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:03:29.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:03:29.440 [DEBUG] [Thread-187995] [transport.py] [_log()] starting thread (client mode): 0xd7bc7340
2025-11-24T10:03:29.440 [DEBUG] [Thread-187995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:03:29.455 [DEBUG] [Thread-187995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:03:29.455 [INFO] [Thread-187995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] client lang: <none>
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] server lang: <none>
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] kex follows: False
2025-11-24T10:03:29.464 [DEBUG] [Thread-187995] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:03:29.465 [DEBUG] [Thread-187995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:03:29.465 [DEBUG] [Thread-187995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:03:29.465 [DEBUG] [Thread-187995] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:03:29.465 [DEBUG] [Thread-187995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:03:29.465 [DEBUG] [Thread-187995] [transport.py] [_log()] Compression: none
2025-11-24T10:03:29.465 [DEBUG] [Thread-187995] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:03:29.526 [DEBUG] [Thread-187995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:03:29.526 [DEBUG] [Thread-187995] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:03:29.526 [DEBUG] [Thread-187995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:03:29.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:03:29.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:03:29.586 [DEBUG] [Thread-187995] [transport.py] [_log()] userauth is OK
2025-11-24T10:03:29.586 [DEBUG] [Thread-187995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:03:29.586 [DEBUG] [Thread-187995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:03:29.586 [DEBUG] [Thread-187995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:03:29.586 [DEBUG] [Thread-187995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:03:29.605 [INFO] [Thread-187995] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:03:29.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:03:29.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:03:30.464 [DEBUG] [Thread-187995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:03:30.464 [DEBUG] [Thread-187995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:03:30.512 [DEBUG] [Thread-187995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:03:30.512 [DEBUG] [Thread-187995] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:03:30.522 [DEBUG] [Thread-187995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:03:30.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:03:30.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-11-24T10:03:30.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-11-24T10:03:30.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:03:30.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:03:30.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:03:30.556 [DEBUG] [Thread-187995] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:03:37.693 [DEBUG] [Thread-187997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:03:52.731 [DEBUG] [Thread-187998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:04:00.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:04:00.563 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:04:00.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-11-24T10:04:01.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 3, 30), 17.29, 31.11, 0.0, 23.94, 16.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:04:01.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:03:30
2025-11-24T10:04:01.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:04:01.580 [DEBUG] [Thread-187999] [transport.py] [_log()] starting thread (client mode): 0xd7bc4eb0
2025-11-24T10:04:01.581 [DEBUG] [Thread-187999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:04:01.601 [DEBUG] [Thread-187999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:04:01.601 [INFO] [Thread-187999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:04:01.604 [DEBUG] [Thread-187999] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:04:01.604 [DEBUG] [Thread-187999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] client lang: <none>
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] server lang: <none>
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] kex follows: False
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] Compression: none
2025-11-24T10:04:01.605 [DEBUG] [Thread-187999] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:04:01.615 [DEBUG] [Thread-187999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:04:01.615 [DEBUG] [Thread-187999] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:04:01.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:04:01.616 [DEBUG] [Thread-187999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:04:01.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:04:01.618 [DEBUG] [Thread-187999] [transport.py] [_log()] userauth is OK
2025-11-24T10:04:01.619 [DEBUG] [Thread-187999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:04:01.619 [DEBUG] [Thread-187999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:04:01.619 [DEBUG] [Thread-187999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:04:01.619 [DEBUG] [Thread-187999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:04:01.655 [INFO] [Thread-187999] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:04:01.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:04:02.302 [DEBUG] [Thread-187999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:04:02.302 [DEBUG] [Thread-187999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:04:02.303 [DEBUG] [Thread-187999] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:04:02.344 [DEBUG] [Thread-187999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:04:02.344 [DEBUG] [Thread-187999] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:04:02.348 [DEBUG] [Thread-187999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:04:02.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:04:02.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:04:02.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:04:02.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:04:02.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:04:02.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:04:02.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:04:02.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:04:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:04:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.335813 -999.00  +17.00  27.55     34   +1.30 1 1 1 1 1   888    0 17.20 104.20 ----- 27.6 27.6 164.4 31.3 23.2 -27.3 22.2 -25.6 21.4 -23.7 22.1 -26.3
2025-11-24T10:04:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:04:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:04:02.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.335813
2025-11-24T10:04:02.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:04:02.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:04:02.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:04:02.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:04:02.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:04:02.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:03:30', tmtdew=17.29, humidity=31.11, cloud=0.0, wind=23.94, temperature=16.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:03:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:04:02.387 [DEBUG] [Thread-187999] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:04:02.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:04:02.484 [DEBUG] [Thread-188002] [transport.py] [_log()] starting thread (client mode): 0xd0703b50
2025-11-24T10:04:02.484 [DEBUG] [Thread-188002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:04:02.499 [DEBUG] [Thread-188002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:04:02.499 [INFO] [Thread-188002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] client lang: <none>
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] server lang: <none>
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] kex follows: False
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] Compression: none
2025-11-24T10:04:02.508 [DEBUG] [Thread-188002] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:04:02.563 [DEBUG] [Thread-188002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:04:02.563 [DEBUG] [Thread-188002] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:04:02.563 [DEBUG] [Thread-188002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:04:02.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:04:02.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:04:02.629 [DEBUG] [Thread-188002] [transport.py] [_log()] userauth is OK
2025-11-24T10:04:02.629 [DEBUG] [Thread-188002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:04:02.629 [DEBUG] [Thread-188002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:04:02.629 [DEBUG] [Thread-188002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:04:02.629 [DEBUG] [Thread-188002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:04:02.646 [INFO] [Thread-188002] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:04:02.646 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:04:02.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:04:03.552 [DEBUG] [Thread-188002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:04:03.552 [DEBUG] [Thread-188002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:04:03.600 [DEBUG] [Thread-188002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:04:03.600 [DEBUG] [Thread-188002] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:04:03.608 [DEBUG] [Thread-188002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:04:03.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:04:03.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-11-24T10:04:03.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:04:03.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:04:03.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:04:03.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:04:03.642 [DEBUG] [Thread-188002] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:04:07.762 [DEBUG] [Thread-188004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:04:22.809 [DEBUG] [Thread-188005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:04:26.409 [DEBUG] [Thread-188006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:04:33.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:04:33.662 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:04:33.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-11-24T10:04:34.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 4, 2), 17.48, 30.73, 0.0, 23.45, 16.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:04:34.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:04:02
2025-11-24T10:04:34.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:04:34.665 [DEBUG] [Thread-188007] [transport.py] [_log()] starting thread (client mode): 0xd0701750
2025-11-24T10:04:34.665 [DEBUG] [Thread-188007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:04:34.684 [DEBUG] [Thread-188007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:04:34.685 [INFO] [Thread-188007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:04:34.687 [DEBUG] [Thread-188007] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] client lang: <none>
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] server lang: <none>
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] kex follows: False
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] Compression: none
2025-11-24T10:04:34.688 [DEBUG] [Thread-188007] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:04:34.706 [DEBUG] [Thread-188007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:04:34.707 [DEBUG] [Thread-188007] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:04:34.707 [DEBUG] [Thread-188007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:04:34.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:04:34.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:04:34.709 [DEBUG] [Thread-188007] [transport.py] [_log()] userauth is OK
2025-11-24T10:04:34.710 [DEBUG] [Thread-188007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:04:34.710 [DEBUG] [Thread-188007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:04:34.710 [DEBUG] [Thread-188007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:04:34.710 [DEBUG] [Thread-188007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:04:34.735 [INFO] [Thread-188007] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:04:34.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:04:35.363 [DEBUG] [Thread-188007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:04:35.363 [DEBUG] [Thread-188007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:04:35.364 [DEBUG] [Thread-188007] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:04:35.404 [DEBUG] [Thread-188007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:04:35.404 [DEBUG] [Thread-188007] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:04:35.407 [DEBUG] [Thread-188007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:04:35.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:04:35.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:04:35.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:04:35.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:04:35.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:04:35.423 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:04:35.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:04:35.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:04:35.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:04:35.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.336161 -999.00  +16.80  22.78     34   +1.10 1 1 1 1 1   888    0 17.18 99.40 ----- 22.8 22.8 173.2 39.6 23.2 -27.6 22.1 -31.1 21.2 -24.5 22.2 -25.8
2025-11-24T10:04:35.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:04:35.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:04:35.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.336161
2025-11-24T10:04:35.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:04:35.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:04:35.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:04:35.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:04:35.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:04:35.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:04:02', tmtdew=17.48, humidity=30.73, cloud=0.0, wind=23.45, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:04:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:04:35.425 [DEBUG] [Thread-188007] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:04:35.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:04:35.526 [DEBUG] [Thread-188010] [transport.py] [_log()] starting thread (client mode): 0xd0700b80
2025-11-24T10:04:35.526 [DEBUG] [Thread-188010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:04:35.544 [DEBUG] [Thread-188010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:04:35.544 [INFO] [Thread-188010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] client lang: <none>
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] server lang: <none>
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] kex follows: False
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:04:35.554 [DEBUG] [Thread-188010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:04:35.555 [DEBUG] [Thread-188010] [transport.py] [_log()] Compression: none
2025-11-24T10:04:35.555 [DEBUG] [Thread-188010] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:04:35.610 [DEBUG] [Thread-188010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:04:35.610 [DEBUG] [Thread-188010] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:04:35.610 [DEBUG] [Thread-188010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:04:35.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:04:35.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:04:35.674 [DEBUG] [Thread-188010] [transport.py] [_log()] userauth is OK
2025-11-24T10:04:35.674 [DEBUG] [Thread-188010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:04:35.674 [DEBUG] [Thread-188010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:04:35.675 [DEBUG] [Thread-188010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:04:35.675 [DEBUG] [Thread-188010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:04:35.689 [INFO] [Thread-188010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:04:35.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:04:35.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:04:36.568 [DEBUG] [Thread-188010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:04:36.568 [DEBUG] [Thread-188010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:04:36.616 [DEBUG] [Thread-188010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:04:36.616 [DEBUG] [Thread-188010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:04:36.624 [DEBUG] [Thread-188010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:04:36.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:04:36.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-11-24T10:04:36.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:04:36.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:04:36.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:04:36.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:04:36.656 [DEBUG] [Thread-188010] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:04:37.848 [DEBUG] [Thread-188012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:04:52.896 [DEBUG] [Thread-188013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:05:06.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:05:06.679 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:05:06.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-11-24T10:05:07.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 4, 35), 17.42, 30.38, 0.0, 21.19, 16.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:05:07.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:04:35
2025-11-24T10:05:07.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:05:07.771 [DEBUG] [Thread-188014] [transport.py] [_log()] starting thread (client mode): 0xd31b2ce0
2025-11-24T10:05:07.771 [DEBUG] [Thread-188014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:05:07.794 [DEBUG] [Thread-188014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:05:07.794 [INFO] [Thread-188014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] client lang: <none>
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] server lang: <none>
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] kex follows: False
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:05:07.798 [DEBUG] [Thread-188014] [transport.py] [_log()] Compression: none
2025-11-24T10:05:07.799 [DEBUG] [Thread-188014] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:05:07.813 [DEBUG] [Thread-188014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:05:07.813 [DEBUG] [Thread-188014] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:05:07.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:05:07.813 [DEBUG] [Thread-188014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:05:07.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:05:07.814 [DEBUG] [Thread-188014] [transport.py] [_log()] userauth is OK
2025-11-24T10:05:07.814 [DEBUG] [Thread-188014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:05:07.814 [DEBUG] [Thread-188014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:05:07.814 [DEBUG] [Thread-188014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:05:07.814 [DEBUG] [Thread-188014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:05:07.823 [INFO] [Thread-188014] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:05:07.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:05:07.923 [DEBUG] [Thread-188016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:05:09.933 [DEBUG] [Thread-188014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:05:09.933 [DEBUG] [Thread-188014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:05:09.934 [DEBUG] [Thread-188014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:05:09.974 [DEBUG] [Thread-188014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:05:09.974 [DEBUG] [Thread-188014] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:05:09.975 [DEBUG] [Thread-188014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:05:10.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:05:10.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:05:10.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:05:10.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:05:10.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:05:10.043 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:05:10.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:05:10.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:05:10.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:05:10.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.336509 -999.00  +16.60  12.47     35   +1.30 1 1 1 1 1   888    0 17.46 105.30 ----- 12.5 12.5 185.0 31.3 23.2 -27.0 22.0 -26.4 21.3 -24.2 22.1 -26.3
2025-11-24T10:05:10.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:05:10.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:05:10.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.336509
2025-11-24T10:05:10.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:05:10.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:05:10.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:05:10.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:05:10.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:05:10.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:04:35', tmtdew=17.42, humidity=30.38, cloud=0.0, wind=21.19, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:04:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:05:10.045 [DEBUG] [Thread-188014] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:05:10.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:05:10.138 [DEBUG] [Thread-188018] [transport.py] [_log()] starting thread (client mode): 0xd7bc5510
2025-11-24T10:05:10.138 [DEBUG] [Thread-188018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:05:10.154 [DEBUG] [Thread-188018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:05:10.154 [INFO] [Thread-188018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:05:10.162 [DEBUG] [Thread-188018] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:05:10.162 [DEBUG] [Thread-188018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:05:10.162 [DEBUG] [Thread-188018] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:05:10.162 [DEBUG] [Thread-188018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:05:10.162 [DEBUG] [Thread-188018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:05:10.162 [DEBUG] [Thread-188018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:05:10.162 [DEBUG] [Thread-188018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] client lang: <none>
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] server lang: <none>
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] kex follows: False
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] Compression: none
2025-11-24T10:05:10.163 [DEBUG] [Thread-188018] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:05:10.221 [DEBUG] [Thread-188018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:05:10.221 [DEBUG] [Thread-188018] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:05:10.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:05:10.222 [DEBUG] [Thread-188018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:05:10.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:05:10.280 [DEBUG] [Thread-188018] [transport.py] [_log()] userauth is OK
2025-11-24T10:05:10.280 [DEBUG] [Thread-188018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:05:10.280 [DEBUG] [Thread-188018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:05:10.280 [DEBUG] [Thread-188018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:05:10.280 [DEBUG] [Thread-188018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:05:10.300 [INFO] [Thread-188018] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:05:10.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:05:10.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:05:11.205 [DEBUG] [Thread-188018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:05:11.205 [DEBUG] [Thread-188018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:05:11.253 [DEBUG] [Thread-188018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:05:11.253 [DEBUG] [Thread-188018] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:05:11.261 [DEBUG] [Thread-188018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:05:11.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:05:11.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:05:11.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:05:11.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:05:11.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:05:11.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:05:11.293 [DEBUG] [Thread-188018] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:05:22.957 [DEBUG] [Thread-188020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:05:26.599 [DEBUG] [Thread-188021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:05:38.003 [DEBUG] [Thread-188022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:05:41.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:05:41.315 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:05:41.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-11-24T10:05:42.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 5, 7), 17.62, 30.0, 0.0, 21.6, 16.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:05:42.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:05:07
2025-11-24T10:05:42.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:05:42.442 [DEBUG] [Thread-188023] [transport.py] [_log()] starting thread (client mode): 0xd31b0340
2025-11-24T10:05:42.442 [DEBUG] [Thread-188023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:05:42.463 [DEBUG] [Thread-188023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:05:42.463 [INFO] [Thread-188023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] client lang: <none>
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] server lang: <none>
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] kex follows: False
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] Compression: none
2025-11-24T10:05:42.466 [DEBUG] [Thread-188023] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:05:42.482 [DEBUG] [Thread-188023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:05:42.482 [DEBUG] [Thread-188023] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:05:42.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:05:42.482 [DEBUG] [Thread-188023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:05:42.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:05:42.483 [DEBUG] [Thread-188023] [transport.py] [_log()] userauth is OK
2025-11-24T10:05:42.483 [DEBUG] [Thread-188023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:05:42.483 [DEBUG] [Thread-188023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:05:42.483 [DEBUG] [Thread-188023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:05:42.483 [DEBUG] [Thread-188023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:05:42.510 [INFO] [Thread-188023] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:05:42.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:05:43.146 [DEBUG] [Thread-188023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:05:43.147 [DEBUG] [Thread-188023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:05:43.147 [DEBUG] [Thread-188023] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:05:43.187 [DEBUG] [Thread-188023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:05:43.188 [DEBUG] [Thread-188023] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:05:43.190 [DEBUG] [Thread-188023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:05:43.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:05:43.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:05:43.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:05:43.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:05:43.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:05:43.214 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:05:43.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:05:43.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:05:43.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:05:43.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.336855 -999.00  +16.50  29.54     36   +1.40 1 1 1 1 1   888    0 17.33 98.83 ----- 29.5 29.5 178.0 31.1 23.2 -27.5 21.8 -27.7 21.3 -23.9 22.1 -27.4
2025-11-24T10:05:43.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:05:43.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:05:43.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.336855
2025-11-24T10:05:43.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:05:43.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:05:43.217 [DEBUG] [Thread-188023] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:05:43.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:05:43.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:05:43.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:05:43.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:05:07', tmtdew=17.62, humidity=30.0, cloud=0.0, wind=21.6, temperature=16.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:05:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:05: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-11-24T10:05:43.312 [DEBUG] [Thread-188026] [transport.py] [_log()] starting thread (client mode): 0xd0702a10
2025-11-24T10:05:43.312 [DEBUG] [Thread-188026] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:05:43.327 [DEBUG] [Thread-188026] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:05:43.327 [INFO] [Thread-188026] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:05:43.336 [DEBUG] [Thread-188026] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:05:43.337 [DEBUG] [Thread-188026] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:05:43.337 [DEBUG] [Thread-188026] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:05:43.337 [DEBUG] [Thread-188026] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:05:43.337 [DEBUG] [Thread-188026] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:05:43.337 [DEBUG] [Thread-188026] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:05:43.337 [DEBUG] [Thread-188026] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:05:43.337 [DEBUG] [Thread-188026] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:05:43.337 [DEBUG] [Thread-188026] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:05:43.338 [DEBUG] [Thread-188026] [transport.py] [_log()] client lang: <none>
2025-11-24T10:05:43.338 [DEBUG] [Thread-188026] [transport.py] [_log()] server lang: <none>
2025-11-24T10:05:43.338 [DEBUG] [Thread-188026] [transport.py] [_log()] kex follows: False
2025-11-24T10:05:43.338 [DEBUG] [Thread-188026] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:05:43.338 [DEBUG] [Thread-188026] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:05:43.338 [DEBUG] [Thread-188026] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:05:43.338 [DEBUG] [Thread-188026] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:05:43.339 [DEBUG] [Thread-188026] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:05:43.339 [DEBUG] [Thread-188026] [transport.py] [_log()] Compression: none
2025-11-24T10:05:43.339 [DEBUG] [Thread-188026] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:05:43.400 [DEBUG] [Thread-188026] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:05:43.401 [DEBUG] [Thread-188026] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:05:43.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:05:43.402 [DEBUG] [Thread-188026] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:05:43.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:05:43.456 [DEBUG] [Thread-188026] [transport.py] [_log()] userauth is OK
2025-11-24T10:05:43.456 [DEBUG] [Thread-188026] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:05:43.456 [DEBUG] [Thread-188026] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:05:43.456 [DEBUG] [Thread-188026] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:05:43.456 [DEBUG] [Thread-188026] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:05:43.474 [INFO] [Thread-188026] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:05:43.474 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:05:43.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:05:44.327 [DEBUG] [Thread-188026] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:05:44.327 [DEBUG] [Thread-188026] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:05:44.375 [DEBUG] [Thread-188026] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:05:44.376 [DEBUG] [Thread-188026] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:05:44.384 [DEBUG] [Thread-188026] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:05:44.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:05:44.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-11-24T10:05:44.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-11-24T10:05:44.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:05:44.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:05:44.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:05:44.421 [DEBUG] [Thread-188026] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:05:53.037 [DEBUG] [Thread-188028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:06:08.089 [DEBUG] [Thread-188029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:06:14.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:06:14.443 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:06:14.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-11-24T10:06:15.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 5, 39), 17.82, 29.65, 0.0, 25.97, 16.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:06:15.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:05:39
2025-11-24T10:06:15.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:06:15.516 [DEBUG] [Thread-188030] [transport.py] [_log()] starting thread (client mode): 0xd0700b20
2025-11-24T10:06:15.516 [DEBUG] [Thread-188030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:06:15.535 [DEBUG] [Thread-188030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:06:15.535 [INFO] [Thread-188030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:06:15.538 [DEBUG] [Thread-188030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:06:15.538 [DEBUG] [Thread-188030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:06:15.538 [DEBUG] [Thread-188030] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:06:15.538 [DEBUG] [Thread-188030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:06:15.538 [DEBUG] [Thread-188030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] client lang: <none>
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] server lang: <none>
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] kex follows: False
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] Compression: none
2025-11-24T10:06:15.539 [DEBUG] [Thread-188030] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:06:15.556 [DEBUG] [Thread-188030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:06:15.557 [DEBUG] [Thread-188030] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:06:15.558 [DEBUG] [Thread-188030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:06:15.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:06:15.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:06:15.559 [DEBUG] [Thread-188030] [transport.py] [_log()] userauth is OK
2025-11-24T10:06:15.560 [DEBUG] [Thread-188030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:06:15.560 [DEBUG] [Thread-188030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:06:15.560 [DEBUG] [Thread-188030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:06:15.560 [DEBUG] [Thread-188030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:06:15.577 [INFO] [Thread-188030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:06:15.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:06:16.230 [DEBUG] [Thread-188030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:06:16.230 [DEBUG] [Thread-188030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:06:16.230 [DEBUG] [Thread-188030] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:06:16.271 [DEBUG] [Thread-188030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:06:16.271 [DEBUG] [Thread-188030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:06:16.274 [DEBUG] [Thread-188030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:06:16.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:06:16.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:06:16.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:06:16.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:06:16.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:06:16.292 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:06:16.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:06:16.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:06:16.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:06:16.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.337202 -999.00  +16.60  28.40     35   +1.20 1 1 1 1 1   888    0 17.61 101.82 ----- 28.4 28.4 182.6 30.9 23.1 -26.3 21.9 -25.4 21.2 -26.0 22.1 -26.5
2025-11-24T10:06:16.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:06:16.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:06:16.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.337202
2025-11-24T10:06:16.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:06:16.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:06:16.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:06:16.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:06:16.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:06:16.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:05:39', tmtdew=17.82, humidity=29.65, cloud=0.0, wind=25.97, temperature=16.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:05:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:06:16.293 [DEBUG] [Thread-188030] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:06:16.367 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:06:16.377 [DEBUG] [Thread-188033] [transport.py] [_log()] starting thread (client mode): 0xd073b820
2025-11-24T10:06:16.377 [DEBUG] [Thread-188033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:06:16.392 [DEBUG] [Thread-188033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:06:16.392 [INFO] [Thread-188033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] client lang: <none>
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] server lang: <none>
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] kex follows: False
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:06:16.403 [DEBUG] [Thread-188033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:06:16.404 [DEBUG] [Thread-188033] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:06:16.404 [DEBUG] [Thread-188033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:06:16.404 [DEBUG] [Thread-188033] [transport.py] [_log()] Compression: none
2025-11-24T10:06:16.404 [DEBUG] [Thread-188033] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:06:16.462 [DEBUG] [Thread-188033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:06:16.462 [DEBUG] [Thread-188033] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:06:16.462 [DEBUG] [Thread-188033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:06:16.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:06:16.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:06:16.521 [DEBUG] [Thread-188033] [transport.py] [_log()] userauth is OK
2025-11-24T10:06:16.522 [DEBUG] [Thread-188033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:06:16.522 [DEBUG] [Thread-188033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:06:16.522 [DEBUG] [Thread-188033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:06:16.522 [DEBUG] [Thread-188033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:06:16.537 [INFO] [Thread-188033] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:06:16.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:06:16.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:06:17.381 [DEBUG] [Thread-188033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:06:17.382 [DEBUG] [Thread-188033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:06:17.429 [DEBUG] [Thread-188033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:06:17.429 [DEBUG] [Thread-188033] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:06:17.438 [DEBUG] [Thread-188033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:06:17.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:06:17.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-11-24T10:06:17.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:06:17.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:06:17.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:06:17.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:06:17.472 [DEBUG] [Thread-188033] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:06:23.118 [DEBUG] [Thread-188035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:06:26.787 [DEBUG] [Thread-188036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:06:38.179 [DEBUG] [Thread-188037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:06:47.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:06:47.494 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:06:47.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-11-24T10:06:48.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 6, 44), 17.64, 30.12, 0.0, 18.51, 16.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:06:48.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:06:44
2025-11-24T10:06:48.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:06:48.501 [DEBUG] [Thread-188038] [transport.py] [_log()] starting thread (client mode): 0xd073b8e0
2025-11-24T10:06:48.501 [DEBUG] [Thread-188038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:06:48.521 [DEBUG] [Thread-188038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:06:48.521 [INFO] [Thread-188038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] client lang: <none>
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] server lang: <none>
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] kex follows: False
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:06:48.524 [DEBUG] [Thread-188038] [transport.py] [_log()] Compression: none
2025-11-24T10:06:48.525 [DEBUG] [Thread-188038] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:06:48.539 [DEBUG] [Thread-188038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:06:48.539 [DEBUG] [Thread-188038] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:06:48.540 [DEBUG] [Thread-188038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:06:48.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:06:48.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:06:48.541 [DEBUG] [Thread-188038] [transport.py] [_log()] userauth is OK
2025-11-24T10:06:48.541 [DEBUG] [Thread-188038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:06:48.541 [DEBUG] [Thread-188038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:06:48.541 [DEBUG] [Thread-188038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:06:48.541 [DEBUG] [Thread-188038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:06:48.559 [INFO] [Thread-188038] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:06:48.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:06:49.161 [DEBUG] [Thread-188038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:06:49.161 [DEBUG] [Thread-188038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:06:49.161 [DEBUG] [Thread-188038] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:06:49.202 [DEBUG] [Thread-188038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:06:49.202 [DEBUG] [Thread-188038] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:06:49.204 [DEBUG] [Thread-188038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:06:49.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:06:49.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:06:49.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:06:49.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:06:49.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:06:49.222 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:06:49.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.337550 -999.00  +16.40  16.44     35   +0.90 1 1 1 1 1   888    0 17.17 105.78 ----- 16.4 16.4 191.0 23.0 23.1 -26.6 21.6 -29.4 21.1 -25.1 22.0 -26.7
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.337550
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:06:49.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:06:49.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:06:44', tmtdew=17.64, humidity=30.12, cloud=0.0, wind=18.51, temperature=16.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:06:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:06:49.223 [DEBUG] [Thread-188038] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:06: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-11-24T10:06:49.309 [DEBUG] [Thread-188041] [transport.py] [_log()] starting thread (client mode): 0xc9b818d0
2025-11-24T10:06:49.309 [DEBUG] [Thread-188041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:06:49.324 [DEBUG] [Thread-188041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:06:49.324 [INFO] [Thread-188041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:06:49.331 [DEBUG] [Thread-188041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] client lang: <none>
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] server lang: <none>
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] kex follows: False
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] Compression: none
2025-11-24T10:06:49.332 [DEBUG] [Thread-188041] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:06:49.394 [DEBUG] [Thread-188041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:06:49.394 [DEBUG] [Thread-188041] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:06:49.395 [DEBUG] [Thread-188041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:06:49.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:06:49.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:06:49.451 [DEBUG] [Thread-188041] [transport.py] [_log()] userauth is OK
2025-11-24T10:06:49.451 [DEBUG] [Thread-188041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:06:49.451 [DEBUG] [Thread-188041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:06:49.451 [DEBUG] [Thread-188041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:06:49.451 [DEBUG] [Thread-188041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:06:49.469 [INFO] [Thread-188041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:06:49.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:06:49.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:06:50.356 [DEBUG] [Thread-188041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:06:50.356 [DEBUG] [Thread-188041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:06:50.404 [DEBUG] [Thread-188041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:06:50.404 [DEBUG] [Thread-188041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:06:50.412 [DEBUG] [Thread-188041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:06:50.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:06:50.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-11-24T10:06:50.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-11-24T10:06:50.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:06:50.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:06:50.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:06:50.444 [DEBUG] [Thread-188041] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:06:53.211 [DEBUG] [Thread-188043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:07:08.264 [DEBUG] [Thread-188044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:07:20.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:07:20.467 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:07:20.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-11-24T10:07:21.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 7, 17), 17.35, 30.71, 0.0, 22.69, 16.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:07:21.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:07:17
2025-11-24T10:07:21.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:07:21.528 [DEBUG] [Thread-188045] [transport.py] [_log()] starting thread (client mode): 0xc9b830d0
2025-11-24T10:07:21.528 [DEBUG] [Thread-188045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:07:21.539 [DEBUG] [Thread-188045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:07:21.539 [INFO] [Thread-188045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:07:21.540 [DEBUG] [Thread-188045] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:07:21.540 [DEBUG] [Thread-188045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:07:21.540 [DEBUG] [Thread-188045] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:07:21.540 [DEBUG] [Thread-188045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] client lang: <none>
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] server lang: <none>
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] kex follows: False
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] Compression: none
2025-11-24T10:07:21.541 [DEBUG] [Thread-188045] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:07:21.549 [DEBUG] [Thread-188045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:07:21.549 [DEBUG] [Thread-188045] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:07:21.549 [DEBUG] [Thread-188045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:07:21.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:07:21.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:07:21.550 [DEBUG] [Thread-188045] [transport.py] [_log()] userauth is OK
2025-11-24T10:07:21.550 [DEBUG] [Thread-188045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:07:21.550 [DEBUG] [Thread-188045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:07:21.550 [DEBUG] [Thread-188045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:07:21.550 [DEBUG] [Thread-188045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:07:21.568 [INFO] [Thread-188045] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:07:21.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:07:22.204 [DEBUG] [Thread-188045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:07:22.204 [DEBUG] [Thread-188045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:07:22.205 [DEBUG] [Thread-188045] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:07:22.244 [DEBUG] [Thread-188045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:07:22.244 [DEBUG] [Thread-188045] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:07:22.246 [DEBUG] [Thread-188045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:07:22.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:07:22.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:07:22.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:07:22.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:07:22.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:07:22.273 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:07:22.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.337897 -999.00  +16.80  12.31     35   +1.40 1 1 1 1 1   888    0 17.55 108.51 ----- 12.3 12.3 194.1 27.8 23.1 -26.6 21.9 -26.1 21.3 -24.2 22.0 -25.7
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.337897
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:07:22.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:07:17', tmtdew=17.35, humidity=30.71, cloud=0.0, wind=22.69, temperature=16.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:06:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:07:22.275 [DEBUG] [Thread-188045] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:07:22.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:07:22.358 [DEBUG] [Thread-188048] [transport.py] [_log()] starting thread (client mode): 0xd31b3820
2025-11-24T10:07:22.358 [DEBUG] [Thread-188048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:07:22.373 [DEBUG] [Thread-188048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:07:22.373 [INFO] [Thread-188048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] client lang: <none>
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] server lang: <none>
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] kex follows: False
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] Compression: none
2025-11-24T10:07:22.381 [DEBUG] [Thread-188048] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:07:22.438 [DEBUG] [Thread-188048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:07:22.438 [DEBUG] [Thread-188048] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:07:22.438 [DEBUG] [Thread-188048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:07:22.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:07:22.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:07:22.495 [DEBUG] [Thread-188048] [transport.py] [_log()] userauth is OK
2025-11-24T10:07:22.496 [DEBUG] [Thread-188048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:07:22.496 [DEBUG] [Thread-188048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:07:22.496 [DEBUG] [Thread-188048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:07:22.496 [DEBUG] [Thread-188048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:07:22.510 [INFO] [Thread-188048] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:07:22.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:07:22.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:07:23.293 [DEBUG] [Thread-188050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:07:23.388 [DEBUG] [Thread-188048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:07:23.389 [DEBUG] [Thread-188048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:07:23.436 [DEBUG] [Thread-188048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:07:23.436 [DEBUG] [Thread-188048] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:07:23.444 [DEBUG] [Thread-188048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:07:23.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:07:23.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-11-24T10:07:23.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-11-24T10:07:23.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:07:23.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:07:23.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:07:23.475 [DEBUG] [Thread-188048] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:07:26.848 [DEBUG] [Thread-188051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:07:38.330 [DEBUG] [Thread-188052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:07:53.369 [DEBUG] [Thread-188053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:07:53.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:07:53.483 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:07:53.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-11-24T10:07:54.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 7, 49), 17.38, 30.33, 0.0, 22.71, 16.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:07:54.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:07:49
2025-11-24T10:07:54.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:07:54.518 [DEBUG] [Thread-188054] [transport.py] [_log()] starting thread (client mode): 0xc9b80400
2025-11-24T10:07:54.518 [DEBUG] [Thread-188054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:07:54.538 [DEBUG] [Thread-188054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:07:54.539 [INFO] [Thread-188054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:07:54.549 [DEBUG] [Thread-188054] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:07:54.549 [DEBUG] [Thread-188054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:07:54.549 [DEBUG] [Thread-188054] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:07:54.549 [DEBUG] [Thread-188054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:07:54.549 [DEBUG] [Thread-188054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:07:54.549 [DEBUG] [Thread-188054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] client lang: <none>
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] server lang: <none>
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] kex follows: False
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] Compression: none
2025-11-24T10:07:54.550 [DEBUG] [Thread-188054] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:07:54.561 [DEBUG] [Thread-188054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:07:54.561 [DEBUG] [Thread-188054] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:07:54.562 [DEBUG] [Thread-188054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:07:54.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:07:54.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:07:54.562 [DEBUG] [Thread-188054] [transport.py] [_log()] userauth is OK
2025-11-24T10:07:54.562 [DEBUG] [Thread-188054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:07:54.562 [DEBUG] [Thread-188054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:07:54.562 [DEBUG] [Thread-188054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:07:54.562 [DEBUG] [Thread-188054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:07:54.589 [INFO] [Thread-188054] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:07:54.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:07:55.238 [DEBUG] [Thread-188054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:07:55.238 [DEBUG] [Thread-188054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:07:55.239 [DEBUG] [Thread-188054] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:07:55.280 [DEBUG] [Thread-188054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:07:55.280 [DEBUG] [Thread-188054] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:07:55.284 [DEBUG] [Thread-188054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:07:55.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:07:55.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:07:55.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:07:55.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:07:55.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:07:55.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:07:55.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:07:55.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:07:55.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:07:55.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.338244 -999.00  +17.00  25.36     34   +1.30 1 1 1 1 1   888    0 17.38 97.21 ----- 25.4 25.4 198.6 31.0 23.2 -25.7 21.9 -25.8 21.3 -25.1 22.1 -25.3
2025-11-24T10:07:55.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:07:55.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:07:55.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.338244
2025-11-24T10:07:55.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:07:55.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:07:55.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:07:55.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:07:55.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:07:55.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:07:49', tmtdew=17.38, humidity=30.33, cloud=0.0, wind=22.71, temperature=16.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:07:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:07:55.324 [DEBUG] [Thread-188054] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:07:55.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:07:55.419 [DEBUG] [Thread-188057] [transport.py] [_log()] starting thread (client mode): 0xd0739600
2025-11-24T10:07:55.420 [DEBUG] [Thread-188057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:07:55.433 [DEBUG] [Thread-188057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:07:55.434 [INFO] [Thread-188057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:07:55.441 [DEBUG] [Thread-188057] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:07:55.441 [DEBUG] [Thread-188057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] client lang: <none>
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] server lang: <none>
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] kex follows: False
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:07:55.442 [DEBUG] [Thread-188057] [transport.py] [_log()] Compression: none
2025-11-24T10:07:55.443 [DEBUG] [Thread-188057] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:07:55.500 [DEBUG] [Thread-188057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:07:55.500 [DEBUG] [Thread-188057] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:07:55.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:07:55.501 [DEBUG] [Thread-188057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:07:55.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:07:55.556 [DEBUG] [Thread-188057] [transport.py] [_log()] userauth is OK
2025-11-24T10:07:55.556 [DEBUG] [Thread-188057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:07:55.556 [DEBUG] [Thread-188057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:07:55.557 [DEBUG] [Thread-188057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:07:55.557 [DEBUG] [Thread-188057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:07:55.575 [INFO] [Thread-188057] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:07:55.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:07:55.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:07:56.463 [DEBUG] [Thread-188057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:07:56.464 [DEBUG] [Thread-188057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:07:56.511 [DEBUG] [Thread-188057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:07:56.512 [DEBUG] [Thread-188057] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:07:56.521 [DEBUG] [Thread-188057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:07:56.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:07:56.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-11-24T10:07:56.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-11-24T10:07:56.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:07:56.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:07:56.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:07:56.558 [DEBUG] [Thread-188057] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:08:08.398 [DEBUG] [Thread-188059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:08:23.459 [DEBUG] [Thread-188060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:08:26.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:08:26.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:08:26.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:08:26.881 [DEBUG] [Thread-188061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:08:27.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 8, 22), 17.61, 29.9, 0.0, 23.64, 16.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:08:27.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:08:22
2025-11-24T10:08:27.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:08:27.597 [DEBUG] [Thread-188062] [transport.py] [_log()] starting thread (client mode): 0xd7bc5660
2025-11-24T10:08:27.597 [DEBUG] [Thread-188062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:08:27.617 [DEBUG] [Thread-188062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:08:27.617 [INFO] [Thread-188062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:08:27.619 [DEBUG] [Thread-188062] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:08:27.619 [DEBUG] [Thread-188062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:08:27.619 [DEBUG] [Thread-188062] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] client lang: <none>
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] server lang: <none>
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] kex follows: False
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:08:27.620 [DEBUG] [Thread-188062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:08:27.621 [DEBUG] [Thread-188062] [transport.py] [_log()] Compression: none
2025-11-24T10:08:27.621 [DEBUG] [Thread-188062] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:08:27.633 [DEBUG] [Thread-188062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:08:27.633 [DEBUG] [Thread-188062] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:08:27.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:08:27.634 [DEBUG] [Thread-188062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:08:27.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:08:27.636 [DEBUG] [Thread-188062] [transport.py] [_log()] userauth is OK
2025-11-24T10:08:27.637 [DEBUG] [Thread-188062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:08:27.637 [DEBUG] [Thread-188062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:08:27.637 [DEBUG] [Thread-188062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:08:27.637 [DEBUG] [Thread-188062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:08:27.661 [INFO] [Thread-188062] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:08:27.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:08:28.304 [DEBUG] [Thread-188062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:08:28.305 [DEBUG] [Thread-188062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:08:28.305 [DEBUG] [Thread-188062] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:08:28.346 [DEBUG] [Thread-188062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:08:28.346 [DEBUG] [Thread-188062] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:08:28.349 [DEBUG] [Thread-188062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:08:28.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:08:28.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:08:28.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:08:28.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:08:28.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:08:28.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:08:28.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:08:28.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:08:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:08:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.338938 -999.00  +17.10  17.35     35   +1.70 1 1 1 1 1   888    0 17.15 84.84 ----- 17.4 17.4 164.7 30.6 23.3 -25.2 22.1 -25.6 21.4 -24.6 22.2 -24.3
2025-11-24T10:08:28.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:08:28.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:08:28.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.338938
2025-11-24T10:08:28.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:08:28.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:08:28.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:08:28.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:08:28.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:08:28.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:08:22', tmtdew=17.61, humidity=29.9, cloud=0.0, wind=23.64, temperature=16.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:08:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:08:28.386 [DEBUG] [Thread-188062] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:08:28.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:08:28.481 [DEBUG] [Thread-188065] [transport.py] [_log()] starting thread (client mode): 0xd073a440
2025-11-24T10:08:28.482 [DEBUG] [Thread-188065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:08:28.497 [DEBUG] [Thread-188065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:08:28.497 [INFO] [Thread-188065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:08:28.504 [DEBUG] [Thread-188065] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] client lang: <none>
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] server lang: <none>
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] kex follows: False
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:08:28.505 [DEBUG] [Thread-188065] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:08:28.514 [DEBUG] [Thread-188065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:08:28.514 [DEBUG] [Thread-188065] [transport.py] [_log()] Compression: none
2025-11-24T10:08:28.514 [DEBUG] [Thread-188065] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:08:28.568 [DEBUG] [Thread-188065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:08:28.568 [DEBUG] [Thread-188065] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:08:28.569 [DEBUG] [Thread-188065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:08:28.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:08:28.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:08:28.624 [DEBUG] [Thread-188065] [transport.py] [_log()] userauth is OK
2025-11-24T10:08:28.624 [DEBUG] [Thread-188065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:08:28.624 [DEBUG] [Thread-188065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:08:28.625 [DEBUG] [Thread-188065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:08:28.625 [DEBUG] [Thread-188065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:08:28.650 [INFO] [Thread-188065] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:08:28.651 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:08:28.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:08:29.532 [DEBUG] [Thread-188065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:08:29.532 [DEBUG] [Thread-188065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:08:29.580 [DEBUG] [Thread-188065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:08:29.581 [DEBUG] [Thread-188065] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:08:29.590 [DEBUG] [Thread-188065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:08:29.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:08:29.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-11-24T10:08:29.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-11-24T10:08:29.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:08:29.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:08:29.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:08:29.627 [DEBUG] [Thread-188065] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:08:38.499 [DEBUG] [Thread-188067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:08:53.546 [DEBUG] [Thread-188068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:08:59.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:08:59.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:08:59.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-11-24T10:09:00.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 8, 54), 17.91, 29.5, 0.0, 30.19, 17.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:09:00.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:08:54
2025-11-24T10:09:00.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:09:00.680 [DEBUG] [Thread-188069] [transport.py] [_log()] starting thread (client mode): 0xc9b832e0
2025-11-24T10:09:00.680 [DEBUG] [Thread-188069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:09:00.689 [DEBUG] [Thread-188069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:09:00.689 [INFO] [Thread-188069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:09:00.692 [DEBUG] [Thread-188069] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:09:00.692 [DEBUG] [Thread-188069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:09:00.692 [DEBUG] [Thread-188069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:09:00.692 [DEBUG] [Thread-188069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] client lang: <none>
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] server lang: <none>
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] kex follows: False
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] Compression: none
2025-11-24T10:09:00.693 [DEBUG] [Thread-188069] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:09:00.706 [DEBUG] [Thread-188069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:09:00.706 [DEBUG] [Thread-188069] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:09:00.706 [DEBUG] [Thread-188069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:09:00.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:09:00.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:09:00.707 [DEBUG] [Thread-188069] [transport.py] [_log()] userauth is OK
2025-11-24T10:09:00.707 [DEBUG] [Thread-188069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:09:00.707 [DEBUG] [Thread-188069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:09:00.707 [DEBUG] [Thread-188069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:09:00.707 [DEBUG] [Thread-188069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:09:00.717 [INFO] [Thread-188069] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:09:00.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:09:01.309 [DEBUG] [Thread-188069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:09:01.309 [DEBUG] [Thread-188069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:09:01.309 [DEBUG] [Thread-188069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:09:01.350 [DEBUG] [Thread-188069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:09:01.350 [DEBUG] [Thread-188069] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:09:01.352 [DEBUG] [Thread-188069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:09:01.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:09:01.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:09:01.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:09:01.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:09:01.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:09:01.372 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:09:01.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:09:01.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:09:01.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:09:01.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.339286 -999.00  +17.10  21.22     35   +1.60 1 1 1 1 1   888    0 17.28 80.12 ----- 21.2 21.2 175.2 28.2 23.3 -26.3 22.2 -25.4 21.4 -23.5 22.3 -26.0
2025-11-24T10:09:01.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:09:01.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:09:01.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.339286
2025-11-24T10:09:01.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:09:01.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:09:01.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:09:01.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:09:01.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:09:01.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:08:54', tmtdew=17.91, humidity=29.5, cloud=0.0, wind=30.19, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:08:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:09:01.373 [DEBUG] [Thread-188069] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:09:01.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:09:01.457 [DEBUG] [Thread-188072] [transport.py] [_log()] starting thread (client mode): 0xd31cdb10
2025-11-24T10:09:01.457 [DEBUG] [Thread-188072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:09:01.472 [DEBUG] [Thread-188072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:09:01.472 [INFO] [Thread-188072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] client lang: <none>
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] server lang: <none>
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] kex follows: False
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:09:01.480 [DEBUG] [Thread-188072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:09:01.481 [DEBUG] [Thread-188072] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:09:01.482 [DEBUG] [Thread-188072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:09:01.482 [DEBUG] [Thread-188072] [transport.py] [_log()] Compression: none
2025-11-24T10:09:01.482 [DEBUG] [Thread-188072] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:09:01.538 [DEBUG] [Thread-188072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:09:01.538 [DEBUG] [Thread-188072] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:09:01.538 [DEBUG] [Thread-188072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:09:01.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:09:01.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:09:01.596 [DEBUG] [Thread-188072] [transport.py] [_log()] userauth is OK
2025-11-24T10:09:01.596 [DEBUG] [Thread-188072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:09:01.596 [DEBUG] [Thread-188072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:09:01.596 [DEBUG] [Thread-188072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:09:01.596 [DEBUG] [Thread-188072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:09:01.611 [INFO] [Thread-188072] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:09:01.611 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:09:01.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:09:02.511 [DEBUG] [Thread-188072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:09:02.511 [DEBUG] [Thread-188072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:09:02.559 [DEBUG] [Thread-188072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:09:02.559 [DEBUG] [Thread-188072] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:09:02.567 [DEBUG] [Thread-188072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:09:02.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:09:02.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-11-24T10:09:02.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-11-24T10:09:02.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:09:02.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:09:02.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:09:02.601 [DEBUG] [Thread-188072] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:09:08.576 [DEBUG] [Thread-188074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:09:23.621 [DEBUG] [Thread-188075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:09:27.202 [DEBUG] [Thread-188076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:09:32.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:09:32.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:09:32.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-11-24T10:09:33.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 9, 26), 17.82, 29.59, 0.0, 26.49, 17.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:09:33.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:09:26
2025-11-24T10:09:33.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:09:33.631 [DEBUG] [Thread-188077] [transport.py] [_log()] starting thread (client mode): 0xd073b820
2025-11-24T10:09:33.632 [DEBUG] [Thread-188077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:09:33.646 [DEBUG] [Thread-188077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:09:33.646 [INFO] [Thread-188077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:09:33.647 [DEBUG] [Thread-188077] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:09:33.647 [DEBUG] [Thread-188077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:09:33.647 [DEBUG] [Thread-188077] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] client lang: <none>
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] server lang: <none>
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] kex follows: False
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] Compression: none
2025-11-24T10:09:33.648 [DEBUG] [Thread-188077] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:09:33.656 [DEBUG] [Thread-188077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:09:33.656 [DEBUG] [Thread-188077] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:09:33.656 [DEBUG] [Thread-188077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:09:33.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:09:33.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:09:33.659 [DEBUG] [Thread-188077] [transport.py] [_log()] userauth is OK
2025-11-24T10:09:33.659 [DEBUG] [Thread-188077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:09:33.659 [DEBUG] [Thread-188077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:09:33.659 [DEBUG] [Thread-188077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:09:33.659 [DEBUG] [Thread-188077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:09:33.673 [INFO] [Thread-188077] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:09:33.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:09:34.316 [DEBUG] [Thread-188077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:09:34.316 [DEBUG] [Thread-188077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:09:34.316 [DEBUG] [Thread-188077] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:09:34.357 [DEBUG] [Thread-188077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:09:34.357 [DEBUG] [Thread-188077] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:09:34.359 [DEBUG] [Thread-188077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:09:34.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:09:34.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:09:34.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:09:34.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:09:34.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:09:34.385 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:09:34.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:09:34.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:09:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:09:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.339633 -999.00  +17.30  17.62     34   +1.50 1 1 1 1 1   888    0 16.82 78.11 ----- 17.6 17.6 172.6 30.0 23.4 -25.7 22.3 -25.8 21.6 -23.0 22.3 -25.8
2025-11-24T10:09:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:09:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:09:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.339633
2025-11-24T10:09:34.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:09:34.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:09:34.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:09:34.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:09:34.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:09:34.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:09:26', tmtdew=17.82, humidity=29.59, cloud=0.0, wind=26.49, temperature=17.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:09:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:09:34.387 [DEBUG] [Thread-188077] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:09:34.459 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:09:34.471 [DEBUG] [Thread-188080] [transport.py] [_log()] starting thread (client mode): 0xd0710640
2025-11-24T10:09:34.471 [DEBUG] [Thread-188080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:09:34.486 [DEBUG] [Thread-188080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:09:34.487 [INFO] [Thread-188080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] client lang: <none>
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] server lang: <none>
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] kex follows: False
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:09:34.494 [DEBUG] [Thread-188080] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:09:34.495 [DEBUG] [Thread-188080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:09:34.495 [DEBUG] [Thread-188080] [transport.py] [_log()] Compression: none
2025-11-24T10:09:34.495 [DEBUG] [Thread-188080] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:09:34.555 [DEBUG] [Thread-188080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:09:34.555 [DEBUG] [Thread-188080] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:09:34.555 [DEBUG] [Thread-188080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:09:34.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:09:34.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:09:34.611 [DEBUG] [Thread-188080] [transport.py] [_log()] userauth is OK
2025-11-24T10:09:34.611 [DEBUG] [Thread-188080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:09:34.611 [DEBUG] [Thread-188080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:09:34.612 [DEBUG] [Thread-188080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:09:34.612 [DEBUG] [Thread-188080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:09:34.626 [INFO] [Thread-188080] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:09:34.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:09:34.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:09:35.485 [DEBUG] [Thread-188080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:09:35.485 [DEBUG] [Thread-188080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:09:35.532 [DEBUG] [Thread-188080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:09:35.533 [DEBUG] [Thread-188080] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:09:35.542 [DEBUG] [Thread-188080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:09:35.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:09:35.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-11-24T10:09:35.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-11-24T10:09:35.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:09:35.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:09:35.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:09:35.578 [DEBUG] [Thread-188080] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:09:38.661 [DEBUG] [Thread-188082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:09:53.704 [DEBUG] [Thread-188083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:10:05.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:10:05.611 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:10:05.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-11-24T10:10:06.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 9, 59), 17.51, 30.2, 0.0, 19.51, 16.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:10:06.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:09:59
2025-11-24T10:10:06.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:10:06.804 [DEBUG] [Thread-188084] [transport.py] [_log()] starting thread (client mode): 0xd0711510
2025-11-24T10:10:06.805 [DEBUG] [Thread-188084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:10:06.809 [DEBUG] [Thread-188084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:10:06.809 [INFO] [Thread-188084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] client lang: <none>
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] server lang: <none>
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] kex follows: False
2025-11-24T10:10:06.813 [DEBUG] [Thread-188084] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:10:06.814 [DEBUG] [Thread-188084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:10:06.814 [DEBUG] [Thread-188084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:10:06.814 [DEBUG] [Thread-188084] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:10:06.814 [DEBUG] [Thread-188084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:10:06.814 [DEBUG] [Thread-188084] [transport.py] [_log()] Compression: none
2025-11-24T10:10:06.814 [DEBUG] [Thread-188084] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:10:06.840 [DEBUG] [Thread-188084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:10:06.843 [DEBUG] [Thread-188084] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:10:06.844 [DEBUG] [Thread-188084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:10:06.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:10:06.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:10:06.884 [DEBUG] [Thread-188084] [transport.py] [_log()] userauth is OK
2025-11-24T10:10:06.884 [DEBUG] [Thread-188084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:10:06.884 [DEBUG] [Thread-188084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:10:06.884 [DEBUG] [Thread-188084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:10:06.884 [DEBUG] [Thread-188084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:10:06.903 [INFO] [Thread-188084] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:10:06.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:10:08.773 [DEBUG] [Thread-188086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:10:11.176 [DEBUG] [Thread-188084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:10:11.176 [DEBUG] [Thread-188084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:10:11.179 [DEBUG] [Thread-188084] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:10:11.217 [DEBUG] [Thread-188084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:10:11.217 [DEBUG] [Thread-188084] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:10:11.219 [DEBUG] [Thread-188084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:10:11.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:10:11.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:10:11.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:10:11.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:10:11.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:10:11.240 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:10:11.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:10:11.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:10:11.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:10:11.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.339980 -999.00  +17.50  19.95     34   +1.50 1 1 1 1 1   888    0 16.77 71.92 ----- 19.9 19.9 165.0 22.6 23.7 -24.8 22.6 -25.7 21.8 -23.9 22.5 -24.2
2025-11-24T10:10:11.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:10:11.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:10:11.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.339980
2025-11-24T10:10:11.248 [DEBUG] [Thread-188084] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:10:11.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:10:11.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:10:11.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:10:11.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:10:11.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:10:11.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:09:59', tmtdew=17.51, humidity=30.2, cloud=0.0, wind=19.51, temperature=16.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:09:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:10:11.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:10:11.344 [DEBUG] [Thread-188088] [transport.py] [_log()] starting thread (client mode): 0xd3190160
2025-11-24T10:10:11.344 [DEBUG] [Thread-188088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:10:11.359 [DEBUG] [Thread-188088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:10:11.359 [INFO] [Thread-188088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] client lang: <none>
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] server lang: <none>
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] kex follows: False
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:10:11.367 [DEBUG] [Thread-188088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:10:11.368 [DEBUG] [Thread-188088] [transport.py] [_log()] Compression: none
2025-11-24T10:10:11.368 [DEBUG] [Thread-188088] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:10:11.423 [DEBUG] [Thread-188088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:10:11.423 [DEBUG] [Thread-188088] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:10:11.423 [DEBUG] [Thread-188088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:10:11.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:10:11.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:10:11.479 [DEBUG] [Thread-188088] [transport.py] [_log()] userauth is OK
2025-11-24T10:10:11.479 [DEBUG] [Thread-188088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:10:11.479 [DEBUG] [Thread-188088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:10:11.479 [DEBUG] [Thread-188088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:10:11.479 [DEBUG] [Thread-188088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:10:11.493 [INFO] [Thread-188088] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:10:11.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:10:11.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:10:12.347 [DEBUG] [Thread-188088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:10:12.347 [DEBUG] [Thread-188088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:10:12.395 [DEBUG] [Thread-188088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:10:12.395 [DEBUG] [Thread-188088] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:10:12.404 [DEBUG] [Thread-188088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:10:12.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:10:12.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-11-24T10:10:12.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:10:12.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:10:12.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:10:12.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:10:12.438 [DEBUG] [Thread-188088] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:10:23.824 [DEBUG] [Thread-188090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:10:27.473 [DEBUG] [Thread-188091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:10:38.919 [DEBUG] [Thread-188092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:10:42.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:10:42.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:10:42.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-11-24T10:10:43.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 10, 31), 17.21, 30.81, 0.0, 17.15, 16.07, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:10:43.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:10:31
2025-11-24T10:10:43.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:10:43.480 [DEBUG] [Thread-188093] [transport.py] [_log()] starting thread (client mode): 0xd07127a0
2025-11-24T10:10:43.480 [DEBUG] [Thread-188093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:10:43.492 [DEBUG] [Thread-188093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:10:43.492 [INFO] [Thread-188093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:10:43.495 [DEBUG] [Thread-188093] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:10:43.495 [DEBUG] [Thread-188093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:10:43.495 [DEBUG] [Thread-188093] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] client lang: <none>
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] server lang: <none>
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] kex follows: False
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:10:43.496 [DEBUG] [Thread-188093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:10:43.497 [DEBUG] [Thread-188093] [transport.py] [_log()] Compression: none
2025-11-24T10:10:43.497 [DEBUG] [Thread-188093] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:10:43.529 [DEBUG] [Thread-188093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:10:43.533 [DEBUG] [Thread-188093] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:10:43.535 [DEBUG] [Thread-188093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:10:43.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:10:43.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:10:43.540 [DEBUG] [Thread-188093] [transport.py] [_log()] userauth is OK
2025-11-24T10:10:43.540 [DEBUG] [Thread-188093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:10:43.540 [DEBUG] [Thread-188093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:10:43.540 [DEBUG] [Thread-188093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:10:43.540 [DEBUG] [Thread-188093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:10:43.579 [INFO] [Thread-188093] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:10:43.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:10:44.259 [DEBUG] [Thread-188093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:10:44.259 [DEBUG] [Thread-188093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:10:44.268 [DEBUG] [Thread-188093] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:10:44.300 [DEBUG] [Thread-188093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:10:44.300 [DEBUG] [Thread-188093] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:10:44.302 [DEBUG] [Thread-188093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:10:44.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:10:44.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:10:44.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:10:44.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:10:44.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:10:44.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:10:44.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:10:44.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:10:44.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:10:44.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.340327 -999.00  +17.30  18.07     35   +1.80 1 1 1 1 1   888    0 16.83 68.46 ----- 18.1 18.1 183.6 27.3 23.7 -28.0 22.6 -27.5 21.7 -23.7 22.6 -25.8
2025-11-24T10:10:44.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:10:44.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:10:44.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.340327
2025-11-24T10:10:44.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:10:44.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:10:44.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:10:44.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:10:44.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:10:44.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:10:31', tmtdew=17.21, humidity=30.81, cloud=0.0, wind=17.15, temperature=16.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:10:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:10:44.328 [DEBUG] [Thread-188093] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:10:44.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:10:44.411 [DEBUG] [Thread-188096] [transport.py] [_log()] starting thread (client mode): 0xd0713250
2025-11-24T10:10:44.411 [DEBUG] [Thread-188096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:10:44.426 [DEBUG] [Thread-188096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:10:44.426 [INFO] [Thread-188096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:10:44.433 [DEBUG] [Thread-188096] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] client lang: <none>
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] server lang: <none>
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] kex follows: False
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] Compression: none
2025-11-24T10:10:44.434 [DEBUG] [Thread-188096] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:10:44.494 [DEBUG] [Thread-188096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:10:44.495 [DEBUG] [Thread-188096] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:10:44.495 [DEBUG] [Thread-188096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:10:44.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:10:44.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:10:44.551 [DEBUG] [Thread-188096] [transport.py] [_log()] userauth is OK
2025-11-24T10:10:44.551 [DEBUG] [Thread-188096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:10:44.551 [DEBUG] [Thread-188096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:10:44.551 [DEBUG] [Thread-188096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:10:44.551 [DEBUG] [Thread-188096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:10:44.569 [INFO] [Thread-188096] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:10:44.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:10:44.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:10:45.422 [DEBUG] [Thread-188096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:10:45.423 [DEBUG] [Thread-188096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:10:45.470 [DEBUG] [Thread-188096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:10:45.471 [DEBUG] [Thread-188096] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:10:45.479 [DEBUG] [Thread-188096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:10:45.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:10:45.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-11-24T10:10: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') -> 00000000
2025-11-24T10:10:45.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:10:45.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:10:45.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:10:45.523 [DEBUG] [Thread-188096] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:10:53.961 [DEBUG] [Thread-188098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:11:09.012 [DEBUG] [Thread-188099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:11:15.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:11:15.546 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:11:15.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:11:16.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 11, 4), 17.58, 30.08, 0.0, 21.05, 16.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:11:16.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:11:04
2025-11-24T10:11:16.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:11:16.653 [DEBUG] [Thread-188100] [transport.py] [_log()] starting thread (client mode): 0xd7bc5bd0
2025-11-24T10:11:16.653 [DEBUG] [Thread-188100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:11:16.675 [DEBUG] [Thread-188100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:11:16.675 [INFO] [Thread-188100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] client lang: <none>
2025-11-24T10:11:16.678 [DEBUG] [Thread-188100] [transport.py] [_log()] server lang: <none>
2025-11-24T10:11:16.679 [DEBUG] [Thread-188100] [transport.py] [_log()] kex follows: False
2025-11-24T10:11:16.679 [DEBUG] [Thread-188100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:11:16.679 [DEBUG] [Thread-188100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:11:16.679 [DEBUG] [Thread-188100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:11:16.679 [DEBUG] [Thread-188100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:11:16.679 [DEBUG] [Thread-188100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:11:16.679 [DEBUG] [Thread-188100] [transport.py] [_log()] Compression: none
2025-11-24T10:11:16.679 [DEBUG] [Thread-188100] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:11:16.693 [DEBUG] [Thread-188100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:11:16.694 [DEBUG] [Thread-188100] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:11:16.694 [DEBUG] [Thread-188100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:11:16.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:11:16.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:11:16.694 [DEBUG] [Thread-188100] [transport.py] [_log()] userauth is OK
2025-11-24T10:11:16.694 [DEBUG] [Thread-188100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:11:16.694 [DEBUG] [Thread-188100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:11:16.694 [DEBUG] [Thread-188100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:11:16.694 [DEBUG] [Thread-188100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:11:16.703 [INFO] [Thread-188100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:11:16.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:11:17.474 [DEBUG] [Thread-188100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:11:17.474 [DEBUG] [Thread-188100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:11:17.474 [DEBUG] [Thread-188100] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:11:17.515 [DEBUG] [Thread-188100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:11:17.515 [DEBUG] [Thread-188100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:11:17.517 [DEBUG] [Thread-188100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:11:17.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:11:17.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:11:17.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:11:17.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:11:17.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:11:17.534 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:11:17.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:11:17.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:11:17.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:11:17.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.340674 -999.00  +17.60  16.96     34   +1.90 1 1 1 1 1   888    0 16.86 69.29 ----- 17.0 17.0 160.6 20.9 23.7 -26.3 22.6 -24.5 21.8 -23.5 22.6 -25.8
2025-11-24T10:11:17.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:11:17.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:11:17.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.340674
2025-11-24T10:11:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:11:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:11:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:11:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:11:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:11:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:11:04', tmtdew=17.58, humidity=30.08, cloud=0.0, wind=21.05, temperature=16.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:10:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:11:17.535 [DEBUG] [Thread-188100] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:11:17.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:11:17.617 [DEBUG] [Thread-188103] [transport.py] [_log()] starting thread (client mode): 0xd07104f0
2025-11-24T10:11:17.617 [DEBUG] [Thread-188103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:11:17.632 [DEBUG] [Thread-188103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:11:17.632 [INFO] [Thread-188103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] client lang: <none>
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] server lang: <none>
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] kex follows: False
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:11:17.639 [DEBUG] [Thread-188103] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:11:17.640 [DEBUG] [Thread-188103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:11:17.640 [DEBUG] [Thread-188103] [transport.py] [_log()] Compression: none
2025-11-24T10:11:17.640 [DEBUG] [Thread-188103] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:11:17.701 [DEBUG] [Thread-188103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:11:17.701 [DEBUG] [Thread-188103] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:11:17.701 [DEBUG] [Thread-188103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:11:17.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:11:17.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:11:17.759 [DEBUG] [Thread-188103] [transport.py] [_log()] userauth is OK
2025-11-24T10:11:17.759 [DEBUG] [Thread-188103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:11:17.759 [DEBUG] [Thread-188103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:11:17.759 [DEBUG] [Thread-188103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:11:17.759 [DEBUG] [Thread-188103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:11:17.773 [INFO] [Thread-188103] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:11:17.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:11:17.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:11:18.657 [DEBUG] [Thread-188103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:11:18.657 [DEBUG] [Thread-188103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:11:18.705 [DEBUG] [Thread-188103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:11:18.705 [DEBUG] [Thread-188103] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:11:18.714 [DEBUG] [Thread-188103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:11:18.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:11:18.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-11-24T10:11:18.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:11:18.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:11:18.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:11:18.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:11:18.746 [DEBUG] [Thread-188103] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:11:24.045 [DEBUG] [Thread-188105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:11:27.770 [DEBUG] [Thread-188106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:11:39.102 [DEBUG] [Thread-188107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:11:48.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:11:48.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:11:48.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-11-24T10:11:49.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 11, 37), 17.84, 29.85, 0.0, 24.3, 16.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:11:49.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:11:37
2025-11-24T10:11:49.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:11:49.862 [DEBUG] [Thread-188108] [transport.py] [_log()] starting thread (client mode): 0xd073a3e0
2025-11-24T10:11:49.862 [DEBUG] [Thread-188108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:11:49.881 [DEBUG] [Thread-188108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:11:49.882 [INFO] [Thread-188108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] client lang: <none>
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] server lang: <none>
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] kex follows: False
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] Compression: none
2025-11-24T10:11:49.885 [DEBUG] [Thread-188108] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:11:49.905 [DEBUG] [Thread-188108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:11:49.906 [DEBUG] [Thread-188108] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:11:49.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:11:49.907 [DEBUG] [Thread-188108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:11:49.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:11:49.909 [DEBUG] [Thread-188108] [transport.py] [_log()] userauth is OK
2025-11-24T10:11:49.909 [DEBUG] [Thread-188108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:11:49.909 [DEBUG] [Thread-188108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:11:49.909 [DEBUG] [Thread-188108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:11:49.909 [DEBUG] [Thread-188108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:11:49.947 [INFO] [Thread-188108] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:11:49.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:11:50.557 [DEBUG] [Thread-188108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:11:50.557 [DEBUG] [Thread-188108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:11:50.557 [DEBUG] [Thread-188108] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:11:50.598 [DEBUG] [Thread-188108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:11:50.598 [DEBUG] [Thread-188108] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:11:50.600 [DEBUG] [Thread-188108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:11:50.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:11:50.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:11:50.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:11:50.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:11:50.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:11:50.617 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:11:50.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:11:50.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:11:50.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:11:50.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.341022 -999.00  +17.40  22.26     34   +1.40 1 1 1 1 1   888    0 16.96 69.70 ----- 22.3 22.3 150.2 33.7 23.8 -27.9 22.7 -26.0 21.7 -24.9 22.6 -26.6
2025-11-24T10:11:50.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:11:50.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:11:50.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.341022
2025-11-24T10:11:50.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:11:50.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:11:50.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:11:50.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:11:50.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:11:50.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:11:37', tmtdew=17.84, humidity=29.85, cloud=0.0, wind=24.3, temperature=16.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:11:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:11:50.618 [DEBUG] [Thread-188108] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:11:50.693 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:11:50.705 [DEBUG] [Thread-188111] [transport.py] [_log()] starting thread (client mode): 0xd317d330
2025-11-24T10:11:50.705 [DEBUG] [Thread-188111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:11:50.719 [DEBUG] [Thread-188111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:11:50.719 [INFO] [Thread-188111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] client lang: <none>
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] server lang: <none>
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] kex follows: False
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] Compression: none
2025-11-24T10:11:50.727 [DEBUG] [Thread-188111] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:11:50.784 [DEBUG] [Thread-188111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:11:50.784 [DEBUG] [Thread-188111] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:11:50.784 [DEBUG] [Thread-188111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:11:50.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:11:50.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:11:50.843 [DEBUG] [Thread-188111] [transport.py] [_log()] userauth is OK
2025-11-24T10:11:50.843 [DEBUG] [Thread-188111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:11:50.843 [DEBUG] [Thread-188111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:11:50.843 [DEBUG] [Thread-188111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:11:50.843 [DEBUG] [Thread-188111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:11:50.861 [INFO] [Thread-188111] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:11:50.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:11:50.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:11:51.714 [DEBUG] [Thread-188111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:11:51.714 [DEBUG] [Thread-188111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:11:51.762 [DEBUG] [Thread-188111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:11:51.762 [DEBUG] [Thread-188111] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:11:51.770 [DEBUG] [Thread-188111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:11:51.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:11:51.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')
2025-11-24T10:11:51.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-11-24T10:11:51.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:11:51.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:11:51.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:11:51.802 [DEBUG] [Thread-188111] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:11:54.132 [DEBUG] [Thread-188113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:12:09.170 [DEBUG] [Thread-188114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:12:21.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:12:21.825 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:12:21.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:12:23.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 12, 9), 17.54, 30.47, 0.0, 21.79, 16.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:12:23.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:12:09
2025-11-24T10:12:24.200 [DEBUG] [Thread-188115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:12:24.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:12:24.430 [DEBUG] [Thread-188116] [transport.py] [_log()] starting thread (client mode): 0xd317f820
2025-11-24T10:12:24.430 [DEBUG] [Thread-188116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:12:24.450 [DEBUG] [Thread-188116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:12:24.450 [INFO] [Thread-188116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:12:24.453 [DEBUG] [Thread-188116] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] client lang: <none>
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] server lang: <none>
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] kex follows: False
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] Compression: none
2025-11-24T10:12:24.454 [DEBUG] [Thread-188116] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:12:24.471 [DEBUG] [Thread-188116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:12:24.472 [DEBUG] [Thread-188116] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:12:24.473 [DEBUG] [Thread-188116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:12:24.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:12:24.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:12:24.475 [DEBUG] [Thread-188116] [transport.py] [_log()] userauth is OK
2025-11-24T10:12:24.475 [DEBUG] [Thread-188116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:12:24.475 [DEBUG] [Thread-188116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:12:24.475 [DEBUG] [Thread-188116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:12:24.475 [DEBUG] [Thread-188116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:12:24.501 [INFO] [Thread-188116] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:12:24.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:12:25.157 [DEBUG] [Thread-188116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:12:25.157 [DEBUG] [Thread-188116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:12:25.157 [DEBUG] [Thread-188116] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:12:25.198 [DEBUG] [Thread-188116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:12:25.198 [DEBUG] [Thread-188116] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:12:25.200 [DEBUG] [Thread-188116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:12:25.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:12:25.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:12:25.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:12:25.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:12:25.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:12:25.218 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:12:25.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:12:25.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:12:25.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:12:25.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.341369 -999.00  +17.20  25.49     35   +1.60 1 1 1 1 1   888    0 16.75 68.12 ----- 25.5 25.5 172.2 30.7 23.7 -26.7 22.6 -26.7 21.8 -24.8 22.6 -26.3
2025-11-24T10:12:25.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:12:25.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:12:25.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.341369
2025-11-24T10:12:25.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:12:25.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:12:25.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:12:25.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:12:25.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:12:25.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:12:09', tmtdew=17.54, humidity=30.47, cloud=0.0, wind=21.79, temperature=16.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:11:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:12:25.220 [DEBUG] [Thread-188116] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:12:25.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:12:25.305 [DEBUG] [Thread-188119] [transport.py] [_log()] starting thread (client mode): 0xd0738d00
2025-11-24T10:12:25.305 [DEBUG] [Thread-188119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:12:25.319 [DEBUG] [Thread-188119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:12:25.319 [INFO] [Thread-188119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:12:25.326 [DEBUG] [Thread-188119] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] client lang: <none>
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] server lang: <none>
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] kex follows: False
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] Compression: none
2025-11-24T10:12:25.327 [DEBUG] [Thread-188119] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:12:25.399 [DEBUG] [Thread-188119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:12:25.399 [DEBUG] [Thread-188119] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:12:25.399 [DEBUG] [Thread-188119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:12:25.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:12:25.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:12:25.459 [DEBUG] [Thread-188119] [transport.py] [_log()] userauth is OK
2025-11-24T10:12:25.459 [DEBUG] [Thread-188119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:12:25.459 [DEBUG] [Thread-188119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:12:25.459 [DEBUG] [Thread-188119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:12:25.459 [DEBUG] [Thread-188119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:12:25.473 [INFO] [Thread-188119] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:12:25.474 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:12:25.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:12:26.345 [DEBUG] [Thread-188119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:12:26.347 [DEBUG] [Thread-188119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:12:26.393 [DEBUG] [Thread-188119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:12:26.394 [DEBUG] [Thread-188119] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:12:26.403 [DEBUG] [Thread-188119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:12:26.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:12:26.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-11-24T10:12:26.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-11-24T10:12:26.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:12:26.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:12:26.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:12:26.438 [DEBUG] [Thread-188119] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:12:28.946 [DEBUG] [Thread-188121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:12:39.226 [DEBUG] [Thread-188122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:12:54.268 [DEBUG] [Thread-188123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:12:56.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:12:56.437 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:12:56.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-11-24T10:12:57.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 12, 41), 17.41, 30.63, 0.0, 26.91, 16.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:12:57.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:12:41
2025-11-24T10:12:57.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:12:57.660 [DEBUG] [Thread-188124] [transport.py] [_log()] starting thread (client mode): 0xc9b80a60
2025-11-24T10:12:57.660 [DEBUG] [Thread-188124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:12:57.679 [DEBUG] [Thread-188124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:12:57.680 [INFO] [Thread-188124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] client lang: <none>
2025-11-24T10:12:57.683 [DEBUG] [Thread-188124] [transport.py] [_log()] server lang: <none>
2025-11-24T10:12:57.684 [DEBUG] [Thread-188124] [transport.py] [_log()] kex follows: False
2025-11-24T10:12:57.684 [DEBUG] [Thread-188124] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:12:57.684 [DEBUG] [Thread-188124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:12:57.684 [DEBUG] [Thread-188124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:12:57.684 [DEBUG] [Thread-188124] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:12:57.684 [DEBUG] [Thread-188124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:12:57.684 [DEBUG] [Thread-188124] [transport.py] [_log()] Compression: none
2025-11-24T10:12:57.684 [DEBUG] [Thread-188124] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:12:57.701 [DEBUG] [Thread-188124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:12:57.702 [DEBUG] [Thread-188124] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:12:57.702 [DEBUG] [Thread-188124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:12:57.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:12:57.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:12:57.705 [DEBUG] [Thread-188124] [transport.py] [_log()] userauth is OK
2025-11-24T10:12:57.705 [DEBUG] [Thread-188124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:12:57.705 [DEBUG] [Thread-188124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:12:57.705 [DEBUG] [Thread-188124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:12:57.705 [DEBUG] [Thread-188124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:12:57.729 [INFO] [Thread-188124] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:12:57.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:12:58.347 [DEBUG] [Thread-188124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:12:58.347 [DEBUG] [Thread-188124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:12:58.347 [DEBUG] [Thread-188124] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:12:58.387 [DEBUG] [Thread-188124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:12:58.388 [DEBUG] [Thread-188124] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:12:58.390 [DEBUG] [Thread-188124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:12:58.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:12:58.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:12:58.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:12:58.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:12:58.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:12:58.411 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:12:58.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:12:58.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:12:58.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:12:58.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.342063 -999.00  +16.70  22.67     35   +1.30 1 1 1 1 1   888    0 16.95 69.91 ----- 22.7 22.7 180.4 41.7 23.8 -26.4 22.4 -31.0 21.5 -28.9 22.7 -25.7
2025-11-24T10:12:58.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:12:58.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:12:58.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.342063
2025-11-24T10:12:58.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:12:58.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:12:58.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:12:58.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:12:58.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:12:58.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:12:41', tmtdew=17.41, humidity=30.63, cloud=0.0, wind=26.91, temperature=16.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:12:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:12:58.414 [DEBUG] [Thread-188124] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:12:58.494 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:12:58.506 [DEBUG] [Thread-188127] [transport.py] [_log()] starting thread (client mode): 0xd0739630
2025-11-24T10:12:58.506 [DEBUG] [Thread-188127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:12:58.521 [DEBUG] [Thread-188127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:12:58.521 [INFO] [Thread-188127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:12:58.529 [DEBUG] [Thread-188127] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:12:58.529 [DEBUG] [Thread-188127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:12:58.529 [DEBUG] [Thread-188127] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:12:58.529 [DEBUG] [Thread-188127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:12:58.529 [DEBUG] [Thread-188127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] client lang: <none>
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] server lang: <none>
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] kex follows: False
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] Compression: none
2025-11-24T10:12:58.530 [DEBUG] [Thread-188127] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:12:58.595 [DEBUG] [Thread-188127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:12:58.595 [DEBUG] [Thread-188127] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:12:58.595 [DEBUG] [Thread-188127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:12:58.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:12:58.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:12:58.651 [DEBUG] [Thread-188127] [transport.py] [_log()] userauth is OK
2025-11-24T10:12:58.651 [DEBUG] [Thread-188127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:12:58.651 [DEBUG] [Thread-188127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:12:58.651 [DEBUG] [Thread-188127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:12:58.651 [DEBUG] [Thread-188127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:12:58.665 [INFO] [Thread-188127] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:12:58.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:12:58.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:12:59.500 [DEBUG] [Thread-188127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:12:59.500 [DEBUG] [Thread-188127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:12:59.551 [DEBUG] [Thread-188127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:12:59.551 [DEBUG] [Thread-188127] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:12:59.564 [DEBUG] [Thread-188127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:12:59.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:12:59.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-11-24T10:12:59.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-11-24T10:12:59.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:12:59.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:12:59.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:12:59.601 [DEBUG] [Thread-188127] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:13:09.308 [DEBUG] [Thread-188129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:13:24.346 [DEBUG] [Thread-188130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:13:29.306 [DEBUG] [Thread-188131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:13:29.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:13:29.615 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:13:29.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-11-24T10:13:30.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 13, 14), 17.6, 30.25, 0.0, 26.93, 16.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:13:30.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:13:14
2025-11-24T10:13:30.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:13:30.623 [DEBUG] [Thread-188132] [transport.py] [_log()] starting thread (client mode): 0xd31cd180
2025-11-24T10:13:30.624 [DEBUG] [Thread-188132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:13:30.636 [DEBUG] [Thread-188132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:13:30.636 [INFO] [Thread-188132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:13:30.637 [DEBUG] [Thread-188132] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:13:30.646 [DEBUG] [Thread-188132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:13:30.646 [DEBUG] [Thread-188132] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:13:30.646 [DEBUG] [Thread-188132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:13:30.646 [DEBUG] [Thread-188132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:13:30.646 [DEBUG] [Thread-188132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:13:30.646 [DEBUG] [Thread-188132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:13:30.646 [DEBUG] [Thread-188132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:13:30.646 [DEBUG] [Thread-188132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:13:30.646 [DEBUG] [Thread-188132] [transport.py] [_log()] client lang: <none>
2025-11-24T10:13:30.647 [DEBUG] [Thread-188132] [transport.py] [_log()] server lang: <none>
2025-11-24T10:13:30.647 [DEBUG] [Thread-188132] [transport.py] [_log()] kex follows: False
2025-11-24T10:13:30.647 [DEBUG] [Thread-188132] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:13:30.647 [DEBUG] [Thread-188132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:13:30.647 [DEBUG] [Thread-188132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:13:30.647 [DEBUG] [Thread-188132] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:13:30.647 [DEBUG] [Thread-188132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:13:30.647 [DEBUG] [Thread-188132] [transport.py] [_log()] Compression: none
2025-11-24T10:13:30.647 [DEBUG] [Thread-188132] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:13:30.657 [DEBUG] [Thread-188132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:13:30.658 [DEBUG] [Thread-188132] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:13:30.658 [DEBUG] [Thread-188132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:13:30.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:13:30.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:13:30.660 [DEBUG] [Thread-188132] [transport.py] [_log()] userauth is OK
2025-11-24T10:13:30.660 [DEBUG] [Thread-188132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:13:30.661 [DEBUG] [Thread-188132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:13:30.661 [DEBUG] [Thread-188132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:13:30.661 [DEBUG] [Thread-188132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:13:30.684 [INFO] [Thread-188132] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:13:30.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:13:31.289 [DEBUG] [Thread-188132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:13:31.298 [DEBUG] [Thread-188132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:13:31.299 [DEBUG] [Thread-188132] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:13:31.330 [DEBUG] [Thread-188132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:13:31.330 [DEBUG] [Thread-188132] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:13:31.333 [DEBUG] [Thread-188132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:13:31.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:13:31.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:13:31.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:13:31.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:13:31.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:13:31.354 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:13:31.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:13:31.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:13:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:13:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.342411 -999.00  +16.70  16.98     35   +1.20 1 1 1 1 1   888    0 16.96 68.46 ----- 17.0 17.0 172.6 25.3 23.5 -26.7 22.3 -27.9 21.8 -23.4 22.3 -27.0
2025-11-24T10:13:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:13:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:13:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.342411
2025-11-24T10:13:31.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:13:31.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:13:31.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:13:31.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:13:31.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:13:31.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:13:14', tmtdew=17.6, humidity=30.25, cloud=0.0, wind=26.93, temperature=16.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:13:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:13:31.357 [DEBUG] [Thread-188132] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:13:31.435 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:13:31.447 [DEBUG] [Thread-188135] [transport.py] [_log()] starting thread (client mode): 0xd7bc5540
2025-11-24T10:13:31.447 [DEBUG] [Thread-188135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:13:31.461 [DEBUG] [Thread-188135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:13:31.461 [INFO] [Thread-188135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:13:31.469 [DEBUG] [Thread-188135] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:13:31.469 [DEBUG] [Thread-188135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:13:31.469 [DEBUG] [Thread-188135] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:13:31.469 [DEBUG] [Thread-188135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:13:31.469 [DEBUG] [Thread-188135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:13:31.470 [DEBUG] [Thread-188135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:13:31.470 [DEBUG] [Thread-188135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:13:31.470 [DEBUG] [Thread-188135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:13:31.470 [DEBUG] [Thread-188135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:13:31.470 [DEBUG] [Thread-188135] [transport.py] [_log()] client lang: <none>
2025-11-24T10:13:31.470 [DEBUG] [Thread-188135] [transport.py] [_log()] server lang: <none>
2025-11-24T10:13:31.470 [DEBUG] [Thread-188135] [transport.py] [_log()] kex follows: False
2025-11-24T10:13:31.470 [DEBUG] [Thread-188135] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:13:31.470 [DEBUG] [Thread-188135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:13:31.470 [DEBUG] [Thread-188135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:13:31.471 [DEBUG] [Thread-188135] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:13:31.471 [DEBUG] [Thread-188135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:13:31.471 [DEBUG] [Thread-188135] [transport.py] [_log()] Compression: none
2025-11-24T10:13:31.471 [DEBUG] [Thread-188135] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:13:31.532 [DEBUG] [Thread-188135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:13:31.533 [DEBUG] [Thread-188135] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:13:31.534 [DEBUG] [Thread-188135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:13:31.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:13:31.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:13:31.588 [DEBUG] [Thread-188135] [transport.py] [_log()] userauth is OK
2025-11-24T10:13:31.588 [DEBUG] [Thread-188135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:13:31.588 [DEBUG] [Thread-188135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:13:31.588 [DEBUG] [Thread-188135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:13:31.588 [DEBUG] [Thread-188135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:13:31.608 [INFO] [Thread-188135] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:13:31.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:13:31.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:13:32.525 [DEBUG] [Thread-188135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:13:32.525 [DEBUG] [Thread-188135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:13:32.575 [DEBUG] [Thread-188135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:13:32.576 [DEBUG] [Thread-188135] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:13:32.587 [DEBUG] [Thread-188135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:13:32.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:13:32.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-11-24T10:13:32.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-11-24T10:13:32.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:13:32.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:13:32.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:13:32.623 [DEBUG] [Thread-188135] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:13:39.382 [DEBUG] [Thread-188137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:13:54.437 [DEBUG] [Thread-188138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:14:02.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:14:02.646 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:14:02.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-11-24T10:14:03.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 13, 46), 17.72, 29.82, 0.0, 22.07, 16.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:14:03.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:13:46
2025-11-24T10:14:03.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:14:03.667 [DEBUG] [Thread-188139] [transport.py] [_log()] starting thread (client mode): 0xd31cce50
2025-11-24T10:14:03.667 [DEBUG] [Thread-188139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:14:03.687 [DEBUG] [Thread-188139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:14:03.687 [INFO] [Thread-188139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] client lang: <none>
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] server lang: <none>
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] kex follows: False
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:14:03.690 [DEBUG] [Thread-188139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:14:03.691 [DEBUG] [Thread-188139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:14:03.691 [DEBUG] [Thread-188139] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:14:03.691 [DEBUG] [Thread-188139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:14:03.691 [DEBUG] [Thread-188139] [transport.py] [_log()] Compression: none
2025-11-24T10:14:03.691 [DEBUG] [Thread-188139] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:14:03.708 [DEBUG] [Thread-188139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:14:03.709 [DEBUG] [Thread-188139] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:14:03.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:14:03.710 [DEBUG] [Thread-188139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:14:03.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:14:03.721 [DEBUG] [Thread-188139] [transport.py] [_log()] userauth is OK
2025-11-24T10:14:03.721 [DEBUG] [Thread-188139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:14:03.721 [DEBUG] [Thread-188139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:14:03.721 [DEBUG] [Thread-188139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:14:03.721 [DEBUG] [Thread-188139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:14:03.748 [INFO] [Thread-188139] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:14:03.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:14:04.385 [DEBUG] [Thread-188139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:14:04.385 [DEBUG] [Thread-188139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:14:04.385 [DEBUG] [Thread-188139] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:14:04.426 [DEBUG] [Thread-188139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:14:04.426 [DEBUG] [Thread-188139] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:14:04.429 [DEBUG] [Thread-188139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:14:04.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:14:04.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:14:04.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:14:04.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:14:04.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:14:04.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:14:04.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.342758 -999.00  +16.70  11.92     35   +1.40 1 1 1 1 1   888    0 17.11 72.42 ----- 11.9 11.9 164.4 27.0 23.7 -27.8 22.3 -30.8 21.7 -24.5 22.6 -26.0
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.342758
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:14:04.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:13:46', tmtdew=17.72, humidity=29.82, cloud=0.0, wind=22.07, temperature=16.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:13:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:14:04.448 [DEBUG] [Thread-188139] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:14:04.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:14:04.530 [DEBUG] [Thread-188142] [transport.py] [_log()] starting thread (client mode): 0xd317fca0
2025-11-24T10:14:04.530 [DEBUG] [Thread-188142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:14:04.546 [DEBUG] [Thread-188142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:14:04.546 [INFO] [Thread-188142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] client lang: <none>
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] server lang: <none>
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] kex follows: False
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:14:04.554 [DEBUG] [Thread-188142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:14:04.555 [DEBUG] [Thread-188142] [transport.py] [_log()] Compression: none
2025-11-24T10:14:04.555 [DEBUG] [Thread-188142] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:14:04.610 [DEBUG] [Thread-188142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:14:04.611 [DEBUG] [Thread-188142] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:14:04.619 [DEBUG] [Thread-188142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:14:04.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:14:04.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:14:04.669 [DEBUG] [Thread-188142] [transport.py] [_log()] userauth is OK
2025-11-24T10:14:04.669 [DEBUG] [Thread-188142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:14:04.669 [DEBUG] [Thread-188142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:14:04.669 [DEBUG] [Thread-188142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:14:04.669 [DEBUG] [Thread-188142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:14:04.688 [INFO] [Thread-188142] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:14:04.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:14:04.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:14:05.561 [DEBUG] [Thread-188142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:14:05.561 [DEBUG] [Thread-188142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:14:05.610 [DEBUG] [Thread-188142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:14:05.610 [DEBUG] [Thread-188142] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:14:05.619 [DEBUG] [Thread-188142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:14:05.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:14:05.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-11-24T10:14: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') -> 00000000
2025-11-24T10:14:05.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:14:05.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:14:05.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:14:05.655 [DEBUG] [Thread-188142] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:14:09.476 [DEBUG] [Thread-188144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:14:24.524 [DEBUG] [Thread-188145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:14:29.339 [DEBUG] [Thread-188146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:14:35.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:14:35.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:14:35.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-11-24T10:14:36.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 14, 19), 17.76, 29.73, 0.0, 22.92, 16.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:14:36.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:14:19
2025-11-24T10:14:36.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:14:36.703 [DEBUG] [Thread-188147] [transport.py] [_log()] starting thread (client mode): 0xd31cd180
2025-11-24T10:14:36.703 [DEBUG] [Thread-188147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:14:36.723 [DEBUG] [Thread-188147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:14:36.724 [INFO] [Thread-188147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] client lang: <none>
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] server lang: <none>
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] kex follows: False
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] Compression: none
2025-11-24T10:14:36.725 [DEBUG] [Thread-188147] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:14:36.733 [DEBUG] [Thread-188147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:14:36.734 [DEBUG] [Thread-188147] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:14:36.734 [DEBUG] [Thread-188147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:14:36.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:14:36.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:14:36.736 [DEBUG] [Thread-188147] [transport.py] [_log()] userauth is OK
2025-11-24T10:14:36.736 [DEBUG] [Thread-188147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:14:36.736 [DEBUG] [Thread-188147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:14:36.736 [DEBUG] [Thread-188147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:14:36.736 [DEBUG] [Thread-188147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:14:36.756 [INFO] [Thread-188147] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:14:36.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:14:37.351 [DEBUG] [Thread-188147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:14:37.351 [DEBUG] [Thread-188147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:14:37.352 [DEBUG] [Thread-188147] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:14:37.391 [DEBUG] [Thread-188147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:14:37.392 [DEBUG] [Thread-188147] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:14:37.395 [DEBUG] [Thread-188147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:14:37.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:14:37.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:14:37.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:14:37.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:14:37.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:14:37.416 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:14:37.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:14:37.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:14:37.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:14:37.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.343105 -999.00  +17.00  17.29     35   +1.50 1 1 1 1 1   888    0 17.22 75.93 ----- 17.3 17.3 188.2 21.7 23.7 -26.3 22.4 -28.1 21.8 -23.8 22.7 -25.5
2025-11-24T10:14:37.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:14:37.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:14:37.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.343105
2025-11-24T10:14:37.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:14:37.418 [DEBUG] [Thread-188147] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:14:37.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:14:37.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:14:37.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:14:37.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:14:37.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:14:19', tmtdew=17.76, humidity=29.73, cloud=0.0, wind=22.92, temperature=16.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:14:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:14:37.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:14:37.515 [DEBUG] [Thread-188150] [transport.py] [_log()] starting thread (client mode): 0xd3151480
2025-11-24T10:14:37.515 [DEBUG] [Thread-188150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:14:37.530 [DEBUG] [Thread-188150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:14:37.530 [INFO] [Thread-188150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:14:37.537 [DEBUG] [Thread-188150] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] client lang: <none>
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] server lang: <none>
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] kex follows: False
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:14:37.538 [DEBUG] [Thread-188150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:14:37.539 [DEBUG] [Thread-188150] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:14:37.539 [DEBUG] [Thread-188150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:14:37.539 [DEBUG] [Thread-188150] [transport.py] [_log()] Compression: none
2025-11-24T10:14:37.539 [DEBUG] [Thread-188150] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:14:37.597 [DEBUG] [Thread-188150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:14:37.597 [DEBUG] [Thread-188150] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:14:37.598 [DEBUG] [Thread-188150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:14:37.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:14:37.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:14:37.656 [DEBUG] [Thread-188150] [transport.py] [_log()] userauth is OK
2025-11-24T10:14:37.657 [DEBUG] [Thread-188150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:14:37.657 [DEBUG] [Thread-188150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:14:37.657 [DEBUG] [Thread-188150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:14:37.657 [DEBUG] [Thread-188150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:14:37.675 [INFO] [Thread-188150] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:14:37.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:14:37.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:14:38.550 [DEBUG] [Thread-188150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:14:38.550 [DEBUG] [Thread-188150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:14:38.598 [DEBUG] [Thread-188150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:14:38.598 [DEBUG] [Thread-188150] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:14:38.606 [DEBUG] [Thread-188150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:14:38.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:14:38.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-11-24T10:14:38.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-11-24T10:14:38.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:14:38.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:14:38.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:14:38.639 [DEBUG] [Thread-188150] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:14:39.553 [DEBUG] [Thread-188152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:14:54.613 [DEBUG] [Thread-188153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:15:08.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:15:08.656 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:15:08.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-11-24T10:15:09.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 14, 51), 17.76, 30.17, 0.0, 28.6, 17.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:15:09.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:14:51
2025-11-24T10:15:09.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:15:09.634 [DEBUG] [Thread-188154] [transport.py] [_log()] starting thread (client mode): 0xd3150850
2025-11-24T10:15:09.634 [DEBUG] [Thread-188154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:15:09.653 [DEBUG] [Thread-188155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:15:09.655 [DEBUG] [Thread-188154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:15:09.655 [INFO] [Thread-188154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] client lang: <none>
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] server lang: <none>
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] kex follows: False
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] Compression: none
2025-11-24T10:15:09.658 [DEBUG] [Thread-188154] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:15:09.674 [DEBUG] [Thread-188154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:15:09.675 [DEBUG] [Thread-188154] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:15:09.675 [DEBUG] [Thread-188154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:15:09.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:15:09.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:15:09.676 [DEBUG] [Thread-188154] [transport.py] [_log()] userauth is OK
2025-11-24T10:15:09.676 [DEBUG] [Thread-188154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:15:09.676 [DEBUG] [Thread-188154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:15:09.676 [DEBUG] [Thread-188154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:15:09.676 [DEBUG] [Thread-188154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:15:09.692 [INFO] [Thread-188154] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:15:09.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:15:12.632 [DEBUG] [Thread-188154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:15:12.633 [DEBUG] [Thread-188154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:15:12.633 [DEBUG] [Thread-188154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:15:12.673 [DEBUG] [Thread-188154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:15:12.673 [DEBUG] [Thread-188154] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:15:12.675 [DEBUG] [Thread-188154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:15:12.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:15:12.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:15:12.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:15:12.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:15:12.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:15:12.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:15:12.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:15:12.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:15:12.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:15:12.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.343510 -999.00  +17.40  24.49     35   +1.90 1 1 1 1 1   888    0 17.00 71.69 ----- 25.4 24.5 171.0 32.4 23.8 -25.8 22.6 -25.5 21.9 -25.3 22.7 -24.8
2025-11-24T10:15:12.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:15:12.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:15:12.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.343510
2025-11-24T10:15:12.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:15:12.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:15:12.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:15:12.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:15:12.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:15:12.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:14:51', tmtdew=17.76, humidity=30.17, cloud=0.0, wind=28.6, temperature=17.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:14:39.264', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:15:12.699 [DEBUG] [Thread-188154] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:15:12.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:15:12.803 [DEBUG] [Thread-188158] [transport.py] [_log()] starting thread (client mode): 0xd3151b10
2025-11-24T10:15:12.804 [DEBUG] [Thread-188158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:15:12.823 [DEBUG] [Thread-188158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:15:12.823 [INFO] [Thread-188158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:15:12.831 [DEBUG] [Thread-188158] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:15:12.831 [DEBUG] [Thread-188158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:15:12.831 [DEBUG] [Thread-188158] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:15:12.831 [DEBUG] [Thread-188158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:15:12.831 [DEBUG] [Thread-188158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:15:12.831 [DEBUG] [Thread-188158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:15:12.831 [DEBUG] [Thread-188158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] client lang: <none>
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] server lang: <none>
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] kex follows: False
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] Compression: none
2025-11-24T10:15:12.832 [DEBUG] [Thread-188158] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:15:12.892 [DEBUG] [Thread-188158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:15:12.893 [DEBUG] [Thread-188158] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:15:12.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:15:12.894 [DEBUG] [Thread-188158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:15:12.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:15:12.948 [DEBUG] [Thread-188158] [transport.py] [_log()] userauth is OK
2025-11-24T10:15:12.948 [DEBUG] [Thread-188158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:15:12.948 [DEBUG] [Thread-188158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:15:12.948 [DEBUG] [Thread-188158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:15:12.948 [DEBUG] [Thread-188158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:15:12.967 [INFO] [Thread-188158] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:15:12.968 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:15:12.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:15:13.812 [DEBUG] [Thread-188158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:15:13.813 [DEBUG] [Thread-188158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:15:13.861 [DEBUG] [Thread-188158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:15:13.861 [DEBUG] [Thread-188158] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:15:13.870 [DEBUG] [Thread-188158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:15:13.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:15:13.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-11-24T10:15:13.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-11-24T10:15:13.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:15:13.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:15:13.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:15:13.907 [DEBUG] [Thread-188158] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:15:24.685 [DEBUG] [Thread-188160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:15:29.654 [DEBUG] [Thread-188161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:15:39.726 [DEBUG] [Thread-188162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:15:43.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:15:43.928 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:15:43.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-11-24T10:15:44.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 15, 24), 17.68, 30.35, 0.0, 27.53, 17.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:15:44.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:15:24
2025-11-24T10:15:44.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:15:44.974 [DEBUG] [Thread-188163] [transport.py] [_log()] starting thread (client mode): 0xd317c910
2025-11-24T10:15:44.975 [DEBUG] [Thread-188163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:15:44.985 [DEBUG] [Thread-188163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:15:44.985 [INFO] [Thread-188163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:15:44.988 [DEBUG] [Thread-188163] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:15:44.988 [DEBUG] [Thread-188163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:15:44.988 [DEBUG] [Thread-188163] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:15:44.988 [DEBUG] [Thread-188163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:15:44.988 [DEBUG] [Thread-188163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] client lang: <none>
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] server lang: <none>
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] kex follows: False
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] Compression: none
2025-11-24T10:15:44.989 [DEBUG] [Thread-188163] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:15:45.006 [DEBUG] [Thread-188163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:15:45.006 [DEBUG] [Thread-188163] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:15:45.007 [DEBUG] [Thread-188163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:15:45.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:15:45.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:15:45.007 [DEBUG] [Thread-188163] [transport.py] [_log()] userauth is OK
2025-11-24T10:15:45.008 [DEBUG] [Thread-188163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:15:45.008 [DEBUG] [Thread-188163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:15:45.008 [DEBUG] [Thread-188163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:15:45.008 [DEBUG] [Thread-188163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:15:45.024 [INFO] [Thread-188163] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:15:45.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:15:45.671 [DEBUG] [Thread-188163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:15:45.671 [DEBUG] [Thread-188163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:15:45.671 [DEBUG] [Thread-188163] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:15:45.712 [DEBUG] [Thread-188163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:15:45.712 [DEBUG] [Thread-188163] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:15:45.714 [DEBUG] [Thread-188163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:15:45.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:15:45.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:15:45.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:15:45.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:15:45.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:15:45.741 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:15:45.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:15:45.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.343799 -999.00  +17.30  19.57     35   +2.00 1 1 1 1 1   888    0 17.17 70.88 ----- 19.6 19.6 182.8 28.6 23.7 -26.1 22.5 -24.9 21.8 -26.1 22.6 -27.0
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.343799
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:15:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:15:24', tmtdew=17.68, humidity=30.35, cloud=0.0, wind=27.53, temperature=17.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:15:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:15:45.743 [DEBUG] [Thread-188163] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:15:45.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:15:45.828 [DEBUG] [Thread-188166] [transport.py] [_log()] starting thread (client mode): 0xd317f820
2025-11-24T10:15:45.828 [DEBUG] [Thread-188166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:15:45.844 [DEBUG] [Thread-188166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:15:45.844 [INFO] [Thread-188166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:15:45.851 [DEBUG] [Thread-188166] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:15:45.851 [DEBUG] [Thread-188166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:15:45.851 [DEBUG] [Thread-188166] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] client lang: <none>
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] server lang: <none>
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] kex follows: False
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] Compression: none
2025-11-24T10:15:45.852 [DEBUG] [Thread-188166] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:15:45.913 [DEBUG] [Thread-188166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:15:45.913 [DEBUG] [Thread-188166] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:15:45.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:15:45.913 [DEBUG] [Thread-188166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:15:45.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:15:45.971 [DEBUG] [Thread-188166] [transport.py] [_log()] userauth is OK
2025-11-24T10:15:45.971 [DEBUG] [Thread-188166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:15:45.971 [DEBUG] [Thread-188166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:15:45.971 [DEBUG] [Thread-188166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:15:45.971 [DEBUG] [Thread-188166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:15:45.992 [INFO] [Thread-188166] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:15:45.992 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:15:45.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:15:46.927 [DEBUG] [Thread-188166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:15:46.927 [DEBUG] [Thread-188166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:15:46.976 [DEBUG] [Thread-188166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:15:46.976 [DEBUG] [Thread-188166] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:15:46.985 [DEBUG] [Thread-188166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:15:46.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:15:46.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-11-24T10:15:47.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-11-24T10:15:47.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:15:47.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:15:47.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:15:47.022 [DEBUG] [Thread-188166] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:15:54.770 [DEBUG] [Thread-188168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:16:09.824 [DEBUG] [Thread-188169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:16:17.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:16:17.041 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:16:17.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-11-24T10:16:17.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 15, 56), 17.65, 30.33, 0.0, 25.53, 17.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:16:17.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:15:56
2025-11-24T10:16:17.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:16:18.099 [DEBUG] [Thread-188170] [transport.py] [_log()] starting thread (client mode): 0xd317fbe0
2025-11-24T10:16:18.100 [DEBUG] [Thread-188170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:16:18.119 [DEBUG] [Thread-188170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:16:18.119 [INFO] [Thread-188170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] client lang: <none>
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] server lang: <none>
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] kex follows: False
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] Compression: none
2025-11-24T10:16:18.123 [DEBUG] [Thread-188170] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:16:18.131 [DEBUG] [Thread-188170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:16:18.131 [DEBUG] [Thread-188170] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:16:18.131 [DEBUG] [Thread-188170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:16:18.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:16:18.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:16:18.132 [DEBUG] [Thread-188170] [transport.py] [_log()] userauth is OK
2025-11-24T10:16:18.132 [DEBUG] [Thread-188170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:16:18.132 [DEBUG] [Thread-188170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:16:18.132 [DEBUG] [Thread-188170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:16:18.132 [DEBUG] [Thread-188170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:16:18.141 [INFO] [Thread-188170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:16:18.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:16:18.782 [DEBUG] [Thread-188170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:16:18.782 [DEBUG] [Thread-188170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:16:18.782 [DEBUG] [Thread-188170] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:16:18.824 [DEBUG] [Thread-188170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:16:18.824 [DEBUG] [Thread-188170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:16:18.826 [DEBUG] [Thread-188170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:16:18.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:16:18.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:16:18.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:16:18.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:16:18.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:16:18.852 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:16:18.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.344147 -999.00  +17.30  23.25     35   +1.90 1 1 1 1 1   888    0 17.21 71.46 ----- 23.2 23.2 171.4 26.2 23.7 -26.1 22.4 -26.7 21.8 -24.1 22.6 -25.5
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.344147
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:16:18.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:15:56', tmtdew=17.65, humidity=30.33, cloud=0.0, wind=25.53, temperature=17.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:15:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:16:18.853 [DEBUG] [Thread-188170] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:16:18.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:16:18.942 [DEBUG] [Thread-188173] [transport.py] [_log()] starting thread (client mode): 0xd3152d70
2025-11-24T10:16:18.942 [DEBUG] [Thread-188173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:16:18.957 [DEBUG] [Thread-188173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:16:18.957 [INFO] [Thread-188173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] client lang: <none>
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] server lang: <none>
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] kex follows: False
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] Compression: none
2025-11-24T10:16:18.965 [DEBUG] [Thread-188173] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:16:19.022 [DEBUG] [Thread-188173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:16:19.022 [DEBUG] [Thread-188173] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:16:19.023 [DEBUG] [Thread-188173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:16:19.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:16:19.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:16:19.079 [DEBUG] [Thread-188173] [transport.py] [_log()] userauth is OK
2025-11-24T10:16:19.079 [DEBUG] [Thread-188173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:16:19.079 [DEBUG] [Thread-188173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:16:19.079 [DEBUG] [Thread-188173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:16:19.079 [DEBUG] [Thread-188173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:16:19.097 [INFO] [Thread-188173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:16:19.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:16:19.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:16:19.938 [DEBUG] [Thread-188173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:16:19.938 [DEBUG] [Thread-188173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:16:19.986 [DEBUG] [Thread-188173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:16:19.986 [DEBUG] [Thread-188173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:16:19.994 [DEBUG] [Thread-188173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:16:20.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:16: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')
2025-11-24T10:16:20.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:16:20.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:16:20.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:16:20.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:16:20.026 [DEBUG] [Thread-188173] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:16:24.854 [DEBUG] [Thread-188175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:16:29.686 [DEBUG] [Thread-188176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:16:39.904 [DEBUG] [Thread-188177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:16:50.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:16:50.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:16:50.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-11-24T10:16:50.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 16, 28), 17.72, 30.17, 0.0, 28.97, 17.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:16:50.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:16:28
2025-11-24T10:16:50.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:16:51.048 [DEBUG] [Thread-188178] [transport.py] [_log()] starting thread (client mode): 0xd3152b90
2025-11-24T10:16:51.048 [DEBUG] [Thread-188178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:16:51.069 [DEBUG] [Thread-188178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:16:51.069 [INFO] [Thread-188178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:16:51.072 [DEBUG] [Thread-188178] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:16:51.072 [DEBUG] [Thread-188178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:16:51.072 [DEBUG] [Thread-188178] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:16:51.072 [DEBUG] [Thread-188178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:16:51.072 [DEBUG] [Thread-188178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] client lang: <none>
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] server lang: <none>
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] kex follows: False
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:16:51.073 [DEBUG] [Thread-188178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:16:51.074 [DEBUG] [Thread-188178] [transport.py] [_log()] Compression: none
2025-11-24T10:16:51.074 [DEBUG] [Thread-188178] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:16:51.094 [DEBUG] [Thread-188178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:16:51.094 [DEBUG] [Thread-188178] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:16:51.095 [DEBUG] [Thread-188178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:16:51.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:16:51.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:16:51.097 [DEBUG] [Thread-188178] [transport.py] [_log()] userauth is OK
2025-11-24T10:16:51.097 [DEBUG] [Thread-188178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:16:51.097 [DEBUG] [Thread-188178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:16:51.097 [DEBUG] [Thread-188178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:16:51.097 [DEBUG] [Thread-188178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:16:51.132 [INFO] [Thread-188178] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:16:51.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:16:51.761 [DEBUG] [Thread-188178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:16:51.761 [DEBUG] [Thread-188178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:16:51.762 [DEBUG] [Thread-188178] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:16:51.802 [DEBUG] [Thread-188178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:16:51.803 [DEBUG] [Thread-188178] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:16:51.805 [DEBUG] [Thread-188178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:16:51.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:16:51.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:16:51.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:16:51.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:16:51.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:16:51.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:16:51.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:16:51.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:16:51.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:16:51.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.344841 -999.00  +17.30  20.10     35   +1.90 1 1 1 1 1   888    0 17.66 77.70 ----- 20.1 20.1 154.2 31.5 23.8 -26.7 22.7 -25.2 21.9 -24.1 22.8 -25.0
2025-11-24T10:16:51.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:16:51.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:16:51.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.344841
2025-11-24T10:16:51.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:16:51.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:16:51.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:16:51.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:16:51.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:16:51.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:16:28', tmtdew=17.72, humidity=30.17, cloud=0.0, wind=28.97, temperature=17.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:16:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:16:51.830 [DEBUG] [Thread-188178] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:16:51.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:16:51.934 [DEBUG] [Thread-188181] [transport.py] [_log()] starting thread (client mode): 0xd3153dc0
2025-11-24T10:16:51.934 [DEBUG] [Thread-188181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:16:51.950 [DEBUG] [Thread-188181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:16:51.951 [INFO] [Thread-188181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:16:51.958 [DEBUG] [Thread-188181] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:16:51.958 [DEBUG] [Thread-188181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:16:51.958 [DEBUG] [Thread-188181] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:16:51.958 [DEBUG] [Thread-188181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:16:51.958 [DEBUG] [Thread-188181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] client lang: <none>
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] server lang: <none>
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] kex follows: False
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:16:51.959 [DEBUG] [Thread-188181] [transport.py] [_log()] Compression: none
2025-11-24T10:16:51.960 [DEBUG] [Thread-188181] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:16:52.016 [DEBUG] [Thread-188181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:16:52.016 [DEBUG] [Thread-188181] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:16:52.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:16:52.017 [DEBUG] [Thread-188181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:16:52.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:16:52.071 [DEBUG] [Thread-188181] [transport.py] [_log()] userauth is OK
2025-11-24T10:16:52.072 [DEBUG] [Thread-188181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:16:52.072 [DEBUG] [Thread-188181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:16:52.072 [DEBUG] [Thread-188181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:16:52.072 [DEBUG] [Thread-188181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:16:52.096 [INFO] [Thread-188181] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:16:52.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:16:52.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:16:52.982 [DEBUG] [Thread-188181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:16:52.982 [DEBUG] [Thread-188181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:16:53.030 [DEBUG] [Thread-188181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:16:53.030 [DEBUG] [Thread-188181] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:16:53.038 [DEBUG] [Thread-188181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:16:53.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:16:53.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-11-24T10:16:53.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-11-24T10:16:53.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:16:53.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:16:53.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:16:53.077 [DEBUG] [Thread-188181] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:16:54.934 [DEBUG] [Thread-188183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:17:09.971 [DEBUG] [Thread-188184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:17:23.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:17:23.096 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:17:23.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-11-24T10:17:23.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 17, 1), 17.4, 30.98, 0.0, 30.98, 17.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:17:23.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:17:01
2025-11-24T10:17:23.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:17:24.103 [DEBUG] [Thread-188185] [transport.py] [_log()] starting thread (client mode): 0xd3150700
2025-11-24T10:17:24.103 [DEBUG] [Thread-188185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:17:24.114 [DEBUG] [Thread-188185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:17:24.114 [INFO] [Thread-188185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:17:24.117 [DEBUG] [Thread-188185] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] client lang: <none>
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] server lang: <none>
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] kex follows: False
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:17:24.118 [DEBUG] [Thread-188185] [transport.py] [_log()] Compression: none
2025-11-24T10:17:24.119 [DEBUG] [Thread-188185] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:17:24.136 [DEBUG] [Thread-188185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:17:24.137 [DEBUG] [Thread-188185] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:17:24.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:17:24.138 [DEBUG] [Thread-188185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:17:24.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:17:24.181 [DEBUG] [Thread-188185] [transport.py] [_log()] userauth is OK
2025-11-24T10:17:24.181 [DEBUG] [Thread-188185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:17:24.181 [DEBUG] [Thread-188185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:17:24.181 [DEBUG] [Thread-188185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:17:24.181 [DEBUG] [Thread-188185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:17:24.201 [INFO] [Thread-188185] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:17:24.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:17:24.842 [DEBUG] [Thread-188185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:17:24.842 [DEBUG] [Thread-188185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:17:24.842 [DEBUG] [Thread-188185] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:17:24.883 [DEBUG] [Thread-188185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:17:24.883 [DEBUG] [Thread-188185] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:17:24.885 [DEBUG] [Thread-188185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:17:24.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:17:24.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:17:24.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:17:24.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:17:24.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:17:24.909 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:17:24.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:17:24.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:17:24.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:17:24.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.345188 -999.00  +17.50  25.84     35   +2.10 1 1 1 1 1   888    0 17.64 79.20 ----- 25.8 25.8 183.4 34.3 23.8 -26.7 22.4 -27.9 21.8 -26.1 22.7 -24.7
2025-11-24T10:17:24.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:17:24.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:17:24.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.345188
2025-11-24T10:17:24.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:17:24.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:17:24.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:17:24.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:17:24.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:17:24.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:17:01', tmtdew=17.4, humidity=30.98, cloud=0.0, wind=30.98, temperature=17.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:17:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:17:24.910 [DEBUG] [Thread-188185] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:17:24.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:17:24.995 [DEBUG] [Thread-188188] [transport.py] [_log()] starting thread (client mode): 0xd3192650
2025-11-24T10:17:24.995 [DEBUG] [Thread-188188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:17:25.006 [DEBUG] [Thread-188189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:17:25.010 [DEBUG] [Thread-188188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:17:25.010 [INFO] [Thread-188188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] client lang: <none>
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] server lang: <none>
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] kex follows: False
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:17:25.018 [DEBUG] [Thread-188188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:17:25.019 [DEBUG] [Thread-188188] [transport.py] [_log()] Compression: none
2025-11-24T10:17:25.019 [DEBUG] [Thread-188188] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:17:25.074 [DEBUG] [Thread-188188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:17:25.074 [DEBUG] [Thread-188188] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:17:25.075 [DEBUG] [Thread-188188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:17:25.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:17:25.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:17:25.131 [DEBUG] [Thread-188188] [transport.py] [_log()] userauth is OK
2025-11-24T10:17:25.131 [DEBUG] [Thread-188188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:17:25.131 [DEBUG] [Thread-188188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:17:25.131 [DEBUG] [Thread-188188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:17:25.131 [DEBUG] [Thread-188188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:17:25.145 [INFO] [Thread-188188] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:17:25.145 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:17:25.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:17:25.993 [DEBUG] [Thread-188188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:17:25.993 [DEBUG] [Thread-188188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:17:26.041 [DEBUG] [Thread-188188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:17:26.041 [DEBUG] [Thread-188188] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:17:26.050 [DEBUG] [Thread-188188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:17:26.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:17:26.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-11-24T10:17:26.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-11-24T10:17:26.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:17:26.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:17:26.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:17:26.087 [DEBUG] [Thread-188188] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:17:29.748 [DEBUG] [Thread-188191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:17:40.043 [DEBUG] [Thread-188192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:17:55.081 [DEBUG] [Thread-188193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:17:56.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:17:56.091 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:17:56.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-11-24T10:17:56.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 17, 33), 17.4, 30.95, 0.0, 27.31, 16.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:17:56.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:17:33
2025-11-24T10:17:56.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:17:57.077 [DEBUG] [Thread-188194] [transport.py] [_log()] starting thread (client mode): 0xd31cd360
2025-11-24T10:17:57.077 [DEBUG] [Thread-188194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:17:57.098 [DEBUG] [Thread-188194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:17:57.098 [INFO] [Thread-188194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] client lang: <none>
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] server lang: <none>
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] kex follows: False
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:17:57.101 [DEBUG] [Thread-188194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:17:57.102 [DEBUG] [Thread-188194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:17:57.102 [DEBUG] [Thread-188194] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:17:57.102 [DEBUG] [Thread-188194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:17:57.102 [DEBUG] [Thread-188194] [transport.py] [_log()] Compression: none
2025-11-24T10:17:57.102 [DEBUG] [Thread-188194] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:17:57.119 [DEBUG] [Thread-188194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:17:57.120 [DEBUG] [Thread-188194] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:17:57.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:17:57.121 [DEBUG] [Thread-188194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:17:57.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:17:57.123 [DEBUG] [Thread-188194] [transport.py] [_log()] userauth is OK
2025-11-24T10:17:57.123 [DEBUG] [Thread-188194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:17:57.123 [DEBUG] [Thread-188194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:17:57.123 [DEBUG] [Thread-188194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:17:57.123 [DEBUG] [Thread-188194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:17:57.148 [INFO] [Thread-188194] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:17:57.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:17:57.783 [DEBUG] [Thread-188194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:17:57.783 [DEBUG] [Thread-188194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:17:57.783 [DEBUG] [Thread-188194] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:17:57.824 [DEBUG] [Thread-188194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:17:57.824 [DEBUG] [Thread-188194] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:17:57.826 [DEBUG] [Thread-188194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:17:57.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:17:57.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:17:57.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:17:57.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:17:57.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:17:57.856 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:17:57.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.345536 -999.00  +17.40  24.23     35   +1.90 1 1 1 1 1   888    0 17.31 76.07 ----- 24.2 24.2 175.4 30.5 23.7 -26.2 22.5 -26.8 21.9 -25.0 22.7 -24.9
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.345536
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:17:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:17:33', tmtdew=17.4, humidity=30.95, cloud=0.0, wind=27.31, temperature=16.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:17:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:17:57.857 [DEBUG] [Thread-188194] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:17:57.928 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:17:57.939 [DEBUG] [Thread-188197] [transport.py] [_log()] starting thread (client mode): 0xd3152a70
2025-11-24T10:17:57.940 [DEBUG] [Thread-188197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:17:57.955 [DEBUG] [Thread-188197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:17:57.955 [INFO] [Thread-188197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:17:57.962 [DEBUG] [Thread-188197] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:17:57.962 [DEBUG] [Thread-188197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:17:57.962 [DEBUG] [Thread-188197] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] client lang: <none>
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] server lang: <none>
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] kex follows: False
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] Compression: none
2025-11-24T10:17:57.963 [DEBUG] [Thread-188197] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:17:58.018 [DEBUG] [Thread-188197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:17:58.018 [DEBUG] [Thread-188197] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:17:58.018 [DEBUG] [Thread-188197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:17:58.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:17:58.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:17:58.076 [DEBUG] [Thread-188197] [transport.py] [_log()] userauth is OK
2025-11-24T10:17:58.076 [DEBUG] [Thread-188197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:17:58.076 [DEBUG] [Thread-188197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:17:58.076 [DEBUG] [Thread-188197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:17:58.076 [DEBUG] [Thread-188197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:17:58.098 [INFO] [Thread-188197] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:17:58.098 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:17:58.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:17:58.951 [DEBUG] [Thread-188197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:17:58.951 [DEBUG] [Thread-188197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:17:58.998 [DEBUG] [Thread-188197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:17:58.998 [DEBUG] [Thread-188197] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:17:59.008 [DEBUG] [Thread-188197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:17:59.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:17:59.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')
2025-11-24T10:17:59.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-11-24T10:17:59.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:17:59.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:17:59.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:17:59.049 [DEBUG] [Thread-188197] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:18:10.113 [DEBUG] [Thread-188199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:18:25.151 [DEBUG] [Thread-188200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:18:29.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:18:29.065 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:18:29.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:18:29.779 [DEBUG] [Thread-188201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:18:29.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 18, 5), 17.2, 31.4, 0.0, 30.19, 17.03, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:18:29.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:18:05
2025-11-24T10:18:30.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:18:30.151 [DEBUG] [Thread-188202] [transport.py] [_log()] starting thread (client mode): 0xd3151390
2025-11-24T10:18:30.152 [DEBUG] [Thread-188202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:18:30.172 [DEBUG] [Thread-188202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:18:30.172 [INFO] [Thread-188202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] client lang: <none>
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] server lang: <none>
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] kex follows: False
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:18:30.182 [DEBUG] [Thread-188202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:18:30.183 [DEBUG] [Thread-188202] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:18:30.183 [DEBUG] [Thread-188202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:18:30.183 [DEBUG] [Thread-188202] [transport.py] [_log()] Compression: none
2025-11-24T10:18:30.183 [DEBUG] [Thread-188202] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:18:30.202 [DEBUG] [Thread-188202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:18:30.203 [DEBUG] [Thread-188202] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:18:30.203 [DEBUG] [Thread-188202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:18:30.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:18:30.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:18:30.206 [DEBUG] [Thread-188202] [transport.py] [_log()] userauth is OK
2025-11-24T10:18:30.206 [DEBUG] [Thread-188202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:18:30.206 [DEBUG] [Thread-188202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:18:30.206 [DEBUG] [Thread-188202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:18:30.206 [DEBUG] [Thread-188202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:18:30.230 [INFO] [Thread-188202] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:18:30.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:18:30.864 [DEBUG] [Thread-188202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:18:30.864 [DEBUG] [Thread-188202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:18:30.865 [DEBUG] [Thread-188202] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:18:30.906 [DEBUG] [Thread-188202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:18:30.906 [DEBUG] [Thread-188202] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:18:30.909 [DEBUG] [Thread-188202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:18:30.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:18:30.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:18:30.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:18:30.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:18:30.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:18:30.935 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:18:30.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:18:30.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:18:30.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:18:30.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.345883 -999.00  +17.20  24.87     35   +1.70 1 1 1 1 1   888    0 17.36 80.47 ----- 24.9 24.9 161.0 37.2 23.8 -26.8 22.6 -24.9 21.9 -25.1 22.7 -25.0
2025-11-24T10:18:30.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:18:30.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:18:30.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.345883
2025-11-24T10:18:30.944 [DEBUG] [Thread-188202] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:18:30.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:18:30.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:18:30.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:18:30.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:18:30.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:18:30.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:18:05', tmtdew=17.2, humidity=31.4, cloud=0.0, wind=30.19, temperature=17.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:18:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:18:31.030 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:18:31.041 [DEBUG] [Thread-188205] [transport.py] [_log()] starting thread (client mode): 0xd317ee30
2025-11-24T10:18:31.042 [DEBUG] [Thread-188205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:18:31.057 [DEBUG] [Thread-188205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:18:31.057 [INFO] [Thread-188205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:18:31.065 [DEBUG] [Thread-188205] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:18:31.065 [DEBUG] [Thread-188205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:18:31.065 [DEBUG] [Thread-188205] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:18:31.065 [DEBUG] [Thread-188205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:18:31.065 [DEBUG] [Thread-188205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:18:31.065 [DEBUG] [Thread-188205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:18:31.065 [DEBUG] [Thread-188205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:18:31.065 [DEBUG] [Thread-188205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] client lang: <none>
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] server lang: <none>
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] kex follows: False
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] Compression: none
2025-11-24T10:18:31.066 [DEBUG] [Thread-188205] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:18:31.124 [DEBUG] [Thread-188205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:18:31.125 [DEBUG] [Thread-188205] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:18:31.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:18:31.126 [DEBUG] [Thread-188205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:18:31.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:18:31.180 [DEBUG] [Thread-188205] [transport.py] [_log()] userauth is OK
2025-11-24T10:18:31.180 [DEBUG] [Thread-188205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:18:31.180 [DEBUG] [Thread-188205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:18:31.180 [DEBUG] [Thread-188205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:18:31.180 [DEBUG] [Thread-188205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:18:31.199 [INFO] [Thread-188205] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:18:31.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:18:31.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:18:32.106 [DEBUG] [Thread-188205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:18:32.106 [DEBUG] [Thread-188205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:18:32.154 [DEBUG] [Thread-188205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:18:32.154 [DEBUG] [Thread-188205] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:18:32.163 [DEBUG] [Thread-188205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:18:32.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:18:32.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-11-24T10:18:32.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-11-24T10:18:32.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:18:32.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:18:32.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:18:32.199 [DEBUG] [Thread-188205] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:18:40.186 [DEBUG] [Thread-188207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:18:55.219 [DEBUG] [Thread-188208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:19:02.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:19:02.222 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:19:02.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-11-24T10:19:03.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 18, 38), 17.39, 30.4, 0.0, 26.41, 16.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:19:03.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:18:38
2025-11-24T10:19:03.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:19:03.336 [DEBUG] [Thread-188209] [transport.py] [_log()] starting thread (client mode): 0xd3153880
2025-11-24T10:19:03.337 [DEBUG] [Thread-188209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:19:03.348 [DEBUG] [Thread-188209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:19:03.348 [INFO] [Thread-188209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] client lang: <none>
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] server lang: <none>
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] kex follows: False
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] Compression: none
2025-11-24T10:19:03.351 [DEBUG] [Thread-188209] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:19:03.370 [DEBUG] [Thread-188209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:19:03.370 [DEBUG] [Thread-188209] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:19:03.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:19:03.371 [DEBUG] [Thread-188209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:19:03.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:19:03.373 [DEBUG] [Thread-188209] [transport.py] [_log()] userauth is OK
2025-11-24T10:19:03.373 [DEBUG] [Thread-188209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:19:03.373 [DEBUG] [Thread-188209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:19:03.373 [DEBUG] [Thread-188209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:19:03.373 [DEBUG] [Thread-188209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:19:03.390 [INFO] [Thread-188209] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:19:03.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:19:04.032 [DEBUG] [Thread-188209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:19:04.032 [DEBUG] [Thread-188209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:19:04.032 [DEBUG] [Thread-188209] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:19:04.073 [DEBUG] [Thread-188209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:19:04.073 [DEBUG] [Thread-188209] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:19:04.074 [DEBUG] [Thread-188209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:19:04.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:19:04.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:19:04.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:19:04.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:19:04.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:19:04.088 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:19:04.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:19:04.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:19:04.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:19:04.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.346230 -999.00  +17.00  25.26     35   +1.40 1 1 1 1 1   888    0 17.56 82.62 ----- 25.3 25.3 159.4 29.0 23.7 -26.3 22.6 -25.1 21.8 -25.6 22.7 -25.5
2025-11-24T10:19:04.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:19:04.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:19:04.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.346230
2025-11-24T10:19:04.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:19:04.097 [DEBUG] [Thread-188209] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:19:04.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:19:04.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:19:04.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:19:04.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:19:04.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:18:38', tmtdew=17.39, humidity=30.4, cloud=0.0, wind=26.41, temperature=16.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:18:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:19:04.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:19:04.182 [DEBUG] [Thread-188212] [transport.py] [_log()] starting thread (client mode): 0xd3191660
2025-11-24T10:19:04.182 [DEBUG] [Thread-188212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:19:04.201 [DEBUG] [Thread-188212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:19:04.201 [INFO] [Thread-188212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:19:04.208 [DEBUG] [Thread-188212] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:19:04.208 [DEBUG] [Thread-188212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:19:04.208 [DEBUG] [Thread-188212] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:19:04.208 [DEBUG] [Thread-188212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:19:04.208 [DEBUG] [Thread-188212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:19:04.208 [DEBUG] [Thread-188212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:19:04.208 [DEBUG] [Thread-188212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] client lang: <none>
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] server lang: <none>
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] kex follows: False
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] Compression: none
2025-11-24T10:19:04.209 [DEBUG] [Thread-188212] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:19:04.271 [DEBUG] [Thread-188212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:19:04.272 [DEBUG] [Thread-188212] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:19:04.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:19:04.272 [DEBUG] [Thread-188212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:19:04.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:19:04.328 [DEBUG] [Thread-188212] [transport.py] [_log()] userauth is OK
2025-11-24T10:19:04.328 [DEBUG] [Thread-188212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:19:04.328 [DEBUG] [Thread-188212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:19:04.329 [DEBUG] [Thread-188212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:19:04.329 [DEBUG] [Thread-188212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:19:04.352 [INFO] [Thread-188212] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:19:04.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:19:04.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:19:05.223 [DEBUG] [Thread-188212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:19:05.223 [DEBUG] [Thread-188212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:19:05.271 [DEBUG] [Thread-188212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:19:05.271 [DEBUG] [Thread-188212] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:19:05.282 [DEBUG] [Thread-188212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:19:05.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:19:05.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-11-24T10:19:05.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-11-24T10:19:05.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:19:05.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:19:05.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:19:05.314 [DEBUG] [Thread-188212] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:19:10.251 [DEBUG] [Thread-188214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:19:25.303 [DEBUG] [Thread-188215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:19:29.958 [DEBUG] [Thread-188216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:19:35.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:19:35.336 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:19:35.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-11-24T10:19:36.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 19, 10), 17.64, 29.92, 0.0, 25.81, 16.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:19:36.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:19:10
2025-11-24T10:19:36.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:19:36.456 [DEBUG] [Thread-188217] [transport.py] [_log()] starting thread (client mode): 0xd3193640
2025-11-24T10:19:36.456 [DEBUG] [Thread-188217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:19:36.476 [DEBUG] [Thread-188217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:19:36.476 [INFO] [Thread-188217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:19:36.477 [DEBUG] [Thread-188217] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] client lang: <none>
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] server lang: <none>
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] kex follows: False
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:19:36.478 [DEBUG] [Thread-188217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:19:36.479 [DEBUG] [Thread-188217] [transport.py] [_log()] Compression: none
2025-11-24T10:19:36.479 [DEBUG] [Thread-188217] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:19:36.493 [DEBUG] [Thread-188217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:19:36.493 [DEBUG] [Thread-188217] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:19:36.494 [DEBUG] [Thread-188217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:19:36.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:19:36.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:19:36.496 [DEBUG] [Thread-188217] [transport.py] [_log()] userauth is OK
2025-11-24T10:19:36.497 [DEBUG] [Thread-188217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:19:36.497 [DEBUG] [Thread-188217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:19:36.497 [DEBUG] [Thread-188217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:19:36.497 [DEBUG] [Thread-188217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:19:36.521 [INFO] [Thread-188217] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:19:36.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:19:37.149 [DEBUG] [Thread-188217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:19:37.149 [DEBUG] [Thread-188217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:19:37.149 [DEBUG] [Thread-188217] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:19:37.190 [DEBUG] [Thread-188217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:19:37.190 [DEBUG] [Thread-188217] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:19:37.192 [DEBUG] [Thread-188217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:19:37.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:19:37.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:19:37.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:19:37.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:19:37.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:19:37.218 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:19:37.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:19:37.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.346577 -999.00  +16.80  23.49     34   +0.90 1 1 1 1 1   888    0 17.43 83.49 ----- 23.5 23.5 175.4 28.4 23.6 -27.9 22.6 -25.5 21.8 -26.2 22.7 -27.2
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.346577
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:19:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:19:10', tmtdew=17.64, humidity=29.92, cloud=0.0, wind=25.81, temperature=16.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:19:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:19:37.220 [DEBUG] [Thread-188217] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:19:37.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:19:37.303 [DEBUG] [Thread-188220] [transport.py] [_log()] starting thread (client mode): 0xd3152590
2025-11-24T10:19:37.303 [DEBUG] [Thread-188220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:19:37.322 [DEBUG] [Thread-188220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:19:37.322 [INFO] [Thread-188220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:19:37.329 [DEBUG] [Thread-188220] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] client lang: <none>
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] server lang: <none>
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] kex follows: False
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] Compression: none
2025-11-24T10:19:37.330 [DEBUG] [Thread-188220] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:19:37.386 [DEBUG] [Thread-188220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:19:37.395 [DEBUG] [Thread-188220] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:19:37.395 [DEBUG] [Thread-188220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:19:37.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:19:37.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:19:37.443 [DEBUG] [Thread-188220] [transport.py] [_log()] userauth is OK
2025-11-24T10:19:37.443 [DEBUG] [Thread-188220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:19:37.443 [DEBUG] [Thread-188220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:19:37.443 [DEBUG] [Thread-188220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:19:37.443 [DEBUG] [Thread-188220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:19:37.457 [INFO] [Thread-188220] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:19:37.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:19:37.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:19:38.299 [DEBUG] [Thread-188220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:19:38.299 [DEBUG] [Thread-188220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:19:38.347 [DEBUG] [Thread-188220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:19:38.347 [DEBUG] [Thread-188220] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:19:38.356 [DEBUG] [Thread-188220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:19:38.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:19:38.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-11-24T10:19:38.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:19:38.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:19:38.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:19:38.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:19:38.393 [DEBUG] [Thread-188220] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:19:40.345 [DEBUG] [Thread-188222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:19:55.394 [DEBUG] [Thread-188223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:20:08.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:20:08.415 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:20:08.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:20:09.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 19, 42), 18.55, 28.11, 0.0, 23.89, 16.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:20:09.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:19:42
2025-11-24T10:20:09.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:20:09.420 [DEBUG] [Thread-188224] [transport.py] [_log()] starting thread (client mode): 0xd31505b0
2025-11-24T10:20:09.420 [DEBUG] [Thread-188224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:20:09.439 [DEBUG] [Thread-188224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:20:09.439 [INFO] [Thread-188224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] client lang: <none>
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] server lang: <none>
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] kex follows: False
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] Compression: none
2025-11-24T10:20:09.443 [DEBUG] [Thread-188224] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:20:09.457 [DEBUG] [Thread-188224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:20:09.457 [DEBUG] [Thread-188224] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:20:09.457 [DEBUG] [Thread-188224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:20:09.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:20:09.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:20:09.457 [DEBUG] [Thread-188224] [transport.py] [_log()] userauth is OK
2025-11-24T10:20:09.458 [DEBUG] [Thread-188224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:20:09.458 [DEBUG] [Thread-188224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:20:09.458 [DEBUG] [Thread-188224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:20:09.458 [DEBUG] [Thread-188224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:20:09.467 [INFO] [Thread-188224] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:20:09.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:20:10.395 [DEBUG] [Thread-188224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:20:10.395 [DEBUG] [Thread-188224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:20:10.395 [DEBUG] [Thread-188224] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:20:10.434 [DEBUG] [Thread-188226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:20:10.436 [DEBUG] [Thread-188224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:20:10.436 [DEBUG] [Thread-188224] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:20:10.438 [DEBUG] [Thread-188224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:20:10.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:20:10.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:20:10.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:20:10.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:20:10.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:20:10.555 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:20:10.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.346924 -999.00  +17.00  17.94     34   +1.30 1 1 1 1 1   888    0 17.80 86.72 ----- 17.9 17.9 177.1 24.3 23.7 -25.3 22.6 -25.5 21.9 -23.6 22.7 -25.4
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.346924
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:20:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:19:42', tmtdew=18.55, humidity=28.11, cloud=0.0, wind=23.89, temperature=16.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:19:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:20:10.556 [DEBUG] [Thread-188224] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:20: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-11-24T10:20:10.641 [DEBUG] [Thread-188228] [transport.py] [_log()] starting thread (client mode): 0xd073a830
2025-11-24T10:20:10.642 [DEBUG] [Thread-188228] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:20:10.656 [DEBUG] [Thread-188228] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:20:10.656 [INFO] [Thread-188228] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] client lang: <none>
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] server lang: <none>
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] kex follows: False
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] Compression: none
2025-11-24T10:20:10.664 [DEBUG] [Thread-188228] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:20:10.723 [DEBUG] [Thread-188228] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:20:10.724 [DEBUG] [Thread-188228] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:20:10.725 [DEBUG] [Thread-188228] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:20:10.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:20:10.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:20:10.781 [DEBUG] [Thread-188228] [transport.py] [_log()] userauth is OK
2025-11-24T10:20:10.781 [DEBUG] [Thread-188228] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:20:10.781 [DEBUG] [Thread-188228] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:20:10.781 [DEBUG] [Thread-188228] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:20:10.781 [DEBUG] [Thread-188228] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:20:10.796 [INFO] [Thread-188228] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:20:10.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:20:10.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:20:11.653 [DEBUG] [Thread-188228] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:20:11.653 [DEBUG] [Thread-188228] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:20:11.701 [DEBUG] [Thread-188228] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:20:11.701 [DEBUG] [Thread-188228] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:20:11.709 [DEBUG] [Thread-188228] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:20:11.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:20:11.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-11-24T10:20: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-11-24T10:20:11.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:20:11.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:20:11.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:20:11.741 [DEBUG] [Thread-188228] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:20:25.475 [DEBUG] [Thread-188230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:20:30.170 [DEBUG] [Thread-188231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:20:40.537 [DEBUG] [Thread-188232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:20:41.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:20:41.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:20:41.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-11-24T10:20:42.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 20, 15), 18.44, 28.32, 0.0, 21.84, 16.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:20:42.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:20:15
2025-11-24T10:20:42.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:20:42.823 [DEBUG] [Thread-188233] [transport.py] [_log()] starting thread (client mode): 0xd07110c0
2025-11-24T10:20:42.823 [DEBUG] [Thread-188233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:20:42.843 [DEBUG] [Thread-188233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:20:42.844 [INFO] [Thread-188233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] client lang: <none>
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] server lang: <none>
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] kex follows: False
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] Compression: none
2025-11-24T10:20:42.847 [DEBUG] [Thread-188233] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:20:42.858 [DEBUG] [Thread-188233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:20:42.858 [DEBUG] [Thread-188233] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:20:42.859 [DEBUG] [Thread-188233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:20:42.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:20:42.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:20:42.860 [DEBUG] [Thread-188233] [transport.py] [_log()] userauth is OK
2025-11-24T10:20:42.860 [DEBUG] [Thread-188233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:20:42.860 [DEBUG] [Thread-188233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:20:42.860 [DEBUG] [Thread-188233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:20:42.860 [DEBUG] [Thread-188233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:20:42.869 [INFO] [Thread-188233] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:20:42.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:20:43.505 [DEBUG] [Thread-188233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:20:43.505 [DEBUG] [Thread-188233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:20:43.506 [DEBUG] [Thread-188233] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:20:43.545 [DEBUG] [Thread-188233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:20:43.545 [DEBUG] [Thread-188233] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:20:43.548 [DEBUG] [Thread-188233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:20:43.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:20:43.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:20:43.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:20:43.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:20:43.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:20:43.570 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:20:43.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:20:43.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:20:43.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:20:43.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.346924 -999.00  +17.00  17.94     34   +1.30 1 1 1 1 1   888    0 17.80 86.72 ----- 17.9 17.9 177.1 24.3 23.7 -25.3 22.6 -25.5 21.9 -23.6 22.7 -25.4
2025-11-24T10:20:43.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:20:43.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:20:43.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.346924
2025-11-24T10:20:43.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:20:43.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:20:43.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:20:43.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:20:43.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:20:43.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:20:15', tmtdew=18.44, humidity=28.32, cloud=0.0, wind=21.84, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:19:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:20:43.573 [DEBUG] [Thread-188233] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:20:43.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:20:43.662 [DEBUG] [Thread-188236] [transport.py] [_log()] starting thread (client mode): 0xd0713550
2025-11-24T10:20:43.662 [DEBUG] [Thread-188236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:20:43.677 [DEBUG] [Thread-188236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:20:43.677 [INFO] [Thread-188236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:20:43.685 [DEBUG] [Thread-188236] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] client lang: <none>
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] server lang: <none>
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] kex follows: False
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] Compression: none
2025-11-24T10:20:43.686 [DEBUG] [Thread-188236] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:20:43.742 [DEBUG] [Thread-188236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:20:43.742 [DEBUG] [Thread-188236] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:20:43.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:20:43.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:20:43.743 [DEBUG] [Thread-188236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:20:43.801 [DEBUG] [Thread-188236] [transport.py] [_log()] userauth is OK
2025-11-24T10:20:43.801 [DEBUG] [Thread-188236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:20:43.801 [DEBUG] [Thread-188236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:20:43.801 [DEBUG] [Thread-188236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:20:43.801 [DEBUG] [Thread-188236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:20:43.821 [INFO] [Thread-188236] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:20:43.821 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:20:43.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:20:44.688 [DEBUG] [Thread-188236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:20:44.688 [DEBUG] [Thread-188236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:20:44.736 [DEBUG] [Thread-188236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:20:44.736 [DEBUG] [Thread-188236] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:20:44.744 [DEBUG] [Thread-188236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:20:44.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:20:44.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-11-24T10:20:44.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-11-24T10:20:44.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:20:44.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:20:44.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:20:44.776 [DEBUG] [Thread-188236] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:20:55.576 [DEBUG] [Thread-188238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:21:10.627 [DEBUG] [Thread-188239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:21:14.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:21:14.774 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:21:14.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-11-24T10:21:15.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 20, 47), 18.38, 28.79, 0.0, 21.28, 17.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:21:15.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:20:47
2025-11-24T10:21:15.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:21:15.878 [DEBUG] [Thread-188240] [transport.py] [_log()] starting thread (client mode): 0xd0713a00
2025-11-24T10:21:15.879 [DEBUG] [Thread-188240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:21:15.901 [DEBUG] [Thread-188240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:21:15.901 [INFO] [Thread-188240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] client lang: <none>
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] server lang: <none>
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] kex follows: False
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:21:15.905 [DEBUG] [Thread-188240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:21:15.906 [DEBUG] [Thread-188240] [transport.py] [_log()] Compression: none
2025-11-24T10:21:15.906 [DEBUG] [Thread-188240] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:21:15.924 [DEBUG] [Thread-188240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:21:15.925 [DEBUG] [Thread-188240] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:21:15.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:21:15.925 [DEBUG] [Thread-188240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:21:15.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:21:15.928 [DEBUG] [Thread-188240] [transport.py] [_log()] userauth is OK
2025-11-24T10:21:15.928 [DEBUG] [Thread-188240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:21:15.928 [DEBUG] [Thread-188240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:21:15.928 [DEBUG] [Thread-188240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:21:15.928 [DEBUG] [Thread-188240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:21:15.952 [INFO] [Thread-188240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:21:15.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:21:16.613 [DEBUG] [Thread-188240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:21:16.613 [DEBUG] [Thread-188240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:21:16.613 [DEBUG] [Thread-188240] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:21:16.654 [DEBUG] [Thread-188240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:21:16.654 [DEBUG] [Thread-188240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:21:16.656 [DEBUG] [Thread-188240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:21:16.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:21:16.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:21:16.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:21:16.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:21:16.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:21:16.674 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:21:16.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:21:16.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:21:16.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:21:16.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.347619 -999.00  +16.80  20.25     34   +0.90 1 1 1 1 1   888    0 17.58 83.93 ----- 20.2 20.2 178.2 29.3 23.6 -27.2 22.2 -30.5 21.8 -24.4 22.7 -26.4
2025-11-24T10:21:16.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:21:16.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:21:16.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.347619
2025-11-24T10:21:16.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:21:16.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:21:16.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:21:16.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:21:16.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:21:16.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:20:47', tmtdew=18.38, humidity=28.79, cloud=0.0, wind=21.28, temperature=17.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:20:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:21:16.676 [DEBUG] [Thread-188240] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:21:16.747 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:21:16.758 [DEBUG] [Thread-188243] [transport.py] [_log()] starting thread (client mode): 0xd31b0a00
2025-11-24T10:21:16.758 [DEBUG] [Thread-188243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:21:16.775 [DEBUG] [Thread-188243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:21:16.775 [INFO] [Thread-188243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:21:16.782 [DEBUG] [Thread-188243] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:21:16.782 [DEBUG] [Thread-188243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:21:16.782 [DEBUG] [Thread-188243] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:21:16.782 [DEBUG] [Thread-188243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] client lang: <none>
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] server lang: <none>
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] kex follows: False
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] Compression: none
2025-11-24T10:21:16.783 [DEBUG] [Thread-188243] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:21:16.838 [DEBUG] [Thread-188243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:21:16.838 [DEBUG] [Thread-188243] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:21:16.838 [DEBUG] [Thread-188243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:21:16.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:21:16.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:21:16.896 [DEBUG] [Thread-188243] [transport.py] [_log()] userauth is OK
2025-11-24T10:21:16.896 [DEBUG] [Thread-188243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:21:16.896 [DEBUG] [Thread-188243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:21:16.896 [DEBUG] [Thread-188243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:21:16.896 [DEBUG] [Thread-188243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:21:16.910 [INFO] [Thread-188243] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:21:16.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:21:16.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:21:17.750 [DEBUG] [Thread-188243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:21:17.750 [DEBUG] [Thread-188243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:21:17.798 [DEBUG] [Thread-188243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:21:17.798 [DEBUG] [Thread-188243] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:21:17.807 [DEBUG] [Thread-188243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:21:17.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:21: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-11-24T10:21:17.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-11-24T10:21:17.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:21:17.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:21:17.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:21:17.844 [DEBUG] [Thread-188243] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:21:25.654 [DEBUG] [Thread-188245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:21:30.339 [DEBUG] [Thread-188246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:21:40.698 [DEBUG] [Thread-188247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:21:47.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:21:47.865 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:21:47.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-11-24T10:21:48.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 21, 20), 18.42, 28.72, 0.0, 21.33, 17.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:21:48.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:21:20
2025-11-24T10:21:48.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:21:48.858 [DEBUG] [Thread-188248] [transport.py] [_log()] starting thread (client mode): 0xd317fc70
2025-11-24T10:21:48.858 [DEBUG] [Thread-188248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:21:48.877 [DEBUG] [Thread-188248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:21:48.878 [INFO] [Thread-188248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] client lang: <none>
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] server lang: <none>
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] kex follows: False
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:21:48.881 [DEBUG] [Thread-188248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:21:48.882 [DEBUG] [Thread-188248] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:21:48.882 [DEBUG] [Thread-188248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:21:48.882 [DEBUG] [Thread-188248] [transport.py] [_log()] Compression: none
2025-11-24T10:21:48.882 [DEBUG] [Thread-188248] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:21:48.898 [DEBUG] [Thread-188248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:21:48.899 [DEBUG] [Thread-188248] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:21:48.899 [DEBUG] [Thread-188248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:21:48.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:21:48.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:21:48.901 [DEBUG] [Thread-188248] [transport.py] [_log()] userauth is OK
2025-11-24T10:21:48.901 [DEBUG] [Thread-188248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:21:48.901 [DEBUG] [Thread-188248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:21:48.902 [DEBUG] [Thread-188248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:21:48.902 [DEBUG] [Thread-188248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:21:48.926 [INFO] [Thread-188248] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:21:48.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:21:49.538 [DEBUG] [Thread-188248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:21:49.538 [DEBUG] [Thread-188248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:21:49.538 [DEBUG] [Thread-188248] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:21:49.579 [DEBUG] [Thread-188248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:21:49.579 [DEBUG] [Thread-188248] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:21:49.582 [DEBUG] [Thread-188248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:21:49.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:21:49.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:21:49.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:21:49.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:21:49.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:21:49.612 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:21:49.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:21:49.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:21:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:21:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.347966 -999.00  +17.00  16.41     33   +1.00 1 1 1 1 1   888    0 18.03 84.68 ----- 16.4 16.4 187.2 24.6 23.7 -26.1 22.4 -25.5 21.9 -24.5 22.7 -25.1
2025-11-24T10:21:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:21:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:21:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.347966
2025-11-24T10:21:49.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:21:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:21:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:21:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:21:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:21:49.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:21:20', tmtdew=18.42, humidity=28.72, cloud=0.0, wind=21.33, temperature=17.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:21:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:21:49.613 [DEBUG] [Thread-188248] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:21:49.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:21:49.698 [DEBUG] [Thread-188251] [transport.py] [_log()] starting thread (client mode): 0xd317c460
2025-11-24T10:21:49.698 [DEBUG] [Thread-188251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:21:49.718 [DEBUG] [Thread-188251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:21:49.718 [INFO] [Thread-188251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:21:49.725 [DEBUG] [Thread-188251] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] client lang: <none>
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] server lang: <none>
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] kex follows: False
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] Compression: none
2025-11-24T10:21:49.726 [DEBUG] [Thread-188251] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:21:49.786 [DEBUG] [Thread-188251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:21:49.786 [DEBUG] [Thread-188251] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:21:49.786 [DEBUG] [Thread-188251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:21:49.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:21:49.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:21:49.843 [DEBUG] [Thread-188251] [transport.py] [_log()] userauth is OK
2025-11-24T10:21:49.843 [DEBUG] [Thread-188251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:21:49.843 [DEBUG] [Thread-188251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:21:49.843 [DEBUG] [Thread-188251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:21:49.843 [DEBUG] [Thread-188251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:21:49.858 [INFO] [Thread-188251] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:21:49.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:21:49.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:21:50.733 [DEBUG] [Thread-188251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:21:50.733 [DEBUG] [Thread-188251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:21:50.784 [DEBUG] [Thread-188251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:21:50.784 [DEBUG] [Thread-188251] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:21:50.794 [DEBUG] [Thread-188251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:21:50.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:21:50.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-11-24T10:21: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-11-24T10:21:50.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:21:50.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:21:50.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:21:50.841 [DEBUG] [Thread-188251] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:21:55.743 [DEBUG] [Thread-188253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:22:10.780 [DEBUG] [Thread-188254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:22:20.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:22:20.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:22:20.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:22:21.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 21, 52), 18.54, 28.07, 0.0, 19.73, 16.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:22:21.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:21:52
2025-11-24T10:22:21.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:22:21.950 [DEBUG] [Thread-188255] [transport.py] [_log()] starting thread (client mode): 0xd317cb20
2025-11-24T10:22:21.950 [DEBUG] [Thread-188255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:22:21.972 [DEBUG] [Thread-188255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:22:21.972 [INFO] [Thread-188255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:22:21.975 [DEBUG] [Thread-188255] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:22:21.975 [DEBUG] [Thread-188255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:22:21.975 [DEBUG] [Thread-188255] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:22:21.975 [DEBUG] [Thread-188255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:22:21.975 [DEBUG] [Thread-188255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] client lang: <none>
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] server lang: <none>
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] kex follows: False
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] Compression: none
2025-11-24T10:22:21.976 [DEBUG] [Thread-188255] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:22:21.993 [DEBUG] [Thread-188255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:22:21.993 [DEBUG] [Thread-188255] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:22:21.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:22:21.994 [DEBUG] [Thread-188255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:22:21.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:22:21.996 [DEBUG] [Thread-188255] [transport.py] [_log()] userauth is OK
2025-11-24T10:22:21.997 [DEBUG] [Thread-188255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:22:21.997 [DEBUG] [Thread-188255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:22:21.997 [DEBUG] [Thread-188255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:22:21.997 [DEBUG] [Thread-188255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:22:22.020 [INFO] [Thread-188255] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:22:22.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:22:22.662 [DEBUG] [Thread-188255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:22:22.662 [DEBUG] [Thread-188255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:22:22.662 [DEBUG] [Thread-188255] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:22:22.703 [DEBUG] [Thread-188255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:22:22.703 [DEBUG] [Thread-188255] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:22:22.705 [DEBUG] [Thread-188255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:22:22.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:22:22.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:22:22.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:22:22.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:22:22.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:22:22.722 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:22:22.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.348313 -999.00  +16.90  15.29     33   +0.80 1 1 1 1 1   888    0 18.22 96.93 ----- 15.3 15.3 207.4 25.3 23.7 -27.5 22.2 -30.3 21.9 -24.7 22.7 -25.1
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.348313
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:22:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:21:52', tmtdew=18.54, humidity=28.07, cloud=0.0, wind=19.73, temperature=16.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:21:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:22:22.724 [DEBUG] [Thread-188255] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:22:22.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:22:22.811 [DEBUG] [Thread-188258] [transport.py] [_log()] starting thread (client mode): 0xd07398d0
2025-11-24T10:22:22.811 [DEBUG] [Thread-188258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:22:22.827 [DEBUG] [Thread-188258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:22:22.827 [INFO] [Thread-188258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:22:22.834 [DEBUG] [Thread-188258] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] client lang: <none>
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] server lang: <none>
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] kex follows: False
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] Compression: none
2025-11-24T10:22:22.835 [DEBUG] [Thread-188258] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:22:22.890 [DEBUG] [Thread-188258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:22:22.890 [DEBUG] [Thread-188258] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:22:22.890 [DEBUG] [Thread-188258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:22:22.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:22:22.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:22:22.947 [DEBUG] [Thread-188258] [transport.py] [_log()] userauth is OK
2025-11-24T10:22:22.947 [DEBUG] [Thread-188258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:22:22.947 [DEBUG] [Thread-188258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:22:22.947 [DEBUG] [Thread-188258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:22:22.947 [DEBUG] [Thread-188258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:22:22.961 [INFO] [Thread-188258] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:22:22.961 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:22:22.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:22:23.831 [DEBUG] [Thread-188258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:22:23.831 [DEBUG] [Thread-188258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:22:23.882 [DEBUG] [Thread-188258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:22:23.882 [DEBUG] [Thread-188258] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:22:23.891 [DEBUG] [Thread-188258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:22:23.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:22:23.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-11-24T10:22:23.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-11-24T10:22:23.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:22:23.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:22:23.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:22:23.928 [DEBUG] [Thread-188258] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:22:25.811 [DEBUG] [Thread-188260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:22:30.540 [DEBUG] [Thread-188261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:22:40.856 [DEBUG] [Thread-188262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:22:53.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:22:53.950 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:22:53.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-11-24T10:22:54.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 22, 24), 18.49, 28.22, 0.0, 24.42, 16.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:22:54.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:22:24
2025-11-24T10:22:54.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:22:54.928 [DEBUG] [Thread-188263] [transport.py] [_log()] starting thread (client mode): 0xd31b1780
2025-11-24T10:22:54.928 [DEBUG] [Thread-188263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:22:54.947 [DEBUG] [Thread-188263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:22:54.947 [INFO] [Thread-188263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:22:54.950 [DEBUG] [Thread-188263] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:22:54.950 [DEBUG] [Thread-188263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:22:54.950 [DEBUG] [Thread-188263] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] client lang: <none>
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] server lang: <none>
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] kex follows: False
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:22:54.951 [DEBUG] [Thread-188263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:22:54.952 [DEBUG] [Thread-188263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:22:54.952 [DEBUG] [Thread-188263] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:22:54.953 [DEBUG] [Thread-188263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:22:54.953 [DEBUG] [Thread-188263] [transport.py] [_log()] Compression: none
2025-11-24T10:22:54.953 [DEBUG] [Thread-188263] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:22:54.971 [DEBUG] [Thread-188263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:22:54.972 [DEBUG] [Thread-188263] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:22:54.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:22:54.973 [DEBUG] [Thread-188263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:22:54.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:22:54.976 [DEBUG] [Thread-188263] [transport.py] [_log()] userauth is OK
2025-11-24T10:22:54.976 [DEBUG] [Thread-188263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:22:54.976 [DEBUG] [Thread-188263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:22:54.976 [DEBUG] [Thread-188263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:22:54.976 [DEBUG] [Thread-188263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:22:55.000 [INFO] [Thread-188263] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:22:55.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:22:55.625 [DEBUG] [Thread-188263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:22:55.626 [DEBUG] [Thread-188263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:22:55.626 [DEBUG] [Thread-188263] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:22:55.666 [DEBUG] [Thread-188263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:22:55.667 [DEBUG] [Thread-188263] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:22:55.669 [DEBUG] [Thread-188263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:22:55.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:22:55.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:22:55.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:22:55.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:22:55.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:22:55.694 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:22:55.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:22:55.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:22:55.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:22:55.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.348660 -999.00  +17.00  23.78     34   +1.10 1 1 1 1 1   888    0 18.33 94.01 ----- 23.8 23.8 186.0 27.8 23.8 -24.9 22.6 -25.6 22.1 -23.8 22.8 -26.4
2025-11-24T10:22:55.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:22:55.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:22:55.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.348660
2025-11-24T10:22:55.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:22:55.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:22:55.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:22:55.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:22:55.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:22:55.697 [DEBUG] [Thread-188263] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:22:55.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:22:24', tmtdew=18.49, humidity=28.22, cloud=0.0, wind=24.42, temperature=16.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:22:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:22:55.780 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:22:55.797 [DEBUG] [Thread-188266] [transport.py] [_log()] starting thread (client mode): 0xd0702080
2025-11-24T10:22:55.797 [DEBUG] [Thread-188266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:22:55.814 [DEBUG] [Thread-188266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:22:55.814 [INFO] [Thread-188266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:22:55.822 [DEBUG] [Thread-188266] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:22:55.822 [DEBUG] [Thread-188266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:22:55.822 [DEBUG] [Thread-188266] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:22:55.822 [DEBUG] [Thread-188266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:22:55.822 [DEBUG] [Thread-188266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] client lang: <none>
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] server lang: <none>
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] kex follows: False
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:22:55.823 [DEBUG] [Thread-188266] [transport.py] [_log()] Compression: none
2025-11-24T10:22:55.824 [DEBUG] [Thread-188266] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:22:55.880 [DEBUG] [Thread-188266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:22:55.881 [DEBUG] [Thread-188266] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:22:55.882 [DEBUG] [Thread-188266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:22:55.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:22:55.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:22:55.893 [DEBUG] [Thread-188268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:22:55.935 [DEBUG] [Thread-188266] [transport.py] [_log()] userauth is OK
2025-11-24T10:22:55.936 [DEBUG] [Thread-188266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:22:55.936 [DEBUG] [Thread-188266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:22:55.936 [DEBUG] [Thread-188266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:22:55.936 [DEBUG] [Thread-188266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:22:55.958 [INFO] [Thread-188266] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:22:55.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:22:55.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:22:56.813 [DEBUG] [Thread-188266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:22:56.813 [DEBUG] [Thread-188266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:22:56.861 [DEBUG] [Thread-188266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:22:56.861 [DEBUG] [Thread-188266] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:22:56.869 [DEBUG] [Thread-188266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:22:56.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:22:56.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-11-24T10:22:56.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:22:56.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:22:56.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:22:56.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:22:56.903 [DEBUG] [Thread-188266] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:23:10.940 [DEBUG] [Thread-188269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:23:25.986 [DEBUG] [Thread-188270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:23:26.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:23:26.925 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:23: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-11-24T10:23:27.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 22, 57), 18.49, 28.26, 0.0, 22.74, 17.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:23:27.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:22:57
2025-11-24T10:23:27.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:23:27.892 [DEBUG] [Thread-188271] [transport.py] [_log()] starting thread (client mode): 0xd317c310
2025-11-24T10:23:27.892 [DEBUG] [Thread-188271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:23:27.912 [DEBUG] [Thread-188271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:23:27.912 [INFO] [Thread-188271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:23:27.915 [DEBUG] [Thread-188271] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] client lang: <none>
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] server lang: <none>
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] kex follows: False
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:23:27.916 [DEBUG] [Thread-188271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:23:27.917 [DEBUG] [Thread-188271] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:23:27.917 [DEBUG] [Thread-188271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:23:27.917 [DEBUG] [Thread-188271] [transport.py] [_log()] Compression: none
2025-11-24T10:23:27.917 [DEBUG] [Thread-188271] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:23:27.935 [DEBUG] [Thread-188271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:23:27.935 [DEBUG] [Thread-188271] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:23:27.935 [DEBUG] [Thread-188271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:23:27.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:23:27.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:23:27.936 [DEBUG] [Thread-188271] [transport.py] [_log()] userauth is OK
2025-11-24T10:23:27.936 [DEBUG] [Thread-188271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:23:27.936 [DEBUG] [Thread-188271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:23:27.936 [DEBUG] [Thread-188271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:23:27.936 [DEBUG] [Thread-188271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:23:27.954 [INFO] [Thread-188271] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:23:27.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:23:28.623 [DEBUG] [Thread-188271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:23:28.623 [DEBUG] [Thread-188271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:23:28.624 [DEBUG] [Thread-188271] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:23:28.665 [DEBUG] [Thread-188271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:23:28.665 [DEBUG] [Thread-188271] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:23:28.668 [DEBUG] [Thread-188271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:23:28.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:23:28.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:23:28.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:23:28.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:23:28.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:23:28.693 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:23:28.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:23:28.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:23:28.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:23:28.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.349008 -999.00  +17.10  21.19     33   +1.00 1 1 1 1 1   888    0 17.99 91.21 ----- 21.2 21.2 165.6 29.1 23.9 -27.0 22.7 -24.8 21.9 -24.6 22.8 -26.1
2025-11-24T10:23:28.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:23:28.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:23:28.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.349008
2025-11-24T10:23:28.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:23:28.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:23:28.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:23:28.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:23:28.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:23:28.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:22:57', tmtdew=18.49, humidity=28.26, cloud=0.0, wind=22.74, temperature=17.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:22:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:23:28.696 [DEBUG] [Thread-188271] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:23:28.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:23:28.791 [DEBUG] [Thread-188274] [transport.py] [_log()] starting thread (client mode): 0xd3190c10
2025-11-24T10:23:28.791 [DEBUG] [Thread-188274] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:23:28.806 [DEBUG] [Thread-188274] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:23:28.806 [INFO] [Thread-188274] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:23:28.817 [DEBUG] [Thread-188274] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:23:28.818 [DEBUG] [Thread-188274] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:23:28.818 [DEBUG] [Thread-188274] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:23:28.819 [DEBUG] [Thread-188274] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:23:28.819 [DEBUG] [Thread-188274] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:23:28.819 [DEBUG] [Thread-188274] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:23:28.819 [DEBUG] [Thread-188274] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:23:28.819 [DEBUG] [Thread-188274] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:23:28.819 [DEBUG] [Thread-188274] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:23:28.819 [DEBUG] [Thread-188274] [transport.py] [_log()] client lang: <none>
2025-11-24T10:23:28.819 [DEBUG] [Thread-188274] [transport.py] [_log()] server lang: <none>
2025-11-24T10:23:28.820 [DEBUG] [Thread-188274] [transport.py] [_log()] kex follows: False
2025-11-24T10:23:28.820 [DEBUG] [Thread-188274] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:23:28.820 [DEBUG] [Thread-188274] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:23:28.820 [DEBUG] [Thread-188274] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:23:28.821 [DEBUG] [Thread-188274] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:23:28.821 [DEBUG] [Thread-188274] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:23:28.821 [DEBUG] [Thread-188274] [transport.py] [_log()] Compression: none
2025-11-24T10:23:28.821 [DEBUG] [Thread-188274] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:23:28.886 [DEBUG] [Thread-188274] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:23:28.887 [DEBUG] [Thread-188274] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:23:28.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:23:28.889 [DEBUG] [Thread-188274] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:23:28.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:23:28.944 [DEBUG] [Thread-188274] [transport.py] [_log()] userauth is OK
2025-11-24T10:23:28.944 [DEBUG] [Thread-188274] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:23:28.944 [DEBUG] [Thread-188274] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:23:28.944 [DEBUG] [Thread-188274] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:23:28.945 [DEBUG] [Thread-188274] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:23:28.968 [INFO] [Thread-188274] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:23:28.968 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:23:28.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:23:29.882 [DEBUG] [Thread-188274] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:23:29.882 [DEBUG] [Thread-188274] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:23:29.930 [DEBUG] [Thread-188274] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:23:29.931 [DEBUG] [Thread-188274] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:23:29.939 [DEBUG] [Thread-188274] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:23:29.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:23:29.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-11-24T10:23:29.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-11-24T10:23:29.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:23:29.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:23:29.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:23:29.971 [DEBUG] [Thread-188274] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:23:30.574 [DEBUG] [Thread-188276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:23:41.015 [DEBUG] [Thread-188277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:23:56.063 [DEBUG] [Thread-188278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:23:59.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:23:59.992 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:23:59.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:24:00.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 23, 29), 18.64, 27.99, 0.0, 20.91, 17.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:24:00.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:23:29
2025-11-24T10:24:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:24:00.996 [DEBUG] [Thread-188279] [transport.py] [_log()] starting thread (client mode): 0xd073bf10
2025-11-24T10:24:00.997 [DEBUG] [Thread-188279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:24:01.017 [DEBUG] [Thread-188279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:24:01.017 [INFO] [Thread-188279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] client lang: <none>
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] server lang: <none>
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] kex follows: False
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] Compression: none
2025-11-24T10:24:01.020 [DEBUG] [Thread-188279] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:24:01.035 [DEBUG] [Thread-188279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:24:01.035 [DEBUG] [Thread-188279] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:24:01.035 [DEBUG] [Thread-188279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:24:01.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:24:01.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:24:01.036 [DEBUG] [Thread-188279] [transport.py] [_log()] userauth is OK
2025-11-24T10:24:01.037 [DEBUG] [Thread-188279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:24:01.037 [DEBUG] [Thread-188279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:24:01.037 [DEBUG] [Thread-188279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:24:01.037 [DEBUG] [Thread-188279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:24:01.055 [INFO] [Thread-188279] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:24:01.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:24:01.700 [DEBUG] [Thread-188279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:24:01.700 [DEBUG] [Thread-188279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:24:01.700 [DEBUG] [Thread-188279] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:24:01.741 [DEBUG] [Thread-188279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:24:01.741 [DEBUG] [Thread-188279] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:24:01.744 [DEBUG] [Thread-188279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:24:01.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:24:01.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:24:01.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:24:01.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:24:01.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:24:01.762 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:24:01.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:24:01.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.349355 -999.00  +16.80  16.07     34   +0.90 1 1 1 1 1   888    0 18.57 98.53 ----- 16.1 16.1 151.4 30.2 23.7 -27.4 22.7 -25.0 21.9 -24.2 22.7 -25.9
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.349355
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:24:01.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:23:29', tmtdew=18.64, humidity=27.99, cloud=0.0, wind=20.91, temperature=17.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:23:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:24:01.764 [DEBUG] [Thread-188279] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:24:01.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:24:01.848 [DEBUG] [Thread-188282] [transport.py] [_log()] starting thread (client mode): 0xd0712bf0
2025-11-24T10:24:01.848 [DEBUG] [Thread-188282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:24:01.863 [DEBUG] [Thread-188282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:24:01.863 [INFO] [Thread-188282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] client lang: <none>
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] server lang: <none>
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] kex follows: False
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] Compression: none
2025-11-24T10:24:01.871 [DEBUG] [Thread-188282] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:24:01.926 [DEBUG] [Thread-188282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:24:01.927 [DEBUG] [Thread-188282] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:24:01.927 [DEBUG] [Thread-188282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:24:01.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:24:01.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:24:01.983 [DEBUG] [Thread-188282] [transport.py] [_log()] userauth is OK
2025-11-24T10:24:01.984 [DEBUG] [Thread-188282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:24:01.984 [DEBUG] [Thread-188282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:24:01.984 [DEBUG] [Thread-188282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:24:01.984 [DEBUG] [Thread-188282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:24:02.009 [INFO] [Thread-188282] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:24:02.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:24:02.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:24:02.923 [DEBUG] [Thread-188282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:24:02.923 [DEBUG] [Thread-188282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:24:02.971 [DEBUG] [Thread-188282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:24:02.971 [DEBUG] [Thread-188282] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:24:02.979 [DEBUG] [Thread-188282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:24:02.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:24:02.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')
2025-11-24T10:24:02.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:24:03.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:24:03.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:24:03.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:24:03.011 [DEBUG] [Thread-188282] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:24:11.100 [DEBUG] [Thread-188284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:24:26.143 [DEBUG] [Thread-188285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:24:30.627 [DEBUG] [Thread-188286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:24:33.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:24:33.033 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:24:33.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-11-24T10:24:33.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 24, 2), 18.36, 28.47, 0.0, 22.8, 17.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:24:33.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:24:02
2025-11-24T10:24:33.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:24:34.144 [DEBUG] [Thread-188287] [transport.py] [_log()] starting thread (client mode): 0xd3150730
2025-11-24T10:24:34.144 [DEBUG] [Thread-188287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:24:34.167 [DEBUG] [Thread-188287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:24:34.167 [INFO] [Thread-188287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] client lang: <none>
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] server lang: <none>
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] kex follows: False
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] Compression: none
2025-11-24T10:24:34.170 [DEBUG] [Thread-188287] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:24:34.186 [DEBUG] [Thread-188287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:24:34.186 [DEBUG] [Thread-188287] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:24:34.186 [DEBUG] [Thread-188287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:24:34.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:24:34.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:24:34.187 [DEBUG] [Thread-188287] [transport.py] [_log()] userauth is OK
2025-11-24T10:24:34.187 [DEBUG] [Thread-188287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:24:34.187 [DEBUG] [Thread-188287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:24:34.187 [DEBUG] [Thread-188287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:24:34.187 [DEBUG] [Thread-188287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:24:34.198 [INFO] [Thread-188287] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:24:34.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:24:34.824 [DEBUG] [Thread-188287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:24:34.824 [DEBUG] [Thread-188287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:24:34.824 [DEBUG] [Thread-188287] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:24:34.865 [DEBUG] [Thread-188287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:24:34.865 [DEBUG] [Thread-188287] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:24:34.868 [DEBUG] [Thread-188287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:24:34.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:24:34.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:24:34.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:24:34.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:24:34.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:24:34.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:24:34.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:24:34.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:24:34.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:24:34.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.349702 -999.00  +16.80  33.26     35   +1.30 1 1 2 1 1   888    0 18.09 91.37 ----- 33.3 33.3 172.2 40.1 23.8 -26.9 22.7 -24.6 21.9 -24.6 22.8 -25.0
2025-11-24T10:24:34.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:24:34.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:24:34.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.349702
2025-11-24T10:24:34.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:24:34.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:24:34.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:24:34.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:24:34.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:24:34.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:24:02', tmtdew=18.36, humidity=28.47, cloud=0.0, wind=22.8, temperature=17.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:23:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:24:34.884 [DEBUG] [Thread-188287] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:24:34.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:24:34.971 [DEBUG] [Thread-188290] [transport.py] [_log()] starting thread (client mode): 0xd31b2da0
2025-11-24T10:24:34.971 [DEBUG] [Thread-188290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:24:34.986 [DEBUG] [Thread-188290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:24:34.986 [INFO] [Thread-188290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:24:34.993 [DEBUG] [Thread-188290] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:24:34.993 [DEBUG] [Thread-188290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:24:34.993 [DEBUG] [Thread-188290] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] client lang: <none>
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] server lang: <none>
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] kex follows: False
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] Compression: none
2025-11-24T10:24:34.994 [DEBUG] [Thread-188290] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:24:35.054 [DEBUG] [Thread-188290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:24:35.055 [DEBUG] [Thread-188290] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:24:35.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:24:35.055 [DEBUG] [Thread-188290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:24:35.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:24:35.112 [DEBUG] [Thread-188290] [transport.py] [_log()] userauth is OK
2025-11-24T10:24:35.112 [DEBUG] [Thread-188290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:24:35.112 [DEBUG] [Thread-188290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:24:35.112 [DEBUG] [Thread-188290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:24:35.112 [DEBUG] [Thread-188290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:24:35.129 [INFO] [Thread-188290] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:24:35.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:24:35.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:24:36.049 [DEBUG] [Thread-188290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:24:36.049 [DEBUG] [Thread-188290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:24:36.097 [DEBUG] [Thread-188290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:24:36.097 [DEBUG] [Thread-188290] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:24:36.105 [DEBUG] [Thread-188290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:24:36.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:24:36.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-11-24T10:24:36.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-11-24T10:24:36.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:24:36.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:24:36.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:24:36.137 [DEBUG] [Thread-188290] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:24:41.185 [DEBUG] [Thread-188292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:24:56.227 [DEBUG] [Thread-188293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:25:06.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:25:06.149 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:25:06.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-11-24T10:25:06.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 24, 34), 18.34, 28.67, 0.0, 19.41, 17.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:25:06.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:24:34
2025-11-24T10:25:07.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:25:07.238 [DEBUG] [Thread-188294] [transport.py] [_log()] starting thread (client mode): 0xd3151000
2025-11-24T10:25:07.238 [DEBUG] [Thread-188294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:25:07.257 [DEBUG] [Thread-188294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:25:07.257 [INFO] [Thread-188294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] client lang: <none>
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] server lang: <none>
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] kex follows: False
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] Compression: none
2025-11-24T10:25:07.261 [DEBUG] [Thread-188294] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:25:07.277 [DEBUG] [Thread-188294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:25:07.278 [DEBUG] [Thread-188294] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:25:07.278 [DEBUG] [Thread-188294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:25:07.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:25:07.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:25:07.279 [DEBUG] [Thread-188294] [transport.py] [_log()] userauth is OK
2025-11-24T10:25:07.279 [DEBUG] [Thread-188294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:25:07.279 [DEBUG] [Thread-188294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:25:07.279 [DEBUG] [Thread-188294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:25:07.279 [DEBUG] [Thread-188294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:25:07.296 [INFO] [Thread-188294] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:25:07.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:25:08.076 [DEBUG] [Thread-188294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:25:08.076 [DEBUG] [Thread-188294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:25:08.076 [DEBUG] [Thread-188294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:25:08.117 [DEBUG] [Thread-188294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:25:08.117 [DEBUG] [Thread-188294] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:25:08.119 [DEBUG] [Thread-188294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:25:08.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:25:08.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:25:08.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:25:08.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:25:08.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:25:08.162 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:25:08.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:25:08.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.350397 -999.00  +16.80  19.33     35   +1.50 1 1 1 1 1   888    0 17.50 67.50 ----- 19.3 19.3 166.2 19.8 23.8 -26.2 22.5 -26.1 22.0 -24.0 22.9 -24.5
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.350397
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:25:08.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:24:34', tmtdew=18.34, humidity=28.67, cloud=0.0, wind=19.41, temperature=17.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:24:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:25:08.164 [DEBUG] [Thread-188294] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:25:08.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:25:08.249 [DEBUG] [Thread-188297] [transport.py] [_log()] starting thread (client mode): 0xd3153370
2025-11-24T10:25:08.249 [DEBUG] [Thread-188297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:25:08.264 [DEBUG] [Thread-188297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:25:08.264 [INFO] [Thread-188297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] client lang: <none>
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] server lang: <none>
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] kex follows: False
2025-11-24T10:25:08.271 [DEBUG] [Thread-188297] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:25:08.272 [DEBUG] [Thread-188297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:25:08.272 [DEBUG] [Thread-188297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:25:08.272 [DEBUG] [Thread-188297] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:25:08.272 [DEBUG] [Thread-188297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:25:08.272 [DEBUG] [Thread-188297] [transport.py] [_log()] Compression: none
2025-11-24T10:25:08.272 [DEBUG] [Thread-188297] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:25:08.326 [DEBUG] [Thread-188297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:25:08.326 [DEBUG] [Thread-188297] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:25:08.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:25:08.326 [DEBUG] [Thread-188297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:25:08.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:25:08.387 [DEBUG] [Thread-188297] [transport.py] [_log()] userauth is OK
2025-11-24T10:25:08.387 [DEBUG] [Thread-188297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:25:08.387 [DEBUG] [Thread-188297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:25:08.387 [DEBUG] [Thread-188297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:25:08.387 [DEBUG] [Thread-188297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:25:08.401 [INFO] [Thread-188297] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:25:08.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:25:08.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:25:09.265 [DEBUG] [Thread-188297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:25:09.265 [DEBUG] [Thread-188297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:25:09.314 [DEBUG] [Thread-188297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:25:09.314 [DEBUG] [Thread-188297] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:25:09.323 [DEBUG] [Thread-188297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:25:09.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:25:09.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-11-24T10:25:09.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-11-24T10:25:09.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:25:09.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:25:09.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:25:09.357 [DEBUG] [Thread-188297] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:25:11.264 [DEBUG] [Thread-188299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:25:26.311 [DEBUG] [Thread-188300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:25:30.678 [DEBUG] [Thread-188301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:25:39.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:25:39.369 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:25:39.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:25:40.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 25, 6), 18.08, 29.18, 0.0, 22.67, 17.07, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:25:40.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:25:06
2025-11-24T10:25:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:25:40.422 [DEBUG] [Thread-188302] [transport.py] [_log()] starting thread (client mode): 0xd3153d30
2025-11-24T10:25:40.422 [DEBUG] [Thread-188302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:25:40.443 [DEBUG] [Thread-188302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:25:40.443 [INFO] [Thread-188302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:25:40.446 [DEBUG] [Thread-188302] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:25:40.446 [DEBUG] [Thread-188302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:25:40.446 [DEBUG] [Thread-188302] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:25:40.446 [DEBUG] [Thread-188302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] client lang: <none>
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] server lang: <none>
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] kex follows: False
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] Compression: none
2025-11-24T10:25:40.447 [DEBUG] [Thread-188302] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:25:40.463 [DEBUG] [Thread-188302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:25:40.463 [DEBUG] [Thread-188302] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:25:40.463 [DEBUG] [Thread-188302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:25:40.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:25:40.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:25:40.464 [DEBUG] [Thread-188302] [transport.py] [_log()] userauth is OK
2025-11-24T10:25:40.464 [DEBUG] [Thread-188302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:25:40.464 [DEBUG] [Thread-188302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:25:40.464 [DEBUG] [Thread-188302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:25:40.464 [DEBUG] [Thread-188302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:25:40.473 [INFO] [Thread-188302] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:25:40.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:25:41.087 [DEBUG] [Thread-188302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:25:41.087 [DEBUG] [Thread-188302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:25:41.087 [DEBUG] [Thread-188302] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:25:41.128 [DEBUG] [Thread-188302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:25:41.128 [DEBUG] [Thread-188302] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:25:41.131 [DEBUG] [Thread-188302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:25:41.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:25:41.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:25:41.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:25:41.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:25:41.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:25:41.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:25:41.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.350743 -999.00  +17.10  13.73     35   +1.70 1 1 1 1 1   888    0 17.11 58.12 ----- 13.7 13.7 176.5 23.9 24.0 -24.5 22.8 -23.8 22.2 -22.7 22.9 -23.9
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.350743
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:25:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:25:06', tmtdew=18.08, humidity=29.18, cloud=0.0, wind=22.67, temperature=17.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:25:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:25:41.151 [DEBUG] [Thread-188302] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:25:41.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:25:41.237 [DEBUG] [Thread-188305] [transport.py] [_log()] starting thread (client mode): 0xd7bc52a0
2025-11-24T10:25:41.237 [DEBUG] [Thread-188305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:25:41.252 [DEBUG] [Thread-188305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:25:41.252 [INFO] [Thread-188305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] client lang: <none>
2025-11-24T10:25:41.259 [DEBUG] [Thread-188305] [transport.py] [_log()] server lang: <none>
2025-11-24T10:25:41.260 [DEBUG] [Thread-188305] [transport.py] [_log()] kex follows: False
2025-11-24T10:25:41.260 [DEBUG] [Thread-188305] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:25:41.260 [DEBUG] [Thread-188305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:25:41.260 [DEBUG] [Thread-188305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:25:41.260 [DEBUG] [Thread-188305] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:25:41.260 [DEBUG] [Thread-188305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:25:41.260 [DEBUG] [Thread-188305] [transport.py] [_log()] Compression: none
2025-11-24T10:25:41.260 [DEBUG] [Thread-188305] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:25:41.322 [DEBUG] [Thread-188305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:25:41.323 [DEBUG] [Thread-188305] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:25:41.323 [DEBUG] [Thread-188305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:25:41.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:25:41.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:25:41.343 [DEBUG] [Thread-188307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:25:41.379 [DEBUG] [Thread-188305] [transport.py] [_log()] userauth is OK
2025-11-24T10:25:41.379 [DEBUG] [Thread-188305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:25:41.379 [DEBUG] [Thread-188305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:25:41.379 [DEBUG] [Thread-188305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:25:41.379 [DEBUG] [Thread-188305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:25:41.396 [INFO] [Thread-188305] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:25:41.396 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:25:41.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:25:42.234 [DEBUG] [Thread-188305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:25:42.234 [DEBUG] [Thread-188305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:25:42.282 [DEBUG] [Thread-188305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:25:42.282 [DEBUG] [Thread-188305] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:25:42.292 [DEBUG] [Thread-188305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:25:42.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:25:42.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:25:42.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-11-24T10:25:42.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:25:42.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:25:42.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:25:42.331 [DEBUG] [Thread-188305] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:25:56.380 [DEBUG] [Thread-188308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:26:11.411 [DEBUG] [Thread-188309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:26:12.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:26:12.353 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:26:12.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-11-24T10:26:13.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 25, 39), 17.66, 29.95, 0.0, 28.44, 16.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:26:13.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:25:39
2025-11-24T10:26:13.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:26:13.398 [DEBUG] [Thread-188310] [transport.py] [_log()] starting thread (client mode): 0xd31b0c10
2025-11-24T10:26:13.398 [DEBUG] [Thread-188310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:26:13.414 [DEBUG] [Thread-188310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:26:13.414 [INFO] [Thread-188310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:26:13.417 [DEBUG] [Thread-188310] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:26:13.417 [DEBUG] [Thread-188310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:26:13.417 [DEBUG] [Thread-188310] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:26:13.417 [DEBUG] [Thread-188310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:26:13.417 [DEBUG] [Thread-188310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:26:13.417 [DEBUG] [Thread-188310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:26:13.417 [DEBUG] [Thread-188310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:26:13.417 [DEBUG] [Thread-188310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:26:13.417 [DEBUG] [Thread-188310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:26:13.417 [DEBUG] [Thread-188310] [transport.py] [_log()] client lang: <none>
2025-11-24T10:26:13.418 [DEBUG] [Thread-188310] [transport.py] [_log()] server lang: <none>
2025-11-24T10:26:13.418 [DEBUG] [Thread-188310] [transport.py] [_log()] kex follows: False
2025-11-24T10:26:13.418 [DEBUG] [Thread-188310] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:26:13.418 [DEBUG] [Thread-188310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:26:13.418 [DEBUG] [Thread-188310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:26:13.418 [DEBUG] [Thread-188310] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:26:13.418 [DEBUG] [Thread-188310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:26:13.418 [DEBUG] [Thread-188310] [transport.py] [_log()] Compression: none
2025-11-24T10:26:13.418 [DEBUG] [Thread-188310] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:26:13.433 [DEBUG] [Thread-188310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:26:13.434 [DEBUG] [Thread-188310] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:26:13.434 [DEBUG] [Thread-188310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:26:13.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:26:13.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:26:13.435 [DEBUG] [Thread-188310] [transport.py] [_log()] userauth is OK
2025-11-24T10:26:13.435 [DEBUG] [Thread-188310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:26:13.435 [DEBUG] [Thread-188310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:26:13.435 [DEBUG] [Thread-188310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:26:13.435 [DEBUG] [Thread-188310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:26:13.466 [INFO] [Thread-188310] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:26:13.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:26:14.281 [DEBUG] [Thread-188310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:26:14.282 [DEBUG] [Thread-188310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:26:14.282 [DEBUG] [Thread-188310] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:26:14.323 [DEBUG] [Thread-188310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:26:14.323 [DEBUG] [Thread-188310] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:26:14.327 [DEBUG] [Thread-188310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:26:14.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:26:14.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:26:14.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:26:14.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:26:14.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:26:14.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:26:14.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:26:14.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:26:14.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:26:14.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.351091 -999.00  +17.30  25.43     34   +1.60 1 1 1 1 1   888    0 17.09 55.02 ----- 25.4 25.4 168.5 33.1 24.0 -25.9 23.0 -25.1 22.1 -24.5 23.0 -26.8
2025-11-24T10:26:14.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:26:14.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:26:14.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.351091
2025-11-24T10:26:14.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:26:14.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:26:14.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:26:14.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:26:14.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:26:14.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:25:39', tmtdew=17.66, humidity=29.95, cloud=0.0, wind=28.44, temperature=16.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:25:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:26:14.366 [DEBUG] [Thread-188310] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:26:14.445 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:26:14.457 [DEBUG] [Thread-188313] [transport.py] [_log()] starting thread (client mode): 0xd31b3ca0
2025-11-24T10:26:14.457 [DEBUG] [Thread-188313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:26:14.472 [DEBUG] [Thread-188313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:26:14.472 [INFO] [Thread-188313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] client lang: <none>
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] server lang: <none>
2025-11-24T10:26:14.483 [DEBUG] [Thread-188313] [transport.py] [_log()] kex follows: False
2025-11-24T10:26:14.484 [DEBUG] [Thread-188313] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:26:14.484 [DEBUG] [Thread-188313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:26:14.484 [DEBUG] [Thread-188313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:26:14.484 [DEBUG] [Thread-188313] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:26:14.484 [DEBUG] [Thread-188313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:26:14.484 [DEBUG] [Thread-188313] [transport.py] [_log()] Compression: none
2025-11-24T10:26:14.484 [DEBUG] [Thread-188313] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:26:14.540 [DEBUG] [Thread-188313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:26:14.541 [DEBUG] [Thread-188313] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:26:14.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:26:14.542 [DEBUG] [Thread-188313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:26:14.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:26:14.598 [DEBUG] [Thread-188313] [transport.py] [_log()] userauth is OK
2025-11-24T10:26:14.598 [DEBUG] [Thread-188313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:26:14.598 [DEBUG] [Thread-188313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:26:14.599 [DEBUG] [Thread-188313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:26:14.599 [DEBUG] [Thread-188313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:26:14.618 [INFO] [Thread-188313] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:26:14.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:26:14.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:26:15.498 [DEBUG] [Thread-188313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:26:15.498 [DEBUG] [Thread-188313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:26:15.545 [DEBUG] [Thread-188313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:26:15.545 [DEBUG] [Thread-188313] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:26:15.553 [DEBUG] [Thread-188313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:26:15.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:26:15.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-11-24T10:26:15.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-11-24T10:26:15.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:26:15.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:26:15.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:26:15.587 [DEBUG] [Thread-188313] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:26:26.443 [DEBUG] [Thread-188315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:26:30.708 [DEBUG] [Thread-188316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:26:41.487 [DEBUG] [Thread-188317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:26:45.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:26:45.608 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:26:45.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:26:46.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 26, 11), 17.66, 29.91, 0.0, 29.11, 16.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:26:46.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:26:11
2025-11-24T10:26:46.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:26:46.730 [DEBUG] [Thread-188318] [transport.py] [_log()] starting thread (client mode): 0xc9b83490
2025-11-24T10:26:46.731 [DEBUG] [Thread-188318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:26:46.754 [DEBUG] [Thread-188318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:26:46.754 [INFO] [Thread-188318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:26:46.758 [DEBUG] [Thread-188318] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:26:46.758 [DEBUG] [Thread-188318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:26:46.758 [DEBUG] [Thread-188318] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:26:46.758 [DEBUG] [Thread-188318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:26:46.758 [DEBUG] [Thread-188318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:26:46.758 [DEBUG] [Thread-188318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:26:46.758 [DEBUG] [Thread-188318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:26:46.758 [DEBUG] [Thread-188318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:26:46.758 [DEBUG] [Thread-188318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:26:46.759 [DEBUG] [Thread-188318] [transport.py] [_log()] client lang: <none>
2025-11-24T10:26:46.759 [DEBUG] [Thread-188318] [transport.py] [_log()] server lang: <none>
2025-11-24T10:26:46.759 [DEBUG] [Thread-188318] [transport.py] [_log()] kex follows: False
2025-11-24T10:26:46.759 [DEBUG] [Thread-188318] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:26:46.759 [DEBUG] [Thread-188318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:26:46.759 [DEBUG] [Thread-188318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:26:46.759 [DEBUG] [Thread-188318] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:26:46.759 [DEBUG] [Thread-188318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:26:46.759 [DEBUG] [Thread-188318] [transport.py] [_log()] Compression: none
2025-11-24T10:26:46.759 [DEBUG] [Thread-188318] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:26:46.776 [DEBUG] [Thread-188318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:26:46.777 [DEBUG] [Thread-188318] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:26:46.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:26:46.778 [DEBUG] [Thread-188318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:26:46.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:26:46.780 [DEBUG] [Thread-188318] [transport.py] [_log()] userauth is OK
2025-11-24T10:26:46.780 [DEBUG] [Thread-188318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:26:46.780 [DEBUG] [Thread-188318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:26:46.780 [DEBUG] [Thread-188318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:26:46.780 [DEBUG] [Thread-188318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:26:46.804 [INFO] [Thread-188318] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:26:46.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:26:47.473 [DEBUG] [Thread-188318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:26:47.473 [DEBUG] [Thread-188318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:26:47.474 [DEBUG] [Thread-188318] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:26:47.515 [DEBUG] [Thread-188318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:26:47.515 [DEBUG] [Thread-188318] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:26:47.518 [DEBUG] [Thread-188318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:26:47.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:26:47.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:26:47.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:26:47.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:26:47.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:26:47.548 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:26:47.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:26:47.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:26:47.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:26:47.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.351438 -999.00  +17.20  19.27     34   +1.50 1 1 1 1 1   888    0 17.08 52.95 ----- 19.3 19.3 139.4 26.5 23.9 -26.8 22.9 -25.4 22.1 -24.1 23.0 -26.9
2025-11-24T10:26:47.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:26:47.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:26:47.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.351438
2025-11-24T10:26:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:26:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:26:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:26:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:26:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:26:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:26:11', tmtdew=17.66, humidity=29.91, cloud=0.0, wind=29.11, temperature=16.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:26:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:26:47.549 [DEBUG] [Thread-188318] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:26:47.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:26:47.634 [DEBUG] [Thread-188321] [transport.py] [_log()] starting thread (client mode): 0xc9b815a0
2025-11-24T10:26:47.634 [DEBUG] [Thread-188321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:26:47.649 [DEBUG] [Thread-188321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:26:47.650 [INFO] [Thread-188321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:26:47.657 [DEBUG] [Thread-188321] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] client lang: <none>
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] server lang: <none>
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] kex follows: False
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] Compression: none
2025-11-24T10:26:47.658 [DEBUG] [Thread-188321] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:26:47.716 [DEBUG] [Thread-188321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:26:47.716 [DEBUG] [Thread-188321] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:26:47.716 [DEBUG] [Thread-188321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:26:47.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:26:47.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:26:47.772 [DEBUG] [Thread-188321] [transport.py] [_log()] userauth is OK
2025-11-24T10:26:47.772 [DEBUG] [Thread-188321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:26:47.772 [DEBUG] [Thread-188321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:26:47.772 [DEBUG] [Thread-188321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:26:47.772 [DEBUG] [Thread-188321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:26:47.786 [INFO] [Thread-188321] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:26:47.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:26:47.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:26:48.653 [DEBUG] [Thread-188321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:26:48.653 [DEBUG] [Thread-188321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:26:48.700 [DEBUG] [Thread-188321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:26:48.701 [DEBUG] [Thread-188321] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:26:48.711 [DEBUG] [Thread-188321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:26:48.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:26:48.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-11-24T10:26: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-11-24T10:26:48.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:26:48.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:26:48.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:26:48.753 [DEBUG] [Thread-188321] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:26:56.532 [DEBUG] [Thread-188323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:27:11.579 [DEBUG] [Thread-188324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:27:18.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:27:18.774 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:27:18.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-11-24T10:27:19.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 26, 43), 17.94, 29.53, 0.0, 27.65, 17.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:27:19.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:26:43
2025-11-24T10:27:19.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:27:19.846 [DEBUG] [Thread-188325] [transport.py] [_log()] starting thread (client mode): 0xc9b81000
2025-11-24T10:27:19.846 [DEBUG] [Thread-188325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:27:19.866 [DEBUG] [Thread-188325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:27:19.867 [INFO] [Thread-188325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:27:19.870 [DEBUG] [Thread-188325] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:27:19.870 [DEBUG] [Thread-188325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:27:19.870 [DEBUG] [Thread-188325] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:27:19.870 [DEBUG] [Thread-188325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:27:19.870 [DEBUG] [Thread-188325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:27:19.870 [DEBUG] [Thread-188325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:27:19.870 [DEBUG] [Thread-188325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:27:19.870 [DEBUG] [Thread-188325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] client lang: <none>
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] server lang: <none>
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] kex follows: False
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] Compression: none
2025-11-24T10:27:19.871 [DEBUG] [Thread-188325] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:27:19.890 [DEBUG] [Thread-188325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:27:19.891 [DEBUG] [Thread-188325] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:27:19.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:27:19.893 [DEBUG] [Thread-188325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:27:19.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:27:19.894 [DEBUG] [Thread-188325] [transport.py] [_log()] userauth is OK
2025-11-24T10:27:19.894 [DEBUG] [Thread-188325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:27:19.894 [DEBUG] [Thread-188325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:27:19.895 [DEBUG] [Thread-188325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:27:19.895 [DEBUG] [Thread-188325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:27:19.908 [INFO] [Thread-188325] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:27:19.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:27:20.641 [DEBUG] [Thread-188325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:27:20.641 [DEBUG] [Thread-188325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:27:20.641 [DEBUG] [Thread-188325] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:27:20.682 [DEBUG] [Thread-188325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:27:20.682 [DEBUG] [Thread-188325] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:27:20.684 [DEBUG] [Thread-188325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:27:20.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:27:20.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:27:20.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:27:20.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:27:20.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:27:20.702 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:27:20.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:27:20.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:27:20.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:27:20.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.351785 -999.00  +17.10  23.27     34   +1.30 1 1 1 1 1   888    0 17.07 50.93 ----- 23.3 23.3 157.4 30.0 23.9 -26.9 22.9 -25.7 22.1 -25.4 23.0 -25.1
2025-11-24T10:27:20.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:27:20.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:27:20.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.351785
2025-11-24T10:27:20.711 [DEBUG] [Thread-188325] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:27:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:27:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:27:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:27:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:27:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:27:20.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:26:43', tmtdew=17.94, humidity=29.53, cloud=0.0, wind=27.65, temperature=17.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:26:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:27:20.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:27:20.795 [DEBUG] [Thread-188328] [transport.py] [_log()] starting thread (client mode): 0xd31b07c0
2025-11-24T10:27:20.795 [DEBUG] [Thread-188328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:27:20.810 [DEBUG] [Thread-188328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:27:20.810 [INFO] [Thread-188328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] client lang: <none>
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] server lang: <none>
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] kex follows: False
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:27:20.817 [DEBUG] [Thread-188328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:27:20.818 [DEBUG] [Thread-188328] [transport.py] [_log()] Compression: none
2025-11-24T10:27:20.818 [DEBUG] [Thread-188328] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:27:20.878 [DEBUG] [Thread-188328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:27:20.878 [DEBUG] [Thread-188328] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:27:20.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:27:20.878 [DEBUG] [Thread-188328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:27:20.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:27:20.935 [DEBUG] [Thread-188328] [transport.py] [_log()] userauth is OK
2025-11-24T10:27:20.935 [DEBUG] [Thread-188328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:27:20.935 [DEBUG] [Thread-188328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:27:20.935 [DEBUG] [Thread-188328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:27:20.935 [DEBUG] [Thread-188328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:27:20.953 [INFO] [Thread-188328] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:27:20.954 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:27:20.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:27:21.769 [DEBUG] [Thread-188328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:27:21.769 [DEBUG] [Thread-188328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:27:21.817 [DEBUG] [Thread-188328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:27:21.817 [DEBUG] [Thread-188328] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:27:21.825 [DEBUG] [Thread-188328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:27:21.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:27:21.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-11-24T10:27:21.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-11-24T10:27:21.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:27:21.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:27:21.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:27:21.857 [DEBUG] [Thread-188328] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:27:26.619 [DEBUG] [Thread-188330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:27:30.775 [DEBUG] [Thread-188331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:27:41.666 [DEBUG] [Thread-188332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:27:51.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:27:51.879 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:27:51.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:27:52.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 27, 48), 17.91, 29.28, 0.0, 22.21, 16.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:27:52.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:27:48
2025-11-24T10:27:52.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:27:52.932 [DEBUG] [Thread-188333] [transport.py] [_log()] starting thread (client mode): 0xd7bc5540
2025-11-24T10:27:52.932 [DEBUG] [Thread-188333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:27:52.952 [DEBUG] [Thread-188333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:27:52.952 [INFO] [Thread-188333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] client lang: <none>
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] server lang: <none>
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] kex follows: False
2025-11-24T10:27:52.955 [DEBUG] [Thread-188333] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:27:52.956 [DEBUG] [Thread-188333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:27:52.956 [DEBUG] [Thread-188333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:27:52.956 [DEBUG] [Thread-188333] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:27:52.956 [DEBUG] [Thread-188333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:27:52.956 [DEBUG] [Thread-188333] [transport.py] [_log()] Compression: none
2025-11-24T10:27:52.956 [DEBUG] [Thread-188333] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:27:52.975 [DEBUG] [Thread-188333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:27:52.975 [DEBUG] [Thread-188333] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:27:52.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:27:52.976 [DEBUG] [Thread-188333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:27:52.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:27:52.978 [DEBUG] [Thread-188333] [transport.py] [_log()] userauth is OK
2025-11-24T10:27:52.978 [DEBUG] [Thread-188333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:27:52.978 [DEBUG] [Thread-188333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:27:52.978 [DEBUG] [Thread-188333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:27:52.978 [DEBUG] [Thread-188333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:27:53.013 [INFO] [Thread-188333] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:27:53.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:27:53.636 [DEBUG] [Thread-188333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:27:53.636 [DEBUG] [Thread-188333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:27:53.636 [DEBUG] [Thread-188333] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:27:53.677 [DEBUG] [Thread-188333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:27:53.677 [DEBUG] [Thread-188333] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:27:53.680 [DEBUG] [Thread-188333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:27:53.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:27:53.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:27:53.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:27:53.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:27:53.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:27:53.697 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:27:53.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:27:53.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:27:53.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:27:53.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.352133 -999.00  +17.00  18.12     35   +1.50 1 1 1 1 1   888    0 17.00 48.57 ----- 18.1 18.1 164.5 24.2 23.9 -26.2 22.9 -24.2 22.1 -23.5 22.9 -26.0
2025-11-24T10:27:53.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:27:53.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:27:53.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.352133
2025-11-24T10:27:53.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:27:53.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:27:53.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:27:53.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:27:53.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:27:53.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:27:48', tmtdew=17.91, humidity=29.28, cloud=0.0, wind=22.21, temperature=16.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:27:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:27:53.698 [DEBUG] [Thread-188333] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:27:53.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:27:53.782 [DEBUG] [Thread-188336] [transport.py] [_log()] starting thread (client mode): 0xd31b28c0
2025-11-24T10:27:53.782 [DEBUG] [Thread-188336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:27:53.797 [DEBUG] [Thread-188336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:27:53.797 [INFO] [Thread-188336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] client lang: <none>
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] server lang: <none>
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] kex follows: False
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:27:53.805 [DEBUG] [Thread-188336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:27:53.806 [DEBUG] [Thread-188336] [transport.py] [_log()] Compression: none
2025-11-24T10:27:53.806 [DEBUG] [Thread-188336] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:27:53.866 [DEBUG] [Thread-188336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:27:53.866 [DEBUG] [Thread-188336] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:27:53.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:27:53.866 [DEBUG] [Thread-188336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:27:53.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:27:53.923 [DEBUG] [Thread-188336] [transport.py] [_log()] userauth is OK
2025-11-24T10:27:53.923 [DEBUG] [Thread-188336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:27:53.923 [DEBUG] [Thread-188336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:27:53.923 [DEBUG] [Thread-188336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:27:53.923 [DEBUG] [Thread-188336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:27:53.937 [INFO] [Thread-188336] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:27:53.938 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:27:53.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:27:54.820 [DEBUG] [Thread-188336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:27:54.821 [DEBUG] [Thread-188336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:27:54.869 [DEBUG] [Thread-188336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:27:54.869 [DEBUG] [Thread-188336] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:27:54.878 [DEBUG] [Thread-188336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:27:54.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:27:54.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:27:54.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-11-24T10:27:54.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:27:54.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:27:54.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:27:54.914 [DEBUG] [Thread-188336] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:27:56.697 [DEBUG] [Thread-188338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:28:11.749 [DEBUG] [Thread-188339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:28:24.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:28:24.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:28:24.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-11-24T10:28:25.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 28, 21), 17.74, 29.68, 0.0, 21.81, 16.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:28:25.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:28:21
2025-11-24T10:28:25.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:28:26.073 [DEBUG] [Thread-188340] [transport.py] [_log()] starting thread (client mode): 0xd31b0d00
2025-11-24T10:28:26.073 [DEBUG] [Thread-188340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:28:26.085 [DEBUG] [Thread-188340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:28:26.085 [INFO] [Thread-188340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:28:26.087 [DEBUG] [Thread-188340] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:28:26.087 [DEBUG] [Thread-188340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:28:26.087 [DEBUG] [Thread-188340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:28:26.087 [DEBUG] [Thread-188340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:28:26.087 [DEBUG] [Thread-188340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:28:26.087 [DEBUG] [Thread-188340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:28:26.087 [DEBUG] [Thread-188340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:28:26.087 [DEBUG] [Thread-188340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:28:26.087 [DEBUG] [Thread-188340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:28:26.088 [DEBUG] [Thread-188340] [transport.py] [_log()] client lang: <none>
2025-11-24T10:28:26.088 [DEBUG] [Thread-188340] [transport.py] [_log()] server lang: <none>
2025-11-24T10:28:26.088 [DEBUG] [Thread-188340] [transport.py] [_log()] kex follows: False
2025-11-24T10:28:26.088 [DEBUG] [Thread-188340] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:28:26.088 [DEBUG] [Thread-188340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:28:26.088 [DEBUG] [Thread-188340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:28:26.088 [DEBUG] [Thread-188340] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:28:26.088 [DEBUG] [Thread-188340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:28:26.088 [DEBUG] [Thread-188340] [transport.py] [_log()] Compression: none
2025-11-24T10:28:26.088 [DEBUG] [Thread-188340] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:28:26.098 [DEBUG] [Thread-188340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:28:26.098 [DEBUG] [Thread-188340] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:28:26.099 [DEBUG] [Thread-188340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:28:26.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:28:26.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:28:26.100 [DEBUG] [Thread-188340] [transport.py] [_log()] userauth is OK
2025-11-24T10:28:26.100 [DEBUG] [Thread-188340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:28:26.100 [DEBUG] [Thread-188340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:28:26.100 [DEBUG] [Thread-188340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:28:26.100 [DEBUG] [Thread-188340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:28:26.109 [INFO] [Thread-188340] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:28:26.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:28:26.740 [DEBUG] [Thread-188340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:28:26.740 [DEBUG] [Thread-188340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:28:26.740 [DEBUG] [Thread-188340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:28:26.778 [DEBUG] [Thread-188342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:28:26.781 [DEBUG] [Thread-188340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:28:26.781 [DEBUG] [Thread-188340] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:28:26.784 [DEBUG] [Thread-188340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:28:26.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:28:26.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:28:26.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:28:26.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:28:26.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:28:26.803 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:28:26.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.352480 -999.00  +16.90  13.08     35   +1.50 1 1 1 1 1   888    0 16.90 44.92 ----- 13.1 13.1 170.2 27.6 23.9 -26.3 22.8 -25.4 22.2 -23.6 23.0 -25.9
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.352480
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:28:21', tmtdew=17.74, humidity=29.68, cloud=0.0, wind=21.81, temperature=16.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:27:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:28:26.804 [DEBUG] [Thread-188340] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:28:26.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:28:26.891 [DEBUG] [Thread-188344] [transport.py] [_log()] starting thread (client mode): 0xd07393f0
2025-11-24T10:28:26.892 [DEBUG] [Thread-188344] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:28:26.906 [DEBUG] [Thread-188344] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:28:26.906 [INFO] [Thread-188344] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] client lang: <none>
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] server lang: <none>
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] kex follows: False
2025-11-24T10:28:26.914 [DEBUG] [Thread-188344] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:28:26.915 [DEBUG] [Thread-188344] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:28:26.915 [DEBUG] [Thread-188344] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:28:26.915 [DEBUG] [Thread-188344] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:28:26.915 [DEBUG] [Thread-188344] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:28:26.915 [DEBUG] [Thread-188344] [transport.py] [_log()] Compression: none
2025-11-24T10:28:26.915 [DEBUG] [Thread-188344] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:28:26.972 [DEBUG] [Thread-188344] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:28:26.972 [DEBUG] [Thread-188344] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:28:26.973 [DEBUG] [Thread-188344] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:28:26.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:28:26.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:28:27.032 [DEBUG] [Thread-188344] [transport.py] [_log()] userauth is OK
2025-11-24T10:28:27.032 [DEBUG] [Thread-188344] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:28:27.032 [DEBUG] [Thread-188344] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:28:27.032 [DEBUG] [Thread-188344] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:28:27.032 [DEBUG] [Thread-188344] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:28:27.050 [INFO] [Thread-188344] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:28:27.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:28:27.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:28:27.957 [DEBUG] [Thread-188344] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:28:27.958 [DEBUG] [Thread-188344] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:28:28.005 [DEBUG] [Thread-188344] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:28:28.005 [DEBUG] [Thread-188344] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:28:28.013 [DEBUG] [Thread-188344] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:28:28.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:28:28.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-11-24T10:28:28.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:28:28.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:28:28.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:28:28.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:28:28.045 [DEBUG] [Thread-188344] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:28:31.094 [DEBUG] [Thread-188346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:28:41.811 [DEBUG] [Thread-188347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:28:56.875 [DEBUG] [Thread-188348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:28:58.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:28:58.042 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:28: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-11-24T10:28:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 28, 53), 17.74, 30.08, 0.0, 19.3, 17.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:28:58.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:28:53
2025-11-24T10:28:58.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:28:59.131 [DEBUG] [Thread-188349] [transport.py] [_log()] starting thread (client mode): 0xd0703130
2025-11-24T10:28:59.131 [DEBUG] [Thread-188349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:28:59.151 [DEBUG] [Thread-188349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:28:59.152 [INFO] [Thread-188349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] client lang: <none>
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] server lang: <none>
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] kex follows: False
2025-11-24T10:28:59.153 [DEBUG] [Thread-188349] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:28:59.154 [DEBUG] [Thread-188349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:28:59.154 [DEBUG] [Thread-188349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:28:59.154 [DEBUG] [Thread-188349] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:28:59.154 [DEBUG] [Thread-188349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:28:59.154 [DEBUG] [Thread-188349] [transport.py] [_log()] Compression: none
2025-11-24T10:28:59.154 [DEBUG] [Thread-188349] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:28:59.163 [DEBUG] [Thread-188349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:28:59.164 [DEBUG] [Thread-188349] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:28:59.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:28:59.166 [DEBUG] [Thread-188349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:28:59.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:28:59.167 [DEBUG] [Thread-188349] [transport.py] [_log()] userauth is OK
2025-11-24T10:28:59.167 [DEBUG] [Thread-188349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:28:59.167 [DEBUG] [Thread-188349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:28:59.167 [DEBUG] [Thread-188349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:28:59.167 [DEBUG] [Thread-188349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:28:59.187 [INFO] [Thread-188349] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:28:59.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:28:59.759 [DEBUG] [Thread-188349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:28:59.759 [DEBUG] [Thread-188349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:28:59.759 [DEBUG] [Thread-188349] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:28:59.800 [DEBUG] [Thread-188349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:28:59.800 [DEBUG] [Thread-188349] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:28:59.802 [DEBUG] [Thread-188349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:28:59.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:28:59.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:28:59.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:28:59.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:28:59.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:28:59.823 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:28:59.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:28:59.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:28:59.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:28:59.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.353174 -999.00  +17.10  18.14     35   +1.60 1 1 1 1 1   888    0 16.53 41.86 ----- 18.1 18.1 148.4 25.2 23.9 -25.8 22.9 -24.8 22.3 -23.6 23.1 -25.5
2025-11-24T10:28:59.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:28:59.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:28:59.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.353174
2025-11-24T10:28:59.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:28:59.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:28:59.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:28:59.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:28:59.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:28:59.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:28:53', tmtdew=17.74, humidity=30.08, cloud=0.0, wind=19.3, temperature=17.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:28:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:28:59.825 [DEBUG] [Thread-188349] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:28:59.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:28:59.909 [DEBUG] [Thread-188352] [transport.py] [_log()] starting thread (client mode): 0xd0701060
2025-11-24T10:28:59.909 [DEBUG] [Thread-188352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:28:59.924 [DEBUG] [Thread-188352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:28:59.924 [INFO] [Thread-188352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] client lang: <none>
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] server lang: <none>
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] kex follows: False
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] Compression: none
2025-11-24T10:28:59.932 [DEBUG] [Thread-188352] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:28:59.990 [DEBUG] [Thread-188352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:28:59.990 [DEBUG] [Thread-188352] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:28:59.991 [DEBUG] [Thread-188352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:28:59.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:28:59.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:29:00.047 [DEBUG] [Thread-188352] [transport.py] [_log()] userauth is OK
2025-11-24T10:29:00.047 [DEBUG] [Thread-188352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:29:00.047 [DEBUG] [Thread-188352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:29:00.047 [DEBUG] [Thread-188352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:29:00.047 [DEBUG] [Thread-188352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:29:00.063 [INFO] [Thread-188352] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:29:00.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:29:00.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:29:00.903 [DEBUG] [Thread-188352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:29:00.903 [DEBUG] [Thread-188352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:29:00.951 [DEBUG] [Thread-188352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:29:00.951 [DEBUG] [Thread-188352] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:29:00.959 [DEBUG] [Thread-188352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:29:00.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:29:00.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:29:00.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-11-24T10:29:00.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:29:00.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:29:00.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:29:00.990 [DEBUG] [Thread-188352] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:29:11.903 [DEBUG] [Thread-188354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:29:26.944 [DEBUG] [Thread-188355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:29:30.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:29:30.985 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:29:30.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:29:31.126 [DEBUG] [Thread-188356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:29:31.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 29, 25), 17.8, 29.98, 0.0, 21.4, 17.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:29:31.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:29:25
2025-11-24T10:29:31.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:29:32.077 [DEBUG] [Thread-188357] [transport.py] [_log()] starting thread (client mode): 0xd0702ad0
2025-11-24T10:29:32.078 [DEBUG] [Thread-188357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:29:32.103 [DEBUG] [Thread-188357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:29:32.103 [INFO] [Thread-188357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:29:32.105 [DEBUG] [Thread-188357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] client lang: <none>
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] server lang: <none>
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] kex follows: False
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] Compression: none
2025-11-24T10:29:32.106 [DEBUG] [Thread-188357] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:29:32.116 [DEBUG] [Thread-188357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:29:32.117 [DEBUG] [Thread-188357] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:29:32.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:29:32.118 [DEBUG] [Thread-188357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:29:32.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:29:32.119 [DEBUG] [Thread-188357] [transport.py] [_log()] userauth is OK
2025-11-24T10:29:32.120 [DEBUG] [Thread-188357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:29:32.120 [DEBUG] [Thread-188357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:29:32.120 [DEBUG] [Thread-188357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:29:32.120 [DEBUG] [Thread-188357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:29:32.139 [INFO] [Thread-188357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:29:32.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:29:32.709 [DEBUG] [Thread-188357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:29:32.709 [DEBUG] [Thread-188357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:29:32.709 [DEBUG] [Thread-188357] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:29:32.750 [DEBUG] [Thread-188357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:29:32.750 [DEBUG] [Thread-188357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:29:32.753 [DEBUG] [Thread-188357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:29:32.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:29:32.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:29:32.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:29:32.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:29:32.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:29:32.770 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:29:32.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:29:32.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:29:32.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:29:32.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.353522 -999.00  +17.40  20.75     35   +1.90 1 1 1 1 1   888    0 16.72 43.09 ----- 20.8 20.8 174.2 28.9 24.1 -25.1 22.9 -26.8 22.2 -23.3 23.2 -25.1
2025-11-24T10:29:32.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:29:32.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:29:32.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.353522
2025-11-24T10:29:32.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:29:32.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:29:32.779 [DEBUG] [Thread-188357] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:29:32.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:29:32.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:29:32.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:29:32.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:29:25', tmtdew=17.8, humidity=29.98, cloud=0.0, wind=21.4, temperature=17.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:29:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:29:32.852 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:29:32.864 [DEBUG] [Thread-188360] [transport.py] [_log()] starting thread (client mode): 0xc9b81d50
2025-11-24T10:29:32.864 [DEBUG] [Thread-188360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:29:32.878 [DEBUG] [Thread-188360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:29:32.879 [INFO] [Thread-188360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] client lang: <none>
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] server lang: <none>
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] kex follows: False
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] Compression: none
2025-11-24T10:29:32.887 [DEBUG] [Thread-188360] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:29:32.942 [DEBUG] [Thread-188360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:29:32.942 [DEBUG] [Thread-188360] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:29:32.942 [DEBUG] [Thread-188360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:29:32.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:29:32.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:29:32.999 [DEBUG] [Thread-188360] [transport.py] [_log()] userauth is OK
2025-11-24T10:29:32.999 [DEBUG] [Thread-188360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:29:33.000 [DEBUG] [Thread-188360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:29:33.000 [DEBUG] [Thread-188360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:29:33.000 [DEBUG] [Thread-188360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:29:33.013 [INFO] [Thread-188360] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:29:33.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:29:33.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:29:33.874 [DEBUG] [Thread-188360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:29:33.875 [DEBUG] [Thread-188360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:29:33.922 [DEBUG] [Thread-188360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:29:33.923 [DEBUG] [Thread-188360] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:29:33.932 [DEBUG] [Thread-188360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:29:33.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:29:33.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-11-24T10:29:33.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-11-24T10:29:33.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:29:33.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:29:33.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:29:33.968 [DEBUG] [Thread-188360] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:29:41.973 [DEBUG] [Thread-188362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:29:57.016 [DEBUG] [Thread-188363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:30:03.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:30:03.991 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:30:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:30:04.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 29, 58), 17.92, 29.75, 0.0, 22.96, 17.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:30:04.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:29:58
2025-11-24T10:30:04.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:30:05.066 [DEBUG] [Thread-188364] [transport.py] [_log()] starting thread (client mode): 0xd0702aa0
2025-11-24T10:30:05.066 [DEBUG] [Thread-188364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:30:05.087 [DEBUG] [Thread-188364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:30:05.087 [INFO] [Thread-188364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:30:05.090 [DEBUG] [Thread-188364] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:30:05.090 [DEBUG] [Thread-188364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] client lang: <none>
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] server lang: <none>
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] kex follows: False
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] Compression: none
2025-11-24T10:30:05.091 [DEBUG] [Thread-188364] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:30:05.112 [DEBUG] [Thread-188364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:30:05.113 [DEBUG] [Thread-188364] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:30:05.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:30:05.114 [DEBUG] [Thread-188364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:30:05.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:30:05.116 [DEBUG] [Thread-188364] [transport.py] [_log()] userauth is OK
2025-11-24T10:30:05.116 [DEBUG] [Thread-188364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:30:05.116 [DEBUG] [Thread-188364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:30:05.116 [DEBUG] [Thread-188364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:30:05.116 [DEBUG] [Thread-188364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:30:05.138 [INFO] [Thread-188364] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:30:05.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:30:08.326 [DEBUG] [Thread-188364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:30:08.327 [DEBUG] [Thread-188364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:30:08.327 [DEBUG] [Thread-188364] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:30:08.367 [DEBUG] [Thread-188364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:30:08.376 [DEBUG] [Thread-188364] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:30:08.379 [DEBUG] [Thread-188364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:30:08.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:30:08.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:30:08.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:30:08.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:30:08.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:30:08.405 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:30:08.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:30:08.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:30:08.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:30:08.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.353869 -999.00  +17.30  18.47     34   +1.60 1 1 1 1 1   888    0 16.87 42.40 ----- 18.5 18.5 179.4 28.5 24.1 -26.2 22.8 -24.1 22.3 -24.2 23.1 -25.5
2025-11-24T10:30:08.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:30:08.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:30:08.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.353869
2025-11-24T10:30:08.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:30:08.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:30:08.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:30:08.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:30:08.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:30:08.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:29:58', tmtdew=17.92, humidity=29.75, cloud=0.0, wind=22.96, temperature=17.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:29:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:30:08.410 [DEBUG] [Thread-188364] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:30:08.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:30:08.514 [DEBUG] [Thread-188367] [transport.py] [_log()] starting thread (client mode): 0xd0700970
2025-11-24T10:30:08.514 [DEBUG] [Thread-188367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:30:08.527 [DEBUG] [Thread-188367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:30:08.527 [INFO] [Thread-188367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:30:08.535 [DEBUG] [Thread-188367] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:30:08.535 [DEBUG] [Thread-188367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:30:08.535 [DEBUG] [Thread-188367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:30:08.535 [DEBUG] [Thread-188367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:30:08.535 [DEBUG] [Thread-188367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:30:08.536 [DEBUG] [Thread-188367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:30:08.536 [DEBUG] [Thread-188367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:30:08.536 [DEBUG] [Thread-188367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:30:08.536 [DEBUG] [Thread-188367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:30:08.536 [DEBUG] [Thread-188367] [transport.py] [_log()] client lang: <none>
2025-11-24T10:30:08.536 [DEBUG] [Thread-188367] [transport.py] [_log()] server lang: <none>
2025-11-24T10:30:08.536 [DEBUG] [Thread-188367] [transport.py] [_log()] kex follows: False
2025-11-24T10:30:08.536 [DEBUG] [Thread-188367] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:30:08.536 [DEBUG] [Thread-188367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:30:08.537 [DEBUG] [Thread-188367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:30:08.537 [DEBUG] [Thread-188367] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:30:08.537 [DEBUG] [Thread-188367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:30:08.537 [DEBUG] [Thread-188367] [transport.py] [_log()] Compression: none
2025-11-24T10:30:08.537 [DEBUG] [Thread-188367] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:30:08.593 [DEBUG] [Thread-188367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:30:08.594 [DEBUG] [Thread-188367] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:30:08.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:30:08.596 [DEBUG] [Thread-188367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:30:08.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:30:08.652 [DEBUG] [Thread-188367] [transport.py] [_log()] userauth is OK
2025-11-24T10:30:08.652 [DEBUG] [Thread-188367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:30:08.652 [DEBUG] [Thread-188367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:30:08.652 [DEBUG] [Thread-188367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:30:08.652 [DEBUG] [Thread-188367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:30:08.672 [INFO] [Thread-188367] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:30:08.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:30:08.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:30:09.564 [DEBUG] [Thread-188367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:30:09.565 [DEBUG] [Thread-188367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:30:09.613 [DEBUG] [Thread-188367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:30:09.613 [DEBUG] [Thread-188367] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:30:09.622 [DEBUG] [Thread-188367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:30:09.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:30:09.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:30:09.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:30:09.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:30:09.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:30:09.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:30:09.658 [DEBUG] [Thread-188367] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:30:12.059 [DEBUG] [Thread-188369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:30:27.108 [DEBUG] [Thread-188370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:30:31.289 [DEBUG] [Thread-188371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:30:39.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:30:39.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:30:39.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-11-24T10:30:40.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 30, 30), 17.82, 29.93, 0.0, 22.09, 17.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:30:40.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:30:30
2025-11-24T10:30:40.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:30:40.674 [DEBUG] [Thread-188372] [transport.py] [_log()] starting thread (client mode): 0xd0739930
2025-11-24T10:30:40.674 [DEBUG] [Thread-188372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:30:40.693 [DEBUG] [Thread-188372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:30:40.694 [INFO] [Thread-188372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:30:40.704 [DEBUG] [Thread-188372] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:30:40.704 [DEBUG] [Thread-188372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:30:40.704 [DEBUG] [Thread-188372] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:30:40.704 [DEBUG] [Thread-188372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:30:40.704 [DEBUG] [Thread-188372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:30:40.704 [DEBUG] [Thread-188372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] client lang: <none>
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] server lang: <none>
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] kex follows: False
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] Compression: none
2025-11-24T10:30:40.705 [DEBUG] [Thread-188372] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:30:40.725 [DEBUG] [Thread-188372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:30:40.726 [DEBUG] [Thread-188372] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:30:40.727 [DEBUG] [Thread-188372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:30:40.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:30:40.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:30:40.729 [DEBUG] [Thread-188372] [transport.py] [_log()] userauth is OK
2025-11-24T10:30:40.729 [DEBUG] [Thread-188372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:30:40.729 [DEBUG] [Thread-188372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:30:40.729 [DEBUG] [Thread-188372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:30:40.729 [DEBUG] [Thread-188372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:30:40.753 [INFO] [Thread-188372] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:30:40.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:30:41.369 [DEBUG] [Thread-188372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:30:41.369 [DEBUG] [Thread-188372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:30:41.370 [DEBUG] [Thread-188372] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:30:41.410 [DEBUG] [Thread-188372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:30:41.410 [DEBUG] [Thread-188372] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:30:41.412 [DEBUG] [Thread-188372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:30:41.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:30:41.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:30:41.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:30:41.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:30:41.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:30:41.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:30:41.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.354216 -999.00  +17.20  14.94     35   +1.80 1 1 1 1 1   888    0 16.45 34.23 ----- 14.9 14.9 173.4 25.3 24.1 -24.8 22.9 -25.1 22.3 -22.7 23.1 -25.0
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.354216
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:30:41.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:30:30', tmtdew=17.82, humidity=29.93, cloud=0.0, wind=22.09, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:30:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:30:41.434 [DEBUG] [Thread-188372] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:30:41.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:30:41.517 [DEBUG] [Thread-188375] [transport.py] [_log()] starting thread (client mode): 0xd07039a0
2025-11-24T10:30:41.517 [DEBUG] [Thread-188375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:30:41.532 [DEBUG] [Thread-188375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:30:41.532 [INFO] [Thread-188375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] client lang: <none>
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] server lang: <none>
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] kex follows: False
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] Compression: none
2025-11-24T10:30:41.540 [DEBUG] [Thread-188375] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:30:41.602 [DEBUG] [Thread-188375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:30:41.602 [DEBUG] [Thread-188375] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:30:41.602 [DEBUG] [Thread-188375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:30:41.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:30:41.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:30:41.659 [DEBUG] [Thread-188375] [transport.py] [_log()] userauth is OK
2025-11-24T10:30:41.659 [DEBUG] [Thread-188375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:30:41.659 [DEBUG] [Thread-188375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:30:41.659 [DEBUG] [Thread-188375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:30:41.659 [DEBUG] [Thread-188375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:30:41.674 [INFO] [Thread-188375] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:30:41.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:30:41.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:30:42.154 [DEBUG] [Thread-188377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:30:42.554 [DEBUG] [Thread-188375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:30:42.554 [DEBUG] [Thread-188375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:30:42.602 [DEBUG] [Thread-188375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:30:42.602 [DEBUG] [Thread-188375] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:30:42.611 [DEBUG] [Thread-188375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:30:42.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:30:42.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-11-24T10:30:42.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:30:42.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:30:42.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:30:42.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:30:42.645 [DEBUG] [Thread-188375] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:30:57.203 [DEBUG] [Thread-188378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:31:12.232 [DEBUG] [Thread-188379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:31:12.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:31:12.640 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:31:12.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-11-24T10:31:13.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 31, 3), 17.43, 30.71, 0.0, 27.68, 17.0, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:31:13.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:31:03
2025-11-24T10:31:13.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:31:13.699 [DEBUG] [Thread-188380] [transport.py] [_log()] starting thread (client mode): 0xd0701780
2025-11-24T10:31:13.699 [DEBUG] [Thread-188380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:31:13.720 [DEBUG] [Thread-188380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:31:13.720 [INFO] [Thread-188380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] client lang: <none>
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] server lang: <none>
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] kex follows: False
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] Compression: none
2025-11-24T10:31:13.723 [DEBUG] [Thread-188380] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:31:13.741 [DEBUG] [Thread-188380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:31:13.741 [DEBUG] [Thread-188380] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:31:13.742 [DEBUG] [Thread-188380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:31:13.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:31:13.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:31:13.743 [DEBUG] [Thread-188380] [transport.py] [_log()] userauth is OK
2025-11-24T10:31:13.744 [DEBUG] [Thread-188380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:31:13.744 [DEBUG] [Thread-188380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:31:13.744 [DEBUG] [Thread-188380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:31:13.744 [DEBUG] [Thread-188380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:31:13.764 [INFO] [Thread-188380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:31:13.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:31:14.362 [DEBUG] [Thread-188380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:31:14.362 [DEBUG] [Thread-188380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:31:14.362 [DEBUG] [Thread-188380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:31:14.403 [DEBUG] [Thread-188380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:31:14.403 [DEBUG] [Thread-188380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:31:14.405 [DEBUG] [Thread-188380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:31:14.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:31:14.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:31:14.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:31:14.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:31:14.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:31:14.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:31:14.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.354563 -999.00  +17.50  17.00     35   +2.00 1 1 1 1 1   888    0 16.40 31.83 ----- 17.0 17.0 188.4 24.9 24.1 -25.6 22.7 -27.6 22.3 -24.3 23.1 -25.3
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.354563
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:31:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:31:03', tmtdew=17.43, humidity=30.71, cloud=0.0, wind=27.68, temperature=17.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:30:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:31:14.436 [DEBUG] [Thread-188380] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:31:14.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:31:14.519 [DEBUG] [Thread-188383] [transport.py] [_log()] starting thread (client mode): 0xd31cf5e0
2025-11-24T10:31:14.519 [DEBUG] [Thread-188383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:31:14.534 [DEBUG] [Thread-188383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:31:14.534 [INFO] [Thread-188383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] client lang: <none>
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] server lang: <none>
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] kex follows: False
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:31:14.542 [DEBUG] [Thread-188383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:31:14.543 [DEBUG] [Thread-188383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:31:14.543 [DEBUG] [Thread-188383] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:31:14.543 [DEBUG] [Thread-188383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:31:14.543 [DEBUG] [Thread-188383] [transport.py] [_log()] Compression: none
2025-11-24T10:31:14.543 [DEBUG] [Thread-188383] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:31:14.600 [DEBUG] [Thread-188383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:31:14.600 [DEBUG] [Thread-188383] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:31:14.600 [DEBUG] [Thread-188383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:31:14.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:31:14.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:31:14.656 [DEBUG] [Thread-188383] [transport.py] [_log()] userauth is OK
2025-11-24T10:31:14.656 [DEBUG] [Thread-188383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:31:14.656 [DEBUG] [Thread-188383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:31:14.656 [DEBUG] [Thread-188383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:31:14.656 [DEBUG] [Thread-188383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:31:14.672 [INFO] [Thread-188383] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:31:14.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:31:14.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:31:15.532 [DEBUG] [Thread-188383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:31:15.532 [DEBUG] [Thread-188383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:31:15.581 [DEBUG] [Thread-188383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:31:15.581 [DEBUG] [Thread-188383] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:31:15.591 [DEBUG] [Thread-188383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:31:15.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:31:15.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:31: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') -> 00000000
2025-11-24T10:31:15.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:31:15.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:31:15.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:31:15.627 [DEBUG] [Thread-188383] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:31:27.268 [DEBUG] [Thread-188385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:31:31.327 [DEBUG] [Thread-188386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:31:42.336 [DEBUG] [Thread-188387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:31:45.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:31:45.649 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:31:45.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-11-24T10:31:46.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 31, 35), 17.84, 29.96, 0.0, 26.87, 17.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:31:46.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:31:35
2025-11-24T10:31:46.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:31:46.710 [DEBUG] [Thread-188388] [transport.py] [_log()] starting thread (client mode): 0xd0703460
2025-11-24T10:31:46.710 [DEBUG] [Thread-188388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:31:46.732 [DEBUG] [Thread-188388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:31:46.732 [INFO] [Thread-188388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:31:46.735 [DEBUG] [Thread-188388] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:31:46.735 [DEBUG] [Thread-188388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:31:46.735 [DEBUG] [Thread-188388] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:31:46.735 [DEBUG] [Thread-188388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] client lang: <none>
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] server lang: <none>
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] kex follows: False
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:31:46.736 [DEBUG] [Thread-188388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:31:46.737 [DEBUG] [Thread-188388] [transport.py] [_log()] Compression: none
2025-11-24T10:31:46.737 [DEBUG] [Thread-188388] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:31:46.746 [DEBUG] [Thread-188388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:31:46.747 [DEBUG] [Thread-188388] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:31:46.747 [DEBUG] [Thread-188388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:31:46.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:31:46.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:31:46.750 [DEBUG] [Thread-188388] [transport.py] [_log()] userauth is OK
2025-11-24T10:31:46.750 [DEBUG] [Thread-188388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:31:46.750 [DEBUG] [Thread-188388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:31:46.750 [DEBUG] [Thread-188388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:31:46.750 [DEBUG] [Thread-188388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:31:46.774 [INFO] [Thread-188388] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:31:46.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:31:47.416 [DEBUG] [Thread-188388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:31:47.416 [DEBUG] [Thread-188388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:31:47.417 [DEBUG] [Thread-188388] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:31:47.457 [DEBUG] [Thread-188388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:31:47.457 [DEBUG] [Thread-188388] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:31:47.459 [DEBUG] [Thread-188388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:31:47.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:31:47.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:31:47.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:31:47.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:31:47.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:31:47.479 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:31:47.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.354910 -999.00  +17.60  27.52     34   +1.90 1 1 1 1 1   888    0 16.41 31.22 ----- 27.5 27.5 202.0 29.5 24.1 -26.0 22.7 -26.4 22.2 -24.9 23.1 -24.9
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.354910
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:31:47.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:31:35', tmtdew=17.84, humidity=29.96, cloud=0.0, wind=26.87, temperature=17.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:31:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:31:47.480 [DEBUG] [Thread-188388] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:31:47.554 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:31:47.565 [DEBUG] [Thread-188391] [transport.py] [_log()] starting thread (client mode): 0xd0711ae0
2025-11-24T10:31:47.565 [DEBUG] [Thread-188391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:31:47.580 [DEBUG] [Thread-188391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:31:47.581 [INFO] [Thread-188391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] client lang: <none>
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] server lang: <none>
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] kex follows: False
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] Compression: none
2025-11-24T10:31:47.588 [DEBUG] [Thread-188391] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:31:47.651 [DEBUG] [Thread-188391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:31:47.652 [DEBUG] [Thread-188391] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:31:47.652 [DEBUG] [Thread-188391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:31:47.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:31:47.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:31:47.707 [DEBUG] [Thread-188391] [transport.py] [_log()] userauth is OK
2025-11-24T10:31:47.707 [DEBUG] [Thread-188391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:31:47.707 [DEBUG] [Thread-188391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:31:47.708 [DEBUG] [Thread-188391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:31:47.708 [DEBUG] [Thread-188391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:31:47.730 [INFO] [Thread-188391] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:31:47.730 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:31:47.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:31:48.586 [DEBUG] [Thread-188391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:31:48.586 [DEBUG] [Thread-188391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:31:48.634 [DEBUG] [Thread-188391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:31:48.634 [DEBUG] [Thread-188391] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:31:48.642 [DEBUG] [Thread-188391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:31:48.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:31:48.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-11-24T10:31:48.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-11-24T10:31:48.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:31:48.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:31:48.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:31:48.672 [DEBUG] [Thread-188391] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:31:57.370 [DEBUG] [Thread-188393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:32:12.407 [DEBUG] [Thread-188394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:32:18.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:32:18.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:32:18.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-11-24T10:32:19.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 32, 7), 18.09, 29.46, 0.0, 26.48, 17.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:32:19.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:32:07
2025-11-24T10:32:19.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:32:19.771 [DEBUG] [Thread-188395] [transport.py] [_log()] starting thread (client mode): 0xd3150490
2025-11-24T10:32:19.771 [DEBUG] [Thread-188395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:32:19.791 [DEBUG] [Thread-188395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:32:19.791 [INFO] [Thread-188395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:32:19.795 [DEBUG] [Thread-188395] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:32:19.795 [DEBUG] [Thread-188395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:32:19.795 [DEBUG] [Thread-188395] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:32:19.795 [DEBUG] [Thread-188395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:32:19.795 [DEBUG] [Thread-188395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:32:19.795 [DEBUG] [Thread-188395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:32:19.795 [DEBUG] [Thread-188395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:32:19.795 [DEBUG] [Thread-188395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:32:19.795 [DEBUG] [Thread-188395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:32:19.796 [DEBUG] [Thread-188395] [transport.py] [_log()] client lang: <none>
2025-11-24T10:32:19.796 [DEBUG] [Thread-188395] [transport.py] [_log()] server lang: <none>
2025-11-24T10:32:19.796 [DEBUG] [Thread-188395] [transport.py] [_log()] kex follows: False
2025-11-24T10:32:19.796 [DEBUG] [Thread-188395] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:32:19.796 [DEBUG] [Thread-188395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:32:19.796 [DEBUG] [Thread-188395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:32:19.796 [DEBUG] [Thread-188395] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:32:19.796 [DEBUG] [Thread-188395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:32:19.796 [DEBUG] [Thread-188395] [transport.py] [_log()] Compression: none
2025-11-24T10:32:19.796 [DEBUG] [Thread-188395] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:32:19.815 [DEBUG] [Thread-188395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:32:19.816 [DEBUG] [Thread-188395] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:32:19.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:32:19.817 [DEBUG] [Thread-188395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:32:19.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:32:19.861 [DEBUG] [Thread-188395] [transport.py] [_log()] userauth is OK
2025-11-24T10:32:19.861 [DEBUG] [Thread-188395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:32:19.861 [DEBUG] [Thread-188395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:32:19.861 [DEBUG] [Thread-188395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:32:19.861 [DEBUG] [Thread-188395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:32:19.892 [INFO] [Thread-188395] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:32:19.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:32:20.496 [DEBUG] [Thread-188395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:32:20.496 [DEBUG] [Thread-188395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:32:20.496 [DEBUG] [Thread-188395] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:32:20.537 [DEBUG] [Thread-188395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:32:20.537 [DEBUG] [Thread-188395] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:32:20.539 [DEBUG] [Thread-188395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:32:20.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:32:20.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:32:20.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:32:20.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:32:20.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:32:20.558 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:32:20.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.355258 -999.00  +17.70  25.94     34   +1.70 1 1 1 1 1   888    0 16.39 28.57 ----- 25.9 25.9 191.9 32.6 24.0 -26.6 22.8 -25.4 22.2 -24.6 23.1 -25.0
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.355258
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:32:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:32:07', tmtdew=18.09, humidity=29.46, cloud=0.0, wind=26.48, temperature=17.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:31:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:32:20.559 [DEBUG] [Thread-188395] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:32:20.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:32:20.644 [DEBUG] [Thread-188398] [transport.py] [_log()] starting thread (client mode): 0xd3151c30
2025-11-24T10:32:20.644 [DEBUG] [Thread-188398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:32:20.659 [DEBUG] [Thread-188398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:32:20.659 [INFO] [Thread-188398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:32:20.668 [DEBUG] [Thread-188398] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:32:20.668 [DEBUG] [Thread-188398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:32:20.668 [DEBUG] [Thread-188398] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:32:20.668 [DEBUG] [Thread-188398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:32:20.668 [DEBUG] [Thread-188398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:32:20.668 [DEBUG] [Thread-188398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:32:20.668 [DEBUG] [Thread-188398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:32:20.668 [DEBUG] [Thread-188398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] client lang: <none>
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] server lang: <none>
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] kex follows: False
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] Compression: none
2025-11-24T10:32:20.669 [DEBUG] [Thread-188398] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:32:20.726 [DEBUG] [Thread-188398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:32:20.726 [DEBUG] [Thread-188398] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:32:20.726 [DEBUG] [Thread-188398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:32:20.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:32:20.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:32:20.783 [DEBUG] [Thread-188398] [transport.py] [_log()] userauth is OK
2025-11-24T10:32:20.783 [DEBUG] [Thread-188398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:32:20.783 [DEBUG] [Thread-188398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:32:20.783 [DEBUG] [Thread-188398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:32:20.783 [DEBUG] [Thread-188398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:32:20.797 [INFO] [Thread-188398] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:32:20.797 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:32:20.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:32:21.667 [DEBUG] [Thread-188398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:32:21.667 [DEBUG] [Thread-188398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:32:21.715 [DEBUG] [Thread-188398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:32:21.716 [DEBUG] [Thread-188398] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:32:21.725 [DEBUG] [Thread-188398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:32:21.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:32: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')
2025-11-24T10:32:21.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:32:21.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:32:21.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:32:21.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:32:21.765 [DEBUG] [Thread-188398] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:32:27.438 [DEBUG] [Thread-188400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:32:31.378 [DEBUG] [Thread-188401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:32:42.476 [DEBUG] [Thread-188402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:32:51.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:32:51.786 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:32:51.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:32:52.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 32, 40), 18.1, 29.35, 0.0, 24.65, 17.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:32:52.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:32:40
2025-11-24T10:32:52.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:32:52.870 [DEBUG] [Thread-188403] [transport.py] [_log()] starting thread (client mode): 0xd0711ae0
2025-11-24T10:32:52.870 [DEBUG] [Thread-188403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:32:52.890 [DEBUG] [Thread-188403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:32:52.890 [INFO] [Thread-188403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] client lang: <none>
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] server lang: <none>
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] kex follows: False
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:32:52.893 [DEBUG] [Thread-188403] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:32:52.894 [DEBUG] [Thread-188403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:32:52.894 [DEBUG] [Thread-188403] [transport.py] [_log()] Compression: none
2025-11-24T10:32:52.894 [DEBUG] [Thread-188403] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:32:52.908 [DEBUG] [Thread-188403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:32:52.908 [DEBUG] [Thread-188403] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:32:52.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:32:52.908 [DEBUG] [Thread-188403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:32:52.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:32:52.909 [DEBUG] [Thread-188403] [transport.py] [_log()] userauth is OK
2025-11-24T10:32:52.909 [DEBUG] [Thread-188403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:32:52.909 [DEBUG] [Thread-188403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:32:52.909 [DEBUG] [Thread-188403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:32:52.909 [DEBUG] [Thread-188403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:32:52.919 [INFO] [Thread-188403] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:32:52.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:32:53.532 [DEBUG] [Thread-188403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:32:53.532 [DEBUG] [Thread-188403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:32:53.532 [DEBUG] [Thread-188403] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:32:53.573 [DEBUG] [Thread-188403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:32:53.573 [DEBUG] [Thread-188403] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:32:53.575 [DEBUG] [Thread-188403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:32:53.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:32:53.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:32:53.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:32:53.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:32:53.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:32:53.593 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:32:53.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:32:53.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:32:53.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:32:53.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.355605 -999.00  +18.10  10.03     33   +1.80 1 1 1 1 1   888    0 16.64 24.54 ----- 10.0 10.0 204.3 25.6 24.1 -24.9 22.9 -24.3 22.5 -22.7 23.2 -24.4
2025-11-24T10:32:53.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:32:53.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:32:53.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.355605
2025-11-24T10:32:53.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:32:53.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:32:53.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:32:53.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:32:53.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:32:53.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:32:40', tmtdew=18.1, humidity=29.35, cloud=0.0, wind=24.65, temperature=17.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:32:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:32:53.594 [DEBUG] [Thread-188403] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:32:53.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:32:53.681 [DEBUG] [Thread-188406] [transport.py] [_log()] starting thread (client mode): 0xd0713a90
2025-11-24T10:32:53.682 [DEBUG] [Thread-188406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:32:53.696 [DEBUG] [Thread-188406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:32:53.697 [INFO] [Thread-188406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] client lang: <none>
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] server lang: <none>
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] kex follows: False
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:32:53.704 [DEBUG] [Thread-188406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:32:53.705 [DEBUG] [Thread-188406] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:32:53.705 [DEBUG] [Thread-188406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:32:53.705 [DEBUG] [Thread-188406] [transport.py] [_log()] Compression: none
2025-11-24T10:32:53.705 [DEBUG] [Thread-188406] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:32:53.767 [DEBUG] [Thread-188406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:32:53.767 [DEBUG] [Thread-188406] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:32:53.767 [DEBUG] [Thread-188406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:32:53.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:32:53.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:32:53.823 [DEBUG] [Thread-188406] [transport.py] [_log()] userauth is OK
2025-11-24T10:32:53.823 [DEBUG] [Thread-188406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:32:53.823 [DEBUG] [Thread-188406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:32:53.823 [DEBUG] [Thread-188406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:32:53.823 [DEBUG] [Thread-188406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:32:53.837 [INFO] [Thread-188406] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:32:53.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:32:53.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:32:54.691 [DEBUG] [Thread-188406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:32:54.691 [DEBUG] [Thread-188406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:32:54.739 [DEBUG] [Thread-188406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:32:54.739 [DEBUG] [Thread-188406] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:32:54.747 [DEBUG] [Thread-188406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:32:54.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:32:54.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-11-24T10:32:54.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-11-24T10:32:54.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:32:54.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:32:54.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:32:54.779 [DEBUG] [Thread-188406] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:32:57.508 [DEBUG] [Thread-188408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:33:12.558 [DEBUG] [Thread-188409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:33:24.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:33:24.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:33:24.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-11-24T10:33:25.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 33, 12), 18.4, 28.75, 0.0, 21.72, 17.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:33:25.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:33:12
2025-11-24T10:33:25.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:33:25.869 [DEBUG] [Thread-188410] [transport.py] [_log()] starting thread (client mode): 0xd0710850
2025-11-24T10:33:25.869 [DEBUG] [Thread-188410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:33:25.890 [DEBUG] [Thread-188410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:33:25.890 [INFO] [Thread-188410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] client lang: <none>
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] server lang: <none>
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] kex follows: False
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:33:25.893 [DEBUG] [Thread-188410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:33:25.902 [DEBUG] [Thread-188410] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:33:25.903 [DEBUG] [Thread-188410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:33:25.903 [DEBUG] [Thread-188410] [transport.py] [_log()] Compression: none
2025-11-24T10:33:25.903 [DEBUG] [Thread-188410] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:33:25.924 [DEBUG] [Thread-188410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:33:25.925 [DEBUG] [Thread-188410] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:33:25.926 [DEBUG] [Thread-188410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:33:25.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:33:25.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:33:25.929 [DEBUG] [Thread-188410] [transport.py] [_log()] userauth is OK
2025-11-24T10:33:25.929 [DEBUG] [Thread-188410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:33:25.929 [DEBUG] [Thread-188410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:33:25.929 [DEBUG] [Thread-188410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:33:25.929 [DEBUG] [Thread-188410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:33:25.966 [INFO] [Thread-188410] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:33:25.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:33:26.632 [DEBUG] [Thread-188410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:33:26.632 [DEBUG] [Thread-188410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:33:26.633 [DEBUG] [Thread-188410] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:33:26.673 [DEBUG] [Thread-188410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:33:26.673 [DEBUG] [Thread-188410] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:33:26.675 [DEBUG] [Thread-188410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:33:26.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:33:26.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:33:26.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:33:26.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:33:26.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:33:26.691 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:33:26.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:33:26.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.356299 -999.00  +18.70  17.15     32   +2.00 1 1 1 1 1   888    0 16.53 21.53 ----- 17.1 17.1 168.3 21.7 24.5 -25.6 23.3 -24.3 22.7 -24.9 23.5 -24.9
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.356299
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:33:26.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:33:12', tmtdew=18.4, humidity=28.75, cloud=0.0, wind=21.72, temperature=17.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:33:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:33:26.693 [DEBUG] [Thread-188410] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:33:26.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:33:27.588 [DEBUG] [Thread-188413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:33:31.556 [DEBUG] [Thread-188414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:33:42.626 [DEBUG] [Thread-188415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:33:57.658 [DEBUG] [Thread-188416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:34:12.693 [DEBUG] [Thread-188417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:34:27.732 [DEBUG] [Thread-188418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:34:31.681 [DEBUG] [Thread-188419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:34:42.768 [DEBUG] [Thread-188420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:34:57.802 [DEBUG] [Thread-188421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:35:12.847 [DEBUG] [Thread-188422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:35:27.876 [DEBUG] [Thread-188423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:35:31.745 [DEBUG] [Thread-188424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:35:41.889 [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-11-24T10:35:42.908 [DEBUG] [Thread-188425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:35:57.938 [DEBUG] [Thread-188426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:36:11.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:36:11.936 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:36:11.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-11-24T10:36:12.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 35, 55), 17.39, 30.63, 0.0, 18.55, 17.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:36:12.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:35:55
2025-11-24T10:36:12.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:36:12.964 [DEBUG] [Thread-188427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:36:13.055 [DEBUG] [Thread-188428] [transport.py] [_log()] starting thread (client mode): 0xd0702ec0
2025-11-24T10:36:13.055 [DEBUG] [Thread-188428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:36:13.067 [DEBUG] [Thread-188428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:36:13.067 [INFO] [Thread-188428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:36:13.074 [DEBUG] [Thread-188428] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:36:13.074 [DEBUG] [Thread-188428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:36:13.074 [DEBUG] [Thread-188428] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:36:13.075 [DEBUG] [Thread-188428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:36:13.075 [DEBUG] [Thread-188428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:36:13.075 [DEBUG] [Thread-188428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:36:13.075 [DEBUG] [Thread-188428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:36:13.075 [DEBUG] [Thread-188428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:36:13.075 [DEBUG] [Thread-188428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:36:13.075 [DEBUG] [Thread-188428] [transport.py] [_log()] client lang: <none>
2025-11-24T10:36:13.075 [DEBUG] [Thread-188428] [transport.py] [_log()] server lang: <none>
2025-11-24T10:36:13.075 [DEBUG] [Thread-188428] [transport.py] [_log()] kex follows: False
2025-11-24T10:36:13.075 [DEBUG] [Thread-188428] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:36:13.076 [DEBUG] [Thread-188428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:36:13.076 [DEBUG] [Thread-188428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:36:13.076 [DEBUG] [Thread-188428] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:36:13.077 [DEBUG] [Thread-188428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:36:13.077 [DEBUG] [Thread-188428] [transport.py] [_log()] Compression: none
2025-11-24T10:36:13.077 [DEBUG] [Thread-188428] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:36:13.115 [DEBUG] [Thread-188428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:36:13.120 [DEBUG] [Thread-188428] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:36:13.122 [DEBUG] [Thread-188428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:36:13.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:36:13.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:36:13.127 [DEBUG] [Thread-188428] [transport.py] [_log()] userauth is OK
2025-11-24T10:36:13.128 [DEBUG] [Thread-188428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:36:13.128 [DEBUG] [Thread-188428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:36:13.128 [DEBUG] [Thread-188428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:36:13.128 [DEBUG] [Thread-188428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:36:13.156 [INFO] [Thread-188428] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:36:13.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:36:13.786 [DEBUG] [Thread-188428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:36:13.786 [DEBUG] [Thread-188428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:36:13.787 [DEBUG] [Thread-188428] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:36:13.827 [DEBUG] [Thread-188428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:36:13.827 [DEBUG] [Thread-188428] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:36:13.830 [DEBUG] [Thread-188428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:36:13.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:36:13.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:36:13.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:36:13.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:36:13.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:36:13.853 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:36:13.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:36:13.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:36:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:36:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.358035 -999.00  +17.30  12.97     36   +2.10 1 1 1 1 1   888    0 16.32 19.94 ----- 13.0 13.0 169.1 29.3 24.2 -27.0 22.7 -29.6 22.4 -25.1 23.3 -25.6
2025-11-24T10:36:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:36:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:36:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.358035
2025-11-24T10:36:13.860 [DEBUG] [Thread-188428] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:36:13.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:36:13.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:36:13.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:36:13.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:36:13.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:36:13.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:35:55', tmtdew=17.39, humidity=30.63, cloud=0.0, wind=18.55, temperature=17.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:35:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:36:13.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:36:13.958 [DEBUG] [Thread-188431] [transport.py] [_log()] starting thread (client mode): 0xd0710a00
2025-11-24T10:36:13.958 [DEBUG] [Thread-188431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:36:13.973 [DEBUG] [Thread-188431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:36:13.973 [INFO] [Thread-188431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:36:13.981 [DEBUG] [Thread-188431] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] client lang: <none>
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] server lang: <none>
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] kex follows: False
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] Compression: none
2025-11-24T10:36:13.982 [DEBUG] [Thread-188431] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:36:14.039 [DEBUG] [Thread-188431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:36:14.039 [DEBUG] [Thread-188431] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:36:14.039 [DEBUG] [Thread-188431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:36:14.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:36:14.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:36:14.095 [DEBUG] [Thread-188431] [transport.py] [_log()] userauth is OK
2025-11-24T10:36:14.095 [DEBUG] [Thread-188431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:36:14.095 [DEBUG] [Thread-188431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:36:14.095 [DEBUG] [Thread-188431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:36:14.095 [DEBUG] [Thread-188431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:36:14.109 [INFO] [Thread-188431] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:36:14.109 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:36:14.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:36:15.035 [DEBUG] [Thread-188431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:36:15.035 [DEBUG] [Thread-188431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:36:15.084 [DEBUG] [Thread-188431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:36:15.084 [DEBUG] [Thread-188431] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:36:15.093 [DEBUG] [Thread-188431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:36:15.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:36:15.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:36:15.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-11-24T10:36:15.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:36:15.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:36:15.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:36:15.142 [DEBUG] [Thread-188431] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:36:27.997 [DEBUG] [Thread-188433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:36:32.010 [DEBUG] [Thread-188434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:36:43.109 [DEBUG] [Thread-188435 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:36:45.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:36:45.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:36:45.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-11-24T10:36:45.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 36, 28), 17.34, 30.75, 0.0, 20.43, 17.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:36:45.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:36:28
2025-11-24T10:36:46.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:36:46.231 [DEBUG] [Thread-188436] [transport.py] [_log()] starting thread (client mode): 0xd07121d0
2025-11-24T10:36:46.231 [DEBUG] [Thread-188436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:36:46.249 [DEBUG] [Thread-188436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:36:46.249 [INFO] [Thread-188436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:36:46.252 [DEBUG] [Thread-188436] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] client lang: <none>
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] server lang: <none>
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] kex follows: False
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] Compression: none
2025-11-24T10:36:46.253 [DEBUG] [Thread-188436] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:36:46.271 [DEBUG] [Thread-188436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:36:46.272 [DEBUG] [Thread-188436] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:36:46.273 [DEBUG] [Thread-188436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:36:46.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:36:46.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:36:46.275 [DEBUG] [Thread-188436] [transport.py] [_log()] userauth is OK
2025-11-24T10:36:46.275 [DEBUG] [Thread-188436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:36:46.276 [DEBUG] [Thread-188436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:36:46.276 [DEBUG] [Thread-188436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:36:46.276 [DEBUG] [Thread-188436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:36:46.312 [INFO] [Thread-188436] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:36:46.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:36:46.918 [DEBUG] [Thread-188436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:36:46.918 [DEBUG] [Thread-188436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:36:46.919 [DEBUG] [Thread-188436] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:36:46.959 [DEBUG] [Thread-188436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:36:46.959 [DEBUG] [Thread-188436] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:36:46.962 [DEBUG] [Thread-188436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:36:46.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:36:46.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:36:46.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:36:46.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:36:46.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:36:46.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:36:46.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:36:46.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:36:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:36:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.358383 -999.00  +17.30  21.04     36   +2.30 1 1 1 1 1   888    0 16.35 15.29 ----- 21.0 21.0 179.4 26.4 24.1 -25.4 22.8 -25.5 22.4 -24.7 23.3 -26.7
2025-11-24T10:36:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:36:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:36:46.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.358383
2025-11-24T10:36:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:36:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:36:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:36:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:36:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:36:46.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:36:28', tmtdew=17.34, humidity=30.75, cloud=0.0, wind=20.43, temperature=17.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:36:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:36:46.992 [DEBUG] [Thread-188436] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:36:47.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:36:47.091 [DEBUG] [Thread-188439] [transport.py] [_log()] starting thread (client mode): 0xd0711690
2025-11-24T10:36:47.091 [DEBUG] [Thread-188439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:36:47.108 [DEBUG] [Thread-188439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:36:47.109 [INFO] [Thread-188439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:36:47.116 [DEBUG] [Thread-188439] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:36:47.116 [DEBUG] [Thread-188439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:36:47.116 [DEBUG] [Thread-188439] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:36:47.116 [DEBUG] [Thread-188439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:36:47.116 [DEBUG] [Thread-188439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] client lang: <none>
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] server lang: <none>
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] kex follows: False
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] Compression: none
2025-11-24T10:36:47.117 [DEBUG] [Thread-188439] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:36:47.176 [DEBUG] [Thread-188439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:36:47.177 [DEBUG] [Thread-188439] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:36:47.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:36:47.178 [DEBUG] [Thread-188439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:36:47.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:36:47.232 [DEBUG] [Thread-188439] [transport.py] [_log()] userauth is OK
2025-11-24T10:36:47.232 [DEBUG] [Thread-188439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:36:47.232 [DEBUG] [Thread-188439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:36:47.232 [DEBUG] [Thread-188439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:36:47.232 [DEBUG] [Thread-188439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:36:47.251 [INFO] [Thread-188439] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:36:47.252 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:36:47.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:36:48.133 [DEBUG] [Thread-188439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:36:48.133 [DEBUG] [Thread-188439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:36:48.181 [DEBUG] [Thread-188439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:36:48.181 [DEBUG] [Thread-188439] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:36:48.189 [DEBUG] [Thread-188439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:36:48.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:36: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-11-24T10:36:48.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-11-24T10:36:48.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:36:48.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:36:48.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:36:48.220 [DEBUG] [Thread-188439] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:36:58.144 [DEBUG] [Thread-188441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:37:13.200 [DEBUG] [Thread-188442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:37:18.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:37:18.234 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:37:18.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-11-24T10:37:19.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 37, 1), 17.82, 29.9, 0.0, 25.9, 17.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:37:19.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:37:01
2025-11-24T10:37:19.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:37:19.369 [DEBUG] [Thread-188443] [transport.py] [_log()] starting thread (client mode): 0xd0702aa0
2025-11-24T10:37:19.369 [DEBUG] [Thread-188443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:37:19.390 [DEBUG] [Thread-188443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:37:19.390 [INFO] [Thread-188443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] client lang: <none>
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] server lang: <none>
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] kex follows: False
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:37:19.393 [DEBUG] [Thread-188443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:37:19.394 [DEBUG] [Thread-188443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:37:19.394 [DEBUG] [Thread-188443] [transport.py] [_log()] Compression: none
2025-11-24T10:37:19.394 [DEBUG] [Thread-188443] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:37:19.409 [DEBUG] [Thread-188443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:37:19.409 [DEBUG] [Thread-188443] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:37:19.409 [DEBUG] [Thread-188443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:37:19.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:37:19.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:37:19.409 [DEBUG] [Thread-188443] [transport.py] [_log()] userauth is OK
2025-11-24T10:37:19.409 [DEBUG] [Thread-188443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:37:19.409 [DEBUG] [Thread-188443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:37:19.409 [DEBUG] [Thread-188443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:37:19.409 [DEBUG] [Thread-188443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:37:19.436 [INFO] [Thread-188443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:37:19.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:37:20.098 [DEBUG] [Thread-188443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:37:20.098 [DEBUG] [Thread-188443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:37:20.098 [DEBUG] [Thread-188443] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:37:20.139 [DEBUG] [Thread-188443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:37:20.139 [DEBUG] [Thread-188443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:37:20.141 [DEBUG] [Thread-188443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:37:20.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:37:20.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:37:20.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:37:20.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:37:20.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:37:20.158 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:37:20.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.359077 -999.00  +18.00  20.20     35   +2.40 1 1 1 1 1   888    0 15.94 9.69 ----- 20.2 20.2 172.2 22.1 24.4 -24.4 23.1 -24.5 22.7 -23.5 23.4 -24.3
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.359077
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:37:20.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:37:01', tmtdew=17.82, humidity=29.9, cloud=0.0, wind=25.9, temperature=17.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:37:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:37:20.159 [DEBUG] [Thread-188443] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:37:20.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:37:20.249 [DEBUG] [Thread-188446] [transport.py] [_log()] starting thread (client mode): 0xd31536a0
2025-11-24T10:37:20.249 [DEBUG] [Thread-188446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:37:20.264 [DEBUG] [Thread-188446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:37:20.264 [INFO] [Thread-188446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] client lang: <none>
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] server lang: <none>
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] kex follows: False
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:37:20.273 [DEBUG] [Thread-188446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:37:20.274 [DEBUG] [Thread-188446] [transport.py] [_log()] Compression: none
2025-11-24T10:37:20.274 [DEBUG] [Thread-188446] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:37:20.330 [DEBUG] [Thread-188446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:37:20.330 [DEBUG] [Thread-188446] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:37:20.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:37:20.331 [DEBUG] [Thread-188446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:37:20.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:37:20.387 [DEBUG] [Thread-188446] [transport.py] [_log()] userauth is OK
2025-11-24T10:37:20.387 [DEBUG] [Thread-188446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:37:20.387 [DEBUG] [Thread-188446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:37:20.387 [DEBUG] [Thread-188446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:37:20.387 [DEBUG] [Thread-188446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:37:20.405 [INFO] [Thread-188446] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:37:20.405 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:37:20.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:37:21.273 [DEBUG] [Thread-188446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:37:21.273 [DEBUG] [Thread-188446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:37:21.321 [DEBUG] [Thread-188446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:37:21.321 [DEBUG] [Thread-188446] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:37:21.329 [DEBUG] [Thread-188446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:37:21.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:37:21.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-11-24T10:37:21.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-11-24T10:37:21.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:37:21.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:37:21.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:37:21.361 [DEBUG] [Thread-188446] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:37:28.231 [DEBUG] [Thread-188448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:37:32.083 [DEBUG] [Thread-188449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:37:43.271 [DEBUG] [Thread-188450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:37:51.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:37:51.380 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:37:51.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-11-24T10:37:52.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 37, 33), 19.12, 27.47, 0.0, 32.46, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:37:52.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:37:33
2025-11-24T10:37:52.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:37:52.447 [DEBUG] [Thread-188451] [transport.py] [_log()] starting thread (client mode): 0xd0713460
2025-11-24T10:37:52.447 [DEBUG] [Thread-188451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:37:52.467 [DEBUG] [Thread-188451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:37:52.467 [INFO] [Thread-188451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:37:52.469 [DEBUG] [Thread-188451] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] client lang: <none>
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] server lang: <none>
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] kex follows: False
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] Compression: none
2025-11-24T10:37:52.470 [DEBUG] [Thread-188451] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:37:52.488 [DEBUG] [Thread-188451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:37:52.488 [DEBUG] [Thread-188451] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:37:52.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:37:52.490 [DEBUG] [Thread-188451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:37:52.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:37:52.533 [DEBUG] [Thread-188451] [transport.py] [_log()] userauth is OK
2025-11-24T10:37:52.533 [DEBUG] [Thread-188451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:37:52.533 [DEBUG] [Thread-188451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:37:52.533 [DEBUG] [Thread-188451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:37:52.533 [DEBUG] [Thread-188451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:37:52.553 [INFO] [Thread-188451] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:37:52.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:37:53.198 [DEBUG] [Thread-188451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:37:53.198 [DEBUG] [Thread-188451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:37:53.198 [DEBUG] [Thread-188451] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:37:53.239 [DEBUG] [Thread-188451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:37:53.239 [DEBUG] [Thread-188451] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:37:53.241 [DEBUG] [Thread-188451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:37:53.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:37:53.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:37:53.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:37:53.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:37:53.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:37:53.261 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:37:53.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.359424 -999.00  +18.10  17.81     34   +2.20 1 1 1 1 1   888    0 15.98 10.47 ----- 17.8 17.8 163.1 29.2 24.4 -25.2 23.1 -26.7 22.8 -23.2 23.5 -24.9
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.359424
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:37:53.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:37:33', tmtdew=19.12, humidity=27.47, cloud=0.0, wind=32.46, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:37:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:37:53.262 [DEBUG] [Thread-188451] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:37:53.334 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:37:53.345 [DEBUG] [Thread-188454] [transport.py] [_log()] starting thread (client mode): 0xd317f670
2025-11-24T10:37:53.345 [DEBUG] [Thread-188454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:37:53.360 [DEBUG] [Thread-188454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:37:53.360 [INFO] [Thread-188454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:37:53.369 [DEBUG] [Thread-188454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:37:53.369 [DEBUG] [Thread-188454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:37:53.369 [DEBUG] [Thread-188454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:37:53.369 [DEBUG] [Thread-188454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:37:53.369 [DEBUG] [Thread-188454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:37:53.369 [DEBUG] [Thread-188454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:37:53.369 [DEBUG] [Thread-188454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:37:53.369 [DEBUG] [Thread-188454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:37:53.369 [DEBUG] [Thread-188454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:37:53.369 [DEBUG] [Thread-188454] [transport.py] [_log()] client lang: <none>
2025-11-24T10:37:53.370 [DEBUG] [Thread-188454] [transport.py] [_log()] server lang: <none>
2025-11-24T10:37:53.370 [DEBUG] [Thread-188454] [transport.py] [_log()] kex follows: False
2025-11-24T10:37:53.370 [DEBUG] [Thread-188454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:37:53.370 [DEBUG] [Thread-188454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:37:53.370 [DEBUG] [Thread-188454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:37:53.370 [DEBUG] [Thread-188454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:37:53.370 [DEBUG] [Thread-188454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:37:53.370 [DEBUG] [Thread-188454] [transport.py] [_log()] Compression: none
2025-11-24T10:37:53.370 [DEBUG] [Thread-188454] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:37:53.425 [DEBUG] [Thread-188454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:37:53.426 [DEBUG] [Thread-188454] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:37:53.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:37:53.426 [DEBUG] [Thread-188454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:37:53.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:37:53.483 [DEBUG] [Thread-188454] [transport.py] [_log()] userauth is OK
2025-11-24T10:37:53.483 [DEBUG] [Thread-188454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:37:53.483 [DEBUG] [Thread-188454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:37:53.483 [DEBUG] [Thread-188454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:37:53.483 [DEBUG] [Thread-188454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:37:53.497 [INFO] [Thread-188454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:37:53.497 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:37:53.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:37:54.350 [DEBUG] [Thread-188454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:37:54.350 [DEBUG] [Thread-188454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:37:54.399 [DEBUG] [Thread-188454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:37:54.399 [DEBUG] [Thread-188454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:37:54.408 [DEBUG] [Thread-188454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:37:54.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:37:54.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-11-24T10:37:54.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-11-24T10:37:54.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:37:54.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:37:54.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:37:54.445 [DEBUG] [Thread-188454] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:37:58.301 [DEBUG] [Thread-188456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:38:13.337 [DEBUG] [Thread-188457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:38:24.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:38:24.447 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:38:24.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-11-24T10:38:25.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 38, 6), 17.63, 30.19, 0.0, 20.64, 16.91, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:38:25.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:38:06
2025-11-24T10:38:25.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:38:25.536 [DEBUG] [Thread-188458] [transport.py] [_log()] starting thread (client mode): 0xd3152d70
2025-11-24T10:38:25.536 [DEBUG] [Thread-188458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:38:25.559 [DEBUG] [Thread-188458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:38:25.559 [INFO] [Thread-188458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:38:25.569 [DEBUG] [Thread-188458] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:38:25.570 [DEBUG] [Thread-188458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:38:25.570 [DEBUG] [Thread-188458] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:38:25.570 [DEBUG] [Thread-188458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:38:25.570 [DEBUG] [Thread-188458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:38:25.570 [DEBUG] [Thread-188458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:38:25.571 [DEBUG] [Thread-188458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:38:25.571 [DEBUG] [Thread-188458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:38:25.571 [DEBUG] [Thread-188458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:38:25.571 [DEBUG] [Thread-188458] [transport.py] [_log()] client lang: <none>
2025-11-24T10:38:25.571 [DEBUG] [Thread-188458] [transport.py] [_log()] server lang: <none>
2025-11-24T10:38:25.571 [DEBUG] [Thread-188458] [transport.py] [_log()] kex follows: False
2025-11-24T10:38:25.571 [DEBUG] [Thread-188458] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:38:25.571 [DEBUG] [Thread-188458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:38:25.572 [DEBUG] [Thread-188458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:38:25.572 [DEBUG] [Thread-188458] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:38:25.572 [DEBUG] [Thread-188458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:38:25.572 [DEBUG] [Thread-188458] [transport.py] [_log()] Compression: none
2025-11-24T10:38:25.572 [DEBUG] [Thread-188458] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:38:25.591 [DEBUG] [Thread-188458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:38:25.592 [DEBUG] [Thread-188458] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:38:25.592 [DEBUG] [Thread-188458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:38:25.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:38:25.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:38:25.595 [DEBUG] [Thread-188458] [transport.py] [_log()] userauth is OK
2025-11-24T10:38:25.595 [DEBUG] [Thread-188458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:38:25.595 [DEBUG] [Thread-188458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:38:25.595 [DEBUG] [Thread-188458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:38:25.595 [DEBUG] [Thread-188458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:38:25.619 [INFO] [Thread-188458] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:38:25.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:38:26.267 [DEBUG] [Thread-188458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:38:26.267 [DEBUG] [Thread-188458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:38:26.267 [DEBUG] [Thread-188458] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:38:26.308 [DEBUG] [Thread-188458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:38:26.308 [DEBUG] [Thread-188458] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:38:26.310 [DEBUG] [Thread-188458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:38:26.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:38:26.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:38:26.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:38:26.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:38:26.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:38:26.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:38:26.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:38:26.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:38:26.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:38:26.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.359772 -999.00  +18.30  17.60     33   +2.10 1 1 1 1 1   888    0 16.06 11.26 ----- 17.6 17.6 148.8 26.5 24.6 -25.2 23.3 -25.5 22.8 -23.7 23.6 -25.1
2025-11-24T10:38:26.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:38:26.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:38:26.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.359772
2025-11-24T10:38:26.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:38:26.339 [DEBUG] [Thread-188458] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:38:26.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:38:26.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:38:26.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:38:26.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:38:26.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:38:06', tmtdew=17.63, humidity=30.19, cloud=0.0, wind=20.64, temperature=16.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:38:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:38:26.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:38:26.424 [DEBUG] [Thread-188461] [transport.py] [_log()] starting thread (client mode): 0xd0713460
2025-11-24T10:38:26.424 [DEBUG] [Thread-188461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:38:26.439 [DEBUG] [Thread-188461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:38:26.439 [INFO] [Thread-188461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] client lang: <none>
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] server lang: <none>
2025-11-24T10:38:26.447 [DEBUG] [Thread-188461] [transport.py] [_log()] kex follows: False
2025-11-24T10:38:26.448 [DEBUG] [Thread-188461] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:38:26.448 [DEBUG] [Thread-188461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:38:26.448 [DEBUG] [Thread-188461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:38:26.448 [DEBUG] [Thread-188461] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:38:26.448 [DEBUG] [Thread-188461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:38:26.448 [DEBUG] [Thread-188461] [transport.py] [_log()] Compression: none
2025-11-24T10:38:26.448 [DEBUG] [Thread-188461] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:38:26.508 [DEBUG] [Thread-188461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:38:26.509 [DEBUG] [Thread-188461] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:38:26.509 [DEBUG] [Thread-188461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:38:26.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:38:26.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:38:26.564 [DEBUG] [Thread-188461] [transport.py] [_log()] userauth is OK
2025-11-24T10:38:26.564 [DEBUG] [Thread-188461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:38:26.564 [DEBUG] [Thread-188461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:38:26.565 [DEBUG] [Thread-188461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:38:26.565 [DEBUG] [Thread-188461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:38:26.583 [INFO] [Thread-188461] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:38:26.584 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:38:26.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:38:27.493 [DEBUG] [Thread-188461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:38:27.493 [DEBUG] [Thread-188461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:38:27.541 [DEBUG] [Thread-188461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:38:27.541 [DEBUG] [Thread-188461] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:38:27.549 [DEBUG] [Thread-188461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:38:27.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:38:27.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-11-24T10:38:27.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-11-24T10:38:27.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:38:27.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:38:27.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:38:27.581 [DEBUG] [Thread-188461] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:38:28.369 [DEBUG] [Thread-188463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:38:32.307 [DEBUG] [Thread-188464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:38:43.411 [DEBUG] [Thread-188465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:38:57.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:38:57.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:38:57.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:38:58.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 38, 38), 18.31, 28.82, 0.0, 29.5, 17.88, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:38:58.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:38:38
2025-11-24T10:38:58.447 [DEBUG] [Thread-188466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:38:58.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:38:58.633 [DEBUG] [Thread-188467] [transport.py] [_log()] starting thread (client mode): 0xd0711e10
2025-11-24T10:38:58.633 [DEBUG] [Thread-188467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:38:58.654 [DEBUG] [Thread-188467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:38:58.655 [INFO] [Thread-188467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:38:58.658 [DEBUG] [Thread-188467] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] client lang: <none>
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] server lang: <none>
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] kex follows: False
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] Compression: none
2025-11-24T10:38:58.659 [DEBUG] [Thread-188467] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:38:58.677 [DEBUG] [Thread-188467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:38:58.687 [DEBUG] [Thread-188467] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:38:58.687 [DEBUG] [Thread-188467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:38:58.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:38:58.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:38:58.690 [DEBUG] [Thread-188467] [transport.py] [_log()] userauth is OK
2025-11-24T10:38:58.690 [DEBUG] [Thread-188467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:38:58.690 [DEBUG] [Thread-188467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:38:58.690 [DEBUG] [Thread-188467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:38:58.690 [DEBUG] [Thread-188467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:38:58.715 [INFO] [Thread-188467] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:38:58.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:38:59.361 [DEBUG] [Thread-188467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:38:59.361 [DEBUG] [Thread-188467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:38:59.362 [DEBUG] [Thread-188467] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:38:59.402 [DEBUG] [Thread-188467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:38:59.403 [DEBUG] [Thread-188467] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:38:59.406 [DEBUG] [Thread-188467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:38:59.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:38:59.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:38:59.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:38:59.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:38:59.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:38:59.429 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:38:59.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:38:59.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:38:59.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:38:59.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.360119 -999.00  +18.40  18.19     34   +2.20 1 1 1 1 1   888    0 16.10 13.18 ----- 18.2 18.2 186.2 30.9 24.6 -26.4 23.4 -30.5 22.7 -25.4 23.7 -25.0
2025-11-24T10:38:59.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:38:59.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:38:59.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.360119
2025-11-24T10:38:59.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:38:59.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:38:59.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:38:59.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:38:59.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:38:59.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:38:38', tmtdew=18.31, humidity=28.82, cloud=0.0, wind=29.5, temperature=17.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:38:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:38:59.432 [DEBUG] [Thread-188467] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:38:59.516 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:38:59.527 [DEBUG] [Thread-188470] [transport.py] [_log()] starting thread (client mode): 0xd0701b40
2025-11-24T10:38:59.527 [DEBUG] [Thread-188470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:38:59.543 [DEBUG] [Thread-188470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:38:59.543 [INFO] [Thread-188470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:38:59.551 [DEBUG] [Thread-188470] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:38:59.551 [DEBUG] [Thread-188470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:38:59.551 [DEBUG] [Thread-188470] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:38:59.551 [DEBUG] [Thread-188470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:38:59.551 [DEBUG] [Thread-188470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:38:59.551 [DEBUG] [Thread-188470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:38:59.551 [DEBUG] [Thread-188470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:38:59.552 [DEBUG] [Thread-188470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:38:59.552 [DEBUG] [Thread-188470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:38:59.552 [DEBUG] [Thread-188470] [transport.py] [_log()] client lang: <none>
2025-11-24T10:38:59.552 [DEBUG] [Thread-188470] [transport.py] [_log()] server lang: <none>
2025-11-24T10:38:59.552 [DEBUG] [Thread-188470] [transport.py] [_log()] kex follows: False
2025-11-24T10:38:59.552 [DEBUG] [Thread-188470] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:38:59.552 [DEBUG] [Thread-188470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:38:59.552 [DEBUG] [Thread-188470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:38:59.552 [DEBUG] [Thread-188470] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:38:59.553 [DEBUG] [Thread-188470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:38:59.553 [DEBUG] [Thread-188470] [transport.py] [_log()] Compression: none
2025-11-24T10:38:59.553 [DEBUG] [Thread-188470] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:38:59.613 [DEBUG] [Thread-188470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:38:59.614 [DEBUG] [Thread-188470] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:38:59.615 [DEBUG] [Thread-188470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:38:59.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:38:59.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:38:59.672 [DEBUG] [Thread-188470] [transport.py] [_log()] userauth is OK
2025-11-24T10:38:59.672 [DEBUG] [Thread-188470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:38:59.672 [DEBUG] [Thread-188470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:38:59.672 [DEBUG] [Thread-188470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:38:59.673 [DEBUG] [Thread-188470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:38:59.692 [INFO] [Thread-188470] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:38:59.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:38:59.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:39:00.560 [DEBUG] [Thread-188470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:39:00.560 [DEBUG] [Thread-188470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:39:00.608 [DEBUG] [Thread-188470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:39:00.609 [DEBUG] [Thread-188470] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:39:00.618 [DEBUG] [Thread-188470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:39:00.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:39:00.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-11-24T10:39:00.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-11-24T10:39:00.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:39:00.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:39:00.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:39:00.653 [DEBUG] [Thread-188470] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:39:13.474 [DEBUG] [Thread-188472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:39:28.522 [DEBUG] [Thread-188473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:39:30.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:39:30.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:39:30.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-11-24T10:39:31.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 39, 10), 18.26, 28.92, 0.0, 26.94, 17.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:39:31.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:39:10
2025-11-24T10:39:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:39:31.682 [DEBUG] [Thread-188474] [transport.py] [_log()] starting thread (client mode): 0xd319f730
2025-11-24T10:39:31.682 [DEBUG] [Thread-188474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:39:31.702 [DEBUG] [Thread-188474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:39:31.702 [INFO] [Thread-188474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:39:31.705 [DEBUG] [Thread-188474] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] client lang: <none>
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] server lang: <none>
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] kex follows: False
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:39:31.706 [DEBUG] [Thread-188474] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:39:31.707 [DEBUG] [Thread-188474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:39:31.707 [DEBUG] [Thread-188474] [transport.py] [_log()] Compression: none
2025-11-24T10:39:31.707 [DEBUG] [Thread-188474] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:39:31.728 [DEBUG] [Thread-188474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:39:31.729 [DEBUG] [Thread-188474] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:39:31.730 [DEBUG] [Thread-188474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:39:31.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:39:31.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:39:31.732 [DEBUG] [Thread-188474] [transport.py] [_log()] userauth is OK
2025-11-24T10:39:31.732 [DEBUG] [Thread-188474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:39:31.732 [DEBUG] [Thread-188474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:39:31.732 [DEBUG] [Thread-188474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:39:31.732 [DEBUG] [Thread-188474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:39:31.755 [INFO] [Thread-188474] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:39:31.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:39:32.351 [DEBUG] [Thread-188476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:39:32.405 [DEBUG] [Thread-188474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:39:32.405 [DEBUG] [Thread-188474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:39:32.406 [DEBUG] [Thread-188474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:39:32.447 [DEBUG] [Thread-188474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:39:32.447 [DEBUG] [Thread-188474] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:39:32.450 [DEBUG] [Thread-188474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:39:32.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:39:32.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:39:32.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:39:32.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:39:32.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:39:32.486 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:39:32.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:39:32.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:39:32.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:39:32.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.360466 -999.00  +17.80  24.20     34   +1.80 1 1 1 1 1   888    0 16.31 14.98 ----- 24.2 24.2 183.2 31.2 24.4 -28.0 22.8 -31.5 22.5 -27.8 23.4 -27.2
2025-11-24T10:39:32.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:39:32.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:39:32.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.360466
2025-11-24T10:39:32.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:39:32.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:39:32.489 [DEBUG] [Thread-188474] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:39:32.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:39:32.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:39:32.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:39:32.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:39:10', tmtdew=18.26, humidity=28.92, cloud=0.0, wind=26.94, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:39:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:39:32.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:39:32.586 [DEBUG] [Thread-188478] [transport.py] [_log()] starting thread (client mode): 0xd319f940
2025-11-24T10:39:32.586 [DEBUG] [Thread-188478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:39:32.600 [DEBUG] [Thread-188478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:39:32.600 [INFO] [Thread-188478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:39:32.607 [DEBUG] [Thread-188478] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:39:32.608 [DEBUG] [Thread-188478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:39:32.608 [DEBUG] [Thread-188478] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:39:32.608 [DEBUG] [Thread-188478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:39:32.608 [DEBUG] [Thread-188478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:39:32.608 [DEBUG] [Thread-188478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:39:32.608 [DEBUG] [Thread-188478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:39:32.608 [DEBUG] [Thread-188478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:39:32.608 [DEBUG] [Thread-188478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:39:32.609 [DEBUG] [Thread-188478] [transport.py] [_log()] client lang: <none>
2025-11-24T10:39:32.609 [DEBUG] [Thread-188478] [transport.py] [_log()] server lang: <none>
2025-11-24T10:39:32.609 [DEBUG] [Thread-188478] [transport.py] [_log()] kex follows: False
2025-11-24T10:39:32.609 [DEBUG] [Thread-188478] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:39:32.609 [DEBUG] [Thread-188478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:39:32.609 [DEBUG] [Thread-188478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:39:32.609 [DEBUG] [Thread-188478] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:39:32.610 [DEBUG] [Thread-188478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:39:32.610 [DEBUG] [Thread-188478] [transport.py] [_log()] Compression: none
2025-11-24T10:39:32.610 [DEBUG] [Thread-188478] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:39:32.672 [DEBUG] [Thread-188478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:39:32.673 [DEBUG] [Thread-188478] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:39:32.674 [DEBUG] [Thread-188478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:39:32.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:39:32.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:39:32.728 [DEBUG] [Thread-188478] [transport.py] [_log()] userauth is OK
2025-11-24T10:39:32.728 [DEBUG] [Thread-188478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:39:32.728 [DEBUG] [Thread-188478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:39:32.728 [DEBUG] [Thread-188478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:39:32.729 [DEBUG] [Thread-188478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:39:32.747 [INFO] [Thread-188478] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:39:32.748 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:39:32.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:39:33.609 [DEBUG] [Thread-188478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:39:33.609 [DEBUG] [Thread-188478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:39:33.657 [DEBUG] [Thread-188478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:39:33.657 [DEBUG] [Thread-188478] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:39:33.665 [DEBUG] [Thread-188478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:39:33.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:39:33.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-11-24T10:39:33.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:39:33.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:39:33.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:39:33.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:39:33.697 [DEBUG] [Thread-188478] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:39:43.554 [DEBUG] [Thread-188480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:39:58.591 [DEBUG] [Thread-188481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:40:03.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:40:03.719 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:40:03.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-11-24T10:40:04.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 39, 43), 17.77, 29.93, 0.0, 19.92, 17.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:40:04.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:39:43
2025-11-24T10:40:04.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:40:04.726 [DEBUG] [Thread-188482] [transport.py] [_log()] starting thread (client mode): 0xd7bc5600
2025-11-24T10:40:04.727 [DEBUG] [Thread-188482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:40:04.747 [DEBUG] [Thread-188482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:40:04.747 [INFO] [Thread-188482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:40:04.748 [DEBUG] [Thread-188482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:40:04.748 [DEBUG] [Thread-188482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:40:04.748 [DEBUG] [Thread-188482] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:40:04.748 [DEBUG] [Thread-188482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:40:04.748 [DEBUG] [Thread-188482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:40:04.748 [DEBUG] [Thread-188482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:40:04.748 [DEBUG] [Thread-188482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:40:04.748 [DEBUG] [Thread-188482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:40:04.748 [DEBUG] [Thread-188482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:40:04.748 [DEBUG] [Thread-188482] [transport.py] [_log()] client lang: <none>
2025-11-24T10:40:04.749 [DEBUG] [Thread-188482] [transport.py] [_log()] server lang: <none>
2025-11-24T10:40:04.749 [DEBUG] [Thread-188482] [transport.py] [_log()] kex follows: False
2025-11-24T10:40:04.749 [DEBUG] [Thread-188482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:40:04.749 [DEBUG] [Thread-188482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:40:04.749 [DEBUG] [Thread-188482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:40:04.749 [DEBUG] [Thread-188482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:40:04.749 [DEBUG] [Thread-188482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:40:04.749 [DEBUG] [Thread-188482] [transport.py] [_log()] Compression: none
2025-11-24T10:40:04.749 [DEBUG] [Thread-188482] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:40:04.757 [DEBUG] [Thread-188482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:40:04.757 [DEBUG] [Thread-188482] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:40:04.758 [DEBUG] [Thread-188482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:40:04.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:40:04.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:40:04.759 [DEBUG] [Thread-188482] [transport.py] [_log()] userauth is OK
2025-11-24T10:40:04.760 [DEBUG] [Thread-188482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:40:04.760 [DEBUG] [Thread-188482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:40:04.760 [DEBUG] [Thread-188482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:40:04.760 [DEBUG] [Thread-188482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:40:04.777 [INFO] [Thread-188482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:40:04.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:40:06.735 [DEBUG] [Thread-188482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:40:06.735 [DEBUG] [Thread-188482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:40:06.735 [DEBUG] [Thread-188482] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:40:06.775 [DEBUG] [Thread-188482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:40:06.776 [DEBUG] [Thread-188482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:40:06.779 [DEBUG] [Thread-188482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:40:06.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:40:06.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:40:06.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:40:06.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:40:06.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:40:06.815 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:40:06.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:40:06.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:40:06.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:40:06.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.360813 -999.00  +17.50  15.63     35   +2.00 1 1 1 1 1   888    0 16.23 17.70 ----- 15.6 15.6 183.2 24.8 24.2 -25.7 22.8 -26.1 22.5 -24.1 23.3 -25.2
2025-11-24T10:40:06.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:40:06.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:40:06.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.360813
2025-11-24T10:40:06.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:40:06.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:40:06.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:40:06.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:40:06.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:40:06.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:39:43', tmtdew=17.77, humidity=29.93, cloud=0.0, wind=19.92, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:39:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:40:06.818 [DEBUG] [Thread-188482] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:40:06.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:40:06.912 [DEBUG] [Thread-188485] [transport.py] [_log()] starting thread (client mode): 0xd319f880
2025-11-24T10:40:06.913 [DEBUG] [Thread-188485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:40:06.929 [DEBUG] [Thread-188485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:40:06.929 [INFO] [Thread-188485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:40:06.936 [DEBUG] [Thread-188485] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:40:06.936 [DEBUG] [Thread-188485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:40:06.937 [DEBUG] [Thread-188485] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:40:06.937 [DEBUG] [Thread-188485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:40:06.937 [DEBUG] [Thread-188485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:40:06.937 [DEBUG] [Thread-188485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:40:06.937 [DEBUG] [Thread-188485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:40:06.937 [DEBUG] [Thread-188485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:40:06.937 [DEBUG] [Thread-188485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:40:06.937 [DEBUG] [Thread-188485] [transport.py] [_log()] client lang: <none>
2025-11-24T10:40:06.937 [DEBUG] [Thread-188485] [transport.py] [_log()] server lang: <none>
2025-11-24T10:40:06.938 [DEBUG] [Thread-188485] [transport.py] [_log()] kex follows: False
2025-11-24T10:40:06.938 [DEBUG] [Thread-188485] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:40:06.938 [DEBUG] [Thread-188485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:40:06.938 [DEBUG] [Thread-188485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:40:06.938 [DEBUG] [Thread-188485] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:40:06.938 [DEBUG] [Thread-188485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:40:06.938 [DEBUG] [Thread-188485] [transport.py] [_log()] Compression: none
2025-11-24T10:40:06.938 [DEBUG] [Thread-188485] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:40:07.001 [DEBUG] [Thread-188485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:40:07.002 [DEBUG] [Thread-188485] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:40:07.002 [DEBUG] [Thread-188485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:40:07.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:40:07.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:40:07.060 [DEBUG] [Thread-188485] [transport.py] [_log()] userauth is OK
2025-11-24T10:40:07.060 [DEBUG] [Thread-188485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:40:07.060 [DEBUG] [Thread-188485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:40:07.060 [DEBUG] [Thread-188485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:40:07.061 [DEBUG] [Thread-188485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:40:07.081 [INFO] [Thread-188485] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:40:07.082 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:40:07.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:40:07.976 [DEBUG] [Thread-188485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:40:07.976 [DEBUG] [Thread-188485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:40:08.024 [DEBUG] [Thread-188485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:40:08.024 [DEBUG] [Thread-188485] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:40:08.033 [DEBUG] [Thread-188485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:40:08.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:40:08.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-11-24T10:40:08.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') -> 00000000
2025-11-24T10:40:08.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:40:08.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:40:08.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:40:08.070 [DEBUG] [Thread-188485] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:40:13.621 [DEBUG] [Thread-188487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:40:28.656 [DEBUG] [Thread-188488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:40:32.566 [DEBUG] [Thread-188489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:40:38.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:40:38.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:40:38.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-11-24T10:40:38.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 40, 15), 18.05, 29.42, 0.0, 19.5, 17.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:40:38.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:40:15
2025-11-24T10:40:39.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:40:39.213 [DEBUG] [Thread-188490] [transport.py] [_log()] starting thread (client mode): 0xd319fd00
2025-11-24T10:40:39.213 [DEBUG] [Thread-188490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:40:39.233 [DEBUG] [Thread-188490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:40:39.233 [INFO] [Thread-188490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] client lang: <none>
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] server lang: <none>
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] kex follows: False
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] Compression: none
2025-11-24T10:40:39.237 [DEBUG] [Thread-188490] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:40:39.255 [DEBUG] [Thread-188490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:40:39.256 [DEBUG] [Thread-188490] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:40:39.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:40:39.257 [DEBUG] [Thread-188490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:40:39.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:40:39.259 [DEBUG] [Thread-188490] [transport.py] [_log()] userauth is OK
2025-11-24T10:40:39.259 [DEBUG] [Thread-188490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:40:39.260 [DEBUG] [Thread-188490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:40:39.260 [DEBUG] [Thread-188490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:40:39.260 [DEBUG] [Thread-188490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:40:39.286 [INFO] [Thread-188490] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:40:39.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:40:39.919 [DEBUG] [Thread-188490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:40:39.919 [DEBUG] [Thread-188490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:40:39.919 [DEBUG] [Thread-188490] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:40:39.960 [DEBUG] [Thread-188490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:40:39.960 [DEBUG] [Thread-188490] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:40:39.962 [DEBUG] [Thread-188490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:40:39.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:40:39.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:40:39.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:40:39.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:40:39.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:40:39.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:40:39.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.361160 -999.00  +17.50  17.58     35   +2.20 1 1 1 1 1   888    0 16.36 18.72 ----- 17.6 17.6 184.8 24.1 24.2 -26.3 22.8 -28.8 22.6 -23.2 23.4 -26.0
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.361160
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:40:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:40:15', tmtdew=18.05, humidity=29.42, cloud=0.0, wind=19.5, temperature=17.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:40:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:40:39.983 [DEBUG] [Thread-188490] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:40:40.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:40:40.066 [DEBUG] [Thread-188493] [transport.py] [_log()] starting thread (client mode): 0xd319fbe0
2025-11-24T10:40:40.066 [DEBUG] [Thread-188493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:40:40.081 [DEBUG] [Thread-188493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:40:40.081 [INFO] [Thread-188493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] client lang: <none>
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] server lang: <none>
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] kex follows: False
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:40:40.089 [DEBUG] [Thread-188493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:40:40.090 [DEBUG] [Thread-188493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:40:40.090 [DEBUG] [Thread-188493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:40:40.090 [DEBUG] [Thread-188493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:40:40.090 [DEBUG] [Thread-188493] [transport.py] [_log()] Compression: none
2025-11-24T10:40:40.090 [DEBUG] [Thread-188493] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:40:40.146 [DEBUG] [Thread-188493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:40:40.146 [DEBUG] [Thread-188493] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:40:40.146 [DEBUG] [Thread-188493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:40:40.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:40:40.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:40:40.203 [DEBUG] [Thread-188493] [transport.py] [_log()] userauth is OK
2025-11-24T10:40:40.203 [DEBUG] [Thread-188493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:40:40.203 [DEBUG] [Thread-188493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:40:40.203 [DEBUG] [Thread-188493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:40:40.203 [DEBUG] [Thread-188493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:40:40.218 [INFO] [Thread-188493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:40:40.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:40:40.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:40:41.055 [DEBUG] [Thread-188493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:40:41.056 [DEBUG] [Thread-188493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:40:41.104 [DEBUG] [Thread-188493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:40:41.104 [DEBUG] [Thread-188493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:40:41.113 [DEBUG] [Thread-188493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:40:41.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:40:41.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')
2025-11-24T10:40:41.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:40:41.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:40:41.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:40:41.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:40:41.148 [DEBUG] [Thread-188493] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:40:43.683 [DEBUG] [Thread-188495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:40:58.726 [DEBUG] [Thread-188496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:41:11.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:41:11.160 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:41:11.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-11-24T10:41:12.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 40, 48), 19.0, 27.72, 0.0, 21.47, 18.03, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:41:12.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:40:48
2025-11-24T10:41:12.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:41:12.318 [DEBUG] [Thread-188497] [transport.py] [_log()] starting thread (client mode): 0xd3192fb0
2025-11-24T10:41:12.318 [DEBUG] [Thread-188497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:41:12.342 [DEBUG] [Thread-188497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:41:12.342 [INFO] [Thread-188497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:41:12.345 [DEBUG] [Thread-188497] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] client lang: <none>
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] server lang: <none>
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] kex follows: False
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] Compression: none
2025-11-24T10:41:12.346 [DEBUG] [Thread-188497] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:41:12.354 [DEBUG] [Thread-188497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:41:12.355 [DEBUG] [Thread-188497] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:41:12.355 [DEBUG] [Thread-188497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:41:12.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:41:12.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:41:12.356 [DEBUG] [Thread-188497] [transport.py] [_log()] userauth is OK
2025-11-24T10:41:12.357 [DEBUG] [Thread-188497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:41:12.357 [DEBUG] [Thread-188497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:41:12.357 [DEBUG] [Thread-188497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:41:12.357 [DEBUG] [Thread-188497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:41:12.380 [INFO] [Thread-188497] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:41:12.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:41:13.026 [DEBUG] [Thread-188497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:41:13.027 [DEBUG] [Thread-188497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:41:13.027 [DEBUG] [Thread-188497] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:41:13.068 [DEBUG] [Thread-188497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:41:13.068 [DEBUG] [Thread-188497] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:41:13.071 [DEBUG] [Thread-188497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:41:13.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:41:13.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:41:13.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:41:13.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:41:13.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:41:13.104 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:41:13.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:41:13.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:41:13.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:41:13.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.361508 -999.00  +17.70  16.89     33   +1.40 1 1 1 1 1   888    0 16.55 20.41 ----- 16.9 16.9 201.6 30.7 24.2 -26.0 23.0 -26.8 22.6 -23.5 23.5 -26.1
2025-11-24T10:41:13.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:41:13.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:41:13.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.361508
2025-11-24T10:41:13.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:41:13.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:41:13.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:41:13.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:41:13.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:41:13.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:40:48', tmtdew=19.0, humidity=27.72, cloud=0.0, wind=21.47, temperature=18.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:40:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:41:13.107 [DEBUG] [Thread-188497] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:41:13.192 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:41:13.204 [DEBUG] [Thread-188500] [transport.py] [_log()] starting thread (client mode): 0xd317ca90
2025-11-24T10:41:13.204 [DEBUG] [Thread-188500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:41:13.219 [DEBUG] [Thread-188500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:41:13.219 [INFO] [Thread-188500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:41:13.226 [DEBUG] [Thread-188500] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:41:13.226 [DEBUG] [Thread-188500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:41:13.226 [DEBUG] [Thread-188500] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:41:13.227 [DEBUG] [Thread-188500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:41:13.227 [DEBUG] [Thread-188500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:41:13.227 [DEBUG] [Thread-188500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:41:13.227 [DEBUG] [Thread-188500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:41:13.227 [DEBUG] [Thread-188500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:41:13.227 [DEBUG] [Thread-188500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:41:13.227 [DEBUG] [Thread-188500] [transport.py] [_log()] client lang: <none>
2025-11-24T10:41:13.227 [DEBUG] [Thread-188500] [transport.py] [_log()] server lang: <none>
2025-11-24T10:41:13.227 [DEBUG] [Thread-188500] [transport.py] [_log()] kex follows: False
2025-11-24T10:41:13.228 [DEBUG] [Thread-188500] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:41:13.228 [DEBUG] [Thread-188500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:41:13.228 [DEBUG] [Thread-188500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:41:13.228 [DEBUG] [Thread-188500] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:41:13.228 [DEBUG] [Thread-188500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:41:13.228 [DEBUG] [Thread-188500] [transport.py] [_log()] Compression: none
2025-11-24T10:41:13.228 [DEBUG] [Thread-188500] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:41:13.287 [DEBUG] [Thread-188500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:41:13.288 [DEBUG] [Thread-188500] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:41:13.288 [DEBUG] [Thread-188500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:41:13.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:41:13.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:41:13.348 [DEBUG] [Thread-188500] [transport.py] [_log()] userauth is OK
2025-11-24T10:41:13.348 [DEBUG] [Thread-188500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:41:13.357 [DEBUG] [Thread-188500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:41:13.357 [DEBUG] [Thread-188500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:41:13.357 [DEBUG] [Thread-188500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:41:13.378 [INFO] [Thread-188500] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:41:13.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:41:13.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:41:13.757 [DEBUG] [Thread-188502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:41:14.273 [DEBUG] [Thread-188500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:41:14.273 [DEBUG] [Thread-188500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:41:14.321 [DEBUG] [Thread-188500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:41:14.321 [DEBUG] [Thread-188500] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:41:14.329 [DEBUG] [Thread-188500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:41:14.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:41:14.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-11-24T10:41:14.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-11-24T10:41:14.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:41:14.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:41:14.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:41:14.362 [DEBUG] [Thread-188500] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:41:28.797 [DEBUG] [Thread-188503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:41:32.625 [DEBUG] [Thread-188504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:41:43.839 [DEBUG] [Thread-188505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:41:44.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:41:44.383 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:41:44.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-11-24T10:41:45.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 41, 20), 18.77, 28.09, 0.0, 20.08, 17.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:41:45.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:41:20
2025-11-24T10:41:45.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:41:45.534 [DEBUG] [Thread-188506] [transport.py] [_log()] starting thread (client mode): 0xd319cd90
2025-11-24T10:41:45.535 [DEBUG] [Thread-188506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:41:45.555 [DEBUG] [Thread-188506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:41:45.556 [INFO] [Thread-188506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] client lang: <none>
2025-11-24T10:41:45.559 [DEBUG] [Thread-188506] [transport.py] [_log()] server lang: <none>
2025-11-24T10:41:45.560 [DEBUG] [Thread-188506] [transport.py] [_log()] kex follows: False
2025-11-24T10:41:45.560 [DEBUG] [Thread-188506] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:41:45.560 [DEBUG] [Thread-188506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:41:45.560 [DEBUG] [Thread-188506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:41:45.560 [DEBUG] [Thread-188506] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:41:45.560 [DEBUG] [Thread-188506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:41:45.560 [DEBUG] [Thread-188506] [transport.py] [_log()] Compression: none
2025-11-24T10:41:45.560 [DEBUG] [Thread-188506] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:41:45.575 [DEBUG] [Thread-188506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:41:45.575 [DEBUG] [Thread-188506] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:41:45.575 [DEBUG] [Thread-188506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:41:45.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:41:45.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:41:45.576 [DEBUG] [Thread-188506] [transport.py] [_log()] userauth is OK
2025-11-24T10:41:45.576 [DEBUG] [Thread-188506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:41:45.576 [DEBUG] [Thread-188506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:41:45.576 [DEBUG] [Thread-188506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:41:45.576 [DEBUG] [Thread-188506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:41:45.591 [INFO] [Thread-188506] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:41:45.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:41:46.192 [DEBUG] [Thread-188506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:41:46.192 [DEBUG] [Thread-188506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:41:46.192 [DEBUG] [Thread-188506] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:41:46.233 [DEBUG] [Thread-188506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:41:46.233 [DEBUG] [Thread-188506] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:41:46.236 [DEBUG] [Thread-188506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:41:46.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:41:46.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:41:46.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:41:46.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:41:46.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:41:46.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:41:46.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:41:46.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:41:46.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:41:46.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.362202 -999.00  +18.10  14.31     33   +1.70 1 1 1 1 1   888    0 16.63 27.76 ----- 14.3 14.3 221.6 19.6 24.4 -24.8 23.2 -24.5 22.8 -23.3 23.5 -26.2
2025-11-24T10:41:46.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:41:46.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:41:46.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.362202
2025-11-24T10:41:46.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:41:46.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:41:46.255 [DEBUG] [Thread-188506] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:41:46.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:41:46.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:41:46.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:41:46.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:41:20', tmtdew=18.77, humidity=28.09, cloud=0.0, wind=20.08, temperature=17.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:41:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:41:46.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:41:46.343 [DEBUG] [Thread-188509] [transport.py] [_log()] starting thread (client mode): 0xd319f670
2025-11-24T10:41:46.344 [DEBUG] [Thread-188509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:41:46.358 [DEBUG] [Thread-188509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:41:46.358 [INFO] [Thread-188509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] client lang: <none>
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] server lang: <none>
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] kex follows: False
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] Compression: none
2025-11-24T10:41:46.366 [DEBUG] [Thread-188509] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:41:46.423 [DEBUG] [Thread-188509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:41:46.423 [DEBUG] [Thread-188509] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:41:46.423 [DEBUG] [Thread-188509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:41:46.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:41:46.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:41:46.479 [DEBUG] [Thread-188509] [transport.py] [_log()] userauth is OK
2025-11-24T10:41:46.479 [DEBUG] [Thread-188509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:41:46.479 [DEBUG] [Thread-188509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:41:46.479 [DEBUG] [Thread-188509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:41:46.479 [DEBUG] [Thread-188509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:41:46.495 [INFO] [Thread-188509] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:41:46.495 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:41:46.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:41:47.367 [DEBUG] [Thread-188509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:41:47.367 [DEBUG] [Thread-188509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:41:47.415 [DEBUG] [Thread-188509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:41:47.415 [DEBUG] [Thread-188509] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:41:47.424 [DEBUG] [Thread-188509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:41:47.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:41:47.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-11-24T10:41: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') -> 00000000
2025-11-24T10:41:47.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:41:47.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:41:47.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:41:47.455 [DEBUG] [Thread-188509] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:41:58.875 [DEBUG] [Thread-188511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:42:13.925 [DEBUG] [Thread-188512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:42:17.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:42:17.464 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:42:17.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-11-24T10:42:18.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 41, 52), 18.48, 28.18, 0.0, 23.68, 17.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:42:18.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:41:52
2025-11-24T10:42:18.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:42:18.529 [DEBUG] [Thread-188513] [transport.py] [_log()] starting thread (client mode): 0xd3192fe0
2025-11-24T10:42:18.529 [DEBUG] [Thread-188513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:42:18.550 [DEBUG] [Thread-188513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:42:18.550 [INFO] [Thread-188513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] client lang: <none>
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] server lang: <none>
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] kex follows: False
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:42:18.552 [DEBUG] [Thread-188513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:42:18.553 [DEBUG] [Thread-188513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:42:18.553 [DEBUG] [Thread-188513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:42:18.553 [DEBUG] [Thread-188513] [transport.py] [_log()] Compression: none
2025-11-24T10:42:18.553 [DEBUG] [Thread-188513] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:42:18.564 [DEBUG] [Thread-188513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:42:18.565 [DEBUG] [Thread-188513] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:42:18.565 [DEBUG] [Thread-188513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:42:18.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:42:18.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:42:18.567 [DEBUG] [Thread-188513] [transport.py] [_log()] userauth is OK
2025-11-24T10:42:18.567 [DEBUG] [Thread-188513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:42:18.567 [DEBUG] [Thread-188513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:42:18.568 [DEBUG] [Thread-188513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:42:18.568 [DEBUG] [Thread-188513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:42:18.586 [INFO] [Thread-188513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:42:18.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:42:19.186 [DEBUG] [Thread-188513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:42:19.186 [DEBUG] [Thread-188513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:42:19.186 [DEBUG] [Thread-188513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:42:19.227 [DEBUG] [Thread-188513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:42:19.227 [DEBUG] [Thread-188513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:42:19.230 [DEBUG] [Thread-188513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:42:19.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:42:19.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:42:19.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:42:19.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:42:19.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:42:19.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:42:19.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:42:19.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:42:19.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:42:19.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.362549 -999.00  +18.30   7.68     32   +1.30 1 1 1 1 1   888    0 16.85 29.62 ----- 7.7 7.7 182.6 25.8 24.3 -25.5 23.2 -24.4 22.6 -24.4 23.5 -26.7
2025-11-24T10:42:19.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:42:19.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:42:19.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.362549
2025-11-24T10:42:19.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:42:19.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:42:19.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:42:19.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:42:19.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:42:19.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:41:52', tmtdew=18.48, humidity=28.18, cloud=0.0, wind=23.68, temperature=17.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:42:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:42:19.258 [DEBUG] [Thread-188513] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:42:19.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:42:19.353 [DEBUG] [Thread-188516] [transport.py] [_log()] starting thread (client mode): 0xd319f5e0
2025-11-24T10:42:19.353 [DEBUG] [Thread-188516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:42:19.367 [DEBUG] [Thread-188516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:42:19.367 [INFO] [Thread-188516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:42:19.375 [DEBUG] [Thread-188516] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:42:19.375 [DEBUG] [Thread-188516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:42:19.375 [DEBUG] [Thread-188516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:42:19.375 [DEBUG] [Thread-188516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:42:19.375 [DEBUG] [Thread-188516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:42:19.375 [DEBUG] [Thread-188516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:42:19.375 [DEBUG] [Thread-188516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:42:19.376 [DEBUG] [Thread-188516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:42:19.376 [DEBUG] [Thread-188516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:42:19.376 [DEBUG] [Thread-188516] [transport.py] [_log()] client lang: <none>
2025-11-24T10:42:19.376 [DEBUG] [Thread-188516] [transport.py] [_log()] server lang: <none>
2025-11-24T10:42:19.376 [DEBUG] [Thread-188516] [transport.py] [_log()] kex follows: False
2025-11-24T10:42:19.376 [DEBUG] [Thread-188516] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:42:19.376 [DEBUG] [Thread-188516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:42:19.376 [DEBUG] [Thread-188516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:42:19.377 [DEBUG] [Thread-188516] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:42:19.377 [DEBUG] [Thread-188516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:42:19.377 [DEBUG] [Thread-188516] [transport.py] [_log()] Compression: none
2025-11-24T10:42:19.377 [DEBUG] [Thread-188516] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:42:19.437 [DEBUG] [Thread-188516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:42:19.438 [DEBUG] [Thread-188516] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:42:19.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:42:19.439 [DEBUG] [Thread-188516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:42:19.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:42:19.497 [DEBUG] [Thread-188516] [transport.py] [_log()] userauth is OK
2025-11-24T10:42:19.497 [DEBUG] [Thread-188516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:42:19.497 [DEBUG] [Thread-188516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:42:19.497 [DEBUG] [Thread-188516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:42:19.497 [DEBUG] [Thread-188516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:42:19.516 [INFO] [Thread-188516] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:42:19.516 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:42:19.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:42:20.422 [DEBUG] [Thread-188516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:42:20.422 [DEBUG] [Thread-188516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:42:20.470 [DEBUG] [Thread-188516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:42:20.470 [DEBUG] [Thread-188516] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:42:20.478 [DEBUG] [Thread-188516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:42:20.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:42:20.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:42:20.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:42:20.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:42:20.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:42:20.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:42:20.510 [DEBUG] [Thread-188516] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:42:28.955 [DEBUG] [Thread-188518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:42:32.784 [DEBUG] [Thread-188519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:42:43.994 [DEBUG] [Thread-188520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:42:50.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:42:50.509 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:42:50.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-11-24T10:42:51.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 42, 25), 18.54, 28.15, 0.0, 29.94, 17.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:42:51.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:42:25
2025-11-24T10:42:51.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:42:51.534 [DEBUG] [Thread-188521] [transport.py] [_log()] starting thread (client mode): 0xd317dcf0
2025-11-24T10:42:51.534 [DEBUG] [Thread-188521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:42:51.555 [DEBUG] [Thread-188521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:42:51.555 [INFO] [Thread-188521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:42:51.558 [DEBUG] [Thread-188521] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] client lang: <none>
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] server lang: <none>
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] kex follows: False
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] Compression: none
2025-11-24T10:42:51.559 [DEBUG] [Thread-188521] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:42:51.575 [DEBUG] [Thread-188521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:42:51.575 [DEBUG] [Thread-188521] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:42:51.575 [DEBUG] [Thread-188521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:42:51.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:42:51.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:42:51.576 [DEBUG] [Thread-188521] [transport.py] [_log()] userauth is OK
2025-11-24T10:42:51.576 [DEBUG] [Thread-188521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:42:51.576 [DEBUG] [Thread-188521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:42:51.576 [DEBUG] [Thread-188521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:42:51.576 [DEBUG] [Thread-188521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:42:51.585 [INFO] [Thread-188521] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:42:51.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:42:52.171 [DEBUG] [Thread-188521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:42:52.171 [DEBUG] [Thread-188521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:42:52.172 [DEBUG] [Thread-188521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:42:52.213 [DEBUG] [Thread-188521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:42:52.213 [DEBUG] [Thread-188521] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:42:52.216 [DEBUG] [Thread-188521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:42:52.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:42:52.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:42:52.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:42:52.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:42:52.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:42:52.250 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:42:52.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:42:52.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:42:52.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:42:52.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.362896 -999.00  +18.40  15.14     31   +1.10 1 1 1 1 1   888    0 16.89 37.34 ----- 15.1 15.1 219.4 23.5 24.4 -26.5 23.2 -27.4 22.7 -23.8 23.6 -25.2
2025-11-24T10:42:52.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:42:52.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:42:52.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.362896
2025-11-24T10:42:52.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:42:52.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:42:52.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:42:52.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:42:52.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:42:52.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:42:25', tmtdew=18.54, humidity=28.15, cloud=0.0, wind=29.94, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:42:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:42:52.253 [DEBUG] [Thread-188521] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:42:52.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:42:52.348 [DEBUG] [Thread-188524] [transport.py] [_log()] starting thread (client mode): 0xd317c3a0
2025-11-24T10:42:52.348 [DEBUG] [Thread-188524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:42:52.362 [DEBUG] [Thread-188524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:42:52.363 [INFO] [Thread-188524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:42:52.370 [DEBUG] [Thread-188524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] client lang: <none>
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] server lang: <none>
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] kex follows: False
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:42:52.371 [DEBUG] [Thread-188524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:42:52.372 [DEBUG] [Thread-188524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:42:52.372 [DEBUG] [Thread-188524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:42:52.372 [DEBUG] [Thread-188524] [transport.py] [_log()] Compression: none
2025-11-24T10:42:52.372 [DEBUG] [Thread-188524] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:42:52.428 [DEBUG] [Thread-188524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:42:52.429 [DEBUG] [Thread-188524] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:42:52.429 [DEBUG] [Thread-188524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:42:52.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:42:52.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:42:52.485 [DEBUG] [Thread-188524] [transport.py] [_log()] userauth is OK
2025-11-24T10:42:52.485 [DEBUG] [Thread-188524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:42:52.485 [DEBUG] [Thread-188524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:42:52.485 [DEBUG] [Thread-188524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:42:52.485 [DEBUG] [Thread-188524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:42:52.504 [INFO] [Thread-188524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:42:52.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:42:52.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:42:53.345 [DEBUG] [Thread-188524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:42:53.346 [DEBUG] [Thread-188524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:42:53.394 [DEBUG] [Thread-188524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:42:53.394 [DEBUG] [Thread-188524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:42:53.404 [DEBUG] [Thread-188524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:42:53.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:42:53.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-11-24T10:42:53.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:42:53.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:42:53.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:42:53.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:42:53.442 [DEBUG] [Thread-188524] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:42:59.028 [DEBUG] [Thread-188526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:43:14.064 [DEBUG] [Thread-188527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:43:23.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:43:23.436 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:43:23.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-11-24T10:43:24.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 42, 57), 18.71, 28.13, 0.0, 20.33, 17.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:43:24.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:42:57
2025-11-24T10:43:24.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:43:24.491 [DEBUG] [Thread-188528] [transport.py] [_log()] starting thread (client mode): 0xd317feb0
2025-11-24T10:43:24.491 [DEBUG] [Thread-188528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:43:24.502 [DEBUG] [Thread-188528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:43:24.502 [INFO] [Thread-188528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:43:24.503 [DEBUG] [Thread-188528] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:43:24.503 [DEBUG] [Thread-188528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:43:24.503 [DEBUG] [Thread-188528] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:43:24.503 [DEBUG] [Thread-188528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:43:24.503 [DEBUG] [Thread-188528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:43:24.503 [DEBUG] [Thread-188528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:43:24.503 [DEBUG] [Thread-188528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:43:24.503 [DEBUG] [Thread-188528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:43:24.503 [DEBUG] [Thread-188528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:43:24.503 [DEBUG] [Thread-188528] [transport.py] [_log()] client lang: <none>
2025-11-24T10:43:24.504 [DEBUG] [Thread-188528] [transport.py] [_log()] server lang: <none>
2025-11-24T10:43:24.504 [DEBUG] [Thread-188528] [transport.py] [_log()] kex follows: False
2025-11-24T10:43:24.504 [DEBUG] [Thread-188528] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:43:24.504 [DEBUG] [Thread-188528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:43:24.504 [DEBUG] [Thread-188528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:43:24.504 [DEBUG] [Thread-188528] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:43:24.504 [DEBUG] [Thread-188528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:43:24.504 [DEBUG] [Thread-188528] [transport.py] [_log()] Compression: none
2025-11-24T10:43:24.504 [DEBUG] [Thread-188528] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:43:24.513 [DEBUG] [Thread-188528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:43:24.513 [DEBUG] [Thread-188528] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:43:24.514 [DEBUG] [Thread-188528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:43:24.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:43:24.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:43:24.515 [DEBUG] [Thread-188528] [transport.py] [_log()] userauth is OK
2025-11-24T10:43:24.515 [DEBUG] [Thread-188528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:43:24.515 [DEBUG] [Thread-188528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:43:24.515 [DEBUG] [Thread-188528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:43:24.515 [DEBUG] [Thread-188528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:43:24.528 [INFO] [Thread-188528] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:43:24.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:43:25.105 [DEBUG] [Thread-188528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:43:25.105 [DEBUG] [Thread-188528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:43:25.105 [DEBUG] [Thread-188528] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:43:25.146 [DEBUG] [Thread-188528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:43:25.146 [DEBUG] [Thread-188528] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:43:25.147 [DEBUG] [Thread-188528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:43:25.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:43:25.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:43:25.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:43:25.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:43:25.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:43:25.167 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:43:25.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.363244 -999.00  +18.50   7.82     32   +1.50 1 1 1 1 1   888    0 17.51 43.29 ----- 7.8 7.8 245.0 25.2 24.6 -26.7 23.4 -24.8 22.7 -25.3 23.8 -24.8
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.363244
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:43:25.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:42:57', tmtdew=18.71, humidity=28.13, cloud=0.0, wind=20.33, temperature=17.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:43:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:43:25.175 [DEBUG] [Thread-188528] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:43:25.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:43:25.252 [DEBUG] [Thread-188531] [transport.py] [_log()] starting thread (client mode): 0xd3191990
2025-11-24T10:43:25.252 [DEBUG] [Thread-188531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:43:25.267 [DEBUG] [Thread-188531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:43:25.267 [INFO] [Thread-188531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:43:25.274 [DEBUG] [Thread-188531] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:43:25.274 [DEBUG] [Thread-188531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:43:25.274 [DEBUG] [Thread-188531] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:43:25.274 [DEBUG] [Thread-188531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:43:25.274 [DEBUG] [Thread-188531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] client lang: <none>
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] server lang: <none>
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] kex follows: False
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] Compression: none
2025-11-24T10:43:25.275 [DEBUG] [Thread-188531] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:43:25.332 [DEBUG] [Thread-188531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:43:25.332 [DEBUG] [Thread-188531] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:43:25.332 [DEBUG] [Thread-188531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:43:25.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:43:25.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:43:25.387 [DEBUG] [Thread-188531] [transport.py] [_log()] userauth is OK
2025-11-24T10:43:25.387 [DEBUG] [Thread-188531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:43:25.396 [DEBUG] [Thread-188531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:43:25.396 [DEBUG] [Thread-188531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:43:25.396 [DEBUG] [Thread-188531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:43:25.410 [INFO] [Thread-188531] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:43:25.410 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:43:25.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:43:26.258 [DEBUG] [Thread-188531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:43:26.258 [DEBUG] [Thread-188531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:43:26.307 [DEBUG] [Thread-188531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:43:26.307 [DEBUG] [Thread-188531] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:43:26.317 [DEBUG] [Thread-188531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:43:26.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:43:26.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-11-24T10:43: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') -> 00000000
2025-11-24T10:43:26.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:43:26.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:43:26.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:43:26.353 [DEBUG] [Thread-188531] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:43:29.097 [DEBUG] [Thread-188533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:43:32.985 [DEBUG] [Thread-188534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:43:44.144 [DEBUG] [Thread-188535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:43:56.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:43:56.376 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:43:56.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-11-24T10:43:57.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 43, 30), 18.76, 28.05, 0.0, 23.22, 17.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:43:57.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:43:30
2025-11-24T10:43:57.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:43:57.376 [DEBUG] [Thread-188536] [transport.py] [_log()] starting thread (client mode): 0xd3151420
2025-11-24T10:43:57.377 [DEBUG] [Thread-188536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:43:57.395 [DEBUG] [Thread-188536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:43:57.395 [INFO] [Thread-188536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] client lang: <none>
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] server lang: <none>
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] kex follows: False
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] Compression: none
2025-11-24T10:43:57.397 [DEBUG] [Thread-188536] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:43:57.408 [DEBUG] [Thread-188536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:43:57.408 [DEBUG] [Thread-188536] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:43:57.408 [DEBUG] [Thread-188536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:43:57.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:43:57.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:43:57.410 [DEBUG] [Thread-188536] [transport.py] [_log()] userauth is OK
2025-11-24T10:43:57.410 [DEBUG] [Thread-188536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:43:57.411 [DEBUG] [Thread-188536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:43:57.411 [DEBUG] [Thread-188536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:43:57.411 [DEBUG] [Thread-188536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:43:57.429 [INFO] [Thread-188536] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:43:57.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:43:58.012 [DEBUG] [Thread-188536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:43:58.020 [DEBUG] [Thread-188536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:43:58.021 [DEBUG] [Thread-188536] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:43:58.053 [DEBUG] [Thread-188536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:43:58.053 [DEBUG] [Thread-188536] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:43:58.055 [DEBUG] [Thread-188536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:43:58.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:43:58.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:43:58.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:43:58.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:43:58.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:43:58.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:43:58.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.363591 -999.00  +18.40  14.98     32   +1.70 1 1 1 1 1   888    0 17.30 48.16 ----- 15.0 15.0 165.4 20.0 24.4 -26.0 23.3 -24.7 22.8 -23.3 23.6 -24.1
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.363591
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:43:58.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:43:30', tmtdew=18.76, humidity=28.05, cloud=0.0, wind=23.22, temperature=17.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:43:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:43:58.064 [DEBUG] [Thread-188536] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:43:58.137 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:43:58.149 [DEBUG] [Thread-188539] [transport.py] [_log()] starting thread (client mode): 0xd31ce260
2025-11-24T10:43:58.149 [DEBUG] [Thread-188539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:43:58.167 [DEBUG] [Thread-188539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:43:58.167 [INFO] [Thread-188539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] client lang: <none>
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] server lang: <none>
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] kex follows: False
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] Compression: none
2025-11-24T10:43:58.175 [DEBUG] [Thread-188539] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:43:58.234 [DEBUG] [Thread-188539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:43:58.234 [DEBUG] [Thread-188539] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:43:58.234 [DEBUG] [Thread-188539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:43:58.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:43:58.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:43:58.292 [DEBUG] [Thread-188539] [transport.py] [_log()] userauth is OK
2025-11-24T10:43:58.292 [DEBUG] [Thread-188539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:43:58.292 [DEBUG] [Thread-188539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:43:58.292 [DEBUG] [Thread-188539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:43:58.292 [DEBUG] [Thread-188539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:43:58.316 [INFO] [Thread-188539] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:43:58.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:43:58.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:43:59.186 [DEBUG] [Thread-188541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:43:59.195 [DEBUG] [Thread-188539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:43:59.195 [DEBUG] [Thread-188539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:43:59.242 [DEBUG] [Thread-188539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:43:59.242 [DEBUG] [Thread-188539] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:43:59.251 [DEBUG] [Thread-188539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:43:59.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:43:59.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:43:59.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:43:59.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:43:59.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:43:59.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:43:59.288 [DEBUG] [Thread-188539] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:44:14.235 [DEBUG] [Thread-188542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:44:29.267 [DEBUG] [Thread-188543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:44:29.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:44:29.310 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:44:29.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-11-24T10:44:30.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 44, 2), 18.82, 27.95, 0.0, 22.13, 17.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:44:30.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:44:02
2025-11-24T10:44:30.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:44:30.380 [DEBUG] [Thread-188544] [transport.py] [_log()] starting thread (client mode): 0xd3153e80
2025-11-24T10:44:30.380 [DEBUG] [Thread-188544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:44:30.398 [DEBUG] [Thread-188544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:44:30.398 [INFO] [Thread-188544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] client lang: <none>
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] server lang: <none>
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] kex follows: False
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:44:30.400 [DEBUG] [Thread-188544] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:44:30.401 [DEBUG] [Thread-188544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:44:30.401 [DEBUG] [Thread-188544] [transport.py] [_log()] Compression: none
2025-11-24T10:44:30.401 [DEBUG] [Thread-188544] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:44:30.410 [DEBUG] [Thread-188544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:44:30.410 [DEBUG] [Thread-188544] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:44:30.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:44:30.411 [DEBUG] [Thread-188544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:44:30.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:44:30.413 [DEBUG] [Thread-188544] [transport.py] [_log()] userauth is OK
2025-11-24T10:44:30.413 [DEBUG] [Thread-188544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:44:30.414 [DEBUG] [Thread-188544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:44:30.414 [DEBUG] [Thread-188544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:44:30.414 [DEBUG] [Thread-188544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:44:30.440 [INFO] [Thread-188544] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:44:30.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:44:31.028 [DEBUG] [Thread-188544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:44:31.029 [DEBUG] [Thread-188544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:44:31.029 [DEBUG] [Thread-188544] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:44:31.069 [DEBUG] [Thread-188544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:44:31.069 [DEBUG] [Thread-188544] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:44:31.071 [DEBUG] [Thread-188544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:44:31.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:44:31.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:44:31.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:44:31.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:44:31.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:44:31.095 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:44:31.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:44:31.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:44:31.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:44:31.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.363938 -999.00  +18.30  24.86     33   +1.80 1 1 1 1 1   888    0 17.25 47.98 ----- 24.9 24.9 178.4 32.0 24.6 -26.0 23.2 -25.2 22.7 -26.9 23.6 -25.4
2025-11-24T10:44:31.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:44:31.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:44:31.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.363938
2025-11-24T10:44:31.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:44:31.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:44:31.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:44:31.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:44:31.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:44:31.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:44:02', tmtdew=18.82, humidity=27.95, cloud=0.0, wind=22.13, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:44:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:44:31.098 [DEBUG] [Thread-188544] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:44:31.185 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:44:31.198 [DEBUG] [Thread-188547] [transport.py] [_log()] starting thread (client mode): 0xd3150f40
2025-11-24T10:44:31.198 [DEBUG] [Thread-188547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:44:31.213 [DEBUG] [Thread-188547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:44:31.213 [INFO] [Thread-188547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] client lang: <none>
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] server lang: <none>
2025-11-24T10:44:31.220 [DEBUG] [Thread-188547] [transport.py] [_log()] kex follows: False
2025-11-24T10:44:31.221 [DEBUG] [Thread-188547] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:44:31.221 [DEBUG] [Thread-188547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:44:31.221 [DEBUG] [Thread-188547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:44:31.221 [DEBUG] [Thread-188547] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:44:31.221 [DEBUG] [Thread-188547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:44:31.221 [DEBUG] [Thread-188547] [transport.py] [_log()] Compression: none
2025-11-24T10:44:31.221 [DEBUG] [Thread-188547] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:44:31.279 [DEBUG] [Thread-188547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:44:31.279 [DEBUG] [Thread-188547] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:44:31.279 [DEBUG] [Thread-188547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:44:31.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:44:31.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:44:31.335 [DEBUG] [Thread-188547] [transport.py] [_log()] userauth is OK
2025-11-24T10:44:31.335 [DEBUG] [Thread-188547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:44:31.335 [DEBUG] [Thread-188547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:44:31.335 [DEBUG] [Thread-188547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:44:31.335 [DEBUG] [Thread-188547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:44:31.351 [INFO] [Thread-188547] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:44: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-11-24T10:44:31.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:44:32.235 [DEBUG] [Thread-188547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:44:32.235 [DEBUG] [Thread-188547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:44:32.283 [DEBUG] [Thread-188547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:44:32.283 [DEBUG] [Thread-188547] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:44:32.291 [DEBUG] [Thread-188547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:44:32.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:44:32.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:44:32.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:44:32.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:44:32.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:44:32.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:44:32.322 [DEBUG] [Thread-188547] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:44:33.044 [DEBUG] [Thread-188549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:44:44.305 [DEBUG] [Thread-188550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:44:59.342 [DEBUG] [Thread-188551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:45:02.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:45:02.346 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:45: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-11-24T10:45:03.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 44, 34), 18.89, 27.82, 0.0, 26.08, 18.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:45:03.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:44:34
2025-11-24T10:45:03.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:45:03.425 [DEBUG] [Thread-188552] [transport.py] [_log()] starting thread (client mode): 0xd3151810
2025-11-24T10:45:03.426 [DEBUG] [Thread-188552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:45:03.438 [DEBUG] [Thread-188552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:45:03.438 [INFO] [Thread-188552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:45:03.441 [DEBUG] [Thread-188552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:45:03.441 [DEBUG] [Thread-188552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:45:03.441 [DEBUG] [Thread-188552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] client lang: <none>
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] server lang: <none>
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] kex follows: False
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:45:03.442 [DEBUG] [Thread-188552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:45:03.443 [DEBUG] [Thread-188552] [transport.py] [_log()] Compression: none
2025-11-24T10:45:03.443 [DEBUG] [Thread-188552] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:45:03.466 [DEBUG] [Thread-188552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:45:03.468 [DEBUG] [Thread-188552] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:45:03.470 [DEBUG] [Thread-188552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:45:03.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:45:03.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:45:03.509 [DEBUG] [Thread-188552] [transport.py] [_log()] userauth is OK
2025-11-24T10:45:03.509 [DEBUG] [Thread-188552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:45:03.510 [DEBUG] [Thread-188552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:45:03.510 [DEBUG] [Thread-188552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:45:03.510 [DEBUG] [Thread-188552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:45:03.537 [INFO] [Thread-188552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:45:03.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:45:06.034 [DEBUG] [Thread-188552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:45:06.034 [DEBUG] [Thread-188552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:45:06.044 [DEBUG] [Thread-188552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:45:06.074 [DEBUG] [Thread-188552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:45:06.075 [DEBUG] [Thread-188552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:45:06.078 [DEBUG] [Thread-188552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:45:06.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:45:06.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:45:06.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:45:06.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:45:06.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:45:06.157 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:45:06.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:45:06.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:45:06.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:45:06.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.364285 -999.00  +17.70  18.23     33   +1.40 1 1 1 1 1   888    0 17.34 49.25 ----- 18.2 18.2 182.8 32.3 24.3 -27.4 22.8 -30.3 22.6 -23.6 23.5 -26.3
2025-11-24T10:45:06.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:45:06.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:45:06.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.364285
2025-11-24T10:45:06.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:45:06.164 [DEBUG] [Thread-188552] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:45:06.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:45:06.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:45:06.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:45:06.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:45:06.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:44:34', tmtdew=18.89, humidity=27.82, cloud=0.0, wind=26.08, temperature=18.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:44:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:45:06.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:45:06.255 [DEBUG] [Thread-188555] [transport.py] [_log()] starting thread (client mode): 0xd0710af0
2025-11-24T10:45:06.255 [DEBUG] [Thread-188555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:45:06.270 [DEBUG] [Thread-188555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:45:06.271 [INFO] [Thread-188555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:45:06.278 [DEBUG] [Thread-188555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:45:06.278 [DEBUG] [Thread-188555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:45:06.278 [DEBUG] [Thread-188555] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:45:06.278 [DEBUG] [Thread-188555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:45:06.278 [DEBUG] [Thread-188555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:45:06.278 [DEBUG] [Thread-188555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:45:06.278 [DEBUG] [Thread-188555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:45:06.278 [DEBUG] [Thread-188555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:45:06.278 [DEBUG] [Thread-188555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:45:06.278 [DEBUG] [Thread-188555] [transport.py] [_log()] client lang: <none>
2025-11-24T10:45:06.279 [DEBUG] [Thread-188555] [transport.py] [_log()] server lang: <none>
2025-11-24T10:45:06.279 [DEBUG] [Thread-188555] [transport.py] [_log()] kex follows: False
2025-11-24T10:45:06.279 [DEBUG] [Thread-188555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:45:06.279 [DEBUG] [Thread-188555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:45:06.279 [DEBUG] [Thread-188555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:45:06.279 [DEBUG] [Thread-188555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:45:06.279 [DEBUG] [Thread-188555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:45:06.279 [DEBUG] [Thread-188555] [transport.py] [_log()] Compression: none
2025-11-24T10:45:06.279 [DEBUG] [Thread-188555] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:45:06.337 [DEBUG] [Thread-188555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:45:06.338 [DEBUG] [Thread-188555] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:45:06.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:45:06.339 [DEBUG] [Thread-188555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:45:06.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:45:06.399 [DEBUG] [Thread-188555] [transport.py] [_log()] userauth is OK
2025-11-24T10:45:06.400 [DEBUG] [Thread-188555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:45:06.400 [DEBUG] [Thread-188555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:45:06.400 [DEBUG] [Thread-188555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:45:06.400 [DEBUG] [Thread-188555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:45:06.423 [INFO] [Thread-188555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:45:06.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:45:06.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:45:07.315 [DEBUG] [Thread-188555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:45:07.315 [DEBUG] [Thread-188555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:45:07.363 [DEBUG] [Thread-188555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:45:07.363 [DEBUG] [Thread-188555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:45:07.371 [DEBUG] [Thread-188555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:45:07.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:45:07.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:45:07.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-11-24T10:45:07.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:45:07.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:45:07.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:45:07.404 [DEBUG] [Thread-188555] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:45:14.374 [DEBUG] [Thread-188557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:45:29.435 [DEBUG] [Thread-188558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:45:33.092 [DEBUG] [Thread-188559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:45:37.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:45:37.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:45:37.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:45:38.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 45, 7), 18.96, 27.69, 0.0, 25.21, 18.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:45:38.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:45:07
2025-11-24T10:45:38.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:45:38.431 [DEBUG] [Thread-188560] [transport.py] [_log()] starting thread (client mode): 0xd3150fd0
2025-11-24T10:45:38.431 [DEBUG] [Thread-188560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:45:38.451 [DEBUG] [Thread-188560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:45:38.451 [INFO] [Thread-188560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:45:38.454 [DEBUG] [Thread-188560] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:45:38.454 [DEBUG] [Thread-188560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:45:38.454 [DEBUG] [Thread-188560] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:45:38.454 [DEBUG] [Thread-188560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:45:38.454 [DEBUG] [Thread-188560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:45:38.454 [DEBUG] [Thread-188560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:45:38.454 [DEBUG] [Thread-188560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:45:38.454 [DEBUG] [Thread-188560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:45:38.454 [DEBUG] [Thread-188560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:45:38.455 [DEBUG] [Thread-188560] [transport.py] [_log()] client lang: <none>
2025-11-24T10:45:38.455 [DEBUG] [Thread-188560] [transport.py] [_log()] server lang: <none>
2025-11-24T10:45:38.455 [DEBUG] [Thread-188560] [transport.py] [_log()] kex follows: False
2025-11-24T10:45:38.455 [DEBUG] [Thread-188560] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:45:38.455 [DEBUG] [Thread-188560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:45:38.455 [DEBUG] [Thread-188560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:45:38.455 [DEBUG] [Thread-188560] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:45:38.455 [DEBUG] [Thread-188560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:45:38.455 [DEBUG] [Thread-188560] [transport.py] [_log()] Compression: none
2025-11-24T10:45:38.455 [DEBUG] [Thread-188560] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:45:38.468 [DEBUG] [Thread-188560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:45:38.468 [DEBUG] [Thread-188560] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:45:38.468 [DEBUG] [Thread-188560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:45:38.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:45:38.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:45:38.512 [DEBUG] [Thread-188560] [transport.py] [_log()] userauth is OK
2025-11-24T10:45:38.512 [DEBUG] [Thread-188560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:45:38.512 [DEBUG] [Thread-188560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:45:38.512 [DEBUG] [Thread-188560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:45:38.512 [DEBUG] [Thread-188560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:45:38.527 [INFO] [Thread-188560] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:45:38.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:45:39.137 [DEBUG] [Thread-188560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:45:39.137 [DEBUG] [Thread-188560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:45:39.137 [DEBUG] [Thread-188560] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:45:39.178 [DEBUG] [Thread-188560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:45:39.178 [DEBUG] [Thread-188560] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:45:39.192 [DEBUG] [Thread-188560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:45:39.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:45:39.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:45:39.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:45:39.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:45:39.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:45:39.212 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:45:39.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:45:39.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:45:39.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:45:39.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.364285 -999.00  +17.70  18.23     33   +1.40 1 1 1 1 1   888    0 17.34 49.25 ----- 18.2 18.2 182.8 32.3 24.3 -27.4 22.8 -30.3 22.6 -23.6 23.5 -26.3
2025-11-24T10:45:39.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:45:39.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:45:39.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.364285
2025-11-24T10:45:39.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:45:39.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:45:39.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:45:39.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:45:39.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:45:39.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:45:07', tmtdew=18.96, humidity=27.69, cloud=0.0, wind=25.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-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:44:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:45:39.213 [DEBUG] [Thread-188560] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:45:39.286 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:45:39.297 [DEBUG] [Thread-188563] [transport.py] [_log()] starting thread (client mode): 0xd317e7a0
2025-11-24T10:45:39.297 [DEBUG] [Thread-188563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:45:39.312 [DEBUG] [Thread-188563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:45:39.312 [INFO] [Thread-188563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] client lang: <none>
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] server lang: <none>
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] kex follows: False
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] Compression: none
2025-11-24T10:45:39.320 [DEBUG] [Thread-188563] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:45:39.385 [DEBUG] [Thread-188563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:45:39.385 [DEBUG] [Thread-188563] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:45:39.385 [DEBUG] [Thread-188563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:45:39.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:45:39.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:45:39.443 [DEBUG] [Thread-188563] [transport.py] [_log()] userauth is OK
2025-11-24T10:45:39.443 [DEBUG] [Thread-188563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:45:39.443 [DEBUG] [Thread-188563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:45:39.443 [DEBUG] [Thread-188563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:45:39.443 [DEBUG] [Thread-188563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:45:39.464 [INFO] [Thread-188563] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:45:39.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:45:39.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:45:40.333 [DEBUG] [Thread-188563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:45:40.333 [DEBUG] [Thread-188563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:45:40.381 [DEBUG] [Thread-188563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:45:40.381 [DEBUG] [Thread-188563] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:45:40.390 [DEBUG] [Thread-188563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:45:40.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:45:40.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-11-24T10:45:40.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:45:40.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:45:40.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:45:40.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:45:40.422 [DEBUG] [Thread-188563] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:45:44.475 [DEBUG] [Thread-188565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:45:59.517 [DEBUG] [Thread-188566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:46:10.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:46:10.429 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:46:10.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:46:11.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 45, 39), 19.05, 27.51, 0.0, 17.93, 17.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:46:11.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:45:39
2025-11-24T10:46:11.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:46:11.593 [DEBUG] [Thread-188567] [transport.py] [_log()] starting thread (client mode): 0xd3150fd0
2025-11-24T10:46:11.593 [DEBUG] [Thread-188567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:46:11.613 [DEBUG] [Thread-188567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:46:11.613 [INFO] [Thread-188567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] client lang: <none>
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] server lang: <none>
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] kex follows: False
2025-11-24T10:46:11.616 [DEBUG] [Thread-188567] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:46:11.617 [DEBUG] [Thread-188567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:46:11.617 [DEBUG] [Thread-188567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:46:11.617 [DEBUG] [Thread-188567] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:46:11.617 [DEBUG] [Thread-188567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:46:11.617 [DEBUG] [Thread-188567] [transport.py] [_log()] Compression: none
2025-11-24T10:46:11.617 [DEBUG] [Thread-188567] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:46:11.632 [DEBUG] [Thread-188567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:46:11.633 [DEBUG] [Thread-188567] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:46:11.633 [DEBUG] [Thread-188567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:46:11.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:46:11.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:46:11.633 [DEBUG] [Thread-188567] [transport.py] [_log()] userauth is OK
2025-11-24T10:46:11.633 [DEBUG] [Thread-188567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:46:11.633 [DEBUG] [Thread-188567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:46:11.633 [DEBUG] [Thread-188567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:46:11.633 [DEBUG] [Thread-188567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:46:11.649 [INFO] [Thread-188567] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:46:11.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:46:12.277 [DEBUG] [Thread-188567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:46:12.277 [DEBUG] [Thread-188567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:46:12.277 [DEBUG] [Thread-188567] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:46:12.318 [DEBUG] [Thread-188567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:46:12.318 [DEBUG] [Thread-188567] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:46:12.320 [DEBUG] [Thread-188567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:46:12.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:46:12.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:46:12.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:46:12.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:46:12.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:46:12.337 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:46:12.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.364980 -999.00  +17.50  13.91     33   +1.40 1 1 1 1 1   888    0 17.23 46.49 ----- 13.9 13.9 146.4 25.6 24.4 -25.8 23.1 -25.7 22.7 -24.2 23.6 -26.6
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.364980
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:46:12.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:45:39', tmtdew=19.05, humidity=27.51, cloud=0.0, wind=17.93, temperature=17.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:45:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:46:12.338 [DEBUG] [Thread-188567] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:46:12.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:46:12.426 [DEBUG] [Thread-188570] [transport.py] [_log()] starting thread (client mode): 0xd31cdf90
2025-11-24T10:46:12.426 [DEBUG] [Thread-188570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:46:12.447 [DEBUG] [Thread-188570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:46:12.447 [INFO] [Thread-188570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] client lang: <none>
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] server lang: <none>
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] kex follows: False
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] Compression: none
2025-11-24T10:46:12.458 [DEBUG] [Thread-188570] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:46:12.518 [DEBUG] [Thread-188570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:46:12.518 [DEBUG] [Thread-188570] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:46:12.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:46:12.518 [DEBUG] [Thread-188570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:46:12.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:46:12.584 [DEBUG] [Thread-188570] [transport.py] [_log()] userauth is OK
2025-11-24T10:46:12.584 [DEBUG] [Thread-188570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:46:12.584 [DEBUG] [Thread-188570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:46:12.584 [DEBUG] [Thread-188570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:46:12.584 [DEBUG] [Thread-188570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:46:12.602 [INFO] [Thread-188570] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:46:12.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:46:12.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:46:13.478 [DEBUG] [Thread-188570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:46:13.478 [DEBUG] [Thread-188570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:46:13.526 [DEBUG] [Thread-188570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:46:13.526 [DEBUG] [Thread-188570] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:46:13.534 [DEBUG] [Thread-188570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:46:13.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:46:13.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-11-24T10:46:13.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-11-24T10:46:13.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:46:13.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:46:13.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:46:13.566 [DEBUG] [Thread-188570] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:46:14.551 [DEBUG] [Thread-188572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:46:29.589 [DEBUG] [Thread-188573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:46:33.318 [DEBUG] [Thread-188574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:46:43.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:46:43.588 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:46:43.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:46:44.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 46, 11), 18.65, 28.2, 0.0, 17.1, 17.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:46:44.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:46:11
2025-11-24T10:46:44.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:46:44.616 [DEBUG] [Thread-188575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:46:44.695 [DEBUG] [Thread-188576] [transport.py] [_log()] starting thread (client mode): 0xd31cce50
2025-11-24T10:46:44.695 [DEBUG] [Thread-188576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:46:44.713 [DEBUG] [Thread-188576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:46:44.713 [INFO] [Thread-188576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] client lang: <none>
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] server lang: <none>
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] kex follows: False
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] Compression: none
2025-11-24T10:46:44.717 [DEBUG] [Thread-188576] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:46:44.724 [DEBUG] [Thread-188576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:46:44.724 [DEBUG] [Thread-188576] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:46:44.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:46:44.725 [DEBUG] [Thread-188576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:46:44.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:46:44.725 [DEBUG] [Thread-188576] [transport.py] [_log()] userauth is OK
2025-11-24T10:46:44.725 [DEBUG] [Thread-188576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:46:44.725 [DEBUG] [Thread-188576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:46:44.725 [DEBUG] [Thread-188576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:46:44.725 [DEBUG] [Thread-188576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:46:44.740 [INFO] [Thread-188576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:46:44.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:46:45.358 [DEBUG] [Thread-188576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:46:45.358 [DEBUG] [Thread-188576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:46:45.359 [DEBUG] [Thread-188576] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:46:45.399 [DEBUG] [Thread-188576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:46:45.399 [DEBUG] [Thread-188576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:46:45.401 [DEBUG] [Thread-188576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:46:45.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:46:45.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:46:45.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:46:45.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:46:45.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:46:45.417 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:46:45.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.365327 -999.00  +17.40  18.57     33   +1.30 1 1 1 1 1   888    0 17.42 48.49 ----- 18.6 18.6 170.6 24.0 24.5 -26.6 23.2 -24.8 22.8 -23.0 23.6 -25.0
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.365327
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:46:45.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:46:45.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:46:11', tmtdew=18.65, humidity=28.2, cloud=0.0, wind=17.1, temperature=17.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:46:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:46:45.418 [DEBUG] [Thread-188576] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:46:45.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:46:45.505 [DEBUG] [Thread-188579] [transport.py] [_log()] starting thread (client mode): 0xd31b3d30
2025-11-24T10:46:45.505 [DEBUG] [Thread-188579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:46:45.520 [DEBUG] [Thread-188579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:46:45.520 [INFO] [Thread-188579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:46:45.527 [DEBUG] [Thread-188579] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:46:45.527 [DEBUG] [Thread-188579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] client lang: <none>
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] server lang: <none>
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] kex follows: False
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] Compression: none
2025-11-24T10:46:45.528 [DEBUG] [Thread-188579] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:46:45.586 [DEBUG] [Thread-188579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:46:45.586 [DEBUG] [Thread-188579] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:46:45.587 [DEBUG] [Thread-188579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:46:45.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:46:45.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:46:45.643 [DEBUG] [Thread-188579] [transport.py] [_log()] userauth is OK
2025-11-24T10:46:45.643 [DEBUG] [Thread-188579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:46:45.643 [DEBUG] [Thread-188579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:46:45.644 [DEBUG] [Thread-188579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:46:45.644 [DEBUG] [Thread-188579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:46:45.662 [INFO] [Thread-188579] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:46:45.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:46:45.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:46:46.545 [DEBUG] [Thread-188579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:46:46.545 [DEBUG] [Thread-188579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:46:46.593 [DEBUG] [Thread-188579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:46:46.593 [DEBUG] [Thread-188579] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:46:46.601 [DEBUG] [Thread-188579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:46:46.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:46:46.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-11-24T10:46:46.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-11-24T10:46:46.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:46:46.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:46:46.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:46:46.633 [DEBUG] [Thread-188579] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:46:59.657 [DEBUG] [Thread-188581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:47:14.716 [DEBUG] [Thread-188582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:47:16.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:47:16.656 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:47:16.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-11-24T10:47:17.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 46, 44), 18.44, 28.43, 0.0, 16.78, 17.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:47:17.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:46:44
2025-11-24T10:47:17.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:47:17.786 [DEBUG] [Thread-188583] [transport.py] [_log()] starting thread (client mode): 0xd3153be0
2025-11-24T10:47:17.786 [DEBUG] [Thread-188583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:47:17.805 [DEBUG] [Thread-188583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:47:17.805 [INFO] [Thread-188583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:47:17.808 [DEBUG] [Thread-188583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:47:17.808 [DEBUG] [Thread-188583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:47:17.808 [DEBUG] [Thread-188583] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:47:17.808 [DEBUG] [Thread-188583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:47:17.808 [DEBUG] [Thread-188583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] client lang: <none>
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] server lang: <none>
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] kex follows: False
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] Compression: none
2025-11-24T10:47:17.809 [DEBUG] [Thread-188583] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:47:17.826 [DEBUG] [Thread-188583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:47:17.826 [DEBUG] [Thread-188583] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:47:17.826 [DEBUG] [Thread-188583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:47:17.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:47:17.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:47:17.827 [DEBUG] [Thread-188583] [transport.py] [_log()] userauth is OK
2025-11-24T10:47:17.827 [DEBUG] [Thread-188583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:47:17.827 [DEBUG] [Thread-188583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:47:17.827 [DEBUG] [Thread-188583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:47:17.827 [DEBUG] [Thread-188583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:47:17.836 [INFO] [Thread-188583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:47:17.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:47:18.485 [DEBUG] [Thread-188583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:47:18.485 [DEBUG] [Thread-188583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:47:18.485 [DEBUG] [Thread-188583] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:47:18.526 [DEBUG] [Thread-188583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:47:18.526 [DEBUG] [Thread-188583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:47:18.528 [DEBUG] [Thread-188583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:47:18.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:47:18.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:47:18.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:47:18.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:47:18.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:47:18.548 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:47:18.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:47:18.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.365674 -999.00  +17.60  15.80     34   +1.60 1 1 1 1 1   888    0 17.34 41.65 ----- 15.8 15.8 153.0 24.7 24.6 -25.2 23.4 -24.5 22.7 -24.3 23.8 -24.9
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.365674
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:47:18.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:46:44', tmtdew=18.44, humidity=28.43, cloud=0.0, wind=16.78, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:46:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:47:18.550 [DEBUG] [Thread-188583] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:47:18.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:47:18.635 [DEBUG] [Thread-188586] [transport.py] [_log()] starting thread (client mode): 0xd31ccb20
2025-11-24T10:47:18.635 [DEBUG] [Thread-188586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:47:18.654 [DEBUG] [Thread-188586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:47:18.654 [INFO] [Thread-188586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:47:18.661 [DEBUG] [Thread-188586] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:47:18.661 [DEBUG] [Thread-188586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:47:18.661 [DEBUG] [Thread-188586] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:47:18.661 [DEBUG] [Thread-188586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:47:18.661 [DEBUG] [Thread-188586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:47:18.661 [DEBUG] [Thread-188586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:47:18.661 [DEBUG] [Thread-188586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:47:18.661 [DEBUG] [Thread-188586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] client lang: <none>
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] server lang: <none>
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] kex follows: False
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] Compression: none
2025-11-24T10:47:18.662 [DEBUG] [Thread-188586] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:47:18.718 [DEBUG] [Thread-188586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:47:18.718 [DEBUG] [Thread-188586] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:47:18.718 [DEBUG] [Thread-188586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:47:18.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:47:18.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:47:18.775 [DEBUG] [Thread-188586] [transport.py] [_log()] userauth is OK
2025-11-24T10:47:18.775 [DEBUG] [Thread-188586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:47:18.775 [DEBUG] [Thread-188586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:47:18.775 [DEBUG] [Thread-188586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:47:18.775 [DEBUG] [Thread-188586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:47:18.789 [INFO] [Thread-188586] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:47:18.789 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:47:18.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:47:19.658 [DEBUG] [Thread-188586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:47:19.667 [DEBUG] [Thread-188586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:47:19.705 [DEBUG] [Thread-188586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:47:19.706 [DEBUG] [Thread-188586] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:47:19.715 [DEBUG] [Thread-188586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:47:19.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:47:19.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-11-24T10:47:19.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-11-24T10:47:19.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:47:19.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:47:19.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:47:19.751 [DEBUG] [Thread-188586] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:47:29.747 [DEBUG] [Thread-188588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:47:33.472 [DEBUG] [Thread-188589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:47:44.785 [DEBUG] [Thread-188590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:47:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:47:49.772 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:47:49.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:47:50.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 47, 16), 18.52, 28.28, 0.0, 15.03, 17.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:47:50.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:47:16
2025-11-24T10:47:50.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:47:50.912 [DEBUG] [Thread-188591] [transport.py] [_log()] starting thread (client mode): 0xd31b0ac0
2025-11-24T10:47:50.912 [DEBUG] [Thread-188591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:47:50.931 [DEBUG] [Thread-188591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:47:50.932 [INFO] [Thread-188591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:47:50.934 [DEBUG] [Thread-188591] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] client lang: <none>
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] server lang: <none>
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] kex follows: False
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] Compression: none
2025-11-24T10:47:50.935 [DEBUG] [Thread-188591] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:47:50.950 [DEBUG] [Thread-188591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:47:50.950 [DEBUG] [Thread-188591] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:47:50.950 [DEBUG] [Thread-188591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:47:50.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:47:50.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:47:50.951 [DEBUG] [Thread-188591] [transport.py] [_log()] userauth is OK
2025-11-24T10:47:50.951 [DEBUG] [Thread-188591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:47:50.951 [DEBUG] [Thread-188591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:47:50.951 [DEBUG] [Thread-188591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:47:50.951 [DEBUG] [Thread-188591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:47:50.966 [INFO] [Thread-188591] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:47:50.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:47:51.628 [DEBUG] [Thread-188591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:47:51.628 [DEBUG] [Thread-188591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:47:51.628 [DEBUG] [Thread-188591] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:47:51.669 [DEBUG] [Thread-188591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:47:51.669 [DEBUG] [Thread-188591] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:47:51.671 [DEBUG] [Thread-188591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:47:51.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:47:51.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:47:51.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:47:51.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:47:51.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:47:51.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:47:51.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:47:51.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:47:51.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:47:51.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.366021 -999.00  +17.50  16.83     34   +1.50 1 1 1 1 1   888    0 17.28 40.69 ----- 16.8 16.8 177.6 21.6 24.7 -24.9 23.4 -25.1 22.9 -22.4 23.7 -24.1
2025-11-24T10:47:51.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:47:51.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:47:51.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.366021
2025-11-24T10:47:51.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:47:51.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:47:51.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:47:51.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:47:51.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:47:51.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:47:16', tmtdew=18.52, humidity=28.28, cloud=0.0, wind=15.03, temperature=17.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:47:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:47:51.689 [DEBUG] [Thread-188591] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:47: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-11-24T10:47:51.775 [DEBUG] [Thread-188594] [transport.py] [_log()] starting thread (client mode): 0xd31cd780
2025-11-24T10:47:51.776 [DEBUG] [Thread-188594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:47:51.791 [DEBUG] [Thread-188594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:47:51.791 [INFO] [Thread-188594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] client lang: <none>
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] server lang: <none>
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] kex follows: False
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:47:51.798 [DEBUG] [Thread-188594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:47:51.799 [DEBUG] [Thread-188594] [transport.py] [_log()] Compression: none
2025-11-24T10:47:51.799 [DEBUG] [Thread-188594] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:47:51.854 [DEBUG] [Thread-188594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:47:51.854 [DEBUG] [Thread-188594] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:47:51.854 [DEBUG] [Thread-188594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:47:51.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:47:51.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:47:51.912 [DEBUG] [Thread-188594] [transport.py] [_log()] userauth is OK
2025-11-24T10:47:51.912 [DEBUG] [Thread-188594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:47:51.912 [DEBUG] [Thread-188594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:47:51.912 [DEBUG] [Thread-188594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:47:51.912 [DEBUG] [Thread-188594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:47:51.934 [INFO] [Thread-188594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:47:51.935 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:47:51.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:47:52.821 [DEBUG] [Thread-188594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:47:52.821 [DEBUG] [Thread-188594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:47:52.868 [DEBUG] [Thread-188594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:47:52.868 [DEBUG] [Thread-188594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:47:52.878 [DEBUG] [Thread-188594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:47:52.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:47:52.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:47:52.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-11-24T10:47:52.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:47:52.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:47:52.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:47:52.913 [DEBUG] [Thread-188594] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:47:59.831 [DEBUG] [Thread-188596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:48:14.888 [DEBUG] [Thread-188597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:48:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:48:22.907 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:48:22.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-11-24T10:48:23.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 47, 49), 18.84, 28.04, 0.0, 31.02, 18.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:48:23.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:47:49
2025-11-24T10:48:23.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:48:23.990 [DEBUG] [Thread-188598] [transport.py] [_log()] starting thread (client mode): 0xd3190d30
2025-11-24T10:48:23.990 [DEBUG] [Thread-188598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:48:24.010 [DEBUG] [Thread-188598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:48:24.010 [INFO] [Thread-188598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] client lang: <none>
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] server lang: <none>
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] kex follows: False
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:48:24.014 [DEBUG] [Thread-188598] [transport.py] [_log()] Compression: none
2025-11-24T10:48:24.015 [DEBUG] [Thread-188598] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:48:24.035 [DEBUG] [Thread-188598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:48:24.035 [DEBUG] [Thread-188598] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:48:24.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:48:24.035 [DEBUG] [Thread-188598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:48:24.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:48:24.036 [DEBUG] [Thread-188598] [transport.py] [_log()] userauth is OK
2025-11-24T10:48:24.036 [DEBUG] [Thread-188598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:48:24.036 [DEBUG] [Thread-188598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:48:24.036 [DEBUG] [Thread-188598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:48:24.036 [DEBUG] [Thread-188598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:48:24.051 [INFO] [Thread-188598] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:48:24.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:48:24.660 [DEBUG] [Thread-188598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:48:24.660 [DEBUG] [Thread-188598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:48:24.660 [DEBUG] [Thread-188598] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:48:24.700 [DEBUG] [Thread-188598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:48:24.701 [DEBUG] [Thread-188598] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:48:24.704 [DEBUG] [Thread-188598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:48:24.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:48:24.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:48:24.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:48:24.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:48:24.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:48:24.728 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:48:24.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:48:24.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:48:24.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:48:24.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.366369 -999.00  +17.90  25.28     34   +1.80 1 1 1 1 1   888    0 16.99 40.33 ----- 25.3 25.3 162.0 31.9 24.6 -27.6 23.5 -25.4 22.8 -24.9 23.8 -25.5
2025-11-24T10:48:24.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:48:24.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:48:24.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.366369
2025-11-24T10:48:24.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:48:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:48:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:48:24.731 [DEBUG] [Thread-188598] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:48:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:48:24.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:48:24.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:47:49', tmtdew=18.84, humidity=28.04, cloud=0.0, wind=31.02, temperature=18.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:47:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:48:24.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:48:24.829 [DEBUG] [Thread-188601] [transport.py] [_log()] starting thread (client mode): 0xd073ba30
2025-11-24T10:48:24.830 [DEBUG] [Thread-188601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:48:24.849 [DEBUG] [Thread-188601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:48:24.849 [INFO] [Thread-188601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:48:24.860 [DEBUG] [Thread-188601] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] client lang: <none>
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] server lang: <none>
2025-11-24T10:48:24.861 [DEBUG] [Thread-188601] [transport.py] [_log()] kex follows: False
2025-11-24T10:48:24.862 [DEBUG] [Thread-188601] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:48:24.862 [DEBUG] [Thread-188601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:48:24.862 [DEBUG] [Thread-188601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:48:24.862 [DEBUG] [Thread-188601] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:48:24.862 [DEBUG] [Thread-188601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:48:24.862 [DEBUG] [Thread-188601] [transport.py] [_log()] Compression: none
2025-11-24T10:48:24.862 [DEBUG] [Thread-188601] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:48:24.922 [DEBUG] [Thread-188601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:48:24.923 [DEBUG] [Thread-188601] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:48:24.923 [DEBUG] [Thread-188601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:48:24.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:48:24.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:48:24.980 [DEBUG] [Thread-188601] [transport.py] [_log()] userauth is OK
2025-11-24T10:48:24.980 [DEBUG] [Thread-188601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:48:24.980 [DEBUG] [Thread-188601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:48:24.981 [DEBUG] [Thread-188601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:48:24.981 [DEBUG] [Thread-188601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:48:25.001 [INFO] [Thread-188601] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:48:25.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:48:25.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:48:25.882 [DEBUG] [Thread-188601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:48:25.882 [DEBUG] [Thread-188601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:48:25.930 [DEBUG] [Thread-188601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:48:25.930 [DEBUG] [Thread-188601] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:48:25.938 [DEBUG] [Thread-188601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:48:25.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:48:25.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-11-24T10:48:25.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-11-24T10:48:25.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:48:25.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:48:25.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:48:25.972 [DEBUG] [Thread-188601] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:48:29.925 [DEBUG] [Thread-188603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:48:33.524 [DEBUG] [Thread-188604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:48:44.975 [DEBUG] [Thread-188605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:48:55.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:48:55.992 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:48:55.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-11-24T10:48:56.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 48, 21), 19.03, 27.64, 0.0, 28.14, 18.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:48:56.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:48:21
2025-11-24T10:48:56.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:48:57.039 [DEBUG] [Thread-188606] [transport.py] [_log()] starting thread (client mode): 0xd31b0b20
2025-11-24T10:48:57.039 [DEBUG] [Thread-188606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:48:57.059 [DEBUG] [Thread-188606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:48:57.059 [INFO] [Thread-188606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:48:57.062 [DEBUG] [Thread-188606] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:48:57.062 [DEBUG] [Thread-188606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:48:57.062 [DEBUG] [Thread-188606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:48:57.062 [DEBUG] [Thread-188606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:48:57.062 [DEBUG] [Thread-188606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:48:57.062 [DEBUG] [Thread-188606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] client lang: <none>
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] server lang: <none>
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] kex follows: False
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] Compression: none
2025-11-24T10:48:57.063 [DEBUG] [Thread-188606] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:48:57.082 [DEBUG] [Thread-188606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:48:57.082 [DEBUG] [Thread-188606] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:48:57.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:48:57.084 [DEBUG] [Thread-188606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:48:57.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:48:57.086 [DEBUG] [Thread-188606] [transport.py] [_log()] userauth is OK
2025-11-24T10:48:57.087 [DEBUG] [Thread-188606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:48:57.087 [DEBUG] [Thread-188606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:48:57.087 [DEBUG] [Thread-188606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:48:57.087 [DEBUG] [Thread-188606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:48:57.109 [INFO] [Thread-188606] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:48:57.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:48:57.697 [DEBUG] [Thread-188606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:48:57.697 [DEBUG] [Thread-188606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:48:57.697 [DEBUG] [Thread-188606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:48:57.738 [DEBUG] [Thread-188606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:48:57.738 [DEBUG] [Thread-188606] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:48:57.741 [DEBUG] [Thread-188606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:48:57.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:48:57.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:48:57.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:48:57.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:48:57.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:48:57.764 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:48:57.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:48:57.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:48:57.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:48:57.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.366716 -999.00  +17.60  21.74     33   +1.50 1 1 1 1 1   888    0 17.05 38.84 ----- 21.7 21.7 161.4 29.1 24.5 -25.1 23.4 -24.3 22.7 -24.2 23.7 -25.7
2025-11-24T10:48:57.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:48:57.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:48:57.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.366716
2025-11-24T10:48:57.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:48:57.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:48:57.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:48:57.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:48:57.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:48:57.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:48:21', tmtdew=19.03, humidity=27.64, cloud=0.0, wind=28.14, temperature=18.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:48:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:48:57.767 [DEBUG] [Thread-188606] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:48:57.850 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:48:57.860 [DEBUG] [Thread-188609] [transport.py] [_log()] starting thread (client mode): 0xd0712410
2025-11-24T10:48:57.861 [DEBUG] [Thread-188609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:48:57.878 [DEBUG] [Thread-188609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:48:57.878 [INFO] [Thread-188609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:48:57.885 [DEBUG] [Thread-188609] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] client lang: <none>
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] server lang: <none>
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] kex follows: False
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] Compression: none
2025-11-24T10:48:57.886 [DEBUG] [Thread-188609] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:48:57.948 [DEBUG] [Thread-188609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:48:57.948 [DEBUG] [Thread-188609] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:48:57.949 [DEBUG] [Thread-188609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:48:57.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:48:57.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:48:58.004 [DEBUG] [Thread-188609] [transport.py] [_log()] userauth is OK
2025-11-24T10:48:58.004 [DEBUG] [Thread-188609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:48:58.005 [DEBUG] [Thread-188609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:48:58.005 [DEBUG] [Thread-188609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:48:58.005 [DEBUG] [Thread-188609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:48:58.024 [INFO] [Thread-188609] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:48:58.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:48:58.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:48:58.872 [DEBUG] [Thread-188609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:48:58.872 [DEBUG] [Thread-188609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:48:58.920 [DEBUG] [Thread-188609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:48:58.920 [DEBUG] [Thread-188609] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:48:58.928 [DEBUG] [Thread-188609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:48:58.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:48:58.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:48:58.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-11-24T10:48:58.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:48:58.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:48:58.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:48:58.960 [DEBUG] [Thread-188609] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:49:00.005 [DEBUG] [Thread-188611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:49:15.059 [DEBUG] [Thread-188612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:49:28.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:49:28.979 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:49:28.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-11-24T10:49:29.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 48, 54), 19.15, 27.12, 0.0, 29.48, 17.94, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:49:29.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:48:54
2025-11-24T10:49:29.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:49:30.030 [DEBUG] [Thread-188613] [transport.py] [_log()] starting thread (client mode): 0xd0712ef0
2025-11-24T10:49:30.030 [DEBUG] [Thread-188613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:49:30.052 [DEBUG] [Thread-188613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:49:30.052 [INFO] [Thread-188613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:49:30.056 [DEBUG] [Thread-188613] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:49:30.056 [DEBUG] [Thread-188613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:49:30.056 [DEBUG] [Thread-188613] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] client lang: <none>
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] server lang: <none>
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] kex follows: False
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:49:30.057 [DEBUG] [Thread-188613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:49:30.058 [DEBUG] [Thread-188613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:49:30.058 [DEBUG] [Thread-188613] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:49:30.058 [DEBUG] [Thread-188613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:49:30.058 [DEBUG] [Thread-188613] [transport.py] [_log()] Compression: none
2025-11-24T10:49:30.058 [DEBUG] [Thread-188613] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:49:30.075 [DEBUG] [Thread-188613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:49:30.076 [DEBUG] [Thread-188613] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:49:30.076 [DEBUG] [Thread-188613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:49:30.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:49:30.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:49:30.079 [DEBUG] [Thread-188613] [transport.py] [_log()] userauth is OK
2025-11-24T10:49:30.079 [DEBUG] [Thread-188613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:49:30.079 [DEBUG] [Thread-188613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:49:30.079 [DEBUG] [Thread-188613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:49:30.079 [DEBUG] [Thread-188613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:49:30.095 [DEBUG] [Thread-188615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:49:30.103 [INFO] [Thread-188613] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:49:30.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:49:30.726 [DEBUG] [Thread-188613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:49:30.726 [DEBUG] [Thread-188613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:49:30.726 [DEBUG] [Thread-188613] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:49:30.767 [DEBUG] [Thread-188613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:49:30.767 [DEBUG] [Thread-188613] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:49:30.769 [DEBUG] [Thread-188613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:49:30.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:49:30.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:49:30.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:49:30.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:49:30.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:49:30.791 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:49:30.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:49:30.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:49:30.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:49:30.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.367063 -999.00  +17.70  20.25     34   +1.60 1 1 1 1 1   888    0 17.26 39.93 ----- 20.2 20.2 162.5 25.4 24.5 -26.7 23.4 -24.3 22.8 -22.9 23.7 -25.0
2025-11-24T10:49:30.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:49:30.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:49:30.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.367063
2025-11-24T10:49:30.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:49:30.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:49:30.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:49:30.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:49:30.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:49:30.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:48:54', tmtdew=19.15, humidity=27.12, cloud=0.0, wind=29.48, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:48:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:49:30.792 [DEBUG] [Thread-188613] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:49:30.864 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:49:30.876 [DEBUG] [Thread-188617] [transport.py] [_log()] starting thread (client mode): 0xd31506a0
2025-11-24T10:49:30.876 [DEBUG] [Thread-188617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:49:30.891 [DEBUG] [Thread-188617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:49:30.891 [INFO] [Thread-188617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:49:30.898 [DEBUG] [Thread-188617] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:49:30.898 [DEBUG] [Thread-188617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:49:30.898 [DEBUG] [Thread-188617] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] client lang: <none>
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] server lang: <none>
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] kex follows: False
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] Compression: none
2025-11-24T10:49:30.899 [DEBUG] [Thread-188617] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:49:30.954 [DEBUG] [Thread-188617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:49:30.955 [DEBUG] [Thread-188617] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:49:30.955 [DEBUG] [Thread-188617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:49:30.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:49:30.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:49:31.011 [DEBUG] [Thread-188617] [transport.py] [_log()] userauth is OK
2025-11-24T10:49:31.011 [DEBUG] [Thread-188617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:49:31.011 [DEBUG] [Thread-188617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:49:31.011 [DEBUG] [Thread-188617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:49:31.011 [DEBUG] [Thread-188617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:49:31.028 [INFO] [Thread-188617] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:49:31.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:49:31.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:49:31.903 [DEBUG] [Thread-188617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:49:31.903 [DEBUG] [Thread-188617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:49:31.951 [DEBUG] [Thread-188617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:49:31.951 [DEBUG] [Thread-188617] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:49:31.960 [DEBUG] [Thread-188617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:49:31.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:49:31.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-11-24T10:49:31.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') -> 00000000
2025-11-24T10:49:31.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:49:31.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:49:31.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:49:31.997 [DEBUG] [Thread-188617] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:49:33.774 [DEBUG] [Thread-188619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:49:45.134 [DEBUG] [Thread-188620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:50:00.189 [DEBUG] [Thread-188621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:50:02.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:50:02.019 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:50:02.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:50:02.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 49, 58), 18.44, 28.47, 0.0, 20.79, 17.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:50:02.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:49:58
2025-11-24T10:50:02.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:50:03.006 [DEBUG] [Thread-188622] [transport.py] [_log()] starting thread (client mode): 0xc9b82da0
2025-11-24T10:50:03.006 [DEBUG] [Thread-188622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:50:03.027 [DEBUG] [Thread-188622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:50:03.027 [INFO] [Thread-188622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:50:03.029 [DEBUG] [Thread-188622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:50:03.029 [DEBUG] [Thread-188622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:50:03.029 [DEBUG] [Thread-188622] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:50:03.029 [DEBUG] [Thread-188622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:50:03.029 [DEBUG] [Thread-188622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:50:03.029 [DEBUG] [Thread-188622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] client lang: <none>
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] server lang: <none>
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] kex follows: False
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] Compression: none
2025-11-24T10:50:03.030 [DEBUG] [Thread-188622] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:50:03.044 [DEBUG] [Thread-188622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:50:03.045 [DEBUG] [Thread-188622] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:50:03.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:50:03.045 [DEBUG] [Thread-188622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:50:03.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:50:03.047 [DEBUG] [Thread-188622] [transport.py] [_log()] userauth is OK
2025-11-24T10:50:03.047 [DEBUG] [Thread-188622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:50:03.047 [DEBUG] [Thread-188622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:50:03.047 [DEBUG] [Thread-188622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:50:03.047 [DEBUG] [Thread-188622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:50:03.057 [INFO] [Thread-188622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:50:03.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:50:04.979 [DEBUG] [Thread-188622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:50:04.987 [DEBUG] [Thread-188622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:50:04.987 [DEBUG] [Thread-188622] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:50:05.020 [DEBUG] [Thread-188622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:50:05.020 [DEBUG] [Thread-188622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:50:05.022 [DEBUG] [Thread-188622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:50:05.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:50:05.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:50:05.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:50:05.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:50:05.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:50:05.041 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:50:05.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:50:05.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:50:05.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:50:05.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.367410 -999.00  +18.00  14.16     33   +1.60 1 1 1 1 1   888    0 17.13 41.03 ----- 14.2 14.2 176.8 20.3 24.6 -25.4 23.4 -24.6 22.8 -22.9 23.9 -25.2
2025-11-24T10:50:05.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:50:05.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:50:05.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.367410
2025-11-24T10:50:05.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:50:05.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:50:05.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:50:05.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:50:05.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:50:05.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:49:58', tmtdew=18.44, humidity=28.47, cloud=0.0, wind=20.79, temperature=17.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:49:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:50:05.043 [DEBUG] [Thread-188622] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:50:05.116 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:50:05.127 [DEBUG] [Thread-188625] [transport.py] [_log()] starting thread (client mode): 0xc9b82bf0
2025-11-24T10:50:05.127 [DEBUG] [Thread-188625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:50:05.142 [DEBUG] [Thread-188625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:50:05.142 [INFO] [Thread-188625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] client lang: <none>
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] server lang: <none>
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] kex follows: False
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] Compression: none
2025-11-24T10:50:05.150 [DEBUG] [Thread-188625] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:50:05.206 [DEBUG] [Thread-188625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:50:05.207 [DEBUG] [Thread-188625] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:50:05.207 [DEBUG] [Thread-188625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:50:05.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:50:05.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:50:05.263 [DEBUG] [Thread-188625] [transport.py] [_log()] userauth is OK
2025-11-24T10:50:05.263 [DEBUG] [Thread-188625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:50:05.263 [DEBUG] [Thread-188625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:50:05.263 [DEBUG] [Thread-188625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:50:05.263 [DEBUG] [Thread-188625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:50:05.278 [INFO] [Thread-188625] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:50:05.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:50:05.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:50:06.295 [DEBUG] [Thread-188625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:50:06.295 [DEBUG] [Thread-188625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:50:06.350 [DEBUG] [Thread-188625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:50:06.350 [DEBUG] [Thread-188625] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:50:06.358 [DEBUG] [Thread-188625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:50:06.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:50:06.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:50:06.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-11-24T10:50:06.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:50:06.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:50:06.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:50:06.398 [DEBUG] [Thread-188625] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:50:15.227 [DEBUG] [Thread-188627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:50:30.280 [DEBUG] [Thread-188628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:50:33.933 [DEBUG] [Thread-188629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:50:36.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:50:36.406 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:50:36.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-11-24T10:50:37.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 50, 31), 18.64, 28.12, 0.0, 22.04, 17.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:50:37.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:50:31
2025-11-24T10:50:37.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:50:37.467 [DEBUG] [Thread-188630] [transport.py] [_log()] starting thread (client mode): 0xd0713130
2025-11-24T10:50:37.467 [DEBUG] [Thread-188630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:50:37.473 [DEBUG] [Thread-188630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:50:37.474 [INFO] [Thread-188630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:50:37.477 [DEBUG] [Thread-188630] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:50:37.477 [DEBUG] [Thread-188630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:50:37.477 [DEBUG] [Thread-188630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:50:37.477 [DEBUG] [Thread-188630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] client lang: <none>
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] server lang: <none>
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] kex follows: False
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] Compression: none
2025-11-24T10:50:37.478 [DEBUG] [Thread-188630] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:50:37.492 [DEBUG] [Thread-188630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:50:37.493 [DEBUG] [Thread-188630] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:50:37.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:50:37.494 [DEBUG] [Thread-188630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:50:37.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:50:37.495 [DEBUG] [Thread-188630] [transport.py] [_log()] userauth is OK
2025-11-24T10:50:37.495 [DEBUG] [Thread-188630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:50:37.496 [DEBUG] [Thread-188630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:50:37.496 [DEBUG] [Thread-188630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:50:37.496 [DEBUG] [Thread-188630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:50:37.531 [INFO] [Thread-188630] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:50:37.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:50:38.156 [DEBUG] [Thread-188630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:50:38.156 [DEBUG] [Thread-188630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:50:38.157 [DEBUG] [Thread-188630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:50:38.197 [DEBUG] [Thread-188630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:50:38.197 [DEBUG] [Thread-188630] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:50:38.199 [DEBUG] [Thread-188630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:50:38.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:50:38.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:50:38.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:50:38.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:50:38.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:50:38.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:50:38.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:50:38.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:50:38.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:50:38.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.368105 -999.00  +18.00  18.37     32   +1.40 1 1 1 1 1   888    0 17.18 44.40 ----- 18.4 18.4 200.2 24.4 24.7 -26.6 23.4 -25.8 23.0 -23.0 23.9 -26.1
2025-11-24T10:50:38.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:50:38.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:50:38.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.368105
2025-11-24T10:50:38.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:50:38.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:50:38.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:50:38.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:50:38.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:50:38.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:50:31', tmtdew=18.64, humidity=28.12, cloud=0.0, wind=22.04, temperature=17.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:50:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:50:38.217 [DEBUG] [Thread-188630] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:50:38.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:50:38.303 [DEBUG] [Thread-188633] [transport.py] [_log()] starting thread (client mode): 0xd0701d20
2025-11-24T10:50:38.304 [DEBUG] [Thread-188633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:50:38.319 [DEBUG] [Thread-188633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:50:38.319 [INFO] [Thread-188633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] client lang: <none>
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] server lang: <none>
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] kex follows: False
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] Compression: none
2025-11-24T10:50:38.327 [DEBUG] [Thread-188633] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:50:38.386 [DEBUG] [Thread-188633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:50:38.386 [DEBUG] [Thread-188633] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:50:38.386 [DEBUG] [Thread-188633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:50:38.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:50:38.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:50:38.443 [DEBUG] [Thread-188633] [transport.py] [_log()] userauth is OK
2025-11-24T10:50:38.443 [DEBUG] [Thread-188633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:50:38.443 [DEBUG] [Thread-188633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:50:38.443 [DEBUG] [Thread-188633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:50:38.443 [DEBUG] [Thread-188633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:50:38.457 [INFO] [Thread-188633] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:50:38.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:50:38.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:50:39.329 [DEBUG] [Thread-188633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:50:39.329 [DEBUG] [Thread-188633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:50:39.379 [DEBUG] [Thread-188633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:50:39.379 [DEBUG] [Thread-188633] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:50:39.387 [DEBUG] [Thread-188633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:50:39.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:50:39.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-11-24T10:50:39.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-11-24T10:50:39.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:50:39.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:50:39.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:50:39.421 [DEBUG] [Thread-188633] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:50:45.314 [DEBUG] [Thread-188635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:51:00.363 [DEBUG] [Thread-188636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:51:09.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:51:09.441 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:51:09.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-11-24T10:51:10.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 51, 3), 18.65, 28.15, 0.0, 16.66, 17.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:51:10.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:51:03
2025-11-24T10:51:10.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:51:10.518 [DEBUG] [Thread-188637] [transport.py] [_log()] starting thread (client mode): 0xd0700970
2025-11-24T10:51:10.518 [DEBUG] [Thread-188637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:51:10.541 [DEBUG] [Thread-188637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:51:10.541 [INFO] [Thread-188637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] client lang: <none>
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] server lang: <none>
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] kex follows: False
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] Compression: none
2025-11-24T10:51:10.545 [DEBUG] [Thread-188637] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:51:10.564 [DEBUG] [Thread-188637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:51:10.564 [DEBUG] [Thread-188637] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:51:10.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:51:10.565 [DEBUG] [Thread-188637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:51:10.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:51:10.567 [DEBUG] [Thread-188637] [transport.py] [_log()] userauth is OK
2025-11-24T10:51:10.567 [DEBUG] [Thread-188637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:51:10.567 [DEBUG] [Thread-188637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:51:10.568 [DEBUG] [Thread-188637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:51:10.568 [DEBUG] [Thread-188637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:51:10.590 [INFO] [Thread-188637] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:51:10.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:51:11.235 [DEBUG] [Thread-188637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:51:11.235 [DEBUG] [Thread-188637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:51:11.236 [DEBUG] [Thread-188637] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:51:11.275 [DEBUG] [Thread-188637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:51:11.276 [DEBUG] [Thread-188637] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:51:11.279 [DEBUG] [Thread-188637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:51:11.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:51:11.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:51:11.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:51:11.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:51:11.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:51:11.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:51:11.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:51:11.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:51:11.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:51:11.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.368452 -999.00  +17.80  15.32     33   +1.50 1 1 1 1 1   888    0 17.20 42.31 ----- 15.3 15.3 199.8 19.7 24.8 -26.3 23.4 -29.5 23.0 -23.6 24.0 -24.8
2025-11-24T10:51:11.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:51:11.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:51:11.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.368452
2025-11-24T10:51:11.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:51:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:51:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:51:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:51:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:51:11.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:51:03', tmtdew=18.65, humidity=28.15, cloud=0.0, wind=16.66, temperature=17.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:50:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:51:11.316 [DEBUG] [Thread-188637] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:51:11.400 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:51:11.411 [DEBUG] [Thread-188640] [transport.py] [_log()] starting thread (client mode): 0xd31ccbe0
2025-11-24T10:51:11.411 [DEBUG] [Thread-188640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:51:11.427 [DEBUG] [Thread-188640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:51:11.427 [INFO] [Thread-188640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:51:11.438 [DEBUG] [Thread-188640] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:51:11.438 [DEBUG] [Thread-188640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:51:11.438 [DEBUG] [Thread-188640] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] client lang: <none>
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] server lang: <none>
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] kex follows: False
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] Compression: none
2025-11-24T10:51:11.439 [DEBUG] [Thread-188640] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:51:11.498 [DEBUG] [Thread-188640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:51:11.499 [DEBUG] [Thread-188640] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:51:11.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:51:11.500 [DEBUG] [Thread-188640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:51:11.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:51:11.561 [DEBUG] [Thread-188640] [transport.py] [_log()] userauth is OK
2025-11-24T10:51:11.561 [DEBUG] [Thread-188640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:51:11.561 [DEBUG] [Thread-188640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:51:11.561 [DEBUG] [Thread-188640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:51:11.561 [DEBUG] [Thread-188640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:51:11.581 [INFO] [Thread-188640] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:51:11.582 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:51:11.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:51:12.465 [DEBUG] [Thread-188640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:51:12.465 [DEBUG] [Thread-188640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:51:12.513 [DEBUG] [Thread-188640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:51:12.513 [DEBUG] [Thread-188640] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:51:12.522 [DEBUG] [Thread-188640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:51:12.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:51:12.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-11-24T10:51:12.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-11-24T10:51:12.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:51:12.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:51:12.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:51:12.554 [DEBUG] [Thread-188640] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:51:15.394 [DEBUG] [Thread-188642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:51:30.440 [DEBUG] [Thread-188643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:51:33.992 [DEBUG] [Thread-188644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:51:42.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:51:42.576 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:51:42.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:51:43.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 51, 36), 19.14, 27.54, 0.0, 21.58, 17.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:51:43.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:51:36
2025-11-24T10:51:43.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:51:43.652 [DEBUG] [Thread-188645] [transport.py] [_log()] starting thread (client mode): 0xd31cce20
2025-11-24T10:51:43.652 [DEBUG] [Thread-188645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:51:43.672 [DEBUG] [Thread-188645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:51:43.672 [INFO] [Thread-188645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:51:43.675 [DEBUG] [Thread-188645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:51:43.675 [DEBUG] [Thread-188645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:51:43.675 [DEBUG] [Thread-188645] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:51:43.675 [DEBUG] [Thread-188645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] client lang: <none>
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] server lang: <none>
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] kex follows: False
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] Compression: none
2025-11-24T10:51:43.676 [DEBUG] [Thread-188645] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:51:43.694 [DEBUG] [Thread-188645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:51:43.695 [DEBUG] [Thread-188645] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:51:43.696 [DEBUG] [Thread-188645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:51:43.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:51:43.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:51:43.698 [DEBUG] [Thread-188645] [transport.py] [_log()] userauth is OK
2025-11-24T10:51:43.698 [DEBUG] [Thread-188645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:51:43.698 [DEBUG] [Thread-188645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:51:43.698 [DEBUG] [Thread-188645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:51:43.698 [DEBUG] [Thread-188645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:51:43.724 [INFO] [Thread-188645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:51:43.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:51:44.372 [DEBUG] [Thread-188645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:51:44.372 [DEBUG] [Thread-188645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:51:44.372 [DEBUG] [Thread-188645] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:51:44.413 [DEBUG] [Thread-188645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:51:44.413 [DEBUG] [Thread-188645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:51:44.415 [DEBUG] [Thread-188645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:51:44.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:51:44.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:51:44.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:51:44.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:51:44.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:51:44.432 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:51:44.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:51:44.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:51:44.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.368799 -999.00  +17.90  18.22     33   +1.70 1 1 1 1 1   888    0 17.60 45.70 ----- 18.2 18.2 195.0 24.3 24.9 -25.1 23.6 -27.2 23.1 -22.9 24.1 -25.3
2025-11-24T10:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.368799
2025-11-24T10:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:51:44.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:51:36', tmtdew=19.14, humidity=27.54, cloud=0.0, wind=21.58, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:51:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:51:44.433 [DEBUG] [Thread-188645] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:51:44.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:51:44.517 [DEBUG] [Thread-188648] [transport.py] [_log()] starting thread (client mode): 0xd0700040
2025-11-24T10:51:44.517 [DEBUG] [Thread-188648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:51:44.532 [DEBUG] [Thread-188648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:51:44.532 [INFO] [Thread-188648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] client lang: <none>
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] server lang: <none>
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] kex follows: False
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] Compression: none
2025-11-24T10:51:44.540 [DEBUG] [Thread-188648] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:51:44.602 [DEBUG] [Thread-188648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:51:44.603 [DEBUG] [Thread-188648] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:51:44.603 [DEBUG] [Thread-188648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:51:44.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:51:44.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:51:44.659 [DEBUG] [Thread-188648] [transport.py] [_log()] userauth is OK
2025-11-24T10:51:44.659 [DEBUG] [Thread-188648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:51:44.659 [DEBUG] [Thread-188648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:51:44.659 [DEBUG] [Thread-188648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:51:44.659 [DEBUG] [Thread-188648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:51:44.673 [INFO] [Thread-188648] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:51:44.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:51:44.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:51:45.497 [DEBUG] [Thread-188650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:51:45.529 [DEBUG] [Thread-188648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:51:45.529 [DEBUG] [Thread-188648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:51:45.577 [DEBUG] [Thread-188648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:51:45.577 [DEBUG] [Thread-188648] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:51:45.586 [DEBUG] [Thread-188648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:51:45.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:51:45.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-11-24T10:51:45.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-11-24T10:51:45.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:51:45.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:51:45.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:51:45.621 [DEBUG] [Thread-188648] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:52:00.547 [DEBUG] [Thread-188651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:52:15.575 [DEBUG] [Thread-188652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:52:15.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:52:15.644 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:52:15.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-11-24T10:52:16.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 52, 8), 19.42, 27.06, 0.0, 22.87, 18.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:52:16.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:52:08
2025-11-24T10:52:16.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:52:16.734 [DEBUG] [Thread-188653] [transport.py] [_log()] starting thread (client mode): 0xd07027a0
2025-11-24T10:52:16.735 [DEBUG] [Thread-188653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:52:16.755 [DEBUG] [Thread-188653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:52:16.755 [INFO] [Thread-188653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:52:16.764 [DEBUG] [Thread-188653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] client lang: <none>
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] server lang: <none>
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] kex follows: False
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] Compression: none
2025-11-24T10:52:16.765 [DEBUG] [Thread-188653] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:52:16.783 [DEBUG] [Thread-188653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:52:16.783 [DEBUG] [Thread-188653] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:52:16.784 [DEBUG] [Thread-188653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:52:16.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:52:16.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:52:16.785 [DEBUG] [Thread-188653] [transport.py] [_log()] userauth is OK
2025-11-24T10:52:16.786 [DEBUG] [Thread-188653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:52:16.786 [DEBUG] [Thread-188653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:52:16.786 [DEBUG] [Thread-188653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:52:16.786 [DEBUG] [Thread-188653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:52:16.805 [INFO] [Thread-188653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:52:16.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:52:17.459 [DEBUG] [Thread-188653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:52:17.459 [DEBUG] [Thread-188653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:52:17.459 [DEBUG] [Thread-188653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:52:17.500 [DEBUG] [Thread-188653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:52:17.500 [DEBUG] [Thread-188653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:52:17.503 [DEBUG] [Thread-188653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:52:17.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:52:17.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:52:17.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:52:17.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:52:17.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:52:17.529 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:52:17.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:52:17.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:52:17.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:52:17.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.369146 -999.00  +17.90  17.42     32   +1.30 1 1 1 1 1   888    0 17.47 46.64 ----- 17.4 17.4 199.6 28.2 24.7 -26.5 23.4 -27.4 23.1 -24.5 23.9 -26.0
2025-11-24T10:52:17.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:52:17.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:52:17.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.369146
2025-11-24T10:52:17.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:52:17.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:52:17.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:52:17.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:52:17.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:52:17.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:52:08', tmtdew=19.42, humidity=27.06, cloud=0.0, wind=22.87, temperature=18.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:51:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:52:17.530 [DEBUG] [Thread-188653] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:52:17.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:52:17.611 [DEBUG] [Thread-188656] [transport.py] [_log()] starting thread (client mode): 0xd31cc400
2025-11-24T10:52:17.611 [DEBUG] [Thread-188656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:52:17.627 [DEBUG] [Thread-188656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:52:17.627 [INFO] [Thread-188656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:52:17.634 [DEBUG] [Thread-188656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:52:17.634 [DEBUG] [Thread-188656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:52:17.634 [DEBUG] [Thread-188656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] client lang: <none>
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] server lang: <none>
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] kex follows: False
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] Compression: none
2025-11-24T10:52:17.635 [DEBUG] [Thread-188656] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:52:17.695 [DEBUG] [Thread-188656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:52:17.695 [DEBUG] [Thread-188656] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:52:17.695 [DEBUG] [Thread-188656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:52:17.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:52:17.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:52:17.751 [DEBUG] [Thread-188656] [transport.py] [_log()] userauth is OK
2025-11-24T10:52:17.751 [DEBUG] [Thread-188656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:52:17.751 [DEBUG] [Thread-188656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:52:17.751 [DEBUG] [Thread-188656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:52:17.751 [DEBUG] [Thread-188656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:52:17.766 [INFO] [Thread-188656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:52:17.766 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:52:17.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:52:18.702 [DEBUG] [Thread-188656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:52:18.702 [DEBUG] [Thread-188656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:52:18.751 [DEBUG] [Thread-188656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:52:18.751 [DEBUG] [Thread-188656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:52:18.761 [DEBUG] [Thread-188656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:52:18.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:52:18.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:52:18.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:52:18.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:52:18.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:52:18.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:52:18.798 [DEBUG] [Thread-188656] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:52:30.608 [DEBUG] [Thread-188658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:52:34.187 [DEBUG] [Thread-188659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:52:45.660 [DEBUG] [Thread-188660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:52:48.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:52:48.828 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:52:48.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-11-24T10:52:49.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 52, 40), 19.52, 26.78, 0.0, 21.01, 18.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:52:49.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:52:40
2025-11-24T10:52:49.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:52:49.847 [DEBUG] [Thread-188661] [transport.py] [_log()] starting thread (client mode): 0xc9b81000
2025-11-24T10:52:49.847 [DEBUG] [Thread-188661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:52:49.876 [DEBUG] [Thread-188661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:52:49.877 [INFO] [Thread-188661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:52:49.879 [DEBUG] [Thread-188661] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:52:49.879 [DEBUG] [Thread-188661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:52:49.879 [DEBUG] [Thread-188661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] client lang: <none>
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] server lang: <none>
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] kex follows: False
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] Compression: none
2025-11-24T10:52:49.880 [DEBUG] [Thread-188661] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:52:49.893 [DEBUG] [Thread-188661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:52:49.894 [DEBUG] [Thread-188661] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:52:49.894 [DEBUG] [Thread-188661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:52:49.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:52:49.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:52:49.896 [DEBUG] [Thread-188661] [transport.py] [_log()] userauth is OK
2025-11-24T10:52:49.896 [DEBUG] [Thread-188661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:52:49.896 [DEBUG] [Thread-188661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:52:49.896 [DEBUG] [Thread-188661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:52:49.896 [DEBUG] [Thread-188661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:52:49.912 [INFO] [Thread-188661] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:52:49.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:52:50.537 [DEBUG] [Thread-188661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:52:50.537 [DEBUG] [Thread-188661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:52:50.537 [DEBUG] [Thread-188661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:52:50.578 [DEBUG] [Thread-188661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:52:50.578 [DEBUG] [Thread-188661] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:52:50.580 [DEBUG] [Thread-188661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:52:50.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:52:50.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:52:50.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:52:50.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:52:50.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:52:50.610 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:52:50.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.369494 -999.00  +17.80  13.64     33   +1.30 1 1 1 1 1   888    0 17.46 51.12 ----- 13.6 13.6 193.2 20.3 24.8 -25.6 23.4 -25.7 23.1 -24.6 24.0 -24.9
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.369494
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:52:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:52:40', tmtdew=19.52, humidity=26.78, cloud=0.0, wind=21.01, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:52:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:52:50.612 [DEBUG] [Thread-188661] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:52:50.684 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:52:50.696 [DEBUG] [Thread-188664] [transport.py] [_log()] starting thread (client mode): 0xc9b80c10
2025-11-24T10:52:50.696 [DEBUG] [Thread-188664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:52:50.710 [DEBUG] [Thread-188664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:52:50.710 [INFO] [Thread-188664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] client lang: <none>
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] server lang: <none>
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] kex follows: False
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] Compression: none
2025-11-24T10:52:50.718 [DEBUG] [Thread-188664] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:52:50.774 [DEBUG] [Thread-188664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:52:50.774 [DEBUG] [Thread-188664] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:52:50.774 [DEBUG] [Thread-188664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:52:50.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:52:50.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:52:50.835 [DEBUG] [Thread-188664] [transport.py] [_log()] userauth is OK
2025-11-24T10:52:50.835 [DEBUG] [Thread-188664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:52:50.835 [DEBUG] [Thread-188664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:52:50.835 [DEBUG] [Thread-188664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:52:50.835 [DEBUG] [Thread-188664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:52:50.849 [INFO] [Thread-188664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:52:50.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:52:50.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:52:51.712 [DEBUG] [Thread-188664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:52:51.712 [DEBUG] [Thread-188664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:52:51.760 [DEBUG] [Thread-188664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:52:51.760 [DEBUG] [Thread-188664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:52:51.768 [DEBUG] [Thread-188664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:52:51.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:52:51.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-11-24T10:52:51.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:52:51.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:52:51.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:52:51.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:52:51.800 [DEBUG] [Thread-188664] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:53:00.696 [DEBUG] [Thread-188666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:53:15.731 [DEBUG] [Thread-188667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:53:21.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:53:21.822 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:53:21.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-11-24T10:53:22.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 53, 13), 19.34, 27.06, 0.0, 21.12, 18.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:53:22.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:53:13
2025-11-24T10:53:22.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:53:22.870 [DEBUG] [Thread-188668] [transport.py] [_log()] starting thread (client mode): 0xc9b80730
2025-11-24T10:53:22.870 [DEBUG] [Thread-188668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:53:22.882 [DEBUG] [Thread-188668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:53:22.882 [INFO] [Thread-188668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] client lang: <none>
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] server lang: <none>
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] kex follows: False
2025-11-24T10:53:22.885 [DEBUG] [Thread-188668] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:53:22.886 [DEBUG] [Thread-188668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:53:22.886 [DEBUG] [Thread-188668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:53:22.886 [DEBUG] [Thread-188668] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:53:22.886 [DEBUG] [Thread-188668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:53:22.886 [DEBUG] [Thread-188668] [transport.py] [_log()] Compression: none
2025-11-24T10:53:22.886 [DEBUG] [Thread-188668] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:53:22.902 [DEBUG] [Thread-188668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:53:22.902 [DEBUG] [Thread-188668] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:53:22.903 [DEBUG] [Thread-188668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:53:22.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:53:22.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:53:22.906 [DEBUG] [Thread-188668] [transport.py] [_log()] userauth is OK
2025-11-24T10:53:22.906 [DEBUG] [Thread-188668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:53:22.906 [DEBUG] [Thread-188668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:53:22.906 [DEBUG] [Thread-188668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:53:22.906 [DEBUG] [Thread-188668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:53:22.932 [INFO] [Thread-188668] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:53:22.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:53:23.749 [DEBUG] [Thread-188668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:53:23.749 [DEBUG] [Thread-188668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:53:23.749 [DEBUG] [Thread-188668] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:53:23.790 [DEBUG] [Thread-188668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:53:23.790 [DEBUG] [Thread-188668] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:53:23.794 [DEBUG] [Thread-188668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:53:23.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:53:23.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:53:23.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:53:23.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:53:23.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:53:23.820 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:53:23.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:53:23.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:53:23.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:53:23.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.369841 -999.00  +18.30  20.97     31   +1.20 1 1 1 1 1   888    0 18.19 56.16 ----- 21.0 21.0 207.4 27.0 25.0 -25.2 23.6 -26.1 23.2 -23.3 24.1 -23.9
2025-11-24T10:53:23.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:53:23.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:53:23.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.369841
2025-11-24T10:53:23.829 [DEBUG] [Thread-188668] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:53:23.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:53:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:53:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:53:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:53:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:53:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:53:13', tmtdew=19.34, humidity=27.06, cloud=0.0, wind=21.12, temperature=18.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:52:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:53:23.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:53:23.927 [DEBUG] [Thread-188671] [transport.py] [_log()] starting thread (client mode): 0xd0703670
2025-11-24T10:53:23.927 [DEBUG] [Thread-188671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:53:23.942 [DEBUG] [Thread-188671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:53:23.942 [INFO] [Thread-188671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] client lang: <none>
2025-11-24T10:53:23.950 [DEBUG] [Thread-188671] [transport.py] [_log()] server lang: <none>
2025-11-24T10:53:23.951 [DEBUG] [Thread-188671] [transport.py] [_log()] kex follows: False
2025-11-24T10:53:23.951 [DEBUG] [Thread-188671] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:53:23.951 [DEBUG] [Thread-188671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:53:23.951 [DEBUG] [Thread-188671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:53:23.951 [DEBUG] [Thread-188671] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:53:23.951 [DEBUG] [Thread-188671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:53:23.951 [DEBUG] [Thread-188671] [transport.py] [_log()] Compression: none
2025-11-24T10:53:23.951 [DEBUG] [Thread-188671] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:53:24.008 [DEBUG] [Thread-188671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:53:24.008 [DEBUG] [Thread-188671] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:53:24.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:53:24.009 [DEBUG] [Thread-188671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:53:24.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:53:24.064 [DEBUG] [Thread-188671] [transport.py] [_log()] userauth is OK
2025-11-24T10:53:24.064 [DEBUG] [Thread-188671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:53:24.073 [DEBUG] [Thread-188671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:53:24.073 [DEBUG] [Thread-188671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:53:24.073 [DEBUG] [Thread-188671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:53:24.093 [INFO] [Thread-188671] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:53:24.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:53:24.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:53:25.012 [DEBUG] [Thread-188671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:53:25.012 [DEBUG] [Thread-188671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:53:25.060 [DEBUG] [Thread-188671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:53:25.060 [DEBUG] [Thread-188671] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:53:25.068 [DEBUG] [Thread-188671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:53:25.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:53:25.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-11-24T10:53:25.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-11-24T10:53:25.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:53:25.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:53:25.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:53:25.100 [DEBUG] [Thread-188671] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:53:30.763 [DEBUG] [Thread-188673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:53:34.249 [DEBUG] [Thread-188674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:53:45.824 [DEBUG] [Thread-188675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:53:55.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:53:55.122 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:53:55.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-11-24T10:53:55.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 53, 45), 20.6, 24.46, 0.0, 29.11, 18.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:53:55.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:53:45
2025-11-24T10:53:56.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:53:56.165 [DEBUG] [Thread-188676] [transport.py] [_log()] starting thread (client mode): 0xc9b80ca0
2025-11-24T10:53:56.165 [DEBUG] [Thread-188676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:53:56.180 [DEBUG] [Thread-188676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:53:56.180 [INFO] [Thread-188676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] client lang: <none>
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] server lang: <none>
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] kex follows: False
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] Compression: none
2025-11-24T10:53:56.184 [DEBUG] [Thread-188676] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:53:56.200 [DEBUG] [Thread-188676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:53:56.201 [DEBUG] [Thread-188676] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:53:56.202 [DEBUG] [Thread-188676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:53:56.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:53:56.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:53:56.203 [DEBUG] [Thread-188676] [transport.py] [_log()] userauth is OK
2025-11-24T10:53:56.204 [DEBUG] [Thread-188676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:53:56.204 [DEBUG] [Thread-188676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:53:56.204 [DEBUG] [Thread-188676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:53:56.204 [DEBUG] [Thread-188676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:53:56.223 [INFO] [Thread-188676] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:53:56.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:53:56.838 [DEBUG] [Thread-188676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:53:56.838 [DEBUG] [Thread-188676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:53:56.838 [DEBUG] [Thread-188676] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:53:56.878 [DEBUG] [Thread-188676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:53:56.878 [DEBUG] [Thread-188676] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:53:56.881 [DEBUG] [Thread-188676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:53:56.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:53:56.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:53:56.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:53:56.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:53:56.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:53:56.905 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:53:56.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:53:56.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:53:56.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:53:56.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.370188 -999.00  +18.80  19.23     30   +0.80 1 1 1 1 1   888    0 18.37 69.49 ----- 19.2 19.2 175.8 30.3 25.0 -26.2 23.7 -26.7 23.2 -24.5 24.2 -24.6
2025-11-24T10:53:56.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:53:56.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:53:56.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.370188
2025-11-24T10:53:56.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:53:56.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:53:56.907 [DEBUG] [Thread-188676] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:53:56.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:53:56.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:53:56.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:53:56.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:53:45', tmtdew=20.6, humidity=24.46, cloud=0.0, wind=29.11, temperature=18.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:53:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:53:56.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:53:57.001 [DEBUG] [Thread-188679] [transport.py] [_log()] starting thread (client mode): 0xc9b82560
2025-11-24T10:53:57.002 [DEBUG] [Thread-188679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:53:57.016 [DEBUG] [Thread-188679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:53:57.016 [INFO] [Thread-188679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:53:57.023 [DEBUG] [Thread-188679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:53:57.023 [DEBUG] [Thread-188679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:53:57.023 [DEBUG] [Thread-188679] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:53:57.023 [DEBUG] [Thread-188679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:53:57.023 [DEBUG] [Thread-188679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] client lang: <none>
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] server lang: <none>
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] kex follows: False
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] Compression: none
2025-11-24T10:53:57.024 [DEBUG] [Thread-188679] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:53:57.084 [DEBUG] [Thread-188679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:53:57.085 [DEBUG] [Thread-188679] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:53:57.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:53:57.086 [DEBUG] [Thread-188679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:53:57.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:53:57.140 [DEBUG] [Thread-188679] [transport.py] [_log()] userauth is OK
2025-11-24T10:53:57.140 [DEBUG] [Thread-188679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:53:57.140 [DEBUG] [Thread-188679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:53:57.141 [DEBUG] [Thread-188679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:53:57.141 [DEBUG] [Thread-188679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:53:57.160 [INFO] [Thread-188679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:53:57.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:53:57.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:53:58.037 [DEBUG] [Thread-188679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:53:58.037 [DEBUG] [Thread-188679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:53:58.085 [DEBUG] [Thread-188679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:53:58.085 [DEBUG] [Thread-188679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:53:58.093 [DEBUG] [Thread-188679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:53:58.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:53:58.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-11-24T10:53:58.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-11-24T10:53:58.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:53:58.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:53:58.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:53:58.125 [DEBUG] [Thread-188679] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:54:00.858 [DEBUG] [Thread-188681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:54:15.912 [DEBUG] [Thread-188682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:54:28.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:54:28.147 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:54:28.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-11-24T10:54:28.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 54, 18), 20.52, 24.59, 0.0, 25.2, 18.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:54:28.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:54:18
2025-11-24T10:54:28.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:54:29.152 [DEBUG] [Thread-188683] [transport.py] [_log()] starting thread (client mode): 0xd31ce200
2025-11-24T10:54:29.152 [DEBUG] [Thread-188683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:54:29.172 [DEBUG] [Thread-188683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:54:29.172 [INFO] [Thread-188683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] client lang: <none>
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] server lang: <none>
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] kex follows: False
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] Compression: none
2025-11-24T10:54:29.176 [DEBUG] [Thread-188683] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:54:29.191 [DEBUG] [Thread-188683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:54:29.191 [DEBUG] [Thread-188683] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:54:29.191 [DEBUG] [Thread-188683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:54:29.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:54:29.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:54:29.192 [DEBUG] [Thread-188683] [transport.py] [_log()] userauth is OK
2025-11-24T10:54:29.192 [DEBUG] [Thread-188683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:54:29.192 [DEBUG] [Thread-188683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:54:29.192 [DEBUG] [Thread-188683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:54:29.192 [DEBUG] [Thread-188683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:54:29.218 [INFO] [Thread-188683] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:54:29.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:54:30.001 [DEBUG] [Thread-188683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:54:30.001 [DEBUG] [Thread-188683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:54:30.001 [DEBUG] [Thread-188683] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:54:30.042 [DEBUG] [Thread-188683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:54:30.042 [DEBUG] [Thread-188683] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:54:30.044 [DEBUG] [Thread-188683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:54:30.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:54:30.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:54:30.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:54:30.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:54:30.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:54:30.063 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:54:30.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.370882 -999.00  +18.40  26.79     30   +0.70 1 1 1 1 1   888    0 18.48 80.15 ----- 26.8 26.8 182.2 35.4 24.8 -27.3 23.4 -26.5 23.1 -25.8 23.9 -25.5
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.370882
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:54:30.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:54:18', tmtdew=20.52, humidity=24.59, cloud=0.0, wind=25.2, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:54:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:54:30.064 [DEBUG] [Thread-188683] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:54:30.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:54:30.149 [DEBUG] [Thread-188686] [transport.py] [_log()] starting thread (client mode): 0xc9b82770
2025-11-24T10:54:30.149 [DEBUG] [Thread-188686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:54:30.164 [DEBUG] [Thread-188686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:54:30.164 [INFO] [Thread-188686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] client lang: <none>
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] server lang: <none>
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] kex follows: False
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:54:30.172 [DEBUG] [Thread-188686] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:54:30.173 [DEBUG] [Thread-188686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:54:30.173 [DEBUG] [Thread-188686] [transport.py] [_log()] Compression: none
2025-11-24T10:54:30.173 [DEBUG] [Thread-188686] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:54:30.237 [DEBUG] [Thread-188686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:54:30.238 [DEBUG] [Thread-188686] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:54:30.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:54:30.238 [DEBUG] [Thread-188686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:54:30.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:54:30.295 [DEBUG] [Thread-188686] [transport.py] [_log()] userauth is OK
2025-11-24T10:54:30.295 [DEBUG] [Thread-188686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:54:30.295 [DEBUG] [Thread-188686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:54:30.295 [DEBUG] [Thread-188686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:54:30.295 [DEBUG] [Thread-188686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:54:30.309 [INFO] [Thread-188686] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:54:30.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:54:30.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:54:30.942 [DEBUG] [Thread-188688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:54:31.212 [DEBUG] [Thread-188686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:54:31.212 [DEBUG] [Thread-188686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:54:31.260 [DEBUG] [Thread-188686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:54:31.260 [DEBUG] [Thread-188686] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:54:31.271 [DEBUG] [Thread-188686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:54:31.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:54:31.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:54:31.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-11-24T10:54:31.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:54:31.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:54:31.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:54:31.302 [DEBUG] [Thread-188686] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:54:34.445 [DEBUG] [Thread-188689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:54:45.993 [DEBUG] [Thread-188690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:55:01.026 [DEBUG] [Thread-188691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:55:01.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:55:01.324 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:55:01.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-11-24T10:55:02.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 54, 50), 20.71, 24.6, 0.0, 29.08, 18.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:55:02.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:54:50
2025-11-24T10:55:02.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:55:02.417 [DEBUG] [Thread-188692] [transport.py] [_log()] starting thread (client mode): 0xd073b820
2025-11-24T10:55:02.417 [DEBUG] [Thread-188692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:55:02.438 [DEBUG] [Thread-188692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:55:02.438 [INFO] [Thread-188692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:55:02.441 [DEBUG] [Thread-188692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:55:02.441 [DEBUG] [Thread-188692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:55:02.441 [DEBUG] [Thread-188692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:55:02.441 [DEBUG] [Thread-188692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] client lang: <none>
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] server lang: <none>
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] kex follows: False
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] Compression: none
2025-11-24T10:55:02.442 [DEBUG] [Thread-188692] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:55:02.450 [DEBUG] [Thread-188692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:55:02.451 [DEBUG] [Thread-188692] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:55:02.451 [DEBUG] [Thread-188692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:55:02.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:55:02.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:55:02.453 [DEBUG] [Thread-188692] [transport.py] [_log()] userauth is OK
2025-11-24T10:55:02.453 [DEBUG] [Thread-188692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:55:02.453 [DEBUG] [Thread-188692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:55:02.453 [DEBUG] [Thread-188692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:55:02.453 [DEBUG] [Thread-188692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:55:02.477 [INFO] [Thread-188692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:55:02.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:55:03.409 [DEBUG] [Thread-188692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:55:03.409 [DEBUG] [Thread-188692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:55:03.409 [DEBUG] [Thread-188692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:55:03.450 [DEBUG] [Thread-188692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:55:03.450 [DEBUG] [Thread-188692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:55:03.453 [DEBUG] [Thread-188692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:55:03.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:55:03.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:55:03.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:55:03.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:55:03.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:55:03.517 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:55:03.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:55:03.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:55:03.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:55:03.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.371230 -999.00  +18.10  22.71     30   +0.60 1 1 1 1 1   888    0 18.71 81.70 ----- 22.7 22.7 176.4 27.4 24.6 -27.1 23.1 -29.6 23.0 -25.0 23.9 -26.5
2025-11-24T10:55:03.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:55:03.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:55:03.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.371230
2025-11-24T10:55:03.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:55:03.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:55:03.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:55:03.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:55:03.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:55:03.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:54:50', tmtdew=20.71, humidity=24.6, cloud=0.0, wind=29.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-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:54:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:55:03.521 [DEBUG] [Thread-188692] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:55:03.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:55:03.619 [DEBUG] [Thread-188695] [transport.py] [_log()] starting thread (client mode): 0xd0710c40
2025-11-24T10:55:03.619 [DEBUG] [Thread-188695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:55:03.633 [DEBUG] [Thread-188695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:55:03.633 [INFO] [Thread-188695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] client lang: <none>
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] server lang: <none>
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] kex follows: False
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] Compression: none
2025-11-24T10:55:03.641 [DEBUG] [Thread-188695] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:55:03.700 [DEBUG] [Thread-188695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:55:03.701 [DEBUG] [Thread-188695] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:55:03.701 [DEBUG] [Thread-188695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:55:03.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:55:03.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:55:03.756 [DEBUG] [Thread-188695] [transport.py] [_log()] userauth is OK
2025-11-24T10:55:03.756 [DEBUG] [Thread-188695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:55:03.757 [DEBUG] [Thread-188695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:55:03.757 [DEBUG] [Thread-188695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:55:03.757 [DEBUG] [Thread-188695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:55:03.776 [INFO] [Thread-188695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:55:03.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:55:03.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:55:04.696 [DEBUG] [Thread-188695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:55:04.696 [DEBUG] [Thread-188695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:55:04.744 [DEBUG] [Thread-188695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:55:04.744 [DEBUG] [Thread-188695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:55:04.752 [DEBUG] [Thread-188695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:55:04.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:55:04.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-11-24T10:55:04.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-11-24T10:55:04.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:55:04.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:55:04.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:55:04.784 [DEBUG] [Thread-188695] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:55:16.058 [DEBUG] [Thread-188697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:55:31.105 [DEBUG] [Thread-188698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:55:34.560 [DEBUG] [Thread-188699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:55:34.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:55:34.807 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:55:34.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:55:35.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 55, 23), 20.94, 24.22, 0.0, 26.29, 18.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:55:35.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:55:23
2025-11-24T10:55:35.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:55:35.937 [DEBUG] [Thread-188700] [transport.py] [_log()] starting thread (client mode): 0xd0738850
2025-11-24T10:55:35.937 [DEBUG] [Thread-188700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:55:35.953 [DEBUG] [Thread-188700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:55:35.954 [INFO] [Thread-188700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] client lang: <none>
2025-11-24T10:55:35.957 [DEBUG] [Thread-188700] [transport.py] [_log()] server lang: <none>
2025-11-24T10:55:35.958 [DEBUG] [Thread-188700] [transport.py] [_log()] kex follows: False
2025-11-24T10:55:35.958 [DEBUG] [Thread-188700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:55:35.958 [DEBUG] [Thread-188700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:55:35.958 [DEBUG] [Thread-188700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:55:35.958 [DEBUG] [Thread-188700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:55:35.958 [DEBUG] [Thread-188700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:55:35.958 [DEBUG] [Thread-188700] [transport.py] [_log()] Compression: none
2025-11-24T10:55:35.958 [DEBUG] [Thread-188700] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:55:35.984 [DEBUG] [Thread-188700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:55:35.985 [DEBUG] [Thread-188700] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:55:35.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:55:35.986 [DEBUG] [Thread-188700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:55:35.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:55:35.988 [DEBUG] [Thread-188700] [transport.py] [_log()] userauth is OK
2025-11-24T10:55:35.988 [DEBUG] [Thread-188700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:55:35.988 [DEBUG] [Thread-188700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:55:35.988 [DEBUG] [Thread-188700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:55:35.988 [DEBUG] [Thread-188700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:55:36.011 [INFO] [Thread-188700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:55:36.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:55:36.658 [DEBUG] [Thread-188700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:55:36.658 [DEBUG] [Thread-188700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:55:36.659 [DEBUG] [Thread-188700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:55:36.699 [DEBUG] [Thread-188700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:55:36.699 [DEBUG] [Thread-188700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:55:36.701 [DEBUG] [Thread-188700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:55:36.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:55:36.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:55:36.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:55:36.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:55:36.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:55:36.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:55:36.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:55:36.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:55:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:55:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.371577 -999.00  +17.70  18.57     31   +0.40 1 1 1 1 1   888    0 19.10 97.01 ----- 18.6 18.6 184.6 34.5 24.4 -27.1 23.0 -30.9 22.9 -25.9 23.9 -26.5
2025-11-24T10:55:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:55:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:55:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.371577
2025-11-24T10:55:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:55:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:55:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:55:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:55:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:55:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:55:23', tmtdew=20.94, humidity=24.22, cloud=0.0, wind=26.29, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:55:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:55:36.731 [DEBUG] [Thread-188700] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:55:36.804 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:55:36.815 [DEBUG] [Thread-188703] [transport.py] [_log()] starting thread (client mode): 0xd0703f70
2025-11-24T10:55:36.816 [DEBUG] [Thread-188703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:55:36.834 [DEBUG] [Thread-188703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:55:36.834 [INFO] [Thread-188703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] client lang: <none>
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] server lang: <none>
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] kex follows: False
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] Compression: none
2025-11-24T10:55:36.842 [DEBUG] [Thread-188703] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:55:36.898 [DEBUG] [Thread-188703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:55:36.899 [DEBUG] [Thread-188703] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:55:36.899 [DEBUG] [Thread-188703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:55:36.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:55:36.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:55:36.956 [DEBUG] [Thread-188703] [transport.py] [_log()] userauth is OK
2025-11-24T10:55:36.956 [DEBUG] [Thread-188703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:55:36.956 [DEBUG] [Thread-188703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:55:36.956 [DEBUG] [Thread-188703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:55:36.956 [DEBUG] [Thread-188703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:55:36.970 [INFO] [Thread-188703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:55:36.970 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:55:36.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:55:37.807 [DEBUG] [Thread-188703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:55:37.807 [DEBUG] [Thread-188703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:55:37.855 [DEBUG] [Thread-188703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:55:37.855 [DEBUG] [Thread-188703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:55:37.864 [DEBUG] [Thread-188703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:55:37.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:55:37.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-11-24T10:55:37.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:55:37.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:55:37.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:55:37.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:55:37.910 [DEBUG] [Thread-188703] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:55:46.136 [DEBUG] [Thread-188705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:56:01.169 [DEBUG] [Thread-188706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:56:07.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:56:07.902 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:56:07.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:56:08.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 55, 55), 20.55, 24.72, 0.0, 24.0, 17.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:56:08.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:55:55
2025-11-24T10:56:08.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:56:08.983 [DEBUG] [Thread-188707] [transport.py] [_log()] starting thread (client mode): 0xd31b2dd0
2025-11-24T10:56:08.983 [DEBUG] [Thread-188707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:56:09.003 [DEBUG] [Thread-188707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:56:09.003 [INFO] [Thread-188707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] client lang: <none>
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] server lang: <none>
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] kex follows: False
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:56:09.006 [DEBUG] [Thread-188707] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:56:09.007 [DEBUG] [Thread-188707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:56:09.007 [DEBUG] [Thread-188707] [transport.py] [_log()] Compression: none
2025-11-24T10:56:09.007 [DEBUG] [Thread-188707] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:56:09.026 [DEBUG] [Thread-188707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:56:09.027 [DEBUG] [Thread-188707] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:56:09.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:56:09.028 [DEBUG] [Thread-188707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:56:09.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:56:09.069 [DEBUG] [Thread-188707] [transport.py] [_log()] userauth is OK
2025-11-24T10:56:09.069 [DEBUG] [Thread-188707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:56:09.069 [DEBUG] [Thread-188707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:56:09.069 [DEBUG] [Thread-188707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:56:09.069 [DEBUG] [Thread-188707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:56:09.107 [INFO] [Thread-188707] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:56:09.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:56:09.736 [DEBUG] [Thread-188707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:56:09.736 [DEBUG] [Thread-188707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:56:09.736 [DEBUG] [Thread-188707] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:56:09.777 [DEBUG] [Thread-188707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:56:09.777 [DEBUG] [Thread-188707] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:56:09.779 [DEBUG] [Thread-188707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:56:09.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:56:09.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:56:09.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:56:09.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:56:09.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:56:09.795 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:56:09.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.371924 -999.00  +18.00  15.46     31   +0.80 1 1 1 1 1   888    0 19.01 89.62 ----- 15.5 15.5 198.5 20.9 24.6 -25.1 23.3 -24.6 23.0 -23.8 23.9 -25.7
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.371924
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:56:09.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:55:55', tmtdew=20.55, humidity=24.72, cloud=0.0, wind=24.0, temperature=17.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:55:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:56:09.796 [DEBUG] [Thread-188707] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:56:09.868 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:56:09.879 [DEBUG] [Thread-188710] [transport.py] [_log()] starting thread (client mode): 0xd31b0dc0
2025-11-24T10:56:09.879 [DEBUG] [Thread-188710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:56:09.894 [DEBUG] [Thread-188710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:56:09.894 [INFO] [Thread-188710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:56:09.901 [DEBUG] [Thread-188710] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:56:09.901 [DEBUG] [Thread-188710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:56:09.901 [DEBUG] [Thread-188710] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:56:09.901 [DEBUG] [Thread-188710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:56:09.901 [DEBUG] [Thread-188710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:56:09.901 [DEBUG] [Thread-188710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:56:09.901 [DEBUG] [Thread-188710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:56:09.901 [DEBUG] [Thread-188710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:56:09.901 [DEBUG] [Thread-188710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:56:09.901 [DEBUG] [Thread-188710] [transport.py] [_log()] client lang: <none>
2025-11-24T10:56:09.902 [DEBUG] [Thread-188710] [transport.py] [_log()] server lang: <none>
2025-11-24T10:56:09.902 [DEBUG] [Thread-188710] [transport.py] [_log()] kex follows: False
2025-11-24T10:56:09.902 [DEBUG] [Thread-188710] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:56:09.902 [DEBUG] [Thread-188710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:56:09.902 [DEBUG] [Thread-188710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:56:09.902 [DEBUG] [Thread-188710] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:56:09.902 [DEBUG] [Thread-188710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:56:09.902 [DEBUG] [Thread-188710] [transport.py] [_log()] Compression: none
2025-11-24T10:56:09.902 [DEBUG] [Thread-188710] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:56:09.959 [DEBUG] [Thread-188710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:56:09.959 [DEBUG] [Thread-188710] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:56:09.959 [DEBUG] [Thread-188710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:56:09.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:56:09.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:56:10.016 [DEBUG] [Thread-188710] [transport.py] [_log()] userauth is OK
2025-11-24T10:56:10.017 [DEBUG] [Thread-188710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:56:10.017 [DEBUG] [Thread-188710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:56:10.017 [DEBUG] [Thread-188710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:56:10.017 [DEBUG] [Thread-188710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:56:10.030 [INFO] [Thread-188710] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:56:10.031 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:56:10.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:56:10.893 [DEBUG] [Thread-188710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:56:10.893 [DEBUG] [Thread-188710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:56:10.942 [DEBUG] [Thread-188710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:56:10.943 [DEBUG] [Thread-188710] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:56:10.953 [DEBUG] [Thread-188710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:56:10.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:56:10.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-11-24T10:56:10.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-11-24T10:56:10.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:56:10.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:56:10.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:56:10.990 [DEBUG] [Thread-188710] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:56:16.198 [DEBUG] [Thread-188712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:56:31.247 [DEBUG] [Thread-188713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:56:34.598 [DEBUG] [Thread-188714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:56:41.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:56:41.013 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:56:41.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-11-24T10:56:41.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 56, 27), 20.02, 25.53, 0.0, 21.3, 17.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:56:41.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:56:27
2025-11-24T10:56:41.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:56:42.032 [DEBUG] [Thread-188715] [transport.py] [_log()] starting thread (client mode): 0xd31cd1e0
2025-11-24T10:56:42.032 [DEBUG] [Thread-188715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:56:42.047 [DEBUG] [Thread-188715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:56:42.047 [INFO] [Thread-188715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:56:42.050 [DEBUG] [Thread-188715] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:56:42.050 [DEBUG] [Thread-188715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:56:42.050 [DEBUG] [Thread-188715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:56:42.050 [DEBUG] [Thread-188715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:56:42.050 [DEBUG] [Thread-188715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:56:42.050 [DEBUG] [Thread-188715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:56:42.050 [DEBUG] [Thread-188715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:56:42.050 [DEBUG] [Thread-188715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:56:42.050 [DEBUG] [Thread-188715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:56:42.050 [DEBUG] [Thread-188715] [transport.py] [_log()] client lang: <none>
2025-11-24T10:56:42.051 [DEBUG] [Thread-188715] [transport.py] [_log()] server lang: <none>
2025-11-24T10:56:42.051 [DEBUG] [Thread-188715] [transport.py] [_log()] kex follows: False
2025-11-24T10:56:42.051 [DEBUG] [Thread-188715] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:56:42.051 [DEBUG] [Thread-188715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:56:42.051 [DEBUG] [Thread-188715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:56:42.051 [DEBUG] [Thread-188715] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:56:42.051 [DEBUG] [Thread-188715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:56:42.051 [DEBUG] [Thread-188715] [transport.py] [_log()] Compression: none
2025-11-24T10:56:42.051 [DEBUG] [Thread-188715] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:56:42.068 [DEBUG] [Thread-188715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:56:42.068 [DEBUG] [Thread-188715] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:56:42.068 [DEBUG] [Thread-188715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:56:42.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:56:42.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:56:42.070 [DEBUG] [Thread-188715] [transport.py] [_log()] userauth is OK
2025-11-24T10:56:42.070 [DEBUG] [Thread-188715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:56:42.070 [DEBUG] [Thread-188715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:56:42.070 [DEBUG] [Thread-188715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:56:42.070 [DEBUG] [Thread-188715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:56:42.099 [INFO] [Thread-188715] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:56:42.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:56:42.770 [DEBUG] [Thread-188715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:56:42.771 [DEBUG] [Thread-188715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:56:42.771 [DEBUG] [Thread-188715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:56:42.811 [DEBUG] [Thread-188715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:56:42.811 [DEBUG] [Thread-188715] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:56:42.814 [DEBUG] [Thread-188715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:56:42.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:56:42.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:56:42.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:56:42.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:56:42.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:56:42.835 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:56:42.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:56:42.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:56:42.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:56:42.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.372271 -999.00  +18.50  23.57     31   +1.10 1 1 1 1 1   888    0 19.05 89.87 ----- 23.6 23.6 190.0 25.1 24.7 -27.7 23.4 -27.2 23.1 -23.3 24.0 -24.3
2025-11-24T10:56:42.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:56:42.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:56:42.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.372271
2025-11-24T10:56:42.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:56:42.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:56:42.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:56:42.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:56:42.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:56:42.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:56:27', tmtdew=20.02, humidity=25.53, cloud=0.0, wind=21.3, temperature=17.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:56:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:56:42.838 [DEBUG] [Thread-188715] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:56:42.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:56:42.941 [DEBUG] [Thread-188718] [transport.py] [_log()] starting thread (client mode): 0xd0700520
2025-11-24T10:56:42.941 [DEBUG] [Thread-188718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:56:42.958 [DEBUG] [Thread-188718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:56:42.958 [INFO] [Thread-188718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:56:42.966 [DEBUG] [Thread-188718] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:56:42.966 [DEBUG] [Thread-188718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:56:42.966 [DEBUG] [Thread-188718] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:56:42.967 [DEBUG] [Thread-188718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:56:42.967 [DEBUG] [Thread-188718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:56:42.967 [DEBUG] [Thread-188718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:56:42.967 [DEBUG] [Thread-188718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:56:42.967 [DEBUG] [Thread-188718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:56:42.967 [DEBUG] [Thread-188718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:56:42.967 [DEBUG] [Thread-188718] [transport.py] [_log()] client lang: <none>
2025-11-24T10:56:42.967 [DEBUG] [Thread-188718] [transport.py] [_log()] server lang: <none>
2025-11-24T10:56:42.967 [DEBUG] [Thread-188718] [transport.py] [_log()] kex follows: False
2025-11-24T10:56:42.967 [DEBUG] [Thread-188718] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:56:42.968 [DEBUG] [Thread-188718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:56:42.968 [DEBUG] [Thread-188718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:56:42.968 [DEBUG] [Thread-188718] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:56:42.968 [DEBUG] [Thread-188718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:56:42.968 [DEBUG] [Thread-188718] [transport.py] [_log()] Compression: none
2025-11-24T10:56:42.968 [DEBUG] [Thread-188718] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:56:43.033 [DEBUG] [Thread-188718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:56:43.033 [DEBUG] [Thread-188718] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:56:43.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:56:43.035 [DEBUG] [Thread-188718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:56:43.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:56:43.096 [DEBUG] [Thread-188718] [transport.py] [_log()] userauth is OK
2025-11-24T10:56:43.096 [DEBUG] [Thread-188718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:56:43.097 [DEBUG] [Thread-188718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:56:43.097 [DEBUG] [Thread-188718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:56:43.097 [DEBUG] [Thread-188718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:56:43.120 [INFO] [Thread-188718] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:56: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-11-24T10:56:43.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:56:43.993 [DEBUG] [Thread-188718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:56:43.993 [DEBUG] [Thread-188718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:56:44.041 [DEBUG] [Thread-188718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:56:44.041 [DEBUG] [Thread-188718] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:56:44.049 [DEBUG] [Thread-188718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:56:44.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:56:44.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:56: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') -> 00000000
2025-11-24T10:56:44.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:56:44.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:56:44.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:56:44.081 [DEBUG] [Thread-188718] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:56:46.284 [DEBUG] [Thread-188720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:57:01.332 [DEBUG] [Thread-188721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:57:14.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:57:14.104 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:57:14.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T10:57:14.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 56, 27), 19.97, 25.53, 0.0, 17.7, 17.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:57:14.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:56:27
2025-11-24T10:57:15.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:57:15.168 [DEBUG] [Thread-188722] [transport.py] [_log()] starting thread (client mode): 0xd07100d0
2025-11-24T10:57:15.168 [DEBUG] [Thread-188722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:57:15.189 [DEBUG] [Thread-188722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:57:15.189 [INFO] [Thread-188722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:57:15.193 [DEBUG] [Thread-188722] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:57:15.193 [DEBUG] [Thread-188722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:57:15.193 [DEBUG] [Thread-188722] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:57:15.193 [DEBUG] [Thread-188722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:57:15.193 [DEBUG] [Thread-188722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] client lang: <none>
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] server lang: <none>
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] kex follows: False
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] Compression: none
2025-11-24T10:57:15.194 [DEBUG] [Thread-188722] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:57:15.213 [DEBUG] [Thread-188722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:57:15.214 [DEBUG] [Thread-188722] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:57:15.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:57:15.215 [DEBUG] [Thread-188722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:57:15.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:57:15.217 [DEBUG] [Thread-188722] [transport.py] [_log()] userauth is OK
2025-11-24T10:57:15.217 [DEBUG] [Thread-188722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:57:15.218 [DEBUG] [Thread-188722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:57:15.218 [DEBUG] [Thread-188722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:57:15.218 [DEBUG] [Thread-188722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:57:15.254 [INFO] [Thread-188722] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:57:15.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:57:15.862 [DEBUG] [Thread-188722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:57:15.862 [DEBUG] [Thread-188722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:57:15.863 [DEBUG] [Thread-188722] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:57:15.904 [DEBUG] [Thread-188722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:57:15.904 [DEBUG] [Thread-188722] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:57:15.907 [DEBUG] [Thread-188722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:57:15.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:57:15.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:57:15.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:57:15.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:57:15.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:57:15.930 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:57:15.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:57:15.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:57:15.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:57:15.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.372619 -999.00  +18.30  18.61     31   +1.10 1 1 1 1 1   888    0 18.92 88.71 ----- 18.6 18.6 178.4 24.2 24.6 -26.2 23.4 -24.7 23.0 -25.6 23.9 -24.8
2025-11-24T10:57:15.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:57:15.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:57:15.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.372619
2025-11-24T10:57:15.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:57:15.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:57:15.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:57:15.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:57:15.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:57:15.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:56:27', tmtdew=19.97, humidity=25.53, cloud=0.0, wind=17.7, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:56:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:57:15.933 [DEBUG] [Thread-188722] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:57:16.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:57:16.033 [DEBUG] [Thread-188725] [transport.py] [_log()] starting thread (client mode): 0xd0700040
2025-11-24T10:57:16.033 [DEBUG] [Thread-188725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:57:16.047 [DEBUG] [Thread-188725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:57:16.048 [INFO] [Thread-188725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:57:16.055 [DEBUG] [Thread-188725] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:57:16.055 [DEBUG] [Thread-188725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:57:16.055 [DEBUG] [Thread-188725] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:57:16.055 [DEBUG] [Thread-188725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:57:16.055 [DEBUG] [Thread-188725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:57:16.055 [DEBUG] [Thread-188725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:57:16.055 [DEBUG] [Thread-188725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:57:16.055 [DEBUG] [Thread-188725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] client lang: <none>
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] server lang: <none>
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] kex follows: False
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] Compression: none
2025-11-24T10:57:16.056 [DEBUG] [Thread-188725] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:57:16.114 [DEBUG] [Thread-188725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:57:16.114 [DEBUG] [Thread-188725] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:57:16.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:57:16.115 [DEBUG] [Thread-188725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:57:16.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:57:16.170 [DEBUG] [Thread-188725] [transport.py] [_log()] userauth is OK
2025-11-24T10:57:16.170 [DEBUG] [Thread-188725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:57:16.170 [DEBUG] [Thread-188725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:57:16.170 [DEBUG] [Thread-188725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:57:16.170 [DEBUG] [Thread-188725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:57:16.188 [INFO] [Thread-188725] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:57:16.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:57:16.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:57:16.373 [DEBUG] [Thread-188727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:57:17.054 [DEBUG] [Thread-188725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:57:17.054 [DEBUG] [Thread-188725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:57:17.102 [DEBUG] [Thread-188725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:57:17.102 [DEBUG] [Thread-188725] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:57:17.110 [DEBUG] [Thread-188725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:57:17.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:57:17.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T10:57:17.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-11-24T10:57:17.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:57:17.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:57:17.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:57:17.141 [DEBUG] [Thread-188725] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:57:31.421 [DEBUG] [Thread-188728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:57:34.632 [DEBUG] [Thread-188729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:57:46.467 [DEBUG] [Thread-188730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:57:47.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:57:47.148 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:57:47.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-11-24T10:57:47.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 57, 32), 19.7, 26.01, 0.0, 17.8, 17.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:57:47.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:57:32
2025-11-24T10:57:47.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:57:48.140 [DEBUG] [Thread-188731] [transport.py] [_log()] starting thread (client mode): 0xd0710f70
2025-11-24T10:57:48.140 [DEBUG] [Thread-188731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:57:48.161 [DEBUG] [Thread-188731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:57:48.161 [INFO] [Thread-188731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:57:48.164 [DEBUG] [Thread-188731] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:57:48.164 [DEBUG] [Thread-188731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] client lang: <none>
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] server lang: <none>
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] kex follows: False
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] Compression: none
2025-11-24T10:57:48.165 [DEBUG] [Thread-188731] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:57:48.183 [DEBUG] [Thread-188731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:57:48.183 [DEBUG] [Thread-188731] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:57:48.184 [DEBUG] [Thread-188731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:57:48.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:57:48.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:57:48.187 [DEBUG] [Thread-188731] [transport.py] [_log()] userauth is OK
2025-11-24T10:57:48.187 [DEBUG] [Thread-188731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:57:48.187 [DEBUG] [Thread-188731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:57:48.187 [DEBUG] [Thread-188731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:57:48.187 [DEBUG] [Thread-188731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:57:48.211 [INFO] [Thread-188731] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:57:48.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:57:48.861 [DEBUG] [Thread-188731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:57:48.861 [DEBUG] [Thread-188731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:57:48.862 [DEBUG] [Thread-188731] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:57:48.903 [DEBUG] [Thread-188731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:57:48.903 [DEBUG] [Thread-188731] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:57:48.906 [DEBUG] [Thread-188731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:57:48.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:57:48.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:57:48.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:57:48.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:57:48.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:57:48.940 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:57:48.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:57:48.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:57:48.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:57:48.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.372966 -999.00  +18.30  19.10     31   +1.00 1 1 1 1 1   888    0 19.24 97.59 ----- 19.1 19.1 183.8 23.2 24.6 -26.6 23.3 -31.1 23.1 -23.4 24.0 -25.9
2025-11-24T10:57:48.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:57:48.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:57:48.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.372966
2025-11-24T10:57:48.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:57:48.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:57:48.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:57:48.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:57:48.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:57:48.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:57:32', tmtdew=19.7, humidity=26.01, cloud=0.0, wind=17.8, temperature=17.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:57:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:57:48.944 [DEBUG] [Thread-188731] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:57:49.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:57:49.041 [DEBUG] [Thread-188734] [transport.py] [_log()] starting thread (client mode): 0xd0739d80
2025-11-24T10:57:49.041 [DEBUG] [Thread-188734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:57:49.056 [DEBUG] [Thread-188734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:57:49.056 [INFO] [Thread-188734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:57:49.064 [DEBUG] [Thread-188734] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:57:49.064 [DEBUG] [Thread-188734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:57:49.064 [DEBUG] [Thread-188734] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:57:49.064 [DEBUG] [Thread-188734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:57:49.064 [DEBUG] [Thread-188734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:57:49.064 [DEBUG] [Thread-188734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:57:49.064 [DEBUG] [Thread-188734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] client lang: <none>
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] server lang: <none>
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] kex follows: False
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] Compression: none
2025-11-24T10:57:49.065 [DEBUG] [Thread-188734] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:57:49.126 [DEBUG] [Thread-188734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:57:49.127 [DEBUG] [Thread-188734] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:57:49.127 [DEBUG] [Thread-188734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:57:49.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:57:49.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:57:49.182 [DEBUG] [Thread-188734] [transport.py] [_log()] userauth is OK
2025-11-24T10:57:49.182 [DEBUG] [Thread-188734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:57:49.182 [DEBUG] [Thread-188734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:57:49.182 [DEBUG] [Thread-188734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:57:49.182 [DEBUG] [Thread-188734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:57:49.202 [INFO] [Thread-188734] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:57:49.203 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:57:49.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:57:50.145 [DEBUG] [Thread-188734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:57:50.146 [DEBUG] [Thread-188734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:57:50.194 [DEBUG] [Thread-188734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:57:50.194 [DEBUG] [Thread-188734] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:57:50.203 [DEBUG] [Thread-188734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:57:50.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:57: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')
2025-11-24T10:57:50.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T10:57:50.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:57:50.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:57:50.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:57:50.239 [DEBUG] [Thread-188734] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:58:01.506 [DEBUG] [Thread-188736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:58:16.554 [DEBUG] [Thread-188737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:58:20.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:58:20.262 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:58:20.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-11-24T10:58:20.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 58, 4), 20.14, 25.28, 0.0, 16.97, 18.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:58:20.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:58:04
2025-11-24T10:58:21.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:58:21.265 [DEBUG] [Thread-188738] [transport.py] [_log()] starting thread (client mode): 0xd0711c30
2025-11-24T10:58:21.265 [DEBUG] [Thread-188738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:58:21.284 [DEBUG] [Thread-188738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:58:21.284 [INFO] [Thread-188738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] client lang: <none>
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] server lang: <none>
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] kex follows: False
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] Compression: none
2025-11-24T10:58:21.288 [DEBUG] [Thread-188738] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:58:21.302 [DEBUG] [Thread-188738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:58:21.302 [DEBUG] [Thread-188738] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:58:21.302 [DEBUG] [Thread-188738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:58:21.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:58:21.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:58:21.303 [DEBUG] [Thread-188738] [transport.py] [_log()] userauth is OK
2025-11-24T10:58:21.303 [DEBUG] [Thread-188738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:58:21.303 [DEBUG] [Thread-188738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:58:21.303 [DEBUG] [Thread-188738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:58:21.303 [DEBUG] [Thread-188738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:58:21.318 [INFO] [Thread-188738] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:58:21.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:58:21.934 [DEBUG] [Thread-188738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:58:21.934 [DEBUG] [Thread-188738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:58:21.935 [DEBUG] [Thread-188738] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:58:21.975 [DEBUG] [Thread-188738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:58:21.975 [DEBUG] [Thread-188738] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:58:21.977 [DEBUG] [Thread-188738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:58:21.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:58:21.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:58:21.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:58:21.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:58:21.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:58:21.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:58:21.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:58:21.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:58:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:58:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.373313 -999.00  +18.10  12.40     31   +0.90 1 1 1 1 1   888    0 19.13 93.88 ----- 12.4 12.4 180.0 20.6 24.7 -27.0 23.4 -28.3 23.1 -24.8 23.9 -25.1
2025-11-24T10:58:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:58:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:58:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.373313
2025-11-24T10:58:21.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:58:21.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:58:21.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:58:21.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:58:21.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:58:21.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:58:04', tmtdew=20.14, humidity=25.28, cloud=0.0, wind=16.97, temperature=18.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:57:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:58:21.999 [DEBUG] [Thread-188738] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:58:22.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:58:22.097 [DEBUG] [Thread-188741] [transport.py] [_log()] starting thread (client mode): 0xd31b0040
2025-11-24T10:58:22.097 [DEBUG] [Thread-188741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:58:22.112 [DEBUG] [Thread-188741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:58:22.112 [INFO] [Thread-188741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] client lang: <none>
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] server lang: <none>
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] kex follows: False
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:58:22.119 [DEBUG] [Thread-188741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:58:22.120 [DEBUG] [Thread-188741] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:58:22.120 [DEBUG] [Thread-188741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:58:22.120 [DEBUG] [Thread-188741] [transport.py] [_log()] Compression: none
2025-11-24T10:58:22.120 [DEBUG] [Thread-188741] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:58:22.177 [DEBUG] [Thread-188741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:58:22.177 [DEBUG] [Thread-188741] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:58:22.178 [DEBUG] [Thread-188741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:58:22.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:58:22.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:58:22.233 [DEBUG] [Thread-188741] [transport.py] [_log()] userauth is OK
2025-11-24T10:58:22.233 [DEBUG] [Thread-188741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:58:22.233 [DEBUG] [Thread-188741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:58:22.234 [DEBUG] [Thread-188741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:58:22.234 [DEBUG] [Thread-188741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:58:22.247 [INFO] [Thread-188741] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:58:22.248 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:58:22.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:58:23.089 [DEBUG] [Thread-188741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:58:23.099 [DEBUG] [Thread-188741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:58:23.138 [DEBUG] [Thread-188741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:58:23.138 [DEBUG] [Thread-188741] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:58:23.147 [DEBUG] [Thread-188741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:58:23.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:58:23.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-11-24T10:58:23.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-11-24T10:58:23.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:58:23.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:58:23.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:58:23.185 [DEBUG] [Thread-188741] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:58:31.585 [DEBUG] [Thread-188743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:58:34.928 [DEBUG] [Thread-188744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:58:46.633 [DEBUG] [Thread-188745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:58:53.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:58:53.206 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:58:53.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-11-24T10:58:53.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 58, 37), 20.09, 25.46, 0.0, 19.27, 18.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:58:53.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:58:37
2025-11-24T10:58:54.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:58:54.270 [DEBUG] [Thread-188746] [transport.py] [_log()] starting thread (client mode): 0xd317e8f0
2025-11-24T10:58:54.271 [DEBUG] [Thread-188746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:58:54.289 [DEBUG] [Thread-188746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:58:54.289 [INFO] [Thread-188746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] client lang: <none>
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] server lang: <none>
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] kex follows: False
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] Compression: none
2025-11-24T10:58:54.292 [DEBUG] [Thread-188746] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:58:54.306 [DEBUG] [Thread-188746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:58:54.306 [DEBUG] [Thread-188746] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:58:54.306 [DEBUG] [Thread-188746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:58:54.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:58:54.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:58:54.307 [DEBUG] [Thread-188746] [transport.py] [_log()] userauth is OK
2025-11-24T10:58:54.307 [DEBUG] [Thread-188746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:58:54.307 [DEBUG] [Thread-188746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:58:54.307 [DEBUG] [Thread-188746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:58:54.307 [DEBUG] [Thread-188746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:58:54.322 [INFO] [Thread-188746] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:58:54.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:58:54.975 [DEBUG] [Thread-188746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:58:54.975 [DEBUG] [Thread-188746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:58:54.975 [DEBUG] [Thread-188746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:58:55.016 [DEBUG] [Thread-188746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:58:55.016 [DEBUG] [Thread-188746] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:58:55.018 [DEBUG] [Thread-188746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:58:55.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:58:55.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:58:55.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:58:55.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:58:55.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:58:55.035 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:58:55.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:58:55.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:58:55.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:58:55.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.374007 -999.00  +18.10  16.05     32   +1.30 1 1 1 1 1   888    0 19.28 96.95 ----- 16.1 16.1 202.6 23.5 24.8 -25.2 23.4 -26.5 23.1 -24.0 24.0 -24.6
2025-11-24T10:58:55.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:58:55.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:58:55.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.374007
2025-11-24T10:58:55.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:58:55.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:58:55.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:58:55.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:58:55.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:58:55.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:58:37', tmtdew=20.09, humidity=25.46, cloud=0.0, wind=19.27, temperature=18.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:58:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:58:55.036 [DEBUG] [Thread-188746] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:58:55.109 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:58:55.120 [DEBUG] [Thread-188749] [transport.py] [_log()] starting thread (client mode): 0xd317dde0
2025-11-24T10:58:55.120 [DEBUG] [Thread-188749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:58:55.136 [DEBUG] [Thread-188749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:58:55.136 [INFO] [Thread-188749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] client lang: <none>
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] server lang: <none>
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] kex follows: False
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] Compression: none
2025-11-24T10:58:55.144 [DEBUG] [Thread-188749] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:58:55.201 [DEBUG] [Thread-188749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:58:55.201 [DEBUG] [Thread-188749] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:58:55.201 [DEBUG] [Thread-188749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:58:55.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:58:55.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:58:55.258 [DEBUG] [Thread-188749] [transport.py] [_log()] userauth is OK
2025-11-24T10:58:55.258 [DEBUG] [Thread-188749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:58:55.258 [DEBUG] [Thread-188749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:58:55.258 [DEBUG] [Thread-188749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:58:55.258 [DEBUG] [Thread-188749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:58:55.275 [INFO] [Thread-188749] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:58:55.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:58:55.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:58:56.133 [DEBUG] [Thread-188749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:58:56.133 [DEBUG] [Thread-188749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:58:56.181 [DEBUG] [Thread-188749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:58:56.181 [DEBUG] [Thread-188749] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:58:56.190 [DEBUG] [Thread-188749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:58:56.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:58:56.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-11-24T10:58:56.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-11-24T10:58:56.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:58:56.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:58:56.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:58:56.222 [DEBUG] [Thread-188749] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:59:01.663 [DEBUG] [Thread-188751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:59:16.715 [DEBUG] [Thread-188752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:59:26.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:59:26.245 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:59:26.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-11-24T10:59:27.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 59, 9), 19.82, 25.94, 0.0, 21.81, 18.32, 0, 0, 0, 2, 0, 0),)
2025-11-24T10:59:27.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:59:09
2025-11-24T10:59:27.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T10:59:27.310 [DEBUG] [Thread-188753] [transport.py] [_log()] starting thread (client mode): 0xd317f040
2025-11-24T10:59:27.310 [DEBUG] [Thread-188753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:59:27.332 [DEBUG] [Thread-188753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T10:59:27.332 [INFO] [Thread-188753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T10:59:27.335 [DEBUG] [Thread-188753] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:59:27.335 [DEBUG] [Thread-188753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T10:59:27.335 [DEBUG] [Thread-188753] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:59:27.335 [DEBUG] [Thread-188753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:59:27.335 [DEBUG] [Thread-188753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:59:27.335 [DEBUG] [Thread-188753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:59:27.335 [DEBUG] [Thread-188753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:59:27.335 [DEBUG] [Thread-188753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:59:27.335 [DEBUG] [Thread-188753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:59:27.335 [DEBUG] [Thread-188753] [transport.py] [_log()] client lang: <none>
2025-11-24T10:59:27.336 [DEBUG] [Thread-188753] [transport.py] [_log()] server lang: <none>
2025-11-24T10:59:27.336 [DEBUG] [Thread-188753] [transport.py] [_log()] kex follows: False
2025-11-24T10:59:27.336 [DEBUG] [Thread-188753] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:59:27.336 [DEBUG] [Thread-188753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:59:27.336 [DEBUG] [Thread-188753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:59:27.336 [DEBUG] [Thread-188753] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:59:27.336 [DEBUG] [Thread-188753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:59:27.336 [DEBUG] [Thread-188753] [transport.py] [_log()] Compression: none
2025-11-24T10:59:27.336 [DEBUG] [Thread-188753] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:59:27.351 [DEBUG] [Thread-188753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:59:27.351 [DEBUG] [Thread-188753] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:59:27.351 [DEBUG] [Thread-188753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T10:59:27.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T10:59:27.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:59:27.352 [DEBUG] [Thread-188753] [transport.py] [_log()] userauth is OK
2025-11-24T10:59:27.352 [DEBUG] [Thread-188753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:59:27.353 [DEBUG] [Thread-188753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:59:27.353 [DEBUG] [Thread-188753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T10:59:27.353 [DEBUG] [Thread-188753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:59:27.371 [INFO] [Thread-188753] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:59:27.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:59:28.006 [DEBUG] [Thread-188753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:59:28.006 [DEBUG] [Thread-188753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:59:28.006 [DEBUG] [Thread-188753] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T10:59:28.047 [DEBUG] [Thread-188753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:59:28.047 [DEBUG] [Thread-188753] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:59:28.049 [DEBUG] [Thread-188753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:59:28.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:59:28.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T10:59:28.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T10:59:28.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T10:59:28.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:59:28.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T10:59:28.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:59:28.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:59:28.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T10:59:28.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.374355 -999.00  +18.70  10.68     31   +1.60 1 1 1 1 1   888    0 19.25 96.23 ----- 10.7 10.7 202.6 21.7 24.9 -24.6 23.7 -23.8 23.3 -22.9 24.2 -24.1
2025-11-24T10:59:28.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T10:59:28.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T10:59:28.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.374355
2025-11-24T10:59:28.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T10:59:28.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T10:59:28.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T10:59:28.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T10:59:28.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T10:59:28.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:59:09', tmtdew=19.82, humidity=25.94, cloud=0.0, wind=21.81, temperature=18.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:59:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T10:59:28.069 [DEBUG] [Thread-188753] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:59:28.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T10:59:28.169 [DEBUG] [Thread-188756] [transport.py] [_log()] starting thread (client mode): 0xd3152da0
2025-11-24T10:59:28.169 [DEBUG] [Thread-188756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T10:59:28.186 [DEBUG] [Thread-188756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T10:59:28.186 [INFO] [Thread-188756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] client lang: <none>
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] server lang: <none>
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] kex follows: False
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] Compression: none
2025-11-24T10:59:28.194 [DEBUG] [Thread-188756] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T10:59:28.253 [DEBUG] [Thread-188756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T10:59:28.253 [DEBUG] [Thread-188756] [transport.py] [_log()] Switch to new keys ...
2025-11-24T10:59:28.253 [DEBUG] [Thread-188756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T10:59:28.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T10:59:28.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T10:59:28.310 [DEBUG] [Thread-188756] [transport.py] [_log()] userauth is OK
2025-11-24T10:59:28.310 [DEBUG] [Thread-188756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T10:59:28.310 [DEBUG] [Thread-188756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T10:59:28.310 [DEBUG] [Thread-188756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T10:59:28.310 [DEBUG] [Thread-188756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T10:59:28.324 [INFO] [Thread-188756] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T10:59:28.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T10:59:28.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T10:59:29.256 [DEBUG] [Thread-188756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T10:59:29.256 [DEBUG] [Thread-188756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T10:59:29.304 [DEBUG] [Thread-188756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T10:59:29.304 [DEBUG] [Thread-188756] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T10:59:29.313 [DEBUG] [Thread-188756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T10:59:29.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T10:59:29.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-11-24T10:59:29.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-11-24T10:59:29.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T10:59:29.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T10:59:29.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T10:59:29.347 [DEBUG] [Thread-188756] [transport.py] [_log()] EOF in transport thread
2025-11-24T10:59:31.758 [DEBUG] [Thread-188758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:59:35.146 [DEBUG] [Thread-188759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:59:46.820 [DEBUG] [Thread-188760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T10:59:59.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T10:59:59.370 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T10:59:59.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-11-24T11:00:00.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 10, 59, 42), 19.67, 25.99, 0.0, 16.07, 17.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:00:00.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 10:59:42
2025-11-24T11:00:00.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:00:00.447 [DEBUG] [Thread-188761] [transport.py] [_log()] starting thread (client mode): 0xd07031f0
2025-11-24T11:00:00.447 [DEBUG] [Thread-188761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:00:00.468 [DEBUG] [Thread-188761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:00:00.469 [INFO] [Thread-188761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:00:00.472 [DEBUG] [Thread-188761] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:00:00.472 [DEBUG] [Thread-188761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:00:00.472 [DEBUG] [Thread-188761] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:00:00.472 [DEBUG] [Thread-188761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:00:00.472 [DEBUG] [Thread-188761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:00:00.472 [DEBUG] [Thread-188761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] client lang: <none>
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] server lang: <none>
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] kex follows: False
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] Compression: none
2025-11-24T11:00:00.473 [DEBUG] [Thread-188761] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:00:00.490 [DEBUG] [Thread-188761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:00:00.490 [DEBUG] [Thread-188761] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:00:00.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:00:00.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:00:00.501 [DEBUG] [Thread-188761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:00:00.503 [DEBUG] [Thread-188761] [transport.py] [_log()] userauth is OK
2025-11-24T11:00:00.503 [DEBUG] [Thread-188761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:00:00.503 [DEBUG] [Thread-188761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:00:00.503 [DEBUG] [Thread-188761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:00:00.503 [DEBUG] [Thread-188761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:00:00.523 [INFO] [Thread-188761] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:00:00.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:00:01.146 [DEBUG] [Thread-188761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:00:01.146 [DEBUG] [Thread-188761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:00:01.146 [DEBUG] [Thread-188761] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:00:01.187 [DEBUG] [Thread-188761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:00:01.187 [DEBUG] [Thread-188761] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:00:01.189 [DEBUG] [Thread-188761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:00:01.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:00:01.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:00:01.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:00:01.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:00:01.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:00:01.206 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:00:01.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:00:01.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:00:01.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:00:01.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.374702 -999.00  +18.90  13.96     30   +1.30 1 1 1 1 1   888    0 19.07 87.19 ----- 14.0 14.0 192.1 20.1 25.0 -26.0 23.7 -28.1 23.5 -22.4 24.4 -25.5
2025-11-24T11:00:01.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:00:01.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:00:01.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.374702
2025-11-24T11:00:01.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:00:01.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:00:01.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:00:01.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:00:01.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:00:01.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T10:59:42', tmtdew=19.67, humidity=25.99, cloud=0.0, wind=16.07, temperature=17.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T08:59:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:00:01.211 [DEBUG] [Thread-188761] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:00:01.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:00:01.351 [DEBUG] [Thread-188764] [transport.py] [_log()] starting thread (client mode): 0xd3153c70
2025-11-24T11:00:01.351 [DEBUG] [Thread-188764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:00:01.365 [DEBUG] [Thread-188764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:00:01.365 [INFO] [Thread-188764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] client lang: <none>
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] server lang: <none>
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] kex follows: False
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:00:01.373 [DEBUG] [Thread-188764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:00:01.374 [DEBUG] [Thread-188764] [transport.py] [_log()] Compression: none
2025-11-24T11:00:01.374 [DEBUG] [Thread-188764] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:00:01.433 [DEBUG] [Thread-188764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:00:01.434 [DEBUG] [Thread-188764] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:00:01.434 [DEBUG] [Thread-188764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:00:01.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:00:01.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:00:01.490 [DEBUG] [Thread-188764] [transport.py] [_log()] userauth is OK
2025-11-24T11:00:01.490 [DEBUG] [Thread-188764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:00:01.490 [DEBUG] [Thread-188764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:00:01.490 [DEBUG] [Thread-188764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:00:01.490 [DEBUG] [Thread-188764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:00:01.504 [INFO] [Thread-188764] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:00:01.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:00:01.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:00:01.855 [DEBUG] [Thread-188766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:00:02.366 [DEBUG] [Thread-188764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:00:02.366 [DEBUG] [Thread-188764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:00:02.414 [DEBUG] [Thread-188764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:00:02.414 [DEBUG] [Thread-188764] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:00:02.422 [DEBUG] [Thread-188764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:00:02.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:00:02.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-11-24T11:00:02.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-11-24T11:00:02.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:00:02.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:00:02.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:00:02.454 [DEBUG] [Thread-188764] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:00:16.888 [DEBUG] [Thread-188767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:00:31.922 [DEBUG] [Thread-188768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:00:32.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:00:32.475 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:00:32.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-11-24T11:00:33.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 0, 14), 19.54, 26.22, 0.0, 16.69, 17.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:00:33.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:00:14
2025-11-24T11:00:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:00:33.524 [DEBUG] [Thread-188769] [transport.py] [_log()] starting thread (client mode): 0xd073b4c0
2025-11-24T11:00:33.524 [DEBUG] [Thread-188769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:00:33.544 [DEBUG] [Thread-188769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:00:33.545 [INFO] [Thread-188769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:00:33.548 [DEBUG] [Thread-188769] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:00:33.548 [DEBUG] [Thread-188769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:00:33.548 [DEBUG] [Thread-188769] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:00:33.548 [DEBUG] [Thread-188769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:00:33.548 [DEBUG] [Thread-188769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:00:33.548 [DEBUG] [Thread-188769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:00:33.548 [DEBUG] [Thread-188769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] client lang: <none>
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] server lang: <none>
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] kex follows: False
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] Compression: none
2025-11-24T11:00:33.549 [DEBUG] [Thread-188769] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:00:33.566 [DEBUG] [Thread-188769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:00:33.567 [DEBUG] [Thread-188769] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:00:33.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:00:33.567 [DEBUG] [Thread-188769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:00:33.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:00:33.569 [DEBUG] [Thread-188769] [transport.py] [_log()] userauth is OK
2025-11-24T11:00:33.569 [DEBUG] [Thread-188769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:00:33.569 [DEBUG] [Thread-188769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:00:33.569 [DEBUG] [Thread-188769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:00:33.569 [DEBUG] [Thread-188769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:00:33.591 [INFO] [Thread-188769] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:00:33.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:00:34.261 [DEBUG] [Thread-188769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:00:34.261 [DEBUG] [Thread-188769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:00:34.261 [DEBUG] [Thread-188769] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:00:34.301 [DEBUG] [Thread-188769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:00:34.302 [DEBUG] [Thread-188769] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:00:34.305 [DEBUG] [Thread-188769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:00:34.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:00:34.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:00:34.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:00:34.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:00:34.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:00:34.327 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:00:34.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:00:34.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:00:34.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:00:34.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.375049 -999.00  +18.60  18.45     31   +1.20 1 1 1 1 1   888    0 18.99 83.13 ----- 18.4 18.4 170.8 24.9 25.1 -25.7 23.8 -25.8 23.4 -24.2 24.4 -25.6
2025-11-24T11:00:34.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:00:34.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:00:34.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.375049
2025-11-24T11:00:34.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:00:34.328 [DEBUG] [Thread-188769] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:00:34.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:00:34.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:00:34.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:00:34.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:00:34.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:00:14', tmtdew=19.54, humidity=26.22, cloud=0.0, wind=16.69, temperature=17.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:00:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:00:34.436 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:00:34.448 [DEBUG] [Thread-188772] [transport.py] [_log()] starting thread (client mode): 0xd31b0dc0
2025-11-24T11:00:34.449 [DEBUG] [Thread-188772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:00:34.467 [DEBUG] [Thread-188772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:00:34.467 [INFO] [Thread-188772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:00:34.475 [DEBUG] [Thread-188772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:00:34.475 [DEBUG] [Thread-188772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:00:34.475 [DEBUG] [Thread-188772] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:00:34.475 [DEBUG] [Thread-188772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:00:34.475 [DEBUG] [Thread-188772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:00:34.475 [DEBUG] [Thread-188772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:00:34.475 [DEBUG] [Thread-188772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:00:34.475 [DEBUG] [Thread-188772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:00:34.475 [DEBUG] [Thread-188772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:00:34.475 [DEBUG] [Thread-188772] [transport.py] [_log()] client lang: <none>
2025-11-24T11:00:34.476 [DEBUG] [Thread-188772] [transport.py] [_log()] server lang: <none>
2025-11-24T11:00:34.476 [DEBUG] [Thread-188772] [transport.py] [_log()] kex follows: False
2025-11-24T11:00:34.476 [DEBUG] [Thread-188772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:00:34.476 [DEBUG] [Thread-188772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:00:34.476 [DEBUG] [Thread-188772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:00:34.476 [DEBUG] [Thread-188772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:00:34.476 [DEBUG] [Thread-188772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:00:34.476 [DEBUG] [Thread-188772] [transport.py] [_log()] Compression: none
2025-11-24T11:00:34.476 [DEBUG] [Thread-188772] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:00:34.535 [DEBUG] [Thread-188772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:00:34.536 [DEBUG] [Thread-188772] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:00:34.536 [DEBUG] [Thread-188772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:00:34.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:00:34.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:00:34.592 [DEBUG] [Thread-188772] [transport.py] [_log()] userauth is OK
2025-11-24T11:00:34.592 [DEBUG] [Thread-188772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:00:34.592 [DEBUG] [Thread-188772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:00:34.592 [DEBUG] [Thread-188772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:00:34.592 [DEBUG] [Thread-188772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:00:34.612 [INFO] [Thread-188772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:00:34.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:00:34.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:00:35.373 [DEBUG] [Thread-188774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:00:35.471 [DEBUG] [Thread-188772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:00:35.471 [DEBUG] [Thread-188772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:00:35.519 [DEBUG] [Thread-188772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:00:35.519 [DEBUG] [Thread-188772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:00:35.527 [DEBUG] [Thread-188772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:00:35.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:00:35.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-11-24T11:00:35.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:00:35.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:00:35.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:00:35.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:00:35.559 [DEBUG] [Thread-188772] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:00:46.956 [DEBUG] [Thread-188775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:01:02.018 [DEBUG] [Thread-188776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:01:05.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:01:05.582 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:01:05.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-11-24T11:01:06.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 0, 47), 20.06, 25.38, 0.0, 20.36, 18.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:01:06.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:00:47
2025-11-24T11:01:06.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:01:06.645 [DEBUG] [Thread-188777] [transport.py] [_log()] starting thread (client mode): 0xd0739420
2025-11-24T11:01:06.645 [DEBUG] [Thread-188777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:01:06.656 [DEBUG] [Thread-188777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:01:06.656 [INFO] [Thread-188777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:01:06.659 [DEBUG] [Thread-188777] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:01:06.659 [DEBUG] [Thread-188777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:01:06.659 [DEBUG] [Thread-188777] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:01:06.659 [DEBUG] [Thread-188777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:01:06.659 [DEBUG] [Thread-188777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:01:06.659 [DEBUG] [Thread-188777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:01:06.659 [DEBUG] [Thread-188777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:01:06.659 [DEBUG] [Thread-188777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] client lang: <none>
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] server lang: <none>
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] kex follows: False
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] Compression: none
2025-11-24T11:01:06.660 [DEBUG] [Thread-188777] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:01:06.678 [DEBUG] [Thread-188777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:01:06.679 [DEBUG] [Thread-188777] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:01:06.679 [DEBUG] [Thread-188777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:01:06.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:01:06.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:01:06.681 [DEBUG] [Thread-188777] [transport.py] [_log()] userauth is OK
2025-11-24T11:01:06.682 [DEBUG] [Thread-188777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:01:06.682 [DEBUG] [Thread-188777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:01:06.682 [DEBUG] [Thread-188777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:01:06.682 [DEBUG] [Thread-188777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:01:06.706 [INFO] [Thread-188777] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:01:06.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:01:07.287 [DEBUG] [Thread-188777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:01:07.287 [DEBUG] [Thread-188777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:01:07.287 [DEBUG] [Thread-188777] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:01:07.328 [DEBUG] [Thread-188777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:01:07.328 [DEBUG] [Thread-188777] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:01:07.330 [DEBUG] [Thread-188777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:01:07.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:01:07.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:01:07.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:01:07.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:01:07.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:01:07.348 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:01:07.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:01:07.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:01:07.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:01:07.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.375396 -999.00  +18.20  19.57     32   +1.20 1 1 1 1 1   888    0 18.96 80.43 ----- 19.6 19.6 163.2 22.7 25.1 -25.6 23.9 -24.7 23.5 -23.9 24.4 -25.4
2025-11-24T11:01:07.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:01:07.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:01:07.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.375396
2025-11-24T11:01:07.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:01:07.357 [DEBUG] [Thread-188777] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:01:07.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:01:07.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:01:07.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:01:07.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:01:07.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:00:47', tmtdew=20.06, humidity=25.38, cloud=0.0, wind=20.36, temperature=18.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:00:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:01:07.430 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:01:07.445 [DEBUG] [Thread-188780] [transport.py] [_log()] starting thread (client mode): 0xd0700fa0
2025-11-24T11:01:07.445 [DEBUG] [Thread-188780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:01:07.461 [DEBUG] [Thread-188780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:01:07.461 [INFO] [Thread-188780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:01:07.468 [DEBUG] [Thread-188780] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:01:07.468 [DEBUG] [Thread-188780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:01:07.468 [DEBUG] [Thread-188780] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:01:07.468 [DEBUG] [Thread-188780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:01:07.468 [DEBUG] [Thread-188780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:01:07.468 [DEBUG] [Thread-188780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:01:07.468 [DEBUG] [Thread-188780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:01:07.468 [DEBUG] [Thread-188780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:01:07.468 [DEBUG] [Thread-188780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:01:07.469 [DEBUG] [Thread-188780] [transport.py] [_log()] client lang: <none>
2025-11-24T11:01:07.469 [DEBUG] [Thread-188780] [transport.py] [_log()] server lang: <none>
2025-11-24T11:01:07.469 [DEBUG] [Thread-188780] [transport.py] [_log()] kex follows: False
2025-11-24T11:01:07.469 [DEBUG] [Thread-188780] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:01:07.469 [DEBUG] [Thread-188780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:01:07.469 [DEBUG] [Thread-188780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:01:07.469 [DEBUG] [Thread-188780] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:01:07.469 [DEBUG] [Thread-188780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:01:07.469 [DEBUG] [Thread-188780] [transport.py] [_log()] Compression: none
2025-11-24T11:01:07.469 [DEBUG] [Thread-188780] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:01:07.528 [DEBUG] [Thread-188780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:01:07.528 [DEBUG] [Thread-188780] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:01:07.528 [DEBUG] [Thread-188780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:01:07.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:01:07.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:01:07.587 [DEBUG] [Thread-188780] [transport.py] [_log()] userauth is OK
2025-11-24T11:01:07.587 [DEBUG] [Thread-188780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:01:07.587 [DEBUG] [Thread-188780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:01:07.587 [DEBUG] [Thread-188780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:01:07.587 [DEBUG] [Thread-188780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:01:07.601 [INFO] [Thread-188780] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:01:07.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:01:07.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:01:08.498 [DEBUG] [Thread-188780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:01:08.498 [DEBUG] [Thread-188780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:01:08.546 [DEBUG] [Thread-188780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:01:08.546 [DEBUG] [Thread-188780] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:01:08.554 [DEBUG] [Thread-188780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:01:08.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:01:08.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-11-24T11:01:08.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:01:08.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:01:08.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:01:08.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:01:08.586 [DEBUG] [Thread-188780] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:01:17.064 [DEBUG] [Thread-188782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:01:32.114 [DEBUG] [Thread-188783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:01:35.593 [DEBUG] [Thread-188784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:01:38.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:01:38.609 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:01:38.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-11-24T11:01:39.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 1, 19), 19.84, 25.78, 0.0, 21.17, 18.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:01:39.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:01:19
2025-11-24T11:01:39.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:01:39.717 [DEBUG] [Thread-188785] [transport.py] [_log()] starting thread (client mode): 0xc9b83fa0
2025-11-24T11:01:39.717 [DEBUG] [Thread-188785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:01:39.731 [DEBUG] [Thread-188785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:01:39.732 [INFO] [Thread-188785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] client lang: <none>
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] server lang: <none>
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] kex follows: False
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] Compression: none
2025-11-24T11:01:39.735 [DEBUG] [Thread-188785] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:01:39.753 [DEBUG] [Thread-188785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:01:39.753 [DEBUG] [Thread-188785] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:01:39.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:01:39.754 [DEBUG] [Thread-188785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:01:39.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:01:39.756 [DEBUG] [Thread-188785] [transport.py] [_log()] userauth is OK
2025-11-24T11:01:39.757 [DEBUG] [Thread-188785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:01:39.757 [DEBUG] [Thread-188785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:01:39.757 [DEBUG] [Thread-188785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:01:39.757 [DEBUG] [Thread-188785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:01:39.780 [INFO] [Thread-188785] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:01:39.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:01:40.421 [DEBUG] [Thread-188785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:01:40.421 [DEBUG] [Thread-188785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:01:40.422 [DEBUG] [Thread-188785] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:01:40.463 [DEBUG] [Thread-188785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:01:40.463 [DEBUG] [Thread-188785] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:01:40.466 [DEBUG] [Thread-188785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:01:40.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:01:40.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:01:40.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:01:40.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:01:40.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:01:40.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:01:40.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:01:40.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:01:40.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:01:40.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.375744 -999.00  +17.90  10.45     32   +1.20 1 1 1 1 1   888    0 18.75 74.69 ----- 10.4 10.4 152.5 22.9 25.1 -25.5 23.9 -24.4 23.4 -24.6 24.4 -24.9
2025-11-24T11:01:40.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:01:40.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:01:40.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.375744
2025-11-24T11:01:40.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:01:40.502 [DEBUG] [Thread-188785] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:01:40.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:01:40.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:01:40.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:01:40.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:01:40.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:01:19', tmtdew=19.84, humidity=25.78, cloud=0.0, wind=21.17, temperature=18.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:01:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:01:40.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:01:40.600 [DEBUG] [Thread-188788] [transport.py] [_log()] starting thread (client mode): 0xd31915d0
2025-11-24T11:01:40.600 [DEBUG] [Thread-188788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:01:40.615 [DEBUG] [Thread-188788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:01:40.616 [INFO] [Thread-188788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:01:40.623 [DEBUG] [Thread-188788] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] client lang: <none>
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] server lang: <none>
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] kex follows: False
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:01:40.624 [DEBUG] [Thread-188788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:01:40.625 [DEBUG] [Thread-188788] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:01:40.625 [DEBUG] [Thread-188788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:01:40.625 [DEBUG] [Thread-188788] [transport.py] [_log()] Compression: none
2025-11-24T11:01:40.625 [DEBUG] [Thread-188788] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:01:40.683 [DEBUG] [Thread-188788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:01:40.684 [DEBUG] [Thread-188788] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:01:40.685 [DEBUG] [Thread-188788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:01:40.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:01:40.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:01:40.740 [DEBUG] [Thread-188788] [transport.py] [_log()] userauth is OK
2025-11-24T11:01:40.740 [DEBUG] [Thread-188788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:01:40.740 [DEBUG] [Thread-188788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:01:40.740 [DEBUG] [Thread-188788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:01:40.741 [DEBUG] [Thread-188788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:01:40.760 [INFO] [Thread-188788] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:01:40.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:01:40.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:01:41.618 [DEBUG] [Thread-188788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:01:41.618 [DEBUG] [Thread-188788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:01:41.667 [DEBUG] [Thread-188788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:01:41.667 [DEBUG] [Thread-188788] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:01:41.676 [DEBUG] [Thread-188788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:01:41.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:01:41.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:01:41.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-11-24T11:01:41.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:01:41.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:01:41.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:01:41.713 [DEBUG] [Thread-188788] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:01:47.145 [DEBUG] [Thread-188790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:02:02.214 [DEBUG] [Thread-188791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:02:11.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:02:11.736 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:02:11.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-11-24T11:02:12.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 1, 51), 19.25, 26.95, 0.0, 24.61, 17.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:02:12.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:01:51
2025-11-24T11:02:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:02:12.726 [DEBUG] [Thread-188792] [transport.py] [_log()] starting thread (client mode): 0xd3190340
2025-11-24T11:02:12.726 [DEBUG] [Thread-188792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:02:12.748 [DEBUG] [Thread-188792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:02:12.748 [INFO] [Thread-188792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] client lang: <none>
2025-11-24T11:02:12.750 [DEBUG] [Thread-188792] [transport.py] [_log()] server lang: <none>
2025-11-24T11:02:12.751 [DEBUG] [Thread-188792] [transport.py] [_log()] kex follows: False
2025-11-24T11:02:12.751 [DEBUG] [Thread-188792] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:02:12.751 [DEBUG] [Thread-188792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:02:12.751 [DEBUG] [Thread-188792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:02:12.751 [DEBUG] [Thread-188792] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:02:12.751 [DEBUG] [Thread-188792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:02:12.751 [DEBUG] [Thread-188792] [transport.py] [_log()] Compression: none
2025-11-24T11:02:12.751 [DEBUG] [Thread-188792] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:02:12.764 [DEBUG] [Thread-188792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:02:12.765 [DEBUG] [Thread-188792] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:02:12.765 [DEBUG] [Thread-188792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:02:12.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:02:12.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:02:12.767 [DEBUG] [Thread-188792] [transport.py] [_log()] userauth is OK
2025-11-24T11:02:12.767 [DEBUG] [Thread-188792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:02:12.768 [DEBUG] [Thread-188792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:02:12.768 [DEBUG] [Thread-188792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:02:12.768 [DEBUG] [Thread-188792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:02:12.803 [INFO] [Thread-188792] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:02:12.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:02:13.474 [DEBUG] [Thread-188792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:02:13.475 [DEBUG] [Thread-188792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:02:13.475 [DEBUG] [Thread-188792] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:02:13.515 [DEBUG] [Thread-188792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:02:13.515 [DEBUG] [Thread-188792] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:02:13.517 [DEBUG] [Thread-188792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:02:13.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:02:13.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:02:13.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:02:13.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:02:13.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:02:13.535 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:02:13.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:02:13.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:02:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:02:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.376091 -999.00  +17.90  14.00     32   +1.20 1 1 1 1 1   888    0 18.96 72.93 ----- 14.0 14.0 158.3 22.0 25.1 -26.8 23.9 -24.4 23.5 -23.7 24.4 -25.0
2025-11-24T11:02:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:02:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:02:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.376091
2025-11-24T11:02:13.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:02:13.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:02:13.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:02:13.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:02:13.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:02:13.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:01:51', tmtdew=19.25, humidity=26.95, cloud=0.0, wind=24.61, temperature=17.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:01:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:02:13.536 [DEBUG] [Thread-188792] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:02:13.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:02:13.618 [DEBUG] [Thread-188795] [transport.py] [_log()] starting thread (client mode): 0xd317d870
2025-11-24T11:02:13.618 [DEBUG] [Thread-188795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:02:13.632 [DEBUG] [Thread-188795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:02:13.632 [INFO] [Thread-188795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] client lang: <none>
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] server lang: <none>
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] kex follows: False
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:02:13.640 [DEBUG] [Thread-188795] [transport.py] [_log()] Compression: none
2025-11-24T11:02:13.641 [DEBUG] [Thread-188795] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:02:13.707 [DEBUG] [Thread-188795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:02:13.707 [DEBUG] [Thread-188795] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:02:13.707 [DEBUG] [Thread-188795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:02:13.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:02:13.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:02:13.763 [DEBUG] [Thread-188795] [transport.py] [_log()] userauth is OK
2025-11-24T11:02:13.763 [DEBUG] [Thread-188795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:02:13.763 [DEBUG] [Thread-188795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:02:13.763 [DEBUG] [Thread-188795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:02:13.763 [DEBUG] [Thread-188795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:02:13.777 [INFO] [Thread-188795] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:02:13.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:02:13.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:02:14.653 [DEBUG] [Thread-188795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:02:14.653 [DEBUG] [Thread-188795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:02:14.701 [DEBUG] [Thread-188795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:02:14.701 [DEBUG] [Thread-188795] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:02:14.710 [DEBUG] [Thread-188795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:02:14.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:02:14.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-11-24T11:02:14.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-11-24T11:02:14.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:02:14.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:02:14.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:02:14.747 [DEBUG] [Thread-188795] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:02:17.242 [DEBUG] [Thread-188797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:02:32.282 [DEBUG] [Thread-188798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:02:35.652 [DEBUG] [Thread-188799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:02:44.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:02:44.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:02:44.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-11-24T11:02:45.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 2, 24), 19.71, 26.18, 0.0, 20.29, 18.27, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:02:45.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:02:24
2025-11-24T11:02:45.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:02:45.825 [DEBUG] [Thread-188800] [transport.py] [_log()] starting thread (client mode): 0xd317c460
2025-11-24T11:02:45.825 [DEBUG] [Thread-188800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:02:45.845 [DEBUG] [Thread-188800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:02:45.845 [INFO] [Thread-188800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] client lang: <none>
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] server lang: <none>
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] kex follows: False
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] Compression: none
2025-11-24T11:02:45.849 [DEBUG] [Thread-188800] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:02:45.863 [DEBUG] [Thread-188800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:02:45.863 [DEBUG] [Thread-188800] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:02:45.863 [DEBUG] [Thread-188800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:02:45.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:02:45.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:02:45.864 [DEBUG] [Thread-188800] [transport.py] [_log()] userauth is OK
2025-11-24T11:02:45.864 [DEBUG] [Thread-188800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:02:45.864 [DEBUG] [Thread-188800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:02:45.864 [DEBUG] [Thread-188800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:02:45.864 [DEBUG] [Thread-188800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:02:45.872 [INFO] [Thread-188800] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:02:45.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:02:46.496 [DEBUG] [Thread-188800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:02:46.496 [DEBUG] [Thread-188800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:02:46.496 [DEBUG] [Thread-188800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:02:46.537 [DEBUG] [Thread-188800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:02:46.537 [DEBUG] [Thread-188800] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:02:46.539 [DEBUG] [Thread-188800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:02:46.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:02:46.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:02:46.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:02:46.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:02:46.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:02:46.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:02:46.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:02:46.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:02:46.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:02:46.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.376785 -999.00  +18.00  23.43     32   +1.40 1 1 1 1 1   888    0 18.81 74.01 ----- 23.4 23.4 188.8 37.1 24.8 -26.7 23.1 -32.5 23.4 -26.3 24.0 -27.9
2025-11-24T11:02:46.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:02:46.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:02:46.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.376785
2025-11-24T11:02:46.568 [DEBUG] [Thread-188800] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:02:46.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:02:46.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:02:46.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:02:46.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:02:46.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:02:46.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:02:24', tmtdew=19.71, humidity=26.18, cloud=0.0, wind=20.29, temperature=18.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:02:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:02:46.642 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:02:46.654 [DEBUG] [Thread-188803] [transport.py] [_log()] starting thread (client mode): 0xd317c160
2025-11-24T11:02:46.654 [DEBUG] [Thread-188803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:02:46.669 [DEBUG] [Thread-188803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:02:46.669 [INFO] [Thread-188803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] client lang: <none>
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] server lang: <none>
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] kex follows: False
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:02:46.676 [DEBUG] [Thread-188803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:02:46.677 [DEBUG] [Thread-188803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:02:46.677 [DEBUG] [Thread-188803] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:02:46.677 [DEBUG] [Thread-188803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:02:46.677 [DEBUG] [Thread-188803] [transport.py] [_log()] Compression: none
2025-11-24T11:02:46.677 [DEBUG] [Thread-188803] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:02:46.734 [DEBUG] [Thread-188803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:02:46.734 [DEBUG] [Thread-188803] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:02:46.734 [DEBUG] [Thread-188803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:02:46.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:02:46.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:02:46.791 [DEBUG] [Thread-188803] [transport.py] [_log()] userauth is OK
2025-11-24T11:02:46.791 [DEBUG] [Thread-188803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:02:46.791 [DEBUG] [Thread-188803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:02:46.791 [DEBUG] [Thread-188803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:02:46.791 [DEBUG] [Thread-188803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:02:46.806 [INFO] [Thread-188803] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:02:46.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:02:46.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:02:47.314 [DEBUG] [Thread-188805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:02:47.698 [DEBUG] [Thread-188803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:02:47.699 [DEBUG] [Thread-188803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:02:47.747 [DEBUG] [Thread-188803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:02:47.747 [DEBUG] [Thread-188803] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:02:47.755 [DEBUG] [Thread-188803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:02:47.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:02:47.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-11-24T11:02:47.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-11-24T11:02:47.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:02:47.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:02:47.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:02:47.788 [DEBUG] [Thread-188803] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:03:02.350 [DEBUG] [Thread-188806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:03:17.385 [DEBUG] [Thread-188807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:03:17.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:03:17.808 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:03:17.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-11-24T11:03:18.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 2, 56), 20.09, 25.74, 0.0, 34.05, 18.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:03:18.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:02:56
2025-11-24T11:03:18.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:03:18.927 [DEBUG] [Thread-188808] [transport.py] [_log()] starting thread (client mode): 0xd317fd00
2025-11-24T11:03:18.927 [DEBUG] [Thread-188808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:03:18.939 [DEBUG] [Thread-188808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:03:18.939 [INFO] [Thread-188808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:03:18.942 [DEBUG] [Thread-188808] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:03:18.942 [DEBUG] [Thread-188808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:03:18.942 [DEBUG] [Thread-188808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:03:18.942 [DEBUG] [Thread-188808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] client lang: <none>
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] server lang: <none>
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] kex follows: False
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] Compression: none
2025-11-24T11:03:18.943 [DEBUG] [Thread-188808] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:03:18.966 [DEBUG] [Thread-188808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:03:18.966 [DEBUG] [Thread-188808] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:03:18.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:03:18.967 [DEBUG] [Thread-188808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:03:18.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:03:19.009 [DEBUG] [Thread-188808] [transport.py] [_log()] userauth is OK
2025-11-24T11:03:19.009 [DEBUG] [Thread-188808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:03:19.009 [DEBUG] [Thread-188808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:03:19.009 [DEBUG] [Thread-188808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:03:19.010 [DEBUG] [Thread-188808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:03:19.042 [INFO] [Thread-188808] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:03:19.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:03:19.709 [DEBUG] [Thread-188808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:03:19.709 [DEBUG] [Thread-188808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:03:19.709 [DEBUG] [Thread-188808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:03:19.750 [DEBUG] [Thread-188808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:03:19.750 [DEBUG] [Thread-188808] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:03:19.753 [DEBUG] [Thread-188808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:03:19.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:03:19.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:03:19.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:03:19.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:03:19.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:03:19.771 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:03:19.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:03:19.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.377132 -999.00  +18.00  22.27     33   +1.50 1 1 1 1 1   888    0 19.14 81.49 ----- 22.3 22.3 178.6 30.1 24.8 -26.3 23.4 -29.3 23.3 -23.1 24.2 -26.8
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.377132
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:03:19.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:02:56', tmtdew=20.09, humidity=25.74, cloud=0.0, wind=34.05, temperature=18.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:03:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:03:19.773 [DEBUG] [Thread-188808] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:03:19.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:03:19.857 [DEBUG] [Thread-188811] [transport.py] [_log()] starting thread (client mode): 0xd31513f0
2025-11-24T11:03:19.857 [DEBUG] [Thread-188811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:03:19.872 [DEBUG] [Thread-188811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:03:19.872 [INFO] [Thread-188811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:03:19.879 [DEBUG] [Thread-188811] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:03:19.879 [DEBUG] [Thread-188811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:03:19.879 [DEBUG] [Thread-188811] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] client lang: <none>
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] server lang: <none>
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] kex follows: False
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] Compression: none
2025-11-24T11:03:19.880 [DEBUG] [Thread-188811] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:03:19.935 [DEBUG] [Thread-188811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:03:19.935 [DEBUG] [Thread-188811] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:03:19.935 [DEBUG] [Thread-188811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:03:19.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:03:19.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:03:19.991 [DEBUG] [Thread-188811] [transport.py] [_log()] userauth is OK
2025-11-24T11:03:19.991 [DEBUG] [Thread-188811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:03:19.992 [DEBUG] [Thread-188811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:03:19.992 [DEBUG] [Thread-188811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:03:19.992 [DEBUG] [Thread-188811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:03:20.006 [INFO] [Thread-188811] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:03:20.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:03:20.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:03:20.854 [DEBUG] [Thread-188811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:03:20.854 [DEBUG] [Thread-188811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:03:20.902 [DEBUG] [Thread-188811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:03:20.902 [DEBUG] [Thread-188811] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:03:20.911 [DEBUG] [Thread-188811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:03:20.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:03:20.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-11-24T11:03:20.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-11-24T11:03:20.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:03:20.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:03:20.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:03:20.948 [DEBUG] [Thread-188811] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:03:32.413 [DEBUG] [Thread-188813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:03:35.741 [DEBUG] [Thread-188814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:03:47.453 [DEBUG] [Thread-188815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:03:50.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:03:50.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:03:50.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-11-24T11:03:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 3, 29), 20.14, 25.63, 0.0, 32.48, 18.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:03:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:03:29
2025-11-24T11:03:51.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:03:52.086 [DEBUG] [Thread-188816] [transport.py] [_log()] starting thread (client mode): 0xd3190d30
2025-11-24T11:03:52.086 [DEBUG] [Thread-188816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:03:52.108 [DEBUG] [Thread-188816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:03:52.108 [INFO] [Thread-188816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:03:52.111 [DEBUG] [Thread-188816] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] client lang: <none>
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] server lang: <none>
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] kex follows: False
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] Compression: none
2025-11-24T11:03:52.112 [DEBUG] [Thread-188816] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:03:52.128 [DEBUG] [Thread-188816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:03:52.129 [DEBUG] [Thread-188816] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:03:52.129 [DEBUG] [Thread-188816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:03:52.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:03:52.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:03:52.131 [DEBUG] [Thread-188816] [transport.py] [_log()] userauth is OK
2025-11-24T11:03:52.132 [DEBUG] [Thread-188816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:03:52.132 [DEBUG] [Thread-188816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:03:52.132 [DEBUG] [Thread-188816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:03:52.132 [DEBUG] [Thread-188816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:03:52.156 [INFO] [Thread-188816] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:03:52.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:03:52.806 [DEBUG] [Thread-188816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:03:52.806 [DEBUG] [Thread-188816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:03:52.806 [DEBUG] [Thread-188816] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:03:52.847 [DEBUG] [Thread-188816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:03:52.847 [DEBUG] [Thread-188816] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:03:52.849 [DEBUG] [Thread-188816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:03:52.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:03:52.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:03:52.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:03:52.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:03:52.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:03:52.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:03:52.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.377480 -999.00  +18.20  18.37     33   +1.70 1 1 1 1 1   888    0 18.74 73.72 ----- 18.4 18.4 178.6 26.5 24.9 -25.4 23.5 -25.9 23.3 -23.2 24.2 -25.2
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.377480
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:03:52.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:03:29', tmtdew=20.14, humidity=25.63, cloud=0.0, wind=32.48, temperature=18.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:03:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:03:52.878 [DEBUG] [Thread-188816] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:03:52.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:03:52.962 [DEBUG] [Thread-188819] [transport.py] [_log()] starting thread (client mode): 0xd3192a10
2025-11-24T11:03:52.963 [DEBUG] [Thread-188819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:03:52.977 [DEBUG] [Thread-188819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:03:52.977 [INFO] [Thread-188819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] client lang: <none>
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] server lang: <none>
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] kex follows: False
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:03:52.985 [DEBUG] [Thread-188819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:03:52.986 [DEBUG] [Thread-188819] [transport.py] [_log()] Compression: none
2025-11-24T11:03:52.986 [DEBUG] [Thread-188819] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:03:53.043 [DEBUG] [Thread-188819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:03:53.043 [DEBUG] [Thread-188819] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:03:53.043 [DEBUG] [Thread-188819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:03:53.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:03:53.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:03:53.100 [DEBUG] [Thread-188819] [transport.py] [_log()] userauth is OK
2025-11-24T11:03:53.100 [DEBUG] [Thread-188819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:03:53.100 [DEBUG] [Thread-188819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:03:53.100 [DEBUG] [Thread-188819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:03:53.100 [DEBUG] [Thread-188819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:03:53.114 [INFO] [Thread-188819] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:03:53.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:03:53.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:03:54.020 [DEBUG] [Thread-188819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:03:54.020 [DEBUG] [Thread-188819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:03:54.068 [DEBUG] [Thread-188819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:03:54.069 [DEBUG] [Thread-188819] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:03:54.078 [DEBUG] [Thread-188819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:03:54.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:03:54.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-11-24T11:03:54.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:03:54.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:03:54.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:03:54.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:03:54.119 [DEBUG] [Thread-188819] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:04:02.484 [DEBUG] [Thread-188821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:04:17.525 [DEBUG] [Thread-188822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:04:24.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:04:24.130 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:04:24.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-11-24T11:04:24.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 4, 1), 19.29, 27.18, 0.0, 25.39, 17.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:04:24.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:04:01
2025-11-24T11:04:25.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:04:25.176 [DEBUG] [Thread-188823] [transport.py] [_log()] starting thread (client mode): 0xd3191c00
2025-11-24T11:04:25.176 [DEBUG] [Thread-188823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:04:25.196 [DEBUG] [Thread-188823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:04:25.196 [INFO] [Thread-188823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] client lang: <none>
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] server lang: <none>
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] kex follows: False
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] Compression: none
2025-11-24T11:04:25.200 [DEBUG] [Thread-188823] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:04:25.220 [DEBUG] [Thread-188823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:04:25.220 [DEBUG] [Thread-188823] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:04:25.221 [DEBUG] [Thread-188823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:04:25.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:04:25.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:04:25.223 [DEBUG] [Thread-188823] [transport.py] [_log()] userauth is OK
2025-11-24T11:04:25.223 [DEBUG] [Thread-188823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:04:25.223 [DEBUG] [Thread-188823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:04:25.223 [DEBUG] [Thread-188823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:04:25.223 [DEBUG] [Thread-188823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:04:25.248 [INFO] [Thread-188823] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:04:25.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:04:25.884 [DEBUG] [Thread-188823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:04:25.885 [DEBUG] [Thread-188823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:04:25.885 [DEBUG] [Thread-188823] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:04:25.926 [DEBUG] [Thread-188823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:04:25.926 [DEBUG] [Thread-188823] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:04:25.929 [DEBUG] [Thread-188823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:04:25.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:04:25.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:04:25.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:04:25.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:04:25.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:04:25.956 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:04:25.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:04:25.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.377827 -999.00  +18.20  18.59     31   +1.00 1 1 1 1 1   888    0 19.07 79.63 ----- 18.6 18.6 190.4 25.9 24.7 -26.3 23.2 -30.1 23.4 -25.5 24.1 -26.5
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.377827
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:04:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:04:01', tmtdew=19.29, humidity=27.18, cloud=0.0, wind=25.39, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:04:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:04:25.958 [DEBUG] [Thread-188823] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:04:26.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:04:26.042 [DEBUG] [Thread-188826] [transport.py] [_log()] starting thread (client mode): 0xd3191a20
2025-11-24T11:04:26.042 [DEBUG] [Thread-188826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:04:26.058 [DEBUG] [Thread-188826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:04:26.058 [INFO] [Thread-188826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:04:26.065 [DEBUG] [Thread-188826] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:04:26.065 [DEBUG] [Thread-188826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:04:26.065 [DEBUG] [Thread-188826] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:04:26.065 [DEBUG] [Thread-188826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] client lang: <none>
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] server lang: <none>
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] kex follows: False
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] Compression: none
2025-11-24T11:04:26.066 [DEBUG] [Thread-188826] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:04:26.122 [DEBUG] [Thread-188826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:04:26.123 [DEBUG] [Thread-188826] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:04:26.123 [DEBUG] [Thread-188826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:04:26.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:04:26.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:04:26.180 [DEBUG] [Thread-188826] [transport.py] [_log()] userauth is OK
2025-11-24T11:04:26.180 [DEBUG] [Thread-188826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:04:26.180 [DEBUG] [Thread-188826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:04:26.180 [DEBUG] [Thread-188826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:04:26.180 [DEBUG] [Thread-188826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:04:26.194 [INFO] [Thread-188826] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:04: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-11-24T11:04:26.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:04:27.073 [DEBUG] [Thread-188826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:04:27.073 [DEBUG] [Thread-188826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:04:27.122 [DEBUG] [Thread-188826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:04:27.122 [DEBUG] [Thread-188826] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:04:27.132 [DEBUG] [Thread-188826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:04:27.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:04:27.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-11-24T11:04:27.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:04:27.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:04:27.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:04:27.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:04:27.168 [DEBUG] [Thread-188826] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:04:32.573 [DEBUG] [Thread-188828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:04:35.897 [DEBUG] [Thread-188829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:04:47.624 [DEBUG] [Thread-188830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:04:57.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:04:57.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:04:57.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-11-24T11:04:57.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 4, 34), 19.69, 26.36, 0.0, 26.84, 18.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:04:57.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:04:34
2025-11-24T11:04:58.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:04:58.177 [DEBUG] [Thread-188831] [transport.py] [_log()] starting thread (client mode): 0xd317e1a0
2025-11-24T11:04:58.177 [DEBUG] [Thread-188831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:04:58.198 [DEBUG] [Thread-188831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:04:58.198 [INFO] [Thread-188831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:04:58.208 [DEBUG] [Thread-188831] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:04:58.209 [DEBUG] [Thread-188831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:04:58.209 [DEBUG] [Thread-188831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:04:58.209 [DEBUG] [Thread-188831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:04:58.209 [DEBUG] [Thread-188831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:04:58.210 [DEBUG] [Thread-188831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:04:58.210 [DEBUG] [Thread-188831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:04:58.210 [DEBUG] [Thread-188831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:04:58.210 [DEBUG] [Thread-188831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:04:58.210 [DEBUG] [Thread-188831] [transport.py] [_log()] client lang: <none>
2025-11-24T11:04:58.210 [DEBUG] [Thread-188831] [transport.py] [_log()] server lang: <none>
2025-11-24T11:04:58.210 [DEBUG] [Thread-188831] [transport.py] [_log()] kex follows: False
2025-11-24T11:04:58.210 [DEBUG] [Thread-188831] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:04:58.210 [DEBUG] [Thread-188831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:04:58.211 [DEBUG] [Thread-188831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:04:58.211 [DEBUG] [Thread-188831] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:04:58.212 [DEBUG] [Thread-188831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:04:58.212 [DEBUG] [Thread-188831] [transport.py] [_log()] Compression: none
2025-11-24T11:04:58.212 [DEBUG] [Thread-188831] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:04:58.226 [DEBUG] [Thread-188831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:04:58.227 [DEBUG] [Thread-188831] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:04:58.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:04:58.228 [DEBUG] [Thread-188831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:04:58.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:04:58.230 [DEBUG] [Thread-188831] [transport.py] [_log()] userauth is OK
2025-11-24T11:04:58.230 [DEBUG] [Thread-188831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:04:58.230 [DEBUG] [Thread-188831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:04:58.230 [DEBUG] [Thread-188831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:04:58.230 [DEBUG] [Thread-188831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:04:58.265 [INFO] [Thread-188831] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:04:58.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:04:58.909 [DEBUG] [Thread-188831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:04:58.909 [DEBUG] [Thread-188831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:04:58.910 [DEBUG] [Thread-188831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:04:58.950 [DEBUG] [Thread-188831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:04:58.950 [DEBUG] [Thread-188831] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:04:58.953 [DEBUG] [Thread-188831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:04:58.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:04:58.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:04:58.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:04:58.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:04:58.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:04:58.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:04:58.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:04:58.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:04:58.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:04:58.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.378174 -999.00  +18.20  25.62     30   +0.70 1 1 1 1 1   888    0 19.08 77.59 ----- 25.6 25.6 177.2 31.5 24.7 -25.8 23.2 -25.7 23.3 -23.9 24.1 -25.7
2025-11-24T11:04:58.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:04:58.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:04:58.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.378174
2025-11-24T11:04:58.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:04:58.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:04:58.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:04:58.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:04:58.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:04:58.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:04:34', tmtdew=19.69, humidity=26.36, cloud=0.0, wind=26.84, temperature=18.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:04:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:04:58.992 [DEBUG] [Thread-188831] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:04:59.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:04:59.087 [DEBUG] [Thread-188834] [transport.py] [_log()] starting thread (client mode): 0xd3153d90
2025-11-24T11:04:59.088 [DEBUG] [Thread-188834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:04:59.102 [DEBUG] [Thread-188834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:04:59.102 [INFO] [Thread-188834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] client lang: <none>
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] server lang: <none>
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] kex follows: False
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:04:59.110 [DEBUG] [Thread-188834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:04:59.111 [DEBUG] [Thread-188834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:04:59.111 [DEBUG] [Thread-188834] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:04:59.111 [DEBUG] [Thread-188834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:04:59.111 [DEBUG] [Thread-188834] [transport.py] [_log()] Compression: none
2025-11-24T11:04:59.111 [DEBUG] [Thread-188834] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:04:59.168 [DEBUG] [Thread-188834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:04:59.169 [DEBUG] [Thread-188834] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:04:59.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:04:59.170 [DEBUG] [Thread-188834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:04:59.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:04:59.225 [DEBUG] [Thread-188834] [transport.py] [_log()] userauth is OK
2025-11-24T11:04:59.225 [DEBUG] [Thread-188834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:04:59.225 [DEBUG] [Thread-188834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:04:59.225 [DEBUG] [Thread-188834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:04:59.225 [DEBUG] [Thread-188834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:04:59.244 [INFO] [Thread-188834] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:04:59.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:04:59.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:05:00.108 [DEBUG] [Thread-188834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:05:00.108 [DEBUG] [Thread-188834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:05:00.157 [DEBUG] [Thread-188834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:05:00.157 [DEBUG] [Thread-188834] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:05:00.166 [DEBUG] [Thread-188834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:05:00.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:05:00.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-11-24T11:05:00.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:05:00.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:05:00.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:05:00.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:05:00.201 [DEBUG] [Thread-188834] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:05:02.669 [DEBUG] [Thread-188836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:05:17.704 [DEBUG] [Thread-188837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:05:30.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:05:30.203 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:05:30.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-11-24T11:05:30.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 5, 6), 19.66, 26.36, 0.0, 24.6, 17.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:05:30.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:05:06
2025-11-24T11:05:31.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:05:31.275 [DEBUG] [Thread-188838] [transport.py] [_log()] starting thread (client mode): 0xd3152590
2025-11-24T11:05:31.276 [DEBUG] [Thread-188838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:05:31.296 [DEBUG] [Thread-188838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:05:31.296 [INFO] [Thread-188838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:05:31.300 [DEBUG] [Thread-188838] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:05:31.300 [DEBUG] [Thread-188838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:05:31.300 [DEBUG] [Thread-188838] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:05:31.300 [DEBUG] [Thread-188838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:05:31.300 [DEBUG] [Thread-188838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:05:31.300 [DEBUG] [Thread-188838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:05:31.300 [DEBUG] [Thread-188838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:05:31.300 [DEBUG] [Thread-188838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] client lang: <none>
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] server lang: <none>
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] kex follows: False
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] Compression: none
2025-11-24T11:05:31.301 [DEBUG] [Thread-188838] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:05:31.319 [DEBUG] [Thread-188838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:05:31.320 [DEBUG] [Thread-188838] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:05:31.320 [DEBUG] [Thread-188838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:05:31.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:05:31.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:05:31.322 [DEBUG] [Thread-188838] [transport.py] [_log()] userauth is OK
2025-11-24T11:05:31.322 [DEBUG] [Thread-188838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:05:31.323 [DEBUG] [Thread-188838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:05:31.323 [DEBUG] [Thread-188838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:05:31.323 [DEBUG] [Thread-188838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:05:31.358 [INFO] [Thread-188838] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:05:31.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:05:31.975 [DEBUG] [Thread-188838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:05:31.976 [DEBUG] [Thread-188838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:05:31.976 [DEBUG] [Thread-188838] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:05:32.016 [DEBUG] [Thread-188838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:05:32.016 [DEBUG] [Thread-188838] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:05:32.017 [DEBUG] [Thread-188838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:05:32.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:05:32.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:05:32.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:05:32.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:05:32.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:05:32.038 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:05:32.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:05:32.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:05:32.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:05:32.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.378521 -999.00  +18.00  18.64     30   +0.40 1 1 1 1 1   888    0 18.71 73.25 ----- 18.6 18.6 163.6 32.7 24.6 -25.6 23.4 -24.6 23.2 -26.8 24.0 -26.4
2025-11-24T11:05:32.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:05:32.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:05:32.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.378521
2025-11-24T11:05:32.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:05:32.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:05:32.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:05:32.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:05:32.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:05:32.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:05:06', tmtdew=19.66, humidity=26.36, cloud=0.0, wind=24.6, temperature=17.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:05:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:05:32.039 [DEBUG] [Thread-188838] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:05:32.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:05:32.135 [DEBUG] [Thread-188841] [transport.py] [_log()] starting thread (client mode): 0xd317c670
2025-11-24T11:05:32.136 [DEBUG] [Thread-188841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:05:32.151 [DEBUG] [Thread-188841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:05:32.151 [INFO] [Thread-188841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:05:32.158 [DEBUG] [Thread-188841] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:05:32.158 [DEBUG] [Thread-188841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:05:32.158 [DEBUG] [Thread-188841] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:05:32.158 [DEBUG] [Thread-188841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] client lang: <none>
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] server lang: <none>
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] kex follows: False
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:05:32.159 [DEBUG] [Thread-188841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:05:32.167 [DEBUG] [Thread-188841] [transport.py] [_log()] Compression: none
2025-11-24T11:05:32.167 [DEBUG] [Thread-188841] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:05:32.215 [DEBUG] [Thread-188841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:05:32.215 [DEBUG] [Thread-188841] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:05:32.215 [DEBUG] [Thread-188841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:05:32.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:05:32.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:05:32.272 [DEBUG] [Thread-188841] [transport.py] [_log()] userauth is OK
2025-11-24T11:05:32.272 [DEBUG] [Thread-188841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:05:32.272 [DEBUG] [Thread-188841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:05:32.272 [DEBUG] [Thread-188841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:05:32.272 [DEBUG] [Thread-188841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:05:32.286 [INFO] [Thread-188841] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:05:32.286 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:05:32.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:05:32.739 [DEBUG] [Thread-188843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:05:33.140 [DEBUG] [Thread-188841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:05:33.140 [DEBUG] [Thread-188841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:05:33.189 [DEBUG] [Thread-188841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:05:33.189 [DEBUG] [Thread-188841] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:05:33.198 [DEBUG] [Thread-188841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:05:33.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:05:33.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-11-24T11:05:33.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-11-24T11:05:33.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:05:33.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:05:33.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:05:33.239 [DEBUG] [Thread-188841] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:05:35.973 [DEBUG] [Thread-188844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:05:47.789 [DEBUG] [Thread-188845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:06:02.824 [DEBUG] [Thread-188846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:06:03.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:06:03.235 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:06:03.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-11-24T11:06:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 5, 38), 19.81, 25.76, 0.0, 26.11, 17.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:06:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:05:38
2025-11-24T11:06:04.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:06:04.293 [DEBUG] [Thread-188847] [transport.py] [_log()] starting thread (client mode): 0xd0712e30
2025-11-24T11:06:04.294 [DEBUG] [Thread-188847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:06:04.312 [DEBUG] [Thread-188847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:06:04.312 [INFO] [Thread-188847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] client lang: <none>
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] server lang: <none>
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] kex follows: False
2025-11-24T11:06:04.315 [DEBUG] [Thread-188847] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:06:04.316 [DEBUG] [Thread-188847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:06:04.316 [DEBUG] [Thread-188847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:06:04.316 [DEBUG] [Thread-188847] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:06:04.316 [DEBUG] [Thread-188847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:06:04.316 [DEBUG] [Thread-188847] [transport.py] [_log()] Compression: none
2025-11-24T11:06:04.316 [DEBUG] [Thread-188847] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:06:04.331 [DEBUG] [Thread-188847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:06:04.331 [DEBUG] [Thread-188847] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:06:04.332 [DEBUG] [Thread-188847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:06:04.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:06:04.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:06:04.334 [DEBUG] [Thread-188847] [transport.py] [_log()] userauth is OK
2025-11-24T11:06:04.334 [DEBUG] [Thread-188847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:06:04.334 [DEBUG] [Thread-188847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:06:04.334 [DEBUG] [Thread-188847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:06:04.334 [DEBUG] [Thread-188847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:06:04.353 [INFO] [Thread-188847] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:06:04.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:06:04.915 [DEBUG] [Thread-188847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:06:04.915 [DEBUG] [Thread-188847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:06:04.915 [DEBUG] [Thread-188847] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:06:04.955 [DEBUG] [Thread-188847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:06:04.956 [DEBUG] [Thread-188847] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:06:04.959 [DEBUG] [Thread-188847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:06:04.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:06:04.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:06:04.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:06:04.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:06:04.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:06:04.983 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:06:04.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:06:04.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:06:04.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:06:04.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.378869 -999.00  +18.20  22.47     31   +1.00 1 1 1 1 1   888    0 19.08 74.63 ----- 22.5 22.5 184.6 26.2 24.9 -25.3 23.5 -27.5 23.1 -22.4 24.2 -24.7
2025-11-24T11:06:04.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:06:04.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:06:04.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.378869
2025-11-24T11:06:04.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:06:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:06:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:06:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:06:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:06:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:05:38', tmtdew=19.81, humidity=25.76, cloud=0.0, wind=26.11, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:05:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:06:04.987 [DEBUG] [Thread-188847] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:06:05.071 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:06:05.084 [DEBUG] [Thread-188850] [transport.py] [_log()] starting thread (client mode): 0xd0738ee0
2025-11-24T11:06:05.084 [DEBUG] [Thread-188850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:06:05.101 [DEBUG] [Thread-188850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:06:05.102 [INFO] [Thread-188850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:06:05.112 [DEBUG] [Thread-188850] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:06:05.112 [DEBUG] [Thread-188850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:06:05.112 [DEBUG] [Thread-188850] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:06:05.112 [DEBUG] [Thread-188850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:06:05.112 [DEBUG] [Thread-188850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] client lang: <none>
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] server lang: <none>
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] kex follows: False
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] Compression: none
2025-11-24T11:06:05.113 [DEBUG] [Thread-188850] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:06:05.177 [DEBUG] [Thread-188850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:06:05.177 [DEBUG] [Thread-188850] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:06:05.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:06:05.179 [DEBUG] [Thread-188850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:06:05.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:06:05.233 [DEBUG] [Thread-188850] [transport.py] [_log()] userauth is OK
2025-11-24T11:06:05.233 [DEBUG] [Thread-188850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:06:05.233 [DEBUG] [Thread-188850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:06:05.234 [DEBUG] [Thread-188850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:06:05.234 [DEBUG] [Thread-188850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:06:05.253 [INFO] [Thread-188850] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:06:05.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:06:05.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:06:06.131 [DEBUG] [Thread-188850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:06:06.131 [DEBUG] [Thread-188850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:06:06.180 [DEBUG] [Thread-188850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:06:06.180 [DEBUG] [Thread-188850] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:06:06.194 [DEBUG] [Thread-188850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:06:06.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:06:06.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-11-24T11:06:06.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:06:06.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:06:06.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:06:06.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:06:06.230 [DEBUG] [Thread-188850] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:06:17.857 [DEBUG] [Thread-188852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:06:32.910 [DEBUG] [Thread-188853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:06:36.221 [DEBUG] [Thread-188854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:06:36.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:06:36.253 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:06:36.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-11-24T11:06:36.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 6, 11), 19.92, 25.54, 0.0, 24.08, 17.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:06:36.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:06:11
2025-11-24T11:06:37.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:06:37.249 [DEBUG] [Thread-188855] [transport.py] [_log()] starting thread (client mode): 0xd0710430
2025-11-24T11:06:37.249 [DEBUG] [Thread-188855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:06:37.270 [DEBUG] [Thread-188855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:06:37.270 [INFO] [Thread-188855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] client lang: <none>
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] server lang: <none>
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] kex follows: False
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] Compression: none
2025-11-24T11:06:37.273 [DEBUG] [Thread-188855] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:06:37.287 [DEBUG] [Thread-188855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:06:37.287 [DEBUG] [Thread-188855] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:06:37.287 [DEBUG] [Thread-188855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:06:37.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:06:37.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:06:37.288 [DEBUG] [Thread-188855] [transport.py] [_log()] userauth is OK
2025-11-24T11:06:37.288 [DEBUG] [Thread-188855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:06:37.288 [DEBUG] [Thread-188855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:06:37.288 [DEBUG] [Thread-188855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:06:37.288 [DEBUG] [Thread-188855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:06:37.314 [INFO] [Thread-188855] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:06:37.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:06:37.878 [DEBUG] [Thread-188855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:06:37.878 [DEBUG] [Thread-188855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:06:37.878 [DEBUG] [Thread-188855] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:06:37.919 [DEBUG] [Thread-188855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:06:37.919 [DEBUG] [Thread-188855] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:06:37.920 [DEBUG] [Thread-188855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:06:37.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:06:37.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:06:37.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:06:37.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:06:37.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:06:37.930 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:06:37.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.379216 -999.00  +18.20  24.89     31   +0.80 1 1 1 1 1   888    0 18.75 69.35 ----- 24.9 24.9 180.6 33.3 24.6 -27.2 23.3 -24.9 23.2 -24.5 24.0 -26.0
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.379216
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:06:37.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:06:11', tmtdew=19.92, humidity=25.54, cloud=0.0, wind=24.08, temperature=17.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:06:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:06:37.931 [DEBUG] [Thread-188855] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:06:38.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:06:38.019 [DEBUG] [Thread-188858] [transport.py] [_log()] starting thread (client mode): 0xd0713250
2025-11-24T11:06:38.019 [DEBUG] [Thread-188858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:06:38.033 [DEBUG] [Thread-188858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:06:38.034 [INFO] [Thread-188858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:06:38.041 [DEBUG] [Thread-188858] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:06:38.041 [DEBUG] [Thread-188858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:06:38.041 [DEBUG] [Thread-188858] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] client lang: <none>
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] server lang: <none>
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] kex follows: False
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] Compression: none
2025-11-24T11:06:38.042 [DEBUG] [Thread-188858] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:06:38.100 [DEBUG] [Thread-188858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:06:38.100 [DEBUG] [Thread-188858] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:06:38.100 [DEBUG] [Thread-188858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:06:38.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:06:38.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:06:38.156 [DEBUG] [Thread-188858] [transport.py] [_log()] userauth is OK
2025-11-24T11:06:38.156 [DEBUG] [Thread-188858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:06:38.156 [DEBUG] [Thread-188858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:06:38.156 [DEBUG] [Thread-188858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:06:38.156 [DEBUG] [Thread-188858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:06:38.172 [INFO] [Thread-188858] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:06:38.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:06:38.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:06:39.042 [DEBUG] [Thread-188858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:06:39.042 [DEBUG] [Thread-188858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:06:39.090 [DEBUG] [Thread-188858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:06:39.090 [DEBUG] [Thread-188858] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:06:39.099 [DEBUG] [Thread-188858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:06:39.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:06:39.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-11-24T11:06:39.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-11-24T11:06:39.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:06:39.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:06:39.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:06:39.134 [DEBUG] [Thread-188858] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:06:47.947 [DEBUG] [Thread-188860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:07:02.986 [DEBUG] [Thread-188861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:07:09.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:07:09.138 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:07:09.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-11-24T11:07:09.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 6, 44), 20.03, 25.38, 0.0, 23.63, 17.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:07:09.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:06:44
2025-11-24T11:07:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:07:10.227 [DEBUG] [Thread-188862] [transport.py] [_log()] starting thread (client mode): 0xd0711720
2025-11-24T11:07:10.227 [DEBUG] [Thread-188862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:07:10.250 [DEBUG] [Thread-188862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:07:10.251 [INFO] [Thread-188862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:07:10.254 [DEBUG] [Thread-188862] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:07:10.254 [DEBUG] [Thread-188862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:07:10.254 [DEBUG] [Thread-188862] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] client lang: <none>
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] server lang: <none>
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] kex follows: False
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:07:10.255 [DEBUG] [Thread-188862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:07:10.256 [DEBUG] [Thread-188862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:07:10.256 [DEBUG] [Thread-188862] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:07:10.256 [DEBUG] [Thread-188862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:07:10.256 [DEBUG] [Thread-188862] [transport.py] [_log()] Compression: none
2025-11-24T11:07:10.256 [DEBUG] [Thread-188862] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:07:10.274 [DEBUG] [Thread-188862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:07:10.274 [DEBUG] [Thread-188862] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:07:10.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:07:10.275 [DEBUG] [Thread-188862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:07:10.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:07:10.317 [DEBUG] [Thread-188862] [transport.py] [_log()] userauth is OK
2025-11-24T11:07:10.317 [DEBUG] [Thread-188862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:07:10.317 [DEBUG] [Thread-188862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:07:10.317 [DEBUG] [Thread-188862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:07:10.317 [DEBUG] [Thread-188862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:07:10.350 [INFO] [Thread-188862] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:07:10.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:07:11.051 [DEBUG] [Thread-188862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:07:11.052 [DEBUG] [Thread-188862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:07:11.052 [DEBUG] [Thread-188862] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:07:11.092 [DEBUG] [Thread-188862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:07:11.093 [DEBUG] [Thread-188862] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:07:11.095 [DEBUG] [Thread-188862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:07:11.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:07:11.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:07:11.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:07:11.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:07:11.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:07:11.114 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:07:11.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:07:11.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:07:11.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:07:11.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.379216 -999.00  +18.20  24.89     31   +0.80 1 1 1 1 1   888    0 18.75 69.35 ----- 24.9 24.9 180.6 33.3 24.6 -27.2 23.3 -24.9 23.2 -24.5 24.0 -26.0
2025-11-24T11:07:11.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:07:11.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:07:11.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.379216
2025-11-24T11:07:11.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:07:11.123 [DEBUG] [Thread-188862] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:07:11.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:07:11.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:07:11.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:07:11.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:07:11.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:06:44', tmtdew=20.03, humidity=25.38, cloud=0.0, wind=23.63, temperature=17.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:06:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:07:11.209 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:07:11.220 [DEBUG] [Thread-188865] [transport.py] [_log()] starting thread (client mode): 0xd31b0c10
2025-11-24T11:07:11.220 [DEBUG] [Thread-188865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:07:11.240 [DEBUG] [Thread-188865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:07:11.240 [INFO] [Thread-188865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] client lang: <none>
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] server lang: <none>
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] kex follows: False
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] Compression: none
2025-11-24T11:07:11.252 [DEBUG] [Thread-188865] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:07:11.313 [DEBUG] [Thread-188865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:07:11.313 [DEBUG] [Thread-188865] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:07:11.313 [DEBUG] [Thread-188865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:07:11.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:07:11.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:07:11.373 [DEBUG] [Thread-188865] [transport.py] [_log()] userauth is OK
2025-11-24T11:07:11.374 [DEBUG] [Thread-188865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:07:11.374 [DEBUG] [Thread-188865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:07:11.374 [DEBUG] [Thread-188865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:07:11.374 [DEBUG] [Thread-188865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:07:11.392 [INFO] [Thread-188865] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:07:11.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:07:11.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:07:12.271 [DEBUG] [Thread-188865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:07:12.271 [DEBUG] [Thread-188865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:07:12.324 [DEBUG] [Thread-188865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:07:12.324 [DEBUG] [Thread-188865] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:07:12.336 [DEBUG] [Thread-188865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:07:12.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:07:12.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-11-24T11:07:12.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-11-24T11:07:12.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:07:12.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:07:12.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:07:12.383 [DEBUG] [Thread-188865] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:07:18.015 [DEBUG] [Thread-188867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:07:33.056 [DEBUG] [Thread-188868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:07:36.281 [DEBUG] [Thread-188869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:07:42.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:07:42.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:07:42.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-11-24T11:07:43.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 7, 16), 20.2, 25.11, 0.0, 22.73, 17.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:07:43.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:07:16
2025-11-24T11:07:43.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:07:43.426 [DEBUG] [Thread-188870] [transport.py] [_log()] starting thread (client mode): 0xd317cc40
2025-11-24T11:07:43.427 [DEBUG] [Thread-188870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:07:43.448 [DEBUG] [Thread-188870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:07:43.448 [INFO] [Thread-188870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:07:43.449 [DEBUG] [Thread-188870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:07:43.449 [DEBUG] [Thread-188870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] client lang: <none>
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] server lang: <none>
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] kex follows: False
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] Compression: none
2025-11-24T11:07:43.450 [DEBUG] [Thread-188870] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:07:43.459 [DEBUG] [Thread-188870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:07:43.459 [DEBUG] [Thread-188870] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:07:43.460 [DEBUG] [Thread-188870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:07:43.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:07:43.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:07:43.462 [DEBUG] [Thread-188870] [transport.py] [_log()] userauth is OK
2025-11-24T11:07:43.462 [DEBUG] [Thread-188870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:07:43.462 [DEBUG] [Thread-188870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:07:43.462 [DEBUG] [Thread-188870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:07:43.462 [DEBUG] [Thread-188870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:07:43.482 [INFO] [Thread-188870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:07:43.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:07:44.119 [DEBUG] [Thread-188870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:07:44.119 [DEBUG] [Thread-188870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:07:44.119 [DEBUG] [Thread-188870] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:07:44.160 [DEBUG] [Thread-188870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:07:44.160 [DEBUG] [Thread-188870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:07:44.162 [DEBUG] [Thread-188870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:07:44.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:07:44.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:07:44.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:07:44.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:07:44.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:07:44.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:07:44.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:07:44.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:07:44.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:07:44.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.379910 -999.00  +17.80  18.72     32   +1.00 1 1 1 1 1   888    0 18.68 64.65 ----- 18.7 18.7 186.4 25.6 24.7 -26.0 22.9 -26.7 23.0 -24.2 23.9 -26.1
2025-11-24T11:07:44.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:07:44.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:07:44.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.379910
2025-11-24T11:07:44.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:07:44.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:07:44.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:07:44.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:07:44.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:07:44.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:07:16', tmtdew=20.2, humidity=25.11, cloud=0.0, wind=22.73, temperature=17.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:07:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:07:44.190 [DEBUG] [Thread-188870] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:07:44.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:07:44.275 [DEBUG] [Thread-188873] [transport.py] [_log()] starting thread (client mode): 0xd3153eb0
2025-11-24T11:07:44.275 [DEBUG] [Thread-188873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:07:44.290 [DEBUG] [Thread-188873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:07:44.290 [INFO] [Thread-188873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] client lang: <none>
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] server lang: <none>
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] kex follows: False
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:07:44.297 [DEBUG] [Thread-188873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:07:44.298 [DEBUG] [Thread-188873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:07:44.298 [DEBUG] [Thread-188873] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:07:44.298 [DEBUG] [Thread-188873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:07:44.298 [DEBUG] [Thread-188873] [transport.py] [_log()] Compression: none
2025-11-24T11:07:44.298 [DEBUG] [Thread-188873] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:07:44.357 [DEBUG] [Thread-188873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:07:44.357 [DEBUG] [Thread-188873] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:07:44.358 [DEBUG] [Thread-188873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:07:44.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:07:44.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:07:44.413 [DEBUG] [Thread-188873] [transport.py] [_log()] userauth is OK
2025-11-24T11:07:44.413 [DEBUG] [Thread-188873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:07:44.413 [DEBUG] [Thread-188873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:07:44.413 [DEBUG] [Thread-188873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:07:44.413 [DEBUG] [Thread-188873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:07:44.427 [INFO] [Thread-188873] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:07:44.427 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:07:44.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:07:45.273 [DEBUG] [Thread-188873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:07:45.274 [DEBUG] [Thread-188873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:07:45.321 [DEBUG] [Thread-188873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:07:45.322 [DEBUG] [Thread-188873] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:07:45.331 [DEBUG] [Thread-188873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:07:45.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:07:45.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:07:45.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:07:45.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:07:45.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:07:45.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:07:45.367 [DEBUG] [Thread-188873] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:07:48.092 [DEBUG] [Thread-188875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:08:03.147 [DEBUG] [Thread-188876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:08:15.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:08:15.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:08:15.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-11-24T11:08:16.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 7, 48), 19.72, 26.38, 0.0, 22.69, 17.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:08:16.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:07:48
2025-11-24T11:08:16.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:08:16.416 [DEBUG] [Thread-188877] [transport.py] [_log()] starting thread (client mode): 0xd073b970
2025-11-24T11:08:16.417 [DEBUG] [Thread-188877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:08:16.436 [DEBUG] [Thread-188877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:08:16.436 [INFO] [Thread-188877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] client lang: <none>
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] server lang: <none>
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] kex follows: False
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] Compression: none
2025-11-24T11:08:16.440 [DEBUG] [Thread-188877] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:08:16.458 [DEBUG] [Thread-188877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:08:16.459 [DEBUG] [Thread-188877] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:08:16.459 [DEBUG] [Thread-188877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:08:16.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:08:16.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:08:16.461 [DEBUG] [Thread-188877] [transport.py] [_log()] userauth is OK
2025-11-24T11:08:16.462 [DEBUG] [Thread-188877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:08:16.462 [DEBUG] [Thread-188877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:08:16.462 [DEBUG] [Thread-188877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:08:16.462 [DEBUG] [Thread-188877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:08:16.486 [INFO] [Thread-188877] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:08:16.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:08:17.138 [DEBUG] [Thread-188877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:08:17.138 [DEBUG] [Thread-188877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:08:17.138 [DEBUG] [Thread-188877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:08:17.179 [DEBUG] [Thread-188877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:08:17.179 [DEBUG] [Thread-188877] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:08:17.182 [DEBUG] [Thread-188877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:08:17.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:08:17.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:08:17.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:08:17.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:08:17.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:08:17.198 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:08:17.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:08:17.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:08:17.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:08:17.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.380257 -999.00  +17.90  18.30     32   +1.20 1 1 1 1 1   888    0 18.54 59.15 ----- 18.3 18.3 199.4 26.9 24.6 -25.1 23.2 -24.6 23.1 -24.8 24.0 -25.4
2025-11-24T11:08:17.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:08:17.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:08:17.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.380257
2025-11-24T11:08:17.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:08:17.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:08:17.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:08:17.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:08:17.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:08:17.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:07:48', tmtdew=19.72, humidity=26.38, cloud=0.0, wind=22.69, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:07:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:08:17.199 [DEBUG] [Thread-188877] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:08:17.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:08:17.281 [DEBUG] [Thread-188880] [transport.py] [_log()] starting thread (client mode): 0xd31532b0
2025-11-24T11:08:17.281 [DEBUG] [Thread-188880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:08:17.296 [DEBUG] [Thread-188880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:08:17.296 [INFO] [Thread-188880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:08:17.303 [DEBUG] [Thread-188880] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] client lang: <none>
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] server lang: <none>
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] kex follows: False
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] Compression: none
2025-11-24T11:08:17.304 [DEBUG] [Thread-188880] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:08:17.360 [DEBUG] [Thread-188880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:08:17.360 [DEBUG] [Thread-188880] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:08:17.360 [DEBUG] [Thread-188880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:08:17.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:08:17.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:08:17.421 [DEBUG] [Thread-188880] [transport.py] [_log()] userauth is OK
2025-11-24T11:08:17.421 [DEBUG] [Thread-188880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:08:17.421 [DEBUG] [Thread-188880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:08:17.421 [DEBUG] [Thread-188880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:08:17.421 [DEBUG] [Thread-188880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:08:17.438 [INFO] [Thread-188880] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:08:17.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:08:17.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:08:18.192 [DEBUG] [Thread-188882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:08:18.276 [DEBUG] [Thread-188880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:08:18.276 [DEBUG] [Thread-188880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:08:18.324 [DEBUG] [Thread-188880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:08:18.325 [DEBUG] [Thread-188880] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:08:18.334 [DEBUG] [Thread-188880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:08:18.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:08:18.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:08: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-11-24T11:08:18.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:08:18.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:08:18.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:08:18.373 [DEBUG] [Thread-188880] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:08:33.238 [DEBUG] [Thread-188883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:08:36.450 [DEBUG] [Thread-188884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:08:48.271 [DEBUG] [Thread-188885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:08:48.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:08:48.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:08:48.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-11-24T11:08:49.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 8, 21), 19.44, 26.86, 0.0, 22.5, 17.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:08:49.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:08:21
2025-11-24T11:08:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:08:49.486 [DEBUG] [Thread-188886] [transport.py] [_log()] starting thread (client mode): 0xd3192920
2025-11-24T11:08:49.486 [DEBUG] [Thread-188886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:08:49.506 [DEBUG] [Thread-188886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:08:49.506 [INFO] [Thread-188886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:08:49.509 [DEBUG] [Thread-188886] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] client lang: <none>
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] server lang: <none>
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] kex follows: False
2025-11-24T11:08:49.510 [DEBUG] [Thread-188886] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:08:49.511 [DEBUG] [Thread-188886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:08:49.511 [DEBUG] [Thread-188886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:08:49.511 [DEBUG] [Thread-188886] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:08:49.511 [DEBUG] [Thread-188886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:08:49.511 [DEBUG] [Thread-188886] [transport.py] [_log()] Compression: none
2025-11-24T11:08:49.511 [DEBUG] [Thread-188886] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:08:49.529 [DEBUG] [Thread-188886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:08:49.529 [DEBUG] [Thread-188886] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:08:49.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:08:49.530 [DEBUG] [Thread-188886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:08:49.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:08:49.533 [DEBUG] [Thread-188886] [transport.py] [_log()] userauth is OK
2025-11-24T11:08:49.533 [DEBUG] [Thread-188886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:08:49.533 [DEBUG] [Thread-188886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:08:49.533 [DEBUG] [Thread-188886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:08:49.533 [DEBUG] [Thread-188886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:08:49.567 [INFO] [Thread-188886] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:08:49.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:08:50.228 [DEBUG] [Thread-188886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:08:50.229 [DEBUG] [Thread-188886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:08:50.229 [DEBUG] [Thread-188886] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:08:50.269 [DEBUG] [Thread-188886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:08:50.270 [DEBUG] [Thread-188886] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:08:50.273 [DEBUG] [Thread-188886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:08:50.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:08:50.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:08:50.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:08:50.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:08:50.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:08:50.305 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:08:50.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:08:50.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:08:50.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:08:50.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.380605 -999.00  +17.70  13.41     32   +1.10 1 1 1 1 1   888    0 18.28 51.22 ----- 13.4 13.4 188.2 21.3 24.6 -25.0 23.2 -26.6 23.1 -24.3 24.0 -25.3
2025-11-24T11:08:50.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:08:50.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:08:50.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.380605
2025-11-24T11:08:50.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:08:50.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:08:50.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:08:50.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:08:50.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:08:50.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:08:21', tmtdew=19.44, humidity=26.86, cloud=0.0, wind=22.5, temperature=17.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:08:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:08:50.308 [DEBUG] [Thread-188886] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:08:50.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:08:50.404 [DEBUG] [Thread-188889] [transport.py] [_log()] starting thread (client mode): 0xd31927d0
2025-11-24T11:08:50.404 [DEBUG] [Thread-188889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:08:50.418 [DEBUG] [Thread-188889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:08:50.419 [INFO] [Thread-188889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] client lang: <none>
2025-11-24T11:08:50.426 [DEBUG] [Thread-188889] [transport.py] [_log()] server lang: <none>
2025-11-24T11:08:50.427 [DEBUG] [Thread-188889] [transport.py] [_log()] kex follows: False
2025-11-24T11:08:50.427 [DEBUG] [Thread-188889] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:08:50.427 [DEBUG] [Thread-188889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:08:50.427 [DEBUG] [Thread-188889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:08:50.427 [DEBUG] [Thread-188889] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:08:50.427 [DEBUG] [Thread-188889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:08:50.427 [DEBUG] [Thread-188889] [transport.py] [_log()] Compression: none
2025-11-24T11:08:50.427 [DEBUG] [Thread-188889] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:08:50.485 [DEBUG] [Thread-188889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:08:50.486 [DEBUG] [Thread-188889] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:08:50.486 [DEBUG] [Thread-188889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:08:50.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:08:50.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:08:50.542 [DEBUG] [Thread-188889] [transport.py] [_log()] userauth is OK
2025-11-24T11:08:50.543 [DEBUG] [Thread-188889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:08:50.543 [DEBUG] [Thread-188889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:08:50.543 [DEBUG] [Thread-188889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:08:50.543 [DEBUG] [Thread-188889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:08:50.561 [INFO] [Thread-188889] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:08:50.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:08:50.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:08:51.465 [DEBUG] [Thread-188889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:08:51.465 [DEBUG] [Thread-188889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:08:51.513 [DEBUG] [Thread-188889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:08:51.514 [DEBUG] [Thread-188889] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:08:51.523 [DEBUG] [Thread-188889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:08:51.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:08:51.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:08:51.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-11-24T11:08:51.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:08:51.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:08:51.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:08:51.559 [DEBUG] [Thread-188889] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:09:03.310 [DEBUG] [Thread-188891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:09:18.357 [DEBUG] [Thread-188892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:09:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:09:21.556 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:09:21.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:09:22.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 8, 53), 19.25, 26.84, 0.0, 15.26, 17.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:09:22.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:08:53
2025-11-24T11:09:22.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:09:22.546 [DEBUG] [Thread-188893] [transport.py] [_log()] starting thread (client mode): 0xd0701000
2025-11-24T11:09:22.547 [DEBUG] [Thread-188893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:09:22.567 [DEBUG] [Thread-188893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:09:22.567 [INFO] [Thread-188893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:09:22.570 [DEBUG] [Thread-188893] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:09:22.570 [DEBUG] [Thread-188893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:09:22.570 [DEBUG] [Thread-188893] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:09:22.570 [DEBUG] [Thread-188893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:09:22.570 [DEBUG] [Thread-188893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:09:22.570 [DEBUG] [Thread-188893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:09:22.570 [DEBUG] [Thread-188893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:09:22.570 [DEBUG] [Thread-188893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:09:22.570 [DEBUG] [Thread-188893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:09:22.571 [DEBUG] [Thread-188893] [transport.py] [_log()] client lang: <none>
2025-11-24T11:09:22.571 [DEBUG] [Thread-188893] [transport.py] [_log()] server lang: <none>
2025-11-24T11:09:22.571 [DEBUG] [Thread-188893] [transport.py] [_log()] kex follows: False
2025-11-24T11:09:22.571 [DEBUG] [Thread-188893] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:09:22.571 [DEBUG] [Thread-188893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:09:22.571 [DEBUG] [Thread-188893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:09:22.571 [DEBUG] [Thread-188893] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:09:22.571 [DEBUG] [Thread-188893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:09:22.571 [DEBUG] [Thread-188893] [transport.py] [_log()] Compression: none
2025-11-24T11:09:22.571 [DEBUG] [Thread-188893] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:09:22.598 [DEBUG] [Thread-188893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:09:22.599 [DEBUG] [Thread-188893] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:09:22.600 [DEBUG] [Thread-188893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:09:22.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:09:22.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:09:22.602 [DEBUG] [Thread-188893] [transport.py] [_log()] userauth is OK
2025-11-24T11:09:22.603 [DEBUG] [Thread-188893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:09:22.603 [DEBUG] [Thread-188893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:09:22.603 [DEBUG] [Thread-188893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:09:22.603 [DEBUG] [Thread-188893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:09:22.627 [INFO] [Thread-188893] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:09:22.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:09:23.277 [DEBUG] [Thread-188893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:09:23.286 [DEBUG] [Thread-188893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:09:23.286 [DEBUG] [Thread-188893] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:09:23.318 [DEBUG] [Thread-188893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:09:23.318 [DEBUG] [Thread-188893] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:09:23.320 [DEBUG] [Thread-188893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:09:23.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:09:23.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:09:23.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:09:23.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:09:23.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:09:23.339 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:09:23.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:09:23.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:09:23.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:09:23.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.380952 -999.00  +18.00   7.43     32   +1.30 1 1 1 1 1   888    0 18.28 49.30 ----- 7.4 7.4 209.1 14.7 24.7 -25.1 23.6 -23.9 23.3 -23.0 24.2 -24.0
2025-11-24T11:09:23.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:09:23.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:09:23.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.380952
2025-11-24T11:09:23.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:09:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:09:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:09:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:09:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:09:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:08:53', tmtdew=19.25, humidity=26.84, cloud=0.0, wind=15.26, temperature=17.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:08:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:09:23.340 [DEBUG] [Thread-188893] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:09:23.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:09:23.423 [DEBUG] [Thread-188896] [transport.py] [_log()] starting thread (client mode): 0xd0738ee0
2025-11-24T11:09:23.423 [DEBUG] [Thread-188896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:09:23.438 [DEBUG] [Thread-188896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:09:23.438 [INFO] [Thread-188896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] client lang: <none>
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] server lang: <none>
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] kex follows: False
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] Compression: none
2025-11-24T11:09:23.447 [DEBUG] [Thread-188896] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:09:23.504 [DEBUG] [Thread-188896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:09:23.504 [DEBUG] [Thread-188896] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:09:23.504 [DEBUG] [Thread-188896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:09:23.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:09:23.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:09:23.561 [DEBUG] [Thread-188896] [transport.py] [_log()] userauth is OK
2025-11-24T11:09:23.561 [DEBUG] [Thread-188896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:09:23.561 [DEBUG] [Thread-188896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:09:23.561 [DEBUG] [Thread-188896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:09:23.561 [DEBUG] [Thread-188896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:09:23.575 [INFO] [Thread-188896] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:09:23.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:09:23.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:09:24.427 [DEBUG] [Thread-188896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:09:24.428 [DEBUG] [Thread-188896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:09:24.476 [DEBUG] [Thread-188896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:09:24.476 [DEBUG] [Thread-188896] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:09:24.485 [DEBUG] [Thread-188896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:09:24.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:09:24.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:09:24.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-11-24T11:09:24.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:09:24.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:09:24.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:09:24.525 [DEBUG] [Thread-188896] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:09:33.399 [DEBUG] [Thread-188898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:09:36.668 [DEBUG] [Thread-188899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:09:48.450 [DEBUG] [Thread-188900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:09:54.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:09:54.547 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:09:54.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:09:55.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 9, 26), 19.25, 26.84, 0.0, 14.72, 17.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:09:55.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:09:26
2025-11-24T11:09:55.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:09:55.516 [DEBUG] [Thread-188901] [transport.py] [_log()] starting thread (client mode): 0xd0701360
2025-11-24T11:09:55.517 [DEBUG] [Thread-188901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:09:55.540 [DEBUG] [Thread-188901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:09:55.540 [INFO] [Thread-188901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] client lang: <none>
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] server lang: <none>
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] kex follows: False
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] Compression: none
2025-11-24T11:09:55.544 [DEBUG] [Thread-188901] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:09:55.561 [DEBUG] [Thread-188901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:09:55.562 [DEBUG] [Thread-188901] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:09:55.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:09:55.563 [DEBUG] [Thread-188901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:09:55.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:09:55.565 [DEBUG] [Thread-188901] [transport.py] [_log()] userauth is OK
2025-11-24T11:09:55.566 [DEBUG] [Thread-188901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:09:55.566 [DEBUG] [Thread-188901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:09:55.566 [DEBUG] [Thread-188901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:09:55.566 [DEBUG] [Thread-188901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:09:55.590 [INFO] [Thread-188901] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:09:55.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:09:56.239 [DEBUG] [Thread-188901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:09:56.239 [DEBUG] [Thread-188901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:09:56.240 [DEBUG] [Thread-188901] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:09:56.281 [DEBUG] [Thread-188901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:09:56.281 [DEBUG] [Thread-188901] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:09:56.285 [DEBUG] [Thread-188901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:09:56.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:09:56.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:09:56.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:09:56.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:09:56.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:09:56.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:09:56.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:09:56.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:09:56.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:09:56.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.381299 -999.00  +18.20  16.84     32   +1.30 1 1 1 1 1   888    0 18.25 47.26 ----- 16.8 16.8 181.6 23.7 24.9 -25.5 23.6 -27.3 23.3 -23.4 24.2 -24.8
2025-11-24T11:09:56.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:09:56.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:09:56.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.381299
2025-11-24T11:09:56.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:09:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:09:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:09:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:09:56.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:09:56.311 [DEBUG] [Thread-188901] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:09:56.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:09:26', tmtdew=19.25, humidity=26.84, cloud=0.0, wind=14.72, temperature=17.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:09:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:09:56.403 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:09:56.414 [DEBUG] [Thread-188904] [transport.py] [_log()] starting thread (client mode): 0xc9b837f0
2025-11-24T11:09:56.414 [DEBUG] [Thread-188904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:09:56.429 [DEBUG] [Thread-188904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:09:56.429 [INFO] [Thread-188904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:09:56.437 [DEBUG] [Thread-188904] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:09:56.437 [DEBUG] [Thread-188904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:09:56.437 [DEBUG] [Thread-188904] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:09:56.437 [DEBUG] [Thread-188904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:09:56.437 [DEBUG] [Thread-188904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:09:56.437 [DEBUG] [Thread-188904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:09:56.437 [DEBUG] [Thread-188904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:09:56.437 [DEBUG] [Thread-188904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:09:56.437 [DEBUG] [Thread-188904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:09:56.437 [DEBUG] [Thread-188904] [transport.py] [_log()] client lang: <none>
2025-11-24T11:09:56.438 [DEBUG] [Thread-188904] [transport.py] [_log()] server lang: <none>
2025-11-24T11:09:56.438 [DEBUG] [Thread-188904] [transport.py] [_log()] kex follows: False
2025-11-24T11:09:56.438 [DEBUG] [Thread-188904] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:09:56.438 [DEBUG] [Thread-188904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:09:56.438 [DEBUG] [Thread-188904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:09:56.438 [DEBUG] [Thread-188904] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:09:56.438 [DEBUG] [Thread-188904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:09:56.438 [DEBUG] [Thread-188904] [transport.py] [_log()] Compression: none
2025-11-24T11:09:56.438 [DEBUG] [Thread-188904] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:09:56.500 [DEBUG] [Thread-188904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:09:56.500 [DEBUG] [Thread-188904] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:09:56.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:09:56.501 [DEBUG] [Thread-188904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:09:56.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:09:56.559 [DEBUG] [Thread-188904] [transport.py] [_log()] userauth is OK
2025-11-24T11:09:56.559 [DEBUG] [Thread-188904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:09:56.559 [DEBUG] [Thread-188904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:09:56.559 [DEBUG] [Thread-188904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:09:56.559 [DEBUG] [Thread-188904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:09:56.579 [INFO] [Thread-188904] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:09:56.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:09:56.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:09:57.440 [DEBUG] [Thread-188904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:09:57.440 [DEBUG] [Thread-188904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:09:57.488 [DEBUG] [Thread-188904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:09:57.488 [DEBUG] [Thread-188904] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:09:57.502 [DEBUG] [Thread-188904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:09:57.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:09: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')
2025-11-24T11:09:57.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-11-24T11:09:57.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:09:57.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:09:57.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:09:57.539 [DEBUG] [Thread-188904] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:10:03.481 [DEBUG] [Thread-188906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:10:18.520 [DEBUG] [Thread-188907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:10:27.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:10:27.549 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:10: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-11-24T11:10:28.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 9, 58), 19.39, 26.84, 0.0, 18.69, 17.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:10:28.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:09:58
2025-11-24T11:10:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:10:28.536 [DEBUG] [Thread-188908] [transport.py] [_log()] starting thread (client mode): 0xd31b0e20
2025-11-24T11:10:28.536 [DEBUG] [Thread-188908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:10:28.556 [DEBUG] [Thread-188908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:10:28.556 [INFO] [Thread-188908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:10:28.558 [DEBUG] [Thread-188908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] client lang: <none>
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] server lang: <none>
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] kex follows: False
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:10:28.559 [DEBUG] [Thread-188908] [transport.py] [_log()] Compression: none
2025-11-24T11:10:28.560 [DEBUG] [Thread-188908] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:10:28.575 [DEBUG] [Thread-188908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:10:28.575 [DEBUG] [Thread-188908] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:10:28.575 [DEBUG] [Thread-188908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:10:28.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:10:28.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:10:28.576 [DEBUG] [Thread-188908] [transport.py] [_log()] userauth is OK
2025-11-24T11:10:28.576 [DEBUG] [Thread-188908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:10:28.576 [DEBUG] [Thread-188908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:10:28.576 [DEBUG] [Thread-188908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:10:28.577 [DEBUG] [Thread-188908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:10:28.597 [INFO] [Thread-188908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:10:28.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:10:29.230 [DEBUG] [Thread-188908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:10:29.230 [DEBUG] [Thread-188908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:10:29.231 [DEBUG] [Thread-188908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:10:29.271 [DEBUG] [Thread-188908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:10:29.272 [DEBUG] [Thread-188908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:10:29.275 [DEBUG] [Thread-188908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:10:29.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:10:29.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:10:29.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:10:29.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:10:29.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:10:29.311 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:10:29.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:10:29.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:10:29.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:10:29.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.381646 -999.00  +18.20  14.32     31   +1.10 1 1 1 1 1   888    0 18.22 40.36 ----- 14.3 14.3 205.8 23.5 24.9 -25.1 23.4 -28.8 23.3 -23.8 24.1 -26.0
2025-11-24T11:10:29.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:10:29.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:10:29.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.381646
2025-11-24T11:10:29.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:10:29.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:10:29.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:10:29.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:10:29.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:10:29.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:09:58', tmtdew=19.39, humidity=26.84, cloud=0.0, wind=18.69, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:09:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:10:29.314 [DEBUG] [Thread-188908] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:10:29.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:10:29.407 [DEBUG] [Thread-188911] [transport.py] [_log()] starting thread (client mode): 0xd31b1780
2025-11-24T11:10:29.407 [DEBUG] [Thread-188911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:10:29.422 [DEBUG] [Thread-188911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:10:29.422 [INFO] [Thread-188911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] client lang: <none>
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] server lang: <none>
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] kex follows: False
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:10:29.429 [DEBUG] [Thread-188911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:10:29.430 [DEBUG] [Thread-188911] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:10:29.430 [DEBUG] [Thread-188911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:10:29.430 [DEBUG] [Thread-188911] [transport.py] [_log()] Compression: none
2025-11-24T11:10:29.430 [DEBUG] [Thread-188911] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:10:29.485 [DEBUG] [Thread-188911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:10:29.485 [DEBUG] [Thread-188911] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:10:29.485 [DEBUG] [Thread-188911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:10:29.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:10:29.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:10:29.541 [DEBUG] [Thread-188911] [transport.py] [_log()] userauth is OK
2025-11-24T11:10:29.541 [DEBUG] [Thread-188911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:10:29.541 [DEBUG] [Thread-188911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:10:29.541 [DEBUG] [Thread-188911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:10:29.541 [DEBUG] [Thread-188911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:10:29.555 [INFO] [Thread-188911] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:10:29.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:10:29.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:10:30.442 [DEBUG] [Thread-188911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:10:30.442 [DEBUG] [Thread-188911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:10:30.490 [DEBUG] [Thread-188911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:10:30.490 [DEBUG] [Thread-188911] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:10:30.499 [DEBUG] [Thread-188911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:10:30.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:10:30.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:10:30.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-11-24T11:10:30.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:10:30.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:10:30.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:10:30.535 [DEBUG] [Thread-188911] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:10:33.568 [DEBUG] [Thread-188913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:10:36.897 [DEBUG] [Thread-188914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:10:48.619 [DEBUG] [Thread-188915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:11:00.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:11:00.547 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:11:00.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:11:01.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 10, 30), 19.48, 26.68, 0.0, 20.71, 17.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:11:01.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:10:30
2025-11-24T11:11:01.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:11:01.645 [DEBUG] [Thread-188916] [transport.py] [_log()] starting thread (client mode): 0xd317f370
2025-11-24T11:11:01.645 [DEBUG] [Thread-188916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:11:01.666 [DEBUG] [Thread-188916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:11:01.666 [INFO] [Thread-188916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] client lang: <none>
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] server lang: <none>
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] kex follows: False
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:11:01.669 [DEBUG] [Thread-188916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:11:01.670 [DEBUG] [Thread-188916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:11:01.670 [DEBUG] [Thread-188916] [transport.py] [_log()] Compression: none
2025-11-24T11:11:01.670 [DEBUG] [Thread-188916] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:11:01.684 [DEBUG] [Thread-188916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:11:01.684 [DEBUG] [Thread-188916] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:11:01.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:11:01.685 [DEBUG] [Thread-188916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:11:01.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:11:01.685 [DEBUG] [Thread-188916] [transport.py] [_log()] userauth is OK
2025-11-24T11:11:01.685 [DEBUG] [Thread-188916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:11:01.685 [DEBUG] [Thread-188916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:11:01.685 [DEBUG] [Thread-188916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:11:01.685 [DEBUG] [Thread-188916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:11:01.698 [INFO] [Thread-188916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:11:01.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:11:02.317 [DEBUG] [Thread-188916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:11:02.317 [DEBUG] [Thread-188916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:11:02.317 [DEBUG] [Thread-188916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:11:02.358 [DEBUG] [Thread-188916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:11:02.358 [DEBUG] [Thread-188916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:11:02.360 [DEBUG] [Thread-188916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:11:02.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:11:02.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:11:02.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:11:02.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:11:02.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:11:02.378 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:11:02.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:11:02.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:11:02.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:11:02.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.381993 -999.00  +18.30  14.51     31   +1.30 1 1 1 1 1   888    0 17.86 34.25 ----- 14.5 14.5 167.3 19.0 25.1 -25.0 23.7 -23.8 23.4 -22.4 24.4 -24.6
2025-11-24T11:11:02.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:11:02.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:11:02.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.381993
2025-11-24T11:11:02.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:11:02.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:11:02.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:11:02.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:11:02.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:11:02.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:10:30', tmtdew=19.48, humidity=26.68, cloud=0.0, wind=20.71, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:10:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:11:02.380 [DEBUG] [Thread-188916] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:11:02.454 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:11:02.465 [DEBUG] [Thread-188919] [transport.py] [_log()] starting thread (client mode): 0xd0703250
2025-11-24T11:11:02.465 [DEBUG] [Thread-188919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:11:02.480 [DEBUG] [Thread-188919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:11:02.480 [INFO] [Thread-188919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] client lang: <none>
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] server lang: <none>
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] kex follows: False
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] Compression: none
2025-11-24T11:11:02.488 [DEBUG] [Thread-188919] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:11:02.545 [DEBUG] [Thread-188919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:11:02.545 [DEBUG] [Thread-188919] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:11:02.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:11:02.545 [DEBUG] [Thread-188919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:11:02.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:11:02.601 [DEBUG] [Thread-188919] [transport.py] [_log()] userauth is OK
2025-11-24T11:11:02.601 [DEBUG] [Thread-188919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:11:02.602 [DEBUG] [Thread-188919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:11:02.602 [DEBUG] [Thread-188919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:11:02.602 [DEBUG] [Thread-188919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:11:02.615 [INFO] [Thread-188919] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:11:02.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:11:02.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:11:03.478 [DEBUG] [Thread-188919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:11:03.478 [DEBUG] [Thread-188919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:11:03.526 [DEBUG] [Thread-188919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:11:03.526 [DEBUG] [Thread-188919] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:11:03.534 [DEBUG] [Thread-188919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:11:03.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:11:03.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-11-24T11:11:03.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-11-24T11:11:03.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:11:03.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:11:03.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:11:03.564 [DEBUG] [Thread-188919] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:11:03.649 [DEBUG] [Thread-188921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:11:18.699 [DEBUG] [Thread-188922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:11:33.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:11:33.588 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:11:33.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:11:33.737 [DEBUG] [Thread-188923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:11:34.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 11, 3), 19.65, 26.46, 0.0, 21.81, 18.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:11:34.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:11:03
2025-11-24T11:11:34.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:11:34.577 [DEBUG] [Thread-188924] [transport.py] [_log()] starting thread (client mode): 0xd31b37c0
2025-11-24T11:11:34.578 [DEBUG] [Thread-188924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:11:34.598 [DEBUG] [Thread-188924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:11:34.598 [INFO] [Thread-188924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:11:34.608 [DEBUG] [Thread-188924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] client lang: <none>
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] server lang: <none>
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] kex follows: False
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:11:34.609 [DEBUG] [Thread-188924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:11:34.610 [DEBUG] [Thread-188924] [transport.py] [_log()] Compression: none
2025-11-24T11:11:34.610 [DEBUG] [Thread-188924] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:11:34.627 [DEBUG] [Thread-188924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:11:34.628 [DEBUG] [Thread-188924] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:11:34.629 [DEBUG] [Thread-188924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:11:34.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:11:34.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:11:34.631 [DEBUG] [Thread-188924] [transport.py] [_log()] userauth is OK
2025-11-24T11:11:34.631 [DEBUG] [Thread-188924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:11:34.631 [DEBUG] [Thread-188924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:11:34.632 [DEBUG] [Thread-188924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:11:34.632 [DEBUG] [Thread-188924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:11:34.656 [INFO] [Thread-188924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:11:34.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:11:35.261 [DEBUG] [Thread-188924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:11:35.262 [DEBUG] [Thread-188924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:11:35.262 [DEBUG] [Thread-188924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:11:35.302 [DEBUG] [Thread-188924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:11:35.302 [DEBUG] [Thread-188924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:11:35.305 [DEBUG] [Thread-188924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:11:35.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:11:35.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:11:35.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:11:35.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:11:35.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:11:35.322 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:11:35.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.382688 -999.00  +18.60  13.54     31   +1.20 1 1 1 1 1   888    0 18.09 33.80 ----- 13.5 13.5 158.7 20.0 25.1 -24.1 23.7 -24.1 23.5 -23.8 24.4 -24.4
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.382688
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:11:35.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:11:03', tmtdew=19.65, humidity=26.46, cloud=0.0, wind=21.81, temperature=18.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:11:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:11:35.323 [DEBUG] [Thread-188924] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:11:35.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:11:35.406 [DEBUG] [Thread-188927] [transport.py] [_log()] starting thread (client mode): 0xd3152080
2025-11-24T11:11:35.406 [DEBUG] [Thread-188927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:11:35.420 [DEBUG] [Thread-188927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:11:35.421 [INFO] [Thread-188927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:11:35.428 [DEBUG] [Thread-188927] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:11:35.428 [DEBUG] [Thread-188927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:11:35.428 [DEBUG] [Thread-188927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:11:35.428 [DEBUG] [Thread-188927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:11:35.428 [DEBUG] [Thread-188927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:11:35.428 [DEBUG] [Thread-188927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:11:35.428 [DEBUG] [Thread-188927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:11:35.428 [DEBUG] [Thread-188927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:11:35.428 [DEBUG] [Thread-188927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:11:35.429 [DEBUG] [Thread-188927] [transport.py] [_log()] client lang: <none>
2025-11-24T11:11:35.429 [DEBUG] [Thread-188927] [transport.py] [_log()] server lang: <none>
2025-11-24T11:11:35.429 [DEBUG] [Thread-188927] [transport.py] [_log()] kex follows: False
2025-11-24T11:11:35.429 [DEBUG] [Thread-188927] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:11:35.429 [DEBUG] [Thread-188927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:11:35.429 [DEBUG] [Thread-188927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:11:35.429 [DEBUG] [Thread-188927] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:11:35.429 [DEBUG] [Thread-188927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:11:35.429 [DEBUG] [Thread-188927] [transport.py] [_log()] Compression: none
2025-11-24T11:11:35.429 [DEBUG] [Thread-188927] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:11:35.486 [DEBUG] [Thread-188927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:11:35.487 [DEBUG] [Thread-188927] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:11:35.487 [DEBUG] [Thread-188927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:11:35.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:11:35.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:11:35.541 [DEBUG] [Thread-188927] [transport.py] [_log()] userauth is OK
2025-11-24T11:11:35.541 [DEBUG] [Thread-188927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:11:35.541 [DEBUG] [Thread-188927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:11:35.541 [DEBUG] [Thread-188927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:11:35.541 [DEBUG] [Thread-188927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:11:35.556 [INFO] [Thread-188927] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:11:35.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:11:35.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:11:36.458 [DEBUG] [Thread-188927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:11:36.458 [DEBUG] [Thread-188927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:11:36.507 [DEBUG] [Thread-188927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:11:36.507 [DEBUG] [Thread-188927] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:11:36.519 [DEBUG] [Thread-188927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:11:36.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:11: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-11-24T11:11:36.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-11-24T11:11:36.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:11:36.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:11:36.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:11:36.550 [DEBUG] [Thread-188927] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:11:36.927 [DEBUG] [Thread-188929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:11:48.775 [DEBUG] [Thread-188930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:12:03.817 [DEBUG] [Thread-188931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:12:06.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:12:06.563 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:12:06.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-11-24T11:12:07.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 11, 35), 20.44, 25.0, 0.0, 24.67, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:12:07.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:11:35
2025-11-24T11:12:07.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:12:07.520 [DEBUG] [Thread-188932] [transport.py] [_log()] starting thread (client mode): 0xd317dcf0
2025-11-24T11:12:07.520 [DEBUG] [Thread-188932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:12:07.543 [DEBUG] [Thread-188932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:12:07.543 [INFO] [Thread-188932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:12:07.545 [DEBUG] [Thread-188932] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] client lang: <none>
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] server lang: <none>
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] kex follows: False
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] Compression: none
2025-11-24T11:12:07.546 [DEBUG] [Thread-188932] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:12:07.566 [DEBUG] [Thread-188932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:12:07.567 [DEBUG] [Thread-188932] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:12:07.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:12:07.568 [DEBUG] [Thread-188932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:12:07.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:12:07.579 [DEBUG] [Thread-188932] [transport.py] [_log()] userauth is OK
2025-11-24T11:12:07.580 [DEBUG] [Thread-188932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:12:07.580 [DEBUG] [Thread-188932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:12:07.580 [DEBUG] [Thread-188932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:12:07.580 [DEBUG] [Thread-188932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:12:07.617 [INFO] [Thread-188932] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:12:07.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:12:08.293 [DEBUG] [Thread-188932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:12:08.293 [DEBUG] [Thread-188932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:12:08.293 [DEBUG] [Thread-188932] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:12:08.334 [DEBUG] [Thread-188932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:12:08.334 [DEBUG] [Thread-188932] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:12:08.336 [DEBUG] [Thread-188932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:12:08.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:12:08.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:12:08.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:12:08.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:12:08.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:12:08.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:12:08.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:12:08.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:12:08.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:12:08.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.383035 -999.00  +18.70  25.38     30   +1.10 1 1 1 1 1   888    0 17.69 33.10 ----- 25.4 25.4 165.4 32.0 25.1 -26.7 24.1 -26.8 23.7 -23.0 24.6 -26.2
2025-11-24T11:12:08.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:12:08.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:12:08.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.383035
2025-11-24T11:12:08.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:12:08.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:12:08.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:12:08.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:12:08.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:12:08.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:11:35', tmtdew=20.44, humidity=25.0, cloud=0.0, wind=24.67, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:11:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:12:08.356 [DEBUG] [Thread-188932] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:12:08.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:12:08.442 [DEBUG] [Thread-188935] [transport.py] [_log()] starting thread (client mode): 0xc9b83eb0
2025-11-24T11:12:08.442 [DEBUG] [Thread-188935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:12:08.457 [DEBUG] [Thread-188935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:12:08.457 [INFO] [Thread-188935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] client lang: <none>
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] server lang: <none>
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] kex follows: False
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] Compression: none
2025-11-24T11:12:08.465 [DEBUG] [Thread-188935] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:12:08.524 [DEBUG] [Thread-188935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:12:08.524 [DEBUG] [Thread-188935] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:12:08.524 [DEBUG] [Thread-188935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:12:08.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:12:08.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:12:08.582 [DEBUG] [Thread-188935] [transport.py] [_log()] userauth is OK
2025-11-24T11:12:08.582 [DEBUG] [Thread-188935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:12:08.582 [DEBUG] [Thread-188935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:12:08.582 [DEBUG] [Thread-188935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:12:08.582 [DEBUG] [Thread-188935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:12:08.596 [INFO] [Thread-188935] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:12:08.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:12:08.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:12:09.500 [DEBUG] [Thread-188935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:12:09.500 [DEBUG] [Thread-188935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:12:09.548 [DEBUG] [Thread-188935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:12:09.548 [DEBUG] [Thread-188935] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:12:09.556 [DEBUG] [Thread-188935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:12:09.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:12:09.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-11-24T11:12:09.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-11-24T11:12:09.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:12:09.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:12:09.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:12:09.590 [DEBUG] [Thread-188935] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:12:18.848 [DEBUG] [Thread-188937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:12:33.887 [DEBUG] [Thread-188938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:12:36.992 [DEBUG] [Thread-188939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:12:39.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:12:39.613 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:12:39.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-11-24T11:12:40.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 12, 7), 20.18, 25.33, 0.0, 21.95, 18.39, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:12:40.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:12:07
2025-11-24T11:12:40.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:12:40.695 [DEBUG] [Thread-188940] [transport.py] [_log()] starting thread (client mode): 0xd31cdff0
2025-11-24T11:12:40.696 [DEBUG] [Thread-188940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:12:40.708 [DEBUG] [Thread-188940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:12:40.708 [INFO] [Thread-188940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] client lang: <none>
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] server lang: <none>
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] kex follows: False
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] Compression: none
2025-11-24T11:12:40.711 [DEBUG] [Thread-188940] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:12:40.723 [DEBUG] [Thread-188940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:12:40.724 [DEBUG] [Thread-188940] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:12:40.724 [DEBUG] [Thread-188940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:12:40.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:12:40.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:12:40.725 [DEBUG] [Thread-188940] [transport.py] [_log()] userauth is OK
2025-11-24T11:12:40.725 [DEBUG] [Thread-188940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:12:40.725 [DEBUG] [Thread-188940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:12:40.725 [DEBUG] [Thread-188940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:12:40.725 [DEBUG] [Thread-188940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:12:40.734 [INFO] [Thread-188940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:12:40.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:12:41.394 [DEBUG] [Thread-188940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:12:41.394 [DEBUG] [Thread-188940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:12:41.394 [DEBUG] [Thread-188940] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:12:41.435 [DEBUG] [Thread-188940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:12:41.435 [DEBUG] [Thread-188940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:12:41.437 [DEBUG] [Thread-188940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:12:41.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:12:41.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:12:41.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:12:41.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:12:41.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:12:41.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:12:41.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:12:41.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.383382 -999.00  +18.40  16.34     30   +0.80 1 1 1 1 1   888    0 17.79 35.44 ----- 16.3 16.3 164.0 29.8 25.0 -26.4 24.0 -26.2 23.6 -24.7 24.4 -26.2
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.383382
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:12:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:12:07', tmtdew=20.18, humidity=25.33, cloud=0.0, wind=21.95, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:12:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:12:41.459 [DEBUG] [Thread-188940] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:12:41.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:12:41.544 [DEBUG] [Thread-188943] [transport.py] [_log()] starting thread (client mode): 0xd31cd150
2025-11-24T11:12:41.544 [DEBUG] [Thread-188943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:12:41.558 [DEBUG] [Thread-188943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:12:41.558 [INFO] [Thread-188943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] client lang: <none>
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] server lang: <none>
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] kex follows: False
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:12:41.566 [DEBUG] [Thread-188943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:12:41.567 [DEBUG] [Thread-188943] [transport.py] [_log()] Compression: none
2025-11-24T11:12:41.567 [DEBUG] [Thread-188943] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:12:41.624 [DEBUG] [Thread-188943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:12:41.625 [DEBUG] [Thread-188943] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:12:41.625 [DEBUG] [Thread-188943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:12:41.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:12:41.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:12:41.682 [DEBUG] [Thread-188943] [transport.py] [_log()] userauth is OK
2025-11-24T11:12:41.682 [DEBUG] [Thread-188943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:12:41.682 [DEBUG] [Thread-188943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:12:41.682 [DEBUG] [Thread-188943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:12:41.682 [DEBUG] [Thread-188943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:12:41.696 [INFO] [Thread-188943] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:12:41.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:12:41.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:12:42.553 [DEBUG] [Thread-188943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:12:42.553 [DEBUG] [Thread-188943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:12:42.601 [DEBUG] [Thread-188943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:12:42.601 [DEBUG] [Thread-188943] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:12:42.609 [DEBUG] [Thread-188943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:12:42.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:12:42.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-11-24T11:12:42.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-11-24T11:12:42.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:12:42.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:12:42.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:12:42.641 [DEBUG] [Thread-188943] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:12:48.927 [DEBUG] [Thread-188945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:13:03.976 [DEBUG] [Thread-188946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:13:12.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:13:12.664 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:13:12.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-11-24T11:13:13.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 12, 40), 19.84, 26.09, 0.0, 19.96, 17.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:13:13.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:12:40
2025-11-24T11:13:13.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:13:13.841 [DEBUG] [Thread-188947] [transport.py] [_log()] starting thread (client mode): 0xc9b82680
2025-11-24T11:13:13.841 [DEBUG] [Thread-188947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:13:13.861 [DEBUG] [Thread-188947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:13:13.862 [INFO] [Thread-188947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] client lang: <none>
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] server lang: <none>
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] kex follows: False
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] Compression: none
2025-11-24T11:13:13.865 [DEBUG] [Thread-188947] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:13:13.883 [DEBUG] [Thread-188947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:13:13.883 [DEBUG] [Thread-188947] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:13:13.883 [DEBUG] [Thread-188947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:13:13.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:13:13.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:13:13.884 [DEBUG] [Thread-188947] [transport.py] [_log()] userauth is OK
2025-11-24T11:13:13.884 [DEBUG] [Thread-188947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:13:13.884 [DEBUG] [Thread-188947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:13:13.884 [DEBUG] [Thread-188947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:13:13.884 [DEBUG] [Thread-188947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:13:13.910 [INFO] [Thread-188947] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:13:13.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:13:14.568 [DEBUG] [Thread-188947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:13:14.568 [DEBUG] [Thread-188947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:13:14.568 [DEBUG] [Thread-188947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:13:14.609 [DEBUG] [Thread-188947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:13:14.609 [DEBUG] [Thread-188947] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:13:14.612 [DEBUG] [Thread-188947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:13:14.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:13:14.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:13:14.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:13:14.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:13:14.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:13:14.630 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:13:14.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:13:14.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:13:14.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:13:14.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.383730 -999.00  +18.40  16.27     31   +1.00 1 1 1 1 1   888    0 17.98 39.67 ----- 16.3 16.3 145.2 19.2 25.2 -25.6 24.1 -24.7 23.5 -23.4 24.6 -25.9
2025-11-24T11:13:14.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:13:14.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:13:14.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.383730
2025-11-24T11:13:14.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:13:14.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:13:14.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:13:14.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:13:14.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:13:14.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:12:40', tmtdew=19.84, humidity=26.09, cloud=0.0, wind=19.96, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:12:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:13:14.631 [DEBUG] [Thread-188947] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:13:14.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:13:14.715 [DEBUG] [Thread-188950] [transport.py] [_log()] starting thread (client mode): 0xc9b83be0
2025-11-24T11:13:14.716 [DEBUG] [Thread-188950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:13:14.730 [DEBUG] [Thread-188950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:13:14.731 [INFO] [Thread-188950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] client lang: <none>
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] server lang: <none>
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] kex follows: False
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:13:14.738 [DEBUG] [Thread-188950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:13:14.739 [DEBUG] [Thread-188950] [transport.py] [_log()] Compression: none
2025-11-24T11:13:14.739 [DEBUG] [Thread-188950] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:13:14.801 [DEBUG] [Thread-188950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:13:14.801 [DEBUG] [Thread-188950] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:13:14.801 [DEBUG] [Thread-188950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:13:14.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:13:14.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:13:14.858 [DEBUG] [Thread-188950] [transport.py] [_log()] userauth is OK
2025-11-24T11:13:14.858 [DEBUG] [Thread-188950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:13:14.858 [DEBUG] [Thread-188950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:13:14.858 [DEBUG] [Thread-188950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:13:14.858 [DEBUG] [Thread-188950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:13:14.872 [INFO] [Thread-188950] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:13:14.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:13:14.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:13:15.724 [DEBUG] [Thread-188950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:13:15.724 [DEBUG] [Thread-188950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:13:15.772 [DEBUG] [Thread-188950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:13:15.773 [DEBUG] [Thread-188950] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:13:15.781 [DEBUG] [Thread-188950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:13:15.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:13:15.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-11-24T11:13:15.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-11-24T11:13:15.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:13:15.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:13:15.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:13:15.815 [DEBUG] [Thread-188950] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:13:19.015 [DEBUG] [Thread-188952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:13:34.072 [DEBUG] [Thread-188953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:13:37.146 [DEBUG] [Thread-188954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:13:45.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:13:45.838 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:13:45.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-11-24T11:13:46.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 13, 12), 19.69, 26.41, 0.0, 19.5, 17.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:13:46.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:13:12
2025-11-24T11:13:46.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:13:46.864 [DEBUG] [Thread-188955] [transport.py] [_log()] starting thread (client mode): 0xd07006d0
2025-11-24T11:13:46.864 [DEBUG] [Thread-188955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:13:46.885 [DEBUG] [Thread-188955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:13:46.885 [INFO] [Thread-188955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] client lang: <none>
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] server lang: <none>
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] kex follows: False
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:13:46.888 [DEBUG] [Thread-188955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:13:46.889 [DEBUG] [Thread-188955] [transport.py] [_log()] Compression: none
2025-11-24T11:13:46.889 [DEBUG] [Thread-188955] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:13:46.904 [DEBUG] [Thread-188955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:13:46.904 [DEBUG] [Thread-188955] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:13:46.904 [DEBUG] [Thread-188955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:13:46.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:13:46.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:13:46.905 [DEBUG] [Thread-188955] [transport.py] [_log()] userauth is OK
2025-11-24T11:13:46.905 [DEBUG] [Thread-188955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:13:46.905 [DEBUG] [Thread-188955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:13:46.905 [DEBUG] [Thread-188955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:13:46.905 [DEBUG] [Thread-188955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:13:46.931 [INFO] [Thread-188955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:13:46.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:13:47.585 [DEBUG] [Thread-188955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:13:47.586 [DEBUG] [Thread-188955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:13:47.586 [DEBUG] [Thread-188955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:13:47.626 [DEBUG] [Thread-188955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:13:47.626 [DEBUG] [Thread-188955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:13:47.629 [DEBUG] [Thread-188955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:13:47.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:13:47.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:13:47.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:13:47.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:13:47.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:13:47.646 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:13:47.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:13:47.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:13:47.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:13:47.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.384077 -999.00  +18.50  17.01     31   +1.30 1 1 1 1 1   888    0 18.21 42.86 ----- 17.0 17.0 161.5 19.4 25.3 -25.2 24.2 -26.2 23.6 -22.9 24.6 -24.8
2025-11-24T11:13:47.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:13:47.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:13:47.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.384077
2025-11-24T11:13:47.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:13:47.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:13:47.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:13:47.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:13:47.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:13:47.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:13:12', tmtdew=19.69, humidity=26.41, cloud=0.0, wind=19.5, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:13:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:13:47.648 [DEBUG] [Thread-188955] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:13:47.732 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:13:47.748 [DEBUG] [Thread-188958] [transport.py] [_log()] starting thread (client mode): 0xd0701870
2025-11-24T11:13:47.748 [DEBUG] [Thread-188958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:13:47.762 [DEBUG] [Thread-188958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:13:47.763 [INFO] [Thread-188958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] client lang: <none>
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] server lang: <none>
2025-11-24T11:13:47.770 [DEBUG] [Thread-188958] [transport.py] [_log()] kex follows: False
2025-11-24T11:13:47.771 [DEBUG] [Thread-188958] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:13:47.771 [DEBUG] [Thread-188958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:13:47.771 [DEBUG] [Thread-188958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:13:47.771 [DEBUG] [Thread-188958] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:13:47.771 [DEBUG] [Thread-188958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:13:47.771 [DEBUG] [Thread-188958] [transport.py] [_log()] Compression: none
2025-11-24T11:13:47.771 [DEBUG] [Thread-188958] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:13:47.830 [DEBUG] [Thread-188958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:13:47.831 [DEBUG] [Thread-188958] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:13:47.831 [DEBUG] [Thread-188958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:13:47.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:13:47.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:13:47.888 [DEBUG] [Thread-188958] [transport.py] [_log()] userauth is OK
2025-11-24T11:13:47.888 [DEBUG] [Thread-188958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:13:47.888 [DEBUG] [Thread-188958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:13:47.889 [DEBUG] [Thread-188958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:13:47.889 [DEBUG] [Thread-188958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:13:47.912 [INFO] [Thread-188958] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:13:47.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:13:47.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:13:48.773 [DEBUG] [Thread-188958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:13:48.774 [DEBUG] [Thread-188958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:13:48.821 [DEBUG] [Thread-188958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:13:48.821 [DEBUG] [Thread-188958] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:13:48.829 [DEBUG] [Thread-188958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:13:48.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:13:48.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:13:48.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-11-24T11:13:48.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:13:48.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:13:48.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:13:48.861 [DEBUG] [Thread-188958] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:13:49.099 [DEBUG] [Thread-188960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:14:04.140 [DEBUG] [Thread-188961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:14:18.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:14:18.862 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:14:18.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-11-24T11:14:19.173 [DEBUG] [Thread-188962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:14:19.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 13, 45), 19.93, 25.87, 0.0, 27.42, 18.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:14:19.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:13:45
2025-11-24T11:14:19.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:14:19.908 [DEBUG] [Thread-188963] [transport.py] [_log()] starting thread (client mode): 0xd31cea70
2025-11-24T11:14:19.908 [DEBUG] [Thread-188963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:14:19.927 [DEBUG] [Thread-188963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:14:19.927 [INFO] [Thread-188963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:14:19.930 [DEBUG] [Thread-188963] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:14:19.930 [DEBUG] [Thread-188963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] client lang: <none>
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] server lang: <none>
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] kex follows: False
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:14:19.931 [DEBUG] [Thread-188963] [transport.py] [_log()] Compression: none
2025-11-24T11:14:19.932 [DEBUG] [Thread-188963] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:14:19.940 [DEBUG] [Thread-188963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:14:19.941 [DEBUG] [Thread-188963] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:14:19.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:14:19.941 [DEBUG] [Thread-188963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:14:19.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:14:19.943 [DEBUG] [Thread-188963] [transport.py] [_log()] userauth is OK
2025-11-24T11:14:19.943 [DEBUG] [Thread-188963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:14:19.944 [DEBUG] [Thread-188963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:14:19.944 [DEBUG] [Thread-188963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:14:19.944 [DEBUG] [Thread-188963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:14:19.961 [INFO] [Thread-188963] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:14:19.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:14:20.590 [DEBUG] [Thread-188963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:14:20.590 [DEBUG] [Thread-188963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:14:20.590 [DEBUG] [Thread-188963] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:14:20.631 [DEBUG] [Thread-188963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:14:20.631 [DEBUG] [Thread-188963] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:14:20.633 [DEBUG] [Thread-188963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:14:20.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:14:20.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:14:20.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:14:20.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:14:20.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:14:20.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:14:20.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:14:20.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:14:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:14:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.384424 -999.00  +18.70  18.57     31   +1.30 1 1 1 1 1   888    0 18.60 45.00 ----- 18.6 18.6 173.4 30.5 25.3 -25.6 24.2 -24.6 23.7 -23.7 24.6 -24.9
2025-11-24T11:14:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:14:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:14:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.384424
2025-11-24T11:14:20.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:14:20.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:14:20.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:14:20.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:14:20.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:14:20.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:13:45', tmtdew=19.93, humidity=25.87, cloud=0.0, wind=27.42, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:13:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:14:20.652 [DEBUG] [Thread-188963] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:14:20.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:14:20.737 [DEBUG] [Thread-188966] [transport.py] [_log()] starting thread (client mode): 0xd31b1960
2025-11-24T11:14:20.737 [DEBUG] [Thread-188966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:14:20.751 [DEBUG] [Thread-188966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:14:20.751 [INFO] [Thread-188966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:14:20.758 [DEBUG] [Thread-188966] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:14:20.758 [DEBUG] [Thread-188966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:14:20.758 [DEBUG] [Thread-188966] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:14:20.758 [DEBUG] [Thread-188966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] client lang: <none>
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] server lang: <none>
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] kex follows: False
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] Compression: none
2025-11-24T11:14:20.759 [DEBUG] [Thread-188966] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:14:20.816 [DEBUG] [Thread-188966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:14:20.816 [DEBUG] [Thread-188966] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:14:20.816 [DEBUG] [Thread-188966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:14:20.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:14:20.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:14:20.874 [DEBUG] [Thread-188966] [transport.py] [_log()] userauth is OK
2025-11-24T11:14:20.874 [DEBUG] [Thread-188966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:14:20.874 [DEBUG] [Thread-188966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:14:20.874 [DEBUG] [Thread-188966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:14:20.874 [DEBUG] [Thread-188966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:14:20.887 [INFO] [Thread-188966] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:14:20.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:14:20.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:14:21.725 [DEBUG] [Thread-188966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:14:21.725 [DEBUG] [Thread-188966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:14:21.772 [DEBUG] [Thread-188966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:14:21.772 [DEBUG] [Thread-188966] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:14:21.781 [DEBUG] [Thread-188966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:14:21.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:14:21.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-11-24T11:14:21.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-11-24T11:14:21.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:14:21.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:14:21.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:14:21.814 [DEBUG] [Thread-188966] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:14:34.205 [DEBUG] [Thread-188968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:14:37.410 [DEBUG] [Thread-188969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:14:49.264 [DEBUG] [Thread-188970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:14:51.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:14:51.836 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:14:51.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-11-24T11:14:52.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 14, 17), 20.27, 25.29, 0.0, 28.35, 18.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:14:52.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:14:17
2025-11-24T11:14:52.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:14:52.973 [DEBUG] [Thread-188971] [transport.py] [_log()] starting thread (client mode): 0xc9b80a60
2025-11-24T11:14:52.973 [DEBUG] [Thread-188971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:14:52.994 [DEBUG] [Thread-188971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:14:52.994 [INFO] [Thread-188971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:14:52.997 [DEBUG] [Thread-188971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:14:52.997 [DEBUG] [Thread-188971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:14:52.997 [DEBUG] [Thread-188971] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:14:52.997 [DEBUG] [Thread-188971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:14:52.997 [DEBUG] [Thread-188971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] client lang: <none>
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] server lang: <none>
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] kex follows: False
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] Compression: none
2025-11-24T11:14:52.998 [DEBUG] [Thread-188971] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:14:53.014 [DEBUG] [Thread-188971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:14:53.014 [DEBUG] [Thread-188971] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:14:53.014 [DEBUG] [Thread-188971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:14:53.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:14:53.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:14:53.015 [DEBUG] [Thread-188971] [transport.py] [_log()] userauth is OK
2025-11-24T11:14:53.015 [DEBUG] [Thread-188971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:14:53.015 [DEBUG] [Thread-188971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:14:53.015 [DEBUG] [Thread-188971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:14:53.015 [DEBUG] [Thread-188971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:14:53.024 [INFO] [Thread-188971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:14:53.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:14:53.654 [DEBUG] [Thread-188971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:14:53.654 [DEBUG] [Thread-188971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:14:53.654 [DEBUG] [Thread-188971] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:14:53.695 [DEBUG] [Thread-188971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:14:53.695 [DEBUG] [Thread-188971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:14:53.698 [DEBUG] [Thread-188971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:14:53.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:14:53.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:14:53.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:14:53.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:14:53.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:14:53.718 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:14:53.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.384771 -999.00  +18.50  17.24     30   +1.00 1 1 1 1 1   888    0 18.25 44.34 ----- 17.2 17.2 156.1 29.6 25.2 -25.6 24.2 -25.3 23.8 -25.0 24.6 -25.8
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.384771
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:14:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:14:17', tmtdew=20.27, humidity=25.29, cloud=0.0, wind=28.35, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:14:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:14:53.719 [DEBUG] [Thread-188971] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:14:53.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:14:53.804 [DEBUG] [Thread-188974] [transport.py] [_log()] starting thread (client mode): 0xc9b828c0
2025-11-24T11:14:53.804 [DEBUG] [Thread-188974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:14:53.818 [DEBUG] [Thread-188974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:14:53.818 [INFO] [Thread-188974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] client lang: <none>
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] server lang: <none>
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] kex follows: False
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] Compression: none
2025-11-24T11:14:53.826 [DEBUG] [Thread-188974] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:14:53.882 [DEBUG] [Thread-188974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:14:53.882 [DEBUG] [Thread-188974] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:14:53.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:14:53.882 [DEBUG] [Thread-188974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:14:53.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:14:53.938 [DEBUG] [Thread-188974] [transport.py] [_log()] userauth is OK
2025-11-24T11:14:53.938 [DEBUG] [Thread-188974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:14:53.939 [DEBUG] [Thread-188974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:14:53.939 [DEBUG] [Thread-188974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:14:53.939 [DEBUG] [Thread-188974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:14:53.953 [INFO] [Thread-188974] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:14:53.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:14:53.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:14:54.842 [DEBUG] [Thread-188974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:14:54.842 [DEBUG] [Thread-188974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:14:54.890 [DEBUG] [Thread-188974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:14:54.890 [DEBUG] [Thread-188974] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:14:54.898 [DEBUG] [Thread-188974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:14:54.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:14:54.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:14:54.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:14:54.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:14:54.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:14:54.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:14:54.940 [DEBUG] [Thread-188974] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:15:04.292 [DEBUG] [Thread-188976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:15:19.336 [DEBUG] [Thread-188977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:15:24.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:15:24.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:15:24.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-11-24T11:15:25.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 15, 22), 20.56, 25.1, 0.0, 26.25, 18.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:15:25.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:15:22
2025-11-24T11:15:25.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:15:26.086 [DEBUG] [Thread-188978] [transport.py] [_log()] starting thread (client mode): 0xd073a830
2025-11-24T11:15:26.086 [DEBUG] [Thread-188978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:15:26.108 [DEBUG] [Thread-188978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:15:26.108 [INFO] [Thread-188978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] client lang: <none>
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] server lang: <none>
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] kex follows: False
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] Compression: none
2025-11-24T11:15:26.112 [DEBUG] [Thread-188978] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:15:26.126 [DEBUG] [Thread-188978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:15:26.126 [DEBUG] [Thread-188978] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:15:26.126 [DEBUG] [Thread-188978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:15:26.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:15:26.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:15:26.127 [DEBUG] [Thread-188978] [transport.py] [_log()] userauth is OK
2025-11-24T11:15:26.127 [DEBUG] [Thread-188978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:15:26.127 [DEBUG] [Thread-188978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:15:26.127 [DEBUG] [Thread-188978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:15:26.127 [DEBUG] [Thread-188978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:15:26.142 [INFO] [Thread-188978] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:15:26.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:15:26.766 [DEBUG] [Thread-188978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:15:26.766 [DEBUG] [Thread-188978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:15:26.766 [DEBUG] [Thread-188978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:15:26.807 [DEBUG] [Thread-188978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:15:26.807 [DEBUG] [Thread-188978] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:15:26.809 [DEBUG] [Thread-188978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:15:26.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:15:26.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:15:26.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:15:26.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:15:26.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:15:26.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:15:26.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:15:26.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:15:26.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:15:26.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.385118 -999.00  +18.60  23.89     31   +1.20 1 1 1 1 1   888    0 18.26 47.69 ----- 23.9 23.9 170.2 28.4 25.2 -25.5 24.2 -24.8 23.8 -22.6 24.8 -26.9
2025-11-24T11:15:26.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:15:26.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:15:26.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.385118
2025-11-24T11:15:26.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:15:26.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:15:26.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:15:26.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:15:26.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:15:26.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:15:22', tmtdew=20.56, humidity=25.1, cloud=0.0, wind=26.25, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:14:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:15:26.828 [DEBUG] [Thread-188978] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:15:26.900 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:15:26.912 [DEBUG] [Thread-188981] [transport.py] [_log()] starting thread (client mode): 0xd073a3e0
2025-11-24T11:15:26.912 [DEBUG] [Thread-188981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:15:26.926 [DEBUG] [Thread-188981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:15:26.927 [INFO] [Thread-188981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] client lang: <none>
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] server lang: <none>
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] kex follows: False
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] Compression: none
2025-11-24T11:15:26.934 [DEBUG] [Thread-188981] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:15:26.993 [DEBUG] [Thread-188981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:15:26.993 [DEBUG] [Thread-188981] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:15:26.993 [DEBUG] [Thread-188981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:15:26.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:15:26.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:15:27.055 [DEBUG] [Thread-188981] [transport.py] [_log()] userauth is OK
2025-11-24T11:15:27.055 [DEBUG] [Thread-188981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:15:27.055 [DEBUG] [Thread-188981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:15:27.055 [DEBUG] [Thread-188981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:15:27.055 [DEBUG] [Thread-188981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:15:27.069 [INFO] [Thread-188981] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:15:27.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:15:27.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:15:27.924 [DEBUG] [Thread-188981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:15:27.924 [DEBUG] [Thread-188981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:15:27.972 [DEBUG] [Thread-188981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:15:27.972 [DEBUG] [Thread-188981] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:15:27.980 [DEBUG] [Thread-188981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:15:27.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:15:27.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')
2025-11-24T11:15:27.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') -> 00000000
2025-11-24T11:15:28.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:15:28.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:15:28.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:15:28.012 [DEBUG] [Thread-188981] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:15:34.378 [DEBUG] [Thread-188983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:15:37.477 [DEBUG] [Thread-188984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:15:49.429 [DEBUG] [Thread-188985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:15:58.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:15:58.030 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:15:58.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-11-24T11:15:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 15, 54), 20.72, 24.64, 0.0, 27.0, 18.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:15:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:15:54
2025-11-24T11:15:58.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:15:59.109 [DEBUG] [Thread-188986] [transport.py] [_log()] starting thread (client mode): 0xc9b82770
2025-11-24T11:15:59.109 [DEBUG] [Thread-188986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:15:59.128 [DEBUG] [Thread-188986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:15:59.128 [INFO] [Thread-188986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:15:59.131 [DEBUG] [Thread-188986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:15:59.131 [DEBUG] [Thread-188986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:15:59.131 [DEBUG] [Thread-188986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:15:59.131 [DEBUG] [Thread-188986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:15:59.131 [DEBUG] [Thread-188986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] client lang: <none>
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] server lang: <none>
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] kex follows: False
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] Compression: none
2025-11-24T11:15:59.132 [DEBUG] [Thread-188986] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:15:59.150 [DEBUG] [Thread-188986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:15:59.151 [DEBUG] [Thread-188986] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:15:59.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:15:59.152 [DEBUG] [Thread-188986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:15:59.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:15:59.154 [DEBUG] [Thread-188986] [transport.py] [_log()] userauth is OK
2025-11-24T11:15:59.154 [DEBUG] [Thread-188986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:15:59.155 [DEBUG] [Thread-188986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:15:59.155 [DEBUG] [Thread-188986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:15:59.155 [DEBUG] [Thread-188986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:15:59.175 [INFO] [Thread-188986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:15:59.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:15:59.834 [DEBUG] [Thread-188986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:15:59.834 [DEBUG] [Thread-188986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:15:59.834 [DEBUG] [Thread-188986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:15:59.875 [DEBUG] [Thread-188986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:15:59.875 [DEBUG] [Thread-188986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:15:59.878 [DEBUG] [Thread-188986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:15:59.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:15:59.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:15:59.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:15:59.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:15:59.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:15:59.912 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:15:59.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:15:59.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:15:59.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:15:59.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.385813 -999.00  +18.20  24.31     31   +0.90 1 1 1 1 1   888    0 18.15 41.20 ----- 24.3 24.3 143.4 31.4 25.2 -26.3 24.2 -26.1 23.8 -23.8 24.7 -26.4
2025-11-24T11:15:59.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:15:59.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:15:59.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.385813
2025-11-24T11:15:59.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:15:59.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:15:59.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:15:59.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:15:59.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:15:59.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:15:54', tmtdew=20.72, humidity=24.64, cloud=0.0, wind=27.0, temperature=18.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:15:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:15:59.915 [DEBUG] [Thread-188986] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:15:59.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:16:00.010 [DEBUG] [Thread-188989] [transport.py] [_log()] starting thread (client mode): 0xd31b2050
2025-11-24T11:16:00.010 [DEBUG] [Thread-188989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:16:00.031 [DEBUG] [Thread-188989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:16:00.032 [INFO] [Thread-188989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:16:00.040 [DEBUG] [Thread-188989] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:16:00.041 [DEBUG] [Thread-188989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:16:00.041 [DEBUG] [Thread-188989] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:16:00.041 [DEBUG] [Thread-188989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:16:00.041 [DEBUG] [Thread-188989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:16:00.041 [DEBUG] [Thread-188989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:16:00.041 [DEBUG] [Thread-188989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:16:00.041 [DEBUG] [Thread-188989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:16:00.041 [DEBUG] [Thread-188989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:16:00.042 [DEBUG] [Thread-188989] [transport.py] [_log()] client lang: <none>
2025-11-24T11:16:00.042 [DEBUG] [Thread-188989] [transport.py] [_log()] server lang: <none>
2025-11-24T11:16:00.042 [DEBUG] [Thread-188989] [transport.py] [_log()] kex follows: False
2025-11-24T11:16:00.042 [DEBUG] [Thread-188989] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:16:00.042 [DEBUG] [Thread-188989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:16:00.042 [DEBUG] [Thread-188989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:16:00.042 [DEBUG] [Thread-188989] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:16:00.042 [DEBUG] [Thread-188989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:16:00.043 [DEBUG] [Thread-188989] [transport.py] [_log()] Compression: none
2025-11-24T11:16:00.043 [DEBUG] [Thread-188989] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:16:00.099 [DEBUG] [Thread-188989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:16:00.099 [DEBUG] [Thread-188989] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:16:00.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:16:00.100 [DEBUG] [Thread-188989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:16:00.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:16:00.155 [DEBUG] [Thread-188989] [transport.py] [_log()] userauth is OK
2025-11-24T11:16:00.155 [DEBUG] [Thread-188989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:16:00.155 [DEBUG] [Thread-188989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:16:00.155 [DEBUG] [Thread-188989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:16:00.156 [DEBUG] [Thread-188989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:16:00.177 [INFO] [Thread-188989] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:16:00.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:16:00.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:16:01.034 [DEBUG] [Thread-188989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:16:01.034 [DEBUG] [Thread-188989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:16:01.082 [DEBUG] [Thread-188989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:16:01.082 [DEBUG] [Thread-188989] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:16:01.090 [DEBUG] [Thread-188989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:16:01.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:16:01.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:16:01.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-11-24T11:16:01.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:16:01.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:16:01.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:16:01.122 [DEBUG] [Thread-188989] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:16:04.461 [DEBUG] [Thread-188991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:16:19.501 [DEBUG] [Thread-188992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:16:31.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:16:31.144 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:16:31.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-11-24T11:16:31.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 16, 26), 20.46, 24.99, 0.0, 23.36, 18.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:16:31.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:16:26
2025-11-24T11:16:32.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:16:32.256 [DEBUG] [Thread-188993] [transport.py] [_log()] starting thread (client mode): 0xd3192830
2025-11-24T11:16:32.257 [DEBUG] [Thread-188993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:16:32.278 [DEBUG] [Thread-188993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:16:32.279 [INFO] [Thread-188993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] client lang: <none>
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] server lang: <none>
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] kex follows: False
2025-11-24T11:16:32.282 [DEBUG] [Thread-188993] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:16:32.283 [DEBUG] [Thread-188993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:16:32.283 [DEBUG] [Thread-188993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:16:32.283 [DEBUG] [Thread-188993] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:16:32.283 [DEBUG] [Thread-188993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:16:32.283 [DEBUG] [Thread-188993] [transport.py] [_log()] Compression: none
2025-11-24T11:16:32.283 [DEBUG] [Thread-188993] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:16:32.300 [DEBUG] [Thread-188993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:16:32.301 [DEBUG] [Thread-188993] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:16:32.301 [DEBUG] [Thread-188993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:16:32.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:16:32.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:16:32.303 [DEBUG] [Thread-188993] [transport.py] [_log()] userauth is OK
2025-11-24T11:16:32.303 [DEBUG] [Thread-188993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:16:32.303 [DEBUG] [Thread-188993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:16:32.303 [DEBUG] [Thread-188993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:16:32.303 [DEBUG] [Thread-188993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:16:32.326 [INFO] [Thread-188993] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:16:32.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:16:32.981 [DEBUG] [Thread-188993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:16:32.981 [DEBUG] [Thread-188993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:16:32.981 [DEBUG] [Thread-188993] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:16:33.022 [DEBUG] [Thread-188993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:16:33.022 [DEBUG] [Thread-188993] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:16:33.025 [DEBUG] [Thread-188993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:16:33.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:16:33.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:16:33.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:16:33.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:16:33.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:16:33.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:16:33.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:16:33.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:16:33.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:16:33.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.386160 -999.00  +18.00  14.77     31   +0.70 1 1 1 1 1   888    0 18.13 35.64 ----- 14.8 14.8 129.8 21.4 25.2 -24.6 24.3 -24.4 23.8 -23.7 24.7 -24.6
2025-11-24T11:16:33.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:16:33.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:16:33.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.386160
2025-11-24T11:16:33.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:16:33.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:16:33.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:16:33.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:16:33.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:16:33.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:16:26', tmtdew=20.46, humidity=24.99, cloud=0.0, wind=23.36, temperature=18.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:16:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:16:33.050 [DEBUG] [Thread-188993] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:16:33.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:16:33.145 [DEBUG] [Thread-188996] [transport.py] [_log()] starting thread (client mode): 0xd31b3a30
2025-11-24T11:16:33.145 [DEBUG] [Thread-188996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:16:33.159 [DEBUG] [Thread-188996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:16:33.160 [INFO] [Thread-188996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:16:33.167 [DEBUG] [Thread-188996] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:16:33.167 [DEBUG] [Thread-188996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:16:33.167 [DEBUG] [Thread-188996] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:16:33.167 [DEBUG] [Thread-188996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] client lang: <none>
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] server lang: <none>
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] kex follows: False
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] Compression: none
2025-11-24T11:16:33.168 [DEBUG] [Thread-188996] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:16:33.226 [DEBUG] [Thread-188996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:16:33.226 [DEBUG] [Thread-188996] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:16:33.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:16:33.227 [DEBUG] [Thread-188996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:16:33.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:16:33.282 [DEBUG] [Thread-188996] [transport.py] [_log()] userauth is OK
2025-11-24T11:16:33.283 [DEBUG] [Thread-188996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:16:33.283 [DEBUG] [Thread-188996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:16:33.283 [DEBUG] [Thread-188996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:16:33.283 [DEBUG] [Thread-188996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:16:33.301 [INFO] [Thread-188996] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:16: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-11-24T11:16:33.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:16:34.150 [DEBUG] [Thread-188996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:16:34.151 [DEBUG] [Thread-188996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:16:34.198 [DEBUG] [Thread-188996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:16:34.198 [DEBUG] [Thread-188996] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:16:34.207 [DEBUG] [Thread-188996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:16:34.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:16:34.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-11-24T11:16:34.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-11-24T11:16:34.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:16:34.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:16:34.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:16:34.238 [DEBUG] [Thread-188996] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:16:34.536 [DEBUG] [Thread-188998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:16:37.539 [DEBUG] [Thread-188999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:16:49.587 [DEBUG] [Thread-189000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:17:04.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:17:04.262 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:17:04.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-11-24T11:17:04.616 [DEBUG] [Thread-189001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:17:04.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 16, 59), 20.89, 24.21, 0.0, 23.17, 18.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:17:04.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:16:59
2025-11-24T11:17:05.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:17:05.259 [DEBUG] [Thread-189002] [transport.py] [_log()] starting thread (client mode): 0xd3192d70
2025-11-24T11:17:05.259 [DEBUG] [Thread-189002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:17:05.280 [DEBUG] [Thread-189002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:17:05.280 [INFO] [Thread-189002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:17:05.283 [DEBUG] [Thread-189002] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] client lang: <none>
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] server lang: <none>
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] kex follows: False
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:17:05.284 [DEBUG] [Thread-189002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:17:05.285 [DEBUG] [Thread-189002] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:17:05.285 [DEBUG] [Thread-189002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:17:05.285 [DEBUG] [Thread-189002] [transport.py] [_log()] Compression: none
2025-11-24T11:17:05.285 [DEBUG] [Thread-189002] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:17:05.303 [DEBUG] [Thread-189002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:17:05.304 [DEBUG] [Thread-189002] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:17:05.305 [DEBUG] [Thread-189002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:17:05.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:17:05.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:17:05.308 [DEBUG] [Thread-189002] [transport.py] [_log()] userauth is OK
2025-11-24T11:17:05.308 [DEBUG] [Thread-189002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:17:05.308 [DEBUG] [Thread-189002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:17:05.308 [DEBUG] [Thread-189002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:17:05.309 [DEBUG] [Thread-189002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:17:05.332 [INFO] [Thread-189002] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:17:05.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:17:05.961 [DEBUG] [Thread-189002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:17:05.961 [DEBUG] [Thread-189002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:17:05.962 [DEBUG] [Thread-189002] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:17:06.003 [DEBUG] [Thread-189002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:17:06.003 [DEBUG] [Thread-189002] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:17:06.007 [DEBUG] [Thread-189002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:17:06.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:17:06.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:17:06.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:17:06.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:17:06.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:17:06.041 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:17:06.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:17:06.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:17:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:17:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.386507 -999.00  +18.40  23.67     30   +1.00 1 1 1 1 1   888    0 17.91 32.91 ----- 23.7 23.7 166.2 27.1 25.2 -26.7 24.4 -24.3 23.9 -22.3 24.8 -25.8
2025-11-24T11:17:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:17:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:17:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.386507
2025-11-24T11:17:06.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:17:06.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:17:06.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:17:06.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:17:06.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:17:06.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:16:59', tmtdew=20.89, humidity=24.21, cloud=0.0, wind=23.17, temperature=18.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:16:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:17:06.045 [DEBUG] [Thread-189002] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:17:06.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:17:06.133 [DEBUG] [Thread-189005] [transport.py] [_log()] starting thread (client mode): 0xd073a260
2025-11-24T11:17:06.133 [DEBUG] [Thread-189005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:17:06.148 [DEBUG] [Thread-189005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:17:06.148 [INFO] [Thread-189005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:17:06.156 [DEBUG] [Thread-189005] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] client lang: <none>
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] server lang: <none>
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] kex follows: False
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:17:06.157 [DEBUG] [Thread-189005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:17:06.158 [DEBUG] [Thread-189005] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:17:06.158 [DEBUG] [Thread-189005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:17:06.158 [DEBUG] [Thread-189005] [transport.py] [_log()] Compression: none
2025-11-24T11:17:06.158 [DEBUG] [Thread-189005] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:17:06.215 [DEBUG] [Thread-189005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:17:06.216 [DEBUG] [Thread-189005] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:17:06.216 [DEBUG] [Thread-189005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:17:06.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:17:06.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:17:06.271 [DEBUG] [Thread-189005] [transport.py] [_log()] userauth is OK
2025-11-24T11:17:06.271 [DEBUG] [Thread-189005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:17:06.272 [DEBUG] [Thread-189005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:17:06.272 [DEBUG] [Thread-189005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:17:06.272 [DEBUG] [Thread-189005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:17:06.290 [INFO] [Thread-189005] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:17:06.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:17:06.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:17:07.181 [DEBUG] [Thread-189005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:17:07.181 [DEBUG] [Thread-189005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:17:07.233 [DEBUG] [Thread-189005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:17:07.233 [DEBUG] [Thread-189005] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:17:07.242 [DEBUG] [Thread-189005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:17:07.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:17:07.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-11-24T11:17:07.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-11-24T11:17:07.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:17:07.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:17:07.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:17:07.278 [DEBUG] [Thread-189005] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:17:19.650 [DEBUG] [Thread-189007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:17:34.703 [DEBUG] [Thread-189008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:17:37.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:17:37.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:17:37.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-11-24T11:17:37.767 [DEBUG] [Thread-189009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:17:37.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 17, 31), 21.29, 23.61, 0.0, 28.14, 19.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:17:37.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:17:31
2025-11-24T11:17:38.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:17:38.290 [DEBUG] [Thread-189010] [transport.py] [_log()] starting thread (client mode): 0xd073ba60
2025-11-24T11:17:38.290 [DEBUG] [Thread-189010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:17:38.302 [DEBUG] [Thread-189010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:17:38.302 [INFO] [Thread-189010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:17:38.305 [DEBUG] [Thread-189010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:17:38.305 [DEBUG] [Thread-189010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:17:38.305 [DEBUG] [Thread-189010] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:17:38.305 [DEBUG] [Thread-189010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:17:38.305 [DEBUG] [Thread-189010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:17:38.305 [DEBUG] [Thread-189010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] client lang: <none>
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] server lang: <none>
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] kex follows: False
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] Compression: none
2025-11-24T11:17:38.306 [DEBUG] [Thread-189010] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:17:38.325 [DEBUG] [Thread-189010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:17:38.326 [DEBUG] [Thread-189010] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:17:38.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:17:38.327 [DEBUG] [Thread-189010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:17:38.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:17:38.368 [DEBUG] [Thread-189010] [transport.py] [_log()] userauth is OK
2025-11-24T11:17:38.369 [DEBUG] [Thread-189010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:17:38.369 [DEBUG] [Thread-189010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:17:38.369 [DEBUG] [Thread-189010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:17:38.369 [DEBUG] [Thread-189010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:17:38.390 [INFO] [Thread-189010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:17:38.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:17:39.027 [DEBUG] [Thread-189010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:17:39.027 [DEBUG] [Thread-189010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:17:39.028 [DEBUG] [Thread-189010] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:17:39.068 [DEBUG] [Thread-189010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:17:39.068 [DEBUG] [Thread-189010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:17:39.071 [DEBUG] [Thread-189010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:17:39.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:17:39.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:17:39.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:17:39.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:17:39.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:17:39.104 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:17:39.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:17:39.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:17:39.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:17:39.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.386855 -999.00  +18.90  26.33     29   +0.80 1 1 1 1 1   888    0 18.10 33.19 ----- 26.3 26.3 181.4 30.8 25.3 -26.0 24.0 -26.9 23.9 -23.7 24.8 -25.1
2025-11-24T11:17:39.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:17:39.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:17:39.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.386855
2025-11-24T11:17:39.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:17:39.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:17:39.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:17:39.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:17:39.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:17:39.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:17:31', tmtdew=21.29, humidity=23.61, cloud=0.0, wind=28.14, temperature=19.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:17:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:17:39.108 [DEBUG] [Thread-189010] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:17:39.192 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:17:39.205 [DEBUG] [Thread-189013] [transport.py] [_log()] starting thread (client mode): 0xd3190c10
2025-11-24T11:17:39.205 [DEBUG] [Thread-189013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:17:39.221 [DEBUG] [Thread-189013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:17:39.222 [INFO] [Thread-189013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:17:39.232 [DEBUG] [Thread-189013] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:17:39.232 [DEBUG] [Thread-189013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] client lang: <none>
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] server lang: <none>
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] kex follows: False
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:17:39.233 [DEBUG] [Thread-189013] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:17:39.234 [DEBUG] [Thread-189013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:17:39.234 [DEBUG] [Thread-189013] [transport.py] [_log()] Compression: none
2025-11-24T11:17:39.234 [DEBUG] [Thread-189013] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:17:39.300 [DEBUG] [Thread-189013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:17:39.300 [DEBUG] [Thread-189013] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:17:39.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:17:39.302 [DEBUG] [Thread-189013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:17:39.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:17:39.356 [DEBUG] [Thread-189013] [transport.py] [_log()] userauth is OK
2025-11-24T11:17:39.356 [DEBUG] [Thread-189013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:17:39.356 [DEBUG] [Thread-189013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:17:39.356 [DEBUG] [Thread-189013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:17:39.356 [DEBUG] [Thread-189013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:17:39.391 [INFO] [Thread-189013] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:17:39.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:17:39.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:17:40.300 [DEBUG] [Thread-189013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:17:40.301 [DEBUG] [Thread-189013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:17:40.348 [DEBUG] [Thread-189013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:17:40.349 [DEBUG] [Thread-189013] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:17:40.358 [DEBUG] [Thread-189013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:17:40.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:17:40.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-11-24T11:17:40.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-11-24T11:17:40.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:17:40.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:17:40.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:17:40.394 [DEBUG] [Thread-189013] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:17:49.751 [DEBUG] [Thread-189015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:18:04.797 [DEBUG] [Thread-189016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:18:10.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:18:10.388 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:18:10.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-11-24T11:18:11.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 18, 3), 21.36, 23.43, 0.0, 23.57, 18.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:18:11.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:18:03
2025-11-24T11:18:11.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:18:11.429 [DEBUG] [Thread-189017] [transport.py] [_log()] starting thread (client mode): 0xd3191a20
2025-11-24T11:18:11.429 [DEBUG] [Thread-189017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:18:11.439 [DEBUG] [Thread-189017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:18:11.439 [INFO] [Thread-189017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] client lang: <none>
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] server lang: <none>
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] kex follows: False
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:18:11.442 [DEBUG] [Thread-189017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:18:11.443 [DEBUG] [Thread-189017] [transport.py] [_log()] Compression: none
2025-11-24T11:18:11.443 [DEBUG] [Thread-189017] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:18:11.458 [DEBUG] [Thread-189017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:18:11.459 [DEBUG] [Thread-189017] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:18:11.459 [DEBUG] [Thread-189017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:18:11.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:18:11.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:18:11.501 [DEBUG] [Thread-189017] [transport.py] [_log()] userauth is OK
2025-11-24T11:18:11.501 [DEBUG] [Thread-189017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:18:11.501 [DEBUG] [Thread-189017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:18:11.501 [DEBUG] [Thread-189017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:18:11.501 [DEBUG] [Thread-189017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:18:11.528 [INFO] [Thread-189017] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:18:11.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:18:12.091 [DEBUG] [Thread-189017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:18:12.091 [DEBUG] [Thread-189017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:18:12.092 [DEBUG] [Thread-189017] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:18:12.132 [DEBUG] [Thread-189017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:18:12.133 [DEBUG] [Thread-189017] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:18:12.136 [DEBUG] [Thread-189017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:18:12.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:18:12.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:18:12.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:18:12.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:18:12.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:18:12.161 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:18:12.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:18:12.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:18:12.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:18:12.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.387202 -999.00  +18.70  21.71     29   +0.60 1 1 1 1 1   888    0 18.17 32.59 ----- 21.7 21.7 166.0 28.8 25.2 -26.4 24.3 -24.6 23.9 -23.6 24.8 -26.3
2025-11-24T11:18:12.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:18:12.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:18:12.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.387202
2025-11-24T11:18:12.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:18:12.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:18:12.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:18:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:18:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:18:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:18:03', tmtdew=21.36, humidity=23.43, cloud=0.0, wind=23.57, temperature=18.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:17:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:18:12.165 [DEBUG] [Thread-189017] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:18:12.248 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:18:12.260 [DEBUG] [Thread-189020] [transport.py] [_log()] starting thread (client mode): 0xd3190520
2025-11-24T11:18:12.260 [DEBUG] [Thread-189020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:18:12.275 [DEBUG] [Thread-189020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:18:12.275 [INFO] [Thread-189020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:18:12.282 [DEBUG] [Thread-189020] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] client lang: <none>
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] server lang: <none>
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] kex follows: False
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:18:12.283 [DEBUG] [Thread-189020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:18:12.284 [DEBUG] [Thread-189020] [transport.py] [_log()] Compression: none
2025-11-24T11:18:12.284 [DEBUG] [Thread-189020] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:18:12.339 [DEBUG] [Thread-189020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:18:12.340 [DEBUG] [Thread-189020] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:18:12.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:18:12.341 [DEBUG] [Thread-189020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:18:12.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:18:12.398 [DEBUG] [Thread-189020] [transport.py] [_log()] userauth is OK
2025-11-24T11:18:12.398 [DEBUG] [Thread-189020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:18:12.398 [DEBUG] [Thread-189020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:18:12.399 [DEBUG] [Thread-189020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:18:12.399 [DEBUG] [Thread-189020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:18:12.424 [INFO] [Thread-189020] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:18:12.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:18:12.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:18:13.261 [DEBUG] [Thread-189020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:18:13.261 [DEBUG] [Thread-189020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:18:13.309 [DEBUG] [Thread-189020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:18:13.309 [DEBUG] [Thread-189020] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:18:13.317 [DEBUG] [Thread-189020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:18:13.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:18:13.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-11-24T11:18:13.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-11-24T11:18:13.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:18:13.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:18:13.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:18:13.348 [DEBUG] [Thread-189020] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:18:19.826 [DEBUG] [Thread-189022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:18:34.863 [DEBUG] [Thread-189023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:18:37.798 [DEBUG] [Thread-189024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:18:43.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:18:43.371 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:18:43.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:18:44.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 18, 37), 20.49, 24.66, 0.0, 21.17, 18.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:18:44.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:18:37
2025-11-24T11:18:44.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:18:44.561 [DEBUG] [Thread-189025] [transport.py] [_log()] starting thread (client mode): 0xc9b80bb0
2025-11-24T11:18:44.561 [DEBUG] [Thread-189025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:18:44.581 [DEBUG] [Thread-189025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:18:44.581 [INFO] [Thread-189025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:18:44.584 [DEBUG] [Thread-189025] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:18:44.584 [DEBUG] [Thread-189025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:18:44.584 [DEBUG] [Thread-189025] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] client lang: <none>
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] server lang: <none>
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] kex follows: False
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] Compression: none
2025-11-24T11:18:44.585 [DEBUG] [Thread-189025] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:18:44.601 [DEBUG] [Thread-189025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:18:44.601 [DEBUG] [Thread-189025] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:18:44.601 [DEBUG] [Thread-189025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:18:44.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:18:44.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:18:44.602 [DEBUG] [Thread-189025] [transport.py] [_log()] userauth is OK
2025-11-24T11:18:44.602 [DEBUG] [Thread-189025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:18:44.602 [DEBUG] [Thread-189025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:18:44.602 [DEBUG] [Thread-189025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:18:44.602 [DEBUG] [Thread-189025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:18:44.612 [INFO] [Thread-189025] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:18:44.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:18:45.254 [DEBUG] [Thread-189025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:18:45.254 [DEBUG] [Thread-189025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:18:45.254 [DEBUG] [Thread-189025] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:18:45.295 [DEBUG] [Thread-189025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:18:45.295 [DEBUG] [Thread-189025] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:18:45.297 [DEBUG] [Thread-189025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:18:45.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:18:45.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:18:45.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:18:45.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:18:45.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:18:45.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:18:45.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:18:45.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:18:45.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:18:45.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.387549 -999.00  +18.40  13.82     30   +0.50 1 1 1 1 1   888    0 18.26 31.82 ----- 13.8 13.8 151.6 25.4 25.3 -26.8 24.2 -24.7 23.9 -24.2 24.9 -24.7
2025-11-24T11:18:45.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:18:45.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:18:45.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.387549
2025-11-24T11:18:45.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:18:45.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:18:45.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:18:45.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:18:45.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:18:45.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:18:37', tmtdew=20.49, humidity=24.66, cloud=0.0, wind=21.17, temperature=18.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:18:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:18:45.325 [DEBUG] [Thread-189025] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:18:45.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:18:45.409 [DEBUG] [Thread-189028] [transport.py] [_log()] starting thread (client mode): 0xd0711690
2025-11-24T11:18:45.409 [DEBUG] [Thread-189028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:18:45.424 [DEBUG] [Thread-189028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:18:45.424 [INFO] [Thread-189028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] client lang: <none>
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] server lang: <none>
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] kex follows: False
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] Compression: none
2025-11-24T11:18:45.432 [DEBUG] [Thread-189028] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:18:45.489 [DEBUG] [Thread-189028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:18:45.489 [DEBUG] [Thread-189028] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:18:45.489 [DEBUG] [Thread-189028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:18:45.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:18:45.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:18:45.547 [DEBUG] [Thread-189028] [transport.py] [_log()] userauth is OK
2025-11-24T11:18:45.547 [DEBUG] [Thread-189028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:18:45.547 [DEBUG] [Thread-189028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:18:45.547 [DEBUG] [Thread-189028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:18:45.547 [DEBUG] [Thread-189028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:18:45.561 [INFO] [Thread-189028] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:18:45.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:18:45.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:18:46.413 [DEBUG] [Thread-189028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:18:46.413 [DEBUG] [Thread-189028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:18:46.461 [DEBUG] [Thread-189028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:18:46.461 [DEBUG] [Thread-189028] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:18:46.470 [DEBUG] [Thread-189028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:18:46.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:18:46.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:18:46.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:18:46.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:18:46.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:18:46.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:18:46.506 [DEBUG] [Thread-189028] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:18:49.901 [DEBUG] [Thread-189030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:19:04.941 [DEBUG] [Thread-189031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:19:16.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:19:16.529 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:19:16.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-11-24T11:19:17.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 19, 9), 20.36, 24.83, 0.0, 22.11, 17.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:19:17.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:19:09
2025-11-24T11:19:17.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:19:17.692 [DEBUG] [Thread-189032] [transport.py] [_log()] starting thread (client mode): 0xd31b0c10
2025-11-24T11:19:17.692 [DEBUG] [Thread-189032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:19:17.712 [DEBUG] [Thread-189032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:19:17.712 [INFO] [Thread-189032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] client lang: <none>
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] server lang: <none>
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] kex follows: False
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] Compression: none
2025-11-24T11:19:17.715 [DEBUG] [Thread-189032] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:19:17.731 [DEBUG] [Thread-189032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:19:17.731 [DEBUG] [Thread-189032] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:19:17.732 [DEBUG] [Thread-189032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:19:17.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:19:17.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:19:17.733 [DEBUG] [Thread-189032] [transport.py] [_log()] userauth is OK
2025-11-24T11:19:17.733 [DEBUG] [Thread-189032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:19:17.733 [DEBUG] [Thread-189032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:19:17.733 [DEBUG] [Thread-189032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:19:17.733 [DEBUG] [Thread-189032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:19:17.742 [INFO] [Thread-189032] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:19:17.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:19:18.351 [DEBUG] [Thread-189032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:19:18.351 [DEBUG] [Thread-189032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:19:18.352 [DEBUG] [Thread-189032] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:19:18.392 [DEBUG] [Thread-189032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:19:18.392 [DEBUG] [Thread-189032] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:19:18.394 [DEBUG] [Thread-189032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:19:18.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:19:18.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:19:18.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:19:18.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:19:18.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:19:18.411 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:19:18.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:19:18.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.388243 -999.00  +18.10  10.02     29   +0.20 1 1 1 1 1   888    0 18.10 30.23 ----- 10.0 10.0 186.6 20.9 25.4 -25.4 24.2 -27.6 24.0 -23.6 24.9 -25.6
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.388243
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:19:18.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:19:09', tmtdew=20.36, humidity=24.83, cloud=0.0, wind=22.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-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:19:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:19:18.413 [DEBUG] [Thread-189032] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:19:18.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:19:18.498 [DEBUG] [Thread-189035] [transport.py] [_log()] starting thread (client mode): 0xd31b3d60
2025-11-24T11:19:18.498 [DEBUG] [Thread-189035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:19:18.515 [DEBUG] [Thread-189035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:19:18.515 [INFO] [Thread-189035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:19:18.522 [DEBUG] [Thread-189035] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:19:18.522 [DEBUG] [Thread-189035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:19:18.522 [DEBUG] [Thread-189035] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:19:18.522 [DEBUG] [Thread-189035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:19:18.522 [DEBUG] [Thread-189035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:19:18.522 [DEBUG] [Thread-189035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:19:18.522 [DEBUG] [Thread-189035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:19:18.522 [DEBUG] [Thread-189035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:19:18.522 [DEBUG] [Thread-189035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:19:18.522 [DEBUG] [Thread-189035] [transport.py] [_log()] client lang: <none>
2025-11-24T11:19:18.523 [DEBUG] [Thread-189035] [transport.py] [_log()] server lang: <none>
2025-11-24T11:19:18.523 [DEBUG] [Thread-189035] [transport.py] [_log()] kex follows: False
2025-11-24T11:19:18.523 [DEBUG] [Thread-189035] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:19:18.523 [DEBUG] [Thread-189035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:19:18.523 [DEBUG] [Thread-189035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:19:18.523 [DEBUG] [Thread-189035] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:19:18.523 [DEBUG] [Thread-189035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:19:18.523 [DEBUG] [Thread-189035] [transport.py] [_log()] Compression: none
2025-11-24T11:19:18.523 [DEBUG] [Thread-189035] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:19:18.577 [DEBUG] [Thread-189035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:19:18.578 [DEBUG] [Thread-189035] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:19:18.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:19:18.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:19:18.578 [DEBUG] [Thread-189035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:19:18.635 [DEBUG] [Thread-189035] [transport.py] [_log()] userauth is OK
2025-11-24T11:19:18.635 [DEBUG] [Thread-189035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:19:18.635 [DEBUG] [Thread-189035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:19:18.635 [DEBUG] [Thread-189035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:19:18.635 [DEBUG] [Thread-189035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:19:18.650 [INFO] [Thread-189035] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:19:18.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:19:18.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:19:19.517 [DEBUG] [Thread-189035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:19:19.517 [DEBUG] [Thread-189035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:19:19.565 [DEBUG] [Thread-189035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:19:19.565 [DEBUG] [Thread-189035] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:19:19.574 [DEBUG] [Thread-189035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:19:19.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:19:19.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-11-24T11:19:19.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-11-24T11:19:19.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:19:19.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:19:19.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:19:19.605 [DEBUG] [Thread-189035] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:19:19.978 [DEBUG] [Thread-189037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:19:35.019 [DEBUG] [Thread-189038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:19:37.843 [DEBUG] [Thread-189039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:19:49.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:19:49.628 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:19:49.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-11-24T11:19:50.049 [DEBUG] [Thread-189040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:19:50.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 19, 42), 21.1, 23.53, 0.0, 17.1, 18.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:19:50.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:19:42
2025-11-24T11:19:50.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:19:50.739 [DEBUG] [Thread-189041] [transport.py] [_log()] starting thread (client mode): 0xd0711810
2025-11-24T11:19:50.739 [DEBUG] [Thread-189041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:19:50.751 [DEBUG] [Thread-189041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:19:50.751 [INFO] [Thread-189041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:19:50.754 [DEBUG] [Thread-189041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:19:50.754 [DEBUG] [Thread-189041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:19:50.754 [DEBUG] [Thread-189041] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:19:50.754 [DEBUG] [Thread-189041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:19:50.754 [DEBUG] [Thread-189041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:19:50.754 [DEBUG] [Thread-189041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:19:50.754 [DEBUG] [Thread-189041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:19:50.754 [DEBUG] [Thread-189041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:19:50.754 [DEBUG] [Thread-189041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:19:50.754 [DEBUG] [Thread-189041] [transport.py] [_log()] client lang: <none>
2025-11-24T11:19:50.755 [DEBUG] [Thread-189041] [transport.py] [_log()] server lang: <none>
2025-11-24T11:19:50.755 [DEBUG] [Thread-189041] [transport.py] [_log()] kex follows: False
2025-11-24T11:19:50.755 [DEBUG] [Thread-189041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:19:50.755 [DEBUG] [Thread-189041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:19:50.755 [DEBUG] [Thread-189041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:19:50.755 [DEBUG] [Thread-189041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:19:50.755 [DEBUG] [Thread-189041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:19:50.755 [DEBUG] [Thread-189041] [transport.py] [_log()] Compression: none
2025-11-24T11:19:50.755 [DEBUG] [Thread-189041] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:19:50.771 [DEBUG] [Thread-189041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:19:50.772 [DEBUG] [Thread-189041] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:19:50.772 [DEBUG] [Thread-189041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:19:50.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:19:50.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:19:50.817 [DEBUG] [Thread-189041] [transport.py] [_log()] userauth is OK
2025-11-24T11:19:50.817 [DEBUG] [Thread-189041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:19:50.817 [DEBUG] [Thread-189041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:19:50.817 [DEBUG] [Thread-189041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:19:50.817 [DEBUG] [Thread-189041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:19:50.836 [INFO] [Thread-189041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:19:50.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:19:51.517 [DEBUG] [Thread-189041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:19:51.517 [DEBUG] [Thread-189041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:19:51.518 [DEBUG] [Thread-189041] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:19:51.559 [DEBUG] [Thread-189041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:19:51.559 [DEBUG] [Thread-189041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:19:51.562 [DEBUG] [Thread-189041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:19:51.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:19:51.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:19:51.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:19:51.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:19:51.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:19:51.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:19:51.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:19:51.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:19:51.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:19:51.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.388591 -999.00  +18.30  10.56     29   +0.30 1 1 1 1 1   888    0 18.24 29.94 ----- 10.6 10.6 163.7 18.7 25.5 -25.3 24.4 -24.0 24.1 -23.0 25.0 -25.0
2025-11-24T11:19:51.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:19:51.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:19:51.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.388591
2025-11-24T11:19:51.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:19:51.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:19:51.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:19:51.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:19:51.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:19:51.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:19:42', tmtdew=21.1, humidity=23.53, cloud=0.0, wind=17.1, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:19:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:19:51.595 [DEBUG] [Thread-189041] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:19:51.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:19:51.692 [DEBUG] [Thread-189044] [transport.py] [_log()] starting thread (client mode): 0xd073a8c0
2025-11-24T11:19:51.692 [DEBUG] [Thread-189044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:19:51.707 [DEBUG] [Thread-189044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:19:51.707 [INFO] [Thread-189044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:19:51.715 [DEBUG] [Thread-189044] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:19:51.715 [DEBUG] [Thread-189044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:19:51.715 [DEBUG] [Thread-189044] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:19:51.715 [DEBUG] [Thread-189044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:19:51.715 [DEBUG] [Thread-189044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:19:51.716 [DEBUG] [Thread-189044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:19:51.716 [DEBUG] [Thread-189044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:19:51.716 [DEBUG] [Thread-189044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:19:51.716 [DEBUG] [Thread-189044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:19:51.716 [DEBUG] [Thread-189044] [transport.py] [_log()] client lang: <none>
2025-11-24T11:19:51.716 [DEBUG] [Thread-189044] [transport.py] [_log()] server lang: <none>
2025-11-24T11:19:51.716 [DEBUG] [Thread-189044] [transport.py] [_log()] kex follows: False
2025-11-24T11:19:51.716 [DEBUG] [Thread-189044] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:19:51.717 [DEBUG] [Thread-189044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:19:51.717 [DEBUG] [Thread-189044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:19:51.717 [DEBUG] [Thread-189044] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:19:51.717 [DEBUG] [Thread-189044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:19:51.717 [DEBUG] [Thread-189044] [transport.py] [_log()] Compression: none
2025-11-24T11:19:51.717 [DEBUG] [Thread-189044] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:19:51.776 [DEBUG] [Thread-189044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:19:51.777 [DEBUG] [Thread-189044] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:19:51.778 [DEBUG] [Thread-189044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:19:51.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:19:51.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:19:51.835 [DEBUG] [Thread-189044] [transport.py] [_log()] userauth is OK
2025-11-24T11:19:51.836 [DEBUG] [Thread-189044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:19:51.836 [DEBUG] [Thread-189044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:19:51.836 [DEBUG] [Thread-189044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:19:51.836 [DEBUG] [Thread-189044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:19:51.855 [INFO] [Thread-189044] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:19: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-11-24T11:19:51.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:19:52.677 [DEBUG] [Thread-189044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:19:52.677 [DEBUG] [Thread-189044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:19:52.725 [DEBUG] [Thread-189044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:19:52.725 [DEBUG] [Thread-189044] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:19:52.733 [DEBUG] [Thread-189044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:19:52.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:19:52.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-11-24T11:19:52.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-11-24T11:19:52.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:19:52.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:19:52.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:19:52.765 [DEBUG] [Thread-189044] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:20:05.078 [DEBUG] [Thread-189046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:20:20.131 [DEBUG] [Thread-189047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:20:22.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:20:22.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:20:22.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-11-24T11:20:23.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 20, 14), 21.06, 23.55, 0.0, 17.86, 18.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:20:23.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:20:14
2025-11-24T11:20:23.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:20:23.880 [DEBUG] [Thread-189048] [transport.py] [_log()] starting thread (client mode): 0xd0710610
2025-11-24T11:20:23.880 [DEBUG] [Thread-189048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:20:23.901 [DEBUG] [Thread-189048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:20:23.901 [INFO] [Thread-189048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:20:23.904 [DEBUG] [Thread-189048] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] client lang: <none>
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] server lang: <none>
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] kex follows: False
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] Compression: none
2025-11-24T11:20:23.905 [DEBUG] [Thread-189048] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:20:23.922 [DEBUG] [Thread-189048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:20:23.923 [DEBUG] [Thread-189048] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:20:23.923 [DEBUG] [Thread-189048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:20:23.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:20:23.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:20:23.925 [DEBUG] [Thread-189048] [transport.py] [_log()] userauth is OK
2025-11-24T11:20:23.925 [DEBUG] [Thread-189048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:20:23.925 [DEBUG] [Thread-189048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:20:23.926 [DEBUG] [Thread-189048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:20:23.926 [DEBUG] [Thread-189048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:20:23.940 [INFO] [Thread-189048] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:20:23.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:20:24.563 [DEBUG] [Thread-189048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:20:24.573 [DEBUG] [Thread-189048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:20:24.573 [DEBUG] [Thread-189048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:20:24.604 [DEBUG] [Thread-189048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:20:24.605 [DEBUG] [Thread-189048] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:20:24.608 [DEBUG] [Thread-189048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:20:24.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:20:24.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:20:24.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:20:24.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:20:24.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:20:24.634 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:20:24.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:20:24.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:20:24.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:20:24.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.388938 -999.00  +18.50  14.04     28   +0.00 1 1 1 1 1   888    0 18.24 31.91 ----- 14.0 14.0 162.8 17.8 25.7 -25.2 24.6 -24.0 24.1 -22.9 25.2 -24.7
2025-11-24T11:20:24.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:20:24.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:20:24.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.388938
2025-11-24T11:20:24.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:20:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:20:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:20:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:20:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:20:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:20:14', tmtdew=21.06, humidity=23.55, cloud=0.0, wind=17.86, temperature=18.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:20:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:20:24.638 [DEBUG] [Thread-189048] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:20:24.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:20:24.732 [DEBUG] [Thread-189051] [transport.py] [_log()] starting thread (client mode): 0xd3151240
2025-11-24T11:20:24.733 [DEBUG] [Thread-189051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:20:24.748 [DEBUG] [Thread-189051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:20:24.749 [INFO] [Thread-189051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:20:24.765 [DEBUG] [Thread-189051] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:20:24.765 [DEBUG] [Thread-189051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] client lang: <none>
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] server lang: <none>
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] kex follows: False
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:20:24.766 [DEBUG] [Thread-189051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:20:24.767 [DEBUG] [Thread-189051] [transport.py] [_log()] Compression: none
2025-11-24T11:20:24.767 [DEBUG] [Thread-189051] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:20:24.816 [DEBUG] [Thread-189051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:20:24.817 [DEBUG] [Thread-189051] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:20:24.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:20:24.818 [DEBUG] [Thread-189051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:20:24.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:20:24.876 [DEBUG] [Thread-189051] [transport.py] [_log()] userauth is OK
2025-11-24T11:20:24.876 [DEBUG] [Thread-189051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:20:24.876 [DEBUG] [Thread-189051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:20:24.876 [DEBUG] [Thread-189051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:20:24.876 [DEBUG] [Thread-189051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:20:24.896 [INFO] [Thread-189051] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:20:24.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:20:24.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:20:25.729 [DEBUG] [Thread-189051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:20:25.729 [DEBUG] [Thread-189051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:20:25.777 [DEBUG] [Thread-189051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:20:25.777 [DEBUG] [Thread-189051] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:20:25.785 [DEBUG] [Thread-189051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:20:25.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:20:25.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:20:25.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:20:25.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:20:25.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:20:25.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:20:25.817 [DEBUG] [Thread-189051] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:20:35.168 [DEBUG] [Thread-189053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:20:37.878 [DEBUG] [Thread-189054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:20:50.201 [DEBUG] [Thread-189055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:20:55.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:20:55.827 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:20:55.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-11-24T11:20:56.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 20, 46), 21.26, 23.65, 0.0, 23.4, 18.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:20:56.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:20:46
2025-11-24T11:20:56.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:20:56.921 [DEBUG] [Thread-189056] [transport.py] [_log()] starting thread (client mode): 0xd31b1960
2025-11-24T11:20:56.921 [DEBUG] [Thread-189056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:20:56.940 [DEBUG] [Thread-189056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:20:56.940 [INFO] [Thread-189056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] client lang: <none>
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] server lang: <none>
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] kex follows: False
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] Compression: none
2025-11-24T11:20:56.941 [DEBUG] [Thread-189056] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:20:56.949 [DEBUG] [Thread-189056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:20:56.949 [DEBUG] [Thread-189056] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:20:56.949 [DEBUG] [Thread-189056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:20:56.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:20:56.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:20:56.950 [DEBUG] [Thread-189056] [transport.py] [_log()] userauth is OK
2025-11-24T11:20:56.950 [DEBUG] [Thread-189056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:20:56.950 [DEBUG] [Thread-189056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:20:56.950 [DEBUG] [Thread-189056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:20:56.950 [DEBUG] [Thread-189056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:20:56.962 [INFO] [Thread-189056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:20:56.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:20:57.619 [DEBUG] [Thread-189056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:20:57.619 [DEBUG] [Thread-189056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:20:57.619 [DEBUG] [Thread-189056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:20:57.660 [DEBUG] [Thread-189056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:20:57.660 [DEBUG] [Thread-189056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:20:57.662 [DEBUG] [Thread-189056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:20:57.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:20:57.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:20:57.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:20:57.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:20:57.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:20:57.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:20:57.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.389285 -999.00  +18.80  19.35     28   +0.30 1 1 1 1 1   888    0 18.18 34.38 ----- 19.4 19.4 166.2 23.8 25.8 -27.0 24.6 -24.7 24.3 -23.6 25.2 -24.6
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.389285
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:20:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:20:46', tmtdew=21.26, humidity=23.65, cloud=0.0, wind=23.4, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:20:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:20:57.690 [DEBUG] [Thread-189056] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:20:57.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:20:57.772 [DEBUG] [Thread-189059] [transport.py] [_log()] starting thread (client mode): 0xd317fbe0
2025-11-24T11:20:57.772 [DEBUG] [Thread-189059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:20:57.786 [DEBUG] [Thread-189059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:20:57.786 [INFO] [Thread-189059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] client lang: <none>
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] server lang: <none>
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] kex follows: False
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] Compression: none
2025-11-24T11:20:57.794 [DEBUG] [Thread-189059] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:20:57.850 [DEBUG] [Thread-189059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:20:57.850 [DEBUG] [Thread-189059] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:20:57.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:20:57.850 [DEBUG] [Thread-189059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:20:57.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:20:57.908 [DEBUG] [Thread-189059] [transport.py] [_log()] userauth is OK
2025-11-24T11:20:57.908 [DEBUG] [Thread-189059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:20:57.917 [DEBUG] [Thread-189059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:20:57.917 [DEBUG] [Thread-189059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:20:57.917 [DEBUG] [Thread-189059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:20:57.946 [INFO] [Thread-189059] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:20:57.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:20:57.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:20:58.788 [DEBUG] [Thread-189059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:20:58.788 [DEBUG] [Thread-189059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:20:58.835 [DEBUG] [Thread-189059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:20:58.836 [DEBUG] [Thread-189059] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:20:58.845 [DEBUG] [Thread-189059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:20:58.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:20:58.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:20:58.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-11-24T11:20:58.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:20:58.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:20:58.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:20:58.881 [DEBUG] [Thread-189059] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:21:05.243 [DEBUG] [Thread-189061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:21:20.287 [DEBUG] [Thread-189062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:21:28.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:21:28.904 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:21:28.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:21:29.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 21, 19), 21.2, 23.75, 0.0, 24.08, 18.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:21:29.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:21:19
2025-11-24T11:21:29.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:21:29.933 [DEBUG] [Thread-189063] [transport.py] [_log()] starting thread (client mode): 0xd317e2f0
2025-11-24T11:21:29.933 [DEBUG] [Thread-189063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:21:29.953 [DEBUG] [Thread-189063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:21:29.953 [INFO] [Thread-189063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:21:29.956 [DEBUG] [Thread-189063] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:21:29.956 [DEBUG] [Thread-189063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] client lang: <none>
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] server lang: <none>
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] kex follows: False
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:21:29.957 [DEBUG] [Thread-189063] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:21:29.958 [DEBUG] [Thread-189063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:21:29.967 [DEBUG] [Thread-189063] [transport.py] [_log()] Compression: none
2025-11-24T11:21:29.967 [DEBUG] [Thread-189063] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:21:29.987 [DEBUG] [Thread-189063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:21:29.987 [DEBUG] [Thread-189063] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:21:29.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:21:29.989 [DEBUG] [Thread-189063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:21:29.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:21:29.991 [DEBUG] [Thread-189063] [transport.py] [_log()] userauth is OK
2025-11-24T11:21:29.991 [DEBUG] [Thread-189063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:21:29.991 [DEBUG] [Thread-189063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:21:29.991 [DEBUG] [Thread-189063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:21:29.991 [DEBUG] [Thread-189063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:21:30.016 [INFO] [Thread-189063] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:21:30.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:21:30.672 [DEBUG] [Thread-189063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:21:30.672 [DEBUG] [Thread-189063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:21:30.672 [DEBUG] [Thread-189063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:21:30.713 [DEBUG] [Thread-189063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:21:30.713 [DEBUG] [Thread-189063] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:21:30.715 [DEBUG] [Thread-189063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:21:30.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:21:30.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:21:30.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:21:30.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:21:30.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:21:30.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:21:30.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.389632 -999.00  +18.90  32.86     28   +0.10 1 1 2 1 1   888    0 18.44 35.48 ----- 32.9 32.9 181.2 37.4 25.3 -29.2 24.1 -32.8 24.2 -24.6 24.9 -27.3
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.389632
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:21:30.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:21:19', tmtdew=21.2, humidity=23.75, cloud=0.0, wind=24.08, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:21:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:21:30.744 [DEBUG] [Thread-189063] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:21:30.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:21:30.828 [DEBUG] [Thread-189066] [transport.py] [_log()] starting thread (client mode): 0xd3150c70
2025-11-24T11:21:30.828 [DEBUG] [Thread-189066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:21:30.843 [DEBUG] [Thread-189066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:21:30.843 [INFO] [Thread-189066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] client lang: <none>
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] server lang: <none>
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] kex follows: False
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] Compression: none
2025-11-24T11:21:30.851 [DEBUG] [Thread-189066] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:21:30.906 [DEBUG] [Thread-189066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:21:30.906 [DEBUG] [Thread-189066] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:21:30.907 [DEBUG] [Thread-189066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:21:30.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:21:30.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:21:30.963 [DEBUG] [Thread-189066] [transport.py] [_log()] userauth is OK
2025-11-24T11:21:30.964 [DEBUG] [Thread-189066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:21:30.964 [DEBUG] [Thread-189066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:21:30.964 [DEBUG] [Thread-189066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:21:30.964 [DEBUG] [Thread-189066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:21:30.977 [INFO] [Thread-189066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:21:30.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:21:30.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:21:31.882 [DEBUG] [Thread-189066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:21:31.883 [DEBUG] [Thread-189066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:21:31.931 [DEBUG] [Thread-189066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:21:31.931 [DEBUG] [Thread-189066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:21:31.940 [DEBUG] [Thread-189066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:21:31.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:21:31.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-11-24T11:21:31.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-11-24T11:21:31.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:21:31.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:21:31.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:21:31.976 [DEBUG] [Thread-189066] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:21:35.321 [DEBUG] [Thread-189068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:21:38.201 [DEBUG] [Thread-189069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:21:50.370 [DEBUG] [Thread-189070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:22:01.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:22:01.970 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:22:01.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-11-24T11:22:02.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 21, 51), 21.17, 23.42, 0.0, 22.69, 18.32, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:22:02.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:21:51
2025-11-24T11:22:02.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:22:02.971 [DEBUG] [Thread-189071] [transport.py] [_log()] starting thread (client mode): 0xd31b2380
2025-11-24T11:22:02.971 [DEBUG] [Thread-189071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:22:02.990 [DEBUG] [Thread-189071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:22:02.990 [INFO] [Thread-189071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] client lang: <none>
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] server lang: <none>
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] kex follows: False
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] Compression: none
2025-11-24T11:22:02.992 [DEBUG] [Thread-189071] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:22:03.006 [DEBUG] [Thread-189071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:22:03.007 [DEBUG] [Thread-189071] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:22:03.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:22:03.008 [DEBUG] [Thread-189071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:22:03.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:22:03.010 [DEBUG] [Thread-189071] [transport.py] [_log()] userauth is OK
2025-11-24T11:22:03.010 [DEBUG] [Thread-189071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:22:03.010 [DEBUG] [Thread-189071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:22:03.010 [DEBUG] [Thread-189071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:22:03.010 [DEBUG] [Thread-189071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:22:03.047 [INFO] [Thread-189071] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:22:03.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:22:03.707 [DEBUG] [Thread-189071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:22:03.707 [DEBUG] [Thread-189071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:22:03.708 [DEBUG] [Thread-189071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:22:03.748 [DEBUG] [Thread-189071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:22:03.749 [DEBUG] [Thread-189071] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:22:03.752 [DEBUG] [Thread-189071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:22:03.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:22:03.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:22:03.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:22:03.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:22:03.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:22:03.776 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:22:03.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:22:03.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:22:03.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:22:03.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.389979 -999.00  +18.40  15.20     29   +0.10 1 1 1 1 1   888    0 18.53 34.25 ----- 15.2 15.2 197.3 30.9 25.4 -25.6 23.9 -28.3 23.9 -24.8 24.9 -25.8
2025-11-24T11:22:03.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:22:03.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:22:03.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.389979
2025-11-24T11:22:03.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:22:03.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:22:03.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:22:03.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:22:03.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:22:03.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:21:51', tmtdew=21.17, humidity=23.42, cloud=0.0, wind=22.69, temperature=18.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:21:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:22:03.779 [DEBUG] [Thread-189071] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:22:03.862 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:22:03.873 [DEBUG] [Thread-189074] [transport.py] [_log()] starting thread (client mode): 0xd0701930
2025-11-24T11:22:03.873 [DEBUG] [Thread-189074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:22:03.887 [DEBUG] [Thread-189074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:22:03.887 [INFO] [Thread-189074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:22:03.895 [DEBUG] [Thread-189074] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:22:03.895 [DEBUG] [Thread-189074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:22:03.895 [DEBUG] [Thread-189074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:22:03.895 [DEBUG] [Thread-189074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:22:03.895 [DEBUG] [Thread-189074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:22:03.896 [DEBUG] [Thread-189074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:22:03.896 [DEBUG] [Thread-189074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:22:03.896 [DEBUG] [Thread-189074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:22:03.896 [DEBUG] [Thread-189074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:22:03.896 [DEBUG] [Thread-189074] [transport.py] [_log()] client lang: <none>
2025-11-24T11:22:03.896 [DEBUG] [Thread-189074] [transport.py] [_log()] server lang: <none>
2025-11-24T11:22:03.896 [DEBUG] [Thread-189074] [transport.py] [_log()] kex follows: False
2025-11-24T11:22:03.896 [DEBUG] [Thread-189074] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:22:03.896 [DEBUG] [Thread-189074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:22:03.897 [DEBUG] [Thread-189074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:22:03.897 [DEBUG] [Thread-189074] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:22:03.897 [DEBUG] [Thread-189074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:22:03.897 [DEBUG] [Thread-189074] [transport.py] [_log()] Compression: none
2025-11-24T11:22:03.897 [DEBUG] [Thread-189074] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:22:03.952 [DEBUG] [Thread-189074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:22:03.952 [DEBUG] [Thread-189074] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:22:03.953 [DEBUG] [Thread-189074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:22:03.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:22:03.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:22:04.007 [DEBUG] [Thread-189074] [transport.py] [_log()] userauth is OK
2025-11-24T11:22:04.008 [DEBUG] [Thread-189074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:22:04.008 [DEBUG] [Thread-189074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:22:04.008 [DEBUG] [Thread-189074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:22:04.008 [DEBUG] [Thread-189074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:22:04.022 [INFO] [Thread-189074] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:22:04.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:22:04.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:22:04.927 [DEBUG] [Thread-189074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:22:04.928 [DEBUG] [Thread-189074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:22:04.976 [DEBUG] [Thread-189074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:22:04.976 [DEBUG] [Thread-189074] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:22:04.985 [DEBUG] [Thread-189074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:22:04.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:22:04.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-11-24T11:22:05.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-11-24T11:22:05.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:22:05.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:22:05.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:22:05.022 [DEBUG] [Thread-189074] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:22:05.413 [DEBUG] [Thread-189076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:22:20.487 [DEBUG] [Thread-189077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:22:35.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:22:35.045 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:22:35.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:22:35.521 [DEBUG] [Thread-189078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:22:35.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 22, 25), 21.26, 23.3, 0.0, 25.0, 18.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:22:35.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:22:25
2025-11-24T11:22:35.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:22:36.112 [DEBUG] [Thread-189079] [transport.py] [_log()] starting thread (client mode): 0xd31b0a60
2025-11-24T11:22:36.113 [DEBUG] [Thread-189079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:22:36.132 [DEBUG] [Thread-189079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:22:36.132 [INFO] [Thread-189079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:22:36.142 [DEBUG] [Thread-189079] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:22:36.142 [DEBUG] [Thread-189079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:22:36.142 [DEBUG] [Thread-189079] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:22:36.142 [DEBUG] [Thread-189079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:22:36.143 [DEBUG] [Thread-189079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:22:36.143 [DEBUG] [Thread-189079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:22:36.143 [DEBUG] [Thread-189079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:22:36.143 [DEBUG] [Thread-189079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:22:36.143 [DEBUG] [Thread-189079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:22:36.143 [DEBUG] [Thread-189079] [transport.py] [_log()] client lang: <none>
2025-11-24T11:22:36.143 [DEBUG] [Thread-189079] [transport.py] [_log()] server lang: <none>
2025-11-24T11:22:36.143 [DEBUG] [Thread-189079] [transport.py] [_log()] kex follows: False
2025-11-24T11:22:36.143 [DEBUG] [Thread-189079] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:22:36.143 [DEBUG] [Thread-189079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:22:36.144 [DEBUG] [Thread-189079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:22:36.144 [DEBUG] [Thread-189079] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:22:36.144 [DEBUG] [Thread-189079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:22:36.144 [DEBUG] [Thread-189079] [transport.py] [_log()] Compression: none
2025-11-24T11:22:36.144 [DEBUG] [Thread-189079] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:22:36.163 [DEBUG] [Thread-189079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:22:36.164 [DEBUG] [Thread-189079] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:22:36.164 [DEBUG] [Thread-189079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:22:36.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:22:36.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:22:36.167 [DEBUG] [Thread-189079] [transport.py] [_log()] userauth is OK
2025-11-24T11:22:36.167 [DEBUG] [Thread-189079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:22:36.167 [DEBUG] [Thread-189079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:22:36.167 [DEBUG] [Thread-189079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:22:36.167 [DEBUG] [Thread-189079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:22:36.192 [INFO] [Thread-189079] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:22:36.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:22:36.781 [DEBUG] [Thread-189079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:22:36.782 [DEBUG] [Thread-189079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:22:36.782 [DEBUG] [Thread-189079] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:22:36.823 [DEBUG] [Thread-189079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:22:36.823 [DEBUG] [Thread-189079] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:22:36.826 [DEBUG] [Thread-189079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:22:36.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:22:36.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:22:36.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:22:36.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:22:36.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:22:36.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:22:36.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:22:36.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:22:36.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:22:36.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.390327 -999.00  +18.30  22.31     29   +0.10 1 1 1 1 1   888    0 18.55 37.32 ----- 22.3 22.3 168.4 35.2 25.2 -27.1 23.9 -28.1 24.0 -25.4 24.8 -26.5
2025-11-24T11:22:36.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:22:36.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:22:36.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.390327
2025-11-24T11:22:36.860 [DEBUG] [Thread-189079] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:22:36.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:22:36.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:22:36.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:22:36.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:22:36.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:22:36.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:22:25', tmtdew=21.26, humidity=23.3, cloud=0.0, wind=25.0, temperature=18.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:22:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:22:36.938 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:22:36.951 [DEBUG] [Thread-189082] [transport.py] [_log()] starting thread (client mode): 0xd07392a0
2025-11-24T11:22:36.951 [DEBUG] [Thread-189082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:22:36.965 [DEBUG] [Thread-189082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:22:36.965 [INFO] [Thread-189082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:22:36.972 [DEBUG] [Thread-189082] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:22:36.972 [DEBUG] [Thread-189082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] client lang: <none>
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] server lang: <none>
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] kex follows: False
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] Compression: none
2025-11-24T11:22:36.973 [DEBUG] [Thread-189082] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:22:37.030 [DEBUG] [Thread-189082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:22:37.031 [DEBUG] [Thread-189082] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:22:37.031 [DEBUG] [Thread-189082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:22:37.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:22:37.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:22:37.091 [DEBUG] [Thread-189082] [transport.py] [_log()] userauth is OK
2025-11-24T11:22:37.091 [DEBUG] [Thread-189082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:22:37.091 [DEBUG] [Thread-189082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:22:37.091 [DEBUG] [Thread-189082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:22:37.091 [DEBUG] [Thread-189082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:22:37.109 [INFO] [Thread-189082] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:22:37.109 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:22:37.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:22:37.947 [DEBUG] [Thread-189082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:22:37.947 [DEBUG] [Thread-189082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:22:37.996 [DEBUG] [Thread-189082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:22:37.996 [DEBUG] [Thread-189082] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:22:38.006 [DEBUG] [Thread-189082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:22:38.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:22:38.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-11-24T11:22:38.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-11-24T11:22:38.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:22:38.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:22:38.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:22:38.042 [DEBUG] [Thread-189082] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:22:38.262 [DEBUG] [Thread-189084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:22:50.553 [DEBUG] [Thread-189085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:23:05.612 [DEBUG] [Thread-189086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:23:08.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:23:08.036 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:23:08.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-11-24T11:23:08.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 22, 57), 21.64, 22.68, 0.0, 23.78, 18.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:23:08.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:22:57
2025-11-24T11:23:08.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:23:09.143 [DEBUG] [Thread-189087] [transport.py] [_log()] starting thread (client mode): 0xd317e8f0
2025-11-24T11:23:09.143 [DEBUG] [Thread-189087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:23:09.168 [DEBUG] [Thread-189087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:23:09.168 [INFO] [Thread-189087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] client lang: <none>
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] server lang: <none>
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] kex follows: False
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] Compression: none
2025-11-24T11:23:09.170 [DEBUG] [Thread-189087] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:23:09.181 [DEBUG] [Thread-189087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:23:09.181 [DEBUG] [Thread-189087] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:23:09.181 [DEBUG] [Thread-189087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:23:09.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:23:09.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:23:09.182 [DEBUG] [Thread-189087] [transport.py] [_log()] userauth is OK
2025-11-24T11:23:09.182 [DEBUG] [Thread-189087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:23:09.182 [DEBUG] [Thread-189087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:23:09.182 [DEBUG] [Thread-189087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:23:09.182 [DEBUG] [Thread-189087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:23:09.191 [INFO] [Thread-189087] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:23:09.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:23:09.807 [DEBUG] [Thread-189087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:23:09.807 [DEBUG] [Thread-189087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:23:09.807 [DEBUG] [Thread-189087] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:23:09.848 [DEBUG] [Thread-189087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:23:09.848 [DEBUG] [Thread-189087] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:23:09.852 [DEBUG] [Thread-189087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:23:09.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:23:09.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:23:09.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:23:09.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:23:09.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:23:09.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:23:09.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.390674 -999.00  +18.60  16.30     29   +0.50 1 1 1 1 1   888    0 18.63 36.45 ----- 16.3 16.3 191.2 25.3 25.4 -24.1 24.1 -24.4 23.9 -23.0 24.9 -24.5
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.390674
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:23:09.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:22:57', tmtdew=21.64, humidity=22.68, cloud=0.0, wind=23.78, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:22:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:23:09.878 [DEBUG] [Thread-189087] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:23:09.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:23:09.964 [DEBUG] [Thread-189090] [transport.py] [_log()] starting thread (client mode): 0xd3150130
2025-11-24T11:23:09.964 [DEBUG] [Thread-189090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:23:09.978 [DEBUG] [Thread-189090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:23:09.978 [INFO] [Thread-189090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] client lang: <none>
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] server lang: <none>
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] kex follows: False
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:23:09.986 [DEBUG] [Thread-189090] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:23:09.987 [DEBUG] [Thread-189090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:23:09.987 [DEBUG] [Thread-189090] [transport.py] [_log()] Compression: none
2025-11-24T11:23:09.987 [DEBUG] [Thread-189090] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:23:10.042 [DEBUG] [Thread-189090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:23:10.042 [DEBUG] [Thread-189090] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:23:10.042 [DEBUG] [Thread-189090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:23:10.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:23:10.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:23:10.099 [DEBUG] [Thread-189090] [transport.py] [_log()] userauth is OK
2025-11-24T11:23:10.099 [DEBUG] [Thread-189090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:23:10.099 [DEBUG] [Thread-189090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:23:10.099 [DEBUG] [Thread-189090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:23:10.100 [DEBUG] [Thread-189090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:23:10.113 [INFO] [Thread-189090] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:23:10.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:23:10.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:23:10.961 [DEBUG] [Thread-189090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:23:10.961 [DEBUG] [Thread-189090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:23:11.000 [DEBUG] [Thread-189090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:23:11.000 [DEBUG] [Thread-189090] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:23:11.008 [DEBUG] [Thread-189090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:23:11.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:23:11.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-11-24T11:23:11.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-11-24T11:23:11.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:23:11.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:23:11.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:23:11.040 [DEBUG] [Thread-189090] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:23:20.656 [DEBUG] [Thread-189092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:23:35.709 [DEBUG] [Thread-189093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:23:38.590 [DEBUG] [Thread-189094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:23:41.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:23:41.063 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:23:41.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:23:41.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 23, 29), 21.89, 22.29, 0.0, 23.56, 18.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:23:41.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:23:29
2025-11-24T11:23:42.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:23:42.171 [DEBUG] [Thread-189095] [transport.py] [_log()] starting thread (client mode): 0xd31cf790
2025-11-24T11:23:42.171 [DEBUG] [Thread-189095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:23:42.192 [DEBUG] [Thread-189095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:23:42.192 [INFO] [Thread-189095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:23:42.194 [DEBUG] [Thread-189095] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] client lang: <none>
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] server lang: <none>
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] kex follows: False
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] Compression: none
2025-11-24T11:23:42.195 [DEBUG] [Thread-189095] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:23:42.204 [DEBUG] [Thread-189095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:23:42.205 [DEBUG] [Thread-189095] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:23:42.205 [DEBUG] [Thread-189095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:23:42.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:23:42.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:23:42.207 [DEBUG] [Thread-189095] [transport.py] [_log()] userauth is OK
2025-11-24T11:23:42.207 [DEBUG] [Thread-189095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:23:42.207 [DEBUG] [Thread-189095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:23:42.207 [DEBUG] [Thread-189095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:23:42.207 [DEBUG] [Thread-189095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:23:42.228 [INFO] [Thread-189095] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:23:42.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:23:42.784 [DEBUG] [Thread-189095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:23:42.784 [DEBUG] [Thread-189095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:23:42.784 [DEBUG] [Thread-189095] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:23:42.825 [DEBUG] [Thread-189095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:23:42.825 [DEBUG] [Thread-189095] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:23:42.828 [DEBUG] [Thread-189095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:23:42.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:23:42.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:23:42.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:23:42.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:23:42.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:23:42.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:23:42.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:23:42.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:23:42.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:23:42.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.391368 -999.00  +19.00  17.37     28   +0.30 1 1 1 1 1   888    0 19.45 54.02 ----- 17.4 17.4 194.0 25.9 25.3 -26.5 24.0 -26.9 24.1 -24.0 24.8 -27.4
2025-11-24T11:23:42.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:23:42.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:23:42.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.391368
2025-11-24T11:23:42.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:23:42.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:23:42.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:23:42.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:23:42.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:23:42.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:23:29', tmtdew=21.89, humidity=22.29, cloud=0.0, wind=23.56, temperature=18.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:23:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:23:42.852 [DEBUG] [Thread-189095] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:23:42.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:23:42.948 [DEBUG] [Thread-189098] [transport.py] [_log()] starting thread (client mode): 0xd317d3f0
2025-11-24T11:23:42.948 [DEBUG] [Thread-189098] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:23:42.962 [DEBUG] [Thread-189098] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:23:42.962 [INFO] [Thread-189098] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] client lang: <none>
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] server lang: <none>
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] kex follows: False
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] Compression: none
2025-11-24T11:23:42.970 [DEBUG] [Thread-189098] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:23:43.028 [DEBUG] [Thread-189098] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:23:43.029 [DEBUG] [Thread-189098] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:23:43.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:23:43.029 [DEBUG] [Thread-189098] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:23:43.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:23:43.083 [DEBUG] [Thread-189098] [transport.py] [_log()] userauth is OK
2025-11-24T11:23:43.084 [DEBUG] [Thread-189098] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:23:43.084 [DEBUG] [Thread-189098] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:23:43.084 [DEBUG] [Thread-189098] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:23:43.084 [DEBUG] [Thread-189098] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:23:43.106 [INFO] [Thread-189098] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:23:43.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:23:43.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:23:43.944 [DEBUG] [Thread-189098] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:23:43.944 [DEBUG] [Thread-189098] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:23:43.992 [DEBUG] [Thread-189098] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:23:43.992 [DEBUG] [Thread-189098] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:23:44.000 [DEBUG] [Thread-189098] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:23:44.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:23:44.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-11-24T11:23:44.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-11-24T11:23:44.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:23:44.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:23:44.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:23:44.032 [DEBUG] [Thread-189098] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:23:50.739 [DEBUG] [Thread-189100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:24:05.775 [DEBUG] [Thread-189101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:24:14.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:24:14.055 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:24:14.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-11-24T11:24:14.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 24, 2), 21.57, 22.77, 0.0, 20.47, 18.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:24:14.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:24:02
2025-11-24T11:24:15.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:24:15.155 [DEBUG] [Thread-189102] [transport.py] [_log()] starting thread (client mode): 0xd317c6d0
2025-11-24T11:24:15.155 [DEBUG] [Thread-189102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:24:15.176 [DEBUG] [Thread-189102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:24:15.176 [INFO] [Thread-189102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] client lang: <none>
2025-11-24T11:24:15.180 [DEBUG] [Thread-189102] [transport.py] [_log()] server lang: <none>
2025-11-24T11:24:15.181 [DEBUG] [Thread-189102] [transport.py] [_log()] kex follows: False
2025-11-24T11:24:15.181 [DEBUG] [Thread-189102] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:24:15.181 [DEBUG] [Thread-189102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:24:15.181 [DEBUG] [Thread-189102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:24:15.181 [DEBUG] [Thread-189102] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:24:15.181 [DEBUG] [Thread-189102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:24:15.181 [DEBUG] [Thread-189102] [transport.py] [_log()] Compression: none
2025-11-24T11:24:15.181 [DEBUG] [Thread-189102] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:24:15.193 [DEBUG] [Thread-189102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:24:15.194 [DEBUG] [Thread-189102] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:24:15.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:24:15.195 [DEBUG] [Thread-189102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:24:15.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:24:15.198 [DEBUG] [Thread-189102] [transport.py] [_log()] userauth is OK
2025-11-24T11:24:15.198 [DEBUG] [Thread-189102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:24:15.198 [DEBUG] [Thread-189102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:24:15.198 [DEBUG] [Thread-189102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:24:15.198 [DEBUG] [Thread-189102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:24:15.230 [INFO] [Thread-189102] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:24:15.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:24:15.842 [DEBUG] [Thread-189102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:24:15.842 [DEBUG] [Thread-189102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:24:15.842 [DEBUG] [Thread-189102] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:24:15.883 [DEBUG] [Thread-189102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:24:15.883 [DEBUG] [Thread-189102] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:24:15.885 [DEBUG] [Thread-189102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:24:15.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:24:15.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:24:15.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:24:15.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:24:15.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:24:15.911 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:24:15.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:24:15.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:24:15.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:24:15.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.391716 -999.00  +18.90   8.01     28   +0.40 1 1 1 1 1   888    0 19.11 59.11 ----- 8.0 8.0 217.4 15.3 25.5 -25.2 24.2 -24.7 24.0 -23.2 25.0 -25.0
2025-11-24T11:24:15.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:24:15.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:24:15.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.391716
2025-11-24T11:24:15.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:24:15.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:24:15.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:24:15.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:24:15.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:24:15.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:24:02', tmtdew=21.57, humidity=22.77, cloud=0.0, wind=20.47, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:24:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:24:15.913 [DEBUG] [Thread-189102] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:24:15.985 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:24:15.996 [DEBUG] [Thread-189105] [transport.py] [_log()] starting thread (client mode): 0xd317c250
2025-11-24T11:24:15.996 [DEBUG] [Thread-189105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:24:16.010 [DEBUG] [Thread-189105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:24:16.010 [INFO] [Thread-189105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] client lang: <none>
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] server lang: <none>
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] kex follows: False
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] Compression: none
2025-11-24T11:24:16.018 [DEBUG] [Thread-189105] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:24:16.074 [DEBUG] [Thread-189105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:24:16.083 [DEBUG] [Thread-189105] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:24:16.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:24:16.083 [DEBUG] [Thread-189105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:24:16.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:24:16.131 [DEBUG] [Thread-189105] [transport.py] [_log()] userauth is OK
2025-11-24T11:24:16.131 [DEBUG] [Thread-189105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:24:16.131 [DEBUG] [Thread-189105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:24:16.131 [DEBUG] [Thread-189105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:24:16.131 [DEBUG] [Thread-189105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:24:16.145 [INFO] [Thread-189105] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:24:16.145 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:24:16.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:24:17.010 [DEBUG] [Thread-189105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:24:17.010 [DEBUG] [Thread-189105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:24:17.058 [DEBUG] [Thread-189105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:24:17.059 [DEBUG] [Thread-189105] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:24:17.068 [DEBUG] [Thread-189105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:24:17.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:24:17.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-11-24T11:24:17.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-11-24T11:24:17.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:24:17.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:24:17.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:24:17.104 [DEBUG] [Thread-189105] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:24:20.814 [DEBUG] [Thread-189107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:24:35.859 [DEBUG] [Thread-189108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:24:38.747 [DEBUG] [Thread-189109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:24:47.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:24:47.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:24:47.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-11-24T11:24:47.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 24, 34), 21.09, 23.97, 0.0, 20.84, 18.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:24:47.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:24:34
2025-11-24T11:24:48.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:24:48.239 [DEBUG] [Thread-189110] [transport.py] [_log()] starting thread (client mode): 0xd3150730
2025-11-24T11:24:48.239 [DEBUG] [Thread-189110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:24:48.258 [DEBUG] [Thread-189110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:24:48.259 [INFO] [Thread-189110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] client lang: <none>
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] server lang: <none>
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] kex follows: False
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] Compression: none
2025-11-24T11:24:48.260 [DEBUG] [Thread-189110] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:24:48.277 [DEBUG] [Thread-189110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:24:48.278 [DEBUG] [Thread-189110] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:24:48.278 [DEBUG] [Thread-189110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:24:48.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:24:48.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:24:48.281 [DEBUG] [Thread-189110] [transport.py] [_log()] userauth is OK
2025-11-24T11:24:48.281 [DEBUG] [Thread-189110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:24:48.281 [DEBUG] [Thread-189110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:24:48.281 [DEBUG] [Thread-189110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:24:48.281 [DEBUG] [Thread-189110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:24:48.307 [INFO] [Thread-189110] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:24:48.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:24:48.919 [DEBUG] [Thread-189110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:24:48.920 [DEBUG] [Thread-189110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:24:48.920 [DEBUG] [Thread-189110] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:24:48.960 [DEBUG] [Thread-189110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:24:48.960 [DEBUG] [Thread-189110] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:24:48.962 [DEBUG] [Thread-189110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:24:48.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:24:48.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:24:48.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:24:48.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:24:48.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:24:48.981 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:24:48.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.391716 -999.00  +18.90   8.01     28   +0.40 1 1 1 1 1   888    0 19.11 59.11 ----- 8.0 8.0 217.4 15.3 25.5 -25.2 24.2 -24.7 24.0 -23.2 25.0 -25.0
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.391716
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:24:48.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:24:34', tmtdew=21.09, humidity=23.97, cloud=0.0, wind=20.84, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:24:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:24:48.982 [DEBUG] [Thread-189110] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:24:49.053 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:24:49.064 [DEBUG] [Thread-189113] [transport.py] [_log()] starting thread (client mode): 0xd31515d0
2025-11-24T11:24:49.064 [DEBUG] [Thread-189113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:24:49.079 [DEBUG] [Thread-189113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:24:49.079 [INFO] [Thread-189113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:24:49.086 [DEBUG] [Thread-189113] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] client lang: <none>
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] server lang: <none>
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] kex follows: False
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] Compression: none
2025-11-24T11:24:49.087 [DEBUG] [Thread-189113] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:24:49.145 [DEBUG] [Thread-189113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:24:49.146 [DEBUG] [Thread-189113] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:24:49.146 [DEBUG] [Thread-189113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:24:49.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:24:49.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:24:49.203 [DEBUG] [Thread-189113] [transport.py] [_log()] userauth is OK
2025-11-24T11:24:49.203 [DEBUG] [Thread-189113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:24:49.203 [DEBUG] [Thread-189113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:24:49.203 [DEBUG] [Thread-189113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:24:49.204 [DEBUG] [Thread-189113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:24:49.218 [INFO] [Thread-189113] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:24:49.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:24:49.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:24:50.113 [DEBUG] [Thread-189113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:24:50.113 [DEBUG] [Thread-189113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:24:50.162 [DEBUG] [Thread-189113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:24:50.162 [DEBUG] [Thread-189113] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:24:50.171 [DEBUG] [Thread-189113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:24:50.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:24:50.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:24:50.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:24:50.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:24:50.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:24:50.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:24:50.208 [DEBUG] [Thread-189113] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:24:50.890 [DEBUG] [Thread-189115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:25:05.923 [DEBUG] [Thread-189116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:25:20.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:25:20.210 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:25:20.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-11-24T11:25:20.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 25, 7), 20.95, 24.18, 0.0, 19.34, 18.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:25:20.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:25:07
2025-11-24T11:25:20.955 [DEBUG] [Thread-189117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:25:21.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:25:21.263 [DEBUG] [Thread-189118] [transport.py] [_log()] starting thread (client mode): 0xd31528c0
2025-11-24T11:25:21.264 [DEBUG] [Thread-189118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:25:21.274 [DEBUG] [Thread-189118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:25:21.275 [INFO] [Thread-189118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:25:21.279 [DEBUG] [Thread-189118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:25:21.279 [DEBUG] [Thread-189118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:25:21.279 [DEBUG] [Thread-189118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:25:21.279 [DEBUG] [Thread-189118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:25:21.279 [DEBUG] [Thread-189118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:25:21.279 [DEBUG] [Thread-189118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:25:21.279 [DEBUG] [Thread-189118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:25:21.279 [DEBUG] [Thread-189118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:25:21.279 [DEBUG] [Thread-189118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:25:21.280 [DEBUG] [Thread-189118] [transport.py] [_log()] client lang: <none>
2025-11-24T11:25:21.280 [DEBUG] [Thread-189118] [transport.py] [_log()] server lang: <none>
2025-11-24T11:25:21.280 [DEBUG] [Thread-189118] [transport.py] [_log()] kex follows: False
2025-11-24T11:25:21.280 [DEBUG] [Thread-189118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:25:21.280 [DEBUG] [Thread-189118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:25:21.280 [DEBUG] [Thread-189118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:25:21.281 [DEBUG] [Thread-189118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:25:21.281 [DEBUG] [Thread-189118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:25:21.281 [DEBUG] [Thread-189118] [transport.py] [_log()] Compression: none
2025-11-24T11:25:21.281 [DEBUG] [Thread-189118] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:25:21.300 [DEBUG] [Thread-189118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:25:21.301 [DEBUG] [Thread-189118] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:25:21.301 [DEBUG] [Thread-189118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:25:21.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:25:21.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:25:21.345 [DEBUG] [Thread-189118] [transport.py] [_log()] userauth is OK
2025-11-24T11:25:21.345 [DEBUG] [Thread-189118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:25:21.345 [DEBUG] [Thread-189118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:25:21.345 [DEBUG] [Thread-189118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:25:21.345 [DEBUG] [Thread-189118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:25:21.383 [INFO] [Thread-189118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:25:21.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:25:22.111 [DEBUG] [Thread-189118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:25:22.111 [DEBUG] [Thread-189118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:25:22.111 [DEBUG] [Thread-189118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:25:22.152 [DEBUG] [Thread-189118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:25:22.152 [DEBUG] [Thread-189118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:25:22.154 [DEBUG] [Thread-189118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:25:22.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:25:22.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:25:22.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:25:22.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:25:22.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:25:22.174 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:25:22.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.392063 -999.00  +19.30  13.55     28   +0.70 1 1 1 1 1   888    0 19.64 65.76 ----- 13.6 13.6 202.8 17.2 25.5 -26.6 24.4 -24.4 24.1 -23.5 25.1 -24.2
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.392063
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:25:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:25:07', tmtdew=20.95, humidity=24.18, cloud=0.0, wind=19.34, temperature=18.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:24:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:25:22.175 [DEBUG] [Thread-189118] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:25:22.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:25:22.258 [DEBUG] [Thread-189121] [transport.py] [_log()] starting thread (client mode): 0xd3152b60
2025-11-24T11:25:22.258 [DEBUG] [Thread-189121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:25:22.273 [DEBUG] [Thread-189121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:25:22.273 [INFO] [Thread-189121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] client lang: <none>
2025-11-24T11:25:22.280 [DEBUG] [Thread-189121] [transport.py] [_log()] server lang: <none>
2025-11-24T11:25:22.281 [DEBUG] [Thread-189121] [transport.py] [_log()] kex follows: False
2025-11-24T11:25:22.281 [DEBUG] [Thread-189121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:25:22.281 [DEBUG] [Thread-189121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:25:22.281 [DEBUG] [Thread-189121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:25:22.281 [DEBUG] [Thread-189121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:25:22.281 [DEBUG] [Thread-189121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:25:22.281 [DEBUG] [Thread-189121] [transport.py] [_log()] Compression: none
2025-11-24T11:25:22.281 [DEBUG] [Thread-189121] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:25:22.339 [DEBUG] [Thread-189121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:25:22.339 [DEBUG] [Thread-189121] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:25:22.340 [DEBUG] [Thread-189121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:25:22.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:25:22.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:25:22.396 [DEBUG] [Thread-189121] [transport.py] [_log()] userauth is OK
2025-11-24T11:25:22.396 [DEBUG] [Thread-189121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:25:22.396 [DEBUG] [Thread-189121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:25:22.396 [DEBUG] [Thread-189121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:25:22.396 [DEBUG] [Thread-189121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:25:22.415 [INFO] [Thread-189121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:25:22.415 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:25:22.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:25:23.272 [DEBUG] [Thread-189121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:25:23.272 [DEBUG] [Thread-189121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:25:23.320 [DEBUG] [Thread-189121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:25:23.320 [DEBUG] [Thread-189121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:25:23.328 [DEBUG] [Thread-189121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:25:23.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:25:23.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-11-24T11:25:23.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-11-24T11:25:23.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:25:23.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:25:23.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:25:23.360 [DEBUG] [Thread-189121] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:25:35.989 [DEBUG] [Thread-189123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:25:38.897 [DEBUG] [Thread-189124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:25:51.050 [DEBUG] [Thread-189125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:25:53.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:25:53.383 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:25: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-11-24T11:25:54.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 25, 39), 21.35, 23.52, 0.0, 23.71, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:25:54.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:25:39
2025-11-24T11:25:54.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:25:54.438 [DEBUG] [Thread-189126] [transport.py] [_log()] starting thread (client mode): 0xd317d270
2025-11-24T11:25:54.438 [DEBUG] [Thread-189126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:25:54.458 [DEBUG] [Thread-189126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:25:54.458 [INFO] [Thread-189126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:25:54.459 [DEBUG] [Thread-189126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] client lang: <none>
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] server lang: <none>
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] kex follows: False
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] Compression: none
2025-11-24T11:25:54.460 [DEBUG] [Thread-189126] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:25:54.467 [DEBUG] [Thread-189126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:25:54.467 [DEBUG] [Thread-189126] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:25:54.467 [DEBUG] [Thread-189126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:25:54.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:25:54.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:25:54.468 [DEBUG] [Thread-189126] [transport.py] [_log()] userauth is OK
2025-11-24T11:25:54.468 [DEBUG] [Thread-189126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:25:54.468 [DEBUG] [Thread-189126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:25:54.468 [DEBUG] [Thread-189126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:25:54.468 [DEBUG] [Thread-189126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:25:54.483 [INFO] [Thread-189126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:25:54.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:25:55.083 [DEBUG] [Thread-189126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:25:55.083 [DEBUG] [Thread-189126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:25:55.083 [DEBUG] [Thread-189126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:25:55.124 [DEBUG] [Thread-189126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:25:55.124 [DEBUG] [Thread-189126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:25:55.126 [DEBUG] [Thread-189126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:25:55.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:25:55.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:25:55.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:25:55.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:25:55.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:25:55.156 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:25:55.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:25:55.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:25:55.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:25:55.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.392411 -999.00  +19.30   8.47     28   +0.60 1 1 1 1 1   888    0 20.19 72.83 ----- 8.5 8.5 181.8 20.9 25.5 -26.6 24.4 -23.8 24.2 -24.6 25.2 -23.9
2025-11-24T11:25:55.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:25:55.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:25:55.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.392411
2025-11-24T11:25:55.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:25:55.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:25:55.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:25:55.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:25:55.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:25:55.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:25:39', tmtdew=21.35, humidity=23.52, cloud=0.0, wind=23.71, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:25:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:25:55.157 [DEBUG] [Thread-189126] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:25: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-11-24T11:25:55.241 [DEBUG] [Thread-189129] [transport.py] [_log()] starting thread (client mode): 0xd317cbe0
2025-11-24T11:25:55.241 [DEBUG] [Thread-189129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:25:55.256 [DEBUG] [Thread-189129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:25:55.256 [INFO] [Thread-189129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:25:55.264 [DEBUG] [Thread-189129] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:25:55.264 [DEBUG] [Thread-189129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:25:55.264 [DEBUG] [Thread-189129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:25:55.264 [DEBUG] [Thread-189129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] client lang: <none>
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] server lang: <none>
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] kex follows: False
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] Compression: none
2025-11-24T11:25:55.265 [DEBUG] [Thread-189129] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:25:55.324 [DEBUG] [Thread-189129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:25:55.325 [DEBUG] [Thread-189129] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:25:55.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:25:55.326 [DEBUG] [Thread-189129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:25:55.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:25:55.380 [DEBUG] [Thread-189129] [transport.py] [_log()] userauth is OK
2025-11-24T11:25:55.381 [DEBUG] [Thread-189129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:25:55.381 [DEBUG] [Thread-189129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:25:55.381 [DEBUG] [Thread-189129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:25:55.381 [DEBUG] [Thread-189129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:25:55.401 [INFO] [Thread-189129] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:25: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-11-24T11:25:55.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:25:56.233 [DEBUG] [Thread-189129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:25:56.233 [DEBUG] [Thread-189129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:25:56.281 [DEBUG] [Thread-189129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:25:56.281 [DEBUG] [Thread-189129] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:25:56.290 [DEBUG] [Thread-189129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:25:56.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:25:56.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-11-24T11:25:56.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-11-24T11:25:56.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:25:56.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:25:56.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:25:56.336 [DEBUG] [Thread-189129] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:26:06.093 [DEBUG] [Thread-189131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:26:21.142 [DEBUG] [Thread-189132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:26:26.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:26:26.355 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:26:26.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-11-24T11:26:27.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 26, 11), 21.45, 23.37, 0.0, 23.29, 18.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:26:27.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:26:11
2025-11-24T11:26:27.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:26:27.413 [DEBUG] [Thread-189133] [transport.py] [_log()] starting thread (client mode): 0xd317cfd0
2025-11-24T11:26:27.414 [DEBUG] [Thread-189133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:26:27.433 [DEBUG] [Thread-189133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:26:27.433 [INFO] [Thread-189133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:26:27.436 [DEBUG] [Thread-189133] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:26:27.436 [DEBUG] [Thread-189133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] client lang: <none>
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] server lang: <none>
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] kex follows: False
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:26:27.437 [DEBUG] [Thread-189133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:26:27.438 [DEBUG] [Thread-189133] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:26:27.438 [DEBUG] [Thread-189133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:26:27.438 [DEBUG] [Thread-189133] [transport.py] [_log()] Compression: none
2025-11-24T11:26:27.438 [DEBUG] [Thread-189133] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:26:27.457 [DEBUG] [Thread-189133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:26:27.457 [DEBUG] [Thread-189133] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:26:27.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:26:27.459 [DEBUG] [Thread-189133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:26:27.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:26:27.462 [DEBUG] [Thread-189133] [transport.py] [_log()] userauth is OK
2025-11-24T11:26:27.462 [DEBUG] [Thread-189133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:26:27.462 [DEBUG] [Thread-189133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:26:27.463 [DEBUG] [Thread-189133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:26:27.463 [DEBUG] [Thread-189133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:26:27.499 [INFO] [Thread-189133] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:26:27.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:26:28.149 [DEBUG] [Thread-189133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:26:28.149 [DEBUG] [Thread-189133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:26:28.149 [DEBUG] [Thread-189133] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:26:28.190 [DEBUG] [Thread-189133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:26:28.190 [DEBUG] [Thread-189133] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:26:28.192 [DEBUG] [Thread-189133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:26:28.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:26:28.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:26:28.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:26:28.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:26:28.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:26:28.211 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:26:28.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:26:28.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.392757 -999.00  +19.70  15.75     28   +0.70 1 1 1 1 1   888    0 20.67 86.10 ----- 15.8 15.8 171.0 21.0 25.7 -24.6 24.5 -27.6 24.3 -22.4 25.3 -24.5
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.392757
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:26:28.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:26:11', tmtdew=21.45, humidity=23.37, cloud=0.0, wind=23.29, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:25:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:26:28.213 [DEBUG] [Thread-189133] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:26:28.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:26:28.296 [DEBUG] [Thread-189136] [transport.py] [_log()] starting thread (client mode): 0xd07128f0
2025-11-24T11:26:28.296 [DEBUG] [Thread-189136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:26:28.310 [DEBUG] [Thread-189136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:26:28.311 [INFO] [Thread-189136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] client lang: <none>
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] server lang: <none>
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] kex follows: False
2025-11-24T11:26:28.318 [DEBUG] [Thread-189136] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:26:28.319 [DEBUG] [Thread-189136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:26:28.319 [DEBUG] [Thread-189136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:26:28.319 [DEBUG] [Thread-189136] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:26:28.319 [DEBUG] [Thread-189136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:26:28.319 [DEBUG] [Thread-189136] [transport.py] [_log()] Compression: none
2025-11-24T11:26:28.319 [DEBUG] [Thread-189136] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:26:28.374 [DEBUG] [Thread-189136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:26:28.374 [DEBUG] [Thread-189136] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:26:28.375 [DEBUG] [Thread-189136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:26:28.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:26:28.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:26:28.437 [DEBUG] [Thread-189136] [transport.py] [_log()] userauth is OK
2025-11-24T11:26:28.437 [DEBUG] [Thread-189136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:26:28.437 [DEBUG] [Thread-189136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:26:28.437 [DEBUG] [Thread-189136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:26:28.437 [DEBUG] [Thread-189136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:26:28.451 [INFO] [Thread-189136] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:26:28.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:26:28.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:26:29.323 [DEBUG] [Thread-189136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:26:29.324 [DEBUG] [Thread-189136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:26:29.372 [DEBUG] [Thread-189136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:26:29.372 [DEBUG] [Thread-189136] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:26:29.381 [DEBUG] [Thread-189136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:26:29.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:26:29.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-11-24T11:26:29.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-11-24T11:26:29.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:26:29.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:26:29.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:26:29.418 [DEBUG] [Thread-189136] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:26:36.172 [DEBUG] [Thread-189138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:26:39.062 [DEBUG] [Thread-189139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:26:51.229 [DEBUG] [Thread-189140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:26:59.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:26:59.440 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:26:59.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-11-24T11:27:00.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 26, 44), 21.99, 22.57, 0.0, 30.7, 18.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:27:00.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:26:44
2025-11-24T11:27:00.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:27:00.443 [DEBUG] [Thread-189141] [transport.py] [_log()] starting thread (client mode): 0xd317df60
2025-11-24T11:27:00.443 [DEBUG] [Thread-189141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:27:00.465 [DEBUG] [Thread-189141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:27:00.465 [INFO] [Thread-189141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] client lang: <none>
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] server lang: <none>
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] kex follows: False
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] Compression: none
2025-11-24T11:27:00.468 [DEBUG] [Thread-189141] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:27:00.484 [DEBUG] [Thread-189141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:27:00.484 [DEBUG] [Thread-189141] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:27:00.484 [DEBUG] [Thread-189141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:27:00.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:27:00.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:27:00.485 [DEBUG] [Thread-189141] [transport.py] [_log()] userauth is OK
2025-11-24T11:27:00.485 [DEBUG] [Thread-189141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:27:00.485 [DEBUG] [Thread-189141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:27:00.485 [DEBUG] [Thread-189141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:27:00.485 [DEBUG] [Thread-189141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:27:00.494 [INFO] [Thread-189141] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:27:00.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:27:01.125 [DEBUG] [Thread-189141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:27:01.125 [DEBUG] [Thread-189141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:27:01.125 [DEBUG] [Thread-189141] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:27:01.167 [DEBUG] [Thread-189141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:27:01.167 [DEBUG] [Thread-189141] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:27:01.169 [DEBUG] [Thread-189141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:27:01.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:27:01.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:27:01.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:27:01.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:27:01.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:27:01.197 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:27:01.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:27:01.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.393104 -999.00  +19.50  24.63     27   +0.20 1 1 1 1 1   888    0 20.34 91.30 ----- 24.6 24.6 142.8 30.0 25.8 -26.2 24.6 -25.4 24.2 -24.7 25.2 -25.9
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.393104
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:27:01.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:26:44', tmtdew=21.99, humidity=22.57, cloud=0.0, wind=30.7, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:26:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:27:01.199 [DEBUG] [Thread-189141] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:27:01.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:27:01.294 [DEBUG] [Thread-189144] [transport.py] [_log()] starting thread (client mode): 0xd317caf0
2025-11-24T11:27:01.294 [DEBUG] [Thread-189144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:27:01.313 [DEBUG] [Thread-189144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:27:01.313 [INFO] [Thread-189144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] client lang: <none>
2025-11-24T11:27:01.320 [DEBUG] [Thread-189144] [transport.py] [_log()] server lang: <none>
2025-11-24T11:27:01.321 [DEBUG] [Thread-189144] [transport.py] [_log()] kex follows: False
2025-11-24T11:27:01.321 [DEBUG] [Thread-189144] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:27:01.321 [DEBUG] [Thread-189144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:27:01.321 [DEBUG] [Thread-189144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:27:01.321 [DEBUG] [Thread-189144] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:27:01.321 [DEBUG] [Thread-189144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:27:01.321 [DEBUG] [Thread-189144] [transport.py] [_log()] Compression: none
2025-11-24T11:27:01.321 [DEBUG] [Thread-189144] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:27:01.379 [DEBUG] [Thread-189144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:27:01.379 [DEBUG] [Thread-189144] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:27:01.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:27:01.380 [DEBUG] [Thread-189144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:27:01.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:27:01.436 [DEBUG] [Thread-189144] [transport.py] [_log()] userauth is OK
2025-11-24T11:27:01.436 [DEBUG] [Thread-189144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:27:01.436 [DEBUG] [Thread-189144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:27:01.436 [DEBUG] [Thread-189144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:27:01.436 [DEBUG] [Thread-189144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:27:01.450 [INFO] [Thread-189144] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:27:01.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:27:01.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:27:02.395 [DEBUG] [Thread-189144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:27:02.395 [DEBUG] [Thread-189144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:27:02.444 [DEBUG] [Thread-189144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:27:02.444 [DEBUG] [Thread-189144] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:27:02.453 [DEBUG] [Thread-189144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:27:02.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:27:02.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-11-24T11:27:02.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-11-24T11:27:02.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:27:02.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:27:02.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:27:02.490 [DEBUG] [Thread-189144] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:27:06.265 [DEBUG] [Thread-189146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:27:21.315 [DEBUG] [Thread-189147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:27:32.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:27:32.487 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:27:32.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-11-24T11:27:33.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 27, 16), 21.9, 22.7, 0.0, 28.85, 18.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:27:33.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:27:16
2025-11-24T11:27:33.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:27:33.698 [DEBUG] [Thread-189148] [transport.py] [_log()] starting thread (client mode): 0xd3151810
2025-11-24T11:27:33.698 [DEBUG] [Thread-189148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:27:33.721 [DEBUG] [Thread-189148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:27:33.721 [INFO] [Thread-189148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:27:33.724 [DEBUG] [Thread-189148] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:27:33.724 [DEBUG] [Thread-189148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] client lang: <none>
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] server lang: <none>
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] kex follows: False
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] Compression: none
2025-11-24T11:27:33.725 [DEBUG] [Thread-189148] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:27:33.732 [DEBUG] [Thread-189148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:27:33.733 [DEBUG] [Thread-189148] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:27:33.733 [DEBUG] [Thread-189148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:27:33.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:27:33.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:27:33.734 [DEBUG] [Thread-189148] [transport.py] [_log()] userauth is OK
2025-11-24T11:27:33.734 [DEBUG] [Thread-189148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:27:33.734 [DEBUG] [Thread-189148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:27:33.734 [DEBUG] [Thread-189148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:27:33.734 [DEBUG] [Thread-189148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:27:33.752 [INFO] [Thread-189148] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:27:33.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:27:34.393 [DEBUG] [Thread-189148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:27:34.393 [DEBUG] [Thread-189148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:27:34.393 [DEBUG] [Thread-189148] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:27:34.434 [DEBUG] [Thread-189148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:27:34.434 [DEBUG] [Thread-189148] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:27:34.437 [DEBUG] [Thread-189148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:27:34.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:27:34.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:27:34.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:27:34.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:27:34.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:27:34.456 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:27:34.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:27:34.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:27:34.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:27:34.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.393452 -999.00  +19.30  28.07     27   +0.10 1 1 1 1 1   888    0 20.20 97.41 ----- 28.1 28.1 140.4 34.6 25.6 -27.1 24.6 -25.3 24.2 -24.5 25.1 -26.6
2025-11-24T11:27:34.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:27:34.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:27:34.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.393452
2025-11-24T11:27:34.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:27:34.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:27:34.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:27:34.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:27:34.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:27:34.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:27:16', tmtdew=21.9, humidity=22.7, cloud=0.0, wind=28.85, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:26:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:27:34.457 [DEBUG] [Thread-189148] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:27:34.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:27:34.544 [DEBUG] [Thread-189151] [transport.py] [_log()] starting thread (client mode): 0xd3152d70
2025-11-24T11:27:34.544 [DEBUG] [Thread-189151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:27:34.559 [DEBUG] [Thread-189151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:27:34.559 [INFO] [Thread-189151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:27:34.566 [DEBUG] [Thread-189151] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:27:34.566 [DEBUG] [Thread-189151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:27:34.566 [DEBUG] [Thread-189151] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] client lang: <none>
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] server lang: <none>
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] kex follows: False
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] Compression: none
2025-11-24T11:27:34.567 [DEBUG] [Thread-189151] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:27:34.623 [DEBUG] [Thread-189151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:27:34.623 [DEBUG] [Thread-189151] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:27:34.623 [DEBUG] [Thread-189151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:27:34.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:27:34.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:27:34.680 [DEBUG] [Thread-189151] [transport.py] [_log()] userauth is OK
2025-11-24T11:27:34.680 [DEBUG] [Thread-189151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:27:34.680 [DEBUG] [Thread-189151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:27:34.680 [DEBUG] [Thread-189151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:27:34.680 [DEBUG] [Thread-189151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:27:34.694 [INFO] [Thread-189151] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:27:34.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:27:34.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:27:35.583 [DEBUG] [Thread-189151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:27:35.583 [DEBUG] [Thread-189151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:27:35.631 [DEBUG] [Thread-189151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:27:35.631 [DEBUG] [Thread-189151] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:27:35.640 [DEBUG] [Thread-189151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:27:35.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:27:35.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-11-24T11:27:35.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:27:35.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:27:35.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:27:35.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:27:35.675 [DEBUG] [Thread-189151] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:27:36.344 [DEBUG] [Thread-189153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:27:39.280 [DEBUG] [Thread-189154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:27:51.380 [DEBUG] [Thread-189155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:28:05.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:28:05.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:28:05.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-11-24T11:28:06.408 [DEBUG] [Thread-189156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:28:06.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 27, 49), 21.42, 23.25, 0.0, 18.53, 18.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:28:06.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:27:49
2025-11-24T11:28:06.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:28:06.787 [DEBUG] [Thread-189157] [transport.py] [_log()] starting thread (client mode): 0xd3151150
2025-11-24T11:28:06.787 [DEBUG] [Thread-189157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:28:06.808 [DEBUG] [Thread-189157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:28:06.808 [INFO] [Thread-189157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:28:06.811 [DEBUG] [Thread-189157] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] client lang: <none>
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] server lang: <none>
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] kex follows: False
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] Compression: none
2025-11-24T11:28:06.812 [DEBUG] [Thread-189157] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:28:06.829 [DEBUG] [Thread-189157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:28:06.830 [DEBUG] [Thread-189157] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:28:06.830 [DEBUG] [Thread-189157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:28:06.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:28:06.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:28:06.832 [DEBUG] [Thread-189157] [transport.py] [_log()] userauth is OK
2025-11-24T11:28:06.833 [DEBUG] [Thread-189157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:28:06.833 [DEBUG] [Thread-189157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:28:06.833 [DEBUG] [Thread-189157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:28:06.833 [DEBUG] [Thread-189157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:28:06.858 [INFO] [Thread-189157] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:28:06.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:28:07.492 [DEBUG] [Thread-189157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:28:07.492 [DEBUG] [Thread-189157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:28:07.492 [DEBUG] [Thread-189157] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:28:07.533 [DEBUG] [Thread-189157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:28:07.533 [DEBUG] [Thread-189157] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:28:07.536 [DEBUG] [Thread-189157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:28:07.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:28:07.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:28:07.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:28:07.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:28:07.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:28:07.560 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:28:07.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:28:07.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:28:07.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:28:07.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.394146 -999.00  +18.30  14.39     29   +0.00 1 1 1 1 1   888    0 21.26 116.26 ----- 14.4 14.4 167.7 20.6 25.5 -25.3 24.5 -24.0 24.1 -24.9 25.1 -25.6
2025-11-24T11:28:07.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:28:07.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:28:07.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.394146
2025-11-24T11:28:07.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:28:07.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:28:07.563 [DEBUG] [Thread-189157] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:28:07.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:28:07.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:28:07.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:28:07.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:27:49', tmtdew=21.42, humidity=23.25, cloud=0.0, wind=18.53, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:27:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:28:07.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:28:07.660 [DEBUG] [Thread-189160] [transport.py] [_log()] starting thread (client mode): 0xd07393f0
2025-11-24T11:28:07.660 [DEBUG] [Thread-189160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:28:07.675 [DEBUG] [Thread-189160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:28:07.675 [INFO] [Thread-189160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] client lang: <none>
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] server lang: <none>
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] kex follows: False
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] Compression: none
2025-11-24T11:28:07.684 [DEBUG] [Thread-189160] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:28:07.739 [DEBUG] [Thread-189160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:28:07.740 [DEBUG] [Thread-189160] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:28:07.740 [DEBUG] [Thread-189160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:28:07.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:28:07.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:28:07.796 [DEBUG] [Thread-189160] [transport.py] [_log()] userauth is OK
2025-11-24T11:28:07.796 [DEBUG] [Thread-189160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:28:07.796 [DEBUG] [Thread-189160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:28:07.796 [DEBUG] [Thread-189160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:28:07.796 [DEBUG] [Thread-189160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:28:07.812 [INFO] [Thread-189160] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:28:07.812 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:28:07.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:28:08.667 [DEBUG] [Thread-189160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:28:08.667 [DEBUG] [Thread-189160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:28:08.718 [DEBUG] [Thread-189160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:28:08.719 [DEBUG] [Thread-189160] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:28:08.729 [DEBUG] [Thread-189160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:28:08.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:28:08.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:28:08.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:28:08.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:28:08.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:28:08.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:28:08.764 [DEBUG] [Thread-189160] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:28:21.439 [DEBUG] [Thread-189162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:28:36.498 [DEBUG] [Thread-189163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:28:38.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:28:38.784 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:28:38.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-11-24T11:28:39.311 [DEBUG] [Thread-189164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:28:39.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 28, 21), 21.56, 23.07, 0.0, 18.24, 18.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:28:39.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:28:21
2025-11-24T11:28:39.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:28:39.865 [DEBUG] [Thread-189165] [transport.py] [_log()] starting thread (client mode): 0xd3190160
2025-11-24T11:28:39.866 [DEBUG] [Thread-189165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:28:39.886 [DEBUG] [Thread-189165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:28:39.886 [INFO] [Thread-189165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:28:39.889 [DEBUG] [Thread-189165] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:28:39.889 [DEBUG] [Thread-189165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:28:39.889 [DEBUG] [Thread-189165] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:28:39.889 [DEBUG] [Thread-189165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:28:39.889 [DEBUG] [Thread-189165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:28:39.889 [DEBUG] [Thread-189165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:28:39.889 [DEBUG] [Thread-189165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:28:39.889 [DEBUG] [Thread-189165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] client lang: <none>
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] server lang: <none>
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] kex follows: False
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] Compression: none
2025-11-24T11:28:39.890 [DEBUG] [Thread-189165] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:28:39.909 [DEBUG] [Thread-189165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:28:39.909 [DEBUG] [Thread-189165] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:28:39.910 [DEBUG] [Thread-189165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:28:39.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:28:39.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:28:39.911 [DEBUG] [Thread-189165] [transport.py] [_log()] userauth is OK
2025-11-24T11:28:39.912 [DEBUG] [Thread-189165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:28:39.912 [DEBUG] [Thread-189165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:28:39.912 [DEBUG] [Thread-189165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:28:39.912 [DEBUG] [Thread-189165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:28:39.926 [INFO] [Thread-189165] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:28:39.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:28:40.709 [DEBUG] [Thread-189165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:28:40.709 [DEBUG] [Thread-189165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:28:40.709 [DEBUG] [Thread-189165] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:28:40.750 [DEBUG] [Thread-189165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:28:40.750 [DEBUG] [Thread-189165] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:28:40.752 [DEBUG] [Thread-189165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:28:40.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:28:40.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:28:40.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:28:40.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:28:40.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:28:40.768 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:28:40.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:28:40.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:28:40.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:28:40.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.394493 -999.00  +18.60   9.14     29   +0.20 1 1 1 1 1   888    0 21.19 121.68 ----- 9.1 9.1 140.4 15.2 25.5 -25.1 24.7 -24.3 24.4 -22.5 25.3 -25.1
2025-11-24T11:28:40.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:28:40.777 [DEBUG] [Thread-189165] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:28:40.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:28:40.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.394493
2025-11-24T11:28:40.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:28:40.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:28:40.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:28:40.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:28:40.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:28:40.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:28:21', tmtdew=21.56, humidity=23.07, cloud=0.0, wind=18.24, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:28:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:28:40.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:28:40.862 [DEBUG] [Thread-189168] [transport.py] [_log()] starting thread (client mode): 0xd3151990
2025-11-24T11:28:40.862 [DEBUG] [Thread-189168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:28:40.878 [DEBUG] [Thread-189168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:28:40.878 [INFO] [Thread-189168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:28:40.885 [DEBUG] [Thread-189168] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:28:40.886 [DEBUG] [Thread-189168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:28:40.886 [DEBUG] [Thread-189168] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:28:40.886 [DEBUG] [Thread-189168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:28:40.886 [DEBUG] [Thread-189168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:28:40.886 [DEBUG] [Thread-189168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:28:40.886 [DEBUG] [Thread-189168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:28:40.887 [DEBUG] [Thread-189168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:28:40.887 [DEBUG] [Thread-189168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:28:40.887 [DEBUG] [Thread-189168] [transport.py] [_log()] client lang: <none>
2025-11-24T11:28:40.887 [DEBUG] [Thread-189168] [transport.py] [_log()] server lang: <none>
2025-11-24T11:28:40.887 [DEBUG] [Thread-189168] [transport.py] [_log()] kex follows: False
2025-11-24T11:28:40.887 [DEBUG] [Thread-189168] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:28:40.887 [DEBUG] [Thread-189168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:28:40.887 [DEBUG] [Thread-189168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:28:40.888 [DEBUG] [Thread-189168] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:28:40.888 [DEBUG] [Thread-189168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:28:40.888 [DEBUG] [Thread-189168] [transport.py] [_log()] Compression: none
2025-11-24T11:28:40.888 [DEBUG] [Thread-189168] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:28:40.945 [DEBUG] [Thread-189168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:28:40.946 [DEBUG] [Thread-189168] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:28:40.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:28:40.948 [DEBUG] [Thread-189168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:28:40.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:28:41.005 [DEBUG] [Thread-189168] [transport.py] [_log()] userauth is OK
2025-11-24T11:28:41.006 [DEBUG] [Thread-189168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:28:41.006 [DEBUG] [Thread-189168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:28:41.006 [DEBUG] [Thread-189168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:28:41.006 [DEBUG] [Thread-189168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:28:41.025 [INFO] [Thread-189168] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:28:41.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:28:41.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:28:41.882 [DEBUG] [Thread-189168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:28:41.883 [DEBUG] [Thread-189168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:28:41.930 [DEBUG] [Thread-189168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:28:41.930 [DEBUG] [Thread-189168] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:28:41.938 [DEBUG] [Thread-189168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:28:41.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:28:41.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-11-24T11:28:41.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-11-24T11:28:41.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:28:41.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:28:41.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:28:41.971 [DEBUG] [Thread-189168] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:28:51.530 [DEBUG] [Thread-189170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:29:06.566 [DEBUG] [Thread-189171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:29:11.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:29:11.994 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:29:11.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-11-24T11:29:12.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 28, 54), 21.74, 22.8, 0.0, 20.59, 18.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:29:12.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:28:54
2025-11-24T11:29:12.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:29:13.016 [DEBUG] [Thread-189172] [transport.py] [_log()] starting thread (client mode): 0xd3153c70
2025-11-24T11:29:13.016 [DEBUG] [Thread-189172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:29:13.036 [DEBUG] [Thread-189172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:29:13.036 [INFO] [Thread-189172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] client lang: <none>
2025-11-24T11:29:13.039 [DEBUG] [Thread-189172] [transport.py] [_log()] server lang: <none>
2025-11-24T11:29:13.040 [DEBUG] [Thread-189172] [transport.py] [_log()] kex follows: False
2025-11-24T11:29:13.040 [DEBUG] [Thread-189172] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:29:13.040 [DEBUG] [Thread-189172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:29:13.040 [DEBUG] [Thread-189172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:29:13.040 [DEBUG] [Thread-189172] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:29:13.040 [DEBUG] [Thread-189172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:29:13.040 [DEBUG] [Thread-189172] [transport.py] [_log()] Compression: none
2025-11-24T11:29:13.040 [DEBUG] [Thread-189172] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:29:13.057 [DEBUG] [Thread-189172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:29:13.058 [DEBUG] [Thread-189172] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:29:13.058 [DEBUG] [Thread-189172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:29:13.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:29:13.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:29:13.060 [DEBUG] [Thread-189172] [transport.py] [_log()] userauth is OK
2025-11-24T11:29:13.060 [DEBUG] [Thread-189172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:29:13.061 [DEBUG] [Thread-189172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:29:13.061 [DEBUG] [Thread-189172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:29:13.061 [DEBUG] [Thread-189172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:29:13.082 [INFO] [Thread-189172] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:29:13.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:29:13.711 [DEBUG] [Thread-189172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:29:13.712 [DEBUG] [Thread-189172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:29:13.712 [DEBUG] [Thread-189172] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:29:13.753 [DEBUG] [Thread-189172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:29:13.753 [DEBUG] [Thread-189172] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:29:13.755 [DEBUG] [Thread-189172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:29:13.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:29:13.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:29:13.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:29:13.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:29:13.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:29:13.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:29:13.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:29:13.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:29:13.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:29:13.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.394841 -999.00  +18.60  16.14     28   +0.00 1 1 1 1 1   888    0 21.85 126.89 ----- 16.1 16.1 134.6 25.2 25.7 -26.2 24.7 -24.9 24.3 -25.4 25.2 -25.7
2025-11-24T11:29:13.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:29:13.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:29:13.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.394841
2025-11-24T11:29:13.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:29:13.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:29:13.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:29:13.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:29:13.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:29:13.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:28:54', tmtdew=21.74, humidity=22.8, cloud=0.0, wind=20.59, temperature=18.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:28:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:29:13.775 [DEBUG] [Thread-189172] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:29:13.848 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:29:13.858 [DEBUG] [Thread-189175] [transport.py] [_log()] starting thread (client mode): 0xd31b19c0
2025-11-24T11:29:13.858 [DEBUG] [Thread-189175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:29:13.875 [DEBUG] [Thread-189175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:29:13.875 [INFO] [Thread-189175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] client lang: <none>
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] server lang: <none>
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] kex follows: False
2025-11-24T11:29:13.882 [DEBUG] [Thread-189175] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:29:13.883 [DEBUG] [Thread-189175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:29:13.883 [DEBUG] [Thread-189175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:29:13.883 [DEBUG] [Thread-189175] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:29:13.883 [DEBUG] [Thread-189175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:29:13.883 [DEBUG] [Thread-189175] [transport.py] [_log()] Compression: none
2025-11-24T11:29:13.883 [DEBUG] [Thread-189175] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:29:13.939 [DEBUG] [Thread-189175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:29:13.939 [DEBUG] [Thread-189175] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:29:13.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:29:13.939 [DEBUG] [Thread-189175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:29:13.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:29:13.996 [DEBUG] [Thread-189175] [transport.py] [_log()] userauth is OK
2025-11-24T11:29:13.996 [DEBUG] [Thread-189175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:29:13.996 [DEBUG] [Thread-189175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:29:13.996 [DEBUG] [Thread-189175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:29:13.996 [DEBUG] [Thread-189175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:29:14.011 [INFO] [Thread-189175] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:29:14.011 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:29:14.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:29:14.906 [DEBUG] [Thread-189175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:29:14.907 [DEBUG] [Thread-189175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:29:14.954 [DEBUG] [Thread-189175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:29:14.954 [DEBUG] [Thread-189175] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:29:14.962 [DEBUG] [Thread-189175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:29:14.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:29:14.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-11-24T11:29:14.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-11-24T11:29:14.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:29:14.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:29:14.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:29:14.993 [DEBUG] [Thread-189175] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:29:21.601 [DEBUG] [Thread-189177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:29:36.661 [DEBUG] [Thread-189178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:29:39.359 [DEBUG] [Thread-189179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:29:45.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:29:45.017 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:29:45.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-11-24T11:29:45.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 29, 26), 22.04, 22.41, 0.0, 19.57, 18.88, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:29:45.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:29:26
2025-11-24T11:29:45.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:29:46.058 [DEBUG] [Thread-189180] [transport.py] [_log()] starting thread (client mode): 0xd3150820
2025-11-24T11:29:46.058 [DEBUG] [Thread-189180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:29:46.070 [DEBUG] [Thread-189180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:29:46.070 [INFO] [Thread-189180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:29:46.072 [DEBUG] [Thread-189180] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] client lang: <none>
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] server lang: <none>
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] kex follows: False
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] Compression: none
2025-11-24T11:29:46.073 [DEBUG] [Thread-189180] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:29:46.092 [DEBUG] [Thread-189180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:29:46.092 [DEBUG] [Thread-189180] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:29:46.093 [DEBUG] [Thread-189180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:29:46.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:29:46.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:29:46.095 [DEBUG] [Thread-189180] [transport.py] [_log()] userauth is OK
2025-11-24T11:29:46.095 [DEBUG] [Thread-189180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:29:46.095 [DEBUG] [Thread-189180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:29:46.096 [DEBUG] [Thread-189180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:29:46.096 [DEBUG] [Thread-189180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:29:46.119 [INFO] [Thread-189180] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:29:46.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:29:46.945 [DEBUG] [Thread-189180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:29:46.946 [DEBUG] [Thread-189180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:29:46.946 [DEBUG] [Thread-189180] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:29:46.986 [DEBUG] [Thread-189180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:29:46.986 [DEBUG] [Thread-189180] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:29:46.989 [DEBUG] [Thread-189180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:29:47.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:29:47.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:29:47.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:29:47.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:29:47.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:29:47.017 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:29:47.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:29:47.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:29:47.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:29:47.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.395188 -999.00  +18.50  10.81     28   +0.00 1 1 1 1 1   888    0 21.91 127.64 ----- 10.8 10.8 164.4 16.6 25.7 -25.6 24.8 -25.2 24.4 -23.2 25.4 -24.7
2025-11-24T11:29:47.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:29:47.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:29:47.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.395188
2025-11-24T11:29:47.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:29:47.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:29:47.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:29:47.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:29:47.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:29:47.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:29:26', tmtdew=22.04, humidity=22.41, cloud=0.0, wind=19.57, temperature=18.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:29:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:29:47.018 [DEBUG] [Thread-189180] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:29:47.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:29:47.101 [DEBUG] [Thread-189183] [transport.py] [_log()] starting thread (client mode): 0xd3193a60
2025-11-24T11:29:47.101 [DEBUG] [Thread-189183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:29:47.116 [DEBUG] [Thread-189183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:29:47.116 [INFO] [Thread-189183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:29:47.123 [DEBUG] [Thread-189183] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:29:47.123 [DEBUG] [Thread-189183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] client lang: <none>
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] server lang: <none>
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] kex follows: False
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] Compression: none
2025-11-24T11:29:47.124 [DEBUG] [Thread-189183] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:29:47.184 [DEBUG] [Thread-189183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:29:47.185 [DEBUG] [Thread-189183] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:29:47.185 [DEBUG] [Thread-189183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:29:47.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:29:47.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:29:47.244 [DEBUG] [Thread-189183] [transport.py] [_log()] userauth is OK
2025-11-24T11:29:47.245 [DEBUG] [Thread-189183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:29:47.245 [DEBUG] [Thread-189183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:29:47.245 [DEBUG] [Thread-189183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:29:47.245 [DEBUG] [Thread-189183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:29:47.263 [INFO] [Thread-189183] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:29:47.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:29:47.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:29:48.094 [DEBUG] [Thread-189183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:29:48.094 [DEBUG] [Thread-189183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:29:48.142 [DEBUG] [Thread-189183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:29:48.142 [DEBUG] [Thread-189183] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:29:48.150 [DEBUG] [Thread-189183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:29:48.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:29: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-11-24T11:29: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-11-24T11:29:48.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:29:48.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:29:48.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:29:48.182 [DEBUG] [Thread-189183] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:29:51.698 [DEBUG] [Thread-189185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:30:06.748 [DEBUG] [Thread-189186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:30:18.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:30:18.204 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:30:18.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-11-24T11:30:18.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 29, 59), 22.17, 21.91, 0.0, 14.88, 18.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:30:18.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:29:59
2025-11-24T11:30:19.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:30:19.246 [DEBUG] [Thread-189187] [transport.py] [_log()] starting thread (client mode): 0xd31506a0
2025-11-24T11:30:19.247 [DEBUG] [Thread-189187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:30:19.266 [DEBUG] [Thread-189187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:30:19.266 [INFO] [Thread-189187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:30:19.269 [DEBUG] [Thread-189187] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] client lang: <none>
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] server lang: <none>
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] kex follows: False
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] Compression: none
2025-11-24T11:30:19.270 [DEBUG] [Thread-189187] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:30:19.287 [DEBUG] [Thread-189187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:30:19.287 [DEBUG] [Thread-189187] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:30:19.288 [DEBUG] [Thread-189187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:30:19.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:30:19.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:30:19.290 [DEBUG] [Thread-189187] [transport.py] [_log()] userauth is OK
2025-11-24T11:30:19.290 [DEBUG] [Thread-189187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:30:19.290 [DEBUG] [Thread-189187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:30:19.290 [DEBUG] [Thread-189187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:30:19.290 [DEBUG] [Thread-189187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:30:19.326 [INFO] [Thread-189187] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:30:19.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:30:19.988 [DEBUG] [Thread-189187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:30:19.988 [DEBUG] [Thread-189187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:30:19.988 [DEBUG] [Thread-189187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:30:20.028 [DEBUG] [Thread-189187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:30:20.028 [DEBUG] [Thread-189187] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:30:20.031 [DEBUG] [Thread-189187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:30:20.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:30:20.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:30:20.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:30:20.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:30:20.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:30:20.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:30:20.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:30:20.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:30:20.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:30:20.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.395535 -999.00  +18.60  10.61     28   +0.00 1 1 1 1 1   888    0 21.47 131.28 ----- 10.6 10.6 157.2 18.0 25.8 -25.3 24.8 -25.0 24.5 -24.1 25.4 -24.8
2025-11-24T11:30:20.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:30:20.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:30:20.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.395535
2025-11-24T11:30:20.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:30:20.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:30:20.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:30:20.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:30:20.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:30:20.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:29:59', tmtdew=22.17, humidity=21.91, cloud=0.0, wind=14.88, temperature=18.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:29:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:30:20.058 [DEBUG] [Thread-189187] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:30:20.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:30:20.153 [DEBUG] [Thread-189190] [transport.py] [_log()] starting thread (client mode): 0xd073b220
2025-11-24T11:30:20.153 [DEBUG] [Thread-189190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:30:20.168 [DEBUG] [Thread-189190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:30:20.168 [INFO] [Thread-189190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:30:20.176 [DEBUG] [Thread-189190] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:30:20.176 [DEBUG] [Thread-189190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:30:20.176 [DEBUG] [Thread-189190] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:30:20.176 [DEBUG] [Thread-189190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:30:20.176 [DEBUG] [Thread-189190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:30:20.176 [DEBUG] [Thread-189190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] client lang: <none>
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] server lang: <none>
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] kex follows: False
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] Compression: none
2025-11-24T11:30:20.177 [DEBUG] [Thread-189190] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:30:20.236 [DEBUG] [Thread-189190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:30:20.237 [DEBUG] [Thread-189190] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:30:20.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:30:20.238 [DEBUG] [Thread-189190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:30:20.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:30:20.292 [DEBUG] [Thread-189190] [transport.py] [_log()] userauth is OK
2025-11-24T11:30:20.293 [DEBUG] [Thread-189190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:30:20.293 [DEBUG] [Thread-189190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:30:20.293 [DEBUG] [Thread-189190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:30:20.293 [DEBUG] [Thread-189190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:30:20.312 [INFO] [Thread-189190] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:30:20.313 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:30:20.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:30:21.159 [DEBUG] [Thread-189190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:30:21.159 [DEBUG] [Thread-189190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:30:21.207 [DEBUG] [Thread-189190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:30:21.207 [DEBUG] [Thread-189190] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:30:21.215 [DEBUG] [Thread-189190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:30:21.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:30:21.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-11-24T11:30:21.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-11-24T11:30:21.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:30:21.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:30:21.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:30:21.248 [DEBUG] [Thread-189190] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:30:21.776 [DEBUG] [Thread-189192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:30:36.811 [DEBUG] [Thread-189193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:30:39.663 [DEBUG] [Thread-189194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:30:51.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:30:51.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:30:51.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-11-24T11:30:51.837 [DEBUG] [Thread-189195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:30:51.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 30, 31), 21.81, 22.39, 0.0, 13.46, 18.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:30:51.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:30:31
2025-11-24T11:30:52.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:30:52.233 [DEBUG] [Thread-189196] [transport.py] [_log()] starting thread (client mode): 0xd073a8c0
2025-11-24T11:30:52.233 [DEBUG] [Thread-189196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:30:52.252 [DEBUG] [Thread-189196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:30:52.252 [INFO] [Thread-189196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] client lang: <none>
2025-11-24T11:30:52.255 [DEBUG] [Thread-189196] [transport.py] [_log()] server lang: <none>
2025-11-24T11:30:52.256 [DEBUG] [Thread-189196] [transport.py] [_log()] kex follows: False
2025-11-24T11:30:52.256 [DEBUG] [Thread-189196] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:30:52.256 [DEBUG] [Thread-189196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:30:52.256 [DEBUG] [Thread-189196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:30:52.256 [DEBUG] [Thread-189196] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:30:52.256 [DEBUG] [Thread-189196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:30:52.256 [DEBUG] [Thread-189196] [transport.py] [_log()] Compression: none
2025-11-24T11:30:52.256 [DEBUG] [Thread-189196] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:30:52.270 [DEBUG] [Thread-189196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:30:52.270 [DEBUG] [Thread-189196] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:30:52.270 [DEBUG] [Thread-189196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:30:52.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:30:52.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:30:52.271 [DEBUG] [Thread-189196] [transport.py] [_log()] userauth is OK
2025-11-24T11:30:52.271 [DEBUG] [Thread-189196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:30:52.271 [DEBUG] [Thread-189196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:30:52.271 [DEBUG] [Thread-189196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:30:52.271 [DEBUG] [Thread-189196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:30:52.286 [INFO] [Thread-189196] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:30:52.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:30:52.922 [DEBUG] [Thread-189196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:30:52.922 [DEBUG] [Thread-189196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:30:52.922 [DEBUG] [Thread-189196] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:30:52.963 [DEBUG] [Thread-189196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:30:52.963 [DEBUG] [Thread-189196] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:30:52.965 [DEBUG] [Thread-189196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:30:52.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:30:52.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:30:52.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:30:52.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:30:52.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:30:52.992 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:30:52.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.395882 -999.00  +18.60  12.90     28   -0.10 1 1 1 1 1   888    0 21.92 133.41 ----- 12.9 12.9 164.4 17.1 25.9 -25.5 24.9 -24.8 24.5 -25.3 25.5 -25.8
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.395882
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:30:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:30:31', tmtdew=21.81, humidity=22.39, cloud=0.0, wind=13.46, temperature=18.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:30:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:30:52.994 [DEBUG] [Thread-189196] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:30:53.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:30:53.075 [DEBUG] [Thread-189199] [transport.py] [_log()] starting thread (client mode): 0xd0711510
2025-11-24T11:30:53.075 [DEBUG] [Thread-189199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:30:53.089 [DEBUG] [Thread-189199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:30:53.090 [INFO] [Thread-189199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:30:53.097 [DEBUG] [Thread-189199] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:30:53.097 [DEBUG] [Thread-189199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:30:53.097 [DEBUG] [Thread-189199] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] client lang: <none>
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] server lang: <none>
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] kex follows: False
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] Compression: none
2025-11-24T11:30:53.098 [DEBUG] [Thread-189199] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:30:53.156 [DEBUG] [Thread-189199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:30:53.166 [DEBUG] [Thread-189199] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:30:53.167 [DEBUG] [Thread-189199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:30:53.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:30:53.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:30:53.217 [DEBUG] [Thread-189199] [transport.py] [_log()] userauth is OK
2025-11-24T11:30:53.217 [DEBUG] [Thread-189199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:30:53.217 [DEBUG] [Thread-189199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:30:53.218 [DEBUG] [Thread-189199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:30:53.218 [DEBUG] [Thread-189199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:30:53.236 [INFO] [Thread-189199] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:30: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-11-24T11:30:53.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:30:54.081 [DEBUG] [Thread-189199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:30:54.081 [DEBUG] [Thread-189199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:30:54.130 [DEBUG] [Thread-189199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:30:54.130 [DEBUG] [Thread-189199] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:30:54.140 [DEBUG] [Thread-189199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:30:54.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:30:54.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-11-24T11:30:54.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-11-24T11:30:54.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:30:54.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:30:54.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:30:54.177 [DEBUG] [Thread-189199] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:31:06.880 [DEBUG] [Thread-189201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:31:21.960 [DEBUG] [Thread-189202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:31:24.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:31:24.199 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:31:24.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-11-24T11:31:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 31, 3), 21.61, 22.63, 0.0, 17.73, 18.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:31:24.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:31:03
2025-11-24T11:31:25.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:31:25.304 [DEBUG] [Thread-189203] [transport.py] [_log()] starting thread (client mode): 0xd3191ba0
2025-11-24T11:31:25.304 [DEBUG] [Thread-189203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:31:25.324 [DEBUG] [Thread-189203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:31:25.325 [INFO] [Thread-189203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] client lang: <none>
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] server lang: <none>
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] kex follows: False
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] Compression: none
2025-11-24T11:31:25.328 [DEBUG] [Thread-189203] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:31:25.345 [DEBUG] [Thread-189203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:31:25.345 [DEBUG] [Thread-189203] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:31:25.345 [DEBUG] [Thread-189203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:31:25.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:31:25.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:31:25.346 [DEBUG] [Thread-189203] [transport.py] [_log()] userauth is OK
2025-11-24T11:31:25.346 [DEBUG] [Thread-189203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:31:25.346 [DEBUG] [Thread-189203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:31:25.346 [DEBUG] [Thread-189203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:31:25.346 [DEBUG] [Thread-189203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:31:25.363 [INFO] [Thread-189203] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:31:25.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:31:25.976 [DEBUG] [Thread-189203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:31:25.976 [DEBUG] [Thread-189203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:31:25.977 [DEBUG] [Thread-189203] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:31:26.017 [DEBUG] [Thread-189203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:31:26.017 [DEBUG] [Thread-189203] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:31:26.019 [DEBUG] [Thread-189203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:31:26.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:31:26.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:31:26.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:31:26.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:31:26.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:31:26.037 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:31:26.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:31:26.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:31:26.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:31:26.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.396229 -999.00  +18.40  10.82     28   +0.00 1 1 1 1 1   888    0 22.04 143.82 ----- 10.8 10.8 190.2 15.8 25.9 -25.5 24.8 -29.0 24.6 -23.7 25.5 -25.4
2025-11-24T11:31:26.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:31:26.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:31:26.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.396229
2025-11-24T11:31:26.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:31:26.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:31:26.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:31:26.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:31:26.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:31:26.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:31:03', tmtdew=21.61, humidity=22.63, cloud=0.0, wind=17.73, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:30:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:31:26.039 [DEBUG] [Thread-189203] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:31:26.116 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:31:26.128 [DEBUG] [Thread-189206] [transport.py] [_log()] starting thread (client mode): 0xd31535b0
2025-11-24T11:31:26.128 [DEBUG] [Thread-189206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:31:26.145 [DEBUG] [Thread-189206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:31:26.145 [INFO] [Thread-189206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] client lang: <none>
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] server lang: <none>
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] kex follows: False
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] Compression: none
2025-11-24T11:31:26.153 [DEBUG] [Thread-189206] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:31:26.210 [DEBUG] [Thread-189206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:31:26.210 [DEBUG] [Thread-189206] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:31:26.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:31:26.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:31:26.211 [DEBUG] [Thread-189206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:31:26.267 [DEBUG] [Thread-189206] [transport.py] [_log()] userauth is OK
2025-11-24T11:31:26.267 [DEBUG] [Thread-189206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:31:26.267 [DEBUG] [Thread-189206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:31:26.267 [DEBUG] [Thread-189206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:31:26.267 [DEBUG] [Thread-189206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:31:26.282 [INFO] [Thread-189206] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:31:26.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:31:26.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:31:27.175 [DEBUG] [Thread-189206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:31:27.175 [DEBUG] [Thread-189206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:31:27.223 [DEBUG] [Thread-189206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:31:27.223 [DEBUG] [Thread-189206] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:31:27.231 [DEBUG] [Thread-189206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:31:27.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:31:27.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-11-24T11:31:27.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-11-24T11:31:27.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:31:27.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:31:27.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:31:27.269 [DEBUG] [Thread-189206] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:31:36.988 [DEBUG] [Thread-189208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:31:39.915 [DEBUG] [Thread-189209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:31:52.028 [DEBUG] [Thread-189210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:31:57.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:31:57.292 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:31:57.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-11-24T11:31:58.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 31, 36), 22.03, 22.27, 0.0, 16.32, 18.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:31:58.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:31:36
2025-11-24T11:31:58.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:31:58.384 [DEBUG] [Thread-189211] [transport.py] [_log()] starting thread (client mode): 0xd317ed40
2025-11-24T11:31:58.385 [DEBUG] [Thread-189211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:31:58.400 [DEBUG] [Thread-189211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:31:58.400 [INFO] [Thread-189211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] client lang: <none>
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] server lang: <none>
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] kex follows: False
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:31:58.401 [DEBUG] [Thread-189211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:31:58.411 [DEBUG] [Thread-189211] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:31:58.411 [DEBUG] [Thread-189211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:31:58.411 [DEBUG] [Thread-189211] [transport.py] [_log()] Compression: none
2025-11-24T11:31:58.411 [DEBUG] [Thread-189211] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:31:58.420 [DEBUG] [Thread-189211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:31:58.420 [DEBUG] [Thread-189211] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:31:58.421 [DEBUG] [Thread-189211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:31:58.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:31:58.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:31:58.423 [DEBUG] [Thread-189211] [transport.py] [_log()] userauth is OK
2025-11-24T11:31:58.423 [DEBUG] [Thread-189211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:31:58.423 [DEBUG] [Thread-189211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:31:58.423 [DEBUG] [Thread-189211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:31:58.423 [DEBUG] [Thread-189211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:31:58.442 [INFO] [Thread-189211] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:31:58.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:31:59.229 [DEBUG] [Thread-189211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:31:59.229 [DEBUG] [Thread-189211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:31:59.229 [DEBUG] [Thread-189211] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:31:59.270 [DEBUG] [Thread-189211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:31:59.270 [DEBUG] [Thread-189211] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:31:59.272 [DEBUG] [Thread-189211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:31:59.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:31:59.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:31:59.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:31:59.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:31:59.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:31:59.289 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:31:59.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.396577 -999.00  +18.60   9.52     28   +0.00 1 1 1 1 1   888    0 21.92 134.34 ----- 9.5 9.5 188.4 16.3 26.0 -24.7 24.8 -25.2 24.6 -24.4 25.7 -24.7
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.396577
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:31:59.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:31:36', tmtdew=22.03, humidity=22.27, cloud=0.0, wind=16.32, temperature=18.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:31:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:31:59.290 [DEBUG] [Thread-189211] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:31:59.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:31:59.373 [DEBUG] [Thread-189214] [transport.py] [_log()] starting thread (client mode): 0xc9b82a40
2025-11-24T11:31:59.373 [DEBUG] [Thread-189214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:31:59.389 [DEBUG] [Thread-189214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:31:59.389 [INFO] [Thread-189214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] client lang: <none>
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] server lang: <none>
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] kex follows: False
2025-11-24T11:31:59.396 [DEBUG] [Thread-189214] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:31:59.397 [DEBUG] [Thread-189214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:31:59.397 [DEBUG] [Thread-189214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:31:59.397 [DEBUG] [Thread-189214] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:31:59.397 [DEBUG] [Thread-189214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:31:59.397 [DEBUG] [Thread-189214] [transport.py] [_log()] Compression: none
2025-11-24T11:31:59.397 [DEBUG] [Thread-189214] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:31:59.454 [DEBUG] [Thread-189214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:31:59.454 [DEBUG] [Thread-189214] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:31:59.455 [DEBUG] [Thread-189214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:31:59.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:31:59.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:31:59.516 [DEBUG] [Thread-189214] [transport.py] [_log()] userauth is OK
2025-11-24T11:31:59.516 [DEBUG] [Thread-189214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:31:59.516 [DEBUG] [Thread-189214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:31:59.516 [DEBUG] [Thread-189214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:31:59.516 [DEBUG] [Thread-189214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:31:59.529 [INFO] [Thread-189214] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:31:59.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:31:59.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:32:00.418 [DEBUG] [Thread-189214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:32:00.419 [DEBUG] [Thread-189214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:32:00.467 [DEBUG] [Thread-189214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:32:00.467 [DEBUG] [Thread-189214] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:32:00.476 [DEBUG] [Thread-189214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:32:00.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:32:00.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-11-24T11:32:00.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-11-24T11:32:00.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:32:00.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:32:00.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:32:00.512 [DEBUG] [Thread-189214] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:32:07.062 [DEBUG] [Thread-189216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:32:22.119 [DEBUG] [Thread-189217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:32:30.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:32:30.535 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:32:30.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-11-24T11:32:31.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 32, 8), 22.33, 21.85, 0.0, 18.79, 18.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:32:31.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:32:08
2025-11-24T11:32:31.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:32:31.576 [DEBUG] [Thread-189218] [transport.py] [_log()] starting thread (client mode): 0xc9b811e0
2025-11-24T11:32:31.576 [DEBUG] [Thread-189218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:32:31.596 [DEBUG] [Thread-189218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:32:31.596 [INFO] [Thread-189218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:32:31.599 [DEBUG] [Thread-189218] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:32:31.599 [DEBUG] [Thread-189218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:32:31.599 [DEBUG] [Thread-189218] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:32:31.599 [DEBUG] [Thread-189218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:32:31.599 [DEBUG] [Thread-189218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:32:31.599 [DEBUG] [Thread-189218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:32:31.599 [DEBUG] [Thread-189218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:32:31.599 [DEBUG] [Thread-189218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:32:31.599 [DEBUG] [Thread-189218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:32:31.600 [DEBUG] [Thread-189218] [transport.py] [_log()] client lang: <none>
2025-11-24T11:32:31.600 [DEBUG] [Thread-189218] [transport.py] [_log()] server lang: <none>
2025-11-24T11:32:31.600 [DEBUG] [Thread-189218] [transport.py] [_log()] kex follows: False
2025-11-24T11:32:31.600 [DEBUG] [Thread-189218] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:32:31.600 [DEBUG] [Thread-189218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:32:31.600 [DEBUG] [Thread-189218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:32:31.600 [DEBUG] [Thread-189218] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:32:31.600 [DEBUG] [Thread-189218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:32:31.600 [DEBUG] [Thread-189218] [transport.py] [_log()] Compression: none
2025-11-24T11:32:31.600 [DEBUG] [Thread-189218] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:32:31.617 [DEBUG] [Thread-189218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:32:31.617 [DEBUG] [Thread-189218] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:32:31.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:32:31.618 [DEBUG] [Thread-189218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:32:31.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:32:31.620 [DEBUG] [Thread-189218] [transport.py] [_log()] userauth is OK
2025-11-24T11:32:31.621 [DEBUG] [Thread-189218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:32:31.621 [DEBUG] [Thread-189218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:32:31.621 [DEBUG] [Thread-189218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:32:31.621 [DEBUG] [Thread-189218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:32:31.645 [INFO] [Thread-189218] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:32:31.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:32:32.277 [DEBUG] [Thread-189218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:32:32.277 [DEBUG] [Thread-189218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:32:32.277 [DEBUG] [Thread-189218] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:32:32.318 [DEBUG] [Thread-189218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:32:32.318 [DEBUG] [Thread-189218] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:32:32.320 [DEBUG] [Thread-189218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:32:32.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:32:32.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:32:32.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:32:32.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:32:32.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:32:32.340 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:32:32.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:32:32.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:32:32.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:32:32.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.397271 -999.00  +19.10   9.83     28   +0.10 1 1 1 1 1   888    0 21.92 141.52 ----- 9.8 9.8 186.9 17.3 26.1 -25.9 25.0 -25.4 24.8 -23.2 25.9 -25.0
2025-11-24T11:32:32.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:32:32.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:32:32.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.397271
2025-11-24T11:32:32.349 [DEBUG] [Thread-189218] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:32:32.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:32:32.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:32:32.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:32:32.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:32:32.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:32:32.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:32:08', tmtdew=22.33, humidity=21.85, cloud=0.0, wind=18.79, temperature=18.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:32:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:32:32.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:32:32.434 [DEBUG] [Thread-189221] [transport.py] [_log()] starting thread (client mode): 0xd317f670
2025-11-24T11:32:32.434 [DEBUG] [Thread-189221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:32:32.449 [DEBUG] [Thread-189221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:32:32.449 [INFO] [Thread-189221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:32:32.456 [DEBUG] [Thread-189221] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] client lang: <none>
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] server lang: <none>
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] kex follows: False
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] Compression: none
2025-11-24T11:32:32.457 [DEBUG] [Thread-189221] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:32:32.514 [DEBUG] [Thread-189221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:32:32.514 [DEBUG] [Thread-189221] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:32:32.514 [DEBUG] [Thread-189221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:32:32.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:32:32.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:32:32.571 [DEBUG] [Thread-189221] [transport.py] [_log()] userauth is OK
2025-11-24T11:32:32.571 [DEBUG] [Thread-189221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:32:32.571 [DEBUG] [Thread-189221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:32:32.571 [DEBUG] [Thread-189221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:32:32.571 [DEBUG] [Thread-189221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:32:32.584 [INFO] [Thread-189221] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:32:32.585 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:32:32.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:32:33.437 [DEBUG] [Thread-189221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:32:33.437 [DEBUG] [Thread-189221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:32:33.484 [DEBUG] [Thread-189221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:32:33.485 [DEBUG] [Thread-189221] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:32:33.494 [DEBUG] [Thread-189221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:32:33.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:32:33.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-11-24T11:32:33.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:32:33.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:32:33.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:32:33.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:32:33.536 [DEBUG] [Thread-189221] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:32:37.157 [DEBUG] [Thread-189223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:32:40.016 [DEBUG] [Thread-189224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:32:52.214 [DEBUG] [Thread-189225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:33:03.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:33:03.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:33:03.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:33:04.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 32, 41), 22.0, 22.25, 0.0, 13.46, 18.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:33:04.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:32:41
2025-11-24T11:33:04.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:33:04.547 [DEBUG] [Thread-189226] [transport.py] [_log()] starting thread (client mode): 0xd317e860
2025-11-24T11:33:04.547 [DEBUG] [Thread-189226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:33:04.565 [DEBUG] [Thread-189226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:33:04.566 [INFO] [Thread-189226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] client lang: <none>
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] server lang: <none>
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] kex follows: False
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] Compression: none
2025-11-24T11:33:04.569 [DEBUG] [Thread-189226] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:33:04.584 [DEBUG] [Thread-189226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:33:04.584 [DEBUG] [Thread-189226] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:33:04.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:33:04.585 [DEBUG] [Thread-189226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:33:04.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:33:04.586 [DEBUG] [Thread-189226] [transport.py] [_log()] userauth is OK
2025-11-24T11:33:04.586 [DEBUG] [Thread-189226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:33:04.587 [DEBUG] [Thread-189226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:33:04.587 [DEBUG] [Thread-189226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:33:04.587 [DEBUG] [Thread-189226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:33:04.600 [INFO] [Thread-189226] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:33:04.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:33:05.378 [DEBUG] [Thread-189226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:33:05.378 [DEBUG] [Thread-189226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:33:05.378 [DEBUG] [Thread-189226] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:33:05.419 [DEBUG] [Thread-189226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:33:05.419 [DEBUG] [Thread-189226] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:33:05.421 [DEBUG] [Thread-189226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:33:05.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:33:05.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:33:05.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:33:05.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:33:05.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:33:05.449 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:33:05.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:33:05.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:33:05.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:33:05.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.397618 -999.00  +19.30  10.81     26   -0.10 1 1 1 1 1   888    0 22.13 135.62 ----- 10.8 10.8 194.8 15.8 26.3 -25.4 25.1 -24.3 24.9 -24.3 26.0 -24.0
2025-11-24T11:33:05.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:33:05.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:33:05.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.397618
2025-11-24T11:33:05.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:33:05.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:33:05.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:33:05.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:33:05.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:33:05.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:32:41', tmtdew=22.0, humidity=22.25, cloud=0.0, wind=13.46, temperature=18.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:32:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:33:05.450 [DEBUG] [Thread-189226] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:33:05.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:33:05.531 [DEBUG] [Thread-189229] [transport.py] [_log()] starting thread (client mode): 0xd0701780
2025-11-24T11:33:05.531 [DEBUG] [Thread-189229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:33:05.549 [DEBUG] [Thread-189229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:33:05.550 [INFO] [Thread-189229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:33:05.557 [DEBUG] [Thread-189229] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:33:05.557 [DEBUG] [Thread-189229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] client lang: <none>
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] server lang: <none>
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] kex follows: False
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] Compression: none
2025-11-24T11:33:05.558 [DEBUG] [Thread-189229] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:33:05.616 [DEBUG] [Thread-189229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:33:05.616 [DEBUG] [Thread-189229] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:33:05.617 [DEBUG] [Thread-189229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:33:05.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:33:05.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:33:05.671 [DEBUG] [Thread-189229] [transport.py] [_log()] userauth is OK
2025-11-24T11:33:05.672 [DEBUG] [Thread-189229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:33:05.672 [DEBUG] [Thread-189229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:33:05.672 [DEBUG] [Thread-189229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:33:05.672 [DEBUG] [Thread-189229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:33:05.691 [INFO] [Thread-189229] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:33:05.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:33:05.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:33:06.640 [DEBUG] [Thread-189229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:33:06.640 [DEBUG] [Thread-189229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:33:06.692 [DEBUG] [Thread-189229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:33:06.692 [DEBUG] [Thread-189229] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:33:06.700 [DEBUG] [Thread-189229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:33:06.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:33:06.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:33:06.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-11-24T11:33:06.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:33:06.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:33:06.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:33:06.732 [DEBUG] [Thread-189229] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:33:07.250 [DEBUG] [Thread-189231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:33:22.311 [DEBUG] [Thread-189232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:33:36.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:33:36.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:33:36.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-11-24T11:33:37.338 [DEBUG] [Thread-189233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:33:37.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 33, 13), 21.94, 22.4, 0.0, 21.0, 18.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:33:37.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:33:13
2025-11-24T11:33:37.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:33:37.735 [DEBUG] [Thread-189234] [transport.py] [_log()] starting thread (client mode): 0xd3193ca0
2025-11-24T11:33:37.735 [DEBUG] [Thread-189234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:33:37.758 [DEBUG] [Thread-189234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:33:37.758 [INFO] [Thread-189234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:33:37.761 [DEBUG] [Thread-189234] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:33:37.761 [DEBUG] [Thread-189234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] client lang: <none>
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] server lang: <none>
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] kex follows: False
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:33:37.762 [DEBUG] [Thread-189234] [transport.py] [_log()] Compression: none
2025-11-24T11:33:37.763 [DEBUG] [Thread-189234] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:33:37.780 [DEBUG] [Thread-189234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:33:37.781 [DEBUG] [Thread-189234] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:33:37.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:33:37.782 [DEBUG] [Thread-189234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:33:37.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:33:37.825 [DEBUG] [Thread-189234] [transport.py] [_log()] userauth is OK
2025-11-24T11:33:37.825 [DEBUG] [Thread-189234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:33:37.825 [DEBUG] [Thread-189234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:33:37.825 [DEBUG] [Thread-189234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:33:37.825 [DEBUG] [Thread-189234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:33:37.845 [INFO] [Thread-189234] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:33:37.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:33:38.490 [DEBUG] [Thread-189234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:33:38.490 [DEBUG] [Thread-189234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:33:38.490 [DEBUG] [Thread-189234] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:33:38.531 [DEBUG] [Thread-189234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:33:38.531 [DEBUG] [Thread-189234] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:33:38.533 [DEBUG] [Thread-189234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:33:38.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:33:38.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:33:38.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:33:38.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:33:38.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:33:38.553 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:33:38.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.397966 -999.00  +19.50  16.38     25   -0.60 1 1 1 1 1   888    0 22.15 141.60 ----- 16.4 16.4 194.1 25.7 26.3 -26.7 25.0 -25.8 24.8 -24.1 25.8 -26.5
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.397966
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:33:38.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:33:38.561 [DEBUG] [Thread-189234] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:33:38.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:33:13', tmtdew=21.94, humidity=22.4, cloud=0.0, wind=21.0, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:33:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:33:38.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:33:38.647 [DEBUG] [Thread-189237] [transport.py] [_log()] starting thread (client mode): 0xd073bd60
2025-11-24T11:33:38.647 [DEBUG] [Thread-189237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:33:38.662 [DEBUG] [Thread-189237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:33:38.662 [INFO] [Thread-189237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] client lang: <none>
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] server lang: <none>
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] kex follows: False
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] Compression: none
2025-11-24T11:33:38.671 [DEBUG] [Thread-189237] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:33:38.734 [DEBUG] [Thread-189237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:33:38.734 [DEBUG] [Thread-189237] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:33:38.734 [DEBUG] [Thread-189237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:33:38.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:33:38.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:33:38.791 [DEBUG] [Thread-189237] [transport.py] [_log()] userauth is OK
2025-11-24T11:33:38.791 [DEBUG] [Thread-189237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:33:38.791 [DEBUG] [Thread-189237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:33:38.791 [DEBUG] [Thread-189237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:33:38.791 [DEBUG] [Thread-189237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:33:38.805 [INFO] [Thread-189237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:33:38.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:33:38.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:33:39.659 [DEBUG] [Thread-189237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:33:39.659 [DEBUG] [Thread-189237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:33:39.707 [DEBUG] [Thread-189237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:33:39.707 [DEBUG] [Thread-189237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:33:39.717 [DEBUG] [Thread-189237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:33:39.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:33:39.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-11-24T11:33:39.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-11-24T11:33:39.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:33:39.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:33:39.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:33:39.751 [DEBUG] [Thread-189237] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:33:40.085 [DEBUG] [Thread-189239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:33:52.369 [DEBUG] [Thread-189240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:34:07.430 [DEBUG] [Thread-189241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:34:09.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:34:09.774 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:34:09.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-11-24T11:34:10.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 33, 46), 22.65, 21.53, 0.0, 21.07, 19.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:34:10.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:33:46
2025-11-24T11:34:10.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:34:10.763 [DEBUG] [Thread-189242] [transport.py] [_log()] starting thread (client mode): 0xd31b3190
2025-11-24T11:34:10.764 [DEBUG] [Thread-189242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:34:10.786 [DEBUG] [Thread-189242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:34:10.786 [INFO] [Thread-189242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:34:10.788 [DEBUG] [Thread-189242] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:34:10.788 [DEBUG] [Thread-189242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:34:10.788 [DEBUG] [Thread-189242] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:34:10.788 [DEBUG] [Thread-189242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] client lang: <none>
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] server lang: <none>
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] kex follows: False
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] Compression: none
2025-11-24T11:34:10.789 [DEBUG] [Thread-189242] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:34:10.806 [DEBUG] [Thread-189242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:34:10.806 [DEBUG] [Thread-189242] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:34:10.806 [DEBUG] [Thread-189242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:34:10.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:34:10.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:34:10.806 [DEBUG] [Thread-189242] [transport.py] [_log()] userauth is OK
2025-11-24T11:34:10.806 [DEBUG] [Thread-189242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:34:10.806 [DEBUG] [Thread-189242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:34:10.806 [DEBUG] [Thread-189242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:34:10.806 [DEBUG] [Thread-189242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:34:10.815 [INFO] [Thread-189242] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:34:10.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:34:11.549 [DEBUG] [Thread-189242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:34:11.558 [DEBUG] [Thread-189242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:34:11.558 [DEBUG] [Thread-189242] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:34:11.590 [DEBUG] [Thread-189242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:34:11.590 [DEBUG] [Thread-189242] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:34:11.592 [DEBUG] [Thread-189242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:34:11.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:34:11.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:34:11.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:34:11.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:34:11.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:34:11.610 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:34:11.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:34:11.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:34:11.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:34:11.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.398313 -999.00  +19.20   5.52     25   -0.90 1 1 1 1 1   888    0 22.14 137.68 ----- 5.5 5.5 172.8 21.1 26.2 -26.6 25.1 -25.3 24.9 -24.9 25.9 -24.8
2025-11-24T11:34:11.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:34:11.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:34:11.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.398313
2025-11-24T11:34:11.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:34:11.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:34:11.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:34:11.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:34:11.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:34:11.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:33:46', tmtdew=22.65, humidity=21.53, cloud=0.0, wind=21.07, temperature=19.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:33:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:34:11.611 [DEBUG] [Thread-189242] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:34:11.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:34:11.698 [DEBUG] [Thread-189245] [transport.py] [_log()] starting thread (client mode): 0xc9b83820
2025-11-24T11:34:11.698 [DEBUG] [Thread-189245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:34:11.717 [DEBUG] [Thread-189245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:34:11.718 [INFO] [Thread-189245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:34:11.725 [DEBUG] [Thread-189245] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:34:11.725 [DEBUG] [Thread-189245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:34:11.725 [DEBUG] [Thread-189245] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:34:11.725 [DEBUG] [Thread-189245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:34:11.725 [DEBUG] [Thread-189245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:34:11.725 [DEBUG] [Thread-189245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:34:11.725 [DEBUG] [Thread-189245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] client lang: <none>
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] server lang: <none>
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] kex follows: False
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] Compression: none
2025-11-24T11:34:11.726 [DEBUG] [Thread-189245] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:34:11.783 [DEBUG] [Thread-189245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:34:11.784 [DEBUG] [Thread-189245] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:34:11.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:34:11.785 [DEBUG] [Thread-189245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:34:11.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:34:11.839 [DEBUG] [Thread-189245] [transport.py] [_log()] userauth is OK
2025-11-24T11:34:11.840 [DEBUG] [Thread-189245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:34:11.840 [DEBUG] [Thread-189245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:34:11.840 [DEBUG] [Thread-189245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:34:11.840 [DEBUG] [Thread-189245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:34:11.875 [INFO] [Thread-189245] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:34:11.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:34:11.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:34:12.728 [DEBUG] [Thread-189245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:34:12.728 [DEBUG] [Thread-189245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:34:12.777 [DEBUG] [Thread-189245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:34:12.777 [DEBUG] [Thread-189245] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:34:12.787 [DEBUG] [Thread-189245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:34:12.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:34:12.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-11-24T11:34:12.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') -> 00000000
2025-11-24T11:34:12.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:34:12.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:34:12.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:34:12.826 [DEBUG] [Thread-189245] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:34:22.466 [DEBUG] [Thread-189247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:34:37.515 [DEBUG] [Thread-189248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:34:40.421 [DEBUG] [Thread-189249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:34:42.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:34:42.849 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:34:42.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-11-24T11:34:43.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 34, 18), 22.47, 21.8, 0.0, 20.31, 19.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:34:43.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:34:18
2025-11-24T11:34:43.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:34:43.862 [DEBUG] [Thread-189250] [transport.py] [_log()] starting thread (client mode): 0xd317efe0
2025-11-24T11:34:43.862 [DEBUG] [Thread-189250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:34:43.867 [DEBUG] [Thread-189250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:34:43.867 [INFO] [Thread-189250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] client lang: <none>
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] server lang: <none>
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] kex follows: False
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:34:43.870 [DEBUG] [Thread-189250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:34:43.871 [DEBUG] [Thread-189250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:34:43.871 [DEBUG] [Thread-189250] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:34:43.871 [DEBUG] [Thread-189250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:34:43.871 [DEBUG] [Thread-189250] [transport.py] [_log()] Compression: none
2025-11-24T11:34:43.871 [DEBUG] [Thread-189250] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:34:43.885 [DEBUG] [Thread-189250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:34:43.885 [DEBUG] [Thread-189250] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:34:43.885 [DEBUG] [Thread-189250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:34:43.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:34:43.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:34:43.928 [DEBUG] [Thread-189250] [transport.py] [_log()] userauth is OK
2025-11-24T11:34:43.928 [DEBUG] [Thread-189250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:34:43.928 [DEBUG] [Thread-189250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:34:43.928 [DEBUG] [Thread-189250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:34:43.928 [DEBUG] [Thread-189250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:34:43.943 [INFO] [Thread-189250] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:34:43.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:34:44.599 [DEBUG] [Thread-189250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:34:44.599 [DEBUG] [Thread-189250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:34:44.599 [DEBUG] [Thread-189250] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:34:44.640 [DEBUG] [Thread-189250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:34:44.641 [DEBUG] [Thread-189250] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:34:44.643 [DEBUG] [Thread-189250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:34:44.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:34:44.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:34:44.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:34:44.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:34:44.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:34:44.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:34:44.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:34:44.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:34:44.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:34:44.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.398660 -999.00  +19.30   7.54     27   +0.10 1 1 1 1 1   888    0 22.68 139.88 ----- 7.5 7.5 160.0 24.3 26.3 -25.3 25.0 -24.5 25.0 -23.0 25.9 -25.1
2025-11-24T11:34:44.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:34:44.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:34:44.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.398660
2025-11-24T11:34:44.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:34:44.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:34:44.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:34:44.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:34:44.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:34:44.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:34:18', tmtdew=22.47, humidity=21.8, cloud=0.0, wind=20.31, temperature=19.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:34:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:34:44.664 [DEBUG] [Thread-189250] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:34:44.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:34:44.762 [DEBUG] [Thread-189253] [transport.py] [_log()] starting thread (client mode): 0xc9b83c70
2025-11-24T11:34:44.762 [DEBUG] [Thread-189253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:34:44.777 [DEBUG] [Thread-189253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:34:44.777 [INFO] [Thread-189253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:34:44.784 [DEBUG] [Thread-189253] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] client lang: <none>
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] server lang: <none>
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] kex follows: False
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] Compression: none
2025-11-24T11:34:44.785 [DEBUG] [Thread-189253] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:34:44.843 [DEBUG] [Thread-189253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:34:44.844 [DEBUG] [Thread-189253] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:34:44.844 [DEBUG] [Thread-189253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:34:44.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:34:44.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:34:44.899 [DEBUG] [Thread-189253] [transport.py] [_log()] userauth is OK
2025-11-24T11:34:44.899 [DEBUG] [Thread-189253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:34:44.899 [DEBUG] [Thread-189253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:34:44.900 [DEBUG] [Thread-189253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:34:44.900 [DEBUG] [Thread-189253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:34:44.918 [INFO] [Thread-189253] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:34:44.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:34:44.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:34:45.777 [DEBUG] [Thread-189253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:34:45.777 [DEBUG] [Thread-189253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:34:45.826 [DEBUG] [Thread-189253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:34:45.826 [DEBUG] [Thread-189253] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:34:45.835 [DEBUG] [Thread-189253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:34:45.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:34: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')
2025-11-24T11:34:45.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-11-24T11:34:45.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:34:45.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:34:45.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:34:45.868 [DEBUG] [Thread-189253] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:34:52.544 [DEBUG] [Thread-189255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:35:07.593 [DEBUG] [Thread-189256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:35:15.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:35:15.891 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:35:15.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-11-24T11:35:16.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 34, 50), 21.57, 23.06, 0.0, 18.21, 19.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:35:16.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:34:50
2025-11-24T11:35:16.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:35:16.876 [DEBUG] [Thread-189257] [transport.py] [_log()] starting thread (client mode): 0xc9b81fc0
2025-11-24T11:35:16.876 [DEBUG] [Thread-189257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:35:16.899 [DEBUG] [Thread-189257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:35:16.899 [INFO] [Thread-189257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] client lang: <none>
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] server lang: <none>
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] kex follows: False
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] Compression: none
2025-11-24T11:35:16.903 [DEBUG] [Thread-189257] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:35:16.917 [DEBUG] [Thread-189257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:35:16.917 [DEBUG] [Thread-189257] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:35:16.917 [DEBUG] [Thread-189257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:35:16.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:35:16.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:35:16.918 [DEBUG] [Thread-189257] [transport.py] [_log()] userauth is OK
2025-11-24T11:35:16.918 [DEBUG] [Thread-189257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:35:16.918 [DEBUG] [Thread-189257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:35:16.918 [DEBUG] [Thread-189257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:35:16.918 [DEBUG] [Thread-189257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:35:16.936 [INFO] [Thread-189257] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:35:16.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:35:18.335 [DEBUG] [Thread-189257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:35:18.335 [DEBUG] [Thread-189257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:35:18.335 [DEBUG] [Thread-189257] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:35:18.376 [DEBUG] [Thread-189257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:35:18.376 [DEBUG] [Thread-189257] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:35:18.378 [DEBUG] [Thread-189257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:35:18.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:35:18.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:35:18.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:35:18.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:35:18.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:35:18.397 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:35:18.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.399007 -999.00  +19.40  15.27     28   +0.70 1 1 1 1 1   888    0 22.36 139.50 ----- 15.3 15.3 136.8 22.6 26.3 -26.0 25.1 -26.5 24.9 -24.8 25.9 -26.1
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.399007
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:35:18.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:34:50', tmtdew=21.57, humidity=23.06, cloud=0.0, wind=18.21, temperature=19.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:34:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:35:18.398 [DEBUG] [Thread-189257] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:35:18.470 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:35:18.480 [DEBUG] [Thread-189260] [transport.py] [_log()] starting thread (client mode): 0xd07020e0
2025-11-24T11:35:18.481 [DEBUG] [Thread-189260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:35:18.496 [DEBUG] [Thread-189260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:35:18.496 [INFO] [Thread-189260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] client lang: <none>
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] server lang: <none>
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] kex follows: False
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] Compression: none
2025-11-24T11:35:18.504 [DEBUG] [Thread-189260] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:35:18.566 [DEBUG] [Thread-189260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:35:18.566 [DEBUG] [Thread-189260] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:35:18.566 [DEBUG] [Thread-189260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:35:18.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:35:18.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:35:18.622 [DEBUG] [Thread-189260] [transport.py] [_log()] userauth is OK
2025-11-24T11:35:18.622 [DEBUG] [Thread-189260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:35:18.623 [DEBUG] [Thread-189260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:35:18.623 [DEBUG] [Thread-189260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:35:18.623 [DEBUG] [Thread-189260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:35:18.637 [INFO] [Thread-189260] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:35:18.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:35:18.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:35:19.476 [DEBUG] [Thread-189260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:35:19.477 [DEBUG] [Thread-189260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:35:19.525 [DEBUG] [Thread-189260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:35:19.525 [DEBUG] [Thread-189260] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:35:19.534 [DEBUG] [Thread-189260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:35:19.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:35:19.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-11-24T11:35:19.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:35:19.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:35:19.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:35:19.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:35:19.574 [DEBUG] [Thread-189260] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:35:22.639 [DEBUG] [Thread-189262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:35:37.686 [DEBUG] [Thread-189263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:35:40.488 [DEBUG] [Thread-189264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:35:49.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:35:49.596 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:35:49.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:35:50.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 35, 23), 21.46, 23.25, 0.0, 14.82, 19.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:35:50.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:35:23
2025-11-24T11:35:50.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:35:50.697 [DEBUG] [Thread-189265] [transport.py] [_log()] starting thread (client mode): 0xd0702260
2025-11-24T11:35:50.697 [DEBUG] [Thread-189265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:35:50.718 [DEBUG] [Thread-189265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:35:50.718 [INFO] [Thread-189265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] client lang: <none>
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] server lang: <none>
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] kex follows: False
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:35:50.721 [DEBUG] [Thread-189265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:35:50.722 [DEBUG] [Thread-189265] [transport.py] [_log()] Compression: none
2025-11-24T11:35:50.722 [DEBUG] [Thread-189265] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:35:50.737 [DEBUG] [Thread-189265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:35:50.737 [DEBUG] [Thread-189265] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:35:50.737 [DEBUG] [Thread-189265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:35:50.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:35:50.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:35:50.738 [DEBUG] [Thread-189265] [transport.py] [_log()] userauth is OK
2025-11-24T11:35:50.738 [DEBUG] [Thread-189265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:35:50.738 [DEBUG] [Thread-189265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:35:50.738 [DEBUG] [Thread-189265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:35:50.738 [DEBUG] [Thread-189265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:35:50.748 [INFO] [Thread-189265] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:35:50.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:35:51.390 [DEBUG] [Thread-189265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:35:51.390 [DEBUG] [Thread-189265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:35:51.390 [DEBUG] [Thread-189265] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:35:51.431 [DEBUG] [Thread-189265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:35:51.431 [DEBUG] [Thread-189265] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:35:51.433 [DEBUG] [Thread-189265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:35:51.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:35:51.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:35:51.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:35:51.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:35:51.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:35:51.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:35:51.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:35:51.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:35:51.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:35:51.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.399354 -999.00  +19.30  12.65     29   +0.90 1 1 1 1 1   888    0 22.13 138.81 ----- 12.7 12.7 178.4 14.9 26.4 -25.4 25.1 -28.5 25.0 -23.8 26.0 -25.4
2025-11-24T11:35:51.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:35:51.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:35:51.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.399354
2025-11-24T11:35:51.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:35:51.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:35:51.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:35:51.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:35:51.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:35:51.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:35:23', tmtdew=21.46, humidity=23.25, cloud=0.0, wind=14.82, temperature=19.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:35:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:35:51.452 [DEBUG] [Thread-189265] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:35:51.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:35:51.538 [DEBUG] [Thread-189268] [transport.py] [_log()] starting thread (client mode): 0xd0700070
2025-11-24T11:35:51.538 [DEBUG] [Thread-189268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:35:51.552 [DEBUG] [Thread-189268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:35:51.552 [INFO] [Thread-189268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] client lang: <none>
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] server lang: <none>
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] kex follows: False
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:35:51.560 [DEBUG] [Thread-189268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:35:51.561 [DEBUG] [Thread-189268] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:35:51.561 [DEBUG] [Thread-189268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:35:51.561 [DEBUG] [Thread-189268] [transport.py] [_log()] Compression: none
2025-11-24T11:35:51.561 [DEBUG] [Thread-189268] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:35:51.617 [DEBUG] [Thread-189268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:35:51.617 [DEBUG] [Thread-189268] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:35:51.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:35:51.618 [DEBUG] [Thread-189268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:35:51.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:35:51.674 [DEBUG] [Thread-189268] [transport.py] [_log()] userauth is OK
2025-11-24T11:35:51.674 [DEBUG] [Thread-189268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:35:51.674 [DEBUG] [Thread-189268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:35:51.674 [DEBUG] [Thread-189268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:35:51.674 [DEBUG] [Thread-189268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:35:51.688 [INFO] [Thread-189268] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:35:51.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:35:51.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:35:52.554 [DEBUG] [Thread-189268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:35:52.555 [DEBUG] [Thread-189268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:35:52.603 [DEBUG] [Thread-189268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:35:52.603 [DEBUG] [Thread-189268] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:35:52.611 [DEBUG] [Thread-189268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:35:52.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:35:52.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:35:52.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-11-24T11:35:52.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:35:52.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:35:52.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:35:52.642 [DEBUG] [Thread-189268] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:35:52.712 [DEBUG] [Thread-189270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:36:07.758 [DEBUG] [Thread-189271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:36:22.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:36:22.665 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:36:22.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-11-24T11:36:22.787 [DEBUG] [Thread-189272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:36:23.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 35, 55), 21.34, 23.25, 0.0, 19.48, 19.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:36:23.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:35:55
2025-11-24T11:36:23.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:36:23.763 [DEBUG] [Thread-189273] [transport.py] [_log()] starting thread (client mode): 0xd0701930
2025-11-24T11:36:23.763 [DEBUG] [Thread-189273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:36:23.783 [DEBUG] [Thread-189273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:36:23.783 [INFO] [Thread-189273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:36:23.786 [DEBUG] [Thread-189273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] client lang: <none>
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] server lang: <none>
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] kex follows: False
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] Compression: none
2025-11-24T11:36:23.787 [DEBUG] [Thread-189273] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:36:23.795 [DEBUG] [Thread-189273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:36:23.795 [DEBUG] [Thread-189273] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:36:23.796 [DEBUG] [Thread-189273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:36:23.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:36:23.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:36:23.841 [DEBUG] [Thread-189273] [transport.py] [_log()] userauth is OK
2025-11-24T11:36:23.841 [DEBUG] [Thread-189273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:36:23.841 [DEBUG] [Thread-189273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:36:23.841 [DEBUG] [Thread-189273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:36:23.841 [DEBUG] [Thread-189273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:36:23.878 [INFO] [Thread-189273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:36:23.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:36:24.522 [DEBUG] [Thread-189273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:36:24.522 [DEBUG] [Thread-189273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:36:24.522 [DEBUG] [Thread-189273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:36:24.563 [DEBUG] [Thread-189273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:36:24.563 [DEBUG] [Thread-189273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:36:24.565 [DEBUG] [Thread-189273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:36:24.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:36:24.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:36:24.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:36:24.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:36:24.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:36:24.593 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:36:24.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:36:24.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:36:24.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:36:24.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.399702 -999.00  +19.80  21.66     28   +1.10 1 1 1 1 1   888    0 22.24 135.08 ----- 21.7 21.7 200.2 33.9 26.3 -25.9 25.0 -25.4 25.0 -23.3 25.9 -25.4
2025-11-24T11:36:24.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:36:24.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:36:24.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.399702
2025-11-24T11:36:24.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:36:24.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:36:24.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:36:24.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:36:24.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:36:24.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:35:55', tmtdew=21.34, humidity=23.25, cloud=0.0, wind=19.48, temperature=19.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:35:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:36:24.595 [DEBUG] [Thread-189273] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:36:24.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:36:24.677 [DEBUG] [Thread-189276] [transport.py] [_log()] starting thread (client mode): 0xd0739180
2025-11-24T11:36:24.678 [DEBUG] [Thread-189276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:36:24.692 [DEBUG] [Thread-189276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:36:24.693 [INFO] [Thread-189276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] client lang: <none>
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] server lang: <none>
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] kex follows: False
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:36:24.700 [DEBUG] [Thread-189276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:36:24.701 [DEBUG] [Thread-189276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:36:24.701 [DEBUG] [Thread-189276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:36:24.701 [DEBUG] [Thread-189276] [transport.py] [_log()] Compression: none
2025-11-24T11:36:24.701 [DEBUG] [Thread-189276] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:36:24.759 [DEBUG] [Thread-189276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:36:24.759 [DEBUG] [Thread-189276] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:36:24.760 [DEBUG] [Thread-189276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:36:24.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:36:24.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:36:24.815 [DEBUG] [Thread-189276] [transport.py] [_log()] userauth is OK
2025-11-24T11:36:24.815 [DEBUG] [Thread-189276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:36:24.815 [DEBUG] [Thread-189276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:36:24.815 [DEBUG] [Thread-189276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:36:24.815 [DEBUG] [Thread-189276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:36:24.837 [INFO] [Thread-189276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:36:24.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:36:24.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:36:25.698 [DEBUG] [Thread-189276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:36:25.698 [DEBUG] [Thread-189276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:36:25.746 [DEBUG] [Thread-189276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:36:25.746 [DEBUG] [Thread-189276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:36:25.754 [DEBUG] [Thread-189276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:36:25.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:36:25.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-11-24T11:36:25.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-11-24T11:36:25.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:36:25.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:36:25.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:36:25.786 [DEBUG] [Thread-189276] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:36:37.815 [DEBUG] [Thread-189278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:36:40.603 [DEBUG] [Thread-189279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:36:52.877 [DEBUG] [Thread-189280 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:36:55.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:36:55.781 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:36:55.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-11-24T11:36:56.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 36, 27), 21.56, 22.93, 0.0, 20.42, 19.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:36:56.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:36:27
2025-11-24T11:36:56.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:36:56.825 [DEBUG] [Thread-189281] [transport.py] [_log()] starting thread (client mode): 0xd0703670
2025-11-24T11:36:56.825 [DEBUG] [Thread-189281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:36:56.845 [DEBUG] [Thread-189281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:36:56.846 [INFO] [Thread-189281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] client lang: <none>
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] server lang: <none>
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] kex follows: False
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] Compression: none
2025-11-24T11:36:56.849 [DEBUG] [Thread-189281] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:36:56.865 [DEBUG] [Thread-189281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:36:56.865 [DEBUG] [Thread-189281] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:36:56.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:36:56.867 [DEBUG] [Thread-189281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:36:56.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:36:56.869 [DEBUG] [Thread-189281] [transport.py] [_log()] userauth is OK
2025-11-24T11:36:56.869 [DEBUG] [Thread-189281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:36:56.869 [DEBUG] [Thread-189281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:36:56.869 [DEBUG] [Thread-189281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:36:56.869 [DEBUG] [Thread-189281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:36:56.889 [INFO] [Thread-189281] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:36:56.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:36:57.512 [DEBUG] [Thread-189281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:36:57.513 [DEBUG] [Thread-189281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:36:57.513 [DEBUG] [Thread-189281] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:36:57.554 [DEBUG] [Thread-189281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:36:57.554 [DEBUG] [Thread-189281] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:36:57.557 [DEBUG] [Thread-189281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:36:57.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:36:57.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:36:57.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:36:57.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:36:57.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:36:57.580 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:36:57.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:36:57.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:36:57.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:36:57.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.400396 -999.00  +19.70  20.53     28   +0.90 1 1 1 1 1   888    0 22.00 121.68 ----- 20.5 20.5 188.6 27.5 26.2 -26.0 24.8 -29.0 24.9 -24.2 25.9 -25.7
2025-11-24T11:36:57.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:36:57.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:36:57.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.400396
2025-11-24T11:36:57.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:36:57.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:36:57.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:36:57.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:36:57.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:36:57.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:36:27', tmtdew=21.56, humidity=22.93, cloud=0.0, wind=20.42, temperature=19.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:36:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:36:57.583 [DEBUG] [Thread-189281] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:36:57.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:36:57.675 [DEBUG] [Thread-189284] [transport.py] [_log()] starting thread (client mode): 0xd31b3ca0
2025-11-24T11:36:57.675 [DEBUG] [Thread-189284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:36:57.694 [DEBUG] [Thread-189284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:36:57.694 [INFO] [Thread-189284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:36:57.701 [DEBUG] [Thread-189284] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] client lang: <none>
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] server lang: <none>
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] kex follows: False
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:36:57.702 [DEBUG] [Thread-189284] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:36:57.703 [DEBUG] [Thread-189284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:36:57.703 [DEBUG] [Thread-189284] [transport.py] [_log()] Compression: none
2025-11-24T11:36:57.703 [DEBUG] [Thread-189284] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:36:57.759 [DEBUG] [Thread-189284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:36:57.760 [DEBUG] [Thread-189284] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:36:57.760 [DEBUG] [Thread-189284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:36:57.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:36:57.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:36:57.815 [DEBUG] [Thread-189284] [transport.py] [_log()] userauth is OK
2025-11-24T11:36:57.815 [DEBUG] [Thread-189284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:36:57.816 [DEBUG] [Thread-189284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:36:57.816 [DEBUG] [Thread-189284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:36:57.816 [DEBUG] [Thread-189284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:36:57.835 [INFO] [Thread-189284] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:36:57.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:36:57.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:36:58.697 [DEBUG] [Thread-189284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:36:58.697 [DEBUG] [Thread-189284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:36:58.745 [DEBUG] [Thread-189284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:36:58.745 [DEBUG] [Thread-189284] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:36:58.754 [DEBUG] [Thread-189284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:36:58.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:36:58.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-11-24T11:36:58.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-11-24T11:36:58.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:36:58.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:36:58.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:36:58.791 [DEBUG] [Thread-189284] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:37:07.908 [DEBUG] [Thread-189286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:37:22.943 [DEBUG] [Thread-189287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:37:28.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:37:28.798 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:37:28.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-11-24T11:37:29.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 36, 27), 21.56, 22.93, 0.0, 20.42, 19.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:37:29.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:36:27
2025-11-24T11:37:29.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:37:29.799 [DEBUG] [Thread-189288] [transport.py] [_log()] starting thread (client mode): 0xd31b3d60
2025-11-24T11:37:29.799 [DEBUG] [Thread-189288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:37:29.819 [DEBUG] [Thread-189288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:37:29.819 [INFO] [Thread-189288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:37:29.822 [DEBUG] [Thread-189288] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:37:29.822 [DEBUG] [Thread-189288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:37:29.822 [DEBUG] [Thread-189288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] client lang: <none>
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] server lang: <none>
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] kex follows: False
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:37:29.823 [DEBUG] [Thread-189288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:37:29.824 [DEBUG] [Thread-189288] [transport.py] [_log()] Compression: none
2025-11-24T11:37:29.824 [DEBUG] [Thread-189288] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:37:29.841 [DEBUG] [Thread-189288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:37:29.842 [DEBUG] [Thread-189288] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:37:29.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:37:29.844 [DEBUG] [Thread-189288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:37:29.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:37:29.885 [DEBUG] [Thread-189288] [transport.py] [_log()] userauth is OK
2025-11-24T11:37:29.885 [DEBUG] [Thread-189288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:37:29.885 [DEBUG] [Thread-189288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:37:29.885 [DEBUG] [Thread-189288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:37:29.885 [DEBUG] [Thread-189288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:37:29.905 [INFO] [Thread-189288] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:37:29.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:37:30.544 [DEBUG] [Thread-189288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:37:30.544 [DEBUG] [Thread-189288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:37:30.544 [DEBUG] [Thread-189288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:37:30.585 [DEBUG] [Thread-189288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:37:30.585 [DEBUG] [Thread-189288] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:37:30.587 [DEBUG] [Thread-189288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:37:30.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:37:30.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:37:30.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:37:30.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:37:30.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:37:30.606 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:37:30.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:37:30.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.400743 -999.00  +19.50  14.31     29   +1.10 1 1 1 1 1   888    0 21.92 120.92 ----- 14.3 14.3 176.9 25.1 26.2 -26.1 24.9 -24.7 24.9 -24.1 25.8 -25.5
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.400743
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:37:30.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:36:27', tmtdew=21.56, humidity=22.93, cloud=0.0, wind=20.42, temperature=19.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:37:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:37:30.608 [DEBUG] [Thread-189288] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:37:30.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:37:30.693 [DEBUG] [Thread-189291] [transport.py] [_log()] starting thread (client mode): 0xd31b37c0
2025-11-24T11:37:30.694 [DEBUG] [Thread-189291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:37:30.710 [DEBUG] [Thread-189291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:37:30.710 [INFO] [Thread-189291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] client lang: <none>
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] server lang: <none>
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] kex follows: False
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] Compression: none
2025-11-24T11:37:30.717 [DEBUG] [Thread-189291] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:37:30.777 [DEBUG] [Thread-189291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:37:30.786 [DEBUG] [Thread-189291] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:37:30.786 [DEBUG] [Thread-189291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:37:30.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:37:30.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:37:30.834 [DEBUG] [Thread-189291] [transport.py] [_log()] userauth is OK
2025-11-24T11:37:30.834 [DEBUG] [Thread-189291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:37:30.834 [DEBUG] [Thread-189291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:37:30.834 [DEBUG] [Thread-189291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:37:30.834 [DEBUG] [Thread-189291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:37:30.848 [INFO] [Thread-189291] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:37:30.848 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:37:30.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:37:31.697 [DEBUG] [Thread-189291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:37:31.697 [DEBUG] [Thread-189291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:37:31.745 [DEBUG] [Thread-189291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:37:31.745 [DEBUG] [Thread-189291] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:37:31.753 [DEBUG] [Thread-189291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:37:31.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:37:31.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-11-24T11:37:31.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:37:31.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:37:31.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:37:31.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:37:31.785 [DEBUG] [Thread-189291] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:37:37.976 [DEBUG] [Thread-189293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:37:40.777 [DEBUG] [Thread-189294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:37:53.036 [DEBUG] [Thread-189295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:38:01.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:38:01.807 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:38:01.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:38:02.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 37, 32), 21.03, 24.15, 0.0, 22.74, 19.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:38:02.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:37:32
2025-11-24T11:38:02.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:38:02.868 [DEBUG] [Thread-189296] [transport.py] [_log()] starting thread (client mode): 0xd0701510
2025-11-24T11:38:02.868 [DEBUG] [Thread-189296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:38:02.888 [DEBUG] [Thread-189296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:38:02.888 [INFO] [Thread-189296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] client lang: <none>
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] server lang: <none>
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] kex follows: False
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] Compression: none
2025-11-24T11:38:02.892 [DEBUG] [Thread-189296] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:38:02.909 [DEBUG] [Thread-189296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:38:02.909 [DEBUG] [Thread-189296] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:38:02.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:38:02.910 [DEBUG] [Thread-189296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:38:02.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:38:02.914 [DEBUG] [Thread-189296] [transport.py] [_log()] userauth is OK
2025-11-24T11:38:02.914 [DEBUG] [Thread-189296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:38:02.915 [DEBUG] [Thread-189296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:38:02.915 [DEBUG] [Thread-189296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:38:02.915 [DEBUG] [Thread-189296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:38:02.933 [INFO] [Thread-189296] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:38:02.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:38:03.587 [DEBUG] [Thread-189296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:38:03.587 [DEBUG] [Thread-189296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:38:03.587 [DEBUG] [Thread-189296] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:38:03.628 [DEBUG] [Thread-189296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:38:03.628 [DEBUG] [Thread-189296] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:38:03.630 [DEBUG] [Thread-189296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:38:03.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:38:03.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:38:03.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:38:03.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:38:03.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:38:03.650 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:38:03.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:38:03.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:38:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:38:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.401091 -999.00  +19.60  13.65     28   +0.80 1 1 1 1 1   888    0 22.09 114.65 ----- 13.7 13.7 184.6 25.6 26.2 -25.8 24.5 -30.5 24.8 -25.2 25.7 -25.3
2025-11-24T11:38:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:38:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:38:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.401091
2025-11-24T11:38:03.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:38:03.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:38:03.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:38:03.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:38:03.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:38:03.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:37:32', tmtdew=21.03, humidity=24.15, cloud=0.0, wind=22.74, temperature=19.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:37:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:38:03.651 [DEBUG] [Thread-189296] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:38:03.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:38:03.737 [DEBUG] [Thread-189299] [transport.py] [_log()] starting thread (client mode): 0xd073ae30
2025-11-24T11:38:03.737 [DEBUG] [Thread-189299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:38:03.751 [DEBUG] [Thread-189299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:38:03.751 [INFO] [Thread-189299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:38:03.758 [DEBUG] [Thread-189299] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] client lang: <none>
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] server lang: <none>
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] kex follows: False
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] Compression: none
2025-11-24T11:38:03.759 [DEBUG] [Thread-189299] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:38:03.817 [DEBUG] [Thread-189299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:38:03.817 [DEBUG] [Thread-189299] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:38:03.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:38:03.817 [DEBUG] [Thread-189299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:38:03.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:38:03.874 [DEBUG] [Thread-189299] [transport.py] [_log()] userauth is OK
2025-11-24T11:38:03.874 [DEBUG] [Thread-189299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:38:03.874 [DEBUG] [Thread-189299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:38:03.874 [DEBUG] [Thread-189299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:38:03.874 [DEBUG] [Thread-189299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:38:03.889 [INFO] [Thread-189299] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:38:03.889 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:38:03.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:38:04.758 [DEBUG] [Thread-189299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:38:04.758 [DEBUG] [Thread-189299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:38:04.805 [DEBUG] [Thread-189299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:38:04.806 [DEBUG] [Thread-189299] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:38:04.815 [DEBUG] [Thread-189299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:38:04.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:38:04.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-11-24T11:38:04.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-11-24T11:38:04.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:38:04.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:38:04.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:38:04.860 [DEBUG] [Thread-189299] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:38:08.074 [DEBUG] [Thread-189301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:38:23.122 [DEBUG] [Thread-189302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:38:34.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:38:34.883 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:38:34.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-11-24T11:38:35.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 38, 5), 21.33, 23.68, 0.0, 17.34, 19.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:38:35.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:38:05
2025-11-24T11:38:35.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:38:35.943 [DEBUG] [Thread-189303] [transport.py] [_log()] starting thread (client mode): 0xd0702b90
2025-11-24T11:38:35.943 [DEBUG] [Thread-189303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:38:35.963 [DEBUG] [Thread-189303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:38:35.963 [INFO] [Thread-189303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] client lang: <none>
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] server lang: <none>
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] kex follows: False
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] Compression: none
2025-11-24T11:38:35.967 [DEBUG] [Thread-189303] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:38:35.985 [DEBUG] [Thread-189303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:38:35.986 [DEBUG] [Thread-189303] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:38:35.987 [DEBUG] [Thread-189303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:38:35.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:38:35.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:38:35.989 [DEBUG] [Thread-189303] [transport.py] [_log()] userauth is OK
2025-11-24T11:38:35.989 [DEBUG] [Thread-189303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:38:35.989 [DEBUG] [Thread-189303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:38:35.989 [DEBUG] [Thread-189303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:38:35.989 [DEBUG] [Thread-189303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:38:36.022 [INFO] [Thread-189303] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:38:36.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:38:36.652 [DEBUG] [Thread-189303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:38:36.652 [DEBUG] [Thread-189303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:38:36.652 [DEBUG] [Thread-189303] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:38:36.693 [DEBUG] [Thread-189303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:38:36.693 [DEBUG] [Thread-189303] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:38:36.695 [DEBUG] [Thread-189303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:38:36.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:38:36.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:38:36.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:38:36.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:38:36.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:38:36.714 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:38:36.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:38:36.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:38:36.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:38:36.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.401438 -999.00  +19.70  21.64     28   +1.00 1 1 1 1 1   888    0 21.54 101.31 ----- 21.6 21.6 178.8 23.7 26.1 -25.1 24.9 -28.8 24.9 -23.2 25.9 -24.7
2025-11-24T11:38:36.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:38:36.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:38:36.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.401438
2025-11-24T11:38:36.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:38:36.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:38:36.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:38:36.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:38:36.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:38:36.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:38:05', tmtdew=21.33, humidity=23.68, cloud=0.0, wind=17.34, temperature=19.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:38:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:38:36.715 [DEBUG] [Thread-189303] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:38:36.787 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:38:36.799 [DEBUG] [Thread-189306] [transport.py] [_log()] starting thread (client mode): 0xd31cf0d0
2025-11-24T11:38:36.799 [DEBUG] [Thread-189306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:38:36.814 [DEBUG] [Thread-189306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:38:36.814 [INFO] [Thread-189306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] client lang: <none>
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] server lang: <none>
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] kex follows: False
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] Compression: none
2025-11-24T11:38:36.822 [DEBUG] [Thread-189306] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:38:36.877 [DEBUG] [Thread-189306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:38:36.877 [DEBUG] [Thread-189306] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:38:36.877 [DEBUG] [Thread-189306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:38:36.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:38:36.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:38:36.934 [DEBUG] [Thread-189306] [transport.py] [_log()] userauth is OK
2025-11-24T11:38:36.934 [DEBUG] [Thread-189306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:38:36.934 [DEBUG] [Thread-189306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:38:36.934 [DEBUG] [Thread-189306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:38:36.934 [DEBUG] [Thread-189306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:38:36.948 [INFO] [Thread-189306] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:38:36.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:38:36.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:38:37.782 [DEBUG] [Thread-189306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:38:37.782 [DEBUG] [Thread-189306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:38:37.830 [DEBUG] [Thread-189306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:38:37.830 [DEBUG] [Thread-189306] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:38:37.838 [DEBUG] [Thread-189306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:38:37.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:38:37.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-11-24T11:38:37.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-11-24T11:38:37.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:38:37.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:38:37.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:38:37.873 [DEBUG] [Thread-189306] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:38:38.150 [DEBUG] [Thread-189308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:38:41.009 [DEBUG] [Thread-189309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:38:53.190 [DEBUG] [Thread-189310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:39:07.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:39:07.892 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:39:07.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-11-24T11:39:08.220 [DEBUG] [Thread-189311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:39:08.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 38, 37), 21.61, 22.98, 0.0, 24.51, 19.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:39:08.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:38:37
2025-11-24T11:39:08.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:39:08.892 [DEBUG] [Thread-189312] [transport.py] [_log()] starting thread (client mode): 0xd31b01f0
2025-11-24T11:39:08.892 [DEBUG] [Thread-189312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:39:08.913 [DEBUG] [Thread-189312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:39:08.913 [INFO] [Thread-189312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:39:08.915 [DEBUG] [Thread-189312] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:39:08.915 [DEBUG] [Thread-189312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:39:08.915 [DEBUG] [Thread-189312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:39:08.915 [DEBUG] [Thread-189312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:39:08.915 [DEBUG] [Thread-189312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:39:08.915 [DEBUG] [Thread-189312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:39:08.915 [DEBUG] [Thread-189312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:39:08.915 [DEBUG] [Thread-189312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:39:08.915 [DEBUG] [Thread-189312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:39:08.916 [DEBUG] [Thread-189312] [transport.py] [_log()] client lang: <none>
2025-11-24T11:39:08.916 [DEBUG] [Thread-189312] [transport.py] [_log()] server lang: <none>
2025-11-24T11:39:08.916 [DEBUG] [Thread-189312] [transport.py] [_log()] kex follows: False
2025-11-24T11:39:08.916 [DEBUG] [Thread-189312] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:39:08.916 [DEBUG] [Thread-189312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:39:08.916 [DEBUG] [Thread-189312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:39:08.916 [DEBUG] [Thread-189312] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:39:08.916 [DEBUG] [Thread-189312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:39:08.916 [DEBUG] [Thread-189312] [transport.py] [_log()] Compression: none
2025-11-24T11:39:08.916 [DEBUG] [Thread-189312] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:39:08.925 [DEBUG] [Thread-189312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:39:08.925 [DEBUG] [Thread-189312] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:39:08.926 [DEBUG] [Thread-189312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:39:08.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:39:08.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:39:08.927 [DEBUG] [Thread-189312] [transport.py] [_log()] userauth is OK
2025-11-24T11:39:08.928 [DEBUG] [Thread-189312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:39:08.928 [DEBUG] [Thread-189312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:39:08.928 [DEBUG] [Thread-189312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:39:08.928 [DEBUG] [Thread-189312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:39:08.951 [INFO] [Thread-189312] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:39:08.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:39:09.520 [DEBUG] [Thread-189312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:39:09.520 [DEBUG] [Thread-189312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:39:09.520 [DEBUG] [Thread-189312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:39:09.561 [DEBUG] [Thread-189312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:39:09.561 [DEBUG] [Thread-189312] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:39:09.564 [DEBUG] [Thread-189312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:39:09.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:39:09.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:39:09.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:39:09.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:39:09.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:39:09.589 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:39:09.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.401785 -999.00  +19.80  25.23     27   +0.70 1 1 1 1 1   888    0 21.59 100.31 ----- 25.2 25.2 161.2 31.8 26.2 -24.9 25.1 -25.2 25.0 -23.5 25.9 -26.5
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.401785
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:39:09.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:38:37', tmtdew=21.61, humidity=22.98, cloud=0.0, wind=24.51, temperature=19.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:38:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:39:09.591 [DEBUG] [Thread-189312] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:39:09.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:39:09.675 [DEBUG] [Thread-189315] [transport.py] [_log()] starting thread (client mode): 0xd3192aa0
2025-11-24T11:39:09.675 [DEBUG] [Thread-189315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:39:09.693 [DEBUG] [Thread-189315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:39:09.693 [INFO] [Thread-189315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] client lang: <none>
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] server lang: <none>
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] kex follows: False
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:39:09.700 [DEBUG] [Thread-189315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:39:09.701 [DEBUG] [Thread-189315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:39:09.701 [DEBUG] [Thread-189315] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:39:09.701 [DEBUG] [Thread-189315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:39:09.701 [DEBUG] [Thread-189315] [transport.py] [_log()] Compression: none
2025-11-24T11:39:09.701 [DEBUG] [Thread-189315] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:39:09.757 [DEBUG] [Thread-189315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:39:09.757 [DEBUG] [Thread-189315] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:39:09.757 [DEBUG] [Thread-189315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:39:09.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:39:09.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:39:09.814 [DEBUG] [Thread-189315] [transport.py] [_log()] userauth is OK
2025-11-24T11:39:09.814 [DEBUG] [Thread-189315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:39:09.814 [DEBUG] [Thread-189315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:39:09.814 [DEBUG] [Thread-189315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:39:09.814 [DEBUG] [Thread-189315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:39:09.829 [INFO] [Thread-189315] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:39:09.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:39:09.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:39:10.685 [DEBUG] [Thread-189315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:39:10.685 [DEBUG] [Thread-189315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:39:10.733 [DEBUG] [Thread-189315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:39:10.733 [DEBUG] [Thread-189315] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:39:10.744 [DEBUG] [Thread-189315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:39:10.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:39:10.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:39:10.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-11-24T11:39:10.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:39:10.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:39:10.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:39:10.790 [DEBUG] [Thread-189315] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:39:23.250 [DEBUG] [Thread-189317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:39:38.301 [DEBUG] [Thread-189318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:39:40.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:39:40.809 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:39:40.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-11-24T11:39:41.041 [DEBUG] [Thread-189319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:39:41.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 39, 9), 21.57, 23.05, 0.0, 25.6, 19.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:39:41.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:39:09
2025-11-24T11:39:41.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:39:41.971 [DEBUG] [Thread-189320] [transport.py] [_log()] starting thread (client mode): 0xd3190790
2025-11-24T11:39:41.971 [DEBUG] [Thread-189320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:39:41.992 [DEBUG] [Thread-189320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:39:41.992 [INFO] [Thread-189320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] client lang: <none>
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] server lang: <none>
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] kex follows: False
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] Compression: none
2025-11-24T11:39:41.995 [DEBUG] [Thread-189320] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:39:42.011 [DEBUG] [Thread-189320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:39:42.011 [DEBUG] [Thread-189320] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:39:42.011 [DEBUG] [Thread-189320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:39:42.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:39:42.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:39:42.012 [DEBUG] [Thread-189320] [transport.py] [_log()] userauth is OK
2025-11-24T11:39:42.012 [DEBUG] [Thread-189320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:39:42.012 [DEBUG] [Thread-189320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:39:42.012 [DEBUG] [Thread-189320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:39:42.012 [DEBUG] [Thread-189320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:39:42.021 [INFO] [Thread-189320] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:39:42.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:39:42.659 [DEBUG] [Thread-189320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:39:42.659 [DEBUG] [Thread-189320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:39:42.659 [DEBUG] [Thread-189320] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:39:42.701 [DEBUG] [Thread-189320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:39:42.701 [DEBUG] [Thread-189320] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:39:42.703 [DEBUG] [Thread-189320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:39:42.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:39:42.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:39:42.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:39:42.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:39:42.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:39:42.720 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:39:42.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:39:42.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:39:42.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:39:42.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.402132 -999.00  +19.70  21.69     28   +0.70 1 1 1 1 1   888    0 21.09 92.10 ----- 21.7 21.7 144.6 26.4 26.1 -25.9 25.1 -24.4 24.9 -23.9 26.0 -26.7
2025-11-24T11:39:42.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:39:42.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:39:42.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.402132
2025-11-24T11:39:42.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:39:42.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:39:42.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:39:42.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:39:42.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:39:42.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:39:09', tmtdew=21.57, humidity=23.05, cloud=0.0, wind=25.6, temperature=19.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:39:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:39:42.721 [DEBUG] [Thread-189320] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:39:42.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:39:42.807 [DEBUG] [Thread-189323] [transport.py] [_log()] starting thread (client mode): 0xd317c280
2025-11-24T11:39:42.807 [DEBUG] [Thread-189323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:39:42.826 [DEBUG] [Thread-189323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:39:42.826 [INFO] [Thread-189323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:39:42.834 [DEBUG] [Thread-189323] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:39:42.834 [DEBUG] [Thread-189323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:39:42.834 [DEBUG] [Thread-189323] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:39:42.834 [DEBUG] [Thread-189323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:39:42.834 [DEBUG] [Thread-189323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:39:42.834 [DEBUG] [Thread-189323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:39:42.834 [DEBUG] [Thread-189323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:39:42.834 [DEBUG] [Thread-189323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] client lang: <none>
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] server lang: <none>
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] kex follows: False
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] Compression: none
2025-11-24T11:39:42.835 [DEBUG] [Thread-189323] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:39:42.893 [DEBUG] [Thread-189323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:39:42.893 [DEBUG] [Thread-189323] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:39:42.893 [DEBUG] [Thread-189323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:39:42.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:39:42.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:39:42.950 [DEBUG] [Thread-189323] [transport.py] [_log()] userauth is OK
2025-11-24T11:39:42.950 [DEBUG] [Thread-189323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:39:42.951 [DEBUG] [Thread-189323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:39:42.951 [DEBUG] [Thread-189323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:39:42.951 [DEBUG] [Thread-189323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:39:42.965 [INFO] [Thread-189323] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:39:42.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:39:42.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:39:43.876 [DEBUG] [Thread-189323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:39:43.876 [DEBUG] [Thread-189323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:39:43.925 [DEBUG] [Thread-189323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:39:43.925 [DEBUG] [Thread-189323] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:39:43.933 [DEBUG] [Thread-189323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:39:43.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:39:43.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-11-24T11:39:43.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-11-24T11:39:43.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:39:43.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:39:43.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:39:43.965 [DEBUG] [Thread-189323] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:39:53.333 [DEBUG] [Thread-189325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:40:08.386 [DEBUG] [Thread-189326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:40:13.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:40:13.988 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:40:13.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:40:14.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 39, 42), 22.15, 22.17, 0.0, 29.87, 19.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:40:14.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:39:42
2025-11-24T11:40:15.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:40:15.152 [DEBUG] [Thread-189327] [transport.py] [_log()] starting thread (client mode): 0xd317d7b0
2025-11-24T11:40:15.152 [DEBUG] [Thread-189327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:40:15.171 [DEBUG] [Thread-189327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:40:15.171 [INFO] [Thread-189327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] client lang: <none>
2025-11-24T11:40:15.174 [DEBUG] [Thread-189327] [transport.py] [_log()] server lang: <none>
2025-11-24T11:40:15.175 [DEBUG] [Thread-189327] [transport.py] [_log()] kex follows: False
2025-11-24T11:40:15.175 [DEBUG] [Thread-189327] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:40:15.175 [DEBUG] [Thread-189327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:40:15.175 [DEBUG] [Thread-189327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:40:15.175 [DEBUG] [Thread-189327] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:40:15.175 [DEBUG] [Thread-189327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:40:15.175 [DEBUG] [Thread-189327] [transport.py] [_log()] Compression: none
2025-11-24T11:40:15.175 [DEBUG] [Thread-189327] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:40:15.182 [DEBUG] [Thread-189327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:40:15.182 [DEBUG] [Thread-189327] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:40:15.182 [DEBUG] [Thread-189327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:40:15.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:40:15.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:40:15.182 [DEBUG] [Thread-189327] [transport.py] [_log()] userauth is OK
2025-11-24T11:40:15.182 [DEBUG] [Thread-189327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:40:15.182 [DEBUG] [Thread-189327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:40:15.183 [DEBUG] [Thread-189327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:40:15.183 [DEBUG] [Thread-189327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:40:15.209 [INFO] [Thread-189327] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:40:15.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:40:15.880 [DEBUG] [Thread-189327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:40:15.880 [DEBUG] [Thread-189327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:40:15.880 [DEBUG] [Thread-189327] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:40:15.921 [DEBUG] [Thread-189327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:40:15.921 [DEBUG] [Thread-189327] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:40:15.923 [DEBUG] [Thread-189327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:40:15.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:40:15.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:40:15.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:40:15.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:40:15.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:40:15.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:40:15.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.402479 -999.00  +19.70  22.39     27   +0.60 1 1 1 1 1   888    0 21.34 92.13 ----- 22.4 22.4 151.0 28.6 26.2 -26.2 25.2 -24.8 25.0 -24.4 25.8 -25.7
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.402479
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:40:15.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:40:15.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:39:42', tmtdew=22.15, humidity=22.17, cloud=0.0, wind=29.87, temperature=19.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:39:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:40:15.942 [DEBUG] [Thread-189327] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:40:16.018 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:40:16.028 [DEBUG] [Thread-189330] [transport.py] [_log()] starting thread (client mode): 0xc9b822c0
2025-11-24T11:40:16.029 [DEBUG] [Thread-189330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:40:16.044 [DEBUG] [Thread-189330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:40:16.044 [INFO] [Thread-189330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:40:16.051 [DEBUG] [Thread-189330] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] client lang: <none>
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] server lang: <none>
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] kex follows: False
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] Compression: none
2025-11-24T11:40:16.052 [DEBUG] [Thread-189330] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:40:16.109 [DEBUG] [Thread-189330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:40:16.109 [DEBUG] [Thread-189330] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:40:16.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:40:16.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:40:16.110 [DEBUG] [Thread-189330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:40:16.166 [DEBUG] [Thread-189330] [transport.py] [_log()] userauth is OK
2025-11-24T11:40:16.166 [DEBUG] [Thread-189330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:40:16.166 [DEBUG] [Thread-189330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:40:16.166 [DEBUG] [Thread-189330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:40:16.166 [DEBUG] [Thread-189330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:40:16.182 [INFO] [Thread-189330] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:40:16.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:40:16.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:40:17.024 [DEBUG] [Thread-189330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:40:17.024 [DEBUG] [Thread-189330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:40:17.072 [DEBUG] [Thread-189330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:40:17.072 [DEBUG] [Thread-189330] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:40:17.080 [DEBUG] [Thread-189330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:40:17.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:40:17.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-11-24T11:40:17.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-11-24T11:40:17.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:40:17.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:40:17.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:40:17.112 [DEBUG] [Thread-189330] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:40:23.413 [DEBUG] [Thread-189332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:40:38.464 [DEBUG] [Thread-189333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:40:41.310 [DEBUG] [Thread-189334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:40:47.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:40:47.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:40:47.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:40:48.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 40, 14), 22.07, 22.32, 0.0, 26.64, 19.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:40:48.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:40:14
2025-11-24T11:40:48.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:40:48.331 [DEBUG] [Thread-189335] [transport.py] [_log()] starting thread (client mode): 0xd317ead0
2025-11-24T11:40:48.331 [DEBUG] [Thread-189335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:40:48.351 [DEBUG] [Thread-189335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:40:48.351 [INFO] [Thread-189335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] client lang: <none>
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] server lang: <none>
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] kex follows: False
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:40:48.355 [DEBUG] [Thread-189335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:40:48.356 [DEBUG] [Thread-189335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:40:48.356 [DEBUG] [Thread-189335] [transport.py] [_log()] Compression: none
2025-11-24T11:40:48.356 [DEBUG] [Thread-189335] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:40:48.371 [DEBUG] [Thread-189335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:40:48.371 [DEBUG] [Thread-189335] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:40:48.372 [DEBUG] [Thread-189335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:40:48.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:40:48.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:40:48.416 [DEBUG] [Thread-189335] [transport.py] [_log()] userauth is OK
2025-11-24T11:40:48.416 [DEBUG] [Thread-189335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:40:48.416 [DEBUG] [Thread-189335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:40:48.416 [DEBUG] [Thread-189335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:40:48.416 [DEBUG] [Thread-189335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:40:48.443 [INFO] [Thread-189335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:40:48.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:40:49.081 [DEBUG] [Thread-189335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:40:49.081 [DEBUG] [Thread-189335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:40:49.081 [DEBUG] [Thread-189335] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:40:49.122 [DEBUG] [Thread-189335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:40:49.122 [DEBUG] [Thread-189335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:40:49.124 [DEBUG] [Thread-189335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:40:49.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:40:49.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:40:49.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:40:49.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:40:49.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:40:49.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:40:49.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:40:49.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:40:49.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:40:49.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.403174 -999.00  +19.50  20.76     27   +0.30 1 1 1 1 1   888    0 21.09 87.03 ----- 20.8 20.8 161.0 29.1 25.9 -26.7 24.9 -25.5 24.8 -24.3 25.8 -25.5
2025-11-24T11:40:49.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:40:49.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:40:49.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.403174
2025-11-24T11:40:49.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:40:49.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:40:49.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:40:49.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:40:49.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:40:49.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:40:14', tmtdew=22.07, humidity=22.32, cloud=0.0, wind=26.64, temperature=19.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:40:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:40:49.146 [DEBUG] [Thread-189335] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:40:49.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:40:49.232 [DEBUG] [Thread-189338] [transport.py] [_log()] starting thread (client mode): 0xd31b10c0
2025-11-24T11:40:49.232 [DEBUG] [Thread-189338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:40:49.246 [DEBUG] [Thread-189338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:40:49.247 [INFO] [Thread-189338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] client lang: <none>
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] server lang: <none>
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] kex follows: False
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] Compression: none
2025-11-24T11:40:49.254 [DEBUG] [Thread-189338] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:40:49.313 [DEBUG] [Thread-189338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:40:49.313 [DEBUG] [Thread-189338] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:40:49.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:40:49.313 [DEBUG] [Thread-189338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:40:49.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:40:49.372 [DEBUG] [Thread-189338] [transport.py] [_log()] userauth is OK
2025-11-24T11:40:49.372 [DEBUG] [Thread-189338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:40:49.372 [DEBUG] [Thread-189338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:40:49.372 [DEBUG] [Thread-189338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:40:49.372 [DEBUG] [Thread-189338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:40:49.386 [INFO] [Thread-189338] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:40:49.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:40:49.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:40:50.257 [DEBUG] [Thread-189338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:40:50.257 [DEBUG] [Thread-189338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:40:50.306 [DEBUG] [Thread-189338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:40:50.306 [DEBUG] [Thread-189338] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:40:50.315 [DEBUG] [Thread-189338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:40:50.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:40:50.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-11-24T11:40:50.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-11-24T11:40:50.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:40:50.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:40:50.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:40:50.355 [DEBUG] [Thread-189338] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:40:53.502 [DEBUG] [Thread-189340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:41:08.561 [DEBUG] [Thread-189341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:41:20.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:41:20.374 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:41:20.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-11-24T11:41:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 40, 47), 22.29, 22.08, 0.0, 27.89, 19.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:41:21.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:40:47
2025-11-24T11:41:21.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:41:21.504 [DEBUG] [Thread-189342] [transport.py] [_log()] starting thread (client mode): 0xd0710550
2025-11-24T11:41:21.504 [DEBUG] [Thread-189342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:41:21.525 [DEBUG] [Thread-189342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:41:21.525 [INFO] [Thread-189342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:41:21.528 [DEBUG] [Thread-189342] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] client lang: <none>
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] server lang: <none>
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] kex follows: False
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] Compression: none
2025-11-24T11:41:21.529 [DEBUG] [Thread-189342] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:41:21.545 [DEBUG] [Thread-189342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:41:21.546 [DEBUG] [Thread-189342] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:41:21.546 [DEBUG] [Thread-189342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:41:21.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:41:21.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:41:21.547 [DEBUG] [Thread-189342] [transport.py] [_log()] userauth is OK
2025-11-24T11:41:21.547 [DEBUG] [Thread-189342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:41:21.547 [DEBUG] [Thread-189342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:41:21.547 [DEBUG] [Thread-189342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:41:21.547 [DEBUG] [Thread-189342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:41:21.558 [INFO] [Thread-189342] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:41:21.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:41:22.215 [DEBUG] [Thread-189342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:41:22.216 [DEBUG] [Thread-189342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:41:22.216 [DEBUG] [Thread-189342] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:41:22.257 [DEBUG] [Thread-189342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:41:22.257 [DEBUG] [Thread-189342] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:41:22.260 [DEBUG] [Thread-189342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:41:22.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:41:22.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:41:22.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:41:22.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:41:22.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:41:22.286 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:41:22.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:41:22.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:41:22.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:41:22.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.403521 -999.00  +19.70  21.69     27   +0.50 1 1 1 1 1   888    0 21.07 82.79 ----- 21.7 21.7 169.8 26.4 26.0 -25.9 24.9 -26.8 24.8 -24.1 25.8 -25.8
2025-11-24T11:41:22.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:41:22.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:41:22.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.403521
2025-11-24T11:41:22.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:41:22.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:41:22.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:41:22.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:41:22.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:41:22.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:40:47', tmtdew=22.29, humidity=22.08, cloud=0.0, wind=27.89, temperature=19.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:41:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:41:22.289 [DEBUG] [Thread-189342] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:41:22.370 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:41:22.383 [DEBUG] [Thread-189345] [transport.py] [_log()] starting thread (client mode): 0xd0711a50
2025-11-24T11:41:22.383 [DEBUG] [Thread-189345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:41:22.397 [DEBUG] [Thread-189345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:41:22.398 [INFO] [Thread-189345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:41:22.405 [DEBUG] [Thread-189345] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:41:22.405 [DEBUG] [Thread-189345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:41:22.405 [DEBUG] [Thread-189345] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:41:22.405 [DEBUG] [Thread-189345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:41:22.405 [DEBUG] [Thread-189345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:41:22.405 [DEBUG] [Thread-189345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:41:22.405 [DEBUG] [Thread-189345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:41:22.405 [DEBUG] [Thread-189345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:41:22.405 [DEBUG] [Thread-189345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:41:22.405 [DEBUG] [Thread-189345] [transport.py] [_log()] client lang: <none>
2025-11-24T11:41:22.406 [DEBUG] [Thread-189345] [transport.py] [_log()] server lang: <none>
2025-11-24T11:41:22.406 [DEBUG] [Thread-189345] [transport.py] [_log()] kex follows: False
2025-11-24T11:41:22.406 [DEBUG] [Thread-189345] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:41:22.406 [DEBUG] [Thread-189345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:41:22.406 [DEBUG] [Thread-189345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:41:22.406 [DEBUG] [Thread-189345] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:41:22.406 [DEBUG] [Thread-189345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:41:22.406 [DEBUG] [Thread-189345] [transport.py] [_log()] Compression: none
2025-11-24T11:41:22.406 [DEBUG] [Thread-189345] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:41:22.463 [DEBUG] [Thread-189345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:41:22.463 [DEBUG] [Thread-189345] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:41:22.464 [DEBUG] [Thread-189345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:41:22.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:41:22.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:41:22.519 [DEBUG] [Thread-189345] [transport.py] [_log()] userauth is OK
2025-11-24T11:41:22.519 [DEBUG] [Thread-189345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:41:22.519 [DEBUG] [Thread-189345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:41:22.519 [DEBUG] [Thread-189345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:41:22.519 [DEBUG] [Thread-189345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:41:22.538 [INFO] [Thread-189345] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:41:22.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:41:22.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:41:23.389 [DEBUG] [Thread-189345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:41:23.389 [DEBUG] [Thread-189345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:41:23.437 [DEBUG] [Thread-189345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:41:23.438 [DEBUG] [Thread-189345] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:41:23.448 [DEBUG] [Thread-189345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:41:23.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:41:23.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-11-24T11:41:23.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:41:23.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:41:23.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:41:23.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:41:23.485 [DEBUG] [Thread-189345] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:41:23.607 [DEBUG] [Thread-189347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:41:38.662 [DEBUG] [Thread-189348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:41:41.373 [DEBUG] [Thread-189349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:41:53.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:41:53.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:41:53.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-11-24T11:41:53.691 [DEBUG] [Thread-189350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:41:54.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 41, 19), 22.48, 21.8, 0.0, 25.65, 19.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:41:54.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:41:19
2025-11-24T11:41:54.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:41:54.611 [DEBUG] [Thread-189351] [transport.py] [_log()] starting thread (client mode): 0xd0711ba0
2025-11-24T11:41:54.612 [DEBUG] [Thread-189351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:41:54.631 [DEBUG] [Thread-189351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:41:54.631 [INFO] [Thread-189351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:41:54.634 [DEBUG] [Thread-189351] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] client lang: <none>
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] server lang: <none>
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] kex follows: False
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] Compression: none
2025-11-24T11:41:54.635 [DEBUG] [Thread-189351] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:41:54.654 [DEBUG] [Thread-189351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:41:54.654 [DEBUG] [Thread-189351] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:41:54.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:41:54.655 [DEBUG] [Thread-189351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:41:54.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:41:54.697 [DEBUG] [Thread-189351] [transport.py] [_log()] userauth is OK
2025-11-24T11:41:54.697 [DEBUG] [Thread-189351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:41:54.697 [DEBUG] [Thread-189351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:41:54.697 [DEBUG] [Thread-189351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:41:54.697 [DEBUG] [Thread-189351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:41:54.735 [INFO] [Thread-189351] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:41:54.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:41:55.367 [DEBUG] [Thread-189351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:41:55.368 [DEBUG] [Thread-189351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:41:55.368 [DEBUG] [Thread-189351] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:41:55.409 [DEBUG] [Thread-189351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:41:55.409 [DEBUG] [Thread-189351] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:41:55.412 [DEBUG] [Thread-189351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:41:55.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:41:55.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:41:55.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:41:55.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:41:55.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:41:55.439 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:41:55.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:41:55.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:41:55.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:41:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.403868 -999.00  +19.80  15.56     26   +0.20 1 1 1 1 1   888    0 21.27 81.75 ----- 15.6 15.6 168.0 27.5 26.1 -26.0 24.8 -28.5 24.9 -24.3 25.9 -24.9
2025-11-24T11:41:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:41:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:41:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.403868
2025-11-24T11:41:55.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:41:55.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:41:55.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:41:55.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:41:55.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:41:55.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:41:19', tmtdew=22.48, humidity=21.8, cloud=0.0, wind=25.65, temperature=19.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:41:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:41:55.443 [DEBUG] [Thread-189351] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:41:55.527 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:41:55.539 [DEBUG] [Thread-189354] [transport.py] [_log()] starting thread (client mode): 0xc9b80430
2025-11-24T11:41:55.539 [DEBUG] [Thread-189354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:41:55.558 [DEBUG] [Thread-189354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:41:55.558 [INFO] [Thread-189354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:41:55.566 [DEBUG] [Thread-189354] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:41:55.566 [DEBUG] [Thread-189354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:41:55.566 [DEBUG] [Thread-189354] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:41:55.566 [DEBUG] [Thread-189354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:41:55.566 [DEBUG] [Thread-189354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:41:55.566 [DEBUG] [Thread-189354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:41:55.566 [DEBUG] [Thread-189354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:41:55.566 [DEBUG] [Thread-189354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:41:55.566 [DEBUG] [Thread-189354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:41:55.566 [DEBUG] [Thread-189354] [transport.py] [_log()] client lang: <none>
2025-11-24T11:41:55.567 [DEBUG] [Thread-189354] [transport.py] [_log()] server lang: <none>
2025-11-24T11:41:55.567 [DEBUG] [Thread-189354] [transport.py] [_log()] kex follows: False
2025-11-24T11:41:55.567 [DEBUG] [Thread-189354] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:41:55.567 [DEBUG] [Thread-189354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:41:55.567 [DEBUG] [Thread-189354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:41:55.567 [DEBUG] [Thread-189354] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:41:55.567 [DEBUG] [Thread-189354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:41:55.567 [DEBUG] [Thread-189354] [transport.py] [_log()] Compression: none
2025-11-24T11:41:55.567 [DEBUG] [Thread-189354] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:41:55.627 [DEBUG] [Thread-189354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:41:55.627 [DEBUG] [Thread-189354] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:41:55.628 [DEBUG] [Thread-189354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:41:55.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:41:55.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:41:55.683 [DEBUG] [Thread-189354] [transport.py] [_log()] userauth is OK
2025-11-24T11:41:55.683 [DEBUG] [Thread-189354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:41:55.683 [DEBUG] [Thread-189354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:41:55.683 [DEBUG] [Thread-189354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:41:55.683 [DEBUG] [Thread-189354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:41:55.707 [INFO] [Thread-189354] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:41:55.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:41:55.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:41:56.589 [DEBUG] [Thread-189354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:41:56.590 [DEBUG] [Thread-189354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:41:56.638 [DEBUG] [Thread-189354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:41:56.638 [DEBUG] [Thread-189354] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:41:56.646 [DEBUG] [Thread-189354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:41:56.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:41:56.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-11-24T11:41:56.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-11-24T11:41:56.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:41:56.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:41:56.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:41:56.677 [DEBUG] [Thread-189354] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:42:08.727 [DEBUG] [Thread-189356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:42:23.773 [DEBUG] [Thread-189357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:42:26.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:42:26.699 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:42:26.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-11-24T11:42:27.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 41, 51), 22.7, 21.2, 0.0, 24.35, 19.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:42:27.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:41:51
2025-11-24T11:42:27.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:42:27.768 [DEBUG] [Thread-189358] [transport.py] [_log()] starting thread (client mode): 0xd0712c20
2025-11-24T11:42:27.768 [DEBUG] [Thread-189358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:42:27.787 [DEBUG] [Thread-189358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:42:27.788 [INFO] [Thread-189358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] client lang: <none>
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] server lang: <none>
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] kex follows: False
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] Compression: none
2025-11-24T11:42:27.791 [DEBUG] [Thread-189358] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:42:27.808 [DEBUG] [Thread-189358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:42:27.808 [DEBUG] [Thread-189358] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:42:27.809 [DEBUG] [Thread-189358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:42:27.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:42:27.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:42:27.811 [DEBUG] [Thread-189358] [transport.py] [_log()] userauth is OK
2025-11-24T11:42:27.811 [DEBUG] [Thread-189358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:42:27.811 [DEBUG] [Thread-189358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:42:27.811 [DEBUG] [Thread-189358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:42:27.811 [DEBUG] [Thread-189358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:42:27.837 [INFO] [Thread-189358] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:42:27.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:42:28.494 [DEBUG] [Thread-189358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:42:28.503 [DEBUG] [Thread-189358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:42:28.503 [DEBUG] [Thread-189358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:42:28.535 [DEBUG] [Thread-189358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:42:28.535 [DEBUG] [Thread-189358] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:42:28.537 [DEBUG] [Thread-189358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:42:28.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:42:28.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:42:28.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:42:28.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:42:28.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:42:28.556 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:42:28.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:42:28.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:42:28.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:42:28.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.404215 -999.00  +20.00  22.63     26   +0.00 1 1 1 1 1   888    0 21.03 86.28 ----- 22.6 22.6 165.8 26.1 26.2 -25.0 25.1 -25.3 25.1 -22.8 26.0 -26.9
2025-11-24T11:42:28.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:42:28.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:42:28.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.404215
2025-11-24T11:42:28.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:42:28.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:42:28.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:42:28.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:42:28.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:42:28.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:41:51', tmtdew=22.7, humidity=21.2, cloud=0.0, wind=24.35, temperature=19.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:42:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:42:28.557 [DEBUG] [Thread-189358] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:42:28.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:42:28.641 [DEBUG] [Thread-189361] [transport.py] [_log()] starting thread (client mode): 0xd317cfd0
2025-11-24T11:42:28.641 [DEBUG] [Thread-189361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:42:28.656 [DEBUG] [Thread-189361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:42:28.656 [INFO] [Thread-189361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:42:28.663 [DEBUG] [Thread-189361] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:42:28.663 [DEBUG] [Thread-189361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:42:28.663 [DEBUG] [Thread-189361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:42:28.663 [DEBUG] [Thread-189361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:42:28.663 [DEBUG] [Thread-189361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:42:28.663 [DEBUG] [Thread-189361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:42:28.663 [DEBUG] [Thread-189361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:42:28.663 [DEBUG] [Thread-189361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] client lang: <none>
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] server lang: <none>
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] kex follows: False
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] Compression: none
2025-11-24T11:42:28.664 [DEBUG] [Thread-189361] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:42:28.730 [DEBUG] [Thread-189361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:42:28.730 [DEBUG] [Thread-189361] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:42:28.730 [DEBUG] [Thread-189361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:42:28.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:42:28.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:42:28.786 [DEBUG] [Thread-189361] [transport.py] [_log()] userauth is OK
2025-11-24T11:42:28.786 [DEBUG] [Thread-189361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:42:28.786 [DEBUG] [Thread-189361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:42:28.786 [DEBUG] [Thread-189361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:42:28.786 [DEBUG] [Thread-189361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:42:28.800 [INFO] [Thread-189361] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:42:28.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:42:28.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:42:29.682 [DEBUG] [Thread-189361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:42:29.682 [DEBUG] [Thread-189361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:42:29.732 [DEBUG] [Thread-189361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:42:29.733 [DEBUG] [Thread-189361] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:42:29.747 [DEBUG] [Thread-189361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:42:29.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:42: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-11-24T11:42: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-11-24T11:42:29.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:42:29.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:42:29.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:42:29.781 [DEBUG] [Thread-189361] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:42:38.815 [DEBUG] [Thread-189363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:42:41.416 [DEBUG] [Thread-189364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:42:53.862 [DEBUG] [Thread-189365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:42:59.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:42:59.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:42:59.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-11-24T11:43:00.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 42, 56), 22.53, 21.38, 0.0, 19.59, 19.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:43:00.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:42:56
2025-11-24T11:43:00.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:43:00.853 [DEBUG] [Thread-189366] [transport.py] [_log()] starting thread (client mode): 0xc9b83040
2025-11-24T11:43:00.854 [DEBUG] [Thread-189366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:43:00.874 [DEBUG] [Thread-189366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:43:00.874 [INFO] [Thread-189366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:43:00.877 [DEBUG] [Thread-189366] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:43:00.877 [DEBUG] [Thread-189366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:43:00.877 [DEBUG] [Thread-189366] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:43:00.877 [DEBUG] [Thread-189366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:43:00.877 [DEBUG] [Thread-189366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:43:00.877 [DEBUG] [Thread-189366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] client lang: <none>
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] server lang: <none>
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] kex follows: False
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] Compression: none
2025-11-24T11:43:00.878 [DEBUG] [Thread-189366] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:43:00.895 [DEBUG] [Thread-189366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:43:00.896 [DEBUG] [Thread-189366] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:43:00.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:43:00.897 [DEBUG] [Thread-189366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:43:00.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:43:00.899 [DEBUG] [Thread-189366] [transport.py] [_log()] userauth is OK
2025-11-24T11:43:00.899 [DEBUG] [Thread-189366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:43:00.899 [DEBUG] [Thread-189366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:43:00.899 [DEBUG] [Thread-189366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:43:00.900 [DEBUG] [Thread-189366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:43:00.924 [INFO] [Thread-189366] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:43:00.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:43:01.605 [DEBUG] [Thread-189366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:43:01.605 [DEBUG] [Thread-189366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:43:01.606 [DEBUG] [Thread-189366] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:43:01.646 [DEBUG] [Thread-189366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:43:01.647 [DEBUG] [Thread-189366] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:43:01.650 [DEBUG] [Thread-189366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:43:01.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:43:01.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:43:01.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:43:01.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:43:01.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:43:01.672 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:43:01.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:43:01.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:43:01.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:43:01.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.404563 -999.00  +19.60  15.79     26   -0.10 1 1 1 1 1   888    0 21.14 90.39 ----- 15.8 15.8 174.2 23.6 26.2 -26.4 24.9 -29.0 25.0 -23.8 26.0 -26.0
2025-11-24T11:43:01.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:43:01.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:43:01.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.404563
2025-11-24T11:43:01.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:43:01.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:43:01.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:43:01.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:43:01.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:43:01.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:42:56', tmtdew=22.53, humidity=21.38, cloud=0.0, wind=19.59, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:42:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:43:01.675 [DEBUG] [Thread-189366] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:43:01.759 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:43:01.774 [DEBUG] [Thread-189369] [transport.py] [_log()] starting thread (client mode): 0xd3153f40
2025-11-24T11:43:01.774 [DEBUG] [Thread-189369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:43:01.792 [DEBUG] [Thread-189369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:43:01.792 [INFO] [Thread-189369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:43:01.803 [DEBUG] [Thread-189369] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:43:01.803 [DEBUG] [Thread-189369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:43:01.803 [DEBUG] [Thread-189369] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:43:01.803 [DEBUG] [Thread-189369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:43:01.804 [DEBUG] [Thread-189369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:43:01.804 [DEBUG] [Thread-189369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:43:01.804 [DEBUG] [Thread-189369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:43:01.804 [DEBUG] [Thread-189369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:43:01.804 [DEBUG] [Thread-189369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:43:01.804 [DEBUG] [Thread-189369] [transport.py] [_log()] client lang: <none>
2025-11-24T11:43:01.804 [DEBUG] [Thread-189369] [transport.py] [_log()] server lang: <none>
2025-11-24T11:43:01.804 [DEBUG] [Thread-189369] [transport.py] [_log()] kex follows: False
2025-11-24T11:43:01.805 [DEBUG] [Thread-189369] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:43:01.805 [DEBUG] [Thread-189369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:43:01.805 [DEBUG] [Thread-189369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:43:01.805 [DEBUG] [Thread-189369] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:43:01.805 [DEBUG] [Thread-189369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:43:01.805 [DEBUG] [Thread-189369] [transport.py] [_log()] Compression: none
2025-11-24T11:43:01.805 [DEBUG] [Thread-189369] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:43:01.858 [DEBUG] [Thread-189369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:43:01.859 [DEBUG] [Thread-189369] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:43:01.860 [DEBUG] [Thread-189369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:43:01.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:43:01.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:43:01.914 [DEBUG] [Thread-189369] [transport.py] [_log()] userauth is OK
2025-11-24T11:43:01.915 [DEBUG] [Thread-189369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:43:01.915 [DEBUG] [Thread-189369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:43:01.915 [DEBUG] [Thread-189369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:43:01.915 [DEBUG] [Thread-189369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:43:01.933 [INFO] [Thread-189369] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:43:01.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:43:01.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:43:02.786 [DEBUG] [Thread-189369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:43:02.786 [DEBUG] [Thread-189369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:43:02.834 [DEBUG] [Thread-189369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:43:02.834 [DEBUG] [Thread-189369] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:43:02.842 [DEBUG] [Thread-189369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:43:02.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:43:02.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-11-24T11:43:02.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-11-24T11:43:02.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:43:02.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:43:02.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:43:02.874 [DEBUG] [Thread-189369] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:43:08.892 [DEBUG] [Thread-189371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:43:23.933 [DEBUG] [Thread-189372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:43:32.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:43:32.895 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:43:32.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-11-24T11:43:33.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 43, 29), 22.64, 21.24, 0.0, 19.87, 19.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:43:33.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:43:29
2025-11-24T11:43:33.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:43:33.941 [DEBUG] [Thread-189373] [transport.py] [_log()] starting thread (client mode): 0xd317d7e0
2025-11-24T11:43:33.941 [DEBUG] [Thread-189373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:43:33.958 [DEBUG] [Thread-189373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:43:33.959 [INFO] [Thread-189373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:43:33.960 [DEBUG] [Thread-189373] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:43:33.960 [DEBUG] [Thread-189373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:43:33.960 [DEBUG] [Thread-189373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:43:33.960 [DEBUG] [Thread-189373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] client lang: <none>
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] server lang: <none>
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] kex follows: False
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:43:33.961 [DEBUG] [Thread-189373] [transport.py] [_log()] Compression: none
2025-11-24T11:43:33.969 [DEBUG] [Thread-189373] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:43:33.978 [DEBUG] [Thread-189373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:43:33.978 [DEBUG] [Thread-189373] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:43:33.978 [DEBUG] [Thread-189373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:43:33.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:43:33.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:43:33.979 [DEBUG] [Thread-189373] [transport.py] [_log()] userauth is OK
2025-11-24T11:43:33.979 [DEBUG] [Thread-189373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:43:33.979 [DEBUG] [Thread-189373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:43:33.979 [DEBUG] [Thread-189373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:43:33.979 [DEBUG] [Thread-189373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:43:33.988 [INFO] [Thread-189373] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:43:33.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:43:34.630 [DEBUG] [Thread-189373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:43:34.631 [DEBUG] [Thread-189373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:43:34.631 [DEBUG] [Thread-189373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:43:34.671 [DEBUG] [Thread-189373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:43:34.671 [DEBUG] [Thread-189373] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:43:34.673 [DEBUG] [Thread-189373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:43:34.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:43:34.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:43:34.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:43:34.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:43:34.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:43:34.692 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:43:34.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:43:34.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:43:34.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:43:34.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.404910 -999.00  +19.70   6.36     27   +0.10 1 1 1 1 1   888    0 20.98 88.97 ----- 6.4 6.4 184.6 21.4 26.3 -26.1 25.1 -24.9 25.1 -23.8 26.1 -25.1
2025-11-24T11:43:34.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:43:34.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:43:34.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.404910
2025-11-24T11:43:34.701 [DEBUG] [Thread-189373] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:43:34.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:43:34.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:43:34.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:43:34.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:43:34.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:43:34.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:43:29', tmtdew=22.64, humidity=21.24, cloud=0.0, wind=19.87, temperature=19.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:43:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:43:34.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:43:34.788 [DEBUG] [Thread-189376] [transport.py] [_log()] starting thread (client mode): 0xd07100d0
2025-11-24T11:43:34.788 [DEBUG] [Thread-189376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:43:34.803 [DEBUG] [Thread-189376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:43:34.803 [INFO] [Thread-189376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] client lang: <none>
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] server lang: <none>
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] kex follows: False
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] Compression: none
2025-11-24T11:43:34.811 [DEBUG] [Thread-189376] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:43:34.869 [DEBUG] [Thread-189376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:43:34.869 [DEBUG] [Thread-189376] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:43:34.869 [DEBUG] [Thread-189376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:43:34.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:43:34.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:43:34.926 [DEBUG] [Thread-189376] [transport.py] [_log()] userauth is OK
2025-11-24T11:43:34.926 [DEBUG] [Thread-189376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:43:34.926 [DEBUG] [Thread-189376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:43:34.926 [DEBUG] [Thread-189376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:43:34.926 [DEBUG] [Thread-189376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:43:34.944 [INFO] [Thread-189376] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:43:34.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:43:34.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:43:35.811 [DEBUG] [Thread-189376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:43:35.811 [DEBUG] [Thread-189376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:43:35.858 [DEBUG] [Thread-189376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:43:35.858 [DEBUG] [Thread-189376] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:43:35.866 [DEBUG] [Thread-189376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:43:35.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:43:35.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-11-24T11:43:35.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-11-24T11:43:35.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:43:35.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:43:35.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:43:35.897 [DEBUG] [Thread-189376] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:43:38.967 [DEBUG] [Thread-189378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:43:41.737 [DEBUG] [Thread-189379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:43:54.018 [DEBUG] [Thread-189380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:44:05.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:44:05.920 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:44:05.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-11-24T11:44:06.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 44, 1), 22.69, 21.38, 0.0, 22.69, 19.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:44:06.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:44:01
2025-11-24T11:44:06.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:44:07.029 [DEBUG] [Thread-189381] [transport.py] [_log()] starting thread (client mode): 0xd3153f40
2025-11-24T11:44:07.029 [DEBUG] [Thread-189381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:44:07.049 [DEBUG] [Thread-189381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:44:07.049 [INFO] [Thread-189381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:44:07.052 [DEBUG] [Thread-189381] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:44:07.052 [DEBUG] [Thread-189381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:44:07.052 [DEBUG] [Thread-189381] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:44:07.052 [DEBUG] [Thread-189381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:44:07.052 [DEBUG] [Thread-189381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] client lang: <none>
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] server lang: <none>
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] kex follows: False
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] Compression: none
2025-11-24T11:44:07.053 [DEBUG] [Thread-189381] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:44:07.070 [DEBUG] [Thread-189381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:44:07.071 [DEBUG] [Thread-189381] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:44:07.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:44:07.072 [DEBUG] [Thread-189381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:44:07.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:44:07.073 [DEBUG] [Thread-189381] [transport.py] [_log()] userauth is OK
2025-11-24T11:44:07.074 [DEBUG] [Thread-189381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:44:07.074 [DEBUG] [Thread-189381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:44:07.074 [DEBUG] [Thread-189381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:44:07.074 [DEBUG] [Thread-189381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:44:07.092 [INFO] [Thread-189381] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:44:07.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:44:07.722 [DEBUG] [Thread-189381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:44:07.722 [DEBUG] [Thread-189381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:44:07.722 [DEBUG] [Thread-189381] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:44:07.764 [DEBUG] [Thread-189381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:44:07.764 [DEBUG] [Thread-189381] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:44:07.766 [DEBUG] [Thread-189381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:44:07.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:44:07.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:44:07.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:44:07.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:44:07.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:44:07.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:44:07.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.405257 -999.00  +20.10  18.22     26   +0.00 1 1 1 1 1   888    0 21.65 97.61 ----- 18.2 18.2 193.1 25.1 26.4 -25.6 25.1 -27.0 25.2 -23.4 26.2 -24.8
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.405257
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:44:07.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:44:01', tmtdew=22.69, humidity=21.38, cloud=0.0, wind=22.69, temperature=19.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:43:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:44:07.780 [DEBUG] [Thread-189381] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:44:07.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:44:07.865 [DEBUG] [Thread-189384] [transport.py] [_log()] starting thread (client mode): 0xc9b837f0
2025-11-24T11:44:07.865 [DEBUG] [Thread-189384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:44:07.880 [DEBUG] [Thread-189384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:44:07.880 [INFO] [Thread-189384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:44:07.887 [DEBUG] [Thread-189384] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] client lang: <none>
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] server lang: <none>
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] kex follows: False
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] Compression: none
2025-11-24T11:44:07.888 [DEBUG] [Thread-189384] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:44:07.945 [DEBUG] [Thread-189384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:44:07.945 [DEBUG] [Thread-189384] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:44:07.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:44:07.945 [DEBUG] [Thread-189384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:44:07.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:44:08.002 [DEBUG] [Thread-189384] [transport.py] [_log()] userauth is OK
2025-11-24T11:44:08.002 [DEBUG] [Thread-189384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:44:08.002 [DEBUG] [Thread-189384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:44:08.002 [DEBUG] [Thread-189384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:44:08.002 [DEBUG] [Thread-189384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:44:08.020 [INFO] [Thread-189384] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:44:08.020 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:44:08.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:44:08.936 [DEBUG] [Thread-189384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:44:08.936 [DEBUG] [Thread-189384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:44:08.984 [DEBUG] [Thread-189384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:44:08.984 [DEBUG] [Thread-189384] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:44:08.992 [DEBUG] [Thread-189384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:44:09.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:44:09.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-11-24T11:44:09.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-11-24T11:44:09.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:44:09.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:44:09.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:44:09.023 [DEBUG] [Thread-189384] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:44:09.044 [DEBUG] [Thread-189386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:44:24.080 [DEBUG] [Thread-189387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:44:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:44:39.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:44:39.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-11-24T11:44:39.118 [DEBUG] [Thread-189388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:44:39.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 44, 33), 22.68, 21.47, 0.0, 27.38, 19.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:44:39.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:44:33
2025-11-24T11:44:40.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:44:40.152 [DEBUG] [Thread-189389] [transport.py] [_log()] starting thread (client mode): 0xc9b80c70
2025-11-24T11:44:40.152 [DEBUG] [Thread-189389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:44:40.168 [DEBUG] [Thread-189389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:44:40.169 [INFO] [Thread-189389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] client lang: <none>
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] server lang: <none>
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] kex follows: False
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] Compression: none
2025-11-24T11:44:40.172 [DEBUG] [Thread-189389] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:44:40.191 [DEBUG] [Thread-189389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:44:40.192 [DEBUG] [Thread-189389] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:44:40.192 [DEBUG] [Thread-189389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:44:40.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:44:40.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:44:40.195 [DEBUG] [Thread-189389] [transport.py] [_log()] userauth is OK
2025-11-24T11:44:40.195 [DEBUG] [Thread-189389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:44:40.195 [DEBUG] [Thread-189389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:44:40.195 [DEBUG] [Thread-189389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:44:40.195 [DEBUG] [Thread-189389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:44:40.232 [INFO] [Thread-189389] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:44:40.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:44:40.812 [DEBUG] [Thread-189389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:44:40.813 [DEBUG] [Thread-189389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:44:40.813 [DEBUG] [Thread-189389] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:44:40.853 [DEBUG] [Thread-189389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:44:40.853 [DEBUG] [Thread-189389] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:44:40.855 [DEBUG] [Thread-189389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:44:40.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:44:40.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:44:40.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:44:40.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:44:40.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:44:40.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:44:40.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:44:40.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:44:40.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:44:40.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.405604 -999.00  +20.40  15.16     26   +0.40 1 1 1 1 1   888    0 21.61 93.86 ----- 15.2 15.2 155.8 33.8 26.5 -25.3 25.3 -26.9 25.3 -23.6 26.3 -24.8
2025-11-24T11:44:40.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:44:40.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:44:40.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.405604
2025-11-24T11:44:40.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:44:40.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:44:40.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:44:40.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:44:40.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:44:40.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:44:33', tmtdew=22.68, humidity=21.47, cloud=0.0, wind=27.38, temperature=19.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:44:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:44:40.878 [DEBUG] [Thread-189389] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:44:40.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:44:40.962 [DEBUG] [Thread-189392] [transport.py] [_log()] starting thread (client mode): 0xd0711a50
2025-11-24T11:44:40.962 [DEBUG] [Thread-189392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:44:40.977 [DEBUG] [Thread-189392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:44:40.977 [INFO] [Thread-189392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] client lang: <none>
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] server lang: <none>
2025-11-24T11:44:40.984 [DEBUG] [Thread-189392] [transport.py] [_log()] kex follows: False
2025-11-24T11:44:40.985 [DEBUG] [Thread-189392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:44:40.985 [DEBUG] [Thread-189392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:44:40.985 [DEBUG] [Thread-189392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:44:40.985 [DEBUG] [Thread-189392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:44:40.985 [DEBUG] [Thread-189392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:44:40.985 [DEBUG] [Thread-189392] [transport.py] [_log()] Compression: none
2025-11-24T11:44:40.985 [DEBUG] [Thread-189392] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:44:41.040 [DEBUG] [Thread-189392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:44:41.040 [DEBUG] [Thread-189392] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:44:41.040 [DEBUG] [Thread-189392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:44:41.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:44:41.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:44:41.098 [DEBUG] [Thread-189392] [transport.py] [_log()] userauth is OK
2025-11-24T11:44:41.098 [DEBUG] [Thread-189392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:44:41.098 [DEBUG] [Thread-189392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:44:41.098 [DEBUG] [Thread-189392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:44:41.098 [DEBUG] [Thread-189392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:44:41.113 [INFO] [Thread-189392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:44: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-11-24T11:44:41.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:44:41.784 [DEBUG] [Thread-189394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:44:41.967 [DEBUG] [Thread-189392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:44:41.967 [DEBUG] [Thread-189392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:44:42.014 [DEBUG] [Thread-189392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:44:42.014 [DEBUG] [Thread-189392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:44:42.023 [DEBUG] [Thread-189392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:44:42.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:44:42.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-11-24T11:44:42.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-11-24T11:44:42.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:44:42.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:44:42.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:44:42.058 [DEBUG] [Thread-189392] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:44:54.142 [DEBUG] [Thread-189395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:45:09.200 [DEBUG] [Thread-189396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:45:12.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:45:12.080 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:45:12.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-11-24T11:45:12.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 45, 6), 22.74, 21.4, 0.0, 27.86, 19.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:45:12.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:45:06
2025-11-24T11:45:13.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:45:13.184 [DEBUG] [Thread-189397] [transport.py] [_log()] starting thread (client mode): 0xd317c460
2025-11-24T11:45:13.184 [DEBUG] [Thread-189397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:45:13.198 [DEBUG] [Thread-189397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:45:13.198 [INFO] [Thread-189397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:45:13.202 [DEBUG] [Thread-189397] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:45:13.202 [DEBUG] [Thread-189397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:45:13.202 [DEBUG] [Thread-189397] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:45:13.202 [DEBUG] [Thread-189397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:45:13.202 [DEBUG] [Thread-189397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:45:13.202 [DEBUG] [Thread-189397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:45:13.202 [DEBUG] [Thread-189397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:45:13.202 [DEBUG] [Thread-189397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] client lang: <none>
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] server lang: <none>
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] kex follows: False
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] Compression: none
2025-11-24T11:45:13.203 [DEBUG] [Thread-189397] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:45:13.221 [DEBUG] [Thread-189397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:45:13.222 [DEBUG] [Thread-189397] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:45:13.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:45:13.223 [DEBUG] [Thread-189397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:45:13.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:45:13.225 [DEBUG] [Thread-189397] [transport.py] [_log()] userauth is OK
2025-11-24T11:45:13.225 [DEBUG] [Thread-189397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:45:13.225 [DEBUG] [Thread-189397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:45:13.226 [DEBUG] [Thread-189397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:45:13.226 [DEBUG] [Thread-189397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:45:13.243 [INFO] [Thread-189397] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:45:13.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:45:13.813 [DEBUG] [Thread-189397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:45:13.814 [DEBUG] [Thread-189397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:45:13.814 [DEBUG] [Thread-189397] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:45:13.854 [DEBUG] [Thread-189397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:45:13.854 [DEBUG] [Thread-189397] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:45:13.856 [DEBUG] [Thread-189397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:45:13.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:45:13.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:45:13.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:45:13.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:45:13.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:45:13.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:45:13.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.406299 -999.00  +19.90  19.99     26   +0.20 1 1 1 1 1   888    0 21.58 102.78 ----- 20.0 20.0 164.1 29.0 26.4 -27.0 25.4 -25.2 25.2 -24.6 26.1 -27.9
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.406299
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:45:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:45:06', tmtdew=22.74, humidity=21.4, cloud=0.0, wind=27.86, temperature=19.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:45:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:45:13.884 [DEBUG] [Thread-189397] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:45:13.956 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:45:13.971 [DEBUG] [Thread-189400] [transport.py] [_log()] starting thread (client mode): 0xd317dde0
2025-11-24T11:45:13.971 [DEBUG] [Thread-189400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:45:13.986 [DEBUG] [Thread-189400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:45:13.986 [INFO] [Thread-189400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:45:13.993 [DEBUG] [Thread-189400] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:45:13.993 [DEBUG] [Thread-189400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:45:13.993 [DEBUG] [Thread-189400] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:45:13.993 [DEBUG] [Thread-189400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] client lang: <none>
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] server lang: <none>
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] kex follows: False
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] Compression: none
2025-11-24T11:45:13.994 [DEBUG] [Thread-189400] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:45:14.056 [DEBUG] [Thread-189400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:45:14.056 [DEBUG] [Thread-189400] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:45:14.056 [DEBUG] [Thread-189400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:45:14.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:45:14.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:45:14.114 [DEBUG] [Thread-189400] [transport.py] [_log()] userauth is OK
2025-11-24T11:45:14.114 [DEBUG] [Thread-189400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:45:14.123 [DEBUG] [Thread-189400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:45:14.123 [DEBUG] [Thread-189400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:45:14.123 [DEBUG] [Thread-189400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:45:14.137 [INFO] [Thread-189400] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:45: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-11-24T11:45:14.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:45:14.969 [DEBUG] [Thread-189400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:45:14.969 [DEBUG] [Thread-189400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:45:15.016 [DEBUG] [Thread-189400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:45:15.016 [DEBUG] [Thread-189400] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:45:15.025 [DEBUG] [Thread-189400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:45:15.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:45:15.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-11-24T11:45:15.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-11-24T11:45:15.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:45:15.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:45:15.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:45:15.060 [DEBUG] [Thread-189400] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:45:24.233 [DEBUG] [Thread-189402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:45:39.282 [DEBUG] [Thread-189403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:45:41.849 [DEBUG] [Thread-189404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:45:45.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:45:45.075 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:45:45.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-11-24T11:45:45.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 45, 38), 22.36, 21.88, 0.0, 21.24, 19.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:45:45.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:45:38
2025-11-24T11:45:46.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:45:46.185 [DEBUG] [Thread-189405] [transport.py] [_log()] starting thread (client mode): 0xd07ebd00
2025-11-24T11:45:46.185 [DEBUG] [Thread-189405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:45:46.199 [DEBUG] [Thread-189405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:45:46.200 [INFO] [Thread-189405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:45:46.202 [DEBUG] [Thread-189405] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] client lang: <none>
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] server lang: <none>
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] kex follows: False
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] Compression: none
2025-11-24T11:45:46.203 [DEBUG] [Thread-189405] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:45:46.213 [DEBUG] [Thread-189405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:45:46.214 [DEBUG] [Thread-189405] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:45:46.214 [DEBUG] [Thread-189405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:45:46.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:45:46.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:45:46.257 [DEBUG] [Thread-189405] [transport.py] [_log()] userauth is OK
2025-11-24T11:45:46.257 [DEBUG] [Thread-189405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:45:46.257 [DEBUG] [Thread-189405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:45:46.257 [DEBUG] [Thread-189405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:45:46.258 [DEBUG] [Thread-189405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:45:46.295 [INFO] [Thread-189405] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:45:46.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:45:46.842 [DEBUG] [Thread-189405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:45:46.843 [DEBUG] [Thread-189405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:45:46.843 [DEBUG] [Thread-189405] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:45:46.884 [DEBUG] [Thread-189405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:45:46.884 [DEBUG] [Thread-189405] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:45:46.887 [DEBUG] [Thread-189405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:45:46.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:45:46.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:45:46.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:45:46.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:45:46.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:45:46.913 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:45:46.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:45:46.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:45:46.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:45:46.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.406646 -999.00  +19.30  19.86     27   +0.00 1 1 1 1 1   888    0 22.22 102.40 ----- 19.9 19.9 155.0 28.1 26.4 -27.6 25.2 -25.1 25.0 -25.4 26.1 -25.5
2025-11-24T11:45:46.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:45:46.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:45:46.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.406646
2025-11-24T11:45:46.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:45:46.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:45:46.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:45:46.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:45:46.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:45:46.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:45:38', tmtdew=22.36, humidity=21.88, cloud=0.0, wind=21.24, temperature=19.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:45:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:45:46.916 [DEBUG] [Thread-189405] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:45:47.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:45:47.014 [DEBUG] [Thread-189408] [transport.py] [_log()] starting thread (client mode): 0xd07eb0a0
2025-11-24T11:45:47.014 [DEBUG] [Thread-189408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:45:47.028 [DEBUG] [Thread-189408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:45:47.029 [INFO] [Thread-189408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:45:47.036 [DEBUG] [Thread-189408] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:45:47.036 [DEBUG] [Thread-189408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:45:47.036 [DEBUG] [Thread-189408] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:45:47.036 [DEBUG] [Thread-189408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:45:47.036 [DEBUG] [Thread-189408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:45:47.037 [DEBUG] [Thread-189408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:45:47.037 [DEBUG] [Thread-189408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:45:47.037 [DEBUG] [Thread-189408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:45:47.037 [DEBUG] [Thread-189408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:45:47.037 [DEBUG] [Thread-189408] [transport.py] [_log()] client lang: <none>
2025-11-24T11:45:47.037 [DEBUG] [Thread-189408] [transport.py] [_log()] server lang: <none>
2025-11-24T11:45:47.037 [DEBUG] [Thread-189408] [transport.py] [_log()] kex follows: False
2025-11-24T11:45:47.037 [DEBUG] [Thread-189408] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:45:47.037 [DEBUG] [Thread-189408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:45:47.038 [DEBUG] [Thread-189408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:45:47.038 [DEBUG] [Thread-189408] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:45:47.038 [DEBUG] [Thread-189408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:45:47.038 [DEBUG] [Thread-189408] [transport.py] [_log()] Compression: none
2025-11-24T11:45:47.038 [DEBUG] [Thread-189408] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:45:47.094 [DEBUG] [Thread-189408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:45:47.095 [DEBUG] [Thread-189408] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:45:47.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:45:47.096 [DEBUG] [Thread-189408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:45:47.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:45:47.150 [DEBUG] [Thread-189408] [transport.py] [_log()] userauth is OK
2025-11-24T11:45:47.150 [DEBUG] [Thread-189408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:45:47.150 [DEBUG] [Thread-189408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:45:47.150 [DEBUG] [Thread-189408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:45:47.150 [DEBUG] [Thread-189408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:45:47.165 [INFO] [Thread-189408] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:45:47.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:45:47.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:45:48.002 [DEBUG] [Thread-189408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:45:48.002 [DEBUG] [Thread-189408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:45:48.049 [DEBUG] [Thread-189408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:45:48.050 [DEBUG] [Thread-189408] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:45:48.059 [DEBUG] [Thread-189408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:45:48.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:45:48.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:45: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') -> 00000000
2025-11-24T11:45:48.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:45:48.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:45:48.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:45:48.095 [DEBUG] [Thread-189408] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:45:54.313 [DEBUG] [Thread-189410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:46:09.362 [DEBUG] [Thread-189411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:46:18.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:46:18.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:46: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-11-24T11:46:18.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 46, 11), 22.55, 21.6, 0.0, 21.56, 19.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:46:18.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:46:11
2025-11-24T11:46:18.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:46:19.151 [DEBUG] [Thread-189412] [transport.py] [_log()] starting thread (client mode): 0xd07e83d0
2025-11-24T11:46:19.151 [DEBUG] [Thread-189412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:46:19.174 [DEBUG] [Thread-189412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:46:19.174 [INFO] [Thread-189412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:46:19.177 [DEBUG] [Thread-189412] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:46:19.178 [DEBUG] [Thread-189412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:46:19.178 [DEBUG] [Thread-189412] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:46:19.178 [DEBUG] [Thread-189412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:46:19.178 [DEBUG] [Thread-189412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:46:19.178 [DEBUG] [Thread-189412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:46:19.178 [DEBUG] [Thread-189412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:46:19.178 [DEBUG] [Thread-189412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:46:19.178 [DEBUG] [Thread-189412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:46:19.178 [DEBUG] [Thread-189412] [transport.py] [_log()] client lang: <none>
2025-11-24T11:46:19.178 [DEBUG] [Thread-189412] [transport.py] [_log()] server lang: <none>
2025-11-24T11:46:19.179 [DEBUG] [Thread-189412] [transport.py] [_log()] kex follows: False
2025-11-24T11:46:19.179 [DEBUG] [Thread-189412] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:46:19.179 [DEBUG] [Thread-189412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:46:19.179 [DEBUG] [Thread-189412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:46:19.179 [DEBUG] [Thread-189412] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:46:19.179 [DEBUG] [Thread-189412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:46:19.179 [DEBUG] [Thread-189412] [transport.py] [_log()] Compression: none
2025-11-24T11:46:19.179 [DEBUG] [Thread-189412] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:46:19.197 [DEBUG] [Thread-189412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:46:19.198 [DEBUG] [Thread-189412] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:46:19.198 [DEBUG] [Thread-189412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:46:19.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:46:19.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:46:19.199 [DEBUG] [Thread-189412] [transport.py] [_log()] userauth is OK
2025-11-24T11:46:19.199 [DEBUG] [Thread-189412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:46:19.199 [DEBUG] [Thread-189412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:46:19.199 [DEBUG] [Thread-189412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:46:19.199 [DEBUG] [Thread-189412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:46:19.215 [INFO] [Thread-189412] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:46:19.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:46:19.859 [DEBUG] [Thread-189412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:46:19.859 [DEBUG] [Thread-189412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:46:19.860 [DEBUG] [Thread-189412] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:46:19.900 [DEBUG] [Thread-189412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:46:19.900 [DEBUG] [Thread-189412] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:46:19.903 [DEBUG] [Thread-189412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:46:19.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:46:19.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:46:19.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:46:19.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:46:19.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:46:19.920 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:46:19.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.406646 -999.00  +19.30  19.86     27   +0.00 1 1 1 1 1   888    0 22.22 102.40 ----- 19.9 19.9 155.0 28.1 26.4 -27.6 25.2 -25.1 25.0 -25.4 26.1 -25.5
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.406646
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:46:19.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:46:11', tmtdew=22.55, humidity=21.6, cloud=0.0, wind=21.56, temperature=19.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:45:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:46:19.921 [DEBUG] [Thread-189412] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:46:19.993 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:46:20.002 [DEBUG] [Thread-189415] [transport.py] [_log()] starting thread (client mode): 0xd07e8850
2025-11-24T11:46:20.003 [DEBUG] [Thread-189415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:46:20.018 [DEBUG] [Thread-189415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:46:20.018 [INFO] [Thread-189415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:46:20.025 [DEBUG] [Thread-189415] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] client lang: <none>
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] server lang: <none>
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] kex follows: False
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] Compression: none
2025-11-24T11:46:20.026 [DEBUG] [Thread-189415] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:46:20.080 [DEBUG] [Thread-189415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:46:20.080 [DEBUG] [Thread-189415] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:46:20.080 [DEBUG] [Thread-189415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:46:20.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:46:20.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:46:20.138 [DEBUG] [Thread-189415] [transport.py] [_log()] userauth is OK
2025-11-24T11:46:20.138 [DEBUG] [Thread-189415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:46:20.138 [DEBUG] [Thread-189415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:46:20.138 [DEBUG] [Thread-189415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:46:20.138 [DEBUG] [Thread-189415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:46:20.152 [INFO] [Thread-189415] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:46:20.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:46:20.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:46:20.991 [DEBUG] [Thread-189415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:46:20.992 [DEBUG] [Thread-189415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:46:21.040 [DEBUG] [Thread-189415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:46:21.040 [DEBUG] [Thread-189415] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:46:21.049 [DEBUG] [Thread-189415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:46:21.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:46:21.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-11-24T11:46:21.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-11-24T11:46:21.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:46:21.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:46:21.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:46:21.086 [DEBUG] [Thread-189415] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:46:24.389 [DEBUG] [Thread-189417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:46:39.428 [DEBUG] [Thread-189418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:46:42.039 [DEBUG] [Thread-189419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:46:51.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:46:51.109 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:46:51.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-11-24T11:46:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 46, 43), 22.23, 22.19, 0.0, 23.71, 19.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:46:51.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:46:43
2025-11-24T11:46:52.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:46:52.156 [DEBUG] [Thread-189420] [transport.py] [_log()] starting thread (client mode): 0xd07ea110
2025-11-24T11:46:52.156 [DEBUG] [Thread-189420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:46:52.167 [DEBUG] [Thread-189420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:46:52.167 [INFO] [Thread-189420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] client lang: <none>
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] server lang: <none>
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] kex follows: False
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] Compression: none
2025-11-24T11:46:52.169 [DEBUG] [Thread-189420] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:46:52.180 [DEBUG] [Thread-189420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:46:52.181 [DEBUG] [Thread-189420] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:46:52.181 [DEBUG] [Thread-189420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:46:52.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:46:52.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:46:52.183 [DEBUG] [Thread-189420] [transport.py] [_log()] userauth is OK
2025-11-24T11:46:52.183 [DEBUG] [Thread-189420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:46:52.183 [DEBUG] [Thread-189420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:46:52.183 [DEBUG] [Thread-189420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:46:52.183 [DEBUG] [Thread-189420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:46:52.196 [INFO] [Thread-189420] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:46:52.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:46:52.823 [DEBUG] [Thread-189420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:46:52.823 [DEBUG] [Thread-189420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:46:52.824 [DEBUG] [Thread-189420] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:46:52.864 [DEBUG] [Thread-189420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:46:52.864 [DEBUG] [Thread-189420] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:46:52.866 [DEBUG] [Thread-189420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:46:52.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:46:52.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:46:52.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:46:52.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:46:52.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:46:52.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:46:52.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:46:52.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:46:52.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:46:52.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.406993 -999.00  +19.50  23.25     27   +0.30 1 1 1 1 1   888    0 21.70 98.47 ----- 23.2 23.2 166.2 26.4 26.4 -25.3 25.4 -25.3 25.2 -23.9 26.2 -25.4
2025-11-24T11:46:52.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:46:52.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:46:52.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.406993
2025-11-24T11:46:52.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:46:52.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:46:52.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:46:52.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:46:52.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:46:52.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:46:43', tmtdew=22.23, humidity=22.19, cloud=0.0, wind=23.71, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:46:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:46:52.884 [DEBUG] [Thread-189420] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:46:52.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:46:52.968 [DEBUG] [Thread-189423] [transport.py] [_log()] starting thread (client mode): 0xd07e81f0
2025-11-24T11:46:52.968 [DEBUG] [Thread-189423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:46:52.983 [DEBUG] [Thread-189423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:46:52.983 [INFO] [Thread-189423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] client lang: <none>
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] server lang: <none>
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] kex follows: False
2025-11-24T11:46:52.990 [DEBUG] [Thread-189423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:46:52.991 [DEBUG] [Thread-189423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:46:52.991 [DEBUG] [Thread-189423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:46:52.991 [DEBUG] [Thread-189423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:46:52.991 [DEBUG] [Thread-189423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:46:52.991 [DEBUG] [Thread-189423] [transport.py] [_log()] Compression: none
2025-11-24T11:46:52.991 [DEBUG] [Thread-189423] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:46:53.048 [DEBUG] [Thread-189423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:46:53.048 [DEBUG] [Thread-189423] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:46:53.048 [DEBUG] [Thread-189423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:46:53.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:46:53.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:46:53.106 [DEBUG] [Thread-189423] [transport.py] [_log()] userauth is OK
2025-11-24T11:46:53.106 [DEBUG] [Thread-189423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:46:53.106 [DEBUG] [Thread-189423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:46:53.106 [DEBUG] [Thread-189423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:46:53.106 [DEBUG] [Thread-189423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:46:53.119 [INFO] [Thread-189423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:46:53.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:46:53.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:46:54.025 [DEBUG] [Thread-189423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:46:54.025 [DEBUG] [Thread-189423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:46:54.074 [DEBUG] [Thread-189423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:46:54.074 [DEBUG] [Thread-189423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:46:54.083 [DEBUG] [Thread-189423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:46:54.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:46:54.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-11-24T11:46:54.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:46:54.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:46:54.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:46:54.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:46:54.120 [DEBUG] [Thread-189423] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:46:54.456 [DEBUG] [Thread-189425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:47:09.528 [DEBUG] [Thread-189426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:47:24.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:47:24.142 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:47:24.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-11-24T11:47:24.559 [DEBUG] [Thread-189427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:47:24.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 47, 15), 22.12, 22.32, 0.0, 22.71, 19.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:47:24.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:47:15
2025-11-24T11:47:25.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:47:25.170 [DEBUG] [Thread-189428] [transport.py] [_log()] starting thread (client mode): 0xd31516c0
2025-11-24T11:47:25.170 [DEBUG] [Thread-189428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:47:25.181 [DEBUG] [Thread-189428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:47:25.181 [INFO] [Thread-189428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:47:25.185 [DEBUG] [Thread-189428] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:47:25.185 [DEBUG] [Thread-189428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] client lang: <none>
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] server lang: <none>
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] kex follows: False
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] Compression: none
2025-11-24T11:47:25.186 [DEBUG] [Thread-189428] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:47:25.194 [DEBUG] [Thread-189428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:47:25.194 [DEBUG] [Thread-189428] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:47:25.194 [DEBUG] [Thread-189428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:47:25.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:47:25.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:47:25.195 [DEBUG] [Thread-189428] [transport.py] [_log()] userauth is OK
2025-11-24T11:47:25.195 [DEBUG] [Thread-189428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:47:25.195 [DEBUG] [Thread-189428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:47:25.195 [DEBUG] [Thread-189428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:47:25.195 [DEBUG] [Thread-189428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:47:25.211 [INFO] [Thread-189428] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:47:25.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:47:25.874 [DEBUG] [Thread-189428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:47:25.874 [DEBUG] [Thread-189428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:47:25.874 [DEBUG] [Thread-189428] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:47:25.915 [DEBUG] [Thread-189428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:47:25.915 [DEBUG] [Thread-189428] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:47:25.917 [DEBUG] [Thread-189428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:47:25.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:47:25.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:47:25.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:47:25.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:47:25.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:47:25.945 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:47:25.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.407340 -999.00  +19.50  17.89     27   +0.30 1 1 1 1 1   888    0 21.37 87.26 ----- 17.9 17.9 167.2 22.4 26.5 -25.8 25.3 -25.2 25.2 -24.7 26.2 -26.2
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.407340
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:47:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:47:15', tmtdew=22.12, humidity=22.32, cloud=0.0, wind=22.71, temperature=19.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:46:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:47:25.946 [DEBUG] [Thread-189428] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:47: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-11-24T11:47:26.033 [DEBUG] [Thread-189431] [transport.py] [_log()] starting thread (client mode): 0xd31503d0
2025-11-24T11:47:26.033 [DEBUG] [Thread-189431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:47:26.048 [DEBUG] [Thread-189431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:47:26.048 [INFO] [Thread-189431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] client lang: <none>
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] server lang: <none>
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] kex follows: False
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] Compression: none
2025-11-24T11:47:26.056 [DEBUG] [Thread-189431] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:47:26.113 [DEBUG] [Thread-189431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:47:26.113 [DEBUG] [Thread-189431] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:47:26.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:47:26.113 [DEBUG] [Thread-189431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:47:26.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:47:26.174 [DEBUG] [Thread-189431] [transport.py] [_log()] userauth is OK
2025-11-24T11:47:26.174 [DEBUG] [Thread-189431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:47:26.174 [DEBUG] [Thread-189431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:47:26.174 [DEBUG] [Thread-189431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:47:26.174 [DEBUG] [Thread-189431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:47:26.191 [INFO] [Thread-189431] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:47:26.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:47:26.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:47:27.026 [DEBUG] [Thread-189431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:47:27.026 [DEBUG] [Thread-189431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:47:27.074 [DEBUG] [Thread-189431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:47:27.074 [DEBUG] [Thread-189431] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:47:27.082 [DEBUG] [Thread-189431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:47:27.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:47:27.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-11-24T11:47:27.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-11-24T11:47:27.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:47:27.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:47:27.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:47:27.114 [DEBUG] [Thread-189431] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:47:39.602 [DEBUG] [Thread-189433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:47:42.105 [DEBUG] [Thread-189434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:47:54.652 [DEBUG] [Thread-189435 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:47:57.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:47:57.114 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:47:57.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-11-24T11:47:57.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 47, 48), 22.32, 22.0, 0.0, 23.96, 19.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:47:57.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:47:48
2025-11-24T11:47:58.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:47:58.219 [DEBUG] [Thread-189436] [transport.py] [_log()] starting thread (client mode): 0xd3151ff0
2025-11-24T11:47:58.219 [DEBUG] [Thread-189436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:47:58.240 [DEBUG] [Thread-189436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:47:58.240 [INFO] [Thread-189436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:47:58.241 [DEBUG] [Thread-189436] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:47:58.241 [DEBUG] [Thread-189436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:47:58.241 [DEBUG] [Thread-189436] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] client lang: <none>
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] server lang: <none>
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] kex follows: False
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:47:58.242 [DEBUG] [Thread-189436] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:47:58.243 [DEBUG] [Thread-189436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:47:58.243 [DEBUG] [Thread-189436] [transport.py] [_log()] Compression: none
2025-11-24T11:47:58.243 [DEBUG] [Thread-189436] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:47:58.257 [DEBUG] [Thread-189436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:47:58.258 [DEBUG] [Thread-189436] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:47:58.258 [DEBUG] [Thread-189436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:47:58.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:47:58.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:47:58.260 [DEBUG] [Thread-189436] [transport.py] [_log()] userauth is OK
2025-11-24T11:47:58.260 [DEBUG] [Thread-189436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:47:58.261 [DEBUG] [Thread-189436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:47:58.261 [DEBUG] [Thread-189436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:47:58.261 [DEBUG] [Thread-189436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:47:58.296 [INFO] [Thread-189436] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:47:58.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:47:58.942 [DEBUG] [Thread-189436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:47:58.942 [DEBUG] [Thread-189436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:47:58.942 [DEBUG] [Thread-189436] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:47:58.983 [DEBUG] [Thread-189436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:47:58.983 [DEBUG] [Thread-189436] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:47:58.985 [DEBUG] [Thread-189436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:47:58.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:47:59.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:47:59.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:47:59.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:47:59.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:47:59.005 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:47:59.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:47:59.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:47:59.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:47:59.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.407688 -999.00  +19.20  23.13     27   +0.00 1 1 1 1 1   888    0 21.55 85.63 ----- 23.1 23.1 168.8 29.7 26.4 -27.2 25.2 -24.9 25.1 -26.0 26.2 -26.2
2025-11-24T11:47:59.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:47:59.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:47:59.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.407688
2025-11-24T11:47:59.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:47:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:47:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:47:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:47:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:47:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:47:48', tmtdew=22.32, humidity=22.0, cloud=0.0, wind=23.96, temperature=19.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:47:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:47:59.006 [DEBUG] [Thread-189436] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:47:59.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:47:59.092 [DEBUG] [Thread-189439] [transport.py] [_log()] starting thread (client mode): 0xd31526b0
2025-11-24T11:47:59.092 [DEBUG] [Thread-189439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:47:59.107 [DEBUG] [Thread-189439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:47:59.107 [INFO] [Thread-189439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:47:59.114 [DEBUG] [Thread-189439] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:47:59.114 [DEBUG] [Thread-189439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:47:59.114 [DEBUG] [Thread-189439] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:47:59.114 [DEBUG] [Thread-189439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:47:59.114 [DEBUG] [Thread-189439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:47:59.114 [DEBUG] [Thread-189439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] client lang: <none>
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] server lang: <none>
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] kex follows: False
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] Compression: none
2025-11-24T11:47:59.115 [DEBUG] [Thread-189439] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:47:59.173 [DEBUG] [Thread-189439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:47:59.173 [DEBUG] [Thread-189439] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:47:59.173 [DEBUG] [Thread-189439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:47:59.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:47:59.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:47:59.230 [DEBUG] [Thread-189439] [transport.py] [_log()] userauth is OK
2025-11-24T11:47:59.230 [DEBUG] [Thread-189439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:47:59.230 [DEBUG] [Thread-189439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:47:59.230 [DEBUG] [Thread-189439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:47:59.230 [DEBUG] [Thread-189439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:47:59.248 [INFO] [Thread-189439] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:47:59.248 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:47:59.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:48:00.080 [DEBUG] [Thread-189439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:48:00.080 [DEBUG] [Thread-189439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:48:00.128 [DEBUG] [Thread-189439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:48:00.128 [DEBUG] [Thread-189439] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:48:00.137 [DEBUG] [Thread-189439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:48:00.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:48:00.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:48:00.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-11-24T11:48:00.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:48:00.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:48:00.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:48:00.169 [DEBUG] [Thread-189439] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:48:09.699 [DEBUG] [Thread-189441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:48:24.751 [DEBUG] [Thread-189442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:48:30.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:48:30.192 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:48:30.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-11-24T11:48:30.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 48, 20), 22.18, 22.23, 0.0, 21.37, 19.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:48:30.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:48:20
2025-11-24T11:48:31.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:48:31.269 [DEBUG] [Thread-189443] [transport.py] [_log()] starting thread (client mode): 0xd07e9360
2025-11-24T11:48:31.269 [DEBUG] [Thread-189443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:48:31.286 [DEBUG] [Thread-189443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:48:31.286 [INFO] [Thread-189443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] client lang: <none>
2025-11-24T11:48:31.290 [DEBUG] [Thread-189443] [transport.py] [_log()] server lang: <none>
2025-11-24T11:48:31.291 [DEBUG] [Thread-189443] [transport.py] [_log()] kex follows: False
2025-11-24T11:48:31.291 [DEBUG] [Thread-189443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:48:31.291 [DEBUG] [Thread-189443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:48:31.291 [DEBUG] [Thread-189443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:48:31.291 [DEBUG] [Thread-189443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:48:31.291 [DEBUG] [Thread-189443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:48:31.291 [DEBUG] [Thread-189443] [transport.py] [_log()] Compression: none
2025-11-24T11:48:31.291 [DEBUG] [Thread-189443] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:48:31.312 [DEBUG] [Thread-189443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:48:31.313 [DEBUG] [Thread-189443] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:48:31.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:48:31.315 [DEBUG] [Thread-189443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:48:31.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:48:31.356 [DEBUG] [Thread-189443] [transport.py] [_log()] userauth is OK
2025-11-24T11:48:31.356 [DEBUG] [Thread-189443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:48:31.357 [DEBUG] [Thread-189443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:48:31.357 [DEBUG] [Thread-189443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:48:31.357 [DEBUG] [Thread-189443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:48:31.383 [INFO] [Thread-189443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:48:31.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:48:32.182 [DEBUG] [Thread-189443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:48:32.182 [DEBUG] [Thread-189443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:48:32.182 [DEBUG] [Thread-189443] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:48:32.223 [DEBUG] [Thread-189443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:48:32.223 [DEBUG] [Thread-189443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:48:32.226 [DEBUG] [Thread-189443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:48:32.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:48:32.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:48:32.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:48:32.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:48:32.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:48:32.255 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:48:32.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:48:32.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:48:32.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:48:32.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.408035 -999.00  +19.20  19.41     28   +0.20 1 1 1 1 1   888    0 21.11 76.07 ----- 19.4 19.4 139.8 28.0 26.4 -26.5 25.2 -25.4 25.2 -25.0 26.1 -25.5
2025-11-24T11:48:32.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:48:32.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:48:32.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.408035
2025-11-24T11:48:32.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:48:32.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:48:32.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:48:32.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:48:32.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:48:32.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:48:20', tmtdew=22.18, humidity=22.23, cloud=0.0, wind=21.37, temperature=19.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:47:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:48:32.257 [DEBUG] [Thread-189443] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:48:32.330 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:48:32.341 [DEBUG] [Thread-189446] [transport.py] [_log()] starting thread (client mode): 0xd0711120
2025-11-24T11:48:32.342 [DEBUG] [Thread-189446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:48:32.356 [DEBUG] [Thread-189446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:48:32.356 [INFO] [Thread-189446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:48:32.363 [DEBUG] [Thread-189446] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] client lang: <none>
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] server lang: <none>
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] kex follows: False
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] Compression: none
2025-11-24T11:48:32.364 [DEBUG] [Thread-189446] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:48:32.421 [DEBUG] [Thread-189446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:48:32.421 [DEBUG] [Thread-189446] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:48:32.421 [DEBUG] [Thread-189446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:48:32.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:48:32.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:48:32.478 [DEBUG] [Thread-189446] [transport.py] [_log()] userauth is OK
2025-11-24T11:48:32.478 [DEBUG] [Thread-189446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:48:32.478 [DEBUG] [Thread-189446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:48:32.478 [DEBUG] [Thread-189446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:48:32.478 [DEBUG] [Thread-189446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:48:32.492 [INFO] [Thread-189446] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:48:32.492 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:48:32.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:48:33.331 [DEBUG] [Thread-189446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:48:33.332 [DEBUG] [Thread-189446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:48:33.379 [DEBUG] [Thread-189446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:48:33.380 [DEBUG] [Thread-189446] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:48:33.389 [DEBUG] [Thread-189446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:48:33.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:48:33.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-11-24T11:48:33.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-11-24T11:48:33.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:48:33.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:48:33.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:48:33.439 [DEBUG] [Thread-189446] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:48:39.777 [DEBUG] [Thread-189448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:48:42.337 [DEBUG] [Thread-189449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:48:54.810 [DEBUG] [Thread-189450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:49:03.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:49:03.459 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:49:03.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-11-24T11:49:04.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 48, 53), 22.67, 21.45, 0.0, 25.57, 19.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:49:04.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:48:53
2025-11-24T11:49:04.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:49:04.549 [DEBUG] [Thread-189451] [transport.py] [_log()] starting thread (client mode): 0xd07e8d30
2025-11-24T11:49:04.549 [DEBUG] [Thread-189451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:49:04.560 [DEBUG] [Thread-189451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:49:04.560 [INFO] [Thread-189451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:49:04.564 [DEBUG] [Thread-189451] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:49:04.564 [DEBUG] [Thread-189451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:49:04.564 [DEBUG] [Thread-189451] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:49:04.564 [DEBUG] [Thread-189451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:49:04.565 [DEBUG] [Thread-189451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:49:04.565 [DEBUG] [Thread-189451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:49:04.565 [DEBUG] [Thread-189451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:49:04.565 [DEBUG] [Thread-189451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:49:04.565 [DEBUG] [Thread-189451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:49:04.565 [DEBUG] [Thread-189451] [transport.py] [_log()] client lang: <none>
2025-11-24T11:49:04.565 [DEBUG] [Thread-189451] [transport.py] [_log()] server lang: <none>
2025-11-24T11:49:04.565 [DEBUG] [Thread-189451] [transport.py] [_log()] kex follows: False
2025-11-24T11:49:04.565 [DEBUG] [Thread-189451] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:49:04.565 [DEBUG] [Thread-189451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:49:04.566 [DEBUG] [Thread-189451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:49:04.566 [DEBUG] [Thread-189451] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:49:04.566 [DEBUG] [Thread-189451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:49:04.566 [DEBUG] [Thread-189451] [transport.py] [_log()] Compression: none
2025-11-24T11:49:04.566 [DEBUG] [Thread-189451] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:49:04.585 [DEBUG] [Thread-189451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:49:04.586 [DEBUG] [Thread-189451] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:49:04.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:49:04.588 [DEBUG] [Thread-189451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:49:04.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:49:04.591 [DEBUG] [Thread-189451] [transport.py] [_log()] userauth is OK
2025-11-24T11:49:04.591 [DEBUG] [Thread-189451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:49:04.591 [DEBUG] [Thread-189451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:49:04.591 [DEBUG] [Thread-189451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:49:04.591 [DEBUG] [Thread-189451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:49:04.626 [INFO] [Thread-189451] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:49:04.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:49:05.240 [DEBUG] [Thread-189451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:49:05.241 [DEBUG] [Thread-189451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:49:05.241 [DEBUG] [Thread-189451] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:49:05.281 [DEBUG] [Thread-189451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:49:05.282 [DEBUG] [Thread-189451] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:49:05.284 [DEBUG] [Thread-189451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:49:05.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:49:05.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:49:05.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:49:05.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:49:05.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:49:05.309 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:49:05.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:49:05.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:49:05.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:49:05.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.408382 -999.00  +19.40  16.49     27   +0.20 1 1 1 1 1   888    0 21.33 77.19 ----- 16.5 16.5 138.8 25.3 26.3 -25.9 25.3 -26.1 25.1 -24.0 26.1 -26.4
2025-11-24T11:49:05.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:49:05.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:49:05.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.408382
2025-11-24T11:49:05.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:49:05.318 [DEBUG] [Thread-189451] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:49:05.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:49:05.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:49:05.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:49:05.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:49:05.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:48:53', tmtdew=22.67, humidity=21.45, cloud=0.0, wind=25.57, temperature=19.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:48:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:49:05.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:49:05.416 [DEBUG] [Thread-189454] [transport.py] [_log()] starting thread (client mode): 0xd3150910
2025-11-24T11:49:05.416 [DEBUG] [Thread-189454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:49:05.431 [DEBUG] [Thread-189454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:49:05.431 [INFO] [Thread-189454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:49:05.438 [DEBUG] [Thread-189454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:49:05.438 [DEBUG] [Thread-189454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:49:05.438 [DEBUG] [Thread-189454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:49:05.438 [DEBUG] [Thread-189454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:49:05.438 [DEBUG] [Thread-189454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] client lang: <none>
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] server lang: <none>
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] kex follows: False
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] Compression: none
2025-11-24T11:49:05.439 [DEBUG] [Thread-189454] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:49:05.497 [DEBUG] [Thread-189454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:49:05.497 [DEBUG] [Thread-189454] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:49:05.497 [DEBUG] [Thread-189454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:49:05.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:49:05.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:49:05.554 [DEBUG] [Thread-189454] [transport.py] [_log()] userauth is OK
2025-11-24T11:49:05.555 [DEBUG] [Thread-189454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:49:05.555 [DEBUG] [Thread-189454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:49:05.555 [DEBUG] [Thread-189454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:49:05.555 [DEBUG] [Thread-189454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:49:05.575 [INFO] [Thread-189454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:49:05.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:49:05.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:49:06.449 [DEBUG] [Thread-189454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:49:06.449 [DEBUG] [Thread-189454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:49:06.496 [DEBUG] [Thread-189454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:49:06.497 [DEBUG] [Thread-189454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:49:06.506 [DEBUG] [Thread-189454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:49:06.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:49:06.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-11-24T11:49:06.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:49:06.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:49:06.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:49:06.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:49:06.543 [DEBUG] [Thread-189454] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:49:09.843 [DEBUG] [Thread-189456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:49:24.892 [DEBUG] [Thread-189457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:49:36.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:49:36.563 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:49:36.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-11-24T11:49:37.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 49, 25), 22.96, 21.0, 0.0, 23.47, 19.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:49:37.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:49:25
2025-11-24T11:49:37.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:49:37.650 [DEBUG] [Thread-189458] [transport.py] [_log()] starting thread (client mode): 0xd3151b10
2025-11-24T11:49:37.650 [DEBUG] [Thread-189458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:49:37.662 [DEBUG] [Thread-189458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:49:37.662 [INFO] [Thread-189458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:49:37.665 [DEBUG] [Thread-189458] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] client lang: <none>
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] server lang: <none>
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] kex follows: False
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] Compression: none
2025-11-24T11:49:37.666 [DEBUG] [Thread-189458] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:49:37.687 [DEBUG] [Thread-189458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:49:37.688 [DEBUG] [Thread-189458] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:49:37.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:49:37.689 [DEBUG] [Thread-189458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:49:37.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:49:37.691 [DEBUG] [Thread-189458] [transport.py] [_log()] userauth is OK
2025-11-24T11:49:37.691 [DEBUG] [Thread-189458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:49:37.691 [DEBUG] [Thread-189458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:49:37.691 [DEBUG] [Thread-189458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:49:37.691 [DEBUG] [Thread-189458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:49:37.715 [INFO] [Thread-189458] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:49:37.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:49:38.485 [DEBUG] [Thread-189458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:49:38.486 [DEBUG] [Thread-189458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:49:38.486 [DEBUG] [Thread-189458] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:49:38.526 [DEBUG] [Thread-189458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:49:38.526 [DEBUG] [Thread-189458] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:49:38.528 [DEBUG] [Thread-189458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:49:38.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:49:38.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:49:38.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:49:38.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:49:38.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:49:38.557 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:49:38.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.409076 -999.00  +19.40  24.42     26   -0.40 1 1 1 1 1   888    0 21.38 74.68 ----- 24.4 24.4 179.2 29.5 26.2 -27.1 24.7 -31.5 25.1 -24.5 26.1 -27.2
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.409076
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:49:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:49:25', tmtdew=22.96, humidity=21.0, cloud=0.0, wind=23.47, temperature=19.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:49:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:49:38.558 [DEBUG] [Thread-189458] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:49:38.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:49:38.642 [DEBUG] [Thread-189461] [transport.py] [_log()] starting thread (client mode): 0xd3150880
2025-11-24T11:49:38.642 [DEBUG] [Thread-189461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:49:38.657 [DEBUG] [Thread-189461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:49:38.657 [INFO] [Thread-189461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:49:38.664 [DEBUG] [Thread-189461] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:49:38.664 [DEBUG] [Thread-189461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:49:38.664 [DEBUG] [Thread-189461] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:49:38.664 [DEBUG] [Thread-189461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:49:38.664 [DEBUG] [Thread-189461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:49:38.664 [DEBUG] [Thread-189461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:49:38.664 [DEBUG] [Thread-189461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:49:38.664 [DEBUG] [Thread-189461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:49:38.664 [DEBUG] [Thread-189461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:49:38.664 [DEBUG] [Thread-189461] [transport.py] [_log()] client lang: <none>
2025-11-24T11:49:38.665 [DEBUG] [Thread-189461] [transport.py] [_log()] server lang: <none>
2025-11-24T11:49:38.665 [DEBUG] [Thread-189461] [transport.py] [_log()] kex follows: False
2025-11-24T11:49:38.665 [DEBUG] [Thread-189461] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:49:38.665 [DEBUG] [Thread-189461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:49:38.665 [DEBUG] [Thread-189461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:49:38.665 [DEBUG] [Thread-189461] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:49:38.665 [DEBUG] [Thread-189461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:49:38.665 [DEBUG] [Thread-189461] [transport.py] [_log()] Compression: none
2025-11-24T11:49:38.665 [DEBUG] [Thread-189461] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:49:38.721 [DEBUG] [Thread-189461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:49:38.722 [DEBUG] [Thread-189461] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:49:38.722 [DEBUG] [Thread-189461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:49:38.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:49:38.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:49:38.778 [DEBUG] [Thread-189461] [transport.py] [_log()] userauth is OK
2025-11-24T11:49:38.778 [DEBUG] [Thread-189461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:49:38.778 [DEBUG] [Thread-189461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:49:38.778 [DEBUG] [Thread-189461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:49:38.778 [DEBUG] [Thread-189461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:49:38.793 [INFO] [Thread-189461] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:49:38.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:49:38.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:49:39.634 [DEBUG] [Thread-189461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:49:39.634 [DEBUG] [Thread-189461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:49:39.682 [DEBUG] [Thread-189461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:49:39.682 [DEBUG] [Thread-189461] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:49:39.691 [DEBUG] [Thread-189461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:49:39.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:49: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-11-24T11:49: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-11-24T11:49:39.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:49:39.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:49:39.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:49:39.727 [DEBUG] [Thread-189461] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:49:39.925 [DEBUG] [Thread-189463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:49:42.405 [DEBUG] [Thread-189464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:49:54.962 [DEBUG] [Thread-189465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:50:09.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:50:09.733 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:50:09.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-11-24T11:50:09.989 [DEBUG] [Thread-189466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:50:10.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 49, 57), 22.79, 21.2, 0.0, 19.0, 19.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:50:10.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:49:57
2025-11-24T11:50:10.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:50:10.842 [DEBUG] [Thread-189467] [transport.py] [_log()] starting thread (client mode): 0xd3153be0
2025-11-24T11:50:10.842 [DEBUG] [Thread-189467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:50:10.862 [DEBUG] [Thread-189467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:50:10.862 [INFO] [Thread-189467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:50:10.865 [DEBUG] [Thread-189467] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:50:10.866 [DEBUG] [Thread-189467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:50:10.866 [DEBUG] [Thread-189467] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:50:10.866 [DEBUG] [Thread-189467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:50:10.866 [DEBUG] [Thread-189467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:50:10.866 [DEBUG] [Thread-189467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:50:10.866 [DEBUG] [Thread-189467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:50:10.866 [DEBUG] [Thread-189467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] client lang: <none>
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] server lang: <none>
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] kex follows: False
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] Compression: none
2025-11-24T11:50:10.867 [DEBUG] [Thread-189467] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:50:10.889 [DEBUG] [Thread-189467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:50:10.889 [DEBUG] [Thread-189467] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:50:10.890 [DEBUG] [Thread-189467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:50:10.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:50:10.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:50:10.892 [DEBUG] [Thread-189467] [transport.py] [_log()] userauth is OK
2025-11-24T11:50:10.892 [DEBUG] [Thread-189467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:50:10.893 [DEBUG] [Thread-189467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:50:10.893 [DEBUG] [Thread-189467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:50:10.893 [DEBUG] [Thread-189467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:50:10.912 [INFO] [Thread-189467] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:50:10.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:50:11.675 [DEBUG] [Thread-189467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:50:11.675 [DEBUG] [Thread-189467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:50:11.676 [DEBUG] [Thread-189467] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:50:11.716 [DEBUG] [Thread-189467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:50:11.716 [DEBUG] [Thread-189467] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:50:11.718 [DEBUG] [Thread-189467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:50:11.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:50:11.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:50:11.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:50:11.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:50:11.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:50:11.735 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:50:11.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:50:11.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:50:11.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:50:11.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.409424 -999.00  +19.20  23.95     25   -0.70 1 1 1 1 1   888    0 21.51 68.39 ----- 23.9 23.9 161.4 30.2 26.1 -26.4 25.0 -24.8 25.1 -24.1 25.9 -26.6
2025-11-24T11:50:11.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:50:11.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:50:11.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.409424
2025-11-24T11:50:11.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:50:11.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:50:11.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:50:11.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:50:11.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:50:11.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:49:57', tmtdew=22.79, humidity=21.2, cloud=0.0, wind=19.0, temperature=19.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:49:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:50:11.736 [DEBUG] [Thread-189467] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:50:11.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:50:11.821 [DEBUG] [Thread-189470] [transport.py] [_log()] starting thread (client mode): 0xd31b0d00
2025-11-24T11:50:11.821 [DEBUG] [Thread-189470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:50:11.837 [DEBUG] [Thread-189470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:50:11.837 [INFO] [Thread-189470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:50:11.844 [DEBUG] [Thread-189470] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:50:11.844 [DEBUG] [Thread-189470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:50:11.844 [DEBUG] [Thread-189470] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:50:11.844 [DEBUG] [Thread-189470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:50:11.844 [DEBUG] [Thread-189470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:50:11.844 [DEBUG] [Thread-189470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] client lang: <none>
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] server lang: <none>
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] kex follows: False
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] Compression: none
2025-11-24T11:50:11.845 [DEBUG] [Thread-189470] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:50:11.901 [DEBUG] [Thread-189470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:50:11.901 [DEBUG] [Thread-189470] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:50:11.901 [DEBUG] [Thread-189470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:50:11.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:50:11.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:50:11.958 [DEBUG] [Thread-189470] [transport.py] [_log()] userauth is OK
2025-11-24T11:50:11.958 [DEBUG] [Thread-189470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:50:11.958 [DEBUG] [Thread-189470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:50:11.958 [DEBUG] [Thread-189470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:50:11.958 [DEBUG] [Thread-189470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:50:11.971 [INFO] [Thread-189470] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:50:11.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:50:11.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:50:12.830 [DEBUG] [Thread-189470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:50:12.831 [DEBUG] [Thread-189470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:50:12.878 [DEBUG] [Thread-189470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:50:12.878 [DEBUG] [Thread-189470] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:50:12.888 [DEBUG] [Thread-189470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:50:12.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:50:12.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:50: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-11-24T11:50:12.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:50:12.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:50:12.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:50:12.923 [DEBUG] [Thread-189470] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:50:25.034 [DEBUG] [Thread-189472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:50:40.089 [DEBUG] [Thread-189473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:50:42.601 [DEBUG] [Thread-189474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:50:42.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:50:42.930 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:50:42.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-11-24T11:50:43.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 50, 30), 23.15, 20.69, 0.0, 18.51, 19.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:50:43.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:50:30
2025-11-24T11:50:43.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:50:44.039 [DEBUG] [Thread-189475] [transport.py] [_log()] starting thread (client mode): 0xd3150970
2025-11-24T11:50:44.039 [DEBUG] [Thread-189475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:50:44.059 [DEBUG] [Thread-189475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:50:44.059 [INFO] [Thread-189475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:50:44.063 [DEBUG] [Thread-189475] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] client lang: <none>
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] server lang: <none>
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] kex follows: False
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] Compression: none
2025-11-24T11:50:44.064 [DEBUG] [Thread-189475] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:50:44.080 [DEBUG] [Thread-189475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:50:44.080 [DEBUG] [Thread-189475] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:50:44.080 [DEBUG] [Thread-189475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:50:44.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:50:44.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:50:44.124 [DEBUG] [Thread-189475] [transport.py] [_log()] userauth is OK
2025-11-24T11:50:44.124 [DEBUG] [Thread-189475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:50:44.124 [DEBUG] [Thread-189475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:50:44.124 [DEBUG] [Thread-189475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:50:44.124 [DEBUG] [Thread-189475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:50:44.140 [INFO] [Thread-189475] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:50:44.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:50:44.770 [DEBUG] [Thread-189475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:50:44.780 [DEBUG] [Thread-189475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:50:44.781 [DEBUG] [Thread-189475] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:50:44.812 [DEBUG] [Thread-189475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:50:44.812 [DEBUG] [Thread-189475] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:50:44.815 [DEBUG] [Thread-189475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:50:44.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:50:44.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:50:44.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:50:44.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:50:44.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:50:44.841 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:50:44.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:50:44.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:50:44.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:50:44.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.409771 -999.00  +19.20  10.75     26   -0.70 1 1 1 1 1   888    0 20.78 66.91 ----- 10.8 10.8 170.8 19.7 26.2 -26.5 25.2 -24.2 25.1 -25.0 26.1 -25.1
2025-11-24T11:50:44.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:50:44.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:50:44.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.409771
2025-11-24T11:50:44.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:50:44.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:50:44.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:50:44.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:50:44.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:50:44.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:50:30', tmtdew=23.15, humidity=20.69, cloud=0.0, wind=18.51, temperature=19.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:50:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:50:44.844 [DEBUG] [Thread-189475] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:50:44.928 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:50:44.941 [DEBUG] [Thread-189478] [transport.py] [_log()] starting thread (client mode): 0xd0713550
2025-11-24T11:50:44.941 [DEBUG] [Thread-189478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:50:44.956 [DEBUG] [Thread-189478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:50:44.956 [INFO] [Thread-189478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:50:44.963 [DEBUG] [Thread-189478] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] client lang: <none>
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] server lang: <none>
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] kex follows: False
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:50:44.964 [DEBUG] [Thread-189478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:50:44.965 [DEBUG] [Thread-189478] [transport.py] [_log()] Compression: none
2025-11-24T11:50:44.965 [DEBUG] [Thread-189478] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:50:45.022 [DEBUG] [Thread-189478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:50:45.023 [DEBUG] [Thread-189478] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:50:45.023 [DEBUG] [Thread-189478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:50:45.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:50:45.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:50:45.078 [DEBUG] [Thread-189478] [transport.py] [_log()] userauth is OK
2025-11-24T11:50:45.078 [DEBUG] [Thread-189478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:50:45.079 [DEBUG] [Thread-189478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:50:45.079 [DEBUG] [Thread-189478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:50:45.079 [DEBUG] [Thread-189478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:50:45.099 [INFO] [Thread-189478] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:50:45.108 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:50:45.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:50:45.933 [DEBUG] [Thread-189478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:50:45.934 [DEBUG] [Thread-189478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:50:45.981 [DEBUG] [Thread-189478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:50:45.982 [DEBUG] [Thread-189478] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:50:45.991 [DEBUG] [Thread-189478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:50:46.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:50:46.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-11-24T11:50:46.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-11-24T11:50:46.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:50:46.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:50:46.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:50:46.026 [DEBUG] [Thread-189478] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:50:55.136 [DEBUG] [Thread-189480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:51:10.190 [DEBUG] [Thread-189481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:51:16.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:51:16.043 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:51:16.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-11-24T11:51:16.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 51, 2), 23.41, 20.32, 0.0, 16.96, 19.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:51:16.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:51:02
2025-11-24T11:51:16.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:51:17.009 [DEBUG] [Thread-189482] [transport.py] [_log()] starting thread (client mode): 0xd3192f20
2025-11-24T11:51:17.009 [DEBUG] [Thread-189482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:51:17.030 [DEBUG] [Thread-189482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:51:17.030 [INFO] [Thread-189482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] client lang: <none>
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] server lang: <none>
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] kex follows: False
2025-11-24T11:51:17.033 [DEBUG] [Thread-189482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:51:17.034 [DEBUG] [Thread-189482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:51:17.034 [DEBUG] [Thread-189482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:51:17.034 [DEBUG] [Thread-189482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:51:17.034 [DEBUG] [Thread-189482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:51:17.034 [DEBUG] [Thread-189482] [transport.py] [_log()] Compression: none
2025-11-24T11:51:17.034 [DEBUG] [Thread-189482] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:51:17.049 [DEBUG] [Thread-189482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:51:17.050 [DEBUG] [Thread-189482] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:51:17.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:51:17.050 [DEBUG] [Thread-189482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:51:17.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:51:17.050 [DEBUG] [Thread-189482] [transport.py] [_log()] userauth is OK
2025-11-24T11:51:17.051 [DEBUG] [Thread-189482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:51:17.051 [DEBUG] [Thread-189482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:51:17.051 [DEBUG] [Thread-189482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:51:17.051 [DEBUG] [Thread-189482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:51:17.063 [INFO] [Thread-189482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:51:17.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:51:17.662 [DEBUG] [Thread-189482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:51:17.662 [DEBUG] [Thread-189482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:51:17.662 [DEBUG] [Thread-189482] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:51:17.702 [DEBUG] [Thread-189482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:51:17.702 [DEBUG] [Thread-189482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:51:17.705 [DEBUG] [Thread-189482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:51:17.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:51:17.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:51:17.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:51:17.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:51:17.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:51:17.725 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:51:17.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:51:17.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:51:17.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:51:17.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.410118 -999.00  +19.50  15.12     26   -0.40 1 1 1 1 1   888    0 20.75 67.43 ----- 15.1 15.1 190.4 17.3 26.4 -25.4 25.0 -28.6 25.2 -23.6 26.2 -25.3
2025-11-24T11:51:17.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:51:17.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:51:17.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.410118
2025-11-24T11:51:17.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:51:17.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:51:17.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:51:17.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:51:17.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:51:17.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:51:02', tmtdew=23.41, humidity=20.32, cloud=0.0, wind=16.96, temperature=19.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:50:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:51:17.726 [DEBUG] [Thread-189482] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:51:17.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:51:17.871 [DEBUG] [Thread-189485] [transport.py] [_log()] starting thread (client mode): 0xc9b82da0
2025-11-24T11:51:17.871 [DEBUG] [Thread-189485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:51:17.886 [DEBUG] [Thread-189485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:51:17.886 [INFO] [Thread-189485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:51:17.893 [DEBUG] [Thread-189485] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:51:17.894 [DEBUG] [Thread-189485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:51:17.894 [DEBUG] [Thread-189485] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:51:17.894 [DEBUG] [Thread-189485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:51:17.894 [DEBUG] [Thread-189485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:51:17.894 [DEBUG] [Thread-189485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:51:17.894 [DEBUG] [Thread-189485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:51:17.894 [DEBUG] [Thread-189485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:51:17.895 [DEBUG] [Thread-189485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:51:17.895 [DEBUG] [Thread-189485] [transport.py] [_log()] client lang: <none>
2025-11-24T11:51:17.895 [DEBUG] [Thread-189485] [transport.py] [_log()] server lang: <none>
2025-11-24T11:51:17.895 [DEBUG] [Thread-189485] [transport.py] [_log()] kex follows: False
2025-11-24T11:51:17.895 [DEBUG] [Thread-189485] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:51:17.895 [DEBUG] [Thread-189485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:51:17.895 [DEBUG] [Thread-189485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:51:17.896 [DEBUG] [Thread-189485] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:51:17.896 [DEBUG] [Thread-189485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:51:17.896 [DEBUG] [Thread-189485] [transport.py] [_log()] Compression: none
2025-11-24T11:51:17.896 [DEBUG] [Thread-189485] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:51:17.955 [DEBUG] [Thread-189485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:51:17.955 [DEBUG] [Thread-189485] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:51:17.956 [DEBUG] [Thread-189485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:51:17.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:51:17.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:51:18.010 [DEBUG] [Thread-189485] [transport.py] [_log()] userauth is OK
2025-11-24T11:51:18.011 [DEBUG] [Thread-189485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:51:18.011 [DEBUG] [Thread-189485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:51:18.011 [DEBUG] [Thread-189485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:51:18.011 [DEBUG] [Thread-189485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:51:18.030 [INFO] [Thread-189485] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:51:18.031 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:51:18.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:51:18.873 [DEBUG] [Thread-189485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:51:18.873 [DEBUG] [Thread-189485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:51:18.924 [DEBUG] [Thread-189485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:51:18.924 [DEBUG] [Thread-189485] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:51:18.933 [DEBUG] [Thread-189485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:51:18.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:51:18.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:51:18.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:51:18.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:51:18.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:51:18.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:51:18.971 [DEBUG] [Thread-189485] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:51:25.221 [DEBUG] [Thread-189487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:51:40.274 [DEBUG] [Thread-189488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:51:42.718 [DEBUG] [Thread-189489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:51:48.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:51:48.991 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:51:48.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:51:49.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 51, 35), 23.23, 20.47, 0.0, 18.42, 19.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:51:49.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:51:35
2025-11-24T11:51:49.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:51:50.134 [DEBUG] [Thread-189490] [transport.py] [_log()] starting thread (client mode): 0xd07e9210
2025-11-24T11:51:50.134 [DEBUG] [Thread-189490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:51:50.155 [DEBUG] [Thread-189490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:51:50.155 [INFO] [Thread-189490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] client lang: <none>
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] server lang: <none>
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] kex follows: False
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:51:50.158 [DEBUG] [Thread-189490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:51:50.159 [DEBUG] [Thread-189490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:51:50.159 [DEBUG] [Thread-189490] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:51:50.159 [DEBUG] [Thread-189490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:51:50.159 [DEBUG] [Thread-189490] [transport.py] [_log()] Compression: none
2025-11-24T11:51:50.159 [DEBUG] [Thread-189490] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:51:50.174 [DEBUG] [Thread-189490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:51:50.174 [DEBUG] [Thread-189490] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:51:50.174 [DEBUG] [Thread-189490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:51:50.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:51:50.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:51:50.174 [DEBUG] [Thread-189490] [transport.py] [_log()] userauth is OK
2025-11-24T11:51:50.174 [DEBUG] [Thread-189490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:51:50.174 [DEBUG] [Thread-189490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:51:50.175 [DEBUG] [Thread-189490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:51:50.175 [DEBUG] [Thread-189490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:51:50.191 [INFO] [Thread-189490] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:51:50.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:51:50.839 [DEBUG] [Thread-189490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:51:50.839 [DEBUG] [Thread-189490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:51:50.839 [DEBUG] [Thread-189490] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:51:50.880 [DEBUG] [Thread-189490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:51:50.880 [DEBUG] [Thread-189490] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:51:50.882 [DEBUG] [Thread-189490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:51:50.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:51:50.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:51:50.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:51:50.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:51:50.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:51:50.900 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:51:50.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:51:50.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:51:50.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:51:50.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.410465 -999.00  +19.30  15.67     25   -0.70 1 1 1 1 1   888    0 21.06 69.63 ----- 15.7 15.7 168.2 18.0 26.3 -26.4 25.1 -25.1 25.2 -24.7 26.1 -26.9
2025-11-24T11:51:50.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:51:50.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:51:50.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.410465
2025-11-24T11:51:50.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:51:50.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:51:50.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:51:50.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:51:50.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:51:50.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:51:35', tmtdew=23.23, humidity=20.47, cloud=0.0, wind=18.42, temperature=19.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:51:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:51:50.902 [DEBUG] [Thread-189490] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:51:50.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:51:50.986 [DEBUG] [Thread-189493] [transport.py] [_log()] starting thread (client mode): 0xd0711a20
2025-11-24T11:51:50.986 [DEBUG] [Thread-189493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:51:51.001 [DEBUG] [Thread-189493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:51:51.001 [INFO] [Thread-189493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] client lang: <none>
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] server lang: <none>
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] kex follows: False
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:51:51.009 [DEBUG] [Thread-189493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:51:51.010 [DEBUG] [Thread-189493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:51:51.010 [DEBUG] [Thread-189493] [transport.py] [_log()] Compression: none
2025-11-24T11:51:51.010 [DEBUG] [Thread-189493] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:51:51.066 [DEBUG] [Thread-189493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:51:51.066 [DEBUG] [Thread-189493] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:51:51.067 [DEBUG] [Thread-189493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:51:51.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:51:51.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:51:51.123 [DEBUG] [Thread-189493] [transport.py] [_log()] userauth is OK
2025-11-24T11:51:51.123 [DEBUG] [Thread-189493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:51:51.123 [DEBUG] [Thread-189493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:51:51.123 [DEBUG] [Thread-189493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:51:51.123 [DEBUG] [Thread-189493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:51:51.137 [INFO] [Thread-189493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:51:51.137 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:51:51.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:51:52.077 [DEBUG] [Thread-189493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:51:52.077 [DEBUG] [Thread-189493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:51:52.125 [DEBUG] [Thread-189493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:51:52.125 [DEBUG] [Thread-189493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:51:52.134 [DEBUG] [Thread-189493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:51:52.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:51:52.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-11-24T11:51:52.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-11-24T11:51:52.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:51:52.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:51:52.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:51:52.165 [DEBUG] [Thread-189493] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:51:55.302 [DEBUG] [Thread-189495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:52:10.350 [DEBUG] [Thread-189496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:52:22.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:52:22.182 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:52:22.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-11-24T11:52:22.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 52, 7), 22.79, 21.1, 0.0, 20.68, 19.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:52:22.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:52:07
2025-11-24T11:52:23.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:52:23.288 [DEBUG] [Thread-189497] [transport.py] [_log()] starting thread (client mode): 0xd3151600
2025-11-24T11:52:23.289 [DEBUG] [Thread-189497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:52:23.308 [DEBUG] [Thread-189497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:52:23.308 [INFO] [Thread-189497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:52:23.311 [DEBUG] [Thread-189497] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:52:23.311 [DEBUG] [Thread-189497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:52:23.311 [DEBUG] [Thread-189497] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:52:23.311 [DEBUG] [Thread-189497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] client lang: <none>
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] server lang: <none>
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] kex follows: False
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] Compression: none
2025-11-24T11:52:23.312 [DEBUG] [Thread-189497] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:52:23.329 [DEBUG] [Thread-189497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:52:23.329 [DEBUG] [Thread-189497] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:52:23.330 [DEBUG] [Thread-189497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:52:23.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:52:23.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:52:23.332 [DEBUG] [Thread-189497] [transport.py] [_log()] userauth is OK
2025-11-24T11:52:23.332 [DEBUG] [Thread-189497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:52:23.332 [DEBUG] [Thread-189497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:52:23.333 [DEBUG] [Thread-189497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:52:23.333 [DEBUG] [Thread-189497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:52:23.356 [INFO] [Thread-189497] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:52:23.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:52:23.993 [DEBUG] [Thread-189497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:52:23.993 [DEBUG] [Thread-189497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:52:23.993 [DEBUG] [Thread-189497] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:52:24.034 [DEBUG] [Thread-189497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:52:24.034 [DEBUG] [Thread-189497] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:52:24.036 [DEBUG] [Thread-189497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:52:24.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:52:24.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:52:24.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:52:24.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:52:24.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:52:24.065 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:52:24.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.410812 -999.00  +19.30  20.25     26   -0.30 1 1 1 1 1   888    0 21.67 77.26 ----- 20.2 20.2 169.2 27.1 26.4 -26.7 25.1 -24.3 25.2 -24.2 26.2 -25.3
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.410812
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:52:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:52:07', tmtdew=22.79, humidity=21.1, cloud=0.0, wind=20.68, temperature=19.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:51:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:52:24.066 [DEBUG] [Thread-189497] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:52:24.137 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:52:24.149 [DEBUG] [Thread-189500] [transport.py] [_log()] starting thread (client mode): 0xd31b1090
2025-11-24T11:52:24.149 [DEBUG] [Thread-189500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:52:24.163 [DEBUG] [Thread-189500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:52:24.163 [INFO] [Thread-189500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] client lang: <none>
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] server lang: <none>
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] kex follows: False
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] Compression: none
2025-11-24T11:52:24.171 [DEBUG] [Thread-189500] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:52:24.228 [DEBUG] [Thread-189500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:52:24.228 [DEBUG] [Thread-189500] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:52:24.228 [DEBUG] [Thread-189500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:52:24.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:52:24.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:52:24.286 [DEBUG] [Thread-189500] [transport.py] [_log()] userauth is OK
2025-11-24T11:52:24.286 [DEBUG] [Thread-189500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:52:24.286 [DEBUG] [Thread-189500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:52:24.286 [DEBUG] [Thread-189500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:52:24.286 [DEBUG] [Thread-189500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:52:24.300 [INFO] [Thread-189500] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:52:24.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:52:24.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:52:25.151 [DEBUG] [Thread-189500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:52:25.151 [DEBUG] [Thread-189500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:52:25.198 [DEBUG] [Thread-189500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:52:25.199 [DEBUG] [Thread-189500] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:52:25.207 [DEBUG] [Thread-189500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:52:25.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:52:25.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-11-24T11:52:25.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:52:25.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:52:25.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:52:25.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:52:25.254 [DEBUG] [Thread-189500] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:52:25.384 [DEBUG] [Thread-189502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:52:40.429 [DEBUG] [Thread-189503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:52:42.763 [DEBUG] [Thread-189504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:52:55.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:52:55.271 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:52:55.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-11-24T11:52:55.457 [DEBUG] [Thread-189505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:52:56.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 52, 39), 23.18, 20.75, 0.0, 17.86, 19.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:52:56.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:52:39
2025-11-24T11:52:56.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:52:56.369 [DEBUG] [Thread-189506] [transport.py] [_log()] starting thread (client mode): 0xd31b06a0
2025-11-24T11:52:56.369 [DEBUG] [Thread-189506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:52:56.381 [DEBUG] [Thread-189506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:52:56.382 [INFO] [Thread-189506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] client lang: <none>
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] server lang: <none>
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] kex follows: False
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:52:56.385 [DEBUG] [Thread-189506] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:52:56.386 [DEBUG] [Thread-189506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:52:56.386 [DEBUG] [Thread-189506] [transport.py] [_log()] Compression: none
2025-11-24T11:52:56.386 [DEBUG] [Thread-189506] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:52:56.403 [DEBUG] [Thread-189506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:52:56.404 [DEBUG] [Thread-189506] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:52:56.404 [DEBUG] [Thread-189506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:52:56.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:52:56.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:52:56.407 [DEBUG] [Thread-189506] [transport.py] [_log()] userauth is OK
2025-11-24T11:52:56.407 [DEBUG] [Thread-189506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:52:56.407 [DEBUG] [Thread-189506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:52:56.407 [DEBUG] [Thread-189506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:52:56.407 [DEBUG] [Thread-189506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:52:56.425 [INFO] [Thread-189506] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:52:56.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:52:57.059 [DEBUG] [Thread-189506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:52:57.059 [DEBUG] [Thread-189506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:52:57.059 [DEBUG] [Thread-189506] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:52:57.100 [DEBUG] [Thread-189506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:52:57.100 [DEBUG] [Thread-189506] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:52:57.103 [DEBUG] [Thread-189506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:52:57.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:52:57.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:52:57.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:52:57.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:52:57.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:52:57.130 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:52:57.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:52:57.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:52:57.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:52:57.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.411160 -999.00  +19.50  20.09     26   -0.30 1 1 1 1 1   888    0 21.88 80.84 ----- 20.1 20.1 164.8 22.5 26.3 -25.6 25.2 -25.2 25.3 -25.0 26.2 -26.8
2025-11-24T11:52:57.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:52:57.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:52:57.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.411160
2025-11-24T11:52:57.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:52:57.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:52:57.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:52:57.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:52:57.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:52:57.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:52:39', tmtdew=23.18, humidity=20.75, cloud=0.0, wind=17.86, temperature=19.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:52:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:52:57.133 [DEBUG] [Thread-189506] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:52:57.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:52:57.230 [DEBUG] [Thread-189509] [transport.py] [_log()] starting thread (client mode): 0xd317ce50
2025-11-24T11:52:57.230 [DEBUG] [Thread-189509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:52:57.245 [DEBUG] [Thread-189509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:52:57.245 [INFO] [Thread-189509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:52:57.253 [DEBUG] [Thread-189509] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:52:57.253 [DEBUG] [Thread-189509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:52:57.253 [DEBUG] [Thread-189509] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:52:57.253 [DEBUG] [Thread-189509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:52:57.253 [DEBUG] [Thread-189509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:52:57.254 [DEBUG] [Thread-189509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:52:57.254 [DEBUG] [Thread-189509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:52:57.254 [DEBUG] [Thread-189509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:52:57.254 [DEBUG] [Thread-189509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:52:57.254 [DEBUG] [Thread-189509] [transport.py] [_log()] client lang: <none>
2025-11-24T11:52:57.254 [DEBUG] [Thread-189509] [transport.py] [_log()] server lang: <none>
2025-11-24T11:52:57.254 [DEBUG] [Thread-189509] [transport.py] [_log()] kex follows: False
2025-11-24T11:52:57.254 [DEBUG] [Thread-189509] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:52:57.254 [DEBUG] [Thread-189509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:52:57.255 [DEBUG] [Thread-189509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:52:57.255 [DEBUG] [Thread-189509] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:52:57.255 [DEBUG] [Thread-189509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:52:57.255 [DEBUG] [Thread-189509] [transport.py] [_log()] Compression: none
2025-11-24T11:52:57.255 [DEBUG] [Thread-189509] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:52:57.311 [DEBUG] [Thread-189509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:52:57.311 [DEBUG] [Thread-189509] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:52:57.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:52:57.313 [DEBUG] [Thread-189509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:52:57.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:52:57.367 [DEBUG] [Thread-189509] [transport.py] [_log()] userauth is OK
2025-11-24T11:52:57.367 [DEBUG] [Thread-189509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:52:57.367 [DEBUG] [Thread-189509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:52:57.367 [DEBUG] [Thread-189509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:52:57.368 [DEBUG] [Thread-189509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:52:57.388 [INFO] [Thread-189509] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:52:57.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:52:57.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:52:58.261 [DEBUG] [Thread-189509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:52:58.261 [DEBUG] [Thread-189509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:52:58.309 [DEBUG] [Thread-189509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:52:58.309 [DEBUG] [Thread-189509] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:52:58.318 [DEBUG] [Thread-189509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:52:58.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:52:58.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:52:58.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-11-24T11:52:58.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:52:58.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:52:58.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:52:58.355 [DEBUG] [Thread-189509] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:53:10.483 [DEBUG] [Thread-189511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:53:25.522 [DEBUG] [Thread-189512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:53:28.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:53:28.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:53:28.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-11-24T11:53:29.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 53, 12), 23.02, 21.04, 0.0, 22.32, 19.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:53:29.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:53:12
2025-11-24T11:53:29.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:53:29.443 [DEBUG] [Thread-189513] [transport.py] [_log()] starting thread (client mode): 0xd31b10c0
2025-11-24T11:53:29.444 [DEBUG] [Thread-189513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:53:29.465 [DEBUG] [Thread-189513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:53:29.466 [INFO] [Thread-189513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:53:29.475 [DEBUG] [Thread-189513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:53:29.475 [DEBUG] [Thread-189513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:53:29.475 [DEBUG] [Thread-189513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:53:29.475 [DEBUG] [Thread-189513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:53:29.475 [DEBUG] [Thread-189513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:53:29.475 [DEBUG] [Thread-189513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:53:29.475 [DEBUG] [Thread-189513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:53:29.475 [DEBUG] [Thread-189513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:53:29.475 [DEBUG] [Thread-189513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:53:29.476 [DEBUG] [Thread-189513] [transport.py] [_log()] client lang: <none>
2025-11-24T11:53:29.476 [DEBUG] [Thread-189513] [transport.py] [_log()] server lang: <none>
2025-11-24T11:53:29.476 [DEBUG] [Thread-189513] [transport.py] [_log()] kex follows: False
2025-11-24T11:53:29.476 [DEBUG] [Thread-189513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:53:29.476 [DEBUG] [Thread-189513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:53:29.476 [DEBUG] [Thread-189513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:53:29.476 [DEBUG] [Thread-189513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:53:29.476 [DEBUG] [Thread-189513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:53:29.476 [DEBUG] [Thread-189513] [transport.py] [_log()] Compression: none
2025-11-24T11:53:29.476 [DEBUG] [Thread-189513] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:53:29.494 [DEBUG] [Thread-189513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:53:29.495 [DEBUG] [Thread-189513] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:53:29.495 [DEBUG] [Thread-189513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:53:29.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:53:29.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:53:29.498 [DEBUG] [Thread-189513] [transport.py] [_log()] userauth is OK
2025-11-24T11:53:29.498 [DEBUG] [Thread-189513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:53:29.498 [DEBUG] [Thread-189513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:53:29.498 [DEBUG] [Thread-189513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:53:29.498 [DEBUG] [Thread-189513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:53:29.518 [INFO] [Thread-189513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:53:29.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:53:30.183 [DEBUG] [Thread-189513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:53:30.184 [DEBUG] [Thread-189513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:53:30.184 [DEBUG] [Thread-189513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:53:30.224 [DEBUG] [Thread-189513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:53:30.224 [DEBUG] [Thread-189513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:53:30.226 [DEBUG] [Thread-189513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:53:30.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:53:30.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:53:30.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:53:30.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:53:30.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:53:30.244 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:53:30.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:53:30.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.411507 -999.00  +19.60  16.96     26   +0.00 1 1 1 1 1   888    0 21.46 80.67 ----- 17.0 17.0 164.2 25.3 26.4 -25.8 25.2 -25.0 25.2 -24.6 26.3 -25.6
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.411507
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:53:30.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:53:12', tmtdew=23.02, humidity=21.04, cloud=0.0, wind=22.32, temperature=19.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:52:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:53:30.246 [DEBUG] [Thread-189513] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:53:30.317 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:53:30.329 [DEBUG] [Thread-189516] [transport.py] [_log()] starting thread (client mode): 0xd31502b0
2025-11-24T11:53:30.329 [DEBUG] [Thread-189516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:53:30.345 [DEBUG] [Thread-189516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:53:30.345 [INFO] [Thread-189516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] client lang: <none>
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] server lang: <none>
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] kex follows: False
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] Compression: none
2025-11-24T11:53:30.352 [DEBUG] [Thread-189516] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:53:30.408 [DEBUG] [Thread-189516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:53:30.409 [DEBUG] [Thread-189516] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:53:30.409 [DEBUG] [Thread-189516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:53:30.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:53:30.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:53:30.466 [DEBUG] [Thread-189516] [transport.py] [_log()] userauth is OK
2025-11-24T11:53:30.466 [DEBUG] [Thread-189516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:53:30.466 [DEBUG] [Thread-189516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:53:30.466 [DEBUG] [Thread-189516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:53:30.466 [DEBUG] [Thread-189516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:53:30.480 [INFO] [Thread-189516] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:53:30.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:53:30.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:53:31.348 [DEBUG] [Thread-189516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:53:31.348 [DEBUG] [Thread-189516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:53:31.395 [DEBUG] [Thread-189516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:53:31.396 [DEBUG] [Thread-189516] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:53:31.405 [DEBUG] [Thread-189516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:53:31.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:53:31.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-11-24T11:53:31.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T11:53:31.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:53:31.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:53:31.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:53:31.442 [DEBUG] [Thread-189516] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:53:40.563 [DEBUG] [Thread-189518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:53:42.866 [DEBUG] [Thread-189519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:53:55.615 [DEBUG] [Thread-189520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:54:01.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:54:01.465 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:54:01.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-11-24T11:54:02.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 53, 44), 22.57, 21.67, 0.0, 24.05, 19.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:54:02.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:53:44
2025-11-24T11:54:02.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:54:02.541 [DEBUG] [Thread-189521] [transport.py] [_log()] starting thread (client mode): 0xd3152d70
2025-11-24T11:54:02.541 [DEBUG] [Thread-189521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:54:02.562 [DEBUG] [Thread-189521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:54:02.562 [INFO] [Thread-189521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:54:02.565 [DEBUG] [Thread-189521] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:54:02.565 [DEBUG] [Thread-189521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] client lang: <none>
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] server lang: <none>
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] kex follows: False
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] Compression: none
2025-11-24T11:54:02.566 [DEBUG] [Thread-189521] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:54:02.574 [DEBUG] [Thread-189521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:54:02.574 [DEBUG] [Thread-189521] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:54:02.574 [DEBUG] [Thread-189521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:54:02.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:54:02.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:54:02.575 [DEBUG] [Thread-189521] [transport.py] [_log()] userauth is OK
2025-11-24T11:54:02.575 [DEBUG] [Thread-189521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:54:02.575 [DEBUG] [Thread-189521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:54:02.575 [DEBUG] [Thread-189521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:54:02.575 [DEBUG] [Thread-189521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:54:02.592 [INFO] [Thread-189521] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:54:02.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:54:03.243 [DEBUG] [Thread-189521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:54:03.243 [DEBUG] [Thread-189521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:54:03.244 [DEBUG] [Thread-189521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:54:03.283 [DEBUG] [Thread-189521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:54:03.284 [DEBUG] [Thread-189521] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:54:03.286 [DEBUG] [Thread-189521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:54:03.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:54:03.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:54:03.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:54:03.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:54:03.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:54:03.311 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:54:03.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:54:03.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:54:03.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:54:03.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.412201 -999.00  +19.60  32.21     27   +0.60 1 1 2 1 1   888    0 21.20 63.70 ----- 32.2 32.2 170.6 41.4 26.3 -25.9 25.1 -26.2 25.1 -25.5 26.1 -25.9
2025-11-24T11:54:03.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:54:03.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:54:03.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.412201
2025-11-24T11:54:03.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:54:03.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:54:03.313 [DEBUG] [Thread-189521] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:54:03.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:54:03.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:54:03.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:54:03.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:53:44', tmtdew=22.57, humidity=21.67, cloud=0.0, wind=24.05, temperature=19.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:53:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:54:03.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:54:03.410 [DEBUG] [Thread-189524] [transport.py] [_log()] starting thread (client mode): 0xd073bdc0
2025-11-24T11:54:03.410 [DEBUG] [Thread-189524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:54:03.424 [DEBUG] [Thread-189524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:54:03.424 [INFO] [Thread-189524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:54:03.432 [DEBUG] [Thread-189524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:54:03.432 [DEBUG] [Thread-189524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:54:03.432 [DEBUG] [Thread-189524] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:54:03.432 [DEBUG] [Thread-189524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:54:03.433 [DEBUG] [Thread-189524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:54:03.433 [DEBUG] [Thread-189524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:54:03.433 [DEBUG] [Thread-189524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:54:03.433 [DEBUG] [Thread-189524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:54:03.433 [DEBUG] [Thread-189524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:54:03.433 [DEBUG] [Thread-189524] [transport.py] [_log()] client lang: <none>
2025-11-24T11:54:03.433 [DEBUG] [Thread-189524] [transport.py] [_log()] server lang: <none>
2025-11-24T11:54:03.433 [DEBUG] [Thread-189524] [transport.py] [_log()] kex follows: False
2025-11-24T11:54:03.433 [DEBUG] [Thread-189524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:54:03.434 [DEBUG] [Thread-189524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:54:03.434 [DEBUG] [Thread-189524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:54:03.434 [DEBUG] [Thread-189524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:54:03.434 [DEBUG] [Thread-189524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:54:03.434 [DEBUG] [Thread-189524] [transport.py] [_log()] Compression: none
2025-11-24T11:54:03.434 [DEBUG] [Thread-189524] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:54:03.491 [DEBUG] [Thread-189524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:54:03.491 [DEBUG] [Thread-189524] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:54:03.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:54:03.492 [DEBUG] [Thread-189524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:54:03.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:54:03.547 [DEBUG] [Thread-189524] [transport.py] [_log()] userauth is OK
2025-11-24T11:54:03.547 [DEBUG] [Thread-189524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:54:03.547 [DEBUG] [Thread-189524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:54:03.547 [DEBUG] [Thread-189524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:54:03.547 [DEBUG] [Thread-189524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:54:03.566 [INFO] [Thread-189524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:54:03.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:54:03.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:54:04.427 [DEBUG] [Thread-189524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:54:04.427 [DEBUG] [Thread-189524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:54:04.476 [DEBUG] [Thread-189524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:54:04.476 [DEBUG] [Thread-189524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:54:04.485 [DEBUG] [Thread-189524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:54:04.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:54:04.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:54:04.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-11-24T11:54:04.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:54:04.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:54:04.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:54:04.522 [DEBUG] [Thread-189524] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:54:10.655 [DEBUG] [Thread-189526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:54:25.696 [DEBUG] [Thread-189527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:54:34.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:54:34.545 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:54:34.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:54:35.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 54, 16), 22.29, 22.05, 0.0, 24.35, 19.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:54:35.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:54:16
2025-11-24T11:54:35.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:54:35.539 [DEBUG] [Thread-189528] [transport.py] [_log()] starting thread (client mode): 0xd073ae60
2025-11-24T11:54:35.539 [DEBUG] [Thread-189528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:54:35.559 [DEBUG] [Thread-189528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:54:35.559 [INFO] [Thread-189528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:54:35.562 [DEBUG] [Thread-189528] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] client lang: <none>
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] server lang: <none>
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] kex follows: False
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] Compression: none
2025-11-24T11:54:35.563 [DEBUG] [Thread-189528] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:54:35.581 [DEBUG] [Thread-189528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:54:35.582 [DEBUG] [Thread-189528] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:54:35.582 [DEBUG] [Thread-189528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:54:35.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:54:35.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:54:35.625 [DEBUG] [Thread-189528] [transport.py] [_log()] userauth is OK
2025-11-24T11:54:35.625 [DEBUG] [Thread-189528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:54:35.625 [DEBUG] [Thread-189528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:54:35.625 [DEBUG] [Thread-189528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:54:35.625 [DEBUG] [Thread-189528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:54:35.658 [INFO] [Thread-189528] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:54:35.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:54:36.317 [DEBUG] [Thread-189528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:54:36.318 [DEBUG] [Thread-189528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:54:36.318 [DEBUG] [Thread-189528] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:54:36.359 [DEBUG] [Thread-189528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:54:36.359 [DEBUG] [Thread-189528] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:54:36.362 [DEBUG] [Thread-189528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:54:36.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:54:36.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:54:36.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:54:36.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:54:36.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:54:36.387 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:54:36.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:54:36.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:54:36.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:54:36.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.412549 -999.00  +19.10  19.94     28   +0.30 1 1 1 1 1   888    0 21.49 58.30 ----- 19.9 19.9 183.0 33.5 26.1 -27.8 24.4 -31.8 24.9 -26.3 26.1 -26.8
2025-11-24T11:54:36.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:54:36.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:54:36.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.412549
2025-11-24T11:54:36.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:54:36.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:54:36.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:54:36.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:54:36.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:54:36.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:54:16', tmtdew=22.29, humidity=22.05, cloud=0.0, wind=24.35, temperature=19.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:54:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:54:36.390 [DEBUG] [Thread-189528] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:54:36.474 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:54:36.484 [DEBUG] [Thread-189531] [transport.py] [_log()] starting thread (client mode): 0xd07ebf10
2025-11-24T11:54:36.485 [DEBUG] [Thread-189531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:54:36.499 [DEBUG] [Thread-189531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:54:36.499 [INFO] [Thread-189531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:54:36.507 [DEBUG] [Thread-189531] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:54:36.507 [DEBUG] [Thread-189531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:54:36.507 [DEBUG] [Thread-189531] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:54:36.507 [DEBUG] [Thread-189531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:54:36.507 [DEBUG] [Thread-189531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:54:36.507 [DEBUG] [Thread-189531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:54:36.507 [DEBUG] [Thread-189531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:54:36.507 [DEBUG] [Thread-189531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:54:36.507 [DEBUG] [Thread-189531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:54:36.508 [DEBUG] [Thread-189531] [transport.py] [_log()] client lang: <none>
2025-11-24T11:54:36.508 [DEBUG] [Thread-189531] [transport.py] [_log()] server lang: <none>
2025-11-24T11:54:36.508 [DEBUG] [Thread-189531] [transport.py] [_log()] kex follows: False
2025-11-24T11:54:36.508 [DEBUG] [Thread-189531] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:54:36.508 [DEBUG] [Thread-189531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:54:36.508 [DEBUG] [Thread-189531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:54:36.508 [DEBUG] [Thread-189531] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:54:36.508 [DEBUG] [Thread-189531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:54:36.508 [DEBUG] [Thread-189531] [transport.py] [_log()] Compression: none
2025-11-24T11:54:36.508 [DEBUG] [Thread-189531] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:54:36.567 [DEBUG] [Thread-189531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:54:36.567 [DEBUG] [Thread-189531] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:54:36.568 [DEBUG] [Thread-189531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:54:36.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:54:36.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:54:36.623 [DEBUG] [Thread-189531] [transport.py] [_log()] userauth is OK
2025-11-24T11:54:36.623 [DEBUG] [Thread-189531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:54:36.623 [DEBUG] [Thread-189531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:54:36.624 [DEBUG] [Thread-189531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:54:36.624 [DEBUG] [Thread-189531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:54:36.642 [INFO] [Thread-189531] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:54:36.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:54:36.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:54:37.503 [DEBUG] [Thread-189531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:54:37.504 [DEBUG] [Thread-189531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:54:37.552 [DEBUG] [Thread-189531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:54:37.552 [DEBUG] [Thread-189531] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:54:37.561 [DEBUG] [Thread-189531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:54:37.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:54:37.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-11-24T11:54:37.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-11-24T11:54:37.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:54:37.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:54:37.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:54:37.600 [DEBUG] [Thread-189531] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:54:40.740 [DEBUG] [Thread-189533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:54:42.904 [DEBUG] [Thread-189534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:54:55.794 [DEBUG] [Thread-189535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:55:07.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:55:07.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:55:07.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:55:08.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 54, 49), 21.62, 22.81, 0.0, 20.94, 19.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:55:08.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:54:49
2025-11-24T11:55:08.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:55:08.607 [DEBUG] [Thread-189536] [transport.py] [_log()] starting thread (client mode): 0xd07eba60
2025-11-24T11:55:08.607 [DEBUG] [Thread-189536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:55:08.631 [DEBUG] [Thread-189536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:55:08.631 [INFO] [Thread-189536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] client lang: <none>
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] server lang: <none>
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] kex follows: False
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:55:08.635 [DEBUG] [Thread-189536] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:55:08.636 [DEBUG] [Thread-189536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:55:08.636 [DEBUG] [Thread-189536] [transport.py] [_log()] Compression: none
2025-11-24T11:55:08.636 [DEBUG] [Thread-189536] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:55:08.649 [DEBUG] [Thread-189536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:55:08.649 [DEBUG] [Thread-189536] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:55:08.649 [DEBUG] [Thread-189536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:55:08.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:55:08.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:55:08.650 [DEBUG] [Thread-189536] [transport.py] [_log()] userauth is OK
2025-11-24T11:55:08.650 [DEBUG] [Thread-189536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:55:08.650 [DEBUG] [Thread-189536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:55:08.650 [DEBUG] [Thread-189536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:55:08.650 [DEBUG] [Thread-189536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:55:08.676 [INFO] [Thread-189536] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:55:08.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:55:10.825 [DEBUG] [Thread-189538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:55:11.606 [DEBUG] [Thread-189536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:55:11.606 [DEBUG] [Thread-189536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:55:11.606 [DEBUG] [Thread-189536] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:55:11.647 [DEBUG] [Thread-189536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:55:11.647 [DEBUG] [Thread-189536] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:55:11.649 [DEBUG] [Thread-189536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:55:11.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:55:11.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:55:11.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:55:11.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:55:11.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:55:11.677 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:55:11.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.412896 -999.00  +19.00  14.75     29   +0.50 1 1 1 1 1   888    0 20.78 50.54 ----- 14.8 14.8 161.6 20.7 26.0 -26.0 24.8 -25.9 25.0 -23.1 25.9 -26.4
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.412896
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:55:11.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:54:49', tmtdew=21.62, humidity=22.81, cloud=0.0, wind=20.94, temperature=19.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:54:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:55:11.678 [DEBUG] [Thread-189536] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:55:11.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:55:11.761 [DEBUG] [Thread-189540] [transport.py] [_log()] starting thread (client mode): 0xd07eb1f0
2025-11-24T11:55:11.762 [DEBUG] [Thread-189540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:55:11.777 [DEBUG] [Thread-189540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:55:11.777 [INFO] [Thread-189540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:55:11.784 [DEBUG] [Thread-189540] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:55:11.784 [DEBUG] [Thread-189540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] client lang: <none>
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] server lang: <none>
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] kex follows: False
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] Compression: none
2025-11-24T11:55:11.785 [DEBUG] [Thread-189540] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:55:11.842 [DEBUG] [Thread-189540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:55:11.842 [DEBUG] [Thread-189540] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:55:11.842 [DEBUG] [Thread-189540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:55:11.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:55:11.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:55:11.898 [DEBUG] [Thread-189540] [transport.py] [_log()] userauth is OK
2025-11-24T11:55:11.898 [DEBUG] [Thread-189540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:55:11.898 [DEBUG] [Thread-189540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:55:11.898 [DEBUG] [Thread-189540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:55:11.898 [DEBUG] [Thread-189540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:55:11.912 [INFO] [Thread-189540] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:55:11.912 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:55:11.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:55:12.811 [DEBUG] [Thread-189540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:55:12.811 [DEBUG] [Thread-189540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:55:12.860 [DEBUG] [Thread-189540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:55:12.860 [DEBUG] [Thread-189540] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:55:12.869 [DEBUG] [Thread-189540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:55:12.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:55:12.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-11-24T11:55:12.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-11-24T11:55:12.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:55:12.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:55:12.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:55:12.906 [DEBUG] [Thread-189540] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:55:25.862 [DEBUG] [Thread-189542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:55:40.921 [DEBUG] [Thread-189543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:55:42.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:55:42.927 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:55:42.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-11-24T11:55:43.142 [DEBUG] [Thread-189544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:55:43.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 55, 21), 21.94, 22.35, 0.0, 24.1, 19.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:55:43.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:55:21
2025-11-24T11:55:43.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:55:44.011 [DEBUG] [Thread-189545] [transport.py] [_log()] starting thread (client mode): 0xd317d5a0
2025-11-24T11:55:44.011 [DEBUG] [Thread-189545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:55:44.032 [DEBUG] [Thread-189545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:55:44.032 [INFO] [Thread-189545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:55:44.036 [DEBUG] [Thread-189545] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:55:44.036 [DEBUG] [Thread-189545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:55:44.036 [DEBUG] [Thread-189545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:55:44.036 [DEBUG] [Thread-189545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:55:44.036 [DEBUG] [Thread-189545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:55:44.036 [DEBUG] [Thread-189545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:55:44.036 [DEBUG] [Thread-189545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:55:44.036 [DEBUG] [Thread-189545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:55:44.036 [DEBUG] [Thread-189545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:55:44.036 [DEBUG] [Thread-189545] [transport.py] [_log()] client lang: <none>
2025-11-24T11:55:44.037 [DEBUG] [Thread-189545] [transport.py] [_log()] server lang: <none>
2025-11-24T11:55:44.037 [DEBUG] [Thread-189545] [transport.py] [_log()] kex follows: False
2025-11-24T11:55:44.037 [DEBUG] [Thread-189545] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:55:44.037 [DEBUG] [Thread-189545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:55:44.037 [DEBUG] [Thread-189545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:55:44.037 [DEBUG] [Thread-189545] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:55:44.037 [DEBUG] [Thread-189545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:55:44.037 [DEBUG] [Thread-189545] [transport.py] [_log()] Compression: none
2025-11-24T11:55:44.037 [DEBUG] [Thread-189545] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:55:44.054 [DEBUG] [Thread-189545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:55:44.055 [DEBUG] [Thread-189545] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:55:44.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:55:44.056 [DEBUG] [Thread-189545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:55:44.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:55:44.058 [DEBUG] [Thread-189545] [transport.py] [_log()] userauth is OK
2025-11-24T11:55:44.058 [DEBUG] [Thread-189545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:55:44.058 [DEBUG] [Thread-189545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:55:44.058 [DEBUG] [Thread-189545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:55:44.058 [DEBUG] [Thread-189545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:55:44.082 [INFO] [Thread-189545] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:55:44.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:55:44.695 [DEBUG] [Thread-189545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:55:44.695 [DEBUG] [Thread-189545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:55:44.695 [DEBUG] [Thread-189545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:55:44.736 [DEBUG] [Thread-189545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:55:44.736 [DEBUG] [Thread-189545] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:55:44.738 [DEBUG] [Thread-189545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:55:44.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:55:44.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:55:44.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:55:44.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:55:44.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:55:44.765 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:55:44.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:55:44.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:55:44.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:55:44.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.413243 -999.00  +19.20  23.98     29   +0.70 1 1 1 1 1   888    0 20.63 42.34 ----- 24.0 24.0 162.6 29.4 26.1 -25.1 25.0 -24.7 25.1 -23.1 26.0 -26.0
2025-11-24T11:55:44.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:55:44.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:55:44.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.413243
2025-11-24T11:55:44.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:55:44.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:55:44.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:55:44.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:55:44.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:55:44.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:55:21', tmtdew=21.94, humidity=22.35, cloud=0.0, wind=24.1, temperature=19.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:55:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:55:44.766 [DEBUG] [Thread-189545] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:55:44.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:55:44.851 [DEBUG] [Thread-189548] [transport.py] [_log()] starting thread (client mode): 0xd0702e60
2025-11-24T11:55:44.851 [DEBUG] [Thread-189548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:55:44.865 [DEBUG] [Thread-189548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:55:44.865 [INFO] [Thread-189548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] client lang: <none>
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] server lang: <none>
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] kex follows: False
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] Compression: none
2025-11-24T11:55:44.873 [DEBUG] [Thread-189548] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:55:44.929 [DEBUG] [Thread-189548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:55:44.929 [DEBUG] [Thread-189548] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:55:44.938 [DEBUG] [Thread-189548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:55:44.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:55:44.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:55:44.987 [DEBUG] [Thread-189548] [transport.py] [_log()] userauth is OK
2025-11-24T11:55:44.987 [DEBUG] [Thread-189548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:55:44.987 [DEBUG] [Thread-189548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:55:44.987 [DEBUG] [Thread-189548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:55:44.987 [DEBUG] [Thread-189548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:55:45.006 [INFO] [Thread-189548] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:55:45.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:55:45.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:55:45.901 [DEBUG] [Thread-189548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:55:45.901 [DEBUG] [Thread-189548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:55:45.949 [DEBUG] [Thread-189548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:55:45.949 [DEBUG] [Thread-189548] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:55:45.958 [DEBUG] [Thread-189548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:55:45.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:55:45.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-11-24T11:55:45.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-11-24T11:55:45.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:55:45.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:55:45.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:55:45.990 [DEBUG] [Thread-189548] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:55:55.949 [DEBUG] [Thread-189550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:56:10.994 [DEBUG] [Thread-189551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:56:16.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:56:16.011 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:56:16.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-11-24T11:56:16.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 55, 54), 22.0, 22.5, 0.0, 27.26, 19.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:56:16.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:55:54
2025-11-24T11:56:16.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:56:17.147 [DEBUG] [Thread-189552] [transport.py] [_log()] starting thread (client mode): 0xd07e9ae0
2025-11-24T11:56:17.147 [DEBUG] [Thread-189552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:56:17.168 [DEBUG] [Thread-189552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:56:17.168 [INFO] [Thread-189552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] client lang: <none>
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] server lang: <none>
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] kex follows: False
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:56:17.171 [DEBUG] [Thread-189552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:56:17.172 [DEBUG] [Thread-189552] [transport.py] [_log()] Compression: none
2025-11-24T11:56:17.172 [DEBUG] [Thread-189552] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:56:17.186 [DEBUG] [Thread-189552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:56:17.186 [DEBUG] [Thread-189552] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:56:17.186 [DEBUG] [Thread-189552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:56:17.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:56:17.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:56:17.187 [DEBUG] [Thread-189552] [transport.py] [_log()] userauth is OK
2025-11-24T11:56:17.187 [DEBUG] [Thread-189552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:56:17.187 [DEBUG] [Thread-189552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:56:17.187 [DEBUG] [Thread-189552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:56:17.187 [DEBUG] [Thread-189552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:56:17.199 [INFO] [Thread-189552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:56:17.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:56:17.987 [DEBUG] [Thread-189552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:56:17.988 [DEBUG] [Thread-189552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:56:17.988 [DEBUG] [Thread-189552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:56:18.029 [DEBUG] [Thread-189552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:56:18.029 [DEBUG] [Thread-189552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:56:18.031 [DEBUG] [Thread-189552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:56:18.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:56:18.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:56:18.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:56:18.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:56:18.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:56:18.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:56:18.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:56:18.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:56:18.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:56:18.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.413590 -999.00  +19.30  23.46     28   +0.60 1 1 1 1 1   888    0 20.63 36.85 ----- 23.5 23.5 180.6 29.4 -999.0 -999.0 24.6 -31.9 24.9 -25.0 26.1 -27.1
2025-11-24T11:56:18.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:56:18.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:56:18.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.413590
2025-11-24T11:56:18.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:56:18.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:56:18.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:56:18.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:56:18.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:56:18.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:55:54', tmtdew=22.0, humidity=22.5, cloud=0.0, wind=27.26, temperature=19.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:55:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:56:18.052 [DEBUG] [Thread-189552] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:56: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-11-24T11:56:18.135 [DEBUG] [Thread-189555] [transport.py] [_log()] starting thread (client mode): 0xc9b820e0
2025-11-24T11:56:18.135 [DEBUG] [Thread-189555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:56:18.152 [DEBUG] [Thread-189555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:56:18.152 [INFO] [Thread-189555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] client lang: <none>
2025-11-24T11:56:18.159 [DEBUG] [Thread-189555] [transport.py] [_log()] server lang: <none>
2025-11-24T11:56:18.160 [DEBUG] [Thread-189555] [transport.py] [_log()] kex follows: False
2025-11-24T11:56:18.160 [DEBUG] [Thread-189555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:56:18.160 [DEBUG] [Thread-189555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:56:18.160 [DEBUG] [Thread-189555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:56:18.160 [DEBUG] [Thread-189555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:56:18.160 [DEBUG] [Thread-189555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:56:18.160 [DEBUG] [Thread-189555] [transport.py] [_log()] Compression: none
2025-11-24T11:56:18.160 [DEBUG] [Thread-189555] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:56:18.217 [DEBUG] [Thread-189555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:56:18.217 [DEBUG] [Thread-189555] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:56:18.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:56:18.217 [DEBUG] [Thread-189555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:56:18.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:56:18.274 [DEBUG] [Thread-189555] [transport.py] [_log()] userauth is OK
2025-11-24T11:56:18.274 [DEBUG] [Thread-189555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:56:18.274 [DEBUG] [Thread-189555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:56:18.274 [DEBUG] [Thread-189555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:56:18.274 [DEBUG] [Thread-189555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:56:18.288 [INFO] [Thread-189555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:56:18.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:56:18.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:56:19.135 [DEBUG] [Thread-189555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:56:19.135 [DEBUG] [Thread-189555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:56:19.182 [DEBUG] [Thread-189555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:56:19.182 [DEBUG] [Thread-189555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:56:19.190 [DEBUG] [Thread-189555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:56:19.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:56:19.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-11-24T11:56:19.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-11-24T11:56:19.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:56:19.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:56:19.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:56:19.228 [DEBUG] [Thread-189555] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:56:26.028 [DEBUG] [Thread-189557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:56:41.083 [DEBUG] [Thread-189558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:56:43.190 [DEBUG] [Thread-189559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:56:49.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:56:49.229 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:56: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-11-24T11:56:50.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 56, 26), 21.92, 22.63, 0.0, 25.21, 19.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:56:50.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:56:26
2025-11-24T11:56:50.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:56:50.334 [DEBUG] [Thread-189560] [transport.py] [_log()] starting thread (client mode): 0xd073bbb0
2025-11-24T11:56:50.334 [DEBUG] [Thread-189560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:56:50.350 [DEBUG] [Thread-189560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:56:50.350 [INFO] [Thread-189560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] client lang: <none>
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] server lang: <none>
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] kex follows: False
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] Compression: none
2025-11-24T11:56:50.353 [DEBUG] [Thread-189560] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:56:50.370 [DEBUG] [Thread-189560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:56:50.371 [DEBUG] [Thread-189560] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:56:50.371 [DEBUG] [Thread-189560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:56:50.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:56:50.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:56:50.373 [DEBUG] [Thread-189560] [transport.py] [_log()] userauth is OK
2025-11-24T11:56:50.374 [DEBUG] [Thread-189560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:56:50.374 [DEBUG] [Thread-189560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:56:50.374 [DEBUG] [Thread-189560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:56:50.374 [DEBUG] [Thread-189560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:56:50.397 [INFO] [Thread-189560] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:56:50.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:56:51.054 [DEBUG] [Thread-189560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:56:51.054 [DEBUG] [Thread-189560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:56:51.055 [DEBUG] [Thread-189560] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:56:51.095 [DEBUG] [Thread-189560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:56:51.095 [DEBUG] [Thread-189560] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:56:51.098 [DEBUG] [Thread-189560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:56:51.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:56:51.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:56:51.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:56:51.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:56:51.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:56:51.119 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:56:51.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:56:51.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:56:51.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:56:51.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.413937 -999.00  +19.50  24.24     28   +0.70 1 1 1 1 1   888    0 20.16 31.83 ----- 24.2 24.2 183.2 28.6 25.9 -24.9 24.6 -28.3 24.9 -25.4 25.8 -25.4
2025-11-24T11:56:51.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:56:51.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:56:51.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.413937
2025-11-24T11:56:51.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:56:51.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:56:51.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:56:51.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:56:51.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:56:51.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:56:26', tmtdew=21.92, humidity=22.63, cloud=0.0, wind=25.21, temperature=19.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:56:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:56:51.122 [DEBUG] [Thread-189560] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:56:51.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:56:51.218 [DEBUG] [Thread-189563] [transport.py] [_log()] starting thread (client mode): 0xd073a260
2025-11-24T11:56:51.218 [DEBUG] [Thread-189563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:56:51.234 [DEBUG] [Thread-189563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:56:51.234 [INFO] [Thread-189563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] client lang: <none>
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] server lang: <none>
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] kex follows: False
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] Compression: none
2025-11-24T11:56:51.242 [DEBUG] [Thread-189563] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:56:51.299 [DEBUG] [Thread-189563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:56:51.299 [DEBUG] [Thread-189563] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:56:51.300 [DEBUG] [Thread-189563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:56:51.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:56:51.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:56:51.354 [DEBUG] [Thread-189563] [transport.py] [_log()] userauth is OK
2025-11-24T11:56:51.354 [DEBUG] [Thread-189563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:56:51.355 [DEBUG] [Thread-189563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:56:51.355 [DEBUG] [Thread-189563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:56:51.355 [DEBUG] [Thread-189563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:56:51.376 [INFO] [Thread-189563] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:56:51.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:56:51.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:56:52.256 [DEBUG] [Thread-189563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:56:52.256 [DEBUG] [Thread-189563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:56:52.304 [DEBUG] [Thread-189563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:56:52.304 [DEBUG] [Thread-189563] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:56:52.312 [DEBUG] [Thread-189563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:56:52.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:56:52.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-11-24T11:56:52.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-11-24T11:56:52.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:56:52.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:56:52.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:56:52.343 [DEBUG] [Thread-189563] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:56:56.123 [DEBUG] [Thread-189565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:57:11.162 [DEBUG] [Thread-189566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:57:22.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:57:22.366 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:57:22.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-11-24T11:57:23.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 56, 58), 21.83, 22.52, 0.0, 21.3, 19.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:57:23.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:56:58
2025-11-24T11:57:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:57:23.428 [DEBUG] [Thread-189567] [transport.py] [_log()] starting thread (client mode): 0xd0701750
2025-11-24T11:57:23.428 [DEBUG] [Thread-189567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:57:23.449 [DEBUG] [Thread-189567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:57:23.449 [INFO] [Thread-189567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] client lang: <none>
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] server lang: <none>
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] kex follows: False
2025-11-24T11:57:23.453 [DEBUG] [Thread-189567] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:57:23.454 [DEBUG] [Thread-189567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:57:23.454 [DEBUG] [Thread-189567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:57:23.454 [DEBUG] [Thread-189567] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:57:23.454 [DEBUG] [Thread-189567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:57:23.454 [DEBUG] [Thread-189567] [transport.py] [_log()] Compression: none
2025-11-24T11:57:23.454 [DEBUG] [Thread-189567] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:57:23.472 [DEBUG] [Thread-189567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:57:23.472 [DEBUG] [Thread-189567] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:57:23.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:57:23.474 [DEBUG] [Thread-189567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:57:23.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:57:23.475 [DEBUG] [Thread-189567] [transport.py] [_log()] userauth is OK
2025-11-24T11:57:23.476 [DEBUG] [Thread-189567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:57:23.476 [DEBUG] [Thread-189567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:57:23.476 [DEBUG] [Thread-189567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:57:23.476 [DEBUG] [Thread-189567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:57:23.500 [INFO] [Thread-189567] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:57:23.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:57:24.308 [DEBUG] [Thread-189567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:57:24.308 [DEBUG] [Thread-189567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:57:24.308 [DEBUG] [Thread-189567] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:57:24.349 [DEBUG] [Thread-189567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:57:24.349 [DEBUG] [Thread-189567] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:57:24.351 [DEBUG] [Thread-189567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:57:24.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:57:24.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:57:24.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:57:24.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:57:24.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:57:24.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:57:24.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:57:24.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:57:24.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:57:24.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.414285 -999.00  +19.20  18.83     28   +0.40 1 1 1 1 1   888    0 20.48 33.16 ----- 18.8 18.8 190.0 30.1 25.8 -25.9 24.4 -30.0 24.9 -23.3 25.7 -26.5
2025-11-24T11:57:24.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:57:24.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:57:24.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.414285
2025-11-24T11:57:24.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:57:24.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:57:24.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:57:24.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:57:24.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:57:24.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:56:58', tmtdew=21.83, humidity=22.52, cloud=0.0, wind=21.3, temperature=19.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:56:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:57:24.370 [DEBUG] [Thread-189567] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:57:24.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:57:24.454 [DEBUG] [Thread-189570] [transport.py] [_log()] starting thread (client mode): 0xd0701090
2025-11-24T11:57:24.454 [DEBUG] [Thread-189570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:57:24.469 [DEBUG] [Thread-189570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:57:24.469 [INFO] [Thread-189570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:57:24.476 [DEBUG] [Thread-189570] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] client lang: <none>
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] server lang: <none>
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] kex follows: False
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] Compression: none
2025-11-24T11:57:24.477 [DEBUG] [Thread-189570] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:57:24.538 [DEBUG] [Thread-189570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:57:24.539 [DEBUG] [Thread-189570] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:57:24.539 [DEBUG] [Thread-189570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:57:24.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:57:24.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:57:24.595 [DEBUG] [Thread-189570] [transport.py] [_log()] userauth is OK
2025-11-24T11:57:24.595 [DEBUG] [Thread-189570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:57:24.595 [DEBUG] [Thread-189570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:57:24.595 [DEBUG] [Thread-189570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:57:24.595 [DEBUG] [Thread-189570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:57:24.615 [INFO] [Thread-189570] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:57:24.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:57:24.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:57:25.473 [DEBUG] [Thread-189570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:57:25.473 [DEBUG] [Thread-189570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:57:25.521 [DEBUG] [Thread-189570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:57:25.522 [DEBUG] [Thread-189570] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:57:25.531 [DEBUG] [Thread-189570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:57:25.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:57:25.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-11-24T11:57:25.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-11-24T11:57:25.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:57:25.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:57:25.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:57:25.569 [DEBUG] [Thread-189570] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:57:26.197 [DEBUG] [Thread-189572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:57:36.183 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:57:36.184 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:57:41.258 [DEBUG] [Thread-189574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:57:43.439 [DEBUG] [Thread-189575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:57:47.058 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:57:47.060 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:57:55.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:57:55.568 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:57:55.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-11-24T11:57:56.289 [DEBUG] [Thread-189576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:57:56.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 57, 31), 21.79, 22.57, 0.0, 19.8, 19.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:57:56.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:57:31
2025-11-24T11:57:56.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:57:56.715 [DEBUG] [Thread-189577] [transport.py] [_log()] starting thread (client mode): 0xd0702e60
2025-11-24T11:57:56.715 [DEBUG] [Thread-189577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:57:56.736 [DEBUG] [Thread-189577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:57:56.736 [INFO] [Thread-189577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:57:56.739 [DEBUG] [Thread-189577] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:57:56.739 [DEBUG] [Thread-189577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:57:56.739 [DEBUG] [Thread-189577] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:57:56.739 [DEBUG] [Thread-189577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] client lang: <none>
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] server lang: <none>
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] kex follows: False
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] Compression: none
2025-11-24T11:57:56.740 [DEBUG] [Thread-189577] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:57:56.761 [DEBUG] [Thread-189577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:57:56.762 [DEBUG] [Thread-189577] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:57:56.762 [DEBUG] [Thread-189577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:57:56.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:57:56.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:57:56.765 [DEBUG] [Thread-189577] [transport.py] [_log()] userauth is OK
2025-11-24T11:57:56.765 [DEBUG] [Thread-189577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:57:56.765 [DEBUG] [Thread-189577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:57:56.766 [DEBUG] [Thread-189577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:57:56.766 [DEBUG] [Thread-189577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:57:56.806 [INFO] [Thread-189577] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:57:56.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:57:57.433 [DEBUG] [Thread-189577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:57:57.433 [DEBUG] [Thread-189577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:57:57.434 [DEBUG] [Thread-189577] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:57:57.474 [DEBUG] [Thread-189577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:57:57.474 [DEBUG] [Thread-189577] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:57:57.477 [DEBUG] [Thread-189577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:57:57.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:57:57.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:57:57.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:57:57.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:57:57.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:57:57.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:57:57.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.414979 -999.00  +19.30  10.76     28   +0.50 1 1 1 1 1   888    0 19.79 25.00 ----- 10.8 10.8 181.8 23.9 25.9 -25.9 24.6 -24.6 24.9 -23.7 25.8 -26.0
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.414979
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:57:57.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:57:31', tmtdew=21.79, humidity=22.57, cloud=0.0, wind=19.8, temperature=19.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:57:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:57:57.505 [DEBUG] [Thread-189577] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:57:57.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:57:57.590 [DEBUG] [Thread-189580] [transport.py] [_log()] starting thread (client mode): 0xd073b280
2025-11-24T11:57:57.591 [DEBUG] [Thread-189580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:57:57.605 [DEBUG] [Thread-189580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:57:57.605 [INFO] [Thread-189580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] client lang: <none>
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] server lang: <none>
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] kex follows: False
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:57:57.613 [DEBUG] [Thread-189580] [transport.py] [_log()] Compression: none
2025-11-24T11:57:57.614 [DEBUG] [Thread-189580] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:57:57.668 [DEBUG] [Thread-189580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:57:57.669 [DEBUG] [Thread-189580] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:57:57.669 [DEBUG] [Thread-189580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:57:57.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:57:57.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:57:57.726 [DEBUG] [Thread-189580] [transport.py] [_log()] userauth is OK
2025-11-24T11:57:57.726 [DEBUG] [Thread-189580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:57:57.726 [DEBUG] [Thread-189580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:57:57.726 [DEBUG] [Thread-189580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:57:57.726 [DEBUG] [Thread-189580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:57:57.740 [INFO] [Thread-189580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:57:57.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:57:57.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:57:58.601 [DEBUG] [Thread-189580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:57:58.601 [DEBUG] [Thread-189580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:57:58.649 [DEBUG] [Thread-189580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:57:58.658 [DEBUG] [Thread-189580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:57:58.667 [DEBUG] [Thread-189580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:57:58.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:57:58.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:57:58.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-11-24T11:57:58.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:57:58.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:57:58.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:57:58.702 [DEBUG] [Thread-189580] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:58:11.313 [DEBUG] [Thread-189582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:58:26.362 [DEBUG] [Thread-189583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:58:28.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:58:28.725 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:58:28.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-11-24T11:58:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 58, 3), 21.7, 22.72, 0.0, 17.98, 19.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:58:29.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:58:03
2025-11-24T11:58:29.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:58:29.828 [DEBUG] [Thread-189584] [transport.py] [_log()] starting thread (client mode): 0xd317edd0
2025-11-24T11:58:29.828 [DEBUG] [Thread-189584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:58:29.849 [DEBUG] [Thread-189584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:58:29.849 [INFO] [Thread-189584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] client lang: <none>
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] server lang: <none>
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] kex follows: False
2025-11-24T11:58:29.852 [DEBUG] [Thread-189584] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:58:29.853 [DEBUG] [Thread-189584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:58:29.853 [DEBUG] [Thread-189584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:58:29.853 [DEBUG] [Thread-189584] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:58:29.853 [DEBUG] [Thread-189584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:58:29.853 [DEBUG] [Thread-189584] [transport.py] [_log()] Compression: none
2025-11-24T11:58:29.853 [DEBUG] [Thread-189584] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:58:29.872 [DEBUG] [Thread-189584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:58:29.873 [DEBUG] [Thread-189584] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:58:29.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:58:29.874 [DEBUG] [Thread-189584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:58:29.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:58:29.876 [DEBUG] [Thread-189584] [transport.py] [_log()] userauth is OK
2025-11-24T11:58:29.876 [DEBUG] [Thread-189584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:58:29.876 [DEBUG] [Thread-189584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:58:29.876 [DEBUG] [Thread-189584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:58:29.876 [DEBUG] [Thread-189584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:58:29.895 [INFO] [Thread-189584] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:58:29.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:58:30.640 [DEBUG] [Thread-189584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:58:30.640 [DEBUG] [Thread-189584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:58:30.640 [DEBUG] [Thread-189584] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:58:30.681 [DEBUG] [Thread-189584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:58:30.681 [DEBUG] [Thread-189584] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:58:30.683 [DEBUG] [Thread-189584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:58:30.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:58:30.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:58:30.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:58:30.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:58:30.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:58:30.702 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:58:30.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.415326 -999.00  +19.20  12.95     28   +0.50 1 1 1 1 1   888    0 19.68 17.91 ----- 12.9 12.9 174.4 17.0 25.9 -25.1 24.6 -28.5 24.9 -24.0 25.8 -25.8
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.415326
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:58:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:58:30.711 [DEBUG] [Thread-189584] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:58:30.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:58:03', tmtdew=21.7, humidity=22.72, cloud=0.0, wind=17.98, temperature=19.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:58:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:58:30.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:58:30.795 [DEBUG] [Thread-189587] [transport.py] [_log()] starting thread (client mode): 0xc9b82f20
2025-11-24T11:58:30.795 [DEBUG] [Thread-189587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:58:30.811 [DEBUG] [Thread-189587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:58:30.811 [INFO] [Thread-189587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] client lang: <none>
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] server lang: <none>
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] kex follows: False
2025-11-24T11:58:30.818 [DEBUG] [Thread-189587] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:58:30.819 [DEBUG] [Thread-189587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:58:30.819 [DEBUG] [Thread-189587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:58:30.819 [DEBUG] [Thread-189587] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:58:30.819 [DEBUG] [Thread-189587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:58:30.819 [DEBUG] [Thread-189587] [transport.py] [_log()] Compression: none
2025-11-24T11:58:30.819 [DEBUG] [Thread-189587] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:58:30.873 [DEBUG] [Thread-189587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:58:30.873 [DEBUG] [Thread-189587] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:58:30.873 [DEBUG] [Thread-189587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:58:30.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:58:30.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:58:30.930 [DEBUG] [Thread-189587] [transport.py] [_log()] userauth is OK
2025-11-24T11:58:30.930 [DEBUG] [Thread-189587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:58:30.930 [DEBUG] [Thread-189587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:58:30.930 [DEBUG] [Thread-189587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:58:30.930 [DEBUG] [Thread-189587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:58:30.944 [INFO] [Thread-189587] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:58:30.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:58:30.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:58:31.828 [DEBUG] [Thread-189587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:58:31.829 [DEBUG] [Thread-189587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:58:31.876 [DEBUG] [Thread-189587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:58:31.877 [DEBUG] [Thread-189587] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:58:31.886 [DEBUG] [Thread-189587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:58:31.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:58:31.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-11-24T11:58:31.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-11-24T11:58:31.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:58:31.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:58:31.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:58:31.922 [DEBUG] [Thread-189587] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:58:41.405 [DEBUG] [Thread-189589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:58:43.709 [DEBUG] [Thread-189590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:58:47.210 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:58:47.220 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:58:56.451 [DEBUG] [Thread-189591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:59:01.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:59:01.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:59:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T11:59:02.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 58, 36), 21.96, 22.38, 0.0, 18.99, 19.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:59:02.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:58:36
2025-11-24T11:59:02.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:59:03.031 [DEBUG] [Thread-189592] [transport.py] [_log()] starting thread (client mode): 0xd0739b10
2025-11-24T11:59:03.032 [DEBUG] [Thread-189592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:59:03.051 [DEBUG] [Thread-189592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:59:03.051 [INFO] [Thread-189592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:59:03.054 [DEBUG] [Thread-189592] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:59:03.054 [DEBUG] [Thread-189592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] client lang: <none>
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] server lang: <none>
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] kex follows: False
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:59:03.055 [DEBUG] [Thread-189592] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:59:03.056 [DEBUG] [Thread-189592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:59:03.056 [DEBUG] [Thread-189592] [transport.py] [_log()] Compression: none
2025-11-24T11:59:03.056 [DEBUG] [Thread-189592] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:59:03.073 [DEBUG] [Thread-189592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:59:03.074 [DEBUG] [Thread-189592] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:59:03.075 [DEBUG] [Thread-189592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:59:03.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:59:03.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:59:03.116 [DEBUG] [Thread-189592] [transport.py] [_log()] userauth is OK
2025-11-24T11:59:03.117 [DEBUG] [Thread-189592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:59:03.117 [DEBUG] [Thread-189592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:59:03.117 [DEBUG] [Thread-189592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:59:03.117 [DEBUG] [Thread-189592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:59:03.149 [INFO] [Thread-189592] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:59:03.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:59:03.823 [DEBUG] [Thread-189592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:59:03.823 [DEBUG] [Thread-189592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:59:03.823 [DEBUG] [Thread-189592] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:59:03.864 [DEBUG] [Thread-189592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:59:03.864 [DEBUG] [Thread-189592] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:59:03.866 [DEBUG] [Thread-189592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:59:03.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:59:03.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:59:03.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:59:03.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:59:03.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:59:03.882 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:59:03.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:59:03.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:59:03.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:59:03.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.415674 -999.00  +19.30  13.37     28   +0.30 1 2 1 1 1   888    0 19.72 13.13 ----- 13.4 13.4 167.8 20.7 26.0 -25.8 24.8 -23.1 25.0 -22.9 25.9 -25.3
2025-11-24T11:59:03.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:59:03.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:59:03.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.415674
2025-11-24T11:59:03.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:59:03.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:59:03.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:59:03.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:59:03.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-11-24T11:59:03.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:58:36', tmtdew=21.96, humidity=22.38, cloud=0.0, wind=18.99, temperature=19.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:58:34.234', atlas_cloud=2, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:59:03.883 [DEBUG] [Thread-189592] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:59:03.956 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:59:03.968 [DEBUG] [Thread-189595] [transport.py] [_log()] starting thread (client mode): 0xd0702440
2025-11-24T11:59:03.968 [DEBUG] [Thread-189595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:59:03.983 [DEBUG] [Thread-189595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:59:03.984 [INFO] [Thread-189595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] client lang: <none>
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] server lang: <none>
2025-11-24T11:59:03.991 [DEBUG] [Thread-189595] [transport.py] [_log()] kex follows: False
2025-11-24T11:59:03.992 [DEBUG] [Thread-189595] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:59:03.992 [DEBUG] [Thread-189595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:59:03.992 [DEBUG] [Thread-189595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:59:03.992 [DEBUG] [Thread-189595] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:59:03.992 [DEBUG] [Thread-189595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:59:03.992 [DEBUG] [Thread-189595] [transport.py] [_log()] Compression: none
2025-11-24T11:59:03.992 [DEBUG] [Thread-189595] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:59:04.051 [DEBUG] [Thread-189595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:59:04.052 [DEBUG] [Thread-189595] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:59:04.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:59:04.052 [DEBUG] [Thread-189595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:59:04.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:59:04.106 [DEBUG] [Thread-189595] [transport.py] [_log()] userauth is OK
2025-11-24T11:59:04.106 [DEBUG] [Thread-189595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:59:04.106 [DEBUG] [Thread-189595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:59:04.106 [DEBUG] [Thread-189595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:59:04.106 [DEBUG] [Thread-189595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:59:04.123 [INFO] [Thread-189595] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:59:04.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:59:04.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:59:04.989 [DEBUG] [Thread-189595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:59:04.989 [DEBUG] [Thread-189595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:59:05.041 [DEBUG] [Thread-189595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:59:05.041 [DEBUG] [Thread-189595] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:59:05.050 [DEBUG] [Thread-189595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:59:05.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:59:05.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T11:59:05.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-11-24T11:59:05.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:59:05.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:59:05.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:59:05.082 [DEBUG] [Thread-189595] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:59:11.496 [DEBUG] [Thread-189597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:59:26.549 [DEBUG] [Thread-189598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:59:35.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T11:59:35.104 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T11:59:35.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-11-24T11:59:35.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 59, 8), 21.89, 22.47, 0.0, 19.6, 19.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T11:59:35.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:59:08
2025-11-24T11:59:36.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T11:59:36.228 [DEBUG] [Thread-189599] [transport.py] [_log()] starting thread (client mode): 0xd317f880
2025-11-24T11:59:36.228 [DEBUG] [Thread-189599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:59:36.250 [DEBUG] [Thread-189599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T11:59:36.250 [INFO] [Thread-189599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T11:59:36.253 [DEBUG] [Thread-189599] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:59:36.253 [DEBUG] [Thread-189599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T11:59:36.253 [DEBUG] [Thread-189599] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:59:36.253 [DEBUG] [Thread-189599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:59:36.253 [DEBUG] [Thread-189599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:59:36.253 [DEBUG] [Thread-189599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:59:36.253 [DEBUG] [Thread-189599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:59:36.253 [DEBUG] [Thread-189599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:59:36.253 [DEBUG] [Thread-189599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:59:36.254 [DEBUG] [Thread-189599] [transport.py] [_log()] client lang: <none>
2025-11-24T11:59:36.254 [DEBUG] [Thread-189599] [transport.py] [_log()] server lang: <none>
2025-11-24T11:59:36.254 [DEBUG] [Thread-189599] [transport.py] [_log()] kex follows: False
2025-11-24T11:59:36.254 [DEBUG] [Thread-189599] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:59:36.254 [DEBUG] [Thread-189599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:59:36.254 [DEBUG] [Thread-189599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:59:36.254 [DEBUG] [Thread-189599] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:59:36.254 [DEBUG] [Thread-189599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:59:36.254 [DEBUG] [Thread-189599] [transport.py] [_log()] Compression: none
2025-11-24T11:59:36.254 [DEBUG] [Thread-189599] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:59:36.273 [DEBUG] [Thread-189599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:59:36.274 [DEBUG] [Thread-189599] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:59:36.274 [DEBUG] [Thread-189599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T11:59:36.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T11:59:36.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:59:36.276 [DEBUG] [Thread-189599] [transport.py] [_log()] userauth is OK
2025-11-24T11:59:36.276 [DEBUG] [Thread-189599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:59:36.276 [DEBUG] [Thread-189599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:59:36.277 [DEBUG] [Thread-189599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T11:59:36.277 [DEBUG] [Thread-189599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:59:36.300 [INFO] [Thread-189599] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:59:36.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:59:37.021 [DEBUG] [Thread-189599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:59:37.021 [DEBUG] [Thread-189599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:59:37.021 [DEBUG] [Thread-189599] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T11:59:37.062 [DEBUG] [Thread-189599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:59:37.062 [DEBUG] [Thread-189599] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:59:37.064 [DEBUG] [Thread-189599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:59:37.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:59:37.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T11:59:37.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T11:59:37.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T11:59:37.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:59:37.090 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T11:59:37.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.416021 -999.00  +20.00  18.76     27   +0.70 1 1 1 1 1   888    0 19.75 10.63 ----- 18.8 18.8 162.0 23.9 26.2 -24.4 24.9 -27.5 25.2 -23.0 26.1 -23.8
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.416021
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T11:59:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:59:08', tmtdew=21.89, humidity=22.47, cloud=0.0, wind=19.6, temperature=19.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:59:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T11:59:37.092 [DEBUG] [Thread-189599] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:59:37.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T11:59:37.176 [DEBUG] [Thread-189602] [transport.py] [_log()] starting thread (client mode): 0xd31b31f0
2025-11-24T11:59:37.176 [DEBUG] [Thread-189602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T11:59:37.191 [DEBUG] [Thread-189602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T11:59:37.191 [INFO] [Thread-189602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] client lang: <none>
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] server lang: <none>
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] kex follows: False
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] Compression: none
2025-11-24T11:59:37.199 [DEBUG] [Thread-189602] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T11:59:37.258 [DEBUG] [Thread-189602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T11:59:37.267 [DEBUG] [Thread-189602] [transport.py] [_log()] Switch to new keys ...
2025-11-24T11:59:37.267 [DEBUG] [Thread-189602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T11:59:37.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T11:59:37.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T11:59:37.315 [DEBUG] [Thread-189602] [transport.py] [_log()] userauth is OK
2025-11-24T11:59:37.315 [DEBUG] [Thread-189602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T11:59:37.315 [DEBUG] [Thread-189602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T11:59:37.315 [DEBUG] [Thread-189602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T11:59:37.315 [DEBUG] [Thread-189602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T11:59:37.329 [INFO] [Thread-189602] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T11:59:37.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T11:59:37.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T11:59:38.200 [DEBUG] [Thread-189602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T11:59:38.200 [DEBUG] [Thread-189602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T11:59:38.248 [DEBUG] [Thread-189602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T11:59:38.249 [DEBUG] [Thread-189602] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T11:59:38.258 [DEBUG] [Thread-189602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T11:59:38.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T11:59:38.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-11-24T11:59:38.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-11-24T11:59:38.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T11:59:38.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T11:59:38.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T11:59:38.294 [DEBUG] [Thread-189602] [transport.py] [_log()] EOF in transport thread
2025-11-24T11:59:41.577 [DEBUG] [Thread-189604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:59:43.776 [DEBUG] [Thread-189605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:59:47.369 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:59:47.370 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T11:59:56.620 [DEBUG] [Thread-189606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:00:08.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:00:08.316 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:00:08.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:00:09.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 11, 59, 41), 22.45, 22.09, 0.0, 22.32, 19.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:00:09.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 11:59:41
2025-11-24T12:00:09.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:00:09.440 [DEBUG] [Thread-189607] [transport.py] [_log()] starting thread (client mode): 0xd317cd30
2025-11-24T12:00:09.440 [DEBUG] [Thread-189607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:00:09.459 [DEBUG] [Thread-189607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:00:09.459 [INFO] [Thread-189607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] client lang: <none>
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] server lang: <none>
2025-11-24T12:00:09.462 [DEBUG] [Thread-189607] [transport.py] [_log()] kex follows: False
2025-11-24T12:00:09.463 [DEBUG] [Thread-189607] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:00:09.463 [DEBUG] [Thread-189607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:00:09.463 [DEBUG] [Thread-189607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:00:09.463 [DEBUG] [Thread-189607] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:00:09.463 [DEBUG] [Thread-189607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:00:09.463 [DEBUG] [Thread-189607] [transport.py] [_log()] Compression: none
2025-11-24T12:00:09.463 [DEBUG] [Thread-189607] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:00:09.477 [DEBUG] [Thread-189607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:00:09.477 [DEBUG] [Thread-189607] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:00:09.477 [DEBUG] [Thread-189607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:00:09.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:00:09.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:00:09.478 [DEBUG] [Thread-189607] [transport.py] [_log()] userauth is OK
2025-11-24T12:00:09.478 [DEBUG] [Thread-189607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:00:09.478 [DEBUG] [Thread-189607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:00:09.478 [DEBUG] [Thread-189607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:00:09.478 [DEBUG] [Thread-189607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:00:09.492 [INFO] [Thread-189607] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:00:09.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:00:10.664 [DEBUG] [Thread-189607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:00:10.664 [DEBUG] [Thread-189607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:00:10.665 [DEBUG] [Thread-189607] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:00:10.705 [DEBUG] [Thread-189607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:00:10.705 [DEBUG] [Thread-189607] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:00:10.707 [DEBUG] [Thread-189607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:00:10.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:00:10.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:00:10.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:00:10.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:00:10.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:00:10.727 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:00:10.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:00:10.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:00:10.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:00:10.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.416368 -999.00  +19.80  17.63     26   +0.20 1 1 1 1 1   888    0 19.34 8.98 ----- 17.6 17.6 136.4 31.1 26.2 -26.5 25.1 -24.7 25.0 -23.6 26.1 -25.0
2025-11-24T12:00:10.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:00:10.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:00:10.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.416368
2025-11-24T12:00:10.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:00:10.728 [DEBUG] [Thread-189607] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:00:10.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:00:10.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:00:10.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:00:10.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:00:10.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T11:59:41', tmtdew=22.45, humidity=22.09, cloud=0.0, wind=22.32, temperature=19.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T09:59:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:00:10.814 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:00:10.826 [DEBUG] [Thread-189610] [transport.py] [_log()] starting thread (client mode): 0xd0700130
2025-11-24T12:00:10.826 [DEBUG] [Thread-189610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:00:10.841 [DEBUG] [Thread-189610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:00:10.841 [INFO] [Thread-189610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:00:10.848 [DEBUG] [Thread-189610] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:00:10.848 [DEBUG] [Thread-189610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] client lang: <none>
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] server lang: <none>
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] kex follows: False
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] Compression: none
2025-11-24T12:00:10.849 [DEBUG] [Thread-189610] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:00:10.905 [DEBUG] [Thread-189610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:00:10.905 [DEBUG] [Thread-189610] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:00:10.906 [DEBUG] [Thread-189610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:00:10.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:00:10.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:00:10.962 [DEBUG] [Thread-189610] [transport.py] [_log()] userauth is OK
2025-11-24T12:00:10.962 [DEBUG] [Thread-189610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:00:10.962 [DEBUG] [Thread-189610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:00:10.962 [DEBUG] [Thread-189610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:00:10.962 [DEBUG] [Thread-189610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:00:10.977 [INFO] [Thread-189610] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:00:10.977 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:00:10.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:00:11.649 [DEBUG] [Thread-189612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:00:11.806 [DEBUG] [Thread-189610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:00:11.806 [DEBUG] [Thread-189610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:00:11.854 [DEBUG] [Thread-189610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:00:11.854 [DEBUG] [Thread-189610] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:00:11.863 [DEBUG] [Thread-189610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:00:11.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:00:11.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:00:11.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-11-24T12:00:11.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:00:11.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:00:11.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:00:11.898 [DEBUG] [Thread-189610] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:00:26.692 [DEBUG] [Thread-189613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:00:41.728 [DEBUG] [Thread-189614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:00:41.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:00:41.915 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:00:41.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-11-24T12:00:42.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 0, 13), 22.52, 21.99, 0.0, 21.9, 19.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:00:42.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:00:13
2025-11-24T12:00:42.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:00:43.008 [DEBUG] [Thread-189615] [transport.py] [_log()] starting thread (client mode): 0xc9b806a0
2025-11-24T12:00:43.008 [DEBUG] [Thread-189615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:00:43.026 [DEBUG] [Thread-189615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:00:43.027 [INFO] [Thread-189615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] client lang: <none>
2025-11-24T12:00:43.028 [DEBUG] [Thread-189615] [transport.py] [_log()] server lang: <none>
2025-11-24T12:00:43.029 [DEBUG] [Thread-189615] [transport.py] [_log()] kex follows: False
2025-11-24T12:00:43.029 [DEBUG] [Thread-189615] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:00:43.029 [DEBUG] [Thread-189615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:00:43.029 [DEBUG] [Thread-189615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:00:43.029 [DEBUG] [Thread-189615] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:00:43.029 [DEBUG] [Thread-189615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:00:43.029 [DEBUG] [Thread-189615] [transport.py] [_log()] Compression: none
2025-11-24T12:00:43.029 [DEBUG] [Thread-189615] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:00:43.036 [DEBUG] [Thread-189615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:00:43.036 [DEBUG] [Thread-189615] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:00:43.036 [DEBUG] [Thread-189615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:00:43.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:00:43.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:00:43.037 [DEBUG] [Thread-189615] [transport.py] [_log()] userauth is OK
2025-11-24T12:00:43.037 [DEBUG] [Thread-189615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:00:43.037 [DEBUG] [Thread-189615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:00:43.037 [DEBUG] [Thread-189615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:00:43.037 [DEBUG] [Thread-189615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:00:43.052 [INFO] [Thread-189615] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:00:43.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:00:43.683 [DEBUG] [Thread-189615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:00:43.683 [DEBUG] [Thread-189615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:00:43.683 [DEBUG] [Thread-189615] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:00:43.724 [DEBUG] [Thread-189615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:00:43.724 [DEBUG] [Thread-189615] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:00:43.726 [DEBUG] [Thread-189615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:00:43.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:00:43.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:00:43.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:00:43.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:00:43.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:00:43.743 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:00:43.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:00:43.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:00:43.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:00:43.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.416715 -999.00  +19.80  19.72     26   +0.20 1 1 1 1 1   888    0 19.38 8.09 ----- 19.7 19.7 174.6 25.5 26.2 -25.8 25.1 -26.3 25.2 -23.6 26.1 -26.3
2025-11-24T12:00:43.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:00:43.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:00:43.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.416715
2025-11-24T12:00:43.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:00:43.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:00:43.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:00:43.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:00:43.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:00:43.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:00:13', tmtdew=22.52, humidity=21.99, cloud=0.0, wind=21.9, temperature=19.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:00:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:00:43.744 [DEBUG] [Thread-189615] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:00:43.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:00:43.831 [DEBUG] [Thread-189618] [transport.py] [_log()] starting thread (client mode): 0xc9b82ad0
2025-11-24T12:00:43.832 [DEBUG] [Thread-189618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:00:43.847 [DEBUG] [Thread-189618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:00:43.847 [INFO] [Thread-189618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] client lang: <none>
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] server lang: <none>
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] kex follows: False
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] Compression: none
2025-11-24T12:00:43.855 [DEBUG] [Thread-189618] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:00:43.913 [DEBUG] [Thread-189618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:00:43.914 [DEBUG] [Thread-189618] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:00:43.914 [DEBUG] [Thread-189618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:00:43.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:00:43.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:00:43.970 [DEBUG] [Thread-189618] [transport.py] [_log()] userauth is OK
2025-11-24T12:00:43.971 [DEBUG] [Thread-189618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:00:43.971 [DEBUG] [Thread-189618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:00:43.971 [DEBUG] [Thread-189618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:00:43.971 [DEBUG] [Thread-189618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:00:43.988 [INFO] [Thread-189618] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:00: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-11-24T12:00:43.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:00:44.032 [DEBUG] [Thread-189620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:00:44.869 [DEBUG] [Thread-189618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:00:44.869 [DEBUG] [Thread-189618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:00:44.917 [DEBUG] [Thread-189618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:00:44.917 [DEBUG] [Thread-189618] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:00:44.925 [DEBUG] [Thread-189618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:00:44.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:00:44.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-11-24T12:00:44.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:00:44.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:00:44.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:00:44.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:00:44.957 [DEBUG] [Thread-189618] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:00:47.511 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:00:47.513 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:00:56.759 [DEBUG] [Thread-189621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:01:11.804 [DEBUG] [Thread-189622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:01:14.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:01:14.962 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:01:14.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-11-24T12:01:15.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 0, 45), 23.08, 20.62, 0.0, 25.48, 19.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:01:15.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:00:45
2025-11-24T12:01:15.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:01:16.067 [DEBUG] [Thread-189623] [transport.py] [_log()] starting thread (client mode): 0xd317c460
2025-11-24T12:01:16.067 [DEBUG] [Thread-189623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:01:16.088 [DEBUG] [Thread-189623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:01:16.088 [INFO] [Thread-189623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:01:16.091 [DEBUG] [Thread-189623] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:01:16.091 [DEBUG] [Thread-189623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:01:16.091 [DEBUG] [Thread-189623] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:01:16.091 [DEBUG] [Thread-189623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] client lang: <none>
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] server lang: <none>
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] kex follows: False
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:01:16.092 [DEBUG] [Thread-189623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:01:16.093 [DEBUG] [Thread-189623] [transport.py] [_log()] Compression: none
2025-11-24T12:01:16.093 [DEBUG] [Thread-189623] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:01:16.112 [DEBUG] [Thread-189623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:01:16.113 [DEBUG] [Thread-189623] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:01:16.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:01:16.114 [DEBUG] [Thread-189623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:01:16.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:01:16.116 [DEBUG] [Thread-189623] [transport.py] [_log()] userauth is OK
2025-11-24T12:01:16.116 [DEBUG] [Thread-189623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:01:16.116 [DEBUG] [Thread-189623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:01:16.116 [DEBUG] [Thread-189623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:01:16.116 [DEBUG] [Thread-189623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:01:16.134 [INFO] [Thread-189623] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:01:16.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:01:16.708 [DEBUG] [Thread-189623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:01:16.717 [DEBUG] [Thread-189623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:01:16.717 [DEBUG] [Thread-189623] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:01:16.749 [DEBUG] [Thread-189623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:01:16.749 [DEBUG] [Thread-189623] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:01:16.751 [DEBUG] [Thread-189623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:01:16.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:01:16.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:01:16.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:01:16.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:01:16.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:01:16.769 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:01:16.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:01:16.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:01:16.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:01:16.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.417062 -999.00  +19.80  23.51     26   +0.00 1 1 1 1 1   888    0 19.18 8.42 ----- 23.5 23.5 193.4 30.6 26.1 -26.3 24.6 -29.4 25.0 -24.3 26.0 -27.7
2025-11-24T12:01:16.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:01:16.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:01:16.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.417062
2025-11-24T12:01:16.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:01:16.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:01:16.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:01:16.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:01:16.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:01:16.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:00:45', tmtdew=23.08, humidity=20.62, cloud=0.0, wind=25.48, temperature=19.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:00:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:01:16.771 [DEBUG] [Thread-189623] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:01:16.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:01:16.857 [DEBUG] [Thread-189626] [transport.py] [_log()] starting thread (client mode): 0xd3192bf0
2025-11-24T12:01:16.858 [DEBUG] [Thread-189626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:01:16.875 [DEBUG] [Thread-189626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:01:16.875 [INFO] [Thread-189626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:01:16.885 [DEBUG] [Thread-189626] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] client lang: <none>
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] server lang: <none>
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] kex follows: False
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] Compression: none
2025-11-24T12:01:16.886 [DEBUG] [Thread-189626] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:01:16.948 [DEBUG] [Thread-189626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:01:16.948 [DEBUG] [Thread-189626] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:01:16.948 [DEBUG] [Thread-189626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:01:16.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:01:16.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:01:17.006 [DEBUG] [Thread-189626] [transport.py] [_log()] userauth is OK
2025-11-24T12:01:17.006 [DEBUG] [Thread-189626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:01:17.007 [DEBUG] [Thread-189626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:01:17.007 [DEBUG] [Thread-189626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:01:17.007 [DEBUG] [Thread-189626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:01:17.021 [INFO] [Thread-189626] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:01:17.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:01:17.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:01:17.873 [DEBUG] [Thread-189626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:01:17.873 [DEBUG] [Thread-189626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:01:17.921 [DEBUG] [Thread-189626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:01:17.921 [DEBUG] [Thread-189626] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:01:17.930 [DEBUG] [Thread-189626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:01:17.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:01:17.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-11-24T12:01: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') -> 00000000
2025-11-24T12:01:17.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:01:17.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:01:17.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:01:17.963 [DEBUG] [Thread-189626] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:01:26.833 [DEBUG] [Thread-189628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:01:41.894 [DEBUG] [Thread-189629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:01:44.094 [DEBUG] [Thread-189630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:01:47.655 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:01:47.656 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:01:47.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:01:47.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:01:47.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-11-24T12:01:48.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 1, 18), 23.14, 20.54, 0.0, 28.55, 19.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:01:48.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:01:18
2025-11-24T12:01:48.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:01:49.082 [DEBUG] [Thread-189631] [transport.py] [_log()] starting thread (client mode): 0xc9b82ad0
2025-11-24T12:01:49.082 [DEBUG] [Thread-189631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:01:49.101 [DEBUG] [Thread-189631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:01:49.102 [INFO] [Thread-189631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:01:49.111 [DEBUG] [Thread-189631] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:01:49.111 [DEBUG] [Thread-189631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:01:49.111 [DEBUG] [Thread-189631] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:01:49.111 [DEBUG] [Thread-189631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] client lang: <none>
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] server lang: <none>
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] kex follows: False
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] Compression: none
2025-11-24T12:01:49.112 [DEBUG] [Thread-189631] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:01:49.131 [DEBUG] [Thread-189631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:01:49.131 [DEBUG] [Thread-189631] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:01:49.132 [DEBUG] [Thread-189631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:01:49.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:01:49.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:01:49.134 [DEBUG] [Thread-189631] [transport.py] [_log()] userauth is OK
2025-11-24T12:01:49.134 [DEBUG] [Thread-189631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:01:49.134 [DEBUG] [Thread-189631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:01:49.134 [DEBUG] [Thread-189631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:01:49.134 [DEBUG] [Thread-189631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:01:49.155 [INFO] [Thread-189631] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:01:49.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:01:49.770 [DEBUG] [Thread-189631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:01:49.771 [DEBUG] [Thread-189631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:01:49.771 [DEBUG] [Thread-189631] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:01:49.812 [DEBUG] [Thread-189631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:01:49.812 [DEBUG] [Thread-189631] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:01:49.815 [DEBUG] [Thread-189631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:01:49.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:01:49.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:01:49.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:01:49.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:01:49.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:01:49.840 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:01:49.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:01:49.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:01:49.849 [DEBUG] [Thread-189631] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:01:49.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:01:49.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.417410 -999.00  +19.90  17.51     26   +0.20 1 1 1 1 1   888    0 19.64 6.84 ----- 17.5 17.5 178.6 28.9 25.9 -26.5 24.8 -25.9 25.1 -23.8 25.9 -25.8
2025-11-24T12:01:49.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:01:49.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:01:49.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.417410
2025-11-24T12:01:49.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:01:49.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:01:49.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:01:49.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:01:49.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:01:49.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:01:18', tmtdew=23.14, humidity=20.54, cloud=0.0, wind=28.55, temperature=19.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:01:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:01:49.937 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:01:49.950 [DEBUG] [Thread-189634] [transport.py] [_log()] starting thread (client mode): 0xd31b1060
2025-11-24T12:01:49.950 [DEBUG] [Thread-189634] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:01:49.965 [DEBUG] [Thread-189634] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:01:49.966 [INFO] [Thread-189634] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:01:49.973 [DEBUG] [Thread-189634] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:01:49.973 [DEBUG] [Thread-189634] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:01:49.973 [DEBUG] [Thread-189634] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:01:49.973 [DEBUG] [Thread-189634] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:01:49.973 [DEBUG] [Thread-189634] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:01:49.973 [DEBUG] [Thread-189634] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:01:49.973 [DEBUG] [Thread-189634] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:01:49.973 [DEBUG] [Thread-189634] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:01:49.973 [DEBUG] [Thread-189634] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:01:49.974 [DEBUG] [Thread-189634] [transport.py] [_log()] client lang: <none>
2025-11-24T12:01:49.974 [DEBUG] [Thread-189634] [transport.py] [_log()] server lang: <none>
2025-11-24T12:01:49.974 [DEBUG] [Thread-189634] [transport.py] [_log()] kex follows: False
2025-11-24T12:01:49.974 [DEBUG] [Thread-189634] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:01:49.974 [DEBUG] [Thread-189634] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:01:49.974 [DEBUG] [Thread-189634] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:01:49.974 [DEBUG] [Thread-189634] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:01:49.974 [DEBUG] [Thread-189634] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:01:49.974 [DEBUG] [Thread-189634] [transport.py] [_log()] Compression: none
2025-11-24T12:01:49.974 [DEBUG] [Thread-189634] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:01:50.031 [DEBUG] [Thread-189634] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:01:50.032 [DEBUG] [Thread-189634] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:01:50.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:01:50.033 [DEBUG] [Thread-189634] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:01:50.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:01:50.087 [DEBUG] [Thread-189634] [transport.py] [_log()] userauth is OK
2025-11-24T12:01:50.087 [DEBUG] [Thread-189634] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:01:50.088 [DEBUG] [Thread-189634] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:01:50.088 [DEBUG] [Thread-189634] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:01:50.088 [DEBUG] [Thread-189634] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:01:50.107 [INFO] [Thread-189634] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:01:50.108 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:01:50.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:01:50.969 [DEBUG] [Thread-189634] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:01:50.969 [DEBUG] [Thread-189634] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:01:51.017 [DEBUG] [Thread-189634] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:01:51.017 [DEBUG] [Thread-189634] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:01:51.025 [DEBUG] [Thread-189634] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:01:51.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:01:51.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-11-24T12:01:51.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-11-24T12:01:51.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:01:51.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:01:51.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:01:51.056 [DEBUG] [Thread-189634] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:01:56.924 [DEBUG] [Thread-189636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:02:11.969 [DEBUG] [Thread-189637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:02:21.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:02:21.071 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:02:21.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-11-24T12:02:21.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 1, 50), 23.32, 20.42, 0.0, 30.91, 19.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:02:21.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:01:50
2025-11-24T12:02:21.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:02:22.031 [DEBUG] [Thread-189638] [transport.py] [_log()] starting thread (client mode): 0xd07108b0
2025-11-24T12:02:22.031 [DEBUG] [Thread-189638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:02:22.051 [DEBUG] [Thread-189638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:02:22.051 [INFO] [Thread-189638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:02:22.054 [DEBUG] [Thread-189638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:02:22.054 [DEBUG] [Thread-189638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:02:22.054 [DEBUG] [Thread-189638] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:02:22.054 [DEBUG] [Thread-189638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:02:22.054 [DEBUG] [Thread-189638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:02:22.054 [DEBUG] [Thread-189638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] client lang: <none>
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] server lang: <none>
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] kex follows: False
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] Compression: none
2025-11-24T12:02:22.055 [DEBUG] [Thread-189638] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:02:22.072 [DEBUG] [Thread-189638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:02:22.073 [DEBUG] [Thread-189638] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:02:22.073 [DEBUG] [Thread-189638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:02:22.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:02:22.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:02:22.117 [DEBUG] [Thread-189638] [transport.py] [_log()] userauth is OK
2025-11-24T12:02:22.117 [DEBUG] [Thread-189638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:02:22.117 [DEBUG] [Thread-189638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:02:22.117 [DEBUG] [Thread-189638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:02:22.117 [DEBUG] [Thread-189638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:02:22.137 [INFO] [Thread-189638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:02:22.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:02:22.681 [DEBUG] [Thread-189638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:02:22.681 [DEBUG] [Thread-189638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:02:22.681 [DEBUG] [Thread-189638] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:02:22.723 [DEBUG] [Thread-189638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:02:22.723 [DEBUG] [Thread-189638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:02:22.728 [DEBUG] [Thread-189638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:02:22.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:02:22.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:02:22.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:02:22.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:02:22.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:02:22.745 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:02:22.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:02:22.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:02:22.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:02:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.418104 -999.00  +19.70  23.95     27   +0.20 1 1 1 1 1   888    0 19.19 5.55 ----- 23.9 23.9 159.7 35.3 26.0 -26.1 25.0 -24.7 25.0 -24.3 26.0 -26.0
2025-11-24T12:02:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:02:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:02:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.418104
2025-11-24T12:02:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:02:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:02:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:02:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:02:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:02:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:01:50', tmtdew=23.32, humidity=20.42, cloud=0.0, wind=30.91, temperature=19.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:02:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:02:22.746 [DEBUG] [Thread-189638] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:02:22.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:02:22.831 [DEBUG] [Thread-189641] [transport.py] [_log()] starting thread (client mode): 0xd0702470
2025-11-24T12:02:22.831 [DEBUG] [Thread-189641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:02:22.846 [DEBUG] [Thread-189641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:02:22.846 [INFO] [Thread-189641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] client lang: <none>
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] server lang: <none>
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] kex follows: False
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] Compression: none
2025-11-24T12:02:22.854 [DEBUG] [Thread-189641] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:02:22.909 [DEBUG] [Thread-189641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:02:22.909 [DEBUG] [Thread-189641] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:02:22.909 [DEBUG] [Thread-189641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:02:22.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:02:22.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:02:22.966 [DEBUG] [Thread-189641] [transport.py] [_log()] userauth is OK
2025-11-24T12:02:22.967 [DEBUG] [Thread-189641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:02:22.967 [DEBUG] [Thread-189641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:02:22.967 [DEBUG] [Thread-189641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:02:22.967 [DEBUG] [Thread-189641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:02:22.980 [INFO] [Thread-189641] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:02:22.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:02:22.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:02:23.856 [DEBUG] [Thread-189641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:02:23.856 [DEBUG] [Thread-189641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:02:23.904 [DEBUG] [Thread-189641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:02:23.904 [DEBUG] [Thread-189641] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:02:23.912 [DEBUG] [Thread-189641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:02:23.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:02:23.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-11-24T12:02:23.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-11-24T12:02:23.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:02:23.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:02:23.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:02:23.944 [DEBUG] [Thread-189641] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:02:27.000 [DEBUG] [Thread-189643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:02:42.035 [DEBUG] [Thread-189644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:02:44.145 [DEBUG] [Thread-189645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:02:47.801 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:02:47.811 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:02:53.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:02:53.967 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:02:53.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-11-24T12:02:54.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 2, 23), 23.24, 20.57, 0.0, 25.55, 20.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:02:54.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:02:23
2025-11-24T12:02:54.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:02:54.998 [DEBUG] [Thread-189646] [transport.py] [_log()] starting thread (client mode): 0xd316d090
2025-11-24T12:02:54.999 [DEBUG] [Thread-189646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:02:55.020 [DEBUG] [Thread-189646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:02:55.020 [INFO] [Thread-189646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] client lang: <none>
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] server lang: <none>
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] kex follows: False
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:02:55.023 [DEBUG] [Thread-189646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:02:55.024 [DEBUG] [Thread-189646] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:02:55.024 [DEBUG] [Thread-189646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:02:55.024 [DEBUG] [Thread-189646] [transport.py] [_log()] Compression: none
2025-11-24T12:02:55.024 [DEBUG] [Thread-189646] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:02:55.041 [DEBUG] [Thread-189646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:02:55.042 [DEBUG] [Thread-189646] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:02:55.043 [DEBUG] [Thread-189646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:02:55.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:02:55.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:02:55.045 [DEBUG] [Thread-189646] [transport.py] [_log()] userauth is OK
2025-11-24T12:02:55.045 [DEBUG] [Thread-189646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:02:55.045 [DEBUG] [Thread-189646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:02:55.046 [DEBUG] [Thread-189646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:02:55.046 [DEBUG] [Thread-189646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:02:55.069 [INFO] [Thread-189646] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:02:55.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:02:55.701 [DEBUG] [Thread-189646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:02:55.701 [DEBUG] [Thread-189646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:02:55.702 [DEBUG] [Thread-189646] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:02:55.742 [DEBUG] [Thread-189646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:02:55.742 [DEBUG] [Thread-189646] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:02:55.744 [DEBUG] [Thread-189646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:02:55.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:02:55.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:02:55.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:02:55.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:02:55.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:02:55.763 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:02:55.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:02:55.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.418451 -999.00  +19.70  27.50     26   +0.10 1 1 1 1 1   888    0 19.18 6.46 ----- 27.5 27.5 157.6 36.5 26.0 -25.6 24.9 -26.0 25.0 -26.1 25.9 -25.5
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.418451
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:02:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:02:23', tmtdew=23.24, humidity=20.57, cloud=0.0, wind=25.55, temperature=20.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:02:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:02:55.765 [DEBUG] [Thread-189646] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:02:55.839 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:02:55.850 [DEBUG] [Thread-189649] [transport.py] [_log()] starting thread (client mode): 0xd0712140
2025-11-24T12:02:55.850 [DEBUG] [Thread-189649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:02:55.866 [DEBUG] [Thread-189649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:02:55.866 [INFO] [Thread-189649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] client lang: <none>
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] server lang: <none>
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] kex follows: False
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] Compression: none
2025-11-24T12:02:55.873 [DEBUG] [Thread-189649] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:02:55.929 [DEBUG] [Thread-189649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:02:55.929 [DEBUG] [Thread-189649] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:02:55.930 [DEBUG] [Thread-189649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:02:55.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:02:55.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:02:55.987 [DEBUG] [Thread-189649] [transport.py] [_log()] userauth is OK
2025-11-24T12:02:55.987 [DEBUG] [Thread-189649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:02:55.987 [DEBUG] [Thread-189649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:02:55.987 [DEBUG] [Thread-189649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:02:55.987 [DEBUG] [Thread-189649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:02:56.004 [INFO] [Thread-189649] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:02:56.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:02:56.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:02:56.872 [DEBUG] [Thread-189649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:02:56.872 [DEBUG] [Thread-189649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:02:56.920 [DEBUG] [Thread-189649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:02:56.920 [DEBUG] [Thread-189649] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:02:56.929 [DEBUG] [Thread-189649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:02:56.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:02:56.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-11-24T12:02:56.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-11-24T12:02:56.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:02:56.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:02:56.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:02:56.961 [DEBUG] [Thread-189649] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:02:57.067 [DEBUG] [Thread-189651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:03:12.107 [DEBUG] [Thread-189652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:03:26.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:03:26.972 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:03:26.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-11-24T12:03:27.137 [DEBUG] [Thread-189653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:03:27.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 2, 55), 22.84, 21.34, 0.0, 30.26, 19.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:03:27.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:02:55
2025-11-24T12:03:27.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:03:28.065 [DEBUG] [Thread-189654] [transport.py] [_log()] starting thread (client mode): 0xc9b80070
2025-11-24T12:03:28.065 [DEBUG] [Thread-189654] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:03:28.084 [DEBUG] [Thread-189654] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:03:28.084 [INFO] [Thread-189654] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] client lang: <none>
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] server lang: <none>
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] kex follows: False
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:03:28.087 [DEBUG] [Thread-189654] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:03:28.088 [DEBUG] [Thread-189654] [transport.py] [_log()] Compression: none
2025-11-24T12:03:28.088 [DEBUG] [Thread-189654] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:03:28.100 [DEBUG] [Thread-189654] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:03:28.100 [DEBUG] [Thread-189654] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:03:28.100 [DEBUG] [Thread-189654] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:03:28.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:03:28.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:03:28.101 [DEBUG] [Thread-189654] [transport.py] [_log()] userauth is OK
2025-11-24T12:03:28.101 [DEBUG] [Thread-189654] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:03:28.101 [DEBUG] [Thread-189654] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:03:28.101 [DEBUG] [Thread-189654] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:03:28.101 [DEBUG] [Thread-189654] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:03:28.111 [INFO] [Thread-189654] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:03:28.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:03:28.756 [DEBUG] [Thread-189654] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:03:28.757 [DEBUG] [Thread-189654] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:03:28.757 [DEBUG] [Thread-189654] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:03:28.797 [DEBUG] [Thread-189654] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:03:28.797 [DEBUG] [Thread-189654] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:03:28.799 [DEBUG] [Thread-189654] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:03:28.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:03:28.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:03:28.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:03:28.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:03:28.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:03:28.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:03:28.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.418799 -999.00  +19.60  23.97     27   +0.30 1 1 1 1 1   888    0 19.82 10.07 ----- 24.0 24.0 161.4 30.5 25.9 -25.5 24.9 -24.5 25.0 -22.8 25.8 -26.6
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.418799
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:03:28.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:02:55', tmtdew=22.84, humidity=21.34, cloud=0.0, wind=30.26, temperature=19.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:03:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:03:28.811 [DEBUG] [Thread-189654] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:03: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-11-24T12:03:28.897 [DEBUG] [Thread-189657] [transport.py] [_log()] starting thread (client mode): 0xd07861d0
2025-11-24T12:03:28.897 [DEBUG] [Thread-189657] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:03:28.911 [DEBUG] [Thread-189657] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:03:28.911 [INFO] [Thread-189657] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] client lang: <none>
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] server lang: <none>
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] kex follows: False
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] Compression: none
2025-11-24T12:03:28.919 [DEBUG] [Thread-189657] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:03:28.977 [DEBUG] [Thread-189657] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:03:28.977 [DEBUG] [Thread-189657] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:03:28.977 [DEBUG] [Thread-189657] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:03:28.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:03:28.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:03:29.034 [DEBUG] [Thread-189657] [transport.py] [_log()] userauth is OK
2025-11-24T12:03:29.034 [DEBUG] [Thread-189657] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:03:29.034 [DEBUG] [Thread-189657] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:03:29.034 [DEBUG] [Thread-189657] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:03:29.034 [DEBUG] [Thread-189657] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:03:29.048 [INFO] [Thread-189657] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:03:29.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:03:29.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:03:29.898 [DEBUG] [Thread-189657] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:03:29.898 [DEBUG] [Thread-189657] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:03:29.945 [DEBUG] [Thread-189657] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:03:29.945 [DEBUG] [Thread-189657] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:03:29.954 [DEBUG] [Thread-189657] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:03:29.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:03:29.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:03: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') -> 00000000
2025-11-24T12:03:29.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:03:29.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:03:29.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:03:29.989 [DEBUG] [Thread-189657] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:03:42.169 [DEBUG] [Thread-189659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:03:44.362 [DEBUG] [Thread-189660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:03:47.951 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:03:47.952 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:03:57.227 [DEBUG] [Thread-189661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:03:59.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:03:59.986 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:03:59.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:04:00.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 3, 27), 23.03, 21.07, 0.0, 27.3, 19.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:04:00.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:03:27
2025-11-24T12:04:00.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:04:01.054 [DEBUG] [Thread-189662] [transport.py] [_log()] starting thread (client mode): 0xd3192fb0
2025-11-24T12:04:01.054 [DEBUG] [Thread-189662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:04:01.074 [DEBUG] [Thread-189662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:04:01.074 [INFO] [Thread-189662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:04:01.078 [DEBUG] [Thread-189662] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:04:01.078 [DEBUG] [Thread-189662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:04:01.078 [DEBUG] [Thread-189662] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:04:01.078 [DEBUG] [Thread-189662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] client lang: <none>
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] server lang: <none>
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] kex follows: False
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] Compression: none
2025-11-24T12:04:01.079 [DEBUG] [Thread-189662] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:04:01.095 [DEBUG] [Thread-189662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:04:01.095 [DEBUG] [Thread-189662] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:04:01.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:04:01.095 [DEBUG] [Thread-189662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:04:01.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:04:01.096 [DEBUG] [Thread-189662] [transport.py] [_log()] userauth is OK
2025-11-24T12:04:01.096 [DEBUG] [Thread-189662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:04:01.096 [DEBUG] [Thread-189662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:04:01.096 [DEBUG] [Thread-189662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:04:01.096 [DEBUG] [Thread-189662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:04:01.107 [INFO] [Thread-189662] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:04:01.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:04:01.745 [DEBUG] [Thread-189662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:04:01.745 [DEBUG] [Thread-189662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:04:01.745 [DEBUG] [Thread-189662] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:04:01.787 [DEBUG] [Thread-189662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:04:01.787 [DEBUG] [Thread-189662] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:04:01.789 [DEBUG] [Thread-189662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:04:01.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:04:01.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:04:01.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:04:01.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:04:01.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:04:01.808 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:04:01.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.419146 -999.00  +19.70  24.80     27   +0.20 1 1 1 1 1   888    0 19.47 15.65 ----- 24.8 24.8 154.2 29.9 26.0 -26.0 -999.0 -999.0 25.0 -24.6 26.0 -25.4
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.419146
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:04:01.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:03:27', tmtdew=23.03, humidity=21.07, cloud=0.0, wind=27.3, temperature=19.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:03:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:04:01.809 [DEBUG] [Thread-189662] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:04:01.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:04:01.894 [DEBUG] [Thread-189665] [transport.py] [_log()] starting thread (client mode): 0xd3191ba0
2025-11-24T12:04:01.894 [DEBUG] [Thread-189665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:04:01.909 [DEBUG] [Thread-189665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:04:01.909 [INFO] [Thread-189665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:04:01.916 [DEBUG] [Thread-189665] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:04:01.916 [DEBUG] [Thread-189665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:04:01.916 [DEBUG] [Thread-189665] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:04:01.916 [DEBUG] [Thread-189665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] client lang: <none>
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] server lang: <none>
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] kex follows: False
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] Compression: none
2025-11-24T12:04:01.917 [DEBUG] [Thread-189665] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:04:01.973 [DEBUG] [Thread-189665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:04:01.973 [DEBUG] [Thread-189665] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:04:01.973 [DEBUG] [Thread-189665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:04:01.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:04:01.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:04:02.030 [DEBUG] [Thread-189665] [transport.py] [_log()] userauth is OK
2025-11-24T12:04:02.030 [DEBUG] [Thread-189665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:04:02.030 [DEBUG] [Thread-189665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:04:02.030 [DEBUG] [Thread-189665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:04:02.030 [DEBUG] [Thread-189665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:04:02.044 [INFO] [Thread-189665] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:04:02.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:04:02.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:04:02.938 [DEBUG] [Thread-189665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:04:02.938 [DEBUG] [Thread-189665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:04:02.986 [DEBUG] [Thread-189665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:04:02.986 [DEBUG] [Thread-189665] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:04:02.994 [DEBUG] [Thread-189665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:04:03.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:04:03.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:04:03.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:04:03.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:04:03.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:04:03.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:04:03.026 [DEBUG] [Thread-189665] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:04:12.260 [DEBUG] [Thread-189667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:04:27.317 [DEBUG] [Thread-189668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:04:33.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:04:33.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:04: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-11-24T12:04:33.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 3, 27), 23.08, 21.07, 0.0, 23.7, 20.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:04:33.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:03:27
2025-11-24T12:04:34.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:04:34.211 [DEBUG] [Thread-189669] [transport.py] [_log()] starting thread (client mode): 0xd3151450
2025-11-24T12:04:34.211 [DEBUG] [Thread-189669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:04:34.232 [DEBUG] [Thread-189669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:04:34.232 [INFO] [Thread-189669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] client lang: <none>
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] server lang: <none>
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] kex follows: False
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] Compression: none
2025-11-24T12:04:34.235 [DEBUG] [Thread-189669] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:04:34.250 [DEBUG] [Thread-189669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:04:34.250 [DEBUG] [Thread-189669] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:04:34.250 [DEBUG] [Thread-189669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:04:34.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:04:34.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:04:34.292 [DEBUG] [Thread-189669] [transport.py] [_log()] userauth is OK
2025-11-24T12:04:34.292 [DEBUG] [Thread-189669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:04:34.292 [DEBUG] [Thread-189669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:04:34.292 [DEBUG] [Thread-189669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:04:34.292 [DEBUG] [Thread-189669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:04:34.322 [INFO] [Thread-189669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:04:34.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:04:34.942 [DEBUG] [Thread-189669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:04:34.943 [DEBUG] [Thread-189669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:04:34.943 [DEBUG] [Thread-189669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:04:34.983 [DEBUG] [Thread-189669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:04:34.983 [DEBUG] [Thread-189669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:04:34.985 [DEBUG] [Thread-189669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:04:34.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:04:34.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:04:34.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:04:35.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:04:35.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:04:35.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:04:35.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.419493 -999.00  +19.50  19.07     27   +0.00 1 1 1 1 1   888    0 20.02 19.75 ----- 19.1 19.1 164.8 30.1 25.9 -26.6 24.9 -25.3 24.9 -24.7 25.9 -25.5
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.419493
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:04:35.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:04:35.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:03:27', tmtdew=23.08, humidity=21.07, cloud=0.0, wind=23.7, temperature=20.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:04:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:04:35.004 [DEBUG] [Thread-189669] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:04:35.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:04:35.090 [DEBUG] [Thread-189672] [transport.py] [_log()] starting thread (client mode): 0xd0703460
2025-11-24T12:04:35.090 [DEBUG] [Thread-189672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:04:35.108 [DEBUG] [Thread-189672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:04:35.108 [INFO] [Thread-189672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] client lang: <none>
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] server lang: <none>
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] kex follows: False
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] Compression: none
2025-11-24T12:04:35.116 [DEBUG] [Thread-189672] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:04:35.172 [DEBUG] [Thread-189672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:04:35.173 [DEBUG] [Thread-189672] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:04:35.173 [DEBUG] [Thread-189672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:04:35.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:04:35.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:04:35.231 [DEBUG] [Thread-189672] [transport.py] [_log()] userauth is OK
2025-11-24T12:04:35.231 [DEBUG] [Thread-189672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:04:35.231 [DEBUG] [Thread-189672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:04:35.231 [DEBUG] [Thread-189672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:04:35.231 [DEBUG] [Thread-189672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:04:35.245 [INFO] [Thread-189672] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:04:35.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:04:35.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:04:36.143 [DEBUG] [Thread-189672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:04:36.143 [DEBUG] [Thread-189672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:04:36.191 [DEBUG] [Thread-189672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:04:36.191 [DEBUG] [Thread-189672] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:04:36.199 [DEBUG] [Thread-189672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:04:36.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:04:36.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-11-24T12:04:36.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-11-24T12:04:36.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:04:36.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:04:36.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:04:36.230 [DEBUG] [Thread-189672] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:04:42.362 [DEBUG] [Thread-189674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:04:44.480 [DEBUG] [Thread-189675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:04:48.093 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:04:48.094 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:04:57.418 [DEBUG] [Thread-189676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:05:06.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:05:06.252 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:05:06.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-11-24T12:05:07.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 4, 32), 22.9, 21.24, 0.0, 27.65, 19.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:05:07.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:04:32
2025-11-24T12:05:07.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:05:07.360 [DEBUG] [Thread-189677] [transport.py] [_log()] starting thread (client mode): 0xd31505e0
2025-11-24T12:05:07.360 [DEBUG] [Thread-189677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:05:07.380 [DEBUG] [Thread-189677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:05:07.380 [INFO] [Thread-189677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:05:07.383 [DEBUG] [Thread-189677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:05:07.383 [DEBUG] [Thread-189677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:05:07.383 [DEBUG] [Thread-189677] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] client lang: <none>
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] server lang: <none>
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] kex follows: False
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] Compression: none
2025-11-24T12:05:07.384 [DEBUG] [Thread-189677] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:05:07.391 [DEBUG] [Thread-189677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:05:07.391 [DEBUG] [Thread-189677] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:05:07.391 [DEBUG] [Thread-189677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:05:07.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:05:07.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:05:07.392 [DEBUG] [Thread-189677] [transport.py] [_log()] userauth is OK
2025-11-24T12:05:07.392 [DEBUG] [Thread-189677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:05:07.392 [DEBUG] [Thread-189677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:05:07.392 [DEBUG] [Thread-189677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:05:07.392 [DEBUG] [Thread-189677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:05:07.406 [INFO] [Thread-189677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:05:07.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:05:11.790 [DEBUG] [Thread-189677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:05:11.790 [DEBUG] [Thread-189677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:05:11.790 [DEBUG] [Thread-189677] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:05:11.831 [DEBUG] [Thread-189677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:05:11.832 [DEBUG] [Thread-189677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:05:11.833 [DEBUG] [Thread-189677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:05:11.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:05:11.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:05:11.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:05:11.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:05:12.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:05:12.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:05:12.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:05:12.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:05:12.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:05:12.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.419840 -999.00  +19.50  18.55     27   +0.10 1 1 1 1 1   888    0 19.63 16.86 ----- 18.6 18.6 185.0 24.2 26.1 -24.5 24.8 -30.6 25.0 -23.7 26.0 -24.7
2025-11-24T12:05:12.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:05:12.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:05:12.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.419840
2025-11-24T12:05:12.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:05:12.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:05:12.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:05:12.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:05:12.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:05:12.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:04:32', tmtdew=22.9, humidity=21.24, cloud=0.0, wind=27.65, temperature=19.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:04:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:05:12.354 [DEBUG] [Thread-189677] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:05:12.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:05:12.439 [DEBUG] [Thread-189680] [transport.py] [_log()] starting thread (client mode): 0xd0711750
2025-11-24T12:05:12.439 [DEBUG] [Thread-189680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:05:12.448 [DEBUG] [Thread-189681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:05:12.454 [DEBUG] [Thread-189680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:05:12.454 [INFO] [Thread-189680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] client lang: <none>
2025-11-24T12:05:12.461 [DEBUG] [Thread-189680] [transport.py] [_log()] server lang: <none>
2025-11-24T12:05:12.462 [DEBUG] [Thread-189680] [transport.py] [_log()] kex follows: False
2025-11-24T12:05:12.462 [DEBUG] [Thread-189680] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:05:12.462 [DEBUG] [Thread-189680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:05:12.462 [DEBUG] [Thread-189680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:05:12.462 [DEBUG] [Thread-189680] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:05:12.462 [DEBUG] [Thread-189680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:05:12.462 [DEBUG] [Thread-189680] [transport.py] [_log()] Compression: none
2025-11-24T12:05:12.462 [DEBUG] [Thread-189680] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:05:12.516 [DEBUG] [Thread-189680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:05:12.517 [DEBUG] [Thread-189680] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:05:12.517 [DEBUG] [Thread-189680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:05:12.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:05:12.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:05:12.582 [DEBUG] [Thread-189680] [transport.py] [_log()] userauth is OK
2025-11-24T12:05:12.582 [DEBUG] [Thread-189680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:05:12.582 [DEBUG] [Thread-189680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:05:12.582 [DEBUG] [Thread-189680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:05:12.582 [DEBUG] [Thread-189680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:05:12.599 [INFO] [Thread-189680] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:05:12.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:05:12.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:05:13.512 [DEBUG] [Thread-189680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:05:13.512 [DEBUG] [Thread-189680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:05:13.560 [DEBUG] [Thread-189680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:05:13.560 [DEBUG] [Thread-189680] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:05:13.568 [DEBUG] [Thread-189680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:05:13.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:05:13.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-11-24T12:05:13.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-11-24T12:05:13.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:05:13.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:05:13.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:05:13.600 [DEBUG] [Thread-189680] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:05:27.487 [DEBUG] [Thread-189683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:05:42.519 [DEBUG] [Thread-189684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:05:43.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:05:43.624 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:05:43.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-11-24T12:05:44.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 5, 37), 22.44, 21.89, 0.0, 20.17, 19.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:05:44.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:05:37
2025-11-24T12:05:44.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:05:44.697 [DEBUG] [Thread-189685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:05:44.720 [DEBUG] [Thread-189686] [transport.py] [_log()] starting thread (client mode): 0xd31915d0
2025-11-24T12:05:44.720 [DEBUG] [Thread-189686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:05:44.741 [DEBUG] [Thread-189686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:05:44.741 [INFO] [Thread-189686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:05:44.744 [DEBUG] [Thread-189686] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:05:44.744 [DEBUG] [Thread-189686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:05:44.744 [DEBUG] [Thread-189686] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:05:44.744 [DEBUG] [Thread-189686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:05:44.744 [DEBUG] [Thread-189686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:05:44.744 [DEBUG] [Thread-189686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:05:44.744 [DEBUG] [Thread-189686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:05:44.744 [DEBUG] [Thread-189686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:05:44.744 [DEBUG] [Thread-189686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:05:44.744 [DEBUG] [Thread-189686] [transport.py] [_log()] client lang: <none>
2025-11-24T12:05:44.745 [DEBUG] [Thread-189686] [transport.py] [_log()] server lang: <none>
2025-11-24T12:05:44.745 [DEBUG] [Thread-189686] [transport.py] [_log()] kex follows: False
2025-11-24T12:05:44.745 [DEBUG] [Thread-189686] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:05:44.745 [DEBUG] [Thread-189686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:05:44.745 [DEBUG] [Thread-189686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:05:44.745 [DEBUG] [Thread-189686] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:05:44.745 [DEBUG] [Thread-189686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:05:44.745 [DEBUG] [Thread-189686] [transport.py] [_log()] Compression: none
2025-11-24T12:05:44.745 [DEBUG] [Thread-189686] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:05:44.763 [DEBUG] [Thread-189686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:05:44.763 [DEBUG] [Thread-189686] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:05:44.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:05:44.764 [DEBUG] [Thread-189686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:05:44.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:05:44.767 [DEBUG] [Thread-189686] [transport.py] [_log()] userauth is OK
2025-11-24T12:05:44.767 [DEBUG] [Thread-189686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:05:44.768 [DEBUG] [Thread-189686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:05:44.768 [DEBUG] [Thread-189686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:05:44.768 [DEBUG] [Thread-189686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:05:44.792 [INFO] [Thread-189686] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:05:44.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:05:45.419 [DEBUG] [Thread-189686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:05:45.419 [DEBUG] [Thread-189686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:05:45.419 [DEBUG] [Thread-189686] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:05:45.460 [DEBUG] [Thread-189686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:05:45.460 [DEBUG] [Thread-189686] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:05:45.463 [DEBUG] [Thread-189686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:05:45.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:05:45.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:05:45.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:05:45.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:05:45.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:05:45.490 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:05:45.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.420187 -999.00  +19.30  19.61     27   +0.10 1 1 1 1 1   888    0 19.92 12.84 ----- 19.6 19.6 171.0 22.6 26.1 -25.2 24.9 -25.3 25.1 -23.7 26.0 -25.4
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.420187
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:05:45.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:05:37', tmtdew=22.44, humidity=21.89, cloud=0.0, wind=20.17, temperature=19.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:05:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:05:45.492 [DEBUG] [Thread-189686] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:05:45.563 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:05:45.575 [DEBUG] [Thread-189689] [transport.py] [_log()] starting thread (client mode): 0xd3192bc0
2025-11-24T12:05:45.575 [DEBUG] [Thread-189689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:05:45.590 [DEBUG] [Thread-189689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:05:45.590 [INFO] [Thread-189689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] client lang: <none>
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] server lang: <none>
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] kex follows: False
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] Compression: none
2025-11-24T12:05:45.598 [DEBUG] [Thread-189689] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:05:45.657 [DEBUG] [Thread-189689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:05:45.657 [DEBUG] [Thread-189689] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:05:45.657 [DEBUG] [Thread-189689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:05:45.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:05:45.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:05:45.714 [DEBUG] [Thread-189689] [transport.py] [_log()] userauth is OK
2025-11-24T12:05:45.714 [DEBUG] [Thread-189689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:05:45.714 [DEBUG] [Thread-189689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:05:45.714 [DEBUG] [Thread-189689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:05:45.714 [DEBUG] [Thread-189689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:05:45.727 [INFO] [Thread-189689] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:05:45.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:05:45.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:05:46.587 [DEBUG] [Thread-189689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:05:46.587 [DEBUG] [Thread-189689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:05:46.636 [DEBUG] [Thread-189689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:05:46.636 [DEBUG] [Thread-189689] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:05:46.645 [DEBUG] [Thread-189689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:05:46.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:05:46.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:05:46.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-11-24T12:05:46.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:05:46.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:05:46.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:05:46.682 [DEBUG] [Thread-189689] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:05:48.261 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:05:48.271 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:05:57.552 [DEBUG] [Thread-189691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:06:12.604 [DEBUG] [Thread-189692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:06:16.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:06:16.684 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:06:16.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-11-24T12:06:17.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 6, 9), 22.23, 22.14, 0.0, 18.14, 18.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:06:17.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:06:09
2025-11-24T12:06:17.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:06:17.763 [DEBUG] [Thread-189693] [transport.py] [_log()] starting thread (client mode): 0xd3192890
2025-11-24T12:06:17.763 [DEBUG] [Thread-189693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:06:17.783 [DEBUG] [Thread-189693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:06:17.783 [INFO] [Thread-189693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] client lang: <none>
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] server lang: <none>
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] kex follows: False
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:06:17.786 [DEBUG] [Thread-189693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:06:17.787 [DEBUG] [Thread-189693] [transport.py] [_log()] Compression: none
2025-11-24T12:06:17.787 [DEBUG] [Thread-189693] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:06:17.805 [DEBUG] [Thread-189693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:06:17.805 [DEBUG] [Thread-189693] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:06:17.806 [DEBUG] [Thread-189693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:06:17.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:06:17.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:06:17.849 [DEBUG] [Thread-189693] [transport.py] [_log()] userauth is OK
2025-11-24T12:06:17.849 [DEBUG] [Thread-189693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:06:17.849 [DEBUG] [Thread-189693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:06:17.849 [DEBUG] [Thread-189693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:06:17.849 [DEBUG] [Thread-189693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:06:17.882 [INFO] [Thread-189693] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:06:17.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:06:18.520 [DEBUG] [Thread-189693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:06:18.520 [DEBUG] [Thread-189693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:06:18.521 [DEBUG] [Thread-189693] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:06:18.560 [DEBUG] [Thread-189693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:06:18.560 [DEBUG] [Thread-189693] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:06:18.562 [DEBUG] [Thread-189693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:06:18.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:06:18.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:06:18.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:06:18.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:06:18.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:06:18.582 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:06:18.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.420882 -999.00  +19.60  13.05     26   +0.00 1 1 1 1 1   888    0 19.53 6.88 ----- 13.1 13.1 166.0 21.6 26.1 -26.1 25.1 -25.8 25.1 -24.4 26.2 -25.6
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.420882
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:06:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:06:09', tmtdew=22.23, humidity=22.14, cloud=0.0, wind=18.14, temperature=18.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:06:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:06:18.583 [DEBUG] [Thread-189693] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:06:18.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:06:18.668 [DEBUG] [Thread-189696] [transport.py] [_log()] starting thread (client mode): 0xd0701360
2025-11-24T12:06:18.668 [DEBUG] [Thread-189696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:06:18.682 [DEBUG] [Thread-189696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:06:18.682 [INFO] [Thread-189696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] client lang: <none>
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] server lang: <none>
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] kex follows: False
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:06:18.690 [DEBUG] [Thread-189696] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:06:18.692 [DEBUG] [Thread-189696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:06:18.692 [DEBUG] [Thread-189696] [transport.py] [_log()] Compression: none
2025-11-24T12:06:18.692 [DEBUG] [Thread-189696] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:06:18.748 [DEBUG] [Thread-189696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:06:18.748 [DEBUG] [Thread-189696] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:06:18.748 [DEBUG] [Thread-189696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:06:18.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:06:18.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:06:18.806 [DEBUG] [Thread-189696] [transport.py] [_log()] userauth is OK
2025-11-24T12:06:18.806 [DEBUG] [Thread-189696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:06:18.806 [DEBUG] [Thread-189696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:06:18.806 [DEBUG] [Thread-189696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:06:18.806 [DEBUG] [Thread-189696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:06:18.820 [INFO] [Thread-189696] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:06:18.820 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:06:18.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:06:19.670 [DEBUG] [Thread-189696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:06:19.679 [DEBUG] [Thread-189696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:06:19.718 [DEBUG] [Thread-189696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:06:19.718 [DEBUG] [Thread-189696] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:06:19.726 [DEBUG] [Thread-189696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:06:19.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:06:19.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-11-24T12:06:19.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-11-24T12:06:19.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:06:19.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:06:19.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:06:19.758 [DEBUG] [Thread-189696] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:06:27.639 [DEBUG] [Thread-189698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:06:42.693 [DEBUG] [Thread-189699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:06:44.816 [DEBUG] [Thread-189700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:06:48.413 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:06:48.414 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:06:49.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:06:49.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:06:49.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-11-24T12:06:50.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 6, 42), 21.61, 22.76, 0.0, 21.32, 18.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:06:50.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:06:42
2025-11-24T12:06:50.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:06:50.833 [DEBUG] [Thread-189701] [transport.py] [_log()] starting thread (client mode): 0xd3150ee0
2025-11-24T12:06:50.833 [DEBUG] [Thread-189701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:06:50.851 [DEBUG] [Thread-189701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:06:50.852 [INFO] [Thread-189701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] client lang: <none>
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] server lang: <none>
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] kex follows: False
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:06:50.855 [DEBUG] [Thread-189701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:06:50.856 [DEBUG] [Thread-189701] [transport.py] [_log()] Compression: none
2025-11-24T12:06:50.856 [DEBUG] [Thread-189701] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:06:50.876 [DEBUG] [Thread-189701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:06:50.876 [DEBUG] [Thread-189701] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:06:50.877 [DEBUG] [Thread-189701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:06:50.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:06:50.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:06:50.881 [DEBUG] [Thread-189701] [transport.py] [_log()] userauth is OK
2025-11-24T12:06:50.881 [DEBUG] [Thread-189701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:06:50.881 [DEBUG] [Thread-189701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:06:50.881 [DEBUG] [Thread-189701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:06:50.881 [DEBUG] [Thread-189701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:06:50.897 [INFO] [Thread-189701] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:06:50.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:06:51.546 [DEBUG] [Thread-189701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:06:51.547 [DEBUG] [Thread-189701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:06:51.547 [DEBUG] [Thread-189701] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:06:51.587 [DEBUG] [Thread-189701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:06:51.588 [DEBUG] [Thread-189701] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:06:51.591 [DEBUG] [Thread-189701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:06:51.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:06:51.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:06:51.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:06:51.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:06:51.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:06:51.615 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:06:51.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:06:51.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:06:51.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:06:51.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.421229 -999.00  +19.40  15.90     27   +0.00 1 1 1 1 1   888    0 19.72 4.90 ----- 15.9 15.9 141.6 29.2 26.2 -25.8 25.0 -25.5 25.1 -25.9 26.2 -26.1
2025-11-24T12:06:51.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:06:51.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:06:51.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.421229
2025-11-24T12:06:51.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:06:51.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:06:51.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:06:51.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:06:51.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:06:51.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:06:42', tmtdew=21.61, humidity=22.76, cloud=0.0, wind=21.32, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:06:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:06:51.619 [DEBUG] [Thread-189701] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:06:51.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:06:51.714 [DEBUG] [Thread-189704] [transport.py] [_log()] starting thread (client mode): 0xd0710d90
2025-11-24T12:06:51.714 [DEBUG] [Thread-189704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:06:51.729 [DEBUG] [Thread-189704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:06:51.730 [INFO] [Thread-189704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] client lang: <none>
2025-11-24T12:06:51.737 [DEBUG] [Thread-189704] [transport.py] [_log()] server lang: <none>
2025-11-24T12:06:51.738 [DEBUG] [Thread-189704] [transport.py] [_log()] kex follows: False
2025-11-24T12:06:51.738 [DEBUG] [Thread-189704] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:06:51.738 [DEBUG] [Thread-189704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:06:51.738 [DEBUG] [Thread-189704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:06:51.738 [DEBUG] [Thread-189704] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:06:51.738 [DEBUG] [Thread-189704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:06:51.738 [DEBUG] [Thread-189704] [transport.py] [_log()] Compression: none
2025-11-24T12:06:51.738 [DEBUG] [Thread-189704] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:06:51.799 [DEBUG] [Thread-189704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:06:51.800 [DEBUG] [Thread-189704] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:06:51.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:06:51.801 [DEBUG] [Thread-189704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:06:51.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:06:51.858 [DEBUG] [Thread-189704] [transport.py] [_log()] userauth is OK
2025-11-24T12:06:51.858 [DEBUG] [Thread-189704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:06:51.858 [DEBUG] [Thread-189704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:06:51.858 [DEBUG] [Thread-189704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:06:51.858 [DEBUG] [Thread-189704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:06:51.872 [INFO] [Thread-189704] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:06:51.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:06:51.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:06:52.748 [DEBUG] [Thread-189704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:06:52.748 [DEBUG] [Thread-189704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:06:52.796 [DEBUG] [Thread-189704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:06:52.796 [DEBUG] [Thread-189704] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:06:52.805 [DEBUG] [Thread-189704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:06:52.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:06:52.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-11-24T12:06:52.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-11-24T12:06:52.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:06:52.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:06:52.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:06:52.842 [DEBUG] [Thread-189704] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:06:57.727 [DEBUG] [Thread-189706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:07:12.788 [DEBUG] [Thread-189707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:07:22.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:07:22.865 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:07:22.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-11-24T12:07:23.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 7, 14), 21.5, 22.91, 0.0, 20.68, 18.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:07:23.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:07:14
2025-11-24T12:07:23.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:07:23.927 [DEBUG] [Thread-189708] [transport.py] [_log()] starting thread (client mode): 0xd3152590
2025-11-24T12:07:23.927 [DEBUG] [Thread-189708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:07:23.946 [DEBUG] [Thread-189708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:07:23.947 [INFO] [Thread-189708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:07:23.957 [DEBUG] [Thread-189708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:07:23.957 [DEBUG] [Thread-189708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:07:23.957 [DEBUG] [Thread-189708] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:07:23.957 [DEBUG] [Thread-189708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:07:23.957 [DEBUG] [Thread-189708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:07:23.957 [DEBUG] [Thread-189708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] client lang: <none>
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] server lang: <none>
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] kex follows: False
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] Compression: none
2025-11-24T12:07:23.958 [DEBUG] [Thread-189708] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:07:23.977 [DEBUG] [Thread-189708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:07:23.977 [DEBUG] [Thread-189708] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:07:23.978 [DEBUG] [Thread-189708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:07:23.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:07:23.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:07:23.980 [DEBUG] [Thread-189708] [transport.py] [_log()] userauth is OK
2025-11-24T12:07:23.980 [DEBUG] [Thread-189708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:07:23.980 [DEBUG] [Thread-189708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:07:23.980 [DEBUG] [Thread-189708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:07:23.980 [DEBUG] [Thread-189708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:07:24.004 [INFO] [Thread-189708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:07:24.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:07:24.663 [DEBUG] [Thread-189708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:07:24.663 [DEBUG] [Thread-189708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:07:24.663 [DEBUG] [Thread-189708] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:07:24.704 [DEBUG] [Thread-189708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:07:24.704 [DEBUG] [Thread-189708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:07:24.707 [DEBUG] [Thread-189708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:07:24.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:07:24.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:07:24.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:07:24.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:07:24.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:07:24.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:07:24.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:07:24.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:07:24.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:07:24.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.421576 -999.00  +19.00   8.70     27   -0.10 1 1 1 1 1   888    0 19.24 1.27 ----- 8.7 8.7 195.8 19.9 26.2 -25.3 25.1 -24.1 25.1 -25.1 26.1 -24.6
2025-11-24T12:07:24.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:07:24.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:07:24.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.421576
2025-11-24T12:07:24.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:07:24.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:07:24.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:07:24.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:07:24.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:07:24.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:07:14', tmtdew=21.5, humidity=22.91, cloud=0.0, wind=20.68, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:07:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:07:24.743 [DEBUG] [Thread-189708] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:07:24.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:07:24.838 [DEBUG] [Thread-189711] [transport.py] [_log()] starting thread (client mode): 0xd07eafe0
2025-11-24T12:07:24.838 [DEBUG] [Thread-189711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:07:24.853 [DEBUG] [Thread-189711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:07:24.853 [INFO] [Thread-189711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:07:24.860 [DEBUG] [Thread-189711] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:07:24.860 [DEBUG] [Thread-189711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:07:24.860 [DEBUG] [Thread-189711] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] client lang: <none>
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] server lang: <none>
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] kex follows: False
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] Compression: none
2025-11-24T12:07:24.861 [DEBUG] [Thread-189711] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:07:24.921 [DEBUG] [Thread-189711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:07:24.921 [DEBUG] [Thread-189711] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:07:24.921 [DEBUG] [Thread-189711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:07:24.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:07:24.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:07:24.977 [DEBUG] [Thread-189711] [transport.py] [_log()] userauth is OK
2025-11-24T12:07:24.977 [DEBUG] [Thread-189711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:07:24.977 [DEBUG] [Thread-189711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:07:24.978 [DEBUG] [Thread-189711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:07:24.978 [DEBUG] [Thread-189711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:07:24.991 [INFO] [Thread-189711] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:07:24.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:07:24.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:07:25.857 [DEBUG] [Thread-189711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:07:25.866 [DEBUG] [Thread-189711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:07:25.905 [DEBUG] [Thread-189711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:07:25.906 [DEBUG] [Thread-189711] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:07:25.915 [DEBUG] [Thread-189711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:07:25.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:07:25.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-11-24T12:07:25.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-11-24T12:07:25.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:07:25.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:07:25.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:07:25.952 [DEBUG] [Thread-189711] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:07:27.819 [DEBUG] [Thread-189713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:07:42.870 [DEBUG] [Thread-189714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:07:44.871 [DEBUG] [Thread-189715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:07:48.554 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:07:48.555 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:07:55.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:07:55.946 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:07:55.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-11-24T12:07:56.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 7, 46), 21.3, 23.58, 0.0, 19.58, 18.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:07:56.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:07:46
2025-11-24T12:07:56.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:07:56.914 [DEBUG] [Thread-189716] [transport.py] [_log()] starting thread (client mode): 0xd07e9180
2025-11-24T12:07:56.915 [DEBUG] [Thread-189716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:07:56.925 [DEBUG] [Thread-189716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:07:56.925 [INFO] [Thread-189716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:07:56.928 [DEBUG] [Thread-189716] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] client lang: <none>
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] server lang: <none>
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] kex follows: False
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] Compression: none
2025-11-24T12:07:56.929 [DEBUG] [Thread-189716] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:07:56.946 [DEBUG] [Thread-189716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:07:56.947 [DEBUG] [Thread-189716] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:07:56.947 [DEBUG] [Thread-189716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:07:56.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:07:56.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:07:56.950 [DEBUG] [Thread-189716] [transport.py] [_log()] userauth is OK
2025-11-24T12:07:56.950 [DEBUG] [Thread-189716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:07:56.950 [DEBUG] [Thread-189716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:07:56.950 [DEBUG] [Thread-189716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:07:56.950 [DEBUG] [Thread-189716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:07:56.975 [INFO] [Thread-189716] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:07:56.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:07:57.637 [DEBUG] [Thread-189716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:07:57.637 [DEBUG] [Thread-189716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:07:57.637 [DEBUG] [Thread-189716] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:07:57.677 [DEBUG] [Thread-189716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:07:57.677 [DEBUG] [Thread-189716] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:07:57.680 [DEBUG] [Thread-189716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:07:57.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:07:57.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:07:57.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:07:57.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:07:57.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:07:57.697 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:07:57.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.421924 -999.00  +19.20  14.01     28   +0.20 1 1 1 1 1   888    0 18.97 -3.46 ----- 14.0 14.0 150.6 20.8 26.3 -24.3 25.3 -24.9 25.3 -22.8 26.3 -25.4
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.421924
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:07:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:07:46', tmtdew=21.3, humidity=23.58, cloud=0.0, wind=19.58, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:07:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:07:57.698 [DEBUG] [Thread-189716] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:07:57.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:07:57.781 [DEBUG] [Thread-189719] [transport.py] [_log()] starting thread (client mode): 0xd07e9480
2025-11-24T12:07:57.781 [DEBUG] [Thread-189719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:07:57.797 [DEBUG] [Thread-189719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:07:57.797 [INFO] [Thread-189719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] client lang: <none>
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] server lang: <none>
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] kex follows: False
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] Compression: none
2025-11-24T12:07:57.804 [DEBUG] [Thread-189719] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:07:57.860 [DEBUG] [Thread-189719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:07:57.860 [DEBUG] [Thread-189719] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:07:57.861 [DEBUG] [Thread-189719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:07:57.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:07:57.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:07:57.912 [DEBUG] [Thread-189721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:07:57.917 [DEBUG] [Thread-189719] [transport.py] [_log()] userauth is OK
2025-11-24T12:07:57.917 [DEBUG] [Thread-189719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:07:57.917 [DEBUG] [Thread-189719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:07:57.917 [DEBUG] [Thread-189719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:07:57.917 [DEBUG] [Thread-189719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:07:57.931 [INFO] [Thread-189719] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:07:57.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:07:57.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:07:58.790 [DEBUG] [Thread-189719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:07:58.790 [DEBUG] [Thread-189719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:07:58.837 [DEBUG] [Thread-189719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:07:58.838 [DEBUG] [Thread-189719] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:07:58.847 [DEBUG] [Thread-189719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:07:58.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:07:58.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-11-24T12:07:58.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-11-24T12:07:58.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:07:58.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:07:58.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:07:58.882 [DEBUG] [Thread-189719] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:08:12.952 [DEBUG] [Thread-189722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:08:27.980 [DEBUG] [Thread-189723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:08:28.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:08:28.875 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:08:28.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-11-24T12:08:29.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 8, 19), 21.73, 22.93, 0.0, 17.31, 18.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:08:29.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:08:19
2025-11-24T12:08:29.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:08:29.987 [DEBUG] [Thread-189724] [transport.py] [_log()] starting thread (client mode): 0xd07e9750
2025-11-24T12:08:29.987 [DEBUG] [Thread-189724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:08:30.007 [DEBUG] [Thread-189724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:08:30.008 [INFO] [Thread-189724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] client lang: <none>
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] server lang: <none>
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] kex follows: False
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] Compression: none
2025-11-24T12:08:30.011 [DEBUG] [Thread-189724] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:08:30.026 [DEBUG] [Thread-189724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:08:30.026 [DEBUG] [Thread-189724] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:08:30.026 [DEBUG] [Thread-189724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:08:30.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:08:30.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:08:30.068 [DEBUG] [Thread-189724] [transport.py] [_log()] userauth is OK
2025-11-24T12:08:30.068 [DEBUG] [Thread-189724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:08:30.068 [DEBUG] [Thread-189724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:08:30.068 [DEBUG] [Thread-189724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:08:30.068 [DEBUG] [Thread-189724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:08:30.098 [INFO] [Thread-189724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:08:30.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:08:30.757 [DEBUG] [Thread-189724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:08:30.757 [DEBUG] [Thread-189724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:08:30.758 [DEBUG] [Thread-189724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:08:30.799 [DEBUG] [Thread-189724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:08:30.799 [DEBUG] [Thread-189724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:08:30.802 [DEBUG] [Thread-189724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:08:30.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:08:30.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:08:30.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:08:30.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:08:30.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:08:30.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:08:30.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:08:30.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:08:30.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:08:30.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.422271 -999.00  +19.60  16.88     27   +0.10 1 1 1 1 1   888    0 19.23 -6.17 ----- 16.9 16.9 137.2 25.0 26.4 -25.6 25.4 -25.2 25.4 -23.6 26.3 -24.7
2025-11-24T12:08:30.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:08:30.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:08:30.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.422271
2025-11-24T12:08:30.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:08:30.829 [DEBUG] [Thread-189724] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:08:30.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:08:30.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:08:30.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:08:30.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:08:30.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:08:19', tmtdew=21.73, humidity=22.93, cloud=0.0, wind=17.31, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:08:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:08:30.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:08:30.929 [DEBUG] [Thread-189727] [transport.py] [_log()] starting thread (client mode): 0xd316d060
2025-11-24T12:08:30.929 [DEBUG] [Thread-189727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:08:30.948 [DEBUG] [Thread-189727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:08:30.948 [INFO] [Thread-189727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:08:30.956 [DEBUG] [Thread-189727] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:08:30.956 [DEBUG] [Thread-189727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:08:30.956 [DEBUG] [Thread-189727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:08:30.956 [DEBUG] [Thread-189727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:08:30.956 [DEBUG] [Thread-189727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:08:30.957 [DEBUG] [Thread-189727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:08:30.957 [DEBUG] [Thread-189727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:08:30.957 [DEBUG] [Thread-189727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:08:30.957 [DEBUG] [Thread-189727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:08:30.957 [DEBUG] [Thread-189727] [transport.py] [_log()] client lang: <none>
2025-11-24T12:08:30.957 [DEBUG] [Thread-189727] [transport.py] [_log()] server lang: <none>
2025-11-24T12:08:30.957 [DEBUG] [Thread-189727] [transport.py] [_log()] kex follows: False
2025-11-24T12:08:30.957 [DEBUG] [Thread-189727] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:08:30.958 [DEBUG] [Thread-189727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:08:30.958 [DEBUG] [Thread-189727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:08:30.958 [DEBUG] [Thread-189727] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:08:30.958 [DEBUG] [Thread-189727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:08:30.958 [DEBUG] [Thread-189727] [transport.py] [_log()] Compression: none
2025-11-24T12:08:30.958 [DEBUG] [Thread-189727] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:08:31.014 [DEBUG] [Thread-189727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:08:31.014 [DEBUG] [Thread-189727] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:08:31.015 [DEBUG] [Thread-189727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:08:31.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:08:31.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:08:31.073 [DEBUG] [Thread-189727] [transport.py] [_log()] userauth is OK
2025-11-24T12:08:31.074 [DEBUG] [Thread-189727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:08:31.074 [DEBUG] [Thread-189727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:08:31.074 [DEBUG] [Thread-189727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:08:31.074 [DEBUG] [Thread-189727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:08:31.093 [INFO] [Thread-189727] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:08:31.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:08:31.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:08:31.981 [DEBUG] [Thread-189727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:08:31.981 [DEBUG] [Thread-189727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:08:32.030 [DEBUG] [Thread-189727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:08:32.030 [DEBUG] [Thread-189727] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:08:32.038 [DEBUG] [Thread-189727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:08:32.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:08:32.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-11-24T12:08:32.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-11-24T12:08:32.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:08:32.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:08:32.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:08:32.076 [DEBUG] [Thread-189727] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:08:43.011 [DEBUG] [Thread-189729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:08:44.989 [DEBUG] [Thread-189730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:08:48.737 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:08:48.740 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:08:58.057 [DEBUG] [Thread-189731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:09:02.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:09:02.094 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:09:02.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-11-24T12:09:02.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 8, 51), 23.01, 20.94, 0.0, 21.93, 19.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:09:02.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:08:51
2025-11-24T12:09:03.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:09:03.209 [DEBUG] [Thread-189732] [transport.py] [_log()] starting thread (client mode): 0xd3152d70
2025-11-24T12:09:03.209 [DEBUG] [Thread-189732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:09:03.233 [DEBUG] [Thread-189732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:09:03.234 [INFO] [Thread-189732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:09:03.237 [DEBUG] [Thread-189732] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:09:03.237 [DEBUG] [Thread-189732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:09:03.237 [DEBUG] [Thread-189732] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] client lang: <none>
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] server lang: <none>
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] kex follows: False
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] Compression: none
2025-11-24T12:09:03.238 [DEBUG] [Thread-189732] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:09:03.253 [DEBUG] [Thread-189732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:09:03.253 [DEBUG] [Thread-189732] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:09:03.253 [DEBUG] [Thread-189732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:09:03.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:09:03.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:09:03.254 [DEBUG] [Thread-189732] [transport.py] [_log()] userauth is OK
2025-11-24T12:09:03.254 [DEBUG] [Thread-189732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:09:03.254 [DEBUG] [Thread-189732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:09:03.254 [DEBUG] [Thread-189732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:09:03.254 [DEBUG] [Thread-189732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:09:03.263 [INFO] [Thread-189732] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:09:03.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:09:03.888 [DEBUG] [Thread-189732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:09:03.888 [DEBUG] [Thread-189732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:09:03.888 [DEBUG] [Thread-189732] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:09:03.929 [DEBUG] [Thread-189732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:09:03.929 [DEBUG] [Thread-189732] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:09:03.931 [DEBUG] [Thread-189732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:09:03.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:09:03.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:09:03.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:09:03.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:09:03.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:09:03.949 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:09:03.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.422618 -999.00  +19.60  21.25     26   +0.00 1 1 1 1 1   888    0 19.05 -7.39 ----- 21.2 21.2 167.9 26.5 26.3 -26.5 25.2 -24.7 -999.0 -999.0 26.4 -25.8
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.422618
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:09:03.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:08:51', tmtdew=23.01, humidity=20.94, cloud=0.0, wind=21.93, temperature=19.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:08:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:09:03.950 [DEBUG] [Thread-189732] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:09:04.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:09:04.035 [DEBUG] [Thread-189735] [transport.py] [_log()] starting thread (client mode): 0xd3152b60
2025-11-24T12:09:04.035 [DEBUG] [Thread-189735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:09:04.050 [DEBUG] [Thread-189735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:09:04.050 [INFO] [Thread-189735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:09:04.057 [DEBUG] [Thread-189735] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:09:04.057 [DEBUG] [Thread-189735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:09:04.057 [DEBUG] [Thread-189735] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] client lang: <none>
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] server lang: <none>
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] kex follows: False
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] Compression: none
2025-11-24T12:09:04.058 [DEBUG] [Thread-189735] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:09:04.116 [DEBUG] [Thread-189735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:09:04.116 [DEBUG] [Thread-189735] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:09:04.116 [DEBUG] [Thread-189735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:09:04.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:09:04.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:09:04.173 [DEBUG] [Thread-189735] [transport.py] [_log()] userauth is OK
2025-11-24T12:09:04.173 [DEBUG] [Thread-189735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:09:04.173 [DEBUG] [Thread-189735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:09:04.173 [DEBUG] [Thread-189735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:09:04.173 [DEBUG] [Thread-189735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:09:04.187 [INFO] [Thread-189735] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:09:04.187 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:09:04.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:09:05.047 [DEBUG] [Thread-189735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:09:05.047 [DEBUG] [Thread-189735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:09:05.095 [DEBUG] [Thread-189735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:09:05.095 [DEBUG] [Thread-189735] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:09:05.103 [DEBUG] [Thread-189735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:09:05.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:09:05.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-11-24T12:09:05.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-11-24T12:09:05.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:09:05.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:09:05.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:09:05.135 [DEBUG] [Thread-189735] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:09:13.088 [DEBUG] [Thread-189737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:09:28.147 [DEBUG] [Thread-189738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:09:35.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:09:35.158 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:09:35.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-11-24T12:09:35.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 9, 24), 23.07, 20.89, 0.0, 25.06, 19.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:09:35.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:09:24
2025-11-24T12:09:36.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:09:36.252 [DEBUG] [Thread-189739] [transport.py] [_log()] starting thread (client mode): 0xd07e9f00
2025-11-24T12:09:36.252 [DEBUG] [Thread-189739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:09:36.273 [DEBUG] [Thread-189739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:09:36.273 [INFO] [Thread-189739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:09:36.276 [DEBUG] [Thread-189739] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:09:36.276 [DEBUG] [Thread-189739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:09:36.276 [DEBUG] [Thread-189739] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:09:36.276 [DEBUG] [Thread-189739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:09:36.276 [DEBUG] [Thread-189739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:09:36.276 [DEBUG] [Thread-189739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:09:36.276 [DEBUG] [Thread-189739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] client lang: <none>
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] server lang: <none>
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] kex follows: False
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] Compression: none
2025-11-24T12:09:36.277 [DEBUG] [Thread-189739] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:09:36.294 [DEBUG] [Thread-189739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:09:36.295 [DEBUG] [Thread-189739] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:09:36.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:09:36.296 [DEBUG] [Thread-189739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:09:36.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:09:36.298 [DEBUG] [Thread-189739] [transport.py] [_log()] userauth is OK
2025-11-24T12:09:36.298 [DEBUG] [Thread-189739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:09:36.298 [DEBUG] [Thread-189739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:09:36.298 [DEBUG] [Thread-189739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:09:36.298 [DEBUG] [Thread-189739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:09:36.332 [INFO] [Thread-189739] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:09:36.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:09:36.977 [DEBUG] [Thread-189739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:09:36.977 [DEBUG] [Thread-189739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:09:36.978 [DEBUG] [Thread-189739] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:09:37.019 [DEBUG] [Thread-189739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:09:37.019 [DEBUG] [Thread-189739] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:09:37.021 [DEBUG] [Thread-189739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:09:37.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:09:37.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:09:37.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:09:37.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:09:37.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:09:37.039 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:09:37.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:09:37.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:09:37.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:09:37.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.422965 -999.00  +19.70  14.59     26   +0.10 1 1 1 1 1   888    0 19.25 -8.18 ----- 14.6 14.6 174.4 19.8 26.4 -26.3 25.4 -24.1 25.4 -24.1 26.4 -25.1
2025-11-24T12:09:37.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:09:37.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:09:37.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.422965
2025-11-24T12:09:37.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:09:37.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:09:37.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:09:37.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:09:37.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:09:37.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:09:24', tmtdew=23.07, humidity=20.89, cloud=0.0, wind=25.06, temperature=19.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:09:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:09:37.040 [DEBUG] [Thread-189739] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:09:37.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:09:37.129 [DEBUG] [Thread-189742] [transport.py] [_log()] starting thread (client mode): 0xd0712e30
2025-11-24T12:09:37.129 [DEBUG] [Thread-189742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:09:37.146 [DEBUG] [Thread-189742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:09:37.146 [INFO] [Thread-189742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:09:37.153 [DEBUG] [Thread-189742] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:09:37.153 [DEBUG] [Thread-189742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:09:37.153 [DEBUG] [Thread-189742] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:09:37.153 [DEBUG] [Thread-189742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:09:37.153 [DEBUG] [Thread-189742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:09:37.153 [DEBUG] [Thread-189742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:09:37.153 [DEBUG] [Thread-189742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] client lang: <none>
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] server lang: <none>
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] kex follows: False
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] Compression: none
2025-11-24T12:09:37.154 [DEBUG] [Thread-189742] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:09:37.208 [DEBUG] [Thread-189742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:09:37.208 [DEBUG] [Thread-189742] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:09:37.208 [DEBUG] [Thread-189742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:09:37.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:09:37.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:09:37.265 [DEBUG] [Thread-189742] [transport.py] [_log()] userauth is OK
2025-11-24T12:09:37.265 [DEBUG] [Thread-189742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:09:37.265 [DEBUG] [Thread-189742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:09:37.265 [DEBUG] [Thread-189742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:09:37.265 [DEBUG] [Thread-189742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:09:37.279 [INFO] [Thread-189742] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:09:37.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:09:37.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:09:38.149 [DEBUG] [Thread-189742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:09:38.149 [DEBUG] [Thread-189742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:09:38.197 [DEBUG] [Thread-189742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:09:38.197 [DEBUG] [Thread-189742] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:09:38.206 [DEBUG] [Thread-189742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:09:38.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:09:38.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:09:38.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-11-24T12:09:38.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:09:38.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:09:38.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:09:38.240 [DEBUG] [Thread-189742] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:09:43.181 [DEBUG] [Thread-189744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:09:45.235 [DEBUG] [Thread-189745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:09:48.880 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:09:48.882 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:09:58.219 [DEBUG] [Thread-189746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:10:08.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:10:08.259 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:10:08.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-11-24T12:10:09.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 9, 56), 22.75, 21.24, 0.0, 21.39, 19.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:10:09.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:09:56
2025-11-24T12:10:09.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:10:09.374 [DEBUG] [Thread-189747] [transport.py] [_log()] starting thread (client mode): 0xd316cd30
2025-11-24T12:10:09.374 [DEBUG] [Thread-189747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:10:09.392 [DEBUG] [Thread-189747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:10:09.393 [INFO] [Thread-189747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] client lang: <none>
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] server lang: <none>
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] kex follows: False
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:10:09.396 [DEBUG] [Thread-189747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:10:09.397 [DEBUG] [Thread-189747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:10:09.397 [DEBUG] [Thread-189747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:10:09.397 [DEBUG] [Thread-189747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:10:09.397 [DEBUG] [Thread-189747] [transport.py] [_log()] Compression: none
2025-11-24T12:10:09.397 [DEBUG] [Thread-189747] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:10:09.418 [DEBUG] [Thread-189747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:10:09.420 [DEBUG] [Thread-189747] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:10:09.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:10:09.421 [DEBUG] [Thread-189747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:10:09.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:10:09.423 [DEBUG] [Thread-189747] [transport.py] [_log()] userauth is OK
2025-11-24T12:10:09.424 [DEBUG] [Thread-189747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:10:09.424 [DEBUG] [Thread-189747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:10:09.424 [DEBUG] [Thread-189747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:10:09.424 [DEBUG] [Thread-189747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:10:09.449 [INFO] [Thread-189747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:10:09.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:10:13.256 [DEBUG] [Thread-189749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:10:15.674 [DEBUG] [Thread-189747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:10:15.674 [DEBUG] [Thread-189747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:10:15.684 [DEBUG] [Thread-189747] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:10:15.714 [DEBUG] [Thread-189747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:10:15.715 [DEBUG] [Thread-189747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:10:15.719 [DEBUG] [Thread-189747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:10:15.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:10:15.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:10:15.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:10:15.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:10:15.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:10:15.744 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:10:15.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:10:15.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:10:15.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:10:15.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.422965 -999.00  +19.70  14.59     26   +0.10 1 1 1 1 1   888    0 19.25 -8.18 ----- 14.6 14.6 174.4 19.8 26.4 -26.3 25.4 -24.1 25.4 -24.1 26.4 -25.1
2025-11-24T12:10:15.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:10:15.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:10:15.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.422965
2025-11-24T12:10:15.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:10:15.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:10:15.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:10:15.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:10:15.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:10:15.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:09:56', tmtdew=22.75, humidity=21.24, cloud=0.0, wind=21.39, temperature=19.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:09:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:10:15.752 [DEBUG] [Thread-189747] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:10:15.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:10:15.850 [DEBUG] [Thread-189751] [transport.py] [_log()] starting thread (client mode): 0xd07e9540
2025-11-24T12:10:15.850 [DEBUG] [Thread-189751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:10:15.865 [DEBUG] [Thread-189751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:10:15.865 [INFO] [Thread-189751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] client lang: <none>
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] server lang: <none>
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] kex follows: False
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:10:15.872 [DEBUG] [Thread-189751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:10:15.873 [DEBUG] [Thread-189751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:10:15.873 [DEBUG] [Thread-189751] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:10:15.873 [DEBUG] [Thread-189751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:10:15.873 [DEBUG] [Thread-189751] [transport.py] [_log()] Compression: none
2025-11-24T12:10:15.873 [DEBUG] [Thread-189751] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:10:15.928 [DEBUG] [Thread-189751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:10:15.928 [DEBUG] [Thread-189751] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:10:15.928 [DEBUG] [Thread-189751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:10:15.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:10:15.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:10:15.985 [DEBUG] [Thread-189751] [transport.py] [_log()] userauth is OK
2025-11-24T12:10:15.986 [DEBUG] [Thread-189751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:10:15.986 [DEBUG] [Thread-189751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:10:15.986 [DEBUG] [Thread-189751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:10:15.986 [DEBUG] [Thread-189751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:10:16.004 [INFO] [Thread-189751] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:10:16.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:10:16.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:10:16.855 [DEBUG] [Thread-189751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:10:16.855 [DEBUG] [Thread-189751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:10:16.904 [DEBUG] [Thread-189751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:10:16.904 [DEBUG] [Thread-189751] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:10:16.913 [DEBUG] [Thread-189751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:10:16.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:10:16.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:10:16.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-11-24T12:10:16.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:10:16.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:10:16.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:10:16.950 [DEBUG] [Thread-189751] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:10:28.289 [DEBUG] [Thread-189753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:10:43.347 [DEBUG] [Thread-189754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:10:45.332 [DEBUG] [Thread-189755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:10:46.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:10:46.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:10:46.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-11-24T12:10:47.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 10, 29), 22.62, 21.45, 0.0, 24.88, 19.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:10:47.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:10:29
2025-11-24T12:10:47.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:10:48.036 [DEBUG] [Thread-189756] [transport.py] [_log()] starting thread (client mode): 0xd07ebd30
2025-11-24T12:10:48.036 [DEBUG] [Thread-189756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:10:48.057 [DEBUG] [Thread-189756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:10:48.057 [INFO] [Thread-189756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:10:48.060 [DEBUG] [Thread-189756] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:10:48.060 [DEBUG] [Thread-189756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:10:48.060 [DEBUG] [Thread-189756] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:10:48.060 [DEBUG] [Thread-189756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:10:48.060 [DEBUG] [Thread-189756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:10:48.060 [DEBUG] [Thread-189756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:10:48.061 [DEBUG] [Thread-189756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:10:48.061 [DEBUG] [Thread-189756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:10:48.061 [DEBUG] [Thread-189756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:10:48.061 [DEBUG] [Thread-189756] [transport.py] [_log()] client lang: <none>
2025-11-24T12:10:48.061 [DEBUG] [Thread-189756] [transport.py] [_log()] server lang: <none>
2025-11-24T12:10:48.061 [DEBUG] [Thread-189756] [transport.py] [_log()] kex follows: False
2025-11-24T12:10:48.061 [DEBUG] [Thread-189756] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:10:48.061 [DEBUG] [Thread-189756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:10:48.061 [DEBUG] [Thread-189756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:10:48.062 [DEBUG] [Thread-189756] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:10:48.062 [DEBUG] [Thread-189756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:10:48.062 [DEBUG] [Thread-189756] [transport.py] [_log()] Compression: none
2025-11-24T12:10:48.062 [DEBUG] [Thread-189756] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:10:48.076 [DEBUG] [Thread-189756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:10:48.077 [DEBUG] [Thread-189756] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:10:48.078 [DEBUG] [Thread-189756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:10:48.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:10:48.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:10:48.080 [DEBUG] [Thread-189756] [transport.py] [_log()] userauth is OK
2025-11-24T12:10:48.080 [DEBUG] [Thread-189756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:10:48.080 [DEBUG] [Thread-189756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:10:48.080 [DEBUG] [Thread-189756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:10:48.081 [DEBUG] [Thread-189756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:10:48.096 [INFO] [Thread-189756] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:10:48.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:10:48.752 [DEBUG] [Thread-189756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:10:48.752 [DEBUG] [Thread-189756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:10:48.752 [DEBUG] [Thread-189756] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:10:48.793 [DEBUG] [Thread-189756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:10:48.793 [DEBUG] [Thread-189756] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:10:48.796 [DEBUG] [Thread-189756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:10:48.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:10:48.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:10:48.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:10:48.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:10:48.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:10:48.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:10:48.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:10:48.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:10:48.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:10:48.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.423312 -999.00  +19.90  19.96     26   +0.00 1 1 1 1 1   888    0 19.44 -8.04 ----- 20.0 20.0 167.8 25.8 26.5 -26.8 25.4 -25.2 25.4 -24.2 26.6 -25.4
2025-11-24T12:10:48.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:10:48.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:10:48.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.423312
2025-11-24T12:10:48.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:10:48.825 [DEBUG] [Thread-189756] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:10:48.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:10:48.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:10:48.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:10:48.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:10:48.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:10:29', tmtdew=22.62, humidity=21.45, cloud=0.0, wind=24.88, temperature=19.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:09:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:10:48.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:10:48.929 [DEBUG] [Thread-189759] [transport.py] [_log()] starting thread (client mode): 0xd3191ba0
2025-11-24T12:10:48.929 [DEBUG] [Thread-189759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:10:48.944 [DEBUG] [Thread-189759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:10:48.944 [INFO] [Thread-189759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] client lang: <none>
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] server lang: <none>
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] kex follows: False
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:10:48.952 [DEBUG] [Thread-189759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:10:48.953 [DEBUG] [Thread-189759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:10:48.962 [DEBUG] [Thread-189759] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:10:48.962 [DEBUG] [Thread-189759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:10:48.962 [DEBUG] [Thread-189759] [transport.py] [_log()] Compression: none
2025-11-24T12:10:48.962 [DEBUG] [Thread-189759] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:10:49.010 [DEBUG] [Thread-189759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:10:49.011 [DEBUG] [Thread-189759] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:10:49.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:10:49.012 [DEBUG] [Thread-189759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:10:49.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:10:49.024 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:10:49.025 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:10:49.071 [DEBUG] [Thread-189759] [transport.py] [_log()] userauth is OK
2025-11-24T12:10:49.071 [DEBUG] [Thread-189759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:10:49.072 [DEBUG] [Thread-189759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:10:49.072 [DEBUG] [Thread-189759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:10:49.072 [DEBUG] [Thread-189759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:10:49.090 [INFO] [Thread-189759] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:10:49.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:10:49.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:10:49.950 [DEBUG] [Thread-189759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:10:49.950 [DEBUG] [Thread-189759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:10:50.003 [DEBUG] [Thread-189759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:10:50.003 [DEBUG] [Thread-189759] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:10:50.012 [DEBUG] [Thread-189759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:10:50.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:10:50.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-11-24T12:10:50.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-11-24T12:10:50.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:10:50.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:10:50.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:10:50.048 [DEBUG] [Thread-189759] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:10:58.382 [DEBUG] [Thread-189761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:11:13.423 [DEBUG] [Thread-189762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:11:20.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:11:20.070 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:11:20.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-11-24T12:11:20.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 11, 1), 23.0, 21.09, 0.0, 20.28, 19.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:11:20.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:11:01
2025-11-24T12:11:20.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:11:21.110 [DEBUG] [Thread-189763] [transport.py] [_log()] starting thread (client mode): 0xd3152080
2025-11-24T12:11:21.110 [DEBUG] [Thread-189763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:11:21.123 [DEBUG] [Thread-189763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:11:21.123 [INFO] [Thread-189763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:11:21.133 [DEBUG] [Thread-189763] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:11:21.133 [DEBUG] [Thread-189763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:11:21.133 [DEBUG] [Thread-189763] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:11:21.133 [DEBUG] [Thread-189763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:11:21.133 [DEBUG] [Thread-189763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:11:21.133 [DEBUG] [Thread-189763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:11:21.133 [DEBUG] [Thread-189763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:11:21.133 [DEBUG] [Thread-189763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:11:21.133 [DEBUG] [Thread-189763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:11:21.134 [DEBUG] [Thread-189763] [transport.py] [_log()] client lang: <none>
2025-11-24T12:11:21.134 [DEBUG] [Thread-189763] [transport.py] [_log()] server lang: <none>
2025-11-24T12:11:21.134 [DEBUG] [Thread-189763] [transport.py] [_log()] kex follows: False
2025-11-24T12:11:21.134 [DEBUG] [Thread-189763] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:11:21.134 [DEBUG] [Thread-189763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:11:21.134 [DEBUG] [Thread-189763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:11:21.134 [DEBUG] [Thread-189763] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:11:21.134 [DEBUG] [Thread-189763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:11:21.134 [DEBUG] [Thread-189763] [transport.py] [_log()] Compression: none
2025-11-24T12:11:21.134 [DEBUG] [Thread-189763] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:11:21.143 [DEBUG] [Thread-189763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:11:21.143 [DEBUG] [Thread-189763] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:11:21.144 [DEBUG] [Thread-189763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:11:21.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:11:21.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:11:21.145 [DEBUG] [Thread-189763] [transport.py] [_log()] userauth is OK
2025-11-24T12:11:21.146 [DEBUG] [Thread-189763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:11:21.146 [DEBUG] [Thread-189763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:11:21.146 [DEBUG] [Thread-189763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:11:21.146 [DEBUG] [Thread-189763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:11:21.170 [INFO] [Thread-189763] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:11:21.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:11:21.793 [DEBUG] [Thread-189763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:11:21.793 [DEBUG] [Thread-189763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:11:21.794 [DEBUG] [Thread-189763] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:11:21.833 [DEBUG] [Thread-189763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:11:21.834 [DEBUG] [Thread-189763] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:11:21.837 [DEBUG] [Thread-189763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:11:21.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:11:21.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:11:21.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:11:21.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:11:21.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:11:21.870 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:11:21.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:11:21.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:11:21.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:11:21.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.424007 -999.00  +19.60  23.23     26   -0.20 1 1 1 1 1   888    0 19.15 -5.92 ----- 23.2 23.2 167.0 28.3 26.4 -27.0 25.4 -25.2 25.4 -25.6 26.4 -26.1
2025-11-24T12:11:21.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:11:21.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:11:21.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.424007
2025-11-24T12:11:21.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:11:21.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:11:21.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:11:21.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:11:21.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:11:21.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:11:01', tmtdew=23.0, humidity=21.09, cloud=0.0, wind=20.28, temperature=19.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:10:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:11:21.873 [DEBUG] [Thread-189763] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:11:21.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:11:21.968 [DEBUG] [Thread-189766] [transport.py] [_log()] starting thread (client mode): 0xd07e8310
2025-11-24T12:11:21.969 [DEBUG] [Thread-189766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:11:21.984 [DEBUG] [Thread-189766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:11:21.984 [INFO] [Thread-189766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:11:21.991 [DEBUG] [Thread-189766] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] client lang: <none>
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] server lang: <none>
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] kex follows: False
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] Compression: none
2025-11-24T12:11:21.992 [DEBUG] [Thread-189766] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:11:22.050 [DEBUG] [Thread-189766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:11:22.050 [DEBUG] [Thread-189766] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:11:22.051 [DEBUG] [Thread-189766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:11:22.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:11:22.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:11:22.105 [DEBUG] [Thread-189766] [transport.py] [_log()] userauth is OK
2025-11-24T12:11:22.105 [DEBUG] [Thread-189766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:11:22.105 [DEBUG] [Thread-189766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:11:22.105 [DEBUG] [Thread-189766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:11:22.105 [DEBUG] [Thread-189766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:11:22.119 [INFO] [Thread-189766] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:11:22.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:11:22.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:11:22.949 [DEBUG] [Thread-189766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:11:22.949 [DEBUG] [Thread-189766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:11:22.997 [DEBUG] [Thread-189766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:11:22.997 [DEBUG] [Thread-189766] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:11:23.006 [DEBUG] [Thread-189766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:11:23.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:11:23.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:11:23.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:11:23.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:11:23.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:11:23.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:11:23.038 [DEBUG] [Thread-189766] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:11:28.469 [DEBUG] [Thread-189768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:11:43.513 [DEBUG] [Thread-189769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:11:45.624 [DEBUG] [Thread-189770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:11:49.165 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:11:49.166 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:11:53.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:11:53.061 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:11:53.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-11-24T12:11:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 11, 33), 22.79, 21.32, 0.0, 20.24, 19.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:11:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:11:33
2025-11-24T12:11:53.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:11:54.128 [DEBUG] [Thread-189771] [transport.py] [_log()] starting thread (client mode): 0xd0713a90
2025-11-24T12:11:54.128 [DEBUG] [Thread-189771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:11:54.148 [DEBUG] [Thread-189771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:11:54.148 [INFO] [Thread-189771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:11:54.157 [DEBUG] [Thread-189771] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] client lang: <none>
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] server lang: <none>
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] kex follows: False
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] Compression: none
2025-11-24T12:11:54.158 [DEBUG] [Thread-189771] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:11:54.178 [DEBUG] [Thread-189771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:11:54.179 [DEBUG] [Thread-189771] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:11:54.179 [DEBUG] [Thread-189771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:11:54.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:11:54.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:11:54.181 [DEBUG] [Thread-189771] [transport.py] [_log()] userauth is OK
2025-11-24T12:11:54.182 [DEBUG] [Thread-189771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:11:54.182 [DEBUG] [Thread-189771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:11:54.182 [DEBUG] [Thread-189771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:11:54.182 [DEBUG] [Thread-189771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:11:54.217 [INFO] [Thread-189771] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:11:54.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:11:54.841 [DEBUG] [Thread-189771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:11:54.841 [DEBUG] [Thread-189771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:11:54.841 [DEBUG] [Thread-189771] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:11:54.882 [DEBUG] [Thread-189771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:11:54.882 [DEBUG] [Thread-189771] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:11:54.884 [DEBUG] [Thread-189771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:11:54.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:11:54.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:11:54.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:11:54.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:11:54.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:11:54.910 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:11:54.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:11:54.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:11:54.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:11:54.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.424354 -999.00  +19.60  16.82     26   -0.10 1 1 1 1 1   888    0 19.30 -6.72 ----- 16.8 16.8 156.8 22.9 26.5 -25.2 25.5 -25.5 25.5 -25.7 26.5 -24.0
2025-11-24T12:11:54.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:11:54.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:11:54.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.424354
2025-11-24T12:11:54.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:11:54.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:11:54.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:11:54.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:11:54.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:11:54.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:11:33', tmtdew=22.79, humidity=21.32, cloud=0.0, wind=20.24, temperature=19.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:11:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:11:54.912 [DEBUG] [Thread-189771] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:11:54.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:11:54.994 [DEBUG] [Thread-189774] [transport.py] [_log()] starting thread (client mode): 0xd07eb2e0
2025-11-24T12:11:54.995 [DEBUG] [Thread-189774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:11:55.010 [DEBUG] [Thread-189774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:11:55.010 [INFO] [Thread-189774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:11:55.017 [DEBUG] [Thread-189774] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:11:55.017 [DEBUG] [Thread-189774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:11:55.017 [DEBUG] [Thread-189774] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:11:55.017 [DEBUG] [Thread-189774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:11:55.017 [DEBUG] [Thread-189774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:11:55.017 [DEBUG] [Thread-189774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:11:55.017 [DEBUG] [Thread-189774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:11:55.017 [DEBUG] [Thread-189774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:11:55.017 [DEBUG] [Thread-189774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:11:55.018 [DEBUG] [Thread-189774] [transport.py] [_log()] client lang: <none>
2025-11-24T12:11:55.018 [DEBUG] [Thread-189774] [transport.py] [_log()] server lang: <none>
2025-11-24T12:11:55.018 [DEBUG] [Thread-189774] [transport.py] [_log()] kex follows: False
2025-11-24T12:11:55.018 [DEBUG] [Thread-189774] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:11:55.019 [DEBUG] [Thread-189774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:11:55.019 [DEBUG] [Thread-189774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:11:55.019 [DEBUG] [Thread-189774] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:11:55.019 [DEBUG] [Thread-189774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:11:55.019 [DEBUG] [Thread-189774] [transport.py] [_log()] Compression: none
2025-11-24T12:11:55.019 [DEBUG] [Thread-189774] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:11:55.076 [DEBUG] [Thread-189774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:11:55.076 [DEBUG] [Thread-189774] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:11:55.076 [DEBUG] [Thread-189774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:11:55.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:11:55.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:11:55.133 [DEBUG] [Thread-189774] [transport.py] [_log()] userauth is OK
2025-11-24T12:11:55.133 [DEBUG] [Thread-189774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:11:55.133 [DEBUG] [Thread-189774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:11:55.133 [DEBUG] [Thread-189774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:11:55.133 [DEBUG] [Thread-189774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:11:55.147 [INFO] [Thread-189774] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:11:55.147 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:11:55.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:11:56.024 [DEBUG] [Thread-189774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:11:56.034 [DEBUG] [Thread-189774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:11:56.073 [DEBUG] [Thread-189774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:11:56.073 [DEBUG] [Thread-189774] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:11:56.082 [DEBUG] [Thread-189774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:11:56.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:11:56.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:11:56.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:11:56.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:11:56.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:11:56.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:11:56.119 [DEBUG] [Thread-189774] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:11:58.546 [DEBUG] [Thread-189776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:12:13.604 [DEBUG] [Thread-189777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:12:26.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:12:26.127 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:12:26.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-11-24T12:12:26.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 12, 6), 22.55, 21.62, 0.0, 17.34, 19.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:12:26.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:12:06
2025-11-24T12:12:27.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:12:27.246 [DEBUG] [Thread-189778] [transport.py] [_log()] starting thread (client mode): 0xd3193130
2025-11-24T12:12:27.247 [DEBUG] [Thread-189778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:12:27.266 [DEBUG] [Thread-189778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:12:27.266 [INFO] [Thread-189778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] client lang: <none>
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] server lang: <none>
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] kex follows: False
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:12:27.270 [DEBUG] [Thread-189778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:12:27.271 [DEBUG] [Thread-189778] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:12:27.271 [DEBUG] [Thread-189778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:12:27.271 [DEBUG] [Thread-189778] [transport.py] [_log()] Compression: none
2025-11-24T12:12:27.271 [DEBUG] [Thread-189778] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:12:27.289 [DEBUG] [Thread-189778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:12:27.290 [DEBUG] [Thread-189778] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:12:27.290 [DEBUG] [Thread-189778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:12:27.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:12:27.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:12:27.292 [DEBUG] [Thread-189778] [transport.py] [_log()] userauth is OK
2025-11-24T12:12:27.292 [DEBUG] [Thread-189778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:12:27.292 [DEBUG] [Thread-189778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:12:27.293 [DEBUG] [Thread-189778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:12:27.293 [DEBUG] [Thread-189778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:12:27.316 [INFO] [Thread-189778] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:12:27.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:12:27.927 [DEBUG] [Thread-189778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:12:27.927 [DEBUG] [Thread-189778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:12:27.927 [DEBUG] [Thread-189778] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:12:27.968 [DEBUG] [Thread-189778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:12:27.968 [DEBUG] [Thread-189778] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:12:27.971 [DEBUG] [Thread-189778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:12:27.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:12:27.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:12:27.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:12:27.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:12:27.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:12:27.996 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:12:27.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:12:27.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:12:27.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:12:27.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.424701 -999.00  +19.40   8.58     27   +0.00 1 1 1 1 1   888    0 19.04 -6.77 ----- 8.6 8.6 196.5 21.5 26.4 -27.0 25.2 -27.0 25.5 -24.0 26.5 -25.1
2025-11-24T12:12:27.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:12:27.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:12:27.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.424701
2025-11-24T12:12:28.005 [DEBUG] [Thread-189778] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:12:28.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:12:28.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:12:28.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:12:28.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:12:28.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:12:28.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:12:06', tmtdew=22.55, humidity=21.62, cloud=0.0, wind=17.34, temperature=19.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:11:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:12:28.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:12:28.109 [DEBUG] [Thread-189781] [transport.py] [_log()] starting thread (client mode): 0xd31b2ce0
2025-11-24T12:12:28.109 [DEBUG] [Thread-189781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:12:28.124 [DEBUG] [Thread-189781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:12:28.124 [INFO] [Thread-189781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:12:28.136 [DEBUG] [Thread-189781] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:12:28.137 [DEBUG] [Thread-189781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:12:28.137 [DEBUG] [Thread-189781] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:12:28.137 [DEBUG] [Thread-189781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:12:28.137 [DEBUG] [Thread-189781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:12:28.137 [DEBUG] [Thread-189781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:12:28.137 [DEBUG] [Thread-189781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:12:28.137 [DEBUG] [Thread-189781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:12:28.137 [DEBUG] [Thread-189781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:12:28.137 [DEBUG] [Thread-189781] [transport.py] [_log()] client lang: <none>
2025-11-24T12:12:28.137 [DEBUG] [Thread-189781] [transport.py] [_log()] server lang: <none>
2025-11-24T12:12:28.138 [DEBUG] [Thread-189781] [transport.py] [_log()] kex follows: False
2025-11-24T12:12:28.138 [DEBUG] [Thread-189781] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:12:28.138 [DEBUG] [Thread-189781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:12:28.138 [DEBUG] [Thread-189781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:12:28.138 [DEBUG] [Thread-189781] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:12:28.138 [DEBUG] [Thread-189781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:12:28.138 [DEBUG] [Thread-189781] [transport.py] [_log()] Compression: none
2025-11-24T12:12:28.138 [DEBUG] [Thread-189781] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:12:28.190 [DEBUG] [Thread-189781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:12:28.191 [DEBUG] [Thread-189781] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:12:28.191 [DEBUG] [Thread-189781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:12:28.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:12:28.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:12:28.246 [DEBUG] [Thread-189781] [transport.py] [_log()] userauth is OK
2025-11-24T12:12:28.246 [DEBUG] [Thread-189781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:12:28.247 [DEBUG] [Thread-189781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:12:28.247 [DEBUG] [Thread-189781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:12:28.247 [DEBUG] [Thread-189781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:12:28.266 [INFO] [Thread-189781] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:12:28.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:12:28.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:12:28.642 [DEBUG] [Thread-189783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:12:29.159 [DEBUG] [Thread-189781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:12:29.159 [DEBUG] [Thread-189781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:12:29.207 [DEBUG] [Thread-189781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:12:29.207 [DEBUG] [Thread-189781] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:12:29.215 [DEBUG] [Thread-189781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:12:29.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:12:29.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-11-24T12:12:29.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-11-24T12:12:29.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:12:29.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:12:29.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:12:29.247 [DEBUG] [Thread-189781] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:12:43.700 [DEBUG] [Thread-189784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:12:45.710 [DEBUG] [Thread-189785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:12:49.305 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:12:49.306 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:12:58.737 [DEBUG] [Thread-189786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:12:59.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:12:59.270 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:12:59.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-11-24T12:13:00.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 12, 39), 22.13, 22.0, 0.0, 22.2, 19.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:13:00.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:12:39
2025-11-24T12:13:00.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:13:00.344 [DEBUG] [Thread-189787] [transport.py] [_log()] starting thread (client mode): 0xd0710ca0
2025-11-24T12:13:00.344 [DEBUG] [Thread-189787] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:13:00.364 [DEBUG] [Thread-189787] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:13:00.364 [INFO] [Thread-189787] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] client lang: <none>
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] server lang: <none>
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] kex follows: False
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] Compression: none
2025-11-24T12:13:00.367 [DEBUG] [Thread-189787] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:13:00.383 [DEBUG] [Thread-189787] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:13:00.384 [DEBUG] [Thread-189787] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:13:00.384 [DEBUG] [Thread-189787] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:13:00.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:13:00.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:13:00.395 [DEBUG] [Thread-189787] [transport.py] [_log()] userauth is OK
2025-11-24T12:13:00.396 [DEBUG] [Thread-189787] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:13:00.396 [DEBUG] [Thread-189787] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:13:00.396 [DEBUG] [Thread-189787] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:13:00.396 [DEBUG] [Thread-189787] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:13:00.430 [INFO] [Thread-189787] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:13:00.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:13:01.067 [DEBUG] [Thread-189787] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:13:01.076 [DEBUG] [Thread-189787] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:13:01.077 [DEBUG] [Thread-189787] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:13:01.108 [DEBUG] [Thread-189787] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:13:01.108 [DEBUG] [Thread-189787] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:13:01.112 [DEBUG] [Thread-189787] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:13:01.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:13:01.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:13:01.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:13:01.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:13:01.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:13:01.137 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:13:01.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:13:01.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:13:01.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:13:01.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.425048 -999.00  +19.70   6.88     27   +0.30 1 1 1 1 1   888    0 19.27 -5.97 ----- 6.9 6.9 150.2 11.4 26.6 -25.0 25.4 -25.1 25.7 -23.3 26.6 -24.9
2025-11-24T12:13:01.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:13:01.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:13:01.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.425048
2025-11-24T12:13:01.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:13:01.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:13:01.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:13:01.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:13:01.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:13:01.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:12:39', tmtdew=22.13, humidity=22.0, cloud=0.0, wind=22.2, temperature=19.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:12:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:13:01.140 [DEBUG] [Thread-189787] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:13:01.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:13:01.235 [DEBUG] [Thread-189790] [transport.py] [_log()] starting thread (client mode): 0xd3192800
2025-11-24T12:13:01.235 [DEBUG] [Thread-189790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:13:01.250 [DEBUG] [Thread-189790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:13:01.250 [INFO] [Thread-189790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:13:01.260 [DEBUG] [Thread-189790] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:13:01.260 [DEBUG] [Thread-189790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:13:01.260 [DEBUG] [Thread-189790] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:13:01.260 [DEBUG] [Thread-189790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:13:01.261 [DEBUG] [Thread-189790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:13:01.261 [DEBUG] [Thread-189790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:13:01.261 [DEBUG] [Thread-189790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:13:01.261 [DEBUG] [Thread-189790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:13:01.261 [DEBUG] [Thread-189790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:13:01.261 [DEBUG] [Thread-189790] [transport.py] [_log()] client lang: <none>
2025-11-24T12:13:01.261 [DEBUG] [Thread-189790] [transport.py] [_log()] server lang: <none>
2025-11-24T12:13:01.261 [DEBUG] [Thread-189790] [transport.py] [_log()] kex follows: False
2025-11-24T12:13:01.261 [DEBUG] [Thread-189790] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:13:01.261 [DEBUG] [Thread-189790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:13:01.262 [DEBUG] [Thread-189790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:13:01.262 [DEBUG] [Thread-189790] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:13:01.262 [DEBUG] [Thread-189790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:13:01.262 [DEBUG] [Thread-189790] [transport.py] [_log()] Compression: none
2025-11-24T12:13:01.262 [DEBUG] [Thread-189790] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:13:01.326 [DEBUG] [Thread-189790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:13:01.327 [DEBUG] [Thread-189790] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:13:01.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:13:01.328 [DEBUG] [Thread-189790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:13:01.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:13:01.386 [DEBUG] [Thread-189790] [transport.py] [_log()] userauth is OK
2025-11-24T12:13:01.386 [DEBUG] [Thread-189790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:13:01.386 [DEBUG] [Thread-189790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:13:01.386 [DEBUG] [Thread-189790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:13:01.387 [DEBUG] [Thread-189790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:13:01.413 [INFO] [Thread-189790] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:13:01.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:13:01.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:13:02.289 [DEBUG] [Thread-189790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:13:02.289 [DEBUG] [Thread-189790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:13:02.336 [DEBUG] [Thread-189790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:13:02.337 [DEBUG] [Thread-189790] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:13:02.346 [DEBUG] [Thread-189790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:13:02.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:13:02.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-11-24T12:13:02.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-11-24T12:13:02.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:13:02.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:13:02.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:13:02.382 [DEBUG] [Thread-189790] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:13:13.763 [DEBUG] [Thread-189792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:13:28.801 [DEBUG] [Thread-189793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:13:32.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:13:32.405 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:13:32.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:13:33.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 13, 11), 22.22, 21.92, 0.0, 24.93, 19.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:13:33.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:13:11
2025-11-24T12:13:33.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:13:33.410 [DEBUG] [Thread-189794] [transport.py] [_log()] starting thread (client mode): 0xd0711f90
2025-11-24T12:13:33.411 [DEBUG] [Thread-189794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:13:33.430 [DEBUG] [Thread-189794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:13:33.430 [INFO] [Thread-189794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:13:33.433 [DEBUG] [Thread-189794] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:13:33.433 [DEBUG] [Thread-189794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:13:33.433 [DEBUG] [Thread-189794] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:13:33.433 [DEBUG] [Thread-189794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:13:33.433 [DEBUG] [Thread-189794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:13:33.433 [DEBUG] [Thread-189794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:13:33.433 [DEBUG] [Thread-189794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:13:33.433 [DEBUG] [Thread-189794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:13:33.433 [DEBUG] [Thread-189794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:13:33.433 [DEBUG] [Thread-189794] [transport.py] [_log()] client lang: <none>
2025-11-24T12:13:33.434 [DEBUG] [Thread-189794] [transport.py] [_log()] server lang: <none>
2025-11-24T12:13:33.434 [DEBUG] [Thread-189794] [transport.py] [_log()] kex follows: False
2025-11-24T12:13:33.434 [DEBUG] [Thread-189794] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:13:33.434 [DEBUG] [Thread-189794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:13:33.434 [DEBUG] [Thread-189794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:13:33.434 [DEBUG] [Thread-189794] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:13:33.434 [DEBUG] [Thread-189794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:13:33.434 [DEBUG] [Thread-189794] [transport.py] [_log()] Compression: none
2025-11-24T12:13:33.434 [DEBUG] [Thread-189794] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:13:33.447 [DEBUG] [Thread-189794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:13:33.447 [DEBUG] [Thread-189794] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:13:33.447 [DEBUG] [Thread-189794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:13:33.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:13:33.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:13:33.448 [DEBUG] [Thread-189794] [transport.py] [_log()] userauth is OK
2025-11-24T12:13:33.448 [DEBUG] [Thread-189794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:13:33.448 [DEBUG] [Thread-189794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:13:33.448 [DEBUG] [Thread-189794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:13:33.448 [DEBUG] [Thread-189794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:13:33.462 [INFO] [Thread-189794] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:13:33.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:13:34.060 [DEBUG] [Thread-189794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:13:34.060 [DEBUG] [Thread-189794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:13:34.061 [DEBUG] [Thread-189794] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:13:34.101 [DEBUG] [Thread-189794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:13:34.101 [DEBUG] [Thread-189794] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:13:34.103 [DEBUG] [Thread-189794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:13:34.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:13:34.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:13:34.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:13:34.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:13:34.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:13:34.121 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:13:34.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:13:34.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:13:34.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:13:34.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.425396 -999.00  +20.20   8.37     26   +0.50 1 1 1 1 1   888    0 19.06 -3.08 ----- 8.4 8.4 170.4 13.9 26.6 -24.9 25.5 -25.6 25.8 -23.1 26.6 -25.4
2025-11-24T12:13:34.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:13:34.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:13:34.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.425396
2025-11-24T12:13:34.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:13:34.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:13:34.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:13:34.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:13:34.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:13:34.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:13:11', tmtdew=22.22, humidity=21.92, cloud=0.0, wind=24.93, temperature=19.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:12:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:13:34.123 [DEBUG] [Thread-189794] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:13:34.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:13:34.208 [DEBUG] [Thread-189797] [transport.py] [_log()] starting thread (client mode): 0xd0713c70
2025-11-24T12:13:34.208 [DEBUG] [Thread-189797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:13:34.226 [DEBUG] [Thread-189797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:13:34.226 [INFO] [Thread-189797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] client lang: <none>
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] server lang: <none>
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] kex follows: False
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] Compression: none
2025-11-24T12:13:34.234 [DEBUG] [Thread-189797] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:13:34.296 [DEBUG] [Thread-189797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:13:34.296 [DEBUG] [Thread-189797] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:13:34.297 [DEBUG] [Thread-189797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:13:34.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:13:34.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:13:34.353 [DEBUG] [Thread-189797] [transport.py] [_log()] userauth is OK
2025-11-24T12:13:34.353 [DEBUG] [Thread-189797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:13:34.353 [DEBUG] [Thread-189797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:13:34.353 [DEBUG] [Thread-189797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:13:34.353 [DEBUG] [Thread-189797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:13:34.368 [INFO] [Thread-189797] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:13:34.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:13:34.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:13:35.231 [DEBUG] [Thread-189797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:13:35.231 [DEBUG] [Thread-189797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:13:35.279 [DEBUG] [Thread-189797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:13:35.279 [DEBUG] [Thread-189797] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:13:35.288 [DEBUG] [Thread-189797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:13:35.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:13:35.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-11-24T12:13:35.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:13:35.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:13:35.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:13:35.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:13:35.321 [DEBUG] [Thread-189797] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:13:43.830 [DEBUG] [Thread-189799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:13:45.866 [DEBUG] [Thread-189800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:13:49.446 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:13:49.447 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:13:58.866 [DEBUG] [Thread-189801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:14:05.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:14:05.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:14:05.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:14:06.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 13, 43), 23.26, 20.3, 0.0, 25.23, 19.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:14:06.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:13:43
2025-11-24T12:14:06.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:14:06.444 [DEBUG] [Thread-189802] [transport.py] [_log()] starting thread (client mode): 0xd073b280
2025-11-24T12:14:06.445 [DEBUG] [Thread-189802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:14:06.465 [DEBUG] [Thread-189802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:14:06.465 [INFO] [Thread-189802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] client lang: <none>
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] server lang: <none>
2025-11-24T12:14:06.468 [DEBUG] [Thread-189802] [transport.py] [_log()] kex follows: False
2025-11-24T12:14:06.469 [DEBUG] [Thread-189802] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:14:06.469 [DEBUG] [Thread-189802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:14:06.469 [DEBUG] [Thread-189802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:14:06.469 [DEBUG] [Thread-189802] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:14:06.469 [DEBUG] [Thread-189802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:14:06.469 [DEBUG] [Thread-189802] [transport.py] [_log()] Compression: none
2025-11-24T12:14:06.469 [DEBUG] [Thread-189802] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:14:06.485 [DEBUG] [Thread-189802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:14:06.486 [DEBUG] [Thread-189802] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:14:06.486 [DEBUG] [Thread-189802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:14:06.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:14:06.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:14:06.488 [DEBUG] [Thread-189802] [transport.py] [_log()] userauth is OK
2025-11-24T12:14:06.488 [DEBUG] [Thread-189802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:14:06.488 [DEBUG] [Thread-189802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:14:06.488 [DEBUG] [Thread-189802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:14:06.489 [DEBUG] [Thread-189802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:14:06.512 [INFO] [Thread-189802] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:14:06.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:14:07.155 [DEBUG] [Thread-189802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:14:07.155 [DEBUG] [Thread-189802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:14:07.155 [DEBUG] [Thread-189802] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:14:07.196 [DEBUG] [Thread-189802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:14:07.196 [DEBUG] [Thread-189802] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:14:07.199 [DEBUG] [Thread-189802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:14:07.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:14:07.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:14:07.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:14:07.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:14:07.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:14:07.217 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:14:07.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:14:07.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:14:07.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:14:07.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.426090 -999.00  +20.00  14.89     25   -0.00 1 1 1 1 1   888    0 19.88 8.10 ----- 14.9 14.9 180.2 17.8 26.6 -25.4 25.3 -24.7 25.7 -24.4 26.7 -24.6
2025-11-24T12:14:07.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:14:07.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:14:07.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.426090
2025-11-24T12:14:07.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:14:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:14:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:14:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:14:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:14:07.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:13:43', tmtdew=23.26, humidity=20.3, cloud=0.0, wind=25.23, temperature=19.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:13:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:14:07.218 [DEBUG] [Thread-189802] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:14:07.293 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:14:07.304 [DEBUG] [Thread-189805] [transport.py] [_log()] starting thread (client mode): 0xd3150d60
2025-11-24T12:14:07.304 [DEBUG] [Thread-189805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:14:07.319 [DEBUG] [Thread-189805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:14:07.319 [INFO] [Thread-189805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] client lang: <none>
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] server lang: <none>
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] kex follows: False
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] Compression: none
2025-11-24T12:14:07.327 [DEBUG] [Thread-189805] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:14:07.389 [DEBUG] [Thread-189805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:14:07.389 [DEBUG] [Thread-189805] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:14:07.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:14:07.389 [DEBUG] [Thread-189805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:14:07.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:14:07.445 [DEBUG] [Thread-189805] [transport.py] [_log()] userauth is OK
2025-11-24T12:14:07.445 [DEBUG] [Thread-189805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:14:07.445 [DEBUG] [Thread-189805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:14:07.445 [DEBUG] [Thread-189805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:14:07.445 [DEBUG] [Thread-189805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:14:07.459 [INFO] [Thread-189805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12: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-11-24T12:14:07.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:14:08.370 [DEBUG] [Thread-189805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:14:08.370 [DEBUG] [Thread-189805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:14:08.418 [DEBUG] [Thread-189805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:14:08.418 [DEBUG] [Thread-189805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:14:08.426 [DEBUG] [Thread-189805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:14:08.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:14:08.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-11-24T12:14:08.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-11-24T12:14:08.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:14:08.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:14:08.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:14:08.457 [DEBUG] [Thread-189805] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:14:13.901 [DEBUG] [Thread-189807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:14:28.953 [DEBUG] [Thread-189808 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:14:38.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:14:38.471 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:14:38.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-11-24T12:14:39.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 14, 16), 23.33, 20.22, 0.0, 20.79, 19.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:14:39.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:14:16
2025-11-24T12:14:39.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:14:39.522 [DEBUG] [Thread-189809] [transport.py] [_log()] starting thread (client mode): 0xd3151480
2025-11-24T12:14:39.522 [DEBUG] [Thread-189809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:14:39.541 [DEBUG] [Thread-189809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:14:39.541 [INFO] [Thread-189809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:14:39.542 [DEBUG] [Thread-189809] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] client lang: <none>
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] server lang: <none>
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] kex follows: False
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] Compression: none
2025-11-24T12:14:39.543 [DEBUG] [Thread-189809] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:14:39.552 [DEBUG] [Thread-189809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:14:39.552 [DEBUG] [Thread-189809] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:14:39.552 [DEBUG] [Thread-189809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:14:39.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:14:39.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:14:39.553 [DEBUG] [Thread-189809] [transport.py] [_log()] userauth is OK
2025-11-24T12:14:39.553 [DEBUG] [Thread-189809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:14:39.553 [DEBUG] [Thread-189809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:14:39.553 [DEBUG] [Thread-189809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:14:39.553 [DEBUG] [Thread-189809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:14:39.562 [INFO] [Thread-189809] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:14:39.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:14:40.209 [DEBUG] [Thread-189809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:14:40.209 [DEBUG] [Thread-189809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:14:40.209 [DEBUG] [Thread-189809] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:14:40.250 [DEBUG] [Thread-189809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:14:40.250 [DEBUG] [Thread-189809] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:14:40.252 [DEBUG] [Thread-189809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:14:40.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:14:40.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:14:40.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:14:40.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:14:40.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:14:40.270 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:14:40.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.426437 -999.00  +20.20  12.99     25   -0.20 1 1 1 1 1   888    0 20.00 15.75 ----- 13.0 13.0 145.0 28.1 26.7 -26.8 25.5 -25.3 25.8 -24.5 26.7 -25.2
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.426437
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:14:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:14:16', tmtdew=23.33, humidity=20.22, cloud=0.0, wind=20.79, temperature=19.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:14:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:14:40.271 [DEBUG] [Thread-189809] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:14:40.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:14:40.354 [DEBUG] [Thread-189812] [transport.py] [_log()] starting thread (client mode): 0xc9b804f0
2025-11-24T12:14:40.354 [DEBUG] [Thread-189812] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:14:40.369 [DEBUG] [Thread-189812] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:14:40.369 [INFO] [Thread-189812] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:14:40.376 [DEBUG] [Thread-189812] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:14:40.376 [DEBUG] [Thread-189812] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:14:40.376 [DEBUG] [Thread-189812] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] client lang: <none>
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] server lang: <none>
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] kex follows: False
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] Compression: none
2025-11-24T12:14:40.377 [DEBUG] [Thread-189812] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:14:40.432 [DEBUG] [Thread-189812] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:14:40.432 [DEBUG] [Thread-189812] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:14:40.432 [DEBUG] [Thread-189812] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:14:40.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:14:40.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:14:40.489 [DEBUG] [Thread-189812] [transport.py] [_log()] userauth is OK
2025-11-24T12:14:40.489 [DEBUG] [Thread-189812] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:14:40.489 [DEBUG] [Thread-189812] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:14:40.489 [DEBUG] [Thread-189812] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:14:40.489 [DEBUG] [Thread-189812] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:14:40.502 [INFO] [Thread-189812] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:14:40.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:14:40.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:14:41.361 [DEBUG] [Thread-189812] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:14:41.361 [DEBUG] [Thread-189812] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:14:41.409 [DEBUG] [Thread-189812] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:14:41.409 [DEBUG] [Thread-189812] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:14:41.418 [DEBUG] [Thread-189812] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:14:41.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:14:41.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-11-24T12:14:41.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-11-24T12:14:41.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:14:41.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:14:41.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:14:41.456 [DEBUG] [Thread-189812] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:14:43.988 [DEBUG] [Thread-189814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:14:46.072 [DEBUG] [Thread-189815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:14:49.587 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:14:49.588 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:14:59.030 [DEBUG] [Thread-189816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:15:11.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:15:11.478 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:15:11.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:15:12.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 14, 48), 23.31, 20.41, 0.0, 22.74, 19.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:15:12.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:14:48
2025-11-24T12:15:12.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:15:12.603 [DEBUG] [Thread-189817] [transport.py] [_log()] starting thread (client mode): 0xd31b3d60
2025-11-24T12:15:12.604 [DEBUG] [Thread-189817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:15:12.606 [DEBUG] [Thread-189817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:15:12.607 [INFO] [Thread-189817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:15:12.609 [DEBUG] [Thread-189817] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] client lang: <none>
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] server lang: <none>
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] kex follows: False
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] Compression: none
2025-11-24T12:15:12.610 [DEBUG] [Thread-189817] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:15:12.625 [DEBUG] [Thread-189817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:15:12.626 [DEBUG] [Thread-189817] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:15:12.626 [DEBUG] [Thread-189817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:15:12.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:15:12.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:15:12.628 [DEBUG] [Thread-189817] [transport.py] [_log()] userauth is OK
2025-11-24T12:15:12.628 [DEBUG] [Thread-189817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:15:12.628 [DEBUG] [Thread-189817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:15:12.628 [DEBUG] [Thread-189817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:15:12.628 [DEBUG] [Thread-189817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:15:12.647 [INFO] [Thread-189817] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:15:12.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:15:13.713 [DEBUG] [Thread-189817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:15:13.713 [DEBUG] [Thread-189817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:15:13.713 [DEBUG] [Thread-189817] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:15:13.754 [DEBUG] [Thread-189817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:15:13.754 [DEBUG] [Thread-189817] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:15:13.756 [DEBUG] [Thread-189817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:15:13.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:15:13.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:15:13.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:15:13.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:15:13.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:15:13.783 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:15:13.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.426785 -999.00  +20.20  18.63     25   -0.10 1 1 1 1 1   888    0 19.98 22.98 ----- 18.6 18.6 161.8 21.5 26.8 -24.9 25.7 -25.4 25.9 -23.9 26.8 -25.1
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.426785
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:15:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:14:48', tmtdew=23.31, humidity=20.41, cloud=0.0, wind=22.74, temperature=19.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:14:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:15:13.784 [DEBUG] [Thread-189817] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:15:13.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:15:13.867 [DEBUG] [Thread-189820] [transport.py] [_log()] starting thread (client mode): 0xc9b83e50
2025-11-24T12:15:13.867 [DEBUG] [Thread-189820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:15:13.881 [DEBUG] [Thread-189820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:15:13.881 [INFO] [Thread-189820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:15:13.888 [DEBUG] [Thread-189820] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] client lang: <none>
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] server lang: <none>
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] kex follows: False
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] Compression: none
2025-11-24T12:15:13.889 [DEBUG] [Thread-189820] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:15:13.944 [DEBUG] [Thread-189820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:15:13.944 [DEBUG] [Thread-189820] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:15:13.944 [DEBUG] [Thread-189820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:15:13.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:15:13.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:15:14.001 [DEBUG] [Thread-189820] [transport.py] [_log()] userauth is OK
2025-11-24T12:15:14.001 [DEBUG] [Thread-189820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:15:14.001 [DEBUG] [Thread-189820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:15:14.001 [DEBUG] [Thread-189820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:15:14.001 [DEBUG] [Thread-189820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:15:14.017 [INFO] [Thread-189820] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:15:14.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:15:14.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:15:14.066 [DEBUG] [Thread-189822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:15:14.861 [DEBUG] [Thread-189820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:15:14.861 [DEBUG] [Thread-189820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:15:14.908 [DEBUG] [Thread-189820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:15:14.909 [DEBUG] [Thread-189820] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:15:14.918 [DEBUG] [Thread-189820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:15:14.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:15:14.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-11-24T12:15:14.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-11-24T12:15:14.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:15:14.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:15:14.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:15:14.958 [DEBUG] [Thread-189820] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:15:29.110 [DEBUG] [Thread-189823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:15:44.141 [DEBUG] [Thread-189824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:15:44.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:15:44.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:15:44.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-11-24T12:15:45.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 15, 21), 23.17, 20.61, 0.0, 21.69, 19.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:15:45.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:15:21
2025-11-24T12:15:45.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:15:46.029 [DEBUG] [Thread-189825] [transport.py] [_log()] starting thread (client mode): 0xd0712e30
2025-11-24T12:15:46.029 [DEBUG] [Thread-189825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:15:46.049 [DEBUG] [Thread-189825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:15:46.049 [INFO] [Thread-189825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:15:46.052 [DEBUG] [Thread-189825] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] client lang: <none>
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] server lang: <none>
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] kex follows: False
2025-11-24T12:15:46.053 [DEBUG] [Thread-189825] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:15:46.054 [DEBUG] [Thread-189825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:15:46.054 [DEBUG] [Thread-189825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:15:46.054 [DEBUG] [Thread-189825] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:15:46.054 [DEBUG] [Thread-189825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:15:46.054 [DEBUG] [Thread-189825] [transport.py] [_log()] Compression: none
2025-11-24T12:15:46.054 [DEBUG] [Thread-189825] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:15:46.073 [DEBUG] [Thread-189825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:15:46.074 [DEBUG] [Thread-189825] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:15:46.075 [DEBUG] [Thread-189825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:15:46.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:15:46.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:15:46.077 [DEBUG] [Thread-189825] [transport.py] [_log()] userauth is OK
2025-11-24T12:15:46.078 [DEBUG] [Thread-189825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:15:46.078 [DEBUG] [Thread-189825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:15:46.078 [DEBUG] [Thread-189825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:15:46.078 [DEBUG] [Thread-189825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:15:46.098 [INFO] [Thread-189825] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:15:46.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:15:46.360 [DEBUG] [Thread-189827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:15:46.894 [DEBUG] [Thread-189825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:15:46.895 [DEBUG] [Thread-189825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:15:46.896 [DEBUG] [Thread-189825] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:15:46.936 [DEBUG] [Thread-189825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:15:46.936 [DEBUG] [Thread-189825] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:15:46.939 [DEBUG] [Thread-189825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:15:46.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:15:46.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:15:46.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:15:46.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:15:46.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:15:46.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:15:46.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:15:46.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:15:46.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:15:46.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.427132 -999.00  +20.20  14.24     26   +0.10 1 1 1 1 1   888    0 20.46 27.83 ----- 14.2 14.2 148.2 27.4 26.7 -26.6 25.6 -24.9 25.7 -24.3 26.8 -26.6
2025-11-24T12:15:46.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:15:46.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:15:46.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.427132
2025-11-24T12:15:46.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:15:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:15:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:15:46.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:15:46.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:15:46.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:15:21', tmtdew=23.17, humidity=20.61, cloud=0.0, wind=21.69, temperature=19.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:15:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:15:46.971 [DEBUG] [Thread-189825] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:15:47.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:15:47.066 [DEBUG] [Thread-189829] [transport.py] [_log()] starting thread (client mode): 0xd316efb0
2025-11-24T12:15:47.067 [DEBUG] [Thread-189829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:15:47.081 [DEBUG] [Thread-189829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:15:47.082 [INFO] [Thread-189829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:15:47.092 [DEBUG] [Thread-189829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:15:47.093 [DEBUG] [Thread-189829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:15:47.093 [DEBUG] [Thread-189829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:15:47.093 [DEBUG] [Thread-189829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:15:47.093 [DEBUG] [Thread-189829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:15:47.093 [DEBUG] [Thread-189829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:15:47.093 [DEBUG] [Thread-189829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:15:47.093 [DEBUG] [Thread-189829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:15:47.093 [DEBUG] [Thread-189829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:15:47.094 [DEBUG] [Thread-189829] [transport.py] [_log()] client lang: <none>
2025-11-24T12:15:47.094 [DEBUG] [Thread-189829] [transport.py] [_log()] server lang: <none>
2025-11-24T12:15:47.094 [DEBUG] [Thread-189829] [transport.py] [_log()] kex follows: False
2025-11-24T12:15:47.094 [DEBUG] [Thread-189829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:15:47.094 [DEBUG] [Thread-189829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:15:47.094 [DEBUG] [Thread-189829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:15:47.095 [DEBUG] [Thread-189829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:15:47.095 [DEBUG] [Thread-189829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:15:47.095 [DEBUG] [Thread-189829] [transport.py] [_log()] Compression: none
2025-11-24T12:15:47.095 [DEBUG] [Thread-189829] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:15:47.160 [DEBUG] [Thread-189829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:15:47.160 [DEBUG] [Thread-189829] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:15:47.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:15:47.162 [DEBUG] [Thread-189829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:15:47.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:15:47.218 [DEBUG] [Thread-189829] [transport.py] [_log()] userauth is OK
2025-11-24T12:15:47.218 [DEBUG] [Thread-189829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:15:47.218 [DEBUG] [Thread-189829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:15:47.218 [DEBUG] [Thread-189829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:15:47.219 [DEBUG] [Thread-189829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:15:47.239 [INFO] [Thread-189829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:15:47.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:15:47.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:15:48.095 [DEBUG] [Thread-189829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:15:48.105 [DEBUG] [Thread-189829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:15:48.143 [DEBUG] [Thread-189829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:15:48.144 [DEBUG] [Thread-189829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:15:48.153 [DEBUG] [Thread-189829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:15:48.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:15:48.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-11-24T12:15:48.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-11-24T12:15:48.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:15:48.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:15:48.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:15:48.189 [DEBUG] [Thread-189829] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:15:49.728 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:15:49.729 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:15:59.174 [DEBUG] [Thread-189831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:16:14.228 [DEBUG] [Thread-189832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:16:18.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:16:18.212 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:16:18.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-11-24T12:16:19.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 15, 54), 22.76, 21.37, 0.0, 18.83, 19.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:16:19.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:15:54
2025-11-24T12:16:19.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:16:19.359 [DEBUG] [Thread-189833] [transport.py] [_log()] starting thread (client mode): 0xd0703640
2025-11-24T12:16:19.359 [DEBUG] [Thread-189833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:16:19.381 [DEBUG] [Thread-189833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:16:19.381 [INFO] [Thread-189833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:16:19.385 [DEBUG] [Thread-189833] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:16:19.385 [DEBUG] [Thread-189833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:16:19.385 [DEBUG] [Thread-189833] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:16:19.385 [DEBUG] [Thread-189833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:16:19.385 [DEBUG] [Thread-189833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:16:19.385 [DEBUG] [Thread-189833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] client lang: <none>
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] server lang: <none>
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] kex follows: False
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] Compression: none
2025-11-24T12:16:19.386 [DEBUG] [Thread-189833] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:16:19.406 [DEBUG] [Thread-189833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:16:19.406 [DEBUG] [Thread-189833] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:16:19.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:16:19.407 [DEBUG] [Thread-189833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:16:19.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:16:19.409 [DEBUG] [Thread-189833] [transport.py] [_log()] userauth is OK
2025-11-24T12:16:19.410 [DEBUG] [Thread-189833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:16:19.410 [DEBUG] [Thread-189833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:16:19.410 [DEBUG] [Thread-189833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:16:19.410 [DEBUG] [Thread-189833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:16:19.445 [INFO] [Thread-189833] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:16:19.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:16:20.057 [DEBUG] [Thread-189833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:16:20.057 [DEBUG] [Thread-189833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:16:20.057 [DEBUG] [Thread-189833] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:16:20.098 [DEBUG] [Thread-189833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:16:20.098 [DEBUG] [Thread-189833] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:16:20.100 [DEBUG] [Thread-189833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:16:20.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:16:20.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:16:20.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:16:20.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:16:20.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:16:20.117 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:16:20.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:16:20.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.427479 -999.00  +20.00  17.50     26   +0.40 1 1 1 1 1   888    0 20.47 30.75 ----- 17.5 17.5 147.2 28.9 26.7 -27.9 25.7 -25.5 25.8 -25.3 26.9 -25.9
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.427479
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:16:20.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:15:54', tmtdew=22.76, humidity=21.37, cloud=0.0, wind=18.83, temperature=19.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:15:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:16:20.119 [DEBUG] [Thread-189833] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:16:20.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:16:20.203 [DEBUG] [Thread-189836] [transport.py] [_log()] starting thread (client mode): 0xd07036a0
2025-11-24T12:16:20.203 [DEBUG] [Thread-189836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:16:20.218 [DEBUG] [Thread-189836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:16:20.218 [INFO] [Thread-189836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] client lang: <none>
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] server lang: <none>
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] kex follows: False
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:16:20.226 [DEBUG] [Thread-189836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:16:20.234 [DEBUG] [Thread-189836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:16:20.235 [DEBUG] [Thread-189836] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:16:20.235 [DEBUG] [Thread-189836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:16:20.235 [DEBUG] [Thread-189836] [transport.py] [_log()] Compression: none
2025-11-24T12:16:20.235 [DEBUG] [Thread-189836] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:16:20.283 [DEBUG] [Thread-189836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:16:20.283 [DEBUG] [Thread-189836] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:16:20.283 [DEBUG] [Thread-189836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:16:20.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:16:20.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:16:20.345 [DEBUG] [Thread-189836] [transport.py] [_log()] userauth is OK
2025-11-24T12:16:20.345 [DEBUG] [Thread-189836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:16:20.345 [DEBUG] [Thread-189836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:16:20.345 [DEBUG] [Thread-189836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:16:20.345 [DEBUG] [Thread-189836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:16:20.359 [INFO] [Thread-189836] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:16:20.359 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:16:20.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:16:21.196 [DEBUG] [Thread-189836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:16:21.196 [DEBUG] [Thread-189836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:16:21.245 [DEBUG] [Thread-189836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:16:21.245 [DEBUG] [Thread-189836] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:16:21.254 [DEBUG] [Thread-189836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:16:21.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:16:21.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-11-24T12:16:21.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-11-24T12:16:21.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:16:21.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:16:21.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:16:21.291 [DEBUG] [Thread-189836] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:16:29.266 [DEBUG] [Thread-189838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:16:44.318 [DEBUG] [Thread-189839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:16:46.530 [DEBUG] [Thread-189840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:16:49.870 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:16:49.871 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:16:51.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:16:51.288 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:16:51.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-11-24T12:16:52.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 16, 26), 22.73, 21.47, 0.0, 23.47, 19.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:16:52.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:16:26
2025-11-24T12:16:52.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:16:52.393 [DEBUG] [Thread-189841] [transport.py] [_log()] starting thread (client mode): 0xd0703130
2025-11-24T12:16:52.393 [DEBUG] [Thread-189841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:16:52.414 [DEBUG] [Thread-189841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:16:52.415 [INFO] [Thread-189841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:16:52.418 [DEBUG] [Thread-189841] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:16:52.418 [DEBUG] [Thread-189841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:16:52.418 [DEBUG] [Thread-189841] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:16:52.418 [DEBUG] [Thread-189841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:16:52.418 [DEBUG] [Thread-189841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:16:52.418 [DEBUG] [Thread-189841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:16:52.418 [DEBUG] [Thread-189841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:16:52.418 [DEBUG] [Thread-189841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:16:52.418 [DEBUG] [Thread-189841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:16:52.419 [DEBUG] [Thread-189841] [transport.py] [_log()] client lang: <none>
2025-11-24T12:16:52.419 [DEBUG] [Thread-189841] [transport.py] [_log()] server lang: <none>
2025-11-24T12:16:52.419 [DEBUG] [Thread-189841] [transport.py] [_log()] kex follows: False
2025-11-24T12:16:52.419 [DEBUG] [Thread-189841] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:16:52.419 [DEBUG] [Thread-189841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:16:52.419 [DEBUG] [Thread-189841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:16:52.419 [DEBUG] [Thread-189841] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:16:52.419 [DEBUG] [Thread-189841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:16:52.419 [DEBUG] [Thread-189841] [transport.py] [_log()] Compression: none
2025-11-24T12:16:52.419 [DEBUG] [Thread-189841] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:16:52.439 [DEBUG] [Thread-189841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:16:52.439 [DEBUG] [Thread-189841] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:16:52.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:16:52.440 [DEBUG] [Thread-189841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:16:52.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:16:52.442 [DEBUG] [Thread-189841] [transport.py] [_log()] userauth is OK
2025-11-24T12:16:52.443 [DEBUG] [Thread-189841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:16:52.443 [DEBUG] [Thread-189841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:16:52.443 [DEBUG] [Thread-189841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:16:52.443 [DEBUG] [Thread-189841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:16:52.461 [INFO] [Thread-189841] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:16:52.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:16:53.206 [DEBUG] [Thread-189841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:16:53.206 [DEBUG] [Thread-189841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:16:53.206 [DEBUG] [Thread-189841] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:16:53.247 [DEBUG] [Thread-189841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:16:53.247 [DEBUG] [Thread-189841] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:16:53.249 [DEBUG] [Thread-189841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:16:53.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:16:53.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:16:53.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:16:53.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:16:53.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:16:53.265 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:16:53.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:16:53.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:16:53.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:16:53.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.427826 -999.00  +19.60  16.50     27   +0.50 1 1 1 1 1   888    0 20.26 28.68 ----- 16.5 16.5 163.8 24.0 26.6 -27.1 25.6 -24.5 25.7 -24.5 26.7 -26.3
2025-11-24T12:16:53.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:16:53.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:16:53.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.427826
2025-11-24T12:16:53.273 [DEBUG] [Thread-189841] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:16:53.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:16:53.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:16:53.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:16:53.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:16:53.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:16:53.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:16:26', tmtdew=22.73, humidity=21.47, cloud=0.0, wind=23.47, temperature=19.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:16:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:16:53.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:16:53.357 [DEBUG] [Thread-189844] [transport.py] [_log()] starting thread (client mode): 0xd3193160
2025-11-24T12:16:53.357 [DEBUG] [Thread-189844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:16:53.372 [DEBUG] [Thread-189844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:16:53.372 [INFO] [Thread-189844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] client lang: <none>
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] server lang: <none>
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] kex follows: False
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] Compression: none
2025-11-24T12:16:53.381 [DEBUG] [Thread-189844] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:16:53.435 [DEBUG] [Thread-189844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:16:53.435 [DEBUG] [Thread-189844] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:16:53.436 [DEBUG] [Thread-189844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:16:53.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:16:53.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:16:53.493 [DEBUG] [Thread-189844] [transport.py] [_log()] userauth is OK
2025-11-24T12:16:53.493 [DEBUG] [Thread-189844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:16:53.493 [DEBUG] [Thread-189844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:16:53.493 [DEBUG] [Thread-189844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:16:53.493 [DEBUG] [Thread-189844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:16:53.517 [INFO] [Thread-189844] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:16:53.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:16:53.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:16:54.372 [DEBUG] [Thread-189844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:16:54.372 [DEBUG] [Thread-189844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:16:54.420 [DEBUG] [Thread-189844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:16:54.420 [DEBUG] [Thread-189844] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:16:54.438 [DEBUG] [Thread-189844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:16:54.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:16:54.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-11-24T12:16:54.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-11-24T12:16:54.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:16:54.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:16:54.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:16:54.475 [DEBUG] [Thread-189844] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:16:59.349 [DEBUG] [Thread-189846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:17:14.391 [DEBUG] [Thread-189847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:17:24.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:17:24.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:17:24.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-11-24T12:17:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 16, 59), 23.08, 20.95, 0.0, 28.41, 19.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:17:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:16:59
2025-11-24T12:17:25.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:17:25.516 [DEBUG] [Thread-189848] [transport.py] [_log()] starting thread (client mode): 0xd07123e0
2025-11-24T12:17:25.516 [DEBUG] [Thread-189848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:17:25.535 [DEBUG] [Thread-189848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:17:25.535 [INFO] [Thread-189848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:17:25.538 [DEBUG] [Thread-189848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:17:25.538 [DEBUG] [Thread-189848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:17:25.538 [DEBUG] [Thread-189848] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] client lang: <none>
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] server lang: <none>
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] kex follows: False
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] Compression: none
2025-11-24T12:17:25.539 [DEBUG] [Thread-189848] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:17:25.554 [DEBUG] [Thread-189848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:17:25.555 [DEBUG] [Thread-189848] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:17:25.555 [DEBUG] [Thread-189848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:17:25.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:17:25.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:17:25.555 [DEBUG] [Thread-189848] [transport.py] [_log()] userauth is OK
2025-11-24T12:17:25.555 [DEBUG] [Thread-189848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:17:25.555 [DEBUG] [Thread-189848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:17:25.555 [DEBUG] [Thread-189848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:17:25.555 [DEBUG] [Thread-189848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:17:25.571 [INFO] [Thread-189848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:17:25.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:17:26.195 [DEBUG] [Thread-189848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:17:26.195 [DEBUG] [Thread-189848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:17:26.196 [DEBUG] [Thread-189848] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:17:26.235 [DEBUG] [Thread-189848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:17:26.235 [DEBUG] [Thread-189848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:17:26.238 [DEBUG] [Thread-189848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:17:26.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:17:26.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:17:26.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:17:26.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:17:26.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:17:26.260 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:17:26.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:17:26.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:17:26.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:17:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.428173 -999.00  +19.70  19.27     26   -0.10 1 1 1 1 1   888    0 20.15 27.22 ----- 19.3 19.3 151.0 30.2 26.6 -27.8 25.5 -25.8 25.5 -26.5 26.8 -26.7
2025-11-24T12:17:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:17:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:17:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.428173
2025-11-24T12:17:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:17:26.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:17:26.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:17:26.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:17:26.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:17:26.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:16:59', tmtdew=23.08, humidity=20.95, cloud=0.0, wind=28.41, temperature=19.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:16:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:17:26.263 [DEBUG] [Thread-189848] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:17:26.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:17:26.358 [DEBUG] [Thread-189851] [transport.py] [_log()] starting thread (client mode): 0xd07e8a90
2025-11-24T12:17:26.359 [DEBUG] [Thread-189851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:17:26.376 [DEBUG] [Thread-189851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:17:26.377 [INFO] [Thread-189851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] client lang: <none>
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] server lang: <none>
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] kex follows: False
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:17:26.387 [DEBUG] [Thread-189851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:17:26.388 [DEBUG] [Thread-189851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:17:26.388 [DEBUG] [Thread-189851] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:17:26.388 [DEBUG] [Thread-189851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:17:26.388 [DEBUG] [Thread-189851] [transport.py] [_log()] Compression: none
2025-11-24T12:17:26.388 [DEBUG] [Thread-189851] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:17:26.451 [DEBUG] [Thread-189851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:17:26.451 [DEBUG] [Thread-189851] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:17:26.451 [DEBUG] [Thread-189851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:17:26.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:17:26.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:17:26.517 [DEBUG] [Thread-189851] [transport.py] [_log()] userauth is OK
2025-11-24T12:17:26.517 [DEBUG] [Thread-189851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:17:26.517 [DEBUG] [Thread-189851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:17:26.517 [DEBUG] [Thread-189851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:17:26.517 [DEBUG] [Thread-189851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:17:26.536 [INFO] [Thread-189851] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:17:26.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:17:26.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:17:27.425 [DEBUG] [Thread-189851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:17:27.425 [DEBUG] [Thread-189851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:17:27.473 [DEBUG] [Thread-189851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:17:27.473 [DEBUG] [Thread-189851] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:17:27.482 [DEBUG] [Thread-189851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:17:27.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:17:27.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-11-24T12:17:27.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-11-24T12:17:27.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:17:27.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:17:27.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:17:27.519 [DEBUG] [Thread-189851] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:17:29.435 [DEBUG] [Thread-189853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:17:44.486 [DEBUG] [Thread-189854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:17:46.764 [DEBUG] [Thread-189855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:17:50.011 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:17:50.013 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:17:57.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:17:57.538 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:17:57.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:17:58.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 17, 31), 23.3, 20.59, 0.0, 23.12, 19.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:17:58.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:17:31
2025-11-24T12:17:58.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:17:58.660 [DEBUG] [Thread-189856] [transport.py] [_log()] starting thread (client mode): 0xd31b3d30
2025-11-24T12:17:58.660 [DEBUG] [Thread-189856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:17:58.672 [DEBUG] [Thread-189856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:17:58.672 [INFO] [Thread-189856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] client lang: <none>
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] server lang: <none>
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] kex follows: False
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] Compression: none
2025-11-24T12:17:58.676 [DEBUG] [Thread-189856] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:17:58.693 [DEBUG] [Thread-189856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:17:58.693 [DEBUG] [Thread-189856] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:17:58.693 [DEBUG] [Thread-189856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:17:58.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:17:58.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:17:58.694 [DEBUG] [Thread-189856] [transport.py] [_log()] userauth is OK
2025-11-24T12:17:58.694 [DEBUG] [Thread-189856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:17:58.694 [DEBUG] [Thread-189856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:17:58.694 [DEBUG] [Thread-189856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:17:58.694 [DEBUG] [Thread-189856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:17:58.704 [INFO] [Thread-189856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:17:58.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:17:59.300 [DEBUG] [Thread-189856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:17:59.300 [DEBUG] [Thread-189856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:17:59.300 [DEBUG] [Thread-189856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:17:59.341 [DEBUG] [Thread-189856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:17:59.341 [DEBUG] [Thread-189856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:17:59.343 [DEBUG] [Thread-189856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:17:59.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:17:59.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:17:59.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:17:59.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:17:59.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:17:59.361 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:17:59.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:17:59.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:17:59.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:17:59.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.428521 -999.00  +19.50  19.07     26   -0.50 1 1 1 1 1   888    0 20.46 26.81 ----- 19.1 19.1 167.8 29.7 26.4 -27.0 25.4 -24.6 25.5 -25.0 26.6 -25.9
2025-11-24T12:17:59.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:17:59.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:17:59.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.428521
2025-11-24T12:17:59.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:17:59.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:17:59.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:17:59.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:17:59.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:17:59.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:17:31', tmtdew=23.3, humidity=20.59, cloud=0.0, wind=23.12, temperature=19.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:17:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:17:59.362 [DEBUG] [Thread-189856] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:17:59.436 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:17:59.447 [DEBUG] [Thread-189859] [transport.py] [_log()] starting thread (client mode): 0xd31516f0
2025-11-24T12:17:59.447 [DEBUG] [Thread-189859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:17:59.462 [DEBUG] [Thread-189859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:17:59.462 [INFO] [Thread-189859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] client lang: <none>
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] server lang: <none>
2025-11-24T12:17:59.470 [DEBUG] [Thread-189859] [transport.py] [_log()] kex follows: False
2025-11-24T12:17:59.471 [DEBUG] [Thread-189859] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:17:59.471 [DEBUG] [Thread-189859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:17:59.471 [DEBUG] [Thread-189859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:17:59.471 [DEBUG] [Thread-189859] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:17:59.471 [DEBUG] [Thread-189859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:17:59.471 [DEBUG] [Thread-189859] [transport.py] [_log()] Compression: none
2025-11-24T12:17:59.471 [DEBUG] [Thread-189859] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:17:59.518 [DEBUG] [Thread-189861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:17:59.527 [DEBUG] [Thread-189859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:17:59.527 [DEBUG] [Thread-189859] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:17:59.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:17:59.528 [DEBUG] [Thread-189859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:17:59.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:17:59.584 [DEBUG] [Thread-189859] [transport.py] [_log()] userauth is OK
2025-11-24T12:17:59.584 [DEBUG] [Thread-189859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:17:59.584 [DEBUG] [Thread-189859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:17:59.584 [DEBUG] [Thread-189859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:17:59.584 [DEBUG] [Thread-189859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:17:59.598 [INFO] [Thread-189859] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:17:59.598 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:17:59.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:18:00.459 [DEBUG] [Thread-189859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:18:00.459 [DEBUG] [Thread-189859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:18:00.508 [DEBUG] [Thread-189859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:18:00.508 [DEBUG] [Thread-189859] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:18:00.516 [DEBUG] [Thread-189859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:18:00.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:18:00.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-11-24T12:18:00.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-11-24T12:18:00.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:18:00.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:18:00.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:18:00.547 [DEBUG] [Thread-189859] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:18:14.553 [DEBUG] [Thread-189862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:18:29.591 [DEBUG] [Thread-189863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:18:30.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:18:30.570 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:18:30.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-11-24T12:18:31.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 18, 4), 23.02, 20.97, 0.0, 26.89, 19.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:18:31.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:18:04
2025-11-24T12:18:31.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:18:31.686 [DEBUG] [Thread-189864] [transport.py] [_log()] starting thread (client mode): 0xd07009a0
2025-11-24T12:18:31.686 [DEBUG] [Thread-189864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:18:31.705 [DEBUG] [Thread-189864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:18:31.705 [INFO] [Thread-189864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:18:31.708 [DEBUG] [Thread-189864] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:18:31.708 [DEBUG] [Thread-189864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] client lang: <none>
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] server lang: <none>
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] kex follows: False
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:18:31.709 [DEBUG] [Thread-189864] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:18:31.710 [DEBUG] [Thread-189864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:18:31.710 [DEBUG] [Thread-189864] [transport.py] [_log()] Compression: none
2025-11-24T12:18:31.710 [DEBUG] [Thread-189864] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:18:31.728 [DEBUG] [Thread-189864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:18:31.728 [DEBUG] [Thread-189864] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:18:31.729 [DEBUG] [Thread-189864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:18:31.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:18:31.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:18:31.731 [DEBUG] [Thread-189864] [transport.py] [_log()] userauth is OK
2025-11-24T12:18:31.732 [DEBUG] [Thread-189864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:18:31.732 [DEBUG] [Thread-189864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:18:31.732 [DEBUG] [Thread-189864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:18:31.732 [DEBUG] [Thread-189864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:18:31.756 [INFO] [Thread-189864] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:18:31.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:18:32.391 [DEBUG] [Thread-189864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:18:32.400 [DEBUG] [Thread-189864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:18:32.400 [DEBUG] [Thread-189864] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:18:32.433 [DEBUG] [Thread-189864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:18:32.433 [DEBUG] [Thread-189864] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:18:32.436 [DEBUG] [Thread-189864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:18:32.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:18:32.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:18:32.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:18:32.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:18:32.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:18:32.464 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:18:32.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:18:32.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:18:32.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:18:32.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.429215 -999.00  +19.40  15.85     28   +0.40 1 1 1 1 1   888    0 20.31 23.59 ----- 15.8 15.8 145.2 20.3 26.6 -25.5 25.5 -24.3 25.7 -23.1 26.7 -24.5
2025-11-24T12:18:32.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:18:32.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:18:32.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.429215
2025-11-24T12:18:32.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:18:32.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:18:32.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:18:32.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:18:32.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:18:32.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:18:04', tmtdew=23.02, humidity=20.97, cloud=0.0, wind=26.89, temperature=19.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:18:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:18:32.468 [DEBUG] [Thread-189864] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:18:32.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:18:32.563 [DEBUG] [Thread-189867] [transport.py] [_log()] starting thread (client mode): 0xd3190af0
2025-11-24T12:18:32.563 [DEBUG] [Thread-189867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:18:32.577 [DEBUG] [Thread-189867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:18:32.577 [INFO] [Thread-189867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:18:32.585 [DEBUG] [Thread-189867] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:18:32.585 [DEBUG] [Thread-189867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:18:32.585 [DEBUG] [Thread-189867] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:18:32.585 [DEBUG] [Thread-189867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:18:32.585 [DEBUG] [Thread-189867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:18:32.586 [DEBUG] [Thread-189867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:18:32.586 [DEBUG] [Thread-189867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:18:32.586 [DEBUG] [Thread-189867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:18:32.586 [DEBUG] [Thread-189867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:18:32.586 [DEBUG] [Thread-189867] [transport.py] [_log()] client lang: <none>
2025-11-24T12:18:32.586 [DEBUG] [Thread-189867] [transport.py] [_log()] server lang: <none>
2025-11-24T12:18:32.586 [DEBUG] [Thread-189867] [transport.py] [_log()] kex follows: False
2025-11-24T12:18:32.586 [DEBUG] [Thread-189867] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:18:32.586 [DEBUG] [Thread-189867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:18:32.587 [DEBUG] [Thread-189867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:18:32.587 [DEBUG] [Thread-189867] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:18:32.587 [DEBUG] [Thread-189867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:18:32.587 [DEBUG] [Thread-189867] [transport.py] [_log()] Compression: none
2025-11-24T12:18:32.587 [DEBUG] [Thread-189867] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:18:32.646 [DEBUG] [Thread-189867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:18:32.647 [DEBUG] [Thread-189867] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:18:32.648 [DEBUG] [Thread-189867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:18:32.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:18:32.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:18:32.705 [DEBUG] [Thread-189867] [transport.py] [_log()] userauth is OK
2025-11-24T12:18:32.706 [DEBUG] [Thread-189867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:18:32.706 [DEBUG] [Thread-189867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:18:32.706 [DEBUG] [Thread-189867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:18:32.706 [DEBUG] [Thread-189867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:18:32.725 [INFO] [Thread-189867] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:18:32.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:18:32.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:18:33.580 [DEBUG] [Thread-189867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:18:33.589 [DEBUG] [Thread-189867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:18:33.628 [DEBUG] [Thread-189867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:18:33.628 [DEBUG] [Thread-189867] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:18:33.637 [DEBUG] [Thread-189867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:18:33.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:18:33.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-11-24T12:18:33.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:18:33.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:18:33.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:18:33.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:18:33.675 [DEBUG] [Thread-189867] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:18:44.628 [DEBUG] [Thread-189869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:18:47.093 [DEBUG] [Thread-189870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:18:50.154 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:18:50.155 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:18:59.679 [DEBUG] [Thread-189871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:19:03.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:19:03.668 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:19:03.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-11-24T12:19:04.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 18, 36), 21.91, 22.53, 0.0, 21.6, 19.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:19:04.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:18:36
2025-11-24T12:19:04.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:19:04.773 [DEBUG] [Thread-189872] [transport.py] [_log()] starting thread (client mode): 0xd3191180
2025-11-24T12:19:04.773 [DEBUG] [Thread-189872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:19:04.784 [DEBUG] [Thread-189872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:19:04.784 [INFO] [Thread-189872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] client lang: <none>
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] server lang: <none>
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] kex follows: False
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] Compression: none
2025-11-24T12:19:04.786 [DEBUG] [Thread-189872] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:19:04.795 [DEBUG] [Thread-189872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:19:04.795 [DEBUG] [Thread-189872] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:19:04.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:19:04.796 [DEBUG] [Thread-189872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:19:04.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:19:04.797 [DEBUG] [Thread-189872] [transport.py] [_log()] userauth is OK
2025-11-24T12:19:04.797 [DEBUG] [Thread-189872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:19:04.797 [DEBUG] [Thread-189872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:19:04.797 [DEBUG] [Thread-189872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:19:04.797 [DEBUG] [Thread-189872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:19:04.812 [INFO] [Thread-189872] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:19:04.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:19:05.470 [DEBUG] [Thread-189872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:19:05.470 [DEBUG] [Thread-189872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:19:05.470 [DEBUG] [Thread-189872] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:19:05.511 [DEBUG] [Thread-189872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:19:05.511 [DEBUG] [Thread-189872] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:19:05.513 [DEBUG] [Thread-189872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:19:05.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:19:05.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:19:05.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:19:05.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:19:05.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:19:05.532 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:19:05.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.429562 -999.00  +19.30  11.32     28   +0.50 1 1 1 1 1   888    0 20.05 20.52 ----- 11.3 11.3 127.2 22.2 26.6 -25.3 25.6 -24.5 25.8 -24.2 26.8 -25.8
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.429562
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:19:05.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:18:36', tmtdew=21.91, humidity=22.53, cloud=0.0, wind=21.6, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:18:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:19:05.533 [DEBUG] [Thread-189872] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:19:05.605 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:19:05.617 [DEBUG] [Thread-189875] [transport.py] [_log()] starting thread (client mode): 0xd07038e0
2025-11-24T12:19:05.617 [DEBUG] [Thread-189875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:19:05.635 [DEBUG] [Thread-189875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:19:05.635 [INFO] [Thread-189875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] client lang: <none>
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] server lang: <none>
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] kex follows: False
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] Compression: none
2025-11-24T12:19:05.643 [DEBUG] [Thread-189875] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:19:05.699 [DEBUG] [Thread-189875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:19:05.699 [DEBUG] [Thread-189875] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:19:05.699 [DEBUG] [Thread-189875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:19:05.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:19:05.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:19:05.761 [DEBUG] [Thread-189875] [transport.py] [_log()] userauth is OK
2025-11-24T12:19:05.761 [DEBUG] [Thread-189875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:19:05.761 [DEBUG] [Thread-189875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:19:05.761 [DEBUG] [Thread-189875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:19:05.761 [DEBUG] [Thread-189875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:19:05.775 [INFO] [Thread-189875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:19:05.775 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:19:05.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:19:06.610 [DEBUG] [Thread-189875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:19:06.610 [DEBUG] [Thread-189875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:19:06.659 [DEBUG] [Thread-189875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:19:06.659 [DEBUG] [Thread-189875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:19:06.668 [DEBUG] [Thread-189875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:19:06.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:19:06.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:19:06.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-11-24T12:19:06.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:19:06.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:19:06.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:19:06.705 [DEBUG] [Thread-189875] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:19:14.713 [DEBUG] [Thread-189877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:19:29.757 [DEBUG] [Thread-189878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:19:36.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:19:36.728 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:19:36.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-11-24T12:19:37.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 19, 8), 21.83, 22.6, 0.0, 16.39, 19.06, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:19:37.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:19:08
2025-11-24T12:19:37.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:19:37.808 [DEBUG] [Thread-189879] [transport.py] [_log()] starting thread (client mode): 0xd07023b0
2025-11-24T12:19:37.809 [DEBUG] [Thread-189879] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:19:37.833 [DEBUG] [Thread-189879] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:19:37.833 [INFO] [Thread-189879] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] client lang: <none>
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] server lang: <none>
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] kex follows: False
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:19:37.836 [DEBUG] [Thread-189879] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:19:37.837 [DEBUG] [Thread-189879] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:19:37.837 [DEBUG] [Thread-189879] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:19:37.837 [DEBUG] [Thread-189879] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:19:37.837 [DEBUG] [Thread-189879] [transport.py] [_log()] Compression: none
2025-11-24T12:19:37.837 [DEBUG] [Thread-189879] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:19:37.853 [DEBUG] [Thread-189879] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:19:37.854 [DEBUG] [Thread-189879] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:19:37.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:19:37.855 [DEBUG] [Thread-189879] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:19:37.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:19:37.857 [DEBUG] [Thread-189879] [transport.py] [_log()] userauth is OK
2025-11-24T12:19:37.858 [DEBUG] [Thread-189879] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:19:37.858 [DEBUG] [Thread-189879] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:19:37.858 [DEBUG] [Thread-189879] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:19:37.858 [DEBUG] [Thread-189879] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:19:37.894 [INFO] [Thread-189879] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:19:37.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:19:38.511 [DEBUG] [Thread-189879] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:19:38.511 [DEBUG] [Thread-189879] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:19:38.511 [DEBUG] [Thread-189879] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:19:38.552 [DEBUG] [Thread-189879] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:19:38.552 [DEBUG] [Thread-189879] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:19:38.554 [DEBUG] [Thread-189879] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:19:38.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:19:38.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:19:38.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:19:38.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:19:38.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:19:38.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:19:38.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:19:38.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:19:38.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:19:38.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.429910 -999.00  +19.70  20.88     28   +0.90 1 1 1 1 1   888    0 20.51 18.15 ----- 20.9 20.9 168.3 24.4 26.6 -24.6 25.7 -24.6 25.9 -23.0 26.8 -25.2
2025-11-24T12:19:38.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:19:38.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:19:38.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.429910
2025-11-24T12:19:38.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:19:38.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:19:38.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:19:38.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:19:38.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:19:38.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:19:08', tmtdew=21.83, humidity=22.6, cloud=0.0, wind=16.39, temperature=19.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:19:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:19:38.573 [DEBUG] [Thread-189879] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:19:38.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:19:38.662 [DEBUG] [Thread-189882] [transport.py] [_log()] starting thread (client mode): 0xd317e560
2025-11-24T12:19:38.662 [DEBUG] [Thread-189882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:19:38.676 [DEBUG] [Thread-189882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:19:38.676 [INFO] [Thread-189882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:19:38.683 [DEBUG] [Thread-189882] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:19:38.683 [DEBUG] [Thread-189882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] client lang: <none>
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] server lang: <none>
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] kex follows: False
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] Compression: none
2025-11-24T12:19:38.684 [DEBUG] [Thread-189882] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:19:38.744 [DEBUG] [Thread-189882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:19:38.744 [DEBUG] [Thread-189882] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:19:38.744 [DEBUG] [Thread-189882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:19:38.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:19:38.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:19:38.801 [DEBUG] [Thread-189882] [transport.py] [_log()] userauth is OK
2025-11-24T12:19:38.801 [DEBUG] [Thread-189882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:19:38.801 [DEBUG] [Thread-189882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:19:38.801 [DEBUG] [Thread-189882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:19:38.801 [DEBUG] [Thread-189882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:19:38.815 [INFO] [Thread-189882] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:19:38.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:19:38.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:19:39.651 [DEBUG] [Thread-189882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:19:39.651 [DEBUG] [Thread-189882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:19:39.700 [DEBUG] [Thread-189882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:19:39.700 [DEBUG] [Thread-189882] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:19:39.709 [DEBUG] [Thread-189882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:19:39.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:19:39.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-11-24T12:19:39.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-11-24T12:19:39.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:19:39.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:19:39.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:19:39.746 [DEBUG] [Thread-189882] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:19:44.807 [DEBUG] [Thread-189884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:19:47.172 [DEBUG] [Thread-189885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:19:50.296 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:19:50.297 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:19:59.852 [DEBUG] [Thread-189886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:20:09.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:20:09.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:20:09.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-11-24T12:20:10.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 19, 41), 22.27, 22.24, 0.0, 24.26, 19.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:20:10.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:19:41
2025-11-24T12:20:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:20:10.897 [DEBUG] [Thread-189887] [transport.py] [_log()] starting thread (client mode): 0xd317f400
2025-11-24T12:20:10.897 [DEBUG] [Thread-189887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:20:10.917 [DEBUG] [Thread-189887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:20:10.917 [INFO] [Thread-189887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:20:10.920 [DEBUG] [Thread-189887] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:20:10.920 [DEBUG] [Thread-189887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:20:10.920 [DEBUG] [Thread-189887] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:20:10.920 [DEBUG] [Thread-189887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] client lang: <none>
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] server lang: <none>
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] kex follows: False
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] Compression: none
2025-11-24T12:20:10.921 [DEBUG] [Thread-189887] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:20:10.937 [DEBUG] [Thread-189887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:20:10.937 [DEBUG] [Thread-189887] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:20:10.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:20:10.938 [DEBUG] [Thread-189887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:20:10.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:20:10.940 [DEBUG] [Thread-189887] [transport.py] [_log()] userauth is OK
2025-11-24T12:20:10.940 [DEBUG] [Thread-189887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:20:10.940 [DEBUG] [Thread-189887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:20:10.940 [DEBUG] [Thread-189887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:20:10.940 [DEBUG] [Thread-189887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:20:10.960 [INFO] [Thread-189887] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:20:10.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:20:11.882 [DEBUG] [Thread-189887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:20:11.882 [DEBUG] [Thread-189887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:20:11.882 [DEBUG] [Thread-189887] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:20:11.923 [DEBUG] [Thread-189887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:20:11.923 [DEBUG] [Thread-189887] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:20:11.926 [DEBUG] [Thread-189887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:20:11.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:20:11.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:20:11.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:20:11.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:20:11.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:20:11.980 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:20:11.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:20:11.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:20:11.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:20:11.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.430257 -999.00  +20.20  17.57     27   +0.80 1 1 1 1 1   888    0 20.42 18.32 ----- 17.6 17.6 194.0 26.1 26.6 -25.0 25.6 -26.5 25.9 -24.6 26.8 -24.9
2025-11-24T12:20:11.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:20:11.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:20:11.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.430257
2025-11-24T12:20:11.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:20:11.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:20:11.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:20:11.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:20:11.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:20:11.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:19:41', tmtdew=22.27, humidity=22.24, cloud=0.0, wind=24.26, temperature=19.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:19:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:20:11.983 [DEBUG] [Thread-189887] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:20:12.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:20:12.081 [DEBUG] [Thread-189890] [transport.py] [_log()] starting thread (client mode): 0xd317e290
2025-11-24T12:20:12.082 [DEBUG] [Thread-189890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:20:12.096 [DEBUG] [Thread-189890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:20:12.096 [INFO] [Thread-189890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] client lang: <none>
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] server lang: <none>
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] kex follows: False
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:20:12.104 [DEBUG] [Thread-189890] [transport.py] [_log()] Compression: none
2025-11-24T12:20:12.105 [DEBUG] [Thread-189890] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:20:12.166 [DEBUG] [Thread-189890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:20:12.167 [DEBUG] [Thread-189890] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:20:12.167 [DEBUG] [Thread-189890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:20:12.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:20:12.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:20:12.225 [DEBUG] [Thread-189890] [transport.py] [_log()] userauth is OK
2025-11-24T12:20:12.225 [DEBUG] [Thread-189890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:20:12.226 [DEBUG] [Thread-189890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:20:12.226 [DEBUG] [Thread-189890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:20:12.226 [DEBUG] [Thread-189890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:20:12.244 [INFO] [Thread-189890] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:20:12.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:20:12.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:20:13.101 [DEBUG] [Thread-189890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:20:13.102 [DEBUG] [Thread-189890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:20:13.150 [DEBUG] [Thread-189890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:20:13.150 [DEBUG] [Thread-189890] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:20:13.159 [DEBUG] [Thread-189890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:20:13.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:20:13.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:20:13.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-11-24T12:20:13.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:20:13.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:20:13.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:20:13.196 [DEBUG] [Thread-189890] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:20:14.881 [DEBUG] [Thread-189892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:20:29.917 [DEBUG] [Thread-189893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:20:43.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:20:43.219 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:20:43.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-11-24T12:20:43.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 20, 13), 22.55, 21.86, 0.0, 34.14, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:20:43.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:20:13
2025-11-24T12:20:44.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:20:44.221 [DEBUG] [Thread-189894] [transport.py] [_log()] starting thread (client mode): 0xd317c4c0
2025-11-24T12:20:44.221 [DEBUG] [Thread-189894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:20:44.240 [DEBUG] [Thread-189894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:20:44.240 [INFO] [Thread-189894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:20:44.243 [DEBUG] [Thread-189894] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:20:44.243 [DEBUG] [Thread-189894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:20:44.243 [DEBUG] [Thread-189894] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:20:44.243 [DEBUG] [Thread-189894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:20:44.243 [DEBUG] [Thread-189894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:20:44.243 [DEBUG] [Thread-189894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:20:44.243 [DEBUG] [Thread-189894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] client lang: <none>
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] server lang: <none>
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] kex follows: False
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] Compression: none
2025-11-24T12:20:44.244 [DEBUG] [Thread-189894] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:20:44.259 [DEBUG] [Thread-189894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:20:44.259 [DEBUG] [Thread-189894] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:20:44.259 [DEBUG] [Thread-189894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:20:44.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:20:44.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:20:44.260 [DEBUG] [Thread-189894] [transport.py] [_log()] userauth is OK
2025-11-24T12:20:44.260 [DEBUG] [Thread-189894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:20:44.260 [DEBUG] [Thread-189894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:20:44.260 [DEBUG] [Thread-189894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:20:44.260 [DEBUG] [Thread-189894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:20:44.270 [INFO] [Thread-189894] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:20:44.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:20:44.889 [DEBUG] [Thread-189894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:20:44.890 [DEBUG] [Thread-189894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:20:44.890 [DEBUG] [Thread-189894] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:20:44.931 [DEBUG] [Thread-189894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:20:44.931 [DEBUG] [Thread-189894] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:20:44.935 [DEBUG] [Thread-189894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:20:44.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:20:44.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:20:44.952 [DEBUG] [Thread-189896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:20:44.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:20:44.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:20:44.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:20:44.963 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:20:44.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:20:44.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:20:44.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:20:44.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.430604 -999.00  +20.20  17.84     26   +0.20 1 1 1 1 1   888    0 20.13 21.88 ----- 17.8 17.8 147.8 38.7 26.6 -27.4 25.6 -24.7 25.8 -24.3 26.8 -26.9
2025-11-24T12:20:44.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:20:44.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:20:44.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.430604
2025-11-24T12:20:44.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:20:44.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:20:44.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:20:44.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:20:44.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:20:44.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:20:13', tmtdew=22.55, humidity=21.86, cloud=0.0, wind=34.14, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:20:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:20:44.966 [DEBUG] [Thread-189894] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:20:45.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:20:45.063 [DEBUG] [Thread-189898] [transport.py] [_log()] starting thread (client mode): 0xd31915d0
2025-11-24T12:20:45.063 [DEBUG] [Thread-189898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:20:45.078 [DEBUG] [Thread-189898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:20:45.078 [INFO] [Thread-189898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:20:45.085 [DEBUG] [Thread-189898] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:20:45.086 [DEBUG] [Thread-189898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:20:45.086 [DEBUG] [Thread-189898] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:20:45.086 [DEBUG] [Thread-189898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:20:45.086 [DEBUG] [Thread-189898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:20:45.086 [DEBUG] [Thread-189898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:20:45.086 [DEBUG] [Thread-189898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:20:45.087 [DEBUG] [Thread-189898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:20:45.087 [DEBUG] [Thread-189898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:20:45.087 [DEBUG] [Thread-189898] [transport.py] [_log()] client lang: <none>
2025-11-24T12:20:45.087 [DEBUG] [Thread-189898] [transport.py] [_log()] server lang: <none>
2025-11-24T12:20:45.087 [DEBUG] [Thread-189898] [transport.py] [_log()] kex follows: False
2025-11-24T12:20:45.087 [DEBUG] [Thread-189898] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:20:45.087 [DEBUG] [Thread-189898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:20:45.087 [DEBUG] [Thread-189898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:20:45.088 [DEBUG] [Thread-189898] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:20:45.088 [DEBUG] [Thread-189898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:20:45.088 [DEBUG] [Thread-189898] [transport.py] [_log()] Compression: none
2025-11-24T12:20:45.088 [DEBUG] [Thread-189898] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:20:45.146 [DEBUG] [Thread-189898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:20:45.147 [DEBUG] [Thread-189898] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:20:45.148 [DEBUG] [Thread-189898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:20:45.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:20:45.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:20:45.205 [DEBUG] [Thread-189898] [transport.py] [_log()] userauth is OK
2025-11-24T12:20:45.205 [DEBUG] [Thread-189898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:20:45.206 [DEBUG] [Thread-189898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:20:45.206 [DEBUG] [Thread-189898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:20:45.206 [DEBUG] [Thread-189898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:20:45.225 [INFO] [Thread-189898] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:20:45.226 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:20:45.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:20:46.080 [DEBUG] [Thread-189898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:20:46.080 [DEBUG] [Thread-189898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:20:46.127 [DEBUG] [Thread-189898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:20:46.128 [DEBUG] [Thread-189898] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:20:46.137 [DEBUG] [Thread-189898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:20:46.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:20:46.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-11-24T12:20:46.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-11-24T12:20:46.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:20:46.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:20:46.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:20:46.173 [DEBUG] [Thread-189898] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:20:47.437 [DEBUG] [Thread-189900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:20:50.448 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:20:50.450 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:20:59.990 [DEBUG] [Thread-189901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:21:15.036 [DEBUG] [Thread-189902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:21:16.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:21:16.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:21:16.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-11-24T12:21:16.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 20, 46), 22.76, 21.02, 0.0, 26.43, 19.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:21:16.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:20:46
2025-11-24T12:21:16.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:21:17.136 [DEBUG] [Thread-189903] [transport.py] [_log()] starting thread (client mode): 0xc9b81900
2025-11-24T12:21:17.136 [DEBUG] [Thread-189903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:21:17.155 [DEBUG] [Thread-189903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:21:17.155 [INFO] [Thread-189903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] client lang: <none>
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] server lang: <none>
2025-11-24T12:21:17.157 [DEBUG] [Thread-189903] [transport.py] [_log()] kex follows: False
2025-11-24T12:21:17.158 [DEBUG] [Thread-189903] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:21:17.158 [DEBUG] [Thread-189903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:21:17.158 [DEBUG] [Thread-189903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:21:17.158 [DEBUG] [Thread-189903] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:21:17.158 [DEBUG] [Thread-189903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:21:17.158 [DEBUG] [Thread-189903] [transport.py] [_log()] Compression: none
2025-11-24T12:21:17.158 [DEBUG] [Thread-189903] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:21:17.165 [DEBUG] [Thread-189903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:21:17.166 [DEBUG] [Thread-189903] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:21:17.166 [DEBUG] [Thread-189903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:21:17.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:21:17.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:21:17.167 [DEBUG] [Thread-189903] [transport.py] [_log()] userauth is OK
2025-11-24T12:21:17.167 [DEBUG] [Thread-189903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:21:17.167 [DEBUG] [Thread-189903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:21:17.167 [DEBUG] [Thread-189903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:21:17.167 [DEBUG] [Thread-189903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:21:17.176 [INFO] [Thread-189903] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:21:17.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:21:17.845 [DEBUG] [Thread-189903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:21:17.846 [DEBUG] [Thread-189903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:21:17.846 [DEBUG] [Thread-189903] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:21:17.887 [DEBUG] [Thread-189903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:21:17.887 [DEBUG] [Thread-189903] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:21:17.890 [DEBUG] [Thread-189903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:21:17.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:21:17.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:21:17.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:21:17.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:21:17.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:21:17.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:21:17.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:21:17.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:21:17.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:21:17.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.430951 -999.00  +20.20  26.88     26   +0.40 1 1 1 1 1   888    0 20.29 28.11 ----- 26.9 26.9 171.8 31.1 26.6 -26.6 25.5 -24.8 25.7 -24.5 26.7 -25.7
2025-11-24T12:21:17.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:21:17.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:21:17.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.430951
2025-11-24T12:21:17.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:21:17.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:21:17.918 [DEBUG] [Thread-189903] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:21:17.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:21:17.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:21:17.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:21:17.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:20:46', tmtdew=22.76, humidity=21.02, cloud=0.0, wind=26.43, temperature=19.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:20:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:21:18.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:21:18.020 [DEBUG] [Thread-189906] [transport.py] [_log()] starting thread (client mode): 0xd0703850
2025-11-24T12:21:18.020 [DEBUG] [Thread-189906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:21:18.035 [DEBUG] [Thread-189906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:21:18.035 [INFO] [Thread-189906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] client lang: <none>
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] server lang: <none>
2025-11-24T12:21:18.046 [DEBUG] [Thread-189906] [transport.py] [_log()] kex follows: False
2025-11-24T12:21:18.047 [DEBUG] [Thread-189906] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:21:18.047 [DEBUG] [Thread-189906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:21:18.047 [DEBUG] [Thread-189906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:21:18.047 [DEBUG] [Thread-189906] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:21:18.047 [DEBUG] [Thread-189906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:21:18.047 [DEBUG] [Thread-189906] [transport.py] [_log()] Compression: none
2025-11-24T12:21:18.047 [DEBUG] [Thread-189906] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:21:18.113 [DEBUG] [Thread-189906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:21:18.114 [DEBUG] [Thread-189906] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:21:18.115 [DEBUG] [Thread-189906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:21:18.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:21:18.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:21:18.169 [DEBUG] [Thread-189906] [transport.py] [_log()] userauth is OK
2025-11-24T12:21:18.169 [DEBUG] [Thread-189906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:21:18.170 [DEBUG] [Thread-189906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:21:18.170 [DEBUG] [Thread-189906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:21:18.170 [DEBUG] [Thread-189906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:21:18.189 [INFO] [Thread-189906] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:21:18.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:21:18.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:21:19.061 [DEBUG] [Thread-189906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:21:19.061 [DEBUG] [Thread-189906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:21:19.109 [DEBUG] [Thread-189906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:21:19.109 [DEBUG] [Thread-189906] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:21:19.118 [DEBUG] [Thread-189906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:21:19.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:21:19.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-11-24T12:21:19.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-11-24T12:21:19.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:21:19.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:21:19.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:21:19.150 [DEBUG] [Thread-189906] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:21:30.075 [DEBUG] [Thread-189908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:21:45.125 [DEBUG] [Thread-189909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:21:47.516 [DEBUG] [Thread-189910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:21:49.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:21:49.162 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:21:49.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-11-24T12:21:50.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 21, 18), 22.54, 21.35, 0.0, 27.3, 19.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:21:50.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:21:18
2025-11-24T12:21:50.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:21:50.340 [DEBUG] [Thread-189911] [transport.py] [_log()] starting thread (client mode): 0xc9b83bb0
2025-11-24T12:21:50.341 [DEBUG] [Thread-189911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:21:50.358 [DEBUG] [Thread-189911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:21:50.358 [INFO] [Thread-189911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:21:50.361 [DEBUG] [Thread-189911] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:21:50.361 [DEBUG] [Thread-189911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:21:50.361 [DEBUG] [Thread-189911] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:21:50.361 [DEBUG] [Thread-189911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:21:50.361 [DEBUG] [Thread-189911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:21:50.361 [DEBUG] [Thread-189911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] client lang: <none>
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] server lang: <none>
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] kex follows: False
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] Compression: none
2025-11-24T12:21:50.362 [DEBUG] [Thread-189911] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:21:50.372 [DEBUG] [Thread-189911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:21:50.372 [DEBUG] [Thread-189911] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:21:50.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:21:50.373 [DEBUG] [Thread-189911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:21:50.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:21:50.373 [DEBUG] [Thread-189911] [transport.py] [_log()] userauth is OK
2025-11-24T12:21:50.374 [DEBUG] [Thread-189911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:21:50.374 [DEBUG] [Thread-189911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:21:50.374 [DEBUG] [Thread-189911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:21:50.374 [DEBUG] [Thread-189911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:21:50.387 [INFO] [Thread-189911] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:21:50.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:21:50.593 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:21:50.594 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:21:51.016 [DEBUG] [Thread-189911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:21:51.016 [DEBUG] [Thread-189911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:21:51.016 [DEBUG] [Thread-189911] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:21:51.057 [DEBUG] [Thread-189911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:21:51.057 [DEBUG] [Thread-189911] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:21:51.060 [DEBUG] [Thread-189911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:21:51.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:21:51.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:21:51.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:21:51.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:21:51.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:21:51.080 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:21:51.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:21:51.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:21:51.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:21:51.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.431298 -999.00  +19.80  18.94     27   +0.30 1 1 1 1 1   888    0 19.99 29.49 ----- 18.9 18.9 167.6 33.3 26.5 -26.4 25.5 -24.4 25.6 -25.0 26.7 -26.7
2025-11-24T12:21:51.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:21:51.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:21:51.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.431298
2025-11-24T12:21:51.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:21:51.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:21:51.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:21:51.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:21:51.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:21:51.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:21:18', tmtdew=22.54, humidity=21.35, cloud=0.0, wind=27.3, temperature=19.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:21:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:21:51.081 [DEBUG] [Thread-189911] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:21:51.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:21:51.166 [DEBUG] [Thread-189914] [transport.py] [_log()] starting thread (client mode): 0xd31b2140
2025-11-24T12:21:51.166 [DEBUG] [Thread-189914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:21:51.184 [DEBUG] [Thread-189914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:21:51.184 [INFO] [Thread-189914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] client lang: <none>
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] server lang: <none>
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] kex follows: False
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] Compression: none
2025-11-24T12:21:51.191 [DEBUG] [Thread-189914] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:21:51.249 [DEBUG] [Thread-189914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:21:51.249 [DEBUG] [Thread-189914] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:21:51.249 [DEBUG] [Thread-189914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:21:51.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:21:51.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:21:51.304 [DEBUG] [Thread-189914] [transport.py] [_log()] userauth is OK
2025-11-24T12:21:51.304 [DEBUG] [Thread-189914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:21:51.305 [DEBUG] [Thread-189914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:21:51.305 [DEBUG] [Thread-189914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:21:51.305 [DEBUG] [Thread-189914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:21:51.319 [INFO] [Thread-189914] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:21:51.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:21:51.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:21:52.180 [DEBUG] [Thread-189914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:21:52.180 [DEBUG] [Thread-189914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:21:52.228 [DEBUG] [Thread-189914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:21:52.228 [DEBUG] [Thread-189914] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:21:52.236 [DEBUG] [Thread-189914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:21:52.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:21:52.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-11-24T12:21:52.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:21:52.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:21:52.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:21:52.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:21:52.267 [DEBUG] [Thread-189914] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:22:00.158 [DEBUG] [Thread-189916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:22:15.211 [DEBUG] [Thread-189917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:22:22.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:22:22.264 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:22:22.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-11-24T12:22:23.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 21, 51), 22.32, 21.97, 0.0, 19.29, 19.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:22:23.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:21:51
2025-11-24T12:22:23.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:22:23.362 [DEBUG] [Thread-189918] [transport.py] [_log()] starting thread (client mode): 0xd317e500
2025-11-24T12:22:23.362 [DEBUG] [Thread-189918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:22:23.382 [DEBUG] [Thread-189918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:22:23.382 [INFO] [Thread-189918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:22:23.385 [DEBUG] [Thread-189918] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:22:23.385 [DEBUG] [Thread-189918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] client lang: <none>
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] server lang: <none>
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] kex follows: False
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:22:23.386 [DEBUG] [Thread-189918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:22:23.387 [DEBUG] [Thread-189918] [transport.py] [_log()] Compression: none
2025-11-24T12:22:23.387 [DEBUG] [Thread-189918] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:22:23.407 [DEBUG] [Thread-189918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:22:23.407 [DEBUG] [Thread-189918] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:22:23.408 [DEBUG] [Thread-189918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:22:23.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:22:23.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:22:23.410 [DEBUG] [Thread-189918] [transport.py] [_log()] userauth is OK
2025-11-24T12:22:23.410 [DEBUG] [Thread-189918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:22:23.410 [DEBUG] [Thread-189918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:22:23.410 [DEBUG] [Thread-189918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:22:23.410 [DEBUG] [Thread-189918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:22:23.434 [INFO] [Thread-189918] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:22:23.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:22:24.075 [DEBUG] [Thread-189918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:22:24.075 [DEBUG] [Thread-189918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:22:24.075 [DEBUG] [Thread-189918] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:22:24.116 [DEBUG] [Thread-189918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:22:24.116 [DEBUG] [Thread-189918] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:22:24.118 [DEBUG] [Thread-189918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:22:24.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:22:24.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:22:24.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:22:24.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:22:24.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:22:24.135 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:22:24.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:22:24.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:22:24.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:22:24.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.431993 -999.00  +19.90  16.66     27   +0.70 1 1 1 1 1   888    0 21.10 41.64 ----- 16.7 16.7 173.2 27.8 26.5 -25.3 25.4 -24.6 25.7 -23.8 26.6 -26.9
2025-11-24T12:22:24.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:22:24.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:22:24.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.431993
2025-11-24T12:22:24.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:22:24.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:22:24.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:22:24.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:22:24.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:22:24.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:21:51', tmtdew=22.32, humidity=21.97, cloud=0.0, wind=19.29, temperature=19.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:22:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:22:24.136 [DEBUG] [Thread-189918] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:22:24.211 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:22:24.223 [DEBUG] [Thread-189921] [transport.py] [_log()] starting thread (client mode): 0xc9b81fc0
2025-11-24T12:22:24.223 [DEBUG] [Thread-189921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:22:24.241 [DEBUG] [Thread-189921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:22:24.241 [INFO] [Thread-189921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] client lang: <none>
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] server lang: <none>
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] kex follows: False
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] Compression: none
2025-11-24T12:22:24.249 [DEBUG] [Thread-189921] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:22:24.314 [DEBUG] [Thread-189921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:22:24.314 [DEBUG] [Thread-189921] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:22:24.315 [DEBUG] [Thread-189921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:22:24.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:22:24.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:22:24.372 [DEBUG] [Thread-189921] [transport.py] [_log()] userauth is OK
2025-11-24T12:22:24.372 [DEBUG] [Thread-189921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:22:24.372 [DEBUG] [Thread-189921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:22:24.372 [DEBUG] [Thread-189921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:22:24.372 [DEBUG] [Thread-189921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:22:24.386 [INFO] [Thread-189921] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:22:24.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:22:24.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:22:25.257 [DEBUG] [Thread-189921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:22:25.257 [DEBUG] [Thread-189921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:22:25.304 [DEBUG] [Thread-189921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:22:25.304 [DEBUG] [Thread-189921] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:22:25.312 [DEBUG] [Thread-189921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:22:25.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:22:25.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:22:25.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-11-24T12:22:25.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:22:25.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:22:25.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:22:25.343 [DEBUG] [Thread-189921] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:22:30.241 [DEBUG] [Thread-189923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:22:45.292 [DEBUG] [Thread-189924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:22:47.832 [DEBUG] [Thread-189925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:22:50.743 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:22:50.745 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:22:55.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:22:55.364 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:22:55.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-11-24T12:22:56.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 22, 23), 22.12, 22.3, 0.0, 18.16, 19.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:22:56.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:22:23
2025-11-24T12:22:56.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:22:56.402 [DEBUG] [Thread-189926] [transport.py] [_log()] starting thread (client mode): 0xd3190f10
2025-11-24T12:22:56.402 [DEBUG] [Thread-189926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:22:56.422 [DEBUG] [Thread-189926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:22:56.422 [INFO] [Thread-189926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] client lang: <none>
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] server lang: <none>
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] kex follows: False
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] Compression: none
2025-11-24T12:22:56.426 [DEBUG] [Thread-189926] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:22:56.443 [DEBUG] [Thread-189926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:22:56.443 [DEBUG] [Thread-189926] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:22:56.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:22:56.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:22:56.444 [DEBUG] [Thread-189926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:22:56.444 [DEBUG] [Thread-189926] [transport.py] [_log()] userauth is OK
2025-11-24T12:22:56.444 [DEBUG] [Thread-189926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:22:56.444 [DEBUG] [Thread-189926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:22:56.444 [DEBUG] [Thread-189926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:22:56.444 [DEBUG] [Thread-189926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:22:56.453 [INFO] [Thread-189926] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:22:56.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:22:57.075 [DEBUG] [Thread-189926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:22:57.075 [DEBUG] [Thread-189926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:22:57.075 [DEBUG] [Thread-189926] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:22:57.116 [DEBUG] [Thread-189926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:22:57.116 [DEBUG] [Thread-189926] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:22:57.118 [DEBUG] [Thread-189926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:22:57.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:22:57.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:22:57.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:22:57.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:22:57.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:22:57.136 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:22:57.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:22:57.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:22:57.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:22:57.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.432340 -999.00  +20.10  23.67     28   +1.10 1 1 1 1 1   888    0 20.90 42.16 ----- 23.7 23.7 173.8 29.8 26.6 -26.0 25.4 -28.9 25.8 -24.5 26.8 -25.8
2025-11-24T12:22:57.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:22:57.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:22:57.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.432340
2025-11-24T12:22:57.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:22:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:22:57.138 [DEBUG] [Thread-189926] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:22:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:22:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:22:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:22:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:22:23', tmtdew=22.12, humidity=22.3, cloud=0.0, wind=18.16, temperature=19.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:22:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:22:57.213 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:22:57.227 [DEBUG] [Thread-189929] [transport.py] [_log()] starting thread (client mode): 0xc9b83ca0
2025-11-24T12:22:57.228 [DEBUG] [Thread-189929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:22:57.242 [DEBUG] [Thread-189929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:22:57.242 [INFO] [Thread-189929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] client lang: <none>
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] server lang: <none>
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] kex follows: False
2025-11-24T12:22:57.249 [DEBUG] [Thread-189929] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:22:57.250 [DEBUG] [Thread-189929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:22:57.250 [DEBUG] [Thread-189929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:22:57.250 [DEBUG] [Thread-189929] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:22:57.250 [DEBUG] [Thread-189929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:22:57.250 [DEBUG] [Thread-189929] [transport.py] [_log()] Compression: none
2025-11-24T12:22:57.250 [DEBUG] [Thread-189929] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:22:57.307 [DEBUG] [Thread-189929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:22:57.307 [DEBUG] [Thread-189929] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:22:57.307 [DEBUG] [Thread-189929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:22:57.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:22:57.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:22:57.364 [DEBUG] [Thread-189929] [transport.py] [_log()] userauth is OK
2025-11-24T12:22:57.365 [DEBUG] [Thread-189929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:22:57.365 [DEBUG] [Thread-189929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:22:57.365 [DEBUG] [Thread-189929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:22:57.365 [DEBUG] [Thread-189929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:22:57.378 [INFO] [Thread-189929] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:22:57.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:22:57.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:22:58.234 [DEBUG] [Thread-189929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:22:58.234 [DEBUG] [Thread-189929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:22:58.285 [DEBUG] [Thread-189929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:22:58.285 [DEBUG] [Thread-189929] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:22:58.293 [DEBUG] [Thread-189929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:22:58.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:22:58.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:22: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-11-24T12:22:58.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:22:58.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:22:58.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:22:58.324 [DEBUG] [Thread-189929] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:23:00.327 [DEBUG] [Thread-189931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:23:15.382 [DEBUG] [Thread-189932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:23:28.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:23:28.347 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:23:28.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-11-24T12:23:29.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 22, 56), 21.99, 22.78, 0.0, 18.25, 19.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:23:29.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:22:56
2025-11-24T12:23:29.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:23:29.554 [DEBUG] [Thread-189933] [transport.py] [_log()] starting thread (client mode): 0xc9b83e50
2025-11-24T12:23:29.554 [DEBUG] [Thread-189933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:23:29.573 [DEBUG] [Thread-189933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:23:29.573 [INFO] [Thread-189933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] client lang: <none>
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] server lang: <none>
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] kex follows: False
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] Compression: none
2025-11-24T12:23:29.575 [DEBUG] [Thread-189933] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:23:29.591 [DEBUG] [Thread-189933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:23:29.591 [DEBUG] [Thread-189933] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:23:29.591 [DEBUG] [Thread-189933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:23:29.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:23:29.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:23:29.592 [DEBUG] [Thread-189933] [transport.py] [_log()] userauth is OK
2025-11-24T12:23:29.592 [DEBUG] [Thread-189933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:23:29.592 [DEBUG] [Thread-189933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:23:29.592 [DEBUG] [Thread-189933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:23:29.592 [DEBUG] [Thread-189933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:23:29.601 [INFO] [Thread-189933] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:23:29.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:23:30.226 [DEBUG] [Thread-189933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:23:30.226 [DEBUG] [Thread-189933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:23:30.226 [DEBUG] [Thread-189933] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:23:30.267 [DEBUG] [Thread-189933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:23:30.267 [DEBUG] [Thread-189933] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:23:30.269 [DEBUG] [Thread-189933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:23:30.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:23:30.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:23:30.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:23:30.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:23:30.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:23:30.287 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:23:30.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.432687 -999.00  +19.90  16.74     28   +0.90 1 1 1 1 1   888    0 20.84 43.81 ----- 16.7 16.7 171.2 26.2 26.6 -25.2 25.5 -24.5 25.8 -23.4 26.7 -26.1
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.432687
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:23:30.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:22:56', tmtdew=21.99, humidity=22.78, cloud=0.0, wind=18.25, temperature=19.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:23:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:23:30.288 [DEBUG] [Thread-189933] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:23:30.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:23:30.374 [DEBUG] [Thread-189936] [transport.py] [_log()] starting thread (client mode): 0xd0711750
2025-11-24T12:23:30.374 [DEBUG] [Thread-189936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:23:30.395 [DEBUG] [Thread-189936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:23:30.395 [INFO] [Thread-189936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] client lang: <none>
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] server lang: <none>
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] kex follows: False
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] Compression: none
2025-11-24T12:23:30.405 [DEBUG] [Thread-189936] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:23:30.416 [DEBUG] [Thread-189938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:23:30.463 [DEBUG] [Thread-189936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:23:30.463 [DEBUG] [Thread-189936] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:23:30.463 [DEBUG] [Thread-189936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:23:30.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:23:30.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:23:30.520 [DEBUG] [Thread-189936] [transport.py] [_log()] userauth is OK
2025-11-24T12:23:30.520 [DEBUG] [Thread-189936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:23:30.520 [DEBUG] [Thread-189936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:23:30.520 [DEBUG] [Thread-189936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:23:30.520 [DEBUG] [Thread-189936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:23:30.535 [INFO] [Thread-189936] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:23:30.535 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:23:30.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:23:31.402 [DEBUG] [Thread-189936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:23:31.402 [DEBUG] [Thread-189936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:23:31.454 [DEBUG] [Thread-189936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:23:31.454 [DEBUG] [Thread-189936] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:23:31.464 [DEBUG] [Thread-189936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:23:31.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:23:31.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-11-24T12:23:31.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-11-24T12:23:31.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:23:31.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:23:31.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:23:31.497 [DEBUG] [Thread-189936] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:23:45.454 [DEBUG] [Thread-189939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:23:47.884 [DEBUG] [Thread-189940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:23:50.886 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:23:50.887 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:24:00.482 [DEBUG] [Thread-189941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:24:01.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:24:01.519 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:24:01.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-11-24T12:24:02.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 23, 28), 21.91, 22.9, 0.0, 22.13, 19.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:24:02.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:23:28
2025-11-24T12:24:02.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:24:02.705 [DEBUG] [Thread-189942] [transport.py] [_log()] starting thread (client mode): 0xd3191c30
2025-11-24T12:24:02.705 [DEBUG] [Thread-189942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:24:02.725 [DEBUG] [Thread-189942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:24:02.725 [INFO] [Thread-189942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] client lang: <none>
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] server lang: <none>
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] kex follows: False
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:24:02.728 [DEBUG] [Thread-189942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:24:02.729 [DEBUG] [Thread-189942] [transport.py] [_log()] Compression: none
2025-11-24T12:24:02.729 [DEBUG] [Thread-189942] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:24:02.744 [DEBUG] [Thread-189942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:24:02.744 [DEBUG] [Thread-189942] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:24:02.745 [DEBUG] [Thread-189942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:24:02.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:24:02.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:24:02.746 [DEBUG] [Thread-189942] [transport.py] [_log()] userauth is OK
2025-11-24T12:24:02.746 [DEBUG] [Thread-189942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:24:02.746 [DEBUG] [Thread-189942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:24:02.746 [DEBUG] [Thread-189942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:24:02.746 [DEBUG] [Thread-189942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:24:02.762 [INFO] [Thread-189942] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:24:02.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:24:03.364 [DEBUG] [Thread-189942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:24:03.364 [DEBUG] [Thread-189942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:24:03.364 [DEBUG] [Thread-189942] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:24:03.405 [DEBUG] [Thread-189942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:24:03.405 [DEBUG] [Thread-189942] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:24:03.408 [DEBUG] [Thread-189942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:24:03.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:24:03.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:24:03.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:24:03.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:24:03.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:24:03.426 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:24:03.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:24:03.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:24:03.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:24:03.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.433035 -999.00  +20.00  15.95     28   +1.00 1 1 1 1 1   888    0 21.03 38.88 ----- 15.9 15.9 163.0 20.6 26.7 -26.0 25.4 -25.2 25.8 -24.2 26.7 -24.6
2025-11-24T12:24:03.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:24:03.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:24:03.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.433035
2025-11-24T12:24:03.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:24:03.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:24:03.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:24:03.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:24:03.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:24:03.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:23:28', tmtdew=21.91, humidity=22.9, cloud=0.0, wind=22.13, temperature=19.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:23:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:24:03.427 [DEBUG] [Thread-189942] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:24:03.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:24:03.512 [DEBUG] [Thread-189945] [transport.py] [_log()] starting thread (client mode): 0xc9b828f0
2025-11-24T12:24:03.512 [DEBUG] [Thread-189945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:24:03.527 [DEBUG] [Thread-189945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:24:03.527 [INFO] [Thread-189945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:24:03.534 [DEBUG] [Thread-189945] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:24:03.535 [DEBUG] [Thread-189945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:24:03.535 [DEBUG] [Thread-189945] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:24:03.535 [DEBUG] [Thread-189945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:24:03.535 [DEBUG] [Thread-189945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:24:03.535 [DEBUG] [Thread-189945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:24:03.535 [DEBUG] [Thread-189945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:24:03.535 [DEBUG] [Thread-189945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:24:03.535 [DEBUG] [Thread-189945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:24:03.535 [DEBUG] [Thread-189945] [transport.py] [_log()] client lang: <none>
2025-11-24T12:24:03.535 [DEBUG] [Thread-189945] [transport.py] [_log()] server lang: <none>
2025-11-24T12:24:03.536 [DEBUG] [Thread-189945] [transport.py] [_log()] kex follows: False
2025-11-24T12:24:03.536 [DEBUG] [Thread-189945] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:24:03.536 [DEBUG] [Thread-189945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:24:03.536 [DEBUG] [Thread-189945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:24:03.536 [DEBUG] [Thread-189945] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:24:03.536 [DEBUG] [Thread-189945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:24:03.536 [DEBUG] [Thread-189945] [transport.py] [_log()] Compression: none
2025-11-24T12:24:03.537 [DEBUG] [Thread-189945] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:24:03.593 [DEBUG] [Thread-189945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:24:03.594 [DEBUG] [Thread-189945] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:24:03.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:24:03.595 [DEBUG] [Thread-189945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:24:03.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:24:03.657 [DEBUG] [Thread-189945] [transport.py] [_log()] userauth is OK
2025-11-24T12:24:03.657 [DEBUG] [Thread-189945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:24:03.658 [DEBUG] [Thread-189945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:24:03.658 [DEBUG] [Thread-189945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:24:03.658 [DEBUG] [Thread-189945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:24:03.677 [INFO] [Thread-189945] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:24:03.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:24:03.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:24:04.528 [DEBUG] [Thread-189945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:24:04.529 [DEBUG] [Thread-189945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:24:04.577 [DEBUG] [Thread-189945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:24:04.577 [DEBUG] [Thread-189945] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:24:04.586 [DEBUG] [Thread-189945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:24:04.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:24:04.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-11-24T12:24:04.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-11-24T12:24:04.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:24:04.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:24:04.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:24:04.624 [DEBUG] [Thread-189945] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:24:15.520 [DEBUG] [Thread-189947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:24:30.564 [DEBUG] [Thread-189948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:24:34.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:24:34.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:24:34.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-11-24T12:24:35.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 24), 21.76, 22.91, 0.0, 22.02, 19.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:24:35.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:24:00
2025-11-24T12:24:35.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:24:35.742 [DEBUG] [Thread-189949] [transport.py] [_log()] starting thread (client mode): 0xc9b827a0
2025-11-24T12:24:35.742 [DEBUG] [Thread-189949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:24:35.760 [DEBUG] [Thread-189949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:24:35.760 [INFO] [Thread-189949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] client lang: <none>
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] server lang: <none>
2025-11-24T12:24:35.763 [DEBUG] [Thread-189949] [transport.py] [_log()] kex follows: False
2025-11-24T12:24:35.764 [DEBUG] [Thread-189949] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:24:35.764 [DEBUG] [Thread-189949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:24:35.764 [DEBUG] [Thread-189949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:24:35.764 [DEBUG] [Thread-189949] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:24:35.764 [DEBUG] [Thread-189949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:24:35.764 [DEBUG] [Thread-189949] [transport.py] [_log()] Compression: none
2025-11-24T12:24:35.764 [DEBUG] [Thread-189949] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:24:35.781 [DEBUG] [Thread-189949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:24:35.782 [DEBUG] [Thread-189949] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:24:35.782 [DEBUG] [Thread-189949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:24:35.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:24:35.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:24:35.782 [DEBUG] [Thread-189949] [transport.py] [_log()] userauth is OK
2025-11-24T12:24:35.782 [DEBUG] [Thread-189949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:24:35.782 [DEBUG] [Thread-189949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:24:35.782 [DEBUG] [Thread-189949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:24:35.782 [DEBUG] [Thread-189949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:24:35.791 [INFO] [Thread-189949] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:24:35.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:24:36.395 [DEBUG] [Thread-189949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:24:36.395 [DEBUG] [Thread-189949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:24:36.395 [DEBUG] [Thread-189949] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:24:36.436 [DEBUG] [Thread-189949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:24:36.436 [DEBUG] [Thread-189949] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:24:36.438 [DEBUG] [Thread-189949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:24:36.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:24:36.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:24:36.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:24:36.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:24:36.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:24:36.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:24:36.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:24:36.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:24:36.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:24:36.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.433382 -999.00  +19.80  19.88     28   +0.80 1 1 1 1 1   888    0 20.01 30.69 ----- 19.9 19.9 177.6 24.1 26.5 -27.7 25.0 -30.0 25.6 -25.1 26.7 -27.6
2025-11-24T12:24:36.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:24:36.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:24:36.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.433382
2025-11-24T12:24:36.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:24:36.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:24:36.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:24:36.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:24:36.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:24:36.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:24:00', tmtdew=21.76, humidity=22.91, cloud=0.0, wind=22.02, temperature=19.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:24:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:24:36.461 [DEBUG] [Thread-189949] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:24:36.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:24:36.558 [DEBUG] [Thread-189952] [transport.py] [_log()] starting thread (client mode): 0xd31531f0
2025-11-24T12:24:36.558 [DEBUG] [Thread-189952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:24:36.574 [DEBUG] [Thread-189952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:24:36.574 [INFO] [Thread-189952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] client lang: <none>
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] server lang: <none>
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] kex follows: False
2025-11-24T12:24:36.582 [DEBUG] [Thread-189952] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:24:36.583 [DEBUG] [Thread-189952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:24:36.583 [DEBUG] [Thread-189952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:24:36.583 [DEBUG] [Thread-189952] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:24:36.583 [DEBUG] [Thread-189952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:24:36.583 [DEBUG] [Thread-189952] [transport.py] [_log()] Compression: none
2025-11-24T12:24:36.583 [DEBUG] [Thread-189952] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:24:36.641 [DEBUG] [Thread-189952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:24:36.643 [DEBUG] [Thread-189952] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:24:36.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:24:36.644 [DEBUG] [Thread-189952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:24:36.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:24:36.697 [DEBUG] [Thread-189952] [transport.py] [_log()] userauth is OK
2025-11-24T12:24:36.697 [DEBUG] [Thread-189952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:24:36.697 [DEBUG] [Thread-189952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:24:36.698 [DEBUG] [Thread-189952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:24:36.698 [DEBUG] [Thread-189952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:24:36.717 [INFO] [Thread-189952] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:24:36.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:24:36.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:24:37.562 [DEBUG] [Thread-189952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:24:37.562 [DEBUG] [Thread-189952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:24:37.610 [DEBUG] [Thread-189952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:24:37.610 [DEBUG] [Thread-189952] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:24:37.618 [DEBUG] [Thread-189952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:24:37.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:24:37.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-11-24T12:24:37.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:24:37.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:24:37.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:24:37.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:24:37.650 [DEBUG] [Thread-189952] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:24:45.602 [DEBUG] [Thread-189954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:24:48.209 [DEBUG] [Thread-189955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:24:51.039 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:24:51.041 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:25:00.655 [DEBUG] [Thread-189956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:25:07.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:25:07.672 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:25:07.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-11-24T12:25:08.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 24, 33), 21.9, 22.76, 0.0, 20.38, 19.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:25:08.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:24:33
2025-11-24T12:25:08.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:25:08.742 [DEBUG] [Thread-189957] [transport.py] [_log()] starting thread (client mode): 0xd317e320
2025-11-24T12:25:08.742 [DEBUG] [Thread-189957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:25:08.760 [DEBUG] [Thread-189957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:25:08.760 [INFO] [Thread-189957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] client lang: <none>
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] server lang: <none>
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] kex follows: False
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:25:08.770 [DEBUG] [Thread-189957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:25:08.771 [DEBUG] [Thread-189957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:25:08.771 [DEBUG] [Thread-189957] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:25:08.771 [DEBUG] [Thread-189957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:25:08.771 [DEBUG] [Thread-189957] [transport.py] [_log()] Compression: none
2025-11-24T12:25:08.771 [DEBUG] [Thread-189957] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:25:08.788 [DEBUG] [Thread-189957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:25:08.789 [DEBUG] [Thread-189957] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:25:08.790 [DEBUG] [Thread-189957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:25:08.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:25:08.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:25:08.792 [DEBUG] [Thread-189957] [transport.py] [_log()] userauth is OK
2025-11-24T12:25:08.792 [DEBUG] [Thread-189957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:25:08.792 [DEBUG] [Thread-189957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:25:08.792 [DEBUG] [Thread-189957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:25:08.792 [DEBUG] [Thread-189957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:25:08.827 [INFO] [Thread-189957] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:25:08.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:25:13.004 [DEBUG] [Thread-189957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:25:13.004 [DEBUG] [Thread-189957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:25:13.005 [DEBUG] [Thread-189957] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:25:13.044 [DEBUG] [Thread-189957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:25:13.045 [DEBUG] [Thread-189957] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:25:13.048 [DEBUG] [Thread-189957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:25:13.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:25:13.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:25:13.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:25:13.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:25:13.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:25:13.143 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:25:13.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:25:13.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:25:13.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:25:13.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.433729 -999.00  +19.60  16.92     28   +0.60 1 1 1 1 1   888    0 20.33 24.89 ----- 16.9 16.9 187.0 30.1 26.3 -26.2 24.9 -30.3 25.6 -24.9 26.7 -28.3
2025-11-24T12:25:13.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:25:13.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:25:13.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.433729
2025-11-24T12:25:13.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:25:13.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:25:13.147 [DEBUG] [Thread-189957] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:25:13.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:25:13.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:25:13.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:25:13.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:24:33', tmtdew=21.9, humidity=22.76, cloud=0.0, wind=20.38, temperature=19.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:24:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:25:13.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:25:13.246 [DEBUG] [Thread-189960] [transport.py] [_log()] starting thread (client mode): 0xd31b26b0
2025-11-24T12:25:13.246 [DEBUG] [Thread-189960] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:25:13.261 [DEBUG] [Thread-189960] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:25:13.261 [INFO] [Thread-189960] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] client lang: <none>
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] server lang: <none>
2025-11-24T12:25:13.272 [DEBUG] [Thread-189960] [transport.py] [_log()] kex follows: False
2025-11-24T12:25:13.273 [DEBUG] [Thread-189960] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:25:13.273 [DEBUG] [Thread-189960] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:25:13.273 [DEBUG] [Thread-189960] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:25:13.273 [DEBUG] [Thread-189960] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:25:13.273 [DEBUG] [Thread-189960] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:25:13.273 [DEBUG] [Thread-189960] [transport.py] [_log()] Compression: none
2025-11-24T12:25:13.273 [DEBUG] [Thread-189960] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:25:13.337 [DEBUG] [Thread-189960] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:25:13.338 [DEBUG] [Thread-189960] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:25:13.338 [DEBUG] [Thread-189960] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:25:13.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:25:13.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:25:13.393 [DEBUG] [Thread-189960] [transport.py] [_log()] userauth is OK
2025-11-24T12:25:13.393 [DEBUG] [Thread-189960] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:25:13.394 [DEBUG] [Thread-189960] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:25:13.394 [DEBUG] [Thread-189960] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:25:13.394 [DEBUG] [Thread-189960] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:25:13.428 [INFO] [Thread-189960] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:25:13.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:25:13.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:25:14.261 [DEBUG] [Thread-189960] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:25:14.261 [DEBUG] [Thread-189960] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:25:14.309 [DEBUG] [Thread-189960] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:25:14.309 [DEBUG] [Thread-189960] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:25:14.317 [DEBUG] [Thread-189960] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:25:14.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:25:14.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-11-24T12:25:14.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-11-24T12:25:14.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:25:14.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:25:14.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:25:14.350 [DEBUG] [Thread-189960] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:25:15.684 [DEBUG] [Thread-189962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:25:30.735 [DEBUG] [Thread-189963 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:25:44.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:25:44.380 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:25:44.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-11-24T12:25:45.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 25, 38), 21.62, 22.83, 0.0, 16.85, 19.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:25:45.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:25:38
2025-11-24T12:25:45.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:25:45.361 [DEBUG] [Thread-189964] [transport.py] [_log()] starting thread (client mode): 0xd317f100
2025-11-24T12:25:45.361 [DEBUG] [Thread-189964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:25:45.381 [DEBUG] [Thread-189964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:25:45.381 [INFO] [Thread-189964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:25:45.384 [DEBUG] [Thread-189964] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:25:45.384 [DEBUG] [Thread-189964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] client lang: <none>
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] server lang: <none>
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] kex follows: False
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] Compression: none
2025-11-24T12:25:45.385 [DEBUG] [Thread-189964] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:25:45.402 [DEBUG] [Thread-189964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:25:45.402 [DEBUG] [Thread-189964] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:25:45.403 [DEBUG] [Thread-189964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:25:45.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:25:45.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:25:45.405 [DEBUG] [Thread-189964] [transport.py] [_log()] userauth is OK
2025-11-24T12:25:45.405 [DEBUG] [Thread-189964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:25:45.405 [DEBUG] [Thread-189964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:25:45.405 [DEBUG] [Thread-189964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:25:45.405 [DEBUG] [Thread-189964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:25:45.426 [INFO] [Thread-189964] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:25:45.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:25:45.776 [DEBUG] [Thread-189966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:25:46.078 [DEBUG] [Thread-189964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:25:46.078 [DEBUG] [Thread-189964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:25:46.078 [DEBUG] [Thread-189964] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:25:46.119 [DEBUG] [Thread-189964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:25:46.119 [DEBUG] [Thread-189964] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:25:46.121 [DEBUG] [Thread-189964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:25:46.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:25:46.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:25:46.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:25:46.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:25:46.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:25:46.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:25:46.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:25:46.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:25:46.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:25:46.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.434076 -999.00  +19.20  15.62     28   +0.40 1 1 1 1 1   888    0 19.88 15.08 ----- 15.6 15.6 186.8 20.7 26.2 -26.4 24.8 -29.0 25.5 -24.9 26.4 -27.1
2025-11-24T12:25:46.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:25:46.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:25:46.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.434076
2025-11-24T12:25:46.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:25:46.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:25:46.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:25:46.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:25:46.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:25:46.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:25:38', tmtdew=21.62, humidity=22.83, cloud=0.0, wind=16.85, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:25:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:25:46.151 [DEBUG] [Thread-189964] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:25:46.223 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:25:46.233 [DEBUG] [Thread-189968] [transport.py] [_log()] starting thread (client mode): 0xd07118d0
2025-11-24T12:25:46.234 [DEBUG] [Thread-189968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:25:46.249 [DEBUG] [Thread-189968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:25:46.249 [INFO] [Thread-189968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] client lang: <none>
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] server lang: <none>
2025-11-24T12:25:46.256 [DEBUG] [Thread-189968] [transport.py] [_log()] kex follows: False
2025-11-24T12:25:46.257 [DEBUG] [Thread-189968] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:25:46.257 [DEBUG] [Thread-189968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:25:46.257 [DEBUG] [Thread-189968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:25:46.257 [DEBUG] [Thread-189968] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:25:46.257 [DEBUG] [Thread-189968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:25:46.257 [DEBUG] [Thread-189968] [transport.py] [_log()] Compression: none
2025-11-24T12:25:46.257 [DEBUG] [Thread-189968] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:25:46.311 [DEBUG] [Thread-189968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:25:46.311 [DEBUG] [Thread-189968] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:25:46.311 [DEBUG] [Thread-189968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:25:46.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:25:46.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:25:46.368 [DEBUG] [Thread-189968] [transport.py] [_log()] userauth is OK
2025-11-24T12:25:46.368 [DEBUG] [Thread-189968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:25:46.368 [DEBUG] [Thread-189968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:25:46.368 [DEBUG] [Thread-189968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:25:46.368 [DEBUG] [Thread-189968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:25:46.382 [INFO] [Thread-189968] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:25:46.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:25:46.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:25:47.307 [DEBUG] [Thread-189968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:25:47.309 [DEBUG] [Thread-189968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:25:47.355 [DEBUG] [Thread-189968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:25:47.355 [DEBUG] [Thread-189968] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:25:47.364 [DEBUG] [Thread-189968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:25:47.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:25:47.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-11-24T12:25:47.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-11-24T12:25:47.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:25:47.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:25:47.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:25:47.400 [DEBUG] [Thread-189968] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:25:48.376 [DEBUG] [Thread-189970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:25:51.183 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:25:51.184 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:26:00.809 [DEBUG] [Thread-189971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:26:15.860 [DEBUG] [Thread-189972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:26:17.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:26:17.422 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:26:17.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-11-24T12:26:18.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 26, 10), 21.8, 22.55, 0.0, 12.19, 19.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:26:18.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:26:10
2025-11-24T12:26:18.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:26:18.536 [DEBUG] [Thread-189973] [transport.py] [_log()] starting thread (client mode): 0xd3151180
2025-11-24T12:26:18.536 [DEBUG] [Thread-189973] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:26:18.556 [DEBUG] [Thread-189973] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:26:18.556 [INFO] [Thread-189973] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] client lang: <none>
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] server lang: <none>
2025-11-24T12:26:18.559 [DEBUG] [Thread-189973] [transport.py] [_log()] kex follows: False
2025-11-24T12:26:18.560 [DEBUG] [Thread-189973] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:26:18.560 [DEBUG] [Thread-189973] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:26:18.560 [DEBUG] [Thread-189973] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:26:18.560 [DEBUG] [Thread-189973] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:26:18.560 [DEBUG] [Thread-189973] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:26:18.560 [DEBUG] [Thread-189973] [transport.py] [_log()] Compression: none
2025-11-24T12:26:18.560 [DEBUG] [Thread-189973] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:26:18.575 [DEBUG] [Thread-189973] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:26:18.575 [DEBUG] [Thread-189973] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:26:18.575 [DEBUG] [Thread-189973] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:26:18.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:26:18.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:26:18.576 [DEBUG] [Thread-189973] [transport.py] [_log()] userauth is OK
2025-11-24T12:26:18.576 [DEBUG] [Thread-189973] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:26:18.576 [DEBUG] [Thread-189973] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:26:18.576 [DEBUG] [Thread-189973] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:26:18.576 [DEBUG] [Thread-189973] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:26:18.585 [INFO] [Thread-189973] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:26:18.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:26:19.211 [DEBUG] [Thread-189973] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:26:19.211 [DEBUG] [Thread-189973] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:26:19.212 [DEBUG] [Thread-189973] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:26:19.252 [DEBUG] [Thread-189973] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:26:19.252 [DEBUG] [Thread-189973] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:26:19.254 [DEBUG] [Thread-189973] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:26:19.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:26:19.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:26:19.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:26:19.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:26:19.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:26:19.270 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:26:19.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:26:19.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.434423 -999.00  +19.00   9.43     29   +0.60 1 1 1 1 1   888    0 19.27 5.46 ----- 9.4 9.4 218.2 15.0 26.4 -25.8 25.2 -24.1 25.6 -24.4 26.6 -26.1
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.434423
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:26:19.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:26:10', tmtdew=21.8, humidity=22.55, cloud=0.0, wind=12.19, temperature=19.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:25:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:26:19.271 [DEBUG] [Thread-189973] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:26:19.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:26:19.358 [DEBUG] [Thread-189976] [transport.py] [_log()] starting thread (client mode): 0xd07ebeb0
2025-11-24T12:26:19.358 [DEBUG] [Thread-189976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:26:19.373 [DEBUG] [Thread-189976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:26:19.373 [INFO] [Thread-189976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] client lang: <none>
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] server lang: <none>
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] kex follows: False
2025-11-24T12:26:19.380 [DEBUG] [Thread-189976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:26:19.381 [DEBUG] [Thread-189976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:26:19.381 [DEBUG] [Thread-189976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:26:19.381 [DEBUG] [Thread-189976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:26:19.381 [DEBUG] [Thread-189976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:26:19.381 [DEBUG] [Thread-189976] [transport.py] [_log()] Compression: none
2025-11-24T12:26:19.381 [DEBUG] [Thread-189976] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:26:19.435 [DEBUG] [Thread-189976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:26:19.435 [DEBUG] [Thread-189976] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:26:19.435 [DEBUG] [Thread-189976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:26:19.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:26:19.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:26:19.492 [DEBUG] [Thread-189976] [transport.py] [_log()] userauth is OK
2025-11-24T12:26:19.492 [DEBUG] [Thread-189976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:26:19.492 [DEBUG] [Thread-189976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:26:19.492 [DEBUG] [Thread-189976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:26:19.492 [DEBUG] [Thread-189976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:26:19.506 [INFO] [Thread-189976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:26:19.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:26:19.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:26:20.413 [DEBUG] [Thread-189976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:26:20.413 [DEBUG] [Thread-189976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:26:20.461 [DEBUG] [Thread-189976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:26:20.461 [DEBUG] [Thread-189976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:26:20.469 [DEBUG] [Thread-189976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:26:20.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:26:20.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-11-24T12:26:20.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-11-24T12:26:20.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:26:20.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:26:20.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:26:20.501 [DEBUG] [Thread-189976] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:26:30.893 [DEBUG] [Thread-189978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:26:45.944 [DEBUG] [Thread-189979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:26:48.544 [DEBUG] [Thread-189980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:26:50.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:26:50.509 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:26:50.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:26:51.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 26, 42), 21.93, 22.85, 0.0, 23.91, 19.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:26:51.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:26:42
2025-11-24T12:26:51.325 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:26:51.326 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:26:51.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:26:51.619 [DEBUG] [Thread-189981] [transport.py] [_log()] starting thread (client mode): 0xd317e740
2025-11-24T12:26:51.619 [DEBUG] [Thread-189981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:26:51.640 [DEBUG] [Thread-189981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:26:51.640 [INFO] [Thread-189981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:26:51.652 [DEBUG] [Thread-189981] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] client lang: <none>
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] server lang: <none>
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] kex follows: False
2025-11-24T12:26:51.653 [DEBUG] [Thread-189981] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:26:51.654 [DEBUG] [Thread-189981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:26:51.654 [DEBUG] [Thread-189981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:26:51.654 [DEBUG] [Thread-189981] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:26:51.654 [DEBUG] [Thread-189981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:26:51.654 [DEBUG] [Thread-189981] [transport.py] [_log()] Compression: none
2025-11-24T12:26:51.654 [DEBUG] [Thread-189981] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:26:51.675 [DEBUG] [Thread-189981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:26:51.676 [DEBUG] [Thread-189981] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:26:51.676 [DEBUG] [Thread-189981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:26:51.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:26:51.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:26:51.678 [DEBUG] [Thread-189981] [transport.py] [_log()] userauth is OK
2025-11-24T12:26:51.679 [DEBUG] [Thread-189981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:26:51.679 [DEBUG] [Thread-189981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:26:51.679 [DEBUG] [Thread-189981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:26:51.679 [DEBUG] [Thread-189981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:26:51.703 [INFO] [Thread-189981] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:26:51.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:26:52.338 [DEBUG] [Thread-189981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:26:52.347 [DEBUG] [Thread-189981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:26:52.348 [DEBUG] [Thread-189981] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:26:52.379 [DEBUG] [Thread-189981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:26:52.379 [DEBUG] [Thread-189981] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:26:52.382 [DEBUG] [Thread-189981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:26:52.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:26:52.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:26:52.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:26:52.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:26:52.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:26:52.409 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:26:52.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:26:52.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:26:52.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:26:52.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.435118 -999.00  +19.80  25.82     27   +0.60 1 1 1 1 1   888    0 19.42 -9.73 ----- 25.8 25.8 180.4 30.6 26.4 -26.3 25.1 -29.2 25.7 -24.4 26.7 -26.3
2025-11-24T12:26:52.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:26:52.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:26:52.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.435118
2025-11-24T12:26:52.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:26:52.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:26:52.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:26:52.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:26:52.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:26:52.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:26:42', tmtdew=21.93, humidity=22.85, cloud=0.0, wind=23.91, temperature=19.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:26:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:26:52.412 [DEBUG] [Thread-189981] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:26:52.495 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:26:52.505 [DEBUG] [Thread-189984] [transport.py] [_log()] starting thread (client mode): 0xd0710340
2025-11-24T12:26:52.505 [DEBUG] [Thread-189984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:26:52.521 [DEBUG] [Thread-189984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:26:52.521 [INFO] [Thread-189984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] client lang: <none>
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] server lang: <none>
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] kex follows: False
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] Compression: none
2025-11-24T12:26:52.538 [DEBUG] [Thread-189984] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:26:52.589 [DEBUG] [Thread-189984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:26:52.590 [DEBUG] [Thread-189984] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:26:52.591 [DEBUG] [Thread-189984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:26:52.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:26:52.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:26:52.645 [DEBUG] [Thread-189984] [transport.py] [_log()] userauth is OK
2025-11-24T12:26:52.645 [DEBUG] [Thread-189984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:26:52.645 [DEBUG] [Thread-189984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:26:52.646 [DEBUG] [Thread-189984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:26:52.646 [DEBUG] [Thread-189984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:26:52.664 [INFO] [Thread-189984] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:26:52.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:26:52.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:26:53.619 [DEBUG] [Thread-189984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:26:53.619 [DEBUG] [Thread-189984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:26:53.668 [DEBUG] [Thread-189984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:26:53.668 [DEBUG] [Thread-189984] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:26:53.677 [DEBUG] [Thread-189984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:26:53.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:26:53.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:26:53.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-11-24T12:26:53.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:26:53.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:26:53.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:26:53.710 [DEBUG] [Thread-189984] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:27:00.974 [DEBUG] [Thread-189986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:27:16.014 [DEBUG] [Thread-189987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:27:23.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:27:23.718 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:27:23.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-11-24T12:27:24.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 27, 15), 21.97, 22.83, 0.0, 23.61, 19.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:27:24.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:27:15
2025-11-24T12:27:24.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:27:24.860 [DEBUG] [Thread-189988] [transport.py] [_log()] starting thread (client mode): 0xd0710d90
2025-11-24T12:27:24.860 [DEBUG] [Thread-189988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:27:24.882 [DEBUG] [Thread-189988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:27:24.882 [INFO] [Thread-189988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] client lang: <none>
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] server lang: <none>
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] kex follows: False
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:27:24.885 [DEBUG] [Thread-189988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:27:24.886 [DEBUG] [Thread-189988] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:27:24.886 [DEBUG] [Thread-189988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:27:24.886 [DEBUG] [Thread-189988] [transport.py] [_log()] Compression: none
2025-11-24T12:27:24.886 [DEBUG] [Thread-189988] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:27:24.913 [DEBUG] [Thread-189988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:27:24.914 [DEBUG] [Thread-189988] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:27:24.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:27:24.915 [DEBUG] [Thread-189988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:27:24.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:27:24.917 [DEBUG] [Thread-189988] [transport.py] [_log()] userauth is OK
2025-11-24T12:27:24.917 [DEBUG] [Thread-189988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:27:24.917 [DEBUG] [Thread-189988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:27:24.918 [DEBUG] [Thread-189988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:27:24.918 [DEBUG] [Thread-189988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:27:24.941 [INFO] [Thread-189988] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:27:24.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:27:25.581 [DEBUG] [Thread-189988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:27:25.582 [DEBUG] [Thread-189988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:27:25.582 [DEBUG] [Thread-189988] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:27:25.623 [DEBUG] [Thread-189988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:27:25.623 [DEBUG] [Thread-189988] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:27:25.626 [DEBUG] [Thread-189988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:27:25.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:27:25.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:27:25.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:27:25.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:27:25.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:27:25.662 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:27:25.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:27:25.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:27:25.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:27:25.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.435465 -999.00  +20.20  24.78     26   +0.50 1 1 1 1 1   888    0 19.36 -12.69 ----- 24.8 24.8 186.0 33.8 26.4 -25.5 25.1 -30.7 25.7 -24.2 26.5 -26.8
2025-11-24T12:27:25.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:27:25.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:27:25.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.435465
2025-11-24T12:27:25.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:27:25.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:27:25.666 [DEBUG] [Thread-189988] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:27:25.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:27:25.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:27:25.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:27:25.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:27:15', tmtdew=21.97, humidity=22.83, cloud=0.0, wind=23.61, temperature=19.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:27:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:27:25.747 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:27:25.760 [DEBUG] [Thread-189991] [transport.py] [_log()] starting thread (client mode): 0xd07127a0
2025-11-24T12:27:25.760 [DEBUG] [Thread-189991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:27:25.774 [DEBUG] [Thread-189991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:27:25.775 [INFO] [Thread-189991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:27:25.782 [DEBUG] [Thread-189991] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:27:25.782 [DEBUG] [Thread-189991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:27:25.782 [DEBUG] [Thread-189991] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] client lang: <none>
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] server lang: <none>
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] kex follows: False
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] Compression: none
2025-11-24T12:27:25.783 [DEBUG] [Thread-189991] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:27:25.840 [DEBUG] [Thread-189991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:27:25.841 [DEBUG] [Thread-189991] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:27:25.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:27:25.841 [DEBUG] [Thread-189991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:27:25.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:27:25.896 [DEBUG] [Thread-189991] [transport.py] [_log()] userauth is OK
2025-11-24T12:27:25.897 [DEBUG] [Thread-189991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:27:25.897 [DEBUG] [Thread-189991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:27:25.897 [DEBUG] [Thread-189991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:27:25.897 [DEBUG] [Thread-189991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:27:25.924 [INFO] [Thread-189991] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:27:25.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:27:25.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:27:26.771 [DEBUG] [Thread-189991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:27:26.771 [DEBUG] [Thread-189991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:27:26.819 [DEBUG] [Thread-189991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:27:26.819 [DEBUG] [Thread-189991] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:27:26.827 [DEBUG] [Thread-189991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:27:26.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:27:26.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-11-24T12:27:26.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-11-24T12:27:26.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:27:26.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:27:26.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:27:26.859 [DEBUG] [Thread-189991] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:27:31.045 [DEBUG] [Thread-189993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:27:46.092 [DEBUG] [Thread-189994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:27:48.680 [DEBUG] [Thread-189995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:27:51.479 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:27:51.481 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:27:56.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:27:56.882 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:27:56.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-11-24T12:27:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 27, 47), 22.53, 21.38, 0.0, 24.81, 19.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:27:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:27:47
2025-11-24T12:27:57.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:27:57.985 [DEBUG] [Thread-189996] [transport.py] [_log()] starting thread (client mode): 0xd3191c30
2025-11-24T12:27:57.985 [DEBUG] [Thread-189996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:27:57.996 [DEBUG] [Thread-189996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:27:57.996 [INFO] [Thread-189996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] client lang: <none>
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] server lang: <none>
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] kex follows: False
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] Compression: none
2025-11-24T12:27:58.000 [DEBUG] [Thread-189996] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:27:58.017 [DEBUG] [Thread-189996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:27:58.018 [DEBUG] [Thread-189996] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:27:58.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:27:58.019 [DEBUG] [Thread-189996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:27:58.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:27:58.022 [DEBUG] [Thread-189996] [transport.py] [_log()] userauth is OK
2025-11-24T12:27:58.022 [DEBUG] [Thread-189996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:27:58.022 [DEBUG] [Thread-189996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:27:58.022 [DEBUG] [Thread-189996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:27:58.022 [DEBUG] [Thread-189996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:27:58.059 [INFO] [Thread-189996] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:27:58.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:27:58.718 [DEBUG] [Thread-189996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:27:58.727 [DEBUG] [Thread-189996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:27:58.727 [DEBUG] [Thread-189996] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:27:58.759 [DEBUG] [Thread-189996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:27:58.760 [DEBUG] [Thread-189996] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:27:58.762 [DEBUG] [Thread-189996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:27:58.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:27:58.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:27:58.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:27:58.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:27:58.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:27:58.789 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:27:58.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:27:58.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:27:58.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:27:58.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.435812 -999.00  +20.30  15.06     26   +0.50 1 1 1 1 1   888    0 19.15 -14.13 ----- 15.1 15.1 189.9 24.6 26.4 -26.6 25.2 -24.5 25.7 -23.2 26.6 -25.7
2025-11-24T12:27:58.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:27:58.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:27:58.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.435812
2025-11-24T12:27:58.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:27:58.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:27:58.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:27:58.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:27:58.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:27:58.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:27:47', tmtdew=22.53, humidity=21.38, cloud=0.0, wind=24.81, temperature=19.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:27:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:27:58.793 [DEBUG] [Thread-189996] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:27:58.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:27:58.886 [DEBUG] [Thread-189999] [transport.py] [_log()] starting thread (client mode): 0xd0712620
2025-11-24T12:27:58.886 [DEBUG] [Thread-189999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:27:58.902 [DEBUG] [Thread-189999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:27:58.902 [INFO] [Thread-189999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:27:58.912 [DEBUG] [Thread-189999] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:27:58.912 [DEBUG] [Thread-189999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:27:58.912 [DEBUG] [Thread-189999] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:27:58.912 [DEBUG] [Thread-189999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:27:58.912 [DEBUG] [Thread-189999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:27:58.913 [DEBUG] [Thread-189999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:27:58.913 [DEBUG] [Thread-189999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:27:58.913 [DEBUG] [Thread-189999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:27:58.913 [DEBUG] [Thread-189999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:27:58.913 [DEBUG] [Thread-189999] [transport.py] [_log()] client lang: <none>
2025-11-24T12:27:58.913 [DEBUG] [Thread-189999] [transport.py] [_log()] server lang: <none>
2025-11-24T12:27:58.913 [DEBUG] [Thread-189999] [transport.py] [_log()] kex follows: False
2025-11-24T12:27:58.913 [DEBUG] [Thread-189999] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:27:58.914 [DEBUG] [Thread-189999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:27:58.914 [DEBUG] [Thread-189999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:27:58.914 [DEBUG] [Thread-189999] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:27:58.914 [DEBUG] [Thread-189999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:27:58.914 [DEBUG] [Thread-189999] [transport.py] [_log()] Compression: none
2025-11-24T12:27:58.914 [DEBUG] [Thread-189999] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:27:58.969 [DEBUG] [Thread-189999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:27:58.969 [DEBUG] [Thread-189999] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:27:58.970 [DEBUG] [Thread-189999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:27:58.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:27:58.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:27:59.025 [DEBUG] [Thread-189999] [transport.py] [_log()] userauth is OK
2025-11-24T12:27:59.025 [DEBUG] [Thread-189999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:27:59.025 [DEBUG] [Thread-189999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:27:59.025 [DEBUG] [Thread-189999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:27:59.025 [DEBUG] [Thread-189999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:27:59.044 [INFO] [Thread-189999] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:27:59.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:27:59.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:27:59.895 [DEBUG] [Thread-189999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:27:59.895 [DEBUG] [Thread-189999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:27:59.943 [DEBUG] [Thread-189999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:27:59.943 [DEBUG] [Thread-189999] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:27:59.951 [DEBUG] [Thread-189999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:27:59.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:27:59.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-11-24T12:27:59.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-11-24T12:27:59.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:27:59.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:27:59.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:27:59.982 [DEBUG] [Thread-189999] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:28:01.123 [DEBUG] [Thread-190001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:28:16.166 [DEBUG] [Thread-190002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:28:30.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:28:30.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:28:30.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-11-24T12:28:30.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 28, 20), 22.74, 21.12, 0.0, 25.46, 19.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:28:30.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:28:20
2025-11-24T12:28:31.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:28:31.196 [DEBUG] [Thread-190003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:28:31.234 [DEBUG] [Thread-190004] [transport.py] [_log()] starting thread (client mode): 0xd3153e50
2025-11-24T12:28:31.234 [DEBUG] [Thread-190004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:28:31.255 [DEBUG] [Thread-190004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:28:31.255 [INFO] [Thread-190004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] client lang: <none>
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] server lang: <none>
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] kex follows: False
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:28:31.258 [DEBUG] [Thread-190004] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:28:31.259 [DEBUG] [Thread-190004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:28:31.259 [DEBUG] [Thread-190004] [transport.py] [_log()] Compression: none
2025-11-24T12:28:31.259 [DEBUG] [Thread-190004] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:28:31.279 [DEBUG] [Thread-190004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:28:31.279 [DEBUG] [Thread-190004] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:28:31.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:28:31.280 [DEBUG] [Thread-190004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:28:31.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:28:31.324 [DEBUG] [Thread-190004] [transport.py] [_log()] userauth is OK
2025-11-24T12:28:31.324 [DEBUG] [Thread-190004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:28:31.324 [DEBUG] [Thread-190004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:28:31.325 [DEBUG] [Thread-190004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:28:31.325 [DEBUG] [Thread-190004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:28:31.351 [INFO] [Thread-190004] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:28:31.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:28:32.002 [DEBUG] [Thread-190004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:28:32.003 [DEBUG] [Thread-190004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:28:32.003 [DEBUG] [Thread-190004] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:28:32.044 [DEBUG] [Thread-190004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:28:32.044 [DEBUG] [Thread-190004] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:28:32.047 [DEBUG] [Thread-190004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:28:32.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:28:32.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:28:32.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:28:32.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:28:32.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:28:32.071 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:28:32.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:28:32.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:28:32.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:28:32.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.436159 -999.00  +20.60  27.72     26   +0.60 1 1 1 1 1   888    0 18.85 -16.45 ----- 27.7 27.7 195.4 32.5 26.4 -26.0 25.1 -24.4 25.7 -25.6 26.6 -25.9
2025-11-24T12:28:32.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:28:32.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:28:32.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.436159
2025-11-24T12:28:32.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:28:32.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:28:32.074 [DEBUG] [Thread-190004] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:28:32.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:28:32.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:28:32.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:28:32.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:28:20', tmtdew=22.74, humidity=21.12, cloud=0.0, wind=25.46, temperature=19.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:28:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:28:32.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:28:32.167 [DEBUG] [Thread-190007] [transport.py] [_log()] starting thread (client mode): 0xd07e9480
2025-11-24T12:28:32.167 [DEBUG] [Thread-190007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:28:32.182 [DEBUG] [Thread-190007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:28:32.182 [INFO] [Thread-190007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] client lang: <none>
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] server lang: <none>
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] kex follows: False
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:28:32.190 [DEBUG] [Thread-190007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:28:32.191 [DEBUG] [Thread-190007] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:28:32.191 [DEBUG] [Thread-190007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:28:32.191 [DEBUG] [Thread-190007] [transport.py] [_log()] Compression: none
2025-11-24T12:28:32.191 [DEBUG] [Thread-190007] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:28:32.249 [DEBUG] [Thread-190007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:28:32.250 [DEBUG] [Thread-190007] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:28:32.251 [DEBUG] [Thread-190007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:28:32.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:28:32.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:28:32.309 [DEBUG] [Thread-190007] [transport.py] [_log()] userauth is OK
2025-11-24T12:28:32.309 [DEBUG] [Thread-190007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:28:32.309 [DEBUG] [Thread-190007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:28:32.309 [DEBUG] [Thread-190007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:28:32.310 [DEBUG] [Thread-190007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:28:32.328 [INFO] [Thread-190007] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:28:32.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:28:32.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:28:33.187 [DEBUG] [Thread-190007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:28:33.187 [DEBUG] [Thread-190007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:28:33.235 [DEBUG] [Thread-190007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:28:33.235 [DEBUG] [Thread-190007] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:28:33.243 [DEBUG] [Thread-190007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:28:33.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:28:33.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:28:33.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-11-24T12:28:33.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:28:33.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:28:33.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:28:33.276 [DEBUG] [Thread-190007] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:28:46.227 [DEBUG] [Thread-190009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:28:48.899 [DEBUG] [Thread-190010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:28:51.623 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:28:51.624 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:29:01.268 [DEBUG] [Thread-190011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:29:03.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:29:03.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:29:03.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-11-24T12:29:04.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 28, 52), 23.03, 20.8, 0.0, 26.27, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:29:04.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:28:52
2025-11-24T12:29:04.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:29:04.373 [DEBUG] [Thread-190012] [transport.py] [_log()] starting thread (client mode): 0xd3152b00
2025-11-24T12:29:04.373 [DEBUG] [Thread-190012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:29:04.392 [DEBUG] [Thread-190012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:29:04.393 [INFO] [Thread-190012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:29:04.394 [DEBUG] [Thread-190012] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:29:04.394 [DEBUG] [Thread-190012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:29:04.394 [DEBUG] [Thread-190012] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:29:04.394 [DEBUG] [Thread-190012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:29:04.394 [DEBUG] [Thread-190012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] client lang: <none>
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] server lang: <none>
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] kex follows: False
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] Compression: none
2025-11-24T12:29:04.395 [DEBUG] [Thread-190012] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:29:04.414 [DEBUG] [Thread-190012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:29:04.414 [DEBUG] [Thread-190012] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:29:04.415 [DEBUG] [Thread-190012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:29:04.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:29:04.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:29:04.417 [DEBUG] [Thread-190012] [transport.py] [_log()] userauth is OK
2025-11-24T12:29:04.417 [DEBUG] [Thread-190012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:29:04.417 [DEBUG] [Thread-190012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:29:04.417 [DEBUG] [Thread-190012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:29:04.417 [DEBUG] [Thread-190012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:29:04.453 [INFO] [Thread-190012] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:29:04.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:29:05.109 [DEBUG] [Thread-190012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:29:05.109 [DEBUG] [Thread-190012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:29:05.110 [DEBUG] [Thread-190012] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:29:05.150 [DEBUG] [Thread-190012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:29:05.150 [DEBUG] [Thread-190012] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:29:05.152 [DEBUG] [Thread-190012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:29:05.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:29:05.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:29:05.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:29:05.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:29:05.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:29:05.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:29:05.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.436507 -999.00  +20.70  20.32     26   +0.60 1 1 1 1 1   888    0 18.99 -16.86 ----- 20.3 20.3 185.2 31.3 26.4 -25.2 25.4 -26.9 25.8 -23.6 26.6 -25.7
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.436507
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:29:05.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:28:52', tmtdew=23.03, humidity=20.8, cloud=0.0, wind=26.27, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:28:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:29:05.180 [DEBUG] [Thread-190012] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:29:05.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:29:05.265 [DEBUG] [Thread-190015] [transport.py] [_log()] starting thread (client mode): 0xd0711db0
2025-11-24T12:29:05.265 [DEBUG] [Thread-190015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:29:05.280 [DEBUG] [Thread-190015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:29:05.280 [INFO] [Thread-190015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:29:05.287 [DEBUG] [Thread-190015] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] client lang: <none>
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] server lang: <none>
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] kex follows: False
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] Compression: none
2025-11-24T12:29:05.288 [DEBUG] [Thread-190015] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:29:05.347 [DEBUG] [Thread-190015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:29:05.347 [DEBUG] [Thread-190015] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:29:05.347 [DEBUG] [Thread-190015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:29:05.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:29:05.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:29:05.404 [DEBUG] [Thread-190015] [transport.py] [_log()] userauth is OK
2025-11-24T12:29:05.404 [DEBUG] [Thread-190015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:29:05.404 [DEBUG] [Thread-190015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:29:05.404 [DEBUG] [Thread-190015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:29:05.404 [DEBUG] [Thread-190015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:29:05.418 [INFO] [Thread-190015] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:29:05.419 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:29:05.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:29:06.277 [DEBUG] [Thread-190015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:29:06.278 [DEBUG] [Thread-190015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:29:06.325 [DEBUG] [Thread-190015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:29:06.326 [DEBUG] [Thread-190015] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:29:06.335 [DEBUG] [Thread-190015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:29:06.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:29: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')
2025-11-24T12:29:06.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-11-24T12:29:06.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:29:06.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:29:06.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:29:06.371 [DEBUG] [Thread-190015] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:29:16.313 [DEBUG] [Thread-190017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:29:31.370 [DEBUG] [Thread-190018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:29:36.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:29:36.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:29:36.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-11-24T12:29:37.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 29, 25), 23.0, 20.82, 0.0, 25.48, 20.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:29:37.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:29:25
2025-11-24T12:29:37.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:29:37.393 [DEBUG] [Thread-190019] [transport.py] [_log()] starting thread (client mode): 0xd3153eb0
2025-11-24T12:29:37.393 [DEBUG] [Thread-190019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:29:37.413 [DEBUG] [Thread-190019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:29:37.413 [INFO] [Thread-190019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:29:37.417 [DEBUG] [Thread-190019] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:29:37.417 [DEBUG] [Thread-190019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:29:37.417 [DEBUG] [Thread-190019] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:29:37.417 [DEBUG] [Thread-190019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:29:37.417 [DEBUG] [Thread-190019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:29:37.417 [DEBUG] [Thread-190019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:29:37.417 [DEBUG] [Thread-190019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:29:37.417 [DEBUG] [Thread-190019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:29:37.417 [DEBUG] [Thread-190019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:29:37.418 [DEBUG] [Thread-190019] [transport.py] [_log()] client lang: <none>
2025-11-24T12:29:37.418 [DEBUG] [Thread-190019] [transport.py] [_log()] server lang: <none>
2025-11-24T12:29:37.418 [DEBUG] [Thread-190019] [transport.py] [_log()] kex follows: False
2025-11-24T12:29:37.418 [DEBUG] [Thread-190019] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:29:37.418 [DEBUG] [Thread-190019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:29:37.418 [DEBUG] [Thread-190019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:29:37.418 [DEBUG] [Thread-190019] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:29:37.418 [DEBUG] [Thread-190019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:29:37.418 [DEBUG] [Thread-190019] [transport.py] [_log()] Compression: none
2025-11-24T12:29:37.418 [DEBUG] [Thread-190019] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:29:37.437 [DEBUG] [Thread-190019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:29:37.438 [DEBUG] [Thread-190019] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:29:37.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:29:37.439 [DEBUG] [Thread-190019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:29:37.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:29:37.441 [DEBUG] [Thread-190019] [transport.py] [_log()] userauth is OK
2025-11-24T12:29:37.441 [DEBUG] [Thread-190019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:29:37.450 [DEBUG] [Thread-190019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:29:37.450 [DEBUG] [Thread-190019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:29:37.450 [DEBUG] [Thread-190019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:29:37.486 [INFO] [Thread-190019] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:29:37.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:29:38.082 [DEBUG] [Thread-190019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:29:38.091 [DEBUG] [Thread-190019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:29:38.092 [DEBUG] [Thread-190019] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:29:38.123 [DEBUG] [Thread-190019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:29:38.123 [DEBUG] [Thread-190019] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:29:38.125 [DEBUG] [Thread-190019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:29:38.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:29:38.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:29:38.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:29:38.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:29:38.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:29:38.149 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:29:38.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:29:38.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:29:38.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:29:38.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.436854 -999.00  +20.70  14.03     25   +0.30 1 1 1 1 1   888    0 19.13 -14.86 ----- 14.0 14.0 180.5 28.9 26.4 -25.5 25.3 -26.3 25.8 -24.1 26.6 -25.9
2025-11-24T12:29:38.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:29:38.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:29:38.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.436854
2025-11-24T12:29:38.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:29:38.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:29:38.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:29:38.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:29:38.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:29:38.152 [DEBUG] [Thread-190019] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:29:38.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:29:25', tmtdew=23.0, humidity=20.82, cloud=0.0, wind=25.48, temperature=20.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:29:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:29:38.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:29:38.248 [DEBUG] [Thread-190022] [transport.py] [_log()] starting thread (client mode): 0xd3152680
2025-11-24T12:29:38.248 [DEBUG] [Thread-190022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:29:38.263 [DEBUG] [Thread-190022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:29:38.263 [INFO] [Thread-190022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:29:38.273 [DEBUG] [Thread-190022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:29:38.273 [DEBUG] [Thread-190022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:29:38.273 [DEBUG] [Thread-190022] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] client lang: <none>
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] server lang: <none>
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] kex follows: False
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:29:38.274 [DEBUG] [Thread-190022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:29:38.275 [DEBUG] [Thread-190022] [transport.py] [_log()] Compression: none
2025-11-24T12:29:38.275 [DEBUG] [Thread-190022] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:29:38.337 [DEBUG] [Thread-190022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:29:38.338 [DEBUG] [Thread-190022] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:29:38.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:29:38.339 [DEBUG] [Thread-190022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:29:38.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:29:38.393 [DEBUG] [Thread-190022] [transport.py] [_log()] userauth is OK
2025-11-24T12:29:38.393 [DEBUG] [Thread-190022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:29:38.393 [DEBUG] [Thread-190022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:29:38.393 [DEBUG] [Thread-190022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:29:38.393 [DEBUG] [Thread-190022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:29:38.411 [INFO] [Thread-190022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:29:38.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:29:38.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:29:39.342 [DEBUG] [Thread-190022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:29:39.343 [DEBUG] [Thread-190022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:29:39.395 [DEBUG] [Thread-190022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:29:39.395 [DEBUG] [Thread-190022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:29:39.406 [DEBUG] [Thread-190022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:29:39.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:29:39.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-11-24T12:29:39.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-11-24T12:29:39.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:29:39.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:29:39.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:29:39.443 [DEBUG] [Thread-190022] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:29:46.399 [DEBUG] [Thread-190024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:29:48.964 [DEBUG] [Thread-190025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:29:51.763 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:29:51.765 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:30:01.450 [DEBUG] [Thread-190026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:30:09.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:30:09.476 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:30:09.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-11-24T12:30:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 29, 57), 23.25, 20.64, 0.0, 26.03, 20.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:30:10.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:29:57
2025-11-24T12:30:10.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:30:10.622 [DEBUG] [Thread-190027] [transport.py] [_log()] starting thread (client mode): 0xd07fbac0
2025-11-24T12:30:10.622 [DEBUG] [Thread-190027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:30:10.630 [DEBUG] [Thread-190027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:30:10.630 [INFO] [Thread-190027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:30:10.634 [DEBUG] [Thread-190027] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:30:10.634 [DEBUG] [Thread-190027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:30:10.634 [DEBUG] [Thread-190027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:30:10.634 [DEBUG] [Thread-190027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:30:10.634 [DEBUG] [Thread-190027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:30:10.634 [DEBUG] [Thread-190027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:30:10.634 [DEBUG] [Thread-190027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:30:10.634 [DEBUG] [Thread-190027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] client lang: <none>
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] server lang: <none>
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] kex follows: False
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] Compression: none
2025-11-24T12:30:10.635 [DEBUG] [Thread-190027] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:30:10.650 [DEBUG] [Thread-190027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:30:10.650 [DEBUG] [Thread-190027] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:30:10.650 [DEBUG] [Thread-190027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:30:10.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:30:10.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:30:10.691 [DEBUG] [Thread-190027] [transport.py] [_log()] userauth is OK
2025-11-24T12:30:10.691 [DEBUG] [Thread-190027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:30:10.691 [DEBUG] [Thread-190027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:30:10.691 [DEBUG] [Thread-190027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:30:10.691 [DEBUG] [Thread-190027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:30:10.706 [INFO] [Thread-190027] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:30:10.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:30:11.377 [DEBUG] [Thread-190027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:30:11.377 [DEBUG] [Thread-190027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:30:11.386 [DEBUG] [Thread-190027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:30:11.418 [DEBUG] [Thread-190027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:30:11.418 [DEBUG] [Thread-190027] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:30:11.421 [DEBUG] [Thread-190027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:30:11.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:30:11.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:30:11.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:30:11.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:30:11.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:30:11.442 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:30:11.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:30:11.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:30:11.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:30:11.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.437201 -999.00  +20.80  11.76     25   +0.40 1 1 1 1 1   888    0 18.93 -9.81 ----- 11.8 11.8 190.1 30.6 26.6 -26.1 25.5 -24.3 25.8 -22.9 26.7 -24.4
2025-11-24T12:30:11.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:30:11.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:30:11.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.437201
2025-11-24T12:30:11.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:30:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:30:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:30:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:30:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:30:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:29:57', tmtdew=23.25, humidity=20.64, cloud=0.0, wind=26.03, temperature=20.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:29:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:30:11.446 [DEBUG] [Thread-190027] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:30:11.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:30:11.532 [DEBUG] [Thread-190030] [transport.py] [_log()] starting thread (client mode): 0xd07f9330
2025-11-24T12:30:11.532 [DEBUG] [Thread-190030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:30:11.546 [DEBUG] [Thread-190030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:30:11.546 [INFO] [Thread-190030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:30:11.553 [DEBUG] [Thread-190030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:30:11.553 [DEBUG] [Thread-190030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:30:11.553 [DEBUG] [Thread-190030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:30:11.553 [DEBUG] [Thread-190030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:30:11.553 [DEBUG] [Thread-190030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:30:11.553 [DEBUG] [Thread-190030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:30:11.553 [DEBUG] [Thread-190030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] client lang: <none>
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] server lang: <none>
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] kex follows: False
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] Compression: none
2025-11-24T12:30:11.554 [DEBUG] [Thread-190030] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:30:11.612 [DEBUG] [Thread-190030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:30:11.612 [DEBUG] [Thread-190030] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:30:11.612 [DEBUG] [Thread-190030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:30:11.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:30:11.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:30:11.677 [DEBUG] [Thread-190030] [transport.py] [_log()] userauth is OK
2025-11-24T12:30:11.678 [DEBUG] [Thread-190030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:30:11.678 [DEBUG] [Thread-190030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:30:11.678 [DEBUG] [Thread-190030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:30:11.678 [DEBUG] [Thread-190030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:30:11.691 [INFO] [Thread-190030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:30:11.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:30:11.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:30:12.542 [DEBUG] [Thread-190030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:30:12.542 [DEBUG] [Thread-190030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:30:12.590 [DEBUG] [Thread-190030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:30:12.590 [DEBUG] [Thread-190030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:30:12.598 [DEBUG] [Thread-190030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:30:12.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:30:12.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:30:12.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-11-24T12:30:12.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:30:12.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:30:12.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:30:12.638 [DEBUG] [Thread-190030] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:30:16.488 [DEBUG] [Thread-190032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:30:31.572 [DEBUG] [Thread-190033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:30:42.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:30:42.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:30: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-11-24T12:30:43.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 30, 29), 23.17, 20.69, 0.0, 22.02, 19.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:30:43.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:30:29
2025-11-24T12:30:43.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:30:43.714 [DEBUG] [Thread-190034] [transport.py] [_log()] starting thread (client mode): 0xd07fbc10
2025-11-24T12:30:43.714 [DEBUG] [Thread-190034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:30:43.733 [DEBUG] [Thread-190034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:30:43.733 [INFO] [Thread-190034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] client lang: <none>
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] server lang: <none>
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] kex follows: False
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:30:43.736 [DEBUG] [Thread-190034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:30:43.737 [DEBUG] [Thread-190034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:30:43.737 [DEBUG] [Thread-190034] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:30:43.737 [DEBUG] [Thread-190034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:30:43.737 [DEBUG] [Thread-190034] [transport.py] [_log()] Compression: none
2025-11-24T12:30:43.737 [DEBUG] [Thread-190034] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:30:43.747 [DEBUG] [Thread-190034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:30:43.747 [DEBUG] [Thread-190034] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:30:43.747 [DEBUG] [Thread-190034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:30:43.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:30:43.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:30:43.750 [DEBUG] [Thread-190034] [transport.py] [_log()] userauth is OK
2025-11-24T12:30:43.751 [DEBUG] [Thread-190034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:30:43.751 [DEBUG] [Thread-190034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:30:43.751 [DEBUG] [Thread-190034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:30:43.751 [DEBUG] [Thread-190034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:30:43.776 [INFO] [Thread-190034] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:30:43.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:30:44.389 [DEBUG] [Thread-190034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:30:44.389 [DEBUG] [Thread-190034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:30:44.389 [DEBUG] [Thread-190034] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:30:44.430 [DEBUG] [Thread-190034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:30:44.430 [DEBUG] [Thread-190034] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:30:44.432 [DEBUG] [Thread-190034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:30:44.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:30:44.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:30:44.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:30:44.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:30:44.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:30:44.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:30:44.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:30:44.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:30:44.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:30:44.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.437896 -999.00  +20.60  13.05     25   +0.40 1 1 1 1 1   888    0 19.55 2.72 ----- 13.1 13.1 179.8 21.6 26.7 -25.0 25.5 -28.7 26.0 -23.3 26.8 -25.1
2025-11-24T12:30:44.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:30:44.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:30:44.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.437896
2025-11-24T12:30:44.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:30:44.445 [DEBUG] [Thread-190034] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:30:44.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:30:44.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:30:44.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:30:44.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:30:44.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:30:29', tmtdew=23.17, humidity=20.69, cloud=0.0, wind=22.02, temperature=19.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:30:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:30:44.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:30:44.531 [DEBUG] [Thread-190037] [transport.py] [_log()] starting thread (client mode): 0xd07f9e10
2025-11-24T12:30:44.531 [DEBUG] [Thread-190037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:30:44.546 [DEBUG] [Thread-190037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:30:44.546 [INFO] [Thread-190037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] client lang: <none>
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] server lang: <none>
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] kex follows: False
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:30:44.553 [DEBUG] [Thread-190037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:30:44.554 [DEBUG] [Thread-190037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:30:44.554 [DEBUG] [Thread-190037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:30:44.554 [DEBUG] [Thread-190037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:30:44.554 [DEBUG] [Thread-190037] [transport.py] [_log()] Compression: none
2025-11-24T12:30:44.554 [DEBUG] [Thread-190037] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:30:44.611 [DEBUG] [Thread-190037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:30:44.611 [DEBUG] [Thread-190037] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:30:44.611 [DEBUG] [Thread-190037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:30:44.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:30:44.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:30:44.668 [DEBUG] [Thread-190037] [transport.py] [_log()] userauth is OK
2025-11-24T12:30:44.668 [DEBUG] [Thread-190037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:30:44.668 [DEBUG] [Thread-190037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:30:44.668 [DEBUG] [Thread-190037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:30:44.668 [DEBUG] [Thread-190037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:30:44.681 [INFO] [Thread-190037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:30:44.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:30:44.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:30:45.539 [DEBUG] [Thread-190037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:30:45.539 [DEBUG] [Thread-190037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:30:45.587 [DEBUG] [Thread-190037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:30:45.587 [DEBUG] [Thread-190037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:30:45.595 [DEBUG] [Thread-190037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:30:45.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:30:45.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:30:45.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-11-24T12:30:45.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:30:45.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:30:45.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:30:45.634 [DEBUG] [Thread-190037] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:30:46.600 [DEBUG] [Thread-190039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:30:49.227 [DEBUG] [Thread-190040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:30:51.908 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:30:51.909 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:31:01.634 [DEBUG] [Thread-190041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:31:15.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:31:15.640 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:31:15.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:31:16.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 31, 2), 22.9, 21.07, 0.0, 20.73, 19.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:31:16.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:31:02
2025-11-24T12:31:16.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:31:16.665 [DEBUG] [Thread-190042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:31:16.744 [DEBUG] [Thread-190043] [transport.py] [_log()] starting thread (client mode): 0xd07fb850
2025-11-24T12:31:16.744 [DEBUG] [Thread-190043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:31:16.755 [DEBUG] [Thread-190043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:31:16.755 [INFO] [Thread-190043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:31:16.758 [DEBUG] [Thread-190043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:31:16.758 [DEBUG] [Thread-190043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:31:16.758 [DEBUG] [Thread-190043] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:31:16.758 [DEBUG] [Thread-190043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:31:16.758 [DEBUG] [Thread-190043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:31:16.758 [DEBUG] [Thread-190043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] client lang: <none>
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] server lang: <none>
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] kex follows: False
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] Compression: none
2025-11-24T12:31:16.759 [DEBUG] [Thread-190043] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:31:16.776 [DEBUG] [Thread-190043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:31:16.776 [DEBUG] [Thread-190043] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:31:16.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:31:16.778 [DEBUG] [Thread-190043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:31:16.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:31:16.780 [DEBUG] [Thread-190043] [transport.py] [_log()] userauth is OK
2025-11-24T12:31:16.780 [DEBUG] [Thread-190043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:31:16.780 [DEBUG] [Thread-190043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:31:16.780 [DEBUG] [Thread-190043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:31:16.780 [DEBUG] [Thread-190043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:31:16.803 [INFO] [Thread-190043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:31:16.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:31:17.426 [DEBUG] [Thread-190043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:31:17.426 [DEBUG] [Thread-190043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:31:17.427 [DEBUG] [Thread-190043] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:31:17.467 [DEBUG] [Thread-190043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:31:17.468 [DEBUG] [Thread-190043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:31:17.471 [DEBUG] [Thread-190043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:31:17.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:31:17.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:31:17.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:31:17.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:31:17.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:31:17.496 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:31:17.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:31:17.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:31:17.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:31:17.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.438243 -999.00  +20.60  20.20     26   +0.50 1 1 1 1 1   888    0 19.46 7.98 ----- 20.2 20.2 181.6 23.8 26.8 -25.8 25.5 -30.3 26.0 -25.1 26.9 -24.7
2025-11-24T12:31:17.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:31:17.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:31:17.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.438243
2025-11-24T12:31:17.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:31:17.499 [DEBUG] [Thread-190043] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:31:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:31:17.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:31:17.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:31:17.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:31:17.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:31:02', tmtdew=22.9, humidity=21.07, cloud=0.0, wind=20.73, temperature=19.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:31:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:31:17.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:31:17.602 [DEBUG] [Thread-190046] [transport.py] [_log()] starting thread (client mode): 0xd07fa410
2025-11-24T12:31:17.602 [DEBUG] [Thread-190046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:31:17.616 [DEBUG] [Thread-190046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:31:17.617 [INFO] [Thread-190046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] client lang: <none>
2025-11-24T12:31:17.624 [DEBUG] [Thread-190046] [transport.py] [_log()] server lang: <none>
2025-11-24T12:31:17.625 [DEBUG] [Thread-190046] [transport.py] [_log()] kex follows: False
2025-11-24T12:31:17.625 [DEBUG] [Thread-190046] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:31:17.625 [DEBUG] [Thread-190046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:31:17.625 [DEBUG] [Thread-190046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:31:17.625 [DEBUG] [Thread-190046] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:31:17.625 [DEBUG] [Thread-190046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:31:17.625 [DEBUG] [Thread-190046] [transport.py] [_log()] Compression: none
2025-11-24T12:31:17.625 [DEBUG] [Thread-190046] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:31:17.685 [DEBUG] [Thread-190046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:31:17.686 [DEBUG] [Thread-190046] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:31:17.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:31:17.688 [DEBUG] [Thread-190046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:31:17.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:31:17.741 [DEBUG] [Thread-190046] [transport.py] [_log()] userauth is OK
2025-11-24T12:31:17.741 [DEBUG] [Thread-190046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:31:17.741 [DEBUG] [Thread-190046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:31:17.741 [DEBUG] [Thread-190046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:31:17.741 [DEBUG] [Thread-190046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:31:17.775 [INFO] [Thread-190046] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:31:17.775 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:31:17.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:31:18.597 [DEBUG] [Thread-190046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:31:18.597 [DEBUG] [Thread-190046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:31:18.650 [DEBUG] [Thread-190046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:31:18.651 [DEBUG] [Thread-190046] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:31:18.660 [DEBUG] [Thread-190046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:31:18.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:31:18.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:31:18.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:31:18.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:31:18.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:31:18.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:31:18.697 [DEBUG] [Thread-190046] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:31:31.693 [DEBUG] [Thread-190048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:31:46.748 [DEBUG] [Thread-190049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:31:48.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:31:48.715 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:31:48.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:31:49.419 [DEBUG] [Thread-190050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:31:49.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 31, 34), 22.72, 21.3, 0.0, 18.56, 19.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:31:49.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:31:34
2025-11-24T12:31:49.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:31:49.831 [DEBUG] [Thread-190051] [transport.py] [_log()] starting thread (client mode): 0xd07f8be0
2025-11-24T12:31:49.831 [DEBUG] [Thread-190051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:31:49.845 [DEBUG] [Thread-190051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:31:49.845 [INFO] [Thread-190051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] client lang: <none>
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] server lang: <none>
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] kex follows: False
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:31:49.849 [DEBUG] [Thread-190051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:31:49.850 [DEBUG] [Thread-190051] [transport.py] [_log()] Compression: none
2025-11-24T12:31:49.850 [DEBUG] [Thread-190051] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:31:49.867 [DEBUG] [Thread-190051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:31:49.867 [DEBUG] [Thread-190051] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:31:49.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:31:49.868 [DEBUG] [Thread-190051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:31:49.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:31:49.870 [DEBUG] [Thread-190051] [transport.py] [_log()] userauth is OK
2025-11-24T12:31:49.870 [DEBUG] [Thread-190051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:31:49.871 [DEBUG] [Thread-190051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:31:49.871 [DEBUG] [Thread-190051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:31:49.871 [DEBUG] [Thread-190051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:31:49.890 [INFO] [Thread-190051] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:31:49.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:31:50.532 [DEBUG] [Thread-190051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:31:50.532 [DEBUG] [Thread-190051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:31:50.532 [DEBUG] [Thread-190051] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:31:50.573 [DEBUG] [Thread-190051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:31:50.573 [DEBUG] [Thread-190051] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:31:50.576 [DEBUG] [Thread-190051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:31:50.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:31:50.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:31:50.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:31:50.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:31:50.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:31:50.602 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:31:50.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:31:50.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:31:50.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:31:50.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.438590 -999.00  +20.30  27.36     26   +0.60 1 1 1 1 1   888    0 19.73 10.83 ----- 27.4 27.4 187.4 30.8 26.7 -26.5 25.4 -29.1 25.9 -24.9 26.9 -25.6
2025-11-24T12:31:50.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:31:50.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:31:50.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.438590
2025-11-24T12:31:50.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:31:50.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:31:50.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:31:50.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:31:50.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:31:50.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:31:34', tmtdew=22.72, humidity=21.3, cloud=0.0, wind=18.56, temperature=19.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:31:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:31:50.604 [DEBUG] [Thread-190051] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:31:50.678 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:31:50.690 [DEBUG] [Thread-190054] [transport.py] [_log()] starting thread (client mode): 0xd07eb850
2025-11-24T12:31:50.690 [DEBUG] [Thread-190054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:31:50.705 [DEBUG] [Thread-190054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:31:50.706 [INFO] [Thread-190054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] client lang: <none>
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] server lang: <none>
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] kex follows: False
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:31:50.713 [DEBUG] [Thread-190054] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:31:50.714 [DEBUG] [Thread-190054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:31:50.714 [DEBUG] [Thread-190054] [transport.py] [_log()] Compression: none
2025-11-24T12:31:50.714 [DEBUG] [Thread-190054] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:31:50.771 [DEBUG] [Thread-190054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:31:50.771 [DEBUG] [Thread-190054] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:31:50.771 [DEBUG] [Thread-190054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:31:50.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:31:50.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:31:50.828 [DEBUG] [Thread-190054] [transport.py] [_log()] userauth is OK
2025-11-24T12:31:50.828 [DEBUG] [Thread-190054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:31:50.828 [DEBUG] [Thread-190054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:31:50.828 [DEBUG] [Thread-190054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:31:50.828 [DEBUG] [Thread-190054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:31:50.844 [INFO] [Thread-190054] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:31:50.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:31:50.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:31:51.727 [DEBUG] [Thread-190054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:31:51.727 [DEBUG] [Thread-190054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:31:51.775 [DEBUG] [Thread-190054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:31:51.775 [DEBUG] [Thread-190054] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:31:51.784 [DEBUG] [Thread-190054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:31:51.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:31:51.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:31:51.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-11-24T12:31:51.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:31:51.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:31:51.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:31:51.819 [DEBUG] [Thread-190054] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:31:52.050 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:31:52.052 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:32:01.780 [DEBUG] [Thread-190056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:32:16.823 [DEBUG] [Thread-190057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:32:21.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:32:21.837 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:32:21.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-11-24T12:32:22.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 32, 7), 22.45, 21.67, 0.0, 18.33, 19.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:32:22.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:32:07
2025-11-24T12:32:22.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:32:22.883 [DEBUG] [Thread-190058] [transport.py] [_log()] starting thread (client mode): 0xd07ebb80
2025-11-24T12:32:22.883 [DEBUG] [Thread-190058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:32:22.899 [DEBUG] [Thread-190058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:32:22.899 [INFO] [Thread-190058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] client lang: <none>
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] server lang: <none>
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] kex follows: False
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:32:22.901 [DEBUG] [Thread-190058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:32:22.902 [DEBUG] [Thread-190058] [transport.py] [_log()] Compression: none
2025-11-24T12:32:22.902 [DEBUG] [Thread-190058] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:32:22.911 [DEBUG] [Thread-190058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:32:22.911 [DEBUG] [Thread-190058] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:32:22.912 [DEBUG] [Thread-190058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:32:22.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:32:22.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:32:22.912 [DEBUG] [Thread-190058] [transport.py] [_log()] userauth is OK
2025-11-24T12:32:22.912 [DEBUG] [Thread-190058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:32:22.912 [DEBUG] [Thread-190058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:32:22.912 [DEBUG] [Thread-190058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:32:22.912 [DEBUG] [Thread-190058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:32:22.921 [INFO] [Thread-190058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:32:22.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:32:23.530 [DEBUG] [Thread-190058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:32:23.530 [DEBUG] [Thread-190058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:32:23.531 [DEBUG] [Thread-190058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:32:23.570 [DEBUG] [Thread-190058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:32:23.571 [DEBUG] [Thread-190058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:32:23.576 [DEBUG] [Thread-190058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:32:23.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:32:23.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:32:23.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:32:23.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:32:23.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:32:23.611 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:32:23.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:32:23.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:32:23.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:32:23.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.438937 -999.00  +20.30   9.02     27   +0.70 1 1 1 1 1   888    0 20.10 11.92 ----- 9.0 9.0 198.3 20.9 26.7 -25.6 25.6 -24.2 25.9 -23.7 26.9 -25.6
2025-11-24T12:32:23.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:32:23.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:32:23.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.438937
2025-11-24T12:32:23.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:32:23.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:32:23.614 [DEBUG] [Thread-190058] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:32:23.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:32:23.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:32:23.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:32:23.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:32:07', tmtdew=22.45, humidity=21.67, cloud=0.0, wind=18.33, temperature=19.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:32:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:32:23.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:32:23.719 [DEBUG] [Thread-190061] [transport.py] [_log()] starting thread (client mode): 0xd07e8a90
2025-11-24T12:32:23.719 [DEBUG] [Thread-190061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:32:23.733 [DEBUG] [Thread-190061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:32:23.733 [INFO] [Thread-190061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:32:23.743 [DEBUG] [Thread-190061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:32:23.743 [DEBUG] [Thread-190061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:32:23.743 [DEBUG] [Thread-190061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:32:23.743 [DEBUG] [Thread-190061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:32:23.743 [DEBUG] [Thread-190061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] client lang: <none>
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] server lang: <none>
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] kex follows: False
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] Compression: none
2025-11-24T12:32:23.744 [DEBUG] [Thread-190061] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:32:23.805 [DEBUG] [Thread-190061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:32:23.806 [DEBUG] [Thread-190061] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:32:23.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:32:23.807 [DEBUG] [Thread-190061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:32:23.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:32:23.865 [DEBUG] [Thread-190061] [transport.py] [_log()] userauth is OK
2025-11-24T12:32:23.865 [DEBUG] [Thread-190061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:32:23.866 [DEBUG] [Thread-190061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:32:23.866 [DEBUG] [Thread-190061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:32:23.866 [DEBUG] [Thread-190061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:32:23.885 [INFO] [Thread-190061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:32:23.886 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:32:23.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:32:24.717 [DEBUG] [Thread-190061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:32:24.717 [DEBUG] [Thread-190061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:32:24.765 [DEBUG] [Thread-190061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:32:24.765 [DEBUG] [Thread-190061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:32:24.774 [DEBUG] [Thread-190061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:32:24.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:32:24.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-11-24T12:32:24.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-11-24T12:32:24.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:32:24.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:32:24.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:32:24.817 [DEBUG] [Thread-190061] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:32:31.859 [DEBUG] [Thread-190063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:32:46.906 [DEBUG] [Thread-190064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:32:49.541 [DEBUG] [Thread-190065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:32:52.193 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:32:52.194 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:32:54.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:32:54.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:32:54.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-11-24T12:32:55.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 32, 39), 22.08, 22.58, 0.0, 23.5, 19.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:32:55.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:32:39
2025-11-24T12:32:55.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:32:55.827 [DEBUG] [Thread-190066] [transport.py] [_log()] starting thread (client mode): 0xd07fa950
2025-11-24T12:32:55.827 [DEBUG] [Thread-190066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:32:55.848 [DEBUG] [Thread-190066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:32:55.848 [INFO] [Thread-190066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:32:55.851 [DEBUG] [Thread-190066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:32:55.851 [DEBUG] [Thread-190066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:32:55.851 [DEBUG] [Thread-190066] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:32:55.851 [DEBUG] [Thread-190066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:32:55.851 [DEBUG] [Thread-190066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:32:55.851 [DEBUG] [Thread-190066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] client lang: <none>
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] server lang: <none>
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] kex follows: False
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] Compression: none
2025-11-24T12:32:55.852 [DEBUG] [Thread-190066] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:32:55.872 [DEBUG] [Thread-190066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:32:55.873 [DEBUG] [Thread-190066] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:32:55.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:32:55.874 [DEBUG] [Thread-190066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:32:55.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:32:55.876 [DEBUG] [Thread-190066] [transport.py] [_log()] userauth is OK
2025-11-24T12:32:55.877 [DEBUG] [Thread-190066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:32:55.877 [DEBUG] [Thread-190066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:32:55.877 [DEBUG] [Thread-190066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:32:55.877 [DEBUG] [Thread-190066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:32:55.912 [INFO] [Thread-190066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:32:55.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:32:56.697 [DEBUG] [Thread-190066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:32:56.698 [DEBUG] [Thread-190066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:32:56.698 [DEBUG] [Thread-190066] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:32:56.739 [DEBUG] [Thread-190066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:32:56.739 [DEBUG] [Thread-190066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:32:56.742 [DEBUG] [Thread-190066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:32:56.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:32:56.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:32:56.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:32:56.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:32:56.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:32:56.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:32:56.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:32:56.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:32:56.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:32:56.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.438937 -999.00  +20.30   9.02     27   +0.70 1 1 1 1 1   888    0 20.10 11.92 ----- 9.0 9.0 198.3 20.9 26.7 -25.6 25.6 -24.2 25.9 -23.7 26.9 -25.6
2025-11-24T12:32:56.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:32:56.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:32:56.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.438937
2025-11-24T12:32:56.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:32:56.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:32:56.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:32:56.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:32:56.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:32:56.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:32:39', tmtdew=22.08, humidity=22.58, cloud=0.0, wind=23.5, temperature=19.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:32:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:32:56.757 [DEBUG] [Thread-190066] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:32:56.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:32:56.842 [DEBUG] [Thread-190069] [transport.py] [_log()] starting thread (client mode): 0xd3152200
2025-11-24T12:32:56.842 [DEBUG] [Thread-190069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:32:56.857 [DEBUG] [Thread-190069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:32:56.858 [INFO] [Thread-190069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] client lang: <none>
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] server lang: <none>
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] kex follows: False
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:32:56.866 [DEBUG] [Thread-190069] [transport.py] [_log()] Compression: none
2025-11-24T12:32:56.867 [DEBUG] [Thread-190069] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:32:56.924 [DEBUG] [Thread-190069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:32:56.924 [DEBUG] [Thread-190069] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:32:56.924 [DEBUG] [Thread-190069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:32:56.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:32:56.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:32:56.981 [DEBUG] [Thread-190069] [transport.py] [_log()] userauth is OK
2025-11-24T12:32:56.981 [DEBUG] [Thread-190069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:32:56.981 [DEBUG] [Thread-190069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:32:56.981 [DEBUG] [Thread-190069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:32:56.981 [DEBUG] [Thread-190069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:32:56.994 [INFO] [Thread-190069] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:32:56.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:32:56.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:32:57.839 [DEBUG] [Thread-190069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:32:57.840 [DEBUG] [Thread-190069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:32:57.888 [DEBUG] [Thread-190069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:32:57.888 [DEBUG] [Thread-190069] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:32:57.897 [DEBUG] [Thread-190069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:32:57.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:32:57.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-11-24T12:32:57.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-11-24T12:32:57.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:32:57.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:32:57.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:32:57.937 [DEBUG] [Thread-190069] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:33:01.936 [DEBUG] [Thread-190071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:33:16.989 [DEBUG] [Thread-190072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:33:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:33:27.931 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:33:27.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-11-24T12:33:28.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 33, 11), 22.32, 22.25, 0.0, 27.1, 19.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:33:28.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:33:11
2025-11-24T12:33:28.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:33:29.043 [DEBUG] [Thread-190073] [transport.py] [_log()] starting thread (client mode): 0xd07f9fc0
2025-11-24T12:33:29.043 [DEBUG] [Thread-190073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:33:29.060 [DEBUG] [Thread-190073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:33:29.061 [INFO] [Thread-190073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:33:29.071 [DEBUG] [Thread-190073] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:33:29.071 [DEBUG] [Thread-190073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:33:29.071 [DEBUG] [Thread-190073] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:33:29.071 [DEBUG] [Thread-190073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:33:29.071 [DEBUG] [Thread-190073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:33:29.072 [DEBUG] [Thread-190073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:33:29.072 [DEBUG] [Thread-190073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:33:29.072 [DEBUG] [Thread-190073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:33:29.072 [DEBUG] [Thread-190073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:33:29.072 [DEBUG] [Thread-190073] [transport.py] [_log()] client lang: <none>
2025-11-24T12:33:29.072 [DEBUG] [Thread-190073] [transport.py] [_log()] server lang: <none>
2025-11-24T12:33:29.072 [DEBUG] [Thread-190073] [transport.py] [_log()] kex follows: False
2025-11-24T12:33:29.072 [DEBUG] [Thread-190073] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:33:29.072 [DEBUG] [Thread-190073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:33:29.073 [DEBUG] [Thread-190073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:33:29.073 [DEBUG] [Thread-190073] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:33:29.073 [DEBUG] [Thread-190073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:33:29.073 [DEBUG] [Thread-190073] [transport.py] [_log()] Compression: none
2025-11-24T12:33:29.073 [DEBUG] [Thread-190073] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:33:29.092 [DEBUG] [Thread-190073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:33:29.093 [DEBUG] [Thread-190073] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:33:29.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:33:29.094 [DEBUG] [Thread-190073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:33:29.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:33:29.097 [DEBUG] [Thread-190073] [transport.py] [_log()] userauth is OK
2025-11-24T12:33:29.097 [DEBUG] [Thread-190073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:33:29.097 [DEBUG] [Thread-190073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:33:29.097 [DEBUG] [Thread-190073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:33:29.097 [DEBUG] [Thread-190073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:33:29.124 [INFO] [Thread-190073] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:33:29.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:33:29.767 [DEBUG] [Thread-190073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:33:29.767 [DEBUG] [Thread-190073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:33:29.768 [DEBUG] [Thread-190073] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:33:29.808 [DEBUG] [Thread-190073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:33:29.808 [DEBUG] [Thread-190073] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:33:29.811 [DEBUG] [Thread-190073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:33:29.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:33:29.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:33:29.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:33:29.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:33:29.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:33:29.845 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:33:29.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:33:29.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:33:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:33:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.439284 -999.00  +20.60  25.41     26   +0.70 1 1 1 1 1   888    0 19.54 13.50 ----- 25.4 25.4 155.6 31.5 26.8 -26.3 25.7 -25.7 26.0 -26.1 27.0 -25.3
2025-11-24T12:33:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:33:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:33:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.439284
2025-11-24T12:33:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:33:29.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:33:29.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:33:29.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:33:29.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:33:29.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:33:11', tmtdew=22.32, humidity=22.25, cloud=0.0, wind=27.1, temperature=19.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:32:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:33:29.848 [DEBUG] [Thread-190073] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:33:29.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:33:29.944 [DEBUG] [Thread-190076] [transport.py] [_log()] starting thread (client mode): 0xd07fb730
2025-11-24T12:33:29.944 [DEBUG] [Thread-190076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:33:29.958 [DEBUG] [Thread-190076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:33:29.958 [INFO] [Thread-190076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] client lang: <none>
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] server lang: <none>
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] kex follows: False
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:33:29.966 [DEBUG] [Thread-190076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:33:29.967 [DEBUG] [Thread-190076] [transport.py] [_log()] Compression: none
2025-11-24T12:33:29.967 [DEBUG] [Thread-190076] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:33:30.026 [DEBUG] [Thread-190076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:33:30.026 [DEBUG] [Thread-190076] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:33:30.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:33:30.027 [DEBUG] [Thread-190076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:33:30.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:33:30.084 [DEBUG] [Thread-190076] [transport.py] [_log()] userauth is OK
2025-11-24T12:33:30.084 [DEBUG] [Thread-190076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:33:30.084 [DEBUG] [Thread-190076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:33:30.084 [DEBUG] [Thread-190076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:33:30.084 [DEBUG] [Thread-190076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:33:30.099 [INFO] [Thread-190076] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:33:30.099 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:33:30.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:33:30.961 [DEBUG] [Thread-190076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:33:30.961 [DEBUG] [Thread-190076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:33:31.009 [DEBUG] [Thread-190076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:33:31.009 [DEBUG] [Thread-190076] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:33:31.017 [DEBUG] [Thread-190076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:33:31.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:33:31.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-11-24T12:33:31.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:33:31.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:33:31.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:33:31.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:33:31.049 [DEBUG] [Thread-190076] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:33:32.021 [DEBUG] [Thread-190078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:33:47.076 [DEBUG] [Thread-190079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:33:49.906 [DEBUG] [Thread-190080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:33:52.335 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:33:52.336 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:34:01.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:34:01.071 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:34:01.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-11-24T12:34:01.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 33, 44), 22.42, 21.78, 0.0, 35.38, 19.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:34:01.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:33:44
2025-11-24T12:34:02.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:34:02.108 [DEBUG] [Thread-190081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:34:02.253 [DEBUG] [Thread-190082] [transport.py] [_log()] starting thread (client mode): 0xd07ebe50
2025-11-24T12:34:02.254 [DEBUG] [Thread-190082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:34:02.275 [DEBUG] [Thread-190082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:34:02.275 [INFO] [Thread-190082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] client lang: <none>
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] server lang: <none>
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] kex follows: False
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] Compression: none
2025-11-24T12:34:02.278 [DEBUG] [Thread-190082] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:34:02.294 [DEBUG] [Thread-190082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:34:02.294 [DEBUG] [Thread-190082] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:34:02.294 [DEBUG] [Thread-190082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:34:02.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:34:02.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:34:02.295 [DEBUG] [Thread-190082] [transport.py] [_log()] userauth is OK
2025-11-24T12:34:02.295 [DEBUG] [Thread-190082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:34:02.295 [DEBUG] [Thread-190082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:34:02.295 [DEBUG] [Thread-190082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:34:02.295 [DEBUG] [Thread-190082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:34:02.304 [INFO] [Thread-190082] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:34:02.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:34:03.084 [DEBUG] [Thread-190082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:34:03.084 [DEBUG] [Thread-190082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:34:03.084 [DEBUG] [Thread-190082] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:34:03.125 [DEBUG] [Thread-190082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:34:03.125 [DEBUG] [Thread-190082] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:34:03.128 [DEBUG] [Thread-190082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:34:03.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:34:03.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:34:03.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:34:03.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:34:03.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:34:03.145 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:34:03.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:34:03.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:34:03.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:34:03.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.439632 -999.00  +20.20  29.82     27   +0.60 1 1 1 1 1   888    0 19.98 15.39 ----- 29.8 29.8 165.2 36.3 26.6 -25.8 25.5 -25.6 25.8 -25.5 26.8 -27.4
2025-11-24T12:34:03.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:34:03.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:34:03.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.439632
2025-11-24T12:34:03.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:34:03.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:34:03.150 [DEBUG] [Thread-190082] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:34:03.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:34:03.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:34:03.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:34:03.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:33:44', tmtdew=22.42, humidity=21.78, cloud=0.0, wind=35.38, temperature=19.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:33:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:34:03.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:34:03.236 [DEBUG] [Thread-190085] [transport.py] [_log()] starting thread (client mode): 0xd07f8190
2025-11-24T12:34:03.237 [DEBUG] [Thread-190085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:34:03.251 [DEBUG] [Thread-190085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:34:03.251 [INFO] [Thread-190085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] client lang: <none>
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] server lang: <none>
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] kex follows: False
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:34:03.259 [DEBUG] [Thread-190085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:34:03.260 [DEBUG] [Thread-190085] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:34:03.260 [DEBUG] [Thread-190085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:34:03.260 [DEBUG] [Thread-190085] [transport.py] [_log()] Compression: none
2025-11-24T12:34:03.260 [DEBUG] [Thread-190085] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:34:03.316 [DEBUG] [Thread-190085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:34:03.317 [DEBUG] [Thread-190085] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:34:03.317 [DEBUG] [Thread-190085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:34:03.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:34:03.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:34:03.377 [DEBUG] [Thread-190085] [transport.py] [_log()] userauth is OK
2025-11-24T12:34:03.378 [DEBUG] [Thread-190085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:34:03.378 [DEBUG] [Thread-190085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:34:03.378 [DEBUG] [Thread-190085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:34:03.378 [DEBUG] [Thread-190085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:34:03.396 [INFO] [Thread-190085] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:34:03.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:34:03.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:34:04.256 [DEBUG] [Thread-190085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:34:04.257 [DEBUG] [Thread-190085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:34:04.305 [DEBUG] [Thread-190085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:34:04.305 [DEBUG] [Thread-190085] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:34:04.314 [DEBUG] [Thread-190085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:34:04.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:34:04.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-11-24T12:34:04.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-11-24T12:34:04.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:34:04.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:34:04.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:34:04.358 [DEBUG] [Thread-190085] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:34:17.140 [DEBUG] [Thread-190087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:34:32.198 [DEBUG] [Thread-190088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:34:34.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:34:34.380 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:34:34.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-11-24T12:34:35.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 34, 16), 22.52, 21.65, 0.0, 33.82, 19.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:34:35.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:34:16
2025-11-24T12:34:35.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:34:35.544 [DEBUG] [Thread-190089] [transport.py] [_log()] starting thread (client mode): 0xd07ea170
2025-11-24T12:34:35.545 [DEBUG] [Thread-190089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:34:35.564 [DEBUG] [Thread-190089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:34:35.564 [INFO] [Thread-190089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:34:35.567 [DEBUG] [Thread-190089] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:34:35.567 [DEBUG] [Thread-190089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:34:35.567 [DEBUG] [Thread-190089] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] client lang: <none>
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] server lang: <none>
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] kex follows: False
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] Compression: none
2025-11-24T12:34:35.568 [DEBUG] [Thread-190089] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:34:35.582 [DEBUG] [Thread-190089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:34:35.583 [DEBUG] [Thread-190089] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:34:35.583 [DEBUG] [Thread-190089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:34:35.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:34:35.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:34:35.584 [DEBUG] [Thread-190089] [transport.py] [_log()] userauth is OK
2025-11-24T12:34:35.584 [DEBUG] [Thread-190089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:34:35.584 [DEBUG] [Thread-190089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:34:35.584 [DEBUG] [Thread-190089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:34:35.584 [DEBUG] [Thread-190089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:34:35.593 [INFO] [Thread-190089] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:34:35.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:34:36.214 [DEBUG] [Thread-190089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:34:36.214 [DEBUG] [Thread-190089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:34:36.214 [DEBUG] [Thread-190089] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:34:36.254 [DEBUG] [Thread-190089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:34:36.254 [DEBUG] [Thread-190089] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:34:36.256 [DEBUG] [Thread-190089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:34:36.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:34:36.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:34:36.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:34:36.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:34:36.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:34:36.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:34:36.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:34:36.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:34:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:34:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.439979 -999.00  +20.00  27.75     27   +0.60 1 1 1 1 1   888    0 20.19 11.77 ----- 27.8 27.8 164.2 37.2 26.4 -26.7 25.4 -25.5 25.6 -26.4 26.8 -27.3
2025-11-24T12:34:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:34:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:34:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.439979
2025-11-24T12:34:36.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:34:36.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:34:36.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:34:36.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:34:36.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:34:36.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:34:16', tmtdew=22.52, humidity=21.65, cloud=0.0, wind=33.82, temperature=19.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:33:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:34:36.277 [DEBUG] [Thread-190089] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:34:36.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:34:36.364 [DEBUG] [Thread-190092] [transport.py] [_log()] starting thread (client mode): 0xd0700040
2025-11-24T12:34:36.364 [DEBUG] [Thread-190092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:34:36.379 [DEBUG] [Thread-190092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:34:36.379 [INFO] [Thread-190092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:34:36.386 [DEBUG] [Thread-190092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:34:36.386 [DEBUG] [Thread-190092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:34:36.386 [DEBUG] [Thread-190092] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:34:36.386 [DEBUG] [Thread-190092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] client lang: <none>
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] server lang: <none>
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] kex follows: False
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] Compression: none
2025-11-24T12:34:36.387 [DEBUG] [Thread-190092] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:34:36.443 [DEBUG] [Thread-190092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:34:36.444 [DEBUG] [Thread-190092] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:34:36.444 [DEBUG] [Thread-190092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:34:36.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:34:36.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:34:36.500 [DEBUG] [Thread-190092] [transport.py] [_log()] userauth is OK
2025-11-24T12:34:36.500 [DEBUG] [Thread-190092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:34:36.501 [DEBUG] [Thread-190092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:34:36.501 [DEBUG] [Thread-190092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:34:36.501 [DEBUG] [Thread-190092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:34:36.514 [INFO] [Thread-190092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:34:36.514 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:34:36.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:34:37.366 [DEBUG] [Thread-190092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:34:37.366 [DEBUG] [Thread-190092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:34:37.414 [DEBUG] [Thread-190092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:34:37.414 [DEBUG] [Thread-190092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:34:37.422 [DEBUG] [Thread-190092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:34:37.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:34:37.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-11-24T12:34:37.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-11-24T12:34:37.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:34:37.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:34:37.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:34:37.453 [DEBUG] [Thread-190092] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:34:47.231 [DEBUG] [Thread-190094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:34:49.961 [DEBUG] [Thread-190095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:34:52.477 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:34:52.481 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:35:02.291 [DEBUG] [Thread-190096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:35:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:35:07.476 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:35:07.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-11-24T12:35:08.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 34, 49), 21.72, 23.11, 0.0, 19.34, 19.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:35:08.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:34:49
2025-11-24T12:35:08.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:35:08.594 [DEBUG] [Thread-190097] [transport.py] [_log()] starting thread (client mode): 0xd31502b0
2025-11-24T12:35:08.594 [DEBUG] [Thread-190097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:35:08.614 [DEBUG] [Thread-190097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:35:08.614 [INFO] [Thread-190097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:35:08.617 [DEBUG] [Thread-190097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:35:08.617 [DEBUG] [Thread-190097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:35:08.617 [DEBUG] [Thread-190097] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:35:08.617 [DEBUG] [Thread-190097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] client lang: <none>
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] server lang: <none>
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] kex follows: False
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:35:08.618 [DEBUG] [Thread-190097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:35:08.619 [DEBUG] [Thread-190097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:35:08.619 [DEBUG] [Thread-190097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:35:08.619 [DEBUG] [Thread-190097] [transport.py] [_log()] Compression: none
2025-11-24T12:35:08.619 [DEBUG] [Thread-190097] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:35:08.636 [DEBUG] [Thread-190097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:35:08.637 [DEBUG] [Thread-190097] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:35:08.638 [DEBUG] [Thread-190097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:35:08.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:35:08.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:35:08.640 [DEBUG] [Thread-190097] [transport.py] [_log()] userauth is OK
2025-11-24T12:35:08.640 [DEBUG] [Thread-190097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:35:08.641 [DEBUG] [Thread-190097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:35:08.641 [DEBUG] [Thread-190097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:35:08.641 [DEBUG] [Thread-190097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:35:08.658 [INFO] [Thread-190097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:35:08.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:35:12.574 [DEBUG] [Thread-190097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:35:12.574 [DEBUG] [Thread-190097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:35:12.574 [DEBUG] [Thread-190097] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:35:12.615 [DEBUG] [Thread-190097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:35:12.615 [DEBUG] [Thread-190097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:35:12.618 [DEBUG] [Thread-190097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:35:12.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:35:12.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:35:12.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:35:12.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:35:12.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:35:12.646 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:35:12.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:35:12.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:35:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:35:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.441020 -999.00  +19.60  15.00     28   +0.90 1 1 1 1 1   888    0 19.65 -2.46 ----- 15.0 15.0 150.8 18.2 26.6 -24.7 25.6 -23.9 25.9 -23.0 26.9 -24.5
2025-11-24T12:35:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:35:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:35:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.441020
2025-11-24T12:35:12.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:35:12.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:35:12.649 [DEBUG] [Thread-190097] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:35:12.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:35:12.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:35:12.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:35:12.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:34:49', tmtdew=21.72, humidity=23.11, cloud=0.0, wind=19.34, temperature=19.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:35:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:35:12.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:35:12.745 [DEBUG] [Thread-190100] [transport.py] [_log()] starting thread (client mode): 0xd07f9690
2025-11-24T12:35:12.745 [DEBUG] [Thread-190100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:35:12.759 [DEBUG] [Thread-190100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:35:12.759 [INFO] [Thread-190100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:35:12.766 [DEBUG] [Thread-190100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:35:12.766 [DEBUG] [Thread-190100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:35:12.766 [DEBUG] [Thread-190100] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:35:12.766 [DEBUG] [Thread-190100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:35:12.766 [DEBUG] [Thread-190100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:35:12.767 [DEBUG] [Thread-190100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:35:12.767 [DEBUG] [Thread-190100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:35:12.767 [DEBUG] [Thread-190100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:35:12.767 [DEBUG] [Thread-190100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:35:12.767 [DEBUG] [Thread-190100] [transport.py] [_log()] client lang: <none>
2025-11-24T12:35:12.767 [DEBUG] [Thread-190100] [transport.py] [_log()] server lang: <none>
2025-11-24T12:35:12.767 [DEBUG] [Thread-190100] [transport.py] [_log()] kex follows: False
2025-11-24T12:35:12.767 [DEBUG] [Thread-190100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:35:12.767 [DEBUG] [Thread-190100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:35:12.768 [DEBUG] [Thread-190100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:35:12.768 [DEBUG] [Thread-190100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:35:12.768 [DEBUG] [Thread-190100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:35:12.768 [DEBUG] [Thread-190100] [transport.py] [_log()] Compression: none
2025-11-24T12:35:12.768 [DEBUG] [Thread-190100] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:35:12.824 [DEBUG] [Thread-190100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:35:12.825 [DEBUG] [Thread-190100] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:35:12.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:35:12.826 [DEBUG] [Thread-190100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:35:12.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:35:12.880 [DEBUG] [Thread-190100] [transport.py] [_log()] userauth is OK
2025-11-24T12:35:12.880 [DEBUG] [Thread-190100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:35:12.881 [DEBUG] [Thread-190100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:35:12.881 [DEBUG] [Thread-190100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:35:12.881 [DEBUG] [Thread-190100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:35:12.900 [INFO] [Thread-190100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:35:12.900 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:35:12.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:35:13.752 [DEBUG] [Thread-190100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:35:13.752 [DEBUG] [Thread-190100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:35:13.800 [DEBUG] [Thread-190100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:35:13.800 [DEBUG] [Thread-190100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:35:13.808 [DEBUG] [Thread-190100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:35:13.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:35:13.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-11-24T12:35:13.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-11-24T12:35:13.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:35:13.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:35:13.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:35:13.840 [DEBUG] [Thread-190100] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:35:17.320 [DEBUG] [Thread-190102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:35:32.363 [DEBUG] [Thread-190103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:35:43.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:35:43.851 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:35:43.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-11-24T12:35:44.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 35, 21), 21.93, 22.83, 0.0, 26.18, 19.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:35:44.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:35:21
2025-11-24T12:35:44.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:35:44.938 [DEBUG] [Thread-190104] [transport.py] [_log()] starting thread (client mode): 0xd07fb670
2025-11-24T12:35:44.938 [DEBUG] [Thread-190104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:35:44.942 [DEBUG] [Thread-190104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:35:44.942 [INFO] [Thread-190104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] client lang: <none>
2025-11-24T12:35:44.945 [DEBUG] [Thread-190104] [transport.py] [_log()] server lang: <none>
2025-11-24T12:35:44.946 [DEBUG] [Thread-190104] [transport.py] [_log()] kex follows: False
2025-11-24T12:35:44.946 [DEBUG] [Thread-190104] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:35:44.946 [DEBUG] [Thread-190104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:35:44.946 [DEBUG] [Thread-190104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:35:44.946 [DEBUG] [Thread-190104] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:35:44.946 [DEBUG] [Thread-190104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:35:44.946 [DEBUG] [Thread-190104] [transport.py] [_log()] Compression: none
2025-11-24T12:35:44.946 [DEBUG] [Thread-190104] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:35:44.963 [DEBUG] [Thread-190104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:35:44.964 [DEBUG] [Thread-190104] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:35:44.965 [DEBUG] [Thread-190104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:35:44.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:35:44.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:35:45.007 [DEBUG] [Thread-190104] [transport.py] [_log()] userauth is OK
2025-11-24T12:35:45.008 [DEBUG] [Thread-190104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:35:45.008 [DEBUG] [Thread-190104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:35:45.008 [DEBUG] [Thread-190104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:35:45.008 [DEBUG] [Thread-190104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:35:45.040 [INFO] [Thread-190104] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:35:45.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:35:45.674 [DEBUG] [Thread-190104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:35:45.674 [DEBUG] [Thread-190104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:35:45.675 [DEBUG] [Thread-190104] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:35:45.715 [DEBUG] [Thread-190104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:35:45.715 [DEBUG] [Thread-190104] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:35:45.717 [DEBUG] [Thread-190104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:35:45.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:35:45.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:35:45.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:35:45.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:35:45.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:35:45.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:35:45.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.441020 -999.00  +19.60  15.00     28   +0.90 1 1 1 1 1   888    0 19.65 -2.46 ----- 15.0 15.0 150.8 18.2 26.6 -24.7 25.6 -23.9 25.9 -23.0 26.9 -24.5
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.441020
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:35:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:35:21', tmtdew=21.93, humidity=22.83, cloud=0.0, wind=26.18, temperature=19.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:35:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:35:45.740 [DEBUG] [Thread-190104] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:35:45.811 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:35:45.824 [DEBUG] [Thread-190107] [transport.py] [_log()] starting thread (client mode): 0xd0711ae0
2025-11-24T12:35:45.824 [DEBUG] [Thread-190107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:35:45.840 [DEBUG] [Thread-190107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:35:45.840 [INFO] [Thread-190107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:35:45.847 [DEBUG] [Thread-190107] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:35:45.847 [DEBUG] [Thread-190107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:35:45.847 [DEBUG] [Thread-190107] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:35:45.847 [DEBUG] [Thread-190107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:35:45.847 [DEBUG] [Thread-190107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] client lang: <none>
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] server lang: <none>
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] kex follows: False
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] Compression: none
2025-11-24T12:35:45.848 [DEBUG] [Thread-190107] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:35:45.911 [DEBUG] [Thread-190107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:35:45.911 [DEBUG] [Thread-190107] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:35:45.912 [DEBUG] [Thread-190107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:35:45.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:35:45.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:35:45.968 [DEBUG] [Thread-190107] [transport.py] [_log()] userauth is OK
2025-11-24T12:35:45.968 [DEBUG] [Thread-190107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:35:45.968 [DEBUG] [Thread-190107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:35:45.968 [DEBUG] [Thread-190107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:35:45.968 [DEBUG] [Thread-190107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:35:45.982 [INFO] [Thread-190107] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:35:45.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:35:45.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:35:46.853 [DEBUG] [Thread-190107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:35:46.853 [DEBUG] [Thread-190107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:35:46.901 [DEBUG] [Thread-190107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:35:46.902 [DEBUG] [Thread-190107] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:35:46.911 [DEBUG] [Thread-190107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:35:46.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:35:46.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-11-24T12:35:46.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-11-24T12:35:46.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:35:46.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:35:46.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:35:46.949 [DEBUG] [Thread-190107] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:35:47.412 [DEBUG] [Thread-190109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:35:50.291 [DEBUG] [Thread-190110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:35:52.630 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:35:52.631 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:36:02.464 [DEBUG] [Thread-190111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:36:16.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:36:16.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:36:16.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-11-24T12:36:17.502 [DEBUG] [Thread-190112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:36:17.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 35, 53), 22.66, 21.57, 0.0, 24.12, 20.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:36:17.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:35:53
2025-11-24T12:36:17.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:36:18.007 [DEBUG] [Thread-190113] [transport.py] [_log()] starting thread (client mode): 0xd07eb220
2025-11-24T12:36:18.007 [DEBUG] [Thread-190113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:36:18.023 [DEBUG] [Thread-190113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:36:18.024 [INFO] [Thread-190113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] client lang: <none>
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] server lang: <none>
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] kex follows: False
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:36:18.034 [DEBUG] [Thread-190113] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:36:18.035 [DEBUG] [Thread-190113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:36:18.035 [DEBUG] [Thread-190113] [transport.py] [_log()] Compression: none
2025-11-24T12:36:18.035 [DEBUG] [Thread-190113] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:36:18.053 [DEBUG] [Thread-190113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:36:18.054 [DEBUG] [Thread-190113] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:36:18.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:36:18.055 [DEBUG] [Thread-190113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:36:18.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:36:18.057 [DEBUG] [Thread-190113] [transport.py] [_log()] userauth is OK
2025-11-24T12:36:18.058 [DEBUG] [Thread-190113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:36:18.058 [DEBUG] [Thread-190113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:36:18.058 [DEBUG] [Thread-190113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:36:18.058 [DEBUG] [Thread-190113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:36:18.075 [INFO] [Thread-190113] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:36:18.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:36:18.814 [DEBUG] [Thread-190113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:36:18.814 [DEBUG] [Thread-190113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:36:18.815 [DEBUG] [Thread-190113] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:36:18.855 [DEBUG] [Thread-190113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:36:18.855 [DEBUG] [Thread-190113] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:36:18.857 [DEBUG] [Thread-190113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:36:18.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:36:18.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:36:18.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:36:18.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:36:18.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:36:18.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:36:18.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.441368 -999.00  +19.90  16.30     26   +0.30 1 1 1 1 1   888    0 19.82 -5.59 ----- 16.3 16.3 143.7 25.5 26.6 -26.1 25.6 -24.3 25.8 -23.3 26.9 -25.3
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.441368
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:36:18.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:35:53', tmtdew=22.66, humidity=21.57, cloud=0.0, wind=24.12, temperature=20.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:35:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:36:18.882 [DEBUG] [Thread-190113] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:36:18.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:36:18.964 [DEBUG] [Thread-190116] [transport.py] [_log()] starting thread (client mode): 0xd07110f0
2025-11-24T12:36:18.965 [DEBUG] [Thread-190116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:36:18.980 [DEBUG] [Thread-190116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:36:18.980 [INFO] [Thread-190116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:36:18.987 [DEBUG] [Thread-190116] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:36:18.987 [DEBUG] [Thread-190116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:36:18.987 [DEBUG] [Thread-190116] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:36:18.987 [DEBUG] [Thread-190116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:36:18.987 [DEBUG] [Thread-190116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:36:18.987 [DEBUG] [Thread-190116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:36:18.987 [DEBUG] [Thread-190116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:36:18.987 [DEBUG] [Thread-190116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:36:18.987 [DEBUG] [Thread-190116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:36:18.988 [DEBUG] [Thread-190116] [transport.py] [_log()] client lang: <none>
2025-11-24T12:36:18.988 [DEBUG] [Thread-190116] [transport.py] [_log()] server lang: <none>
2025-11-24T12:36:18.988 [DEBUG] [Thread-190116] [transport.py] [_log()] kex follows: False
2025-11-24T12:36:18.988 [DEBUG] [Thread-190116] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:36:18.988 [DEBUG] [Thread-190116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:36:18.988 [DEBUG] [Thread-190116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:36:18.988 [DEBUG] [Thread-190116] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:36:18.988 [DEBUG] [Thread-190116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:36:18.988 [DEBUG] [Thread-190116] [transport.py] [_log()] Compression: none
2025-11-24T12:36:18.988 [DEBUG] [Thread-190116] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:36:19.043 [DEBUG] [Thread-190116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:36:19.043 [DEBUG] [Thread-190116] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:36:19.043 [DEBUG] [Thread-190116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:36:19.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:36:19.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:36:19.100 [DEBUG] [Thread-190116] [transport.py] [_log()] userauth is OK
2025-11-24T12:36:19.100 [DEBUG] [Thread-190116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:36:19.100 [DEBUG] [Thread-190116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:36:19.100 [DEBUG] [Thread-190116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:36:19.100 [DEBUG] [Thread-190116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:36:19.114 [INFO] [Thread-190116] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:36:19.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:36:19.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:36:19.950 [DEBUG] [Thread-190116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:36:19.951 [DEBUG] [Thread-190116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:36:19.998 [DEBUG] [Thread-190116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:36:19.998 [DEBUG] [Thread-190116] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:36:20.007 [DEBUG] [Thread-190116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:36:20.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:36:20.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-11-24T12:36:20.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:36:20.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:36:20.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:36:20.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:36:20.044 [DEBUG] [Thread-190116] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:36:32.531 [DEBUG] [Thread-190118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:36:47.577 [DEBUG] [Thread-190119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:36:50.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:36:50.052 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:36:50.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:36:50.362 [DEBUG] [Thread-190120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:36:50.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 36, 26), 22.53, 21.77, 0.0, 22.66, 20.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:36:50.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:36:26
2025-11-24T12:36:50.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:36:51.107 [DEBUG] [Thread-190121] [transport.py] [_log()] starting thread (client mode): 0xd07e8c40
2025-11-24T12:36:51.107 [DEBUG] [Thread-190121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:36:51.126 [DEBUG] [Thread-190121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:36:51.127 [INFO] [Thread-190121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] client lang: <none>
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] server lang: <none>
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] kex follows: False
2025-11-24T12:36:51.129 [DEBUG] [Thread-190121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:36:51.130 [DEBUG] [Thread-190121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:36:51.130 [DEBUG] [Thread-190121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:36:51.130 [DEBUG] [Thread-190121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:36:51.130 [DEBUG] [Thread-190121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:36:51.130 [DEBUG] [Thread-190121] [transport.py] [_log()] Compression: none
2025-11-24T12:36:51.130 [DEBUG] [Thread-190121] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:36:51.153 [DEBUG] [Thread-190121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:36:51.155 [DEBUG] [Thread-190121] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:36:51.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:36:51.157 [DEBUG] [Thread-190121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:36:51.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:36:51.159 [DEBUG] [Thread-190121] [transport.py] [_log()] userauth is OK
2025-11-24T12:36:51.160 [DEBUG] [Thread-190121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:36:51.160 [DEBUG] [Thread-190121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:36:51.160 [DEBUG] [Thread-190121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:36:51.160 [DEBUG] [Thread-190121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:36:51.196 [INFO] [Thread-190121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:36:51.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:36:51.835 [DEBUG] [Thread-190121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:36:51.835 [DEBUG] [Thread-190121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:36:51.836 [DEBUG] [Thread-190121] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:36:51.877 [DEBUG] [Thread-190121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:36:51.877 [DEBUG] [Thread-190121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:36:51.880 [DEBUG] [Thread-190121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:36:51.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:36:51.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:36:51.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:36:51.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:36:51.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:36:51.902 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:36:51.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:36:51.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:36:51.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:36:51.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.441715 -999.00  +20.10  21.36     27   +0.70 1 1 1 1 1   888    0 19.82 -4.94 ----- 21.4 21.4 155.4 37.0 26.6 -26.2 25.7 -24.4 25.9 -24.0 26.9 -24.8
2025-11-24T12:36:51.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:36:51.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:36:51.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.441715
2025-11-24T12:36:51.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:36:51.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:36:51.906 [DEBUG] [Thread-190121] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:36:51.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:36:51.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:36:51.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:36:51.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:36:26', tmtdew=22.53, humidity=21.77, cloud=0.0, wind=22.66, temperature=20.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:36:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:36:51.993 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:36:52.004 [DEBUG] [Thread-190124] [transport.py] [_log()] starting thread (client mode): 0xc9b83970
2025-11-24T12:36:52.004 [DEBUG] [Thread-190124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:36:52.022 [DEBUG] [Thread-190124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:36:52.022 [INFO] [Thread-190124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:36:52.029 [DEBUG] [Thread-190124] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:36:52.029 [DEBUG] [Thread-190124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] client lang: <none>
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] server lang: <none>
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] kex follows: False
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] Compression: none
2025-11-24T12:36:52.030 [DEBUG] [Thread-190124] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:36:52.089 [DEBUG] [Thread-190124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:36:52.090 [DEBUG] [Thread-190124] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:36:52.090 [DEBUG] [Thread-190124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:36:52.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:36:52.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:36:52.145 [DEBUG] [Thread-190124] [transport.py] [_log()] userauth is OK
2025-11-24T12:36:52.145 [DEBUG] [Thread-190124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:36:52.145 [DEBUG] [Thread-190124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:36:52.145 [DEBUG] [Thread-190124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:36:52.145 [DEBUG] [Thread-190124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:36:52.166 [INFO] [Thread-190124] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:36:52.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:36:52.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:36:52.772 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:36:52.774 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:36:53.037 [DEBUG] [Thread-190124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:36:53.037 [DEBUG] [Thread-190124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:36:53.085 [DEBUG] [Thread-190124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:36:53.085 [DEBUG] [Thread-190124] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:36:53.094 [DEBUG] [Thread-190124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:36:53.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:36:53.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:36:53.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-11-24T12:36:53.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:36:53.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:36:53.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:36:53.131 [DEBUG] [Thread-190124] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:37:02.611 [DEBUG] [Thread-190126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:37:17.650 [DEBUG] [Thread-190127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:37:23.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:37:23.131 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:37:23.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-11-24T12:37:23.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 36, 58), 22.76, 21.44, 0.0, 32.32, 20.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:37:23.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:36:58
2025-11-24T12:37:24.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:37:24.212 [DEBUG] [Thread-190128] [transport.py] [_log()] starting thread (client mode): 0xd0713580
2025-11-24T12:37:24.212 [DEBUG] [Thread-190128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:37:24.232 [DEBUG] [Thread-190128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:37:24.232 [INFO] [Thread-190128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:37:24.235 [DEBUG] [Thread-190128] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] client lang: <none>
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] server lang: <none>
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] kex follows: False
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:37:24.236 [DEBUG] [Thread-190128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:37:24.237 [DEBUG] [Thread-190128] [transport.py] [_log()] Compression: none
2025-11-24T12:37:24.237 [DEBUG] [Thread-190128] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:37:24.254 [DEBUG] [Thread-190128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:37:24.255 [DEBUG] [Thread-190128] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:37:24.255 [DEBUG] [Thread-190128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:37:24.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:37:24.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:37:24.257 [DEBUG] [Thread-190128] [transport.py] [_log()] userauth is OK
2025-11-24T12:37:24.257 [DEBUG] [Thread-190128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:37:24.257 [DEBUG] [Thread-190128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:37:24.257 [DEBUG] [Thread-190128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:37:24.257 [DEBUG] [Thread-190128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:37:24.294 [INFO] [Thread-190128] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:37:24.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:37:24.998 [DEBUG] [Thread-190128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:37:24.998 [DEBUG] [Thread-190128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:37:24.998 [DEBUG] [Thread-190128] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:37:25.039 [DEBUG] [Thread-190128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:37:25.039 [DEBUG] [Thread-190128] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:37:25.041 [DEBUG] [Thread-190128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:37:25.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:37:25.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:37:25.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:37:25.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:37:25.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:37:25.066 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:37:25.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.442062 -999.00  +20.30  25.24     27   +1.00 1 1 1 1 1   888    0 19.32 -5.66 ----- 25.2 25.2 164.1 33.2 26.6 -26.4 25.7 -25.0 25.9 -24.0 26.9 -24.6
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.442062
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:36:58', tmtdew=22.76, humidity=21.44, cloud=0.0, wind=32.32, temperature=20.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:36:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:37:25.067 [DEBUG] [Thread-190128] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:37:25.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:37:25.150 [DEBUG] [Thread-190131] [transport.py] [_log()] starting thread (client mode): 0xd31b2410
2025-11-24T12:37:25.150 [DEBUG] [Thread-190131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:37:25.165 [DEBUG] [Thread-190131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:37:25.165 [INFO] [Thread-190131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] client lang: <none>
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] server lang: <none>
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] kex follows: False
2025-11-24T12:37:25.172 [DEBUG] [Thread-190131] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:37:25.173 [DEBUG] [Thread-190131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:37:25.173 [DEBUG] [Thread-190131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:37:25.173 [DEBUG] [Thread-190131] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:37:25.173 [DEBUG] [Thread-190131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:37:25.173 [DEBUG] [Thread-190131] [transport.py] [_log()] Compression: none
2025-11-24T12:37:25.173 [DEBUG] [Thread-190131] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:37:25.233 [DEBUG] [Thread-190131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:37:25.233 [DEBUG] [Thread-190131] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:37:25.233 [DEBUG] [Thread-190131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:37:25.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:37:25.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:37:25.292 [DEBUG] [Thread-190131] [transport.py] [_log()] userauth is OK
2025-11-24T12:37:25.292 [DEBUG] [Thread-190131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:37:25.292 [DEBUG] [Thread-190131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:37:25.292 [DEBUG] [Thread-190131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:37:25.292 [DEBUG] [Thread-190131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:37:25.305 [INFO] [Thread-190131] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:37:25.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:37:25.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:37:26.164 [DEBUG] [Thread-190131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:37:26.164 [DEBUG] [Thread-190131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:37:26.212 [DEBUG] [Thread-190131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:37:26.212 [DEBUG] [Thread-190131] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:37:26.221 [DEBUG] [Thread-190131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:37:26.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:37:26.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-11-24T12:37:26.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-11-24T12:37:26.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:37:26.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:37:26.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:37:26.256 [DEBUG] [Thread-190131] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:37:32.682 [DEBUG] [Thread-190133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:37:47.719 [DEBUG] [Thread-190134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:37:50.585 [DEBUG] [Thread-190135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:37:52.922 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:37:52.923 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:37:56.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:37:56.278 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:37:56.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-11-24T12:37:56.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 37, 31), 22.55, 21.73, 0.0, 29.71, 20.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:37:56.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:37:31
2025-11-24T12:37:57.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:37:57.247 [DEBUG] [Thread-190136] [transport.py] [_log()] starting thread (client mode): 0xd07ea110
2025-11-24T12:37:57.248 [DEBUG] [Thread-190136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:37:57.268 [DEBUG] [Thread-190136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:37:57.268 [INFO] [Thread-190136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] client lang: <none>
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] server lang: <none>
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] kex follows: False
2025-11-24T12:37:57.271 [DEBUG] [Thread-190136] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:37:57.272 [DEBUG] [Thread-190136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:37:57.272 [DEBUG] [Thread-190136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:37:57.272 [DEBUG] [Thread-190136] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:37:57.272 [DEBUG] [Thread-190136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:37:57.272 [DEBUG] [Thread-190136] [transport.py] [_log()] Compression: none
2025-11-24T12:37:57.272 [DEBUG] [Thread-190136] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:37:57.289 [DEBUG] [Thread-190136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:37:57.290 [DEBUG] [Thread-190136] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:37:57.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:37:57.291 [DEBUG] [Thread-190136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:37:57.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:37:57.293 [DEBUG] [Thread-190136] [transport.py] [_log()] userauth is OK
2025-11-24T12:37:57.293 [DEBUG] [Thread-190136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:37:57.294 [DEBUG] [Thread-190136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:37:57.294 [DEBUG] [Thread-190136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:37:57.294 [DEBUG] [Thread-190136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:37:57.329 [INFO] [Thread-190136] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:37:57.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:37:57.957 [DEBUG] [Thread-190136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:37:57.957 [DEBUG] [Thread-190136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:37:57.957 [DEBUG] [Thread-190136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:37:57.998 [DEBUG] [Thread-190136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:37:57.998 [DEBUG] [Thread-190136] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:37:58.000 [DEBUG] [Thread-190136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:37:58.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:37:58.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:37:58.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:37:58.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:37:58.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:37:58.020 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:37:58.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:37:58.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:37:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:37:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.442409 -999.00  +20.60  21.25     27   +1.20 1 1 1 1 1   888    0 18.96 -9.18 ----- 21.2 21.2 157.9 35.4 26.7 -27.1 25.7 -26.2 26.0 -23.5 26.9 -24.3
2025-11-24T12:37:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:37:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:37:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.442409
2025-11-24T12:37:58.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:37:58.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:37:58.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:37:58.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:37:58.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:37:58.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:37:31', tmtdew=22.55, humidity=21.73, cloud=0.0, wind=29.71, temperature=20.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:37:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:37:58.021 [DEBUG] [Thread-190136] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:37:58.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:37:58.104 [DEBUG] [Thread-190139] [transport.py] [_log()] starting thread (client mode): 0xc9b813c0
2025-11-24T12:37:58.104 [DEBUG] [Thread-190139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:37:58.120 [DEBUG] [Thread-190139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:37:58.120 [INFO] [Thread-190139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:37:58.127 [DEBUG] [Thread-190139] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:37:58.127 [DEBUG] [Thread-190139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] client lang: <none>
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] server lang: <none>
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] kex follows: False
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] Compression: none
2025-11-24T12:37:58.128 [DEBUG] [Thread-190139] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:37:58.193 [DEBUG] [Thread-190139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:37:58.194 [DEBUG] [Thread-190139] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:37:58.194 [DEBUG] [Thread-190139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:37:58.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:37:58.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:37:58.253 [DEBUG] [Thread-190139] [transport.py] [_log()] userauth is OK
2025-11-24T12:37:58.253 [DEBUG] [Thread-190139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:37:58.253 [DEBUG] [Thread-190139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:37:58.253 [DEBUG] [Thread-190139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:37:58.253 [DEBUG] [Thread-190139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:37:58.272 [INFO] [Thread-190139] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:37:58.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:37:58.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:37:59.110 [DEBUG] [Thread-190139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:37:59.110 [DEBUG] [Thread-190139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:37:59.158 [DEBUG] [Thread-190139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:37:59.158 [DEBUG] [Thread-190139] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:37:59.167 [DEBUG] [Thread-190139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:37:59.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:37:59.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-11-24T12:37:59.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-11-24T12:37:59.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:37:59.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:37:59.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:37:59.212 [DEBUG] [Thread-190139] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:38:02.756 [DEBUG] [Thread-190141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:38:17.812 [DEBUG] [Thread-190142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:38:29.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:38:29.234 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:38:29.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-11-24T12:38:30.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 38, 3), 22.53, 21.82, 0.0, 32.29, 20.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:38:30.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:38:03
2025-11-24T12:38:30.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:38:30.357 [DEBUG] [Thread-190143] [transport.py] [_log()] starting thread (client mode): 0xc9b820e0
2025-11-24T12:38:30.358 [DEBUG] [Thread-190143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:38:30.379 [DEBUG] [Thread-190143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:38:30.379 [INFO] [Thread-190143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] client lang: <none>
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] server lang: <none>
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] kex follows: False
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:38:30.380 [DEBUG] [Thread-190143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:38:30.381 [DEBUG] [Thread-190143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:38:30.381 [DEBUG] [Thread-190143] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:38:30.381 [DEBUG] [Thread-190143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:38:30.381 [DEBUG] [Thread-190143] [transport.py] [_log()] Compression: none
2025-11-24T12:38:30.381 [DEBUG] [Thread-190143] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:38:30.388 [DEBUG] [Thread-190143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:38:30.389 [DEBUG] [Thread-190143] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:38:30.389 [DEBUG] [Thread-190143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:38:30.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:38:30.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:38:30.391 [DEBUG] [Thread-190143] [transport.py] [_log()] userauth is OK
2025-11-24T12:38:30.391 [DEBUG] [Thread-190143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:38:30.391 [DEBUG] [Thread-190143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:38:30.391 [DEBUG] [Thread-190143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:38:30.391 [DEBUG] [Thread-190143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:38:30.406 [INFO] [Thread-190143] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:38:30.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:38:31.073 [DEBUG] [Thread-190143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:38:31.073 [DEBUG] [Thread-190143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:38:31.074 [DEBUG] [Thread-190143] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:38:31.115 [DEBUG] [Thread-190143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:38:31.115 [DEBUG] [Thread-190143] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:38:31.118 [DEBUG] [Thread-190143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:38:31.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:38:31.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:38:31.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:38:31.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:38:31.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:38:31.141 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:38:31.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:38:31.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:38:31.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:38:31.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.442757 -999.00  +20.50  23.35     27   +1.10 1 1 1 1 1   888    0 19.00 -12.35 ----- 23.4 23.4 170.2 27.6 26.6 -25.9 25.6 -25.6 25.9 -24.5 27.1 -26.4
2025-11-24T12:38:31.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:38:31.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:38:31.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.442757
2025-11-24T12:38:31.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:38:31.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:38:31.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:38:31.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:38:31.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:38:31.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:38:03', tmtdew=22.53, humidity=21.82, cloud=0.0, wind=32.29, temperature=20.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:37:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:38:31.145 [DEBUG] [Thread-190143] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:38:31.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:38:31.233 [DEBUG] [Thread-190146] [transport.py] [_log()] starting thread (client mode): 0xd07eb4f0
2025-11-24T12:38:31.234 [DEBUG] [Thread-190146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:38:31.251 [DEBUG] [Thread-190146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:38:31.251 [INFO] [Thread-190146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] client lang: <none>
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] server lang: <none>
2025-11-24T12:38:31.263 [DEBUG] [Thread-190146] [transport.py] [_log()] kex follows: False
2025-11-24T12:38:31.264 [DEBUG] [Thread-190146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:38:31.264 [DEBUG] [Thread-190146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:38:31.264 [DEBUG] [Thread-190146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:38:31.264 [DEBUG] [Thread-190146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:38:31.264 [DEBUG] [Thread-190146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:38:31.264 [DEBUG] [Thread-190146] [transport.py] [_log()] Compression: none
2025-11-24T12:38:31.264 [DEBUG] [Thread-190146] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:38:31.321 [DEBUG] [Thread-190146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:38:31.322 [DEBUG] [Thread-190146] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:38:31.322 [DEBUG] [Thread-190146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:38:31.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:38:31.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:38:31.381 [DEBUG] [Thread-190146] [transport.py] [_log()] userauth is OK
2025-11-24T12:38:31.381 [DEBUG] [Thread-190146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:38:31.382 [DEBUG] [Thread-190146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:38:31.382 [DEBUG] [Thread-190146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:38:31.382 [DEBUG] [Thread-190146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:38:31.400 [INFO] [Thread-190146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12: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-11-24T12:38:31.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:38:32.236 [DEBUG] [Thread-190146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:38:32.236 [DEBUG] [Thread-190146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:38:32.284 [DEBUG] [Thread-190146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:38:32.285 [DEBUG] [Thread-190146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:38:32.294 [DEBUG] [Thread-190146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:38:32.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:38:32.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-11-24T12:38:32.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-11-24T12:38:32.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:38:32.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:38:32.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:38:32.330 [DEBUG] [Thread-190146] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:38:32.842 [DEBUG] [Thread-190148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:38:47.891 [DEBUG] [Thread-190149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:38:50.673 [DEBUG] [Thread-190150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:38:53.063 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:38:53.064 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:39:02.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:39:02.351 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:39:02.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:39:02.922 [DEBUG] [Thread-190151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:39:03.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 38, 36), 23.13, 20.95, 0.0, 29.22, 20.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:39:03.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:38:36
2025-11-24T12:39:03.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:39:03.500 [DEBUG] [Thread-190152] [transport.py] [_log()] starting thread (client mode): 0xd07e8a30
2025-11-24T12:39:03.500 [DEBUG] [Thread-190152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:39:03.520 [DEBUG] [Thread-190152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:39:03.520 [INFO] [Thread-190152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] client lang: <none>
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] server lang: <none>
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] kex follows: False
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] Compression: none
2025-11-24T12:39:03.523 [DEBUG] [Thread-190152] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:39:03.539 [DEBUG] [Thread-190152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:39:03.539 [DEBUG] [Thread-190152] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:39:03.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:39:03.540 [DEBUG] [Thread-190152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:39:03.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:39:03.540 [DEBUG] [Thread-190152] [transport.py] [_log()] userauth is OK
2025-11-24T12:39:03.540 [DEBUG] [Thread-190152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:39:03.540 [DEBUG] [Thread-190152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:39:03.540 [DEBUG] [Thread-190152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:39:03.540 [DEBUG] [Thread-190152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:39:03.550 [INFO] [Thread-190152] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:39:03.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:39:04.171 [DEBUG] [Thread-190152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:39:04.172 [DEBUG] [Thread-190152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:39:04.172 [DEBUG] [Thread-190152] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:39:04.213 [DEBUG] [Thread-190152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:39:04.213 [DEBUG] [Thread-190152] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:39:04.216 [DEBUG] [Thread-190152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:39:04.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:39:04.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:39:04.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:39:04.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:39:04.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:39:04.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:39:04.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:39:04.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.443104 -999.00  +20.40  22.97     27   +1.10 1 1 1 1 1   888    0 18.88 -14.49 ----- 23.0 23.0 159.0 39.0 26.6 -25.4 25.6 -28.3 26.0 -24.2 26.9 -26.6
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.443104
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:39:04.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:38:36', tmtdew=23.13, humidity=20.95, cloud=0.0, wind=29.22, temperature=20.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:38:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:39:04.234 [DEBUG] [Thread-190152] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:39:04.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:39:04.321 [DEBUG] [Thread-190155] [transport.py] [_log()] starting thread (client mode): 0xd3153b50
2025-11-24T12:39:04.322 [DEBUG] [Thread-190155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:39:04.336 [DEBUG] [Thread-190155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:39:04.337 [INFO] [Thread-190155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] client lang: <none>
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] server lang: <none>
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] kex follows: False
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:39:04.344 [DEBUG] [Thread-190155] [transport.py] [_log()] Compression: none
2025-11-24T12:39:04.345 [DEBUG] [Thread-190155] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:39:04.400 [DEBUG] [Thread-190155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:39:04.400 [DEBUG] [Thread-190155] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:39:04.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:39:04.401 [DEBUG] [Thread-190155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:39:04.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:39:04.456 [DEBUG] [Thread-190155] [transport.py] [_log()] userauth is OK
2025-11-24T12:39:04.456 [DEBUG] [Thread-190155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:39:04.456 [DEBUG] [Thread-190155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:39:04.456 [DEBUG] [Thread-190155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:39:04.456 [DEBUG] [Thread-190155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:39:04.470 [INFO] [Thread-190155] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:39:04.470 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:39:04.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:39:05.323 [DEBUG] [Thread-190155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:39:05.323 [DEBUG] [Thread-190155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:39:05.371 [DEBUG] [Thread-190155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:39:05.371 [DEBUG] [Thread-190155] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:39:05.379 [DEBUG] [Thread-190155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:39:05.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:39:05.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-11-24T12:39:05.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-11-24T12:39:05.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:39:05.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:39:05.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:39:05.411 [DEBUG] [Thread-190155] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:39:17.950 [DEBUG] [Thread-190157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:39:32.998 [DEBUG] [Thread-190158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:39:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:39:35.434 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:39:35.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-11-24T12:39:36.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 39, 8), 23.08, 21.0, 0.0, 25.53, 20.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:39:36.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:39:08
2025-11-24T12:39:36.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:39:36.489 [DEBUG] [Thread-190159] [transport.py] [_log()] starting thread (client mode): 0xd07e96f0
2025-11-24T12:39:36.489 [DEBUG] [Thread-190159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:39:36.501 [DEBUG] [Thread-190159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:39:36.502 [INFO] [Thread-190159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] client lang: <none>
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] server lang: <none>
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] kex follows: False
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] Compression: none
2025-11-24T12:39:36.503 [DEBUG] [Thread-190159] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:39:36.512 [DEBUG] [Thread-190159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:39:36.513 [DEBUG] [Thread-190159] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:39:36.513 [DEBUG] [Thread-190159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:39:36.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:39:36.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:39:36.514 [DEBUG] [Thread-190159] [transport.py] [_log()] userauth is OK
2025-11-24T12:39:36.514 [DEBUG] [Thread-190159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:39:36.514 [DEBUG] [Thread-190159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:39:36.514 [DEBUG] [Thread-190159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:39:36.514 [DEBUG] [Thread-190159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:39:36.527 [INFO] [Thread-190159] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:39:36.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:39:37.151 [DEBUG] [Thread-190159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:39:37.151 [DEBUG] [Thread-190159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:39:37.151 [DEBUG] [Thread-190159] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:39:37.192 [DEBUG] [Thread-190159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:39:37.192 [DEBUG] [Thread-190159] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:39:37.196 [DEBUG] [Thread-190159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:39:37.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:39:37.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:39:37.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:39:37.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:39:37.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:39:37.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:39:37.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:39:37.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:39:37.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:39:37.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.443799 -999.00  +20.50  26.47     26   +0.80 1 1 1 1 1   888    0 18.87 -14.87 ----- 26.5 26.5 171.2 36.4 26.6 -26.5 25.6 -23.8 25.9 -23.9 26.9 -26.5
2025-11-24T12:39:37.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:39:37.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:39:37.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.443799
2025-11-24T12:39:37.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:39:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:39:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:39:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:39:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:39:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:39:08', tmtdew=23.08, humidity=21.0, cloud=0.0, wind=25.53, temperature=20.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:39:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:39:37.216 [DEBUG] [Thread-190159] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:39: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-11-24T12:39:37.310 [DEBUG] [Thread-190162] [transport.py] [_log()] starting thread (client mode): 0xd31b0190
2025-11-24T12:39:37.310 [DEBUG] [Thread-190162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:39:37.325 [DEBUG] [Thread-190162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:39:37.325 [INFO] [Thread-190162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:39:37.332 [DEBUG] [Thread-190162] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:39:37.332 [DEBUG] [Thread-190162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:39:37.333 [DEBUG] [Thread-190162] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:39:37.333 [DEBUG] [Thread-190162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:39:37.333 [DEBUG] [Thread-190162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:39:37.333 [DEBUG] [Thread-190162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:39:37.333 [DEBUG] [Thread-190162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:39:37.333 [DEBUG] [Thread-190162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:39:37.333 [DEBUG] [Thread-190162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:39:37.333 [DEBUG] [Thread-190162] [transport.py] [_log()] client lang: <none>
2025-11-24T12:39:37.333 [DEBUG] [Thread-190162] [transport.py] [_log()] server lang: <none>
2025-11-24T12:39:37.333 [DEBUG] [Thread-190162] [transport.py] [_log()] kex follows: False
2025-11-24T12:39:37.334 [DEBUG] [Thread-190162] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:39:37.334 [DEBUG] [Thread-190162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:39:37.334 [DEBUG] [Thread-190162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:39:37.334 [DEBUG] [Thread-190162] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:39:37.334 [DEBUG] [Thread-190162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:39:37.334 [DEBUG] [Thread-190162] [transport.py] [_log()] Compression: none
2025-11-24T12:39:37.334 [DEBUG] [Thread-190162] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:39:37.395 [DEBUG] [Thread-190162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:39:37.396 [DEBUG] [Thread-190162] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:39:37.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:39:37.397 [DEBUG] [Thread-190162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:39:37.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:39:37.456 [DEBUG] [Thread-190162] [transport.py] [_log()] userauth is OK
2025-11-24T12:39:37.456 [DEBUG] [Thread-190162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:39:37.456 [DEBUG] [Thread-190162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:39:37.457 [DEBUG] [Thread-190162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:39:37.457 [DEBUG] [Thread-190162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:39:37.476 [INFO] [Thread-190162] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:39:37.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:39:37.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:39:38.318 [DEBUG] [Thread-190162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:39:38.318 [DEBUG] [Thread-190162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:39:38.366 [DEBUG] [Thread-190162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:39:38.366 [DEBUG] [Thread-190162] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:39:38.374 [DEBUG] [Thread-190162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:39:38.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:39:38.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-11-24T12:39:38.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:39:38.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:39:38.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:39:38.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:39:38.405 [DEBUG] [Thread-190162] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:39:48.028 [DEBUG] [Thread-190164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:39:50.931 [DEBUG] [Thread-190165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:39:53.216 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:39:53.218 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:40:03.103 [DEBUG] [Thread-190166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:40:08.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:40:08.428 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:40:08.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-11-24T12:40:09.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 39, 40), 23.48, 20.39, 0.0, 31.35, 20.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:40:09.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:39:40
2025-11-24T12:40:09.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:40:09.518 [DEBUG] [Thread-190167] [transport.py] [_log()] starting thread (client mode): 0xd07f92a0
2025-11-24T12:40:09.518 [DEBUG] [Thread-190167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:40:09.539 [DEBUG] [Thread-190167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:40:09.539 [INFO] [Thread-190167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:40:09.542 [DEBUG] [Thread-190167] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:40:09.542 [DEBUG] [Thread-190167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:40:09.542 [DEBUG] [Thread-190167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:40:09.542 [DEBUG] [Thread-190167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:40:09.542 [DEBUG] [Thread-190167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] client lang: <none>
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] server lang: <none>
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] kex follows: False
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] Compression: none
2025-11-24T12:40:09.543 [DEBUG] [Thread-190167] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:40:09.560 [DEBUG] [Thread-190167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:40:09.560 [DEBUG] [Thread-190167] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:40:09.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:40:09.561 [DEBUG] [Thread-190167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:40:09.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:40:09.564 [DEBUG] [Thread-190167] [transport.py] [_log()] userauth is OK
2025-11-24T12:40:09.564 [DEBUG] [Thread-190167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:40:09.564 [DEBUG] [Thread-190167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:40:09.564 [DEBUG] [Thread-190167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:40:09.564 [DEBUG] [Thread-190167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:40:09.585 [INFO] [Thread-190167] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:40:09.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:40:11.205 [DEBUG] [Thread-190167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:40:11.206 [DEBUG] [Thread-190167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:40:11.206 [DEBUG] [Thread-190167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:40:11.247 [DEBUG] [Thread-190167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:40:11.247 [DEBUG] [Thread-190167] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:40:11.250 [DEBUG] [Thread-190167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:40:11.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:40:11.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:40:11.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:40:11.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:40:11.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:40:11.288 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:40:11.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:40:11.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:40:11.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:40:11.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.444145 -999.00  +20.30  21.49     26   +0.50 1 1 1 1 1   888    0 19.18 -12.71 ----- 21.5 21.5 156.8 33.7 26.5 -27.7 25.5 -26.1 25.8 -26.1 26.9 -26.5
2025-11-24T12:40:11.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:40:11.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:40:11.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.444145
2025-11-24T12:40:11.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:40:11.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:40:11.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:40:11.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:40:11.291 [DEBUG] [Thread-190167] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:40:11.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:40:11.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:39:40', tmtdew=23.48, humidity=20.39, cloud=0.0, wind=31.35, temperature=20.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:39:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:40:11.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:40:11.388 [DEBUG] [Thread-190170] [transport.py] [_log()] starting thread (client mode): 0xd07fa4d0
2025-11-24T12:40:11.388 [DEBUG] [Thread-190170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:40:11.403 [DEBUG] [Thread-190170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:40:11.403 [INFO] [Thread-190170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] client lang: <none>
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] server lang: <none>
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] kex follows: False
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] Compression: none
2025-11-24T12:40:11.411 [DEBUG] [Thread-190170] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:40:11.466 [DEBUG] [Thread-190170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:40:11.467 [DEBUG] [Thread-190170] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:40:11.467 [DEBUG] [Thread-190170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:40:11.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:40:11.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:40:11.524 [DEBUG] [Thread-190170] [transport.py] [_log()] userauth is OK
2025-11-24T12:40:11.524 [DEBUG] [Thread-190170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:40:11.524 [DEBUG] [Thread-190170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:40:11.524 [DEBUG] [Thread-190170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:40:11.524 [DEBUG] [Thread-190170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:40:11.538 [INFO] [Thread-190170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:40:11.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:40:11.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:40:12.416 [DEBUG] [Thread-190170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:40:12.417 [DEBUG] [Thread-190170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:40:12.464 [DEBUG] [Thread-190170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:40:12.464 [DEBUG] [Thread-190170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:40:12.472 [DEBUG] [Thread-190170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:40:12.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:40:12.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-11-24T12:40:12.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-11-24T12:40:12.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:40:12.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:40:12.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:40:12.504 [DEBUG] [Thread-190170] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:40:18.138 [DEBUG] [Thread-190172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:40:33.185 [DEBUG] [Thread-190173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:40:42.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:40:42.527 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:40:42.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-11-24T12:40:43.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 40, 13), 23.73, 20.05, 0.0, 29.45, 20.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:40:43.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:40:13
2025-11-24T12:40:43.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:40:43.639 [DEBUG] [Thread-190174] [transport.py] [_log()] starting thread (client mode): 0xd07f91b0
2025-11-24T12:40:43.640 [DEBUG] [Thread-190174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:40:43.654 [DEBUG] [Thread-190174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:40:43.654 [INFO] [Thread-190174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] client lang: <none>
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] server lang: <none>
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] kex follows: False
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] Compression: none
2025-11-24T12:40:43.657 [DEBUG] [Thread-190174] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:40:43.674 [DEBUG] [Thread-190174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:40:43.675 [DEBUG] [Thread-190174] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:40:43.676 [DEBUG] [Thread-190174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:40:43.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:40:43.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:40:43.679 [DEBUG] [Thread-190174] [transport.py] [_log()] userauth is OK
2025-11-24T12:40:43.679 [DEBUG] [Thread-190174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:40:43.680 [DEBUG] [Thread-190174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:40:43.680 [DEBUG] [Thread-190174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:40:43.680 [DEBUG] [Thread-190174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:40:43.703 [INFO] [Thread-190174] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:40:43.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:40:44.376 [DEBUG] [Thread-190174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:40:44.376 [DEBUG] [Thread-190174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:40:44.377 [DEBUG] [Thread-190174] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:40:44.417 [DEBUG] [Thread-190174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:40:44.417 [DEBUG] [Thread-190174] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:40:44.419 [DEBUG] [Thread-190174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:40:44.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:40:44.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:40:44.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:40:44.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:40:44.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:40:44.440 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:40:44.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:40:44.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:40:44.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:40:44.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.444493 -999.00  +19.90  29.24     27   +0.70 1 1 1 1 1   888    0 18.97 -11.95 ----- 29.2 29.2 157.8 36.4 26.4 -25.5 25.4 -24.8 25.8 -24.0 26.8 -25.6
2025-11-24T12:40:44.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:40:44.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:40:44.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.444493
2025-11-24T12:40:44.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:40:44.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:40:44.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:40:44.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:40:44.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:40:44.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:40:13', tmtdew=23.73, humidity=20.05, cloud=0.0, wind=29.45, temperature=20.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:40:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:40:44.448 [DEBUG] [Thread-190174] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:40:44.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:40:44.535 [DEBUG] [Thread-190177] [transport.py] [_log()] starting thread (client mode): 0xd31b37f0
2025-11-24T12:40:44.535 [DEBUG] [Thread-190177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:40:44.549 [DEBUG] [Thread-190177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:40:44.549 [INFO] [Thread-190177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:40:44.556 [DEBUG] [Thread-190177] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:40:44.556 [DEBUG] [Thread-190177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:40:44.556 [DEBUG] [Thread-190177] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:40:44.556 [DEBUG] [Thread-190177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:40:44.556 [DEBUG] [Thread-190177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:40:44.556 [DEBUG] [Thread-190177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:40:44.556 [DEBUG] [Thread-190177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:40:44.556 [DEBUG] [Thread-190177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] client lang: <none>
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] server lang: <none>
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] kex follows: False
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] Compression: none
2025-11-24T12:40:44.557 [DEBUG] [Thread-190177] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:40:44.615 [DEBUG] [Thread-190177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:40:44.615 [DEBUG] [Thread-190177] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:40:44.615 [DEBUG] [Thread-190177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:40:44.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:40:44.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:40:44.672 [DEBUG] [Thread-190177] [transport.py] [_log()] userauth is OK
2025-11-24T12:40:44.672 [DEBUG] [Thread-190177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:40:44.672 [DEBUG] [Thread-190177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:40:44.672 [DEBUG] [Thread-190177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:40:44.672 [DEBUG] [Thread-190177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:40:44.694 [INFO] [Thread-190177] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:40:44.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:40:44.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:40:45.570 [DEBUG] [Thread-190177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:40:45.571 [DEBUG] [Thread-190177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:40:45.619 [DEBUG] [Thread-190177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:40:45.619 [DEBUG] [Thread-190177] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:40:45.628 [DEBUG] [Thread-190177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:40:45.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:40:45.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:40: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-11-24T12:40:45.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:40:45.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:40:45.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:40:45.667 [DEBUG] [Thread-190177] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:40:48.214 [DEBUG] [Thread-190179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:40:51.085 [DEBUG] [Thread-190180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:40:53.366 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:40:53.367 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:41:03.253 [DEBUG] [Thread-190181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:41:15.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:41:15.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:41:15.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-11-24T12:41:16.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 40, 46), 22.83, 21.5, 0.0, 29.04, 20.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:41:16.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:40:46
2025-11-24T12:41:16.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:41:16.738 [DEBUG] [Thread-190182] [transport.py] [_log()] starting thread (client mode): 0xd316c5e0
2025-11-24T12:41:16.738 [DEBUG] [Thread-190182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:41:16.757 [DEBUG] [Thread-190182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:41:16.758 [INFO] [Thread-190182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:41:16.760 [DEBUG] [Thread-190182] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] client lang: <none>
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] server lang: <none>
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] kex follows: False
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] Compression: none
2025-11-24T12:41:16.761 [DEBUG] [Thread-190182] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:41:16.770 [DEBUG] [Thread-190182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:41:16.770 [DEBUG] [Thread-190182] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:41:16.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:41:16.771 [DEBUG] [Thread-190182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:41:16.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:41:16.773 [DEBUG] [Thread-190182] [transport.py] [_log()] userauth is OK
2025-11-24T12:41:16.774 [DEBUG] [Thread-190182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:41:16.774 [DEBUG] [Thread-190182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:41:16.774 [DEBUG] [Thread-190182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:41:16.774 [DEBUG] [Thread-190182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:41:16.812 [INFO] [Thread-190182] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:41:16.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:41:17.463 [DEBUG] [Thread-190182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:41:17.464 [DEBUG] [Thread-190182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:41:17.464 [DEBUG] [Thread-190182] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:41:17.504 [DEBUG] [Thread-190182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:41:17.505 [DEBUG] [Thread-190182] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:41:17.508 [DEBUG] [Thread-190182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:41:17.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:41:17.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:41:17.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:41:17.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:41:17.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:41:17.541 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:41:17.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:41:17.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:41:17.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:41:17.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.444840 -999.00  +19.80  20.34     28   +0.70 1 1 1 1 1   888    0 19.02 -14.50 ----- 20.3 20.3 155.4 29.2 26.4 -27.2 25.4 -24.6 25.6 -24.9 26.7 -26.3
2025-11-24T12:41:17.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:41:17.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:41:17.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.444840
2025-11-24T12:41:17.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:41:17.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:41:17.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:41:17.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:41:17.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:41:17.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:40:46', tmtdew=22.83, humidity=21.5, cloud=0.0, wind=29.04, temperature=20.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:40:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:41:17.545 [DEBUG] [Thread-190182] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:41:17.628 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:41:17.640 [DEBUG] [Thread-190185] [transport.py] [_log()] starting thread (client mode): 0xd317f040
2025-11-24T12:41:17.640 [DEBUG] [Thread-190185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:41:17.654 [DEBUG] [Thread-190185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:41:17.655 [INFO] [Thread-190185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] client lang: <none>
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] server lang: <none>
2025-11-24T12:41:17.662 [DEBUG] [Thread-190185] [transport.py] [_log()] kex follows: False
2025-11-24T12:41:17.663 [DEBUG] [Thread-190185] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:41:17.663 [DEBUG] [Thread-190185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:41:17.663 [DEBUG] [Thread-190185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:41:17.663 [DEBUG] [Thread-190185] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:41:17.663 [DEBUG] [Thread-190185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:41:17.663 [DEBUG] [Thread-190185] [transport.py] [_log()] Compression: none
2025-11-24T12:41:17.663 [DEBUG] [Thread-190185] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:41:17.720 [DEBUG] [Thread-190185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:41:17.721 [DEBUG] [Thread-190185] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:41:17.722 [DEBUG] [Thread-190185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:41:17.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:41:17.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:41:17.777 [DEBUG] [Thread-190185] [transport.py] [_log()] userauth is OK
2025-11-24T12:41:17.777 [DEBUG] [Thread-190185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:41:17.777 [DEBUG] [Thread-190185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:41:17.777 [DEBUG] [Thread-190185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:41:17.777 [DEBUG] [Thread-190185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:41:17.795 [INFO] [Thread-190185] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:41:17.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:41:17.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:41:18.293 [DEBUG] [Thread-190187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:41:18.637 [DEBUG] [Thread-190185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:41:18.637 [DEBUG] [Thread-190185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:41:18.684 [DEBUG] [Thread-190185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:41:18.684 [DEBUG] [Thread-190185] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:41:18.699 [DEBUG] [Thread-190185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:41:18.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:41:18.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-11-24T12:41:18.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-11-24T12:41:18.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:41:18.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:41:18.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:41:18.733 [DEBUG] [Thread-190185] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:41:33.340 [DEBUG] [Thread-190188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:41:48.374 [DEBUG] [Thread-190189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:41:48.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:41:48.732 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:41:48.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:41:49.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 41, 18), 22.9, 21.4, 0.0, 29.03, 20.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:41:49.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:41:18
2025-11-24T12:41:49.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:41:49.779 [DEBUG] [Thread-190190] [transport.py] [_log()] starting thread (client mode): 0xd3190fa0
2025-11-24T12:41:49.779 [DEBUG] [Thread-190190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:41:49.800 [DEBUG] [Thread-190190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:41:49.800 [INFO] [Thread-190190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:41:49.810 [DEBUG] [Thread-190190] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:41:49.810 [DEBUG] [Thread-190190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:41:49.810 [DEBUG] [Thread-190190] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:41:49.810 [DEBUG] [Thread-190190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:41:49.810 [DEBUG] [Thread-190190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:41:49.810 [DEBUG] [Thread-190190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:41:49.811 [DEBUG] [Thread-190190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:41:49.811 [DEBUG] [Thread-190190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:41:49.811 [DEBUG] [Thread-190190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:41:49.811 [DEBUG] [Thread-190190] [transport.py] [_log()] client lang: <none>
2025-11-24T12:41:49.811 [DEBUG] [Thread-190190] [transport.py] [_log()] server lang: <none>
2025-11-24T12:41:49.811 [DEBUG] [Thread-190190] [transport.py] [_log()] kex follows: False
2025-11-24T12:41:49.811 [DEBUG] [Thread-190190] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:41:49.811 [DEBUG] [Thread-190190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:41:49.811 [DEBUG] [Thread-190190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:41:49.812 [DEBUG] [Thread-190190] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:41:49.812 [DEBUG] [Thread-190190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:41:49.812 [DEBUG] [Thread-190190] [transport.py] [_log()] Compression: none
2025-11-24T12:41:49.812 [DEBUG] [Thread-190190] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:41:49.831 [DEBUG] [Thread-190190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:41:49.831 [DEBUG] [Thread-190190] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:41:49.832 [DEBUG] [Thread-190190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:41:49.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:41:49.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:41:49.834 [DEBUG] [Thread-190190] [transport.py] [_log()] userauth is OK
2025-11-24T12:41:49.834 [DEBUG] [Thread-190190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:41:49.834 [DEBUG] [Thread-190190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:41:49.834 [DEBUG] [Thread-190190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:41:49.834 [DEBUG] [Thread-190190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:41:49.852 [INFO] [Thread-190190] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:41:49.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:41:50.506 [DEBUG] [Thread-190190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:41:50.506 [DEBUG] [Thread-190190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:41:50.506 [DEBUG] [Thread-190190] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:41:50.547 [DEBUG] [Thread-190190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:41:50.547 [DEBUG] [Thread-190190] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:41:50.549 [DEBUG] [Thread-190190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:41:50.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:41:50.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:41:50.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:41:50.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:41:50.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:41:50.567 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:41:50.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:41:50.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.445187 -999.00  +19.70  22.18     28   +0.70 1 1 1 1 1   888    0 18.39 -17.30 ----- 22.2 22.2 174.4 31.0 26.2 -26.0 25.1 -29.4 25.6 -24.9 26.6 -26.6
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.445187
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:41:50.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:41:18', tmtdew=22.9, humidity=21.4, cloud=0.0, wind=29.03, temperature=20.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:41:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:41:50.569 [DEBUG] [Thread-190190] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:41:50.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:41:50.652 [DEBUG] [Thread-190193] [transport.py] [_log()] starting thread (client mode): 0xd31929e0
2025-11-24T12:41:50.652 [DEBUG] [Thread-190193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:41:50.669 [DEBUG] [Thread-190193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:41:50.669 [INFO] [Thread-190193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] client lang: <none>
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] server lang: <none>
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] kex follows: False
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] Compression: none
2025-11-24T12:41:50.677 [DEBUG] [Thread-190193] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:41:50.734 [DEBUG] [Thread-190193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:41:50.734 [DEBUG] [Thread-190193] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:41:50.734 [DEBUG] [Thread-190193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:41:50.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:41:50.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:41:50.791 [DEBUG] [Thread-190193] [transport.py] [_log()] userauth is OK
2025-11-24T12:41:50.792 [DEBUG] [Thread-190193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:41:50.792 [DEBUG] [Thread-190193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:41:50.792 [DEBUG] [Thread-190193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:41:50.792 [DEBUG] [Thread-190193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:41:50.805 [INFO] [Thread-190193] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:41:50.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:41:50.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:41:51.329 [DEBUG] [Thread-190195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:41:51.666 [DEBUG] [Thread-190193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:41:51.666 [DEBUG] [Thread-190193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:41:51.717 [DEBUG] [Thread-190193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:41:51.717 [DEBUG] [Thread-190193] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:41:51.725 [DEBUG] [Thread-190193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:41:51.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:41:51.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-11-24T12:41:51.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-11-24T12:41:51.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:41:51.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:41:51.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:41:51.757 [DEBUG] [Thread-190193] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:41:53.508 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:41:53.509 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:42:03.414 [DEBUG] [Thread-190196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:42:18.467 [DEBUG] [Thread-190197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:42:21.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:42:21.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:42:21.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-11-24T12:42:22.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 41, 50), 21.86, 22.68, 0.0, 14.66, 19.32, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:42:22.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:41:50
2025-11-24T12:42:22.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:42:22.775 [DEBUG] [Thread-190198] [transport.py] [_log()] starting thread (client mode): 0xd3190370
2025-11-24T12:42:22.775 [DEBUG] [Thread-190198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:42:22.795 [DEBUG] [Thread-190198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:42:22.796 [INFO] [Thread-190198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:42:22.798 [DEBUG] [Thread-190198] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] client lang: <none>
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] server lang: <none>
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] kex follows: False
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:42:22.799 [DEBUG] [Thread-190198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:42:22.800 [DEBUG] [Thread-190198] [transport.py] [_log()] Compression: none
2025-11-24T12:42:22.800 [DEBUG] [Thread-190198] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:42:22.817 [DEBUG] [Thread-190198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:42:22.818 [DEBUG] [Thread-190198] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:42:22.818 [DEBUG] [Thread-190198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:42:22.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:42:22.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:42:22.821 [DEBUG] [Thread-190198] [transport.py] [_log()] userauth is OK
2025-11-24T12:42:22.821 [DEBUG] [Thread-190198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:42:22.821 [DEBUG] [Thread-190198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:42:22.821 [DEBUG] [Thread-190198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:42:22.821 [DEBUG] [Thread-190198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:42:22.856 [INFO] [Thread-190198] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:42:22.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:42:23.501 [DEBUG] [Thread-190198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:42:23.501 [DEBUG] [Thread-190198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:42:23.502 [DEBUG] [Thread-190198] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:42:23.542 [DEBUG] [Thread-190198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:42:23.542 [DEBUG] [Thread-190198] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:42:23.544 [DEBUG] [Thread-190198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:42:23.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:42:23.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:42:23.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:42:23.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:42:23.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:42:23.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:42:23.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.445534 -999.00  +19.60  12.43     28   +0.80 1 1 1 1 1   888    0 18.84 -20.29 ----- 12.4 12.4 173.2 19.0 26.4 -25.5 25.3 -25.8 25.8 -23.5 26.7 -24.9
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.445534
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:42:23.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:41:50', tmtdew=21.86, humidity=22.68, cloud=0.0, wind=14.66, temperature=19.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:41:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:42:23.565 [DEBUG] [Thread-190198] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:42:23.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:42:23.650 [DEBUG] [Thread-190201] [transport.py] [_log()] starting thread (client mode): 0xd31b3430
2025-11-24T12:42:23.650 [DEBUG] [Thread-190201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:42:23.664 [DEBUG] [Thread-190201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:42:23.664 [INFO] [Thread-190201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] client lang: <none>
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] server lang: <none>
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] kex follows: False
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:42:23.672 [DEBUG] [Thread-190201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:42:23.673 [DEBUG] [Thread-190201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:42:23.673 [DEBUG] [Thread-190201] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:42:23.673 [DEBUG] [Thread-190201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:42:23.673 [DEBUG] [Thread-190201] [transport.py] [_log()] Compression: none
2025-11-24T12:42:23.673 [DEBUG] [Thread-190201] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:42:23.730 [DEBUG] [Thread-190201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:42:23.731 [DEBUG] [Thread-190201] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:42:23.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:42:23.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:42:23.731 [DEBUG] [Thread-190201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:42:23.788 [DEBUG] [Thread-190201] [transport.py] [_log()] userauth is OK
2025-11-24T12:42:23.788 [DEBUG] [Thread-190201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:42:23.788 [DEBUG] [Thread-190201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:42:23.788 [DEBUG] [Thread-190201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:42:23.788 [DEBUG] [Thread-190201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:42:23.804 [INFO] [Thread-190201] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:42:23.804 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:42:23.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:42:24.663 [DEBUG] [Thread-190201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:42:24.663 [DEBUG] [Thread-190201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:42:24.711 [DEBUG] [Thread-190201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:42:24.711 [DEBUG] [Thread-190201] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:42:24.720 [DEBUG] [Thread-190201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:42:24.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:42:24.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-11-24T12:42:24.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:42:24.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:42:24.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:42:24.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:42:24.753 [DEBUG] [Thread-190201] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:42:33.497 [DEBUG] [Thread-190203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:42:48.553 [DEBUG] [Thread-190204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:42:51.488 [DEBUG] [Thread-190205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:42:53.650 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:42:53.651 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:42:54.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:42:54.776 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:42:54.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-11-24T12:42:55.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 42, 23), 21.58, 23.15, 0.0, 16.89, 19.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:42:55.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:42:23
2025-11-24T12:42:55.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:42:55.918 [DEBUG] [Thread-190206] [transport.py] [_log()] starting thread (client mode): 0xd3191ae0
2025-11-24T12:42:55.918 [DEBUG] [Thread-190206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:42:55.938 [DEBUG] [Thread-190206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:42:55.938 [INFO] [Thread-190206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] client lang: <none>
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] server lang: <none>
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] kex follows: False
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:42:55.941 [DEBUG] [Thread-190206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:42:55.942 [DEBUG] [Thread-190206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:42:55.942 [DEBUG] [Thread-190206] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:42:55.942 [DEBUG] [Thread-190206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:42:55.942 [DEBUG] [Thread-190206] [transport.py] [_log()] Compression: none
2025-11-24T12:42:55.942 [DEBUG] [Thread-190206] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:42:55.960 [DEBUG] [Thread-190206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:42:55.960 [DEBUG] [Thread-190206] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:42:55.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:42:55.961 [DEBUG] [Thread-190206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:42:55.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:42:56.003 [DEBUG] [Thread-190206] [transport.py] [_log()] userauth is OK
2025-11-24T12:42:56.003 [DEBUG] [Thread-190206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:42:56.003 [DEBUG] [Thread-190206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:42:56.003 [DEBUG] [Thread-190206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:42:56.003 [DEBUG] [Thread-190206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:42:56.034 [INFO] [Thread-190206] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:42:56.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:42:56.655 [DEBUG] [Thread-190206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:42:56.655 [DEBUG] [Thread-190206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:42:56.655 [DEBUG] [Thread-190206] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:42:56.696 [DEBUG] [Thread-190206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:42:56.696 [DEBUG] [Thread-190206] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:42:56.698 [DEBUG] [Thread-190206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:42:56.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:42:56.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:42:56.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:42:56.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:42:56.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:42:56.711 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:42:56.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:42:56.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:42:56.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:42:56.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.445882 -999.00  +19.40   7.82     28   +0.80 1 1 1 1 1   888    0 18.79 -25.22 ----- 7.8 7.8 161.9 10.4 26.5 -24.8 25.4 -24.1 25.9 -24.2 26.9 -25.4
2025-11-24T12:42:56.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:42:56.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:42:56.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.445882
2025-11-24T12:42:56.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:42:56.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:42:56.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:42:56.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:42:56.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:42:56.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:42:23', tmtdew=21.58, humidity=23.15, cloud=0.0, wind=16.89, temperature=19.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:42:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:42:56.716 [DEBUG] [Thread-190206] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:42:56.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:42:56.803 [DEBUG] [Thread-190209] [transport.py] [_log()] starting thread (client mode): 0xd3191750
2025-11-24T12:42:56.803 [DEBUG] [Thread-190209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:42:56.817 [DEBUG] [Thread-190209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:42:56.817 [INFO] [Thread-190209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] client lang: <none>
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] server lang: <none>
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] kex follows: False
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:42:56.825 [DEBUG] [Thread-190209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:42:56.826 [DEBUG] [Thread-190209] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:42:56.826 [DEBUG] [Thread-190209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:42:56.826 [DEBUG] [Thread-190209] [transport.py] [_log()] Compression: none
2025-11-24T12:42:56.826 [DEBUG] [Thread-190209] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:42:56.883 [DEBUG] [Thread-190209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:42:56.883 [DEBUG] [Thread-190209] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:42:56.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:42:56.883 [DEBUG] [Thread-190209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:42:56.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:42:56.941 [DEBUG] [Thread-190209] [transport.py] [_log()] userauth is OK
2025-11-24T12:42:56.941 [DEBUG] [Thread-190209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:42:56.941 [DEBUG] [Thread-190209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:42:56.941 [DEBUG] [Thread-190209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:42:56.942 [DEBUG] [Thread-190209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:42:56.958 [INFO] [Thread-190209] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:42:56.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:42:56.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:42:57.810 [DEBUG] [Thread-190209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:42:57.810 [DEBUG] [Thread-190209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:42:57.858 [DEBUG] [Thread-190209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:42:57.858 [DEBUG] [Thread-190209] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:42:57.866 [DEBUG] [Thread-190209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:42:57.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:42:57.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-11-24T12:42:57.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-11-24T12:42:57.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:42:57.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:42:57.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:42:57.897 [DEBUG] [Thread-190209] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:43:03.579 [DEBUG] [Thread-190211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:43:18.636 [DEBUG] [Thread-190212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:43:27.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:43:27.893 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:43:27.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-11-24T12:43:28.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 42, 55), 21.67, 22.97, 0.0, 17.19, 19.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:43:28.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:42:55
2025-11-24T12:43:28.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:43:29.106 [DEBUG] [Thread-190213] [transport.py] [_log()] starting thread (client mode): 0xd317ffa0
2025-11-24T12:43:29.106 [DEBUG] [Thread-190213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:43:29.125 [DEBUG] [Thread-190213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:43:29.125 [INFO] [Thread-190213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] client lang: <none>
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] server lang: <none>
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] kex follows: False
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] Compression: none
2025-11-24T12:43:29.128 [DEBUG] [Thread-190213] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:43:29.145 [DEBUG] [Thread-190213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:43:29.146 [DEBUG] [Thread-190213] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:43:29.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:43:29.146 [DEBUG] [Thread-190213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:43:29.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:43:29.147 [DEBUG] [Thread-190213] [transport.py] [_log()] userauth is OK
2025-11-24T12:43:29.147 [DEBUG] [Thread-190213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:43:29.147 [DEBUG] [Thread-190213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:43:29.147 [DEBUG] [Thread-190213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:43:29.147 [DEBUG] [Thread-190213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:43:29.156 [INFO] [Thread-190213] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:43:29.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:43:29.765 [DEBUG] [Thread-190213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:43:29.765 [DEBUG] [Thread-190213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:43:29.766 [DEBUG] [Thread-190213] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:43:29.806 [DEBUG] [Thread-190213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:43:29.806 [DEBUG] [Thread-190213] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:43:29.809 [DEBUG] [Thread-190213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:43:29.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:43:29.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:43:29.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:43:29.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:43:29.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:43:29.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:43:29.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:43:29.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:43:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:43:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.446229 -999.00  +19.60  12.69     28   +1.00 1 1 1 1 1   888    0 18.78 -30.93 ----- 12.7 12.7 132.4 18.6 26.6 -24.3 25.6 -24.1 26.0 -23.8 27.0 -24.3
2025-11-24T12:43:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:43:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:43:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.446229
2025-11-24T12:43:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:43:29.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:43:29.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:43:29.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:43:29.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:43:29.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:42:55', tmtdew=21.67, humidity=22.97, cloud=0.0, wind=17.19, temperature=19.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:42:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:43:29.834 [DEBUG] [Thread-190213] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:43:29.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:43:29.922 [DEBUG] [Thread-190216] [transport.py] [_log()] starting thread (client mode): 0xd317c0d0
2025-11-24T12:43:29.923 [DEBUG] [Thread-190216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:43:29.937 [DEBUG] [Thread-190216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:43:29.937 [INFO] [Thread-190216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] client lang: <none>
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] server lang: <none>
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] kex follows: False
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:43:29.945 [DEBUG] [Thread-190216] [transport.py] [_log()] Compression: none
2025-11-24T12:43:29.946 [DEBUG] [Thread-190216] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:43:30.003 [DEBUG] [Thread-190216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:43:30.003 [DEBUG] [Thread-190216] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:43:30.003 [DEBUG] [Thread-190216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:43:30.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:43:30.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:43:30.063 [DEBUG] [Thread-190216] [transport.py] [_log()] userauth is OK
2025-11-24T12:43:30.063 [DEBUG] [Thread-190216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:43:30.064 [DEBUG] [Thread-190216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:43:30.064 [DEBUG] [Thread-190216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:43:30.064 [DEBUG] [Thread-190216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:43:30.078 [INFO] [Thread-190216] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:43:30.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:43:30.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:43:30.943 [DEBUG] [Thread-190216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:43:30.943 [DEBUG] [Thread-190216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:43:30.992 [DEBUG] [Thread-190216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:43:30.992 [DEBUG] [Thread-190216] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:43:31.001 [DEBUG] [Thread-190216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:43:31.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:43:31.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-11-24T12:43:31.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-11-24T12:43:31.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:43:31.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:43:31.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:43:31.036 [DEBUG] [Thread-190216] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:43:33.664 [DEBUG] [Thread-190218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:43:48.705 [DEBUG] [Thread-190219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:43:51.735 [DEBUG] [Thread-190220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:43:53.790 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:43:53.791 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:44:01.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:44:01.057 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:44:01.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-11-24T12:44:01.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 43, 28), 21.46, 23.23, 0.0, 18.33, 19.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:44:01.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:43:28
2025-11-24T12:44:02.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:44:02.249 [DEBUG] [Thread-190221] [transport.py] [_log()] starting thread (client mode): 0xd317df30
2025-11-24T12:44:02.249 [DEBUG] [Thread-190221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:44:02.269 [DEBUG] [Thread-190221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:44:02.269 [INFO] [Thread-190221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] client lang: <none>
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] server lang: <none>
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] kex follows: False
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] Compression: none
2025-11-24T12:44:02.272 [DEBUG] [Thread-190221] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:44:02.287 [DEBUG] [Thread-190221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:44:02.287 [DEBUG] [Thread-190221] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:44:02.287 [DEBUG] [Thread-190221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:44:02.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:44:02.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:44:02.288 [DEBUG] [Thread-190221] [transport.py] [_log()] userauth is OK
2025-11-24T12:44:02.288 [DEBUG] [Thread-190221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:44:02.288 [DEBUG] [Thread-190221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:44:02.288 [DEBUG] [Thread-190221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:44:02.288 [DEBUG] [Thread-190221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:44:02.315 [INFO] [Thread-190221] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:44:02.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:44:02.963 [DEBUG] [Thread-190221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:44:02.963 [DEBUG] [Thread-190221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:44:02.963 [DEBUG] [Thread-190221] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:44:03.004 [DEBUG] [Thread-190221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:44:03.004 [DEBUG] [Thread-190221] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:44:03.006 [DEBUG] [Thread-190221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:44:03.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:44:03.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:44:03.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:44:03.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:44:03.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:44:03.023 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:44:03.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:44:03.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:44:03.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:44:03.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.446923 -999.00  +19.90  16.16     28   +1.10 1 1 1 1 1   888    0 18.72 -30.49 ----- 16.2 16.2 166.8 24.7 26.7 -25.0 25.7 -23.7 26.1 -22.6 27.1 -25.5
2025-11-24T12:44:03.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:44:03.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:44:03.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.446923
2025-11-24T12:44:03.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:44:03.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:44:03.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:44:03.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:44:03.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:44:03.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:43:28', tmtdew=21.46, humidity=23.23, cloud=0.0, wind=18.33, temperature=19.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:43:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:44:03.024 [DEBUG] [Thread-190221] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:44:03.099 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:44:03.111 [DEBUG] [Thread-190224] [transport.py] [_log()] starting thread (client mode): 0xd0710ee0
2025-11-24T12:44:03.112 [DEBUG] [Thread-190224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:44:03.126 [DEBUG] [Thread-190224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:44:03.126 [INFO] [Thread-190224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] client lang: <none>
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] server lang: <none>
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] kex follows: False
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] Compression: none
2025-11-24T12:44:03.134 [DEBUG] [Thread-190224] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:44:03.194 [DEBUG] [Thread-190224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:44:03.195 [DEBUG] [Thread-190224] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:44:03.195 [DEBUG] [Thread-190224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:44:03.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:44:03.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:44:03.256 [DEBUG] [Thread-190224] [transport.py] [_log()] userauth is OK
2025-11-24T12:44:03.256 [DEBUG] [Thread-190224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:44:03.256 [DEBUG] [Thread-190224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:44:03.256 [DEBUG] [Thread-190224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:44:03.256 [DEBUG] [Thread-190224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:44:03.270 [INFO] [Thread-190224] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:44:03.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:44:03.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:44:03.747 [DEBUG] [Thread-190226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:44:04.127 [DEBUG] [Thread-190224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:44:04.127 [DEBUG] [Thread-190224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:44:04.175 [DEBUG] [Thread-190224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:44:04.175 [DEBUG] [Thread-190224] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:44:04.184 [DEBUG] [Thread-190224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:44:04.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:44:04.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-11-24T12:44:04.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:44:04.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:44:04.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:44:04.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:44:04.218 [DEBUG] [Thread-190224] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:44:18.784 [DEBUG] [Thread-190227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:44:33.813 [DEBUG] [Thread-190228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:44:34.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:44:34.240 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:44:34.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-11-24T12:44:35.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 44), 21.87, 22.86, 0.0, 24.3, 19.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:44:35.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:44:00
2025-11-24T12:44:35.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:44:35.448 [DEBUG] [Thread-190229] [transport.py] [_log()] starting thread (client mode): 0xd0712cb0
2025-11-24T12:44:35.448 [DEBUG] [Thread-190229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:44:35.468 [DEBUG] [Thread-190229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:44:35.468 [INFO] [Thread-190229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:44:35.471 [DEBUG] [Thread-190229] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] client lang: <none>
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] server lang: <none>
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] kex follows: False
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] Compression: none
2025-11-24T12:44:35.472 [DEBUG] [Thread-190229] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:44:35.487 [DEBUG] [Thread-190229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:44:35.488 [DEBUG] [Thread-190229] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:44:35.488 [DEBUG] [Thread-190229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:44:35.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:44:35.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:44:35.489 [DEBUG] [Thread-190229] [transport.py] [_log()] userauth is OK
2025-11-24T12:44:35.489 [DEBUG] [Thread-190229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:44:35.489 [DEBUG] [Thread-190229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:44:35.489 [DEBUG] [Thread-190229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:44:35.489 [DEBUG] [Thread-190229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:44:35.498 [INFO] [Thread-190229] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:44:35.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:44:36.117 [DEBUG] [Thread-190229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:44:36.118 [DEBUG] [Thread-190229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:44:36.118 [DEBUG] [Thread-190229] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:44:36.159 [DEBUG] [Thread-190229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:44:36.159 [DEBUG] [Thread-190229] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:44:36.162 [DEBUG] [Thread-190229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:44:36.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:44:36.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:44:36.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:44:36.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:44:36.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:44:36.186 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:44:36.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:44:36.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:44:36.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:44:36.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.447270 -999.00  +19.80  14.11     28   +1.10 1 1 1 1 1   888    0 18.03 -27.92 ----- 14.1 14.1 160.0 20.6 26.7 -25.5 25.8 -24.0 26.1 -23.4 27.2 -25.7
2025-11-24T12:44:36.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:44:36.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:44:36.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.447270
2025-11-24T12:44:36.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:44:36.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:44:36.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:44:36.189 [DEBUG] [Thread-190229] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:44:36.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:44:36.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:44:36.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:44:00', tmtdew=21.87, humidity=22.86, cloud=0.0, wind=24.3, temperature=19.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:44:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:44:36.274 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:44:36.286 [DEBUG] [Thread-190232] [transport.py] [_log()] starting thread (client mode): 0xd317df00
2025-11-24T12:44:36.286 [DEBUG] [Thread-190232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:44:36.301 [DEBUG] [Thread-190232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:44:36.301 [INFO] [Thread-190232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:44:36.309 [DEBUG] [Thread-190232] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:44:36.309 [DEBUG] [Thread-190232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:44:36.309 [DEBUG] [Thread-190232] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:44:36.309 [DEBUG] [Thread-190232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:44:36.309 [DEBUG] [Thread-190232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:44:36.310 [DEBUG] [Thread-190232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:44:36.310 [DEBUG] [Thread-190232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:44:36.310 [DEBUG] [Thread-190232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:44:36.310 [DEBUG] [Thread-190232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:44:36.310 [DEBUG] [Thread-190232] [transport.py] [_log()] client lang: <none>
2025-11-24T12:44:36.310 [DEBUG] [Thread-190232] [transport.py] [_log()] server lang: <none>
2025-11-24T12:44:36.310 [DEBUG] [Thread-190232] [transport.py] [_log()] kex follows: False
2025-11-24T12:44:36.310 [DEBUG] [Thread-190232] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:44:36.310 [DEBUG] [Thread-190232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:44:36.311 [DEBUG] [Thread-190232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:44:36.311 [DEBUG] [Thread-190232] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:44:36.311 [DEBUG] [Thread-190232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:44:36.311 [DEBUG] [Thread-190232] [transport.py] [_log()] Compression: none
2025-11-24T12:44:36.311 [DEBUG] [Thread-190232] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:44:36.373 [DEBUG] [Thread-190232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:44:36.374 [DEBUG] [Thread-190232] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:44:36.375 [DEBUG] [Thread-190232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:44:36.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:44:36.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:44:36.432 [DEBUG] [Thread-190232] [transport.py] [_log()] userauth is OK
2025-11-24T12:44:36.433 [DEBUG] [Thread-190232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:44:36.433 [DEBUG] [Thread-190232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:44:36.433 [DEBUG] [Thread-190232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:44:36.433 [DEBUG] [Thread-190232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:44:36.452 [INFO] [Thread-190232] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:44:36.453 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:44:36.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:44:37.321 [DEBUG] [Thread-190232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:44:37.322 [DEBUG] [Thread-190232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:44:37.370 [DEBUG] [Thread-190232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:44:37.370 [DEBUG] [Thread-190232] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:44:37.379 [DEBUG] [Thread-190232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:44:37.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:44:37.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-11-24T12:44:37.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-11-24T12:44:37.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:44:37.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:44:37.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:44:37.417 [DEBUG] [Thread-190232] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:44:48.855 [DEBUG] [Thread-190234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:44:51.829 [DEBUG] [Thread-190235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:44:53.930 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:44:53.931 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:45:03.909 [DEBUG] [Thread-190236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:45:07.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:45:07.439 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:45:07.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-11-24T12:45:08.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 44, 33), 21.64, 23.16, 0.0, 20.1, 19.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:45:08.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:44:33
2025-11-24T12:45:08.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:45:08.606 [DEBUG] [Thread-190237] [transport.py] [_log()] starting thread (client mode): 0xd31b3eb0
2025-11-24T12:45:08.606 [DEBUG] [Thread-190237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:45:08.626 [DEBUG] [Thread-190237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:45:08.627 [INFO] [Thread-190237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:45:08.629 [DEBUG] [Thread-190237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] client lang: <none>
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] server lang: <none>
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] kex follows: False
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] Compression: none
2025-11-24T12:45:08.630 [DEBUG] [Thread-190237] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:45:08.647 [DEBUG] [Thread-190237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:45:08.647 [DEBUG] [Thread-190237] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:45:08.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:45:08.648 [DEBUG] [Thread-190237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:45:08.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:45:08.650 [DEBUG] [Thread-190237] [transport.py] [_log()] userauth is OK
2025-11-24T12:45:08.650 [DEBUG] [Thread-190237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:45:08.650 [DEBUG] [Thread-190237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:45:08.651 [DEBUG] [Thread-190237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:45:08.651 [DEBUG] [Thread-190237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:45:08.683 [INFO] [Thread-190237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:45:08.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:45:11.667 [DEBUG] [Thread-190237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:45:11.667 [DEBUG] [Thread-190237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:45:11.667 [DEBUG] [Thread-190237] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:45:11.708 [DEBUG] [Thread-190237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:45:11.708 [DEBUG] [Thread-190237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:45:11.710 [DEBUG] [Thread-190237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:45:11.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:45:11.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:45:11.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:45:11.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:45:11.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:45:11.727 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:45:11.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.447618 -999.00  +19.90  15.73     28   +1.20 1 1 1 1 1   888    0 18.29 -26.98 ----- 15.7 15.7 150.2 18.6 26.8 -25.4 25.8 -24.2 26.1 -23.0 27.2 -25.0
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.447618
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:45:11.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:45:11.735 [DEBUG] [Thread-190237] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:45:11.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:44:33', tmtdew=21.64, humidity=23.16, cloud=0.0, wind=20.1, temperature=19.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:44:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:45:11.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:45:11.820 [DEBUG] [Thread-190240] [transport.py] [_log()] starting thread (client mode): 0xd3190520
2025-11-24T12:45:11.820 [DEBUG] [Thread-190240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:45:11.834 [DEBUG] [Thread-190240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:45:11.835 [INFO] [Thread-190240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] client lang: <none>
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] server lang: <none>
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] kex follows: False
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:45:11.842 [DEBUG] [Thread-190240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:45:11.843 [DEBUG] [Thread-190240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:45:11.843 [DEBUG] [Thread-190240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:45:11.843 [DEBUG] [Thread-190240] [transport.py] [_log()] Compression: none
2025-11-24T12:45:11.843 [DEBUG] [Thread-190240] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:45:11.898 [DEBUG] [Thread-190240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:45:11.898 [DEBUG] [Thread-190240] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:45:11.898 [DEBUG] [Thread-190240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:45:11.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:45:11.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:45:11.956 [DEBUG] [Thread-190240] [transport.py] [_log()] userauth is OK
2025-11-24T12:45:11.956 [DEBUG] [Thread-190240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:45:11.956 [DEBUG] [Thread-190240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:45:11.956 [DEBUG] [Thread-190240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:45:11.956 [DEBUG] [Thread-190240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:45:11.970 [INFO] [Thread-190240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:45:11.970 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:45:11.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:45:12.792 [DEBUG] [Thread-190240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:45:12.793 [DEBUG] [Thread-190240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:45:12.841 [DEBUG] [Thread-190240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:45:12.842 [DEBUG] [Thread-190240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:45:12.851 [DEBUG] [Thread-190240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:45:12.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:45:12.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:45:12.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-11-24T12:45:12.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:45:12.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:45:12.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:45:12.885 [DEBUG] [Thread-190240] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:45:18.944 [DEBUG] [Thread-190242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:45:33.996 [DEBUG] [Thread-190243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:45:42.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:45:42.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:45:42.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:45:43.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 45, 38), 21.73, 23.03, 0.0, 20.77, 19.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:45:43.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:45:38
2025-11-24T12:45:43.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:45:43.988 [DEBUG] [Thread-190244] [transport.py] [_log()] starting thread (client mode): 0xd3190790
2025-11-24T12:45:43.988 [DEBUG] [Thread-190244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:45:44.012 [DEBUG] [Thread-190244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:45:44.013 [INFO] [Thread-190244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:45:44.016 [DEBUG] [Thread-190244] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:45:44.016 [DEBUG] [Thread-190244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:45:44.016 [DEBUG] [Thread-190244] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:45:44.016 [DEBUG] [Thread-190244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:45:44.016 [DEBUG] [Thread-190244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:45:44.016 [DEBUG] [Thread-190244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:45:44.016 [DEBUG] [Thread-190244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:45:44.016 [DEBUG] [Thread-190244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] client lang: <none>
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] server lang: <none>
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] kex follows: False
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] Compression: none
2025-11-24T12:45:44.017 [DEBUG] [Thread-190244] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:45:44.033 [DEBUG] [Thread-190244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:45:44.033 [DEBUG] [Thread-190244] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:45:44.033 [DEBUG] [Thread-190244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:45:44.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:45:44.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:45:44.034 [DEBUG] [Thread-190244] [transport.py] [_log()] userauth is OK
2025-11-24T12:45:44.034 [DEBUG] [Thread-190244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:45:44.034 [DEBUG] [Thread-190244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:45:44.034 [DEBUG] [Thread-190244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:45:44.034 [DEBUG] [Thread-190244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:45:44.052 [INFO] [Thread-190244] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:45:44.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:45:44.699 [DEBUG] [Thread-190244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:45:44.699 [DEBUG] [Thread-190244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:45:44.699 [DEBUG] [Thread-190244] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:45:44.740 [DEBUG] [Thread-190244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:45:44.740 [DEBUG] [Thread-190244] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:45:44.742 [DEBUG] [Thread-190244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:45:44.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:45:44.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:45:44.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:45:44.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:45:44.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:45:44.769 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:45:44.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:45:44.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:45:44.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:45:44.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.447965 -999.00  +20.00  23.00     28   +1.30 1 1 1 1 1   888    0 18.51 -24.87 ----- 23.0 23.0 180.2 27.8 26.7 -26.9 25.4 -27.7 26.1 -23.9 27.2 -26.0
2025-11-24T12:45:44.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:45:44.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:45:44.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.447965
2025-11-24T12:45:44.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:45:44.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:45:44.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:45:44.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:45:44.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:45:44.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:45:38', tmtdew=21.73, humidity=23.03, cloud=0.0, wind=20.77, temperature=19.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:45:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:45:44.771 [DEBUG] [Thread-190244] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:45:44.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:45:44.855 [DEBUG] [Thread-190247] [transport.py] [_log()] starting thread (client mode): 0xc9b83fd0
2025-11-24T12:45:44.855 [DEBUG] [Thread-190247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:45:44.869 [DEBUG] [Thread-190247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:45:44.869 [INFO] [Thread-190247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] client lang: <none>
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] server lang: <none>
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] kex follows: False
2025-11-24T12:45:44.877 [DEBUG] [Thread-190247] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:45:44.878 [DEBUG] [Thread-190247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:45:44.878 [DEBUG] [Thread-190247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:45:44.878 [DEBUG] [Thread-190247] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:45:44.878 [DEBUG] [Thread-190247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:45:44.878 [DEBUG] [Thread-190247] [transport.py] [_log()] Compression: none
2025-11-24T12:45:44.878 [DEBUG] [Thread-190247] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:45:44.935 [DEBUG] [Thread-190247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:45:44.935 [DEBUG] [Thread-190247] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:45:44.935 [DEBUG] [Thread-190247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:45:44.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:45:44.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:45:44.992 [DEBUG] [Thread-190247] [transport.py] [_log()] userauth is OK
2025-11-24T12:45:44.992 [DEBUG] [Thread-190247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:45:44.992 [DEBUG] [Thread-190247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:45:44.992 [DEBUG] [Thread-190247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:45:44.992 [DEBUG] [Thread-190247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:45:45.006 [INFO] [Thread-190247] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:45:45.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:45:45.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:45:45.844 [DEBUG] [Thread-190247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:45:45.844 [DEBUG] [Thread-190247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:45:45.892 [DEBUG] [Thread-190247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:45:45.892 [DEBUG] [Thread-190247] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:45:45.901 [DEBUG] [Thread-190247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:45:45.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:45:45.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-11-24T12:45:45.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-11-24T12:45:45.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:45:45.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:45:45.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:45:45.935 [DEBUG] [Thread-190247] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:45:49.028 [DEBUG] [Thread-190249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:45:52.083 [DEBUG] [Thread-190250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:45:54.070 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:45:54.070 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:46:04.073 [DEBUG] [Thread-190251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:46:15.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:46:15.958 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:46:15.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-11-24T12:46:16.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 46, 10), 22.29, 22.27, 0.0, 27.3, 20.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:46:16.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:46:10
2025-11-24T12:46:16.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:46:17.057 [DEBUG] [Thread-190252] [transport.py] [_log()] starting thread (client mode): 0xd0712aa0
2025-11-24T12:46:17.057 [DEBUG] [Thread-190252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:46:17.077 [DEBUG] [Thread-190252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:46:17.077 [INFO] [Thread-190252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:46:17.087 [DEBUG] [Thread-190252] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:46:17.087 [DEBUG] [Thread-190252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:46:17.087 [DEBUG] [Thread-190252] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:46:17.087 [DEBUG] [Thread-190252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:46:17.087 [DEBUG] [Thread-190252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:46:17.087 [DEBUG] [Thread-190252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:46:17.087 [DEBUG] [Thread-190252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:46:17.087 [DEBUG] [Thread-190252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:46:17.088 [DEBUG] [Thread-190252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:46:17.088 [DEBUG] [Thread-190252] [transport.py] [_log()] client lang: <none>
2025-11-24T12:46:17.088 [DEBUG] [Thread-190252] [transport.py] [_log()] server lang: <none>
2025-11-24T12:46:17.088 [DEBUG] [Thread-190252] [transport.py] [_log()] kex follows: False
2025-11-24T12:46:17.088 [DEBUG] [Thread-190252] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:46:17.088 [DEBUG] [Thread-190252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:46:17.088 [DEBUG] [Thread-190252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:46:17.088 [DEBUG] [Thread-190252] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:46:17.088 [DEBUG] [Thread-190252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:46:17.088 [DEBUG] [Thread-190252] [transport.py] [_log()] Compression: none
2025-11-24T12:46:17.089 [DEBUG] [Thread-190252] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:46:17.108 [DEBUG] [Thread-190252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:46:17.109 [DEBUG] [Thread-190252] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:46:17.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:46:17.110 [DEBUG] [Thread-190252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:46:17.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:46:17.112 [DEBUG] [Thread-190252] [transport.py] [_log()] userauth is OK
2025-11-24T12:46:17.113 [DEBUG] [Thread-190252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:46:17.113 [DEBUG] [Thread-190252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:46:17.113 [DEBUG] [Thread-190252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:46:17.113 [DEBUG] [Thread-190252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:46:17.130 [INFO] [Thread-190252] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:46:17.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:46:17.693 [DEBUG] [Thread-190252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:46:17.702 [DEBUG] [Thread-190252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:46:17.703 [DEBUG] [Thread-190252] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:46:17.735 [DEBUG] [Thread-190252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:46:17.735 [DEBUG] [Thread-190252] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:46:17.739 [DEBUG] [Thread-190252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:46:17.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:46:17.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:46:17.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:46:17.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:46:17.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:46:17.764 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:46:17.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:46:17.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:46:17.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:46:17.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.448312 -999.00  +20.60  18.36     27   +1.30 1 1 1 1 1   888    0 18.60 -21.70 ----- 18.4 18.4 180.8 22.4 26.9 -24.9 25.7 -28.3 26.2 -24.4 27.2 -24.3
2025-11-24T12:46:17.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:46:17.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:46:17.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.448312
2025-11-24T12:46:17.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:46:17.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:46:17.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:46:17.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:46:17.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:46:17.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:46:10', tmtdew=22.29, humidity=22.27, cloud=0.0, wind=27.3, temperature=20.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:45:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:46:17.768 [DEBUG] [Thread-190252] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:46:17.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:46:17.862 [DEBUG] [Thread-190255] [transport.py] [_log()] starting thread (client mode): 0xd0702b90
2025-11-24T12:46:17.862 [DEBUG] [Thread-190255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:46:17.876 [DEBUG] [Thread-190255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:46:17.876 [INFO] [Thread-190255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:46:17.883 [DEBUG] [Thread-190255] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] client lang: <none>
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] server lang: <none>
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] kex follows: False
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:46:17.884 [DEBUG] [Thread-190255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:46:17.885 [DEBUG] [Thread-190255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:46:17.885 [DEBUG] [Thread-190255] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:46:17.885 [DEBUG] [Thread-190255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:46:17.885 [DEBUG] [Thread-190255] [transport.py] [_log()] Compression: none
2025-11-24T12:46:17.885 [DEBUG] [Thread-190255] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:46:17.940 [DEBUG] [Thread-190255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:46:17.941 [DEBUG] [Thread-190255] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:46:17.941 [DEBUG] [Thread-190255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:46:17.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:46:17.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:46:17.996 [DEBUG] [Thread-190255] [transport.py] [_log()] userauth is OK
2025-11-24T12:46:17.997 [DEBUG] [Thread-190255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:46:18.006 [DEBUG] [Thread-190255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:46:18.006 [DEBUG] [Thread-190255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:46:18.006 [DEBUG] [Thread-190255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:46:18.025 [INFO] [Thread-190255] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:46:18.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:46:18.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:46:18.834 [DEBUG] [Thread-190255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:46:18.835 [DEBUG] [Thread-190255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:46:18.883 [DEBUG] [Thread-190255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:46:18.883 [DEBUG] [Thread-190255] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:46:18.892 [DEBUG] [Thread-190255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:46:18.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:46:18.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')
2025-11-24T12:46:18.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:46:18.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:46:18.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:46:18.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:46:18.924 [DEBUG] [Thread-190255] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:46:19.105 [DEBUG] [Thread-190257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:46:34.145 [DEBUG] [Thread-190258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:46:48.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:46:48.923 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:46:48.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-11-24T12:46:49.178 [DEBUG] [Thread-190259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:46:49.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 46, 43), 22.72, 21.94, 0.0, 27.05, 20.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:46:49.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:46:43
2025-11-24T12:46:49.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:46:50.006 [DEBUG] [Thread-190260] [transport.py] [_log()] starting thread (client mode): 0xd0702350
2025-11-24T12:46:50.006 [DEBUG] [Thread-190260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:46:50.026 [DEBUG] [Thread-190260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:46:50.026 [INFO] [Thread-190260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] client lang: <none>
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] server lang: <none>
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] kex follows: False
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] Compression: none
2025-11-24T12:46:50.029 [DEBUG] [Thread-190260] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:46:50.045 [DEBUG] [Thread-190260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:46:50.045 [DEBUG] [Thread-190260] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:46:50.045 [DEBUG] [Thread-190260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:46:50.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:46:50.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:46:50.087 [DEBUG] [Thread-190260] [transport.py] [_log()] userauth is OK
2025-11-24T12:46:50.087 [DEBUG] [Thread-190260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:46:50.087 [DEBUG] [Thread-190260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:46:50.087 [DEBUG] [Thread-190260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:46:50.087 [DEBUG] [Thread-190260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:46:50.103 [INFO] [Thread-190260] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:46:50.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:46:50.748 [DEBUG] [Thread-190260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:46:50.749 [DEBUG] [Thread-190260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:46:50.749 [DEBUG] [Thread-190260] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:46:50.790 [DEBUG] [Thread-190260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:46:50.790 [DEBUG] [Thread-190260] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:46:50.792 [DEBUG] [Thread-190260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:46:50.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:46:50.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:46:50.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:46:50.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:46:50.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:46:50.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:46:50.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:46:50.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:46:50.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:46:50.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.448659 -999.00  +20.70  23.82     26   +0.90 1 1 1 1 1   888    0 19.35 -19.79 ----- 23.8 23.8 167.9 27.8 26.8 -26.7 25.8 -24.4 26.2 -24.7 27.2 -25.5
2025-11-24T12:46:50.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:46:50.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:46:50.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.448659
2025-11-24T12:46:50.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:46:50.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:46:50.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:46:50.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:46:50.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:46:50.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:46:43', tmtdew=22.72, humidity=21.94, cloud=0.0, wind=27.05, temperature=20.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:46:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:46:50.822 [DEBUG] [Thread-190260] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:46:50.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:46:50.908 [DEBUG] [Thread-190263] [transport.py] [_log()] starting thread (client mode): 0xd0710880
2025-11-24T12:46:50.908 [DEBUG] [Thread-190263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:46:50.922 [DEBUG] [Thread-190263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:46:50.922 [INFO] [Thread-190263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] client lang: <none>
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] server lang: <none>
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] kex follows: False
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] Compression: none
2025-11-24T12:46:50.930 [DEBUG] [Thread-190263] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:46:50.987 [DEBUG] [Thread-190263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:46:50.988 [DEBUG] [Thread-190263] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:46:50.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:46:50.989 [DEBUG] [Thread-190263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:46:50.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:46:51.044 [DEBUG] [Thread-190263] [transport.py] [_log()] userauth is OK
2025-11-24T12:46:51.044 [DEBUG] [Thread-190263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:46:51.044 [DEBUG] [Thread-190263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:46:51.044 [DEBUG] [Thread-190263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:46:51.044 [DEBUG] [Thread-190263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:46:51.064 [INFO] [Thread-190263] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:46:51.065 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:46:51.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:46:51.943 [DEBUG] [Thread-190263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:46:51.944 [DEBUG] [Thread-190263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:46:51.991 [DEBUG] [Thread-190263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:46:51.992 [DEBUG] [Thread-190263] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:46:52.001 [DEBUG] [Thread-190263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:46:52.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:46:52.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-11-24T12:46:52.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-11-24T12:46:52.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:46:52.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:46:52.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:46:52.038 [DEBUG] [Thread-190263] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:46:52.413 [DEBUG] [Thread-190265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:46:54.213 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:46:54.214 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:47:04.211 [DEBUG] [Thread-190266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:47:19.266 [DEBUG] [Thread-190267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:47:22.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:47:22.043 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:47:22.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-11-24T12:47:22.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 47, 15), 22.62, 22.05, 0.0, 23.75, 20.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:47:22.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:47:15
2025-11-24T12:47:23.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:47:23.179 [DEBUG] [Thread-190268] [transport.py] [_log()] starting thread (client mode): 0xd31b3700
2025-11-24T12:47:23.179 [DEBUG] [Thread-190268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:47:23.193 [DEBUG] [Thread-190268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:47:23.193 [INFO] [Thread-190268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] client lang: <none>
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] server lang: <none>
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] kex follows: False
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] Compression: none
2025-11-24T12:47:23.195 [DEBUG] [Thread-190268] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:47:23.203 [DEBUG] [Thread-190268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:47:23.203 [DEBUG] [Thread-190268] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:47:23.203 [DEBUG] [Thread-190268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:47:23.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:47:23.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:47:23.204 [DEBUG] [Thread-190268] [transport.py] [_log()] userauth is OK
2025-11-24T12:47:23.204 [DEBUG] [Thread-190268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:47:23.204 [DEBUG] [Thread-190268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:47:23.204 [DEBUG] [Thread-190268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:47:23.204 [DEBUG] [Thread-190268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:47:23.216 [INFO] [Thread-190268] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:47:23.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:47:23.858 [DEBUG] [Thread-190268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:47:23.858 [DEBUG] [Thread-190268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:47:23.858 [DEBUG] [Thread-190268] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:47:23.899 [DEBUG] [Thread-190268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:47:23.899 [DEBUG] [Thread-190268] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:47:23.901 [DEBUG] [Thread-190268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:47:23.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:47:23.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:47:23.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:47:23.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:47:23.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:47:23.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:47:23.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:47:23.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:47:23.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:47:23.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.449007 -999.00  +20.50  20.79     27   +1.00 1 1 1 1 1   888    0 19.12 -19.35 ----- 20.8 20.8 186.4 27.2 26.9 -25.7 25.7 -26.7 26.3 -23.7 27.3 -25.3
2025-11-24T12:47:23.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:47:23.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:47:23.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.449007
2025-11-24T12:47:23.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:47:23.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:47:23.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:47:23.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:47:23.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:47:23.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:47:15', tmtdew=22.62, humidity=22.05, cloud=0.0, wind=23.75, temperature=20.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:46:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:47:23.919 [DEBUG] [Thread-190268] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:47:23.993 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:47:24.002 [DEBUG] [Thread-190271] [transport.py] [_log()] starting thread (client mode): 0xc9b82c80
2025-11-24T12:47:24.002 [DEBUG] [Thread-190271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:47:24.019 [DEBUG] [Thread-190271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:47:24.019 [INFO] [Thread-190271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:47:24.027 [DEBUG] [Thread-190271] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:47:24.027 [DEBUG] [Thread-190271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:47:24.027 [DEBUG] [Thread-190271] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:47:24.027 [DEBUG] [Thread-190271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:47:24.027 [DEBUG] [Thread-190271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:47:24.027 [DEBUG] [Thread-190271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:47:24.027 [DEBUG] [Thread-190271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:47:24.027 [DEBUG] [Thread-190271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:47:24.027 [DEBUG] [Thread-190271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:47:24.028 [DEBUG] [Thread-190271] [transport.py] [_log()] client lang: <none>
2025-11-24T12:47:24.028 [DEBUG] [Thread-190271] [transport.py] [_log()] server lang: <none>
2025-11-24T12:47:24.028 [DEBUG] [Thread-190271] [transport.py] [_log()] kex follows: False
2025-11-24T12:47:24.028 [DEBUG] [Thread-190271] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:47:24.028 [DEBUG] [Thread-190271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:47:24.028 [DEBUG] [Thread-190271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:47:24.028 [DEBUG] [Thread-190271] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:47:24.028 [DEBUG] [Thread-190271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:47:24.028 [DEBUG] [Thread-190271] [transport.py] [_log()] Compression: none
2025-11-24T12:47:24.028 [DEBUG] [Thread-190271] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:47:24.086 [DEBUG] [Thread-190271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:47:24.087 [DEBUG] [Thread-190271] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:47:24.087 [DEBUG] [Thread-190271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:47:24.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:47:24.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:47:24.143 [DEBUG] [Thread-190271] [transport.py] [_log()] userauth is OK
2025-11-24T12:47:24.143 [DEBUG] [Thread-190271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:47:24.144 [DEBUG] [Thread-190271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:47:24.144 [DEBUG] [Thread-190271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:47:24.144 [DEBUG] [Thread-190271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:47:24.157 [INFO] [Thread-190271] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:47: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-11-24T12:47:24.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:47:25.000 [DEBUG] [Thread-190271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:47:25.000 [DEBUG] [Thread-190271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:47:25.048 [DEBUG] [Thread-190271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:47:25.048 [DEBUG] [Thread-190271] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:47:25.056 [DEBUG] [Thread-190271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:47:25.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:47:25.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-11-24T12:47:25.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-11-24T12:47:25.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:47:25.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:47:25.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:47:25.088 [DEBUG] [Thread-190271] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:47:34.293 [DEBUG] [Thread-190273 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:47:49.341 [DEBUG] [Thread-190274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:47:52.457 [DEBUG] [Thread-190275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:47:54.358 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:47:54.359 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:47:55.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:47:55.111 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:47:55.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-11-24T12:47:55.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 47, 48), 23.05, 20.98, 0.0, 28.25, 20.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:47:55.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:47:48
2025-11-24T12:47:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:47:56.185 [DEBUG] [Thread-190276] [transport.py] [_log()] starting thread (client mode): 0xd31b2ad0
2025-11-24T12:47:56.185 [DEBUG] [Thread-190276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:47:56.206 [DEBUG] [Thread-190276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:47:56.206 [INFO] [Thread-190276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:47:56.209 [DEBUG] [Thread-190276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] client lang: <none>
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] server lang: <none>
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] kex follows: False
2025-11-24T12:47:56.210 [DEBUG] [Thread-190276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:47:56.219 [DEBUG] [Thread-190276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:47:56.219 [DEBUG] [Thread-190276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:47:56.219 [DEBUG] [Thread-190276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:47:56.220 [DEBUG] [Thread-190276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:47:56.220 [DEBUG] [Thread-190276] [transport.py] [_log()] Compression: none
2025-11-24T12:47:56.220 [DEBUG] [Thread-190276] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:47:56.238 [DEBUG] [Thread-190276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:47:56.238 [DEBUG] [Thread-190276] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:47:56.239 [DEBUG] [Thread-190276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:47:56.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:47:56.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:47:56.241 [DEBUG] [Thread-190276] [transport.py] [_log()] userauth is OK
2025-11-24T12:47:56.241 [DEBUG] [Thread-190276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:47:56.241 [DEBUG] [Thread-190276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:47:56.241 [DEBUG] [Thread-190276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:47:56.241 [DEBUG] [Thread-190276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:47:56.265 [INFO] [Thread-190276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:47:56.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:47:56.857 [DEBUG] [Thread-190276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:47:56.857 [DEBUG] [Thread-190276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:47:56.857 [DEBUG] [Thread-190276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:47:56.898 [DEBUG] [Thread-190276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:47:56.898 [DEBUG] [Thread-190276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:47:56.900 [DEBUG] [Thread-190276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:47:56.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:47:56.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:47:56.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:47:56.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:47:56.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:47:56.924 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:47:56.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.449702 -999.00  +20.70  20.72     26   +0.90 1 1 1 1 1   888    0 19.07 -9.36 ----- 20.7 20.7 193.0 33.7 26.7 -27.6 25.3 -28.6 26.1 -24.6 27.1 -26.4
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.449702
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:47:56.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:47:48', tmtdew=23.05, humidity=20.98, cloud=0.0, wind=28.25, temperature=20.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:47:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:47:56.925 [DEBUG] [Thread-190276] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:47:56.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:47:57.008 [DEBUG] [Thread-190279] [transport.py] [_log()] starting thread (client mode): 0xd3150160
2025-11-24T12:47:57.009 [DEBUG] [Thread-190279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:47:57.025 [DEBUG] [Thread-190279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:47:57.025 [INFO] [Thread-190279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] client lang: <none>
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] server lang: <none>
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] kex follows: False
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] Compression: none
2025-11-24T12:47:57.033 [DEBUG] [Thread-190279] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:47:57.090 [DEBUG] [Thread-190279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:47:57.091 [DEBUG] [Thread-190279] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:47:57.091 [DEBUG] [Thread-190279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:47:57.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:47:57.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:47:57.147 [DEBUG] [Thread-190279] [transport.py] [_log()] userauth is OK
2025-11-24T12:47:57.147 [DEBUG] [Thread-190279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:47:57.147 [DEBUG] [Thread-190279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:47:57.147 [DEBUG] [Thread-190279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:47:57.147 [DEBUG] [Thread-190279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:47:57.165 [INFO] [Thread-190279] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:47:57.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:47:57.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:47:58.046 [DEBUG] [Thread-190279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:47:58.046 [DEBUG] [Thread-190279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:47:58.093 [DEBUG] [Thread-190279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:47:58.093 [DEBUG] [Thread-190279] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:47:58.102 [DEBUG] [Thread-190279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:47:58.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:47:58.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-11-24T12:47:58.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-11-24T12:47:58.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:47:58.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:47:58.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:47:58.136 [DEBUG] [Thread-190279] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:48:04.369 [DEBUG] [Thread-190281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:48:19.408 [DEBUG] [Thread-190282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:48:28.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:48:28.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:48:28.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-11-24T12:48:28.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 48, 20), 23.1, 20.92, 0.0, 24.47, 20.88, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:48:28.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:48:20
2025-11-24T12:48:29.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:48:29.223 [DEBUG] [Thread-190283] [transport.py] [_log()] starting thread (client mode): 0xd07103d0
2025-11-24T12:48:29.223 [DEBUG] [Thread-190283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:48:29.236 [DEBUG] [Thread-190283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:48:29.236 [INFO] [Thread-190283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:48:29.238 [DEBUG] [Thread-190283] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:48:29.238 [DEBUG] [Thread-190283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:48:29.238 [DEBUG] [Thread-190283] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] client lang: <none>
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] server lang: <none>
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] kex follows: False
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] Compression: none
2025-11-24T12:48:29.239 [DEBUG] [Thread-190283] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:48:29.247 [DEBUG] [Thread-190283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:48:29.248 [DEBUG] [Thread-190283] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:48:29.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:48:29.249 [DEBUG] [Thread-190283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:48:29.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:48:29.250 [DEBUG] [Thread-190283] [transport.py] [_log()] userauth is OK
2025-11-24T12:48:29.250 [DEBUG] [Thread-190283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:48:29.251 [DEBUG] [Thread-190283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:48:29.251 [DEBUG] [Thread-190283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:48:29.251 [DEBUG] [Thread-190283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:48:29.279 [INFO] [Thread-190283] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:48:29.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:48:29.923 [DEBUG] [Thread-190283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:48:29.924 [DEBUG] [Thread-190283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:48:29.924 [DEBUG] [Thread-190283] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:48:29.965 [DEBUG] [Thread-190283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:48:29.965 [DEBUG] [Thread-190283] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:48:29.968 [DEBUG] [Thread-190283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:48:29.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:48:29.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:48:29.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:48:29.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:48:30.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:48:30.002 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:48:30.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:48:30.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:48:30.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:48:30.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.450048 -999.00  +20.70  16.29     27   +1.10 1 1 1 1 1   888    0 19.34 -8.71 ----- 16.3 16.3 185.2 22.5 26.8 -26.5 25.6 -25.3 26.2 -25.3 27.2 -25.7
2025-11-24T12:48:30.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:48:30.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:48:30.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.450048
2025-11-24T12:48:30.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:48:30.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:48:30.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:48:30.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:48:30.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:48:30.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:48:20', tmtdew=23.1, humidity=20.92, cloud=0.0, wind=24.47, temperature=20.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:48:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:48:30.006 [DEBUG] [Thread-190283] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:48:30.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:48:30.102 [DEBUG] [Thread-190286] [transport.py] [_log()] starting thread (client mode): 0xd0712860
2025-11-24T12:48:30.102 [DEBUG] [Thread-190286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:48:30.117 [DEBUG] [Thread-190286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:48:30.117 [INFO] [Thread-190286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] client lang: <none>
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] server lang: <none>
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] kex follows: False
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:48:30.125 [DEBUG] [Thread-190286] [transport.py] [_log()] Compression: none
2025-11-24T12:48:30.126 [DEBUG] [Thread-190286] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:48:30.184 [DEBUG] [Thread-190286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:48:30.184 [DEBUG] [Thread-190286] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:48:30.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:48:30.186 [DEBUG] [Thread-190286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:48:30.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:48:30.240 [DEBUG] [Thread-190286] [transport.py] [_log()] userauth is OK
2025-11-24T12:48:30.240 [DEBUG] [Thread-190286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:48:30.240 [DEBUG] [Thread-190286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:48:30.240 [DEBUG] [Thread-190286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:48:30.241 [DEBUG] [Thread-190286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:48:30.260 [INFO] [Thread-190286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:48:30.260 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:48:30.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:48:31.126 [DEBUG] [Thread-190286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:48:31.126 [DEBUG] [Thread-190286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:48:31.174 [DEBUG] [Thread-190286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:48:31.174 [DEBUG] [Thread-190286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:48:31.182 [DEBUG] [Thread-190286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:48:31.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:48:31.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-11-24T12:48:31.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-11-24T12:48:31.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:48:31.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:48:31.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:48:31.213 [DEBUG] [Thread-190286] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:48:34.441 [DEBUG] [Thread-190288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:48:49.503 [DEBUG] [Thread-190289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:48:52.806 [DEBUG] [Thread-190290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:48:54.499 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:48:54.500 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:49:01.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:49:01.236 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:49:01.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:49:02.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 48, 52), 22.42, 22.15, 0.0, 18.69, 20.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:49:02.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:48:52
2025-11-24T12:49:02.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:49:02.299 [DEBUG] [Thread-190291] [transport.py] [_log()] starting thread (client mode): 0xd0703250
2025-11-24T12:49:02.299 [DEBUG] [Thread-190291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:49:02.318 [DEBUG] [Thread-190291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:49:02.318 [INFO] [Thread-190291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] client lang: <none>
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] server lang: <none>
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] kex follows: False
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:49:02.321 [DEBUG] [Thread-190291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:49:02.322 [DEBUG] [Thread-190291] [transport.py] [_log()] Compression: none
2025-11-24T12:49:02.322 [DEBUG] [Thread-190291] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:49:02.336 [DEBUG] [Thread-190291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:49:02.337 [DEBUG] [Thread-190291] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:49:02.337 [DEBUG] [Thread-190291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:49:02.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:49:02.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:49:02.338 [DEBUG] [Thread-190291] [transport.py] [_log()] userauth is OK
2025-11-24T12:49:02.338 [DEBUG] [Thread-190291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:49:02.338 [DEBUG] [Thread-190291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:49:02.338 [DEBUG] [Thread-190291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:49:02.338 [DEBUG] [Thread-190291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:49:02.354 [INFO] [Thread-190291] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:49:02.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:49:02.985 [DEBUG] [Thread-190291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:49:02.986 [DEBUG] [Thread-190291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:49:02.986 [DEBUG] [Thread-190291] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:49:03.026 [DEBUG] [Thread-190291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:49:03.027 [DEBUG] [Thread-190291] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:49:03.030 [DEBUG] [Thread-190291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:49:03.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:49:03.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:49:03.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:49:03.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:49:03.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:49:03.052 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:49:03.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:49:03.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:49:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:49:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.450395 -999.00  +20.70  19.07     28   +1.50 1 1 1 1 1   888    0 18.94 -11.79 ----- 19.1 19.1 179.4 26.6 26.8 -27.0 25.5 -28.7 26.2 -25.4 27.3 -24.7
2025-11-24T12:49:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:49:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:49:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.450395
2025-11-24T12:49:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:49:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:49:03.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:49:03.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:49:03.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:49:03.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:48:52', tmtdew=22.42, humidity=22.15, cloud=0.0, wind=18.69, temperature=20.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:48:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:49:03.055 [DEBUG] [Thread-190291] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:49:03.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:49:03.161 [DEBUG] [Thread-190294] [transport.py] [_log()] starting thread (client mode): 0xd31515d0
2025-11-24T12:49:03.161 [DEBUG] [Thread-190294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:49:03.175 [DEBUG] [Thread-190294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:49:03.175 [INFO] [Thread-190294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:49:03.183 [DEBUG] [Thread-190294] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:49:03.183 [DEBUG] [Thread-190294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:49:03.183 [DEBUG] [Thread-190294] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:49:03.183 [DEBUG] [Thread-190294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:49:03.183 [DEBUG] [Thread-190294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:49:03.183 [DEBUG] [Thread-190294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:49:03.183 [DEBUG] [Thread-190294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:49:03.183 [DEBUG] [Thread-190294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:49:03.183 [DEBUG] [Thread-190294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:49:03.183 [DEBUG] [Thread-190294] [transport.py] [_log()] client lang: <none>
2025-11-24T12:49:03.184 [DEBUG] [Thread-190294] [transport.py] [_log()] server lang: <none>
2025-11-24T12:49:03.184 [DEBUG] [Thread-190294] [transport.py] [_log()] kex follows: False
2025-11-24T12:49:03.184 [DEBUG] [Thread-190294] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:49:03.184 [DEBUG] [Thread-190294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:49:03.184 [DEBUG] [Thread-190294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:49:03.184 [DEBUG] [Thread-190294] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:49:03.184 [DEBUG] [Thread-190294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:49:03.184 [DEBUG] [Thread-190294] [transport.py] [_log()] Compression: none
2025-11-24T12:49:03.184 [DEBUG] [Thread-190294] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:49:03.240 [DEBUG] [Thread-190294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:49:03.241 [DEBUG] [Thread-190294] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:49:03.241 [DEBUG] [Thread-190294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:49:03.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:49:03.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:49:03.296 [DEBUG] [Thread-190294] [transport.py] [_log()] userauth is OK
2025-11-24T12:49:03.296 [DEBUG] [Thread-190294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:49:03.296 [DEBUG] [Thread-190294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:49:03.296 [DEBUG] [Thread-190294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:49:03.296 [DEBUG] [Thread-190294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:49:03.314 [INFO] [Thread-190294] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:49: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-11-24T12:49:03.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:49:04.191 [DEBUG] [Thread-190294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:49:04.191 [DEBUG] [Thread-190294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:49:04.239 [DEBUG] [Thread-190294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:49:04.239 [DEBUG] [Thread-190294] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:49:04.247 [DEBUG] [Thread-190294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:49:04.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:49: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')
2025-11-24T12:49:04.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-11-24T12:49:04.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:49:04.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:49:04.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:49:04.280 [DEBUG] [Thread-190294] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:49:04.538 [DEBUG] [Thread-190296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:49:19.579 [DEBUG] [Thread-190297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:49:34.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:49:34.303 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:49:34.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-11-24T12:49:34.605 [DEBUG] [Thread-190298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:49:35.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 49, 25), 22.11, 22.65, 0.0, 22.11, 20.27, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:49:35.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:49:25
2025-11-24T12:49:35.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:49:35.393 [DEBUG] [Thread-190299] [transport.py] [_log()] starting thread (client mode): 0xd31503a0
2025-11-24T12:49:35.393 [DEBUG] [Thread-190299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:49:35.413 [DEBUG] [Thread-190299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:49:35.414 [INFO] [Thread-190299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] client lang: <none>
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] server lang: <none>
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] kex follows: False
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:49:35.417 [DEBUG] [Thread-190299] [transport.py] [_log()] Compression: none
2025-11-24T12:49:35.418 [DEBUG] [Thread-190299] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:49:35.434 [DEBUG] [Thread-190299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:49:35.435 [DEBUG] [Thread-190299] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:49:35.436 [DEBUG] [Thread-190299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:49:35.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:49:35.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:49:35.438 [DEBUG] [Thread-190299] [transport.py] [_log()] userauth is OK
2025-11-24T12:49:35.438 [DEBUG] [Thread-190299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:49:35.438 [DEBUG] [Thread-190299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:49:35.438 [DEBUG] [Thread-190299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:49:35.438 [DEBUG] [Thread-190299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:49:35.456 [INFO] [Thread-190299] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:49:35.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:49:36.080 [DEBUG] [Thread-190299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:49:36.080 [DEBUG] [Thread-190299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:49:36.081 [DEBUG] [Thread-190299] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:49:36.120 [DEBUG] [Thread-190299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:49:36.121 [DEBUG] [Thread-190299] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:49:36.124 [DEBUG] [Thread-190299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:49:36.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:49:36.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:49:36.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:49:36.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:49:36.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:49:36.149 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:49:36.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:49:36.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:49:36.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:49:36.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.450743 -999.00  +20.60  25.08     27   +1.30 1 1 1 1 1   888    0 19.36 -14.46 ----- 25.1 25.1 200.6 34.9 26.6 -26.9 25.5 -28.6 26.1 -26.1 27.1 -26.9
2025-11-24T12:49:36.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:49:36.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:49:36.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.450743
2025-11-24T12:49:36.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:49:36.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:49:36.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:49:36.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:49:36.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:49:36.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:49:25', tmtdew=22.11, humidity=22.65, cloud=0.0, wind=22.11, temperature=20.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:49:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:49:36.152 [DEBUG] [Thread-190299] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:49:36.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:49:36.249 [DEBUG] [Thread-190302] [transport.py] [_log()] starting thread (client mode): 0xd3192920
2025-11-24T12:49:36.249 [DEBUG] [Thread-190302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:49:36.264 [DEBUG] [Thread-190302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:49:36.264 [INFO] [Thread-190302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:49:36.272 [DEBUG] [Thread-190302] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:49:36.272 [DEBUG] [Thread-190302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:49:36.272 [DEBUG] [Thread-190302] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:49:36.272 [DEBUG] [Thread-190302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:49:36.272 [DEBUG] [Thread-190302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:49:36.273 [DEBUG] [Thread-190302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:49:36.273 [DEBUG] [Thread-190302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:49:36.273 [DEBUG] [Thread-190302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:49:36.273 [DEBUG] [Thread-190302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:49:36.273 [DEBUG] [Thread-190302] [transport.py] [_log()] client lang: <none>
2025-11-24T12:49:36.273 [DEBUG] [Thread-190302] [transport.py] [_log()] server lang: <none>
2025-11-24T12:49:36.273 [DEBUG] [Thread-190302] [transport.py] [_log()] kex follows: False
2025-11-24T12:49:36.273 [DEBUG] [Thread-190302] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:49:36.273 [DEBUG] [Thread-190302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:49:36.274 [DEBUG] [Thread-190302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:49:36.274 [DEBUG] [Thread-190302] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:49:36.274 [DEBUG] [Thread-190302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:49:36.274 [DEBUG] [Thread-190302] [transport.py] [_log()] Compression: none
2025-11-24T12:49:36.274 [DEBUG] [Thread-190302] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:49:36.332 [DEBUG] [Thread-190302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:49:36.333 [DEBUG] [Thread-190302] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:49:36.333 [DEBUG] [Thread-190302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:49:36.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:49:36.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:49:36.388 [DEBUG] [Thread-190302] [transport.py] [_log()] userauth is OK
2025-11-24T12:49:36.388 [DEBUG] [Thread-190302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:49:36.388 [DEBUG] [Thread-190302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:49:36.388 [DEBUG] [Thread-190302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:49:36.388 [DEBUG] [Thread-190302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:49:36.413 [INFO] [Thread-190302] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:49:36.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:49:36.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:49:37.256 [DEBUG] [Thread-190302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:49:37.256 [DEBUG] [Thread-190302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:49:37.304 [DEBUG] [Thread-190302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:49:37.304 [DEBUG] [Thread-190302] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:49:37.312 [DEBUG] [Thread-190302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:49:37.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:49:37.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-11-24T12:49:37.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:49:37.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:49:37.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:49:37.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:49:37.344 [DEBUG] [Thread-190302] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:49:49.638 [DEBUG] [Thread-190304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:49:53.008 [DEBUG] [Thread-190305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:49:54.639 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:49:54.641 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:50:04.697 [DEBUG] [Thread-190306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:50:07.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:50:07.366 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:50:07.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:50:08.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 49, 57), 21.75, 23.05, 0.0, 26.64, 20.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:50:08.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:49:57
2025-11-24T12:50:08.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:50:08.429 [DEBUG] [Thread-190307] [transport.py] [_log()] starting thread (client mode): 0xd317c460
2025-11-24T12:50:08.430 [DEBUG] [Thread-190307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:50:08.450 [DEBUG] [Thread-190307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:50:08.450 [INFO] [Thread-190307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] client lang: <none>
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] server lang: <none>
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] kex follows: False
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] Compression: none
2025-11-24T12:50:08.454 [DEBUG] [Thread-190307] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:50:08.472 [DEBUG] [Thread-190307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:50:08.473 [DEBUG] [Thread-190307] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:50:08.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:50:08.474 [DEBUG] [Thread-190307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:50:08.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:50:08.515 [DEBUG] [Thread-190307] [transport.py] [_log()] userauth is OK
2025-11-24T12:50:08.515 [DEBUG] [Thread-190307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:50:08.516 [DEBUG] [Thread-190307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:50:08.516 [DEBUG] [Thread-190307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:50:08.516 [DEBUG] [Thread-190307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:50:08.546 [INFO] [Thread-190307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:50:08.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:50:16.490 [DEBUG] [Thread-190307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:50:16.499 [DEBUG] [Thread-190307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:50:16.499 [DEBUG] [Thread-190307] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:50:16.531 [DEBUG] [Thread-190307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:50:16.531 [DEBUG] [Thread-190307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:50:16.533 [DEBUG] [Thread-190307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:50:16.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:50:16.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:50:16.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:50:16.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:50:16.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:50:16.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:50:16.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.451090 -999.00  +20.30  21.77     28   +1.60 1 1 1 1 1   888    0 19.01 -17.20 ----- 21.8 21.8 204.8 27.2 26.6 -25.7 25.5 -26.2 26.1 -23.3 27.1 -25.3
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.451090
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:50:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:49:57', tmtdew=21.75, humidity=23.05, cloud=0.0, wind=26.64, temperature=20.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:49:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:50:16.560 [DEBUG] [Thread-190307] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:50:16.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:50:16.643 [DEBUG] [Thread-190310] [transport.py] [_log()] starting thread (client mode): 0xd07e8190
2025-11-24T12:50:16.643 [DEBUG] [Thread-190310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:50:16.658 [DEBUG] [Thread-190310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:50:16.658 [INFO] [Thread-190310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:50:16.666 [DEBUG] [Thread-190310] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:50:16.666 [DEBUG] [Thread-190310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:50:16.666 [DEBUG] [Thread-190310] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:50:16.666 [DEBUG] [Thread-190310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:50:16.666 [DEBUG] [Thread-190310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:50:16.666 [DEBUG] [Thread-190310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:50:16.666 [DEBUG] [Thread-190310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:50:16.666 [DEBUG] [Thread-190310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:50:16.666 [DEBUG] [Thread-190310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:50:16.667 [DEBUG] [Thread-190310] [transport.py] [_log()] client lang: <none>
2025-11-24T12:50:16.667 [DEBUG] [Thread-190310] [transport.py] [_log()] server lang: <none>
2025-11-24T12:50:16.667 [DEBUG] [Thread-190310] [transport.py] [_log()] kex follows: False
2025-11-24T12:50:16.667 [DEBUG] [Thread-190310] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:50:16.667 [DEBUG] [Thread-190310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:50:16.667 [DEBUG] [Thread-190310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:50:16.667 [DEBUG] [Thread-190310] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:50:16.667 [DEBUG] [Thread-190310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:50:16.667 [DEBUG] [Thread-190310] [transport.py] [_log()] Compression: none
2025-11-24T12:50:16.667 [DEBUG] [Thread-190310] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:50:16.722 [DEBUG] [Thread-190310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:50:16.723 [DEBUG] [Thread-190310] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:50:16.723 [DEBUG] [Thread-190310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:50:16.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:50:16.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:50:16.780 [DEBUG] [Thread-190310] [transport.py] [_log()] userauth is OK
2025-11-24T12:50:16.780 [DEBUG] [Thread-190310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:50:16.780 [DEBUG] [Thread-190310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:50:16.780 [DEBUG] [Thread-190310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:50:16.780 [DEBUG] [Thread-190310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:50:16.802 [INFO] [Thread-190310] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:50:16.802 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:50:16.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:50:17.655 [DEBUG] [Thread-190310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:50:17.655 [DEBUG] [Thread-190310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:50:17.703 [DEBUG] [Thread-190310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:50:17.703 [DEBUG] [Thread-190310] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:50:17.713 [DEBUG] [Thread-190310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:50:17.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:50:17.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-11-24T12:50:17.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-11-24T12:50:17.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:50:17.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:50:17.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:50:17.749 [DEBUG] [Thread-190310] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:50:19.728 [DEBUG] [Thread-190312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:50:34.777 [DEBUG] [Thread-190313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:50:47.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:50:47.772 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:50:47.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-11-24T12:50:48.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 50, 29), 21.83, 22.93, 0.0, 22.94, 20.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:50:48.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:50:29
2025-11-24T12:50:48.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:50:48.889 [DEBUG] [Thread-190314] [transport.py] [_log()] starting thread (client mode): 0xd07eb9d0
2025-11-24T12:50:48.889 [DEBUG] [Thread-190314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:50:48.901 [DEBUG] [Thread-190314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:50:48.901 [INFO] [Thread-190314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:50:48.905 [DEBUG] [Thread-190314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:50:48.905 [DEBUG] [Thread-190314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:50:48.905 [DEBUG] [Thread-190314] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:50:48.905 [DEBUG] [Thread-190314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:50:48.905 [DEBUG] [Thread-190314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:50:48.905 [DEBUG] [Thread-190314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:50:48.905 [DEBUG] [Thread-190314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:50:48.905 [DEBUG] [Thread-190314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:50:48.905 [DEBUG] [Thread-190314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:50:48.905 [DEBUG] [Thread-190314] [transport.py] [_log()] client lang: <none>
2025-11-24T12:50:48.906 [DEBUG] [Thread-190314] [transport.py] [_log()] server lang: <none>
2025-11-24T12:50:48.906 [DEBUG] [Thread-190314] [transport.py] [_log()] kex follows: False
2025-11-24T12:50:48.906 [DEBUG] [Thread-190314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:50:48.906 [DEBUG] [Thread-190314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:50:48.906 [DEBUG] [Thread-190314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:50:48.906 [DEBUG] [Thread-190314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:50:48.906 [DEBUG] [Thread-190314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:50:48.906 [DEBUG] [Thread-190314] [transport.py] [_log()] Compression: none
2025-11-24T12:50:48.906 [DEBUG] [Thread-190314] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:50:48.924 [DEBUG] [Thread-190314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:50:48.925 [DEBUG] [Thread-190314] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:50:48.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:50:48.926 [DEBUG] [Thread-190314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:50:48.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:50:48.967 [DEBUG] [Thread-190314] [transport.py] [_log()] userauth is OK
2025-11-24T12:50:48.968 [DEBUG] [Thread-190314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:50:48.968 [DEBUG] [Thread-190314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:50:48.968 [DEBUG] [Thread-190314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:50:48.968 [DEBUG] [Thread-190314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:50:49.000 [INFO] [Thread-190314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:50:49.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:50:49.608 [DEBUG] [Thread-190314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:50:49.608 [DEBUG] [Thread-190314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:50:49.608 [DEBUG] [Thread-190314] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:50:49.649 [DEBUG] [Thread-190314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:50:49.649 [DEBUG] [Thread-190314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:50:49.651 [DEBUG] [Thread-190314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:50:49.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:50:49.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:50:49.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:50:49.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:50:49.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:50:49.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:50:49.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.451437 -999.00  +21.00  18.26     28   +1.80 1 1 1 1 1   888    0 18.63 -16.53 ----- 18.3 18.3 160.8 25.2 26.9 -24.0 25.9 -25.4 26.4 -25.2 27.3 -24.3
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.451437
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:50:49.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:50:29', tmtdew=21.83, humidity=22.93, cloud=0.0, wind=22.94, temperature=20.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:50:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:50:49.679 [DEBUG] [Thread-190314] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:50:49.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:50:49.762 [DEBUG] [Thread-190317] [transport.py] [_log()] starting thread (client mode): 0xd0710ee0
2025-11-24T12:50:49.762 [DEBUG] [Thread-190317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:50:49.777 [DEBUG] [Thread-190317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:50:49.777 [INFO] [Thread-190317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:50:49.784 [DEBUG] [Thread-190317] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:50:49.784 [DEBUG] [Thread-190317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:50:49.784 [DEBUG] [Thread-190317] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] client lang: <none>
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] server lang: <none>
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] kex follows: False
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] Compression: none
2025-11-24T12:50:49.785 [DEBUG] [Thread-190317] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:50:49.811 [DEBUG] [Thread-190319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:50:49.847 [DEBUG] [Thread-190317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:50:49.847 [DEBUG] [Thread-190317] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:50:49.847 [DEBUG] [Thread-190317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:50:49.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:50:49.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:50:49.903 [DEBUG] [Thread-190317] [transport.py] [_log()] userauth is OK
2025-11-24T12:50:49.903 [DEBUG] [Thread-190317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:50:49.904 [DEBUG] [Thread-190317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:50:49.904 [DEBUG] [Thread-190317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:50:49.904 [DEBUG] [Thread-190317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:50:49.918 [INFO] [Thread-190317] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:50:49.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:50:49.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:50:50.777 [DEBUG] [Thread-190317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:50:50.777 [DEBUG] [Thread-190317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:50:50.825 [DEBUG] [Thread-190317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:50:50.825 [DEBUG] [Thread-190317] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:50:50.833 [DEBUG] [Thread-190317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:50:50.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:50:50.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-11-24T12:50:50.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-11-24T12:50:50.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:50:50.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:50:50.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:50:50.868 [DEBUG] [Thread-190317] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:50:53.255 [DEBUG] [Thread-190320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:50:54.783 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:50:54.784 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:51:04.850 [DEBUG] [Thread-190321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:51:19.884 [DEBUG] [Thread-190322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:51:20.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:51:20.890 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:51:20.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-11-24T12:51:21.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 51, 2), 21.55, 23.35, 0.0, 25.78, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:51:21.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:51:02
2025-11-24T12:51:21.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:51:21.875 [DEBUG] [Thread-190323] [transport.py] [_log()] starting thread (client mode): 0xd317eb00
2025-11-24T12:51:21.876 [DEBUG] [Thread-190323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:51:21.895 [DEBUG] [Thread-190323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:51:21.895 [INFO] [Thread-190323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] client lang: <none>
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] server lang: <none>
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] kex follows: False
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:51:21.899 [DEBUG] [Thread-190323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:51:21.900 [DEBUG] [Thread-190323] [transport.py] [_log()] Compression: none
2025-11-24T12:51:21.900 [DEBUG] [Thread-190323] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:51:21.907 [DEBUG] [Thread-190323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:51:21.907 [DEBUG] [Thread-190323] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:51:21.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:51:21.907 [DEBUG] [Thread-190323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:51:21.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:51:21.908 [DEBUG] [Thread-190323] [transport.py] [_log()] userauth is OK
2025-11-24T12:51:21.908 [DEBUG] [Thread-190323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:51:21.908 [DEBUG] [Thread-190323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:51:21.908 [DEBUG] [Thread-190323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:51:21.908 [DEBUG] [Thread-190323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:51:21.923 [INFO] [Thread-190323] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:51:21.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:51:22.714 [DEBUG] [Thread-190323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:51:22.715 [DEBUG] [Thread-190323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:51:22.715 [DEBUG] [Thread-190323] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:51:22.756 [DEBUG] [Thread-190323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:51:22.756 [DEBUG] [Thread-190323] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:51:22.759 [DEBUG] [Thread-190323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:51:22.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:51:22.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:51:22.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:51:22.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:51:22.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:51:22.782 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:51:22.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:51:22.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:51:22.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:51:22.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.451784 -999.00  +20.70  20.30     28   +1.60 1 1 1 1 1   888    0 18.97 -14.07 ----- 20.3 20.3 171.4 37.6 26.6 -26.9 25.3 -29.5 26.0 -26.6 27.1 -26.8
2025-11-24T12:51:22.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:51:22.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:51:22.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.451784
2025-11-24T12:51:22.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:51:22.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:51:22.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:51:22.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:51:22.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:51:22.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:51:02', tmtdew=21.55, humidity=23.35, cloud=0.0, wind=25.78, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:50:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:51:22.785 [DEBUG] [Thread-190323] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:51:22.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:51:22.890 [DEBUG] [Thread-190326] [transport.py] [_log()] starting thread (client mode): 0xd31b3d30
2025-11-24T12:51:22.890 [DEBUG] [Thread-190326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:51:22.905 [DEBUG] [Thread-190326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:51:22.905 [INFO] [Thread-190326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:51:22.912 [DEBUG] [Thread-190326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] client lang: <none>
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] server lang: <none>
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] kex follows: False
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:51:22.913 [DEBUG] [Thread-190326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:51:22.914 [DEBUG] [Thread-190326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:51:22.914 [DEBUG] [Thread-190326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:51:22.914 [DEBUG] [Thread-190326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:51:22.914 [DEBUG] [Thread-190326] [transport.py] [_log()] Compression: none
2025-11-24T12:51:22.914 [DEBUG] [Thread-190326] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:51:22.973 [DEBUG] [Thread-190326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:51:22.973 [DEBUG] [Thread-190326] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:51:22.974 [DEBUG] [Thread-190326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:51:22.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:51:22.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:51:23.028 [DEBUG] [Thread-190326] [transport.py] [_log()] userauth is OK
2025-11-24T12:51:23.028 [DEBUG] [Thread-190326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:51:23.029 [DEBUG] [Thread-190326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:51:23.029 [DEBUG] [Thread-190326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:51:23.029 [DEBUG] [Thread-190326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:51:23.047 [INFO] [Thread-190326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:51:23.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:51:23.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:51:23.909 [DEBUG] [Thread-190326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:51:23.909 [DEBUG] [Thread-190326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:51:23.957 [DEBUG] [Thread-190326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:51:23.957 [DEBUG] [Thread-190326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:51:23.966 [DEBUG] [Thread-190326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:51:23.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:51:23.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-11-24T12:51: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-11-24T12:51:23.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:51:23.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:51:23.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:51:24.008 [DEBUG] [Thread-190326] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:51:34.915 [DEBUG] [Thread-190328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:51:49.975 [DEBUG] [Thread-190329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:51:53.422 [DEBUG] [Thread-190330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:51:54.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:51:54.030 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:51:54.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-11-24T12:51:54.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 51, 34), 21.54, 23.73, 0.0, 26.54, 20.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:51:54.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:51:34
2025-11-24T12:51:54.924 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:51:54.925 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:51:54.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:51:55.093 [DEBUG] [Thread-190331] [transport.py] [_log()] starting thread (client mode): 0xc9b82680
2025-11-24T12:51:55.094 [DEBUG] [Thread-190331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:51:55.113 [DEBUG] [Thread-190331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:51:55.113 [INFO] [Thread-190331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:51:55.116 [DEBUG] [Thread-190331] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:51:55.116 [DEBUG] [Thread-190331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:51:55.116 [DEBUG] [Thread-190331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:51:55.116 [DEBUG] [Thread-190331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:51:55.116 [DEBUG] [Thread-190331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:51:55.116 [DEBUG] [Thread-190331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:51:55.116 [DEBUG] [Thread-190331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:51:55.116 [DEBUG] [Thread-190331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] client lang: <none>
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] server lang: <none>
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] kex follows: False
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] Compression: none
2025-11-24T12:51:55.117 [DEBUG] [Thread-190331] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:51:55.132 [DEBUG] [Thread-190331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:51:55.133 [DEBUG] [Thread-190331] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:51:55.133 [DEBUG] [Thread-190331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:51:55.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:51:55.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:51:55.133 [DEBUG] [Thread-190331] [transport.py] [_log()] userauth is OK
2025-11-24T12:51:55.133 [DEBUG] [Thread-190331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:51:55.133 [DEBUG] [Thread-190331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:51:55.134 [DEBUG] [Thread-190331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:51:55.134 [DEBUG] [Thread-190331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:51:55.149 [INFO] [Thread-190331] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:51:55.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:51:55.776 [DEBUG] [Thread-190331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:51:55.777 [DEBUG] [Thread-190331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:51:55.777 [DEBUG] [Thread-190331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:51:55.817 [DEBUG] [Thread-190331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:51:55.817 [DEBUG] [Thread-190331] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:51:55.820 [DEBUG] [Thread-190331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:51:55.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:51:55.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:51:55.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:51:55.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:51:55.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:51:55.838 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:51:55.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:51:55.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:51:55.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:51:55.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.452479 -999.00  +19.70  18.76     29   +1.60 1 1 1 1 1   888    0 18.60 -19.68 ----- 18.8 18.8 167.2 28.2 26.4 -26.0 25.1 -27.0 25.9 -24.1 26.8 -25.9
2025-11-24T12:51:55.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:51:55.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:51:55.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.452479
2025-11-24T12:51:55.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:51:55.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:51:55.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:51:55.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:51:55.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:51:55.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:51:34', tmtdew=21.54, humidity=23.73, cloud=0.0, wind=26.54, temperature=20.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:51:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:51:55.840 [DEBUG] [Thread-190331] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:51:55.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:51:55.925 [DEBUG] [Thread-190334] [transport.py] [_log()] starting thread (client mode): 0xd07f8af0
2025-11-24T12:51:55.925 [DEBUG] [Thread-190334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:51:55.940 [DEBUG] [Thread-190334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:51:55.940 [INFO] [Thread-190334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] client lang: <none>
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] server lang: <none>
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] kex follows: False
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] Compression: none
2025-11-24T12:51:55.949 [DEBUG] [Thread-190334] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:51:56.002 [DEBUG] [Thread-190334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:51:56.002 [DEBUG] [Thread-190334] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:51:56.002 [DEBUG] [Thread-190334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:51:56.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:51:56.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:51:56.060 [DEBUG] [Thread-190334] [transport.py] [_log()] userauth is OK
2025-11-24T12:51:56.061 [DEBUG] [Thread-190334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:51:56.061 [DEBUG] [Thread-190334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:51:56.061 [DEBUG] [Thread-190334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:51:56.061 [DEBUG] [Thread-190334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:51:56.074 [INFO] [Thread-190334] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:51:56.074 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:51:56.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:51:56.897 [DEBUG] [Thread-190334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:51:56.897 [DEBUG] [Thread-190334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:51:56.945 [DEBUG] [Thread-190334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:51:56.945 [DEBUG] [Thread-190334] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:51:56.953 [DEBUG] [Thread-190334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:51:56.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:51:56.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:51:56.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:51:56.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:51:56.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:51:56.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:51:56.985 [DEBUG] [Thread-190334] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:52:05.009 [DEBUG] [Thread-190336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:52:20.045 [DEBUG] [Thread-190337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:52:27.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:52:27.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:52:27.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:52:27.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 52, 7), 21.47, 23.78, 0.0, 22.69, 20.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:52:27.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:52:07
2025-11-24T12:52:27.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:52:28.127 [DEBUG] [Thread-190338] [transport.py] [_log()] starting thread (client mode): 0xd07fb640
2025-11-24T12:52:28.128 [DEBUG] [Thread-190338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:52:28.143 [DEBUG] [Thread-190338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:52:28.143 [INFO] [Thread-190338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:52:28.146 [DEBUG] [Thread-190338] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:52:28.146 [DEBUG] [Thread-190338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:52:28.146 [DEBUG] [Thread-190338] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:52:28.146 [DEBUG] [Thread-190338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:52:28.146 [DEBUG] [Thread-190338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] client lang: <none>
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] server lang: <none>
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] kex follows: False
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] Compression: none
2025-11-24T12:52:28.147 [DEBUG] [Thread-190338] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:52:28.164 [DEBUG] [Thread-190338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:52:28.164 [DEBUG] [Thread-190338] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:52:28.165 [DEBUG] [Thread-190338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:52:28.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:52:28.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:52:28.167 [DEBUG] [Thread-190338] [transport.py] [_log()] userauth is OK
2025-11-24T12:52:28.167 [DEBUG] [Thread-190338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:52:28.167 [DEBUG] [Thread-190338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:52:28.167 [DEBUG] [Thread-190338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:52:28.168 [DEBUG] [Thread-190338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:52:28.203 [INFO] [Thread-190338] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:52:28.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:52:29.003 [DEBUG] [Thread-190338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:52:29.003 [DEBUG] [Thread-190338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:52:29.003 [DEBUG] [Thread-190338] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:52:29.044 [DEBUG] [Thread-190338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:52:29.044 [DEBUG] [Thread-190338] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:52:29.046 [DEBUG] [Thread-190338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:52:29.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:52:29.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:52:29.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:52:29.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:52:29.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:52:29.070 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:52:29.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:52:29.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:52:29.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:52:29.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.452826 -999.00  +19.90  14.32     30   +1.80 1 2 1 1 1   888    0 18.42 -26.74 ----- 14.3 14.3 173.2 22.4 26.5 -25.0 25.4 -23.5 26.1 -22.5 27.0 -24.6
2025-11-24T12:52:29.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:52:29.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:52:29.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.452826
2025-11-24T12:52:29.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:52:29.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:52:29.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:52:29.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:52:29.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-11-24T12:52:29.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:52:07', tmtdew=21.47, humidity=23.78, cloud=0.0, wind=22.69, temperature=20.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:52:04.166', atlas_cloud=2, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:52:29.071 [DEBUG] [Thread-190338] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:52:29.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:52:29.156 [DEBUG] [Thread-190341] [transport.py] [_log()] starting thread (client mode): 0xd07fa7d0
2025-11-24T12:52:29.156 [DEBUG] [Thread-190341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:52:29.171 [DEBUG] [Thread-190341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:52:29.171 [INFO] [Thread-190341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] client lang: <none>
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] server lang: <none>
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] kex follows: False
2025-11-24T12:52:29.178 [DEBUG] [Thread-190341] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:52:29.179 [DEBUG] [Thread-190341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:52:29.179 [DEBUG] [Thread-190341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:52:29.179 [DEBUG] [Thread-190341] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:52:29.179 [DEBUG] [Thread-190341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:52:29.179 [DEBUG] [Thread-190341] [transport.py] [_log()] Compression: none
2025-11-24T12:52:29.179 [DEBUG] [Thread-190341] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:52:29.234 [DEBUG] [Thread-190341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:52:29.235 [DEBUG] [Thread-190341] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:52:29.235 [DEBUG] [Thread-190341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:52:29.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:52:29.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:52:29.292 [DEBUG] [Thread-190341] [transport.py] [_log()] userauth is OK
2025-11-24T12:52:29.292 [DEBUG] [Thread-190341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:52:29.292 [DEBUG] [Thread-190341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:52:29.292 [DEBUG] [Thread-190341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:52:29.292 [DEBUG] [Thread-190341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:52:29.306 [INFO] [Thread-190341] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:52:29.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:52:29.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:52:30.130 [DEBUG] [Thread-190341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:52:30.130 [DEBUG] [Thread-190341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:52:30.178 [DEBUG] [Thread-190341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:52:30.178 [DEBUG] [Thread-190341] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:52:30.186 [DEBUG] [Thread-190341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:52:30.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:52:30.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-11-24T12:52:30.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-11-24T12:52:30.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:52:30.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:52:30.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:52:30.218 [DEBUG] [Thread-190341] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:52:35.071 [DEBUG] [Thread-190343 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:52:50.115 [DEBUG] [Thread-190344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:52:53.786 [DEBUG] [Thread-190345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:52:55.064 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:52:55.065 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:53:00.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:53:00.234 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:53:00.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-11-24T12:53:01.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 52, 40), 20.97, 24.59, 0.0, 20.41, 19.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:53:01.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:52:40
2025-11-24T12:53:01.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:53:01.360 [DEBUG] [Thread-190346] [transport.py] [_log()] starting thread (client mode): 0xd07f9bd0
2025-11-24T12:53:01.360 [DEBUG] [Thread-190346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:53:01.382 [DEBUG] [Thread-190346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:53:01.383 [INFO] [Thread-190346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] client lang: <none>
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] server lang: <none>
2025-11-24T12:53:01.386 [DEBUG] [Thread-190346] [transport.py] [_log()] kex follows: False
2025-11-24T12:53:01.387 [DEBUG] [Thread-190346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:53:01.387 [DEBUG] [Thread-190346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:53:01.387 [DEBUG] [Thread-190346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:53:01.387 [DEBUG] [Thread-190346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:53:01.387 [DEBUG] [Thread-190346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:53:01.387 [DEBUG] [Thread-190346] [transport.py] [_log()] Compression: none
2025-11-24T12:53:01.387 [DEBUG] [Thread-190346] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:53:01.405 [DEBUG] [Thread-190346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:53:01.406 [DEBUG] [Thread-190346] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:53:01.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:53:01.407 [DEBUG] [Thread-190346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:53:01.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:53:01.409 [DEBUG] [Thread-190346] [transport.py] [_log()] userauth is OK
2025-11-24T12:53:01.409 [DEBUG] [Thread-190346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:53:01.409 [DEBUG] [Thread-190346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:53:01.409 [DEBUG] [Thread-190346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:53:01.409 [DEBUG] [Thread-190346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:53:01.434 [INFO] [Thread-190346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:53:01.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:53:02.094 [DEBUG] [Thread-190346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:53:02.094 [DEBUG] [Thread-190346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:53:02.094 [DEBUG] [Thread-190346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:53:02.135 [DEBUG] [Thread-190346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:53:02.135 [DEBUG] [Thread-190346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:53:02.137 [DEBUG] [Thread-190346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:53:02.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:53:02.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:53:02.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:53:02.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:53:02.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:53:02.156 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:53:02.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.453173 -999.00  +20.20  19.50     29   +1.80 1 1 1 1 1   888    0 18.00 -32.38 ----- 19.5 19.5 189.2 22.1 26.6 -24.8 25.4 -27.6 26.1 -23.7 27.1 -25.5
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.453173
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:53:02.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:52:40', tmtdew=20.97, humidity=24.59, cloud=0.0, wind=20.41, temperature=19.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:52:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:53:02.157 [DEBUG] [Thread-190346] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:53:02.231 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:53:02.243 [DEBUG] [Thread-190349] [transport.py] [_log()] starting thread (client mode): 0xd07f9960
2025-11-24T12:53:02.243 [DEBUG] [Thread-190349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:53:02.259 [DEBUG] [Thread-190349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:53:02.259 [INFO] [Thread-190349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] client lang: <none>
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] server lang: <none>
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] kex follows: False
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] Compression: none
2025-11-24T12:53:02.267 [DEBUG] [Thread-190349] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:53:02.322 [DEBUG] [Thread-190349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:53:02.322 [DEBUG] [Thread-190349] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:53:02.322 [DEBUG] [Thread-190349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:53:02.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:53:02.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:53:02.379 [DEBUG] [Thread-190349] [transport.py] [_log()] userauth is OK
2025-11-24T12:53:02.380 [DEBUG] [Thread-190349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:53:02.380 [DEBUG] [Thread-190349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:53:02.380 [DEBUG] [Thread-190349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:53:02.380 [DEBUG] [Thread-190349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:53:02.394 [INFO] [Thread-190349] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:53:02.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:53:02.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:53:03.269 [DEBUG] [Thread-190349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:53:03.270 [DEBUG] [Thread-190349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:53:03.318 [DEBUG] [Thread-190349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:53:03.318 [DEBUG] [Thread-190349] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:53:03.327 [DEBUG] [Thread-190349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:53:03.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:53:03.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-11-24T12:53:03.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-11-24T12:53:03.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:53:03.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:53:03.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:53:03.368 [DEBUG] [Thread-190349] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:53:05.144 [DEBUG] [Thread-190351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:53:20.198 [DEBUG] [Thread-190352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:53:33.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:53:33.387 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:53:33.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-11-24T12:53:34.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 53, 12), 21.1, 24.38, 0.0, 22.05, 19.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:53:34.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:53:12
2025-11-24T12:53:34.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:53:34.499 [DEBUG] [Thread-190353] [transport.py] [_log()] starting thread (client mode): 0xd07eaad0
2025-11-24T12:53:34.500 [DEBUG] [Thread-190353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:53:34.521 [DEBUG] [Thread-190353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:53:34.521 [INFO] [Thread-190353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] client lang: <none>
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] server lang: <none>
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] kex follows: False
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] Compression: none
2025-11-24T12:53:34.525 [DEBUG] [Thread-190353] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:53:34.543 [DEBUG] [Thread-190353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:53:34.544 [DEBUG] [Thread-190353] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:53:34.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:53:34.545 [DEBUG] [Thread-190353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:53:34.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:53:34.547 [DEBUG] [Thread-190353] [transport.py] [_log()] userauth is OK
2025-11-24T12:53:34.547 [DEBUG] [Thread-190353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:53:34.547 [DEBUG] [Thread-190353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:53:34.548 [DEBUG] [Thread-190353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:53:34.548 [DEBUG] [Thread-190353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:53:34.572 [INFO] [Thread-190353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:53:34.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:53:35.186 [DEBUG] [Thread-190353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:53:35.186 [DEBUG] [Thread-190353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:53:35.186 [DEBUG] [Thread-190353] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:53:35.227 [DEBUG] [Thread-190353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:53:35.227 [DEBUG] [Thread-190353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:53:35.236 [DEBUG] [Thread-190355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:53:35.238 [DEBUG] [Thread-190353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:53:35.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:53:35.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:53:35.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:53:35.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:53:35.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:53:35.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:53:35.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:53:35.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:53:35.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:53:35.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.453520 -999.00  +20.20  16.82     29   +1.70 1 2 1 1 1   888    0 18.43 -36.25 ----- 16.8 16.8 152.1 25.6 26.6 -24.9 25.6 -23.6 26.2 -22.1 27.1 -24.9
2025-11-24T12:53:35.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:53:35.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:53:35.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.453520
2025-11-24T12:53:35.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:53:35.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:53:35.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:53:35.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:53:35.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-11-24T12:53:35.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:53:12', tmtdew=21.1, humidity=24.38, cloud=0.0, wind=22.05, temperature=19.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:53:04.128', atlas_cloud=2, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:53:35.255 [DEBUG] [Thread-190353] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:53:35.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:53:35.348 [DEBUG] [Thread-190357] [transport.py] [_log()] starting thread (client mode): 0xd07ea590
2025-11-24T12:53:35.348 [DEBUG] [Thread-190357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:53:35.362 [DEBUG] [Thread-190357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:53:35.362 [INFO] [Thread-190357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:53:35.370 [DEBUG] [Thread-190357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:53:35.370 [DEBUG] [Thread-190357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:53:35.370 [DEBUG] [Thread-190357] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:53:35.370 [DEBUG] [Thread-190357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:53:35.370 [DEBUG] [Thread-190357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:53:35.370 [DEBUG] [Thread-190357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:53:35.370 [DEBUG] [Thread-190357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:53:35.371 [DEBUG] [Thread-190357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:53:35.371 [DEBUG] [Thread-190357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:53:35.371 [DEBUG] [Thread-190357] [transport.py] [_log()] client lang: <none>
2025-11-24T12:53:35.371 [DEBUG] [Thread-190357] [transport.py] [_log()] server lang: <none>
2025-11-24T12:53:35.371 [DEBUG] [Thread-190357] [transport.py] [_log()] kex follows: False
2025-11-24T12:53:35.371 [DEBUG] [Thread-190357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:53:35.371 [DEBUG] [Thread-190357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:53:35.371 [DEBUG] [Thread-190357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:53:35.371 [DEBUG] [Thread-190357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:53:35.372 [DEBUG] [Thread-190357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:53:35.372 [DEBUG] [Thread-190357] [transport.py] [_log()] Compression: none
2025-11-24T12:53:35.372 [DEBUG] [Thread-190357] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:53:35.428 [DEBUG] [Thread-190357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:53:35.428 [DEBUG] [Thread-190357] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:53:35.429 [DEBUG] [Thread-190357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:53:35.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:53:35.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:53:35.484 [DEBUG] [Thread-190357] [transport.py] [_log()] userauth is OK
2025-11-24T12:53:35.485 [DEBUG] [Thread-190357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:53:35.485 [DEBUG] [Thread-190357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:53:35.485 [DEBUG] [Thread-190357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:53:35.485 [DEBUG] [Thread-190357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:53:35.503 [INFO] [Thread-190357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:53:35.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:53:35.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:53:36.394 [DEBUG] [Thread-190357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:53:36.394 [DEBUG] [Thread-190357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:53:36.442 [DEBUG] [Thread-190357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:53:36.442 [DEBUG] [Thread-190357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:53:36.450 [DEBUG] [Thread-190357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:53:36.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:53:36.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-11-24T12:53:36.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:53:36.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:53:36.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:53:36.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:53:36.482 [DEBUG] [Thread-190357] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:53:50.263 [DEBUG] [Thread-190359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:53:53.882 [DEBUG] [Thread-190360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:53:55.205 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:53:55.206 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:54:05.308 [DEBUG] [Thread-190361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:54:06.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:54:06.505 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:54:06.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-11-24T12:54:07.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 53, 45), 20.47, 25.43, 0.0, 15.7, 19.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:54:07.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:53:45
2025-11-24T12:54:07.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:54:07.576 [DEBUG] [Thread-190362] [transport.py] [_log()] starting thread (client mode): 0xd07e8730
2025-11-24T12:54:07.576 [DEBUG] [Thread-190362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:54:07.587 [DEBUG] [Thread-190362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:54:07.587 [INFO] [Thread-190362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] client lang: <none>
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] server lang: <none>
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] kex follows: False
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:54:07.590 [DEBUG] [Thread-190362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:54:07.591 [DEBUG] [Thread-190362] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:54:07.591 [DEBUG] [Thread-190362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:54:07.591 [DEBUG] [Thread-190362] [transport.py] [_log()] Compression: none
2025-11-24T12:54:07.591 [DEBUG] [Thread-190362] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:54:07.609 [DEBUG] [Thread-190362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:54:07.609 [DEBUG] [Thread-190362] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:54:07.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:54:07.611 [DEBUG] [Thread-190362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:54:07.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:54:07.613 [DEBUG] [Thread-190362] [transport.py] [_log()] userauth is OK
2025-11-24T12:54:07.614 [DEBUG] [Thread-190362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:54:07.614 [DEBUG] [Thread-190362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:54:07.614 [DEBUG] [Thread-190362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:54:07.614 [DEBUG] [Thread-190362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:54:07.638 [INFO] [Thread-190362] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:54:07.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:54:08.295 [DEBUG] [Thread-190362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:54:08.295 [DEBUG] [Thread-190362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:54:08.295 [DEBUG] [Thread-190362] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:54:08.336 [DEBUG] [Thread-190362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:54:08.336 [DEBUG] [Thread-190362] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:54:08.338 [DEBUG] [Thread-190362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:54:08.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:54:08.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:54:08.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:54:08.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:54:08.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:54:08.366 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:54:08.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:54:08.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:54:08.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:54:08.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.453868 -999.00  +20.30  12.07     29   +1.70 1 1 1 1 1   888    0 17.51 -40.76 ----- 12.1 12.1 125.9 20.5 26.8 -25.7 26.0 -24.8 26.2 -22.1 27.4 -24.8
2025-11-24T12:54:08.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:54:08.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:54:08.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.453868
2025-11-24T12:54:08.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:54:08.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:54:08.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:54:08.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:54:08.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:54:08.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:53:45', tmtdew=20.47, humidity=25.43, cloud=0.0, wind=15.7, temperature=19.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:53:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:54:08.368 [DEBUG] [Thread-190362] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:54:08.440 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:54:08.451 [DEBUG] [Thread-190365] [transport.py] [_log()] starting thread (client mode): 0xd3151ba0
2025-11-24T12:54:08.451 [DEBUG] [Thread-190365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:54:08.466 [DEBUG] [Thread-190365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:54:08.466 [INFO] [Thread-190365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] client lang: <none>
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] server lang: <none>
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] kex follows: False
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] Compression: none
2025-11-24T12:54:08.475 [DEBUG] [Thread-190365] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:54:08.530 [DEBUG] [Thread-190365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:54:08.530 [DEBUG] [Thread-190365] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:54:08.531 [DEBUG] [Thread-190365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:54:08.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:54:08.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:54:08.587 [DEBUG] [Thread-190365] [transport.py] [_log()] userauth is OK
2025-11-24T12:54:08.587 [DEBUG] [Thread-190365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:54:08.587 [DEBUG] [Thread-190365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:54:08.587 [DEBUG] [Thread-190365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:54:08.587 [DEBUG] [Thread-190365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:54:08.601 [INFO] [Thread-190365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:54:08.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:54:08.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:54:09.461 [DEBUG] [Thread-190365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:54:09.461 [DEBUG] [Thread-190365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:54:09.510 [DEBUG] [Thread-190365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:54:09.510 [DEBUG] [Thread-190365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:54:09.519 [DEBUG] [Thread-190365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:54:09.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:54:09.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:54:09.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-11-24T12:54:09.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:54:09.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:54:09.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:54:09.556 [DEBUG] [Thread-190365] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:54:20.342 [DEBUG] [Thread-190367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:54:35.392 [DEBUG] [Thread-190368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:54:39.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:54:39.549 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:54:39.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-11-24T12:54:40.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 54, 17), 20.49, 25.43, 0.0, 15.85, 19.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:54:40.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:54:17
2025-11-24T12:54:40.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:54:40.668 [DEBUG] [Thread-190369] [transport.py] [_log()] starting thread (client mode): 0xd07e9c00
2025-11-24T12:54:40.668 [DEBUG] [Thread-190369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:54:40.689 [DEBUG] [Thread-190369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:54:40.689 [INFO] [Thread-190369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] client lang: <none>
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] server lang: <none>
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] kex follows: False
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] Compression: none
2025-11-24T12:54:40.692 [DEBUG] [Thread-190369] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:54:40.710 [DEBUG] [Thread-190369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:54:40.711 [DEBUG] [Thread-190369] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:54:40.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:54:40.712 [DEBUG] [Thread-190369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:54:40.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:54:40.714 [DEBUG] [Thread-190369] [transport.py] [_log()] userauth is OK
2025-11-24T12:54:40.714 [DEBUG] [Thread-190369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:54:40.714 [DEBUG] [Thread-190369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:54:40.714 [DEBUG] [Thread-190369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:54:40.714 [DEBUG] [Thread-190369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:54:40.731 [INFO] [Thread-190369] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:54:40.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:54:41.367 [DEBUG] [Thread-190369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:54:41.368 [DEBUG] [Thread-190369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:54:41.368 [DEBUG] [Thread-190369] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:54:41.408 [DEBUG] [Thread-190369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:54:41.408 [DEBUG] [Thread-190369] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:54:41.410 [DEBUG] [Thread-190369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:54:41.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:54:41.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:54:41.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:54:41.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:54:41.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:54:41.428 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:54:41.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:54:41.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:54:41.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:54:41.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T12:54:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:54:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:54:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T12:54:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:54:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:54:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:54:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:54:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:54:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:54:17', tmtdew=20.49, humidity=25.43, cloud=0.0, wind=15.85, temperature=19.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:54:41.430 [DEBUG] [Thread-190369] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:54:41.501 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:54:41.514 [DEBUG] [Thread-190372] [transport.py] [_log()] starting thread (client mode): 0xd07e9bd0
2025-11-24T12:54:41.514 [DEBUG] [Thread-190372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:54:41.529 [DEBUG] [Thread-190372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:54:41.529 [INFO] [Thread-190372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] client lang: <none>
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] server lang: <none>
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] kex follows: False
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:54:41.537 [DEBUG] [Thread-190372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:54:41.538 [DEBUG] [Thread-190372] [transport.py] [_log()] Compression: none
2025-11-24T12:54:41.538 [DEBUG] [Thread-190372] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:54:41.594 [DEBUG] [Thread-190372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:54:41.595 [DEBUG] [Thread-190372] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:54:41.595 [DEBUG] [Thread-190372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:54:41.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:54:41.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:54:41.651 [DEBUG] [Thread-190372] [transport.py] [_log()] userauth is OK
2025-11-24T12:54:41.651 [DEBUG] [Thread-190372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:54:41.652 [DEBUG] [Thread-190372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:54:41.652 [DEBUG] [Thread-190372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:54:41.652 [DEBUG] [Thread-190372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:54:41.665 [INFO] [Thread-190372] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:54:41.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:54:41.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:54:42.509 [DEBUG] [Thread-190372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:54:42.509 [DEBUG] [Thread-190372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:54:42.557 [DEBUG] [Thread-190372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:54:42.557 [DEBUG] [Thread-190372] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:54:42.565 [DEBUG] [Thread-190372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:54:42.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:54:42.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-11-24T12:54:42.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:54:42.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:54:42.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:54:42.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:54:42.596 [DEBUG] [Thread-190372] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:54:50.427 [DEBUG] [Thread-190374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:54:54.166 [DEBUG] [Thread-190375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:54:55.357 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:54:55.360 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:55:05.473 [DEBUG] [Thread-190376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:55:12.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:55:12.619 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:55:12.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-11-24T12:55:13.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 54, 50), 21.42, 23.48, 0.0, 15.03, 20.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:55:13.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:54:50
2025-11-24T12:55:13.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:55:13.698 [DEBUG] [Thread-190377] [transport.py] [_log()] starting thread (client mode): 0xd07e9a50
2025-11-24T12:55:13.698 [DEBUG] [Thread-190377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:55:13.719 [DEBUG] [Thread-190377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:55:13.719 [INFO] [Thread-190377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:55:13.722 [DEBUG] [Thread-190377] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] client lang: <none>
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] server lang: <none>
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] kex follows: False
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] Compression: none
2025-11-24T12:55:13.723 [DEBUG] [Thread-190377] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:55:13.743 [DEBUG] [Thread-190377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:55:13.743 [DEBUG] [Thread-190377] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:55:13.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:55:13.745 [DEBUG] [Thread-190377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:55:13.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:55:13.747 [DEBUG] [Thread-190377] [transport.py] [_log()] userauth is OK
2025-11-24T12:55:13.747 [DEBUG] [Thread-190377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:55:13.747 [DEBUG] [Thread-190377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:55:13.747 [DEBUG] [Thread-190377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:55:13.748 [DEBUG] [Thread-190377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:55:13.781 [INFO] [Thread-190377] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:55:13.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:55:14.404 [DEBUG] [Thread-190377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:55:14.404 [DEBUG] [Thread-190377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:55:14.405 [DEBUG] [Thread-190377] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:55:14.446 [DEBUG] [Thread-190377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:55:14.446 [DEBUG] [Thread-190377] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:55:14.449 [DEBUG] [Thread-190377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:55:14.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:55:14.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:55:14.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:55:14.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:55:14.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:55:14.485 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:55:14.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:55:14.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:55:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:55:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T12:55:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:55:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:55:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T12:55:14.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:55:14.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:55:14.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:55:14.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:55:14.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:55:14.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:54:50', tmtdew=21.42, humidity=23.48, cloud=0.0, wind=15.03, temperature=20.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:55:14.488 [DEBUG] [Thread-190377] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:55:14.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:55:14.583 [DEBUG] [Thread-190380] [transport.py] [_log()] starting thread (client mode): 0xc9b82020
2025-11-24T12:55:14.583 [DEBUG] [Thread-190380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:55:14.598 [DEBUG] [Thread-190380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:55:14.598 [INFO] [Thread-190380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:55:14.606 [DEBUG] [Thread-190380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:55:14.606 [DEBUG] [Thread-190380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:55:14.606 [DEBUG] [Thread-190380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:55:14.606 [DEBUG] [Thread-190380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:55:14.606 [DEBUG] [Thread-190380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:55:14.606 [DEBUG] [Thread-190380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:55:14.606 [DEBUG] [Thread-190380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:55:14.606 [DEBUG] [Thread-190380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] client lang: <none>
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] server lang: <none>
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] kex follows: False
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] Compression: none
2025-11-24T12:55:14.607 [DEBUG] [Thread-190380] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:55:14.664 [DEBUG] [Thread-190380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:55:14.664 [DEBUG] [Thread-190380] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:55:14.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:55:14.666 [DEBUG] [Thread-190380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:55:14.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:55:14.720 [DEBUG] [Thread-190380] [transport.py] [_log()] userauth is OK
2025-11-24T12:55:14.720 [DEBUG] [Thread-190380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:55:14.720 [DEBUG] [Thread-190380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:55:14.720 [DEBUG] [Thread-190380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:55:14.720 [DEBUG] [Thread-190380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:55:14.739 [INFO] [Thread-190380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:55:14.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:55:14.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:55:15.589 [DEBUG] [Thread-190380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:55:15.589 [DEBUG] [Thread-190380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:55:15.637 [DEBUG] [Thread-190380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:55:15.637 [DEBUG] [Thread-190380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:55:15.646 [DEBUG] [Thread-190380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:55:15.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:55:15.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-11-24T12:55:15.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:55:15.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:55:15.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:55:15.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:55:15.685 [DEBUG] [Thread-190380] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:55:20.514 [DEBUG] [Thread-190382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:55:35.567 [DEBUG] [Thread-190383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:55:45.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:55:45.707 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:55:45.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-11-24T12:55:46.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 55, 22), 21.13, 23.91, 0.0, 15.19, 19.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:55:46.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:55:22
2025-11-24T12:55:46.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:55:46.776 [DEBUG] [Thread-190384] [transport.py] [_log()] starting thread (client mode): 0xd07fbc40
2025-11-24T12:55:46.776 [DEBUG] [Thread-190384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:55:46.796 [DEBUG] [Thread-190384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:55:46.796 [INFO] [Thread-190384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:55:46.799 [DEBUG] [Thread-190384] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:55:46.799 [DEBUG] [Thread-190384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:55:46.799 [DEBUG] [Thread-190384] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] client lang: <none>
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] server lang: <none>
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] kex follows: False
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] Compression: none
2025-11-24T12:55:46.800 [DEBUG] [Thread-190384] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:55:46.817 [DEBUG] [Thread-190384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:55:46.818 [DEBUG] [Thread-190384] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:55:46.818 [DEBUG] [Thread-190384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:55:46.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:55:46.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:55:46.820 [DEBUG] [Thread-190384] [transport.py] [_log()] userauth is OK
2025-11-24T12:55:46.821 [DEBUG] [Thread-190384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:55:46.821 [DEBUG] [Thread-190384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:55:46.821 [DEBUG] [Thread-190384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:55:46.821 [DEBUG] [Thread-190384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:55:46.838 [INFO] [Thread-190384] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:55:46.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:55:47.484 [DEBUG] [Thread-190384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:55:47.484 [DEBUG] [Thread-190384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:55:47.484 [DEBUG] [Thread-190384] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:55:47.525 [DEBUG] [Thread-190384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:55:47.525 [DEBUG] [Thread-190384] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:55:47.527 [DEBUG] [Thread-190384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:55:47.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:55:47.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:55:47.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:55:47.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:55:47.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:55:47.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:55:47.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:55:47.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:55:47.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:55:47.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T12:55:47.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:55:47.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:55:47.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T12:55:47.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:55:47.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:55:47.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:55:47.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:55:47.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:55:47.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:55:22', tmtdew=21.13, humidity=23.91, cloud=0.0, wind=15.19, temperature=19.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:55:47.545 [DEBUG] [Thread-190384] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:55:47.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:55:47.630 [DEBUG] [Thread-190387] [transport.py] [_log()] starting thread (client mode): 0xd07ead40
2025-11-24T12:55:47.630 [DEBUG] [Thread-190387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:55:47.645 [DEBUG] [Thread-190387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:55:47.645 [INFO] [Thread-190387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:55:47.652 [DEBUG] [Thread-190387] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:55:47.652 [DEBUG] [Thread-190387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:55:47.652 [DEBUG] [Thread-190387] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:55:47.652 [DEBUG] [Thread-190387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:55:47.652 [DEBUG] [Thread-190387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:55:47.652 [DEBUG] [Thread-190387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] client lang: <none>
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] server lang: <none>
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] kex follows: False
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] Compression: none
2025-11-24T12:55:47.653 [DEBUG] [Thread-190387] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:55:47.711 [DEBUG] [Thread-190387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:55:47.711 [DEBUG] [Thread-190387] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:55:47.711 [DEBUG] [Thread-190387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:55:47.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:55:47.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:55:47.767 [DEBUG] [Thread-190387] [transport.py] [_log()] userauth is OK
2025-11-24T12:55:47.767 [DEBUG] [Thread-190387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:55:47.767 [DEBUG] [Thread-190387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:55:47.767 [DEBUG] [Thread-190387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:55:47.767 [DEBUG] [Thread-190387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:55:47.783 [INFO] [Thread-190387] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:55: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-11-24T12:55:47.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:55:48.651 [DEBUG] [Thread-190387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:55:48.651 [DEBUG] [Thread-190387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:55:48.699 [DEBUG] [Thread-190387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:55:48.699 [DEBUG] [Thread-190387] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:55:48.708 [DEBUG] [Thread-190387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:55:48.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:55:48.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:55:48.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T12:55:48.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:55:48.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:55:48.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:55:48.744 [DEBUG] [Thread-190387] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:55:50.599 [DEBUG] [Thread-190389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:55:54.233 [DEBUG] [Thread-190390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:55:55.500 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:55:55.501 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:56:05.652 [DEBUG] [Thread-190391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:56:18.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:56:18.746 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:56:18.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-11-24T12:56:19.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 55, 54), 22.03, 22.48, 0.0, 27.93, 20.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:56:19.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:55:54
2025-11-24T12:56:19.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:56:19.909 [DEBUG] [Thread-190392] [transport.py] [_log()] starting thread (client mode): 0xd3153310
2025-11-24T12:56:19.909 [DEBUG] [Thread-190392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:56:19.929 [DEBUG] [Thread-190392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:56:19.930 [INFO] [Thread-190392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] client lang: <none>
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] server lang: <none>
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] kex follows: False
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] Compression: none
2025-11-24T12:56:19.933 [DEBUG] [Thread-190392] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:56:19.948 [DEBUG] [Thread-190392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:56:19.948 [DEBUG] [Thread-190392] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:56:19.948 [DEBUG] [Thread-190392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:56:19.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:56:19.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:56:19.949 [DEBUG] [Thread-190392] [transport.py] [_log()] userauth is OK
2025-11-24T12:56:19.949 [DEBUG] [Thread-190392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:56:19.949 [DEBUG] [Thread-190392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:56:19.949 [DEBUG] [Thread-190392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:56:19.949 [DEBUG] [Thread-190392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:56:19.958 [INFO] [Thread-190392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:56:19.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:56:20.627 [DEBUG] [Thread-190392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:56:20.627 [DEBUG] [Thread-190392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:56:20.627 [DEBUG] [Thread-190392] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:56:20.668 [DEBUG] [Thread-190392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:56:20.668 [DEBUG] [Thread-190392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:56:20.671 [DEBUG] [Thread-190392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:56:20.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:56:20.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:56:20.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:56:20.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:56:20.687 [DEBUG] [Thread-190395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:56:20.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:56:20.689 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:56:20.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:56:20.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:55:54', tmtdew=22.03, humidity=22.48, cloud=0.0, wind=27.93, temperature=20.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:56:20.690 [DEBUG] [Thread-190392] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:56:20.763 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:56:20.775 [DEBUG] [Thread-190396] [transport.py] [_log()] starting thread (client mode): 0xd07e8220
2025-11-24T12:56:20.775 [DEBUG] [Thread-190396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:56:20.790 [DEBUG] [Thread-190396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:56:20.790 [INFO] [Thread-190396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:56:20.797 [DEBUG] [Thread-190396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:56:20.797 [DEBUG] [Thread-190396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:56:20.797 [DEBUG] [Thread-190396] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:56:20.797 [DEBUG] [Thread-190396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:56:20.797 [DEBUG] [Thread-190396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:56:20.797 [DEBUG] [Thread-190396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:56:20.797 [DEBUG] [Thread-190396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:56:20.797 [DEBUG] [Thread-190396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] client lang: <none>
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] server lang: <none>
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] kex follows: False
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] Compression: none
2025-11-24T12:56:20.798 [DEBUG] [Thread-190396] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:56:20.855 [DEBUG] [Thread-190396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:56:20.855 [DEBUG] [Thread-190396] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:56:20.855 [DEBUG] [Thread-190396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:56:20.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:56:20.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:56:20.912 [DEBUG] [Thread-190396] [transport.py] [_log()] userauth is OK
2025-11-24T12:56:20.912 [DEBUG] [Thread-190396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:56:20.912 [DEBUG] [Thread-190396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:56:20.912 [DEBUG] [Thread-190396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:56:20.912 [DEBUG] [Thread-190396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:56:20.926 [INFO] [Thread-190396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:56:20.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:56:20.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:56:21.764 [DEBUG] [Thread-190396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:56:21.764 [DEBUG] [Thread-190396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:56:21.812 [DEBUG] [Thread-190396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:56:21.812 [DEBUG] [Thread-190396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:56:21.820 [DEBUG] [Thread-190396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:56:21.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:56:21.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:56:21.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-11-24T12:56:21.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:56:21.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:56:21.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:56:21.852 [DEBUG] [Thread-190396] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:56:35.716 [DEBUG] [Thread-190398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:56:50.787 [DEBUG] [Thread-190399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:56:51.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:56:51.851 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:56:51.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-11-24T12:56:52.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 56, 27), 22.68, 21.58, 0.0, 29.8, 20.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:56:52.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:56:27
2025-11-24T12:56:52.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:56:52.919 [DEBUG] [Thread-190400] [transport.py] [_log()] starting thread (client mode): 0xc9b82c80
2025-11-24T12:56:52.919 [DEBUG] [Thread-190400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:56:52.941 [DEBUG] [Thread-190400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:56:52.942 [INFO] [Thread-190400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:56:52.944 [DEBUG] [Thread-190400] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:56:52.944 [DEBUG] [Thread-190400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] client lang: <none>
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] server lang: <none>
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] kex follows: False
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] Compression: none
2025-11-24T12:56:52.945 [DEBUG] [Thread-190400] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:56:52.963 [DEBUG] [Thread-190400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:56:52.964 [DEBUG] [Thread-190400] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:56:52.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:56:52.965 [DEBUG] [Thread-190400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:56:52.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:56:52.967 [DEBUG] [Thread-190400] [transport.py] [_log()] userauth is OK
2025-11-24T12:56:52.967 [DEBUG] [Thread-190400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:56:52.967 [DEBUG] [Thread-190400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:56:52.968 [DEBUG] [Thread-190400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:56:52.968 [DEBUG] [Thread-190400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:56:52.992 [INFO] [Thread-190400] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:56:52.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:56:53.639 [DEBUG] [Thread-190400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:56:53.639 [DEBUG] [Thread-190400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:56:53.639 [DEBUG] [Thread-190400] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:56:53.680 [DEBUG] [Thread-190400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:56:53.680 [DEBUG] [Thread-190400] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:56:53.682 [DEBUG] [Thread-190400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:56:53.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:56:53.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:56:53.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:56:53.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:56:53.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:56:53.708 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:56:53.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:56:53.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:56:27', tmtdew=22.68, humidity=21.58, cloud=0.0, wind=29.8, temperature=20.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:56:53.709 [DEBUG] [Thread-190400] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:56:53.780 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:56:53.792 [DEBUG] [Thread-190403] [transport.py] [_log()] starting thread (client mode): 0xd0702aa0
2025-11-24T12:56:53.793 [DEBUG] [Thread-190403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:56:53.807 [DEBUG] [Thread-190403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:56:53.807 [INFO] [Thread-190403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] client lang: <none>
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] server lang: <none>
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] kex follows: False
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:56:53.814 [DEBUG] [Thread-190403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:56:53.815 [DEBUG] [Thread-190403] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:56:53.815 [DEBUG] [Thread-190403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:56:53.815 [DEBUG] [Thread-190403] [transport.py] [_log()] Compression: none
2025-11-24T12:56:53.815 [DEBUG] [Thread-190403] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:56:53.870 [DEBUG] [Thread-190403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:56:53.870 [DEBUG] [Thread-190403] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:56:53.870 [DEBUG] [Thread-190403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:56:53.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:56:53.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:56:53.927 [DEBUG] [Thread-190403] [transport.py] [_log()] userauth is OK
2025-11-24T12:56:53.927 [DEBUG] [Thread-190403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:56:53.927 [DEBUG] [Thread-190403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:56:53.927 [DEBUG] [Thread-190403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:56:53.928 [DEBUG] [Thread-190403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:56:53.941 [INFO] [Thread-190403] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:56:53.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:56:53.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:56:54.549 [DEBUG] [Thread-190405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:56:54.828 [DEBUG] [Thread-190403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:56:54.828 [DEBUG] [Thread-190403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:56:54.875 [DEBUG] [Thread-190403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:56:54.876 [DEBUG] [Thread-190403] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:56:54.885 [DEBUG] [Thread-190403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:56:54.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:56:54.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-11-24T12:56:54.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-11-24T12:56:54.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:56:54.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:56:54.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:56:54.920 [DEBUG] [Thread-190403] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:56:55.643 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:56:55.643 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:57:05.820 [DEBUG] [Thread-190406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:57:20.884 [DEBUG] [Thread-190407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:57:24.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:57:24.923 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:57:24.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-11-24T12:57:25.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 56, 59), 22.82, 21.79, 0.0, 32.4, 20.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:57:25.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:56:59
2025-11-24T12:57:25.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:57:25.948 [DEBUG] [Thread-190408] [transport.py] [_log()] starting thread (client mode): 0xc9b82200
2025-11-24T12:57:25.949 [DEBUG] [Thread-190408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:57:25.968 [DEBUG] [Thread-190408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:57:25.969 [INFO] [Thread-190408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:57:25.972 [DEBUG] [Thread-190408] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:57:25.972 [DEBUG] [Thread-190408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:57:25.972 [DEBUG] [Thread-190408] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:57:25.972 [DEBUG] [Thread-190408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:57:25.972 [DEBUG] [Thread-190408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:57:25.972 [DEBUG] [Thread-190408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:57:25.972 [DEBUG] [Thread-190408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:57:25.972 [DEBUG] [Thread-190408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:57:25.972 [DEBUG] [Thread-190408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:57:25.973 [DEBUG] [Thread-190408] [transport.py] [_log()] client lang: <none>
2025-11-24T12:57:25.973 [DEBUG] [Thread-190408] [transport.py] [_log()] server lang: <none>
2025-11-24T12:57:25.973 [DEBUG] [Thread-190408] [transport.py] [_log()] kex follows: False
2025-11-24T12:57:25.973 [DEBUG] [Thread-190408] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:57:25.973 [DEBUG] [Thread-190408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:57:25.973 [DEBUG] [Thread-190408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:57:25.973 [DEBUG] [Thread-190408] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:57:25.973 [DEBUG] [Thread-190408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:57:25.973 [DEBUG] [Thread-190408] [transport.py] [_log()] Compression: none
2025-11-24T12:57:25.973 [DEBUG] [Thread-190408] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:57:25.988 [DEBUG] [Thread-190408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:57:25.988 [DEBUG] [Thread-190408] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:57:25.989 [DEBUG] [Thread-190408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:57:25.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:57:25.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:57:25.991 [DEBUG] [Thread-190408] [transport.py] [_log()] userauth is OK
2025-11-24T12:57:25.991 [DEBUG] [Thread-190408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:57:25.991 [DEBUG] [Thread-190408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:57:25.991 [DEBUG] [Thread-190408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:57:25.991 [DEBUG] [Thread-190408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:57:26.010 [INFO] [Thread-190408] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:57:26.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:57:26.655 [DEBUG] [Thread-190408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:57:26.655 [DEBUG] [Thread-190408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:57:26.656 [DEBUG] [Thread-190408] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:57:26.697 [DEBUG] [Thread-190408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:57:26.697 [DEBUG] [Thread-190408] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:57:26.700 [DEBUG] [Thread-190408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:57:26.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:57:26.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:57:26.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:57:26.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:57:26.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:57:26.735 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:57:26.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:57:26.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:57:26.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:57:26.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T12:57:26.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:57:26.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:57:26.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T12:57:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:57:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:57:26.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:57:26.738 [DEBUG] [Thread-190408] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:57:26.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:57:26.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:57:26.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:56:59', tmtdew=22.82, humidity=21.79, cloud=0.0, wind=32.4, temperature=20.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:57:26.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:57:26.835 [DEBUG] [Thread-190411] [transport.py] [_log()] starting thread (client mode): 0xc9b83190
2025-11-24T12:57:26.835 [DEBUG] [Thread-190411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:57:26.849 [DEBUG] [Thread-190411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:57:26.850 [INFO] [Thread-190411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:57:26.859 [DEBUG] [Thread-190411] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:57:26.859 [DEBUG] [Thread-190411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:57:26.859 [DEBUG] [Thread-190411] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] client lang: <none>
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] server lang: <none>
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] kex follows: False
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] Compression: none
2025-11-24T12:57:26.860 [DEBUG] [Thread-190411] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:57:26.917 [DEBUG] [Thread-190411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:57:26.918 [DEBUG] [Thread-190411] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:57:26.918 [DEBUG] [Thread-190411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:57:26.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:57:26.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:57:26.976 [DEBUG] [Thread-190411] [transport.py] [_log()] userauth is OK
2025-11-24T12:57:26.976 [DEBUG] [Thread-190411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:57:26.976 [DEBUG] [Thread-190411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:57:26.976 [DEBUG] [Thread-190411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:57:26.976 [DEBUG] [Thread-190411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:57:26.994 [INFO] [Thread-190411] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:57:26.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:57:26.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:57:27.837 [DEBUG] [Thread-190411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:57:27.846 [DEBUG] [Thread-190411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:57:27.885 [DEBUG] [Thread-190411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:57:27.885 [DEBUG] [Thread-190411] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:57:27.897 [DEBUG] [Thread-190411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:57:27.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:57:27.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-11-24T12:57: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-11-24T12:57:27.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:57:27.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:57:27.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:57:27.935 [DEBUG] [Thread-190411] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:57:35.914 [DEBUG] [Thread-190413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:57:50.953 [DEBUG] [Thread-190414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:57:54.632 [DEBUG] [Thread-190415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:57:55.785 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:57:55.785 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:57:57.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:57:57.952 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:57:57.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-11-24T12:57:58.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 57, 32), 22.94, 21.62, 0.0, 31.44, 20.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:57:58.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:57:32
2025-11-24T12:57:58.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:57:59.012 [DEBUG] [Thread-190416] [transport.py] [_log()] starting thread (client mode): 0xd0711960
2025-11-24T12:57:59.012 [DEBUG] [Thread-190416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:57:59.034 [DEBUG] [Thread-190416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:57:59.034 [INFO] [Thread-190416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:57:59.037 [DEBUG] [Thread-190416] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:57:59.037 [DEBUG] [Thread-190416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:57:59.037 [DEBUG] [Thread-190416] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:57:59.037 [DEBUG] [Thread-190416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:57:59.037 [DEBUG] [Thread-190416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:57:59.037 [DEBUG] [Thread-190416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:57:59.037 [DEBUG] [Thread-190416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] client lang: <none>
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] server lang: <none>
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] kex follows: False
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] Compression: none
2025-11-24T12:57:59.038 [DEBUG] [Thread-190416] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:57:59.056 [DEBUG] [Thread-190416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:57:59.056 [DEBUG] [Thread-190416] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:57:59.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:57:59.057 [DEBUG] [Thread-190416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:57:59.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:57:59.059 [DEBUG] [Thread-190416] [transport.py] [_log()] userauth is OK
2025-11-24T12:57:59.060 [DEBUG] [Thread-190416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:57:59.060 [DEBUG] [Thread-190416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:57:59.060 [DEBUG] [Thread-190416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:57:59.060 [DEBUG] [Thread-190416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:57:59.085 [INFO] [Thread-190416] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:57:59.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:57:59.702 [DEBUG] [Thread-190416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:57:59.702 [DEBUG] [Thread-190416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:57:59.702 [DEBUG] [Thread-190416] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:57:59.743 [DEBUG] [Thread-190416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:57:59.743 [DEBUG] [Thread-190416] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:57:59.746 [DEBUG] [Thread-190416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:57:59.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:57:59.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:57:59.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:57:59.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:57:59.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:57:59.779 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:57:59.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:57:59.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:57:59.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:57:59.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T12:57:59.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:57:59.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:57:59.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T12:57:59.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:57:59.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:57:59.782 [DEBUG] [Thread-190416] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:57:59.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:57:59.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:57:59.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:57:59.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:57:32', tmtdew=22.94, humidity=21.62, cloud=0.0, wind=31.44, temperature=20.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:57:59.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:57:59.878 [DEBUG] [Thread-190419] [transport.py] [_log()] starting thread (client mode): 0xc9b83190
2025-11-24T12:57:59.878 [DEBUG] [Thread-190419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:57:59.892 [DEBUG] [Thread-190419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:57:59.892 [INFO] [Thread-190419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] client lang: <none>
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] server lang: <none>
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] kex follows: False
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] Compression: none
2025-11-24T12:57:59.900 [DEBUG] [Thread-190419] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:57:59.954 [DEBUG] [Thread-190419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:57:59.954 [DEBUG] [Thread-190419] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:57:59.954 [DEBUG] [Thread-190419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:57:59.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:57:59.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:58:00.012 [DEBUG] [Thread-190419] [transport.py] [_log()] userauth is OK
2025-11-24T12:58:00.012 [DEBUG] [Thread-190419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:58:00.012 [DEBUG] [Thread-190419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:58:00.012 [DEBUG] [Thread-190419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:58:00.012 [DEBUG] [Thread-190419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:58:00.025 [INFO] [Thread-190419] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:58:00.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:58:00.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:58:00.922 [DEBUG] [Thread-190419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:58:00.922 [DEBUG] [Thread-190419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:58:00.970 [DEBUG] [Thread-190419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:58:00.970 [DEBUG] [Thread-190419] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:58:00.978 [DEBUG] [Thread-190419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:58:00.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:58:00.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')
2025-11-24T12:58:00.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-11-24T12:58:01.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:58:01.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:58:01.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:58:01.010 [DEBUG] [Thread-190419] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:58:05.990 [DEBUG] [Thread-190421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:58:21.023 [DEBUG] [Thread-190422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:58:31.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:58:31.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:58:31.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-11-24T12:58:31.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 58, 4), 23.14, 21.36, 0.0, 36.72, 20.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:58:31.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:58:04
2025-11-24T12:58:31.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:58:31.995 [DEBUG] [Thread-190423] [transport.py] [_log()] starting thread (client mode): 0xd07f83d0
2025-11-24T12:58:31.995 [DEBUG] [Thread-190423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:58:32.015 [DEBUG] [Thread-190423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:58:32.015 [INFO] [Thread-190423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:58:32.016 [DEBUG] [Thread-190423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:58:32.016 [DEBUG] [Thread-190423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:58:32.016 [DEBUG] [Thread-190423] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] client lang: <none>
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] server lang: <none>
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] kex follows: False
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:58:32.017 [DEBUG] [Thread-190423] [transport.py] [_log()] Compression: none
2025-11-24T12:58:32.018 [DEBUG] [Thread-190423] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:58:32.027 [DEBUG] [Thread-190423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:58:32.027 [DEBUG] [Thread-190423] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:58:32.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:58:32.028 [DEBUG] [Thread-190423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:58:32.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:58:32.029 [DEBUG] [Thread-190423] [transport.py] [_log()] userauth is OK
2025-11-24T12:58:32.029 [DEBUG] [Thread-190423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:58:32.029 [DEBUG] [Thread-190423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:58:32.029 [DEBUG] [Thread-190423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:58:32.029 [DEBUG] [Thread-190423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:58:32.041 [INFO] [Thread-190423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:58:32.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:58:32.666 [DEBUG] [Thread-190423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:58:32.666 [DEBUG] [Thread-190423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:58:32.666 [DEBUG] [Thread-190423] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:58:32.707 [DEBUG] [Thread-190423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:58:32.707 [DEBUG] [Thread-190423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:58:32.710 [DEBUG] [Thread-190423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:58:32.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:58:32.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:58:32.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:58:32.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:58:32.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:58:32.729 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:58:32.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:58:32.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:58:32.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:58:32.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T12:58:32.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:58:32.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:58:32.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T12:58:32.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:58:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:58:32.731 [DEBUG] [Thread-190423] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:58:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:58:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:58:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:58:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:58:04', tmtdew=23.14, humidity=21.36, cloud=0.0, wind=36.72, temperature=20.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:58:32.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:58:32.827 [DEBUG] [Thread-190426] [transport.py] [_log()] starting thread (client mode): 0xd31505e0
2025-11-24T12:58:32.828 [DEBUG] [Thread-190426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:58:32.842 [DEBUG] [Thread-190426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:58:32.842 [INFO] [Thread-190426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:58:32.849 [DEBUG] [Thread-190426] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:58:32.850 [DEBUG] [Thread-190426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:58:32.850 [DEBUG] [Thread-190426] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:58:32.850 [DEBUG] [Thread-190426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:58:32.850 [DEBUG] [Thread-190426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:58:32.850 [DEBUG] [Thread-190426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:58:32.850 [DEBUG] [Thread-190426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:58:32.850 [DEBUG] [Thread-190426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:58:32.850 [DEBUG] [Thread-190426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:58:32.850 [DEBUG] [Thread-190426] [transport.py] [_log()] client lang: <none>
2025-11-24T12:58:32.851 [DEBUG] [Thread-190426] [transport.py] [_log()] server lang: <none>
2025-11-24T12:58:32.851 [DEBUG] [Thread-190426] [transport.py] [_log()] kex follows: False
2025-11-24T12:58:32.851 [DEBUG] [Thread-190426] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:58:32.851 [DEBUG] [Thread-190426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:58:32.851 [DEBUG] [Thread-190426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:58:32.851 [DEBUG] [Thread-190426] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:58:32.851 [DEBUG] [Thread-190426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:58:32.851 [DEBUG] [Thread-190426] [transport.py] [_log()] Compression: none
2025-11-24T12:58:32.852 [DEBUG] [Thread-190426] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:58:32.911 [DEBUG] [Thread-190426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:58:32.912 [DEBUG] [Thread-190426] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:58:32.913 [DEBUG] [Thread-190426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:58:32.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:58:32.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:58:32.968 [DEBUG] [Thread-190426] [transport.py] [_log()] userauth is OK
2025-11-24T12:58:32.968 [DEBUG] [Thread-190426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:58:32.968 [DEBUG] [Thread-190426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:58:32.968 [DEBUG] [Thread-190426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:58:32.968 [DEBUG] [Thread-190426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:58:32.987 [INFO] [Thread-190426] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:58:32.987 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:58:32.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:58:33.829 [DEBUG] [Thread-190426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:58:33.830 [DEBUG] [Thread-190426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:58:33.877 [DEBUG] [Thread-190426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:58:33.877 [DEBUG] [Thread-190426] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:58:33.886 [DEBUG] [Thread-190426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:58:33.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:58:33.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-11-24T12:58:33.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-11-24T12:58:33.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:58:33.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:58:33.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:58:33.918 [DEBUG] [Thread-190426] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:58:36.055 [DEBUG] [Thread-190428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:58:51.101 [DEBUG] [Thread-190429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:58:54.686 [DEBUG] [Thread-190430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:58:55.927 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:58:55.928 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:59:03.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:59:03.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:59:03.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-11-24T12:59:04.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 58, 37), 22.75, 21.59, 0.0, 29.94, 20.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:59:04.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:58:37
2025-11-24T12:59:04.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:59:05.063 [DEBUG] [Thread-190431] [transport.py] [_log()] starting thread (client mode): 0xd07015a0
2025-11-24T12:59:05.064 [DEBUG] [Thread-190431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:59:05.083 [DEBUG] [Thread-190431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:59:05.083 [INFO] [Thread-190431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] client lang: <none>
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] server lang: <none>
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] kex follows: False
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:59:05.087 [DEBUG] [Thread-190431] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:59:05.088 [DEBUG] [Thread-190431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:59:05.088 [DEBUG] [Thread-190431] [transport.py] [_log()] Compression: none
2025-11-24T12:59:05.088 [DEBUG] [Thread-190431] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:59:05.104 [DEBUG] [Thread-190431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:59:05.104 [DEBUG] [Thread-190431] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:59:05.105 [DEBUG] [Thread-190431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:59:05.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:59:05.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:59:05.107 [DEBUG] [Thread-190431] [transport.py] [_log()] userauth is OK
2025-11-24T12:59:05.107 [DEBUG] [Thread-190431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:59:05.107 [DEBUG] [Thread-190431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:59:05.107 [DEBUG] [Thread-190431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:59:05.107 [DEBUG] [Thread-190431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:59:05.129 [INFO] [Thread-190431] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:59:05.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:59:05.748 [DEBUG] [Thread-190431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:59:05.748 [DEBUG] [Thread-190431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:59:05.748 [DEBUG] [Thread-190431] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:59:05.789 [DEBUG] [Thread-190431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:59:05.789 [DEBUG] [Thread-190431] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:59:05.791 [DEBUG] [Thread-190431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:59:05.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:59:05.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:59:05.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:59:05.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:59:05.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:59:05.819 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:59:05.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:59:05.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:58:37', tmtdew=22.75, humidity=21.59, cloud=0.0, wind=29.94, temperature=20.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:59:05.820 [DEBUG] [Thread-190431] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:59:05.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:59:05.901 [DEBUG] [Thread-190434] [transport.py] [_log()] starting thread (client mode): 0xd3153f40
2025-11-24T12:59:05.902 [DEBUG] [Thread-190434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:59:05.915 [DEBUG] [Thread-190434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:59:05.916 [INFO] [Thread-190434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:59:05.923 [DEBUG] [Thread-190434] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:59:05.923 [DEBUG] [Thread-190434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:59:05.923 [DEBUG] [Thread-190434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:59:05.923 [DEBUG] [Thread-190434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:59:05.923 [DEBUG] [Thread-190434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:59:05.923 [DEBUG] [Thread-190434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:59:05.923 [DEBUG] [Thread-190434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:59:05.923 [DEBUG] [Thread-190434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:59:05.923 [DEBUG] [Thread-190434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:59:05.923 [DEBUG] [Thread-190434] [transport.py] [_log()] client lang: <none>
2025-11-24T12:59:05.924 [DEBUG] [Thread-190434] [transport.py] [_log()] server lang: <none>
2025-11-24T12:59:05.924 [DEBUG] [Thread-190434] [transport.py] [_log()] kex follows: False
2025-11-24T12:59:05.924 [DEBUG] [Thread-190434] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:59:05.924 [DEBUG] [Thread-190434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:59:05.924 [DEBUG] [Thread-190434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:59:05.924 [DEBUG] [Thread-190434] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:59:05.924 [DEBUG] [Thread-190434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:59:05.924 [DEBUG] [Thread-190434] [transport.py] [_log()] Compression: none
2025-11-24T12:59:05.924 [DEBUG] [Thread-190434] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:59:05.980 [DEBUG] [Thread-190434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:59:05.981 [DEBUG] [Thread-190434] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:59:05.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:59:05.982 [DEBUG] [Thread-190434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:59:05.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:59:06.042 [DEBUG] [Thread-190434] [transport.py] [_log()] userauth is OK
2025-11-24T12:59:06.043 [DEBUG] [Thread-190434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:59:06.043 [DEBUG] [Thread-190434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:59:06.043 [DEBUG] [Thread-190434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:59:06.043 [DEBUG] [Thread-190434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:59:06.066 [INFO] [Thread-190434] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:59:06.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:59:06.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:59:06.129 [DEBUG] [Thread-190436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:59:06.910 [DEBUG] [Thread-190434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:59:06.910 [DEBUG] [Thread-190434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:59:06.958 [DEBUG] [Thread-190434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:59:06.958 [DEBUG] [Thread-190434] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:59:06.966 [DEBUG] [Thread-190434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:59:06.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:59:06.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T12:59:06.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-11-24T12:59:06.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:59:06.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:59:06.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:59:06.997 [DEBUG] [Thread-190434] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:59:21.176 [DEBUG] [Thread-190437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:59:36.204 [DEBUG] [Thread-190438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:59:37.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T12:59:37.020 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T12:59:37.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T12:59:37.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 59, 10), 22.45, 21.94, 0.0, 26.24, 19.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T12:59:37.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:59:10
2025-11-24T12:59:37.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T12:59:38.013 [DEBUG] [Thread-190439] [transport.py] [_log()] starting thread (client mode): 0xd3152860
2025-11-24T12:59:38.013 [DEBUG] [Thread-190439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:59:38.034 [DEBUG] [Thread-190439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T12:59:38.034 [INFO] [Thread-190439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] client lang: <none>
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] server lang: <none>
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] kex follows: False
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] Compression: none
2025-11-24T12:59:38.038 [DEBUG] [Thread-190439] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:59:38.055 [DEBUG] [Thread-190439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:59:38.055 [DEBUG] [Thread-190439] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:59:38.055 [DEBUG] [Thread-190439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T12:59:38.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T12:59:38.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:59:38.056 [DEBUG] [Thread-190439] [transport.py] [_log()] userauth is OK
2025-11-24T12:59:38.056 [DEBUG] [Thread-190439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:59:38.056 [DEBUG] [Thread-190439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:59:38.056 [DEBUG] [Thread-190439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T12:59:38.056 [DEBUG] [Thread-190439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:59:38.067 [INFO] [Thread-190439] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:59:38.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:59:38.695 [DEBUG] [Thread-190439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:59:38.695 [DEBUG] [Thread-190439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:59:38.695 [DEBUG] [Thread-190439] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T12:59:38.736 [DEBUG] [Thread-190439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:59:38.736 [DEBUG] [Thread-190439] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:59:38.739 [DEBUG] [Thread-190439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:59:38.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:59:38.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T12:59:38.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T12:59:38.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T12:59:38.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:59:38.775 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T12:59:38.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:59:38.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:59:38.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T12:59:38.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T12:59:38.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T12:59:38.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T12:59:38.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T12:59:38.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T12:59:38.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T12:59:38.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T12:59:38.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T12:59:38.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T12:59:38.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:59:10', tmtdew=22.45, humidity=21.94, cloud=0.0, wind=26.24, temperature=19.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T12:59:38.778 [DEBUG] [Thread-190439] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:59:38.862 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T12:59:38.874 [DEBUG] [Thread-190442] [transport.py] [_log()] starting thread (client mode): 0xd07e8a90
2025-11-24T12:59:38.874 [DEBUG] [Thread-190442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T12:59:38.888 [DEBUG] [Thread-190442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T12:59:38.888 [INFO] [Thread-190442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T12:59:38.896 [DEBUG] [Thread-190442] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] client lang: <none>
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] server lang: <none>
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] kex follows: False
2025-11-24T12:59:38.897 [DEBUG] [Thread-190442] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T12:59:38.898 [DEBUG] [Thread-190442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T12:59:38.898 [DEBUG] [Thread-190442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T12:59:38.898 [DEBUG] [Thread-190442] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T12:59:38.898 [DEBUG] [Thread-190442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T12:59:38.898 [DEBUG] [Thread-190442] [transport.py] [_log()] Compression: none
2025-11-24T12:59:38.898 [DEBUG] [Thread-190442] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T12:59:38.961 [DEBUG] [Thread-190442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T12:59:38.962 [DEBUG] [Thread-190442] [transport.py] [_log()] Switch to new keys ...
2025-11-24T12:59:38.963 [DEBUG] [Thread-190442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T12:59:38.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T12:59:38.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T12:59:39.020 [DEBUG] [Thread-190442] [transport.py] [_log()] userauth is OK
2025-11-24T12:59:39.021 [DEBUG] [Thread-190442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T12:59:39.021 [DEBUG] [Thread-190442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T12:59:39.021 [DEBUG] [Thread-190442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T12:59:39.021 [DEBUG] [Thread-190442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T12:59:39.040 [INFO] [Thread-190442] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T12:59:39.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T12:59:39.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T12:59:39.913 [DEBUG] [Thread-190442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T12:59:39.913 [DEBUG] [Thread-190442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T12:59:39.960 [DEBUG] [Thread-190442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T12:59:39.960 [DEBUG] [Thread-190442] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T12:59:39.969 [DEBUG] [Thread-190442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T12:59:39.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T12:59:39.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-11-24T12:59:39.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-11-24T12:59:39.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T12:59:39.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T12:59:39.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T12:59:40.003 [DEBUG] [Thread-190442] [transport.py] [_log()] EOF in transport thread
2025-11-24T12:59:51.245 [DEBUG] [Thread-190444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:59:54.947 [DEBUG] [Thread-190445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:59:56.074 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T12:59:56.076 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:00:06.304 [DEBUG] [Thread-190446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:00:10.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:00:10.024 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:00:10.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-11-24T13:00:10.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 12, 59, 42), 22.33, 22.17, 0.0, 18.17, 19.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:00:10.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 12:59:42
2025-11-24T13:00:10.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:00:11.090 [DEBUG] [Thread-190447] [transport.py] [_log()] starting thread (client mode): 0xd317c9d0
2025-11-24T13:00:11.091 [DEBUG] [Thread-190447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:00:11.110 [DEBUG] [Thread-190447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:00:11.110 [INFO] [Thread-190447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] client lang: <none>
2025-11-24T13:00:11.113 [DEBUG] [Thread-190447] [transport.py] [_log()] server lang: <none>
2025-11-24T13:00:11.114 [DEBUG] [Thread-190447] [transport.py] [_log()] kex follows: False
2025-11-24T13:00:11.114 [DEBUG] [Thread-190447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:00:11.114 [DEBUG] [Thread-190447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:00:11.114 [DEBUG] [Thread-190447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:00:11.114 [DEBUG] [Thread-190447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:00:11.114 [DEBUG] [Thread-190447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:00:11.114 [DEBUG] [Thread-190447] [transport.py] [_log()] Compression: none
2025-11-24T13:00:11.114 [DEBUG] [Thread-190447] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:00:11.131 [DEBUG] [Thread-190447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:00:11.131 [DEBUG] [Thread-190447] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:00:11.131 [DEBUG] [Thread-190447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:00:11.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:00:11.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:00:11.132 [DEBUG] [Thread-190447] [transport.py] [_log()] userauth is OK
2025-11-24T13:00:11.132 [DEBUG] [Thread-190447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:00:11.132 [DEBUG] [Thread-190447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:00:11.132 [DEBUG] [Thread-190447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:00:11.132 [DEBUG] [Thread-190447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:00:11.142 [INFO] [Thread-190447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:00:11.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:00:12.028 [DEBUG] [Thread-190447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:00:12.029 [DEBUG] [Thread-190447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:00:12.029 [DEBUG] [Thread-190447] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:00:12.069 [DEBUG] [Thread-190447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:00:12.069 [DEBUG] [Thread-190447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:00:12.071 [DEBUG] [Thread-190447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:00:12.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:00:12.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:00:12.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:00:12.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:00:12.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:00:12.088 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:00:12.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:00:12.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:00:12.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:00:12.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.454215 -999.00  +20.10  13.56     29   +1.70 1 1 1 1 1   888    0 17.55 -46.12 ----- 13.6 13.6 112.2 19.2 26.7 -29.5 26.1 -24.6 26.4 -24.0 27.5 -24.6
2025-11-24T13:00:12.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:00:12.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:00:12.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.454215
2025-11-24T13:00:12.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:00:12.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:00:12.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:00:12.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:00:12.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:00:12.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T12:59:42', tmtdew=22.33, humidity=22.17, cloud=0.0, wind=18.17, temperature=19.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T10:54:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:00:12.091 [DEBUG] [Thread-190447] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:00:12.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:00:12.178 [DEBUG] [Thread-190450] [transport.py] [_log()] starting thread (client mode): 0xd0701b40
2025-11-24T13:00:12.178 [DEBUG] [Thread-190450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:00:12.192 [DEBUG] [Thread-190450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:00:12.192 [INFO] [Thread-190450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] client lang: <none>
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] server lang: <none>
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] kex follows: False
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] Compression: none
2025-11-24T13:00:12.200 [DEBUG] [Thread-190450] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:00:12.258 [DEBUG] [Thread-190450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:00:12.259 [DEBUG] [Thread-190450] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:00:12.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:00:12.259 [DEBUG] [Thread-190450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:00:12.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:00:12.316 [DEBUG] [Thread-190450] [transport.py] [_log()] userauth is OK
2025-11-24T13:00:12.316 [DEBUG] [Thread-190450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:00:12.316 [DEBUG] [Thread-190450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:00:12.316 [DEBUG] [Thread-190450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:00:12.316 [DEBUG] [Thread-190450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:00:12.330 [INFO] [Thread-190450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:00:12.330 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:00:12.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:00:13.158 [DEBUG] [Thread-190450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:00:13.158 [DEBUG] [Thread-190450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:00:13.206 [DEBUG] [Thread-190450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:00:13.206 [DEBUG] [Thread-190450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:00:13.214 [DEBUG] [Thread-190450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:00:13.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:00:13.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-11-24T13:00:13.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-11-24T13:00:13.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:00:13.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:00:13.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:00:13.246 [DEBUG] [Thread-190450] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:00:21.346 [DEBUG] [Thread-190452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:00:36.416 [DEBUG] [Thread-190453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:00:43.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:00:43.268 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:00:43.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-11-24T13:00:44.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 0, 15), 22.18, 22.38, 0.0, 17.91, 19.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:00:44.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:00:15
2025-11-24T13:00:44.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:00:44.380 [DEBUG] [Thread-190454] [transport.py] [_log()] starting thread (client mode): 0xd0702b00
2025-11-24T13:00:44.381 [DEBUG] [Thread-190454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:00:44.400 [DEBUG] [Thread-190454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:00:44.400 [INFO] [Thread-190454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] client lang: <none>
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] server lang: <none>
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] kex follows: False
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] Compression: none
2025-11-24T13:00:44.404 [DEBUG] [Thread-190454] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:00:44.424 [DEBUG] [Thread-190454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:00:44.424 [DEBUG] [Thread-190454] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:00:44.425 [DEBUG] [Thread-190454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:00:44.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:00:44.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:00:44.427 [DEBUG] [Thread-190454] [transport.py] [_log()] userauth is OK
2025-11-24T13:00:44.427 [DEBUG] [Thread-190454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:00:44.427 [DEBUG] [Thread-190454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:00:44.427 [DEBUG] [Thread-190454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:00:44.427 [DEBUG] [Thread-190454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:00:44.462 [INFO] [Thread-190454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:00:44.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:00:45.078 [DEBUG] [Thread-190454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:00:45.079 [DEBUG] [Thread-190454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:00:45.079 [DEBUG] [Thread-190454] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:00:45.120 [DEBUG] [Thread-190454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:00:45.120 [DEBUG] [Thread-190454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:00:45.122 [DEBUG] [Thread-190454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:00:45.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:00:45.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:00:45.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:00:45.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:00:45.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:00:45.142 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:00:45.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:00:45.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:00:45.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:00:45.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.458381 -999.00  +20.20  22.85     27   +0.70 1 1 1 1 1   888    0 18.86 -14.97 NA 22.9 22.9 180.0 25.2 27.0 -27.5 25.6 -28.0 26.7 -25.1 27.7 -28.3
2025-11-24T13:00:45.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:00:45.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:00:45.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.458381
2025-11-24T13:00:45.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:00:45.146 [DEBUG] [Thread-190454] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:00:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:00:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:00:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:00:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:00:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:00:15', tmtdew=22.18, humidity=22.38, cloud=0.0, wind=17.91, temperature=19.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:00:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:00:45.223 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:00:45.235 [DEBUG] [Thread-190457] [transport.py] [_log()] starting thread (client mode): 0xd31b0c10
2025-11-24T13:00:45.235 [DEBUG] [Thread-190457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:00:45.250 [DEBUG] [Thread-190457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:00:45.250 [INFO] [Thread-190457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] client lang: <none>
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] server lang: <none>
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] kex follows: False
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:00:45.258 [DEBUG] [Thread-190457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:00:45.259 [DEBUG] [Thread-190457] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:00:45.259 [DEBUG] [Thread-190457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:00:45.259 [DEBUG] [Thread-190457] [transport.py] [_log()] Compression: none
2025-11-24T13:00:45.259 [DEBUG] [Thread-190457] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:00:45.317 [DEBUG] [Thread-190457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:00:45.317 [DEBUG] [Thread-190457] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:00:45.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:00:45.319 [DEBUG] [Thread-190457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:00:45.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:00:45.372 [DEBUG] [Thread-190457] [transport.py] [_log()] userauth is OK
2025-11-24T13:00:45.373 [DEBUG] [Thread-190457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:00:45.373 [DEBUG] [Thread-190457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:00:45.373 [DEBUG] [Thread-190457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:00:45.373 [DEBUG] [Thread-190457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:00:45.391 [INFO] [Thread-190457] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:00:45.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:00:45.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:00:46.245 [DEBUG] [Thread-190457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:00:46.245 [DEBUG] [Thread-190457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:00:46.293 [DEBUG] [Thread-190457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:00:46.293 [DEBUG] [Thread-190457] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:00:46.301 [DEBUG] [Thread-190457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:00:46.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:00:46.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-11-24T13:00:46.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-11-24T13:00:46.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:00:46.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:00:46.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:00:46.335 [DEBUG] [Thread-190457] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:00:51.440 [DEBUG] [Thread-190459 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:00:55.263 [DEBUG] [Thread-190460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:00:56.217 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:00:56.219 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:01:06.488 [DEBUG] [Thread-190461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:01:16.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:01:16.369 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:01:16.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-11-24T13:01:17.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 0, 47), 22.57, 21.82, 0.0, 18.86, 20.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:01:17.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:00:47
2025-11-24T13:01:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:01:17.582 [DEBUG] [Thread-190462] [transport.py] [_log()] starting thread (client mode): 0xd07fb3d0
2025-11-24T13:01:17.582 [DEBUG] [Thread-190462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:01:17.599 [DEBUG] [Thread-190462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:01:17.599 [INFO] [Thread-190462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:01:17.602 [DEBUG] [Thread-190462] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] client lang: <none>
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] server lang: <none>
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] kex follows: False
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] Compression: none
2025-11-24T13:01:17.603 [DEBUG] [Thread-190462] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:01:17.631 [DEBUG] [Thread-190462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:01:17.633 [DEBUG] [Thread-190462] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:01:17.634 [DEBUG] [Thread-190462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:01:17.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:01:17.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:01:17.676 [DEBUG] [Thread-190462] [transport.py] [_log()] userauth is OK
2025-11-24T13:01:17.676 [DEBUG] [Thread-190462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:01:17.676 [DEBUG] [Thread-190462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:01:17.676 [DEBUG] [Thread-190462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:01:17.676 [DEBUG] [Thread-190462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:01:17.715 [INFO] [Thread-190462] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:01:17.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:01:18.368 [DEBUG] [Thread-190462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:01:18.377 [DEBUG] [Thread-190462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:01:18.380 [DEBUG] [Thread-190462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:01:18.410 [DEBUG] [Thread-190462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:01:18.410 [DEBUG] [Thread-190462] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:01:18.414 [DEBUG] [Thread-190462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:01:18.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:01:18.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:01:18.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:01:18.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:01:18.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:01:18.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:01:18.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:01:18.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:01:18.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:01:18.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.458728 -999.00  +19.90  11.38     27   +0.80 1 1 1 1 1   888    0 18.80 -9.65 NA 11.4 11.4 184.4 25.1 26.9 -25.2 25.9 -24.4 26.5 -25.6 27.5 -26.6
2025-11-24T13:01:18.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:01:18.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:01:18.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.458728
2025-11-24T13:01:18.452 [DEBUG] [Thread-190462] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:01:18.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:01:18.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:01:18.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:01:18.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:01:18.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:01:18.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:00:47', tmtdew=22.57, humidity=21.82, cloud=0.0, wind=18.86, temperature=20.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:00:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:01:18.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:01:18.571 [DEBUG] [Thread-190465] [transport.py] [_log()] starting thread (client mode): 0xc9b80a60
2025-11-24T13:01:18.571 [DEBUG] [Thread-190465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:01:18.586 [DEBUG] [Thread-190465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:01:18.586 [INFO] [Thread-190465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] client lang: <none>
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] server lang: <none>
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] kex follows: False
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:01:18.594 [DEBUG] [Thread-190465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:01:18.595 [DEBUG] [Thread-190465] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:01:18.595 [DEBUG] [Thread-190465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:01:18.595 [DEBUG] [Thread-190465] [transport.py] [_log()] Compression: none
2025-11-24T13:01:18.595 [DEBUG] [Thread-190465] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:01:18.653 [DEBUG] [Thread-190465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:01:18.654 [DEBUG] [Thread-190465] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:01:18.654 [DEBUG] [Thread-190465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:01:18.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:01:18.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:01:18.713 [DEBUG] [Thread-190465] [transport.py] [_log()] userauth is OK
2025-11-24T13:01:18.713 [DEBUG] [Thread-190465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:01:18.713 [DEBUG] [Thread-190465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:01:18.713 [DEBUG] [Thread-190465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:01:18.714 [DEBUG] [Thread-190465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:01:18.732 [INFO] [Thread-190465] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:01:18.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:01:18.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:01:19.590 [DEBUG] [Thread-190465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:01:19.591 [DEBUG] [Thread-190465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:01:19.629 [DEBUG] [Thread-190465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:01:19.629 [DEBUG] [Thread-190465] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:01:19.638 [DEBUG] [Thread-190465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:01:19.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:01:19.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:01:19.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-11-24T13:01:19.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:01:19.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:01:19.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:01:19.678 [DEBUG] [Thread-190465] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:01:21.542 [DEBUG] [Thread-190467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:01:36.588 [DEBUG] [Thread-190468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:01:49.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:01:49.701 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:01:49.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-11-24T13:01:50.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 1, 20), 22.69, 21.62, 0.0, 15.92, 20.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:01:50.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:01:20
2025-11-24T13:01:50.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:01:50.722 [DEBUG] [Thread-190469] [transport.py] [_log()] starting thread (client mode): 0xd0700df0
2025-11-24T13:01:50.723 [DEBUG] [Thread-190469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:01:50.743 [DEBUG] [Thread-190469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:01:50.744 [INFO] [Thread-190469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] client lang: <none>
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] server lang: <none>
2025-11-24T13:01:50.747 [DEBUG] [Thread-190469] [transport.py] [_log()] kex follows: False
2025-11-24T13:01:50.748 [DEBUG] [Thread-190469] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:01:50.748 [DEBUG] [Thread-190469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:01:50.748 [DEBUG] [Thread-190469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:01:50.748 [DEBUG] [Thread-190469] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:01:50.748 [DEBUG] [Thread-190469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:01:50.748 [DEBUG] [Thread-190469] [transport.py] [_log()] Compression: none
2025-11-24T13:01:50.748 [DEBUG] [Thread-190469] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:01:50.765 [DEBUG] [Thread-190469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:01:50.775 [DEBUG] [Thread-190469] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:01:50.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:01:50.776 [DEBUG] [Thread-190469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:01:50.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:01:50.778 [DEBUG] [Thread-190469] [transport.py] [_log()] userauth is OK
2025-11-24T13:01:50.779 [DEBUG] [Thread-190469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:01:50.779 [DEBUG] [Thread-190469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:01:50.779 [DEBUG] [Thread-190469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:01:50.779 [DEBUG] [Thread-190469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:01:50.800 [INFO] [Thread-190469] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:01:50.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:01:51.435 [DEBUG] [Thread-190469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:01:51.435 [DEBUG] [Thread-190469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:01:51.435 [DEBUG] [Thread-190469] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:01:51.475 [DEBUG] [Thread-190469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:01:51.476 [DEBUG] [Thread-190469] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:01:51.479 [DEBUG] [Thread-190469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:01:51.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:01:51.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:01:51.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:01:51.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:01:51.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:01:51.513 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:01:51.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:01:51.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:01:51.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:01:51.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.459076 -999.00  +20.50  16.67     27   +1.00 1 1 1 1 1   888    0 18.95 -4.80 ----- 16.7 16.7 195.6 21.1 27.1 -26.5 26.0 -26.3 26.6 -23.6 27.8 -24.8
2025-11-24T13:01:51.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:01:51.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:01:51.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.459076
2025-11-24T13:01:51.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:01:51.515 [DEBUG] [Thread-190469] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:01:51.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:01:51.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:01:51.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:01:51.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:01:51.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:01:20', tmtdew=22.69, humidity=21.62, cloud=0.0, wind=15.92, temperature=20.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:01:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:01:51.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:01:51.612 [DEBUG] [Thread-190472] [transport.py] [_log()] starting thread (client mode): 0xc9b81810
2025-11-24T13:01:51.612 [DEBUG] [Thread-190472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:01:51.619 [DEBUG] [Thread-190473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:01:51.627 [DEBUG] [Thread-190472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:01:51.627 [INFO] [Thread-190472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:01:51.634 [DEBUG] [Thread-190472] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:01:51.634 [DEBUG] [Thread-190472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:01:51.634 [DEBUG] [Thread-190472] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] client lang: <none>
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] server lang: <none>
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] kex follows: False
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] Compression: none
2025-11-24T13:01:51.635 [DEBUG] [Thread-190472] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:01:51.693 [DEBUG] [Thread-190472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:01:51.694 [DEBUG] [Thread-190472] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:01:51.694 [DEBUG] [Thread-190472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:01:51.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:01:51.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:01:51.752 [DEBUG] [Thread-190472] [transport.py] [_log()] userauth is OK
2025-11-24T13:01:51.753 [DEBUG] [Thread-190472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:01:51.753 [DEBUG] [Thread-190472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:01:51.753 [DEBUG] [Thread-190472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:01:51.753 [DEBUG] [Thread-190472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:01:51.774 [INFO] [Thread-190472] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:01:51.774 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:01:51.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:01:52.653 [DEBUG] [Thread-190472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:01:52.653 [DEBUG] [Thread-190472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:01:52.701 [DEBUG] [Thread-190472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:01:52.701 [DEBUG] [Thread-190472] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:01:52.709 [DEBUG] [Thread-190472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:01:52.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:01:52.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-11-24T13:01:52.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-11-24T13:01:52.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:01:52.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:01:52.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:01:52.741 [DEBUG] [Thread-190472] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:01:55.581 [DEBUG] [Thread-190475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:01:56.368 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:01:56.369 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:02:06.660 [DEBUG] [Thread-190476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:02:21.690 [DEBUG] [Thread-190477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:02:22.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:02:22.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:02:22.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-11-24T13:02:23.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 1, 52), 23.88, 19.65, 0.0, 25.64, 20.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:02:23.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:01:52
2025-11-24T13:02:23.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:02:23.835 [DEBUG] [Thread-190478] [transport.py] [_log()] starting thread (client mode): 0xd07e9c00
2025-11-24T13:02:23.835 [DEBUG] [Thread-190478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:02:23.855 [DEBUG] [Thread-190478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:02:23.855 [INFO] [Thread-190478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:02:23.858 [DEBUG] [Thread-190478] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:02:23.859 [DEBUG] [Thread-190478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:02:23.859 [DEBUG] [Thread-190478] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:02:23.859 [DEBUG] [Thread-190478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:02:23.859 [DEBUG] [Thread-190478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:02:23.859 [DEBUG] [Thread-190478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:02:23.859 [DEBUG] [Thread-190478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:02:23.859 [DEBUG] [Thread-190478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:02:23.859 [DEBUG] [Thread-190478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:02:23.859 [DEBUG] [Thread-190478] [transport.py] [_log()] client lang: <none>
2025-11-24T13:02:23.859 [DEBUG] [Thread-190478] [transport.py] [_log()] server lang: <none>
2025-11-24T13:02:23.860 [DEBUG] [Thread-190478] [transport.py] [_log()] kex follows: False
2025-11-24T13:02:23.860 [DEBUG] [Thread-190478] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:02:23.860 [DEBUG] [Thread-190478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:02:23.860 [DEBUG] [Thread-190478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:02:23.860 [DEBUG] [Thread-190478] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:02:23.860 [DEBUG] [Thread-190478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:02:23.860 [DEBUG] [Thread-190478] [transport.py] [_log()] Compression: none
2025-11-24T13:02:23.860 [DEBUG] [Thread-190478] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:02:23.879 [DEBUG] [Thread-190478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:02:23.880 [DEBUG] [Thread-190478] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:02:23.881 [DEBUG] [Thread-190478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:02:23.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:02:23.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:02:23.883 [DEBUG] [Thread-190478] [transport.py] [_log()] userauth is OK
2025-11-24T13:02:23.883 [DEBUG] [Thread-190478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:02:23.883 [DEBUG] [Thread-190478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:02:23.884 [DEBUG] [Thread-190478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:02:23.884 [DEBUG] [Thread-190478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:02:23.906 [INFO] [Thread-190478] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:02:23.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:02:24.670 [DEBUG] [Thread-190478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:02:24.670 [DEBUG] [Thread-190478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:02:24.671 [DEBUG] [Thread-190478] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:02:24.711 [DEBUG] [Thread-190478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:02:24.712 [DEBUG] [Thread-190478] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:02:24.714 [DEBUG] [Thread-190478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:02:24.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:02:24.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:02:24.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:02:24.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:02:24.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:02:24.750 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:02:24.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:02:24.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:02:24.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:02:24.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.459770 -999.00  +21.10  20.97     24   -0.10 1 1 1 1 1   888    0 19.69 17.87 ----- 21.0 21.0 195.0 33.0 27.0 -26.4 25.9 -28.4 26.6 -26.1 27.6 -25.6
2025-11-24T13:02:24.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:02:24.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:02:24.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.459770
2025-11-24T13:02:24.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:02:24.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:02:24.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:02:24.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:02:24.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:02:24.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:01:52', tmtdew=23.88, humidity=19.65, cloud=0.0, wind=25.64, temperature=20.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:02:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:02:24.753 [DEBUG] [Thread-190478] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:02:24.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:02:24.851 [DEBUG] [Thread-190481] [transport.py] [_log()] starting thread (client mode): 0xd31925c0
2025-11-24T13:02:24.851 [DEBUG] [Thread-190481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:02:24.865 [DEBUG] [Thread-190481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:02:24.866 [INFO] [Thread-190481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:02:24.875 [DEBUG] [Thread-190481] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:02:24.875 [DEBUG] [Thread-190481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:02:24.876 [DEBUG] [Thread-190481] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:02:24.876 [DEBUG] [Thread-190481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:02:24.876 [DEBUG] [Thread-190481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:02:24.876 [DEBUG] [Thread-190481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:02:24.876 [DEBUG] [Thread-190481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:02:24.876 [DEBUG] [Thread-190481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:02:24.876 [DEBUG] [Thread-190481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:02:24.877 [DEBUG] [Thread-190481] [transport.py] [_log()] client lang: <none>
2025-11-24T13:02:24.877 [DEBUG] [Thread-190481] [transport.py] [_log()] server lang: <none>
2025-11-24T13:02:24.877 [DEBUG] [Thread-190481] [transport.py] [_log()] kex follows: False
2025-11-24T13:02:24.877 [DEBUG] [Thread-190481] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:02:24.877 [DEBUG] [Thread-190481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:02:24.877 [DEBUG] [Thread-190481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:02:24.877 [DEBUG] [Thread-190481] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:02:24.877 [DEBUG] [Thread-190481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:02:24.878 [DEBUG] [Thread-190481] [transport.py] [_log()] Compression: none
2025-11-24T13:02:24.878 [DEBUG] [Thread-190481] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:02:24.931 [DEBUG] [Thread-190481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:02:24.932 [DEBUG] [Thread-190481] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:02:24.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:02:24.933 [DEBUG] [Thread-190481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:02:24.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:02:24.991 [DEBUG] [Thread-190481] [transport.py] [_log()] userauth is OK
2025-11-24T13:02:24.991 [DEBUG] [Thread-190481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:02:24.991 [DEBUG] [Thread-190481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:02:24.991 [DEBUG] [Thread-190481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:02:24.991 [DEBUG] [Thread-190481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:02:25.004 [INFO] [Thread-190481] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:02:25.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:02:25.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:02:25.835 [DEBUG] [Thread-190481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:02:25.835 [DEBUG] [Thread-190481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:02:25.883 [DEBUG] [Thread-190481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:02:25.883 [DEBUG] [Thread-190481] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:02:25.891 [DEBUG] [Thread-190481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:02:25.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:02:25.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-11-24T13:02:25.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-11-24T13:02:25.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:02:25.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:02:25.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:02:25.924 [DEBUG] [Thread-190481] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:02:36.723 [DEBUG] [Thread-190483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:02:51.780 [DEBUG] [Thread-190484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:02:55.632 [DEBUG] [Thread-190485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:02:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:02:55.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:02:55.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-11-24T13:02:56.511 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:02:56.511 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:02:56.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 2, 25), 24.72, 18.61, 0.0, 28.32, 21.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:02:56.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:02:25
2025-11-24T13:02:56.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:02:56.914 [DEBUG] [Thread-190486] [transport.py] [_log()] starting thread (client mode): 0xd31b2020
2025-11-24T13:02:56.914 [DEBUG] [Thread-190486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:02:56.934 [DEBUG] [Thread-190486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:02:56.935 [INFO] [Thread-190486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] client lang: <none>
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] server lang: <none>
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] kex follows: False
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] Compression: none
2025-11-24T13:02:56.938 [DEBUG] [Thread-190486] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:02:56.957 [DEBUG] [Thread-190486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:02:56.957 [DEBUG] [Thread-190486] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:02:56.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:02:56.958 [DEBUG] [Thread-190486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:02:56.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:02:56.960 [DEBUG] [Thread-190486] [transport.py] [_log()] userauth is OK
2025-11-24T13:02:56.961 [DEBUG] [Thread-190486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:02:56.961 [DEBUG] [Thread-190486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:02:56.961 [DEBUG] [Thread-190486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:02:56.961 [DEBUG] [Thread-190486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:02:56.983 [INFO] [Thread-190486] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:02:56.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:02:57.622 [DEBUG] [Thread-190486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:02:57.622 [DEBUG] [Thread-190486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:02:57.623 [DEBUG] [Thread-190486] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:02:57.663 [DEBUG] [Thread-190486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:02:57.663 [DEBUG] [Thread-190486] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:02:57.666 [DEBUG] [Thread-190486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:02:57.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:02:57.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:02:57.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:02:57.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:02:57.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:02:57.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:02:57.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:02:57.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:02:57.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:02:57.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.460118 -999.00  +21.30  19.72     24   +0.00 1 1 1 1 1   888    0 20.46 31.61 ----- 19.7 19.7 189.8 22.5 27.1 -26.2 25.9 -25.2 26.6 -24.2 27.7 -25.4
2025-11-24T13:02:57.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:02:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:02:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.460118
2025-11-24T13:02:57.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:02:57.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:02:57.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:02:57.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:02:57.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:02:57.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:02:25', tmtdew=24.72, humidity=18.61, cloud=0.0, wind=28.32, temperature=21.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:02:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:02:57.691 [DEBUG] [Thread-190486] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:02:57.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:02:57.781 [DEBUG] [Thread-190489] [transport.py] [_log()] starting thread (client mode): 0xd07110c0
2025-11-24T13:02:57.781 [DEBUG] [Thread-190489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:02:57.796 [DEBUG] [Thread-190489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:02:57.796 [INFO] [Thread-190489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] client lang: <none>
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] server lang: <none>
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] kex follows: False
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:02:57.803 [DEBUG] [Thread-190489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:02:57.804 [DEBUG] [Thread-190489] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:02:57.804 [DEBUG] [Thread-190489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:02:57.804 [DEBUG] [Thread-190489] [transport.py] [_log()] Compression: none
2025-11-24T13:02:57.804 [DEBUG] [Thread-190489] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:02:57.858 [DEBUG] [Thread-190489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:02:57.858 [DEBUG] [Thread-190489] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:02:57.858 [DEBUG] [Thread-190489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:02:57.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:02:57.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:02:57.916 [DEBUG] [Thread-190489] [transport.py] [_log()] userauth is OK
2025-11-24T13:02:57.916 [DEBUG] [Thread-190489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:02:57.916 [DEBUG] [Thread-190489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:02:57.916 [DEBUG] [Thread-190489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:02:57.916 [DEBUG] [Thread-190489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:02:57.933 [INFO] [Thread-190489] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:02:57.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:02:57.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:02:58.777 [DEBUG] [Thread-190489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:02:58.777 [DEBUG] [Thread-190489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:02:58.825 [DEBUG] [Thread-190489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:02:58.825 [DEBUG] [Thread-190489] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:02:58.833 [DEBUG] [Thread-190489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:02:58.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:02:58.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-11-24T13:02:58.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-11-24T13:02:58.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:02:58.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:02:58.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:02:58.865 [DEBUG] [Thread-190489] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:03:06.810 [DEBUG] [Thread-190491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:03:21.855 [DEBUG] [Thread-190492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:03:28.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:03:28.888 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:03:28.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-11-24T13:03:29.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 2, 57), 24.81, 18.88, 0.0, 25.37, 21.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:03:29.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:02:57
2025-11-24T13:03:29.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:03:29.925 [DEBUG] [Thread-190493] [transport.py] [_log()] starting thread (client mode): 0xd317d900
2025-11-24T13:03:29.925 [DEBUG] [Thread-190493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:03:29.938 [DEBUG] [Thread-190493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:03:29.938 [INFO] [Thread-190493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] client lang: <none>
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] server lang: <none>
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] kex follows: False
2025-11-24T13:03:29.941 [DEBUG] [Thread-190493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:03:29.942 [DEBUG] [Thread-190493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:03:29.942 [DEBUG] [Thread-190493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:03:29.942 [DEBUG] [Thread-190493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:03:29.942 [DEBUG] [Thread-190493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:03:29.942 [DEBUG] [Thread-190493] [transport.py] [_log()] Compression: none
2025-11-24T13:03:29.942 [DEBUG] [Thread-190493] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:03:29.958 [DEBUG] [Thread-190493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:03:29.959 [DEBUG] [Thread-190493] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:03:29.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:03:29.960 [DEBUG] [Thread-190493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:03:29.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:03:29.962 [DEBUG] [Thread-190493] [transport.py] [_log()] userauth is OK
2025-11-24T13:03:29.962 [DEBUG] [Thread-190493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:03:29.962 [DEBUG] [Thread-190493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:03:29.962 [DEBUG] [Thread-190493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:03:29.962 [DEBUG] [Thread-190493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:03:29.985 [INFO] [Thread-190493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:03:29.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:03:30.631 [DEBUG] [Thread-190493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:03:30.631 [DEBUG] [Thread-190493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:03:30.632 [DEBUG] [Thread-190493] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:03:30.672 [DEBUG] [Thread-190493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:03:30.672 [DEBUG] [Thread-190493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:03:30.674 [DEBUG] [Thread-190493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:03:30.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:03:30.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:03:30.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:03:30.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:03:30.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:03:30.691 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:03:30.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.460465 -999.00  +21.10  15.42     24   +0.10 1 1 1 1 1   888    0 20.29 47.77 ----- 15.4 15.4 195.4 23.6 27.1 -25.6 25.9 -28.5 26.7 -24.2 27.5 -25.7
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.460465
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:03:30.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:03:30.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:02:57', tmtdew=24.81, humidity=18.88, cloud=0.0, wind=25.37, temperature=21.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:03:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:03:30.692 [DEBUG] [Thread-190493] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:03:30.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:03:30.780 [DEBUG] [Thread-190496] [transport.py] [_log()] starting thread (client mode): 0xd31b28c0
2025-11-24T13:03:30.781 [DEBUG] [Thread-190496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:03:30.796 [DEBUG] [Thread-190496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:03:30.796 [INFO] [Thread-190496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] client lang: <none>
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] server lang: <none>
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] kex follows: False
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] Compression: none
2025-11-24T13:03:30.803 [DEBUG] [Thread-190496] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:03:30.859 [DEBUG] [Thread-190496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:03:30.859 [DEBUG] [Thread-190496] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:03:30.859 [DEBUG] [Thread-190496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:03:30.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:03:30.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:03:30.916 [DEBUG] [Thread-190496] [transport.py] [_log()] userauth is OK
2025-11-24T13:03:30.916 [DEBUG] [Thread-190496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:03:30.916 [DEBUG] [Thread-190496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:03:30.916 [DEBUG] [Thread-190496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:03:30.916 [DEBUG] [Thread-190496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:03:30.930 [INFO] [Thread-190496] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:03:30.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:03:30.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:03:31.783 [DEBUG] [Thread-190496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:03:31.783 [DEBUG] [Thread-190496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:03:31.831 [DEBUG] [Thread-190496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:03:31.831 [DEBUG] [Thread-190496] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:03:31.839 [DEBUG] [Thread-190496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:03:31.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:03:31.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-11-24T13:03:31.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-11-24T13:03:31.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:03:31.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:03:31.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:03:31.871 [DEBUG] [Thread-190496] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:03:36.895 [DEBUG] [Thread-190498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:03:51.961 [DEBUG] [Thread-190499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:03:55.979 [DEBUG] [Thread-190500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:03:56.661 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:03:56.664 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:04:01.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:04:01.885 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:04:01.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-11-24T13:04:02.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 3, 29), 24.63, 19.04, 0.0, 26.36, 20.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:04:02.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:03:29
2025-11-24T13:04:02.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:04:03.027 [DEBUG] [Thread-190501] [transport.py] [_log()] starting thread (client mode): 0xc9b814b0
2025-11-24T13:04:03.027 [DEBUG] [Thread-190501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:04:03.047 [DEBUG] [Thread-190501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:04:03.047 [INFO] [Thread-190501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] client lang: <none>
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] server lang: <none>
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] kex follows: False
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:04:03.050 [DEBUG] [Thread-190501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:04:03.051 [DEBUG] [Thread-190501] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:04:03.051 [DEBUG] [Thread-190501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:04:03.051 [DEBUG] [Thread-190501] [transport.py] [_log()] Compression: none
2025-11-24T13:04:03.051 [DEBUG] [Thread-190501] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:04:03.067 [DEBUG] [Thread-190501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:04:03.067 [DEBUG] [Thread-190501] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:04:03.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:04:03.067 [DEBUG] [Thread-190501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:04:03.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:04:03.068 [DEBUG] [Thread-190501] [transport.py] [_log()] userauth is OK
2025-11-24T13:04:03.068 [DEBUG] [Thread-190501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:04:03.068 [DEBUG] [Thread-190501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:04:03.068 [DEBUG] [Thread-190501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:04:03.068 [DEBUG] [Thread-190501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:04:03.098 [INFO] [Thread-190501] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:04:03.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:04:03.729 [DEBUG] [Thread-190501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:04:03.729 [DEBUG] [Thread-190501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:04:03.730 [DEBUG] [Thread-190501] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:04:03.770 [DEBUG] [Thread-190501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:04:03.770 [DEBUG] [Thread-190501] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:04:03.772 [DEBUG] [Thread-190501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:04:03.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:04:03.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:04:03.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:04:03.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:04:03.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:04:03.790 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:04:03.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:04:03.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:04:03.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:04:03.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.460812 -999.00  +21.30  17.14     24   +0.40 1 1 1 1 1   888    0 21.40 53.27 ----- 17.1 17.1 192.4 30.6 27.1 -25.3 26.1 -25.2 26.7 -23.9 27.7 -26.8
2025-11-24T13:04:03.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:04:03.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:04:03.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.460812
2025-11-24T13:04:03.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:04:03.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:04:03.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:04:03.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:04:03.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:04:03.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:03:29', tmtdew=24.63, humidity=19.04, cloud=0.0, wind=26.36, temperature=20.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:03:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:04:03.791 [DEBUG] [Thread-190501] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:04:03.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:04:03.877 [DEBUG] [Thread-190504] [transport.py] [_log()] starting thread (client mode): 0xc9b800a0
2025-11-24T13:04:03.877 [DEBUG] [Thread-190504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:04:03.895 [DEBUG] [Thread-190504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:04:03.895 [INFO] [Thread-190504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] client lang: <none>
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] server lang: <none>
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] kex follows: False
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:04:03.905 [DEBUG] [Thread-190504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:04:03.906 [DEBUG] [Thread-190504] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:04:03.906 [DEBUG] [Thread-190504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:04:03.906 [DEBUG] [Thread-190504] [transport.py] [_log()] Compression: none
2025-11-24T13:04:03.906 [DEBUG] [Thread-190504] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:04:03.959 [DEBUG] [Thread-190504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:04:03.959 [DEBUG] [Thread-190504] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:04:03.959 [DEBUG] [Thread-190504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:04:03.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:04:03.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:04:04.016 [DEBUG] [Thread-190504] [transport.py] [_log()] userauth is OK
2025-11-24T13:04:04.016 [DEBUG] [Thread-190504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:04:04.016 [DEBUG] [Thread-190504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:04:04.016 [DEBUG] [Thread-190504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:04:04.016 [DEBUG] [Thread-190504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:04:04.034 [INFO] [Thread-190504] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:04:04.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:04:04.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:04:04.906 [DEBUG] [Thread-190504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:04:04.906 [DEBUG] [Thread-190504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:04:04.954 [DEBUG] [Thread-190504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:04:04.954 [DEBUG] [Thread-190504] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:04:04.962 [DEBUG] [Thread-190504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:04:04.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:04: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')
2025-11-24T13:04:04.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-11-24T13:04:04.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:04:04.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:04:04.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:04:04.993 [DEBUG] [Thread-190504] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:04:06.992 [DEBUG] [Thread-190506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:04:22.029 [DEBUG] [Thread-190507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:04:35.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:04:35.017 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:04:35.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-11-24T13:04:35.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 4, 2), 24.04, 19.76, 0.0, 25.37, 20.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:04:35.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:04:02
2025-11-24T13:04:36.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:04:36.193 [DEBUG] [Thread-190508] [transport.py] [_log()] starting thread (client mode): 0xd3190790
2025-11-24T13:04:36.193 [DEBUG] [Thread-190508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:04:36.215 [DEBUG] [Thread-190508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:04:36.215 [INFO] [Thread-190508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] client lang: <none>
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] server lang: <none>
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] kex follows: False
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] Compression: none
2025-11-24T13:04:36.219 [DEBUG] [Thread-190508] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:04:36.234 [DEBUG] [Thread-190508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:04:36.234 [DEBUG] [Thread-190508] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:04:36.234 [DEBUG] [Thread-190508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:04:36.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:04:36.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:04:36.235 [DEBUG] [Thread-190508] [transport.py] [_log()] userauth is OK
2025-11-24T13:04:36.235 [DEBUG] [Thread-190508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:04:36.235 [DEBUG] [Thread-190508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:04:36.235 [DEBUG] [Thread-190508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:04:36.235 [DEBUG] [Thread-190508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:04:36.247 [INFO] [Thread-190508] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:04:36.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:04:36.898 [DEBUG] [Thread-190508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:04:36.898 [DEBUG] [Thread-190508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:04:36.898 [DEBUG] [Thread-190508] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:04:36.939 [DEBUG] [Thread-190508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:04:36.939 [DEBUG] [Thread-190508] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:04:36.942 [DEBUG] [Thread-190508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:04:36.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:04:36.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:04:36.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:04:36.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:04:36.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:04:36.960 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:04:36.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:04:36.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:04:36.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:04:36.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.461159 -999.00  +21.40  14.65     24   +0.50 1 1 1 1 1   888    0 21.10 60.76 ----- 14.7 14.7 179.8 20.1 27.3 -25.2 26.1 -26.2 26.7 -24.1 27.8 -24.5
2025-11-24T13:04:36.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:04:36.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:04:36.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.461159
2025-11-24T13:04:36.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:04:36.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:04:36.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:04:36.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:04:36.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:04:36.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:04:02', tmtdew=24.04, humidity=19.76, cloud=0.0, wind=25.37, temperature=20.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:04:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:04:36.961 [DEBUG] [Thread-190508] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:04:37.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:04:37.054 [DEBUG] [Thread-190511] [transport.py] [_log()] starting thread (client mode): 0xc9b814b0
2025-11-24T13:04:37.054 [DEBUG] [Thread-190511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:04:37.063 [DEBUG] [Thread-190512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:04:37.069 [DEBUG] [Thread-190511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:04:37.069 [INFO] [Thread-190511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] client lang: <none>
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] server lang: <none>
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] kex follows: False
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:04:37.076 [DEBUG] [Thread-190511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:04:37.077 [DEBUG] [Thread-190511] [transport.py] [_log()] Compression: none
2025-11-24T13:04:37.077 [DEBUG] [Thread-190511] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:04:37.135 [DEBUG] [Thread-190511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:04:37.135 [DEBUG] [Thread-190511] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:04:37.135 [DEBUG] [Thread-190511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:04:37.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:04:37.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:04:37.192 [DEBUG] [Thread-190511] [transport.py] [_log()] userauth is OK
2025-11-24T13:04:37.192 [DEBUG] [Thread-190511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:04:37.192 [DEBUG] [Thread-190511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:04:37.192 [DEBUG] [Thread-190511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:04:37.192 [DEBUG] [Thread-190511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:04:37.206 [INFO] [Thread-190511] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:04:37.206 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:04:37.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:04:38.067 [DEBUG] [Thread-190511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:04:38.067 [DEBUG] [Thread-190511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:04:38.115 [DEBUG] [Thread-190511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:04:38.115 [DEBUG] [Thread-190511] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:04:38.123 [DEBUG] [Thread-190511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:04:38.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:04:38.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-11-24T13:04:38.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-11-24T13:04:38.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:04:38.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:04:38.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:04:38.155 [DEBUG] [Thread-190511] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:04:52.098 [DEBUG] [Thread-190514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:04:56.276 [DEBUG] [Thread-190515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:04:56.804 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:04:56.805 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:05:07.138 [DEBUG] [Thread-190516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:05:08.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:05:08.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:05:08.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-11-24T13:05:09.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 4, 34), 23.46, 20.37, 0.0, 21.74, 20.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:05:09.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:04:34
2025-11-24T13:05:09.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:05:09.363 [DEBUG] [Thread-190517] [transport.py] [_log()] starting thread (client mode): 0xd31b03d0
2025-11-24T13:05:09.363 [DEBUG] [Thread-190517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:05:09.384 [DEBUG] [Thread-190517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:05:09.384 [INFO] [Thread-190517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] client lang: <none>
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] server lang: <none>
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] kex follows: False
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] Compression: none
2025-11-24T13:05:09.388 [DEBUG] [Thread-190517] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:05:09.404 [DEBUG] [Thread-190517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:05:09.404 [DEBUG] [Thread-190517] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:05:09.404 [DEBUG] [Thread-190517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:05:09.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:05:09.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:05:09.405 [DEBUG] [Thread-190517] [transport.py] [_log()] userauth is OK
2025-11-24T13:05:09.405 [DEBUG] [Thread-190517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:05:09.405 [DEBUG] [Thread-190517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:05:09.405 [DEBUG] [Thread-190517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:05:09.405 [DEBUG] [Thread-190517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:05:09.420 [INFO] [Thread-190517] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:05:09.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:05:12.029 [DEBUG] [Thread-190517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:05:12.029 [DEBUG] [Thread-190517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:05:12.030 [DEBUG] [Thread-190517] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:05:12.070 [DEBUG] [Thread-190517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:05:12.070 [DEBUG] [Thread-190517] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:05:12.072 [DEBUG] [Thread-190517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:05:12.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:05:12.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:05:12.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:05:12.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:05:12.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:05:12.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:05:12.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.461506 -999.00  +21.50  12.25     25   +0.80 1 1 1 1 1   888    0 21.34 62.47 ----- 12.2 12.2 181.7 23.9 27.3 -26.9 26.1 -30.6 26.9 -22.8 27.9 -25.7
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.461506
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:05:12.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:04:34', tmtdew=23.46, humidity=20.37, cloud=0.0, wind=21.74, temperature=20.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:04:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:05:12.107 [DEBUG] [Thread-190517] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:05:12.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:05:12.190 [DEBUG] [Thread-190520] [transport.py] [_log()] starting thread (client mode): 0xd3191360
2025-11-24T13:05:12.190 [DEBUG] [Thread-190520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:05:12.203 [DEBUG] [Thread-190520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:05:12.203 [INFO] [Thread-190520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:05:12.211 [DEBUG] [Thread-190520] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:05:12.211 [DEBUG] [Thread-190520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:05:12.211 [DEBUG] [Thread-190520] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:05:12.211 [DEBUG] [Thread-190520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:05:12.211 [DEBUG] [Thread-190520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:05:12.211 [DEBUG] [Thread-190520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:05:12.211 [DEBUG] [Thread-190520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:05:12.211 [DEBUG] [Thread-190520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:05:12.211 [DEBUG] [Thread-190520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:05:12.212 [DEBUG] [Thread-190520] [transport.py] [_log()] client lang: <none>
2025-11-24T13:05:12.212 [DEBUG] [Thread-190520] [transport.py] [_log()] server lang: <none>
2025-11-24T13:05:12.212 [DEBUG] [Thread-190520] [transport.py] [_log()] kex follows: False
2025-11-24T13:05:12.212 [DEBUG] [Thread-190520] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:05:12.212 [DEBUG] [Thread-190520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:05:12.212 [DEBUG] [Thread-190520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:05:12.212 [DEBUG] [Thread-190520] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:05:12.212 [DEBUG] [Thread-190520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:05:12.212 [DEBUG] [Thread-190520] [transport.py] [_log()] Compression: none
2025-11-24T13:05:12.212 [DEBUG] [Thread-190520] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:05:12.267 [DEBUG] [Thread-190520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:05:12.267 [DEBUG] [Thread-190520] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:05:12.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:05:12.268 [DEBUG] [Thread-190520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:05:12.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:05:12.324 [DEBUG] [Thread-190520] [transport.py] [_log()] userauth is OK
2025-11-24T13:05:12.324 [DEBUG] [Thread-190520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:05:12.324 [DEBUG] [Thread-190520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:05:12.324 [DEBUG] [Thread-190520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:05:12.324 [DEBUG] [Thread-190520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:05:12.338 [INFO] [Thread-190520] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:05:12.338 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:05:12.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:05:13.181 [DEBUG] [Thread-190520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:05:13.181 [DEBUG] [Thread-190520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:05:13.231 [DEBUG] [Thread-190520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:05:13.231 [DEBUG] [Thread-190520] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:05:13.243 [DEBUG] [Thread-190520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:05:13.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:05:13.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:05:13.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-11-24T13:05:13.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:05:13.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:05:13.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:05:13.285 [DEBUG] [Thread-190520] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:05:22.168 [DEBUG] [Thread-190522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:05:37.210 [DEBUG] [Thread-190523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:05:43.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:05:43.288 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:05:43.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T13:05:44.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 5, 39), 22.68, 21.52, 0.0, 29.78, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:05:44.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:05:39
2025-11-24T13:05:44.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:05:44.383 [DEBUG] [Thread-190524] [transport.py] [_log()] starting thread (client mode): 0xd317eb90
2025-11-24T13:05:44.383 [DEBUG] [Thread-190524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:05:44.403 [DEBUG] [Thread-190524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:05:44.403 [INFO] [Thread-190524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] client lang: <none>
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] server lang: <none>
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] kex follows: False
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:05:44.404 [DEBUG] [Thread-190524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:05:44.405 [DEBUG] [Thread-190524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:05:44.405 [DEBUG] [Thread-190524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:05:44.405 [DEBUG] [Thread-190524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:05:44.405 [DEBUG] [Thread-190524] [transport.py] [_log()] Compression: none
2025-11-24T13:05:44.405 [DEBUG] [Thread-190524] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:05:44.422 [DEBUG] [Thread-190524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:05:44.423 [DEBUG] [Thread-190524] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:05:44.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:05:44.424 [DEBUG] [Thread-190524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:05:44.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:05:44.426 [DEBUG] [Thread-190524] [transport.py] [_log()] userauth is OK
2025-11-24T13:05:44.427 [DEBUG] [Thread-190524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:05:44.427 [DEBUG] [Thread-190524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:05:44.427 [DEBUG] [Thread-190524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:05:44.427 [DEBUG] [Thread-190524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:05:44.451 [INFO] [Thread-190524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:05:44.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:05:45.077 [DEBUG] [Thread-190524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:05:45.077 [DEBUG] [Thread-190524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:05:45.077 [DEBUG] [Thread-190524] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:05:45.118 [DEBUG] [Thread-190524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:05:45.118 [DEBUG] [Thread-190524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:05:45.121 [DEBUG] [Thread-190524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:05:45.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:05:45.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:05:45.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:05:45.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:05:45.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:05:45.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:05:45.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:05:45.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:05:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:05:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.461853 -999.00  +21.30  22.23     26   +1.10 1 1 1 1 1   888    0 21.64 61.81 ----- 22.2 22.2 181.2 36.6 27.1 -27.7 25.9 -26.6 26.9 -25.0 27.6 -28.1
2025-11-24T13:05:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:05:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:05:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.461853
2025-11-24T13:05:45.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:05:45.147 [DEBUG] [Thread-190524] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:05:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:05:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:05:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:05:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:05:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:05:39', tmtdew=22.68, humidity=21.52, cloud=0.0, wind=29.78, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:05:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:05:45.219 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:05:45.231 [DEBUG] [Thread-190527] [transport.py] [_log()] starting thread (client mode): 0xd317c160
2025-11-24T13:05:45.231 [DEBUG] [Thread-190527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:05:45.245 [DEBUG] [Thread-190527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:05:45.246 [INFO] [Thread-190527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] client lang: <none>
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] server lang: <none>
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] kex follows: False
2025-11-24T13:05:45.253 [DEBUG] [Thread-190527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:05:45.254 [DEBUG] [Thread-190527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:05:45.254 [DEBUG] [Thread-190527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:05:45.254 [DEBUG] [Thread-190527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:05:45.254 [DEBUG] [Thread-190527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:05:45.254 [DEBUG] [Thread-190527] [transport.py] [_log()] Compression: none
2025-11-24T13:05:45.254 [DEBUG] [Thread-190527] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:05:45.317 [DEBUG] [Thread-190527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:05:45.318 [DEBUG] [Thread-190527] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:05:45.319 [DEBUG] [Thread-190527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:05:45.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:05:45.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:05:45.373 [DEBUG] [Thread-190527] [transport.py] [_log()] userauth is OK
2025-11-24T13:05:45.373 [DEBUG] [Thread-190527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:05:45.373 [DEBUG] [Thread-190527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:05:45.373 [DEBUG] [Thread-190527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:05:45.373 [DEBUG] [Thread-190527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:05:45.387 [INFO] [Thread-190527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:05:45.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:05:45.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:05:46.225 [DEBUG] [Thread-190527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:05:46.225 [DEBUG] [Thread-190527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:05:46.273 [DEBUG] [Thread-190527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:05:46.273 [DEBUG] [Thread-190527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:05:46.282 [DEBUG] [Thread-190527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:05:46.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:05:46.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-11-24T13:05:46.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-11-24T13:05:46.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:05:46.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:05:46.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:05:46.313 [DEBUG] [Thread-190527] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:05:52.252 [DEBUG] [Thread-190529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:05:56.400 [DEBUG] [Thread-190530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:05:56.947 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:05:56.948 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:06:07.291 [DEBUG] [Thread-190531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:06:16.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:06:16.337 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:06:16.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-11-24T13:06:17.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 6, 12), 22.46, 21.87, 0.0, 26.75, 20.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:06:17.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:06:12
2025-11-24T13:06:17.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:06:17.413 [DEBUG] [Thread-190532] [transport.py] [_log()] starting thread (client mode): 0xd317d6f0
2025-11-24T13:06:17.413 [DEBUG] [Thread-190532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:06:17.424 [DEBUG] [Thread-190532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:06:17.425 [INFO] [Thread-190532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:06:17.428 [DEBUG] [Thread-190532] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:06:17.428 [DEBUG] [Thread-190532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:06:17.428 [DEBUG] [Thread-190532] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:06:17.428 [DEBUG] [Thread-190532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:06:17.428 [DEBUG] [Thread-190532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:06:17.428 [DEBUG] [Thread-190532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:06:17.428 [DEBUG] [Thread-190532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:06:17.428 [DEBUG] [Thread-190532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] client lang: <none>
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] server lang: <none>
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] kex follows: False
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] Compression: none
2025-11-24T13:06:17.429 [DEBUG] [Thread-190532] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:06:17.446 [DEBUG] [Thread-190532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:06:17.447 [DEBUG] [Thread-190532] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:06:17.448 [DEBUG] [Thread-190532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:06:17.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:06:17.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:06:17.450 [DEBUG] [Thread-190532] [transport.py] [_log()] userauth is OK
2025-11-24T13:06:17.450 [DEBUG] [Thread-190532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:06:17.450 [DEBUG] [Thread-190532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:06:17.450 [DEBUG] [Thread-190532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:06:17.450 [DEBUG] [Thread-190532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:06:17.475 [INFO] [Thread-190532] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:06:17.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:06:18.093 [DEBUG] [Thread-190532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:06:18.093 [DEBUG] [Thread-190532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:06:18.094 [DEBUG] [Thread-190532] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:06:18.133 [DEBUG] [Thread-190532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:06:18.134 [DEBUG] [Thread-190532] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:06:18.137 [DEBUG] [Thread-190532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:06:18.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:06:18.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:06:18.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:06:18.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:06:18.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:06:18.165 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:06:18.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:06:18.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:06:18.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:06:18.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.462201 -999.00  +20.70  30.41     26   +0.90 1 1 2 1 1   888    0 21.57 65.38 ----- 30.4 30.4 191.4 35.9 26.8 -26.5 25.6 -28.8 26.7 -26.5 27.5 -28.7
2025-11-24T13:06:18.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:06:18.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:06:18.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.462201
2025-11-24T13:06:18.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:06:18.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:06:18.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:06:18.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:06:18.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:06:18.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:06:12', tmtdew=22.46, humidity=21.87, cloud=0.0, wind=26.75, temperature=20.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:05:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:06:18.167 [DEBUG] [Thread-190532] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:06:18.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:06:18.270 [DEBUG] [Thread-190535] [transport.py] [_log()] starting thread (client mode): 0xd07113c0
2025-11-24T13:06:18.271 [DEBUG] [Thread-190535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:06:18.285 [DEBUG] [Thread-190535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:06:18.285 [INFO] [Thread-190535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:06:18.292 [DEBUG] [Thread-190535] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] client lang: <none>
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] server lang: <none>
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] kex follows: False
2025-11-24T13:06:18.293 [DEBUG] [Thread-190535] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:06:18.302 [DEBUG] [Thread-190535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:06:18.302 [DEBUG] [Thread-190535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:06:18.302 [DEBUG] [Thread-190535] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:06:18.302 [DEBUG] [Thread-190535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:06:18.302 [DEBUG] [Thread-190535] [transport.py] [_log()] Compression: none
2025-11-24T13:06:18.302 [DEBUG] [Thread-190535] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:06:18.353 [DEBUG] [Thread-190535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:06:18.354 [DEBUG] [Thread-190535] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:06:18.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:06:18.355 [DEBUG] [Thread-190535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:06:18.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:06:18.409 [DEBUG] [Thread-190535] [transport.py] [_log()] userauth is OK
2025-11-24T13:06:18.409 [DEBUG] [Thread-190535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:06:18.409 [DEBUG] [Thread-190535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:06:18.409 [DEBUG] [Thread-190535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:06:18.409 [DEBUG] [Thread-190535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:06:18.428 [INFO] [Thread-190535] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:06:18.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:06:18.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:06:19.241 [DEBUG] [Thread-190535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:06:19.242 [DEBUG] [Thread-190535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:06:19.289 [DEBUG] [Thread-190535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:06:19.289 [DEBUG] [Thread-190535] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:06:19.299 [DEBUG] [Thread-190535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:06:19.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:06:19.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-11-24T13:06:19.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-11-24T13:06:19.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:06:19.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:06:19.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:06:19.333 [DEBUG] [Thread-190535] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:06:22.325 [DEBUG] [Thread-190537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:06:37.384 [DEBUG] [Thread-190538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:06:49.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:06:49.366 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:06:49.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-11-24T13:06:50.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 6, 44), 22.21, 22.46, 0.0, 27.17, 20.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:06:50.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:06:44
2025-11-24T13:06:50.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:06:50.466 [DEBUG] [Thread-190539] [transport.py] [_log()] starting thread (client mode): 0xd31b1780
2025-11-24T13:06:50.466 [DEBUG] [Thread-190539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:06:50.482 [DEBUG] [Thread-190539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:06:50.482 [INFO] [Thread-190539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] client lang: <none>
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] server lang: <none>
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] kex follows: False
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] Compression: none
2025-11-24T13:06:50.485 [DEBUG] [Thread-190539] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:06:50.501 [DEBUG] [Thread-190539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:06:50.502 [DEBUG] [Thread-190539] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:06:50.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:06:50.503 [DEBUG] [Thread-190539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:06:50.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:06:50.505 [DEBUG] [Thread-190539] [transport.py] [_log()] userauth is OK
2025-11-24T13:06:50.505 [DEBUG] [Thread-190539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:06:50.505 [DEBUG] [Thread-190539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:06:50.505 [DEBUG] [Thread-190539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:06:50.505 [DEBUG] [Thread-190539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:06:50.524 [INFO] [Thread-190539] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:06:50.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:06:51.096 [DEBUG] [Thread-190539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:06:51.096 [DEBUG] [Thread-190539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:06:51.096 [DEBUG] [Thread-190539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:06:51.137 [DEBUG] [Thread-190539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:06:51.137 [DEBUG] [Thread-190539] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:06:51.139 [DEBUG] [Thread-190539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:06:51.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:06:51.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:06:51.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:06:51.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:06:51.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:06:51.166 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:06:51.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.462548 -999.00  +20.70  14.24     27   +1.20 1 1 1 1 1   888    0 21.83 68.12 ----- 14.2 14.2 208.1 35.5 26.8 -26.5 25.9 -28.8 26.6 -24.9 27.5 -26.2
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.462548
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:06:51.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:06:44', tmtdew=22.21, humidity=22.46, cloud=0.0, wind=27.17, temperature=20.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:06:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:06:51.167 [DEBUG] [Thread-190539] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:06:51.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:06:51.251 [DEBUG] [Thread-190542] [transport.py] [_log()] starting thread (client mode): 0xd317e6e0
2025-11-24T13:06:51.251 [DEBUG] [Thread-190542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:06:51.266 [DEBUG] [Thread-190542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:06:51.266 [INFO] [Thread-190542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] client lang: <none>
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] server lang: <none>
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] kex follows: False
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] Compression: none
2025-11-24T13:06:51.274 [DEBUG] [Thread-190542] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:06:51.335 [DEBUG] [Thread-190542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:06:51.336 [DEBUG] [Thread-190542] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:06:51.336 [DEBUG] [Thread-190542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:06:51.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:06:51.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:06:51.392 [DEBUG] [Thread-190542] [transport.py] [_log()] userauth is OK
2025-11-24T13:06:51.392 [DEBUG] [Thread-190542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:06:51.392 [DEBUG] [Thread-190542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:06:51.392 [DEBUG] [Thread-190542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:06:51.392 [DEBUG] [Thread-190542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:06:51.406 [INFO] [Thread-190542] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:06:51.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:06:51.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:06:52.312 [DEBUG] [Thread-190542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:06:52.312 [DEBUG] [Thread-190542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:06:52.360 [DEBUG] [Thread-190542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:06:52.360 [DEBUG] [Thread-190542] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:06:52.368 [DEBUG] [Thread-190542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:06:52.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:06:52.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-11-24T13:06:52.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-11-24T13:06:52.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:06:52.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:06:52.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:06:52.400 [DEBUG] [Thread-190542] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:06:52.417 [DEBUG] [Thread-190544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:06:56.552 [DEBUG] [Thread-190545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:06:57.090 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:06:57.091 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:07:07.453 [DEBUG] [Thread-190546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:07:22.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:07:22.423 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:07:22.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-11-24T13:07:22.480 [DEBUG] [Thread-190547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:07:23.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 7, 17), 22.32, 22.3, 0.0, 24.63, 20.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:07:23.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:07:17
2025-11-24T13:07:23.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:07:23.496 [DEBUG] [Thread-190548] [transport.py] [_log()] starting thread (client mode): 0xd3191750
2025-11-24T13:07:23.496 [DEBUG] [Thread-190548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:07:23.516 [DEBUG] [Thread-190548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:07:23.516 [INFO] [Thread-190548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:07:23.519 [DEBUG] [Thread-190548] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] client lang: <none>
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] server lang: <none>
2025-11-24T13:07:23.520 [DEBUG] [Thread-190548] [transport.py] [_log()] kex follows: False
2025-11-24T13:07:23.521 [DEBUG] [Thread-190548] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:07:23.521 [DEBUG] [Thread-190548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:07:23.521 [DEBUG] [Thread-190548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:07:23.521 [DEBUG] [Thread-190548] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:07:23.521 [DEBUG] [Thread-190548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:07:23.521 [DEBUG] [Thread-190548] [transport.py] [_log()] Compression: none
2025-11-24T13:07:23.521 [DEBUG] [Thread-190548] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:07:23.539 [DEBUG] [Thread-190548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:07:23.539 [DEBUG] [Thread-190548] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:07:23.539 [DEBUG] [Thread-190548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:07:23.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:07:23.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:07:23.541 [DEBUG] [Thread-190548] [transport.py] [_log()] userauth is OK
2025-11-24T13:07:23.541 [DEBUG] [Thread-190548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:07:23.541 [DEBUG] [Thread-190548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:07:23.541 [DEBUG] [Thread-190548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:07:23.541 [DEBUG] [Thread-190548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:07:23.558 [INFO] [Thread-190548] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:07:23.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:07:24.215 [DEBUG] [Thread-190548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:07:24.216 [DEBUG] [Thread-190548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:07:24.216 [DEBUG] [Thread-190548] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:07:24.256 [DEBUG] [Thread-190548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:07:24.256 [DEBUG] [Thread-190548] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:07:24.259 [DEBUG] [Thread-190548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:07:24.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:07:24.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:07:24.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:07:24.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:07:24.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:07:24.282 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:07:24.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:07:24.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:07:24.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:07:24.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.463242 -999.00  +20.70  14.88     26   +0.90 1 1 1 1 1   888    0 21.69 74.96 ----- 14.9 14.9 198.2 25.1 26.9 -25.7 25.8 -26.6 26.7 -25.3 27.4 -26.1
2025-11-24T13:07:24.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:07:24.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:07:24.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.463242
2025-11-24T13:07:24.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:07:24.284 [DEBUG] [Thread-190548] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:07:24.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:07:24.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:07:24.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:07:24.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:07:24.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:07:17', tmtdew=22.32, humidity=22.3, cloud=0.0, wind=24.63, temperature=20.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:07:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:07:24.370 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:07:24.382 [DEBUG] [Thread-190551] [transport.py] [_log()] starting thread (client mode): 0xd31b0ca0
2025-11-24T13:07:24.382 [DEBUG] [Thread-190551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:07:24.400 [DEBUG] [Thread-190551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:07:24.401 [INFO] [Thread-190551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] client lang: <none>
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] server lang: <none>
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] kex follows: False
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] Compression: none
2025-11-24T13:07:24.408 [DEBUG] [Thread-190551] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:07:24.467 [DEBUG] [Thread-190551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:07:24.468 [DEBUG] [Thread-190551] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:07:24.468 [DEBUG] [Thread-190551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:07:24.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:07:24.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:07:24.528 [DEBUG] [Thread-190551] [transport.py] [_log()] userauth is OK
2025-11-24T13:07:24.528 [DEBUG] [Thread-190551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:07:24.528 [DEBUG] [Thread-190551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:07:24.528 [DEBUG] [Thread-190551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:07:24.528 [DEBUG] [Thread-190551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:07:24.544 [INFO] [Thread-190551] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:07:24.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:07:24.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:07:25.407 [DEBUG] [Thread-190551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:07:25.407 [DEBUG] [Thread-190551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:07:25.455 [DEBUG] [Thread-190551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:07:25.456 [DEBUG] [Thread-190551] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:07:25.465 [DEBUG] [Thread-190551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:07:25.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:07:25.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-11-24T13:07:25.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-11-24T13:07:25.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:07:25.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:07:25.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:07:25.499 [DEBUG] [Thread-190551] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:07:37.513 [DEBUG] [Thread-190553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:07:52.564 [DEBUG] [Thread-190554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:07:55.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:07:55.499 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:07:55.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-11-24T13:07:56.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 7, 49), 22.46, 21.93, 0.0, 20.08, 20.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:07:56.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:07:49
2025-11-24T13:07:56.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:07:56.637 [DEBUG] [Thread-190555] [transport.py] [_log()] starting thread (client mode): 0xd31b0c10
2025-11-24T13:07:56.638 [DEBUG] [Thread-190555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:07:56.650 [DEBUG] [Thread-190555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:07:56.650 [INFO] [Thread-190555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] client lang: <none>
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] server lang: <none>
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] kex follows: False
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] Compression: none
2025-11-24T13:07:56.656 [DEBUG] [Thread-190555] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:07:56.665 [DEBUG] [Thread-190555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:07:56.665 [DEBUG] [Thread-190555] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:07:56.666 [DEBUG] [Thread-190555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:07:56.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:07:56.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:07:56.667 [DEBUG] [Thread-190555] [transport.py] [_log()] userauth is OK
2025-11-24T13:07:56.667 [DEBUG] [Thread-190555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:07:56.667 [DEBUG] [Thread-190555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:07:56.667 [DEBUG] [Thread-190555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:07:56.667 [DEBUG] [Thread-190555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:07:56.679 [INFO] [Thread-190555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:07:56.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:07:56.794 [DEBUG] [Thread-190557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:07:57.231 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:07:57.232 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:07:57.459 [DEBUG] [Thread-190555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:07:57.459 [DEBUG] [Thread-190555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:07:57.459 [DEBUG] [Thread-190555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:07:57.500 [DEBUG] [Thread-190555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:07:57.500 [DEBUG] [Thread-190555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:07:57.503 [DEBUG] [Thread-190555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:07:57.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:07:57.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:07:57.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:07:57.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:07:57.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:07:57.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:07:57.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:07:57.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:07:57.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:07:57.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.463590 -999.00  +20.90  16.66     26   +0.90 1 1 1 1 1   888    0 21.69 78.57 ----- 16.7 16.7 198.0 21.5 26.9 -25.4 25.9 -26.1 26.6 -24.0 27.6 -25.9
2025-11-24T13:07:57.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:07:57.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:07:57.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.463590
2025-11-24T13:07:57.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:07:57.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:07:57.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:07:57.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:07:57.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:07:57.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:07:49', tmtdew=22.46, humidity=21.93, cloud=0.0, wind=20.08, temperature=20.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:07:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:07:57.520 [DEBUG] [Thread-190555] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:07:57.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:07:57.606 [DEBUG] [Thread-190559] [transport.py] [_log()] starting thread (client mode): 0xd0702080
2025-11-24T13:07:57.607 [DEBUG] [Thread-190559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:07:57.621 [DEBUG] [Thread-190559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:07:57.621 [INFO] [Thread-190559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] client lang: <none>
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] server lang: <none>
2025-11-24T13:07:57.628 [DEBUG] [Thread-190559] [transport.py] [_log()] kex follows: False
2025-11-24T13:07:57.629 [DEBUG] [Thread-190559] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:07:57.629 [DEBUG] [Thread-190559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:07:57.629 [DEBUG] [Thread-190559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:07:57.629 [DEBUG] [Thread-190559] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:07:57.629 [DEBUG] [Thread-190559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:07:57.629 [DEBUG] [Thread-190559] [transport.py] [_log()] Compression: none
2025-11-24T13:07:57.629 [DEBUG] [Thread-190559] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:07:57.683 [DEBUG] [Thread-190559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:07:57.683 [DEBUG] [Thread-190559] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:07:57.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:07:57.683 [DEBUG] [Thread-190559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:07:57.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:07:57.741 [DEBUG] [Thread-190559] [transport.py] [_log()] userauth is OK
2025-11-24T13:07:57.741 [DEBUG] [Thread-190559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:07:57.741 [DEBUG] [Thread-190559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:07:57.741 [DEBUG] [Thread-190559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:07:57.741 [DEBUG] [Thread-190559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:07:57.755 [INFO] [Thread-190559] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:07:57.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:07:57.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:07:58.642 [DEBUG] [Thread-190559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:07:58.642 [DEBUG] [Thread-190559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:07:58.689 [DEBUG] [Thread-190559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:07:58.690 [DEBUG] [Thread-190559] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:07:58.699 [DEBUG] [Thread-190559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:07:58.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:07:58.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-11-24T13:07:58.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-11-24T13:07:58.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:07:58.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:07:58.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:07:58.734 [DEBUG] [Thread-190559] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:08:07.592 [DEBUG] [Thread-190561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:08:22.638 [DEBUG] [Thread-190562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:08:28.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:08:28.730 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:08:28.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-11-24T13:08:29.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 8, 21), 22.39, 22.0, 0.0, 19.74, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:08:29.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:08:21
2025-11-24T13:08:29.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:08:29.825 [DEBUG] [Thread-190563] [transport.py] [_log()] starting thread (client mode): 0xd0701630
2025-11-24T13:08:29.826 [DEBUG] [Thread-190563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:08:29.845 [DEBUG] [Thread-190563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:08:29.845 [INFO] [Thread-190563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:08:29.848 [DEBUG] [Thread-190563] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:08:29.848 [DEBUG] [Thread-190563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:08:29.848 [DEBUG] [Thread-190563] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:08:29.848 [DEBUG] [Thread-190563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:08:29.848 [DEBUG] [Thread-190563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:08:29.848 [DEBUG] [Thread-190563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:08:29.848 [DEBUG] [Thread-190563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] client lang: <none>
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] server lang: <none>
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] kex follows: False
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] Compression: none
2025-11-24T13:08:29.849 [DEBUG] [Thread-190563] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:08:29.867 [DEBUG] [Thread-190563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:08:29.867 [DEBUG] [Thread-190563] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:08:29.868 [DEBUG] [Thread-190563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:08:29.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:08:29.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:08:29.870 [DEBUG] [Thread-190563] [transport.py] [_log()] userauth is OK
2025-11-24T13:08:29.870 [DEBUG] [Thread-190563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:08:29.870 [DEBUG] [Thread-190563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:08:29.870 [DEBUG] [Thread-190563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:08:29.870 [DEBUG] [Thread-190563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:08:29.893 [INFO] [Thread-190563] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:08:29.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:08:30.539 [DEBUG] [Thread-190563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:08:30.539 [DEBUG] [Thread-190563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:08:30.539 [DEBUG] [Thread-190563] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:08:30.580 [DEBUG] [Thread-190563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:08:30.580 [DEBUG] [Thread-190563] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:08:30.582 [DEBUG] [Thread-190563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:08:30.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:08:30.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:08:30.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:08:30.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:08:30.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:08:30.600 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:08:30.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:08:30.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:08:30.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:08:30.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.463937 -999.00  +21.00  14.74     26   +1.20 1 1 1 1 1   888    0 22.59 79.43 ----- 14.7 14.7 153.4 18.4 26.9 -25.5 25.8 -27.9 26.7 -23.1 27.8 -23.7
2025-11-24T13:08:30.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:08:30.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:08:30.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.463937
2025-11-24T13:08:30.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:08:30.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:08:30.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:08:30.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:08:30.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:08:30.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:08:21', tmtdew=22.39, humidity=22.0, cloud=0.0, wind=19.74, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:08:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:08:30.609 [DEBUG] [Thread-190563] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:08:30.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:08:30.706 [DEBUG] [Thread-190566] [transport.py] [_log()] starting thread (client mode): 0xd0710580
2025-11-24T13:08:30.706 [DEBUG] [Thread-190566] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:08:30.721 [DEBUG] [Thread-190566] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:08:30.721 [INFO] [Thread-190566] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:08:30.729 [DEBUG] [Thread-190566] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:08:30.729 [DEBUG] [Thread-190566] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:08:30.729 [DEBUG] [Thread-190566] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:08:30.729 [DEBUG] [Thread-190566] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:08:30.729 [DEBUG] [Thread-190566] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:08:30.729 [DEBUG] [Thread-190566] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:08:30.729 [DEBUG] [Thread-190566] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:08:30.729 [DEBUG] [Thread-190566] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:08:30.729 [DEBUG] [Thread-190566] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:08:30.730 [DEBUG] [Thread-190566] [transport.py] [_log()] client lang: <none>
2025-11-24T13:08:30.730 [DEBUG] [Thread-190566] [transport.py] [_log()] server lang: <none>
2025-11-24T13:08:30.730 [DEBUG] [Thread-190566] [transport.py] [_log()] kex follows: False
2025-11-24T13:08:30.730 [DEBUG] [Thread-190566] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:08:30.730 [DEBUG] [Thread-190566] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:08:30.730 [DEBUG] [Thread-190566] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:08:30.730 [DEBUG] [Thread-190566] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:08:30.730 [DEBUG] [Thread-190566] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:08:30.730 [DEBUG] [Thread-190566] [transport.py] [_log()] Compression: none
2025-11-24T13:08:30.730 [DEBUG] [Thread-190566] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:08:30.789 [DEBUG] [Thread-190566] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:08:30.789 [DEBUG] [Thread-190566] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:08:30.789 [DEBUG] [Thread-190566] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:08:30.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:08:30.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:08:30.848 [DEBUG] [Thread-190566] [transport.py] [_log()] userauth is OK
2025-11-24T13:08:30.848 [DEBUG] [Thread-190566] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:08:30.848 [DEBUG] [Thread-190566] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:08:30.848 [DEBUG] [Thread-190566] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:08:30.848 [DEBUG] [Thread-190566] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:08:30.864 [INFO] [Thread-190566] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:08:30.864 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:08:30.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:08:31.786 [DEBUG] [Thread-190566] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:08:31.786 [DEBUG] [Thread-190566] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:08:31.834 [DEBUG] [Thread-190566] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:08:31.834 [DEBUG] [Thread-190566] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:08:31.842 [DEBUG] [Thread-190566] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:08:31.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:08:31.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:08:31.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-11-24T13:08:31.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:08:31.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:08:31.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:08:31.876 [DEBUG] [Thread-190566] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:08:37.666 [DEBUG] [Thread-190568 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:08:52.716 [DEBUG] [Thread-190569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:08:56.879 [DEBUG] [Thread-190570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:08:57.372 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:08:57.374 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:09:01.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:09:01.897 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:09:01.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-11-24T13:09:02.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 8, 54), 22.38, 22.15, 0.0, 14.03, 20.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:09:02.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:08:54
2025-11-24T13:09:02.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:09:02.970 [DEBUG] [Thread-190571] [transport.py] [_log()] starting thread (client mode): 0xd3152260
2025-11-24T13:09:02.970 [DEBUG] [Thread-190571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:09:02.990 [DEBUG] [Thread-190571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:09:02.991 [INFO] [Thread-190571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:09:02.994 [DEBUG] [Thread-190571] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:09:02.994 [DEBUG] [Thread-190571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:09:02.994 [DEBUG] [Thread-190571] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:09:02.994 [DEBUG] [Thread-190571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:09:02.994 [DEBUG] [Thread-190571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] client lang: <none>
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] server lang: <none>
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] kex follows: False
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:09:02.995 [DEBUG] [Thread-190571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:09:02.996 [DEBUG] [Thread-190571] [transport.py] [_log()] Compression: none
2025-11-24T13:09:02.996 [DEBUG] [Thread-190571] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:09:03.015 [DEBUG] [Thread-190571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:09:03.016 [DEBUG] [Thread-190571] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:09:03.016 [DEBUG] [Thread-190571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:09:03.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:09:03.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:09:03.059 [DEBUG] [Thread-190571] [transport.py] [_log()] userauth is OK
2025-11-24T13:09:03.059 [DEBUG] [Thread-190571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:09:03.060 [DEBUG] [Thread-190571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:09:03.060 [DEBUG] [Thread-190571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:09:03.060 [DEBUG] [Thread-190571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:09:03.091 [INFO] [Thread-190571] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:09:03.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:09:03.890 [DEBUG] [Thread-190571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:09:03.890 [DEBUG] [Thread-190571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:09:03.890 [DEBUG] [Thread-190571] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:09:03.931 [DEBUG] [Thread-190571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:09:03.931 [DEBUG] [Thread-190571] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:09:03.933 [DEBUG] [Thread-190571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:09:03.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:09:03.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:09:03.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:09:03.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:09:03.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:09:03.962 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:09:03.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.464284 -999.00  +21.10  15.21     27   +1.40 1 1 1 1 1   888    0 21.87 73.03 ----- 15.2 15.2 166.0 23.5 27.2 -25.4 26.2 -28.9 26.9 -22.8 27.9 -25.2
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.464284
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:09:03.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:08:54', tmtdew=22.38, humidity=22.15, cloud=0.0, wind=14.03, temperature=20.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:08:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:09:03.963 [DEBUG] [Thread-190571] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:09:04.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:09:04.045 [DEBUG] [Thread-190574] [transport.py] [_log()] starting thread (client mode): 0xd0713460
2025-11-24T13:09:04.046 [DEBUG] [Thread-190574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:09:04.060 [DEBUG] [Thread-190574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:09:04.061 [INFO] [Thread-190574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] client lang: <none>
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] server lang: <none>
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] kex follows: False
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] Compression: none
2025-11-24T13:09:04.068 [DEBUG] [Thread-190574] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:09:04.124 [DEBUG] [Thread-190574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:09:04.125 [DEBUG] [Thread-190574] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:09:04.125 [DEBUG] [Thread-190574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:09:04.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:09:04.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:09:04.181 [DEBUG] [Thread-190574] [transport.py] [_log()] userauth is OK
2025-11-24T13:09:04.181 [DEBUG] [Thread-190574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:09:04.181 [DEBUG] [Thread-190574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:09:04.181 [DEBUG] [Thread-190574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:09:04.181 [DEBUG] [Thread-190574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:09:04.195 [INFO] [Thread-190574] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:09:04.195 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:09:04.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:09:05.080 [DEBUG] [Thread-190574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:09:05.081 [DEBUG] [Thread-190574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:09:05.129 [DEBUG] [Thread-190574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:09:05.129 [DEBUG] [Thread-190574] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:09:05.138 [DEBUG] [Thread-190574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:09:05.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:09:05.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-11-24T13:09:05.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-11-24T13:09:05.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:09:05.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:09:05.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:09:05.174 [DEBUG] [Thread-190574] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:09:07.744 [DEBUG] [Thread-190576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:09:22.791 [DEBUG] [Thread-190577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:09:35.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:09:35.197 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:09:35.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-11-24T13:09:35.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 9, 26), 22.21, 22.43, 0.0, 13.71, 20.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:09:35.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:09:26
2025-11-24T13:09:36.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:09:36.228 [DEBUG] [Thread-190578] [transport.py] [_log()] starting thread (client mode): 0xd317ffa0
2025-11-24T13:09:36.229 [DEBUG] [Thread-190578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:09:36.249 [DEBUG] [Thread-190578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:09:36.249 [INFO] [Thread-190578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:09:36.252 [DEBUG] [Thread-190578] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:09:36.261 [DEBUG] [Thread-190578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] client lang: <none>
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] server lang: <none>
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] kex follows: False
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:09:36.262 [DEBUG] [Thread-190578] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:09:36.263 [DEBUG] [Thread-190578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:09:36.263 [DEBUG] [Thread-190578] [transport.py] [_log()] Compression: none
2025-11-24T13:09:36.263 [DEBUG] [Thread-190578] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:09:36.282 [DEBUG] [Thread-190578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:09:36.283 [DEBUG] [Thread-190578] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:09:36.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:09:36.284 [DEBUG] [Thread-190578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:09:36.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:09:36.287 [DEBUG] [Thread-190578] [transport.py] [_log()] userauth is OK
2025-11-24T13:09:36.287 [DEBUG] [Thread-190578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:09:36.287 [DEBUG] [Thread-190578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:09:36.287 [DEBUG] [Thread-190578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:09:36.287 [DEBUG] [Thread-190578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:09:36.312 [INFO] [Thread-190578] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:09:36.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:09:36.985 [DEBUG] [Thread-190578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:09:36.985 [DEBUG] [Thread-190578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:09:36.986 [DEBUG] [Thread-190578] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:09:37.025 [DEBUG] [Thread-190578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:09:37.026 [DEBUG] [Thread-190578] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:09:37.029 [DEBUG] [Thread-190578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:09:37.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:09:37.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:09:37.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:09:37.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:09:37.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:09:37.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:09:37.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:09:37.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:09:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:09:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.464631 -999.00  +21.20  23.23     26   +1.40 1 1 1 1 1   888    0 21.71 70.82 ----- 23.2 23.2 172.4 28.6 27.3 -25.5 26.4 -26.4 26.9 -22.9 28.0 -25.8
2025-11-24T13:09:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:09:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:09:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.464631
2025-11-24T13:09:37.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:09:37.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:09:37.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:09:37.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:09:37.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:09:37.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:09:26', tmtdew=22.21, humidity=22.43, cloud=0.0, wind=13.71, temperature=20.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:09:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:09:37.056 [DEBUG] [Thread-190578] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:09:37.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:09:37.151 [DEBUG] [Thread-190581] [transport.py] [_log()] starting thread (client mode): 0xd317df00
2025-11-24T13:09:37.151 [DEBUG] [Thread-190581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:09:37.166 [DEBUG] [Thread-190581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:09:37.166 [INFO] [Thread-190581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:09:37.173 [DEBUG] [Thread-190581] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:09:37.173 [DEBUG] [Thread-190581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:09:37.173 [DEBUG] [Thread-190581] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] client lang: <none>
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] server lang: <none>
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] kex follows: False
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] Compression: none
2025-11-24T13:09:37.174 [DEBUG] [Thread-190581] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:09:37.234 [DEBUG] [Thread-190581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:09:37.234 [DEBUG] [Thread-190581] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:09:37.235 [DEBUG] [Thread-190581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:09:37.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:09:37.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:09:37.290 [DEBUG] [Thread-190581] [transport.py] [_log()] userauth is OK
2025-11-24T13:09:37.290 [DEBUG] [Thread-190581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:09:37.290 [DEBUG] [Thread-190581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:09:37.290 [DEBUG] [Thread-190581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:09:37.291 [DEBUG] [Thread-190581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:09:37.310 [INFO] [Thread-190581] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:09:37.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:09:37.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:09:37.842 [DEBUG] [Thread-190583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:09:38.148 [DEBUG] [Thread-190581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:09:38.148 [DEBUG] [Thread-190581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:09:38.195 [DEBUG] [Thread-190581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:09:38.196 [DEBUG] [Thread-190581] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:09:38.205 [DEBUG] [Thread-190581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:09:38.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:09:38.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:09:38.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-11-24T13:09:38.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:09:38.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:09:38.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:09:38.242 [DEBUG] [Thread-190581] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:09:52.892 [DEBUG] [Thread-190584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:09:57.226 [DEBUG] [Thread-190585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:09:57.523 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:09:57.525 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:10:07.932 [DEBUG] [Thread-190586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:10:08.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:10:08.264 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:10:08.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-11-24T13:10:09.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 9, 59), 23.2, 20.73, 0.0, 25.6, 21.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:10:09.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:09:59
2025-11-24T13:10:09.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:10:09.329 [DEBUG] [Thread-190587] [transport.py] [_log()] starting thread (client mode): 0xd0701630
2025-11-24T13:10:09.329 [DEBUG] [Thread-190587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:10:09.349 [DEBUG] [Thread-190587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:10:09.349 [INFO] [Thread-190587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:10:09.351 [DEBUG] [Thread-190587] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:10:09.351 [DEBUG] [Thread-190587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:10:09.351 [DEBUG] [Thread-190587] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] client lang: <none>
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] server lang: <none>
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] kex follows: False
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] Compression: none
2025-11-24T13:10:09.352 [DEBUG] [Thread-190587] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:10:09.366 [DEBUG] [Thread-190587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:10:09.367 [DEBUG] [Thread-190587] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:10:09.368 [DEBUG] [Thread-190587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:10:09.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:10:09.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:10:09.370 [DEBUG] [Thread-190587] [transport.py] [_log()] userauth is OK
2025-11-24T13:10:09.370 [DEBUG] [Thread-190587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:10:09.370 [DEBUG] [Thread-190587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:10:09.370 [DEBUG] [Thread-190587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:10:09.370 [DEBUG] [Thread-190587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:10:09.391 [INFO] [Thread-190587] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:10:09.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:10:13.281 [DEBUG] [Thread-190587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:10:13.281 [DEBUG] [Thread-190587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:10:13.291 [DEBUG] [Thread-190587] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:10:13.322 [DEBUG] [Thread-190587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:10:13.322 [DEBUG] [Thread-190587] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:10:13.326 [DEBUG] [Thread-190587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:10:13.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:10:13.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:10:13.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:10:13.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:10:13.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:10:13.353 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:10:13.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:10:13.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:10:13.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:10:13.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.464979 -999.00  +21.30  26.48     27   +1.50 1 1 1 1 1   888    0 21.82 77.89 ----- 26.5 26.5 173.8 32.1 27.3 -25.5 26.2 -24.9 26.9 -23.1 27.9 -25.9
2025-11-24T13:10:13.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:10:13.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:10:13.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.464979
2025-11-24T13:10:13.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:10:13.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:10:13.362 [DEBUG] [Thread-190587] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:10:13.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:10:13.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:10:13.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:10:13.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:09:59', tmtdew=23.2, humidity=20.73, cloud=0.0, wind=25.6, temperature=21.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:09:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:10:13.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:10:13.458 [DEBUG] [Thread-190590] [transport.py] [_log()] starting thread (client mode): 0xd31b1180
2025-11-24T13:10:13.458 [DEBUG] [Thread-190590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:10:13.473 [DEBUG] [Thread-190590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:10:13.474 [INFO] [Thread-190590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:10:13.481 [DEBUG] [Thread-190590] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:10:13.481 [DEBUG] [Thread-190590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] client lang: <none>
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] server lang: <none>
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] kex follows: False
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] Compression: none
2025-11-24T13:10:13.482 [DEBUG] [Thread-190590] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:10:13.542 [DEBUG] [Thread-190590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:10:13.543 [DEBUG] [Thread-190590] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:10:13.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:10:13.544 [DEBUG] [Thread-190590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:10:13.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:10:13.598 [DEBUG] [Thread-190590] [transport.py] [_log()] userauth is OK
2025-11-24T13:10:13.598 [DEBUG] [Thread-190590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:10:13.599 [DEBUG] [Thread-190590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:10:13.599 [DEBUG] [Thread-190590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:10:13.599 [DEBUG] [Thread-190590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:10:13.617 [INFO] [Thread-190590] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:10:13.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:10:13.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:10:14.464 [DEBUG] [Thread-190590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:10:14.464 [DEBUG] [Thread-190590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:10:14.505 [DEBUG] [Thread-190590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:10:14.506 [DEBUG] [Thread-190590] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:10:14.515 [DEBUG] [Thread-190590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:10:14.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:10:14.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:10:14.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-11-24T13:10:14.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:10:14.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:10:14.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:10:14.553 [DEBUG] [Thread-190590] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:10:22.965 [DEBUG] [Thread-190592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:10:38.023 [DEBUG] [Thread-190593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:10:44.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:10:44.574 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:10:44.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-11-24T13:10:45.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 10, 31), 23.53, 20.32, 0.0, 31.41, 21.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:10:45.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:10:31
2025-11-24T13:10:45.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:10:45.629 [DEBUG] [Thread-190594] [transport.py] [_log()] starting thread (client mode): 0xd317d540
2025-11-24T13:10:45.630 [DEBUG] [Thread-190594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:10:45.649 [DEBUG] [Thread-190594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:10:45.650 [INFO] [Thread-190594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] client lang: <none>
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] server lang: <none>
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] kex follows: False
2025-11-24T13:10:45.653 [DEBUG] [Thread-190594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:10:45.654 [DEBUG] [Thread-190594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:10:45.654 [DEBUG] [Thread-190594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:10:45.654 [DEBUG] [Thread-190594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:10:45.654 [DEBUG] [Thread-190594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:10:45.654 [DEBUG] [Thread-190594] [transport.py] [_log()] Compression: none
2025-11-24T13:10:45.654 [DEBUG] [Thread-190594] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:10:45.671 [DEBUG] [Thread-190594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:10:45.672 [DEBUG] [Thread-190594] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:10:45.672 [DEBUG] [Thread-190594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:10:45.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:10:45.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:10:45.676 [DEBUG] [Thread-190594] [transport.py] [_log()] userauth is OK
2025-11-24T13:10:45.676 [DEBUG] [Thread-190594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:10:45.676 [DEBUG] [Thread-190594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:10:45.676 [DEBUG] [Thread-190594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:10:45.676 [DEBUG] [Thread-190594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:10:45.701 [INFO] [Thread-190594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:10:45.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:10:46.363 [DEBUG] [Thread-190594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:10:46.364 [DEBUG] [Thread-190594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:10:46.364 [DEBUG] [Thread-190594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:10:46.405 [DEBUG] [Thread-190594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:10:46.405 [DEBUG] [Thread-190594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:10:46.408 [DEBUG] [Thread-190594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:10:46.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:10:46.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:10:46.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:10:46.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:10:46.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:10:46.426 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:10:46.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:10:46.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:10:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:10:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.465326 -999.00  +21.70  20.55     26   +1.40 1 1 1 1 1   888    0 22.13 83.15 ----- 20.6 20.6 187.7 30.8 27.4 -25.3 26.2 -26.1 27.1 -22.7 28.0 -25.6
2025-11-24T13:10:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:10:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:10:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.465326
2025-11-24T13:10:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:10:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:10:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:10:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:10:46.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:10:46.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:10:31', tmtdew=23.53, humidity=20.32, cloud=0.0, wind=31.41, temperature=21.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:10:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:10:46.427 [DEBUG] [Thread-190594] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:10:46.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:10:53.050 [DEBUG] [Thread-190597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:10:57.551 [DEBUG] [Thread-190598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:10:57.667 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:10:57.668 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:11:08.094 [DEBUG] [Thread-190599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:11:23.130 [DEBUG] [Thread-190600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:11:38.161 [DEBUG] [Thread-190601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:11:53.200 [DEBUG] [Thread-190602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:11:57.753 [DEBUG] [Thread-190603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:11:57.814 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:11:57.816 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:12:08.237 [DEBUG] [Thread-190604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:12:23.278 [DEBUG] [Thread-190605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:12:38.310 [DEBUG] [Thread-190606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:12:53.341 [DEBUG] [Thread-190607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:12:57.854 [DEBUG] [Thread-190608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:12:57.956 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:12:57.957 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:12:59.071 [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-11-24T13:13:08.377 [DEBUG] [Thread-190609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:13:23.414 [DEBUG] [Thread-190610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:13:29.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:13:29.094 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:13:29.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-11-24T13:13:29.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 13, 13), 21.82, 23.01, 0.0, 25.73, 20.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:13:29.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:13:13
2025-11-24T13:13:30.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:13:30.242 [DEBUG] [Thread-190611] [transport.py] [_log()] starting thread (client mode): 0xd07ebf70
2025-11-24T13:13:30.242 [DEBUG] [Thread-190611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:13:30.253 [DEBUG] [Thread-190611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:13:30.253 [INFO] [Thread-190611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:13:30.259 [DEBUG] [Thread-190611] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:13:30.259 [DEBUG] [Thread-190611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:13:30.259 [DEBUG] [Thread-190611] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:13:30.259 [DEBUG] [Thread-190611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:13:30.260 [DEBUG] [Thread-190611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:13:30.260 [DEBUG] [Thread-190611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:13:30.260 [DEBUG] [Thread-190611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:13:30.260 [DEBUG] [Thread-190611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:13:30.260 [DEBUG] [Thread-190611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:13:30.260 [DEBUG] [Thread-190611] [transport.py] [_log()] client lang: <none>
2025-11-24T13:13:30.260 [DEBUG] [Thread-190611] [transport.py] [_log()] server lang: <none>
2025-11-24T13:13:30.260 [DEBUG] [Thread-190611] [transport.py] [_log()] kex follows: False
2025-11-24T13:13:30.260 [DEBUG] [Thread-190611] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:13:30.261 [DEBUG] [Thread-190611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:13:30.261 [DEBUG] [Thread-190611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:13:30.261 [DEBUG] [Thread-190611] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:13:30.261 [DEBUG] [Thread-190611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:13:30.262 [DEBUG] [Thread-190611] [transport.py] [_log()] Compression: none
2025-11-24T13:13:30.262 [DEBUG] [Thread-190611] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:13:30.301 [DEBUG] [Thread-190611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:13:30.306 [DEBUG] [Thread-190611] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:13:30.308 [DEBUG] [Thread-190611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:13:30.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:13:30.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:13:30.314 [DEBUG] [Thread-190611] [transport.py] [_log()] userauth is OK
2025-11-24T13:13:30.315 [DEBUG] [Thread-190611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:13:30.315 [DEBUG] [Thread-190611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:13:30.315 [DEBUG] [Thread-190611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:13:30.315 [DEBUG] [Thread-190611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:13:30.354 [INFO] [Thread-190611] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:13:30.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:13:31.058 [DEBUG] [Thread-190611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:13:31.058 [DEBUG] [Thread-190611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:13:31.068 [DEBUG] [Thread-190611] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:13:31.099 [DEBUG] [Thread-190611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:13:31.099 [DEBUG] [Thread-190611] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:13:31.104 [DEBUG] [Thread-190611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:13:31.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:13:31.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:13:31.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:13:31.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:13:31.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:13:31.127 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:13:31.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:13:31.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:13:31.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:13:31.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.467409 -999.00  +20.80  25.75     27   +1.50 1 1 1 1 1   888    0 21.80 62.44 ----- 25.8 25.8 136.8 34.8 27.2 -25.8 26.2 -24.9 27.0 -24.4 27.7 -27.0
2025-11-24T13:13:31.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:13:31.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:13:31.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.467409
2025-11-24T13:13:31.133 [DEBUG] [Thread-190611] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:13:31.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:13:31.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:13:31.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:13:31.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:13:31.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:13:31.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:13:13', tmtdew=21.82, humidity=23.01, cloud=0.0, wind=25.73, temperature=20.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:13:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:13:31.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:13:31.232 [DEBUG] [Thread-190614] [transport.py] [_log()] starting thread (client mode): 0xd07eb010
2025-11-24T13:13:31.232 [DEBUG] [Thread-190614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:13:31.246 [DEBUG] [Thread-190614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:13:31.246 [INFO] [Thread-190614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] client lang: <none>
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] server lang: <none>
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] kex follows: False
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:13:31.254 [DEBUG] [Thread-190614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:13:31.255 [DEBUG] [Thread-190614] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:13:31.255 [DEBUG] [Thread-190614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:13:31.255 [DEBUG] [Thread-190614] [transport.py] [_log()] Compression: none
2025-11-24T13:13:31.255 [DEBUG] [Thread-190614] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:13:31.312 [DEBUG] [Thread-190614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:13:31.312 [DEBUG] [Thread-190614] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:13:31.313 [DEBUG] [Thread-190614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:13:31.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:13:31.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:13:31.369 [DEBUG] [Thread-190614] [transport.py] [_log()] userauth is OK
2025-11-24T13:13:31.369 [DEBUG] [Thread-190614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:13:31.369 [DEBUG] [Thread-190614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:13:31.369 [DEBUG] [Thread-190614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:13:31.369 [DEBUG] [Thread-190614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:13:31.383 [INFO] [Thread-190614] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:13:31.383 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:13:31.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:13:32.245 [DEBUG] [Thread-190614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:13:32.245 [DEBUG] [Thread-190614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:13:32.293 [DEBUG] [Thread-190614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:13:32.293 [DEBUG] [Thread-190614] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:13:32.302 [DEBUG] [Thread-190614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:13:32.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:13:32.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-11-24T13:13:32.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-11-24T13:13:32.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:13:32.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:13:32.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:13:32.351 [DEBUG] [Thread-190614] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:13:38.445 [DEBUG] [Thread-190616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:13:53.542 [DEBUG] [Thread-190617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:13:57.930 [DEBUG] [Thread-190618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:13:58.096 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:13:58.097 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:14:02.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:14:02.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:14:02.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-11-24T13:14:03.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 13, 46), 22.15, 22.7, 0.0, 23.24, 20.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:14:03.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:13:46
2025-11-24T13:14:03.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:14:03.443 [DEBUG] [Thread-190619] [transport.py] [_log()] starting thread (client mode): 0xd0712440
2025-11-24T13:14:03.443 [DEBUG] [Thread-190619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:14:03.462 [DEBUG] [Thread-190619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:14:03.463 [INFO] [Thread-190619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] client lang: <none>
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] server lang: <none>
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] kex follows: False
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] Compression: none
2025-11-24T13:14:03.466 [DEBUG] [Thread-190619] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:14:03.484 [DEBUG] [Thread-190619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:14:03.485 [DEBUG] [Thread-190619] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:14:03.485 [DEBUG] [Thread-190619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:14:03.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:14:03.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:14:03.528 [DEBUG] [Thread-190619] [transport.py] [_log()] userauth is OK
2025-11-24T13:14:03.529 [DEBUG] [Thread-190619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:14:03.529 [DEBUG] [Thread-190619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:14:03.529 [DEBUG] [Thread-190619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:14:03.529 [DEBUG] [Thread-190619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:14:03.550 [INFO] [Thread-190619] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:14:03.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:14:04.157 [DEBUG] [Thread-190619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:14:04.158 [DEBUG] [Thread-190619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:14:04.158 [DEBUG] [Thread-190619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:14:04.198 [DEBUG] [Thread-190619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:14:04.198 [DEBUG] [Thread-190619] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:14:04.200 [DEBUG] [Thread-190619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:14:04.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:14:04.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:14:04.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:14:04.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:14:04.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:14:04.219 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:14:04.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:14:04.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:14:04.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:14:04.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.467756 -999.00  +20.60  21.92     28   +1.60 1 1 1 1 1   888    0 21.30 55.20 ----- 21.9 21.9 161.8 32.1 26.9 -27.1 26.2 -25.3 26.9 -25.8 -999.0 -999.0
2025-11-24T13:14:04.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:14:04.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:14:04.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.467756
2025-11-24T13:14:04.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:14:04.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:14:04.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:14:04.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:14:04.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:14:04.228 [DEBUG] [Thread-190619] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:14:04.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:13:46', tmtdew=22.15, humidity=22.7, cloud=0.0, wind=23.24, temperature=20.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:13:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:14:04.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:14:04.312 [DEBUG] [Thread-190622] [transport.py] [_log()] starting thread (client mode): 0xd3153520
2025-11-24T13:14:04.312 [DEBUG] [Thread-190622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:14:04.327 [DEBUG] [Thread-190622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:14:04.327 [INFO] [Thread-190622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] client lang: <none>
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] server lang: <none>
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] kex follows: False
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] Compression: none
2025-11-24T13:14:04.335 [DEBUG] [Thread-190622] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:14:04.392 [DEBUG] [Thread-190622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:14:04.392 [DEBUG] [Thread-190622] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:14:04.392 [DEBUG] [Thread-190622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:14:04.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:14:04.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:14:04.450 [DEBUG] [Thread-190622] [transport.py] [_log()] userauth is OK
2025-11-24T13:14:04.450 [DEBUG] [Thread-190622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:14:04.450 [DEBUG] [Thread-190622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:14:04.450 [DEBUG] [Thread-190622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:14:04.450 [DEBUG] [Thread-190622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:14:04.464 [INFO] [Thread-190622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:14:04.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:14:04.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:14:05.301 [DEBUG] [Thread-190622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:14:05.301 [DEBUG] [Thread-190622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:14:05.349 [DEBUG] [Thread-190622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:14:05.350 [DEBUG] [Thread-190622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:14:05.359 [DEBUG] [Thread-190622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:14:05.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:14:05.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-11-24T13: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') -> 00000000
2025-11-24T13:14:05.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:14:05.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:14:05.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:14:05.395 [DEBUG] [Thread-190622] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:14:08.577 [DEBUG] [Thread-190624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:14:23.620 [DEBUG] [Thread-190625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:14:35.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:14:35.418 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:14: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-11-24T13:14:36.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 14, 18), 22.08, 22.81, 0.0, 24.01, 20.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:14:36.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:14:18
2025-11-24T13:14:36.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:14:36.463 [DEBUG] [Thread-190626] [transport.py] [_log()] starting thread (client mode): 0xd317ffa0
2025-11-24T13:14:36.463 [DEBUG] [Thread-190626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:14:36.483 [DEBUG] [Thread-190626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:14:36.484 [INFO] [Thread-190626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:14:36.487 [DEBUG] [Thread-190626] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:14:36.487 [DEBUG] [Thread-190626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:14:36.487 [DEBUG] [Thread-190626] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:14:36.487 [DEBUG] [Thread-190626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:14:36.487 [DEBUG] [Thread-190626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:14:36.487 [DEBUG] [Thread-190626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:14:36.487 [DEBUG] [Thread-190626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] client lang: <none>
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] server lang: <none>
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] kex follows: False
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] Compression: none
2025-11-24T13:14:36.488 [DEBUG] [Thread-190626] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:14:36.507 [DEBUG] [Thread-190626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:14:36.508 [DEBUG] [Thread-190626] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:14:36.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:14:36.510 [DEBUG] [Thread-190626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:14:36.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:14:36.512 [DEBUG] [Thread-190626] [transport.py] [_log()] userauth is OK
2025-11-24T13:14:36.512 [DEBUG] [Thread-190626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:14:36.513 [DEBUG] [Thread-190626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:14:36.513 [DEBUG] [Thread-190626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:14:36.513 [DEBUG] [Thread-190626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:14:36.536 [INFO] [Thread-190626] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:14:36.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:14:37.296 [DEBUG] [Thread-190626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:14:37.305 [DEBUG] [Thread-190626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:14:37.306 [DEBUG] [Thread-190626] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:14:37.336 [DEBUG] [Thread-190626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:14:37.336 [DEBUG] [Thread-190626] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:14:37.338 [DEBUG] [Thread-190626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:14:37.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:14:37.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:14:37.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:14:37.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:14:37.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:14:37.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:14:37.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:14:37.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:14:37.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:14:37.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.468104 -999.00  +20.40  12.30     28   +1.70 1 1 1 1 1   888    0 20.76 50.71 ----- 12.3 12.3 172.4 26.9 26.9 -27.8 26.0 -33.2 26.6 -27.2 27.7 -26.7
2025-11-24T13:14:37.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:14:37.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:14:37.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.468104
2025-11-24T13:14:37.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:14:37.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:14:37.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:14:37.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:14:37.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:14:37.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:14:18', tmtdew=22.08, humidity=22.81, cloud=0.0, wind=24.01, temperature=20.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:14:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:14:37.351 [DEBUG] [Thread-190626] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:14:37.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:14:37.435 [DEBUG] [Thread-190629] [transport.py] [_log()] starting thread (client mode): 0xd317ef50
2025-11-24T13:14:37.435 [DEBUG] [Thread-190629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:14:37.449 [DEBUG] [Thread-190629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:14:37.449 [INFO] [Thread-190629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] client lang: <none>
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] server lang: <none>
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] kex follows: False
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] Compression: none
2025-11-24T13:14:37.457 [DEBUG] [Thread-190629] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:14:37.516 [DEBUG] [Thread-190629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:14:37.516 [DEBUG] [Thread-190629] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:14:37.516 [DEBUG] [Thread-190629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:14:37.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:14:37.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:14:37.573 [DEBUG] [Thread-190629] [transport.py] [_log()] userauth is OK
2025-11-24T13:14:37.573 [DEBUG] [Thread-190629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:14:37.573 [DEBUG] [Thread-190629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:14:37.573 [DEBUG] [Thread-190629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:14:37.573 [DEBUG] [Thread-190629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:14:37.586 [INFO] [Thread-190629] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:14:37.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:14:37.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:14:38.420 [DEBUG] [Thread-190629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:14:38.420 [DEBUG] [Thread-190629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:14:38.469 [DEBUG] [Thread-190629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:14:38.469 [DEBUG] [Thread-190629] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:14:38.478 [DEBUG] [Thread-190629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:14:38.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:14:38.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-11-24T13:14:38.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-11-24T13:14:38.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:14:38.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:14:38.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:14:38.524 [DEBUG] [Thread-190629] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:14:38.655 [DEBUG] [Thread-190631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:14:53.709 [DEBUG] [Thread-190632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:14:58.187 [DEBUG] [Thread-190633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:14:58.239 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:14:58.240 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:15:08.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:15:08.554 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:15:08.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-11-24T13:15:08.734 [DEBUG] [Thread-190634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:15:09.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 14, 50), 21.59, 23.26, 0.0, 22.53, 19.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:15:09.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:14:50
2025-11-24T13:15:09.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:15:09.642 [DEBUG] [Thread-190635] [transport.py] [_log()] starting thread (client mode): 0xd31b28c0
2025-11-24T13:15:09.642 [DEBUG] [Thread-190635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:15:09.661 [DEBUG] [Thread-190635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:15:09.662 [INFO] [Thread-190635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:15:09.664 [DEBUG] [Thread-190635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] client lang: <none>
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] server lang: <none>
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] kex follows: False
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:15:09.665 [DEBUG] [Thread-190635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:15:09.666 [DEBUG] [Thread-190635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:15:09.666 [DEBUG] [Thread-190635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:15:09.666 [DEBUG] [Thread-190635] [transport.py] [_log()] Compression: none
2025-11-24T13:15:09.666 [DEBUG] [Thread-190635] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:15:09.684 [DEBUG] [Thread-190635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:15:09.685 [DEBUG] [Thread-190635] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:15:09.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:15:09.686 [DEBUG] [Thread-190635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:15:09.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:15:09.688 [DEBUG] [Thread-190635] [transport.py] [_log()] userauth is OK
2025-11-24T13:15:09.688 [DEBUG] [Thread-190635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:15:09.689 [DEBUG] [Thread-190635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:15:09.689 [DEBUG] [Thread-190635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:15:09.689 [DEBUG] [Thread-190635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:15:09.713 [INFO] [Thread-190635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:15:09.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:15:10.615 [DEBUG] [Thread-190635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:15:10.615 [DEBUG] [Thread-190635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:15:10.616 [DEBUG] [Thread-190635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:15:10.656 [DEBUG] [Thread-190635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:15:10.656 [DEBUG] [Thread-190635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:15:10.659 [DEBUG] [Thread-190635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:15:10.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:15:10.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:15:10.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:15:10.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:15:10.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:15:10.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:15:10.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:15:10.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:15:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:15:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.468451 -999.00  +20.70  18.04     28   +1.80 1 1 1 1 1   888    0 20.83 45.87 ----- 18.0 18.0 181.4 20.1 26.9 -25.1 25.8 -25.9 26.9 -23.3 27.9 -26.1
2025-11-24T13:15:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:15:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:15:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.468451
2025-11-24T13:15:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:15:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:15:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:15:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:15:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:15:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:14:50', tmtdew=21.59, humidity=23.26, cloud=0.0, wind=22.53, temperature=19.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:14:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:15:10.679 [DEBUG] [Thread-190635] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:15:10.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:15:10.772 [DEBUG] [Thread-190638] [transport.py] [_log()] starting thread (client mode): 0xd0701ea0
2025-11-24T13:15:10.772 [DEBUG] [Thread-190638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:15:10.787 [DEBUG] [Thread-190638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:15:10.787 [INFO] [Thread-190638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:15:10.794 [DEBUG] [Thread-190638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:15:10.794 [DEBUG] [Thread-190638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:15:10.794 [DEBUG] [Thread-190638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:15:10.794 [DEBUG] [Thread-190638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] client lang: <none>
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] server lang: <none>
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] kex follows: False
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] Compression: none
2025-11-24T13:15:10.795 [DEBUG] [Thread-190638] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:15:10.851 [DEBUG] [Thread-190638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:15:10.852 [DEBUG] [Thread-190638] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:15:10.852 [DEBUG] [Thread-190638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:15:10.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:15:10.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:15:10.910 [DEBUG] [Thread-190638] [transport.py] [_log()] userauth is OK
2025-11-24T13:15:10.910 [DEBUG] [Thread-190638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:15:10.910 [DEBUG] [Thread-190638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:15:10.910 [DEBUG] [Thread-190638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:15:10.910 [DEBUG] [Thread-190638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:15:10.932 [INFO] [Thread-190638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:15:10.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:15:10.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:15:11.781 [DEBUG] [Thread-190638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:15:11.782 [DEBUG] [Thread-190638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:15:11.829 [DEBUG] [Thread-190638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:15:11.829 [DEBUG] [Thread-190638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:15:11.837 [DEBUG] [Thread-190638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:15:11.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:15:11.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-11-24T13:15:11.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-11-24T13:15:11.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:15:11.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:15:11.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:15:11.869 [DEBUG] [Thread-190638] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:15:23.765 [DEBUG] [Thread-190640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:15:38.799 [DEBUG] [Thread-190641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:15:41.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:15:41.883 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:15:41.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-11-24T13:15:42.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 15, 23), 21.44, 23.49, 0.0, 21.47, 19.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:15:42.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:15:23
2025-11-24T13:15:42.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:15:43.000 [DEBUG] [Thread-190642] [transport.py] [_log()] starting thread (client mode): 0xd07eb970
2025-11-24T13:15:43.000 [DEBUG] [Thread-190642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:15:43.021 [DEBUG] [Thread-190642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:15:43.021 [INFO] [Thread-190642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:15:43.024 [DEBUG] [Thread-190642] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] client lang: <none>
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] server lang: <none>
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] kex follows: False
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] Compression: none
2025-11-24T13:15:43.025 [DEBUG] [Thread-190642] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:15:43.044 [DEBUG] [Thread-190642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:15:43.044 [DEBUG] [Thread-190642] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:15:43.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:15:43.045 [DEBUG] [Thread-190642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:15:43.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:15:43.047 [DEBUG] [Thread-190642] [transport.py] [_log()] userauth is OK
2025-11-24T13:15:43.048 [DEBUG] [Thread-190642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:15:43.048 [DEBUG] [Thread-190642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:15:43.048 [DEBUG] [Thread-190642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:15:43.048 [DEBUG] [Thread-190642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:15:43.071 [INFO] [Thread-190642] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:15:43.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:15:43.870 [DEBUG] [Thread-190642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:15:43.879 [DEBUG] [Thread-190642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:15:43.879 [DEBUG] [Thread-190642] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:15:43.911 [DEBUG] [Thread-190642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:15:43.911 [DEBUG] [Thread-190642] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:15:43.913 [DEBUG] [Thread-190642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:15:43.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:15:43.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:15:43.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:15:43.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:15:43.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:15:43.931 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:15:43.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.468798 -999.00  +20.70  11.88     28   +1.60 1 1 1 1 1   888    0 21.01 40.70 ----- 11.9 11.9 193.4 23.6 27.1 -27.3 25.9 -29.1 26.8 -24.8 27.7 -26.2
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.468798
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:15:43.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:15:23', tmtdew=21.44, humidity=23.49, cloud=0.0, wind=21.47, temperature=19.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:15:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:15:43.932 [DEBUG] [Thread-190642] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:15:44.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:15:44.015 [DEBUG] [Thread-190645] [transport.py] [_log()] starting thread (client mode): 0xd07f9fc0
2025-11-24T13:15:44.015 [DEBUG] [Thread-190645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:15:44.030 [DEBUG] [Thread-190645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:15:44.030 [INFO] [Thread-190645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:15:44.037 [DEBUG] [Thread-190645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:15:44.037 [DEBUG] [Thread-190645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] client lang: <none>
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] server lang: <none>
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] kex follows: False
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] Compression: none
2025-11-24T13:15:44.038 [DEBUG] [Thread-190645] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:15:44.096 [DEBUG] [Thread-190645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:15:44.096 [DEBUG] [Thread-190645] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:15:44.097 [DEBUG] [Thread-190645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:15:44.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:15:44.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:15:44.153 [DEBUG] [Thread-190645] [transport.py] [_log()] userauth is OK
2025-11-24T13:15:44.153 [DEBUG] [Thread-190645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:15:44.153 [DEBUG] [Thread-190645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:15:44.153 [DEBUG] [Thread-190645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:15:44.153 [DEBUG] [Thread-190645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:15:44.167 [INFO] [Thread-190645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:15:44.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:15:44.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:15:45.004 [DEBUG] [Thread-190645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:15:45.005 [DEBUG] [Thread-190645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:15:45.052 [DEBUG] [Thread-190645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:15:45.053 [DEBUG] [Thread-190645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:15:45.062 [DEBUG] [Thread-190645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:15:45.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:15:45.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-11-24T13:15:45.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-11-24T13:15:45.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:15:45.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:15:45.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:15:45.099 [DEBUG] [Thread-190645] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:15:53.842 [DEBUG] [Thread-190647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:15:58.316 [DEBUG] [Thread-190648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:15:58.378 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:15:58.380 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:16:08.897 [DEBUG] [Thread-190649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:16:15.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:16:15.121 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:16:15.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-11-24T13:16:15.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 15, 55), 21.43, 23.81, 0.0, 19.53, 20.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:16:15.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:15:55
2025-11-24T13:16:15.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:16:16.121 [DEBUG] [Thread-190650] [transport.py] [_log()] starting thread (client mode): 0xd0703850
2025-11-24T13:16:16.121 [DEBUG] [Thread-190650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:16:16.140 [DEBUG] [Thread-190650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:16:16.141 [INFO] [Thread-190650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:16:16.144 [DEBUG] [Thread-190650] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:16:16.144 [DEBUG] [Thread-190650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:16:16.144 [DEBUG] [Thread-190650] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:16:16.144 [DEBUG] [Thread-190650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:16:16.144 [DEBUG] [Thread-190650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:16:16.144 [DEBUG] [Thread-190650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:16:16.144 [DEBUG] [Thread-190650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] client lang: <none>
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] server lang: <none>
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] kex follows: False
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] Compression: none
2025-11-24T13:16:16.145 [DEBUG] [Thread-190650] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:16:16.158 [DEBUG] [Thread-190650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:16:16.161 [DEBUG] [Thread-190650] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:16:16.162 [DEBUG] [Thread-190650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:16:16.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:16:16.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:16:16.167 [DEBUG] [Thread-190650] [transport.py] [_log()] userauth is OK
2025-11-24T13:16:16.167 [DEBUG] [Thread-190650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:16:16.167 [DEBUG] [Thread-190650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:16:16.167 [DEBUG] [Thread-190650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:16:16.167 [DEBUG] [Thread-190650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:16:16.192 [INFO] [Thread-190650] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:16:16.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:16:16.868 [DEBUG] [Thread-190650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:16:16.869 [DEBUG] [Thread-190650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:16:16.878 [DEBUG] [Thread-190650] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:16:16.910 [DEBUG] [Thread-190650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:16:16.910 [DEBUG] [Thread-190650] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:16:16.914 [DEBUG] [Thread-190650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:16:16.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:16:16.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:16:16.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:16:16.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:16:16.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:16:16.944 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:16:16.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:16:16.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:16:16.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:16:16.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.469145 -999.00  +20.70  15.80     28   +1.70 1 1 1 1 1   888    0 20.87 35.47 ----- 15.8 15.8 183.0 22.3 27.1 -25.8 25.9 -24.6 26.9 -24.4 27.9 -25.0
2025-11-24T13:16:16.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:16:16.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:16:16.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.469145
2025-11-24T13:16:16.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:16:16.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:16:16.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:16:16.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:16:16.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:16:16.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:15:55', tmtdew=21.43, humidity=23.81, cloud=0.0, wind=19.53, temperature=20.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:15:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:16:16.953 [DEBUG] [Thread-190650] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:16:17.036 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:16:17.049 [DEBUG] [Thread-190653] [transport.py] [_log()] starting thread (client mode): 0xd31529e0
2025-11-24T13:16:17.050 [DEBUG] [Thread-190653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:16:17.068 [DEBUG] [Thread-190653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:16:17.068 [INFO] [Thread-190653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:16:17.075 [DEBUG] [Thread-190653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] client lang: <none>
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] server lang: <none>
2025-11-24T13:16:17.076 [DEBUG] [Thread-190653] [transport.py] [_log()] kex follows: False
2025-11-24T13:16:17.077 [DEBUG] [Thread-190653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:16:17.077 [DEBUG] [Thread-190653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:16:17.077 [DEBUG] [Thread-190653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:16:17.077 [DEBUG] [Thread-190653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:16:17.077 [DEBUG] [Thread-190653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:16:17.077 [DEBUG] [Thread-190653] [transport.py] [_log()] Compression: none
2025-11-24T13:16:17.077 [DEBUG] [Thread-190653] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:16:17.138 [DEBUG] [Thread-190653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:16:17.140 [DEBUG] [Thread-190653] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:16:17.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:16:17.141 [DEBUG] [Thread-190653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:16:17.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:16:17.194 [DEBUG] [Thread-190653] [transport.py] [_log()] userauth is OK
2025-11-24T13:16:17.194 [DEBUG] [Thread-190653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:16:17.194 [DEBUG] [Thread-190653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:16:17.194 [DEBUG] [Thread-190653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:16:17.194 [DEBUG] [Thread-190653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:16:17.213 [INFO] [Thread-190653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:16:17.213 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:16:17.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:16:18.115 [DEBUG] [Thread-190653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:16:18.115 [DEBUG] [Thread-190653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:16:18.163 [DEBUG] [Thread-190653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:16:18.163 [DEBUG] [Thread-190653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:16:18.173 [DEBUG] [Thread-190653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:16:18.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:16:18.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-11-24T13:16:18.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-11-24T13:16:18.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:16:18.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:16:18.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:16:18.221 [DEBUG] [Thread-190653] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:16:23.936 [DEBUG] [Thread-190655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:16:38.984 [DEBUG] [Thread-190656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:16:48.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:16:48.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:16:48.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T13:16:49.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 16, 28), 21.47, 23.75, 0.0, 19.92, 20.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:16:49.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:16:28
2025-11-24T13:16:49.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:16:49.402 [DEBUG] [Thread-190657] [transport.py] [_log()] starting thread (client mode): 0xd07eb250
2025-11-24T13:16:49.403 [DEBUG] [Thread-190657] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:16:49.422 [DEBUG] [Thread-190657] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:16:49.423 [INFO] [Thread-190657] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] client lang: <none>
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] server lang: <none>
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] kex follows: False
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:16:49.426 [DEBUG] [Thread-190657] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:16:49.427 [DEBUG] [Thread-190657] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:16:49.427 [DEBUG] [Thread-190657] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:16:49.427 [DEBUG] [Thread-190657] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:16:49.427 [DEBUG] [Thread-190657] [transport.py] [_log()] Compression: none
2025-11-24T13:16:49.427 [DEBUG] [Thread-190657] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:16:49.446 [DEBUG] [Thread-190657] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:16:49.446 [DEBUG] [Thread-190657] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:16:49.446 [DEBUG] [Thread-190657] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:16:49.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:16:49.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:16:49.447 [DEBUG] [Thread-190657] [transport.py] [_log()] userauth is OK
2025-11-24T13:16:49.447 [DEBUG] [Thread-190657] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:16:49.447 [DEBUG] [Thread-190657] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:16:49.447 [DEBUG] [Thread-190657] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:16:49.447 [DEBUG] [Thread-190657] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:16:49.462 [INFO] [Thread-190657] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:16:49.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:16:50.211 [DEBUG] [Thread-190657] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:16:50.211 [DEBUG] [Thread-190657] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:16:50.212 [DEBUG] [Thread-190657] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:16:50.252 [DEBUG] [Thread-190657] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:16:50.252 [DEBUG] [Thread-190657] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:16:50.254 [DEBUG] [Thread-190657] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:16:50.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:16:50.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:16:50.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:16:50.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:16:50.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:16:50.270 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:16:50.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.469492 -999.00  +20.70  11.36     28   +1.80 1 1 1 1 1   888    0 20.78 32.73 ----- 11.4 11.4 177.2 20.8 27.0 -26.7 26.0 -31.4 26.9 -23.6 28.0 -25.4
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.469492
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:16:50.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:16:28', tmtdew=21.47, humidity=23.75, cloud=0.0, wind=19.92, temperature=20.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:16:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:16:50.271 [DEBUG] [Thread-190657] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:16:50.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:16:50.357 [DEBUG] [Thread-190660] [transport.py] [_log()] starting thread (client mode): 0xd3192f80
2025-11-24T13:16:50.357 [DEBUG] [Thread-190660] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:16:50.373 [DEBUG] [Thread-190660] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:16:50.373 [INFO] [Thread-190660] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:16:50.380 [DEBUG] [Thread-190660] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:16:50.380 [DEBUG] [Thread-190660] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:16:50.380 [DEBUG] [Thread-190660] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:16:50.380 [DEBUG] [Thread-190660] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:16:50.380 [DEBUG] [Thread-190660] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:16:50.380 [DEBUG] [Thread-190660] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:16:50.380 [DEBUG] [Thread-190660] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:16:50.380 [DEBUG] [Thread-190660] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] client lang: <none>
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] server lang: <none>
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] kex follows: False
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] Compression: none
2025-11-24T13:16:50.381 [DEBUG] [Thread-190660] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:16:50.440 [DEBUG] [Thread-190660] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:16:50.440 [DEBUG] [Thread-190660] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:16:50.440 [DEBUG] [Thread-190660] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:16:50.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:16:50.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:16:50.497 [DEBUG] [Thread-190660] [transport.py] [_log()] userauth is OK
2025-11-24T13:16:50.497 [DEBUG] [Thread-190660] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:16:50.497 [DEBUG] [Thread-190660] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:16:50.497 [DEBUG] [Thread-190660] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:16:50.497 [DEBUG] [Thread-190660] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:16:50.511 [INFO] [Thread-190660] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:16:50.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:16:50.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:16:51.405 [DEBUG] [Thread-190660] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:16:51.405 [DEBUG] [Thread-190660] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:16:51.453 [DEBUG] [Thread-190660] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:16:51.453 [DEBUG] [Thread-190660] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:16:51.461 [DEBUG] [Thread-190660] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:16:51.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:16:51.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-11-24T13:16:51.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-11-24T13:16:51.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:16:51.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:16:51.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:16:51.493 [DEBUG] [Thread-190660] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:16:54.016 [DEBUG] [Thread-190662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:16:58.520 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:16:58.522 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:16:58.624 [DEBUG] [Thread-190663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:17:09.053 [DEBUG] [Thread-190664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:17:21.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:17:21.488 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:17:21.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-11-24T13:17:22.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 17), 21.37, 23.88, 0.0, 19.76, 20.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:17:22.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:17:00
2025-11-24T13:17:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:17:22.602 [DEBUG] [Thread-190665] [transport.py] [_log()] starting thread (client mode): 0xd07aa350
2025-11-24T13:17:22.602 [DEBUG] [Thread-190665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:17:22.622 [DEBUG] [Thread-190665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:17:22.622 [INFO] [Thread-190665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:17:22.625 [DEBUG] [Thread-190665] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:17:22.625 [DEBUG] [Thread-190665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:17:22.625 [DEBUG] [Thread-190665] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:17:22.625 [DEBUG] [Thread-190665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:17:22.625 [DEBUG] [Thread-190665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:17:22.625 [DEBUG] [Thread-190665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] client lang: <none>
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] server lang: <none>
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] kex follows: False
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:17:22.626 [DEBUG] [Thread-190665] [transport.py] [_log()] Compression: none
2025-11-24T13:17:22.627 [DEBUG] [Thread-190665] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:17:22.645 [DEBUG] [Thread-190665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:17:22.646 [DEBUG] [Thread-190665] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:17:22.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:17:22.647 [DEBUG] [Thread-190665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:17:22.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:17:22.649 [DEBUG] [Thread-190665] [transport.py] [_log()] userauth is OK
2025-11-24T13:17:22.649 [DEBUG] [Thread-190665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:17:22.649 [DEBUG] [Thread-190665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:17:22.649 [DEBUG] [Thread-190665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:17:22.649 [DEBUG] [Thread-190665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:17:22.674 [INFO] [Thread-190665] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:17:22.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:17:23.306 [DEBUG] [Thread-190665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:17:23.306 [DEBUG] [Thread-190665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:17:23.306 [DEBUG] [Thread-190665] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:17:23.347 [DEBUG] [Thread-190665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:17:23.347 [DEBUG] [Thread-190665] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:17:23.349 [DEBUG] [Thread-190665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:17:23.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:17:23.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:17:23.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:17:23.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:17:23.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:17:23.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:17:23.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.469840 -999.00  +20.70  13.67     28   +1.60 1 1 1 1 1   888    0 20.77 29.54 ----- 13.7 13.7 182.6 19.1 27.1 -26.2 26.1 -28.2 27.0 -23.9 28.1 -25.2
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.469840
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:17:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:17:00', tmtdew=21.37, humidity=23.88, cloud=0.0, wind=19.76, temperature=20.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:16:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:17:23.370 [DEBUG] [Thread-190665] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:17:23.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:17:23.453 [DEBUG] [Thread-190668] [transport.py] [_log()] starting thread (client mode): 0xd07a8280
2025-11-24T13:17:23.453 [DEBUG] [Thread-190668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:17:23.468 [DEBUG] [Thread-190668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:17:23.468 [INFO] [Thread-190668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] client lang: <none>
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] server lang: <none>
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] kex follows: False
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] Compression: none
2025-11-24T13:17:23.476 [DEBUG] [Thread-190668] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:17:23.532 [DEBUG] [Thread-190668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:17:23.532 [DEBUG] [Thread-190668] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:17:23.532 [DEBUG] [Thread-190668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:17:23.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:17:23.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:17:23.589 [DEBUG] [Thread-190668] [transport.py] [_log()] userauth is OK
2025-11-24T13:17:23.589 [DEBUG] [Thread-190668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:17:23.589 [DEBUG] [Thread-190668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:17:23.589 [DEBUG] [Thread-190668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:17:23.589 [DEBUG] [Thread-190668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:17:23.603 [INFO] [Thread-190668] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:17:23.603 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:17:23.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:17:24.093 [DEBUG] [Thread-190670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:17:24.437 [DEBUG] [Thread-190668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:17:24.438 [DEBUG] [Thread-190668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:17:24.485 [DEBUG] [Thread-190668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:17:24.486 [DEBUG] [Thread-190668] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:17:24.495 [DEBUG] [Thread-190668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:17:24.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:17:24.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:17:24.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-11-24T13:17:24.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:17:24.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:17:24.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:17:24.531 [DEBUG] [Thread-190668] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:17:39.140 [DEBUG] [Thread-190671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:17:54.175 [DEBUG] [Thread-190672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:17:54.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:17:54.554 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:17: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-11-24T13:17:55.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 17, 33), 21.36, 23.86, 0.0, 18.33, 19.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:17:55.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:17:33
2025-11-24T13:17:55.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:17:55.673 [DEBUG] [Thread-190673] [transport.py] [_log()] starting thread (client mode): 0xd07aac20
2025-11-24T13:17:55.673 [DEBUG] [Thread-190673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:17:55.694 [DEBUG] [Thread-190673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:17:55.694 [INFO] [Thread-190673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:17:55.697 [DEBUG] [Thread-190673] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:17:55.697 [DEBUG] [Thread-190673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:17:55.697 [DEBUG] [Thread-190673] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:17:55.697 [DEBUG] [Thread-190673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:17:55.697 [DEBUG] [Thread-190673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] client lang: <none>
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] server lang: <none>
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] kex follows: False
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] Compression: none
2025-11-24T13:17:55.698 [DEBUG] [Thread-190673] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:17:55.715 [DEBUG] [Thread-190673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:17:55.715 [DEBUG] [Thread-190673] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:17:55.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:17:55.716 [DEBUG] [Thread-190673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:17:55.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:17:55.719 [DEBUG] [Thread-190673] [transport.py] [_log()] userauth is OK
2025-11-24T13:17:55.719 [DEBUG] [Thread-190673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:17:55.719 [DEBUG] [Thread-190673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:17:55.719 [DEBUG] [Thread-190673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:17:55.720 [DEBUG] [Thread-190673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:17:55.737 [INFO] [Thread-190673] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:17:55.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:17:56.358 [DEBUG] [Thread-190673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:17:56.358 [DEBUG] [Thread-190673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:17:56.358 [DEBUG] [Thread-190673] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:17:56.399 [DEBUG] [Thread-190673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:17:56.399 [DEBUG] [Thread-190673] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:17:56.401 [DEBUG] [Thread-190673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:17:56.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:17:56.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:17:56.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:17:56.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:17:56.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:17:56.429 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:17:56.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:17:56.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:17:56.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:17:56.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.470534 -999.00  +20.90  12.09     28   +1.70 1 1 1 1 1   888    0 20.16 26.41 ----- 12.1 12.1 156.6 16.4 27.4 -24.7 26.5 -24.9 27.3 -22.8 28.4 -24.8
2025-11-24T13:17:56.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:17:56.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:17:56.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.470534
2025-11-24T13:17:56.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:17:56.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:17:56.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:17:56.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:17:56.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:17:56.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:17:33', tmtdew=21.36, humidity=23.86, cloud=0.0, wind=18.33, temperature=19.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:17:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:17:56.430 [DEBUG] [Thread-190673] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:17:56.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:17:56.514 [DEBUG] [Thread-190676] [transport.py] [_log()] starting thread (client mode): 0xd07f9bd0
2025-11-24T13:17:56.514 [DEBUG] [Thread-190676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:17:56.528 [DEBUG] [Thread-190676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:17:56.528 [INFO] [Thread-190676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] client lang: <none>
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] server lang: <none>
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] kex follows: False
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] Compression: none
2025-11-24T13:17:56.536 [DEBUG] [Thread-190676] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:17:56.592 [DEBUG] [Thread-190676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:17:56.592 [DEBUG] [Thread-190676] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:17:56.592 [DEBUG] [Thread-190676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:17:56.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:17:56.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:17:56.649 [DEBUG] [Thread-190676] [transport.py] [_log()] userauth is OK
2025-11-24T13:17:56.649 [DEBUG] [Thread-190676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:17:56.649 [DEBUG] [Thread-190676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:17:56.650 [DEBUG] [Thread-190676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:17:56.650 [DEBUG] [Thread-190676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:17:56.664 [INFO] [Thread-190676] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:17:56.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:17:56.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:17:57.499 [DEBUG] [Thread-190676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:17:57.500 [DEBUG] [Thread-190676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:17:57.548 [DEBUG] [Thread-190676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:17:57.548 [DEBUG] [Thread-190676] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:17:57.558 [DEBUG] [Thread-190676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:17:57.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:17:57.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-11-24T13:17:57.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:17:57.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:17:57.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:17:57.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:17:57.596 [DEBUG] [Thread-190676] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:17:58.667 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:17:58.668 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:17:58.707 [DEBUG] [Thread-190678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:18:09.215 [DEBUG] [Thread-190679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:18:24.257 [DEBUG] [Thread-190680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:18:27.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:18:27.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:18:27.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-11-24T13:18:28.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 18, 5), 21.19, 24.09, 0.0, 16.69, 19.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:18:28.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:18:05
2025-11-24T13:18:28.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:18:28.724 [DEBUG] [Thread-190681] [transport.py] [_log()] starting thread (client mode): 0xd07a9fc0
2025-11-24T13:18:28.724 [DEBUG] [Thread-190681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:18:28.743 [DEBUG] [Thread-190681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:18:28.744 [INFO] [Thread-190681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:18:28.753 [DEBUG] [Thread-190681] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] client lang: <none>
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] server lang: <none>
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] kex follows: False
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:18:28.754 [DEBUG] [Thread-190681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:18:28.755 [DEBUG] [Thread-190681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:18:28.755 [DEBUG] [Thread-190681] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:18:28.755 [DEBUG] [Thread-190681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:18:28.755 [DEBUG] [Thread-190681] [transport.py] [_log()] Compression: none
2025-11-24T13:18:28.755 [DEBUG] [Thread-190681] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:18:28.776 [DEBUG] [Thread-190681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:18:28.777 [DEBUG] [Thread-190681] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:18:28.778 [DEBUG] [Thread-190681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:18:28.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:18:28.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:18:28.780 [DEBUG] [Thread-190681] [transport.py] [_log()] userauth is OK
2025-11-24T13:18:28.780 [DEBUG] [Thread-190681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:18:28.780 [DEBUG] [Thread-190681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:18:28.780 [DEBUG] [Thread-190681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:18:28.780 [DEBUG] [Thread-190681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:18:28.817 [INFO] [Thread-190681] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:18:28.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:18:29.411 [DEBUG] [Thread-190681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:18:29.411 [DEBUG] [Thread-190681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:18:29.411 [DEBUG] [Thread-190681] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:18:29.452 [DEBUG] [Thread-190681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:18:29.452 [DEBUG] [Thread-190681] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:18:29.455 [DEBUG] [Thread-190681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:18:29.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:18:29.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:18:29.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:18:29.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:18:29.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:18:29.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:18:29.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:18:29.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:18:29.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:18:29.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.470881 -999.00  +20.70  13.33     28   +1.50 1 1 1 1 1   888    0 20.54 26.72 ----- 13.3 13.3 173.6 19.1 27.6 -25.2 26.6 -24.5 27.4 -23.6 28.4 -26.0
2025-11-24T13:18:29.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:18:29.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:18:29.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.470881
2025-11-24T13:18:29.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:18:29.483 [DEBUG] [Thread-190681] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:18:29.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:18:29.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:18:29.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:18:29.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:18:29.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:18:05', tmtdew=21.19, humidity=24.09, cloud=0.0, wind=16.69, temperature=19.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:18:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:18:29.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:18:29.579 [DEBUG] [Thread-190684] [transport.py] [_log()] starting thread (client mode): 0xd07a9150
2025-11-24T13:18:29.579 [DEBUG] [Thread-190684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:18:29.595 [DEBUG] [Thread-190684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:18:29.595 [INFO] [Thread-190684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:18:29.604 [DEBUG] [Thread-190684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:18:29.604 [DEBUG] [Thread-190684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:18:29.604 [DEBUG] [Thread-190684] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:18:29.604 [DEBUG] [Thread-190684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:18:29.604 [DEBUG] [Thread-190684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:18:29.605 [DEBUG] [Thread-190684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:18:29.605 [DEBUG] [Thread-190684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:18:29.605 [DEBUG] [Thread-190684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:18:29.605 [DEBUG] [Thread-190684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:18:29.605 [DEBUG] [Thread-190684] [transport.py] [_log()] client lang: <none>
2025-11-24T13:18:29.605 [DEBUG] [Thread-190684] [transport.py] [_log()] server lang: <none>
2025-11-24T13:18:29.605 [DEBUG] [Thread-190684] [transport.py] [_log()] kex follows: False
2025-11-24T13:18:29.605 [DEBUG] [Thread-190684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:18:29.606 [DEBUG] [Thread-190684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:18:29.606 [DEBUG] [Thread-190684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:18:29.606 [DEBUG] [Thread-190684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:18:29.606 [DEBUG] [Thread-190684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:18:29.606 [DEBUG] [Thread-190684] [transport.py] [_log()] Compression: none
2025-11-24T13:18:29.606 [DEBUG] [Thread-190684] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:18:29.666 [DEBUG] [Thread-190684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:18:29.666 [DEBUG] [Thread-190684] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:18:29.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:18:29.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:18:29.668 [DEBUG] [Thread-190684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:18:29.722 [DEBUG] [Thread-190684] [transport.py] [_log()] userauth is OK
2025-11-24T13:18:29.722 [DEBUG] [Thread-190684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:18:29.722 [DEBUG] [Thread-190684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:18:29.723 [DEBUG] [Thread-190684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:18:29.723 [DEBUG] [Thread-190684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:18:29.743 [INFO] [Thread-190684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:18:29.744 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:18:29.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:18:30.578 [DEBUG] [Thread-190684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:18:30.578 [DEBUG] [Thread-190684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:18:30.626 [DEBUG] [Thread-190684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:18:30.626 [DEBUG] [Thread-190684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:18:30.635 [DEBUG] [Thread-190684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:18:30.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:18:30.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-11-24T13:18:30.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-11-24T13:18:30.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:18:30.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:18:30.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:18:30.670 [DEBUG] [Thread-190684] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:18:39.290 [DEBUG] [Thread-190686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:18:54.339 [DEBUG] [Thread-190687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:18:58.807 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:18:58.809 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:18:59.053 [DEBUG] [Thread-190688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:19:00.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:19:00.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:19:00.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-11-24T13:19:01.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 18, 37), 21.37, 23.76, 0.0, 16.67, 19.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:19:01.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:18:37
2025-11-24T13:19:01.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:19:01.689 [DEBUG] [Thread-190689] [transport.py] [_log()] starting thread (client mode): 0xd07aaf20
2025-11-24T13:19:01.689 [DEBUG] [Thread-190689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:19:01.704 [DEBUG] [Thread-190689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:19:01.704 [INFO] [Thread-190689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:19:01.707 [DEBUG] [Thread-190689] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] client lang: <none>
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] server lang: <none>
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] kex follows: False
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] Compression: none
2025-11-24T13:19:01.708 [DEBUG] [Thread-190689] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:19:01.728 [DEBUG] [Thread-190689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:19:01.729 [DEBUG] [Thread-190689] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:19:01.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:19:01.730 [DEBUG] [Thread-190689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:19:01.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:19:01.732 [DEBUG] [Thread-190689] [transport.py] [_log()] userauth is OK
2025-11-24T13:19:01.733 [DEBUG] [Thread-190689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:19:01.733 [DEBUG] [Thread-190689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:19:01.733 [DEBUG] [Thread-190689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:19:01.733 [DEBUG] [Thread-190689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:19:01.751 [INFO] [Thread-190689] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:19:01.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:19:02.411 [DEBUG] [Thread-190689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:19:02.411 [DEBUG] [Thread-190689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:19:02.412 [DEBUG] [Thread-190689] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:19:02.453 [DEBUG] [Thread-190689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:19:02.453 [DEBUG] [Thread-190689] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:19:02.457 [DEBUG] [Thread-190689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:19:02.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:19:02.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:19:02.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:19:02.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:19:02.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:19:02.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:19:02.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:19:02.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:19:02.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:19:02.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.471228 -999.00  +20.70  14.10     28   +1.70 1 1 1 1 1   888    0 20.37 22.15 ----- 14.1 14.1 149.5 18.7 27.6 -25.1 26.6 -24.8 27.4 -24.0 28.5 -24.7
2025-11-24T13:19:02.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:19:02.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:19:02.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.471228
2025-11-24T13:19:02.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:19:02.479 [DEBUG] [Thread-190689] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:19:02.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:19:02.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:19:02.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:19:02.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:19:02.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:18:37', tmtdew=21.37, humidity=23.76, cloud=0.0, wind=16.67, temperature=19.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:18:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:19:02.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:19:02.580 [DEBUG] [Thread-190692] [transport.py] [_log()] starting thread (client mode): 0xd07aa6e0
2025-11-24T13:19:02.580 [DEBUG] [Thread-190692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:19:02.594 [DEBUG] [Thread-190692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:19:02.595 [INFO] [Thread-190692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] client lang: <none>
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] server lang: <none>
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] kex follows: False
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:19:02.603 [DEBUG] [Thread-190692] [transport.py] [_log()] Compression: none
2025-11-24T13:19:02.604 [DEBUG] [Thread-190692] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:19:02.665 [DEBUG] [Thread-190692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:19:02.665 [DEBUG] [Thread-190692] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:19:02.665 [DEBUG] [Thread-190692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:19:02.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:19:02.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:19:02.721 [DEBUG] [Thread-190692] [transport.py] [_log()] userauth is OK
2025-11-24T13:19:02.721 [DEBUG] [Thread-190692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:19:02.721 [DEBUG] [Thread-190692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:19:02.721 [DEBUG] [Thread-190692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:19:02.721 [DEBUG] [Thread-190692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:19:02.735 [INFO] [Thread-190692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:19:02.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:19:02.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:19:03.599 [DEBUG] [Thread-190692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:19:03.599 [DEBUG] [Thread-190692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:19:03.647 [DEBUG] [Thread-190692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:19:03.647 [DEBUG] [Thread-190692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:19:03.656 [DEBUG] [Thread-190692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:19:03.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:19:03.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-11-24T13:19:03.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:19:03.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:19:03.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:19:03.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:19:03.691 [DEBUG] [Thread-190692] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:19:09.388 [DEBUG] [Thread-190694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:19:24.433 [DEBUG] [Thread-190695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:19:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:19:33.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:19:33.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-11-24T13:19:34.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 19, 10), 21.25, 23.96, 0.0, 15.58, 19.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:19:34.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:19:10
2025-11-24T13:19:34.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:19:34.800 [DEBUG] [Thread-190696] [transport.py] [_log()] starting thread (client mode): 0xd07fa0b0
2025-11-24T13:19:34.800 [DEBUG] [Thread-190696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:19:34.812 [DEBUG] [Thread-190696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:19:34.812 [INFO] [Thread-190696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:19:34.816 [DEBUG] [Thread-190696] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:19:34.817 [DEBUG] [Thread-190696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:19:34.817 [DEBUG] [Thread-190696] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:19:34.817 [DEBUG] [Thread-190696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:19:34.817 [DEBUG] [Thread-190696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:19:34.817 [DEBUG] [Thread-190696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:19:34.817 [DEBUG] [Thread-190696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:19:34.817 [DEBUG] [Thread-190696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:19:34.817 [DEBUG] [Thread-190696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:19:34.817 [DEBUG] [Thread-190696] [transport.py] [_log()] client lang: <none>
2025-11-24T13:19:34.817 [DEBUG] [Thread-190696] [transport.py] [_log()] server lang: <none>
2025-11-24T13:19:34.818 [DEBUG] [Thread-190696] [transport.py] [_log()] kex follows: False
2025-11-24T13:19:34.818 [DEBUG] [Thread-190696] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:19:34.818 [DEBUG] [Thread-190696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:19:34.818 [DEBUG] [Thread-190696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:19:34.818 [DEBUG] [Thread-190696] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:19:34.818 [DEBUG] [Thread-190696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:19:34.818 [DEBUG] [Thread-190696] [transport.py] [_log()] Compression: none
2025-11-24T13:19:34.818 [DEBUG] [Thread-190696] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:19:34.842 [DEBUG] [Thread-190696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:19:34.843 [DEBUG] [Thread-190696] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:19:34.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:19:34.845 [DEBUG] [Thread-190696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:19:34.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:19:34.885 [DEBUG] [Thread-190696] [transport.py] [_log()] userauth is OK
2025-11-24T13:19:34.885 [DEBUG] [Thread-190696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:19:34.886 [DEBUG] [Thread-190696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:19:34.886 [DEBUG] [Thread-190696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:19:34.886 [DEBUG] [Thread-190696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:19:34.924 [INFO] [Thread-190696] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:19:34.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:19:35.564 [DEBUG] [Thread-190696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:19:35.564 [DEBUG] [Thread-190696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:19:35.565 [DEBUG] [Thread-190696] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:19:35.606 [DEBUG] [Thread-190696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:19:35.606 [DEBUG] [Thread-190696] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:19:35.610 [DEBUG] [Thread-190696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:19:35.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:19:35.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:19:35.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:19:35.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:19:35.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:19:35.637 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:19:35.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:19:35.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:19:35.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:19:35.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.471576 -999.00  +20.70  11.41     28   +1.80 1 1 1 1 1   888    0 20.62 19.05 ----- 11.4 11.4 166.8 16.1 27.7 -25.2 26.8 -24.4 27.5 -23.4 28.6 -24.8
2025-11-24T13:19:35.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:19:35.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:19:35.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.471576
2025-11-24T13:19:35.646 [DEBUG] [Thread-190696] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:19:35.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:19:35.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:19:35.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:19:35.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:19:35.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:19:35.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:19:10', tmtdew=21.25, humidity=23.96, cloud=0.0, wind=15.58, temperature=19.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:19:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:19:35.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:19:35.746 [DEBUG] [Thread-190699] [transport.py] [_log()] starting thread (client mode): 0xd07eb2e0
2025-11-24T13:19:35.746 [DEBUG] [Thread-190699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:19:35.761 [DEBUG] [Thread-190699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:19:35.761 [INFO] [Thread-190699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:19:35.769 [DEBUG] [Thread-190699] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:19:35.769 [DEBUG] [Thread-190699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:19:35.769 [DEBUG] [Thread-190699] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:19:35.769 [DEBUG] [Thread-190699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] client lang: <none>
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] server lang: <none>
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] kex follows: False
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:19:35.770 [DEBUG] [Thread-190699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:19:35.771 [DEBUG] [Thread-190699] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:19:35.771 [DEBUG] [Thread-190699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:19:35.771 [DEBUG] [Thread-190699] [transport.py] [_log()] Compression: none
2025-11-24T13:19:35.771 [DEBUG] [Thread-190699] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:19:35.826 [DEBUG] [Thread-190699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:19:35.826 [DEBUG] [Thread-190699] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:19:35.827 [DEBUG] [Thread-190699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:19:35.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:19:35.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:19:35.882 [DEBUG] [Thread-190699] [transport.py] [_log()] userauth is OK
2025-11-24T13:19:35.882 [DEBUG] [Thread-190699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:19:35.882 [DEBUG] [Thread-190699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:19:35.882 [DEBUG] [Thread-190699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:19:35.883 [DEBUG] [Thread-190699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:19:35.901 [INFO] [Thread-190699] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:19:35.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:19:35.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:19:36.740 [DEBUG] [Thread-190699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:19:36.741 [DEBUG] [Thread-190699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:19:36.789 [DEBUG] [Thread-190699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:19:36.789 [DEBUG] [Thread-190699] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:19:36.798 [DEBUG] [Thread-190699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:19:36.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:19:36.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-11-24T13:19:36.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-11-24T13:19:36.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:19:36.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:19:36.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:19:36.838 [DEBUG] [Thread-190699] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:19:39.468 [DEBUG] [Thread-190701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:19:54.520 [DEBUG] [Thread-190702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:19:58.960 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:19:58.961 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:19:59.138 [DEBUG] [Thread-190703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:20:06.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:20:06.860 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:20:06.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-11-24T13:20:07.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 19, 43), 21.9, 22.76, 0.0, 26.43, 20.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:20:07.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:19:43
2025-11-24T13:20:07.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:20:07.861 [DEBUG] [Thread-190704] [transport.py] [_log()] starting thread (client mode): 0xd31925c0
2025-11-24T13:20:07.861 [DEBUG] [Thread-190704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:20:07.881 [DEBUG] [Thread-190704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:20:07.881 [INFO] [Thread-190704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] client lang: <none>
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] server lang: <none>
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] kex follows: False
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] Compression: none
2025-11-24T13:20:07.884 [DEBUG] [Thread-190704] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:20:07.901 [DEBUG] [Thread-190704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:20:07.902 [DEBUG] [Thread-190704] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:20:07.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:20:07.903 [DEBUG] [Thread-190704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:20:07.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:20:07.907 [DEBUG] [Thread-190704] [transport.py] [_log()] userauth is OK
2025-11-24T13:20:07.907 [DEBUG] [Thread-190704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:20:07.907 [DEBUG] [Thread-190704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:20:07.907 [DEBUG] [Thread-190704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:20:07.907 [DEBUG] [Thread-190704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:20:07.929 [INFO] [Thread-190704] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:20:07.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:20:08.541 [DEBUG] [Thread-190704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:20:08.541 [DEBUG] [Thread-190704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:20:08.542 [DEBUG] [Thread-190704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:20:08.582 [DEBUG] [Thread-190704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:20:08.583 [DEBUG] [Thread-190704] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:20:08.585 [DEBUG] [Thread-190704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:20:08.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:20:08.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:20:08.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:20:08.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:20:08.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:20:08.607 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:20:08.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:20:08.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:20:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:20:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.471923 -999.00  +21.20  16.52     26   +1.40 1 1 1 1 1   888    0 19.94 16.79 ----- 16.5 16.5 174.9 22.1 27.9 -24.2 26.9 -24.3 27.7 -23.1 28.7 -25.7
2025-11-24T13:20:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:20:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:20:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.471923
2025-11-24T13:20:08.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:20:08.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:20:08.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:20:08.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:20:08.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:20:08.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:19:43', tmtdew=21.9, humidity=22.76, cloud=0.0, wind=26.43, temperature=20.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:19:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:20:08.611 [DEBUG] [Thread-190704] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:20:08.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:20:08.706 [DEBUG] [Thread-190707] [transport.py] [_log()] starting thread (client mode): 0xd07f8460
2025-11-24T13:20:08.706 [DEBUG] [Thread-190707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:20:08.721 [DEBUG] [Thread-190707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:20:08.721 [INFO] [Thread-190707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] client lang: <none>
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] server lang: <none>
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] kex follows: False
2025-11-24T13:20:08.729 [DEBUG] [Thread-190707] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:20:08.730 [DEBUG] [Thread-190707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:20:08.730 [DEBUG] [Thread-190707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:20:08.730 [DEBUG] [Thread-190707] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:20:08.730 [DEBUG] [Thread-190707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:20:08.730 [DEBUG] [Thread-190707] [transport.py] [_log()] Compression: none
2025-11-24T13:20:08.730 [DEBUG] [Thread-190707] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:20:08.788 [DEBUG] [Thread-190707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:20:08.788 [DEBUG] [Thread-190707] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:20:08.789 [DEBUG] [Thread-190707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:20:08.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:20:08.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:20:08.845 [DEBUG] [Thread-190707] [transport.py] [_log()] userauth is OK
2025-11-24T13:20:08.845 [DEBUG] [Thread-190707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:20:08.845 [DEBUG] [Thread-190707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:20:08.845 [DEBUG] [Thread-190707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:20:08.845 [DEBUG] [Thread-190707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:20:08.860 [INFO] [Thread-190707] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:20:08.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:20:08.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:20:09.549 [DEBUG] [Thread-190709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:20:09.690 [DEBUG] [Thread-190707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:20:09.690 [DEBUG] [Thread-190707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:20:09.738 [DEBUG] [Thread-190707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:20:09.738 [DEBUG] [Thread-190707] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:20:09.747 [DEBUG] [Thread-190707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:20:09.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:20:09.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-11-24T13:20:09.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-11-24T13:20:09.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:20:09.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:20:09.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:20:09.780 [DEBUG] [Thread-190707] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:20:24.590 [DEBUG] [Thread-190710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:20:39.626 [DEBUG] [Thread-190711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:20:39.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:20:39.802 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:20:39.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-11-24T13:20:40.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 20, 15), 21.96, 22.68, 0.0, 29.33, 20.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:20:40.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:20:15
2025-11-24T13:20:40.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:20:40.935 [DEBUG] [Thread-190712] [transport.py] [_log()] starting thread (client mode): 0xd07f9360
2025-11-24T13:20:40.935 [DEBUG] [Thread-190712] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:20:40.953 [DEBUG] [Thread-190712] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:20:40.953 [INFO] [Thread-190712] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:20:40.956 [DEBUG] [Thread-190712] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:20:40.956 [DEBUG] [Thread-190712] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:20:40.956 [DEBUG] [Thread-190712] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] client lang: <none>
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] server lang: <none>
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] kex follows: False
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] Compression: none
2025-11-24T13:20:40.957 [DEBUG] [Thread-190712] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:20:40.972 [DEBUG] [Thread-190712] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:20:40.972 [DEBUG] [Thread-190712] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:20:40.972 [DEBUG] [Thread-190712] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:20:40.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:20:40.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:20:40.972 [DEBUG] [Thread-190712] [transport.py] [_log()] userauth is OK
2025-11-24T13:20:40.973 [DEBUG] [Thread-190712] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:20:40.973 [DEBUG] [Thread-190712] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:20:40.973 [DEBUG] [Thread-190712] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:20:40.973 [DEBUG] [Thread-190712] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:20:40.981 [INFO] [Thread-190712] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:20:40.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:20:41.625 [DEBUG] [Thread-190712] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:20:41.625 [DEBUG] [Thread-190712] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:20:41.625 [DEBUG] [Thread-190712] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:20:41.666 [DEBUG] [Thread-190712] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:20:41.666 [DEBUG] [Thread-190712] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:20:41.668 [DEBUG] [Thread-190712] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:20:41.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:20:41.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:20:41.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:20:41.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:20:41.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:20:41.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:20:41.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:20:41.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:20:41.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:20:41.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.472270 -999.00  +21.50  29.98     25   +1.00 1 1 1 1 1   888    0 20.01 17.74 ----- 30.0 30.0 154.2 38.0 27.9 -25.9 26.9 -28.8 27.6 -24.7 28.7 -27.3
2025-11-24T13:20:41.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:20:41.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:20:41.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.472270
2025-11-24T13:20:41.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:20:41.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:20:41.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:20:41.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:20:41.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:20:41.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:20:15', tmtdew=21.96, humidity=22.68, cloud=0.0, wind=29.33, temperature=20.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:20:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:20:41.689 [DEBUG] [Thread-190712] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:20:41.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:20:41.776 [DEBUG] [Thread-190715] [transport.py] [_log()] starting thread (client mode): 0xd07a95d0
2025-11-24T13:20:41.776 [DEBUG] [Thread-190715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:20:41.791 [DEBUG] [Thread-190715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:20:41.791 [INFO] [Thread-190715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] client lang: <none>
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] server lang: <none>
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] kex follows: False
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:20:41.798 [DEBUG] [Thread-190715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:20:41.799 [DEBUG] [Thread-190715] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:20:41.799 [DEBUG] [Thread-190715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:20:41.799 [DEBUG] [Thread-190715] [transport.py] [_log()] Compression: none
2025-11-24T13:20:41.799 [DEBUG] [Thread-190715] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:20:41.860 [DEBUG] [Thread-190715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:20:41.860 [DEBUG] [Thread-190715] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:20:41.860 [DEBUG] [Thread-190715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:20:41.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:20:41.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:20:41.917 [DEBUG] [Thread-190715] [transport.py] [_log()] userauth is OK
2025-11-24T13:20:41.917 [DEBUG] [Thread-190715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:20:41.917 [DEBUG] [Thread-190715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:20:41.917 [DEBUG] [Thread-190715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:20:41.917 [DEBUG] [Thread-190715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:20:41.931 [INFO] [Thread-190715] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:20:41.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:20:41.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:20:42.761 [DEBUG] [Thread-190715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:20:42.761 [DEBUG] [Thread-190715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:20:42.811 [DEBUG] [Thread-190715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:20:42.811 [DEBUG] [Thread-190715] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:20:42.820 [DEBUG] [Thread-190715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:20:42.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:20:42.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:20:42.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-11-24T13:20:42.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:20:42.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:20:42.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:20:42.856 [DEBUG] [Thread-190715] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:20:54.665 [DEBUG] [Thread-190717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:20:59.104 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:20:59.105 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:20:59.475 [DEBUG] [Thread-190718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:21:09.724 [DEBUG] [Thread-190719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:21:12.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:21:12.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:21:12.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-11-24T13:21:13.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 20, 48), 23.35, 20.67, 0.0, 30.33, 21.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:21:13.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:20:48
2025-11-24T13:21:13.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:21:13.929 [DEBUG] [Thread-190720] [transport.py] [_log()] starting thread (client mode): 0xd07f8c40
2025-11-24T13:21:13.929 [DEBUG] [Thread-190720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:21:13.949 [DEBUG] [Thread-190720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:21:13.949 [INFO] [Thread-190720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:21:13.952 [DEBUG] [Thread-190720] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:21:13.952 [DEBUG] [Thread-190720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:21:13.952 [DEBUG] [Thread-190720] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:21:13.952 [DEBUG] [Thread-190720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:21:13.952 [DEBUG] [Thread-190720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:21:13.952 [DEBUG] [Thread-190720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:21:13.952 [DEBUG] [Thread-190720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:21:13.952 [DEBUG] [Thread-190720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:21:13.952 [DEBUG] [Thread-190720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:21:13.952 [DEBUG] [Thread-190720] [transport.py] [_log()] client lang: <none>
2025-11-24T13:21:13.953 [DEBUG] [Thread-190720] [transport.py] [_log()] server lang: <none>
2025-11-24T13:21:13.953 [DEBUG] [Thread-190720] [transport.py] [_log()] kex follows: False
2025-11-24T13:21:13.953 [DEBUG] [Thread-190720] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:21:13.953 [DEBUG] [Thread-190720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:21:13.953 [DEBUG] [Thread-190720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:21:13.953 [DEBUG] [Thread-190720] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:21:13.953 [DEBUG] [Thread-190720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:21:13.953 [DEBUG] [Thread-190720] [transport.py] [_log()] Compression: none
2025-11-24T13:21:13.953 [DEBUG] [Thread-190720] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:21:13.972 [DEBUG] [Thread-190720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:21:13.973 [DEBUG] [Thread-190720] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:21:13.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:21:13.974 [DEBUG] [Thread-190720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:21:13.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:21:13.976 [DEBUG] [Thread-190720] [transport.py] [_log()] userauth is OK
2025-11-24T13:21:13.976 [DEBUG] [Thread-190720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:21:13.977 [DEBUG] [Thread-190720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:21:13.977 [DEBUG] [Thread-190720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:21:13.977 [DEBUG] [Thread-190720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:21:14.000 [INFO] [Thread-190720] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:21:14.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:21:14.676 [DEBUG] [Thread-190720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:21:14.676 [DEBUG] [Thread-190720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:21:14.676 [DEBUG] [Thread-190720] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:21:14.717 [DEBUG] [Thread-190720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:21:14.717 [DEBUG] [Thread-190720] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:21:14.719 [DEBUG] [Thread-190720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:21:14.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:21:14.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:21:14.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:21:14.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:21:14.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:21:14.748 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:21:14.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:21:14.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.472617 -999.00  +21.40  18.39     26   +1.10 1 1 1 1 1   888    0 19.98 19.10 ----- 18.4 18.4 151.4 30.8 27.7 -27.2 26.9 -26.0 27.6 -25.6 28.7 -25.7
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.472617
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:21:14.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:20:48', tmtdew=23.35, humidity=20.67, cloud=0.0, wind=30.33, temperature=21.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:20:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:21:14.750 [DEBUG] [Thread-190720] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:21:14.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:21:14.834 [DEBUG] [Thread-190723] [transport.py] [_log()] starting thread (client mode): 0xd07ea830
2025-11-24T13:21:14.834 [DEBUG] [Thread-190723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:21:14.848 [DEBUG] [Thread-190723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:21:14.848 [INFO] [Thread-190723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] client lang: <none>
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] server lang: <none>
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] kex follows: False
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] Compression: none
2025-11-24T13:21:14.856 [DEBUG] [Thread-190723] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:21:14.912 [DEBUG] [Thread-190723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:21:14.912 [DEBUG] [Thread-190723] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:21:14.912 [DEBUG] [Thread-190723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:21:14.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:21:14.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:21:14.969 [DEBUG] [Thread-190723] [transport.py] [_log()] userauth is OK
2025-11-24T13:21:14.969 [DEBUG] [Thread-190723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:21:14.969 [DEBUG] [Thread-190723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:21:14.969 [DEBUG] [Thread-190723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:21:14.969 [DEBUG] [Thread-190723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:21:14.982 [INFO] [Thread-190723] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:21:14.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:21:14.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:21:15.804 [DEBUG] [Thread-190723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:21:15.805 [DEBUG] [Thread-190723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:21:15.853 [DEBUG] [Thread-190723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:21:15.853 [DEBUG] [Thread-190723] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:21:15.863 [DEBUG] [Thread-190723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:21:15.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:21:15.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:21:15.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:21:15.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:21:15.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:21:15.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:21:15.907 [DEBUG] [Thread-190723] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:21:24.762 [DEBUG] [Thread-190725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:21:39.805 [DEBUG] [Thread-190726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:21:45.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:21:45.925 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:21: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-11-24T13:21:46.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 21, 20), 23.61, 20.32, 0.0, 28.41, 21.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:21:46.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:21:20
2025-11-24T13:21:46.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:21:47.000 [DEBUG] [Thread-190727] [transport.py] [_log()] starting thread (client mode): 0xd07eb340
2025-11-24T13:21:47.000 [DEBUG] [Thread-190727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:21:47.022 [DEBUG] [Thread-190727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:21:47.022 [INFO] [Thread-190727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:21:47.025 [DEBUG] [Thread-190727] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:21:47.025 [DEBUG] [Thread-190727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:21:47.025 [DEBUG] [Thread-190727] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] client lang: <none>
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] server lang: <none>
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] kex follows: False
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:21:47.026 [DEBUG] [Thread-190727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:21:47.027 [DEBUG] [Thread-190727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:21:47.027 [DEBUG] [Thread-190727] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:21:47.027 [DEBUG] [Thread-190727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:21:47.027 [DEBUG] [Thread-190727] [transport.py] [_log()] Compression: none
2025-11-24T13:21:47.027 [DEBUG] [Thread-190727] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:21:47.047 [DEBUG] [Thread-190727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:21:47.048 [DEBUG] [Thread-190727] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:21:47.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:21:47.049 [DEBUG] [Thread-190727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:21:47.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:21:47.051 [DEBUG] [Thread-190727] [transport.py] [_log()] userauth is OK
2025-11-24T13:21:47.052 [DEBUG] [Thread-190727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:21:47.052 [DEBUG] [Thread-190727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:21:47.052 [DEBUG] [Thread-190727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:21:47.052 [DEBUG] [Thread-190727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:21:47.089 [INFO] [Thread-190727] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:21:47.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:21:47.726 [DEBUG] [Thread-190727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:21:47.726 [DEBUG] [Thread-190727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:21:47.726 [DEBUG] [Thread-190727] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:21:47.767 [DEBUG] [Thread-190727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:21:47.767 [DEBUG] [Thread-190727] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:21:47.769 [DEBUG] [Thread-190727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:21:47.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:21:47.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:21:47.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:21:47.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:21:47.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:21:47.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:21:47.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:21:47.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:21:47.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:21:47.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.472965 -999.00  +21.40  28.35     25   +1.00 1 1 1 1 1   888    0 20.49 19.91 ----- 28.4 28.4 153.2 33.8 27.8 -27.4 27.0 -26.7 27.6 -26.0 28.5 -27.5
2025-11-24T13:21:47.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:21:47.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:21:47.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.472965
2025-11-24T13:21:47.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:21:47.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:21:47.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:21:47.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:21:47.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:21:47.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:21:20', tmtdew=23.61, humidity=20.32, cloud=0.0, wind=28.41, temperature=21.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:21:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:21:47.789 [DEBUG] [Thread-190727] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:21:47.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:21:47.873 [DEBUG] [Thread-190730] [transport.py] [_log()] starting thread (client mode): 0xd07f9d20
2025-11-24T13:21:47.873 [DEBUG] [Thread-190730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:21:47.890 [DEBUG] [Thread-190730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:21:47.890 [INFO] [Thread-190730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:21:47.897 [DEBUG] [Thread-190730] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:21:47.897 [DEBUG] [Thread-190730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:21:47.897 [DEBUG] [Thread-190730] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:21:47.897 [DEBUG] [Thread-190730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:21:47.897 [DEBUG] [Thread-190730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:21:47.897 [DEBUG] [Thread-190730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:21:47.897 [DEBUG] [Thread-190730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:21:47.897 [DEBUG] [Thread-190730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] client lang: <none>
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] server lang: <none>
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] kex follows: False
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] Compression: none
2025-11-24T13:21:47.898 [DEBUG] [Thread-190730] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:21:47.956 [DEBUG] [Thread-190730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:21:47.956 [DEBUG] [Thread-190730] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:21:47.956 [DEBUG] [Thread-190730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:21:47.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:21:47.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:21:48.017 [DEBUG] [Thread-190730] [transport.py] [_log()] userauth is OK
2025-11-24T13:21:48.017 [DEBUG] [Thread-190730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:21:48.017 [DEBUG] [Thread-190730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:21:48.017 [DEBUG] [Thread-190730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:21:48.017 [DEBUG] [Thread-190730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:21:48.031 [INFO] [Thread-190730] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:21:48.031 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:21:48.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:21:48.888 [DEBUG] [Thread-190730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:21:48.888 [DEBUG] [Thread-190730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:21:48.937 [DEBUG] [Thread-190730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:21:48.937 [DEBUG] [Thread-190730] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:21:48.946 [DEBUG] [Thread-190730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:21:48.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:21:48.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-11-24T13:21:48.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-11-24T13:21:48.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:21:48.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:21:48.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:21:48.982 [DEBUG] [Thread-190730] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:21:54.836 [DEBUG] [Thread-190732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:21:59.246 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:21:59.246 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:21:59.671 [DEBUG] [Thread-190733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:22:09.872 [DEBUG] [Thread-190734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:22:18.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:22:18.984 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:22:18.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T13:22:19.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 21, 52), 23.66, 20.2, 0.0, 33.96, 21.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:22:19.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:21:52
2025-11-24T13:22:19.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:22:20.074 [DEBUG] [Thread-190735] [transport.py] [_log()] starting thread (client mode): 0xd07eb070
2025-11-24T13:22:20.074 [DEBUG] [Thread-190735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:22:20.093 [DEBUG] [Thread-190735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:22:20.094 [INFO] [Thread-190735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:22:20.096 [DEBUG] [Thread-190735] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:22:20.096 [DEBUG] [Thread-190735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] client lang: <none>
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] server lang: <none>
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] kex follows: False
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] Compression: none
2025-11-24T13:22:20.097 [DEBUG] [Thread-190735] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:22:20.116 [DEBUG] [Thread-190735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:22:20.118 [DEBUG] [Thread-190735] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:22:20.118 [DEBUG] [Thread-190735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:22:20.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:22:20.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:22:20.122 [DEBUG] [Thread-190735] [transport.py] [_log()] userauth is OK
2025-11-24T13:22:20.122 [DEBUG] [Thread-190735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:22:20.122 [DEBUG] [Thread-190735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:22:20.122 [DEBUG] [Thread-190735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:22:20.123 [DEBUG] [Thread-190735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:22:20.141 [INFO] [Thread-190735] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:22:20.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:22:20.869 [DEBUG] [Thread-190735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:22:20.869 [DEBUG] [Thread-190735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:22:20.877 [DEBUG] [Thread-190735] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:22:20.910 [DEBUG] [Thread-190735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:22:20.910 [DEBUG] [Thread-190735] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:22:20.913 [DEBUG] [Thread-190735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:22:20.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:22:20.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:22:20.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:22:20.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:22:20.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:22:20.931 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:22:20.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:22:20.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:22:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:22:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.473312 -999.00  +21.30  25.75     26   +1.00 1 1 1 1 1   888    0 20.16 17.30 ----- 25.8 25.8 166.0 38.0 27.6 -28.7 26.9 -26.2 27.4 -25.3 28.4 -28.4
2025-11-24T13:22:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:22:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:22:20.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.473312
2025-11-24T13:22:20.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:22:20.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:22:20.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:22:20.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:22:20.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:22:20.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:21:52', tmtdew=23.66, humidity=20.2, cloud=0.0, wind=33.96, temperature=21.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:21:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:22:20.934 [DEBUG] [Thread-190735] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:22:21.007 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:22:21.019 [DEBUG] [Thread-190738] [transport.py] [_log()] starting thread (client mode): 0xd31b1180
2025-11-24T13:22:21.019 [DEBUG] [Thread-190738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:22:21.033 [DEBUG] [Thread-190738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:22:21.034 [INFO] [Thread-190738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] client lang: <none>
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] server lang: <none>
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] kex follows: False
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:22:21.041 [DEBUG] [Thread-190738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:22:21.042 [DEBUG] [Thread-190738] [transport.py] [_log()] Compression: none
2025-11-24T13:22:21.042 [DEBUG] [Thread-190738] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:22:21.100 [DEBUG] [Thread-190738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:22:21.100 [DEBUG] [Thread-190738] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:22:21.100 [DEBUG] [Thread-190738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:22:21.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:22:21.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:22:21.157 [DEBUG] [Thread-190738] [transport.py] [_log()] userauth is OK
2025-11-24T13:22:21.157 [DEBUG] [Thread-190738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:22:21.157 [DEBUG] [Thread-190738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:22:21.157 [DEBUG] [Thread-190738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:22:21.157 [DEBUG] [Thread-190738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:22:21.171 [INFO] [Thread-190738] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:22:21.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:22:21.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:22:22.014 [DEBUG] [Thread-190738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:22:22.015 [DEBUG] [Thread-190738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:22:22.066 [DEBUG] [Thread-190738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:22:22.066 [DEBUG] [Thread-190738] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:22:22.076 [DEBUG] [Thread-190738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:22:22.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:22:22.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-11-24T13:22:22.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:22:22.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:22:22.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:22:22.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:22:22.122 [DEBUG] [Thread-190738] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:22:24.908 [DEBUG] [Thread-190740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:22:39.954 [DEBUG] [Thread-190741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:22:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:22:52.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:22:52.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-11-24T13:22:52.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 22, 25), 23.79, 20.02, 0.0, 28.78, 21.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:22:52.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:22:25
2025-11-24T13:22:53.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:22:53.237 [DEBUG] [Thread-190742] [transport.py] [_log()] starting thread (client mode): 0xd07f98a0
2025-11-24T13:22:53.238 [DEBUG] [Thread-190742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:22:53.258 [DEBUG] [Thread-190742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:22:53.258 [INFO] [Thread-190742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] client lang: <none>
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] server lang: <none>
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] kex follows: False
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] Compression: none
2025-11-24T13:22:53.261 [DEBUG] [Thread-190742] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:22:53.278 [DEBUG] [Thread-190742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:22:53.279 [DEBUG] [Thread-190742] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:22:53.280 [DEBUG] [Thread-190742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:22:53.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:22:53.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:22:53.281 [DEBUG] [Thread-190742] [transport.py] [_log()] userauth is OK
2025-11-24T13:22:53.282 [DEBUG] [Thread-190742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:22:53.282 [DEBUG] [Thread-190742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:22:53.282 [DEBUG] [Thread-190742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:22:53.282 [DEBUG] [Thread-190742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:22:53.302 [INFO] [Thread-190742] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:22:53.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:22:53.943 [DEBUG] [Thread-190742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:22:53.952 [DEBUG] [Thread-190742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:22:53.952 [DEBUG] [Thread-190742] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:22:53.984 [DEBUG] [Thread-190742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:22:53.984 [DEBUG] [Thread-190742] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:22:53.987 [DEBUG] [Thread-190742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:22:53.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:22:53.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:22:54.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:22:54.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:22:54.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:22:54.011 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:22:54.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:22:54.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:22:54.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:22:54.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.473659 -999.00  +21.20  25.82     26   +0.90 1 1 1 1 1   888    0 20.16 12.29 ----- 25.8 25.8 166.4 33.5 27.4 -29.1 26.2 -33.8 27.2 -26.3 28.3 -26.9
2025-11-24T13:22:54.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:22:54.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:22:54.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.473659
2025-11-24T13:22:54.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:22:54.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:22:54.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:22:54.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:22:54.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:22:54.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:22:25', tmtdew=23.79, humidity=20.02, cloud=0.0, wind=28.78, temperature=21.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:22:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:22:54.014 [DEBUG] [Thread-190742] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:22:54.098 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:22:54.110 [DEBUG] [Thread-190745] [transport.py] [_log()] starting thread (client mode): 0xd07e9ed0
2025-11-24T13:22:54.110 [DEBUG] [Thread-190745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:22:54.125 [DEBUG] [Thread-190745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:22:54.125 [INFO] [Thread-190745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] client lang: <none>
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] server lang: <none>
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] kex follows: False
2025-11-24T13:22:54.133 [DEBUG] [Thread-190745] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:22:54.134 [DEBUG] [Thread-190745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:22:54.134 [DEBUG] [Thread-190745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:22:54.134 [DEBUG] [Thread-190745] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:22:54.134 [DEBUG] [Thread-190745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:22:54.134 [DEBUG] [Thread-190745] [transport.py] [_log()] Compression: none
2025-11-24T13:22:54.134 [DEBUG] [Thread-190745] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:22:54.189 [DEBUG] [Thread-190745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:22:54.189 [DEBUG] [Thread-190745] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:22:54.191 [DEBUG] [Thread-190745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:22:54.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:22:54.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:22:54.252 [DEBUG] [Thread-190745] [transport.py] [_log()] userauth is OK
2025-11-24T13:22:54.252 [DEBUG] [Thread-190745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:22:54.253 [DEBUG] [Thread-190745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:22:54.253 [DEBUG] [Thread-190745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:22:54.253 [DEBUG] [Thread-190745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:22:54.272 [INFO] [Thread-190745] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:22:54.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:22:54.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:22:54.990 [DEBUG] [Thread-190747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:22:55.076 [DEBUG] [Thread-190745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:22:55.076 [DEBUG] [Thread-190745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:22:55.125 [DEBUG] [Thread-190745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:22:55.125 [DEBUG] [Thread-190745] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:22:55.134 [DEBUG] [Thread-190745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:22:55.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:22:55.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-11-24T13:22:55.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-11-24T13:22:55.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:22:55.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:22:55.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:22:55.171 [DEBUG] [Thread-190745] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:22:59.384 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:22:59.385 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:22:59.867 [DEBUG] [Thread-190748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:23:10.040 [DEBUG] [Thread-190749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:23:25.079 [DEBUG] [Thread-190750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:23:25.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:23:25.193 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:23:25.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-11-24T13:23:25.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 22, 57), 23.73, 20.42, 0.0, 32.5, 21.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:23:25.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:22:57
2025-11-24T13:23:26.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:23:26.250 [DEBUG] [Thread-190751] [transport.py] [_log()] starting thread (client mode): 0xd07f9900
2025-11-24T13:23:26.250 [DEBUG] [Thread-190751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:23:26.261 [DEBUG] [Thread-190751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:23:26.261 [INFO] [Thread-190751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:23:26.263 [DEBUG] [Thread-190751] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:23:26.263 [DEBUG] [Thread-190751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:23:26.263 [DEBUG] [Thread-190751] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:23:26.263 [DEBUG] [Thread-190751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:23:26.263 [DEBUG] [Thread-190751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:23:26.263 [DEBUG] [Thread-190751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] client lang: <none>
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] server lang: <none>
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] kex follows: False
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] Compression: none
2025-11-24T13:23:26.264 [DEBUG] [Thread-190751] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:23:26.278 [DEBUG] [Thread-190751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:23:26.279 [DEBUG] [Thread-190751] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:23:26.280 [DEBUG] [Thread-190751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:23:26.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:23:26.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:23:26.281 [DEBUG] [Thread-190751] [transport.py] [_log()] userauth is OK
2025-11-24T13:23:26.282 [DEBUG] [Thread-190751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:23:26.282 [DEBUG] [Thread-190751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:23:26.282 [DEBUG] [Thread-190751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:23:26.282 [DEBUG] [Thread-190751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:23:26.301 [INFO] [Thread-190751] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:23:26.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:23:26.957 [DEBUG] [Thread-190751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:23:26.958 [DEBUG] [Thread-190751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:23:26.958 [DEBUG] [Thread-190751] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:23:26.998 [DEBUG] [Thread-190751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:23:26.998 [DEBUG] [Thread-190751] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:23:27.000 [DEBUG] [Thread-190751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:23:27.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:23:27.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:23:27.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:23:27.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:23:27.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:23:27.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:23:27.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:23:27.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:23:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:23:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.474353 -999.00  +20.70  24.78     25   +0.50 1 1 1 1 1   888    0 19.66 6.47 ----- 24.8 24.8 159.2 38.2 27.4 -26.8 26.4 -25.5 27.3 -25.5 28.1 -27.7
2025-11-24T13:23:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:23:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:23:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.474353
2025-11-24T13:23:27.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:23:27.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:23:27.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:23:27.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:23:27.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:23:27.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:22:57', tmtdew=23.73, humidity=20.42, cloud=0.0, wind=32.5, temperature=21.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:23:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:23:27.030 [DEBUG] [Thread-190751] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:23:27.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:23:27.114 [DEBUG] [Thread-190754] [transport.py] [_log()] starting thread (client mode): 0xd07a96f0
2025-11-24T13:23:27.114 [DEBUG] [Thread-190754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:23:27.129 [DEBUG] [Thread-190754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:23:27.129 [INFO] [Thread-190754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:23:27.136 [DEBUG] [Thread-190754] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:23:27.136 [DEBUG] [Thread-190754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:23:27.136 [DEBUG] [Thread-190754] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:23:27.136 [DEBUG] [Thread-190754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:23:27.136 [DEBUG] [Thread-190754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:23:27.136 [DEBUG] [Thread-190754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:23:27.136 [DEBUG] [Thread-190754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:23:27.136 [DEBUG] [Thread-190754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:23:27.136 [DEBUG] [Thread-190754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:23:27.136 [DEBUG] [Thread-190754] [transport.py] [_log()] client lang: <none>
2025-11-24T13:23:27.137 [DEBUG] [Thread-190754] [transport.py] [_log()] server lang: <none>
2025-11-24T13:23:27.137 [DEBUG] [Thread-190754] [transport.py] [_log()] kex follows: False
2025-11-24T13:23:27.137 [DEBUG] [Thread-190754] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:23:27.137 [DEBUG] [Thread-190754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:23:27.137 [DEBUG] [Thread-190754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:23:27.137 [DEBUG] [Thread-190754] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:23:27.137 [DEBUG] [Thread-190754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:23:27.137 [DEBUG] [Thread-190754] [transport.py] [_log()] Compression: none
2025-11-24T13:23:27.137 [DEBUG] [Thread-190754] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:23:27.196 [DEBUG] [Thread-190754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:23:27.196 [DEBUG] [Thread-190754] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:23:27.196 [DEBUG] [Thread-190754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:23:27.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:23:27.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:23:27.253 [DEBUG] [Thread-190754] [transport.py] [_log()] userauth is OK
2025-11-24T13:23:27.253 [DEBUG] [Thread-190754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:23:27.253 [DEBUG] [Thread-190754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:23:27.253 [DEBUG] [Thread-190754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:23:27.253 [DEBUG] [Thread-190754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:23:27.267 [INFO] [Thread-190754] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:23:27.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:23:27.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:23:28.130 [DEBUG] [Thread-190754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:23:28.130 [DEBUG] [Thread-190754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:23:28.178 [DEBUG] [Thread-190754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:23:28.178 [DEBUG] [Thread-190754] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:23:28.187 [DEBUG] [Thread-190754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:23:28.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:23:28.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-11-24T13:23:28.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-11-24T13:23:28.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:23:28.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:23:28.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:23:28.223 [DEBUG] [Thread-190754] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:23:40.115 [DEBUG] [Thread-190756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:23:55.167 [DEBUG] [Thread-190757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:23:58.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:23:58.245 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:23:58.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T13:23:58.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 23, 30), 23.82, 20.32, 0.0, 33.66, 21.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:23:58.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:23:30
2025-11-24T13:23:59.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:23:59.208 [DEBUG] [Thread-190758] [transport.py] [_log()] starting thread (client mode): 0xd07f9db0
2025-11-24T13:23:59.209 [DEBUG] [Thread-190758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:23:59.228 [DEBUG] [Thread-190758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:23:59.229 [INFO] [Thread-190758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] client lang: <none>
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] server lang: <none>
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] kex follows: False
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] Compression: none
2025-11-24T13:23:59.232 [DEBUG] [Thread-190758] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:23:59.250 [DEBUG] [Thread-190758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:23:59.251 [DEBUG] [Thread-190758] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:23:59.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:23:59.252 [DEBUG] [Thread-190758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:23:59.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:23:59.255 [DEBUG] [Thread-190758] [transport.py] [_log()] userauth is OK
2025-11-24T13:23:59.255 [DEBUG] [Thread-190758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:23:59.255 [DEBUG] [Thread-190758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:23:59.255 [DEBUG] [Thread-190758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:23:59.255 [DEBUG] [Thread-190758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:23:59.275 [INFO] [Thread-190758] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:23:59.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:23:59.525 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:23:59.526 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:23:59.915 [DEBUG] [Thread-190758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:23:59.916 [DEBUG] [Thread-190758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:23:59.916 [DEBUG] [Thread-190758] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:23:59.946 [DEBUG] [Thread-190760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:23:59.956 [DEBUG] [Thread-190758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:23:59.956 [DEBUG] [Thread-190758] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:23:59.958 [DEBUG] [Thread-190758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:23:59.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:23:59.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:23:59.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:23:59.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:23:59.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:23:59.980 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:23:59.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:23:59.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:23:59.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:23:59.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.474701 -999.00  +20.70  20.95     26   +0.70 1 1 1 1 1   888    0 19.77 2.25 ----- 20.9 20.9 157.6 31.3 27.3 -25.8 26.4 -25.9 27.1 -25.7 28.1 -27.9
2025-11-24T13:23:59.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:23:59.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:23:59.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.474701
2025-11-24T13:23:59.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:23:59.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:23:59.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:23:59.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:23:59.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:23:59.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:23:30', tmtdew=23.82, humidity=20.32, cloud=0.0, wind=33.66, temperature=21.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:23:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:23:59.983 [DEBUG] [Thread-190758] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:24:00.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:24:00.077 [DEBUG] [Thread-190762] [transport.py] [_log()] starting thread (client mode): 0xd31b2050
2025-11-24T13:24:00.077 [DEBUG] [Thread-190762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:24:00.092 [DEBUG] [Thread-190762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:24:00.092 [INFO] [Thread-190762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] client lang: <none>
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] server lang: <none>
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] kex follows: False
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] Compression: none
2025-11-24T13:24:00.100 [DEBUG] [Thread-190762] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:24:00.157 [DEBUG] [Thread-190762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:24:00.157 [DEBUG] [Thread-190762] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:24:00.157 [DEBUG] [Thread-190762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:24:00.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:24:00.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:24:00.213 [DEBUG] [Thread-190762] [transport.py] [_log()] userauth is OK
2025-11-24T13:24:00.213 [DEBUG] [Thread-190762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:24:00.213 [DEBUG] [Thread-190762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:24:00.214 [DEBUG] [Thread-190762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:24:00.214 [DEBUG] [Thread-190762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:24:00.232 [INFO] [Thread-190762] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:24:00.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:24:00.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:24:01.068 [DEBUG] [Thread-190762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:24:01.068 [DEBUG] [Thread-190762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:24:01.116 [DEBUG] [Thread-190762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:24:01.116 [DEBUG] [Thread-190762] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:24:01.124 [DEBUG] [Thread-190762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:24:01.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:24:01.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-11-24T13:24:01.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-11-24T13:24:01.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:24:01.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:24:01.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:24:01.154 [DEBUG] [Thread-190762] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:24:10.192 [DEBUG] [Thread-190764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:24:25.237 [DEBUG] [Thread-190765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:24:31.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:24:31.176 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:24:31.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-11-24T13:24:32.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 24, 2), 23.8, 20.29, 0.0, 27.58, 21.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:24:32.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:24:02
2025-11-24T13:24:32.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:24:32.332 [DEBUG] [Thread-190766] [transport.py] [_log()] starting thread (client mode): 0xd07aa7d0
2025-11-24T13:24:32.332 [DEBUG] [Thread-190766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:24:32.358 [DEBUG] [Thread-190766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:24:32.359 [INFO] [Thread-190766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] client lang: <none>
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] server lang: <none>
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] kex follows: False
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:24:32.360 [DEBUG] [Thread-190766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:24:32.361 [DEBUG] [Thread-190766] [transport.py] [_log()] Compression: none
2025-11-24T13:24:32.361 [DEBUG] [Thread-190766] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:24:32.368 [DEBUG] [Thread-190766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:24:32.368 [DEBUG] [Thread-190766] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:24:32.368 [DEBUG] [Thread-190766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:24:32.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:24:32.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:24:32.369 [DEBUG] [Thread-190766] [transport.py] [_log()] userauth is OK
2025-11-24T13:24:32.369 [DEBUG] [Thread-190766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:24:32.369 [DEBUG] [Thread-190766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:24:32.369 [DEBUG] [Thread-190766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:24:32.369 [DEBUG] [Thread-190766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:24:32.378 [INFO] [Thread-190766] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:24:32.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:24:32.910 [DEBUG] [Thread-190766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:24:32.911 [DEBUG] [Thread-190766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:24:32.911 [DEBUG] [Thread-190766] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:24:32.951 [DEBUG] [Thread-190766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:24:32.951 [DEBUG] [Thread-190766] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:24:32.954 [DEBUG] [Thread-190766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:24:32.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:24:32.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:24:32.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:24:32.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:24:32.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:24:32.971 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:24:32.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:24:32.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:24:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:24:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.475048 -999.00  +20.40  20.35     26   +0.70 1 1 1 1 1   888    0 19.26 -3.02 ----- 20.4 20.4 156.8 33.1 27.2 -26.6 26.3 -26.7 27.1 -26.0 28.0 -28.9
2025-11-24T13:24:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:24:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:24:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.475048
2025-11-24T13:24:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:24:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:24:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:24:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:24:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:24:32.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:24:02', tmtdew=23.8, humidity=20.29, cloud=0.0, wind=27.58, temperature=21.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:24:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:24:32.972 [DEBUG] [Thread-190766] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:24:33.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:24:33.059 [DEBUG] [Thread-190769] [transport.py] [_log()] starting thread (client mode): 0xd07aa5c0
2025-11-24T13:24:33.059 [DEBUG] [Thread-190769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:24:33.074 [DEBUG] [Thread-190769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:24:33.074 [INFO] [Thread-190769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:24:33.081 [DEBUG] [Thread-190769] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:24:33.081 [DEBUG] [Thread-190769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:24:33.081 [DEBUG] [Thread-190769] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:24:33.081 [DEBUG] [Thread-190769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:24:33.081 [DEBUG] [Thread-190769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:24:33.081 [DEBUG] [Thread-190769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] client lang: <none>
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] server lang: <none>
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] kex follows: False
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] Compression: none
2025-11-24T13:24:33.082 [DEBUG] [Thread-190769] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:24:33.140 [DEBUG] [Thread-190769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:24:33.140 [DEBUG] [Thread-190769] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:24:33.140 [DEBUG] [Thread-190769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:24:33.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:24:33.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:24:33.204 [DEBUG] [Thread-190769] [transport.py] [_log()] userauth is OK
2025-11-24T13:24:33.204 [DEBUG] [Thread-190769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:24:33.204 [DEBUG] [Thread-190769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:24:33.205 [DEBUG] [Thread-190769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:24:33.205 [DEBUG] [Thread-190769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:24:33.219 [INFO] [Thread-190769] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:24:33.219 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:24:33.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:24:34.067 [DEBUG] [Thread-190769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:24:34.067 [DEBUG] [Thread-190769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:24:34.115 [DEBUG] [Thread-190769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:24:34.115 [DEBUG] [Thread-190769] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:24:34.123 [DEBUG] [Thread-190769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:24:34.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:24:34.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-11-24T13:24:34.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-11-24T13:24:34.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:24:34.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:24:34.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:24:34.155 [DEBUG] [Thread-190769] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:24:40.281 [DEBUG] [Thread-190771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:24:55.332 [DEBUG] [Thread-190772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:24:59.677 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:24:59.680 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:25:00.203 [DEBUG] [Thread-190773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:25:04.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:25:04.178 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:25:04.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-11-24T13:25:04.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 24, 35), 23.46, 20.64, 0.0, 28.55, 21.06, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:25:04.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:24:35
2025-11-24T13:25:05.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:25:05.307 [DEBUG] [Thread-190774] [transport.py] [_log()] starting thread (client mode): 0xd3153be0
2025-11-24T13:25:05.307 [DEBUG] [Thread-190774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:25:05.326 [DEBUG] [Thread-190774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:25:05.326 [INFO] [Thread-190774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:25:05.329 [DEBUG] [Thread-190774] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] client lang: <none>
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] server lang: <none>
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] kex follows: False
2025-11-24T13:25:05.330 [DEBUG] [Thread-190774] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:25:05.331 [DEBUG] [Thread-190774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:25:05.331 [DEBUG] [Thread-190774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:25:05.331 [DEBUG] [Thread-190774] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:25:05.331 [DEBUG] [Thread-190774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:25:05.331 [DEBUG] [Thread-190774] [transport.py] [_log()] Compression: none
2025-11-24T13:25:05.331 [DEBUG] [Thread-190774] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:25:05.354 [DEBUG] [Thread-190774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:25:05.356 [DEBUG] [Thread-190774] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:25:05.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:25:05.357 [DEBUG] [Thread-190774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:25:05.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:25:05.360 [DEBUG] [Thread-190774] [transport.py] [_log()] userauth is OK
2025-11-24T13:25:05.361 [DEBUG] [Thread-190774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:25:05.361 [DEBUG] [Thread-190774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:25:05.361 [DEBUG] [Thread-190774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:25:05.361 [DEBUG] [Thread-190774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:25:05.384 [INFO] [Thread-190774] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:25:05.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:25:10.361 [DEBUG] [Thread-190776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:25:13.264 [DEBUG] [Thread-190774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:25:13.264 [DEBUG] [Thread-190774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:25:13.264 [DEBUG] [Thread-190774] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:25:13.305 [DEBUG] [Thread-190774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:25:13.305 [DEBUG] [Thread-190774] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:25:13.307 [DEBUG] [Thread-190774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:25:13.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:25:13.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:25:13.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:25:13.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:25:13.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:25:13.401 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:25:13.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:25:13.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:25:13.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:25:13.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.475395 -999.00  +20.60  30.25     26   +0.70 1 1 2 1 1   888    0 19.70 -9.94 ----- 30.2 30.2 156.2 36.6 27.2 -26.6 26.2 -26.2 27.1 -24.8 27.9 -27.2
2025-11-24T13:25:13.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:25:13.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:25:13.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.475395
2025-11-24T13:25:13.408 [DEBUG] [Thread-190774] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:25:13.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:25:13.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:25:13.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:25:13.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:25:13.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:25:13.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:24:35', tmtdew=23.46, humidity=20.64, cloud=0.0, wind=28.55, temperature=21.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:24:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:25:13.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:25:13.504 [DEBUG] [Thread-190778] [transport.py] [_log()] starting thread (client mode): 0xd07ea5f0
2025-11-24T13:25:13.504 [DEBUG] [Thread-190778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:25:13.518 [DEBUG] [Thread-190778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:25:13.518 [INFO] [Thread-190778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] client lang: <none>
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] server lang: <none>
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] kex follows: False
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] Compression: none
2025-11-24T13:25:13.526 [DEBUG] [Thread-190778] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:25:13.584 [DEBUG] [Thread-190778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:25:13.584 [DEBUG] [Thread-190778] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:25:13.584 [DEBUG] [Thread-190778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:25:13.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:25:13.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:25:13.641 [DEBUG] [Thread-190778] [transport.py] [_log()] userauth is OK
2025-11-24T13:25:13.641 [DEBUG] [Thread-190778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:25:13.641 [DEBUG] [Thread-190778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:25:13.641 [DEBUG] [Thread-190778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:25:13.641 [DEBUG] [Thread-190778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:25:13.655 [INFO] [Thread-190778] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:25:13.655 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:25:13.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:25:14.550 [DEBUG] [Thread-190778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:25:14.550 [DEBUG] [Thread-190778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:25:14.598 [DEBUG] [Thread-190778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:25:14.598 [DEBUG] [Thread-190778] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:25:14.606 [DEBUG] [Thread-190778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:25:14.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:25:14.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-11-24T13:25:14.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:25:14.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:25:14.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:25:14.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:25:14.640 [DEBUG] [Thread-190778] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:25:25.394 [DEBUG] [Thread-190780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:25:40.476 [DEBUG] [Thread-190781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:25:44.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:25:44.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:25:44.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-11-24T13:25:45.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 25, 40), 23.91, 19.92, 0.0, 30.56, 21.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:25:45.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:25:40
2025-11-24T13:25:45.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:25:45.778 [DEBUG] [Thread-190782] [transport.py] [_log()] starting thread (client mode): 0xd0710ac0
2025-11-24T13:25:45.778 [DEBUG] [Thread-190782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:25:45.798 [DEBUG] [Thread-190782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:25:45.798 [INFO] [Thread-190782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] client lang: <none>
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] server lang: <none>
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] kex follows: False
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] Compression: none
2025-11-24T13:25:45.801 [DEBUG] [Thread-190782] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:25:45.817 [DEBUG] [Thread-190782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:25:45.817 [DEBUG] [Thread-190782] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:25:45.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:25:45.817 [DEBUG] [Thread-190782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:25:45.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:25:45.818 [DEBUG] [Thread-190782] [transport.py] [_log()] userauth is OK
2025-11-24T13:25:45.818 [DEBUG] [Thread-190782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:25:45.818 [DEBUG] [Thread-190782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:25:45.818 [DEBUG] [Thread-190782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:25:45.818 [DEBUG] [Thread-190782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:25:45.829 [INFO] [Thread-190782] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:25:45.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:25:46.447 [DEBUG] [Thread-190782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:25:46.447 [DEBUG] [Thread-190782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:25:46.447 [DEBUG] [Thread-190782] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:25:46.488 [DEBUG] [Thread-190782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:25:46.488 [DEBUG] [Thread-190782] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:25:46.490 [DEBUG] [Thread-190782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:25:46.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:25:46.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:25:46.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:25:46.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:25:46.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:25:46.507 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:25:46.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.475742 -999.00  +20.90  24.58     26   +0.90 1 1 1 1 1   888    0 19.18 -16.48 ----- 24.6 24.6 167.8 30.3 27.1 -26.0 26.3 -24.8 27.1 -23.9 28.2 -25.7
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.475742
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:25:46.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:25:46.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:25:40', tmtdew=23.91, humidity=19.92, cloud=0.0, wind=30.56, temperature=21.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:25:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:25:46.508 [DEBUG] [Thread-190782] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:25:46.581 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:25:46.594 [DEBUG] [Thread-190785] [transport.py] [_log()] starting thread (client mode): 0xd0712e30
2025-11-24T13:25:46.594 [DEBUG] [Thread-190785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:25:46.608 [DEBUG] [Thread-190785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:25:46.608 [INFO] [Thread-190785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:25:46.616 [DEBUG] [Thread-190785] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:25:46.616 [DEBUG] [Thread-190785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:25:46.616 [DEBUG] [Thread-190785] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:25:46.616 [DEBUG] [Thread-190785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:25:46.616 [DEBUG] [Thread-190785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] client lang: <none>
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] server lang: <none>
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] kex follows: False
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] Compression: none
2025-11-24T13:25:46.617 [DEBUG] [Thread-190785] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:25:46.672 [DEBUG] [Thread-190785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:25:46.672 [DEBUG] [Thread-190785] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:25:46.672 [DEBUG] [Thread-190785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:25:46.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:25:46.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:25:46.729 [DEBUG] [Thread-190785] [transport.py] [_log()] userauth is OK
2025-11-24T13:25:46.729 [DEBUG] [Thread-190785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:25:46.729 [DEBUG] [Thread-190785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:25:46.729 [DEBUG] [Thread-190785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:25:46.729 [DEBUG] [Thread-190785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:25:46.744 [INFO] [Thread-190785] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:25:46.744 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:25:46.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:25:47.579 [DEBUG] [Thread-190785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:25:47.580 [DEBUG] [Thread-190785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:25:47.627 [DEBUG] [Thread-190785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:25:47.627 [DEBUG] [Thread-190785] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:25:47.636 [DEBUG] [Thread-190785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:25:47.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:25:47.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-11-24T13:25:47.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-11-24T13:25:47.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:25:47.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:25:47.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:25:47.669 [DEBUG] [Thread-190785] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:25:55.519 [DEBUG] [Thread-190787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:25:59.829 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:25:59.831 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:26:00.498 [DEBUG] [Thread-190788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:26:10.574 [DEBUG] [Thread-190789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:26:17.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:26:17.701 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:26:17.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-11-24T13:26:18.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 26, 12), 24.09, 19.7, 0.0, 27.19, 21.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:26:18.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:26:12
2025-11-24T13:26:18.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:26:18.809 [DEBUG] [Thread-190790] [transport.py] [_log()] starting thread (client mode): 0xd07128f0
2025-11-24T13:26:18.809 [DEBUG] [Thread-190790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:26:18.824 [DEBUG] [Thread-190790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:26:18.824 [INFO] [Thread-190790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:26:18.827 [DEBUG] [Thread-190790] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:26:18.827 [DEBUG] [Thread-190790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:26:18.827 [DEBUG] [Thread-190790] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:26:18.827 [DEBUG] [Thread-190790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:26:18.827 [DEBUG] [Thread-190790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:26:18.827 [DEBUG] [Thread-190790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:26:18.827 [DEBUG] [Thread-190790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:26:18.827 [DEBUG] [Thread-190790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] client lang: <none>
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] server lang: <none>
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] kex follows: False
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] Compression: none
2025-11-24T13:26:18.828 [DEBUG] [Thread-190790] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:26:18.847 [DEBUG] [Thread-190790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:26:18.848 [DEBUG] [Thread-190790] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:26:18.849 [DEBUG] [Thread-190790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:26:18.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:26:18.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:26:18.890 [DEBUG] [Thread-190790] [transport.py] [_log()] userauth is OK
2025-11-24T13:26:18.890 [DEBUG] [Thread-190790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:26:18.891 [DEBUG] [Thread-190790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:26:18.891 [DEBUG] [Thread-190790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:26:18.891 [DEBUG] [Thread-190790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:26:18.912 [INFO] [Thread-190790] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:26:18.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:26:19.674 [DEBUG] [Thread-190790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:26:19.674 [DEBUG] [Thread-190790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:26:19.685 [DEBUG] [Thread-190790] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:26:19.714 [DEBUG] [Thread-190790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:26:19.715 [DEBUG] [Thread-190790] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:26:19.717 [DEBUG] [Thread-190790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:26:19.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:26:19.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:26:19.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:26:19.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:26:19.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:26:19.745 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:26:19.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:26:19.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:26:19.748 [DEBUG] [Thread-190790] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:26:19.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:26:19.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.476090 -999.00  +21.20  30.97     24   +0.30 1 1 2 1 1   888    0 19.54 -21.31 ----- 31.0 31.0 179.2 38.8 27.3 -25.8 26.4 -28.1 27.2 -24.6 27.9 -28.1
2025-11-24T13:26:19.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:26:19.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:26:19.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.476090
2025-11-24T13:26:19.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:26:19.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:26:19.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:26:19.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:26:19.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:26:19.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:26:12', tmtdew=24.09, humidity=19.7, cloud=0.0, wind=27.19, temperature=21.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:25:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:26:19.833 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:26:19.843 [DEBUG] [Thread-190793] [transport.py] [_log()] starting thread (client mode): 0xd317f850
2025-11-24T13:26:19.843 [DEBUG] [Thread-190793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:26:19.857 [DEBUG] [Thread-190793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:26:19.857 [INFO] [Thread-190793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] client lang: <none>
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] server lang: <none>
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] kex follows: False
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] Compression: none
2025-11-24T13:26:19.867 [DEBUG] [Thread-190793] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:26:19.924 [DEBUG] [Thread-190793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:26:19.924 [DEBUG] [Thread-190793] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:26:19.924 [DEBUG] [Thread-190793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:26:19.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:26:19.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:26:19.981 [DEBUG] [Thread-190793] [transport.py] [_log()] userauth is OK
2025-11-24T13:26:19.981 [DEBUG] [Thread-190793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:26:19.981 [DEBUG] [Thread-190793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:26:19.982 [DEBUG] [Thread-190793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:26:19.982 [DEBUG] [Thread-190793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:26:19.995 [INFO] [Thread-190793] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:26:19.996 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:26:19.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:26:20.826 [DEBUG] [Thread-190793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:26:20.826 [DEBUG] [Thread-190793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:26:20.865 [DEBUG] [Thread-190793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:26:20.865 [DEBUG] [Thread-190793] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:26:20.874 [DEBUG] [Thread-190793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:26:20.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:26:20.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-11-24T13:26:20.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-11-24T13:26:20.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:26:20.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:26:20.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:26:20.911 [DEBUG] [Thread-190793] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:26:25.603 [DEBUG] [Thread-190795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:26:40.642 [DEBUG] [Thread-190796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:26:50.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:26:50.914 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:26:50.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-11-24T13:26:51.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 26, 45), 24.07, 19.42, 0.0, 28.34, 21.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:26:51.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:26:45
2025-11-24T13:26:51.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:26:52.008 [DEBUG] [Thread-190797] [transport.py] [_log()] starting thread (client mode): 0xd31531f0
2025-11-24T13:26:52.008 [DEBUG] [Thread-190797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:26:52.027 [DEBUG] [Thread-190797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:26:52.027 [INFO] [Thread-190797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:26:52.030 [DEBUG] [Thread-190797] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:26:52.030 [DEBUG] [Thread-190797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:26:52.030 [DEBUG] [Thread-190797] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:26:52.030 [DEBUG] [Thread-190797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] client lang: <none>
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] server lang: <none>
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] kex follows: False
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] Compression: none
2025-11-24T13:26:52.031 [DEBUG] [Thread-190797] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:26:52.048 [DEBUG] [Thread-190797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:26:52.048 [DEBUG] [Thread-190797] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:26:52.049 [DEBUG] [Thread-190797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:26:52.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:26:52.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:26:52.094 [DEBUG] [Thread-190797] [transport.py] [_log()] userauth is OK
2025-11-24T13:26:52.094 [DEBUG] [Thread-190797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:26:52.094 [DEBUG] [Thread-190797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:26:52.094 [DEBUG] [Thread-190797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:26:52.094 [DEBUG] [Thread-190797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:26:52.114 [INFO] [Thread-190797] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:26:52.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:26:52.741 [DEBUG] [Thread-190797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:26:52.750 [DEBUG] [Thread-190797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:26:52.751 [DEBUG] [Thread-190797] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:26:52.782 [DEBUG] [Thread-190797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:26:52.782 [DEBUG] [Thread-190797] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:26:52.785 [DEBUG] [Thread-190797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:26:52.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:26:52.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:26:52.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:26:52.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:26:52.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:26:52.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:26:52.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:26:52.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:26:52.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:26:52.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.476437 -999.00  +20.90  30.20     25   +0.20 1 1 2 1 1   888    0 19.62 -18.37 ----- 30.2 30.2 180.2 38.3 27.1 -27.1 25.9 -30.8 26.9 -27.0 27.7 -29.2
2025-11-24T13:26:52.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:26:52.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:26:52.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.476437
2025-11-24T13:26:52.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:26:52.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:26:52.814 [DEBUG] [Thread-190797] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:26:52.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:26:52.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:26:52.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:26:52.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:26:45', tmtdew=24.07, humidity=19.42, cloud=0.0, wind=28.34, temperature=21.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:26:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:26:52.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:26:52.909 [DEBUG] [Thread-190800] [transport.py] [_log()] starting thread (client mode): 0xd3150970
2025-11-24T13:26:52.909 [DEBUG] [Thread-190800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:26:52.923 [DEBUG] [Thread-190800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:26:52.924 [INFO] [Thread-190800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:26:52.933 [DEBUG] [Thread-190800] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:26:52.934 [DEBUG] [Thread-190800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:26:52.934 [DEBUG] [Thread-190800] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:26:52.934 [DEBUG] [Thread-190800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:26:52.934 [DEBUG] [Thread-190800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:26:52.934 [DEBUG] [Thread-190800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:26:52.934 [DEBUG] [Thread-190800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:26:52.934 [DEBUG] [Thread-190800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:26:52.935 [DEBUG] [Thread-190800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:26:52.935 [DEBUG] [Thread-190800] [transport.py] [_log()] client lang: <none>
2025-11-24T13:26:52.935 [DEBUG] [Thread-190800] [transport.py] [_log()] server lang: <none>
2025-11-24T13:26:52.935 [DEBUG] [Thread-190800] [transport.py] [_log()] kex follows: False
2025-11-24T13:26:52.935 [DEBUG] [Thread-190800] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:26:52.935 [DEBUG] [Thread-190800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:26:52.935 [DEBUG] [Thread-190800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:26:52.935 [DEBUG] [Thread-190800] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:26:52.936 [DEBUG] [Thread-190800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:26:52.936 [DEBUG] [Thread-190800] [transport.py] [_log()] Compression: none
2025-11-24T13:26:52.936 [DEBUG] [Thread-190800] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:26:52.991 [DEBUG] [Thread-190800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:26:52.991 [DEBUG] [Thread-190800] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:26:52.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:26:52.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:26:52.994 [DEBUG] [Thread-190800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:26:53.053 [DEBUG] [Thread-190800] [transport.py] [_log()] userauth is OK
2025-11-24T13:26:53.053 [DEBUG] [Thread-190800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:26:53.053 [DEBUG] [Thread-190800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:26:53.053 [DEBUG] [Thread-190800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:26:53.053 [DEBUG] [Thread-190800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:26:53.071 [INFO] [Thread-190800] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:26:53.071 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:26:53.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:26:53.925 [DEBUG] [Thread-190800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:26:53.925 [DEBUG] [Thread-190800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:26:53.973 [DEBUG] [Thread-190800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:26:53.973 [DEBUG] [Thread-190800] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:26:53.981 [DEBUG] [Thread-190800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:26:53.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:26:53.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-11-24T13:26:53.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-11-24T13:26:54.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:26:54.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:26:54.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:26:54.015 [DEBUG] [Thread-190800] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:26:55.684 [DEBUG] [Thread-190802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:26:59.974 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:26:59.975 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:27:00.535 [DEBUG] [Thread-190803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:27:10.735 [DEBUG] [Thread-190804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:27:24.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:27:24.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:27:24.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-11-24T13:27:24.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 27, 17), 24.4, 19.04, 0.0, 26.7, 21.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:27:24.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:27:17
2025-11-24T13:27:24.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:27:25.112 [DEBUG] [Thread-190805] [transport.py] [_log()] starting thread (client mode): 0xd31b0a60
2025-11-24T13:27:25.112 [DEBUG] [Thread-190805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:27:25.132 [DEBUG] [Thread-190805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:27:25.132 [INFO] [Thread-190805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] client lang: <none>
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] server lang: <none>
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] kex follows: False
2025-11-24T13:27:25.135 [DEBUG] [Thread-190805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:27:25.136 [DEBUG] [Thread-190805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:27:25.136 [DEBUG] [Thread-190805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:27:25.136 [DEBUG] [Thread-190805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:27:25.136 [DEBUG] [Thread-190805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:27:25.136 [DEBUG] [Thread-190805] [transport.py] [_log()] Compression: none
2025-11-24T13:27:25.136 [DEBUG] [Thread-190805] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:27:25.153 [DEBUG] [Thread-190805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:27:25.154 [DEBUG] [Thread-190805] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:27:25.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:27:25.155 [DEBUG] [Thread-190805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:27:25.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:27:25.197 [DEBUG] [Thread-190805] [transport.py] [_log()] userauth is OK
2025-11-24T13:27:25.198 [DEBUG] [Thread-190805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:27:25.198 [DEBUG] [Thread-190805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:27:25.198 [DEBUG] [Thread-190805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:27:25.198 [DEBUG] [Thread-190805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:27:25.218 [INFO] [Thread-190805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:27:25.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:27:25.781 [DEBUG] [Thread-190807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:27:26.031 [DEBUG] [Thread-190805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:27:26.031 [DEBUG] [Thread-190805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:27:26.031 [DEBUG] [Thread-190805] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:27:26.071 [DEBUG] [Thread-190805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:27:26.071 [DEBUG] [Thread-190805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:27:26.074 [DEBUG] [Thread-190805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:27:26.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:27:26.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:27:26.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:27:26.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:27:26.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:27:26.102 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:27:26.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:27:26.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:27:26.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:27:26.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.476784 -999.00  +20.60  18.28     25   +0.40 1 1 1 1 1   888    0 19.58 -17.78 ----- 18.3 18.3 190.6 33.6 26.8 -28.1 25.6 -26.9 26.7 -26.7 27.7 -26.3
2025-11-24T13:27:26.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:27:26.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:27:26.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.476784
2025-11-24T13:27:26.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:27:26.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:27:26.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:27:26.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:27:26.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:27:26.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:27:17', tmtdew=24.4, humidity=19.04, cloud=0.0, wind=26.7, temperature=21.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:26:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:27:26.105 [DEBUG] [Thread-190805] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:27:26.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:27:26.201 [DEBUG] [Thread-190809] [transport.py] [_log()] starting thread (client mode): 0xd0710f40
2025-11-24T13:27:26.201 [DEBUG] [Thread-190809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:27:26.216 [DEBUG] [Thread-190809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:27:26.216 [INFO] [Thread-190809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:27:26.224 [DEBUG] [Thread-190809] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:27:26.224 [DEBUG] [Thread-190809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] client lang: <none>
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] server lang: <none>
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] kex follows: False
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:27:26.225 [DEBUG] [Thread-190809] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:27:26.226 [DEBUG] [Thread-190809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:27:26.226 [DEBUG] [Thread-190809] [transport.py] [_log()] Compression: none
2025-11-24T13:27:26.226 [DEBUG] [Thread-190809] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:27:26.282 [DEBUG] [Thread-190809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:27:26.283 [DEBUG] [Thread-190809] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:27:26.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:27:26.284 [DEBUG] [Thread-190809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:27:26.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:27:26.337 [DEBUG] [Thread-190809] [transport.py] [_log()] userauth is OK
2025-11-24T13:27:26.338 [DEBUG] [Thread-190809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:27:26.338 [DEBUG] [Thread-190809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:27:26.338 [DEBUG] [Thread-190809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:27:26.338 [DEBUG] [Thread-190809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:27:26.357 [INFO] [Thread-190809] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:27:26.358 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:27:26.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:27:27.237 [DEBUG] [Thread-190809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:27:27.237 [DEBUG] [Thread-190809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:27:27.285 [DEBUG] [Thread-190809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:27:27.285 [DEBUG] [Thread-190809] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:27:27.293 [DEBUG] [Thread-190809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:27:27.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:27:27.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-11-24T13:27:27.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-11-24T13:27:27.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:27:27.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:27:27.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:27:27.331 [DEBUG] [Thread-190809] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:27:40.818 [DEBUG] [Thread-190811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:27:55.852 [DEBUG] [Thread-190812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:27:57.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:27:57.345 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:27:57.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-11-24T13:27:58.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 27, 49), 23.94, 20.01, 0.0, 22.43, 20.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:27:58.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:27:49
2025-11-24T13:27:58.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:27:58.340 [DEBUG] [Thread-190813] [transport.py] [_log()] starting thread (client mode): 0xd317c160
2025-11-24T13:27:58.340 [DEBUG] [Thread-190813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:27:58.360 [DEBUG] [Thread-190813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:27:58.360 [INFO] [Thread-190813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] client lang: <none>
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] server lang: <none>
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] kex follows: False
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] Compression: none
2025-11-24T13:27:58.364 [DEBUG] [Thread-190813] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:27:58.382 [DEBUG] [Thread-190813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:27:58.382 [DEBUG] [Thread-190813] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:27:58.383 [DEBUG] [Thread-190813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:27:58.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:27:58.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:27:58.425 [DEBUG] [Thread-190813] [transport.py] [_log()] userauth is OK
2025-11-24T13:27:58.426 [DEBUG] [Thread-190813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:27:58.426 [DEBUG] [Thread-190813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:27:58.426 [DEBUG] [Thread-190813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:27:58.426 [DEBUG] [Thread-190813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:27:58.447 [INFO] [Thread-190813] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:27:58.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:27:59.094 [DEBUG] [Thread-190813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:27:59.094 [DEBUG] [Thread-190813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:27:59.094 [DEBUG] [Thread-190813] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:27:59.134 [DEBUG] [Thread-190813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:27:59.135 [DEBUG] [Thread-190813] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:27:59.138 [DEBUG] [Thread-190813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:27:59.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:27:59.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:27:59.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:27:59.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:27:59.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:27:59.160 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:27:59.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:27:59.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:27:59.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:27:59.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.477131 -999.00  +20.70  16.61     25   +0.40 1 1 1 1 1   888    0 19.40 -15.65 ----- 16.6 16.6 181.2 25.5 26.9 -26.2 25.7 -27.3 26.9 -25.3 27.9 -26.3
2025-11-24T13:27:59.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:27:59.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:27:59.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.477131
2025-11-24T13:27:59.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:27:59.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:27:59.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:27:59.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:27:59.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:27:59.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:27:49', tmtdew=23.94, humidity=20.01, cloud=0.0, wind=22.43, temperature=20.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:27:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:27:59.163 [DEBUG] [Thread-190813] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:27:59.252 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:27:59.263 [DEBUG] [Thread-190816] [transport.py] [_log()] starting thread (client mode): 0xd3191c60
2025-11-24T13:27:59.263 [DEBUG] [Thread-190816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:27:59.283 [DEBUG] [Thread-190816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:27:59.283 [INFO] [Thread-190816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:27:59.290 [DEBUG] [Thread-190816] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] client lang: <none>
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] server lang: <none>
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] kex follows: False
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:27:59.291 [DEBUG] [Thread-190816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:27:59.292 [DEBUG] [Thread-190816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:27:59.292 [DEBUG] [Thread-190816] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:27:59.292 [DEBUG] [Thread-190816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:27:59.292 [DEBUG] [Thread-190816] [transport.py] [_log()] Compression: none
2025-11-24T13:27:59.292 [DEBUG] [Thread-190816] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:27:59.350 [DEBUG] [Thread-190816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:27:59.350 [DEBUG] [Thread-190816] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:27:59.351 [DEBUG] [Thread-190816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:27:59.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:27:59.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:27:59.406 [DEBUG] [Thread-190816] [transport.py] [_log()] userauth is OK
2025-11-24T13:27:59.406 [DEBUG] [Thread-190816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:27:59.406 [DEBUG] [Thread-190816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:27:59.407 [DEBUG] [Thread-190816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:27:59.407 [DEBUG] [Thread-190816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:27:59.425 [INFO] [Thread-190816] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:27:59.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:27:59.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:28:00.116 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:28:00.117 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:28:00.290 [DEBUG] [Thread-190816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:28:00.290 [DEBUG] [Thread-190816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:28:00.337 [DEBUG] [Thread-190816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:28:00.337 [DEBUG] [Thread-190816] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:28:00.346 [DEBUG] [Thread-190816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:28:00.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:28:00.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-11-24T13:28:00.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-11-24T13:28:00.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:28:00.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:28:00.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:28:00.381 [DEBUG] [Thread-190816] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:28:00.824 [DEBUG] [Thread-190818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:28:10.879 [DEBUG] [Thread-190819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:28:25.980 [DEBUG] [Thread-190820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:28:30.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:28:30.416 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:28:30.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-11-24T13:28:31.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 28, 22), 23.46, 20.72, 0.0, 20.2, 20.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:28:31.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:28:22
2025-11-24T13:28:31.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:28:31.501 [DEBUG] [Thread-190821] [transport.py] [_log()] starting thread (client mode): 0xd317d7b0
2025-11-24T13:28:31.501 [DEBUG] [Thread-190821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:28:31.519 [DEBUG] [Thread-190821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:28:31.520 [INFO] [Thread-190821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] client lang: <none>
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] server lang: <none>
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] kex follows: False
2025-11-24T13:28:31.523 [DEBUG] [Thread-190821] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:28:31.524 [DEBUG] [Thread-190821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:28:31.524 [DEBUG] [Thread-190821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:28:31.524 [DEBUG] [Thread-190821] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:28:31.524 [DEBUG] [Thread-190821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:28:31.524 [DEBUG] [Thread-190821] [transport.py] [_log()] Compression: none
2025-11-24T13:28:31.524 [DEBUG] [Thread-190821] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:28:31.538 [DEBUG] [Thread-190821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:28:31.540 [DEBUG] [Thread-190821] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:28:31.540 [DEBUG] [Thread-190821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:28:31.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:28:31.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:28:31.544 [DEBUG] [Thread-190821] [transport.py] [_log()] userauth is OK
2025-11-24T13:28:31.545 [DEBUG] [Thread-190821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:28:31.545 [DEBUG] [Thread-190821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:28:31.545 [DEBUG] [Thread-190821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:28:31.545 [DEBUG] [Thread-190821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:28:31.569 [INFO] [Thread-190821] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:28:31.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:28:32.151 [DEBUG] [Thread-190821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:28:32.151 [DEBUG] [Thread-190821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:28:32.161 [DEBUG] [Thread-190821] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:28:32.192 [DEBUG] [Thread-190821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:28:32.192 [DEBUG] [Thread-190821] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:28:32.194 [DEBUG] [Thread-190821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:28:32.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:28:32.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:28:32.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:28:32.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:28:32.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:28:32.214 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:28:32.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:28:32.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:28:32.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:28:32.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.477478 -999.00  +21.00  14.45     25   +0.60 1 1 1 1 1   888    0 19.14 -13.30 ----- 14.4 14.4 193.9 34.2 26.8 -27.5 25.9 -29.7 26.8 -25.6 27.8 -25.5
2025-11-24T13:28:32.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:28:32.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:28:32.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.477478
2025-11-24T13:28:32.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:28:32.224 [DEBUG] [Thread-190821] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:28:32.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:28:32.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:28:32.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:28:32.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:28:32.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:28:22', tmtdew=23.46, humidity=20.72, cloud=0.0, wind=20.2, temperature=20.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:27:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:28:32.297 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:28:32.310 [DEBUG] [Thread-190824] [transport.py] [_log()] starting thread (client mode): 0xd317d570
2025-11-24T13:28:32.310 [DEBUG] [Thread-190824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:28:32.325 [DEBUG] [Thread-190824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:28:32.325 [INFO] [Thread-190824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:28:32.333 [DEBUG] [Thread-190824] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:28:32.333 [DEBUG] [Thread-190824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:28:32.333 [DEBUG] [Thread-190824] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:28:32.333 [DEBUG] [Thread-190824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:28:32.334 [DEBUG] [Thread-190824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:28:32.334 [DEBUG] [Thread-190824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:28:32.334 [DEBUG] [Thread-190824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:28:32.334 [DEBUG] [Thread-190824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:28:32.334 [DEBUG] [Thread-190824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:28:32.334 [DEBUG] [Thread-190824] [transport.py] [_log()] client lang: <none>
2025-11-24T13:28:32.334 [DEBUG] [Thread-190824] [transport.py] [_log()] server lang: <none>
2025-11-24T13:28:32.334 [DEBUG] [Thread-190824] [transport.py] [_log()] kex follows: False
2025-11-24T13:28:32.334 [DEBUG] [Thread-190824] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:28:32.335 [DEBUG] [Thread-190824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:28:32.335 [DEBUG] [Thread-190824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:28:32.335 [DEBUG] [Thread-190824] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:28:32.335 [DEBUG] [Thread-190824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:28:32.335 [DEBUG] [Thread-190824] [transport.py] [_log()] Compression: none
2025-11-24T13:28:32.335 [DEBUG] [Thread-190824] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:28:32.398 [DEBUG] [Thread-190824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:28:32.399 [DEBUG] [Thread-190824] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:28:32.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:28:32.400 [DEBUG] [Thread-190824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:28:32.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:28:32.454 [DEBUG] [Thread-190824] [transport.py] [_log()] userauth is OK
2025-11-24T13:28:32.454 [DEBUG] [Thread-190824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:28:32.455 [DEBUG] [Thread-190824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:28:32.455 [DEBUG] [Thread-190824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:28:32.455 [DEBUG] [Thread-190824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:28:32.473 [INFO] [Thread-190824] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:28:32.474 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:28:32.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:28:33.392 [DEBUG] [Thread-190824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:28:33.392 [DEBUG] [Thread-190824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:28:33.431 [DEBUG] [Thread-190824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:28:33.431 [DEBUG] [Thread-190824] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:28:33.439 [DEBUG] [Thread-190824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:28:33.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:28:33.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:28:33.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:28:33.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:28:33.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:28:33.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:28:33.472 [DEBUG] [Thread-190824] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:28:41.043 [DEBUG] [Thread-190826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:28:56.091 [DEBUG] [Thread-190827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:29:00.258 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:29:00.259 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:29:01.044 [DEBUG] [Thread-190828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:29:03.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:29:03.483 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:29:03.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-11-24T13:29:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 28, 54), 23.68, 20.49, 0.0, 25.92, 21.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:29:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:28:54
2025-11-24T13:29:04.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:29:04.497 [DEBUG] [Thread-190829] [transport.py] [_log()] starting thread (client mode): 0xd317dbd0
2025-11-24T13:29:04.497 [DEBUG] [Thread-190829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:29:04.515 [DEBUG] [Thread-190829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:29:04.515 [INFO] [Thread-190829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] client lang: <none>
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] server lang: <none>
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] kex follows: False
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] Compression: none
2025-11-24T13:29:04.518 [DEBUG] [Thread-190829] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:29:04.532 [DEBUG] [Thread-190829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:29:04.533 [DEBUG] [Thread-190829] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:29:04.533 [DEBUG] [Thread-190829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:29:04.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:29:04.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:29:04.534 [DEBUG] [Thread-190829] [transport.py] [_log()] userauth is OK
2025-11-24T13:29:04.534 [DEBUG] [Thread-190829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:29:04.534 [DEBUG] [Thread-190829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:29:04.534 [DEBUG] [Thread-190829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:29:04.534 [DEBUG] [Thread-190829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:29:04.560 [INFO] [Thread-190829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:29:04.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:29:05.202 [DEBUG] [Thread-190829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:29:05.202 [DEBUG] [Thread-190829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:29:05.202 [DEBUG] [Thread-190829] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:29:05.242 [DEBUG] [Thread-190829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:29:05.243 [DEBUG] [Thread-190829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:29:05.253 [DEBUG] [Thread-190829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:29:05.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:29:05.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:29:05.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:29:05.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:29:05.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:29:05.269 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:29:05.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:29:05.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:29:05.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:29:05.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.478173 -999.00  +21.40  15.18     25   +0.90 1 1 1 1 1   888    0 20.17 -4.57 ----- 15.2 15.2 204.2 26.9 27.0 -25.9 25.9 -28.2 27.1 -24.7 28.1 -25.2
2025-11-24T13:29:05.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:29:05.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:29:05.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.478173
2025-11-24T13:29:05.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:29:05.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:29:05.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:29:05.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:29:05.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:29:05.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:28:54', tmtdew=23.68, humidity=20.49, cloud=0.0, wind=25.92, temperature=21.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:28:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:29:05.272 [DEBUG] [Thread-190829] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:29:05.356 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:29:05.368 [DEBUG] [Thread-190832] [transport.py] [_log()] starting thread (client mode): 0xd317f850
2025-11-24T13:29:05.369 [DEBUG] [Thread-190832] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:29:05.383 [DEBUG] [Thread-190832] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:29:05.384 [INFO] [Thread-190832] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] client lang: <none>
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] server lang: <none>
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] kex follows: False
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:29:05.392 [DEBUG] [Thread-190832] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:29:05.393 [DEBUG] [Thread-190832] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:29:05.393 [DEBUG] [Thread-190832] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:29:05.393 [DEBUG] [Thread-190832] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:29:05.393 [DEBUG] [Thread-190832] [transport.py] [_log()] Compression: none
2025-11-24T13:29:05.393 [DEBUG] [Thread-190832] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:29:05.452 [DEBUG] [Thread-190832] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:29:05.453 [DEBUG] [Thread-190832] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:29:05.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:29:05.454 [DEBUG] [Thread-190832] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:29:05.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:29:05.513 [DEBUG] [Thread-190832] [transport.py] [_log()] userauth is OK
2025-11-24T13:29:05.514 [DEBUG] [Thread-190832] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:29:05.514 [DEBUG] [Thread-190832] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:29:05.514 [DEBUG] [Thread-190832] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:29:05.514 [DEBUG] [Thread-190832] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:29:05.533 [INFO] [Thread-190832] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:29:05.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:29:05.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:29:06.367 [DEBUG] [Thread-190832] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:29:06.368 [DEBUG] [Thread-190832] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:29:06.416 [DEBUG] [Thread-190832] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:29:06.416 [DEBUG] [Thread-190832] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:29:06.426 [DEBUG] [Thread-190832] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:29:06.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:29:06.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-11-24T13:29:06.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-11-24T13:29:06.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:29:06.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:29:06.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:29:06.464 [DEBUG] [Thread-190832] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:29:11.116 [DEBUG] [Thread-190834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:29:26.158 [DEBUG] [Thread-190835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:29:36.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:29:36.483 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:29:36.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-11-24T13:29:37.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 29, 27), 23.55, 20.67, 0.0, 25.99, 21.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:29:37.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:29:27
2025-11-24T13:29:37.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:29:37.594 [DEBUG] [Thread-190836] [transport.py] [_log()] starting thread (client mode): 0xd317dd50
2025-11-24T13:29:37.594 [DEBUG] [Thread-190836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:29:37.615 [DEBUG] [Thread-190836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:29:37.615 [INFO] [Thread-190836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] client lang: <none>
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] server lang: <none>
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] kex follows: False
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:29:37.618 [DEBUG] [Thread-190836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:29:37.619 [DEBUG] [Thread-190836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:29:37.619 [DEBUG] [Thread-190836] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:29:37.619 [DEBUG] [Thread-190836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:29:37.619 [DEBUG] [Thread-190836] [transport.py] [_log()] Compression: none
2025-11-24T13:29:37.619 [DEBUG] [Thread-190836] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:29:37.635 [DEBUG] [Thread-190836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:29:37.635 [DEBUG] [Thread-190836] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:29:37.635 [DEBUG] [Thread-190836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:29:37.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:29:37.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:29:37.636 [DEBUG] [Thread-190836] [transport.py] [_log()] userauth is OK
2025-11-24T13:29:37.636 [DEBUG] [Thread-190836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:29:37.636 [DEBUG] [Thread-190836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:29:37.636 [DEBUG] [Thread-190836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:29:37.636 [DEBUG] [Thread-190836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:29:37.648 [INFO] [Thread-190836] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:29:37.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:29:38.258 [DEBUG] [Thread-190836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:29:38.258 [DEBUG] [Thread-190836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:29:38.258 [DEBUG] [Thread-190836] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:29:38.299 [DEBUG] [Thread-190836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:29:38.299 [DEBUG] [Thread-190836] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:29:38.301 [DEBUG] [Thread-190836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:29:38.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:29:38.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:29:38.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:29:38.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:29:38.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:29:38.322 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:29:38.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.478520 -999.00  +22.00  25.25     24   +0.90 1 1 1 1 1   888    0 19.40 0.43 ----- 25.2 25.2 178.5 29.3 27.1 -26.0 26.2 -26.7 27.2 -23.5 27.9 -28.1
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.478520
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:29:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:29:27', tmtdew=23.55, humidity=20.67, cloud=0.0, wind=25.99, temperature=21.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:29:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:29:38.323 [DEBUG] [Thread-190836] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:29:38.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:29:38.409 [DEBUG] [Thread-190839] [transport.py] [_log()] starting thread (client mode): 0xc9b83340
2025-11-24T13:29:38.409 [DEBUG] [Thread-190839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:29:38.423 [DEBUG] [Thread-190839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:29:38.423 [INFO] [Thread-190839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] client lang: <none>
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] server lang: <none>
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] kex follows: False
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:29:38.430 [DEBUG] [Thread-190839] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:29:38.431 [DEBUG] [Thread-190839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:29:38.431 [DEBUG] [Thread-190839] [transport.py] [_log()] Compression: none
2025-11-24T13:29:38.431 [DEBUG] [Thread-190839] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:29:38.488 [DEBUG] [Thread-190839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:29:38.488 [DEBUG] [Thread-190839] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:29:38.488 [DEBUG] [Thread-190839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:29:38.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:29:38.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:29:38.545 [DEBUG] [Thread-190839] [transport.py] [_log()] userauth is OK
2025-11-24T13:29:38.545 [DEBUG] [Thread-190839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:29:38.545 [DEBUG] [Thread-190839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:29:38.545 [DEBUG] [Thread-190839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:29:38.545 [DEBUG] [Thread-190839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:29:38.561 [INFO] [Thread-190839] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:29:38.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:29:38.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:29:39.394 [DEBUG] [Thread-190839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:29:39.394 [DEBUG] [Thread-190839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:29:39.442 [DEBUG] [Thread-190839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:29:39.442 [DEBUG] [Thread-190839] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:29:39.450 [DEBUG] [Thread-190839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:29:39.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:29:39.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-11-24T13:29:39.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:29:39.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:29:39.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:29:39.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:29:39.483 [DEBUG] [Thread-190839] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:29:41.186 [DEBUG] [Thread-190841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:29:56.227 [DEBUG] [Thread-190842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:30:00.401 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:30:00.402 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:30:01.084 [DEBUG] [Thread-190843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:30:09.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:30:09.506 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:30:09.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-11-24T13:30:10.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 30), 23.69, 20.54, 0.0, 21.02, 21.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:30:10.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:30:00
2025-11-24T13:30:10.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:30:10.807 [DEBUG] [Thread-190844] [transport.py] [_log()] starting thread (client mode): 0xc9b818a0
2025-11-24T13:30:10.807 [DEBUG] [Thread-190844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:30:10.827 [DEBUG] [Thread-190844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:30:10.827 [INFO] [Thread-190844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] client lang: <none>
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] server lang: <none>
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] kex follows: False
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] Compression: none
2025-11-24T13:30:10.828 [DEBUG] [Thread-190844] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:30:10.841 [DEBUG] [Thread-190844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:30:10.842 [DEBUG] [Thread-190844] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:30:10.842 [DEBUG] [Thread-190844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:30:10.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:30:10.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:30:10.843 [DEBUG] [Thread-190844] [transport.py] [_log()] userauth is OK
2025-11-24T13:30:10.843 [DEBUG] [Thread-190844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:30:10.843 [DEBUG] [Thread-190844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:30:10.843 [DEBUG] [Thread-190844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:30:10.843 [DEBUG] [Thread-190844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:30:10.873 [INFO] [Thread-190844] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:30:10.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:30:11.271 [DEBUG] [Thread-190846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:30:13.296 [DEBUG] [Thread-190844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:30:13.297 [DEBUG] [Thread-190844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:30:13.297 [DEBUG] [Thread-190844] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:30:13.338 [DEBUG] [Thread-190844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:30:13.338 [DEBUG] [Thread-190844] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:30:13.341 [DEBUG] [Thread-190844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:30:13.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:30:13.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:30:13.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:30:13.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:30:13.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:30:13.376 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:30:13.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:30:13.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:30:13.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:30:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.478867 -999.00  +21.40  22.05     25   +0.80 1 1 1 1 1   888    0 20.42 4.36 ----- 22.1 22.1 188.8 34.0 27.0 -27.2 25.8 -30.4 27.0 -25.4 27.9 -27.1
2025-11-24T13:30:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:30:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:30:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.478867
2025-11-24T13:30:13.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:30:13.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:30:13.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:30:13.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:30:13.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:30:13.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:30:00', tmtdew=23.69, humidity=20.54, cloud=0.0, wind=21.02, temperature=21.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:29:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:30:13.379 [DEBUG] [Thread-190844] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:30:13.465 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:30:13.475 [DEBUG] [Thread-190848] [transport.py] [_log()] starting thread (client mode): 0xd317dcf0
2025-11-24T13:30:13.476 [DEBUG] [Thread-190848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:30:13.490 [DEBUG] [Thread-190848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:30:13.490 [INFO] [Thread-190848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:30:13.497 [DEBUG] [Thread-190848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] client lang: <none>
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] server lang: <none>
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] kex follows: False
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] Compression: none
2025-11-24T13:30:13.498 [DEBUG] [Thread-190848] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:30:13.557 [DEBUG] [Thread-190848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:30:13.558 [DEBUG] [Thread-190848] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:30:13.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:30:13.560 [DEBUG] [Thread-190848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:30:13.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:30:13.614 [DEBUG] [Thread-190848] [transport.py] [_log()] userauth is OK
2025-11-24T13:30:13.615 [DEBUG] [Thread-190848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:30:13.615 [DEBUG] [Thread-190848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:30:13.615 [DEBUG] [Thread-190848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:30:13.615 [DEBUG] [Thread-190848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:30:13.634 [INFO] [Thread-190848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:30:13.635 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:30:13.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:30:14.454 [DEBUG] [Thread-190848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:30:14.454 [DEBUG] [Thread-190848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:30:14.502 [DEBUG] [Thread-190848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:30:14.502 [DEBUG] [Thread-190848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:30:14.512 [DEBUG] [Thread-190848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:30:14.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:30:14.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:30:14.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:30:14.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:30:14.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:30:14.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:30:14.544 [DEBUG] [Thread-190848] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:30:26.304 [DEBUG] [Thread-190850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:30:41.353 [DEBUG] [Thread-190851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:30:44.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:30:44.562 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:30:44.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-11-24T13:30:45.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 30, 33), 23.85, 20.27, 0.0, 21.47, 21.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:30:45.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:30:33
2025-11-24T13:30:45.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:30:45.659 [DEBUG] [Thread-190852] [transport.py] [_log()] starting thread (client mode): 0xd0712e00
2025-11-24T13:30:45.659 [DEBUG] [Thread-190852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:30:45.680 [DEBUG] [Thread-190852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:30:45.680 [INFO] [Thread-190852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:30:45.690 [DEBUG] [Thread-190852] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:30:45.690 [DEBUG] [Thread-190852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:30:45.690 [DEBUG] [Thread-190852] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:30:45.690 [DEBUG] [Thread-190852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:30:45.690 [DEBUG] [Thread-190852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:30:45.690 [DEBUG] [Thread-190852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:30:45.690 [DEBUG] [Thread-190852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:30:45.690 [DEBUG] [Thread-190852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:30:45.690 [DEBUG] [Thread-190852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:30:45.690 [DEBUG] [Thread-190852] [transport.py] [_log()] client lang: <none>
2025-11-24T13:30:45.691 [DEBUG] [Thread-190852] [transport.py] [_log()] server lang: <none>
2025-11-24T13:30:45.691 [DEBUG] [Thread-190852] [transport.py] [_log()] kex follows: False
2025-11-24T13:30:45.691 [DEBUG] [Thread-190852] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:30:45.691 [DEBUG] [Thread-190852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:30:45.691 [DEBUG] [Thread-190852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:30:45.691 [DEBUG] [Thread-190852] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:30:45.691 [DEBUG] [Thread-190852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:30:45.691 [DEBUG] [Thread-190852] [transport.py] [_log()] Compression: none
2025-11-24T13:30:45.691 [DEBUG] [Thread-190852] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:30:45.710 [DEBUG] [Thread-190852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:30:45.711 [DEBUG] [Thread-190852] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:30:45.712 [DEBUG] [Thread-190852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:30:45.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:30:45.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:30:45.714 [DEBUG] [Thread-190852] [transport.py] [_log()] userauth is OK
2025-11-24T13:30:45.714 [DEBUG] [Thread-190852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:30:45.714 [DEBUG] [Thread-190852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:30:45.714 [DEBUG] [Thread-190852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:30:45.714 [DEBUG] [Thread-190852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:30:45.749 [INFO] [Thread-190852] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:30:45.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:30:46.406 [DEBUG] [Thread-190852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:30:46.406 [DEBUG] [Thread-190852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:30:46.406 [DEBUG] [Thread-190852] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:30:46.447 [DEBUG] [Thread-190852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:30:46.447 [DEBUG] [Thread-190852] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:30:46.449 [DEBUG] [Thread-190852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:30:46.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:30:46.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:30:46.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:30:46.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:30:46.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:30:46.467 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:30:46.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:30:46.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:30:46.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:30:46.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.479215 -999.00  +21.20   8.56     26   +0.90 1 1 1 1 1   888    0 20.27 4.18 ----- 8.6 8.6 196.5 22.1 26.9 -27.2 25.9 -30.7 26.9 -25.6 27.9 -25.0
2025-11-24T13:30:46.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:30:46.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:30:46.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.479215
2025-11-24T13:30:46.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:30:46.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:30:46.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:30:46.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:30:46.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:30:46.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:30:33', tmtdew=23.85, humidity=20.27, cloud=0.0, wind=21.47, temperature=21.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:30:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:30:46.468 [DEBUG] [Thread-190852] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:30:46.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:30:46.550 [DEBUG] [Thread-190855] [transport.py] [_log()] starting thread (client mode): 0xd07013c0
2025-11-24T13:30:46.550 [DEBUG] [Thread-190855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:30:46.565 [DEBUG] [Thread-190855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:30:46.565 [INFO] [Thread-190855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] client lang: <none>
2025-11-24T13:30:46.572 [DEBUG] [Thread-190855] [transport.py] [_log()] server lang: <none>
2025-11-24T13:30:46.573 [DEBUG] [Thread-190855] [transport.py] [_log()] kex follows: False
2025-11-24T13:30:46.573 [DEBUG] [Thread-190855] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:30:46.573 [DEBUG] [Thread-190855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:30:46.573 [DEBUG] [Thread-190855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:30:46.573 [DEBUG] [Thread-190855] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:30:46.573 [DEBUG] [Thread-190855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:30:46.573 [DEBUG] [Thread-190855] [transport.py] [_log()] Compression: none
2025-11-24T13:30:46.573 [DEBUG] [Thread-190855] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:30:46.628 [DEBUG] [Thread-190855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:30:46.628 [DEBUG] [Thread-190855] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:30:46.628 [DEBUG] [Thread-190855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:30:46.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:30:46.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:30:46.685 [DEBUG] [Thread-190855] [transport.py] [_log()] userauth is OK
2025-11-24T13:30:46.685 [DEBUG] [Thread-190855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:30:46.685 [DEBUG] [Thread-190855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:30:46.685 [DEBUG] [Thread-190855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:30:46.685 [DEBUG] [Thread-190855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:30:46.699 [INFO] [Thread-190855] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:30:46.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:30:46.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:30:47.524 [DEBUG] [Thread-190855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:30:47.524 [DEBUG] [Thread-190855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:30:47.573 [DEBUG] [Thread-190855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:30:47.573 [DEBUG] [Thread-190855] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:30:47.583 [DEBUG] [Thread-190855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:30:47.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:30:47.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-11-24T13:30:47.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-11-24T13:30:47.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:30:47.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:30:47.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:30:47.620 [DEBUG] [Thread-190855] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:30:56.385 [DEBUG] [Thread-190857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:31:00.552 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:31:00.554 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:31:01.397 [DEBUG] [Thread-190858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:31:11.417 [DEBUG] [Thread-190859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:31:17.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:31:17.643 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:31:17.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-11-24T13:31:18.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 31, 5), 23.39, 20.83, 0.0, 22.81, 20.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:31:18.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:31:05
2025-11-24T13:31:18.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:31:18.786 [DEBUG] [Thread-190860] [transport.py] [_log()] starting thread (client mode): 0xd0711120
2025-11-24T13:31:18.786 [DEBUG] [Thread-190860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:31:18.807 [DEBUG] [Thread-190860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:31:18.807 [INFO] [Thread-190860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:31:18.810 [DEBUG] [Thread-190860] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] client lang: <none>
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] server lang: <none>
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] kex follows: False
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] Compression: none
2025-11-24T13:31:18.811 [DEBUG] [Thread-190860] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:31:18.829 [DEBUG] [Thread-190860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:31:18.830 [DEBUG] [Thread-190860] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:31:18.830 [DEBUG] [Thread-190860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:31:18.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:31:18.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:31:18.832 [DEBUG] [Thread-190860] [transport.py] [_log()] userauth is OK
2025-11-24T13:31:18.833 [DEBUG] [Thread-190860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:31:18.833 [DEBUG] [Thread-190860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:31:18.833 [DEBUG] [Thread-190860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:31:18.833 [DEBUG] [Thread-190860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:31:18.857 [INFO] [Thread-190860] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:31:18.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:31:19.470 [DEBUG] [Thread-190860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:31:19.470 [DEBUG] [Thread-190860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:31:19.470 [DEBUG] [Thread-190860] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:31:19.511 [DEBUG] [Thread-190860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:31:19.511 [DEBUG] [Thread-190860] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:31:19.514 [DEBUG] [Thread-190860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:31:19.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:31:19.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:31:19.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:31:19.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:31:19.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:31:19.552 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:31:19.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:31:19.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:31:19.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:31:19.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.479562 -999.00  +21.90  17.85     25   +1.20 1 1 1 1 1   888    0 20.07 2.51 ----- 17.9 17.9 205.1 23.2 27.2 -24.7 26.1 -24.6 27.2 -23.1 28.2 -24.5
2025-11-24T13:31:19.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:31:19.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:31:19.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.479562
2025-11-24T13:31:19.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:31:19.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:31:19.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:31:19.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:31:19.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:31:19.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:31:05', tmtdew=23.39, humidity=20.83, cloud=0.0, wind=22.81, temperature=20.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:30:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:31:19.556 [DEBUG] [Thread-190860] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:31:19.639 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:31:19.648 [DEBUG] [Thread-190863] [transport.py] [_log()] starting thread (client mode): 0xd0711630
2025-11-24T13:31:19.648 [DEBUG] [Thread-190863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:31:19.663 [DEBUG] [Thread-190863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:31:19.664 [INFO] [Thread-190863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:31:19.671 [DEBUG] [Thread-190863] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:31:19.671 [DEBUG] [Thread-190863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:31:19.671 [DEBUG] [Thread-190863] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] client lang: <none>
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] server lang: <none>
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] kex follows: False
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] Compression: none
2025-11-24T13:31:19.672 [DEBUG] [Thread-190863] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:31:19.732 [DEBUG] [Thread-190863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:31:19.733 [DEBUG] [Thread-190863] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:31:19.734 [DEBUG] [Thread-190863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:31:19.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:31:19.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:31:19.790 [DEBUG] [Thread-190863] [transport.py] [_log()] userauth is OK
2025-11-24T13:31:19.791 [DEBUG] [Thread-190863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:31:19.791 [DEBUG] [Thread-190863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:31:19.791 [DEBUG] [Thread-190863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:31:19.791 [DEBUG] [Thread-190863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:31:19.817 [INFO] [Thread-190863] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:31:19.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:31:19.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:31:20.660 [DEBUG] [Thread-190863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:31:20.660 [DEBUG] [Thread-190863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:31:20.709 [DEBUG] [Thread-190863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:31:20.709 [DEBUG] [Thread-190863] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:31:20.718 [DEBUG] [Thread-190863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:31:20.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:31: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-11-24T13:31:20.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-11-24T13:31:20.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:31:20.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:31:20.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:31:20.764 [DEBUG] [Thread-190863] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:31:26.456 [DEBUG] [Thread-190865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:31:41.503 [DEBUG] [Thread-190866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:31:50.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:31:50.787 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:31:50.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-11-24T13:31:51.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 31, 38), 23.44, 20.79, 0.0, 24.42, 20.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:31:51.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:31:38
2025-11-24T13:31:51.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:31:51.800 [DEBUG] [Thread-190867] [transport.py] [_log()] starting thread (client mode): 0xd31b0a00
2025-11-24T13:31:51.800 [DEBUG] [Thread-190867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:31:51.819 [DEBUG] [Thread-190867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:31:51.819 [INFO] [Thread-190867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:31:51.822 [DEBUG] [Thread-190867] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:31:51.822 [DEBUG] [Thread-190867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:31:51.822 [DEBUG] [Thread-190867] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:31:51.822 [DEBUG] [Thread-190867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:31:51.822 [DEBUG] [Thread-190867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:31:51.822 [DEBUG] [Thread-190867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] client lang: <none>
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] server lang: <none>
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] kex follows: False
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] Compression: none
2025-11-24T13:31:51.823 [DEBUG] [Thread-190867] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:31:51.839 [DEBUG] [Thread-190867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:31:51.839 [DEBUG] [Thread-190867] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:31:51.839 [DEBUG] [Thread-190867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:31:51.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:31:51.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:31:51.840 [DEBUG] [Thread-190867] [transport.py] [_log()] userauth is OK
2025-11-24T13:31:51.840 [DEBUG] [Thread-190867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:31:51.840 [DEBUG] [Thread-190867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:31:51.840 [DEBUG] [Thread-190867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:31:51.840 [DEBUG] [Thread-190867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:31:51.867 [INFO] [Thread-190867] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:31:51.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:31:52.507 [DEBUG] [Thread-190867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:31:52.507 [DEBUG] [Thread-190867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:31:52.507 [DEBUG] [Thread-190867] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:31:52.548 [DEBUG] [Thread-190867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:31:52.548 [DEBUG] [Thread-190867] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:31:52.558 [DEBUG] [Thread-190867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:31:52.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:31:52.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:31:52.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:31:52.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:31:52.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:31:52.576 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:31:52.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:31:52.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:31:52.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:31:52.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.479909 -999.00  +22.00  22.95     25   +1.20 1 1 1 1 1   888    0 19.78 3.81 ----- 22.9 22.9 202.8 30.2 27.2 -25.9 26.4 -25.5 27.3 -23.6 28.1 -27.0
2025-11-24T13:31:52.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:31:52.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:31:52.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.479909
2025-11-24T13:31:52.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:31:52.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:31:52.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:31:52.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:31:52.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:31:52.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:31:38', tmtdew=23.44, humidity=20.79, cloud=0.0, wind=24.42, temperature=20.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:31:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:31:52.583 [DEBUG] [Thread-190867] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:31:52.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:31:52.677 [DEBUG] [Thread-190870] [transport.py] [_log()] starting thread (client mode): 0xd31b3d60
2025-11-24T13:31:52.677 [DEBUG] [Thread-190870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:31:52.693 [DEBUG] [Thread-190870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:31:52.694 [INFO] [Thread-190870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:31:52.701 [DEBUG] [Thread-190870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:31:52.701 [DEBUG] [Thread-190870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:31:52.701 [DEBUG] [Thread-190870] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:31:52.701 [DEBUG] [Thread-190870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:31:52.701 [DEBUG] [Thread-190870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:31:52.701 [DEBUG] [Thread-190870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:31:52.701 [DEBUG] [Thread-190870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] client lang: <none>
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] server lang: <none>
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] kex follows: False
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] Compression: none
2025-11-24T13:31:52.702 [DEBUG] [Thread-190870] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:31:52.766 [DEBUG] [Thread-190870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:31:52.767 [DEBUG] [Thread-190870] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:31:52.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:31:52.768 [DEBUG] [Thread-190870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:31:52.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:31:52.826 [DEBUG] [Thread-190870] [transport.py] [_log()] userauth is OK
2025-11-24T13:31:52.827 [DEBUG] [Thread-190870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:31:52.827 [DEBUG] [Thread-190870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:31:52.827 [DEBUG] [Thread-190870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:31:52.827 [DEBUG] [Thread-190870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:31:52.846 [INFO] [Thread-190870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:31:52.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:31:52.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:31:53.663 [DEBUG] [Thread-190870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:31:53.664 [DEBUG] [Thread-190870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:31:53.712 [DEBUG] [Thread-190870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:31:53.712 [DEBUG] [Thread-190870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:31:53.721 [DEBUG] [Thread-190870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:31:53.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:31:53.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-11-24T13:31:53.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-11-24T13:31:53.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:31:53.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:31:53.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:31:53.758 [DEBUG] [Thread-190870] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:31:56.546 [DEBUG] [Thread-190872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:32:00.705 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:32:00.706 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:32:01.720 [DEBUG] [Thread-190873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:32:11.596 [DEBUG] [Thread-190874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:32:23.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:32:23.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:32:23.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-11-24T13:32:24.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 32, 10), 23.48, 20.74, 0.0, 24.37, 20.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:32:24.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:32:10
2025-11-24T13:32:24.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:32:24.844 [DEBUG] [Thread-190875] [transport.py] [_log()] starting thread (client mode): 0xc9b83bb0
2025-11-24T13:32:24.845 [DEBUG] [Thread-190875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:32:24.865 [DEBUG] [Thread-190875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:32:24.865 [INFO] [Thread-190875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:32:24.868 [DEBUG] [Thread-190875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:32:24.868 [DEBUG] [Thread-190875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:32:24.868 [DEBUG] [Thread-190875] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:32:24.868 [DEBUG] [Thread-190875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] client lang: <none>
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] server lang: <none>
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] kex follows: False
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:32:24.869 [DEBUG] [Thread-190875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:32:24.870 [DEBUG] [Thread-190875] [transport.py] [_log()] Compression: none
2025-11-24T13:32:24.870 [DEBUG] [Thread-190875] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:32:24.888 [DEBUG] [Thread-190875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:32:24.889 [DEBUG] [Thread-190875] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:32:24.890 [DEBUG] [Thread-190875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:32:24.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:32:24.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:32:24.933 [DEBUG] [Thread-190875] [transport.py] [_log()] userauth is OK
2025-11-24T13:32:24.934 [DEBUG] [Thread-190875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:32:24.934 [DEBUG] [Thread-190875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:32:24.934 [DEBUG] [Thread-190875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:32:24.934 [DEBUG] [Thread-190875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:32:24.972 [INFO] [Thread-190875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:32:24.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:32:25.612 [DEBUG] [Thread-190875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:32:25.612 [DEBUG] [Thread-190875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:32:25.622 [DEBUG] [Thread-190875] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:32:25.653 [DEBUG] [Thread-190875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:32:25.653 [DEBUG] [Thread-190875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:32:25.656 [DEBUG] [Thread-190875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:32:25.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:32:25.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:32:25.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:32:25.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:32:25.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:32:25.674 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:32:25.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:32:25.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:32:25.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:32:25.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.480256 -999.00  +21.80  17.34     25   +1.20 1 1 1 1 1   888    0 20.13 9.05 ----- 17.3 17.3 183.0 32.1 27.2 -27.2 26.3 -26.1 27.3 -24.3 28.2 -26.9
2025-11-24T13:32:25.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:32:25.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:32:25.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.480256
2025-11-24T13:32:25.680 [DEBUG] [Thread-190875] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:32:25.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:32:25.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:32:25.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:32:25.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:32:25.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:32:25.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:32:10', tmtdew=23.48, humidity=20.74, cloud=0.0, wind=24.37, temperature=20.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:31:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:32:25.759 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:32:25.770 [DEBUG] [Thread-190878] [transport.py] [_log()] starting thread (client mode): 0xd07118d0
2025-11-24T13:32:25.770 [DEBUG] [Thread-190878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:32:25.785 [DEBUG] [Thread-190878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:32:25.785 [INFO] [Thread-190878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] client lang: <none>
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] server lang: <none>
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] kex follows: False
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:32:25.793 [DEBUG] [Thread-190878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:32:25.794 [DEBUG] [Thread-190878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:32:25.794 [DEBUG] [Thread-190878] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:32:25.794 [DEBUG] [Thread-190878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:32:25.794 [DEBUG] [Thread-190878] [transport.py] [_log()] Compression: none
2025-11-24T13:32:25.794 [DEBUG] [Thread-190878] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:32:25.848 [DEBUG] [Thread-190878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:32:25.848 [DEBUG] [Thread-190878] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:32:25.849 [DEBUG] [Thread-190878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:32:25.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:32:25.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:32:25.905 [DEBUG] [Thread-190878] [transport.py] [_log()] userauth is OK
2025-11-24T13:32:25.905 [DEBUG] [Thread-190878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:32:25.905 [DEBUG] [Thread-190878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:32:25.905 [DEBUG] [Thread-190878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:32:25.905 [DEBUG] [Thread-190878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:32:25.920 [INFO] [Thread-190878] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:32:25.920 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:32:25.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:32:26.631 [DEBUG] [Thread-190880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:32:26.786 [DEBUG] [Thread-190878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:32:26.786 [DEBUG] [Thread-190878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:32:26.835 [DEBUG] [Thread-190878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:32:26.835 [DEBUG] [Thread-190878] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:32:26.844 [DEBUG] [Thread-190878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:32:26.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:32:26.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-11-24T13:32:26.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-11-24T13:32:26.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:32:26.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:32:26.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:32:26.891 [DEBUG] [Thread-190878] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:32:41.682 [DEBUG] [Thread-190881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:32:56.720 [DEBUG] [Thread-190882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:32:56.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:32:56.913 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:32:56.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-11-24T13:32:57.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 32, 42), 22.86, 21.22, 0.0, 23.38, 20.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:32:57.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:32:42
2025-11-24T13:32:57.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:32:57.936 [DEBUG] [Thread-190883] [transport.py] [_log()] starting thread (client mode): 0xc9b83d60
2025-11-24T13:32:57.936 [DEBUG] [Thread-190883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:32:57.957 [DEBUG] [Thread-190883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:32:57.957 [INFO] [Thread-190883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] client lang: <none>
2025-11-24T13:32:57.967 [DEBUG] [Thread-190883] [transport.py] [_log()] server lang: <none>
2025-11-24T13:32:57.968 [DEBUG] [Thread-190883] [transport.py] [_log()] kex follows: False
2025-11-24T13:32:57.968 [DEBUG] [Thread-190883] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:32:57.968 [DEBUG] [Thread-190883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:32:57.968 [DEBUG] [Thread-190883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:32:57.968 [DEBUG] [Thread-190883] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:32:57.968 [DEBUG] [Thread-190883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:32:57.968 [DEBUG] [Thread-190883] [transport.py] [_log()] Compression: none
2025-11-24T13:32:57.968 [DEBUG] [Thread-190883] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:32:57.988 [DEBUG] [Thread-190883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:32:57.988 [DEBUG] [Thread-190883] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:32:57.989 [DEBUG] [Thread-190883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:32:57.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:32:57.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:32:57.991 [DEBUG] [Thread-190883] [transport.py] [_log()] userauth is OK
2025-11-24T13:32:57.991 [DEBUG] [Thread-190883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:32:57.991 [DEBUG] [Thread-190883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:32:57.991 [DEBUG] [Thread-190883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:32:57.991 [DEBUG] [Thread-190883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:32:58.027 [INFO] [Thread-190883] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:32:58.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:32:58.669 [DEBUG] [Thread-190883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:32:58.670 [DEBUG] [Thread-190883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:32:58.670 [DEBUG] [Thread-190883] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:32:58.710 [DEBUG] [Thread-190883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:32:58.710 [DEBUG] [Thread-190883] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:32:58.713 [DEBUG] [Thread-190883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:32:58.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:32:58.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:32:58.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:32:58.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:32:58.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:32:58.737 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:32:58.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:32:58.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:32:58.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:32:58.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.480604 -999.00  +21.60  15.86     25   +1.10 1 1 1 1 1   888    0 21.11 20.89 ----- 15.9 15.9 187.1 20.4 27.3 -25.7 26.3 -26.3 27.4 -23.9 28.2 -27.5
2025-11-24T13:32:58.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:32:58.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:32:58.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.480604
2025-11-24T13:32:58.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:32:58.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:32:58.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:32:58.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:32:58.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:32:58.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:32:42', tmtdew=22.86, humidity=21.22, cloud=0.0, wind=23.38, temperature=20.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:32:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:32:58.740 [DEBUG] [Thread-190883] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:32:58.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:32:58.836 [DEBUG] [Thread-190886] [transport.py] [_log()] starting thread (client mode): 0xd0712530
2025-11-24T13:32:58.836 [DEBUG] [Thread-190886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:32:58.851 [DEBUG] [Thread-190886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:32:58.851 [INFO] [Thread-190886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:32:58.859 [DEBUG] [Thread-190886] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:32:58.859 [DEBUG] [Thread-190886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:32:58.859 [DEBUG] [Thread-190886] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:32:58.859 [DEBUG] [Thread-190886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:32:58.859 [DEBUG] [Thread-190886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:32:58.859 [DEBUG] [Thread-190886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:32:58.860 [DEBUG] [Thread-190886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:32:58.860 [DEBUG] [Thread-190886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:32:58.860 [DEBUG] [Thread-190886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:32:58.860 [DEBUG] [Thread-190886] [transport.py] [_log()] client lang: <none>
2025-11-24T13:32:58.860 [DEBUG] [Thread-190886] [transport.py] [_log()] server lang: <none>
2025-11-24T13:32:58.860 [DEBUG] [Thread-190886] [transport.py] [_log()] kex follows: False
2025-11-24T13:32:58.860 [DEBUG] [Thread-190886] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:32:58.860 [DEBUG] [Thread-190886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:32:58.861 [DEBUG] [Thread-190886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:32:58.861 [DEBUG] [Thread-190886] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:32:58.861 [DEBUG] [Thread-190886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:32:58.861 [DEBUG] [Thread-190886] [transport.py] [_log()] Compression: none
2025-11-24T13:32:58.861 [DEBUG] [Thread-190886] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:32:58.917 [DEBUG] [Thread-190886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:32:58.918 [DEBUG] [Thread-190886] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:32:58.918 [DEBUG] [Thread-190886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:32:58.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:32:58.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:32:58.973 [DEBUG] [Thread-190886] [transport.py] [_log()] userauth is OK
2025-11-24T13:32:58.974 [DEBUG] [Thread-190886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:32:58.974 [DEBUG] [Thread-190886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:32:58.974 [DEBUG] [Thread-190886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:32:58.974 [DEBUG] [Thread-190886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:32:58.993 [INFO] [Thread-190886] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:32:58.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:32:58.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:32:59.860 [DEBUG] [Thread-190886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:32:59.861 [DEBUG] [Thread-190886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:32:59.908 [DEBUG] [Thread-190886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:32:59.908 [DEBUG] [Thread-190886] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:32:59.916 [DEBUG] [Thread-190886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:32:59.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:32:59.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-11-24T13:32:59.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-11-24T13:32:59.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:32:59.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:32:59.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:32:59.949 [DEBUG] [Thread-190886] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:33:00.858 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:33:00.859 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:33:01.991 [DEBUG] [Thread-190888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:33:11.763 [DEBUG] [Thread-190889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:33:26.799 [DEBUG] [Thread-190890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:33:29.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:33:29.969 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:33:29.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-11-24T13:33:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 33, 15), 22.86, 21.27, 0.0, 24.14, 20.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:33:30.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:33:15
2025-11-24T13:33:30.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:33:31.008 [DEBUG] [Thread-190891] [transport.py] [_log()] starting thread (client mode): 0xd0700ca0
2025-11-24T13:33:31.008 [DEBUG] [Thread-190891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:33:31.027 [DEBUG] [Thread-190891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:33:31.028 [INFO] [Thread-190891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] client lang: <none>
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] server lang: <none>
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] kex follows: False
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:33:31.031 [DEBUG] [Thread-190891] [transport.py] [_log()] Compression: none
2025-11-24T13:33:31.032 [DEBUG] [Thread-190891] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:33:31.046 [DEBUG] [Thread-190891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:33:31.046 [DEBUG] [Thread-190891] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:33:31.046 [DEBUG] [Thread-190891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:33:31.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:33:31.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:33:31.047 [DEBUG] [Thread-190891] [transport.py] [_log()] userauth is OK
2025-11-24T13:33:31.047 [DEBUG] [Thread-190891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:33:31.047 [DEBUG] [Thread-190891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:33:31.047 [DEBUG] [Thread-190891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:33:31.047 [DEBUG] [Thread-190891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:33:31.062 [INFO] [Thread-190891] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:33:31.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:33:31.656 [DEBUG] [Thread-190891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:33:31.656 [DEBUG] [Thread-190891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:33:31.656 [DEBUG] [Thread-190891] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:33:31.696 [DEBUG] [Thread-190891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:33:31.696 [DEBUG] [Thread-190891] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:33:31.698 [DEBUG] [Thread-190891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:33:31.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:33:31.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:33:31.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:33:31.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:33:31.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:33:31.717 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:33:31.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.480951 -999.00  +21.40  15.95     26   +1.10 1 1 1 1 1   888    0 21.08 31.96 ----- 15.9 15.9 213.8 22.9 27.2 -26.6 26.1 -28.5 27.2 -24.9 28.3 -25.8
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.480951
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:33:31.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:33:15', tmtdew=22.86, humidity=21.27, cloud=0.0, wind=24.14, temperature=20.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:32:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:33:31.718 [DEBUG] [Thread-190891] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:33:31.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:33:31.804 [DEBUG] [Thread-190894] [transport.py] [_log()] starting thread (client mode): 0xc9b806d0
2025-11-24T13:33:31.804 [DEBUG] [Thread-190894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:33:31.820 [DEBUG] [Thread-190894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:33:31.820 [INFO] [Thread-190894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:33:31.827 [DEBUG] [Thread-190894] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:33:31.827 [DEBUG] [Thread-190894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:33:31.827 [DEBUG] [Thread-190894] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:33:31.827 [DEBUG] [Thread-190894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:33:31.827 [DEBUG] [Thread-190894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:33:31.827 [DEBUG] [Thread-190894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:33:31.827 [DEBUG] [Thread-190894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] client lang: <none>
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] server lang: <none>
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] kex follows: False
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] Compression: none
2025-11-24T13:33:31.828 [DEBUG] [Thread-190894] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:33:31.884 [DEBUG] [Thread-190894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:33:31.884 [DEBUG] [Thread-190894] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:33:31.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:33:31.885 [DEBUG] [Thread-190894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:33:31.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:33:31.942 [DEBUG] [Thread-190894] [transport.py] [_log()] userauth is OK
2025-11-24T13:33:31.942 [DEBUG] [Thread-190894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:33:31.942 [DEBUG] [Thread-190894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:33:31.942 [DEBUG] [Thread-190894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:33:31.942 [DEBUG] [Thread-190894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:33:31.965 [INFO] [Thread-190894] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:33:31.966 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:33:31.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:33:32.803 [DEBUG] [Thread-190894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:33:32.804 [DEBUG] [Thread-190894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:33:32.852 [DEBUG] [Thread-190894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:33:32.852 [DEBUG] [Thread-190894] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:33:32.861 [DEBUG] [Thread-190894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:33:32.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:33:32.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-11-24T13:33:32.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-11-24T13:33:32.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:33:32.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:33:32.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:33:32.898 [DEBUG] [Thread-190894] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:33:41.830 [DEBUG] [Thread-190896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:33:56.883 [DEBUG] [Thread-190897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:34:00.998 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:34:00.999 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:34:02.239 [DEBUG] [Thread-190898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:34:02.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:34:02.894 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:34:02.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T13:34:03.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 33, 47), 23.18, 20.95, 0.0, 18.53, 21.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:34:03.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:33:47
2025-11-24T13:34:03.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:34:04.126 [DEBUG] [Thread-190899] [transport.py] [_log()] starting thread (client mode): 0xd3152b00
2025-11-24T13:34:04.126 [DEBUG] [Thread-190899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:34:04.147 [DEBUG] [Thread-190899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:34:04.147 [INFO] [Thread-190899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:34:04.150 [DEBUG] [Thread-190899] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:34:04.150 [DEBUG] [Thread-190899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] client lang: <none>
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] server lang: <none>
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] kex follows: False
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] Compression: none
2025-11-24T13:34:04.151 [DEBUG] [Thread-190899] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:34:04.166 [DEBUG] [Thread-190899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:34:04.166 [DEBUG] [Thread-190899] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:34:04.166 [DEBUG] [Thread-190899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:34:04.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:34:04.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:34:04.166 [DEBUG] [Thread-190899] [transport.py] [_log()] userauth is OK
2025-11-24T13:34:04.166 [DEBUG] [Thread-190899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:34:04.166 [DEBUG] [Thread-190899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:34:04.166 [DEBUG] [Thread-190899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:34:04.167 [DEBUG] [Thread-190899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:34:04.176 [INFO] [Thread-190899] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:34:04.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:34:04.818 [DEBUG] [Thread-190899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:34:04.818 [DEBUG] [Thread-190899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:34:04.818 [DEBUG] [Thread-190899] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:34:04.859 [DEBUG] [Thread-190899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:34:04.859 [DEBUG] [Thread-190899] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:34:04.861 [DEBUG] [Thread-190899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:34:04.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:34:04.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:34:04.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:34:04.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:34:04.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:34:04.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:34:04.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.481645 -999.00  +21.70  19.46     25   +1.10 1 1 1 1 1   888    0 21.99 58.87 ----- 19.5 19.5 193.2 24.9 27.4 -25.6 26.4 -28.2 27.5 -24.0 28.4 -26.1
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.481645
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:34:04.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:33:47', tmtdew=23.18, humidity=20.95, cloud=0.0, wind=18.53, temperature=21.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:33:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:34:04.884 [DEBUG] [Thread-190899] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:34:04.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:34:04.969 [DEBUG] [Thread-190902] [transport.py] [_log()] starting thread (client mode): 0xd0700a60
2025-11-24T13:34:04.969 [DEBUG] [Thread-190902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:34:04.983 [DEBUG] [Thread-190902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:34:04.984 [INFO] [Thread-190902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:34:04.991 [DEBUG] [Thread-190902] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:34:04.991 [DEBUG] [Thread-190902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:34:04.991 [DEBUG] [Thread-190902] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:34:04.991 [DEBUG] [Thread-190902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:34:04.991 [DEBUG] [Thread-190902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:34:04.991 [DEBUG] [Thread-190902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:34:04.991 [DEBUG] [Thread-190902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:34:04.991 [DEBUG] [Thread-190902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:34:04.991 [DEBUG] [Thread-190902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:34:04.992 [DEBUG] [Thread-190902] [transport.py] [_log()] client lang: <none>
2025-11-24T13:34:04.992 [DEBUG] [Thread-190902] [transport.py] [_log()] server lang: <none>
2025-11-24T13:34:04.992 [DEBUG] [Thread-190902] [transport.py] [_log()] kex follows: False
2025-11-24T13:34:04.992 [DEBUG] [Thread-190902] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:34:04.992 [DEBUG] [Thread-190902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:34:04.992 [DEBUG] [Thread-190902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:34:04.992 [DEBUG] [Thread-190902] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:34:04.992 [DEBUG] [Thread-190902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:34:04.992 [DEBUG] [Thread-190902] [transport.py] [_log()] Compression: none
2025-11-24T13:34:04.992 [DEBUG] [Thread-190902] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:34:05.049 [DEBUG] [Thread-190902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:34:05.049 [DEBUG] [Thread-190902] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:34:05.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:34:05.049 [DEBUG] [Thread-190902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:34:05.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:34:05.110 [DEBUG] [Thread-190902] [transport.py] [_log()] userauth is OK
2025-11-24T13:34:05.110 [DEBUG] [Thread-190902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:34:05.110 [DEBUG] [Thread-190902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:34:05.110 [DEBUG] [Thread-190902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:34:05.110 [DEBUG] [Thread-190902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:34:05.124 [INFO] [Thread-190902] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:34: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-11-24T13:34:05.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:34:05.979 [DEBUG] [Thread-190902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:34:05.979 [DEBUG] [Thread-190902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:34:06.027 [DEBUG] [Thread-190902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:34:06.027 [DEBUG] [Thread-190902] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:34:06.035 [DEBUG] [Thread-190902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:34:06.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:34:06.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-11-24T13:34:06.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-11-24T13:34:06.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:34:06.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:34:06.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:34:06.067 [DEBUG] [Thread-190902] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:34:11.920 [DEBUG] [Thread-190904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:34:26.971 [DEBUG] [Thread-190905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:34:36.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:34:36.090 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:34:36.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-11-24T13:34:36.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 34, 20), 23.37, 20.7, 0.0, 17.29, 21.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:34:36.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:34:20
2025-11-24T13:34:37.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:34:37.208 [DEBUG] [Thread-190906] [transport.py] [_log()] starting thread (client mode): 0xd0700fa0
2025-11-24T13:34:37.208 [DEBUG] [Thread-190906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:34:37.230 [DEBUG] [Thread-190906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:34:37.230 [INFO] [Thread-190906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:34:37.234 [DEBUG] [Thread-190906] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:34:37.234 [DEBUG] [Thread-190906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:34:37.234 [DEBUG] [Thread-190906] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:34:37.234 [DEBUG] [Thread-190906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:34:37.234 [DEBUG] [Thread-190906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] client lang: <none>
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] server lang: <none>
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] kex follows: False
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] Compression: none
2025-11-24T13:34:37.235 [DEBUG] [Thread-190906] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:34:37.253 [DEBUG] [Thread-190906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:34:37.254 [DEBUG] [Thread-190906] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:34:37.254 [DEBUG] [Thread-190906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:34:37.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:34:37.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:34:37.256 [DEBUG] [Thread-190906] [transport.py] [_log()] userauth is OK
2025-11-24T13:34:37.257 [DEBUG] [Thread-190906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:34:37.257 [DEBUG] [Thread-190906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:34:37.257 [DEBUG] [Thread-190906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:34:37.257 [DEBUG] [Thread-190906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:34:37.274 [INFO] [Thread-190906] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:34:37.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:34:37.894 [DEBUG] [Thread-190906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:34:37.895 [DEBUG] [Thread-190906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:34:37.895 [DEBUG] [Thread-190906] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:34:37.935 [DEBUG] [Thread-190906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:34:37.936 [DEBUG] [Thread-190906] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:34:37.939 [DEBUG] [Thread-190906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:34:37.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:34:37.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:34:37.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:34:37.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:34:37.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:34:37.973 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:34:37.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:34:37.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:34:37.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:34:37.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.481992 -999.00  +21.80   9.40     25   +1.30 1 1 1 1 1   888    0 22.10 68.17 ----- 9.4 9.4 184.5 29.4 27.5 -25.7 26.4 -26.7 27.5 -23.4 28.3 -25.7
2025-11-24T13:34:37.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:34:37.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:34:37.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.481992
2025-11-24T13:34:37.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:34:37.976 [DEBUG] [Thread-190906] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:34:37.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:34:37.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:34:37.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:34:37.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:34:37.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:34:20', tmtdew=23.37, humidity=20.7, cloud=0.0, wind=17.29, temperature=21.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:34:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:34:38.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:34:38.072 [DEBUG] [Thread-190909] [transport.py] [_log()] starting thread (client mode): 0xd317fd60
2025-11-24T13:34:38.072 [DEBUG] [Thread-190909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:34:38.087 [DEBUG] [Thread-190909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:34:38.087 [INFO] [Thread-190909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:34:38.095 [DEBUG] [Thread-190909] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:34:38.095 [DEBUG] [Thread-190909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:34:38.095 [DEBUG] [Thread-190909] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:34:38.095 [DEBUG] [Thread-190909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:34:38.095 [DEBUG] [Thread-190909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:34:38.095 [DEBUG] [Thread-190909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:34:38.096 [DEBUG] [Thread-190909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:34:38.096 [DEBUG] [Thread-190909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:34:38.096 [DEBUG] [Thread-190909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:34:38.096 [DEBUG] [Thread-190909] [transport.py] [_log()] client lang: <none>
2025-11-24T13:34:38.096 [DEBUG] [Thread-190909] [transport.py] [_log()] server lang: <none>
2025-11-24T13:34:38.096 [DEBUG] [Thread-190909] [transport.py] [_log()] kex follows: False
2025-11-24T13:34:38.096 [DEBUG] [Thread-190909] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:34:38.096 [DEBUG] [Thread-190909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:34:38.097 [DEBUG] [Thread-190909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:34:38.097 [DEBUG] [Thread-190909] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:34:38.098 [DEBUG] [Thread-190909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:34:38.098 [DEBUG] [Thread-190909] [transport.py] [_log()] Compression: none
2025-11-24T13:34:38.098 [DEBUG] [Thread-190909] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:34:38.156 [DEBUG] [Thread-190909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:34:38.156 [DEBUG] [Thread-190909] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:34:38.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:34:38.158 [DEBUG] [Thread-190909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:34:38.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:34:38.217 [DEBUG] [Thread-190909] [transport.py] [_log()] userauth is OK
2025-11-24T13:34:38.217 [DEBUG] [Thread-190909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:34:38.217 [DEBUG] [Thread-190909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:34:38.218 [DEBUG] [Thread-190909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:34:38.218 [DEBUG] [Thread-190909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:34:38.239 [INFO] [Thread-190909] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:34:38.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:34:38.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:34:39.068 [DEBUG] [Thread-190909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:34:39.068 [DEBUG] [Thread-190909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:34:39.116 [DEBUG] [Thread-190909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:34:39.116 [DEBUG] [Thread-190909] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:34:39.125 [DEBUG] [Thread-190909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:34:39.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:34:39.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-11-24T13:34:39.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-11-24T13:34:39.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:34:39.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:34:39.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:34:39.158 [DEBUG] [Thread-190909] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:34:42.004 [DEBUG] [Thread-190911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:34:57.050 [DEBUG] [Thread-190912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:35:01.150 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:35:01.152 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:35:02.320 [DEBUG] [Thread-190913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:35:09.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:35:09.162 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:35:09.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-11-24T13:35:09.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 34, 52), 23.15, 21.02, 0.0, 15.16, 21.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:35:09.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:34:52
2025-11-24T13:35:10.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:35:10.283 [DEBUG] [Thread-190914] [transport.py] [_log()] starting thread (client mode): 0xc9b80490
2025-11-24T13:35:10.284 [DEBUG] [Thread-190914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:35:10.302 [DEBUG] [Thread-190914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:35:10.302 [INFO] [Thread-190914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:35:10.305 [DEBUG] [Thread-190914] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:35:10.305 [DEBUG] [Thread-190914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:35:10.305 [DEBUG] [Thread-190914] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:35:10.305 [DEBUG] [Thread-190914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] client lang: <none>
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] server lang: <none>
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] kex follows: False
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] Compression: none
2025-11-24T13:35:10.306 [DEBUG] [Thread-190914] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:35:10.326 [DEBUG] [Thread-190914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:35:10.326 [DEBUG] [Thread-190914] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:35:10.326 [DEBUG] [Thread-190914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:35:10.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:35:10.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:35:10.327 [DEBUG] [Thread-190914] [transport.py] [_log()] userauth is OK
2025-11-24T13:35:10.327 [DEBUG] [Thread-190914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:35:10.327 [DEBUG] [Thread-190914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:35:10.327 [DEBUG] [Thread-190914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:35:10.327 [DEBUG] [Thread-190914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:35:10.338 [INFO] [Thread-190914] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:35:10.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:35:12.081 [DEBUG] [Thread-190916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:35:17.233 [DEBUG] [Thread-190914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:35:17.233 [DEBUG] [Thread-190914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:35:17.233 [DEBUG] [Thread-190914] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:35:17.274 [DEBUG] [Thread-190914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:35:17.274 [DEBUG] [Thread-190914] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:35:17.277 [DEBUG] [Thread-190914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:35:17.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:35:17.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:35:17.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:35:17.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:35:17.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:35:17.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:35:17.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:35:17.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:35:17.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:35:17.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.482339 -999.00  +21.90  11.84     25   +1.30 1 1 1 1 1   888    0 22.10 79.29 ----- 11.8 11.8 186.6 26.9 27.5 -25.5 26.5 -27.0 27.5 -23.5 28.4 -26.8
2025-11-24T13:35:17.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:35:17.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:35:17.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.482339
2025-11-24T13:35:17.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:35:17.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:35:17.319 [DEBUG] [Thread-190914] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:35:17.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:35:17.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:35:17.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:35:17.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:34:52', tmtdew=23.15, humidity=21.02, cloud=0.0, wind=15.16, temperature=21.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:34:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:35:17.405 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:35:17.416 [DEBUG] [Thread-190918] [transport.py] [_log()] starting thread (client mode): 0xd0701480
2025-11-24T13:35:17.416 [DEBUG] [Thread-190918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:35:17.431 [DEBUG] [Thread-190918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:35:17.431 [INFO] [Thread-190918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:35:17.439 [DEBUG] [Thread-190918] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:35:17.439 [DEBUG] [Thread-190918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:35:17.439 [DEBUG] [Thread-190918] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:35:17.439 [DEBUG] [Thread-190918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:35:17.439 [DEBUG] [Thread-190918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:35:17.439 [DEBUG] [Thread-190918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:35:17.439 [DEBUG] [Thread-190918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:35:17.439 [DEBUG] [Thread-190918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:35:17.439 [DEBUG] [Thread-190918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:35:17.440 [DEBUG] [Thread-190918] [transport.py] [_log()] client lang: <none>
2025-11-24T13:35:17.440 [DEBUG] [Thread-190918] [transport.py] [_log()] server lang: <none>
2025-11-24T13:35:17.440 [DEBUG] [Thread-190918] [transport.py] [_log()] kex follows: False
2025-11-24T13:35:17.440 [DEBUG] [Thread-190918] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:35:17.440 [DEBUG] [Thread-190918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:35:17.440 [DEBUG] [Thread-190918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:35:17.440 [DEBUG] [Thread-190918] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:35:17.440 [DEBUG] [Thread-190918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:35:17.440 [DEBUG] [Thread-190918] [transport.py] [_log()] Compression: none
2025-11-24T13:35:17.440 [DEBUG] [Thread-190918] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:35:17.498 [DEBUG] [Thread-190918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:35:17.499 [DEBUG] [Thread-190918] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:35:17.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:35:17.500 [DEBUG] [Thread-190918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:35:17.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:35:17.554 [DEBUG] [Thread-190918] [transport.py] [_log()] userauth is OK
2025-11-24T13:35:17.555 [DEBUG] [Thread-190918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:35:17.555 [DEBUG] [Thread-190918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:35:17.555 [DEBUG] [Thread-190918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:35:17.555 [DEBUG] [Thread-190918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:35:17.574 [INFO] [Thread-190918] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:35:17.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:35:17.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:35:18.460 [DEBUG] [Thread-190918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:35:18.460 [DEBUG] [Thread-190918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:35:18.507 [DEBUG] [Thread-190918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:35:18.508 [DEBUG] [Thread-190918] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:35:18.517 [DEBUG] [Thread-190918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:35:18.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:35:18.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:35:18.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-11-24T13:35:18.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:35:18.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:35:18.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:35:18.561 [DEBUG] [Thread-190918] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:35:27.109 [DEBUG] [Thread-190920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:35:42.162 [DEBUG] [Thread-190921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:35:48.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:35:48.584 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:35:48.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T13:35:49.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 35, 24), 23.17, 21.02, 0.0, 16.45, 21.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:35:49.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:35:24
2025-11-24T13:35:49.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:35:49.751 [DEBUG] [Thread-190922] [transport.py] [_log()] starting thread (client mode): 0xc9b82140
2025-11-24T13:35:49.751 [DEBUG] [Thread-190922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:35:49.771 [DEBUG] [Thread-190922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:35:49.771 [INFO] [Thread-190922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:35:49.774 [DEBUG] [Thread-190922] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:35:49.774 [DEBUG] [Thread-190922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:35:49.774 [DEBUG] [Thread-190922] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:35:49.774 [DEBUG] [Thread-190922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] client lang: <none>
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] server lang: <none>
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] kex follows: False
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] Compression: none
2025-11-24T13:35:49.775 [DEBUG] [Thread-190922] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:35:49.791 [DEBUG] [Thread-190922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:35:49.791 [DEBUG] [Thread-190922] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:35:49.791 [DEBUG] [Thread-190922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:35:49.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:35:49.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:35:49.792 [DEBUG] [Thread-190922] [transport.py] [_log()] userauth is OK
2025-11-24T13:35:49.792 [DEBUG] [Thread-190922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:35:49.792 [DEBUG] [Thread-190922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:35:49.793 [DEBUG] [Thread-190922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:35:49.793 [DEBUG] [Thread-190922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:35:49.810 [INFO] [Thread-190922] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:35:49.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:35:50.421 [DEBUG] [Thread-190922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:35:50.422 [DEBUG] [Thread-190922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:35:50.422 [DEBUG] [Thread-190922] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:35:50.463 [DEBUG] [Thread-190922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:35:50.463 [DEBUG] [Thread-190922] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:35:50.466 [DEBUG] [Thread-190922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:35:50.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:35:50.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:35:50.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:35:50.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:35:50.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:35:50.484 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:35:50.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.482686 -999.00  +22.30  17.78     24   +1.10 1 1 1 1 1   888    0 22.58 87.51 ----- 17.8 17.8 186.1 22.4 27.7 -25.1 26.8 -26.6 27.7 -24.0 28.6 -25.4
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.482686
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:35:50.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:35:24', tmtdew=23.17, humidity=21.02, cloud=0.0, wind=16.45, temperature=21.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:35:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:35:50.485 [DEBUG] [Thread-190922] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:35:50.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:35:50.570 [DEBUG] [Thread-190925] [transport.py] [_log()] starting thread (client mode): 0xd0713490
2025-11-24T13:35:50.570 [DEBUG] [Thread-190925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:35:50.587 [DEBUG] [Thread-190925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:35:50.587 [INFO] [Thread-190925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] client lang: <none>
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] server lang: <none>
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] kex follows: False
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] Compression: none
2025-11-24T13:35:50.595 [DEBUG] [Thread-190925] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:35:50.656 [DEBUG] [Thread-190925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:35:50.657 [DEBUG] [Thread-190925] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:35:50.666 [DEBUG] [Thread-190925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:35:50.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:35:50.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:35:50.714 [DEBUG] [Thread-190925] [transport.py] [_log()] userauth is OK
2025-11-24T13:35:50.715 [DEBUG] [Thread-190925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:35:50.715 [DEBUG] [Thread-190925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:35:50.715 [DEBUG] [Thread-190925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:35:50.715 [DEBUG] [Thread-190925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:35:50.734 [INFO] [Thread-190925] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:35:50.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:35:50.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:35:51.606 [DEBUG] [Thread-190925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:35:51.606 [DEBUG] [Thread-190925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:35:51.655 [DEBUG] [Thread-190925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:35:51.655 [DEBUG] [Thread-190925] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:35:51.665 [DEBUG] [Thread-190925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:35:51.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:35:51.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-11-24T13:35:51.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-11-24T13:35:51.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:35:51.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:35:51.702 [DEBUG] [Thread-190925] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:35:51.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:35:57.207 [DEBUG] [Thread-190927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:36:01.294 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:36:01.295 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:36:02.418 [DEBUG] [Thread-190928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:36:12.253 [DEBUG] [Thread-190929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:36:21.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:36:21.733 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:36:21.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-11-24T13:36:22.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 35, 57), 23.46, 20.65, 0.0, 25.28, 21.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:36:22.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:35:57
2025-11-24T13:36:22.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:36:22.828 [DEBUG] [Thread-190930] [transport.py] [_log()] starting thread (client mode): 0xd0700df0
2025-11-24T13:36:22.828 [DEBUG] [Thread-190930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:36:22.849 [DEBUG] [Thread-190930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:36:22.849 [INFO] [Thread-190930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] client lang: <none>
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] server lang: <none>
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] kex follows: False
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:36:22.852 [DEBUG] [Thread-190930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:36:22.853 [DEBUG] [Thread-190930] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:36:22.853 [DEBUG] [Thread-190930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:36:22.853 [DEBUG] [Thread-190930] [transport.py] [_log()] Compression: none
2025-11-24T13:36:22.853 [DEBUG] [Thread-190930] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:36:22.870 [DEBUG] [Thread-190930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:36:22.870 [DEBUG] [Thread-190930] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:36:22.870 [DEBUG] [Thread-190930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:36:22.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:36:22.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:36:22.871 [DEBUG] [Thread-190930] [transport.py] [_log()] userauth is OK
2025-11-24T13:36:22.871 [DEBUG] [Thread-190930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:36:22.871 [DEBUG] [Thread-190930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:36:22.871 [DEBUG] [Thread-190930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:36:22.871 [DEBUG] [Thread-190930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:36:22.880 [INFO] [Thread-190930] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:36:22.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:36:23.493 [DEBUG] [Thread-190930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:36:23.493 [DEBUG] [Thread-190930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:36:23.493 [DEBUG] [Thread-190930] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:36:23.534 [DEBUG] [Thread-190930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:36:23.534 [DEBUG] [Thread-190930] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:36:23.536 [DEBUG] [Thread-190930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:36:23.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:36:23.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:36:23.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:36:23.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:36:23.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:36:23.556 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:36:23.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.483034 -999.00  +22.50  19.45     25   +1.50 1 1 1 1 1   888    0 23.46 96.34 ----- 19.4 19.4 163.0 26.8 27.8 -25.0 26.7 -28.6 27.8 -23.4 28.7 -25.1
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.483034
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:36:23.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:35:57', tmtdew=23.46, humidity=20.65, cloud=0.0, wind=25.28, temperature=21.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:35:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:36:23.557 [DEBUG] [Thread-190930] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:36:23.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:36:23.640 [DEBUG] [Thread-190933] [transport.py] [_log()] starting thread (client mode): 0xd31b33d0
2025-11-24T13:36:23.640 [DEBUG] [Thread-190933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:36:23.656 [DEBUG] [Thread-190933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:36:23.656 [INFO] [Thread-190933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:36:23.663 [DEBUG] [Thread-190933] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:36:23.663 [DEBUG] [Thread-190933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:36:23.663 [DEBUG] [Thread-190933] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] client lang: <none>
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] server lang: <none>
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] kex follows: False
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] Compression: none
2025-11-24T13:36:23.664 [DEBUG] [Thread-190933] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:36:23.721 [DEBUG] [Thread-190933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:36:23.721 [DEBUG] [Thread-190933] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:36:23.721 [DEBUG] [Thread-190933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:36:23.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:36:23.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:36:23.779 [DEBUG] [Thread-190933] [transport.py] [_log()] userauth is OK
2025-11-24T13:36:23.779 [DEBUG] [Thread-190933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:36:23.779 [DEBUG] [Thread-190933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:36:23.779 [DEBUG] [Thread-190933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:36:23.779 [DEBUG] [Thread-190933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:36:23.798 [INFO] [Thread-190933] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:36:23.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:36:23.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:36:24.677 [DEBUG] [Thread-190933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:36:24.677 [DEBUG] [Thread-190933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:36:24.724 [DEBUG] [Thread-190933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:36:24.725 [DEBUG] [Thread-190933] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:36:24.734 [DEBUG] [Thread-190933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:36:24.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:36:24.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-11-24T13:36:24.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-11-24T13:36:24.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:36:24.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:36:24.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:36:24.771 [DEBUG] [Thread-190933] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:36:27.287 [DEBUG] [Thread-190935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:36:42.338 [DEBUG] [Thread-190936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:36:54.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:36:54.784 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:36:54.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-11-24T13:36:55.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 36, 29), 23.41, 20.7, 0.0, 24.47, 21.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:36:55.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:36:29
2025-11-24T13:36:55.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:36:55.766 [DEBUG] [Thread-190937] [transport.py] [_log()] starting thread (client mode): 0xd07a8910
2025-11-24T13:36:55.766 [DEBUG] [Thread-190937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:36:55.787 [DEBUG] [Thread-190937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:36:55.787 [INFO] [Thread-190937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] client lang: <none>
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] server lang: <none>
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] kex follows: False
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:36:55.790 [DEBUG] [Thread-190937] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:36:55.791 [DEBUG] [Thread-190937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:36:55.791 [DEBUG] [Thread-190937] [transport.py] [_log()] Compression: none
2025-11-24T13:36:55.791 [DEBUG] [Thread-190937] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:36:55.806 [DEBUG] [Thread-190937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:36:55.806 [DEBUG] [Thread-190937] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:36:55.806 [DEBUG] [Thread-190937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:36:55.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:36:55.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:36:55.807 [DEBUG] [Thread-190937] [transport.py] [_log()] userauth is OK
2025-11-24T13:36:55.807 [DEBUG] [Thread-190937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:36:55.807 [DEBUG] [Thread-190937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:36:55.807 [DEBUG] [Thread-190937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:36:55.807 [DEBUG] [Thread-190937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:36:55.816 [INFO] [Thread-190937] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:36:55.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:36:56.472 [DEBUG] [Thread-190937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:36:56.472 [DEBUG] [Thread-190937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:36:56.473 [DEBUG] [Thread-190937] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:36:56.514 [DEBUG] [Thread-190937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:36:56.514 [DEBUG] [Thread-190937] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:36:56.518 [DEBUG] [Thread-190937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:36:56.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:36:56.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:36:56.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:36:56.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:36:56.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:36:56.552 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:36:56.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:36:56.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:36:56.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:36:56.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.483381 -999.00  +22.20  16.93     25   +1.30 1 1 1 1 1   888    0 23.32 95.56 ----- 16.9 16.9 176.0 24.9 27.9 -25.4 27.1 -24.9 27.9 -23.6 28.8 -25.9
2025-11-24T13:36:56.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:36:56.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:36:56.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.483381
2025-11-24T13:36:56.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:36:56.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:36:56.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:36:56.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:36:56.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:36:56.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:36:29', tmtdew=23.41, humidity=20.7, cloud=0.0, wind=24.47, temperature=21.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:36:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:36:56.556 [DEBUG] [Thread-190937] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:36:56.639 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:36:56.650 [DEBUG] [Thread-190940] [transport.py] [_log()] starting thread (client mode): 0xd07aa950
2025-11-24T13:36:56.651 [DEBUG] [Thread-190940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:36:56.665 [DEBUG] [Thread-190940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:36:56.665 [INFO] [Thread-190940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:36:56.673 [DEBUG] [Thread-190940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:36:56.674 [DEBUG] [Thread-190940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:36:56.674 [DEBUG] [Thread-190940] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:36:56.674 [DEBUG] [Thread-190940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:36:56.674 [DEBUG] [Thread-190940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:36:56.674 [DEBUG] [Thread-190940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:36:56.674 [DEBUG] [Thread-190940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:36:56.674 [DEBUG] [Thread-190940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:36:56.675 [DEBUG] [Thread-190940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:36:56.675 [DEBUG] [Thread-190940] [transport.py] [_log()] client lang: <none>
2025-11-24T13:36:56.675 [DEBUG] [Thread-190940] [transport.py] [_log()] server lang: <none>
2025-11-24T13:36:56.675 [DEBUG] [Thread-190940] [transport.py] [_log()] kex follows: False
2025-11-24T13:36:56.675 [DEBUG] [Thread-190940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:36:56.675 [DEBUG] [Thread-190940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:36:56.675 [DEBUG] [Thread-190940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:36:56.676 [DEBUG] [Thread-190940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:36:56.676 [DEBUG] [Thread-190940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:36:56.676 [DEBUG] [Thread-190940] [transport.py] [_log()] Compression: none
2025-11-24T13:36:56.677 [DEBUG] [Thread-190940] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:36:56.730 [DEBUG] [Thread-190940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:36:56.731 [DEBUG] [Thread-190940] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:36:56.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:36:56.732 [DEBUG] [Thread-190940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:36:56.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:36:56.786 [DEBUG] [Thread-190940] [transport.py] [_log()] userauth is OK
2025-11-24T13:36:56.787 [DEBUG] [Thread-190940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:36:56.787 [DEBUG] [Thread-190940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:36:56.787 [DEBUG] [Thread-190940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:36:56.787 [DEBUG] [Thread-190940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:36:56.806 [INFO] [Thread-190940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:36:56.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:36:56.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:36:57.371 [DEBUG] [Thread-190942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:36:57.660 [DEBUG] [Thread-190940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:36:57.660 [DEBUG] [Thread-190940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:36:57.708 [DEBUG] [Thread-190940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:36:57.708 [DEBUG] [Thread-190940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:36:57.717 [DEBUG] [Thread-190940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:36:57.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:36:57.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:36:57.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-11-24T13:36:57.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:36:57.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:36:57.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:36:57.763 [DEBUG] [Thread-190940] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:37:01.433 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:37:01.442 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:37:02.579 [DEBUG] [Thread-190943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:37:12.410 [DEBUG] [Thread-190944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:37:27.449 [DEBUG] [Thread-190945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:37:27.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:37:27.782 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:37:27.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-11-24T13:37:28.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 37, 2), 23.58, 20.47, 0.0, 23.82, 21.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:37:28.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:37:02
2025-11-24T13:37:28.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:37:28.922 [DEBUG] [Thread-190946] [transport.py] [_log()] starting thread (client mode): 0xd0710340
2025-11-24T13:37:28.922 [DEBUG] [Thread-190946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:37:28.933 [DEBUG] [Thread-190946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:37:28.933 [INFO] [Thread-190946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:37:28.935 [DEBUG] [Thread-190946] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] client lang: <none>
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] server lang: <none>
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] kex follows: False
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] Compression: none
2025-11-24T13:37:28.936 [DEBUG] [Thread-190946] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:37:28.948 [DEBUG] [Thread-190946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:37:28.950 [DEBUG] [Thread-190946] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:37:28.951 [DEBUG] [Thread-190946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:37:28.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:37:28.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:37:28.954 [DEBUG] [Thread-190946] [transport.py] [_log()] userauth is OK
2025-11-24T13:37:28.954 [DEBUG] [Thread-190946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:37:28.954 [DEBUG] [Thread-190946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:37:28.954 [DEBUG] [Thread-190946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:37:28.954 [DEBUG] [Thread-190946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:37:28.973 [INFO] [Thread-190946] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:37:28.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:37:29.585 [DEBUG] [Thread-190946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:37:29.585 [DEBUG] [Thread-190946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:37:29.586 [DEBUG] [Thread-190946] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:37:29.626 [DEBUG] [Thread-190946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:37:29.626 [DEBUG] [Thread-190946] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:37:29.628 [DEBUG] [Thread-190946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:37:29.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:37:29.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:37:29.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:37:29.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:37:29.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:37:29.648 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:37:29.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:37:29.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:37:29.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:37:29.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.483728 -999.00  +22.10  23.85     24   +0.70 1 1 1 1 1   888    0 22.50 92.19 ----- 23.9 23.9 189.8 38.6 27.9 -26.5 26.8 -29.2 27.9 -26.2 28.8 -25.8
2025-11-24T13:37:29.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:37:29.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:37:29.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.483728
2025-11-24T13:37:29.655 [DEBUG] [Thread-190946] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:37:29.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:37:29.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:37:29.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:37:29.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:37:29.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:37:29.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:37:02', tmtdew=23.58, humidity=20.47, cloud=0.0, wind=23.82, temperature=21.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:36:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:37:29.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:37:29.748 [DEBUG] [Thread-190949] [transport.py] [_log()] starting thread (client mode): 0xd07f9f60
2025-11-24T13:37:29.748 [DEBUG] [Thread-190949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:37:29.763 [DEBUG] [Thread-190949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:37:29.763 [INFO] [Thread-190949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] client lang: <none>
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] server lang: <none>
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] kex follows: False
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] Compression: none
2025-11-24T13:37:29.771 [DEBUG] [Thread-190949] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:37:29.829 [DEBUG] [Thread-190949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:37:29.829 [DEBUG] [Thread-190949] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:37:29.829 [DEBUG] [Thread-190949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:37:29.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:37:29.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:37:29.885 [DEBUG] [Thread-190949] [transport.py] [_log()] userauth is OK
2025-11-24T13:37:29.886 [DEBUG] [Thread-190949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:37:29.886 [DEBUG] [Thread-190949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:37:29.886 [DEBUG] [Thread-190949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:37:29.886 [DEBUG] [Thread-190949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:37:29.902 [INFO] [Thread-190949] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:37:29.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:37:29.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:37:30.773 [DEBUG] [Thread-190949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:37:30.773 [DEBUG] [Thread-190949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:37:30.811 [DEBUG] [Thread-190949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:37:30.812 [DEBUG] [Thread-190949] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:37:30.821 [DEBUG] [Thread-190949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:37:30.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:37: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')
2025-11-24T13:37:30.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-11-24T13:37:30.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:37:30.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:37:30.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:37:30.859 [DEBUG] [Thread-190949] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:37:42.483 [DEBUG] [Thread-190951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:37:57.545 [DEBUG] [Thread-190952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:38:00.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:38:00.882 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:38:00.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-11-24T13:38:01.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 37, 34), 24.06, 19.8, 0.0, 29.25, 21.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:38:01.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:37:34
2025-11-24T13:38:01.582 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:38:01.583 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:38:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:38:01.853 [DEBUG] [Thread-190953] [transport.py] [_log()] starting thread (client mode): 0xd07aa530
2025-11-24T13:38:01.853 [DEBUG] [Thread-190953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:38:01.873 [DEBUG] [Thread-190953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:38:01.873 [INFO] [Thread-190953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:38:01.876 [DEBUG] [Thread-190953] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:38:01.876 [DEBUG] [Thread-190953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:38:01.876 [DEBUG] [Thread-190953] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:38:01.876 [DEBUG] [Thread-190953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] client lang: <none>
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] server lang: <none>
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] kex follows: False
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] Compression: none
2025-11-24T13:38:01.877 [DEBUG] [Thread-190953] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:38:01.893 [DEBUG] [Thread-190953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:38:01.893 [DEBUG] [Thread-190953] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:38:01.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:38:01.894 [DEBUG] [Thread-190953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:38:01.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:38:01.896 [DEBUG] [Thread-190953] [transport.py] [_log()] userauth is OK
2025-11-24T13:38:01.897 [DEBUG] [Thread-190953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:38:01.897 [DEBUG] [Thread-190953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:38:01.897 [DEBUG] [Thread-190953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:38:01.897 [DEBUG] [Thread-190953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:38:01.921 [INFO] [Thread-190953] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:38:01.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:38:02.590 [DEBUG] [Thread-190953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:38:02.592 [DEBUG] [Thread-190953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:38:02.592 [DEBUG] [Thread-190953] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:38:02.631 [DEBUG] [Thread-190953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:38:02.631 [DEBUG] [Thread-190953] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:38:02.633 [DEBUG] [Thread-190953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:38:02.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:38:02.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:38:02.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:38:02.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:38:02.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:38:02.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:38:02.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:38:02.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:38:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:38:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.484076 -999.00  +21.60  31.49     24   +0.60 1 1 2 1 1   888    0 22.72 85.81 ----- 31.5 31.5 169.8 35.0 27.6 -28.0 26.4 -32.6 27.6 -28.0 28.5 -29.2
2025-11-24T13:38:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:38:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:38:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.484076
2025-11-24T13:38:02.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:38:02.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:38:02.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:38:02.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:38:02.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:38:02.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:37:34', tmtdew=24.06, humidity=19.8, cloud=0.0, wind=29.25, temperature=21.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:37:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:38:02.652 [DEBUG] [Thread-190953] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:38:02.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:38:02.740 [DEBUG] [Thread-190956] [transport.py] [_log()] starting thread (client mode): 0xd0711bd0
2025-11-24T13:38:02.740 [DEBUG] [Thread-190956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:38:02.747 [DEBUG] [Thread-190957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:38:02.755 [DEBUG] [Thread-190956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:38:02.755 [INFO] [Thread-190956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:38:02.762 [DEBUG] [Thread-190956] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:38:02.762 [DEBUG] [Thread-190956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:38:02.762 [DEBUG] [Thread-190956] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:38:02.762 [DEBUG] [Thread-190956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:38:02.762 [DEBUG] [Thread-190956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:38:02.762 [DEBUG] [Thread-190956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:38:02.762 [DEBUG] [Thread-190956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] client lang: <none>
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] server lang: <none>
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] kex follows: False
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] Compression: none
2025-11-24T13:38:02.763 [DEBUG] [Thread-190956] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:38:02.821 [DEBUG] [Thread-190956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:38:02.821 [DEBUG] [Thread-190956] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:38:02.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:38:02.821 [DEBUG] [Thread-190956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:38:02.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:38:02.878 [DEBUG] [Thread-190956] [transport.py] [_log()] userauth is OK
2025-11-24T13:38:02.878 [DEBUG] [Thread-190956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:38:02.878 [DEBUG] [Thread-190956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:38:02.878 [DEBUG] [Thread-190956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:38:02.879 [DEBUG] [Thread-190956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:38:02.898 [INFO] [Thread-190956] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:38:02.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:38:02.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:38:03.803 [DEBUG] [Thread-190956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:38:03.803 [DEBUG] [Thread-190956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:38:03.851 [DEBUG] [Thread-190956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:38:03.851 [DEBUG] [Thread-190956] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:38:03.859 [DEBUG] [Thread-190956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:38:03.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:38:03.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-11-24T13:38:03.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-11-24T13:38:03.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:38:03.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:38:03.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:38:03.891 [DEBUG] [Thread-190956] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:38:12.577 [DEBUG] [Thread-190959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:38:27.654 [DEBUG] [Thread-190960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:38:33.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:38:33.913 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:38: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-11-24T13:38:34.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 38, 6), 24.09, 19.74, 0.0, 25.13, 21.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:38:34.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:38:06
2025-11-24T13:38:34.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:38:35.041 [DEBUG] [Thread-190961] [transport.py] [_log()] starting thread (client mode): 0xd31520b0
2025-11-24T13:38:35.041 [DEBUG] [Thread-190961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:38:35.061 [DEBUG] [Thread-190961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:38:35.061 [INFO] [Thread-190961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] client lang: <none>
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] server lang: <none>
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] kex follows: False
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:38:35.062 [DEBUG] [Thread-190961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:38:35.063 [DEBUG] [Thread-190961] [transport.py] [_log()] Compression: none
2025-11-24T13:38:35.063 [DEBUG] [Thread-190961] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:38:35.070 [DEBUG] [Thread-190961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:38:35.070 [DEBUG] [Thread-190961] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:38:35.070 [DEBUG] [Thread-190961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:38:35.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:38:35.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:38:35.071 [DEBUG] [Thread-190961] [transport.py] [_log()] userauth is OK
2025-11-24T13:38:35.071 [DEBUG] [Thread-190961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:38:35.071 [DEBUG] [Thread-190961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:38:35.071 [DEBUG] [Thread-190961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:38:35.071 [DEBUG] [Thread-190961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:38:35.080 [INFO] [Thread-190961] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:38:35.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:38:35.741 [DEBUG] [Thread-190961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:38:35.741 [DEBUG] [Thread-190961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:38:35.741 [DEBUG] [Thread-190961] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:38:35.782 [DEBUG] [Thread-190961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:38:35.782 [DEBUG] [Thread-190961] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:38:35.784 [DEBUG] [Thread-190961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:38:35.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:38:35.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:38:35.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:38:35.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:38:35.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:38:35.801 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:38:35.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:38:35.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:38:35.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:38:35.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.484423 -999.00  +21.40  19.27     25   +0.60 1 1 1 1 1   888    0 23.22 87.05 ----- 19.3 19.3 162.9 28.7 27.6 -26.8 26.3 -27.2 27.6 -24.7 28.4 -26.8
2025-11-24T13:38:35.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:38:35.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:38:35.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.484423
2025-11-24T13:38:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:38:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:38:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:38:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:38:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:38:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:38:06', tmtdew=24.09, humidity=19.74, cloud=0.0, wind=25.13, temperature=21.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:37:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:38:35.802 [DEBUG] [Thread-190961] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:38:35.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:38:35.887 [DEBUG] [Thread-190964] [transport.py] [_log()] starting thread (client mode): 0xd3153880
2025-11-24T13:38:35.887 [DEBUG] [Thread-190964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:38:35.901 [DEBUG] [Thread-190964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:38:35.901 [INFO] [Thread-190964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:38:35.908 [DEBUG] [Thread-190964] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:38:35.908 [DEBUG] [Thread-190964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] client lang: <none>
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] server lang: <none>
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] kex follows: False
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] Compression: none
2025-11-24T13:38:35.909 [DEBUG] [Thread-190964] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:38:35.965 [DEBUG] [Thread-190964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:38:35.966 [DEBUG] [Thread-190964] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:38:35.966 [DEBUG] [Thread-190964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:38:35.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:38:35.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:38:36.022 [DEBUG] [Thread-190964] [transport.py] [_log()] userauth is OK
2025-11-24T13:38:36.022 [DEBUG] [Thread-190964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:38:36.022 [DEBUG] [Thread-190964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:38:36.022 [DEBUG] [Thread-190964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:38:36.022 [DEBUG] [Thread-190964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:38:36.035 [INFO] [Thread-190964] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:38:36.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:38:36.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:38:36.881 [DEBUG] [Thread-190964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:38:36.882 [DEBUG] [Thread-190964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:38:36.929 [DEBUG] [Thread-190964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:38:36.929 [DEBUG] [Thread-190964] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:38:36.938 [DEBUG] [Thread-190964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:38:36.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:38:36.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-11-24T13:38:36.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-11-24T13:38:36.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:38:36.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:38:36.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:38:36.969 [DEBUG] [Thread-190964] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:38:42.685 [DEBUG] [Thread-190966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:38:57.722 [DEBUG] [Thread-190967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:39:01.724 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:39:01.725 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:39:02.860 [DEBUG] [Thread-190968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:39:06.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:39:06.992 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:39:07.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-11-24T13:39:07.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 38, 39), 24.08, 19.4, 0.0, 27.05, 20.91, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:39:07.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:38:39
2025-11-24T13:39:08.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:39:08.160 [DEBUG] [Thread-190969] [transport.py] [_log()] starting thread (client mode): 0xd07e8bb0
2025-11-24T13:39:08.160 [DEBUG] [Thread-190969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:39:08.180 [DEBUG] [Thread-190969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:39:08.181 [INFO] [Thread-190969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:39:08.184 [DEBUG] [Thread-190969] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:39:08.184 [DEBUG] [Thread-190969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:39:08.184 [DEBUG] [Thread-190969] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:39:08.184 [DEBUG] [Thread-190969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] client lang: <none>
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] server lang: <none>
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] kex follows: False
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] Compression: none
2025-11-24T13:39:08.185 [DEBUG] [Thread-190969] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:39:08.202 [DEBUG] [Thread-190969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:39:08.203 [DEBUG] [Thread-190969] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:39:08.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:39:08.205 [DEBUG] [Thread-190969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:39:08.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:39:08.246 [DEBUG] [Thread-190969] [transport.py] [_log()] userauth is OK
2025-11-24T13:39:08.246 [DEBUG] [Thread-190969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:39:08.246 [DEBUG] [Thread-190969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:39:08.246 [DEBUG] [Thread-190969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:39:08.246 [DEBUG] [Thread-190969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:39:08.283 [INFO] [Thread-190969] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:39:08.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:39:08.934 [DEBUG] [Thread-190969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:39:08.934 [DEBUG] [Thread-190969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:39:08.934 [DEBUG] [Thread-190969] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:39:08.975 [DEBUG] [Thread-190969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:39:08.975 [DEBUG] [Thread-190969] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:39:08.977 [DEBUG] [Thread-190969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:39:08.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:39:09.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:39:09.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:39:09.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:39:09.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:39:09.006 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:39:09.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.484770 -999.00  +21.40  15.90     25   +0.70 1 1 1 1 1   888    0 22.48 82.25 ----- 15.9 15.9 165.0 23.6 27.6 -26.3 26.7 -27.1 27.7 -25.0 28.6 -26.5
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.484770
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:39:09.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:38:39', tmtdew=24.08, humidity=19.4, cloud=0.0, wind=27.05, temperature=20.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:38:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:39:09.007 [DEBUG] [Thread-190969] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:39:09.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:39:09.090 [DEBUG] [Thread-190972] [transport.py] [_log()] starting thread (client mode): 0xd07e9900
2025-11-24T13:39:09.090 [DEBUG] [Thread-190972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:39:09.104 [DEBUG] [Thread-190972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:39:09.104 [INFO] [Thread-190972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] client lang: <none>
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] server lang: <none>
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] kex follows: False
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] Compression: none
2025-11-24T13:39:09.112 [DEBUG] [Thread-190972] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:39:09.169 [DEBUG] [Thread-190972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:39:09.169 [DEBUG] [Thread-190972] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:39:09.169 [DEBUG] [Thread-190972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:39:09.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:39:09.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:39:09.226 [DEBUG] [Thread-190972] [transport.py] [_log()] userauth is OK
2025-11-24T13:39:09.226 [DEBUG] [Thread-190972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:39:09.226 [DEBUG] [Thread-190972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:39:09.226 [DEBUG] [Thread-190972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:39:09.226 [DEBUG] [Thread-190972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:39:09.239 [INFO] [Thread-190972] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:39:09.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:39:09.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:39:10.074 [DEBUG] [Thread-190972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:39:10.074 [DEBUG] [Thread-190972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:39:10.122 [DEBUG] [Thread-190972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:39:10.122 [DEBUG] [Thread-190972] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:39:10.130 [DEBUG] [Thread-190972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:39:10.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:39:10.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')
2025-11-24T13:39:10.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-11-24T13:39:10.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:39:10.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:39:10.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:39:10.163 [DEBUG] [Thread-190972] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:39:12.758 [DEBUG] [Thread-190974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:39:27.798 [DEBUG] [Thread-190975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:39:40.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:39:40.186 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:39:40.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-11-24T13:39:40.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 39, 11), 23.89, 19.72, 0.0, 29.96, 21.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:39:40.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:39:11
2025-11-24T13:39:41.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:39:41.239 [DEBUG] [Thread-190976] [transport.py] [_log()] starting thread (client mode): 0xd07e9510
2025-11-24T13:39:41.239 [DEBUG] [Thread-190976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:39:41.259 [DEBUG] [Thread-190976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:39:41.259 [INFO] [Thread-190976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] client lang: <none>
2025-11-24T13:39:41.263 [DEBUG] [Thread-190976] [transport.py] [_log()] server lang: <none>
2025-11-24T13:39:41.264 [DEBUG] [Thread-190976] [transport.py] [_log()] kex follows: False
2025-11-24T13:39:41.264 [DEBUG] [Thread-190976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:39:41.264 [DEBUG] [Thread-190976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:39:41.264 [DEBUG] [Thread-190976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:39:41.264 [DEBUG] [Thread-190976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:39:41.264 [DEBUG] [Thread-190976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:39:41.264 [DEBUG] [Thread-190976] [transport.py] [_log()] Compression: none
2025-11-24T13:39:41.264 [DEBUG] [Thread-190976] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:39:41.283 [DEBUG] [Thread-190976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:39:41.283 [DEBUG] [Thread-190976] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:39:41.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:39:41.284 [DEBUG] [Thread-190976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:39:41.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:39:41.287 [DEBUG] [Thread-190976] [transport.py] [_log()] userauth is OK
2025-11-24T13:39:41.287 [DEBUG] [Thread-190976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:39:41.287 [DEBUG] [Thread-190976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:39:41.287 [DEBUG] [Thread-190976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:39:41.287 [DEBUG] [Thread-190976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:39:41.310 [INFO] [Thread-190976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:39:41.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:39:41.961 [DEBUG] [Thread-190976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:39:41.961 [DEBUG] [Thread-190976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:39:41.961 [DEBUG] [Thread-190976] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:39:42.002 [DEBUG] [Thread-190976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:39:42.002 [DEBUG] [Thread-190976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:39:42.005 [DEBUG] [Thread-190976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:39:42.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:39:42.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:39:42.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:39:42.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:39:42.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:39:42.027 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:39:42.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:39:42.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.485464 -999.00  +21.70  27.55     24   +0.50 1 1 1 1 1   888    0 22.99 90.29 ----- 27.6 27.6 192.8 35.4 27.6 -27.6 26.6 -29.0 27.6 -26.6 28.7 -26.7
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.485464
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:39:42.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:39:11', tmtdew=23.89, humidity=19.72, cloud=0.0, wind=29.96, temperature=21.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:39:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:39:42.029 [DEBUG] [Thread-190976] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:39: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-11-24T13:39:42.112 [DEBUG] [Thread-190979] [transport.py] [_log()] starting thread (client mode): 0xd07e9fc0
2025-11-24T13:39:42.112 [DEBUG] [Thread-190979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:39:42.126 [DEBUG] [Thread-190979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:39:42.127 [INFO] [Thread-190979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:39:42.134 [DEBUG] [Thread-190979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:39:42.134 [DEBUG] [Thread-190979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:39:42.134 [DEBUG] [Thread-190979] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:39:42.135 [DEBUG] [Thread-190979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:39:42.135 [DEBUG] [Thread-190979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:39:42.135 [DEBUG] [Thread-190979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:39:42.135 [DEBUG] [Thread-190979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:39:42.135 [DEBUG] [Thread-190979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:39:42.135 [DEBUG] [Thread-190979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:39:42.135 [DEBUG] [Thread-190979] [transport.py] [_log()] client lang: <none>
2025-11-24T13:39:42.135 [DEBUG] [Thread-190979] [transport.py] [_log()] server lang: <none>
2025-11-24T13:39:42.135 [DEBUG] [Thread-190979] [transport.py] [_log()] kex follows: False
2025-11-24T13:39:42.136 [DEBUG] [Thread-190979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:39:42.136 [DEBUG] [Thread-190979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:39:42.136 [DEBUG] [Thread-190979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:39:42.136 [DEBUG] [Thread-190979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:39:42.136 [DEBUG] [Thread-190979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:39:42.136 [DEBUG] [Thread-190979] [transport.py] [_log()] Compression: none
2025-11-24T13:39:42.136 [DEBUG] [Thread-190979] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:39:42.195 [DEBUG] [Thread-190979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:39:42.196 [DEBUG] [Thread-190979] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:39:42.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:39:42.197 [DEBUG] [Thread-190979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:39:42.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:39:42.254 [DEBUG] [Thread-190979] [transport.py] [_log()] userauth is OK
2025-11-24T13:39:42.255 [DEBUG] [Thread-190979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:39:42.255 [DEBUG] [Thread-190979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:39:42.255 [DEBUG] [Thread-190979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:39:42.255 [DEBUG] [Thread-190979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:39:42.273 [INFO] [Thread-190979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:39:42.274 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:39:42.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:39:42.836 [DEBUG] [Thread-190981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:39:43.116 [DEBUG] [Thread-190979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:39:43.116 [DEBUG] [Thread-190979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:39:43.164 [DEBUG] [Thread-190979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:39:43.164 [DEBUG] [Thread-190979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:39:43.173 [DEBUG] [Thread-190979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:39:43.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:39:43.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-11-24T13:39:43.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-11-24T13:39:43.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:39:43.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:39:43.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:39:43.208 [DEBUG] [Thread-190979] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:39:57.883 [DEBUG] [Thread-190982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:40:01.867 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:40:01.869 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:40:03.109 [DEBUG] [Thread-190983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:40:12.912 [DEBUG] [Thread-190984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:40:13.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:40:13.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:40:13.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T13:40:14.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 39, 44), 24.19, 19.47, 0.0, 29.45, 21.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:40:14.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:39:44
2025-11-24T13:40:14.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:40:14.400 [DEBUG] [Thread-190985] [transport.py] [_log()] starting thread (client mode): 0xd07eb4f0
2025-11-24T13:40:14.400 [DEBUG] [Thread-190985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:40:14.420 [DEBUG] [Thread-190985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:40:14.420 [INFO] [Thread-190985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:40:14.423 [DEBUG] [Thread-190985] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:40:14.423 [DEBUG] [Thread-190985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:40:14.423 [DEBUG] [Thread-190985] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:40:14.423 [DEBUG] [Thread-190985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:40:14.423 [DEBUG] [Thread-190985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:40:14.423 [DEBUG] [Thread-190985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] client lang: <none>
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] server lang: <none>
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] kex follows: False
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] Compression: none
2025-11-24T13:40:14.424 [DEBUG] [Thread-190985] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:40:14.442 [DEBUG] [Thread-190985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:40:14.443 [DEBUG] [Thread-190985] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:40:14.444 [DEBUG] [Thread-190985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:40:14.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:40:14.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:40:14.446 [DEBUG] [Thread-190985] [transport.py] [_log()] userauth is OK
2025-11-24T13:40:14.446 [DEBUG] [Thread-190985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:40:14.446 [DEBUG] [Thread-190985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:40:14.446 [DEBUG] [Thread-190985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:40:14.446 [DEBUG] [Thread-190985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:40:14.470 [INFO] [Thread-190985] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:40:14.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:40:15.119 [DEBUG] [Thread-190985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:40:15.119 [DEBUG] [Thread-190985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:40:15.119 [DEBUG] [Thread-190985] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:40:15.160 [DEBUG] [Thread-190985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:40:15.160 [DEBUG] [Thread-190985] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:40:15.162 [DEBUG] [Thread-190985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:40:15.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:40:15.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:40:15.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:40:15.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:40:15.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:40:15.191 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:40:15.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.485812 -999.00  +21.60  18.66     25   +0.70 1 1 1 1 1   888    0 23.09 86.97 ----- 18.7 18.7 192.6 32.3 27.4 -28.6 26.3 -33.5 27.5 -26.0 28.4 -28.6
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.485812
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:40:15.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:39:44', tmtdew=24.19, humidity=19.47, cloud=0.0, wind=29.45, temperature=21.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:39:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:40:15.192 [DEBUG] [Thread-190985] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:40:15.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:40:27.943 [DEBUG] [Thread-190988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:40:42.982 [DEBUG] [Thread-190989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:40:58.016 [DEBUG] [Thread-190990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:41:02.008 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:41:02.009 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:41:03.369 [DEBUG] [Thread-190991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:41:13.055 [DEBUG] [Thread-190992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:41:28.103 [DEBUG] [Thread-190993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:41:43.139 [DEBUG] [Thread-190994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:41:58.165 [DEBUG] [Thread-190995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:42:02.149 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:42:02.150 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:42:03.660 [DEBUG] [Thread-190996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:42:13.213 [DEBUG] [Thread-190997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:42:28.244 [DEBUG] [Thread-190998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:42:28.544 [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-11-24T13:42:43.276 [DEBUG] [Thread-190999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:42:58.312 [DEBUG] [Thread-191000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:42:58.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:42:58.591 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:42:58.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-11-24T13:42:59.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 42, 26), 23.91, 20.06, 0.0, 24.83, 21.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:42:59.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:42:26
2025-11-24T13:42:59.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:42:59.750 [DEBUG] [Thread-191001] [transport.py] [_log()] starting thread (client mode): 0xd07fba00
2025-11-24T13:42:59.751 [DEBUG] [Thread-191001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:42:59.760 [DEBUG] [Thread-191001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:42:59.761 [INFO] [Thread-191001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] client lang: <none>
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] server lang: <none>
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] kex follows: False
2025-11-24T13:42:59.770 [DEBUG] [Thread-191001] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:42:59.771 [DEBUG] [Thread-191001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:42:59.771 [DEBUG] [Thread-191001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:42:59.772 [DEBUG] [Thread-191001] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:42:59.772 [DEBUG] [Thread-191001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:42:59.772 [DEBUG] [Thread-191001] [transport.py] [_log()] Compression: none
2025-11-24T13:42:59.772 [DEBUG] [Thread-191001] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:42:59.810 [DEBUG] [Thread-191001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:42:59.816 [DEBUG] [Thread-191001] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:42:59.817 [DEBUG] [Thread-191001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:42:59.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:42:59.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:42:59.821 [DEBUG] [Thread-191001] [transport.py] [_log()] userauth is OK
2025-11-24T13:42:59.822 [DEBUG] [Thread-191001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:42:59.822 [DEBUG] [Thread-191001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:42:59.822 [DEBUG] [Thread-191001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:42:59.822 [DEBUG] [Thread-191001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:42:59.853 [INFO] [Thread-191001] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:42:59.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:43:00.526 [DEBUG] [Thread-191001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:43:00.526 [DEBUG] [Thread-191001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:43:00.527 [DEBUG] [Thread-191001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:43:00.567 [DEBUG] [Thread-191001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:43:00.567 [DEBUG] [Thread-191001] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:43:00.570 [DEBUG] [Thread-191001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:43:00.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:43:00.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:43:00.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:43:00.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:43:00.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:43:00.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:43:00.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:43:00.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:43:00.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:43:00.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.487548 -999.00  +21.20  24.96     26   +1.10 1 1 1 1 1   888    0 22.91 87.27 ----- 25.0 25.0 180.0 27.7 27.3 -25.3 26.2 -25.9 27.5 -23.7 28.3 -26.1
2025-11-24T13:43:00.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:43:00.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:43:00.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.487548
2025-11-24T13:43:00.599 [DEBUG] [Thread-191001] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:43:00.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:43:00.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:43:00.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:43:00.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:43:00.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:43:00.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:42:26', tmtdew=23.91, humidity=20.06, cloud=0.0, wind=24.83, temperature=21.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:42:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:43:00.687 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:43:02.297 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:43:02.298 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:43:03.760 [DEBUG] [Thread-191004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:43:13.349 [DEBUG] [Thread-191005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:43:28.454 [DEBUG] [Thread-191006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:43:43.485 [DEBUG] [Thread-191007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:43:58.515 [DEBUG] [Thread-191008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:44:02.441 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:44:02.442 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:44:03.845 [DEBUG] [Thread-191009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:44:13.556 [DEBUG] [Thread-191010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:44:28.589 [DEBUG] [Thread-191011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:44:43.634 [DEBUG] [Thread-191012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:44:58.667 [DEBUG] [Thread-191013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:45:02.584 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:45:02.586 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:45:04.189 [DEBUG] [Thread-191014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:45:12.393 [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-11-24T13:45:13.696 [DEBUG] [Thread-191015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:45:28.745 [DEBUG] [Thread-191016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:45:42.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:45:42.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:45:42.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-11-24T13:45:43.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 45, 8), 22.94, 21.42, 0.0, 20.38, 21.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:45:43.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:45:08
2025-11-24T13:45:43.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:45:43.614 [DEBUG] [Thread-191017] [transport.py] [_log()] starting thread (client mode): 0xd07f9840
2025-11-24T13:45:43.614 [DEBUG] [Thread-191017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:45:43.626 [DEBUG] [Thread-191017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:45:43.627 [INFO] [Thread-191017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:45:43.632 [DEBUG] [Thread-191017] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:45:43.632 [DEBUG] [Thread-191017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:45:43.632 [DEBUG] [Thread-191017] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:45:43.632 [DEBUG] [Thread-191017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:45:43.632 [DEBUG] [Thread-191017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:45:43.632 [DEBUG] [Thread-191017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:45:43.632 [DEBUG] [Thread-191017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] client lang: <none>
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] server lang: <none>
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] kex follows: False
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:45:43.633 [DEBUG] [Thread-191017] [transport.py] [_log()] Compression: none
2025-11-24T13:45:43.634 [DEBUG] [Thread-191017] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:45:43.667 [DEBUG] [Thread-191017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:45:43.672 [DEBUG] [Thread-191017] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:45:43.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:45:43.675 [DEBUG] [Thread-191017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:45:43.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:45:43.676 [DEBUG] [Thread-191017] [transport.py] [_log()] userauth is OK
2025-11-24T13:45:43.677 [DEBUG] [Thread-191017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:45:43.677 [DEBUG] [Thread-191017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:45:43.677 [DEBUG] [Thread-191017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:45:43.677 [DEBUG] [Thread-191017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:45:43.695 [INFO] [Thread-191017] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:45:43.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:45:43.776 [DEBUG] [Thread-191019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:45:44.324 [DEBUG] [Thread-191017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:45:44.325 [DEBUG] [Thread-191017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:45:44.335 [DEBUG] [Thread-191017] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:45:44.365 [DEBUG] [Thread-191017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:45:44.366 [DEBUG] [Thread-191017] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:45:44.369 [DEBUG] [Thread-191017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:45:44.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:45:44.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:45:44.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:45:44.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:45:44.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:45:44.395 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:45:44.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:45:44.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:45:44.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:45:44.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.489631 -999.00  +21.50  25.43     26   +1.60 1 1 1 1 1   888    0 22.03 61.02 ----- 25.4 25.4 179.4 32.0 27.6 -26.3 26.5 -25.6 27.8 -25.3 28.6 -25.9
2025-11-24T13:45:44.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:45:44.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:45:44.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.489631
2025-11-24T13:45:44.403 [DEBUG] [Thread-191017] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:45:44.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:45:44.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:45:44.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:45:44.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:45:44.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:45:44.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:45:08', tmtdew=22.94, humidity=21.42, cloud=0.0, wind=20.38, temperature=21.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:45:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:45:44.501 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:45:44.515 [DEBUG] [Thread-191021] [transport.py] [_log()] starting thread (client mode): 0xd07e9270
2025-11-24T13:45:44.515 [DEBUG] [Thread-191021] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:45:44.530 [DEBUG] [Thread-191021] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:45:44.530 [INFO] [Thread-191021] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:45:44.540 [DEBUG] [Thread-191021] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:45:44.540 [DEBUG] [Thread-191021] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:45:44.540 [DEBUG] [Thread-191021] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:45:44.540 [DEBUG] [Thread-191021] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:45:44.540 [DEBUG] [Thread-191021] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:45:44.540 [DEBUG] [Thread-191021] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:45:44.540 [DEBUG] [Thread-191021] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:45:44.540 [DEBUG] [Thread-191021] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] client lang: <none>
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] server lang: <none>
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] kex follows: False
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] Compression: none
2025-11-24T13:45:44.541 [DEBUG] [Thread-191021] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:45:44.604 [DEBUG] [Thread-191021] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:45:44.605 [DEBUG] [Thread-191021] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:45:44.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:45:44.606 [DEBUG] [Thread-191021] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:45:44.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:45:44.663 [DEBUG] [Thread-191021] [transport.py] [_log()] userauth is OK
2025-11-24T13:45:44.663 [DEBUG] [Thread-191021] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:45:44.663 [DEBUG] [Thread-191021] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:45:44.663 [DEBUG] [Thread-191021] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:45:44.663 [DEBUG] [Thread-191021] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:45:44.683 [INFO] [Thread-191021] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:45:44.683 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:45:44.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:45:45.500 [DEBUG] [Thread-191021] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:45:45.500 [DEBUG] [Thread-191021] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:45:45.549 [DEBUG] [Thread-191021] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:45:45.549 [DEBUG] [Thread-191021] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:45:45.558 [DEBUG] [Thread-191021] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:45:45.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:45:45.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-11-24T13:45:45.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:45:45.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:45:45.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:45:45.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:45:45.607 [DEBUG] [Thread-191021] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:45:58.809 [DEBUG] [Thread-191023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:46:02.734 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:46:02.736 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:46:04.314 [DEBUG] [Thread-191024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:46:13.919 [DEBUG] [Thread-191025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:46:15.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:46:15.629 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:46:15.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-11-24T13:46:16.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 45, 41), 22.88, 21.5, 0.0, 24.0, 21.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:46:16.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:45:41
2025-11-24T13:46:16.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:46:16.816 [DEBUG] [Thread-191026] [transport.py] [_log()] starting thread (client mode): 0xd07fa140
2025-11-24T13:46:16.816 [DEBUG] [Thread-191026] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:46:16.837 [DEBUG] [Thread-191026] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:46:16.837 [INFO] [Thread-191026] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] client lang: <none>
2025-11-24T13:46:16.840 [DEBUG] [Thread-191026] [transport.py] [_log()] server lang: <none>
2025-11-24T13:46:16.841 [DEBUG] [Thread-191026] [transport.py] [_log()] kex follows: False
2025-11-24T13:46:16.841 [DEBUG] [Thread-191026] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:46:16.841 [DEBUG] [Thread-191026] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:46:16.841 [DEBUG] [Thread-191026] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:46:16.841 [DEBUG] [Thread-191026] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:46:16.841 [DEBUG] [Thread-191026] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:46:16.841 [DEBUG] [Thread-191026] [transport.py] [_log()] Compression: none
2025-11-24T13:46:16.841 [DEBUG] [Thread-191026] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:46:16.856 [DEBUG] [Thread-191026] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:46:16.856 [DEBUG] [Thread-191026] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:46:16.856 [DEBUG] [Thread-191026] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:46:16.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:46:16.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:46:16.857 [DEBUG] [Thread-191026] [transport.py] [_log()] userauth is OK
2025-11-24T13:46:16.857 [DEBUG] [Thread-191026] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:46:16.858 [DEBUG] [Thread-191026] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:46:16.858 [DEBUG] [Thread-191026] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:46:16.858 [DEBUG] [Thread-191026] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:46:16.870 [INFO] [Thread-191026] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:46:16.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:46:17.475 [DEBUG] [Thread-191026] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:46:17.475 [DEBUG] [Thread-191026] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:46:17.475 [DEBUG] [Thread-191026] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:46:17.516 [DEBUG] [Thread-191026] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:46:17.516 [DEBUG] [Thread-191026] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:46:17.518 [DEBUG] [Thread-191026] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:46:17.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:46:17.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:46:17.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:46:17.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:46:17.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:46:17.535 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:46:17.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:46:17.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:46:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:46:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.489978 -999.00  +21.80  21.07     26   +1.80 1 1 1 1 1   888    0 21.90 54.93 ----- 21.1 21.1 183.5 25.0 27.6 -26.5 26.6 -25.0 27.8 -24.3 28.7 -25.0
2025-11-24T13:46:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:46:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:46:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.489978
2025-11-24T13:46:17.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:46:17.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:46:17.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:46:17.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:46:17.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:46:17.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:45:41', tmtdew=22.88, humidity=21.5, cloud=0.0, wind=24.0, temperature=21.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:45:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:46:17.536 [DEBUG] [Thread-191026] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:46:17.610 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:46:17.620 [DEBUG] [Thread-191029] [transport.py] [_log()] starting thread (client mode): 0xd07e9f60
2025-11-24T13:46:17.620 [DEBUG] [Thread-191029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:46:17.639 [DEBUG] [Thread-191029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:46:17.639 [INFO] [Thread-191029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] client lang: <none>
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] server lang: <none>
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] kex follows: False
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] Compression: none
2025-11-24T13:46:17.650 [DEBUG] [Thread-191029] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:46:17.705 [DEBUG] [Thread-191029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:46:17.705 [DEBUG] [Thread-191029] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:46:17.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:46:17.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:46:17.705 [DEBUG] [Thread-191029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:46:17.762 [DEBUG] [Thread-191029] [transport.py] [_log()] userauth is OK
2025-11-24T13:46:17.762 [DEBUG] [Thread-191029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:46:17.762 [DEBUG] [Thread-191029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:46:17.762 [DEBUG] [Thread-191029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:46:17.762 [DEBUG] [Thread-191029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:46:17.776 [INFO] [Thread-191029] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:46:17.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:46:17.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:46:18.625 [DEBUG] [Thread-191029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:46:18.625 [DEBUG] [Thread-191029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:46:18.673 [DEBUG] [Thread-191029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:46:18.673 [DEBUG] [Thread-191029] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:46:18.681 [DEBUG] [Thread-191029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:46:18.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:46:18.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-11-24T13:46:18.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-11-24T13:46:18.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:46:18.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:46:18.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:46:18.712 [DEBUG] [Thread-191029] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:46:28.958 [DEBUG] [Thread-191031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:46:44.008 [DEBUG] [Thread-191032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:46:48.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:46:48.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:46:48.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-11-24T13:46:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 46, 46), 23.23, 21.29, 0.0, 32.45, 21.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:46:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:46:46
2025-11-24T13:46:49.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:46:49.845 [DEBUG] [Thread-191033] [transport.py] [_log()] starting thread (client mode): 0xd07fa5c0
2025-11-24T13:46:49.845 [DEBUG] [Thread-191033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:46:49.865 [DEBUG] [Thread-191033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:46:49.865 [INFO] [Thread-191033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:46:49.868 [DEBUG] [Thread-191033] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] client lang: <none>
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] server lang: <none>
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] kex follows: False
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:46:49.869 [DEBUG] [Thread-191033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:46:49.870 [DEBUG] [Thread-191033] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:46:49.870 [DEBUG] [Thread-191033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:46:49.870 [DEBUG] [Thread-191033] [transport.py] [_log()] Compression: none
2025-11-24T13:46:49.870 [DEBUG] [Thread-191033] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:46:49.886 [DEBUG] [Thread-191033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:46:49.887 [DEBUG] [Thread-191033] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:46:49.887 [DEBUG] [Thread-191033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:46:49.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:46:49.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:46:49.889 [DEBUG] [Thread-191033] [transport.py] [_log()] userauth is OK
2025-11-24T13:46:49.889 [DEBUG] [Thread-191033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:46:49.890 [DEBUG] [Thread-191033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:46:49.890 [DEBUG] [Thread-191033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:46:49.890 [DEBUG] [Thread-191033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:46:49.926 [INFO] [Thread-191033] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:46:49.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:46:50.573 [DEBUG] [Thread-191033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:46:50.573 [DEBUG] [Thread-191033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:46:50.574 [DEBUG] [Thread-191033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:46:50.615 [DEBUG] [Thread-191033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:46:50.615 [DEBUG] [Thread-191033] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:46:50.618 [DEBUG] [Thread-191033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:46:50.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:46:50.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:46:50.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:46:50.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:46:50.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:46:50.641 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:46:50.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:46:50.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:46:50.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:46:50.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.490325 -999.00  +22.10  13.62     26   +1.70 1 1 1 1 1   888    0 21.92 51.10 ----- 13.6 13.6 204.2 31.6 27.6 -29.0 26.8 -25.9 27.8 -26.9 28.8 -26.0
2025-11-24T13:46:50.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:46:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:46:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.490325
2025-11-24T13:46:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:46:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:46:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:46:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:46:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:46:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:46:46', tmtdew=23.23, humidity=21.29, cloud=0.0, wind=32.45, temperature=21.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:46:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:46:50.643 [DEBUG] [Thread-191033] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:46:50.716 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:46:50.728 [DEBUG] [Thread-191036] [transport.py] [_log()] starting thread (client mode): 0xd07f9f90
2025-11-24T13:46:50.728 [DEBUG] [Thread-191036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:46:50.745 [DEBUG] [Thread-191036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:46:50.745 [INFO] [Thread-191036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] client lang: <none>
2025-11-24T13:46:50.753 [DEBUG] [Thread-191036] [transport.py] [_log()] server lang: <none>
2025-11-24T13:46:50.754 [DEBUG] [Thread-191036] [transport.py] [_log()] kex follows: False
2025-11-24T13:46:50.754 [DEBUG] [Thread-191036] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:46:50.754 [DEBUG] [Thread-191036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:46:50.754 [DEBUG] [Thread-191036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:46:50.754 [DEBUG] [Thread-191036] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:46:50.754 [DEBUG] [Thread-191036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:46:50.754 [DEBUG] [Thread-191036] [transport.py] [_log()] Compression: none
2025-11-24T13:46:50.754 [DEBUG] [Thread-191036] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:46:50.816 [DEBUG] [Thread-191036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:46:50.816 [DEBUG] [Thread-191036] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:46:50.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:46:50.818 [DEBUG] [Thread-191036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:46:50.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:46:50.874 [DEBUG] [Thread-191036] [transport.py] [_log()] userauth is OK
2025-11-24T13:46:50.874 [DEBUG] [Thread-191036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:46:50.874 [DEBUG] [Thread-191036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:46:50.874 [DEBUG] [Thread-191036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:46:50.874 [DEBUG] [Thread-191036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:46:50.888 [INFO] [Thread-191036] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:46:50.889 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:46:50.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:46:51.768 [DEBUG] [Thread-191036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:46:51.768 [DEBUG] [Thread-191036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:46:51.816 [DEBUG] [Thread-191036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:46:51.816 [DEBUG] [Thread-191036] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:46:51.824 [DEBUG] [Thread-191036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:46:51.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:46:51.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-11-24T13:46:51.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-11-24T13:46:51.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:46:51.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:46:51.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:46:51.857 [DEBUG] [Thread-191036] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:46:59.035 [DEBUG] [Thread-191038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:47:02.876 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:47:02.876 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:47:04.381 [DEBUG] [Thread-191039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:47:14.097 [DEBUG] [Thread-191040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:47:21.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:47:21.880 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:47:21.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-11-24T13:47:22.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 47, 18), 23.24, 21.27, 0.0, 33.26, 21.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:47:22.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:47:18
2025-11-24T13:47:22.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:47:23.000 [DEBUG] [Thread-191041] [transport.py] [_log()] starting thread (client mode): 0xd07f9d80
2025-11-24T13:47:23.000 [DEBUG] [Thread-191041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:47:23.019 [DEBUG] [Thread-191041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:47:23.019 [INFO] [Thread-191041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:47:23.022 [DEBUG] [Thread-191041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] client lang: <none>
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] server lang: <none>
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] kex follows: False
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] Compression: none
2025-11-24T13:47:23.023 [DEBUG] [Thread-191041] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:47:23.040 [DEBUG] [Thread-191041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:47:23.041 [DEBUG] [Thread-191041] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:47:23.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:47:23.042 [DEBUG] [Thread-191041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:47:23.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:47:23.044 [DEBUG] [Thread-191041] [transport.py] [_log()] userauth is OK
2025-11-24T13:47:23.044 [DEBUG] [Thread-191041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:47:23.044 [DEBUG] [Thread-191041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:47:23.044 [DEBUG] [Thread-191041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:47:23.045 [DEBUG] [Thread-191041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:47:23.065 [INFO] [Thread-191041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:47:23.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:47:23.697 [DEBUG] [Thread-191041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:47:23.697 [DEBUG] [Thread-191041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:47:23.698 [DEBUG] [Thread-191041] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:47:23.738 [DEBUG] [Thread-191041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:47:23.738 [DEBUG] [Thread-191041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:47:23.740 [DEBUG] [Thread-191041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:47:23.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:47:23.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:47:23.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:47:23.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:47:23.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:47:23.768 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:47:23.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.490673 -999.00  +22.20  21.55     26   +1.80 1 1 1 1 1   888    0 21.80 49.24 ----- 21.6 21.6 194.4 30.2 27.7 -26.9 26.8 -25.6 27.8 -24.8 28.7 -26.2
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.490673
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:47:23.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:47:18', tmtdew=23.24, humidity=21.27, cloud=0.0, wind=33.26, temperature=21.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:46:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:47:23.770 [DEBUG] [Thread-191041] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:47:23.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:47:23.856 [DEBUG] [Thread-191044] [transport.py] [_log()] starting thread (client mode): 0xd07aa470
2025-11-24T13:47:23.856 [DEBUG] [Thread-191044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:47:23.872 [DEBUG] [Thread-191044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:47:23.872 [INFO] [Thread-191044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] client lang: <none>
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] server lang: <none>
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] kex follows: False
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] Compression: none
2025-11-24T13:47:23.880 [DEBUG] [Thread-191044] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:47:23.940 [DEBUG] [Thread-191044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:47:23.940 [DEBUG] [Thread-191044] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:47:23.940 [DEBUG] [Thread-191044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:47:23.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:47:23.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:47:23.998 [DEBUG] [Thread-191044] [transport.py] [_log()] userauth is OK
2025-11-24T13:47:23.998 [DEBUG] [Thread-191044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:47:23.998 [DEBUG] [Thread-191044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:47:23.998 [DEBUG] [Thread-191044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:47:23.998 [DEBUG] [Thread-191044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:47:24.012 [INFO] [Thread-191044] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:47:24.012 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:47:24.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:47:24.851 [DEBUG] [Thread-191044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:47:24.851 [DEBUG] [Thread-191044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:47:24.899 [DEBUG] [Thread-191044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:47:24.899 [DEBUG] [Thread-191044] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:47:24.908 [DEBUG] [Thread-191044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:47:24.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:47:24.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:47:24.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:47:24.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:47:24.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:47:24.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:47:24.941 [DEBUG] [Thread-191044] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:47:29.129 [DEBUG] [Thread-191046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:47:44.175 [DEBUG] [Thread-191047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:47:54.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:47:54.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:47:54.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-11-24T13:47:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 47, 51), 22.86, 21.82, 0.0, 24.07, 21.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:47:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:47:51
2025-11-24T13:47:55.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:47:56.104 [DEBUG] [Thread-191048] [transport.py] [_log()] starting thread (client mode): 0xd07a8eb0
2025-11-24T13:47:56.104 [DEBUG] [Thread-191048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:47:56.123 [DEBUG] [Thread-191048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:47:56.123 [INFO] [Thread-191048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:47:56.126 [DEBUG] [Thread-191048] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:47:56.126 [DEBUG] [Thread-191048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:47:56.126 [DEBUG] [Thread-191048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:47:56.126 [DEBUG] [Thread-191048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:47:56.126 [DEBUG] [Thread-191048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:47:56.126 [DEBUG] [Thread-191048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:47:56.127 [DEBUG] [Thread-191048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:47:56.127 [DEBUG] [Thread-191048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:47:56.127 [DEBUG] [Thread-191048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:47:56.127 [DEBUG] [Thread-191048] [transport.py] [_log()] client lang: <none>
2025-11-24T13:47:56.127 [DEBUG] [Thread-191048] [transport.py] [_log()] server lang: <none>
2025-11-24T13:47:56.127 [DEBUG] [Thread-191048] [transport.py] [_log()] kex follows: False
2025-11-24T13:47:56.127 [DEBUG] [Thread-191048] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:47:56.127 [DEBUG] [Thread-191048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:47:56.127 [DEBUG] [Thread-191048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:47:56.127 [DEBUG] [Thread-191048] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:47:56.128 [DEBUG] [Thread-191048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:47:56.128 [DEBUG] [Thread-191048] [transport.py] [_log()] Compression: none
2025-11-24T13:47:56.128 [DEBUG] [Thread-191048] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:47:56.147 [DEBUG] [Thread-191048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:47:56.148 [DEBUG] [Thread-191048] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:47:56.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:47:56.149 [DEBUG] [Thread-191048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:47:56.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:47:56.152 [DEBUG] [Thread-191048] [transport.py] [_log()] userauth is OK
2025-11-24T13:47:56.153 [DEBUG] [Thread-191048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:47:56.153 [DEBUG] [Thread-191048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:47:56.153 [DEBUG] [Thread-191048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:47:56.153 [DEBUG] [Thread-191048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:47:56.179 [INFO] [Thread-191048] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:47:56.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:47:56.819 [DEBUG] [Thread-191048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:47:56.819 [DEBUG] [Thread-191048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:47:56.819 [DEBUG] [Thread-191048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:47:56.860 [DEBUG] [Thread-191048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:47:56.860 [DEBUG] [Thread-191048] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:47:56.862 [DEBUG] [Thread-191048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:47:56.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:47:56.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:47:56.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:47:56.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:47:56.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:47:56.887 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:47:56.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:47:56.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:47:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:47:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.491020 -999.00  +21.80  22.92     26   +1.50 1 1 1 1 1   888    0 21.81 42.30 ----- 22.9 22.9 165.0 29.4 27.6 -27.9 26.6 -29.4 27.6 -28.8 28.6 -28.0
2025-11-24T13:47:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:47:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:47:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.491020
2025-11-24T13:47:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:47:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:47:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:47:56.888 [DEBUG] [Thread-191048] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:47:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:47:56.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:47:56.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:47:51', tmtdew=22.86, humidity=21.82, cloud=0.0, wind=24.07, temperature=21.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:47:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:47:56.961 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:47:56.973 [DEBUG] [Thread-191051] [transport.py] [_log()] starting thread (client mode): 0xd07e9000
2025-11-24T13:47:56.973 [DEBUG] [Thread-191051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:47:56.988 [DEBUG] [Thread-191051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:47:56.988 [INFO] [Thread-191051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] client lang: <none>
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] server lang: <none>
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] kex follows: False
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:47:56.996 [DEBUG] [Thread-191051] [transport.py] [_log()] Compression: none
2025-11-24T13:47:56.997 [DEBUG] [Thread-191051] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:47:57.052 [DEBUG] [Thread-191051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:47:57.053 [DEBUG] [Thread-191051] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:47:57.053 [DEBUG] [Thread-191051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:47:57.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:47:57.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:47:57.111 [DEBUG] [Thread-191051] [transport.py] [_log()] userauth is OK
2025-11-24T13:47:57.111 [DEBUG] [Thread-191051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:47:57.111 [DEBUG] [Thread-191051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:47:57.111 [DEBUG] [Thread-191051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:47:57.111 [DEBUG] [Thread-191051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:47:57.125 [INFO] [Thread-191051] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:47:57.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:47:57.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:47:58.002 [DEBUG] [Thread-191051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:47:58.002 [DEBUG] [Thread-191051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:47:58.049 [DEBUG] [Thread-191051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:47:58.050 [DEBUG] [Thread-191051] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:47:58.059 [DEBUG] [Thread-191051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:47:58.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:47:58.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-11-24T13:47:58.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') -> 00000000
2025-11-24T13:47:58.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:47:58.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:47:58.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:47:58.096 [DEBUG] [Thread-191051] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:47:59.218 [DEBUG] [Thread-191053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:48:03.027 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:48:03.029 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:48:04.668 [DEBUG] [Thread-191054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:48:14.268 [DEBUG] [Thread-191055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:48:28.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:48:28.112 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:48:28.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-11-24T13:48:28.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 48, 23), 22.61, 22.12, 0.0, 18.39, 20.91, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:48:28.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:48:23
2025-11-24T13:48:29.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:48:29.264 [DEBUG] [Thread-191056] [transport.py] [_log()] starting thread (client mode): 0xd07a9180
2025-11-24T13:48:29.264 [DEBUG] [Thread-191056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:48:29.282 [DEBUG] [Thread-191056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:48:29.282 [INFO] [Thread-191056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] client lang: <none>
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] server lang: <none>
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] kex follows: False
2025-11-24T13:48:29.285 [DEBUG] [Thread-191056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:48:29.286 [DEBUG] [Thread-191056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:48:29.286 [DEBUG] [Thread-191056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:48:29.286 [DEBUG] [Thread-191056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:48:29.286 [DEBUG] [Thread-191056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:48:29.286 [DEBUG] [Thread-191056] [transport.py] [_log()] Compression: none
2025-11-24T13:48:29.286 [DEBUG] [Thread-191056] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:48:29.298 [DEBUG] [Thread-191058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:48:29.320 [DEBUG] [Thread-191056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:48:29.324 [DEBUG] [Thread-191056] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:48:29.326 [DEBUG] [Thread-191056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:48:29.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:48:29.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:48:29.330 [DEBUG] [Thread-191056] [transport.py] [_log()] userauth is OK
2025-11-24T13:48:29.331 [DEBUG] [Thread-191056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:48:29.331 [DEBUG] [Thread-191056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:48:29.331 [DEBUG] [Thread-191056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:48:29.331 [DEBUG] [Thread-191056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:48:29.360 [INFO] [Thread-191056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:48:29.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:48:29.975 [DEBUG] [Thread-191056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:48:29.975 [DEBUG] [Thread-191056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:48:29.986 [DEBUG] [Thread-191056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:48:30.016 [DEBUG] [Thread-191056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:48:30.017 [DEBUG] [Thread-191056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:48:30.020 [DEBUG] [Thread-191056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:48:30.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:48:30.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:48:30.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:48:30.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:48:30.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:48:30.043 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:48:30.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:48:30.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:48:30.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:48:30.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.491367 -999.00  +21.20  16.34     27   +1.40 1 1 1 1 1   888    0 21.33 32.87 ----- 16.3 16.3 162.6 26.3 27.5 -26.7 26.6 -25.6 27.6 -25.6 28.6 -26.9
2025-11-24T13:48:30.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:48:30.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:48:30.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.491367
2025-11-24T13:48:30.045 [DEBUG] [Thread-191056] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:48:30.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:48:30.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:48:30.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:48:30.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:48:30.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:48:30.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:48:23', tmtdew=22.61, humidity=22.12, cloud=0.0, wind=18.39, temperature=20.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:47:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:48:30.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:48:30.163 [DEBUG] [Thread-191060] [transport.py] [_log()] starting thread (client mode): 0xd07fbc70
2025-11-24T13:48:30.163 [DEBUG] [Thread-191060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:48:30.178 [DEBUG] [Thread-191060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:48:30.178 [INFO] [Thread-191060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:48:30.186 [DEBUG] [Thread-191060] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] client lang: <none>
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] server lang: <none>
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] kex follows: False
2025-11-24T13:48:30.187 [DEBUG] [Thread-191060] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:48:30.188 [DEBUG] [Thread-191060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:48:30.188 [DEBUG] [Thread-191060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:48:30.188 [DEBUG] [Thread-191060] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:48:30.188 [DEBUG] [Thread-191060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:48:30.188 [DEBUG] [Thread-191060] [transport.py] [_log()] Compression: none
2025-11-24T13:48:30.188 [DEBUG] [Thread-191060] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:48:30.249 [DEBUG] [Thread-191060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:48:30.249 [DEBUG] [Thread-191060] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:48:30.250 [DEBUG] [Thread-191060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:48:30.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:48:30.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:48:30.307 [DEBUG] [Thread-191060] [transport.py] [_log()] userauth is OK
2025-11-24T13:48:30.307 [DEBUG] [Thread-191060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:48:30.307 [DEBUG] [Thread-191060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:48:30.307 [DEBUG] [Thread-191060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:48:30.307 [DEBUG] [Thread-191060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:48:30.327 [INFO] [Thread-191060] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:48:30.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:48:30.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:48:31.287 [DEBUG] [Thread-191060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:48:31.287 [DEBUG] [Thread-191060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:48:31.326 [DEBUG] [Thread-191060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:48:31.326 [DEBUG] [Thread-191060] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:48:31.334 [DEBUG] [Thread-191060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:48:31.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:48:31.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:48:31.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:48:31.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:48:31.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:48:31.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:48:31.368 [DEBUG] [Thread-191060] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:48:44.336 [DEBUG] [Thread-191062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:48:59.386 [DEBUG] [Thread-191063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:49:01.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:49:01.371 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:49: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-11-24T13:49:02.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 48, 55), 22.79, 21.73, 0.0, 17.35, 21.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:49:02.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:48:55
2025-11-24T13:49:02.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:49:02.459 [DEBUG] [Thread-191064] [transport.py] [_log()] starting thread (client mode): 0xd07fbeb0
2025-11-24T13:49:02.459 [DEBUG] [Thread-191064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:49:02.480 [DEBUG] [Thread-191064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:49:02.480 [INFO] [Thread-191064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:49:02.483 [DEBUG] [Thread-191064] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:49:02.483 [DEBUG] [Thread-191064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:49:02.483 [DEBUG] [Thread-191064] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] client lang: <none>
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] server lang: <none>
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] kex follows: False
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] Compression: none
2025-11-24T13:49:02.484 [DEBUG] [Thread-191064] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:49:02.500 [DEBUG] [Thread-191064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:49:02.501 [DEBUG] [Thread-191064] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:49:02.501 [DEBUG] [Thread-191064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:49:02.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:49:02.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:49:02.502 [DEBUG] [Thread-191064] [transport.py] [_log()] userauth is OK
2025-11-24T13:49:02.502 [DEBUG] [Thread-191064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:49:02.502 [DEBUG] [Thread-191064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:49:02.502 [DEBUG] [Thread-191064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:49:02.502 [DEBUG] [Thread-191064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:49:02.515 [INFO] [Thread-191064] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:49:02.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:49:03.138 [DEBUG] [Thread-191064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:49:03.138 [DEBUG] [Thread-191064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:49:03.138 [DEBUG] [Thread-191064] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:49:03.171 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:49:03.172 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:49:03.179 [DEBUG] [Thread-191064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:49:03.179 [DEBUG] [Thread-191064] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:49:03.181 [DEBUG] [Thread-191064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:49:03.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:49:03.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:49:03.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:49:03.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:49:03.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:49:03.198 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:49:03.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:49:03.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:49:03.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:49:03.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.491714 -999.00  +21.00  12.54     27   +1.40 1 1 1 1 1   888    0 21.19 20.52 ----- 12.5 12.5 156.2 25.6 27.6 -27.0 26.6 -26.2 27.7 -25.5 28.6 -26.1
2025-11-24T13:49:03.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:49:03.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:49:03.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.491714
2025-11-24T13:49:03.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:49:03.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:49:03.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:49:03.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:49:03.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:49:03.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:48:55', tmtdew=22.79, humidity=21.73, cloud=0.0, wind=17.35, temperature=21.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:48:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:49:03.200 [DEBUG] [Thread-191064] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:49:03.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:49:03.293 [DEBUG] [Thread-191067] [transport.py] [_log()] starting thread (client mode): 0xd3152680
2025-11-24T13:49:03.293 [DEBUG] [Thread-191067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:49:03.309 [DEBUG] [Thread-191067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:49:03.309 [INFO] [Thread-191067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:49:03.321 [DEBUG] [Thread-191067] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:49:03.321 [DEBUG] [Thread-191067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:49:03.321 [DEBUG] [Thread-191067] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:49:03.321 [DEBUG] [Thread-191067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:49:03.321 [DEBUG] [Thread-191067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:49:03.321 [DEBUG] [Thread-191067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:49:03.321 [DEBUG] [Thread-191067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:49:03.321 [DEBUG] [Thread-191067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:49:03.321 [DEBUG] [Thread-191067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:49:03.322 [DEBUG] [Thread-191067] [transport.py] [_log()] client lang: <none>
2025-11-24T13:49:03.322 [DEBUG] [Thread-191067] [transport.py] [_log()] server lang: <none>
2025-11-24T13:49:03.322 [DEBUG] [Thread-191067] [transport.py] [_log()] kex follows: False
2025-11-24T13:49:03.322 [DEBUG] [Thread-191067] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:49:03.322 [DEBUG] [Thread-191067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:49:03.322 [DEBUG] [Thread-191067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:49:03.322 [DEBUG] [Thread-191067] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:49:03.322 [DEBUG] [Thread-191067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:49:03.322 [DEBUG] [Thread-191067] [transport.py] [_log()] Compression: none
2025-11-24T13:49:03.322 [DEBUG] [Thread-191067] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:49:03.375 [DEBUG] [Thread-191067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:49:03.375 [DEBUG] [Thread-191067] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:49:03.375 [DEBUG] [Thread-191067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:49:03.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:49:03.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:49:03.434 [DEBUG] [Thread-191067] [transport.py] [_log()] userauth is OK
2025-11-24T13:49:03.435 [DEBUG] [Thread-191067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:49:03.435 [DEBUG] [Thread-191067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:49:03.435 [DEBUG] [Thread-191067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:49:03.435 [DEBUG] [Thread-191067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:49:03.449 [INFO] [Thread-191067] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:49:03.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:49:03.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:49:04.316 [DEBUG] [Thread-191067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:49:04.316 [DEBUG] [Thread-191067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:49:04.364 [DEBUG] [Thread-191067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:49:04.364 [DEBUG] [Thread-191067] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:49:04.372 [DEBUG] [Thread-191067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:49:04.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:49:04.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-11-24T13:49:04.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:49:04.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:49:04.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:49:04.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:49:04.405 [DEBUG] [Thread-191067] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:49:04.759 [DEBUG] [Thread-191069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:49:14.434 [DEBUG] [Thread-191070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:49:29.492 [DEBUG] [Thread-191071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:49:34.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:49:34.398 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:49:34.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T13:49:35.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 49, 28), 22.88, 21.6, 0.0, 22.99, 21.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:49:35.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:49:28
2025-11-24T13:49:35.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:49:35.476 [DEBUG] [Thread-191072] [transport.py] [_log()] starting thread (client mode): 0xd07e8b20
2025-11-24T13:49:35.477 [DEBUG] [Thread-191072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:49:35.495 [DEBUG] [Thread-191072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:49:35.495 [INFO] [Thread-191072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:49:35.498 [DEBUG] [Thread-191072] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:49:35.498 [DEBUG] [Thread-191072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:49:35.498 [DEBUG] [Thread-191072] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:49:35.498 [DEBUG] [Thread-191072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:49:35.498 [DEBUG] [Thread-191072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:49:35.498 [DEBUG] [Thread-191072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] client lang: <none>
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] server lang: <none>
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] kex follows: False
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] Compression: none
2025-11-24T13:49:35.499 [DEBUG] [Thread-191072] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:49:35.513 [DEBUG] [Thread-191072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:49:35.513 [DEBUG] [Thread-191072] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:49:35.514 [DEBUG] [Thread-191072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:49:35.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:49:35.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:49:35.516 [DEBUG] [Thread-191072] [transport.py] [_log()] userauth is OK
2025-11-24T13:49:35.516 [DEBUG] [Thread-191072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:49:35.517 [DEBUG] [Thread-191072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:49:35.517 [DEBUG] [Thread-191072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:49:35.517 [DEBUG] [Thread-191072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:49:35.540 [INFO] [Thread-191072] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:49:35.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:49:36.208 [DEBUG] [Thread-191072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:49:36.208 [DEBUG] [Thread-191072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:49:36.208 [DEBUG] [Thread-191072] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:49:36.249 [DEBUG] [Thread-191072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:49:36.249 [DEBUG] [Thread-191072] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:49:36.252 [DEBUG] [Thread-191072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:49:36.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:49:36.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:49:36.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:49:36.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:49:36.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:49:36.273 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:49:36.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:49:36.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:49:36.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:49:36.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.492062 -999.00  +21.00  15.00     27   +1.50 1 1 1 1 1   888    0 20.47 7.37 ----- 15.0 15.0 182.6 20.8 27.6 -26.8 26.6 -26.4 27.7 -25.8 28.8 -25.7
2025-11-24T13:49:36.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:49:36.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:49:36.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.492062
2025-11-24T13:49:36.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:49:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:49:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:49:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:49:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:49:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:49:28', tmtdew=22.88, humidity=21.6, cloud=0.0, wind=22.99, temperature=21.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:48:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:49:36.276 [DEBUG] [Thread-191072] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:49:36.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:49:36.373 [DEBUG] [Thread-191075] [transport.py] [_log()] starting thread (client mode): 0xd31b2d70
2025-11-24T13:49:36.373 [DEBUG] [Thread-191075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:49:36.393 [DEBUG] [Thread-191075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:49:36.393 [INFO] [Thread-191075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:49:36.400 [DEBUG] [Thread-191075] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:49:36.401 [DEBUG] [Thread-191075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:49:36.401 [DEBUG] [Thread-191075] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:49:36.401 [DEBUG] [Thread-191075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:49:36.401 [DEBUG] [Thread-191075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:49:36.401 [DEBUG] [Thread-191075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:49:36.401 [DEBUG] [Thread-191075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:49:36.401 [DEBUG] [Thread-191075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:49:36.401 [DEBUG] [Thread-191075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:49:36.401 [DEBUG] [Thread-191075] [transport.py] [_log()] client lang: <none>
2025-11-24T13:49:36.401 [DEBUG] [Thread-191075] [transport.py] [_log()] server lang: <none>
2025-11-24T13:49:36.402 [DEBUG] [Thread-191075] [transport.py] [_log()] kex follows: False
2025-11-24T13:49:36.402 [DEBUG] [Thread-191075] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:49:36.402 [DEBUG] [Thread-191075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:49:36.402 [DEBUG] [Thread-191075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:49:36.402 [DEBUG] [Thread-191075] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:49:36.402 [DEBUG] [Thread-191075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:49:36.402 [DEBUG] [Thread-191075] [transport.py] [_log()] Compression: none
2025-11-24T13:49:36.402 [DEBUG] [Thread-191075] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:49:36.462 [DEBUG] [Thread-191075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:49:36.462 [DEBUG] [Thread-191075] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:49:36.463 [DEBUG] [Thread-191075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:49:36.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:49:36.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:49:36.518 [DEBUG] [Thread-191075] [transport.py] [_log()] userauth is OK
2025-11-24T13:49:36.518 [DEBUG] [Thread-191075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:49:36.518 [DEBUG] [Thread-191075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:49:36.518 [DEBUG] [Thread-191075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:49:36.518 [DEBUG] [Thread-191075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:49:36.538 [INFO] [Thread-191075] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:49:36.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:49:36.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:49:37.384 [DEBUG] [Thread-191075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:49:37.384 [DEBUG] [Thread-191075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:49:37.432 [DEBUG] [Thread-191075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:49:37.432 [DEBUG] [Thread-191075] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:49:37.440 [DEBUG] [Thread-191075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:49:37.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:49:37.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-11-24T13:49:37.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:49:37.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:49:37.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:49:37.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:49:37.472 [DEBUG] [Thread-191075] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:49:44.517 [DEBUG] [Thread-191077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:49:59.563 [DEBUG] [Thread-191078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:50:03.313 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:50:03.315 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:50:04.953 [DEBUG] [Thread-191079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:50:07.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:50:07.493 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:50:07.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-11-24T13:50:08.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 50), 23.66, 20.25, 0.0, 28.55, 21.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:50:08.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:50:00
2025-11-24T13:50:08.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:50:08.571 [DEBUG] [Thread-191080] [transport.py] [_log()] starting thread (client mode): 0xd07e8430
2025-11-24T13:50:08.571 [DEBUG] [Thread-191080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:50:08.590 [DEBUG] [Thread-191080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:50:08.590 [INFO] [Thread-191080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] client lang: <none>
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] server lang: <none>
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] kex follows: False
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] Compression: none
2025-11-24T13:50:08.593 [DEBUG] [Thread-191080] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:50:08.601 [DEBUG] [Thread-191080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:50:08.601 [DEBUG] [Thread-191080] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:50:08.601 [DEBUG] [Thread-191080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:50:08.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:50:08.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:50:08.602 [DEBUG] [Thread-191080] [transport.py] [_log()] userauth is OK
2025-11-24T13:50:08.602 [DEBUG] [Thread-191080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:50:08.602 [DEBUG] [Thread-191080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:50:08.602 [DEBUG] [Thread-191080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:50:08.602 [DEBUG] [Thread-191080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:50:08.615 [INFO] [Thread-191080] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:50:08.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:50:10.477 [DEBUG] [Thread-191080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:50:10.477 [DEBUG] [Thread-191080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:50:10.477 [DEBUG] [Thread-191080] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:50:10.518 [DEBUG] [Thread-191080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:50:10.518 [DEBUG] [Thread-191080] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:50:10.520 [DEBUG] [Thread-191080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:50:10.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:50:10.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:50:10.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:50:10.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:50:10.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:50:10.573 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:50:10.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:50:10.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:50:10.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:50:10.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.492756 -999.00  +21.50  25.90     26   +1.40 1 1 1 1 1   888    0 19.60 -14.34 ----- 25.9 25.9 147.4 34.2 27.6 -25.9 26.8 -24.8 27.9 -23.8 28.8 -25.6
2025-11-24T13:50:10.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:50:10.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:50:10.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.492756
2025-11-24T13:50:10.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:50:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:50:10.576 [DEBUG] [Thread-191080] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:50:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:50:10.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:50:10.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:50:10.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:50:00', tmtdew=23.66, humidity=20.25, cloud=0.0, wind=28.55, temperature=21.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:49:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:50:10.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:50:10.692 [DEBUG] [Thread-191083] [transport.py] [_log()] starting thread (client mode): 0xd31507f0
2025-11-24T13:50:10.692 [DEBUG] [Thread-191083] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:50:10.710 [DEBUG] [Thread-191083] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:50:10.710 [INFO] [Thread-191083] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:50:10.722 [DEBUG] [Thread-191083] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] client lang: <none>
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] server lang: <none>
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] kex follows: False
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] Compression: none
2025-11-24T13:50:10.723 [DEBUG] [Thread-191083] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:50:10.783 [DEBUG] [Thread-191083] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:50:10.783 [DEBUG] [Thread-191083] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:50:10.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:50:10.784 [DEBUG] [Thread-191083] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:50:10.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:50:10.842 [DEBUG] [Thread-191083] [transport.py] [_log()] userauth is OK
2025-11-24T13:50:10.842 [DEBUG] [Thread-191083] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:50:10.842 [DEBUG] [Thread-191083] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:50:10.842 [DEBUG] [Thread-191083] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:50:10.842 [DEBUG] [Thread-191083] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:50:10.857 [INFO] [Thread-191083] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:50:10.857 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:50:10.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:50:11.715 [DEBUG] [Thread-191083] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:50:11.715 [DEBUG] [Thread-191083] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:50:11.765 [DEBUG] [Thread-191083] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:50:11.766 [DEBUG] [Thread-191083] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:50:11.780 [DEBUG] [Thread-191083] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:50:11.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:50:11.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:50:11.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-11-24T13:50:11.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:50:11.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:50:11.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:50:11.835 [DEBUG] [Thread-191083] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:50:14.603 [DEBUG] [Thread-191085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:50:29.666 [DEBUG] [Thread-191086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:50:41.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:50:41.854 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:50:41.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-11-24T13:50:42.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 50, 33), 23.93, 19.97, 0.0, 25.09, 22.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:50:42.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:50:33
2025-11-24T13:50:42.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:50:42.960 [DEBUG] [Thread-191087] [transport.py] [_log()] starting thread (client mode): 0xd07fa020
2025-11-24T13:50:42.960 [DEBUG] [Thread-191087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:50:42.981 [DEBUG] [Thread-191087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:50:42.981 [INFO] [Thread-191087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:50:42.985 [DEBUG] [Thread-191087] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:50:42.985 [DEBUG] [Thread-191087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:50:42.985 [DEBUG] [Thread-191087] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:50:42.985 [DEBUG] [Thread-191087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:50:42.985 [DEBUG] [Thread-191087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:50:42.985 [DEBUG] [Thread-191087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:50:42.985 [DEBUG] [Thread-191087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] client lang: <none>
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] server lang: <none>
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] kex follows: False
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] Compression: none
2025-11-24T13:50:42.986 [DEBUG] [Thread-191087] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:50:43.004 [DEBUG] [Thread-191087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:50:43.004 [DEBUG] [Thread-191087] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:50:43.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:50:43.005 [DEBUG] [Thread-191087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:50:43.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:50:43.007 [DEBUG] [Thread-191087] [transport.py] [_log()] userauth is OK
2025-11-24T13:50:43.008 [DEBUG] [Thread-191087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:50:43.008 [DEBUG] [Thread-191087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:50:43.008 [DEBUG] [Thread-191087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:50:43.008 [DEBUG] [Thread-191087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:50:43.031 [INFO] [Thread-191087] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:50:43.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:50:43.680 [DEBUG] [Thread-191087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:50:43.680 [DEBUG] [Thread-191087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:50:43.680 [DEBUG] [Thread-191087] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:50:43.721 [DEBUG] [Thread-191087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:50:43.721 [DEBUG] [Thread-191087] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:50:43.723 [DEBUG] [Thread-191087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:50:43.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:50:43.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:50:43.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:50:43.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:50:43.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:50:43.741 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:50:43.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:50:43.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:50:43.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:50:43.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.493103 -999.00  +21.60  20.58     26   +1.40 1 1 1 1 1   888    0 20.37 -15.37 ----- 20.6 20.6 183.9 39.2 27.6 -27.2 26.6 -29.2 27.7 -26.8 28.8 -27.7
2025-11-24T13:50:43.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:50:43.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:50:43.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.493103
2025-11-24T13:50:43.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:50:43.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:50:43.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:50:43.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:50:43.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:50:43.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:50:33', tmtdew=23.93, humidity=19.97, cloud=0.0, wind=25.09, temperature=22.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:50:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:50:43.742 [DEBUG] [Thread-191087] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:50: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-11-24T13:50:43.829 [DEBUG] [Thread-191090] [transport.py] [_log()] starting thread (client mode): 0xc9b825f0
2025-11-24T13:50:43.830 [DEBUG] [Thread-191090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:50:43.848 [DEBUG] [Thread-191090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:50:43.848 [INFO] [Thread-191090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:50:43.855 [DEBUG] [Thread-191090] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:50:43.855 [DEBUG] [Thread-191090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:50:43.855 [DEBUG] [Thread-191090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:50:43.855 [DEBUG] [Thread-191090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] client lang: <none>
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] server lang: <none>
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] kex follows: False
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] Compression: none
2025-11-24T13:50:43.856 [DEBUG] [Thread-191090] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:50:43.914 [DEBUG] [Thread-191090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:50:43.914 [DEBUG] [Thread-191090] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:50:43.914 [DEBUG] [Thread-191090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:50:43.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:50:43.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:50:43.970 [DEBUG] [Thread-191090] [transport.py] [_log()] userauth is OK
2025-11-24T13:50:43.970 [DEBUG] [Thread-191090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:50:43.970 [DEBUG] [Thread-191090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:50:43.970 [DEBUG] [Thread-191090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:50:43.970 [DEBUG] [Thread-191090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:50:43.984 [INFO] [Thread-191090] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:50:43.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:50:43.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:50:44.702 [DEBUG] [Thread-191092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:50:44.856 [DEBUG] [Thread-191090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:50:44.856 [DEBUG] [Thread-191090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:50:44.904 [DEBUG] [Thread-191090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:50:44.904 [DEBUG] [Thread-191090] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:50:44.912 [DEBUG] [Thread-191090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:50:44.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:50:44.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-11-24T13:50:44.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-11-24T13:50:44.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:50:44.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:50:44.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:50:44.944 [DEBUG] [Thread-191090] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:50:59.741 [DEBUG] [Thread-191093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:51:03.457 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:51:03.458 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:51:05.114 [DEBUG] [Thread-191094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:51:14.782 [DEBUG] [Thread-191095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:51:14.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:51:14.967 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:51:14.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-11-24T13:51:15.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 51, 5), 24.01, 19.84, 0.0, 25.58, 22.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:51:15.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:51:05
2025-11-24T13:51:15.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:51:16.042 [DEBUG] [Thread-191096] [transport.py] [_log()] starting thread (client mode): 0xd31505e0
2025-11-24T13:51:16.042 [DEBUG] [Thread-191096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:51:16.058 [DEBUG] [Thread-191096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:51:16.058 [INFO] [Thread-191096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:51:16.061 [DEBUG] [Thread-191096] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:51:16.061 [DEBUG] [Thread-191096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:51:16.061 [DEBUG] [Thread-191096] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:51:16.061 [DEBUG] [Thread-191096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:51:16.061 [DEBUG] [Thread-191096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:51:16.061 [DEBUG] [Thread-191096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:51:16.061 [DEBUG] [Thread-191096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:51:16.061 [DEBUG] [Thread-191096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:51:16.061 [DEBUG] [Thread-191096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:51:16.062 [DEBUG] [Thread-191096] [transport.py] [_log()] client lang: <none>
2025-11-24T13:51:16.062 [DEBUG] [Thread-191096] [transport.py] [_log()] server lang: <none>
2025-11-24T13:51:16.062 [DEBUG] [Thread-191096] [transport.py] [_log()] kex follows: False
2025-11-24T13:51:16.062 [DEBUG] [Thread-191096] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:51:16.062 [DEBUG] [Thread-191096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:51:16.062 [DEBUG] [Thread-191096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:51:16.062 [DEBUG] [Thread-191096] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:51:16.062 [DEBUG] [Thread-191096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:51:16.062 [DEBUG] [Thread-191096] [transport.py] [_log()] Compression: none
2025-11-24T13:51:16.062 [DEBUG] [Thread-191096] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:51:16.078 [DEBUG] [Thread-191096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:51:16.079 [DEBUG] [Thread-191096] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:51:16.079 [DEBUG] [Thread-191096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:51:16.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:51:16.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:51:16.081 [DEBUG] [Thread-191096] [transport.py] [_log()] userauth is OK
2025-11-24T13:51:16.081 [DEBUG] [Thread-191096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:51:16.081 [DEBUG] [Thread-191096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:51:16.082 [DEBUG] [Thread-191096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:51:16.082 [DEBUG] [Thread-191096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:51:16.100 [INFO] [Thread-191096] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:51:16.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:51:16.729 [DEBUG] [Thread-191096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:51:16.729 [DEBUG] [Thread-191096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:51:16.729 [DEBUG] [Thread-191096] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:51:16.770 [DEBUG] [Thread-191096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:51:16.770 [DEBUG] [Thread-191096] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:51:16.773 [DEBUG] [Thread-191096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:51:16.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:51:16.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:51:16.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:51:16.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:51:16.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:51:16.807 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:51:16.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:51:16.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:51:16.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:51:16.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.493450 -999.00  +21.90  13.54     26   +1.70 1 1 1 1 1   888    0 20.26 -16.62 ----- 13.5 13.5 161.0 28.9 27.8 -25.6 26.7 -26.9 27.9 -23.9 28.8 -26.4
2025-11-24T13:51:16.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:51:16.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:51:16.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.493450
2025-11-24T13:51:16.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:51:16.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:51:16.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:51:16.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:51:16.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:51:16.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:51:05', tmtdew=24.01, humidity=19.84, cloud=0.0, wind=25.58, temperature=22.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:50:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:51:16.810 [DEBUG] [Thread-191096] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:51:16.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:51:16.914 [DEBUG] [Thread-191099] [transport.py] [_log()] starting thread (client mode): 0xd3153c70
2025-11-24T13:51:16.914 [DEBUG] [Thread-191099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:51:16.929 [DEBUG] [Thread-191099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:51:16.930 [INFO] [Thread-191099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:51:16.937 [DEBUG] [Thread-191099] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:51:16.938 [DEBUG] [Thread-191099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:51:16.938 [DEBUG] [Thread-191099] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:51:16.938 [DEBUG] [Thread-191099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:51:16.938 [DEBUG] [Thread-191099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:51:16.938 [DEBUG] [Thread-191099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:51:16.938 [DEBUG] [Thread-191099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:51:16.938 [DEBUG] [Thread-191099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:51:16.939 [DEBUG] [Thread-191099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:51:16.939 [DEBUG] [Thread-191099] [transport.py] [_log()] client lang: <none>
2025-11-24T13:51:16.939 [DEBUG] [Thread-191099] [transport.py] [_log()] server lang: <none>
2025-11-24T13:51:16.939 [DEBUG] [Thread-191099] [transport.py] [_log()] kex follows: False
2025-11-24T13:51:16.939 [DEBUG] [Thread-191099] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:51:16.939 [DEBUG] [Thread-191099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:51:16.939 [DEBUG] [Thread-191099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:51:16.940 [DEBUG] [Thread-191099] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:51:16.940 [DEBUG] [Thread-191099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:51:16.940 [DEBUG] [Thread-191099] [transport.py] [_log()] Compression: none
2025-11-24T13:51:16.940 [DEBUG] [Thread-191099] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:51:16.999 [DEBUG] [Thread-191099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:51:17.000 [DEBUG] [Thread-191099] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:51:17.000 [DEBUG] [Thread-191099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:51:17.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:51:17.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:51:17.058 [DEBUG] [Thread-191099] [transport.py] [_log()] userauth is OK
2025-11-24T13:51:17.059 [DEBUG] [Thread-191099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:51:17.059 [DEBUG] [Thread-191099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:51:17.059 [DEBUG] [Thread-191099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:51:17.059 [DEBUG] [Thread-191099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:51:17.081 [INFO] [Thread-191099] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:51:17.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:51:17.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:51:17.996 [DEBUG] [Thread-191099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:51:17.997 [DEBUG] [Thread-191099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:51:18.044 [DEBUG] [Thread-191099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:51:18.045 [DEBUG] [Thread-191099] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:51:18.054 [DEBUG] [Thread-191099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:51:18.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:51:18.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-11-24T13:51:18.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-11-24T13:51:18.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:51:18.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:51:18.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:51:18.091 [DEBUG] [Thread-191099] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:51:29.815 [DEBUG] [Thread-191101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:51:44.870 [DEBUG] [Thread-191102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:51:48.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:51:48.113 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:51:48.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-11-24T13:51:48.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 51, 37), 23.71, 20.64, 0.0, 32.8, 21.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:51:48.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:51:37
2025-11-24T13:51:49.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:51:49.203 [DEBUG] [Thread-191103] [transport.py] [_log()] starting thread (client mode): 0xd31b2f80
2025-11-24T13:51:49.203 [DEBUG] [Thread-191103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:51:49.221 [DEBUG] [Thread-191103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:51:49.221 [INFO] [Thread-191103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] client lang: <none>
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] server lang: <none>
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] kex follows: False
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] Compression: none
2025-11-24T13:51:49.222 [DEBUG] [Thread-191103] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:51:49.230 [DEBUG] [Thread-191103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:51:49.230 [DEBUG] [Thread-191103] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:51:49.230 [DEBUG] [Thread-191103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:51:49.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:51:49.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:51:49.232 [DEBUG] [Thread-191103] [transport.py] [_log()] userauth is OK
2025-11-24T13:51:49.232 [DEBUG] [Thread-191103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:51:49.232 [DEBUG] [Thread-191103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:51:49.232 [DEBUG] [Thread-191103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:51:49.232 [DEBUG] [Thread-191103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:51:49.245 [INFO] [Thread-191103] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:51:49.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:51:49.900 [DEBUG] [Thread-191103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:51:49.900 [DEBUG] [Thread-191103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:51:49.900 [DEBUG] [Thread-191103] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:51:49.941 [DEBUG] [Thread-191103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:51:49.941 [DEBUG] [Thread-191103] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:51:49.943 [DEBUG] [Thread-191103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:51:49.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:51:49.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:51:49.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:51:49.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:51:49.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:51:49.972 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:51:49.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.493797 -999.00  +21.70  20.12     26   +1.60 1 1 1 1 1   888    0 19.95 -17.82 ----- 20.1 20.1 161.8 33.7 27.8 -26.6 26.9 -25.7 28.0 -25.1 29.0 -27.7
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.493797
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:51:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:51:37', tmtdew=23.71, humidity=20.64, cloud=0.0, wind=32.8, temperature=21.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:51:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:51:49.973 [DEBUG] [Thread-191103] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:51:50.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:51:50.056 [DEBUG] [Thread-191106] [transport.py] [_log()] starting thread (client mode): 0xd31b3d30
2025-11-24T13:51:50.056 [DEBUG] [Thread-191106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:51:50.071 [DEBUG] [Thread-191106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:51:50.071 [INFO] [Thread-191106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] client lang: <none>
2025-11-24T13:51:50.078 [DEBUG] [Thread-191106] [transport.py] [_log()] server lang: <none>
2025-11-24T13:51:50.079 [DEBUG] [Thread-191106] [transport.py] [_log()] kex follows: False
2025-11-24T13:51:50.079 [DEBUG] [Thread-191106] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:51:50.079 [DEBUG] [Thread-191106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:51:50.079 [DEBUG] [Thread-191106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:51:50.079 [DEBUG] [Thread-191106] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:51:50.079 [DEBUG] [Thread-191106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:51:50.079 [DEBUG] [Thread-191106] [transport.py] [_log()] Compression: none
2025-11-24T13:51:50.079 [DEBUG] [Thread-191106] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:51:50.137 [DEBUG] [Thread-191106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:51:50.137 [DEBUG] [Thread-191106] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:51:50.137 [DEBUG] [Thread-191106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:51:50.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:51:50.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:51:50.194 [DEBUG] [Thread-191106] [transport.py] [_log()] userauth is OK
2025-11-24T13:51:50.194 [DEBUG] [Thread-191106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:51:50.194 [DEBUG] [Thread-191106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:51:50.194 [DEBUG] [Thread-191106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:51:50.194 [DEBUG] [Thread-191106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:51:50.208 [INFO] [Thread-191106] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:51:50.208 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:51:50.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:51:51.052 [DEBUG] [Thread-191106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:51:51.052 [DEBUG] [Thread-191106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:51:51.100 [DEBUG] [Thread-191106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:51:51.101 [DEBUG] [Thread-191106] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:51:51.110 [DEBUG] [Thread-191106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:51:51.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:51:51.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:51:51.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:51:51.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:51:51.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:51:51.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:51:51.145 [DEBUG] [Thread-191106] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:51:59.903 [DEBUG] [Thread-191108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:52:03.599 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:52:03.599 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:52:05.357 [DEBUG] [Thread-191109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:52:14.948 [DEBUG] [Thread-191110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:52:21.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:52:21.167 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:52:21.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-11-24T13:52:21.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 52, 9), 23.18, 21.31, 0.0, 29.5, 21.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:52:21.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:52:09
2025-11-24T13:52:22.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:52:22.269 [DEBUG] [Thread-191111] [transport.py] [_log()] starting thread (client mode): 0xc9b82da0
2025-11-24T13:52:22.269 [DEBUG] [Thread-191111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:52:22.283 [DEBUG] [Thread-191111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:52:22.283 [INFO] [Thread-191111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] client lang: <none>
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] server lang: <none>
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] kex follows: False
2025-11-24T13:52:22.286 [DEBUG] [Thread-191111] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:52:22.287 [DEBUG] [Thread-191111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:52:22.287 [DEBUG] [Thread-191111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:52:22.287 [DEBUG] [Thread-191111] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:52:22.287 [DEBUG] [Thread-191111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:52:22.287 [DEBUG] [Thread-191111] [transport.py] [_log()] Compression: none
2025-11-24T13:52:22.287 [DEBUG] [Thread-191111] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:52:22.304 [DEBUG] [Thread-191111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:52:22.304 [DEBUG] [Thread-191111] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:52:22.305 [DEBUG] [Thread-191111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:52:22.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:52:22.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:52:22.308 [DEBUG] [Thread-191111] [transport.py] [_log()] userauth is OK
2025-11-24T13:52:22.308 [DEBUG] [Thread-191111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:52:22.308 [DEBUG] [Thread-191111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:52:22.309 [DEBUG] [Thread-191111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:52:22.309 [DEBUG] [Thread-191111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:52:22.329 [INFO] [Thread-191111] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:52:22.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:52:22.942 [DEBUG] [Thread-191111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:52:22.942 [DEBUG] [Thread-191111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:52:22.942 [DEBUG] [Thread-191111] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:52:22.983 [DEBUG] [Thread-191111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:52:22.983 [DEBUG] [Thread-191111] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:52:22.986 [DEBUG] [Thread-191111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:52:22.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:52:23.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:52:23.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:52:23.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:52:23.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:52:23.005 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:52:23.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:52:23.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:52:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:52:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.494145 -999.00  +21.60  15.47     26   +1.70 1 1 1 1 1   888    0 19.32 -20.68 ----- 15.5 15.5 167.1 26.0 27.8 -26.9 26.8 -28.8 27.9 -25.4 28.9 -27.7
2025-11-24T13:52:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:52:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:52:23.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.494145
2025-11-24T13:52:23.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:52:23.014 [DEBUG] [Thread-191111] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:52:23.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:52:23.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:52:23.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:52:23.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:52:23.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:52:09', tmtdew=23.18, humidity=21.31, cloud=0.0, wind=29.5, temperature=21.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:51:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:52:23.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:52:23.099 [DEBUG] [Thread-191114] [transport.py] [_log()] starting thread (client mode): 0xd31529e0
2025-11-24T13:52:23.099 [DEBUG] [Thread-191114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:52:23.116 [DEBUG] [Thread-191114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:52:23.116 [INFO] [Thread-191114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] client lang: <none>
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] server lang: <none>
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] kex follows: False
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] Compression: none
2025-11-24T13:52:23.124 [DEBUG] [Thread-191114] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:52:23.185 [DEBUG] [Thread-191114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:52:23.185 [DEBUG] [Thread-191114] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:52:23.185 [DEBUG] [Thread-191114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:52:23.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:52:23.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:52:23.244 [DEBUG] [Thread-191114] [transport.py] [_log()] userauth is OK
2025-11-24T13:52:23.244 [DEBUG] [Thread-191114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:52:23.244 [DEBUG] [Thread-191114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:52:23.244 [DEBUG] [Thread-191114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:52:23.244 [DEBUG] [Thread-191114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:52:23.259 [INFO] [Thread-191114] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:52:23.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:52:23.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:52:24.139 [DEBUG] [Thread-191114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:52:24.140 [DEBUG] [Thread-191114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:52:24.187 [DEBUG] [Thread-191114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:52:24.188 [DEBUG] [Thread-191114] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:52:24.197 [DEBUG] [Thread-191114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:52:24.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:52:24.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-11-24T13:52:24.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-11-24T13:52:24.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:52:24.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:52:24.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:52:24.234 [DEBUG] [Thread-191114] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:52:29.987 [DEBUG] [Thread-191116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:52:45.039 [DEBUG] [Thread-191117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:52:54.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:52:54.256 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:52:54.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-11-24T13:52:54.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 52, 42), 22.53, 21.85, 0.0, 22.29, 20.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:52:54.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:52:42
2025-11-24T13:52:55.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:52:55.269 [DEBUG] [Thread-191118] [transport.py] [_log()] starting thread (client mode): 0xc9b825c0
2025-11-24T13:52:55.269 [DEBUG] [Thread-191118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:52:55.289 [DEBUG] [Thread-191118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:52:55.289 [INFO] [Thread-191118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:52:55.292 [DEBUG] [Thread-191118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] client lang: <none>
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] server lang: <none>
2025-11-24T13:52:55.293 [DEBUG] [Thread-191118] [transport.py] [_log()] kex follows: False
2025-11-24T13:52:55.302 [DEBUG] [Thread-191118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:52:55.302 [DEBUG] [Thread-191118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:52:55.302 [DEBUG] [Thread-191118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:52:55.303 [DEBUG] [Thread-191118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:52:55.303 [DEBUG] [Thread-191118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:52:55.303 [DEBUG] [Thread-191118] [transport.py] [_log()] Compression: none
2025-11-24T13:52:55.303 [DEBUG] [Thread-191118] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:52:55.324 [DEBUG] [Thread-191118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:52:55.324 [DEBUG] [Thread-191118] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:52:55.325 [DEBUG] [Thread-191118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:52:55.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:52:55.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:52:55.366 [DEBUG] [Thread-191118] [transport.py] [_log()] userauth is OK
2025-11-24T13:52:55.367 [DEBUG] [Thread-191118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:52:55.367 [DEBUG] [Thread-191118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:52:55.367 [DEBUG] [Thread-191118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:52:55.367 [DEBUG] [Thread-191118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:52:55.394 [INFO] [Thread-191118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:52:55.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:52:56.017 [DEBUG] [Thread-191118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:52:56.018 [DEBUG] [Thread-191118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:52:56.018 [DEBUG] [Thread-191118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:52:56.059 [DEBUG] [Thread-191118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:52:56.059 [DEBUG] [Thread-191118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:52:56.062 [DEBUG] [Thread-191118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:52:56.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:52:56.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:52:56.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:52:56.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:52:56.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:52:56.090 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:52:56.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:52:56.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:52:56.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:52:56.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.494492 -999.00  +21.70  19.09     27   +1.90 1 1 1 1 1   888    0 19.87 -22.89 ----- 19.1 19.1 191.0 35.1 27.7 -28.2 26.4 -33.8 27.8 -26.9 28.6 -30.6
2025-11-24T13:52:56.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:52:56.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:52:56.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.494492
2025-11-24T13:52:56.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:52:56.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:52:56.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:52:56.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:52:56.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:52:56.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:52:42', tmtdew=22.53, humidity=21.85, cloud=0.0, wind=22.29, temperature=20.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:52:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:52:56.094 [DEBUG] [Thread-191118] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:52:56.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:52:56.188 [DEBUG] [Thread-191121] [transport.py] [_log()] starting thread (client mode): 0xc9b80fd0
2025-11-24T13:52:56.188 [DEBUG] [Thread-191121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:52:56.209 [DEBUG] [Thread-191121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:52:56.209 [INFO] [Thread-191121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:52:56.220 [DEBUG] [Thread-191121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:52:56.220 [DEBUG] [Thread-191121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:52:56.220 [DEBUG] [Thread-191121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:52:56.220 [DEBUG] [Thread-191121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:52:56.220 [DEBUG] [Thread-191121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:52:56.220 [DEBUG] [Thread-191121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:52:56.220 [DEBUG] [Thread-191121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:52:56.220 [DEBUG] [Thread-191121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:52:56.220 [DEBUG] [Thread-191121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:52:56.221 [DEBUG] [Thread-191121] [transport.py] [_log()] client lang: <none>
2025-11-24T13:52:56.221 [DEBUG] [Thread-191121] [transport.py] [_log()] server lang: <none>
2025-11-24T13:52:56.221 [DEBUG] [Thread-191121] [transport.py] [_log()] kex follows: False
2025-11-24T13:52:56.221 [DEBUG] [Thread-191121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:52:56.221 [DEBUG] [Thread-191121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:52:56.221 [DEBUG] [Thread-191121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:52:56.221 [DEBUG] [Thread-191121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:52:56.221 [DEBUG] [Thread-191121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:52:56.221 [DEBUG] [Thread-191121] [transport.py] [_log()] Compression: none
2025-11-24T13:52:56.221 [DEBUG] [Thread-191121] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:52:56.287 [DEBUG] [Thread-191121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:52:56.288 [DEBUG] [Thread-191121] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:52:56.288 [DEBUG] [Thread-191121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:52:56.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:52:56.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:52:56.346 [DEBUG] [Thread-191121] [transport.py] [_log()] userauth is OK
2025-11-24T13:52:56.346 [DEBUG] [Thread-191121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:52:56.346 [DEBUG] [Thread-191121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:52:56.346 [DEBUG] [Thread-191121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:52:56.346 [DEBUG] [Thread-191121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:52:56.360 [INFO] [Thread-191121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:52:56.360 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:52:56.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:52:57.226 [DEBUG] [Thread-191121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:52:57.226 [DEBUG] [Thread-191121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:52:57.274 [DEBUG] [Thread-191121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:52:57.274 [DEBUG] [Thread-191121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:52:57.282 [DEBUG] [Thread-191121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:52:57.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:52:57.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-11-24T13:52: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') -> 00000000
2025-11-24T13:52:57.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:52:57.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:52:57.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:52:57.316 [DEBUG] [Thread-191121] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:53:00.066 [DEBUG] [Thread-191123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:53:03.740 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:53:03.741 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:53:05.626 [DEBUG] [Thread-191124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:53:15.104 [DEBUG] [Thread-191125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:53:27.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:53:27.320 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:53:27.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-11-24T13:53:28.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 53, 15), 22.53, 21.85, 0.0, 21.99, 20.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:53:28.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:53:15
2025-11-24T13:53:28.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:53:28.386 [DEBUG] [Thread-191126] [transport.py] [_log()] starting thread (client mode): 0xc9b82770
2025-11-24T13:53:28.386 [DEBUG] [Thread-191126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:53:28.396 [DEBUG] [Thread-191126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:53:28.396 [INFO] [Thread-191126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] client lang: <none>
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] server lang: <none>
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] kex follows: False
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:53:28.398 [DEBUG] [Thread-191126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:53:28.399 [DEBUG] [Thread-191126] [transport.py] [_log()] Compression: none
2025-11-24T13:53:28.399 [DEBUG] [Thread-191126] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:53:28.414 [DEBUG] [Thread-191126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:53:28.415 [DEBUG] [Thread-191126] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:53:28.416 [DEBUG] [Thread-191126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:53:28.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:53:28.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:53:28.418 [DEBUG] [Thread-191126] [transport.py] [_log()] userauth is OK
2025-11-24T13:53:28.418 [DEBUG] [Thread-191126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:53:28.418 [DEBUG] [Thread-191126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:53:28.418 [DEBUG] [Thread-191126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:53:28.418 [DEBUG] [Thread-191126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:53:28.444 [INFO] [Thread-191126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:53:28.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:53:29.041 [DEBUG] [Thread-191126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:53:29.041 [DEBUG] [Thread-191126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:53:29.041 [DEBUG] [Thread-191126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:53:29.082 [DEBUG] [Thread-191126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:53:29.082 [DEBUG] [Thread-191126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:53:29.084 [DEBUG] [Thread-191126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:53:29.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:53:29.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:53:29.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:53:29.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:53:29.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:53:29.104 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:53:29.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.494839 -999.00  +21.90  23.05     26   +1.80 1 1 1 1 1   888    0 19.25 -24.41 ----- 23.1 23.1 183.4 28.1 27.8 -27.1 26.7 -25.6 28.0 -26.2 28.8 -25.9
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.494839
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:53:29.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:53:15', tmtdew=22.53, humidity=21.85, cloud=0.0, wind=21.99, temperature=20.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:52:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:53:29.105 [DEBUG] [Thread-191126] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:53:29.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:53:29.190 [DEBUG] [Thread-191129] [transport.py] [_log()] starting thread (client mode): 0xc9b83340
2025-11-24T13:53:29.190 [DEBUG] [Thread-191129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:53:29.204 [DEBUG] [Thread-191129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:53:29.204 [INFO] [Thread-191129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] client lang: <none>
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] server lang: <none>
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] kex follows: False
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:53:29.212 [DEBUG] [Thread-191129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:53:29.213 [DEBUG] [Thread-191129] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:53:29.213 [DEBUG] [Thread-191129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:53:29.213 [DEBUG] [Thread-191129] [transport.py] [_log()] Compression: none
2025-11-24T13:53:29.213 [DEBUG] [Thread-191129] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:53:29.270 [DEBUG] [Thread-191129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:53:29.270 [DEBUG] [Thread-191129] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:53:29.270 [DEBUG] [Thread-191129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:53:29.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:53:29.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:53:29.330 [DEBUG] [Thread-191129] [transport.py] [_log()] userauth is OK
2025-11-24T13:53:29.331 [DEBUG] [Thread-191129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:53:29.331 [DEBUG] [Thread-191129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:53:29.331 [DEBUG] [Thread-191129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:53:29.331 [DEBUG] [Thread-191129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:53:29.344 [INFO] [Thread-191129] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:53:29.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:53:29.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:53:30.150 [DEBUG] [Thread-191131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:53:30.204 [DEBUG] [Thread-191129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:53:30.204 [DEBUG] [Thread-191129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:53:30.253 [DEBUG] [Thread-191129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:53:30.253 [DEBUG] [Thread-191129] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:53:30.262 [DEBUG] [Thread-191129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:53:30.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:53:30.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-11-24T13:53: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-11-24T13:53:30.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:53:30.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:53:30.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:53:30.299 [DEBUG] [Thread-191129] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:53:45.206 [DEBUG] [Thread-191132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:54:00.232 [DEBUG] [Thread-191133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:54:00.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:54:00.322 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:54:00.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-11-24T13:54:01.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 53, 47), 22.35, 22.11, 0.0, 18.37, 21.07, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:54:01.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:53:47
2025-11-24T13:54:01.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:54:01.411 [DEBUG] [Thread-191134] [transport.py] [_log()] starting thread (client mode): 0xd07ea320
2025-11-24T13:54:01.411 [DEBUG] [Thread-191134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:54:01.432 [DEBUG] [Thread-191134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:54:01.432 [INFO] [Thread-191134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:54:01.442 [DEBUG] [Thread-191134] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:54:01.442 [DEBUG] [Thread-191134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:54:01.443 [DEBUG] [Thread-191134] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:54:01.443 [DEBUG] [Thread-191134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:54:01.443 [DEBUG] [Thread-191134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:54:01.443 [DEBUG] [Thread-191134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:54:01.443 [DEBUG] [Thread-191134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:54:01.443 [DEBUG] [Thread-191134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:54:01.443 [DEBUG] [Thread-191134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:54:01.444 [DEBUG] [Thread-191134] [transport.py] [_log()] client lang: <none>
2025-11-24T13:54:01.444 [DEBUG] [Thread-191134] [transport.py] [_log()] server lang: <none>
2025-11-24T13:54:01.444 [DEBUG] [Thread-191134] [transport.py] [_log()] kex follows: False
2025-11-24T13:54:01.444 [DEBUG] [Thread-191134] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:54:01.444 [DEBUG] [Thread-191134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:54:01.444 [DEBUG] [Thread-191134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:54:01.445 [DEBUG] [Thread-191134] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:54:01.445 [DEBUG] [Thread-191134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:54:01.445 [DEBUG] [Thread-191134] [transport.py] [_log()] Compression: none
2025-11-24T13:54:01.445 [DEBUG] [Thread-191134] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:54:01.464 [DEBUG] [Thread-191134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:54:01.465 [DEBUG] [Thread-191134] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:54:01.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:54:01.466 [DEBUG] [Thread-191134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:54:01.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:54:01.468 [DEBUG] [Thread-191134] [transport.py] [_log()] userauth is OK
2025-11-24T13:54:01.468 [DEBUG] [Thread-191134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:54:01.469 [DEBUG] [Thread-191134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:54:01.469 [DEBUG] [Thread-191134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:54:01.469 [DEBUG] [Thread-191134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:54:01.494 [INFO] [Thread-191134] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:54:01.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:54:02.137 [DEBUG] [Thread-191134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:54:02.137 [DEBUG] [Thread-191134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:54:02.137 [DEBUG] [Thread-191134] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:54:02.178 [DEBUG] [Thread-191134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:54:02.178 [DEBUG] [Thread-191134] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:54:02.182 [DEBUG] [Thread-191134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:54:02.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:54:02.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:54:02.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:54:02.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:54:02.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:54:02.211 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:54:02.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:54:02.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:54:02.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:54:02.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.495187 -999.00  +21.40  12.69     27   +1.70 1 1 1 1 1   888    0 19.81 -29.59 ----- 12.7 12.7 182.2 22.2 27.7 -26.6 26.6 -27.4 27.9 -25.1 28.8 -27.8
2025-11-24T13:54:02.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:54:02.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:54:02.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.495187
2025-11-24T13:54:02.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:54:02.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:54:02.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:54:02.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:54:02.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:54:02.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:53:47', tmtdew=22.35, humidity=22.11, cloud=0.0, wind=18.37, temperature=21.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:53:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:54:02.213 [DEBUG] [Thread-191134] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:54:02.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:54:02.299 [DEBUG] [Thread-191137] [transport.py] [_log()] starting thread (client mode): 0xd31b3430
2025-11-24T13:54:02.299 [DEBUG] [Thread-191137] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:54:02.313 [DEBUG] [Thread-191137] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:54:02.313 [INFO] [Thread-191137] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] client lang: <none>
2025-11-24T13:54:02.321 [DEBUG] [Thread-191137] [transport.py] [_log()] server lang: <none>
2025-11-24T13:54:02.322 [DEBUG] [Thread-191137] [transport.py] [_log()] kex follows: False
2025-11-24T13:54:02.322 [DEBUG] [Thread-191137] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:54:02.322 [DEBUG] [Thread-191137] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:54:02.322 [DEBUG] [Thread-191137] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:54:02.322 [DEBUG] [Thread-191137] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:54:02.322 [DEBUG] [Thread-191137] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:54:02.322 [DEBUG] [Thread-191137] [transport.py] [_log()] Compression: none
2025-11-24T13:54:02.322 [DEBUG] [Thread-191137] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:54:02.377 [DEBUG] [Thread-191137] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:54:02.377 [DEBUG] [Thread-191137] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:54:02.377 [DEBUG] [Thread-191137] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:54:02.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:54:02.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:54:02.434 [DEBUG] [Thread-191137] [transport.py] [_log()] userauth is OK
2025-11-24T13:54:02.434 [DEBUG] [Thread-191137] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:54:02.434 [DEBUG] [Thread-191137] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:54:02.434 [DEBUG] [Thread-191137] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:54:02.434 [DEBUG] [Thread-191137] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:54:02.448 [INFO] [Thread-191137] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:54:02.448 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:54:02.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:54:03.311 [DEBUG] [Thread-191137] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:54:03.312 [DEBUG] [Thread-191137] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:54:03.360 [DEBUG] [Thread-191137] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:54:03.360 [DEBUG] [Thread-191137] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:54:03.369 [DEBUG] [Thread-191137] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:54:03.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:54:03.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-11-24T13:54:03.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T13:54:03.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:54:03.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:54:03.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:54:03.406 [DEBUG] [Thread-191137] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:54:03.891 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:54:03.894 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:54:05.826 [DEBUG] [Thread-191139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:54:15.263 [DEBUG] [Thread-191140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:54:30.312 [DEBUG] [Thread-191141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:54:33.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:54:33.429 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:54:33.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-11-24T13:54:34.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 54, 20), 22.51, 21.88, 0.0, 17.73, 21.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:54:34.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:54:20
2025-11-24T13:54:34.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:54:34.512 [DEBUG] [Thread-191142] [transport.py] [_log()] starting thread (client mode): 0xd3150850
2025-11-24T13:54:34.512 [DEBUG] [Thread-191142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:54:34.531 [DEBUG] [Thread-191142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:54:34.531 [INFO] [Thread-191142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] client lang: <none>
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] server lang: <none>
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] kex follows: False
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:54:34.534 [DEBUG] [Thread-191142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:54:34.535 [DEBUG] [Thread-191142] [transport.py] [_log()] Compression: none
2025-11-24T13:54:34.535 [DEBUG] [Thread-191142] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:54:34.553 [DEBUG] [Thread-191142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:54:34.554 [DEBUG] [Thread-191142] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:54:34.554 [DEBUG] [Thread-191142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:54:34.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:54:34.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:54:34.555 [DEBUG] [Thread-191142] [transport.py] [_log()] userauth is OK
2025-11-24T13:54:34.555 [DEBUG] [Thread-191142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:54:34.555 [DEBUG] [Thread-191142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:54:34.555 [DEBUG] [Thread-191142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:54:34.555 [DEBUG] [Thread-191142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:54:34.570 [INFO] [Thread-191142] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:54:34.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:54:35.164 [DEBUG] [Thread-191142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:54:35.164 [DEBUG] [Thread-191142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:54:35.164 [DEBUG] [Thread-191142] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:54:35.205 [DEBUG] [Thread-191142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:54:35.205 [DEBUG] [Thread-191142] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:54:35.208 [DEBUG] [Thread-191142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:54:35.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:54:35.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:54:35.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:54:35.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:54:35.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:54:35.226 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:54:35.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.495534 -999.00  +21.70  13.14     27   +2.00 1 1 1 1 1   888    0 19.65 -34.94 ----- 13.1 13.1 170.4 18.8 27.8 -26.4 26.6 -27.9 28.0 -24.5 28.8 -26.3
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.495534
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:54:35.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:54:20', tmtdew=22.51, humidity=21.88, cloud=0.0, wind=17.73, temperature=21.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:53:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:54:35.228 [DEBUG] [Thread-191142] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:54:35.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:54:35.314 [DEBUG] [Thread-191145] [transport.py] [_log()] starting thread (client mode): 0xd07a8820
2025-11-24T13:54:35.314 [DEBUG] [Thread-191145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:54:35.329 [DEBUG] [Thread-191145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:54:35.329 [INFO] [Thread-191145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:54:35.336 [DEBUG] [Thread-191145] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:54:35.336 [DEBUG] [Thread-191145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:54:35.336 [DEBUG] [Thread-191145] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:54:35.336 [DEBUG] [Thread-191145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:54:35.336 [DEBUG] [Thread-191145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:54:35.336 [DEBUG] [Thread-191145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:54:35.336 [DEBUG] [Thread-191145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:54:35.336 [DEBUG] [Thread-191145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] client lang: <none>
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] server lang: <none>
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] kex follows: False
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] Compression: none
2025-11-24T13:54:35.337 [DEBUG] [Thread-191145] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:54:35.392 [DEBUG] [Thread-191145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:54:35.392 [DEBUG] [Thread-191145] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:54:35.393 [DEBUG] [Thread-191145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:54:35.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:54:35.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:54:35.453 [DEBUG] [Thread-191145] [transport.py] [_log()] userauth is OK
2025-11-24T13:54:35.453 [DEBUG] [Thread-191145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:54:35.454 [DEBUG] [Thread-191145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:54:35.454 [DEBUG] [Thread-191145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:54:35.454 [DEBUG] [Thread-191145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:54:35.468 [INFO] [Thread-191145] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:54:35.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:54:35.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:54:36.332 [DEBUG] [Thread-191145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:54:36.332 [DEBUG] [Thread-191145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:54:36.380 [DEBUG] [Thread-191145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:54:36.380 [DEBUG] [Thread-191145] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:54:36.388 [DEBUG] [Thread-191145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:54:36.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:54: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')
2025-11-24T13:54:36.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-11-24T13:54:36.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:54:36.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:54:36.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:54:36.421 [DEBUG] [Thread-191145] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:54:45.344 [DEBUG] [Thread-191147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:55:00.393 [DEBUG] [Thread-191148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:55:04.042 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:55:04.043 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:55:05.977 [DEBUG] [Thread-191149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:55:06.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:55:06.426 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:55:06.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-11-24T13:55:07.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 54, 52), 22.71, 21.78, 0.0, 18.19, 21.27, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:55:07.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:54:52
2025-11-24T13:55:07.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:55:07.507 [DEBUG] [Thread-191150] [transport.py] [_log()] starting thread (client mode): 0xd07eb760
2025-11-24T13:55:07.507 [DEBUG] [Thread-191150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:55:07.530 [DEBUG] [Thread-191150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:55:07.531 [INFO] [Thread-191150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:55:07.535 [DEBUG] [Thread-191150] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:55:07.535 [DEBUG] [Thread-191150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:55:07.535 [DEBUG] [Thread-191150] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:55:07.535 [DEBUG] [Thread-191150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:55:07.535 [DEBUG] [Thread-191150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:55:07.535 [DEBUG] [Thread-191150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:55:07.535 [DEBUG] [Thread-191150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:55:07.536 [DEBUG] [Thread-191150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:55:07.536 [DEBUG] [Thread-191150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:55:07.536 [DEBUG] [Thread-191150] [transport.py] [_log()] client lang: <none>
2025-11-24T13:55:07.536 [DEBUG] [Thread-191150] [transport.py] [_log()] server lang: <none>
2025-11-24T13:55:07.536 [DEBUG] [Thread-191150] [transport.py] [_log()] kex follows: False
2025-11-24T13:55:07.536 [DEBUG] [Thread-191150] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:55:07.536 [DEBUG] [Thread-191150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:55:07.536 [DEBUG] [Thread-191150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:55:07.536 [DEBUG] [Thread-191150] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:55:07.537 [DEBUG] [Thread-191150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:55:07.537 [DEBUG] [Thread-191150] [transport.py] [_log()] Compression: none
2025-11-24T13:55:07.537 [DEBUG] [Thread-191150] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:55:07.547 [DEBUG] [Thread-191150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:55:07.548 [DEBUG] [Thread-191150] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:55:07.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:55:07.550 [DEBUG] [Thread-191150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:55:07.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:55:07.552 [DEBUG] [Thread-191150] [transport.py] [_log()] userauth is OK
2025-11-24T13:55:07.552 [DEBUG] [Thread-191150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:55:07.553 [DEBUG] [Thread-191150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:55:07.553 [DEBUG] [Thread-191150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:55:07.553 [DEBUG] [Thread-191150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:55:07.577 [INFO] [Thread-191150] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:55:07.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:55:12.966 [DEBUG] [Thread-191150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:55:12.966 [DEBUG] [Thread-191150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:55:12.966 [DEBUG] [Thread-191150] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:55:13.007 [DEBUG] [Thread-191150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:55:13.007 [DEBUG] [Thread-191150] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:55:13.010 [DEBUG] [Thread-191150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:55:13.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:55:13.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:55:13.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:55:13.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:55:13.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:55:13.082 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:55:13.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.496576 -999.00  +21.20  11.05     27   +1.60 1 1 1 1 1   888    0 18.53 -52.31 ----- 11.1 11.1 165.4 16.5 27.9 -26.4 27.0 -27.2 28.2 -25.6 29.1 -26.4
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.496576
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:55:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:54:52', tmtdew=22.71, humidity=21.78, cloud=0.0, wind=18.19, temperature=21.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:55:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:55:13.083 [DEBUG] [Thread-191150] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:55:13.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:55:13.166 [DEBUG] [Thread-191153] [transport.py] [_log()] starting thread (client mode): 0xc9b82230
2025-11-24T13:55:13.166 [DEBUG] [Thread-191153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:55:13.181 [DEBUG] [Thread-191153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:55:13.181 [INFO] [Thread-191153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] client lang: <none>
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] server lang: <none>
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] kex follows: False
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] Compression: none
2025-11-24T13:55:13.190 [DEBUG] [Thread-191153] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:55:13.244 [DEBUG] [Thread-191153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:55:13.244 [DEBUG] [Thread-191153] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:55:13.244 [DEBUG] [Thread-191153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:55:13.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:55:13.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:55:13.302 [DEBUG] [Thread-191153] [transport.py] [_log()] userauth is OK
2025-11-24T13:55:13.302 [DEBUG] [Thread-191153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:55:13.302 [DEBUG] [Thread-191153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:55:13.302 [DEBUG] [Thread-191153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:55:13.302 [DEBUG] [Thread-191153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:55:13.316 [INFO] [Thread-191153] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:55:13.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:55:13.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:55:14.162 [DEBUG] [Thread-191153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:55:14.162 [DEBUG] [Thread-191153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:55:14.210 [DEBUG] [Thread-191153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:55:14.210 [DEBUG] [Thread-191153] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:55:14.219 [DEBUG] [Thread-191153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:55:14.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:55:14.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:55:14.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-11-24T13:55:14.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:55:14.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:55:14.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:55:14.251 [DEBUG] [Thread-191153] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:55:15.422 [DEBUG] [Thread-191155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:55:30.461 [DEBUG] [Thread-191156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:55:44.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:55:44.282 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:55:44.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-11-24T13:55:45.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 55, 25), 22.59, 21.93, 0.0, 17.63, 21.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:55:45.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:55:25
2025-11-24T13:55:45.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:55:45.370 [DEBUG] [Thread-191157] [transport.py] [_log()] starting thread (client mode): 0xd3192fb0
2025-11-24T13:55:45.370 [DEBUG] [Thread-191157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:55:45.389 [DEBUG] [Thread-191157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:55:45.389 [INFO] [Thread-191157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:55:45.391 [DEBUG] [Thread-191157] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] client lang: <none>
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] server lang: <none>
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] kex follows: False
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] Compression: none
2025-11-24T13:55:45.392 [DEBUG] [Thread-191157] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:55:45.409 [DEBUG] [Thread-191157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:55:45.409 [DEBUG] [Thread-191157] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:55:45.410 [DEBUG] [Thread-191157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:55:45.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:55:45.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:55:45.411 [DEBUG] [Thread-191157] [transport.py] [_log()] userauth is OK
2025-11-24T13:55:45.411 [DEBUG] [Thread-191157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:55:45.412 [DEBUG] [Thread-191157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:55:45.412 [DEBUG] [Thread-191157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:55:45.412 [DEBUG] [Thread-191157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:55:45.426 [INFO] [Thread-191157] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:55:45.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:55:45.494 [DEBUG] [Thread-191159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:55:45.973 [DEBUG] [Thread-191157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:55:45.973 [DEBUG] [Thread-191157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:55:45.973 [DEBUG] [Thread-191157] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:55:46.014 [DEBUG] [Thread-191157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:55:46.014 [DEBUG] [Thread-191157] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:55:46.018 [DEBUG] [Thread-191157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:55:46.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:55:46.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:55:46.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:55:46.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:55:46.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:55:46.049 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:55:46.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:55:46.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:55:46.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:55:46.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.496923 -999.00  +21.10   6.93     27   +1.60 1 1 1 1 1   888    0 18.24 -60.29 ----- 6.9 6.9 172.3 16.1 28.1 -26.7 27.2 -25.4 28.3 -26.1 29.2 -25.9
2025-11-24T13:55:46.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:55:46.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:55:46.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.496923
2025-11-24T13:55:46.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:55:46.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:55:46.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:55:46.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:55:46.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:55:46.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:55:25', tmtdew=22.59, humidity=21.93, cloud=0.0, wind=17.63, temperature=21.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:55:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:55:46.053 [DEBUG] [Thread-191157] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:55:46.136 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:55:46.149 [DEBUG] [Thread-191161] [transport.py] [_log()] starting thread (client mode): 0xd3190160
2025-11-24T13:55:46.149 [DEBUG] [Thread-191161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:55:46.164 [DEBUG] [Thread-191161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:55:46.164 [INFO] [Thread-191161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:55:46.172 [DEBUG] [Thread-191161] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:55:46.172 [DEBUG] [Thread-191161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:55:46.172 [DEBUG] [Thread-191161] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:55:46.172 [DEBUG] [Thread-191161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:55:46.172 [DEBUG] [Thread-191161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:55:46.172 [DEBUG] [Thread-191161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:55:46.172 [DEBUG] [Thread-191161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:55:46.172 [DEBUG] [Thread-191161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:55:46.172 [DEBUG] [Thread-191161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:55:46.172 [DEBUG] [Thread-191161] [transport.py] [_log()] client lang: <none>
2025-11-24T13:55:46.173 [DEBUG] [Thread-191161] [transport.py] [_log()] server lang: <none>
2025-11-24T13:55:46.173 [DEBUG] [Thread-191161] [transport.py] [_log()] kex follows: False
2025-11-24T13:55:46.173 [DEBUG] [Thread-191161] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:55:46.173 [DEBUG] [Thread-191161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:55:46.173 [DEBUG] [Thread-191161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:55:46.173 [DEBUG] [Thread-191161] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:55:46.173 [DEBUG] [Thread-191161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:55:46.173 [DEBUG] [Thread-191161] [transport.py] [_log()] Compression: none
2025-11-24T13:55:46.173 [DEBUG] [Thread-191161] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:55:46.228 [DEBUG] [Thread-191161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:55:46.229 [DEBUG] [Thread-191161] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:55:46.229 [DEBUG] [Thread-191161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:55:46.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:55:46.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:55:46.285 [DEBUG] [Thread-191161] [transport.py] [_log()] userauth is OK
2025-11-24T13:55:46.286 [DEBUG] [Thread-191161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:55:46.286 [DEBUG] [Thread-191161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:55:46.286 [DEBUG] [Thread-191161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:55:46.286 [DEBUG] [Thread-191161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:55:46.300 [INFO] [Thread-191161] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:55:46.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:55:46.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:55:47.147 [DEBUG] [Thread-191161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:55:47.147 [DEBUG] [Thread-191161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:55:47.195 [DEBUG] [Thread-191161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:55:47.195 [DEBUG] [Thread-191161] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:55:47.203 [DEBUG] [Thread-191161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:55:47.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:55:47.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:55:47.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-11-24T13:55:47.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:55:47.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:55:47.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:55:47.236 [DEBUG] [Thread-191161] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:56:00.529 [DEBUG] [Thread-191163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:56:04.194 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:56:04.196 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:56:06.322 [DEBUG] [Thread-191164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:56:15.584 [DEBUG] [Thread-191165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:56:17.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:56:17.256 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:56:17.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-11-24T13:56:18.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 55, 57), 22.4, 22.23, 0.0, 17.26, 21.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:56:18.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:55:57
2025-11-24T13:56:18.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:56:18.369 [DEBUG] [Thread-191166] [transport.py] [_log()] starting thread (client mode): 0xd317db70
2025-11-24T13:56:18.369 [DEBUG] [Thread-191166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:56:18.389 [DEBUG] [Thread-191166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:56:18.389 [INFO] [Thread-191166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:56:18.392 [DEBUG] [Thread-191166] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] client lang: <none>
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] server lang: <none>
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] kex follows: False
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] Compression: none
2025-11-24T13:56:18.393 [DEBUG] [Thread-191166] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:56:18.412 [DEBUG] [Thread-191166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:56:18.413 [DEBUG] [Thread-191166] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:56:18.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:56:18.415 [DEBUG] [Thread-191166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:56:18.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:56:18.455 [DEBUG] [Thread-191166] [transport.py] [_log()] userauth is OK
2025-11-24T13:56:18.455 [DEBUG] [Thread-191166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:56:18.455 [DEBUG] [Thread-191166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:56:18.455 [DEBUG] [Thread-191166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:56:18.455 [DEBUG] [Thread-191166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:56:18.487 [INFO] [Thread-191166] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:56:18.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:56:19.288 [DEBUG] [Thread-191166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:56:19.288 [DEBUG] [Thread-191166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:56:19.288 [DEBUG] [Thread-191166] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:56:19.329 [DEBUG] [Thread-191166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:56:19.329 [DEBUG] [Thread-191166] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:56:19.331 [DEBUG] [Thread-191166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:56:19.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:56:19.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:56:19.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:56:19.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:56:19.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:56:19.342 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:56:19.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:56:19.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:56:19.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:56:19.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.496923 -999.00  +21.10   6.93     27   +1.60 1 1 1 1 1   888    0 18.24 -60.29 ----- 6.9 6.9 172.3 16.1 28.1 -26.7 27.2 -25.4 28.3 -26.1 29.2 -25.9
2025-11-24T13:56:19.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:56:19.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:56:19.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.496923
2025-11-24T13:56:19.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:56:19.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:56:19.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:56:19.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:56:19.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:56:19.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:55:57', tmtdew=22.4, humidity=22.23, cloud=0.0, wind=17.26, temperature=21.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:55:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:56:19.344 [DEBUG] [Thread-191166] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:56:19.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:56:19.428 [DEBUG] [Thread-191169] [transport.py] [_log()] starting thread (client mode): 0xd07101c0
2025-11-24T13:56:19.428 [DEBUG] [Thread-191169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:56:19.443 [DEBUG] [Thread-191169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:56:19.443 [INFO] [Thread-191169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:56:19.450 [DEBUG] [Thread-191169] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] client lang: <none>
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] server lang: <none>
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] kex follows: False
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:56:19.451 [DEBUG] [Thread-191169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:56:19.452 [DEBUG] [Thread-191169] [transport.py] [_log()] Compression: none
2025-11-24T13:56:19.452 [DEBUG] [Thread-191169] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:56:19.510 [DEBUG] [Thread-191169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:56:19.511 [DEBUG] [Thread-191169] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:56:19.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:56:19.512 [DEBUG] [Thread-191169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:56:19.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:56:19.566 [DEBUG] [Thread-191169] [transport.py] [_log()] userauth is OK
2025-11-24T13:56:19.567 [DEBUG] [Thread-191169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:56:19.576 [DEBUG] [Thread-191169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:56:19.576 [DEBUG] [Thread-191169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:56:19.576 [DEBUG] [Thread-191169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:56:19.595 [INFO] [Thread-191169] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:56:19.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:56:19.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:56:20.420 [DEBUG] [Thread-191169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:56:20.420 [DEBUG] [Thread-191169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:56:20.471 [DEBUG] [Thread-191169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:56:20.471 [DEBUG] [Thread-191169] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:56:20.479 [DEBUG] [Thread-191169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:56:20.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:56:20.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-11-24T13:56:20.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-11-24T13:56:20.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:56:20.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:56:20.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:56:20.513 [DEBUG] [Thread-191169] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:56:30.620 [DEBUG] [Thread-191171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:56:45.662 [DEBUG] [Thread-191172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:56:50.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:56:50.532 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:56:50.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-11-24T13:56:51.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 56, 29), 22.51, 22.03, 0.0, 16.25, 21.06, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:56:51.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:56:29
2025-11-24T13:56:51.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:56:51.634 [DEBUG] [Thread-191173] [transport.py] [_log()] starting thread (client mode): 0xc9b837c0
2025-11-24T13:56:51.634 [DEBUG] [Thread-191173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:56:51.655 [DEBUG] [Thread-191173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:56:51.655 [INFO] [Thread-191173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:56:51.659 [DEBUG] [Thread-191173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:56:51.659 [DEBUG] [Thread-191173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] client lang: <none>
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] server lang: <none>
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] kex follows: False
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:56:51.660 [DEBUG] [Thread-191173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:56:51.661 [DEBUG] [Thread-191173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:56:51.661 [DEBUG] [Thread-191173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:56:51.661 [DEBUG] [Thread-191173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:56:51.661 [DEBUG] [Thread-191173] [transport.py] [_log()] Compression: none
2025-11-24T13:56:51.661 [DEBUG] [Thread-191173] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:56:51.679 [DEBUG] [Thread-191173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:56:51.679 [DEBUG] [Thread-191173] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:56:51.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:56:51.680 [DEBUG] [Thread-191173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:56:51.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:56:51.682 [DEBUG] [Thread-191173] [transport.py] [_log()] userauth is OK
2025-11-24T13:56:51.683 [DEBUG] [Thread-191173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:56:51.683 [DEBUG] [Thread-191173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:56:51.683 [DEBUG] [Thread-191173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:56:51.683 [DEBUG] [Thread-191173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:56:51.707 [INFO] [Thread-191173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:56:51.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:56:52.293 [DEBUG] [Thread-191173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:56:52.293 [DEBUG] [Thread-191173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:56:52.293 [DEBUG] [Thread-191173] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:56:52.334 [DEBUG] [Thread-191173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:56:52.334 [DEBUG] [Thread-191173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:56:52.337 [DEBUG] [Thread-191173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:56:52.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:56:52.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:56:52.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:56:52.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:56:52.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:56:52.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:56:52.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:56:52.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:56:52.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:56:52.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.497270 -999.00  +21.70  12.46     27   +2.10 1 1 1 1 1   888    0 18.72 -59.59 ----- 12.5 12.5 125.0 20.8 28.1 -25.7 27.2 -25.8 28.4 -24.7 29.4 -25.6
2025-11-24T13:56:52.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:56:52.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:56:52.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.497270
2025-11-24T13:56:52.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:56:52.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:56:52.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:56:52.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:56:52.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:56:52.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:56:29', tmtdew=22.51, humidity=22.03, cloud=0.0, wind=16.25, temperature=21.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:56:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:56:52.366 [DEBUG] [Thread-191173] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:56:52.437 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:56:52.448 [DEBUG] [Thread-191176] [transport.py] [_log()] starting thread (client mode): 0xc9b82c80
2025-11-24T13:56:52.448 [DEBUG] [Thread-191176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:56:52.462 [DEBUG] [Thread-191176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:56:52.462 [INFO] [Thread-191176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:56:52.469 [DEBUG] [Thread-191176] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] client lang: <none>
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] server lang: <none>
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] kex follows: False
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] Compression: none
2025-11-24T13:56:52.470 [DEBUG] [Thread-191176] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:56:52.530 [DEBUG] [Thread-191176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:56:52.530 [DEBUG] [Thread-191176] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:56:52.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:56:52.530 [DEBUG] [Thread-191176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:56:52.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:56:52.585 [DEBUG] [Thread-191176] [transport.py] [_log()] userauth is OK
2025-11-24T13:56:52.585 [DEBUG] [Thread-191176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:56:52.585 [DEBUG] [Thread-191176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:56:52.585 [DEBUG] [Thread-191176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:56:52.586 [DEBUG] [Thread-191176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:56:52.600 [INFO] [Thread-191176] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:56:52.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:56:52.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:56:53.495 [DEBUG] [Thread-191176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:56:53.495 [DEBUG] [Thread-191176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:56:53.543 [DEBUG] [Thread-191176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:56:53.543 [DEBUG] [Thread-191176] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:56:53.552 [DEBUG] [Thread-191176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:56:53.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:56: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-11-24T13:56:53.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-11-24T13:56:53.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:56:53.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:56:53.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:56:53.589 [DEBUG] [Thread-191176] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:57:00.697 [DEBUG] [Thread-191178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:57:04.336 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:57:04.337 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:57:06.372 [DEBUG] [Thread-191179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:57:15.734 [DEBUG] [Thread-191180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:57:23.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:57:23.611 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:57:23.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-11-24T13:57:24.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 57, 2), 22.26, 22.38, 0.0, 12.46, 20.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:57:24.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:57:02
2025-11-24T13:57:24.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:57:24.718 [DEBUG] [Thread-191181] [transport.py] [_log()] starting thread (client mode): 0xc9b82170
2025-11-24T13:57:24.718 [DEBUG] [Thread-191181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:57:24.739 [DEBUG] [Thread-191181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:57:24.740 [INFO] [Thread-191181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] client lang: <none>
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] server lang: <none>
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] kex follows: False
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:57:24.742 [DEBUG] [Thread-191181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:57:24.743 [DEBUG] [Thread-191181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:57:24.743 [DEBUG] [Thread-191181] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:57:24.743 [DEBUG] [Thread-191181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:57:24.743 [DEBUG] [Thread-191181] [transport.py] [_log()] Compression: none
2025-11-24T13:57:24.743 [DEBUG] [Thread-191181] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:57:24.760 [DEBUG] [Thread-191181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:57:24.761 [DEBUG] [Thread-191181] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:57:24.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:57:24.762 [DEBUG] [Thread-191181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:57:24.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:57:24.764 [DEBUG] [Thread-191181] [transport.py] [_log()] userauth is OK
2025-11-24T13:57:24.764 [DEBUG] [Thread-191181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:57:24.764 [DEBUG] [Thread-191181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:57:24.764 [DEBUG] [Thread-191181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:57:24.765 [DEBUG] [Thread-191181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:57:24.797 [INFO] [Thread-191181] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:57:24.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:57:25.597 [DEBUG] [Thread-191181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:57:25.597 [DEBUG] [Thread-191181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:57:25.597 [DEBUG] [Thread-191181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:57:25.638 [DEBUG] [Thread-191181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:57:25.638 [DEBUG] [Thread-191181] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:57:25.640 [DEBUG] [Thread-191181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:57:25.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:57:25.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:57:25.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:57:25.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:57:25.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:57:25.664 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:57:25.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:57:25.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:57:25.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:57:25.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.497617 -999.00  +22.20  21.02     25   +1.70 1 1 1 1 1   888    0 18.74 -58.34 ----- 21.0 21.0 156.3 24.0 28.2 -26.6 27.6 -25.4 28.5 -25.6 29.5 -27.3
2025-11-24T13:57:25.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:57:25.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:57:25.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.497617
2025-11-24T13:57:25.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:57:25.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:57:25.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:57:25.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:57:25.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:57:25.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:57:02', tmtdew=22.26, humidity=22.38, cloud=0.0, wind=12.46, temperature=20.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:56:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:57:25.665 [DEBUG] [Thread-191181] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:57:25.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:57:25.750 [DEBUG] [Thread-191184] [transport.py] [_log()] starting thread (client mode): 0xd0713730
2025-11-24T13:57:25.750 [DEBUG] [Thread-191184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:57:25.766 [DEBUG] [Thread-191184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:57:25.767 [INFO] [Thread-191184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:57:25.779 [DEBUG] [Thread-191184] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:57:25.779 [DEBUG] [Thread-191184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:57:25.779 [DEBUG] [Thread-191184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:57:25.779 [DEBUG] [Thread-191184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:57:25.779 [DEBUG] [Thread-191184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:57:25.779 [DEBUG] [Thread-191184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:57:25.779 [DEBUG] [Thread-191184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] client lang: <none>
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] server lang: <none>
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] kex follows: False
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] Compression: none
2025-11-24T13:57:25.780 [DEBUG] [Thread-191184] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:57:25.836 [DEBUG] [Thread-191184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:57:25.836 [DEBUG] [Thread-191184] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:57:25.836 [DEBUG] [Thread-191184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:57:25.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:57:25.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:57:25.901 [DEBUG] [Thread-191184] [transport.py] [_log()] userauth is OK
2025-11-24T13:57:25.901 [DEBUG] [Thread-191184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:57:25.901 [DEBUG] [Thread-191184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:57:25.901 [DEBUG] [Thread-191184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:57:25.901 [DEBUG] [Thread-191184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:57:25.915 [INFO] [Thread-191184] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:57:25.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:57:25.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:57:26.784 [DEBUG] [Thread-191184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:57:26.784 [DEBUG] [Thread-191184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:57:26.832 [DEBUG] [Thread-191184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:57:26.832 [DEBUG] [Thread-191184] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:57:26.841 [DEBUG] [Thread-191184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:57:26.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:57:26.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-11-24T13:57:26.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-11-24T13:57:26.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:57:26.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:57:26.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:57:26.889 [DEBUG] [Thread-191184] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:57:30.776 [DEBUG] [Thread-191186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:57:45.819 [DEBUG] [Thread-191187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:57:56.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:57:56.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:57:56.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-11-24T13:57:57.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 57, 34), 22.95, 21.38, 0.0, 24.6, 20.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:57:57.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:57:34
2025-11-24T13:57:57.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:57:58.004 [DEBUG] [Thread-191188] [transport.py] [_log()] starting thread (client mode): 0xd0711480
2025-11-24T13:57:58.004 [DEBUG] [Thread-191188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:57:58.008 [DEBUG] [Thread-191188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:57:58.008 [INFO] [Thread-191188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] client lang: <none>
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] server lang: <none>
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] kex follows: False
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] Compression: none
2025-11-24T13:57:58.010 [DEBUG] [Thread-191188] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:57:58.024 [DEBUG] [Thread-191188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:57:58.025 [DEBUG] [Thread-191188] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:57:58.025 [DEBUG] [Thread-191188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:57:58.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:57:58.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:57:58.026 [DEBUG] [Thread-191188] [transport.py] [_log()] userauth is OK
2025-11-24T13:57:58.027 [DEBUG] [Thread-191188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:57:58.027 [DEBUG] [Thread-191188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:57:58.027 [DEBUG] [Thread-191188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:57:58.027 [DEBUG] [Thread-191188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:57:58.043 [INFO] [Thread-191188] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:57:58.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:57:58.586 [DEBUG] [Thread-191188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:57:58.595 [DEBUG] [Thread-191188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:57:58.595 [DEBUG] [Thread-191188] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:57:58.628 [DEBUG] [Thread-191188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:57:58.628 [DEBUG] [Thread-191188] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:57:58.630 [DEBUG] [Thread-191188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:57:58.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:57:58.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:57:58.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:57:58.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:57:58.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:57:58.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:57:58.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.498312 -999.00  +22.00  20.79     26   +1.60 1 1 1 1 1   888    0 18.87 -53.41 ----- 20.8 20.8 178.4 25.2 28.1 -25.9 27.1 -29.0 28.4 -24.1 29.3 -27.3
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.498312
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:57:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:57:34', tmtdew=22.95, humidity=21.38, cloud=0.0, wind=24.6, temperature=20.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:57:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:57:58.645 [DEBUG] [Thread-191188] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:57:58.716 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:57:58.728 [DEBUG] [Thread-191191] [transport.py] [_log()] starting thread (client mode): 0xd07003a0
2025-11-24T13:57:58.728 [DEBUG] [Thread-191191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:57:58.743 [DEBUG] [Thread-191191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:57:58.744 [INFO] [Thread-191191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] client lang: <none>
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] server lang: <none>
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] kex follows: False
2025-11-24T13:57:58.751 [DEBUG] [Thread-191191] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:57:58.752 [DEBUG] [Thread-191191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:57:58.752 [DEBUG] [Thread-191191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:57:58.752 [DEBUG] [Thread-191191] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:57:58.752 [DEBUG] [Thread-191191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:57:58.752 [DEBUG] [Thread-191191] [transport.py] [_log()] Compression: none
2025-11-24T13:57:58.752 [DEBUG] [Thread-191191] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:57:58.808 [DEBUG] [Thread-191191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:57:58.817 [DEBUG] [Thread-191191] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:57:58.817 [DEBUG] [Thread-191191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:57:58.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:57:58.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:57:58.865 [DEBUG] [Thread-191191] [transport.py] [_log()] userauth is OK
2025-11-24T13:57:58.865 [DEBUG] [Thread-191191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:57:58.865 [DEBUG] [Thread-191191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:57:58.865 [DEBUG] [Thread-191191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:57:58.865 [DEBUG] [Thread-191191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:57:58.879 [INFO] [Thread-191191] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:57:58.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:57:58.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:57:59.740 [DEBUG] [Thread-191191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:57:59.741 [DEBUG] [Thread-191191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:57:59.789 [DEBUG] [Thread-191191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:57:59.789 [DEBUG] [Thread-191191] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:57:59.798 [DEBUG] [Thread-191191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:57:59.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:57:59.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-11-24T13:57:59.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') -> 00000000
2025-11-24T13:57:59.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:57:59.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:57:59.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:57:59.835 [DEBUG] [Thread-191191] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:58:00.847 [DEBUG] [Thread-191193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:58:04.476 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:58:04.477 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:58:06.425 [DEBUG] [Thread-191194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:58:15.901 [DEBUG] [Thread-191195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:58:29.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:58:29.829 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:58:29.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-11-24T13:58:30.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 58, 7), 23.08, 21.18, 0.0, 25.37, 20.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:58:30.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:58:07
2025-11-24T13:58:30.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:58:30.921 [DEBUG] [Thread-191196] [transport.py] [_log()] starting thread (client mode): 0xd07023b0
2025-11-24T13:58:30.930 [DEBUG] [Thread-191196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:58:30.932 [DEBUG] [Thread-191197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:58:30.941 [DEBUG] [Thread-191196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:58:30.941 [INFO] [Thread-191196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:58:30.944 [DEBUG] [Thread-191196] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] client lang: <none>
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] server lang: <none>
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] kex follows: False
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] Compression: none
2025-11-24T13:58:30.945 [DEBUG] [Thread-191196] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:58:30.962 [DEBUG] [Thread-191196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:58:30.963 [DEBUG] [Thread-191196] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:58:30.963 [DEBUG] [Thread-191196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:58:30.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:58:30.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:58:31.010 [DEBUG] [Thread-191196] [transport.py] [_log()] userauth is OK
2025-11-24T13:58:31.010 [DEBUG] [Thread-191196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:58:31.011 [DEBUG] [Thread-191196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:58:31.011 [DEBUG] [Thread-191196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:58:31.011 [DEBUG] [Thread-191196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:58:31.036 [INFO] [Thread-191196] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:58:31.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:58:31.745 [DEBUG] [Thread-191196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:58:31.745 [DEBUG] [Thread-191196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:58:31.745 [DEBUG] [Thread-191196] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:58:31.786 [DEBUG] [Thread-191196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:58:31.786 [DEBUG] [Thread-191196] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:58:31.789 [DEBUG] [Thread-191196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:58:31.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:58:31.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:58:31.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:58:31.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:58:31.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:58:31.813 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:58:31.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:58:31.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:58:31.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:58:31.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.498659 -999.00  +22.10  23.73     25   +1.30 1 1 1 1 1   888    0 18.73 -51.83 ----- 23.7 23.7 186.8 33.3 28.1 -28.3 27.2 -28.9 28.4 -27.1 29.3 -28.2
2025-11-24T13:58:31.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:58:31.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:58:31.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.498659
2025-11-24T13:58:31.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:58:31.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:58:31.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:58:31.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:58:31.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:58:31.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:58:07', tmtdew=23.08, humidity=21.18, cloud=0.0, wind=25.37, temperature=20.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:58:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:58:31.816 [DEBUG] [Thread-191196] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:58:31.900 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:58:31.912 [DEBUG] [Thread-191200] [transport.py] [_log()] starting thread (client mode): 0xd317e0e0
2025-11-24T13:58:31.912 [DEBUG] [Thread-191200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:58:31.927 [DEBUG] [Thread-191200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:58:31.927 [INFO] [Thread-191200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:58:31.934 [DEBUG] [Thread-191200] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] client lang: <none>
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] server lang: <none>
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] kex follows: False
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] Compression: none
2025-11-24T13:58:31.935 [DEBUG] [Thread-191200] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:58:31.994 [DEBUG] [Thread-191200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:58:31.995 [DEBUG] [Thread-191200] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:58:31.995 [DEBUG] [Thread-191200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:58:31.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:58:31.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:58:32.050 [DEBUG] [Thread-191200] [transport.py] [_log()] userauth is OK
2025-11-24T13:58:32.051 [DEBUG] [Thread-191200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:58:32.051 [DEBUG] [Thread-191200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:58:32.051 [DEBUG] [Thread-191200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:58:32.051 [DEBUG] [Thread-191200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:58:32.075 [INFO] [Thread-191200] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:58:32.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:58:32.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:58:32.910 [DEBUG] [Thread-191200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:58:32.910 [DEBUG] [Thread-191200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:58:32.958 [DEBUG] [Thread-191200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:58:32.958 [DEBUG] [Thread-191200] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:58:32.966 [DEBUG] [Thread-191200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:58:32.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:58:32.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T13:58: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-11-24T13:58:32.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:58:32.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:58:32.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:58:32.998 [DEBUG] [Thread-191200] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:58:45.971 [DEBUG] [Thread-191202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:59:01.030 [DEBUG] [Thread-191203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:59:03.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:59:03.016 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:59:03.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-11-24T13:59:03.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 58, 39), 23.31, 20.73, 0.0, 33.75, 21.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:59:03.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:58:39
2025-11-24T13:59:04.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:59:04.156 [DEBUG] [Thread-191204] [transport.py] [_log()] starting thread (client mode): 0xd31b3d00
2025-11-24T13:59:04.156 [DEBUG] [Thread-191204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:59:04.176 [DEBUG] [Thread-191204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:59:04.176 [INFO] [Thread-191204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:59:04.179 [DEBUG] [Thread-191204] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:59:04.179 [DEBUG] [Thread-191204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:59:04.179 [DEBUG] [Thread-191204] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:59:04.179 [DEBUG] [Thread-191204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:59:04.179 [DEBUG] [Thread-191204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:59:04.179 [DEBUG] [Thread-191204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] client lang: <none>
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] server lang: <none>
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] kex follows: False
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] Compression: none
2025-11-24T13:59:04.180 [DEBUG] [Thread-191204] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:59:04.196 [DEBUG] [Thread-191204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:59:04.196 [DEBUG] [Thread-191204] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:59:04.196 [DEBUG] [Thread-191204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:59:04.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:59:04.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:59:04.197 [DEBUG] [Thread-191204] [transport.py] [_log()] userauth is OK
2025-11-24T13:59:04.197 [DEBUG] [Thread-191204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:59:04.197 [DEBUG] [Thread-191204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:59:04.197 [DEBUG] [Thread-191204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:59:04.197 [DEBUG] [Thread-191204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:59:04.206 [INFO] [Thread-191204] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:59:04.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:59:04.617 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:59:04.618 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:59:04.800 [DEBUG] [Thread-191204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:59:04.801 [DEBUG] [Thread-191204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:59:04.801 [DEBUG] [Thread-191204] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:59:04.842 [DEBUG] [Thread-191204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:59:04.842 [DEBUG] [Thread-191204] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:59:04.846 [DEBUG] [Thread-191204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:59:04.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:59:04.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:59:04.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:59:04.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:59:04.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:59:04.882 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:59:04.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.499006 -999.00  +22.00  19.74     25   +1.30 1 1 1 1 1   888    0 19.06 -46.29 ----- 19.7 19.7 173.6 28.3 28.1 -26.5 26.9 -29.2 28.4 -25.4 29.2 -27.4
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.499006
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:59:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:58:39', tmtdew=23.31, humidity=20.73, cloud=0.0, wind=33.75, temperature=21.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:58:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:59:04.886 [DEBUG] [Thread-191204] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:59: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-11-24T13:59:04.968 [DEBUG] [Thread-191207] [transport.py] [_log()] starting thread (client mode): 0xd31b1ab0
2025-11-24T13:59:04.968 [DEBUG] [Thread-191207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:59:04.983 [DEBUG] [Thread-191207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:59:04.983 [INFO] [Thread-191207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] client lang: <none>
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] server lang: <none>
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] kex follows: False
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] Compression: none
2025-11-24T13:59:04.991 [DEBUG] [Thread-191207] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:59:05.049 [DEBUG] [Thread-191207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:59:05.049 [DEBUG] [Thread-191207] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:59:05.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:59:05.049 [DEBUG] [Thread-191207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:59:05.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:59:05.106 [DEBUG] [Thread-191207] [transport.py] [_log()] userauth is OK
2025-11-24T13:59:05.106 [DEBUG] [Thread-191207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:59:05.106 [DEBUG] [Thread-191207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:59:05.106 [DEBUG] [Thread-191207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:59:05.106 [DEBUG] [Thread-191207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:59:05.120 [INFO] [Thread-191207] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:59:05.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:59:05.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:59:05.986 [DEBUG] [Thread-191207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:59:05.986 [DEBUG] [Thread-191207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:59:06.034 [DEBUG] [Thread-191207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:59:06.034 [DEBUG] [Thread-191207] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:59:06.042 [DEBUG] [Thread-191207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:59:06.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:59:06.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-11-24T13:59:06.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-11-24T13:59:06.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:59:06.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:59:06.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:59:06.083 [DEBUG] [Thread-191207] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:59:06.667 [DEBUG] [Thread-191209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:59:16.055 [DEBUG] [Thread-191210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:59:31.098 [DEBUG] [Thread-191211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T13:59:36.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T13:59:36.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T13:59:36.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-11-24T13:59:36.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 59, 11), 23.53, 20.43, 0.0, 30.63, 21.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T13:59:36.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:59:11
2025-11-24T13:59:37.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T13:59:37.196 [DEBUG] [Thread-191212] [transport.py] [_log()] starting thread (client mode): 0xd07131c0
2025-11-24T13:59:37.196 [DEBUG] [Thread-191212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:59:37.216 [DEBUG] [Thread-191212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T13:59:37.217 [INFO] [Thread-191212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T13:59:37.219 [DEBUG] [Thread-191212] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:59:37.219 [DEBUG] [Thread-191212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T13:59:37.219 [DEBUG] [Thread-191212] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:59:37.219 [DEBUG] [Thread-191212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:59:37.219 [DEBUG] [Thread-191212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:59:37.219 [DEBUG] [Thread-191212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:59:37.219 [DEBUG] [Thread-191212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:59:37.219 [DEBUG] [Thread-191212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:59:37.219 [DEBUG] [Thread-191212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:59:37.219 [DEBUG] [Thread-191212] [transport.py] [_log()] client lang: <none>
2025-11-24T13:59:37.220 [DEBUG] [Thread-191212] [transport.py] [_log()] server lang: <none>
2025-11-24T13:59:37.220 [DEBUG] [Thread-191212] [transport.py] [_log()] kex follows: False
2025-11-24T13:59:37.220 [DEBUG] [Thread-191212] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:59:37.220 [DEBUG] [Thread-191212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:59:37.220 [DEBUG] [Thread-191212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:59:37.220 [DEBUG] [Thread-191212] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:59:37.220 [DEBUG] [Thread-191212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:59:37.220 [DEBUG] [Thread-191212] [transport.py] [_log()] Compression: none
2025-11-24T13:59:37.220 [DEBUG] [Thread-191212] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:59:37.237 [DEBUG] [Thread-191212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:59:37.237 [DEBUG] [Thread-191212] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:59:37.238 [DEBUG] [Thread-191212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T13:59:37.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T13:59:37.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:59:37.240 [DEBUG] [Thread-191212] [transport.py] [_log()] userauth is OK
2025-11-24T13:59:37.240 [DEBUG] [Thread-191212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:59:37.240 [DEBUG] [Thread-191212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:59:37.240 [DEBUG] [Thread-191212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T13:59:37.240 [DEBUG] [Thread-191212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:59:37.260 [INFO] [Thread-191212] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:59:37.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:59:37.850 [DEBUG] [Thread-191212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:59:37.850 [DEBUG] [Thread-191212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:59:37.850 [DEBUG] [Thread-191212] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T13:59:37.891 [DEBUG] [Thread-191212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:59:37.891 [DEBUG] [Thread-191212] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:59:37.892 [DEBUG] [Thread-191212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:59:37.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:59:37.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T13:59:37.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T13:59:37.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T13:59:37.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:59:37.902 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T13:59:37.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:59:37.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:59:37.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T13:59:37.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.499353 -999.00  +21.90  24.72     25   +1.40 1 1 1 1 1   888    0 18.46 -44.73 ----- 24.7 24.7 155.2 27.9 28.0 -26.6 26.9 -28.6 28.3 -25.2 29.2 -27.6
2025-11-24T13:59:37.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T13:59:37.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T13:59:37.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.499353
2025-11-24T13:59:37.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T13:59:37.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T13:59:37.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T13:59:37.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T13:59:37.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T13:59:37.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:59:11', tmtdew=23.53, humidity=20.43, cloud=0.0, wind=30.63, temperature=21.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T11:59:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T13:59:37.903 [DEBUG] [Thread-191212] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:59:37.976 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T13:59:37.989 [DEBUG] [Thread-191215] [transport.py] [_log()] starting thread (client mode): 0xd0702e60
2025-11-24T13:59:37.989 [DEBUG] [Thread-191215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T13:59:38.005 [DEBUG] [Thread-191215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T13:59:38.005 [INFO] [Thread-191215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] client lang: <none>
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] server lang: <none>
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] kex follows: False
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T13:59:38.012 [DEBUG] [Thread-191215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T13:59:38.013 [DEBUG] [Thread-191215] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T13:59:38.013 [DEBUG] [Thread-191215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T13:59:38.013 [DEBUG] [Thread-191215] [transport.py] [_log()] Compression: none
2025-11-24T13:59:38.013 [DEBUG] [Thread-191215] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T13:59:38.068 [DEBUG] [Thread-191215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T13:59:38.069 [DEBUG] [Thread-191215] [transport.py] [_log()] Switch to new keys ...
2025-11-24T13:59:38.069 [DEBUG] [Thread-191215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T13:59:38.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T13:59:38.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T13:59:38.127 [DEBUG] [Thread-191215] [transport.py] [_log()] userauth is OK
2025-11-24T13:59:38.127 [DEBUG] [Thread-191215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T13:59:38.127 [DEBUG] [Thread-191215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T13:59:38.127 [DEBUG] [Thread-191215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T13:59:38.127 [DEBUG] [Thread-191215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T13:59:38.141 [INFO] [Thread-191215] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T13:59:38.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T13:59:38.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T13:59:38.993 [DEBUG] [Thread-191215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T13:59:38.993 [DEBUG] [Thread-191215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T13:59:39.041 [DEBUG] [Thread-191215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T13:59:39.041 [DEBUG] [Thread-191215] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T13:59:39.051 [DEBUG] [Thread-191215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T13:59:39.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T13:59:39.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-11-24T13:59:39.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-11-24T13:59:39.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T13:59:39.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T13:59:39.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T13:59:39.088 [DEBUG] [Thread-191215] [transport.py] [_log()] EOF in transport thread
2025-11-24T13:59:46.127 [DEBUG] [Thread-191217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:00:01.165 [DEBUG] [Thread-191218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:00:04.770 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:00:04.772 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:00:07.008 [DEBUG] [Thread-191219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:00:09.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:00:09.114 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:00:09.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-11-24T14:00:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 13, 59, 44), 22.93, 21.13, 0.0, 25.37, 20.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:00:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 13:59:44
2025-11-24T14:00:10.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:00:10.282 [DEBUG] [Thread-191220] [transport.py] [_log()] starting thread (client mode): 0xd31b1f90
2025-11-24T14:00:10.283 [DEBUG] [Thread-191220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:00:10.299 [DEBUG] [Thread-191220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:00:10.300 [INFO] [Thread-191220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] client lang: <none>
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] server lang: <none>
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] kex follows: False
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:00:10.303 [DEBUG] [Thread-191220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:00:10.304 [DEBUG] [Thread-191220] [transport.py] [_log()] Compression: none
2025-11-24T14:00:10.304 [DEBUG] [Thread-191220] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:00:10.329 [DEBUG] [Thread-191220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:00:10.332 [DEBUG] [Thread-191220] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:00:10.332 [DEBUG] [Thread-191220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:00:10.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:00:10.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:00:10.335 [DEBUG] [Thread-191220] [transport.py] [_log()] userauth is OK
2025-11-24T14:00:10.336 [DEBUG] [Thread-191220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:00:10.336 [DEBUG] [Thread-191220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:00:10.336 [DEBUG] [Thread-191220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:00:10.336 [DEBUG] [Thread-191220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:00:10.347 [INFO] [Thread-191220] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:00:10.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:00:11.158 [DEBUG] [Thread-191220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:00:11.159 [DEBUG] [Thread-191220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:00:11.161 [DEBUG] [Thread-191220] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:00:11.199 [DEBUG] [Thread-191220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:00:11.199 [DEBUG] [Thread-191220] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:00:11.202 [DEBUG] [Thread-191220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:00:11.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:00:11.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:00:11.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:00:11.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:00:11.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:00:11.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:00:11.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:00:11.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:00:11.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:00:11.233 [DEBUG] [Thread-191220] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:00:11.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.500048 -999.00  +21.30  20.20     26   +1.10 1 1 1 1 1   888    0 18.95 -35.71 ----- 20.2 20.2 167.2 26.1 27.9 -27.0 27.1 -25.7 28.2 -25.6 29.2 -27.6
2025-11-24T14:00:11.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:00:11.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:00:11.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.500048
2025-11-24T14:00:11.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:00:11.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:00:11.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:00:11.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:00:11.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:00:11.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T13:59:44', tmtdew=22.93, humidity=21.13, cloud=0.0, wind=25.37, temperature=20.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:00:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:00:11.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:00:11.350 [DEBUG] [Thread-191223] [transport.py] [_log()] starting thread (client mode): 0xd0703f10
2025-11-24T14:00:11.350 [DEBUG] [Thread-191223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:00:11.366 [DEBUG] [Thread-191223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:00:11.366 [INFO] [Thread-191223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:00:11.375 [DEBUG] [Thread-191223] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:00:11.375 [DEBUG] [Thread-191223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] client lang: <none>
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] server lang: <none>
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] kex follows: False
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] Compression: none
2025-11-24T14:00:11.376 [DEBUG] [Thread-191223] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:00:11.433 [DEBUG] [Thread-191223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:00:11.433 [DEBUG] [Thread-191223] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:00:11.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:00:11.433 [DEBUG] [Thread-191223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:00:11.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:00:11.490 [DEBUG] [Thread-191223] [transport.py] [_log()] userauth is OK
2025-11-24T14:00:11.490 [DEBUG] [Thread-191223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:00:11.490 [DEBUG] [Thread-191223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:00:11.490 [DEBUG] [Thread-191223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:00:11.490 [DEBUG] [Thread-191223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:00:11.507 [INFO] [Thread-191223] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:00:11.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:00:11.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:00:12.407 [DEBUG] [Thread-191223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:00:12.407 [DEBUG] [Thread-191223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:00:12.454 [DEBUG] [Thread-191223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:00:12.454 [DEBUG] [Thread-191223] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:00:12.463 [DEBUG] [Thread-191223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:00:12.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:00: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-11-24T14:00:12.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-11-24T14:00:12.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:00:12.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:00:12.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:00:12.499 [DEBUG] [Thread-191223] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:00:16.198 [DEBUG] [Thread-191225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:00:31.238 [DEBUG] [Thread-191226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:00:42.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:00:42.521 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:00:42.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-11-24T14:00:43.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 0, 16), 23.05, 21.0, 0.0, 24.31, 20.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:00:43.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:00:16
2025-11-24T14:00:43.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:00:43.592 [DEBUG] [Thread-191227] [transport.py] [_log()] starting thread (client mode): 0xd31b0970
2025-11-24T14:00:43.592 [DEBUG] [Thread-191227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:00:43.617 [DEBUG] [Thread-191227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:00:43.618 [INFO] [Thread-191227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:00:43.619 [DEBUG] [Thread-191227] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] client lang: <none>
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] server lang: <none>
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] kex follows: False
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] Compression: none
2025-11-24T14:00:43.620 [DEBUG] [Thread-191227] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:00:43.642 [DEBUG] [Thread-191227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:00:43.642 [DEBUG] [Thread-191227] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:00:43.643 [DEBUG] [Thread-191227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:00:43.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:00:43.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:00:43.645 [DEBUG] [Thread-191227] [transport.py] [_log()] userauth is OK
2025-11-24T14:00:43.645 [DEBUG] [Thread-191227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:00:43.645 [DEBUG] [Thread-191227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:00:43.645 [DEBUG] [Thread-191227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:00:43.645 [DEBUG] [Thread-191227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:00:43.663 [INFO] [Thread-191227] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:00:43.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:00:44.316 [DEBUG] [Thread-191227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:00:44.316 [DEBUG] [Thread-191227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:00:44.316 [DEBUG] [Thread-191227] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:00:44.357 [DEBUG] [Thread-191227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:00:44.357 [DEBUG] [Thread-191227] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:00:44.360 [DEBUG] [Thread-191227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:00:44.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:00:44.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:00:44.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:00:44.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:00:44.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:00:44.386 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:00:44.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:00:44.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:00:44.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:00:44.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.500395 -999.00  +21.30  16.50     27   +1.60 1 1 1 1 1   888    0 19.36 -39.54 ----- 16.5 16.5 155.0 28.0 27.9 -27.0 27.1 -25.6 28.2 -25.0 29.2 -26.6
2025-11-24T14:00:44.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:00:44.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:00:44.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.500395
2025-11-24T14:00:44.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:00:44.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:00:44.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:00:44.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:00:44.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:00:44.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:00:16', tmtdew=23.05, humidity=21.0, cloud=0.0, wind=24.31, temperature=20.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:00:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:00:44.390 [DEBUG] [Thread-191227] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:00:44.474 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:00:44.487 [DEBUG] [Thread-191230] [transport.py] [_log()] starting thread (client mode): 0xd0710ca0
2025-11-24T14:00:44.487 [DEBUG] [Thread-191230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:00:44.502 [DEBUG] [Thread-191230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:00:44.502 [INFO] [Thread-191230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:00:44.510 [DEBUG] [Thread-191230] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:00:44.510 [DEBUG] [Thread-191230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:00:44.510 [DEBUG] [Thread-191230] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:00:44.511 [DEBUG] [Thread-191230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:00:44.511 [DEBUG] [Thread-191230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:00:44.511 [DEBUG] [Thread-191230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:00:44.511 [DEBUG] [Thread-191230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:00:44.511 [DEBUG] [Thread-191230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:00:44.511 [DEBUG] [Thread-191230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:00:44.511 [DEBUG] [Thread-191230] [transport.py] [_log()] client lang: <none>
2025-11-24T14:00:44.511 [DEBUG] [Thread-191230] [transport.py] [_log()] server lang: <none>
2025-11-24T14:00:44.511 [DEBUG] [Thread-191230] [transport.py] [_log()] kex follows: False
2025-11-24T14:00:44.512 [DEBUG] [Thread-191230] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:00:44.512 [DEBUG] [Thread-191230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:00:44.512 [DEBUG] [Thread-191230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:00:44.512 [DEBUG] [Thread-191230] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:00:44.512 [DEBUG] [Thread-191230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:00:44.512 [DEBUG] [Thread-191230] [transport.py] [_log()] Compression: none
2025-11-24T14:00:44.512 [DEBUG] [Thread-191230] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:00:44.571 [DEBUG] [Thread-191230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:00:44.571 [DEBUG] [Thread-191230] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:00:44.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:00:44.572 [DEBUG] [Thread-191230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:00:44.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:00:44.626 [DEBUG] [Thread-191230] [transport.py] [_log()] userauth is OK
2025-11-24T14:00:44.626 [DEBUG] [Thread-191230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:00:44.626 [DEBUG] [Thread-191230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:00:44.626 [DEBUG] [Thread-191230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:00:44.626 [DEBUG] [Thread-191230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:00:44.640 [INFO] [Thread-191230] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:00:44.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:00:44.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:00:45.506 [DEBUG] [Thread-191230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:00:45.506 [DEBUG] [Thread-191230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:00:45.554 [DEBUG] [Thread-191230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:00:45.554 [DEBUG] [Thread-191230] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:00:45.563 [DEBUG] [Thread-191230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:00:45.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:00:45.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-11-24T14:00:45.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:00:45.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:00:45.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:00:45.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:00:45.600 [DEBUG] [Thread-191230] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:00:46.279 [DEBUG] [Thread-191232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:01:01.327 [DEBUG] [Thread-191233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:01:04.922 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:01:04.924 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:01:07.117 [DEBUG] [Thread-191234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:01:15.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:01:15.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:01:15.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:01:16.356 [DEBUG] [Thread-191235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:01:16.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 0, 49), 22.93, 21.35, 0.0, 27.33, 21.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:01:16.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:00:49
2025-11-24T14:01:16.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:01:16.804 [DEBUG] [Thread-191236] [transport.py] [_log()] starting thread (client mode): 0xd0711ba0
2025-11-24T14:01:16.805 [DEBUG] [Thread-191236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:01:16.825 [DEBUG] [Thread-191236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:01:16.825 [INFO] [Thread-191236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] client lang: <none>
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] server lang: <none>
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] kex follows: False
2025-11-24T14:01:16.828 [DEBUG] [Thread-191236] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:01:16.829 [DEBUG] [Thread-191236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:01:16.829 [DEBUG] [Thread-191236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:01:16.829 [DEBUG] [Thread-191236] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:01:16.829 [DEBUG] [Thread-191236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:01:16.829 [DEBUG] [Thread-191236] [transport.py] [_log()] Compression: none
2025-11-24T14:01:16.829 [DEBUG] [Thread-191236] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:01:16.846 [DEBUG] [Thread-191236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:01:16.846 [DEBUG] [Thread-191236] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:01:16.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:01:16.848 [DEBUG] [Thread-191236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:01:16.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:01:16.850 [DEBUG] [Thread-191236] [transport.py] [_log()] userauth is OK
2025-11-24T14:01:16.850 [DEBUG] [Thread-191236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:01:16.850 [DEBUG] [Thread-191236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:01:16.850 [DEBUG] [Thread-191236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:01:16.850 [DEBUG] [Thread-191236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:01:16.885 [INFO] [Thread-191236] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:01:16.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:01:17.477 [DEBUG] [Thread-191236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:01:17.477 [DEBUG] [Thread-191236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:01:17.477 [DEBUG] [Thread-191236] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:01:17.518 [DEBUG] [Thread-191236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:01:17.518 [DEBUG] [Thread-191236] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:01:17.521 [DEBUG] [Thread-191236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:01:17.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:01:17.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:01:17.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:01:17.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:01:17.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:01:17.545 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:01:17.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:01:17.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:01:17.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:01:17.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.500395 -999.00  +21.30  16.50     27   +1.60 1 1 1 1 1   888    0 19.36 -39.54 ----- 16.5 16.5 155.0 28.0 27.9 -27.0 27.1 -25.6 28.2 -25.0 29.2 -26.6
2025-11-24T14:01:17.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:01:17.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:01:17.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.500395
2025-11-24T14:01:17.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:01:17.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:01:17.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:01:17.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:01:17.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:01:17.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:00:49', tmtdew=22.93, humidity=21.35, cloud=0.0, wind=27.33, temperature=21.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:00:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:01:17.548 [DEBUG] [Thread-191236] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:01:17.632 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:01:17.643 [DEBUG] [Thread-191239] [transport.py] [_log()] starting thread (client mode): 0xd3152a10
2025-11-24T14:01:17.644 [DEBUG] [Thread-191239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:01:17.659 [DEBUG] [Thread-191239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:01:17.659 [INFO] [Thread-191239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:01:17.666 [DEBUG] [Thread-191239] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] client lang: <none>
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] server lang: <none>
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] kex follows: False
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] Compression: none
2025-11-24T14:01:17.667 [DEBUG] [Thread-191239] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:01:17.727 [DEBUG] [Thread-191239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:01:17.728 [DEBUG] [Thread-191239] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:01:17.728 [DEBUG] [Thread-191239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:01:17.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:01:17.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:01:17.786 [DEBUG] [Thread-191239] [transport.py] [_log()] userauth is OK
2025-11-24T14:01:17.787 [DEBUG] [Thread-191239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:01:17.787 [DEBUG] [Thread-191239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:01:17.787 [DEBUG] [Thread-191239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:01:17.787 [DEBUG] [Thread-191239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:01:17.806 [INFO] [Thread-191239] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:01:17.807 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:01:17.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:01:18.661 [DEBUG] [Thread-191239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:01:18.661 [DEBUG] [Thread-191239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:01:18.713 [DEBUG] [Thread-191239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:01:18.713 [DEBUG] [Thread-191239] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:01:18.725 [DEBUG] [Thread-191239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:01:18.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:01:18.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:01:18.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-11-24T14:01:18.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:01:18.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:01:18.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:01:18.765 [DEBUG] [Thread-191239] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:01:31.394 [DEBUG] [Thread-191241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:01:46.457 [DEBUG] [Thread-191242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:01:48.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:01:48.759 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:01:48.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-11-24T14:01:49.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 1, 21), 22.78, 21.6, 0.0, 29.62, 21.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:01:49.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:01:21
2025-11-24T14:01:49.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:01:49.736 [DEBUG] [Thread-191243] [transport.py] [_log()] starting thread (client mode): 0xd31523b0
2025-11-24T14:01:49.736 [DEBUG] [Thread-191243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:01:49.745 [DEBUG] [Thread-191243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:01:49.745 [INFO] [Thread-191243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:01:49.748 [DEBUG] [Thread-191243] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:01:49.748 [DEBUG] [Thread-191243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:01:49.748 [DEBUG] [Thread-191243] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:01:49.748 [DEBUG] [Thread-191243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] client lang: <none>
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] server lang: <none>
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] kex follows: False
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] Compression: none
2025-11-24T14:01:49.749 [DEBUG] [Thread-191243] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:01:49.767 [DEBUG] [Thread-191243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:01:49.768 [DEBUG] [Thread-191243] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:01:49.769 [DEBUG] [Thread-191243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:01:49.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:01:49.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:01:49.811 [DEBUG] [Thread-191243] [transport.py] [_log()] userauth is OK
2025-11-24T14:01:49.811 [DEBUG] [Thread-191243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:01:49.812 [DEBUG] [Thread-191243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:01:49.812 [DEBUG] [Thread-191243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:01:49.812 [DEBUG] [Thread-191243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:01:49.833 [INFO] [Thread-191243] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:01:49.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:01:50.579 [DEBUG] [Thread-191243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:01:50.579 [DEBUG] [Thread-191243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:01:50.579 [DEBUG] [Thread-191243] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:01:50.620 [DEBUG] [Thread-191243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:01:50.620 [DEBUG] [Thread-191243] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:01:50.623 [DEBUG] [Thread-191243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:01:50.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:01:50.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:01:50.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:01:50.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:01:50.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:01:50.653 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:01:50.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:01:50.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:01:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:01:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.500742 -999.00  +21.20  22.45     27   +1.80 1 1 1 1 1   888    0 19.11 -43.67 ----- 22.4 22.4 166.6 35.1 27.8 -26.6 26.8 -33.2 28.1 -24.8 29.0 -30.7
2025-11-24T14:01:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:01:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:01:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.500742
2025-11-24T14:01:50.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:01:50.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:01:50.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:01:50.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:01:50.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:01:50.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:01:21', tmtdew=22.78, humidity=21.6, cloud=0.0, wind=29.62, temperature=21.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:01:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:01:50.656 [DEBUG] [Thread-191243] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:01:50.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:01:50.752 [DEBUG] [Thread-191246] [transport.py] [_log()] starting thread (client mode): 0xd07ebdc0
2025-11-24T14:01:50.753 [DEBUG] [Thread-191246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:01:50.768 [DEBUG] [Thread-191246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:01:50.768 [INFO] [Thread-191246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:01:50.775 [DEBUG] [Thread-191246] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:01:50.775 [DEBUG] [Thread-191246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:01:50.775 [DEBUG] [Thread-191246] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:01:50.775 [DEBUG] [Thread-191246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:01:50.775 [DEBUG] [Thread-191246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] client lang: <none>
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] server lang: <none>
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] kex follows: False
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] Compression: none
2025-11-24T14:01:50.776 [DEBUG] [Thread-191246] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:01:50.838 [DEBUG] [Thread-191246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:01:50.839 [DEBUG] [Thread-191246] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:01:50.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:01:50.840 [DEBUG] [Thread-191246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:01:50.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:01:50.894 [DEBUG] [Thread-191246] [transport.py] [_log()] userauth is OK
2025-11-24T14:01:50.895 [DEBUG] [Thread-191246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:01:50.895 [DEBUG] [Thread-191246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:01:50.895 [DEBUG] [Thread-191246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:01:50.895 [DEBUG] [Thread-191246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:01:50.914 [INFO] [Thread-191246] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:01:50.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:01:50.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:01:51.789 [DEBUG] [Thread-191246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:01:51.789 [DEBUG] [Thread-191246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:01:51.838 [DEBUG] [Thread-191246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:01:51.838 [DEBUG] [Thread-191246] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:01:51.847 [DEBUG] [Thread-191246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:01:51.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:01:51.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:01:51.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-11-24T14:01:51.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:01:51.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:01:51.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:01:51.884 [DEBUG] [Thread-191246] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:02:01.495 [DEBUG] [Thread-191248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:02:05.065 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:02:05.076 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:02:07.445 [DEBUG] [Thread-191249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:02:16.541 [DEBUG] [Thread-191250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:02:21.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:02:21.901 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:02:21.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-11-24T14:02:22.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 1, 54), 22.32, 22.57, 0.0, 26.73, 21.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:02:22.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:01:54
2025-11-24T14:02:22.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:02:23.002 [DEBUG] [Thread-191251] [transport.py] [_log()] starting thread (client mode): 0xd3153b50
2025-11-24T14:02:23.002 [DEBUG] [Thread-191251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:02:23.023 [DEBUG] [Thread-191251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:02:23.023 [INFO] [Thread-191251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:02:23.025 [DEBUG] [Thread-191251] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:02:23.025 [DEBUG] [Thread-191251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:02:23.025 [DEBUG] [Thread-191251] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:02:23.025 [DEBUG] [Thread-191251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:02:23.025 [DEBUG] [Thread-191251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:02:23.025 [DEBUG] [Thread-191251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:02:23.025 [DEBUG] [Thread-191251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:02:23.025 [DEBUG] [Thread-191251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:02:23.025 [DEBUG] [Thread-191251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:02:23.025 [DEBUG] [Thread-191251] [transport.py] [_log()] client lang: <none>
2025-11-24T14:02:23.026 [DEBUG] [Thread-191251] [transport.py] [_log()] server lang: <none>
2025-11-24T14:02:23.026 [DEBUG] [Thread-191251] [transport.py] [_log()] kex follows: False
2025-11-24T14:02:23.026 [DEBUG] [Thread-191251] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:02:23.026 [DEBUG] [Thread-191251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:02:23.026 [DEBUG] [Thread-191251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:02:23.026 [DEBUG] [Thread-191251] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:02:23.026 [DEBUG] [Thread-191251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:02:23.026 [DEBUG] [Thread-191251] [transport.py] [_log()] Compression: none
2025-11-24T14:02:23.026 [DEBUG] [Thread-191251] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:02:23.050 [DEBUG] [Thread-191251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:02:23.051 [DEBUG] [Thread-191251] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:02:23.052 [DEBUG] [Thread-191251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:02:23.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:02:23.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:02:23.054 [DEBUG] [Thread-191251] [transport.py] [_log()] userauth is OK
2025-11-24T14:02:23.054 [DEBUG] [Thread-191251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:02:23.055 [DEBUG] [Thread-191251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:02:23.055 [DEBUG] [Thread-191251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:02:23.055 [DEBUG] [Thread-191251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:02:23.077 [INFO] [Thread-191251] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:02:23.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:02:23.715 [DEBUG] [Thread-191251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:02:23.715 [DEBUG] [Thread-191251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:02:23.715 [DEBUG] [Thread-191251] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:02:23.756 [DEBUG] [Thread-191251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:02:23.756 [DEBUG] [Thread-191251] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:02:23.758 [DEBUG] [Thread-191251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:02:23.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:02:23.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:02:23.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:02:23.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:02:23.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:02:23.780 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:02:23.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:02:23.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:02:23.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:02:23.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.501089 -999.00  +21.50  20.25     27   +1.90 1 1 1 1 1   888    0 19.22 -39.82 ----- 20.2 20.2 165.8 29.4 27.9 -27.1 27.1 -26.7 28.2 -25.6 29.1 -27.3
2025-11-24T14:02:23.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:02:23.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:02:23.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.501089
2025-11-24T14:02:23.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:02:23.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:02:23.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:02:23.782 [DEBUG] [Thread-191251] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:02:23.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:02:23.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:02:23.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:01:54', tmtdew=22.32, humidity=22.57, cloud=0.0, wind=26.73, temperature=21.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:01:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:02:23.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:02:23.867 [DEBUG] [Thread-191254] [transport.py] [_log()] starting thread (client mode): 0xc9b81480
2025-11-24T14:02:23.867 [DEBUG] [Thread-191254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:02:23.882 [DEBUG] [Thread-191254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:02:23.883 [INFO] [Thread-191254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] client lang: <none>
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] server lang: <none>
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] kex follows: False
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] Compression: none
2025-11-24T14:02:23.890 [DEBUG] [Thread-191254] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:02:23.949 [DEBUG] [Thread-191254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:02:23.949 [DEBUG] [Thread-191254] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:02:23.949 [DEBUG] [Thread-191254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:02:23.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:02:23.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:02:24.006 [DEBUG] [Thread-191254] [transport.py] [_log()] userauth is OK
2025-11-24T14:02:24.006 [DEBUG] [Thread-191254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:02:24.014 [DEBUG] [Thread-191254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:02:24.014 [DEBUG] [Thread-191254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:02:24.014 [DEBUG] [Thread-191254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:02:24.028 [INFO] [Thread-191254] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:02:24.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:02:24.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:02:24.921 [DEBUG] [Thread-191254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:02:24.921 [DEBUG] [Thread-191254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:02:24.970 [DEBUG] [Thread-191254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:02:24.970 [DEBUG] [Thread-191254] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:02:24.979 [DEBUG] [Thread-191254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:02:24.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:02:24.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-11-24T14:02:24.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-11-24T14:02:25.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:02:25.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:02:25.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:02:25.015 [DEBUG] [Thread-191254] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:02:31.567 [DEBUG] [Thread-191256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:02:46.635 [DEBUG] [Thread-191257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:02:55.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:02:55.017 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:02:55.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-11-24T14:02:55.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 2, 26), 22.29, 22.57, 0.0, 24.61, 20.94, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:02:55.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:02:26
2025-11-24T14:02:55.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:02:56.143 [DEBUG] [Thread-191258] [transport.py] [_log()] starting thread (client mode): 0xd317e860
2025-11-24T14:02:56.143 [DEBUG] [Thread-191258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:02:56.163 [DEBUG] [Thread-191258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:02:56.163 [INFO] [Thread-191258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:02:56.166 [DEBUG] [Thread-191258] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:02:56.166 [DEBUG] [Thread-191258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:02:56.166 [DEBUG] [Thread-191258] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:02:56.166 [DEBUG] [Thread-191258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:02:56.166 [DEBUG] [Thread-191258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:02:56.166 [DEBUG] [Thread-191258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:02:56.166 [DEBUG] [Thread-191258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:02:56.166 [DEBUG] [Thread-191258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:02:56.166 [DEBUG] [Thread-191258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:02:56.166 [DEBUG] [Thread-191258] [transport.py] [_log()] client lang: <none>
2025-11-24T14:02:56.167 [DEBUG] [Thread-191258] [transport.py] [_log()] server lang: <none>
2025-11-24T14:02:56.167 [DEBUG] [Thread-191258] [transport.py] [_log()] kex follows: False
2025-11-24T14:02:56.167 [DEBUG] [Thread-191258] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:02:56.167 [DEBUG] [Thread-191258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:02:56.167 [DEBUG] [Thread-191258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:02:56.167 [DEBUG] [Thread-191258] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:02:56.167 [DEBUG] [Thread-191258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:02:56.167 [DEBUG] [Thread-191258] [transport.py] [_log()] Compression: none
2025-11-24T14:02:56.167 [DEBUG] [Thread-191258] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:02:56.176 [DEBUG] [Thread-191258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:02:56.176 [DEBUG] [Thread-191258] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:02:56.177 [DEBUG] [Thread-191258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:02:56.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:02:56.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:02:56.178 [DEBUG] [Thread-191258] [transport.py] [_log()] userauth is OK
2025-11-24T14:02:56.178 [DEBUG] [Thread-191258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:02:56.178 [DEBUG] [Thread-191258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:02:56.178 [DEBUG] [Thread-191258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:02:56.178 [DEBUG] [Thread-191258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:02:56.197 [INFO] [Thread-191258] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:02:56.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:02:56.911 [DEBUG] [Thread-191258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:02:56.911 [DEBUG] [Thread-191258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:02:56.911 [DEBUG] [Thread-191258] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:02:56.952 [DEBUG] [Thread-191258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:02:56.952 [DEBUG] [Thread-191258] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:02:56.954 [DEBUG] [Thread-191258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:02:56.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:02:56.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:02:56.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:02:56.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:02:56.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:02:56.972 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:02:56.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:02:56.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:02:56.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:02:56.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.501436 -999.00  +21.50  21.29     27   +2.00 1 1 1 1 1   888    0 19.25 -40.81 ----- 21.3 21.3 141.8 26.2 27.8 -26.6 27.1 -25.7 28.2 -25.0 29.1 -27.6
2025-11-24T14:02:56.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:02:56.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:02:56.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.501436
2025-11-24T14:02:56.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:02:56.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:02:56.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:02:56.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:02:56.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:02:56.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:02:26', tmtdew=22.29, humidity=22.57, cloud=0.0, wind=24.61, temperature=20.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:02:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:02:56.973 [DEBUG] [Thread-191258] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:02:57.046 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:02:57.059 [DEBUG] [Thread-191261] [transport.py] [_log()] starting thread (client mode): 0xd317d300
2025-11-24T14:02:57.060 [DEBUG] [Thread-191261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:02:57.075 [DEBUG] [Thread-191261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:02:57.075 [INFO] [Thread-191261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] client lang: <none>
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] server lang: <none>
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] kex follows: False
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:02:57.082 [DEBUG] [Thread-191261] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:02:57.083 [DEBUG] [Thread-191261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:02:57.083 [DEBUG] [Thread-191261] [transport.py] [_log()] Compression: none
2025-11-24T14:02:57.083 [DEBUG] [Thread-191261] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:02:57.141 [DEBUG] [Thread-191261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:02:57.141 [DEBUG] [Thread-191261] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:02:57.141 [DEBUG] [Thread-191261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:02:57.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:02:57.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:02:57.198 [DEBUG] [Thread-191261] [transport.py] [_log()] userauth is OK
2025-11-24T14:02:57.198 [DEBUG] [Thread-191261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:02:57.198 [DEBUG] [Thread-191261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:02:57.198 [DEBUG] [Thread-191261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:02:57.198 [DEBUG] [Thread-191261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:02:57.211 [INFO] [Thread-191261] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:02:57.212 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:02:57.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:02:58.034 [DEBUG] [Thread-191261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:02:58.034 [DEBUG] [Thread-191261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:02:58.082 [DEBUG] [Thread-191261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:02:58.082 [DEBUG] [Thread-191261] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:02:58.090 [DEBUG] [Thread-191261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:02:58.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:02:58.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-11-24T14:02:58.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-11-24T14:02:58.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:02:58.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:02:58.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:02:58.121 [DEBUG] [Thread-191261] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:03:01.669 [DEBUG] [Thread-191263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:03:05.216 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:03:05.217 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:03:07.790 [DEBUG] [Thread-191264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:03:16.733 [DEBUG] [Thread-191265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:03:28.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:03:28.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:03:28.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-11-24T14:03:28.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 2, 59), 22.74, 21.76, 0.0, 22.53, 21.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:03:28.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:02:59
2025-11-24T14:03:29.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:03:29.196 [DEBUG] [Thread-191266] [transport.py] [_log()] starting thread (client mode): 0xc9b83a00
2025-11-24T14:03:29.196 [DEBUG] [Thread-191266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:03:29.216 [DEBUG] [Thread-191266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:03:29.216 [INFO] [Thread-191266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:03:29.219 [DEBUG] [Thread-191266] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] client lang: <none>
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] server lang: <none>
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] kex follows: False
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] Compression: none
2025-11-24T14:03:29.220 [DEBUG] [Thread-191266] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:03:29.237 [DEBUG] [Thread-191266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:03:29.237 [DEBUG] [Thread-191266] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:03:29.237 [DEBUG] [Thread-191266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:03:29.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:03:29.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:03:29.239 [DEBUG] [Thread-191266] [transport.py] [_log()] userauth is OK
2025-11-24T14:03:29.239 [DEBUG] [Thread-191266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:03:29.239 [DEBUG] [Thread-191266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:03:29.239 [DEBUG] [Thread-191266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:03:29.239 [DEBUG] [Thread-191266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:03:29.255 [INFO] [Thread-191266] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:03:29.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:03:29.846 [DEBUG] [Thread-191266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:03:29.846 [DEBUG] [Thread-191266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:03:29.847 [DEBUG] [Thread-191266] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:03:29.887 [DEBUG] [Thread-191266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:03:29.887 [DEBUG] [Thread-191266] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:03:29.889 [DEBUG] [Thread-191266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:03:29.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:03:29.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:03:29.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:03:29.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:03:29.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:03:29.922 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:03:29.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:03:29.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:03:29.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:03:29.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.502131 -999.00  +21.60  17.24     27   +2.10 1 1 1 1 1   888    0 18.87 -50.76 ----- 17.2 17.2 154.9 28.6 28.0 -25.7 27.3 -26.1 28.4 -24.1 29.2 -26.8
2025-11-24T14:03:29.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:03:29.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:03:29.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.502131
2025-11-24T14:03:29.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:03:29.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:03:29.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:03:29.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:03:29.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:03:29.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:02:59', tmtdew=22.74, humidity=21.76, cloud=0.0, wind=22.53, temperature=21.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:03:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:03:29.924 [DEBUG] [Thread-191266] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:03:29.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:03:30.006 [DEBUG] [Thread-191269] [transport.py] [_log()] starting thread (client mode): 0xd0701630
2025-11-24T14:03:30.006 [DEBUG] [Thread-191269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:03:30.022 [DEBUG] [Thread-191269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:03:30.022 [INFO] [Thread-191269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:03:30.029 [DEBUG] [Thread-191269] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] client lang: <none>
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] server lang: <none>
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] kex follows: False
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] Compression: none
2025-11-24T14:03:30.030 [DEBUG] [Thread-191269] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:03:30.085 [DEBUG] [Thread-191269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:03:30.085 [DEBUG] [Thread-191269] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:03:30.085 [DEBUG] [Thread-191269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:03:30.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:03:30.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:03:30.142 [DEBUG] [Thread-191269] [transport.py] [_log()] userauth is OK
2025-11-24T14:03:30.142 [DEBUG] [Thread-191269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:03:30.142 [DEBUG] [Thread-191269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:03:30.142 [DEBUG] [Thread-191269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:03:30.142 [DEBUG] [Thread-191269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:03:30.156 [INFO] [Thread-191269] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:03:30.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:03:30.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:03:30.984 [DEBUG] [Thread-191269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:03:30.985 [DEBUG] [Thread-191269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:03:31.032 [DEBUG] [Thread-191269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:03:31.032 [DEBUG] [Thread-191269] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:03:31.040 [DEBUG] [Thread-191269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:03:31.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:03:31.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:03:31.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-11-24T14:03:31.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:03:31.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:03:31.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:03:31.072 [DEBUG] [Thread-191269] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:03:31.766 [DEBUG] [Thread-191271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:03:46.802 [DEBUG] [Thread-191272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:04:01.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:04:01.090 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:04:01.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:04:01.837 [DEBUG] [Thread-191273 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:04:01.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 3, 31), 22.45, 22.21, 0.0, 23.11, 21.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:04:01.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:03:31
2025-11-24T14:04:02.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:04:02.209 [DEBUG] [Thread-191274] [transport.py] [_log()] starting thread (client mode): 0xd07f9030
2025-11-24T14:04:02.209 [DEBUG] [Thread-191274] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:04:02.230 [DEBUG] [Thread-191274] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:04:02.230 [INFO] [Thread-191274] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] client lang: <none>
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] server lang: <none>
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] kex follows: False
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] Compression: none
2025-11-24T14:04:02.233 [DEBUG] [Thread-191274] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:04:02.250 [DEBUG] [Thread-191274] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:04:02.250 [DEBUG] [Thread-191274] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:04:02.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:04:02.251 [DEBUG] [Thread-191274] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:04:02.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:04:02.256 [DEBUG] [Thread-191274] [transport.py] [_log()] userauth is OK
2025-11-24T14:04:02.256 [DEBUG] [Thread-191274] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:04:02.256 [DEBUG] [Thread-191274] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:04:02.256 [DEBUG] [Thread-191274] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:04:02.257 [DEBUG] [Thread-191274] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:04:02.272 [INFO] [Thread-191274] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:04:02.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:04:03.000 [DEBUG] [Thread-191274] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:04:03.001 [DEBUG] [Thread-191274] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:04:03.001 [DEBUG] [Thread-191274] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:04:03.041 [DEBUG] [Thread-191274] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:04:03.041 [DEBUG] [Thread-191274] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:04:03.043 [DEBUG] [Thread-191274] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:04:03.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:04:03.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:04:03.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:04:03.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:04:03.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:04:03.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:04:03.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:04:03.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:04:03.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:04:03.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.502131 -999.00  +21.60  17.24     27   +2.10 1 1 1 1 1   888    0 18.87 -50.76 ----- 17.2 17.2 154.9 28.6 28.0 -25.7 27.3 -26.1 28.4 -24.1 29.2 -26.8
2025-11-24T14:04:03.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:04:03.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:04:03.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.502131
2025-11-24T14:04:03.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:04:03.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:04:03.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:04:03.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:04:03.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:04:03.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:03:31', tmtdew=22.45, humidity=22.21, cloud=0.0, wind=23.11, temperature=21.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:03:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:04:03.069 [DEBUG] [Thread-191274] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:04:03.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:04:03.152 [DEBUG] [Thread-191277] [transport.py] [_log()] starting thread (client mode): 0xc9b82500
2025-11-24T14:04:03.153 [DEBUG] [Thread-191277] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:04:03.168 [DEBUG] [Thread-191277] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:04:03.168 [INFO] [Thread-191277] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:04:03.175 [DEBUG] [Thread-191277] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:04:03.175 [DEBUG] [Thread-191277] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:04:03.175 [DEBUG] [Thread-191277] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:04:03.175 [DEBUG] [Thread-191277] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:04:03.175 [DEBUG] [Thread-191277] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:04:03.175 [DEBUG] [Thread-191277] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:04:03.175 [DEBUG] [Thread-191277] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:04:03.175 [DEBUG] [Thread-191277] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] client lang: <none>
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] server lang: <none>
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] kex follows: False
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] Compression: none
2025-11-24T14:04:03.176 [DEBUG] [Thread-191277] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:04:03.246 [DEBUG] [Thread-191277] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:04:03.247 [DEBUG] [Thread-191277] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:04:03.247 [DEBUG] [Thread-191277] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:04:03.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:04:03.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:04:03.309 [DEBUG] [Thread-191277] [transport.py] [_log()] userauth is OK
2025-11-24T14:04:03.309 [DEBUG] [Thread-191277] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:04:03.309 [DEBUG] [Thread-191277] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:04:03.309 [DEBUG] [Thread-191277] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:04:03.309 [DEBUG] [Thread-191277] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:04:03.335 [INFO] [Thread-191277] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:04:03.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:04:03.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:04:04.204 [DEBUG] [Thread-191277] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:04:04.204 [DEBUG] [Thread-191277] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:04:04.252 [DEBUG] [Thread-191277] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:04:04.252 [DEBUG] [Thread-191277] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:04:04.260 [DEBUG] [Thread-191277] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:04:04.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:04:04.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:04:04.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:04:04.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:04:04.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:04:04.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:04:04.293 [DEBUG] [Thread-191277] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:04:05.357 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:04:05.358 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:04:07.927 [DEBUG] [Thread-191279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:04:16.862 [DEBUG] [Thread-191280 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:04:31.918 [DEBUG] [Thread-191281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:04:34.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:04:34.308 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:04:34.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-11-24T14:04:35.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 4, 3), 22.88, 21.6, 0.0, 23.63, 21.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:04:35.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:04:03
2025-11-24T14:04:35.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:04:35.514 [DEBUG] [Thread-191282] [transport.py] [_log()] starting thread (client mode): 0xd317c640
2025-11-24T14:04:35.514 [DEBUG] [Thread-191282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:04:35.521 [DEBUG] [Thread-191282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:04:35.521 [INFO] [Thread-191282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:04:35.524 [DEBUG] [Thread-191282] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:04:35.524 [DEBUG] [Thread-191282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:04:35.524 [DEBUG] [Thread-191282] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:04:35.524 [DEBUG] [Thread-191282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] client lang: <none>
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] server lang: <none>
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] kex follows: False
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:04:35.525 [DEBUG] [Thread-191282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:04:35.526 [DEBUG] [Thread-191282] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:04:35.526 [DEBUG] [Thread-191282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:04:35.526 [DEBUG] [Thread-191282] [transport.py] [_log()] Compression: none
2025-11-24T14:04:35.526 [DEBUG] [Thread-191282] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:04:35.554 [DEBUG] [Thread-191282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:04:35.556 [DEBUG] [Thread-191282] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:04:35.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:04:35.559 [DEBUG] [Thread-191282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:04:35.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:04:35.599 [DEBUG] [Thread-191282] [transport.py] [_log()] userauth is OK
2025-11-24T14:04:35.599 [DEBUG] [Thread-191282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:04:35.600 [DEBUG] [Thread-191282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:04:35.600 [DEBUG] [Thread-191282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:04:35.600 [DEBUG] [Thread-191282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:04:35.627 [INFO] [Thread-191282] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:04:35.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:04:36.190 [DEBUG] [Thread-191282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:04:36.190 [DEBUG] [Thread-191282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:04:36.199 [DEBUG] [Thread-191282] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:04:36.231 [DEBUG] [Thread-191282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:04:36.231 [DEBUG] [Thread-191282] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:04:36.233 [DEBUG] [Thread-191282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:04:36.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:04:36.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:04:36.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:04:36.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:04:36.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:04:36.252 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:04:36.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:04:36.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:04:36.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:04:36.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.502825 -999.00  +21.50  16.33     27   +2.00 1 1 1 1 1   888    0 18.75 -49.90 ----- 16.3 16.3 160.2 23.3 28.1 -26.4 27.4 -25.8 28.5 -25.1 29.4 -25.8
2025-11-24T14:04:36.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:04:36.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:04:36.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.502825
2025-11-24T14:04:36.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:04:36.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:04:36.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:04:36.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:04:36.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:04:36.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:04:03', tmtdew=22.88, humidity=21.6, cloud=0.0, wind=23.63, temperature=21.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:04:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:04:36.261 [DEBUG] [Thread-191282] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:04:36.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:04:36.345 [DEBUG] [Thread-191285] [transport.py] [_log()] starting thread (client mode): 0xc9b83460
2025-11-24T14:04:36.346 [DEBUG] [Thread-191285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:04:36.361 [DEBUG] [Thread-191285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:04:36.361 [INFO] [Thread-191285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] client lang: <none>
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] server lang: <none>
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] kex follows: False
2025-11-24T14:04:36.368 [DEBUG] [Thread-191285] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:04:36.369 [DEBUG] [Thread-191285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:04:36.369 [DEBUG] [Thread-191285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:04:36.369 [DEBUG] [Thread-191285] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:04:36.369 [DEBUG] [Thread-191285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:04:36.369 [DEBUG] [Thread-191285] [transport.py] [_log()] Compression: none
2025-11-24T14:04:36.369 [DEBUG] [Thread-191285] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:04:36.425 [DEBUG] [Thread-191285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:04:36.425 [DEBUG] [Thread-191285] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:04:36.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:04:36.425 [DEBUG] [Thread-191285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:04:36.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:04:36.482 [DEBUG] [Thread-191285] [transport.py] [_log()] userauth is OK
2025-11-24T14:04:36.482 [DEBUG] [Thread-191285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:04:36.482 [DEBUG] [Thread-191285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:04:36.482 [DEBUG] [Thread-191285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:04:36.482 [DEBUG] [Thread-191285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:04:36.496 [INFO] [Thread-191285] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:04:36.496 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:04:36.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:04:37.334 [DEBUG] [Thread-191285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:04:37.334 [DEBUG] [Thread-191285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:04:37.382 [DEBUG] [Thread-191285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:04:37.382 [DEBUG] [Thread-191285] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:04:37.390 [DEBUG] [Thread-191285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:04:37.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:04:37.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-11-24T14:04:37.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-11-24T14:04:37.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:04:37.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:04:37.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:04:37.423 [DEBUG] [Thread-191285] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:04:46.950 [DEBUG] [Thread-191287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:05:02.013 [DEBUG] [Thread-191288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:05:05.498 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:05:05.500 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:05:07.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:05:07.423 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:05:07.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-11-24T14:05:08.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 4, 36), 23.0, 21.4, 0.0, 22.64, 21.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:05:08.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:04:36
2025-11-24T14:05:08.182 [DEBUG] [Thread-191289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:05:08.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:05:08.475 [DEBUG] [Thread-191290] [transport.py] [_log()] starting thread (client mode): 0xd07ebfd0
2025-11-24T14:05:08.475 [DEBUG] [Thread-191290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:05:08.487 [DEBUG] [Thread-191290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:05:08.487 [INFO] [Thread-191290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:05:08.488 [DEBUG] [Thread-191290] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] client lang: <none>
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] server lang: <none>
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] kex follows: False
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] Compression: none
2025-11-24T14:05:08.489 [DEBUG] [Thread-191290] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:05:08.498 [DEBUG] [Thread-191290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:05:08.499 [DEBUG] [Thread-191290] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:05:08.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:05:08.500 [DEBUG] [Thread-191290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:05:08.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:05:08.501 [DEBUG] [Thread-191290] [transport.py] [_log()] userauth is OK
2025-11-24T14:05:08.502 [DEBUG] [Thread-191290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:05:08.502 [DEBUG] [Thread-191290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:05:08.502 [DEBUG] [Thread-191290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:05:08.502 [DEBUG] [Thread-191290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:05:08.519 [INFO] [Thread-191290] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:05:08.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:05:10.746 [DEBUG] [Thread-191290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:05:10.746 [DEBUG] [Thread-191290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:05:10.747 [DEBUG] [Thread-191290] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:05:10.787 [DEBUG] [Thread-191290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:05:10.787 [DEBUG] [Thread-191290] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:05:10.789 [DEBUG] [Thread-191290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:05:10.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:05:10.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:05:10.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:05:10.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:05:10.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:05:10.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:05:10.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:05:10.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:05:10.812 [DEBUG] [Thread-191290] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:05:10.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:05:10.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.503173 -999.00  +21.80  18.91     27   +2.00 1 1 1 1 1   888    0 19.02 -48.47 ----- 18.9 18.9 154.6 27.7 28.1 -26.4 27.5 -25.7 28.6 -25.1 29.5 -27.7
2025-11-24T14:05:10.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:05:10.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:05:10.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.503173
2025-11-24T14:05:10.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:05:10.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:05:10.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:05:10.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:05:10.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:05:10.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:04:36', tmtdew=23.0, humidity=21.4, cloud=0.0, wind=22.64, temperature=21.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:04:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:05:10.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:05:10.921 [DEBUG] [Thread-191293] [transport.py] [_log()] starting thread (client mode): 0xd07fa0b0
2025-11-24T14:05:10.921 [DEBUG] [Thread-191293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:05:10.938 [DEBUG] [Thread-191293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:05:10.938 [INFO] [Thread-191293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] client lang: <none>
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] server lang: <none>
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] kex follows: False
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] Compression: none
2025-11-24T14:05:10.949 [DEBUG] [Thread-191293] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:05:11.002 [DEBUG] [Thread-191293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:05:11.002 [DEBUG] [Thread-191293] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:05:11.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:05:11.003 [DEBUG] [Thread-191293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:05:11.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:05:11.058 [DEBUG] [Thread-191293] [transport.py] [_log()] userauth is OK
2025-11-24T14:05:11.058 [DEBUG] [Thread-191293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:05:11.058 [DEBUG] [Thread-191293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:05:11.058 [DEBUG] [Thread-191293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:05:11.058 [DEBUG] [Thread-191293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:05:11.073 [INFO] [Thread-191293] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:05:11.074 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:05:11.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:05:11.958 [DEBUG] [Thread-191293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:05:11.958 [DEBUG] [Thread-191293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:05:12.005 [DEBUG] [Thread-191293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:05:12.005 [DEBUG] [Thread-191293] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:05:12.014 [DEBUG] [Thread-191293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:05:12.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:05:12.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')
2025-11-24T14:05:12.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-11-24T14:05:12.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:05:12.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:05:12.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:05:12.047 [DEBUG] [Thread-191293] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:05:17.059 [DEBUG] [Thread-191295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:05:32.133 [DEBUG] [Thread-191296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:05:42.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:05:42.068 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:05:42.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:05:42.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 5, 8), 23.01, 21.38, 0.0, 24.88, 21.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:05:42.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:05:08
2025-11-24T14:05:43.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:05:43.255 [DEBUG] [Thread-191297] [transport.py] [_log()] starting thread (client mode): 0xd317cbe0
2025-11-24T14:05:43.255 [DEBUG] [Thread-191297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:05:43.268 [DEBUG] [Thread-191297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:05:43.268 [INFO] [Thread-191297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:05:43.269 [DEBUG] [Thread-191297] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:05:43.269 [DEBUG] [Thread-191297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:05:43.269 [DEBUG] [Thread-191297] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:05:43.269 [DEBUG] [Thread-191297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:05:43.269 [DEBUG] [Thread-191297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:05:43.269 [DEBUG] [Thread-191297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:05:43.269 [DEBUG] [Thread-191297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] client lang: <none>
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] server lang: <none>
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] kex follows: False
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] Compression: none
2025-11-24T14:05:43.270 [DEBUG] [Thread-191297] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:05:43.281 [DEBUG] [Thread-191297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:05:43.281 [DEBUG] [Thread-191297] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:05:43.281 [DEBUG] [Thread-191297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:05:43.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:05:43.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:05:43.282 [DEBUG] [Thread-191297] [transport.py] [_log()] userauth is OK
2025-11-24T14:05:43.282 [DEBUG] [Thread-191297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:05:43.282 [DEBUG] [Thread-191297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:05:43.282 [DEBUG] [Thread-191297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:05:43.282 [DEBUG] [Thread-191297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:05:43.292 [INFO] [Thread-191297] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:05:43.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:05:43.856 [DEBUG] [Thread-191297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:05:43.856 [DEBUG] [Thread-191297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:05:43.857 [DEBUG] [Thread-191297] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:05:43.897 [DEBUG] [Thread-191297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:05:43.897 [DEBUG] [Thread-191297] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:05:43.900 [DEBUG] [Thread-191297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:05:43.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:05:43.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:05:43.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:05:43.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:05:43.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:05:43.914 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:05:43.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:05:43.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:05:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:05:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.503867 -999.00  +21.50  21.05     27   +1.80 1 1 1 1 1   888    0 18.59 -46.08 ----- 21.1 21.1 141.2 32.8 28.1 -27.7 27.4 -27.2 28.5 -25.9 29.5 -26.9
2025-11-24T14:05:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:05:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:05:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.503867
2025-11-24T14:05:43.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:05:43.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:05:43.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:05:43.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:05:43.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:05:43.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:05:08', tmtdew=23.01, humidity=21.38, cloud=0.0, wind=24.88, temperature=21.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:05:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:05:43.915 [DEBUG] [Thread-191297] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:05:43.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:05:44.004 [DEBUG] [Thread-191300] [transport.py] [_log()] starting thread (client mode): 0xd0700ca0
2025-11-24T14:05:44.004 [DEBUG] [Thread-191300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:05:44.019 [DEBUG] [Thread-191300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:05:44.020 [INFO] [Thread-191300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:05:44.027 [DEBUG] [Thread-191300] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:05:44.027 [DEBUG] [Thread-191300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:05:44.027 [DEBUG] [Thread-191300] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:05:44.027 [DEBUG] [Thread-191300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:05:44.027 [DEBUG] [Thread-191300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:05:44.027 [DEBUG] [Thread-191300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] client lang: <none>
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] server lang: <none>
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] kex follows: False
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] Compression: none
2025-11-24T14:05:44.028 [DEBUG] [Thread-191300] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:05:44.085 [DEBUG] [Thread-191300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:05:44.086 [DEBUG] [Thread-191300] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:05:44.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:05:44.087 [DEBUG] [Thread-191300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:05:44.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:05:44.144 [DEBUG] [Thread-191300] [transport.py] [_log()] userauth is OK
2025-11-24T14:05:44.144 [DEBUG] [Thread-191300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:05:44.145 [DEBUG] [Thread-191300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:05:44.145 [DEBUG] [Thread-191300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:05:44.145 [DEBUG] [Thread-191300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:05:44.164 [INFO] [Thread-191300] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:05:44.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:05:44.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:05:45.008 [DEBUG] [Thread-191300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:05:45.009 [DEBUG] [Thread-191300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:05:45.056 [DEBUG] [Thread-191300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:05:45.056 [DEBUG] [Thread-191300] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:05:45.064 [DEBUG] [Thread-191300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:05:45.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:05:45.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-11-24T14:05:45.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-11-24T14:05:45.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:05:45.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:05:45.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:05:45.096 [DEBUG] [Thread-191300] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:05:47.161 [DEBUG] [Thread-191302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:06:02.201 [DEBUG] [Thread-191303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:06:05.641 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:06:05.642 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:06:08.239 [DEBUG] [Thread-191304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:06:15.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:06:15.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:06:15.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-11-24T14:06:15.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 5, 41), 23.26, 20.95, 0.0, 23.24, 22.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:06:15.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:05:41
2025-11-24T14:06:16.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:06:16.274 [DEBUG] [Thread-191305] [transport.py] [_log()] starting thread (client mode): 0xd07f90c0
2025-11-24T14:06:16.274 [DEBUG] [Thread-191305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:06:16.291 [DEBUG] [Thread-191305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:06:16.291 [INFO] [Thread-191305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] client lang: <none>
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] server lang: <none>
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] kex follows: False
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] Compression: none
2025-11-24T14:06:16.294 [DEBUG] [Thread-191305] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:06:16.308 [DEBUG] [Thread-191305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:06:16.308 [DEBUG] [Thread-191305] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:06:16.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:06:16.308 [DEBUG] [Thread-191305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:06:16.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:06:16.309 [DEBUG] [Thread-191305] [transport.py] [_log()] userauth is OK
2025-11-24T14:06:16.309 [DEBUG] [Thread-191305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:06:16.309 [DEBUG] [Thread-191305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:06:16.309 [DEBUG] [Thread-191305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:06:16.309 [DEBUG] [Thread-191305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:06:16.323 [INFO] [Thread-191305] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:06:16.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:06:16.930 [DEBUG] [Thread-191305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:06:16.931 [DEBUG] [Thread-191305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:06:16.931 [DEBUG] [Thread-191305] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:06:16.972 [DEBUG] [Thread-191305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:06:16.972 [DEBUG] [Thread-191305] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:06:16.975 [DEBUG] [Thread-191305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:06:16.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:06:16.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:06:16.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:06:16.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:06:16.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:06:16.992 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:06:16.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:06:16.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:06:16.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:06:16.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.503867 -999.00  +21.50  21.05     27   +1.80 1 1 1 1 1   888    0 18.59 -46.08 ----- 21.1 21.1 141.2 32.8 28.1 -27.7 27.4 -27.2 28.5 -25.9 29.5 -26.9
2025-11-24T14:06:16.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:06:16.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:06:16.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.503867
2025-11-24T14:06:16.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:06:16.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:06:16.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:06:16.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:06:16.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:06:16.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:05:41', tmtdew=23.26, humidity=20.95, cloud=0.0, wind=23.24, temperature=22.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:05:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:06:16.995 [DEBUG] [Thread-191305] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:06:17.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:06:17.094 [DEBUG] [Thread-191308] [transport.py] [_log()] starting thread (client mode): 0xc9ba9630
2025-11-24T14:06:17.095 [DEBUG] [Thread-191308] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:06:17.109 [DEBUG] [Thread-191308] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:06:17.109 [INFO] [Thread-191308] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] client lang: <none>
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] server lang: <none>
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] kex follows: False
2025-11-24T14:06:17.118 [DEBUG] [Thread-191308] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:06:17.119 [DEBUG] [Thread-191308] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:06:17.119 [DEBUG] [Thread-191308] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:06:17.119 [DEBUG] [Thread-191308] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:06:17.119 [DEBUG] [Thread-191308] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:06:17.119 [DEBUG] [Thread-191308] [transport.py] [_log()] Compression: none
2025-11-24T14:06:17.119 [DEBUG] [Thread-191308] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:06:17.184 [DEBUG] [Thread-191308] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:06:17.184 [DEBUG] [Thread-191308] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:06:17.185 [DEBUG] [Thread-191308] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:06:17.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:06:17.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:06:17.239 [DEBUG] [Thread-191310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:06:17.244 [DEBUG] [Thread-191308] [transport.py] [_log()] userauth is OK
2025-11-24T14:06:17.244 [DEBUG] [Thread-191308] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:06:17.244 [DEBUG] [Thread-191308] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:06:17.244 [DEBUG] [Thread-191308] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:06:17.244 [DEBUG] [Thread-191308] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:06:17.259 [INFO] [Thread-191308] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:06:17.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:06:17.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:06:18.115 [DEBUG] [Thread-191308] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:06:18.115 [DEBUG] [Thread-191308] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:06:18.163 [DEBUG] [Thread-191308] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:06:18.163 [DEBUG] [Thread-191308] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:06:18.174 [DEBUG] [Thread-191308] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:06:18.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:06:18.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-11-24T14:06:18.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-11-24T14:06:18.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:06:18.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:06:18.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:06:18.213 [DEBUG] [Thread-191308] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:06:32.279 [DEBUG] [Thread-191311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:06:47.307 [DEBUG] [Thread-191312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:06:48.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:06:48.221 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:06:48.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-11-24T14:06:48.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 6, 13), 23.32, 20.86, 0.0, 23.17, 22.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:06:48.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:06:13
2025-11-24T14:06:49.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:06:49.279 [DEBUG] [Thread-191313] [transport.py] [_log()] starting thread (client mode): 0xd07a9960
2025-11-24T14:06:49.279 [DEBUG] [Thread-191313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:06:49.298 [DEBUG] [Thread-191313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:06:49.298 [INFO] [Thread-191313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] client lang: <none>
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] server lang: <none>
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] kex follows: False
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:06:49.301 [DEBUG] [Thread-191313] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:06:49.302 [DEBUG] [Thread-191313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:06:49.302 [DEBUG] [Thread-191313] [transport.py] [_log()] Compression: none
2025-11-24T14:06:49.302 [DEBUG] [Thread-191313] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:06:49.324 [DEBUG] [Thread-191313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:06:49.327 [DEBUG] [Thread-191313] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:06:49.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:06:49.329 [DEBUG] [Thread-191313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:06:49.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:06:49.331 [DEBUG] [Thread-191313] [transport.py] [_log()] userauth is OK
2025-11-24T14:06:49.331 [DEBUG] [Thread-191313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:06:49.331 [DEBUG] [Thread-191313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:06:49.331 [DEBUG] [Thread-191313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:06:49.331 [DEBUG] [Thread-191313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:06:49.349 [INFO] [Thread-191313] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:06:49.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:06:49.949 [DEBUG] [Thread-191313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:06:49.949 [DEBUG] [Thread-191313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:06:49.949 [DEBUG] [Thread-191313] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:06:49.990 [DEBUG] [Thread-191313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:06:49.990 [DEBUG] [Thread-191313] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:06:49.992 [DEBUG] [Thread-191313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:06:50.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:06:50.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:06:50.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:06:50.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:06:50.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:06:50.012 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:06:50.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:06:50.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:06:50.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:06:50.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.504214 -999.00  +21.40  16.24     27   +1.80 1 1 1 1 1   888    0 18.63 -42.28 ----- 16.2 16.2 140.0 28.3 28.1 -26.1 27.4 -26.3 28.6 -24.8 29.4 -28.2
2025-11-24T14:06:50.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:06:50.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:06:50.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.504214
2025-11-24T14:06:50.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:06:50.016 [DEBUG] [Thread-191313] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:06:50.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:06:50.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:06:50.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:06:50.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:06:50.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:06:13', tmtdew=23.32, humidity=20.86, cloud=0.0, wind=23.17, temperature=22.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:06:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:06:50.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:06:50.119 [DEBUG] [Thread-191316] [transport.py] [_log()] starting thread (client mode): 0xd07a8a30
2025-11-24T14:06:50.119 [DEBUG] [Thread-191316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:06:50.132 [DEBUG] [Thread-191316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:06:50.132 [INFO] [Thread-191316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] client lang: <none>
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] server lang: <none>
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] kex follows: False
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:06:50.140 [DEBUG] [Thread-191316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:06:50.141 [DEBUG] [Thread-191316] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:06:50.141 [DEBUG] [Thread-191316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:06:50.141 [DEBUG] [Thread-191316] [transport.py] [_log()] Compression: none
2025-11-24T14:06:50.141 [DEBUG] [Thread-191316] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:06:50.197 [DEBUG] [Thread-191316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:06:50.197 [DEBUG] [Thread-191316] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:06:50.197 [DEBUG] [Thread-191316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:06:50.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:06:50.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:06:50.254 [DEBUG] [Thread-191316] [transport.py] [_log()] userauth is OK
2025-11-24T14:06:50.254 [DEBUG] [Thread-191316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:06:50.254 [DEBUG] [Thread-191316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:06:50.254 [DEBUG] [Thread-191316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:06:50.254 [DEBUG] [Thread-191316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:06:50.268 [INFO] [Thread-191316] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:06:50.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:06:50.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:06:51.095 [DEBUG] [Thread-191316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:06:51.095 [DEBUG] [Thread-191316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:06:51.142 [DEBUG] [Thread-191316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:06:51.142 [DEBUG] [Thread-191316] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:06:51.151 [DEBUG] [Thread-191316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:06:51.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:06: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')
2025-11-24T14:06:51.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:06:51.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:06:51.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:06:51.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:06:51.184 [DEBUG] [Thread-191316] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:07:02.336 [DEBUG] [Thread-191318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:07:05.784 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:07:05.786 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:07:08.396 [DEBUG] [Thread-191319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:07:17.420 [DEBUG] [Thread-191320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:07:21.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:07:21.184 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:07:21.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-11-24T14:07:21.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 7, 18), 22.56, 21.73, 0.0, 18.33, 20.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:07:21.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:07:18
2025-11-24T14:07:22.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:07:22.301 [DEBUG] [Thread-191321] [transport.py] [_log()] starting thread (client mode): 0xc9ba9a20
2025-11-24T14:07:22.301 [DEBUG] [Thread-191321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:07:22.316 [DEBUG] [Thread-191321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:07:22.316 [INFO] [Thread-191321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] client lang: <none>
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] server lang: <none>
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] kex follows: False
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] Compression: none
2025-11-24T14:07:22.318 [DEBUG] [Thread-191321] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:07:22.326 [DEBUG] [Thread-191321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:07:22.326 [DEBUG] [Thread-191321] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:07:22.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:07:22.327 [DEBUG] [Thread-191321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:07:22.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:07:22.328 [DEBUG] [Thread-191321] [transport.py] [_log()] userauth is OK
2025-11-24T14:07:22.328 [DEBUG] [Thread-191321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:07:22.328 [DEBUG] [Thread-191321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:07:22.328 [DEBUG] [Thread-191321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:07:22.328 [DEBUG] [Thread-191321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:07:22.343 [INFO] [Thread-191321] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:07:22.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:07:22.994 [DEBUG] [Thread-191321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:07:22.994 [DEBUG] [Thread-191321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:07:22.994 [DEBUG] [Thread-191321] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:07:23.035 [DEBUG] [Thread-191321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:07:23.035 [DEBUG] [Thread-191321] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:07:23.036 [DEBUG] [Thread-191321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:07:23.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:07:23.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:07:23.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:07:23.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:07:23.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:07:23.048 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:07:23.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:07:23.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:07:23.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:07:23.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.504561 -999.00  +21.40  12.25     27   +1.80 1 1 1 1 1   888    0 18.75 -40.91 ----- 12.2 12.2 186.8 19.7 28.1 -26.5 27.5 -26.6 28.6 -25.1 29.5 -27.2
2025-11-24T14:07:23.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:07:23.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:07:23.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.504561
2025-11-24T14:07:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:07:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:07:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:07:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:07:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:07:23.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:07:18', tmtdew=22.56, humidity=21.73, cloud=0.0, wind=18.33, temperature=20.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:06:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:07:23.049 [DEBUG] [Thread-191321] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:07:23.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:07:23.135 [DEBUG] [Thread-191324] [transport.py] [_log()] starting thread (client mode): 0xd07f9780
2025-11-24T14:07:23.135 [DEBUG] [Thread-191324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:07:23.150 [DEBUG] [Thread-191324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:07:23.150 [INFO] [Thread-191324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:07:23.157 [DEBUG] [Thread-191324] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:07:23.157 [DEBUG] [Thread-191324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] client lang: <none>
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] server lang: <none>
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] kex follows: False
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] Compression: none
2025-11-24T14:07:23.158 [DEBUG] [Thread-191324] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:07:23.213 [DEBUG] [Thread-191324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:07:23.214 [DEBUG] [Thread-191324] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:07:23.214 [DEBUG] [Thread-191324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:07:23.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:07:23.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:07:23.270 [DEBUG] [Thread-191324] [transport.py] [_log()] userauth is OK
2025-11-24T14:07:23.270 [DEBUG] [Thread-191324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:07:23.270 [DEBUG] [Thread-191324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:07:23.270 [DEBUG] [Thread-191324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:07:23.270 [DEBUG] [Thread-191324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:07:23.284 [INFO] [Thread-191324] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:07:23.285 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:07:23.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:07:24.163 [DEBUG] [Thread-191324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:07:24.163 [DEBUG] [Thread-191324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:07:24.213 [DEBUG] [Thread-191324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:07:24.214 [DEBUG] [Thread-191324] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:07:24.226 [DEBUG] [Thread-191324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:07:24.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:07:24.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-11-24T14:07:24.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-11-24T14:07:24.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:07:24.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:07:24.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:07:24.260 [DEBUG] [Thread-191324] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:07:32.453 [DEBUG] [Thread-191326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:07:47.502 [DEBUG] [Thread-191327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:07:54.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:07:54.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:07:54.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-11-24T14:07:55.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 7, 51), 22.2, 22.39, 0.0, 15.51, 20.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:07:55.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:07:51
2025-11-24T14:07:55.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:07:55.357 [DEBUG] [Thread-191328] [transport.py] [_log()] starting thread (client mode): 0xd07fb460
2025-11-24T14:07:55.357 [DEBUG] [Thread-191328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:07:55.378 [DEBUG] [Thread-191328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:07:55.378 [INFO] [Thread-191328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:07:55.380 [DEBUG] [Thread-191328] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] client lang: <none>
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] server lang: <none>
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] kex follows: False
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] Compression: none
2025-11-24T14:07:55.381 [DEBUG] [Thread-191328] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:07:55.401 [DEBUG] [Thread-191328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:07:55.402 [DEBUG] [Thread-191328] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:07:55.402 [DEBUG] [Thread-191328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:07:55.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:07:55.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:07:55.404 [DEBUG] [Thread-191328] [transport.py] [_log()] userauth is OK
2025-11-24T14:07:55.404 [DEBUG] [Thread-191328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:07:55.404 [DEBUG] [Thread-191328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:07:55.404 [DEBUG] [Thread-191328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:07:55.404 [DEBUG] [Thread-191328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:07:55.436 [INFO] [Thread-191328] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:07:55.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:07:56.071 [DEBUG] [Thread-191328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:07:56.071 [DEBUG] [Thread-191328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:07:56.072 [DEBUG] [Thread-191328] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:07:56.113 [DEBUG] [Thread-191328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:07:56.113 [DEBUG] [Thread-191328] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:07:56.117 [DEBUG] [Thread-191328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:07:56.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:07:56.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:07:56.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:07:56.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:07:56.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:07:56.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:07:56.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:07:56.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:07:56.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:07:56.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.504909 -999.00  +21.50  12.37     26   +1.50 1 1 1 1 1   888    0 19.31 -38.15 ----- 12.4 12.4 169.4 20.8 28.1 -27.2 27.4 -28.3 28.7 -25.1 29.5 -27.6
2025-11-24T14:07:56.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:07:56.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:07:56.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.504909
2025-11-24T14:07:56.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:07:56.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:07:56.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:07:56.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:07:56.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:07:56.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:07:51', tmtdew=22.2, humidity=22.39, cloud=0.0, wind=15.51, temperature=20.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:07:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:07:56.147 [DEBUG] [Thread-191328] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:07:56.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:07:56.252 [DEBUG] [Thread-191331] [transport.py] [_log()] starting thread (client mode): 0xd07a81f0
2025-11-24T14:07:56.252 [DEBUG] [Thread-191331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:07:56.267 [DEBUG] [Thread-191331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:07:56.267 [INFO] [Thread-191331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:07:56.275 [DEBUG] [Thread-191331] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:07:56.275 [DEBUG] [Thread-191331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:07:56.275 [DEBUG] [Thread-191331] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:07:56.275 [DEBUG] [Thread-191331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:07:56.275 [DEBUG] [Thread-191331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:07:56.276 [DEBUG] [Thread-191331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:07:56.276 [DEBUG] [Thread-191331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:07:56.276 [DEBUG] [Thread-191331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:07:56.276 [DEBUG] [Thread-191331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:07:56.276 [DEBUG] [Thread-191331] [transport.py] [_log()] client lang: <none>
2025-11-24T14:07:56.276 [DEBUG] [Thread-191331] [transport.py] [_log()] server lang: <none>
2025-11-24T14:07:56.276 [DEBUG] [Thread-191331] [transport.py] [_log()] kex follows: False
2025-11-24T14:07:56.276 [DEBUG] [Thread-191331] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:07:56.276 [DEBUG] [Thread-191331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:07:56.277 [DEBUG] [Thread-191331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:07:56.277 [DEBUG] [Thread-191331] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:07:56.277 [DEBUG] [Thread-191331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:07:56.278 [DEBUG] [Thread-191331] [transport.py] [_log()] Compression: none
2025-11-24T14:07:56.278 [DEBUG] [Thread-191331] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:07:56.335 [DEBUG] [Thread-191331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:07:56.336 [DEBUG] [Thread-191331] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:07:56.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:07:56.337 [DEBUG] [Thread-191331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:07:56.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:07:56.394 [DEBUG] [Thread-191331] [transport.py] [_log()] userauth is OK
2025-11-24T14:07:56.395 [DEBUG] [Thread-191331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:07:56.395 [DEBUG] [Thread-191331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:07:56.395 [DEBUG] [Thread-191331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:07:56.395 [DEBUG] [Thread-191331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:07:56.414 [INFO] [Thread-191331] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:07:56.414 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:07:56.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:07:57.246 [DEBUG] [Thread-191331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:07:57.246 [DEBUG] [Thread-191331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:07:57.293 [DEBUG] [Thread-191331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:07:57.294 [DEBUG] [Thread-191331] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:07:57.303 [DEBUG] [Thread-191331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:07:57.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:07:57.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-11-24T14:07:57.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-11-24T14:07:57.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:07:57.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:07:57.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:07:57.340 [DEBUG] [Thread-191331] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:08:02.534 [DEBUG] [Thread-191333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:08:05.928 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:08:05.929 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:08:08.640 [DEBUG] [Thread-191334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:08:17.574 [DEBUG] [Thread-191335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:08:27.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:08:27.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:08:27.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-11-24T14:08:28.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 8, 23), 22.55, 21.9, 0.0, 21.23, 20.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:08:28.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:08:23
2025-11-24T14:08:28.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:08:28.462 [DEBUG] [Thread-191336] [transport.py] [_log()] starting thread (client mode): 0xd07a9db0
2025-11-24T14:08:28.462 [DEBUG] [Thread-191336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:08:28.482 [DEBUG] [Thread-191336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:08:28.482 [INFO] [Thread-191336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:08:28.483 [DEBUG] [Thread-191336] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:08:28.483 [DEBUG] [Thread-191336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] client lang: <none>
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] server lang: <none>
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] kex follows: False
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] Compression: none
2025-11-24T14:08:28.484 [DEBUG] [Thread-191336] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:08:28.496 [DEBUG] [Thread-191336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:08:28.497 [DEBUG] [Thread-191336] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:08:28.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:08:28.498 [DEBUG] [Thread-191336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:08:28.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:08:28.500 [DEBUG] [Thread-191336] [transport.py] [_log()] userauth is OK
2025-11-24T14:08:28.501 [DEBUG] [Thread-191336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:08:28.501 [DEBUG] [Thread-191336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:08:28.501 [DEBUG] [Thread-191336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:08:28.501 [DEBUG] [Thread-191336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:08:28.521 [INFO] [Thread-191336] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:08:28.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:08:29.203 [DEBUG] [Thread-191336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:08:29.203 [DEBUG] [Thread-191336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:08:29.203 [DEBUG] [Thread-191336] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:08:29.244 [DEBUG] [Thread-191336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:08:29.244 [DEBUG] [Thread-191336] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:08:29.246 [DEBUG] [Thread-191336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:08:29.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:08:29.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:08:29.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:08:29.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:08:29.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:08:29.263 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:08:29.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:08:29.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.505256 -999.00  +21.30  21.10     27   +1.60 1 1 1 1 1   888    0 19.41 -38.20 ----- 21.1 21.1 179.2 25.5 28.1 -26.6 27.3 -28.2 28.7 -24.8 29.5 -26.7
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.505256
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:08:29.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:08:23', tmtdew=22.55, humidity=21.9, cloud=0.0, wind=21.23, temperature=20.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:07:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:08:29.265 [DEBUG] [Thread-191336] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:08:29.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:08:29.348 [DEBUG] [Thread-191339] [transport.py] [_log()] starting thread (client mode): 0xd07a9cc0
2025-11-24T14:08:29.348 [DEBUG] [Thread-191339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:08:29.363 [DEBUG] [Thread-191339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:08:29.363 [INFO] [Thread-191339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:08:29.370 [DEBUG] [Thread-191339] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] client lang: <none>
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] server lang: <none>
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] kex follows: False
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] Compression: none
2025-11-24T14:08:29.371 [DEBUG] [Thread-191339] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:08:29.428 [DEBUG] [Thread-191339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:08:29.429 [DEBUG] [Thread-191339] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:08:29.429 [DEBUG] [Thread-191339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:08:29.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:08:29.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:08:29.488 [DEBUG] [Thread-191339] [transport.py] [_log()] userauth is OK
2025-11-24T14:08:29.489 [DEBUG] [Thread-191339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:08:29.489 [DEBUG] [Thread-191339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:08:29.489 [DEBUG] [Thread-191339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:08:29.489 [DEBUG] [Thread-191339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:08:29.503 [INFO] [Thread-191339] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:08:29.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:08:29.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:08:30.354 [DEBUG] [Thread-191339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:08:30.355 [DEBUG] [Thread-191339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:08:30.407 [DEBUG] [Thread-191339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:08:30.407 [DEBUG] [Thread-191339] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:08:30.421 [DEBUG] [Thread-191339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:08:30.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:08:30.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-11-24T14:08:30.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-11-24T14:08:30.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:08:30.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:08:30.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:08:30.463 [DEBUG] [Thread-191339] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:08:32.611 [DEBUG] [Thread-191341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:08:47.658 [DEBUG] [Thread-191342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:09:00.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:09:00.479 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:09:00.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-11-24T14:09:01.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 8, 55), 22.79, 21.35, 0.0, 15.74, 21.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:09:01.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:08:55
2025-11-24T14:09:01.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:09:01.583 [DEBUG] [Thread-191343] [transport.py] [_log()] starting thread (client mode): 0xd07f90f0
2025-11-24T14:09:01.583 [DEBUG] [Thread-191343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:09:01.607 [DEBUG] [Thread-191343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:09:01.607 [INFO] [Thread-191343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:09:01.610 [DEBUG] [Thread-191343] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] client lang: <none>
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] server lang: <none>
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] kex follows: False
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:09:01.611 [DEBUG] [Thread-191343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:09:01.612 [DEBUG] [Thread-191343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:09:01.612 [DEBUG] [Thread-191343] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:09:01.612 [DEBUG] [Thread-191343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:09:01.612 [DEBUG] [Thread-191343] [transport.py] [_log()] Compression: none
2025-11-24T14:09:01.612 [DEBUG] [Thread-191343] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:09:01.632 [DEBUG] [Thread-191343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:09:01.632 [DEBUG] [Thread-191343] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:09:01.633 [DEBUG] [Thread-191343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:09:01.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:09:01.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:09:01.635 [DEBUG] [Thread-191343] [transport.py] [_log()] userauth is OK
2025-11-24T14:09:01.635 [DEBUG] [Thread-191343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:09:01.635 [DEBUG] [Thread-191343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:09:01.636 [DEBUG] [Thread-191343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:09:01.636 [DEBUG] [Thread-191343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:09:01.672 [INFO] [Thread-191343] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:09:01.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:09:02.320 [DEBUG] [Thread-191343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:09:02.320 [DEBUG] [Thread-191343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:09:02.320 [DEBUG] [Thread-191343] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:09:02.361 [DEBUG] [Thread-191343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:09:02.362 [DEBUG] [Thread-191343] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:09:02.364 [DEBUG] [Thread-191343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:09:02.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:09:02.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:09:02.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:09:02.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:09:02.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:09:02.388 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:09:02.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:09:02.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:09:02.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:09:02.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.505604 -999.00  +21.10   7.03     26   +1.20 1 1 1 1 1   888    0 18.94 -33.96 ----- 7.0 7.0 207.2 21.1 28.1 -26.2 27.1 -26.5 28.8 -24.5 29.5 -27.4
2025-11-24T14:09:02.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:09:02.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:09:02.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.505604
2025-11-24T14:09:02.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:09:02.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:09:02.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:09:02.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:09:02.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:09:02.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:08:55', tmtdew=22.79, humidity=21.35, cloud=0.0, wind=15.74, temperature=21.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:08:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:09:02.391 [DEBUG] [Thread-191343] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:09:02.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:09:02.487 [DEBUG] [Thread-191346] [transport.py] [_log()] starting thread (client mode): 0xd07eb850
2025-11-24T14:09:02.487 [DEBUG] [Thread-191346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:09:02.501 [DEBUG] [Thread-191346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:09:02.502 [INFO] [Thread-191346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] client lang: <none>
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] server lang: <none>
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] kex follows: False
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] Compression: none
2025-11-24T14:09:02.510 [DEBUG] [Thread-191346] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:09:02.571 [DEBUG] [Thread-191346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:09:02.571 [DEBUG] [Thread-191346] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:09:02.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:09:02.573 [DEBUG] [Thread-191346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:09:02.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:09:02.627 [DEBUG] [Thread-191346] [transport.py] [_log()] userauth is OK
2025-11-24T14:09:02.627 [DEBUG] [Thread-191346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:09:02.627 [DEBUG] [Thread-191346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:09:02.627 [DEBUG] [Thread-191346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:09:02.628 [DEBUG] [Thread-191346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:09:02.646 [INFO] [Thread-191346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:09: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-11-24T14:09:02.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:09:02.707 [DEBUG] [Thread-191348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:09:03.519 [DEBUG] [Thread-191346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:09:03.519 [DEBUG] [Thread-191346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:09:03.567 [DEBUG] [Thread-191346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:09:03.567 [DEBUG] [Thread-191346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:09:03.575 [DEBUG] [Thread-191346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:09:03.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:09:03.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-11-24T14:09:03.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-11-24T14:09:03.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:09:03.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:09:03.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:09:03.609 [DEBUG] [Thread-191346] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:09:06.081 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:09:06.082 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:09:08.939 [DEBUG] [Thread-191349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:09:17.765 [DEBUG] [Thread-191350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:09:32.793 [DEBUG] [Thread-191351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:09:33.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:09:33.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:09:33.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-11-24T14:09:34.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 9, 28), 22.76, 21.41, 0.0, 16.29, 21.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:09:34.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:09:28
2025-11-24T14:09:34.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:09:34.715 [DEBUG] [Thread-191352] [transport.py] [_log()] starting thread (client mode): 0xd3191750
2025-11-24T14:09:34.715 [DEBUG] [Thread-191352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:09:34.717 [DEBUG] [Thread-191352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:09:34.717 [INFO] [Thread-191352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] client lang: <none>
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] server lang: <none>
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] kex follows: False
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:09:34.719 [DEBUG] [Thread-191352] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:09:34.720 [DEBUG] [Thread-191352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:09:34.720 [DEBUG] [Thread-191352] [transport.py] [_log()] Compression: none
2025-11-24T14:09:34.720 [DEBUG] [Thread-191352] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:09:34.731 [DEBUG] [Thread-191352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:09:34.732 [DEBUG] [Thread-191352] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:09:34.732 [DEBUG] [Thread-191352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:09:34.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:09:34.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:09:34.733 [DEBUG] [Thread-191352] [transport.py] [_log()] userauth is OK
2025-11-24T14:09:34.733 [DEBUG] [Thread-191352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:09:34.733 [DEBUG] [Thread-191352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:09:34.733 [DEBUG] [Thread-191352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:09:34.733 [DEBUG] [Thread-191352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:09:34.752 [INFO] [Thread-191352] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:09:34.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:09:35.378 [DEBUG] [Thread-191352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:09:35.379 [DEBUG] [Thread-191352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:09:35.379 [DEBUG] [Thread-191352] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:09:35.419 [DEBUG] [Thread-191352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:09:35.419 [DEBUG] [Thread-191352] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:09:35.428 [DEBUG] [Thread-191352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:09:35.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:09:35.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:09:35.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:09:35.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:09:35.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:09:35.442 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:09:35.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:09:35.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:09:35.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:09:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.505950 -999.00  +21.10   7.46     27   +1.50 1 1 1 1 1   888    0 19.25 -31.86 ----- 7.5 7.5 180.3 22.5 28.1 -26.3 27.2 -32.0 28.8 -24.7 29.6 -27.4
2025-11-24T14:09:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:09:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:09:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.505950
2025-11-24T14:09:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:09:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:09:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:09:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:09:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:09:35.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:09:28', tmtdew=22.76, humidity=21.41, cloud=0.0, wind=16.29, temperature=21.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:08:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:09:35.444 [DEBUG] [Thread-191352] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:09:35.516 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:09:35.527 [DEBUG] [Thread-191355] [transport.py] [_log()] starting thread (client mode): 0xd07f9750
2025-11-24T14:09:35.527 [DEBUG] [Thread-191355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:09:35.541 [DEBUG] [Thread-191355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:09:35.541 [INFO] [Thread-191355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] client lang: <none>
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] server lang: <none>
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] kex follows: False
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] Compression: none
2025-11-24T14:09:35.549 [DEBUG] [Thread-191355] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:09:35.605 [DEBUG] [Thread-191355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:09:35.605 [DEBUG] [Thread-191355] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:09:35.605 [DEBUG] [Thread-191355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:09:35.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:09:35.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:09:35.662 [DEBUG] [Thread-191355] [transport.py] [_log()] userauth is OK
2025-11-24T14:09:35.662 [DEBUG] [Thread-191355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:09:35.662 [DEBUG] [Thread-191355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:09:35.662 [DEBUG] [Thread-191355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:09:35.662 [DEBUG] [Thread-191355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:09:35.684 [INFO] [Thread-191355] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:09:35.684 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:09:35.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:09:36.540 [DEBUG] [Thread-191355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:09:36.541 [DEBUG] [Thread-191355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:09:36.589 [DEBUG] [Thread-191355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:09:36.589 [DEBUG] [Thread-191355] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:09:36.601 [DEBUG] [Thread-191355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:09:36.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:09:36.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-11-24T14:09:36.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-11-24T14:09:36.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:09:36.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:09:36.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:09:36.639 [DEBUG] [Thread-191355] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:09:47.829 [DEBUG] [Thread-191357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:10:02.873 [DEBUG] [Thread-191358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:10:06.232 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:10:06.234 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:10:06.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:10:06.651 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:10:06.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-11-24T14:10:07.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 10), 22.75, 21.96, 0.0, 27.0, 21.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:10:07.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:10:00
2025-11-24T14:10:07.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:10:07.787 [DEBUG] [Thread-191359] [transport.py] [_log()] starting thread (client mode): 0xd07f85b0
2025-11-24T14:10:07.788 [DEBUG] [Thread-191359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:10:07.806 [DEBUG] [Thread-191359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:10:07.806 [INFO] [Thread-191359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:10:07.809 [DEBUG] [Thread-191359] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] client lang: <none>
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] server lang: <none>
2025-11-24T14:10:07.810 [DEBUG] [Thread-191359] [transport.py] [_log()] kex follows: False
2025-11-24T14:10:07.811 [DEBUG] [Thread-191359] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:10:07.811 [DEBUG] [Thread-191359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:10:07.811 [DEBUG] [Thread-191359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:10:07.811 [DEBUG] [Thread-191359] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:10:07.811 [DEBUG] [Thread-191359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:10:07.812 [DEBUG] [Thread-191359] [transport.py] [_log()] Compression: none
2025-11-24T14:10:07.812 [DEBUG] [Thread-191359] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:10:07.836 [DEBUG] [Thread-191359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:10:07.837 [DEBUG] [Thread-191359] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:10:07.838 [DEBUG] [Thread-191359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:10:07.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:10:07.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:10:07.840 [DEBUG] [Thread-191359] [transport.py] [_log()] userauth is OK
2025-11-24T14:10:07.840 [DEBUG] [Thread-191359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:10:07.840 [DEBUG] [Thread-191359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:10:07.841 [DEBUG] [Thread-191359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:10:07.841 [DEBUG] [Thread-191359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:10:07.880 [INFO] [Thread-191359] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:10:07.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:10:09.206 [DEBUG] [Thread-191361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:10:12.868 [DEBUG] [Thread-191359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:10:12.868 [DEBUG] [Thread-191359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:10:12.877 [DEBUG] [Thread-191359] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:10:12.909 [DEBUG] [Thread-191359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:10:12.909 [DEBUG] [Thread-191359] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:10:12.911 [DEBUG] [Thread-191359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:10:12.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:10:12.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:10:12.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:10:12.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:10:12.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:10:12.978 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:10:12.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:10:12.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:10:12.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:10:12.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.506992 -999.00  +22.00  24.21     25   +1.30 1 1 1 1 1   888    0 19.87 -17.88 ----- 24.2 24.2 196.0 34.4 28.0 -29.1 27.2 -29.0 28.6 -28.7 29.5 -30.0
2025-11-24T14:10:12.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:10:12.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:10:12.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.506992
2025-11-24T14:10:12.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:10:12.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:10:12.981 [DEBUG] [Thread-191359] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:10:12.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:10:12.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:10:12.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:10:12.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:10:00', tmtdew=22.75, humidity=21.96, cloud=0.0, wind=27.0, temperature=21.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:10:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:10:13.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:10:13.066 [DEBUG] [Thread-191363] [transport.py] [_log()] starting thread (client mode): 0xd07a9f90
2025-11-24T14:10:13.066 [DEBUG] [Thread-191363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:10:13.081 [DEBUG] [Thread-191363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:10:13.081 [INFO] [Thread-191363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] client lang: <none>
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] server lang: <none>
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] kex follows: False
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] Compression: none
2025-11-24T14:10:13.089 [DEBUG] [Thread-191363] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:10:13.148 [DEBUG] [Thread-191363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:10:13.149 [DEBUG] [Thread-191363] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:10:13.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:10:13.149 [DEBUG] [Thread-191363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:10:13.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:10:13.211 [DEBUG] [Thread-191363] [transport.py] [_log()] userauth is OK
2025-11-24T14:10:13.211 [DEBUG] [Thread-191363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:10:13.211 [DEBUG] [Thread-191363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:10:13.211 [DEBUG] [Thread-191363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:10:13.212 [DEBUG] [Thread-191363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:10:13.228 [INFO] [Thread-191363] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:10:13.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:10:13.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:10:14.117 [DEBUG] [Thread-191363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:10:14.118 [DEBUG] [Thread-191363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:10:14.166 [DEBUG] [Thread-191363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:10:14.166 [DEBUG] [Thread-191363] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:10:14.175 [DEBUG] [Thread-191363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:10:14.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:10:14.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-11-24T14:10:14.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:10:14.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:10:14.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:10:14.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:10:14.223 [DEBUG] [Thread-191363] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:10:17.902 [DEBUG] [Thread-191365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:10:32.991 [DEBUG] [Thread-191366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:10:44.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:10:44.244 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:10:44.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-11-24T14:10:45.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 10, 33), 24.13, 19.44, 0.0, 30.91, 21.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:10:45.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:10:33
2025-11-24T14:10:45.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:10:45.338 [DEBUG] [Thread-191367] [transport.py] [_log()] starting thread (client mode): 0xd07f8280
2025-11-24T14:10:45.338 [DEBUG] [Thread-191367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:10:45.354 [DEBUG] [Thread-191367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:10:45.354 [INFO] [Thread-191367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] client lang: <none>
2025-11-24T14:10:45.358 [DEBUG] [Thread-191367] [transport.py] [_log()] server lang: <none>
2025-11-24T14:10:45.359 [DEBUG] [Thread-191367] [transport.py] [_log()] kex follows: False
2025-11-24T14:10:45.359 [DEBUG] [Thread-191367] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:10:45.359 [DEBUG] [Thread-191367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:10:45.359 [DEBUG] [Thread-191367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:10:45.359 [DEBUG] [Thread-191367] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:10:45.359 [DEBUG] [Thread-191367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:10:45.359 [DEBUG] [Thread-191367] [transport.py] [_log()] Compression: none
2025-11-24T14:10:45.359 [DEBUG] [Thread-191367] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:10:45.384 [DEBUG] [Thread-191367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:10:45.385 [DEBUG] [Thread-191367] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:10:45.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:10:45.387 [DEBUG] [Thread-191367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:10:45.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:10:45.388 [DEBUG] [Thread-191367] [transport.py] [_log()] userauth is OK
2025-11-24T14:10:45.388 [DEBUG] [Thread-191367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:10:45.388 [DEBUG] [Thread-191367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:10:45.388 [DEBUG] [Thread-191367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:10:45.389 [DEBUG] [Thread-191367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:10:45.404 [INFO] [Thread-191367] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:10:45.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:10:45.966 [DEBUG] [Thread-191367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:10:45.966 [DEBUG] [Thread-191367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:10:45.966 [DEBUG] [Thread-191367] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:10:46.007 [DEBUG] [Thread-191367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:10:46.007 [DEBUG] [Thread-191367] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:10:46.008 [DEBUG] [Thread-191367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:10:46.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:10:46.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:10:46.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:10:46.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:10:46.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:10:46.024 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:10:46.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:10:46.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:10:46.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:10:46.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.507339 -999.00  +22.10  27.14     24   +1.10 1 1 1 1 1   888    0 19.51 -11.17 ----- 27.1 27.1 193.6 29.0 28.1 -28.8 27.2 -27.4 28.6 -26.5 29.5 -27.7
2025-11-24T14:10:46.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:10:46.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:10:46.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.507339
2025-11-24T14:10:46.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:10:46.033 [DEBUG] [Thread-191367] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:10:46.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:10:46.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:10:46.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:10:46.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:10:46.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:10:33', tmtdew=24.13, humidity=19.44, cloud=0.0, wind=30.91, temperature=21.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:10:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:10:46.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:10:46.118 [DEBUG] [Thread-191370] [transport.py] [_log()] starting thread (client mode): 0xd07eb0d0
2025-11-24T14:10:46.119 [DEBUG] [Thread-191370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:10:46.133 [DEBUG] [Thread-191370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:10:46.133 [INFO] [Thread-191370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] client lang: <none>
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] server lang: <none>
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] kex follows: False
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] Compression: none
2025-11-24T14:10:46.141 [DEBUG] [Thread-191370] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:10:46.197 [DEBUG] [Thread-191370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:10:46.197 [DEBUG] [Thread-191370] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:10:46.197 [DEBUG] [Thread-191370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:10:46.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:10:46.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:10:46.257 [DEBUG] [Thread-191370] [transport.py] [_log()] userauth is OK
2025-11-24T14:10:46.257 [DEBUG] [Thread-191370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:10:46.257 [DEBUG] [Thread-191370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:10:46.257 [DEBUG] [Thread-191370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:10:46.257 [DEBUG] [Thread-191370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:10:46.270 [INFO] [Thread-191370] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:10:46.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:10:46.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:10:47.140 [DEBUG] [Thread-191370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:10:47.140 [DEBUG] [Thread-191370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:10:47.187 [DEBUG] [Thread-191370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:10:47.187 [DEBUG] [Thread-191370] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:10:47.196 [DEBUG] [Thread-191370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:10:47.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:10: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')
2025-11-24T14:10:47.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:10:47.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:10:47.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:10:47.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:10:47.230 [DEBUG] [Thread-191370] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:10:48.020 [DEBUG] [Thread-191372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:11:03.065 [DEBUG] [Thread-191373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:11:06.384 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:11:06.385 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:11:09.529 [DEBUG] [Thread-191374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:11:17.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:11:17.252 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:11:17.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-11-24T14:11:18.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 11, 6), 23.89, 19.72, 0.0, 26.22, 21.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:11:18.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:11:06
2025-11-24T14:11:18.093 [DEBUG] [Thread-191375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:11:18.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:11:18.416 [DEBUG] [Thread-191376] [transport.py] [_log()] starting thread (client mode): 0xd07ea6e0
2025-11-24T14:11:18.417 [DEBUG] [Thread-191376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:11:18.436 [DEBUG] [Thread-191376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:11:18.436 [INFO] [Thread-191376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:11:18.439 [DEBUG] [Thread-191376] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:11:18.439 [DEBUG] [Thread-191376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:11:18.439 [DEBUG] [Thread-191376] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:11:18.439 [DEBUG] [Thread-191376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:11:18.439 [DEBUG] [Thread-191376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:11:18.439 [DEBUG] [Thread-191376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:11:18.439 [DEBUG] [Thread-191376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] client lang: <none>
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] server lang: <none>
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] kex follows: False
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] Compression: none
2025-11-24T14:11:18.440 [DEBUG] [Thread-191376] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:11:18.454 [DEBUG] [Thread-191376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:11:18.455 [DEBUG] [Thread-191376] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:11:18.455 [DEBUG] [Thread-191376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:11:18.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:11:18.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:11:18.455 [DEBUG] [Thread-191376] [transport.py] [_log()] userauth is OK
2025-11-24T14:11:18.455 [DEBUG] [Thread-191376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:11:18.456 [DEBUG] [Thread-191376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:11:18.456 [DEBUG] [Thread-191376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:11:18.456 [DEBUG] [Thread-191376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:11:18.465 [INFO] [Thread-191376] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:11:18.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:11:19.174 [DEBUG] [Thread-191376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:11:19.174 [DEBUG] [Thread-191376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:11:19.174 [DEBUG] [Thread-191376] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:11:19.215 [DEBUG] [Thread-191376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:11:19.215 [DEBUG] [Thread-191376] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:11:19.217 [DEBUG] [Thread-191376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:11:19.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:11:19.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:11:19.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:11:19.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:11:19.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:11:19.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:11:19.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:11:19.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:11:19.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:11:19.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.507339 -999.00  +22.10  27.14     24   +1.10 1 1 1 1 1   888    0 19.51 -11.17 ----- 27.1 27.1 193.6 29.0 28.1 -28.8 27.2 -27.4 28.6 -26.5 29.5 -27.7
2025-11-24T14:11:19.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:11:19.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:11:19.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.507339
2025-11-24T14:11:19.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:11:19.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:11:19.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:11:19.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:11:19.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:11:19.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:11:06', tmtdew=23.89, humidity=19.72, cloud=0.0, wind=26.22, temperature=21.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:10:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:11:19.234 [DEBUG] [Thread-191376] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:11:19.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:11:19.321 [DEBUG] [Thread-191379] [transport.py] [_log()] starting thread (client mode): 0xd07fa0e0
2025-11-24T14:11:19.321 [DEBUG] [Thread-191379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:11:19.336 [DEBUG] [Thread-191379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:11:19.336 [INFO] [Thread-191379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:11:19.343 [DEBUG] [Thread-191379] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:11:19.343 [DEBUG] [Thread-191379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:11:19.343 [DEBUG] [Thread-191379] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:11:19.343 [DEBUG] [Thread-191379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:11:19.343 [DEBUG] [Thread-191379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] client lang: <none>
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] server lang: <none>
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] kex follows: False
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] Compression: none
2025-11-24T14:11:19.344 [DEBUG] [Thread-191379] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:11:19.401 [DEBUG] [Thread-191379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:11:19.401 [DEBUG] [Thread-191379] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:11:19.401 [DEBUG] [Thread-191379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:11:19.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:11:19.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:11:19.458 [DEBUG] [Thread-191379] [transport.py] [_log()] userauth is OK
2025-11-24T14:11:19.458 [DEBUG] [Thread-191379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:11:19.458 [DEBUG] [Thread-191379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:11:19.458 [DEBUG] [Thread-191379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:11:19.458 [DEBUG] [Thread-191379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:11:19.472 [INFO] [Thread-191379] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:11:19.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:11:19.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:11:20.296 [DEBUG] [Thread-191379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:11:20.296 [DEBUG] [Thread-191379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:11:20.344 [DEBUG] [Thread-191379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:11:20.344 [DEBUG] [Thread-191379] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:11:20.353 [DEBUG] [Thread-191379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:11:20.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:11:20.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:11:20.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-11-24T14:11:20.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:11:20.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:11:20.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:11:20.385 [DEBUG] [Thread-191379] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:11:33.123 [DEBUG] [Thread-191381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:11:48.173 [DEBUG] [Thread-191382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:11:50.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:11:50.407 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:11:50.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-11-24T14:11:51.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 11, 39), 23.37, 20.85, 0.0, 23.4, 21.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:11:51.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:11:39
2025-11-24T14:11:51.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:11:51.520 [DEBUG] [Thread-191383] [transport.py] [_log()] starting thread (client mode): 0xd07aa590
2025-11-24T14:11:51.520 [DEBUG] [Thread-191383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:11:51.540 [DEBUG] [Thread-191383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:11:51.540 [INFO] [Thread-191383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:11:51.544 [DEBUG] [Thread-191383] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:11:51.544 [DEBUG] [Thread-191383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:11:51.544 [DEBUG] [Thread-191383] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:11:51.544 [DEBUG] [Thread-191383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:11:51.544 [DEBUG] [Thread-191383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:11:51.544 [DEBUG] [Thread-191383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:11:51.544 [DEBUG] [Thread-191383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:11:51.545 [DEBUG] [Thread-191383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:11:51.545 [DEBUG] [Thread-191383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:11:51.545 [DEBUG] [Thread-191383] [transport.py] [_log()] client lang: <none>
2025-11-24T14:11:51.545 [DEBUG] [Thread-191383] [transport.py] [_log()] server lang: <none>
2025-11-24T14:11:51.545 [DEBUG] [Thread-191383] [transport.py] [_log()] kex follows: False
2025-11-24T14:11:51.545 [DEBUG] [Thread-191383] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:11:51.545 [DEBUG] [Thread-191383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:11:51.545 [DEBUG] [Thread-191383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:11:51.545 [DEBUG] [Thread-191383] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:11:51.546 [DEBUG] [Thread-191383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:11:51.546 [DEBUG] [Thread-191383] [transport.py] [_log()] Compression: none
2025-11-24T14:11:51.546 [DEBUG] [Thread-191383] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:11:51.562 [DEBUG] [Thread-191383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:11:51.563 [DEBUG] [Thread-191383] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:11:51.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:11:51.563 [DEBUG] [Thread-191383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:11:51.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:11:51.564 [DEBUG] [Thread-191383] [transport.py] [_log()] userauth is OK
2025-11-24T14:11:51.564 [DEBUG] [Thread-191383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:11:51.564 [DEBUG] [Thread-191383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:11:51.564 [DEBUG] [Thread-191383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:11:51.564 [DEBUG] [Thread-191383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:11:51.599 [INFO] [Thread-191383] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:11:51.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:11:52.203 [DEBUG] [Thread-191383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:11:52.204 [DEBUG] [Thread-191383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:11:52.204 [DEBUG] [Thread-191383] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:11:52.244 [DEBUG] [Thread-191383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:11:52.245 [DEBUG] [Thread-191383] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:11:52.247 [DEBUG] [Thread-191383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:11:52.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:11:52.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:11:52.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:11:52.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:11:52.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:11:52.275 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:11:52.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:11:52.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:11:52.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:11:52.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.507686 -999.00  +22.10  11.51     25   +1.10 1 1 1 1 1   888    0 19.71 -5.43 ----- 11.5 11.5 200.3 30.5 28.0 -27.2 27.1 -27.7 28.6 -25.6 29.4 -26.7
2025-11-24T14:11:52.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:11:52.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:11:52.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.507686
2025-11-24T14:11:52.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:11:52.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:11:52.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:11:52.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:11:52.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:11:52.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:11:39', tmtdew=23.37, humidity=20.85, cloud=0.0, wind=23.4, temperature=21.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:11:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:11:52.278 [DEBUG] [Thread-191383] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:11:52.359 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:11:52.371 [DEBUG] [Thread-191386] [transport.py] [_log()] starting thread (client mode): 0xd31b3460
2025-11-24T14:11:52.371 [DEBUG] [Thread-191386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:11:52.386 [DEBUG] [Thread-191386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:11:52.387 [INFO] [Thread-191386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:11:52.394 [DEBUG] [Thread-191386] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:11:52.395 [DEBUG] [Thread-191386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:11:52.395 [DEBUG] [Thread-191386] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:11:52.395 [DEBUG] [Thread-191386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:11:52.395 [DEBUG] [Thread-191386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:11:52.395 [DEBUG] [Thread-191386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:11:52.395 [DEBUG] [Thread-191386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:11:52.395 [DEBUG] [Thread-191386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:11:52.395 [DEBUG] [Thread-191386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:11:52.396 [DEBUG] [Thread-191386] [transport.py] [_log()] client lang: <none>
2025-11-24T14:11:52.396 [DEBUG] [Thread-191386] [transport.py] [_log()] server lang: <none>
2025-11-24T14:11:52.396 [DEBUG] [Thread-191386] [transport.py] [_log()] kex follows: False
2025-11-24T14:11:52.396 [DEBUG] [Thread-191386] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:11:52.396 [DEBUG] [Thread-191386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:11:52.396 [DEBUG] [Thread-191386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:11:52.397 [DEBUG] [Thread-191386] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:11:52.397 [DEBUG] [Thread-191386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:11:52.397 [DEBUG] [Thread-191386] [transport.py] [_log()] Compression: none
2025-11-24T14:11:52.398 [DEBUG] [Thread-191386] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:11:52.460 [DEBUG] [Thread-191386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:11:52.461 [DEBUG] [Thread-191386] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:11:52.463 [DEBUG] [Thread-191386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:11:52.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:11:52.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:11:52.523 [DEBUG] [Thread-191386] [transport.py] [_log()] userauth is OK
2025-11-24T14:11:52.523 [DEBUG] [Thread-191386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:11:52.523 [DEBUG] [Thread-191386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:11:52.523 [DEBUG] [Thread-191386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:11:52.523 [DEBUG] [Thread-191386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:11:52.541 [INFO] [Thread-191386] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:11:52.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:11:52.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:11:53.407 [DEBUG] [Thread-191386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:11:53.407 [DEBUG] [Thread-191386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:11:53.457 [DEBUG] [Thread-191386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:11:53.457 [DEBUG] [Thread-191386] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:11:53.465 [DEBUG] [Thread-191386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:11:53.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:11:53.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:11:53.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-11-24T14:11:53.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:11:53.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:11:53.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:11:53.497 [DEBUG] [Thread-191386] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:12:03.205 [DEBUG] [Thread-191388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:12:06.532 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:12:06.533 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:12:09.687 [DEBUG] [Thread-191389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:12:18.257 [DEBUG] [Thread-191390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:12:23.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:12:23.520 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:12:23.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-11-24T14:12:24.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 12, 11), 23.51, 20.7, 0.0, 27.72, 21.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:12:24.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:12:11
2025-11-24T14:12:24.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:12:24.644 [DEBUG] [Thread-191391] [transport.py] [_log()] starting thread (client mode): 0xd07f9d80
2025-11-24T14:12:24.644 [DEBUG] [Thread-191391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:12:24.667 [DEBUG] [Thread-191391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:12:24.667 [INFO] [Thread-191391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:12:24.671 [DEBUG] [Thread-191391] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:12:24.671 [DEBUG] [Thread-191391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:12:24.671 [DEBUG] [Thread-191391] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:12:24.671 [DEBUG] [Thread-191391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:12:24.671 [DEBUG] [Thread-191391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:12:24.671 [DEBUG] [Thread-191391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:12:24.671 [DEBUG] [Thread-191391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:12:24.671 [DEBUG] [Thread-191391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:12:24.671 [DEBUG] [Thread-191391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:12:24.672 [DEBUG] [Thread-191391] [transport.py] [_log()] client lang: <none>
2025-11-24T14:12:24.672 [DEBUG] [Thread-191391] [transport.py] [_log()] server lang: <none>
2025-11-24T14:12:24.672 [DEBUG] [Thread-191391] [transport.py] [_log()] kex follows: False
2025-11-24T14:12:24.672 [DEBUG] [Thread-191391] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:12:24.672 [DEBUG] [Thread-191391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:12:24.672 [DEBUG] [Thread-191391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:12:24.673 [DEBUG] [Thread-191391] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:12:24.673 [DEBUG] [Thread-191391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:12:24.673 [DEBUG] [Thread-191391] [transport.py] [_log()] Compression: none
2025-11-24T14:12:24.673 [DEBUG] [Thread-191391] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:12:24.684 [DEBUG] [Thread-191391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:12:24.685 [DEBUG] [Thread-191391] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:12:24.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:12:24.686 [DEBUG] [Thread-191391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:12:24.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:12:24.687 [DEBUG] [Thread-191391] [transport.py] [_log()] userauth is OK
2025-11-24T14:12:24.687 [DEBUG] [Thread-191391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:12:24.687 [DEBUG] [Thread-191391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:12:24.687 [DEBUG] [Thread-191391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:12:24.688 [DEBUG] [Thread-191391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:12:24.719 [INFO] [Thread-191391] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:12:24.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:12:25.494 [DEBUG] [Thread-191391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:12:25.494 [DEBUG] [Thread-191391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:12:25.494 [DEBUG] [Thread-191391] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:12:25.534 [DEBUG] [Thread-191391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:12:25.535 [DEBUG] [Thread-191391] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:12:25.538 [DEBUG] [Thread-191391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:12:25.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:12:25.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:12:25.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:12:25.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:12:25.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:12:25.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:12:25.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:12:25.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:12:25.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:12:25.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.508034 -999.00  +22.50  20.41     24   +1.30 1 1 1 1 1   888    0 19.76 0.15 ----- 20.4 20.4 188.6 24.3 28.2 -26.9 27.3 -28.6 28.8 -25.5 29.6 -25.9
2025-11-24T14:12:25.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:12:25.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:12:25.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.508034
2025-11-24T14:12:25.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:12:25.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:12:25.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:12:25.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:12:25.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:12:25.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:12:11', tmtdew=23.51, humidity=20.7, cloud=0.0, wind=27.72, temperature=21.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:11:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:12:25.567 [DEBUG] [Thread-191391] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:12:25.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:12:25.661 [DEBUG] [Thread-191394] [transport.py] [_log()] starting thread (client mode): 0xd07ebe20
2025-11-24T14:12:25.662 [DEBUG] [Thread-191394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:12:25.676 [DEBUG] [Thread-191394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:12:25.676 [INFO] [Thread-191394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:12:25.683 [DEBUG] [Thread-191394] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] client lang: <none>
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] server lang: <none>
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] kex follows: False
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] Compression: none
2025-11-24T14:12:25.684 [DEBUG] [Thread-191394] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:12:25.741 [DEBUG] [Thread-191394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:12:25.742 [DEBUG] [Thread-191394] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:12:25.742 [DEBUG] [Thread-191394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:12:25.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:12:25.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:12:25.799 [DEBUG] [Thread-191394] [transport.py] [_log()] userauth is OK
2025-11-24T14:12:25.799 [DEBUG] [Thread-191394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:12:25.799 [DEBUG] [Thread-191394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:12:25.799 [DEBUG] [Thread-191394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:12:25.799 [DEBUG] [Thread-191394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:12:25.825 [INFO] [Thread-191394] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:12:25.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:12:25.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:12:26.660 [DEBUG] [Thread-191394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:12:26.660 [DEBUG] [Thread-191394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:12:26.708 [DEBUG] [Thread-191394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:12:26.708 [DEBUG] [Thread-191394] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:12:26.716 [DEBUG] [Thread-191394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:12:26.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:12:26.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-11-24T14:12:26.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-11-24T14:12:26.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:12:26.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:12:26.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:12:26.748 [DEBUG] [Thread-191394] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:12:33.289 [DEBUG] [Thread-191396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:12:48.337 [DEBUG] [Thread-191397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:12:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:12:56.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:12:56.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-11-24T14:12:57.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 12, 44), 23.5, 20.5, 0.0, 25.94, 21.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:12:57.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:12:44
2025-11-24T14:12:57.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:12:57.888 [DEBUG] [Thread-191398] [transport.py] [_log()] starting thread (client mode): 0xd07e8130
2025-11-24T14:12:57.888 [DEBUG] [Thread-191398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:12:57.907 [DEBUG] [Thread-191398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:12:57.907 [INFO] [Thread-191398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:12:57.910 [DEBUG] [Thread-191398] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:12:57.910 [DEBUG] [Thread-191398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:12:57.910 [DEBUG] [Thread-191398] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:12:57.910 [DEBUG] [Thread-191398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:12:57.910 [DEBUG] [Thread-191398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:12:57.910 [DEBUG] [Thread-191398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:12:57.910 [DEBUG] [Thread-191398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] client lang: <none>
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] server lang: <none>
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] kex follows: False
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] Compression: none
2025-11-24T14:12:57.911 [DEBUG] [Thread-191398] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:12:57.930 [DEBUG] [Thread-191398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:12:57.931 [DEBUG] [Thread-191398] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:12:57.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:12:57.932 [DEBUG] [Thread-191398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:12:57.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:12:57.934 [DEBUG] [Thread-191398] [transport.py] [_log()] userauth is OK
2025-11-24T14:12:57.934 [DEBUG] [Thread-191398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:12:57.934 [DEBUG] [Thread-191398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:12:57.934 [DEBUG] [Thread-191398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:12:57.934 [DEBUG] [Thread-191398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:12:57.968 [INFO] [Thread-191398] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:12:57.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:12:58.545 [DEBUG] [Thread-191398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:12:58.545 [DEBUG] [Thread-191398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:12:58.545 [DEBUG] [Thread-191398] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:12:58.586 [DEBUG] [Thread-191398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:12:58.586 [DEBUG] [Thread-191398] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:12:58.588 [DEBUG] [Thread-191398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:12:58.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:12:58.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:12:58.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:12:58.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:12:58.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:12:58.606 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:12:58.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:12:58.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:12:58.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:12:58.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.508381 -999.00  +22.80  17.31     24   +1.20 1 1 1 1 1   888    0 20.29 6.85 ----- 17.3 17.3 213.3 32.0 28.2 -28.1 27.5 -27.0 28.7 -26.9 29.7 -27.5
2025-11-24T14:12:58.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:12:58.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:12:58.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.508381
2025-11-24T14:12:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:12:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:12:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:12:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:12:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:12:58.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:12:44', tmtdew=23.5, humidity=20.5, cloud=0.0, wind=25.94, temperature=21.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:12:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:12:58.607 [DEBUG] [Thread-191398] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:12:58.680 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:12:58.691 [DEBUG] [Thread-191401] [transport.py] [_log()] starting thread (client mode): 0xd07aa8f0
2025-11-24T14:12:58.691 [DEBUG] [Thread-191401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:12:58.705 [DEBUG] [Thread-191401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:12:58.706 [INFO] [Thread-191401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] client lang: <none>
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] server lang: <none>
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] kex follows: False
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] Compression: none
2025-11-24T14:12:58.713 [DEBUG] [Thread-191401] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:12:58.768 [DEBUG] [Thread-191401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:12:58.768 [DEBUG] [Thread-191401] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:12:58.769 [DEBUG] [Thread-191401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:12:58.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:12:58.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:12:58.826 [DEBUG] [Thread-191401] [transport.py] [_log()] userauth is OK
2025-11-24T14:12:58.826 [DEBUG] [Thread-191401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:12:58.835 [DEBUG] [Thread-191401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:12:58.835 [DEBUG] [Thread-191401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:12:58.835 [DEBUG] [Thread-191401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:12:58.849 [INFO] [Thread-191401] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:12:58.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:12:58.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:12:59.752 [DEBUG] [Thread-191401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:12:59.752 [DEBUG] [Thread-191401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:12:59.800 [DEBUG] [Thread-191401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:12:59.800 [DEBUG] [Thread-191401] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:12:59.809 [DEBUG] [Thread-191401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:12:59.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:12:59.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-11-24T14:12:59.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-11-24T14:12:59.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:12:59.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:12:59.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:12:59.843 [DEBUG] [Thread-191401] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:13:03.370 [DEBUG] [Thread-191403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:13:06.674 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:13:06.675 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:13:09.890 [DEBUG] [Thread-191404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:13:18.414 [DEBUG] [Thread-191405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:13:29.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:13:29.866 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:13:29.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-11-24T14:13:30.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 13, 16), 23.61, 20.35, 0.0, 23.03, 21.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:13:30.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:13:16
2025-11-24T14:13:30.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:13:30.860 [DEBUG] [Thread-191406] [transport.py] [_log()] starting thread (client mode): 0xd31509d0
2025-11-24T14:13:30.861 [DEBUG] [Thread-191406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:13:30.879 [DEBUG] [Thread-191406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:13:30.880 [INFO] [Thread-191406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] client lang: <none>
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] server lang: <none>
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] kex follows: False
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] Compression: none
2025-11-24T14:13:30.883 [DEBUG] [Thread-191406] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:13:30.901 [DEBUG] [Thread-191406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:13:30.901 [DEBUG] [Thread-191406] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:13:30.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:13:30.902 [DEBUG] [Thread-191406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:13:30.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:13:30.905 [DEBUG] [Thread-191406] [transport.py] [_log()] userauth is OK
2025-11-24T14:13:30.905 [DEBUG] [Thread-191406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:13:30.906 [DEBUG] [Thread-191406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:13:30.906 [DEBUG] [Thread-191406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:13:30.906 [DEBUG] [Thread-191406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:13:30.922 [INFO] [Thread-191406] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:13:30.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:13:31.721 [DEBUG] [Thread-191406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:13:31.721 [DEBUG] [Thread-191406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:13:31.729 [DEBUG] [Thread-191406] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:13:31.762 [DEBUG] [Thread-191406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:13:31.762 [DEBUG] [Thread-191406] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:13:31.764 [DEBUG] [Thread-191406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:13:31.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:13:31.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:13:31.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:13:31.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:13:31.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:13:31.781 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:13:31.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:13:31.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:13:31.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:13:31.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.508728 -999.00  +22.30  22.98     24   +1.10 1 1 1 1 1   888    0 20.53 12.10 ----- 23.0 23.0 196.4 32.1 28.1 -28.2 27.3 -28.6 28.6 -26.1 29.4 -28.0
2025-11-24T14:13:31.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:13:31.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:13:31.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.508728
2025-11-24T14:13:31.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:13:31.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:13:31.782 [DEBUG] [Thread-191406] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:13:31.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:13:31.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:13:31.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:13:31.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:13:16', tmtdew=23.61, humidity=20.35, cloud=0.0, wind=23.03, temperature=21.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:12:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:13:31.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:13:31.868 [DEBUG] [Thread-191409] [transport.py] [_log()] starting thread (client mode): 0xd07f9930
2025-11-24T14:13:31.868 [DEBUG] [Thread-191409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:13:31.882 [DEBUG] [Thread-191409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:13:31.882 [INFO] [Thread-191409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] client lang: <none>
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] server lang: <none>
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] kex follows: False
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:13:31.890 [DEBUG] [Thread-191409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:13:31.891 [DEBUG] [Thread-191409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:13:31.891 [DEBUG] [Thread-191409] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:13:31.891 [DEBUG] [Thread-191409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:13:31.891 [DEBUG] [Thread-191409] [transport.py] [_log()] Compression: none
2025-11-24T14:13:31.891 [DEBUG] [Thread-191409] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:13:31.945 [DEBUG] [Thread-191409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:13:31.945 [DEBUG] [Thread-191409] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:13:31.945 [DEBUG] [Thread-191409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:13:31.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:13:31.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:13:32.002 [DEBUG] [Thread-191409] [transport.py] [_log()] userauth is OK
2025-11-24T14:13:32.002 [DEBUG] [Thread-191409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:13:32.002 [DEBUG] [Thread-191409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:13:32.002 [DEBUG] [Thread-191409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:13:32.002 [DEBUG] [Thread-191409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:13:32.016 [INFO] [Thread-191409] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:13:32.016 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:13:32.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:13:32.845 [DEBUG] [Thread-191409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:13:32.845 [DEBUG] [Thread-191409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:13:32.892 [DEBUG] [Thread-191409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:13:32.893 [DEBUG] [Thread-191409] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:13:32.902 [DEBUG] [Thread-191409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:13:32.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:13:32.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-11-24T14:13:32.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-11-24T14:13:32.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:13:32.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:13:32.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:13:32.948 [DEBUG] [Thread-191409] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:13:33.449 [DEBUG] [Thread-191411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:13:48.497 [DEBUG] [Thread-191412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:14:02.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:14:02.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:14:02.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-11-24T14:14:03.525 [DEBUG] [Thread-191413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:14:03.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 13, 48), 23.9, 20.1, 0.0, 23.77, 21.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:14:03.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:13:48
2025-11-24T14:14:03.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:14:04.049 [DEBUG] [Thread-191414] [transport.py] [_log()] starting thread (client mode): 0xc9babbe0
2025-11-24T14:14:04.050 [DEBUG] [Thread-191414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:14:04.070 [DEBUG] [Thread-191414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:14:04.070 [INFO] [Thread-191414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] client lang: <none>
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] server lang: <none>
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] kex follows: False
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:14:04.073 [DEBUG] [Thread-191414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:14:04.074 [DEBUG] [Thread-191414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:14:04.074 [DEBUG] [Thread-191414] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:14:04.074 [DEBUG] [Thread-191414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:14:04.074 [DEBUG] [Thread-191414] [transport.py] [_log()] Compression: none
2025-11-24T14:14:04.074 [DEBUG] [Thread-191414] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:14:04.092 [DEBUG] [Thread-191414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:14:04.093 [DEBUG] [Thread-191414] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:14:04.094 [DEBUG] [Thread-191414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:14:04.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:14:04.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:14:04.096 [DEBUG] [Thread-191414] [transport.py] [_log()] userauth is OK
2025-11-24T14:14:04.096 [DEBUG] [Thread-191414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:14:04.096 [DEBUG] [Thread-191414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:14:04.096 [DEBUG] [Thread-191414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:14:04.096 [DEBUG] [Thread-191414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:14:04.121 [INFO] [Thread-191414] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:14:04.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:14:04.653 [DEBUG] [Thread-191414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:14:04.653 [DEBUG] [Thread-191414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:14:04.653 [DEBUG] [Thread-191414] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:14:04.694 [DEBUG] [Thread-191414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:14:04.694 [DEBUG] [Thread-191414] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:14:04.696 [DEBUG] [Thread-191414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:14:04.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:14:04.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:14:04.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:14:04.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:14:04.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:14:04.722 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:14:04.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:14:04.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:14:04.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:14:04.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.509075 -999.00  +22.10  16.51     25   +1.30 1 1 1 1 1   888    0 21.09 17.11 ----- 16.5 16.5 195.2 25.1 28.1 -27.7 27.0 -27.3 28.6 -25.4 29.4 -27.3
2025-11-24T14:14:04.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:14:04.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:14:04.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.509075
2025-11-24T14:14:04.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:14:04.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:14:04.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:14:04.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:14:04.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:14:04.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:13:48', tmtdew=23.9, humidity=20.1, cloud=0.0, wind=23.77, temperature=21.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:13:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:14:04.723 [DEBUG] [Thread-191414] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:14:04.795 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:14:06.826 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:14:06.828 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:14:10.153 [DEBUG] [Thread-191417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:14:18.567 [DEBUG] [Thread-191418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:14:33.603 [DEBUG] [Thread-191419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:14:48.648 [DEBUG] [Thread-191420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:15:03.684 [DEBUG] [Thread-191421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:15:06.968 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:15:06.970 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:15:10.377 [DEBUG] [Thread-191422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:15:18.715 [DEBUG] [Thread-191423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:15:33.748 [DEBUG] [Thread-191424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:15:48.788 [DEBUG] [Thread-191425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:16:03.817 [DEBUG] [Thread-191426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:16:07.112 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:16:07.114 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:16:10.455 [DEBUG] [Thread-191427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:16:18.862 [DEBUG] [Thread-191428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:16:20.169 [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-11-24T14:16:33.891 [DEBUG] [Thread-191429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:16:48.925 [DEBUG] [Thread-191430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:16:50.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:16:50.204 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:16:50.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-11-24T14:16:50.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 16, 31), 23.45, 20.88, 0.0, 22.99, 21.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:16:50.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:16:31
2025-11-24T14:16:51.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:16:51.305 [DEBUG] [Thread-191431] [transport.py] [_log()] starting thread (client mode): 0xd31b2380
2025-11-24T14:16:51.306 [DEBUG] [Thread-191431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:16:51.317 [DEBUG] [Thread-191431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:16:51.318 [INFO] [Thread-191431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:16:51.324 [DEBUG] [Thread-191431] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:16:51.324 [DEBUG] [Thread-191431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:16:51.324 [DEBUG] [Thread-191431] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:16:51.324 [DEBUG] [Thread-191431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:16:51.324 [DEBUG] [Thread-191431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:16:51.325 [DEBUG] [Thread-191431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:16:51.325 [DEBUG] [Thread-191431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:16:51.325 [DEBUG] [Thread-191431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:16:51.325 [DEBUG] [Thread-191431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:16:51.325 [DEBUG] [Thread-191431] [transport.py] [_log()] client lang: <none>
2025-11-24T14:16:51.325 [DEBUG] [Thread-191431] [transport.py] [_log()] server lang: <none>
2025-11-24T14:16:51.325 [DEBUG] [Thread-191431] [transport.py] [_log()] kex follows: False
2025-11-24T14:16:51.325 [DEBUG] [Thread-191431] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:16:51.326 [DEBUG] [Thread-191431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:16:51.326 [DEBUG] [Thread-191431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:16:51.326 [DEBUG] [Thread-191431] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:16:51.326 [DEBUG] [Thread-191431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:16:51.326 [DEBUG] [Thread-191431] [transport.py] [_log()] Compression: none
2025-11-24T14:16:51.327 [DEBUG] [Thread-191431] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:16:51.373 [DEBUG] [Thread-191431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:16:51.378 [DEBUG] [Thread-191431] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:16:51.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:16:51.382 [DEBUG] [Thread-191431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:16:51.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:16:51.386 [DEBUG] [Thread-191431] [transport.py] [_log()] userauth is OK
2025-11-24T14:16:51.387 [DEBUG] [Thread-191431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:16:51.387 [DEBUG] [Thread-191431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:16:51.387 [DEBUG] [Thread-191431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:16:51.387 [DEBUG] [Thread-191431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:16:51.414 [INFO] [Thread-191431] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:16:51.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:16:52.018 [DEBUG] [Thread-191431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:16:52.018 [DEBUG] [Thread-191431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:16:52.029 [DEBUG] [Thread-191431] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:16:52.059 [DEBUG] [Thread-191431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:16:52.059 [DEBUG] [Thread-191431] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:16:52.063 [DEBUG] [Thread-191431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:16:52.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:16:52.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:16:52.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:16:52.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:16:52.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:16:52.086 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:16:52.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:16:52.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:16:52.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:16:52.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.511506 -999.00  +22.00  20.12     25   +1.20 1 1 1 1 1   888    0 21.80 41.59 ----- 20.1 20.1 191.0 25.9 28.1 -27.4 27.2 -27.8 28.5 -25.8 29.4 -28.0
2025-11-24T14:16:52.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:16:52.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:16:52.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.511506
2025-11-24T14:16:52.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:16:52.105 [DEBUG] [Thread-191431] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:16:52.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:16:52.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:16:52.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:16:52.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:16:52.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:16:31', tmtdew=23.45, humidity=20.88, cloud=0.0, wind=22.99, temperature=21.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:16:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:16:52.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:16:52.192 [DEBUG] [Thread-191434] [transport.py] [_log()] starting thread (client mode): 0xc9babc10
2025-11-24T14:16:52.193 [DEBUG] [Thread-191434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:16:52.209 [DEBUG] [Thread-191434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:16:52.209 [INFO] [Thread-191434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] client lang: <none>
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] server lang: <none>
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] kex follows: False
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:16:52.216 [DEBUG] [Thread-191434] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:16:52.217 [DEBUG] [Thread-191434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:16:52.217 [DEBUG] [Thread-191434] [transport.py] [_log()] Compression: none
2025-11-24T14:16:52.217 [DEBUG] [Thread-191434] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:16:52.274 [DEBUG] [Thread-191434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:16:52.274 [DEBUG] [Thread-191434] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:16:52.274 [DEBUG] [Thread-191434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:16:52.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:16:52.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:16:52.330 [DEBUG] [Thread-191434] [transport.py] [_log()] userauth is OK
2025-11-24T14:16:52.330 [DEBUG] [Thread-191434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:16:52.330 [DEBUG] [Thread-191434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:16:52.330 [DEBUG] [Thread-191434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:16:52.330 [DEBUG] [Thread-191434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:16:52.343 [INFO] [Thread-191434] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:16:52.344 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:16:52.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:16:53.244 [DEBUG] [Thread-191434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:16:53.244 [DEBUG] [Thread-191434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:16:53.283 [DEBUG] [Thread-191434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:16:53.283 [DEBUG] [Thread-191434] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:16:53.292 [DEBUG] [Thread-191434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:16:53.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:16: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-11-24T14:16: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-11-24T14:16:53.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:16:53.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:16:53.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:16:53.332 [DEBUG] [Thread-191434] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:17:03.961 [DEBUG] [Thread-191436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:17:07.255 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:17:07.257 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:17:10.704 [DEBUG] [Thread-191437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:17:19.051 [DEBUG] [Thread-191438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:17:23.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:17:23.331 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:17:23.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-11-24T14:17:24.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 17, 4), 23.92, 20.32, 0.0, 25.36, 22.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:17:24.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:17:04
2025-11-24T14:17:24.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:17:24.456 [DEBUG] [Thread-191439] [transport.py] [_log()] starting thread (client mode): 0xd0701e40
2025-11-24T14:17:24.456 [DEBUG] [Thread-191439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:17:24.474 [DEBUG] [Thread-191439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:17:24.474 [INFO] [Thread-191439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:17:24.475 [DEBUG] [Thread-191439] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:17:24.475 [DEBUG] [Thread-191439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:17:24.475 [DEBUG] [Thread-191439] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:17:24.475 [DEBUG] [Thread-191439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] client lang: <none>
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] server lang: <none>
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] kex follows: False
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] Compression: none
2025-11-24T14:17:24.476 [DEBUG] [Thread-191439] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:17:24.485 [DEBUG] [Thread-191439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:17:24.486 [DEBUG] [Thread-191439] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:17:24.486 [DEBUG] [Thread-191439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:17:24.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:17:24.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:17:24.488 [DEBUG] [Thread-191439] [transport.py] [_log()] userauth is OK
2025-11-24T14:17:24.488 [DEBUG] [Thread-191439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:17:24.488 [DEBUG] [Thread-191439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:17:24.488 [DEBUG] [Thread-191439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:17:24.488 [DEBUG] [Thread-191439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:17:24.513 [INFO] [Thread-191439] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:17:24.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:17:25.115 [DEBUG] [Thread-191439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:17:25.115 [DEBUG] [Thread-191439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:17:25.115 [DEBUG] [Thread-191439] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:17:25.156 [DEBUG] [Thread-191439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:17:25.156 [DEBUG] [Thread-191439] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:17:25.157 [DEBUG] [Thread-191439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:17:25.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:17:25.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:17:25.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:17:25.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:17:25.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:17:25.181 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:17:25.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:17:25.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:17:25.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:17:25.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.511853 -999.00  +22.00  16.13     25   +1.20 1 1 1 1 1   888    0 21.25 49.08 ----- 16.1 16.1 201.4 35.5 27.9 -27.2 27.2 -30.6 28.4 -25.7 29.3 -28.4
2025-11-24T14:17:25.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:17:25.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:17:25.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.511853
2025-11-24T14:17:25.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:17:25.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:17:25.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:17:25.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:17:25.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:17:25.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:17:04', tmtdew=23.92, humidity=20.32, cloud=0.0, wind=25.36, temperature=22.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:17:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:17:25.183 [DEBUG] [Thread-191439] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:17:25.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:17:25.270 [DEBUG] [Thread-191442] [transport.py] [_log()] starting thread (client mode): 0xc9b82d70
2025-11-24T14:17:25.270 [DEBUG] [Thread-191442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:17:25.285 [DEBUG] [Thread-191442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:17:25.285 [INFO] [Thread-191442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] client lang: <none>
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] server lang: <none>
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] kex follows: False
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] Compression: none
2025-11-24T14:17:25.293 [DEBUG] [Thread-191442] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:17:25.348 [DEBUG] [Thread-191442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:17:25.348 [DEBUG] [Thread-191442] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:17:25.348 [DEBUG] [Thread-191442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:17:25.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:17:25.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:17:25.406 [DEBUG] [Thread-191442] [transport.py] [_log()] userauth is OK
2025-11-24T14:17:25.406 [DEBUG] [Thread-191442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:17:25.406 [DEBUG] [Thread-191442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:17:25.406 [DEBUG] [Thread-191442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:17:25.406 [DEBUG] [Thread-191442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:17:25.421 [INFO] [Thread-191442] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:17:25.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:17:25.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:17:26.279 [DEBUG] [Thread-191442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:17:26.279 [DEBUG] [Thread-191442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:17:26.327 [DEBUG] [Thread-191442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:17:26.327 [DEBUG] [Thread-191442] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:17:26.335 [DEBUG] [Thread-191442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:17:26.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:17: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')
2025-11-24T14:17:26.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-11-24T14:17:26.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:17:26.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:17:26.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:17:26.377 [DEBUG] [Thread-191442] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:17:34.087 [DEBUG] [Thread-191444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:17:49.135 [DEBUG] [Thread-191445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:17:56.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:17:56.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:17:56.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-11-24T14:17:57.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 17, 36), 24.29, 19.46, 0.0, 31.55, 21.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:17:57.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:17:36
2025-11-24T14:17:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:17:57.457 [DEBUG] [Thread-191446] [transport.py] [_log()] starting thread (client mode): 0xd07101c0
2025-11-24T14:17:57.457 [DEBUG] [Thread-191446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:17:57.478 [DEBUG] [Thread-191446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:17:57.478 [INFO] [Thread-191446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:17:57.481 [DEBUG] [Thread-191446] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:17:57.481 [DEBUG] [Thread-191446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:17:57.481 [DEBUG] [Thread-191446] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:17:57.481 [DEBUG] [Thread-191446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:17:57.482 [DEBUG] [Thread-191446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:17:57.482 [DEBUG] [Thread-191446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:17:57.482 [DEBUG] [Thread-191446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:17:57.482 [DEBUG] [Thread-191446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:17:57.482 [DEBUG] [Thread-191446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:17:57.482 [DEBUG] [Thread-191446] [transport.py] [_log()] client lang: <none>
2025-11-24T14:17:57.482 [DEBUG] [Thread-191446] [transport.py] [_log()] server lang: <none>
2025-11-24T14:17:57.482 [DEBUG] [Thread-191446] [transport.py] [_log()] kex follows: False
2025-11-24T14:17:57.482 [DEBUG] [Thread-191446] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:17:57.491 [DEBUG] [Thread-191446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:17:57.491 [DEBUG] [Thread-191446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:17:57.492 [DEBUG] [Thread-191446] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:17:57.492 [DEBUG] [Thread-191446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:17:57.492 [DEBUG] [Thread-191446] [transport.py] [_log()] Compression: none
2025-11-24T14:17:57.492 [DEBUG] [Thread-191446] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:17:57.511 [DEBUG] [Thread-191446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:17:57.512 [DEBUG] [Thread-191446] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:17:57.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:17:57.513 [DEBUG] [Thread-191446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:17:57.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:17:57.516 [DEBUG] [Thread-191446] [transport.py] [_log()] userauth is OK
2025-11-24T14:17:57.516 [DEBUG] [Thread-191446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:17:57.516 [DEBUG] [Thread-191446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:17:57.516 [DEBUG] [Thread-191446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:17:57.516 [DEBUG] [Thread-191446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:17:57.541 [INFO] [Thread-191446] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:17:57.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:17:58.121 [DEBUG] [Thread-191446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:17:58.121 [DEBUG] [Thread-191446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:17:58.121 [DEBUG] [Thread-191446] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:17:58.162 [DEBUG] [Thread-191446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:17:58.162 [DEBUG] [Thread-191446] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:17:58.165 [DEBUG] [Thread-191446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:17:58.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:17:58.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:17:58.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:17:58.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:17:58.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:17:58.200 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:17:58.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:17:58.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:17:58.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:17:58.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.512200 -999.00  +21.90  22.47     24   +1.00 1 1 1 1 1   888    0 21.41 50.39 ----- 22.5 22.5 208.0 42.0 27.8 -28.5 27.1 -30.7 28.4 -27.7 29.1 -30.7
2025-11-24T14:17:58.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:17:58.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:17:58.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.512200
2025-11-24T14:17:58.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:17:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:17:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:17:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:17:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:17:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:17:36', tmtdew=24.29, humidity=19.46, cloud=0.0, wind=31.55, temperature=21.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:17:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:17:58.203 [DEBUG] [Thread-191446] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:17:58.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:17:58.292 [DEBUG] [Thread-191449] [transport.py] [_log()] starting thread (client mode): 0xd07ab910
2025-11-24T14:17:58.292 [DEBUG] [Thread-191449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:17:58.307 [DEBUG] [Thread-191449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:17:58.307 [INFO] [Thread-191449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] client lang: <none>
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] server lang: <none>
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] kex follows: False
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] Compression: none
2025-11-24T14:17:58.315 [DEBUG] [Thread-191449] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:17:58.372 [DEBUG] [Thread-191449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:17:58.372 [DEBUG] [Thread-191449] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:17:58.372 [DEBUG] [Thread-191449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:17:58.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:17:58.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:17:58.429 [DEBUG] [Thread-191449] [transport.py] [_log()] userauth is OK
2025-11-24T14:17:58.429 [DEBUG] [Thread-191449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:17:58.429 [DEBUG] [Thread-191449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:17:58.429 [DEBUG] [Thread-191449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:17:58.429 [DEBUG] [Thread-191449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:17:58.443 [INFO] [Thread-191449] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:17:58.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:17:58.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:17:59.300 [DEBUG] [Thread-191449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:17:59.301 [DEBUG] [Thread-191449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:17:59.349 [DEBUG] [Thread-191449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:17:59.349 [DEBUG] [Thread-191449] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:17:59.358 [DEBUG] [Thread-191449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:17:59.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:17:59.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-11-24T14:17:59.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:17:59.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:17:59.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:17:59.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:17:59.395 [DEBUG] [Thread-191449] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:18:04.174 [DEBUG] [Thread-191451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:18:07.397 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:18:07.398 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:18:10.874 [DEBUG] [Thread-191452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:18:19.221 [DEBUG] [Thread-191453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:18:29.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:18:29.421 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:18: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-11-24T14:18:30.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 18, 9), 24.35, 19.39, 0.0, 31.69, 21.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:18:30.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:18:09
2025-11-24T14:18:30.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:18:30.427 [DEBUG] [Thread-191454] [transport.py] [_log()] starting thread (client mode): 0xd31b06a0
2025-11-24T14:18:30.428 [DEBUG] [Thread-191454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:18:30.439 [DEBUG] [Thread-191454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:18:30.439 [INFO] [Thread-191454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] client lang: <none>
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] server lang: <none>
2025-11-24T14:18:30.442 [DEBUG] [Thread-191454] [transport.py] [_log()] kex follows: False
2025-11-24T14:18:30.443 [DEBUG] [Thread-191454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:18:30.443 [DEBUG] [Thread-191454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:18:30.443 [DEBUG] [Thread-191454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:18:30.443 [DEBUG] [Thread-191454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:18:30.443 [DEBUG] [Thread-191454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:18:30.443 [DEBUG] [Thread-191454] [transport.py] [_log()] Compression: none
2025-11-24T14:18:30.443 [DEBUG] [Thread-191454] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:18:30.464 [DEBUG] [Thread-191454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:18:30.465 [DEBUG] [Thread-191454] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:18:30.466 [DEBUG] [Thread-191454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:18:30.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:18:30.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:18:30.470 [DEBUG] [Thread-191454] [transport.py] [_log()] userauth is OK
2025-11-24T14:18:30.470 [DEBUG] [Thread-191454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:18:30.470 [DEBUG] [Thread-191454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:18:30.471 [DEBUG] [Thread-191454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:18:30.471 [DEBUG] [Thread-191454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:18:30.489 [INFO] [Thread-191454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:18:30.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:18:31.081 [DEBUG] [Thread-191454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:18:31.081 [DEBUG] [Thread-191454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:18:31.082 [DEBUG] [Thread-191454] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:18:31.121 [DEBUG] [Thread-191454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:18:31.122 [DEBUG] [Thread-191454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:18:31.125 [DEBUG] [Thread-191454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:18:31.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:18:31.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:18:31.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:18:31.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:18:31.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:18:31.153 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:18:31.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:18:31.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:18:31.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:18:31.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.512547 -999.00  +22.30  19.33     24   +1.00 1 1 1 1 1   888    0 22.63 53.17 ----- 19.3 19.3 200.1 25.6 27.9 -27.4 27.1 -25.8 28.5 -25.4 29.3 -25.8
2025-11-24T14:18:31.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:18:31.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:18:31.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.512547
2025-11-24T14:18:31.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:18:31.164 [DEBUG] [Thread-191454] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:18:31.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:18:31.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:18:31.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:18:31.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:18:31.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:18:09', tmtdew=24.35, humidity=19.39, cloud=0.0, wind=31.69, temperature=21.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:18:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:18:31.269 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:18:31.279 [DEBUG] [Thread-191457] [transport.py] [_log()] starting thread (client mode): 0xd3153730
2025-11-24T14:18:31.279 [DEBUG] [Thread-191457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:18:31.293 [DEBUG] [Thread-191457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:18:31.293 [INFO] [Thread-191457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] client lang: <none>
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] server lang: <none>
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] kex follows: False
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:18:31.301 [DEBUG] [Thread-191457] [transport.py] [_log()] Compression: none
2025-11-24T14:18:31.302 [DEBUG] [Thread-191457] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:18:31.363 [DEBUG] [Thread-191457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:18:31.363 [DEBUG] [Thread-191457] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:18:31.364 [DEBUG] [Thread-191457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:18:31.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:18:31.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:18:31.422 [DEBUG] [Thread-191457] [transport.py] [_log()] userauth is OK
2025-11-24T14:18:31.422 [DEBUG] [Thread-191457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:18:31.422 [DEBUG] [Thread-191457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:18:31.422 [DEBUG] [Thread-191457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:18:31.422 [DEBUG] [Thread-191457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:18:31.441 [INFO] [Thread-191457] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:18:31.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:18:31.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:18:32.281 [DEBUG] [Thread-191457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:18:32.281 [DEBUG] [Thread-191457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:18:32.328 [DEBUG] [Thread-191457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:18:32.328 [DEBUG] [Thread-191457] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:18:32.336 [DEBUG] [Thread-191457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:18:32.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:18:32.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-11-24T14:18:32.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-11-24T14:18:32.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:18:32.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:18:32.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:18:32.369 [DEBUG] [Thread-191457] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:18:34.260 [DEBUG] [Thread-191459 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:18:49.316 [DEBUG] [Thread-191460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:19:02.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:19:02.390 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:19:02.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-11-24T14:19:03.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 18, 41), 24.86, 18.96, 0.0, 32.87, 21.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:19:03.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:18:41
2025-11-24T14:19:03.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:19:03.416 [DEBUG] [Thread-191461] [transport.py] [_log()] starting thread (client mode): 0xd3153e50
2025-11-24T14:19:03.416 [DEBUG] [Thread-191461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:19:03.433 [DEBUG] [Thread-191461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:19:03.433 [INFO] [Thread-191461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:19:03.435 [DEBUG] [Thread-191461] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:19:03.435 [DEBUG] [Thread-191461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:19:03.435 [DEBUG] [Thread-191461] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:19:03.435 [DEBUG] [Thread-191461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:19:03.435 [DEBUG] [Thread-191461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:19:03.435 [DEBUG] [Thread-191461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:19:03.435 [DEBUG] [Thread-191461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:19:03.435 [DEBUG] [Thread-191461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:19:03.435 [DEBUG] [Thread-191461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:19:03.435 [DEBUG] [Thread-191461] [transport.py] [_log()] client lang: <none>
2025-11-24T14:19:03.436 [DEBUG] [Thread-191461] [transport.py] [_log()] server lang: <none>
2025-11-24T14:19:03.436 [DEBUG] [Thread-191461] [transport.py] [_log()] kex follows: False
2025-11-24T14:19:03.436 [DEBUG] [Thread-191461] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:19:03.436 [DEBUG] [Thread-191461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:19:03.436 [DEBUG] [Thread-191461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:19:03.436 [DEBUG] [Thread-191461] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:19:03.436 [DEBUG] [Thread-191461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:19:03.436 [DEBUG] [Thread-191461] [transport.py] [_log()] Compression: none
2025-11-24T14:19:03.436 [DEBUG] [Thread-191461] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:19:03.446 [DEBUG] [Thread-191461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:19:03.447 [DEBUG] [Thread-191461] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:19:03.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:19:03.447 [DEBUG] [Thread-191461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:19:03.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:19:03.448 [DEBUG] [Thread-191461] [transport.py] [_log()] userauth is OK
2025-11-24T14:19:03.448 [DEBUG] [Thread-191461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:19:03.448 [DEBUG] [Thread-191461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:19:03.448 [DEBUG] [Thread-191461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:19:03.448 [DEBUG] [Thread-191461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:19:03.457 [INFO] [Thread-191461] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:19:03.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:19:04.060 [DEBUG] [Thread-191461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:19:04.060 [DEBUG] [Thread-191461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:19:04.060 [DEBUG] [Thread-191461] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:19:04.102 [DEBUG] [Thread-191461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:19:04.102 [DEBUG] [Thread-191461] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:19:04.104 [DEBUG] [Thread-191461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:19:04.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:19:04.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:19:04.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:19:04.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:19:04.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:19:04.120 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:19:04.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.512895 -999.00  +22.30  20.67     23   +0.50 1 1 1 1 1   888    0 21.90 51.27 ----- 20.7 20.7 191.8 31.1 27.9 -27.8 26.9 -31.1 28.4 -26.6 29.3 -27.5
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.512895
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:19:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:18:41', tmtdew=24.86, humidity=18.96, cloud=0.0, wind=32.87, temperature=21.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:18:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:19:04.121 [DEBUG] [Thread-191461] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:19:04.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:19:04.210 [DEBUG] [Thread-191464] [transport.py] [_log()] starting thread (client mode): 0xd317f070
2025-11-24T14:19:04.211 [DEBUG] [Thread-191464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:19:04.225 [DEBUG] [Thread-191464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:19:04.225 [INFO] [Thread-191464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] client lang: <none>
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] server lang: <none>
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] kex follows: False
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] Compression: none
2025-11-24T14:19:04.233 [DEBUG] [Thread-191464] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:19:04.290 [DEBUG] [Thread-191464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:19:04.290 [DEBUG] [Thread-191464] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:19:04.290 [DEBUG] [Thread-191464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:19:04.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:19:04.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:19:04.347 [DEBUG] [Thread-191466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:19:04.348 [DEBUG] [Thread-191464] [transport.py] [_log()] userauth is OK
2025-11-24T14:19:04.348 [DEBUG] [Thread-191464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:19:04.348 [DEBUG] [Thread-191464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:19:04.348 [DEBUG] [Thread-191464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:19:04.348 [DEBUG] [Thread-191464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:19:04.368 [INFO] [Thread-191464] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:19:04.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:19:04.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:19:05.204 [DEBUG] [Thread-191464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:19:05.204 [DEBUG] [Thread-191464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:19:05.252 [DEBUG] [Thread-191464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:19:05.252 [DEBUG] [Thread-191464] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:19:05.261 [DEBUG] [Thread-191464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:19:05.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:19:05.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-11-24T14:19:05.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-11-24T14:19:05.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:19:05.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:19:05.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:19:05.294 [DEBUG] [Thread-191464] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:19:07.551 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:19:07.553 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:19:11.178 [DEBUG] [Thread-191467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:19:19.381 [DEBUG] [Thread-191468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:19:34.416 [DEBUG] [Thread-191469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:19:35.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:19:35.315 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:19:35.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:19:36.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 19, 14), 24.97, 18.81, 0.0, 27.79, 21.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:19:36.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:19:14
2025-11-24T14:19:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:19:36.428 [DEBUG] [Thread-191470] [transport.py] [_log()] starting thread (client mode): 0xd31b3d60
2025-11-24T14:19:36.428 [DEBUG] [Thread-191470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:19:36.445 [DEBUG] [Thread-191470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:19:36.445 [INFO] [Thread-191470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] client lang: <none>
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] server lang: <none>
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] kex follows: False
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] Compression: none
2025-11-24T14:19:36.448 [DEBUG] [Thread-191470] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:19:36.459 [DEBUG] [Thread-191470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:19:36.459 [DEBUG] [Thread-191470] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:19:36.459 [DEBUG] [Thread-191470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:19:36.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:19:36.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:19:36.460 [DEBUG] [Thread-191470] [transport.py] [_log()] userauth is OK
2025-11-24T14:19:36.460 [DEBUG] [Thread-191470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:19:36.460 [DEBUG] [Thread-191470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:19:36.460 [DEBUG] [Thread-191470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:19:36.460 [DEBUG] [Thread-191470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:19:36.469 [INFO] [Thread-191470] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:19:36.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:19:37.082 [DEBUG] [Thread-191470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:19:37.083 [DEBUG] [Thread-191470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:19:37.083 [DEBUG] [Thread-191470] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:19:37.123 [DEBUG] [Thread-191470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:19:37.123 [DEBUG] [Thread-191470] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:19:37.125 [DEBUG] [Thread-191470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:19:37.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:19:37.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:19:37.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:19:37.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:19:37.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:19:37.137 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:19:37.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:19:37.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:19:37.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:19:37.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.513242 -999.00  +22.40  20.25     23   +0.60 1 1 1 1 1   888    0 22.02 53.61 ----- 20.2 20.2 196.2 26.9 27.9 -27.6 26.9 -27.5 28.4 -25.7 29.2 -26.5
2025-11-24T14:19:37.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:19:37.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:19:37.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.513242
2025-11-24T14:19:37.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:19:37.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:19:37.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:19:37.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:19:37.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:19:37.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:19:14', tmtdew=24.97, humidity=18.81, cloud=0.0, wind=27.79, temperature=21.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:19:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:19:37.138 [DEBUG] [Thread-191470] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:19:37.212 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:19:37.224 [DEBUG] [Thread-191473] [transport.py] [_log()] starting thread (client mode): 0xc9b80430
2025-11-24T14:19:37.224 [DEBUG] [Thread-191473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:19:37.239 [DEBUG] [Thread-191473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:19:37.239 [INFO] [Thread-191473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] client lang: <none>
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] server lang: <none>
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] kex follows: False
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] Compression: none
2025-11-24T14:19:37.247 [DEBUG] [Thread-191473] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:19:37.304 [DEBUG] [Thread-191473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:19:37.304 [DEBUG] [Thread-191473] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:19:37.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:19:37.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:19:37.305 [DEBUG] [Thread-191473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:19:37.361 [DEBUG] [Thread-191473] [transport.py] [_log()] userauth is OK
2025-11-24T14:19:37.361 [DEBUG] [Thread-191473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:19:37.361 [DEBUG] [Thread-191473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:19:37.361 [DEBUG] [Thread-191473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:19:37.361 [DEBUG] [Thread-191473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:19:37.375 [INFO] [Thread-191473] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14: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-11-24T14:19:37.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:19:38.184 [DEBUG] [Thread-191473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:19:38.184 [DEBUG] [Thread-191473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:19:38.232 [DEBUG] [Thread-191473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:19:38.232 [DEBUG] [Thread-191473] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:19:38.240 [DEBUG] [Thread-191473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:19:38.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:19:38.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-11-24T14:19:38.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-11-24T14:19:38.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:19:38.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:19:38.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:19:38.272 [DEBUG] [Thread-191473] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:19:49.471 [DEBUG] [Thread-191475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:20:04.540 [DEBUG] [Thread-191476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:20:07.695 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:20:07.696 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:20:08.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:20:08.289 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:20:08.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-11-24T14:20:09.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 19, 46), 24.47, 19.16, 0.0, 23.75, 21.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:20:09.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:19:46
2025-11-24T14:20:09.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:20:09.588 [DEBUG] [Thread-191477] [transport.py] [_log()] starting thread (client mode): 0xd317e560
2025-11-24T14:20:09.589 [DEBUG] [Thread-191477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:20:09.602 [DEBUG] [Thread-191477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:20:09.602 [INFO] [Thread-191477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] client lang: <none>
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] server lang: <none>
2025-11-24T14:20:09.605 [DEBUG] [Thread-191477] [transport.py] [_log()] kex follows: False
2025-11-24T14:20:09.606 [DEBUG] [Thread-191477] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:20:09.606 [DEBUG] [Thread-191477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:20:09.606 [DEBUG] [Thread-191477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:20:09.606 [DEBUG] [Thread-191477] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:20:09.606 [DEBUG] [Thread-191477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:20:09.606 [DEBUG] [Thread-191477] [transport.py] [_log()] Compression: none
2025-11-24T14:20:09.606 [DEBUG] [Thread-191477] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:20:09.613 [DEBUG] [Thread-191477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:20:09.613 [DEBUG] [Thread-191477] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:20:09.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:20:09.614 [DEBUG] [Thread-191477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:20:09.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:20:09.615 [DEBUG] [Thread-191477] [transport.py] [_log()] userauth is OK
2025-11-24T14:20:09.615 [DEBUG] [Thread-191477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:20:09.615 [DEBUG] [Thread-191477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:20:09.615 [DEBUG] [Thread-191477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:20:09.615 [DEBUG] [Thread-191477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:20:09.630 [INFO] [Thread-191477] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:20:09.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:20:11.515 [DEBUG] [Thread-191479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:20:16.648 [DEBUG] [Thread-191477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:20:16.648 [DEBUG] [Thread-191477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:20:16.648 [DEBUG] [Thread-191477] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:20:16.689 [DEBUG] [Thread-191477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:20:16.689 [DEBUG] [Thread-191477] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:20:16.692 [DEBUG] [Thread-191477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:20:16.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:20:16.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:20:16.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:20:16.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:20:16.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:20:16.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:20:16.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.513242 -999.00  +22.40  20.25     23   +0.60 1 1 1 1 1   888    0 22.02 53.61 ----- 20.2 20.2 196.2 26.9 27.9 -27.6 26.9 -27.5 28.4 -25.7 29.2 -26.5
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.513242
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:20:16.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:20:16.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:19:46', tmtdew=24.47, humidity=19.16, cloud=0.0, wind=23.75, temperature=21.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:19:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:20:16.903 [DEBUG] [Thread-191477] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:20:16.975 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:20:16.985 [DEBUG] [Thread-191481] [transport.py] [_log()] starting thread (client mode): 0xd0710370
2025-11-24T14:20:16.985 [DEBUG] [Thread-191481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:20:17.001 [DEBUG] [Thread-191481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:20:17.001 [INFO] [Thread-191481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:20:17.008 [DEBUG] [Thread-191481] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] client lang: <none>
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] server lang: <none>
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] kex follows: False
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] Compression: none
2025-11-24T14:20:17.009 [DEBUG] [Thread-191481] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:20:17.064 [DEBUG] [Thread-191481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:20:17.064 [DEBUG] [Thread-191481] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:20:17.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:20:17.064 [DEBUG] [Thread-191481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:20:17.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:20:17.122 [DEBUG] [Thread-191481] [transport.py] [_log()] userauth is OK
2025-11-24T14:20:17.122 [DEBUG] [Thread-191481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:20:17.122 [DEBUG] [Thread-191481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:20:17.122 [DEBUG] [Thread-191481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:20:17.122 [DEBUG] [Thread-191481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:20:17.136 [INFO] [Thread-191481] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:20:17.136 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:20:17.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:20:17.990 [DEBUG] [Thread-191481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:20:17.990 [DEBUG] [Thread-191481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:20:18.038 [DEBUG] [Thread-191481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:20:18.038 [DEBUG] [Thread-191481] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:20:18.046 [DEBUG] [Thread-191481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:20:18.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:20:18.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-11-24T14:20:18.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-11-24T14:20:18.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:20:18.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:20:18.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:20:18.078 [DEBUG] [Thread-191481] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:20:19.566 [DEBUG] [Thread-191483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:20:34.613 [DEBUG] [Thread-191484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:20:48.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:20:48.095 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:20:48.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-11-24T14:20:48.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 20, 18), 24.23, 19.44, 0.0, 22.92, 21.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:20:48.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:20:18
2025-11-24T14:20:49.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:20:49.258 [DEBUG] [Thread-191485] [transport.py] [_log()] starting thread (client mode): 0xd07104f0
2025-11-24T14:20:49.258 [DEBUG] [Thread-191485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:20:49.280 [DEBUG] [Thread-191485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:20:49.280 [INFO] [Thread-191485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:20:49.283 [DEBUG] [Thread-191485] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:20:49.283 [DEBUG] [Thread-191485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] client lang: <none>
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] server lang: <none>
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] kex follows: False
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] Compression: none
2025-11-24T14:20:49.284 [DEBUG] [Thread-191485] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:20:49.302 [DEBUG] [Thread-191485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:20:49.303 [DEBUG] [Thread-191485] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:20:49.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:20:49.304 [DEBUG] [Thread-191485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:20:49.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:20:49.306 [DEBUG] [Thread-191485] [transport.py] [_log()] userauth is OK
2025-11-24T14:20:49.306 [DEBUG] [Thread-191485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:20:49.307 [DEBUG] [Thread-191485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:20:49.307 [DEBUG] [Thread-191485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:20:49.307 [DEBUG] [Thread-191485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:20:49.330 [INFO] [Thread-191485] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:20:49.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:20:49.655 [DEBUG] [Thread-191487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:20:49.969 [DEBUG] [Thread-191485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:20:49.969 [DEBUG] [Thread-191485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:20:49.969 [DEBUG] [Thread-191485] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:20:50.010 [DEBUG] [Thread-191485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:20:50.010 [DEBUG] [Thread-191485] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:20:50.012 [DEBUG] [Thread-191485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:20:50.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:20:50.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:20:50.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:20:50.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:20:50.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:20:50.027 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:20:50.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.513937 -999.00  +22.40  20.29     23   +0.30 1 1 1 1 1   888    0 22.18 62.28 ----- 20.3 20.3 207.4 34.7 27.9 -27.6 27.1 -28.9 28.4 -26.2 29.2 -28.5
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.513937
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:20:50.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:20:18', tmtdew=24.23, humidity=19.44, cloud=0.0, wind=22.92, temperature=21.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:20:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:20:50.028 [DEBUG] [Thread-191485] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:20:50.099 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:20:50.112 [DEBUG] [Thread-191489] [transport.py] [_log()] starting thread (client mode): 0xd317c220
2025-11-24T14:20:50.112 [DEBUG] [Thread-191489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:20:50.126 [DEBUG] [Thread-191489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:20:50.126 [INFO] [Thread-191489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:20:50.133 [DEBUG] [Thread-191489] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:20:50.133 [DEBUG] [Thread-191489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:20:50.133 [DEBUG] [Thread-191489] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] client lang: <none>
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] server lang: <none>
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] kex follows: False
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] Compression: none
2025-11-24T14:20:50.134 [DEBUG] [Thread-191489] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:20:50.192 [DEBUG] [Thread-191489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:20:50.193 [DEBUG] [Thread-191489] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:20:50.193 [DEBUG] [Thread-191489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:20:50.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:20:50.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:20:50.249 [DEBUG] [Thread-191489] [transport.py] [_log()] userauth is OK
2025-11-24T14:20:50.249 [DEBUG] [Thread-191489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:20:50.249 [DEBUG] [Thread-191489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:20:50.249 [DEBUG] [Thread-191489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:20:50.249 [DEBUG] [Thread-191489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:20:50.263 [INFO] [Thread-191489] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:20:50.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:20:50.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:20:51.125 [DEBUG] [Thread-191489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:20:51.126 [DEBUG] [Thread-191489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:20:51.173 [DEBUG] [Thread-191489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:20:51.174 [DEBUG] [Thread-191489] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:20:51.183 [DEBUG] [Thread-191489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:20:51.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:20:51.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-11-24T14:20:51.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:20:51.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:20:51.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:20:51.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:20:51.220 [DEBUG] [Thread-191489] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:21:04.694 [DEBUG] [Thread-191491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:21:07.835 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:21:07.836 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:21:11.622 [DEBUG] [Thread-191492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:21:19.748 [DEBUG] [Thread-191493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:21:21.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:21:21.242 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:21:21.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-11-24T14:21:22.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 20, 51), 24.66, 18.81, 0.0, 27.65, 21.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:21:22.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:20:51
2025-11-24T14:21:22.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:21:22.364 [DEBUG] [Thread-191494] [transport.py] [_log()] starting thread (client mode): 0xd317e680
2025-11-24T14:21:22.365 [DEBUG] [Thread-191494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:21:22.386 [DEBUG] [Thread-191494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:21:22.386 [INFO] [Thread-191494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] client lang: <none>
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] server lang: <none>
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] kex follows: False
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:21:22.389 [DEBUG] [Thread-191494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:21:22.390 [DEBUG] [Thread-191494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:21:22.390 [DEBUG] [Thread-191494] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:21:22.390 [DEBUG] [Thread-191494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:21:22.390 [DEBUG] [Thread-191494] [transport.py] [_log()] Compression: none
2025-11-24T14:21:22.390 [DEBUG] [Thread-191494] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:21:22.405 [DEBUG] [Thread-191494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:21:22.405 [DEBUG] [Thread-191494] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:21:22.405 [DEBUG] [Thread-191494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:21:22.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:21:22.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:21:22.406 [DEBUG] [Thread-191494] [transport.py] [_log()] userauth is OK
2025-11-24T14:21:22.406 [DEBUG] [Thread-191494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:21:22.406 [DEBUG] [Thread-191494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:21:22.406 [DEBUG] [Thread-191494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:21:22.406 [DEBUG] [Thread-191494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:21:22.415 [INFO] [Thread-191494] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:21:22.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:21:23.586 [DEBUG] [Thread-191494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:21:23.586 [DEBUG] [Thread-191494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:21:23.586 [DEBUG] [Thread-191494] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:21:23.627 [DEBUG] [Thread-191494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:21:23.627 [DEBUG] [Thread-191494] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:21:23.630 [DEBUG] [Thread-191494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:21:23.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:21:23.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:21:23.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:21:23.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:21:23.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:21:23.646 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:21:23.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:21:23.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:21:23.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:21:23.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.514284 -999.00  +22.30  12.57     23   +0.60 1 1 1 1 1   888    0 22.32 70.39 ----- 12.6 12.6 189.8 22.7 27.9 -27.0 27.2 -29.4 28.5 -25.6 29.4 -27.6
2025-11-24T14:21:23.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:21:23.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:21:23.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.514284
2025-11-24T14:21:23.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:21:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:21:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:21:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:21:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:21:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:20:51', tmtdew=24.66, humidity=18.81, cloud=0.0, wind=27.65, temperature=21.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:20:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:21:23.649 [DEBUG] [Thread-191494] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:21:23.733 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:21:23.745 [DEBUG] [Thread-191497] [transport.py] [_log()] starting thread (client mode): 0xd317f7f0
2025-11-24T14:21:23.745 [DEBUG] [Thread-191497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:21:23.761 [DEBUG] [Thread-191497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:21:23.761 [INFO] [Thread-191497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:21:23.769 [DEBUG] [Thread-191497] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:21:23.769 [DEBUG] [Thread-191497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:21:23.769 [DEBUG] [Thread-191497] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:21:23.769 [DEBUG] [Thread-191497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:21:23.769 [DEBUG] [Thread-191497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:21:23.769 [DEBUG] [Thread-191497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:21:23.769 [DEBUG] [Thread-191497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:21:23.769 [DEBUG] [Thread-191497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:21:23.769 [DEBUG] [Thread-191497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:21:23.770 [DEBUG] [Thread-191497] [transport.py] [_log()] client lang: <none>
2025-11-24T14:21:23.770 [DEBUG] [Thread-191497] [transport.py] [_log()] server lang: <none>
2025-11-24T14:21:23.770 [DEBUG] [Thread-191497] [transport.py] [_log()] kex follows: False
2025-11-24T14:21:23.770 [DEBUG] [Thread-191497] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:21:23.770 [DEBUG] [Thread-191497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:21:23.770 [DEBUG] [Thread-191497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:21:23.770 [DEBUG] [Thread-191497] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:21:23.770 [DEBUG] [Thread-191497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:21:23.770 [DEBUG] [Thread-191497] [transport.py] [_log()] Compression: none
2025-11-24T14:21:23.770 [DEBUG] [Thread-191497] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:21:23.830 [DEBUG] [Thread-191497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:21:23.830 [DEBUG] [Thread-191497] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:21:23.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:21:23.831 [DEBUG] [Thread-191497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:21:23.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:21:23.885 [DEBUG] [Thread-191497] [transport.py] [_log()] userauth is OK
2025-11-24T14:21:23.886 [DEBUG] [Thread-191497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:21:23.886 [DEBUG] [Thread-191497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:21:23.886 [DEBUG] [Thread-191497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:21:23.886 [DEBUG] [Thread-191497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:21:23.906 [INFO] [Thread-191497] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:21:23.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:21:23.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:21:24.717 [DEBUG] [Thread-191497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:21:24.717 [DEBUG] [Thread-191497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:21:24.765 [DEBUG] [Thread-191497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:21:24.765 [DEBUG] [Thread-191497] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:21:24.773 [DEBUG] [Thread-191497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:21:24.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:21:24.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-11-24T14:21:24.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-11-24T14:21:24.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:21:24.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:21:24.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:21:24.804 [DEBUG] [Thread-191497] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:21:34.772 [DEBUG] [Thread-191499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:21:49.811 [DEBUG] [Thread-191500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:21:54.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:21:54.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:21:54.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-11-24T14:21:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 21, 23), 24.75, 18.72, 0.0, 29.34, 21.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:21:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:21:23
2025-11-24T14:21:55.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:21:55.935 [DEBUG] [Thread-191501] [transport.py] [_log()] starting thread (client mode): 0xd317c850
2025-11-24T14:21:55.935 [DEBUG] [Thread-191501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:21:55.954 [DEBUG] [Thread-191501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:21:55.954 [INFO] [Thread-191501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:21:55.957 [DEBUG] [Thread-191501] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:21:55.957 [DEBUG] [Thread-191501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:21:55.957 [DEBUG] [Thread-191501] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:21:55.957 [DEBUG] [Thread-191501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:21:55.957 [DEBUG] [Thread-191501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] client lang: <none>
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] server lang: <none>
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] kex follows: False
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] Compression: none
2025-11-24T14:21:55.958 [DEBUG] [Thread-191501] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:21:55.968 [DEBUG] [Thread-191501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:21:55.969 [DEBUG] [Thread-191501] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:21:55.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:21:55.970 [DEBUG] [Thread-191501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:21:55.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:21:55.972 [DEBUG] [Thread-191501] [transport.py] [_log()] userauth is OK
2025-11-24T14:21:55.972 [DEBUG] [Thread-191501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:21:55.973 [DEBUG] [Thread-191501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:21:55.973 [DEBUG] [Thread-191501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:21:55.973 [DEBUG] [Thread-191501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:21:55.994 [INFO] [Thread-191501] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:21:55.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:21:56.583 [DEBUG] [Thread-191501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:21:56.583 [DEBUG] [Thread-191501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:21:56.583 [DEBUG] [Thread-191501] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:21:56.625 [DEBUG] [Thread-191501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:21:56.625 [DEBUG] [Thread-191501] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:21:56.627 [DEBUG] [Thread-191501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:21:56.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:21:56.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:21:56.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:21:56.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:21:56.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:21:56.639 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:21:56.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.514631 -999.00  +22.70  26.63     23   +0.80 1 1 1 1 1   888    0 23.21 78.14 ----- 26.6 26.6 188.2 29.8 28.0 -27.7 27.2 -26.6 28.6 -28.5 29.4 -26.1
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.514631
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:21:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:21:56.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:21:23', tmtdew=24.75, humidity=18.72, cloud=0.0, wind=29.34, temperature=21.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:21:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:21:56.640 [DEBUG] [Thread-191501] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:21:56.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:21:56.726 [DEBUG] [Thread-191504] [transport.py] [_log()] starting thread (client mode): 0xd0703dc0
2025-11-24T14:21:56.726 [DEBUG] [Thread-191504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:21:56.740 [DEBUG] [Thread-191504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:21:56.740 [INFO] [Thread-191504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] client lang: <none>
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] server lang: <none>
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] kex follows: False
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] Compression: none
2025-11-24T14:21:56.748 [DEBUG] [Thread-191504] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:21:56.804 [DEBUG] [Thread-191504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:21:56.804 [DEBUG] [Thread-191504] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:21:56.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:21:56.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:21:56.805 [DEBUG] [Thread-191504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:21:56.861 [DEBUG] [Thread-191504] [transport.py] [_log()] userauth is OK
2025-11-24T14:21:56.861 [DEBUG] [Thread-191504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:21:56.861 [DEBUG] [Thread-191504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:21:56.861 [DEBUG] [Thread-191504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:21:56.861 [DEBUG] [Thread-191504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:21:56.879 [INFO] [Thread-191504] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:21:56.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:21:56.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:21:57.727 [DEBUG] [Thread-191504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:21:57.727 [DEBUG] [Thread-191504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:21:57.775 [DEBUG] [Thread-191504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:21:57.775 [DEBUG] [Thread-191504] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:21:57.783 [DEBUG] [Thread-191504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:21:57.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:21:57.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-11-24T14:21:57.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-11-24T14:21:57.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:21:57.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:21:57.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:21:57.815 [DEBUG] [Thread-191504] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:22:04.843 [DEBUG] [Thread-191506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:22:07.986 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:22:07.988 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:22:11.879 [DEBUG] [Thread-191507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:22:19.889 [DEBUG] [Thread-191508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:22:27.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:22:27.838 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:22:27.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-11-24T14:22:28.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 21, 56), 24.8, 18.69, 0.0, 29.1, 21.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:22:28.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:21:56
2025-11-24T14:22:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:22:28.953 [DEBUG] [Thread-191509] [transport.py] [_log()] starting thread (client mode): 0xd0712aa0
2025-11-24T14:22:28.953 [DEBUG] [Thread-191509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:22:28.973 [DEBUG] [Thread-191509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:22:28.973 [INFO] [Thread-191509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] client lang: <none>
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] server lang: <none>
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] kex follows: False
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] Compression: none
2025-11-24T14:22:28.976 [DEBUG] [Thread-191509] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:22:28.992 [DEBUG] [Thread-191509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:22:28.992 [DEBUG] [Thread-191509] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:22:28.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:22:28.992 [DEBUG] [Thread-191509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:22:28.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:22:28.993 [DEBUG] [Thread-191509] [transport.py] [_log()] userauth is OK
2025-11-24T14:22:28.993 [DEBUG] [Thread-191509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:22:28.993 [DEBUG] [Thread-191509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:22:28.993 [DEBUG] [Thread-191509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:22:28.993 [DEBUG] [Thread-191509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:22:29.006 [INFO] [Thread-191509] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:22:29.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:22:29.743 [DEBUG] [Thread-191509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:22:29.743 [DEBUG] [Thread-191509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:22:29.743 [DEBUG] [Thread-191509] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:22:29.784 [DEBUG] [Thread-191509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:22:29.785 [DEBUG] [Thread-191509] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:22:29.788 [DEBUG] [Thread-191509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:22:29.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:22:29.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:22:29.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:22:29.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:22:29.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:22:29.805 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:22:29.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:22:29.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:22:29.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:22:29.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.515325 -999.00  +22.30  19.98     23   +0.70 1 1 1 1 1   888    0 23.58 90.53 ----- 20.0 20.0 170.4 25.9 28.1 -27.2 27.4 -27.0 28.5 -25.5 29.4 -27.4
2025-11-24T14:22:29.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:22:29.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:22:29.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.515325
2025-11-24T14:22:29.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:22:29.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:22:29.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:22:29.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:22:29.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:22:29.806 [DEBUG] [Thread-191509] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:22:29.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:21:56', tmtdew=24.8, humidity=18.69, cloud=0.0, wind=29.1, temperature=21.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:22:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:22:29.880 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:22:29.892 [DEBUG] [Thread-191512] [transport.py] [_log()] starting thread (client mode): 0xd0712020
2025-11-24T14:22:29.892 [DEBUG] [Thread-191512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:22:29.907 [DEBUG] [Thread-191512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:22:29.907 [INFO] [Thread-191512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] client lang: <none>
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] server lang: <none>
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] kex follows: False
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] Compression: none
2025-11-24T14:22:29.914 [DEBUG] [Thread-191512] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:22:29.972 [DEBUG] [Thread-191512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:22:29.973 [DEBUG] [Thread-191512] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:22:29.973 [DEBUG] [Thread-191512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:22:29.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:22:29.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:22:30.029 [DEBUG] [Thread-191512] [transport.py] [_log()] userauth is OK
2025-11-24T14:22:30.029 [DEBUG] [Thread-191512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:22:30.029 [DEBUG] [Thread-191512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:22:30.029 [DEBUG] [Thread-191512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:22:30.029 [DEBUG] [Thread-191512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:22:30.045 [INFO] [Thread-191512] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:22:30.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:22:30.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:22:30.899 [DEBUG] [Thread-191512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:22:30.900 [DEBUG] [Thread-191512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:22:30.947 [DEBUG] [Thread-191512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:22:30.947 [DEBUG] [Thread-191512] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:22:30.956 [DEBUG] [Thread-191512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:22:30.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:22:30.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:22:30.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:22:30.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:22:30.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:22:30.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:22:30.988 [DEBUG] [Thread-191512] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:22:34.918 [DEBUG] [Thread-191514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:22:49.956 [DEBUG] [Thread-191515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:23:01.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:23:01.010 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:23:01.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-11-24T14:23:01.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 22, 28), 24.72, 18.79, 0.0, 26.06, 21.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:23:01.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:22:28
2025-11-24T14:23:01.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:23:02.130 [DEBUG] [Thread-191516] [transport.py] [_log()] starting thread (client mode): 0xd07100a0
2025-11-24T14:23:02.131 [DEBUG] [Thread-191516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:23:02.149 [DEBUG] [Thread-191516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:23:02.150 [INFO] [Thread-191516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:23:02.152 [DEBUG] [Thread-191516] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] client lang: <none>
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] server lang: <none>
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] kex follows: False
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] Compression: none
2025-11-24T14:23:02.153 [DEBUG] [Thread-191516] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:23:02.169 [DEBUG] [Thread-191516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:23:02.169 [DEBUG] [Thread-191516] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:23:02.169 [DEBUG] [Thread-191516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:23:02.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:23:02.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:23:02.170 [DEBUG] [Thread-191516] [transport.py] [_log()] userauth is OK
2025-11-24T14:23:02.170 [DEBUG] [Thread-191516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:23:02.170 [DEBUG] [Thread-191516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:23:02.170 [DEBUG] [Thread-191516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:23:02.170 [DEBUG] [Thread-191516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:23:02.182 [INFO] [Thread-191516] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:23:02.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:23:02.766 [DEBUG] [Thread-191516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:23:02.766 [DEBUG] [Thread-191516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:23:02.766 [DEBUG] [Thread-191516] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:23:02.807 [DEBUG] [Thread-191516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:23:02.807 [DEBUG] [Thread-191516] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:23:02.809 [DEBUG] [Thread-191516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:23:02.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:23:02.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:23:02.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:23:02.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:23:02.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:23:02.828 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:23:02.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:23:02.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.515672 -999.00  +21.90  22.15     24   +0.70 1 1 1 1 1   888    0 23.14 92.68 ----- 22.1 22.1 181.0 27.3 27.9 -28.6 27.3 -26.4 28.3 -26.8 29.2 -29.7
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.515672
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:23:02.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:22:28', tmtdew=24.72, humidity=18.79, cloud=0.0, wind=26.06, temperature=21.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:22:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:23:02.830 [DEBUG] [Thread-191516] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:23:02.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:23:02.923 [DEBUG] [Thread-191519] [transport.py] [_log()] starting thread (client mode): 0xd31b1390
2025-11-24T14:23:02.923 [DEBUG] [Thread-191519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:23:02.938 [DEBUG] [Thread-191519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:23:02.938 [INFO] [Thread-191519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] client lang: <none>
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] server lang: <none>
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] kex follows: False
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:23:02.946 [DEBUG] [Thread-191519] [transport.py] [_log()] Compression: none
2025-11-24T14:23:02.947 [DEBUG] [Thread-191519] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:23:03.004 [DEBUG] [Thread-191519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:23:03.004 [DEBUG] [Thread-191519] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:23:03.004 [DEBUG] [Thread-191519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:23:03.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:23:03.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:23:03.061 [DEBUG] [Thread-191519] [transport.py] [_log()] userauth is OK
2025-11-24T14:23:03.061 [DEBUG] [Thread-191519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:23:03.061 [DEBUG] [Thread-191519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:23:03.061 [DEBUG] [Thread-191519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:23:03.061 [DEBUG] [Thread-191519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:23:03.075 [INFO] [Thread-191519] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:23:03.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:23:03.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:23:03.914 [DEBUG] [Thread-191519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:23:03.914 [DEBUG] [Thread-191519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:23:03.962 [DEBUG] [Thread-191519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:23:03.962 [DEBUG] [Thread-191519] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:23:03.971 [DEBUG] [Thread-191519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:23:03.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:23:03.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-11-24T14:23:03.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-11-24T14:23:03.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:23:04.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:23:04.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:23:04.008 [DEBUG] [Thread-191519] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:23:04.987 [DEBUG] [Thread-191521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:23:08.128 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:23:08.130 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:23:11.960 [DEBUG] [Thread-191522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:23:20.039 [DEBUG] [Thread-191523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:23:34.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:23:34.002 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:23:34.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-11-24T14:23:34.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 23), 24.86, 18.84, 0.0, 22.62, 21.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:23:34.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:23:00
2025-11-24T14:23:34.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:23:35.065 [DEBUG] [Thread-191524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:23:35.124 [DEBUG] [Thread-191525] [transport.py] [_log()] starting thread (client mode): 0xd317e9e0
2025-11-24T14:23:35.125 [DEBUG] [Thread-191525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:23:35.144 [DEBUG] [Thread-191525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:23:35.144 [INFO] [Thread-191525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:23:35.145 [DEBUG] [Thread-191525] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] client lang: <none>
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] server lang: <none>
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] kex follows: False
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] Compression: none
2025-11-24T14:23:35.146 [DEBUG] [Thread-191525] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:23:35.157 [DEBUG] [Thread-191525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:23:35.157 [DEBUG] [Thread-191525] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:23:35.157 [DEBUG] [Thread-191525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:23:35.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:23:35.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:23:35.200 [DEBUG] [Thread-191525] [transport.py] [_log()] userauth is OK
2025-11-24T14:23:35.201 [DEBUG] [Thread-191525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:23:35.201 [DEBUG] [Thread-191525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:23:35.201 [DEBUG] [Thread-191525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:23:35.201 [DEBUG] [Thread-191525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:23:35.227 [INFO] [Thread-191525] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:23:35.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:23:35.962 [DEBUG] [Thread-191525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:23:35.963 [DEBUG] [Thread-191525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:23:35.963 [DEBUG] [Thread-191525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:23:36.003 [DEBUG] [Thread-191525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:23:36.003 [DEBUG] [Thread-191525] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:23:36.006 [DEBUG] [Thread-191525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:23:36.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:23:36.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:23:36.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:23:36.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:23:36.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:23:36.033 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:23:36.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:23:36.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:23:36.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:23:36.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.516020 -999.00  +21.50  16.89     25   +0.70 1 1 1 1 1   888    0 23.22 97.49 ----- 16.9 16.9 185.5 20.5 28.0 -27.7 27.0 -26.5 28.4 -25.5 29.4 -27.1
2025-11-24T14:23:36.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:23:36.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:23:36.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.516020
2025-11-24T14:23:36.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:23:36.037 [DEBUG] [Thread-191525] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:23:36.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:23:36.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:23:36.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:23:36.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:23:36.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:23:00', tmtdew=24.86, humidity=18.84, cloud=0.0, wind=22.62, temperature=21.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:23:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:23:36.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:23:36.136 [DEBUG] [Thread-191528] [transport.py] [_log()] starting thread (client mode): 0xc9b825f0
2025-11-24T14:23:36.136 [DEBUG] [Thread-191528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:23:36.155 [DEBUG] [Thread-191528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:23:36.155 [INFO] [Thread-191528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:23:36.162 [DEBUG] [Thread-191528] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:23:36.162 [DEBUG] [Thread-191528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:23:36.162 [DEBUG] [Thread-191528] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:23:36.162 [DEBUG] [Thread-191528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:23:36.162 [DEBUG] [Thread-191528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:23:36.162 [DEBUG] [Thread-191528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:23:36.162 [DEBUG] [Thread-191528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] client lang: <none>
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] server lang: <none>
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] kex follows: False
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] Compression: none
2025-11-24T14:23:36.163 [DEBUG] [Thread-191528] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:23:36.223 [DEBUG] [Thread-191528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:23:36.223 [DEBUG] [Thread-191528] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:23:36.223 [DEBUG] [Thread-191528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:23:36.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:23:36.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:23:36.281 [DEBUG] [Thread-191528] [transport.py] [_log()] userauth is OK
2025-11-24T14:23:36.281 [DEBUG] [Thread-191528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:23:36.281 [DEBUG] [Thread-191528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:23:36.281 [DEBUG] [Thread-191528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:23:36.281 [DEBUG] [Thread-191528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:23:36.302 [INFO] [Thread-191528] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:23:36.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:23:36.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:23:37.153 [DEBUG] [Thread-191528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:23:37.153 [DEBUG] [Thread-191528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:23:37.200 [DEBUG] [Thread-191528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:23:37.200 [DEBUG] [Thread-191528] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:23:37.210 [DEBUG] [Thread-191528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:23:37.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:23:37.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-11-24T14:23:37.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-11-24T14:23:37.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:23:37.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:23:37.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:23:37.245 [DEBUG] [Thread-191528] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:23:50.103 [DEBUG] [Thread-191530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:24:05.190 [DEBUG] [Thread-191531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:24:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:24:07.268 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:24:07.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-11-24T14:24:08.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 23, 33), 24.48, 19.27, 0.0, 19.27, 21.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:24:08.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:23:33
2025-11-24T14:24:08.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:24:08.271 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:24:08.272 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:24:08.418 [DEBUG] [Thread-191532] [transport.py] [_log()] starting thread (client mode): 0xd0711570
2025-11-24T14:24:08.418 [DEBUG] [Thread-191532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:24:08.431 [DEBUG] [Thread-191532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:24:08.431 [INFO] [Thread-191532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] client lang: <none>
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] server lang: <none>
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] kex follows: False
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:24:08.433 [DEBUG] [Thread-191532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:24:08.434 [DEBUG] [Thread-191532] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:24:08.434 [DEBUG] [Thread-191532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:24:08.434 [DEBUG] [Thread-191532] [transport.py] [_log()] Compression: none
2025-11-24T14:24:08.434 [DEBUG] [Thread-191532] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:24:08.441 [DEBUG] [Thread-191532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:24:08.441 [DEBUG] [Thread-191532] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:24:08.441 [DEBUG] [Thread-191532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:24:08.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:24:08.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:24:08.442 [DEBUG] [Thread-191532] [transport.py] [_log()] userauth is OK
2025-11-24T14:24:08.442 [DEBUG] [Thread-191532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:24:08.442 [DEBUG] [Thread-191532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:24:08.442 [DEBUG] [Thread-191532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:24:08.442 [DEBUG] [Thread-191532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:24:08.451 [INFO] [Thread-191532] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:24:08.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:24:08.987 [DEBUG] [Thread-191532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:24:08.988 [DEBUG] [Thread-191532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:24:08.988 [DEBUG] [Thread-191532] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:24:09.028 [DEBUG] [Thread-191532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:24:09.028 [DEBUG] [Thread-191532] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:24:09.030 [DEBUG] [Thread-191532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:24:09.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:24:09.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:24:09.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:24:09.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:24:09.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:24:09.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:24:09.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.516367 -999.00  +21.50  17.97     25   +0.80 1 1 1 1 1   888    0 23.83 103.96 ----- 18.0 18.0 184.6 22.8 27.8 -27.5 26.9 -28.9 28.4 -26.6 29.2 -28.6
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.516367
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:24:09.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:23:33', tmtdew=24.48, humidity=19.27, cloud=0.0, wind=19.27, temperature=21.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:23:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:24:09.049 [DEBUG] [Thread-191532] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:24:09.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:24:09.135 [DEBUG] [Thread-191535] [transport.py] [_log()] starting thread (client mode): 0xc9b83190
2025-11-24T14:24:09.135 [DEBUG] [Thread-191535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:24:09.150 [DEBUG] [Thread-191535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:24:09.150 [INFO] [Thread-191535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] client lang: <none>
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] server lang: <none>
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] kex follows: False
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] Compression: none
2025-11-24T14:24:09.158 [DEBUG] [Thread-191535] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:24:09.215 [DEBUG] [Thread-191535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:24:09.216 [DEBUG] [Thread-191535] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:24:09.216 [DEBUG] [Thread-191535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:24:09.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:24:09.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:24:09.273 [DEBUG] [Thread-191535] [transport.py] [_log()] userauth is OK
2025-11-24T14:24:09.273 [DEBUG] [Thread-191535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:24:09.273 [DEBUG] [Thread-191535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:24:09.273 [DEBUG] [Thread-191535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:24:09.273 [DEBUG] [Thread-191535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:24:09.290 [INFO] [Thread-191535] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:24:09.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:24:09.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:24:10.119 [DEBUG] [Thread-191535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:24:10.119 [DEBUG] [Thread-191535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:24:10.168 [DEBUG] [Thread-191535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:24:10.168 [DEBUG] [Thread-191535] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:24:10.176 [DEBUG] [Thread-191535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:24:10.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:24:10.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-11-24T14:24:10.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-11-24T14:24:10.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:24:10.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:24:10.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:24:10.208 [DEBUG] [Thread-191535] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:24:12.192 [DEBUG] [Thread-191537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:24:20.227 [DEBUG] [Thread-191538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:24:35.270 [DEBUG] [Thread-191539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:24:40.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:24:40.227 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:24:40.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-11-24T14:24:41.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 24, 5), 24.65, 19.1, 0.0, 20.77, 21.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:24:41.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:24:05
2025-11-24T14:24:41.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:24:41.351 [DEBUG] [Thread-191540] [transport.py] [_log()] starting thread (client mode): 0xd0700220
2025-11-24T14:24:41.351 [DEBUG] [Thread-191540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:24:41.374 [DEBUG] [Thread-191540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:24:41.374 [INFO] [Thread-191540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:24:41.376 [DEBUG] [Thread-191540] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:24:41.376 [DEBUG] [Thread-191540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:24:41.376 [DEBUG] [Thread-191540] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:24:41.376 [DEBUG] [Thread-191540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:24:41.376 [DEBUG] [Thread-191540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:24:41.376 [DEBUG] [Thread-191540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:24:41.376 [DEBUG] [Thread-191540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:24:41.376 [DEBUG] [Thread-191540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:24:41.376 [DEBUG] [Thread-191540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:24:41.377 [DEBUG] [Thread-191540] [transport.py] [_log()] client lang: <none>
2025-11-24T14:24:41.377 [DEBUG] [Thread-191540] [transport.py] [_log()] server lang: <none>
2025-11-24T14:24:41.377 [DEBUG] [Thread-191540] [transport.py] [_log()] kex follows: False
2025-11-24T14:24:41.377 [DEBUG] [Thread-191540] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:24:41.377 [DEBUG] [Thread-191540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:24:41.377 [DEBUG] [Thread-191540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:24:41.377 [DEBUG] [Thread-191540] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:24:41.377 [DEBUG] [Thread-191540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:24:41.377 [DEBUG] [Thread-191540] [transport.py] [_log()] Compression: none
2025-11-24T14:24:41.377 [DEBUG] [Thread-191540] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:24:41.387 [DEBUG] [Thread-191540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:24:41.387 [DEBUG] [Thread-191540] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:24:41.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:24:41.388 [DEBUG] [Thread-191540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:24:41.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:24:41.390 [DEBUG] [Thread-191540] [transport.py] [_log()] userauth is OK
2025-11-24T14:24:41.391 [DEBUG] [Thread-191540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:24:41.391 [DEBUG] [Thread-191540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:24:41.391 [DEBUG] [Thread-191540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:24:41.391 [DEBUG] [Thread-191540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:24:41.422 [INFO] [Thread-191540] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:24:41.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:24:42.140 [DEBUG] [Thread-191540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:24:42.140 [DEBUG] [Thread-191540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:24:42.141 [DEBUG] [Thread-191540] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:24:42.181 [DEBUG] [Thread-191540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:24:42.182 [DEBUG] [Thread-191540] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:24:42.185 [DEBUG] [Thread-191540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:24:42.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:24:42.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:24:42.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:24:42.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:24:42.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:24:42.210 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:24:42.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:24:42.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:24:42.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:24:42.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.517061 -999.00  +21.70  17.63     25   +1.20 1 1 1 1 1   888    0 23.23 94.95 ----- 17.6 17.6 181.6 24.3 28.0 -25.8 26.9 -26.9 28.6 -24.3 29.3 -27.4
2025-11-24T14:24:42.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:24:42.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:24:42.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.517061
2025-11-24T14:24:42.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:24:42.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:24:42.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:24:42.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:24:42.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:24:42.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:24:05', tmtdew=24.65, humidity=19.1, cloud=0.0, wind=20.77, temperature=21.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:24:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:24:42.214 [DEBUG] [Thread-191540] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:24:42.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:24:42.308 [DEBUG] [Thread-191543] [transport.py] [_log()] starting thread (client mode): 0xd07127a0
2025-11-24T14:24:42.309 [DEBUG] [Thread-191543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:24:42.324 [DEBUG] [Thread-191543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:24:42.324 [INFO] [Thread-191543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:24:42.334 [DEBUG] [Thread-191543] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:24:42.334 [DEBUG] [Thread-191543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:24:42.334 [DEBUG] [Thread-191543] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:24:42.334 [DEBUG] [Thread-191543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] client lang: <none>
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] server lang: <none>
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] kex follows: False
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] Compression: none
2025-11-24T14:24:42.335 [DEBUG] [Thread-191543] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:24:42.389 [DEBUG] [Thread-191543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:24:42.390 [DEBUG] [Thread-191543] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:24:42.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:24:42.391 [DEBUG] [Thread-191543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:24:42.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:24:42.445 [DEBUG] [Thread-191543] [transport.py] [_log()] userauth is OK
2025-11-24T14:24:42.446 [DEBUG] [Thread-191543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:24:42.446 [DEBUG] [Thread-191543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:24:42.446 [DEBUG] [Thread-191543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:24:42.446 [DEBUG] [Thread-191543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:24:42.475 [INFO] [Thread-191543] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:24:42.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:24:42.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:24:43.312 [DEBUG] [Thread-191543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:24:43.312 [DEBUG] [Thread-191543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:24:43.360 [DEBUG] [Thread-191543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:24:43.360 [DEBUG] [Thread-191543] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:24:43.369 [DEBUG] [Thread-191543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:24:43.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:24: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')
2025-11-24T14:24:43.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:24:43.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:24:43.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:24:43.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:24:43.415 [DEBUG] [Thread-191543] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:24:50.297 [DEBUG] [Thread-191545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:25:05.346 [DEBUG] [Thread-191546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:25:08.411 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:25:08.412 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:25:12.378 [DEBUG] [Thread-191547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:25:13.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:25:13.416 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:25:13.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:25:14.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 25, 10), 24.03, 20.14, 0.0, 29.48, 21.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:25:14.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:25:10
2025-11-24T14:25:14.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:25:14.618 [DEBUG] [Thread-191548] [transport.py] [_log()] starting thread (client mode): 0xd31529e0
2025-11-24T14:25:14.619 [DEBUG] [Thread-191548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:25:14.634 [DEBUG] [Thread-191548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:25:14.634 [INFO] [Thread-191548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:25:14.637 [DEBUG] [Thread-191548] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:25:14.637 [DEBUG] [Thread-191548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] client lang: <none>
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] server lang: <none>
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] kex follows: False
2025-11-24T14:25:14.638 [DEBUG] [Thread-191548] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:25:14.639 [DEBUG] [Thread-191548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:25:14.639 [DEBUG] [Thread-191548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:25:14.639 [DEBUG] [Thread-191548] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:25:14.639 [DEBUG] [Thread-191548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:25:14.639 [DEBUG] [Thread-191548] [transport.py] [_log()] Compression: none
2025-11-24T14:25:14.639 [DEBUG] [Thread-191548] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:25:14.674 [DEBUG] [Thread-191548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:25:14.675 [DEBUG] [Thread-191548] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:25:14.676 [DEBUG] [Thread-191548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:25:14.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:25:14.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:25:14.717 [DEBUG] [Thread-191548] [transport.py] [_log()] userauth is OK
2025-11-24T14:25:14.718 [DEBUG] [Thread-191548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:25:14.718 [DEBUG] [Thread-191548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:25:14.718 [DEBUG] [Thread-191548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:25:14.718 [DEBUG] [Thread-191548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:25:14.756 [INFO] [Thread-191548] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:25:14.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:25:16.334 [DEBUG] [Thread-191548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:25:16.334 [DEBUG] [Thread-191548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:25:16.343 [DEBUG] [Thread-191548] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:25:16.375 [DEBUG] [Thread-191548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:25:16.375 [DEBUG] [Thread-191548] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:25:16.377 [DEBUG] [Thread-191548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:25:16.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:25:16.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:25:16.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:25:16.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:25:16.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:25:16.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:25:16.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:25:16.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:25:16.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:25:16.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.517061 -999.00  +21.70  17.63     25   +1.20 1 1 1 1 1   888    0 23.23 94.95 ----- 17.6 17.6 181.6 24.3 28.0 -25.8 26.9 -26.9 28.6 -24.3 29.3 -27.4
2025-11-24T14:25:16.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:25:16.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:25:16.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.517061
2025-11-24T14:25:16.530 [DEBUG] [Thread-191548] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:25:16.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:25:16.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:25:16.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:25:16.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:25:16.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:25:16.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:25:10', tmtdew=24.03, humidity=20.14, cloud=0.0, wind=29.48, temperature=21.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:24:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:25:16.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:25:16.628 [DEBUG] [Thread-191551] [transport.py] [_log()] starting thread (client mode): 0xc9b82ad0
2025-11-24T14:25:16.629 [DEBUG] [Thread-191551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:25:16.643 [DEBUG] [Thread-191551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:25:16.643 [INFO] [Thread-191551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] client lang: <none>
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] server lang: <none>
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] kex follows: False
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] Compression: none
2025-11-24T14:25:16.651 [DEBUG] [Thread-191551] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:25:16.710 [DEBUG] [Thread-191551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:25:16.711 [DEBUG] [Thread-191551] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:25:16.711 [DEBUG] [Thread-191551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:25:16.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:25:16.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:25:16.769 [DEBUG] [Thread-191551] [transport.py] [_log()] userauth is OK
2025-11-24T14:25:16.769 [DEBUG] [Thread-191551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:25:16.769 [DEBUG] [Thread-191551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:25:16.769 [DEBUG] [Thread-191551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:25:16.769 [DEBUG] [Thread-191551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:25:16.788 [INFO] [Thread-191551] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:25:16.788 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:25:16.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:25:17.622 [DEBUG] [Thread-191551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:25:17.622 [DEBUG] [Thread-191551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:25:17.661 [DEBUG] [Thread-191551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:25:17.661 [DEBUG] [Thread-191551] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:25:17.670 [DEBUG] [Thread-191551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:25:17.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:25:17.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-11-24T14:25:17.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') -> 00000000
2025-11-24T14:25:17.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:25:17.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:25:17.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:25:17.709 [DEBUG] [Thread-191551] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:25:20.396 [DEBUG] [Thread-191553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:25:35.452 [DEBUG] [Thread-191554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:25:47.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:25:47.732 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:25:47.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:25:48.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 25, 43), 23.82, 19.94, 0.0, 29.47, 21.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:25:48.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:25:43
2025-11-24T14:25:48.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:25:48.828 [DEBUG] [Thread-191555] [transport.py] [_log()] starting thread (client mode): 0xc9b83eb0
2025-11-24T14:25:48.829 [DEBUG] [Thread-191555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:25:48.839 [DEBUG] [Thread-191555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:25:48.839 [INFO] [Thread-191555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:25:48.842 [DEBUG] [Thread-191555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:25:48.842 [DEBUG] [Thread-191555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] client lang: <none>
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] server lang: <none>
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] kex follows: False
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] Compression: none
2025-11-24T14:25:48.843 [DEBUG] [Thread-191555] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:25:48.852 [DEBUG] [Thread-191555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:25:48.852 [DEBUG] [Thread-191555] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:25:48.853 [DEBUG] [Thread-191555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:25:48.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:25:48.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:25:48.853 [DEBUG] [Thread-191555] [transport.py] [_log()] userauth is OK
2025-11-24T14:25:48.853 [DEBUG] [Thread-191555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:25:48.853 [DEBUG] [Thread-191555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:25:48.853 [DEBUG] [Thread-191555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:25:48.853 [DEBUG] [Thread-191555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:25:48.877 [INFO] [Thread-191555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:25:48.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:25:49.474 [DEBUG] [Thread-191555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:25:49.474 [DEBUG] [Thread-191555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:25:49.474 [DEBUG] [Thread-191555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:25:49.515 [DEBUG] [Thread-191555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:25:49.515 [DEBUG] [Thread-191555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:25:49.517 [DEBUG] [Thread-191555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:25:49.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:25:49.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:25:49.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:25:49.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:25:49.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:25:49.543 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:25:49.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:25:49.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.517409 -999.00  +22.20  25.73     25   +1.20 1 1 1 1 1   888    0 23.40 90.86 ----- 25.7 25.7 197.8 37.7 27.9 -27.8 26.9 -27.3 28.5 -25.1 29.3 -28.9
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.517409
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:25:49.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:25:43', tmtdew=23.82, humidity=19.94, cloud=0.0, wind=29.47, temperature=21.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:25:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:25:49.545 [DEBUG] [Thread-191555] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:25:49.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:25:49.628 [DEBUG] [Thread-191558] [transport.py] [_log()] starting thread (client mode): 0xc9b83d60
2025-11-24T14:25:49.628 [DEBUG] [Thread-191558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:25:49.642 [DEBUG] [Thread-191558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:25:49.643 [INFO] [Thread-191558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:25:49.650 [DEBUG] [Thread-191558] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:25:49.650 [DEBUG] [Thread-191558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] client lang: <none>
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] server lang: <none>
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] kex follows: False
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] Compression: none
2025-11-24T14:25:49.651 [DEBUG] [Thread-191558] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:25:49.712 [DEBUG] [Thread-191558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:25:49.712 [DEBUG] [Thread-191558] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:25:49.712 [DEBUG] [Thread-191558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:25:49.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:25:49.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:25:49.769 [DEBUG] [Thread-191558] [transport.py] [_log()] userauth is OK
2025-11-24T14:25:49.769 [DEBUG] [Thread-191558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:25:49.769 [DEBUG] [Thread-191558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:25:49.769 [DEBUG] [Thread-191558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:25:49.769 [DEBUG] [Thread-191558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:25:49.783 [INFO] [Thread-191558] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:25:49.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:25:49.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:25:50.489 [DEBUG] [Thread-191560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:25:50.635 [DEBUG] [Thread-191558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:25:50.635 [DEBUG] [Thread-191558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:25:50.682 [DEBUG] [Thread-191558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:25:50.682 [DEBUG] [Thread-191558] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:25:50.691 [DEBUG] [Thread-191558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:25:50.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:25:50.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-11-24T14:25:50.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-11-24T14:25:50.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:25:50.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:25:50.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:25:50.731 [DEBUG] [Thread-191558] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:26:05.841 [DEBUG] [Thread-191561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:26:08.552 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:26:08.553 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:26:12.622 [DEBUG] [Thread-191562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:26:20.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:26:20.766 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:26:20.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-11-24T14:26:20.870 [DEBUG] [Thread-191563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:26:21.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 26, 15), 23.83, 19.92, 0.0, 26.82, 21.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:26:21.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:26:15
2025-11-24T14:26:21.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:26:21.902 [DEBUG] [Thread-191564] [transport.py] [_log()] starting thread (client mode): 0xd0703dc0
2025-11-24T14:26:21.902 [DEBUG] [Thread-191564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:26:21.911 [DEBUG] [Thread-191564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:26:21.911 [INFO] [Thread-191564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:26:21.912 [DEBUG] [Thread-191564] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] client lang: <none>
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] server lang: <none>
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] kex follows: False
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] Compression: none
2025-11-24T14:26:21.913 [DEBUG] [Thread-191564] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:26:21.926 [DEBUG] [Thread-191564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:26:21.927 [DEBUG] [Thread-191564] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:26:21.928 [DEBUG] [Thread-191564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:26:21.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:26:21.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:26:21.931 [DEBUG] [Thread-191564] [transport.py] [_log()] userauth is OK
2025-11-24T14:26:21.931 [DEBUG] [Thread-191564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:26:21.931 [DEBUG] [Thread-191564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:26:21.932 [DEBUG] [Thread-191564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:26:21.932 [DEBUG] [Thread-191564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:26:21.959 [INFO] [Thread-191564] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:26:21.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:26:22.585 [DEBUG] [Thread-191564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:26:22.585 [DEBUG] [Thread-191564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:26:22.595 [DEBUG] [Thread-191564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:26:22.626 [DEBUG] [Thread-191564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:26:22.627 [DEBUG] [Thread-191564] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:26:22.631 [DEBUG] [Thread-191564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:26:22.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:26:22.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:26:22.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:26:22.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:26:22.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:26:22.659 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:26:22.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:26:22.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:26:22.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:26:22.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.517756 -999.00  +22.00  23.75     25   +1.10 1 1 1 1 1   888    0 23.31 86.75 ----- 23.8 23.8 182.0 33.4 27.8 -26.8 26.9 -27.9 28.4 -25.5 29.2 -30.8
2025-11-24T14:26:22.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:26:22.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:26:22.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.517756
2025-11-24T14:26:22.666 [DEBUG] [Thread-191564] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:26:22.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:26:22.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:26:22.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:26:22.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:26:22.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:26:22.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:26:15', tmtdew=23.83, humidity=19.92, cloud=0.0, wind=26.82, temperature=21.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:25:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:26:22.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:26:22.775 [DEBUG] [Thread-191567] [transport.py] [_log()] starting thread (client mode): 0xd3153670
2025-11-24T14:26:22.775 [DEBUG] [Thread-191567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:26:22.790 [DEBUG] [Thread-191567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:26:22.790 [INFO] [Thread-191567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:26:22.798 [DEBUG] [Thread-191567] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:26:22.798 [DEBUG] [Thread-191567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:26:22.798 [DEBUG] [Thread-191567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:26:22.798 [DEBUG] [Thread-191567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:26:22.799 [DEBUG] [Thread-191567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:26:22.799 [DEBUG] [Thread-191567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:26:22.799 [DEBUG] [Thread-191567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:26:22.799 [DEBUG] [Thread-191567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:26:22.799 [DEBUG] [Thread-191567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:26:22.799 [DEBUG] [Thread-191567] [transport.py] [_log()] client lang: <none>
2025-11-24T14:26:22.799 [DEBUG] [Thread-191567] [transport.py] [_log()] server lang: <none>
2025-11-24T14:26:22.799 [DEBUG] [Thread-191567] [transport.py] [_log()] kex follows: False
2025-11-24T14:26:22.799 [DEBUG] [Thread-191567] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:26:22.800 [DEBUG] [Thread-191567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:26:22.800 [DEBUG] [Thread-191567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:26:22.800 [DEBUG] [Thread-191567] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:26:22.800 [DEBUG] [Thread-191567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:26:22.800 [DEBUG] [Thread-191567] [transport.py] [_log()] Compression: none
2025-11-24T14:26:22.800 [DEBUG] [Thread-191567] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:26:22.862 [DEBUG] [Thread-191567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:26:22.863 [DEBUG] [Thread-191567] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:26:22.863 [DEBUG] [Thread-191567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:26:22.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:26:22.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:26:22.917 [DEBUG] [Thread-191567] [transport.py] [_log()] userauth is OK
2025-11-24T14:26:22.917 [DEBUG] [Thread-191567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:26:22.918 [DEBUG] [Thread-191567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:26:22.918 [DEBUG] [Thread-191567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:26:22.918 [DEBUG] [Thread-191567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:26:22.936 [INFO] [Thread-191567] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:26:22.937 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:26:22.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:26:23.804 [DEBUG] [Thread-191567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:26:23.804 [DEBUG] [Thread-191567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:26:23.853 [DEBUG] [Thread-191567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:26:23.853 [DEBUG] [Thread-191567] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:26:23.861 [DEBUG] [Thread-191567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:26:23.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:26:23.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:26:23.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:26:23.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:26:23.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:26:23.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:26:23.903 [DEBUG] [Thread-191567] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:26:35.905 [DEBUG] [Thread-191569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:26:50.966 [DEBUG] [Thread-191570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:26:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:26:53.911 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:26:53.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-11-24T14:26:54.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 26, 48), 23.93, 19.84, 0.0, 25.09, 21.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:26:54.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:26:48
2025-11-24T14:26:54.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:26:54.950 [DEBUG] [Thread-191571] [transport.py] [_log()] starting thread (client mode): 0xd07113c0
2025-11-24T14:26:54.950 [DEBUG] [Thread-191571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:26:54.971 [DEBUG] [Thread-191571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:26:54.971 [INFO] [Thread-191571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] client lang: <none>
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] server lang: <none>
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] kex follows: False
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] Compression: none
2025-11-24T14:26:54.975 [DEBUG] [Thread-191571] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:26:54.992 [DEBUG] [Thread-191571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:26:54.992 [DEBUG] [Thread-191571] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:26:54.992 [DEBUG] [Thread-191571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:26:54.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:26:54.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:26:54.993 [DEBUG] [Thread-191571] [transport.py] [_log()] userauth is OK
2025-11-24T14:26:54.993 [DEBUG] [Thread-191571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:26:54.993 [DEBUG] [Thread-191571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:26:54.993 [DEBUG] [Thread-191571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:26:54.993 [DEBUG] [Thread-191571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:26:55.009 [INFO] [Thread-191571] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:26:55.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:26:55.642 [DEBUG] [Thread-191571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:26:55.643 [DEBUG] [Thread-191571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:26:55.643 [DEBUG] [Thread-191571] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:26:55.683 [DEBUG] [Thread-191571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:26:55.683 [DEBUG] [Thread-191571] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:26:55.685 [DEBUG] [Thread-191571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:26:55.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:26:55.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:26:55.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:26:55.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:26:55.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:26:55.703 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:26:55.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:26:55.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:26:55.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:26:55.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.518103 -999.00  +21.90  24.38     24   +0.90 1 1 1 1 1   888    0 23.33 89.08 ----- 24.4 24.4 165.8 34.5 27.8 -26.6 26.6 -31.5 28.3 -25.3 29.1 -27.7
2025-11-24T14:26:55.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:26:55.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:26:55.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.518103
2025-11-24T14:26:55.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:26:55.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:26:55.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:26:55.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:26:55.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:26:55.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:26:48', tmtdew=23.93, humidity=19.84, cloud=0.0, wind=25.09, temperature=21.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:26:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:26:55.704 [DEBUG] [Thread-191571] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:26:55.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:26:55.788 [DEBUG] [Thread-191574] [transport.py] [_log()] starting thread (client mode): 0xd0711480
2025-11-24T14:26:55.788 [DEBUG] [Thread-191574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:26:55.802 [DEBUG] [Thread-191574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:26:55.803 [INFO] [Thread-191574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:26:55.811 [DEBUG] [Thread-191574] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:26:55.811 [DEBUG] [Thread-191574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] client lang: <none>
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] server lang: <none>
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] kex follows: False
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] Compression: none
2025-11-24T14:26:55.812 [DEBUG] [Thread-191574] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:26:55.867 [DEBUG] [Thread-191574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:26:55.867 [DEBUG] [Thread-191574] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:26:55.867 [DEBUG] [Thread-191574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:26:55.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:26:55.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:26:55.925 [DEBUG] [Thread-191574] [transport.py] [_log()] userauth is OK
2025-11-24T14:26:55.925 [DEBUG] [Thread-191574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:26:55.925 [DEBUG] [Thread-191574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:26:55.925 [DEBUG] [Thread-191574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:26:55.925 [DEBUG] [Thread-191574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:26:55.939 [INFO] [Thread-191574] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:26:55.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:26:55.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:26:56.801 [DEBUG] [Thread-191574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:26:56.802 [DEBUG] [Thread-191574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:26:56.849 [DEBUG] [Thread-191574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:26:56.850 [DEBUG] [Thread-191574] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:26:56.859 [DEBUG] [Thread-191574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:26:56.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:26:56.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:26:56.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:26:56.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:26:56.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:26:56.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:26:56.896 [DEBUG] [Thread-191574] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:27:06.005 [DEBUG] [Thread-191576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:27:08.701 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:27:08.703 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:27:12.930 [DEBUG] [Thread-191577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:27:21.060 [DEBUG] [Thread-191578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:27:26.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:27:26.919 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:27:26.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-11-24T14:27:27.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 27, 20), 24.17, 19.52, 0.0, 25.57, 21.39, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:27:27.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:27:20
2025-11-24T14:27:27.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:27:27.898 [DEBUG] [Thread-191579] [transport.py] [_log()] starting thread (client mode): 0xd0710eb0
2025-11-24T14:27:27.898 [DEBUG] [Thread-191579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:27:27.909 [DEBUG] [Thread-191579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:27:27.909 [INFO] [Thread-191579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] client lang: <none>
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] server lang: <none>
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] kex follows: False
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] Compression: none
2025-11-24T14:27:27.913 [DEBUG] [Thread-191579] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:27:27.931 [DEBUG] [Thread-191579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:27:27.931 [DEBUG] [Thread-191579] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:27:27.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:27:27.932 [DEBUG] [Thread-191579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:27:27.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:27:27.932 [DEBUG] [Thread-191579] [transport.py] [_log()] userauth is OK
2025-11-24T14:27:27.933 [DEBUG] [Thread-191579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:27:27.933 [DEBUG] [Thread-191579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:27:27.933 [DEBUG] [Thread-191579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:27:27.933 [DEBUG] [Thread-191579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:27:27.948 [INFO] [Thread-191579] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:27:27.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:27:28.675 [DEBUG] [Thread-191579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:27:28.675 [DEBUG] [Thread-191579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:27:28.675 [DEBUG] [Thread-191579] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:27:28.716 [DEBUG] [Thread-191579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:27:28.716 [DEBUG] [Thread-191579] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:27:28.719 [DEBUG] [Thread-191579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:27:28.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:27:28.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:27:28.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:27:28.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:27:28.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:27:28.758 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:27:28.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:27:28.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:27:28.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:27:28.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.518450 -999.00  +21.90  22.90     24   +0.80 1 1 1 1 1   888    0 23.77 87.23 ----- 22.9 22.9 177.2 26.0 27.7 -27.8 26.9 -30.8 28.2 -26.2 29.1 -29.0
2025-11-24T14:27:28.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:27:28.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:27:28.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.518450
2025-11-24T14:27:28.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:27:28.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:27:28.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:27:28.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:27:28.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:27:28.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:27:20', tmtdew=24.17, humidity=19.52, cloud=0.0, wind=25.57, temperature=21.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:26:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:27:28.761 [DEBUG] [Thread-191579] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:27:28.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:27:28.854 [DEBUG] [Thread-191582] [transport.py] [_log()] starting thread (client mode): 0xc9b83340
2025-11-24T14:27:28.854 [DEBUG] [Thread-191582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:27:28.869 [DEBUG] [Thread-191582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:27:28.870 [INFO] [Thread-191582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:27:28.877 [DEBUG] [Thread-191582] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:27:28.877 [DEBUG] [Thread-191582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] client lang: <none>
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] server lang: <none>
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] kex follows: False
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:27:28.878 [DEBUG] [Thread-191582] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:27:28.879 [DEBUG] [Thread-191582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:27:28.879 [DEBUG] [Thread-191582] [transport.py] [_log()] Compression: none
2025-11-24T14:27:28.879 [DEBUG] [Thread-191582] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:27:28.937 [DEBUG] [Thread-191582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:27:28.938 [DEBUG] [Thread-191582] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:27:28.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:27:28.939 [DEBUG] [Thread-191582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:27:28.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:27:28.994 [DEBUG] [Thread-191582] [transport.py] [_log()] userauth is OK
2025-11-24T14:27:28.994 [DEBUG] [Thread-191582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:27:28.994 [DEBUG] [Thread-191582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:27:28.994 [DEBUG] [Thread-191582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:27:28.994 [DEBUG] [Thread-191582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:27:29.018 [INFO] [Thread-191582] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:27:29.018 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:27:29.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:27:29.891 [DEBUG] [Thread-191582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:27:29.891 [DEBUG] [Thread-191582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:27:29.939 [DEBUG] [Thread-191582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:27:29.939 [DEBUG] [Thread-191582] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:27:29.947 [DEBUG] [Thread-191582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:27:29.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:27:29.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-11-24T14:27: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-11-24T14:27:29.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:27:29.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:27:29.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:27:29.978 [DEBUG] [Thread-191582] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:27:36.092 [DEBUG] [Thread-191584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:27:51.148 [DEBUG] [Thread-191585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:28:00.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:28:00.001 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:28:00.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-11-24T14:28:00.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 27, 52), 24.2, 19.56, 0.0, 23.7, 21.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:28:00.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:27:52
2025-11-24T14:28:00.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:28:01.134 [DEBUG] [Thread-191586] [transport.py] [_log()] starting thread (client mode): 0xd07a97b0
2025-11-24T14:28:01.134 [DEBUG] [Thread-191586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:28:01.154 [DEBUG] [Thread-191586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:28:01.154 [INFO] [Thread-191586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:28:01.157 [DEBUG] [Thread-191586] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:28:01.157 [DEBUG] [Thread-191586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] client lang: <none>
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] server lang: <none>
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] kex follows: False
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] Compression: none
2025-11-24T14:28:01.158 [DEBUG] [Thread-191586] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:28:01.174 [DEBUG] [Thread-191586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:28:01.174 [DEBUG] [Thread-191586] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:28:01.175 [DEBUG] [Thread-191586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:28:01.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:28:01.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:28:01.176 [DEBUG] [Thread-191586] [transport.py] [_log()] userauth is OK
2025-11-24T14:28:01.176 [DEBUG] [Thread-191586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:28:01.176 [DEBUG] [Thread-191586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:28:01.176 [DEBUG] [Thread-191586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:28:01.176 [DEBUG] [Thread-191586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:28:01.187 [INFO] [Thread-191586] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:28:01.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:28:01.855 [DEBUG] [Thread-191586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:28:01.855 [DEBUG] [Thread-191586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:28:01.855 [DEBUG] [Thread-191586] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:28:01.897 [DEBUG] [Thread-191586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:28:01.897 [DEBUG] [Thread-191586] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:28:01.899 [DEBUG] [Thread-191586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:28:01.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:28:01.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:28:01.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:28:01.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:28:01.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:28:01.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:28:01.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:28:01.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:28:01.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:28:01.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.518797 -999.00  +21.90  18.71     25   +0.90 1 1 1 1 1   888    0 23.38 87.80 ----- 18.7 18.7 195.8 26.1 27.7 -27.3 26.7 -26.6 28.4 -26.3 29.2 -26.9
2025-11-24T14:28:01.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:28:01.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:28:01.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.518797
2025-11-24T14:28:01.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:28:01.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:28:01.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:28:01.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:28:01.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:28:01.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:27:52', tmtdew=24.2, humidity=19.56, cloud=0.0, wind=23.7, temperature=21.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:27:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:28:01.918 [DEBUG] [Thread-191586] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:28:01.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:28:02.005 [DEBUG] [Thread-191589] [transport.py] [_log()] starting thread (client mode): 0xd317c3a0
2025-11-24T14:28:02.005 [DEBUG] [Thread-191589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:28:02.025 [DEBUG] [Thread-191589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:28:02.025 [INFO] [Thread-191589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] client lang: <none>
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] server lang: <none>
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] kex follows: False
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] Compression: none
2025-11-24T14:28:02.033 [DEBUG] [Thread-191589] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:28:02.092 [DEBUG] [Thread-191589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:28:02.092 [DEBUG] [Thread-191589] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:28:02.092 [DEBUG] [Thread-191589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:28:02.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:28:02.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:28:02.148 [DEBUG] [Thread-191589] [transport.py] [_log()] userauth is OK
2025-11-24T14:28:02.148 [DEBUG] [Thread-191589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:28:02.148 [DEBUG] [Thread-191589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:28:02.148 [DEBUG] [Thread-191589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:28:02.148 [DEBUG] [Thread-191589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:28:02.164 [INFO] [Thread-191589] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:28:02.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:28:02.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:28:03.049 [DEBUG] [Thread-191589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:28:03.049 [DEBUG] [Thread-191589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:28:03.097 [DEBUG] [Thread-191589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:28:03.097 [DEBUG] [Thread-191589] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:28:03.106 [DEBUG] [Thread-191589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:28:03.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:28:03.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-11-24T14:28:03.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-11-24T14:28:03.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:28:03.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:28:03.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:28:03.138 [DEBUG] [Thread-191589] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:28:06.185 [DEBUG] [Thread-191591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:28:08.841 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:28:08.842 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:28:13.169 [DEBUG] [Thread-191592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:28:21.221 [DEBUG] [Thread-191593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:28:33.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:28:33.152 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:28:33.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-11-24T14:28:33.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 28, 25), 24.27, 19.49, 0.0, 21.99, 21.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:28:33.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:28:25
2025-11-24T14:28:34.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:28:34.272 [DEBUG] [Thread-191594] [transport.py] [_log()] starting thread (client mode): 0xd07e9b40
2025-11-24T14:28:34.272 [DEBUG] [Thread-191594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:28:34.283 [DEBUG] [Thread-191594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:28:34.284 [INFO] [Thread-191594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:28:34.286 [DEBUG] [Thread-191594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:28:34.286 [DEBUG] [Thread-191594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] client lang: <none>
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] server lang: <none>
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] kex follows: False
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] Compression: none
2025-11-24T14:28:34.287 [DEBUG] [Thread-191594] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:28:34.300 [DEBUG] [Thread-191594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:28:34.300 [DEBUG] [Thread-191594] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:28:34.300 [DEBUG] [Thread-191594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:28:34.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:28:34.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:28:34.345 [DEBUG] [Thread-191594] [transport.py] [_log()] userauth is OK
2025-11-24T14:28:34.346 [DEBUG] [Thread-191594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:28:34.346 [DEBUG] [Thread-191594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:28:34.346 [DEBUG] [Thread-191594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:28:34.346 [DEBUG] [Thread-191594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:28:34.376 [INFO] [Thread-191594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:28:34.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:28:34.970 [DEBUG] [Thread-191594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:28:34.970 [DEBUG] [Thread-191594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:28:34.971 [DEBUG] [Thread-191594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:28:35.011 [DEBUG] [Thread-191594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:28:35.011 [DEBUG] [Thread-191594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:28:35.014 [DEBUG] [Thread-191594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:28:35.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:28:35.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:28:35.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:28:35.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:28:35.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:28:35.035 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:28:35.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:28:35.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:28:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:28:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.519145 -999.00  +22.20  15.34     24   +1.00 1 1 1 1 1   888    0 23.36 84.28 ----- 15.3 15.3 197.0 27.1 27.8 -27.0 27.1 -26.7 28.4 -25.1 29.3 -26.5
2025-11-24T14:28:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:28:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:28:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.519145
2025-11-24T14:28:35.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:28:35.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:28:35.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:28:35.039 [DEBUG] [Thread-191594] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:28:35.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:28:35.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:28:35.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:28:25', tmtdew=24.27, humidity=19.49, cloud=0.0, wind=21.99, temperature=21.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:27:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:28:35.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:28:35.145 [DEBUG] [Thread-191597] [transport.py] [_log()] starting thread (client mode): 0xd07e96f0
2025-11-24T14:28:35.145 [DEBUG] [Thread-191597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:28:35.159 [DEBUG] [Thread-191597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:28:35.159 [INFO] [Thread-191597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] client lang: <none>
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] server lang: <none>
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] kex follows: False
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:28:35.167 [DEBUG] [Thread-191597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:28:35.168 [DEBUG] [Thread-191597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:28:35.168 [DEBUG] [Thread-191597] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:28:35.168 [DEBUG] [Thread-191597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:28:35.168 [DEBUG] [Thread-191597] [transport.py] [_log()] Compression: none
2025-11-24T14:28:35.168 [DEBUG] [Thread-191597] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:28:35.224 [DEBUG] [Thread-191597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:28:35.225 [DEBUG] [Thread-191597] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:28:35.225 [DEBUG] [Thread-191597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:28:35.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:28:35.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:28:35.285 [DEBUG] [Thread-191597] [transport.py] [_log()] userauth is OK
2025-11-24T14:28:35.286 [DEBUG] [Thread-191597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:28:35.286 [DEBUG] [Thread-191597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:28:35.286 [DEBUG] [Thread-191597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:28:35.286 [DEBUG] [Thread-191597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:28:35.302 [INFO] [Thread-191597] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:28:35.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:28:35.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:28:36.117 [DEBUG] [Thread-191597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:28:36.117 [DEBUG] [Thread-191597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:28:36.165 [DEBUG] [Thread-191597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:28:36.165 [DEBUG] [Thread-191597] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:28:36.173 [DEBUG] [Thread-191597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:28:36.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:28:36.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:28:36.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:28:36.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:28:36.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:28:36.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:28:36.204 [DEBUG] [Thread-191597] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:28:36.251 [DEBUG] [Thread-191599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:28:51.288 [DEBUG] [Thread-191600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:29:06.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:29:06.227 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:29:06.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-11-24T14:29:06.319 [DEBUG] [Thread-191601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:29:06.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 28, 58), 23.65, 20.22, 0.0, 24.7, 21.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:29:06.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:28:58
2025-11-24T14:29:07.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:29:07.297 [DEBUG] [Thread-191602] [transport.py] [_log()] starting thread (client mode): 0xd31b2ad0
2025-11-24T14:29:07.297 [DEBUG] [Thread-191602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:29:07.317 [DEBUG] [Thread-191602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:29:07.317 [INFO] [Thread-191602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:29:07.329 [DEBUG] [Thread-191602] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] client lang: <none>
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] server lang: <none>
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] kex follows: False
2025-11-24T14:29:07.330 [DEBUG] [Thread-191602] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:29:07.331 [DEBUG] [Thread-191602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:29:07.331 [DEBUG] [Thread-191602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:29:07.331 [DEBUG] [Thread-191602] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:29:07.331 [DEBUG] [Thread-191602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:29:07.331 [DEBUG] [Thread-191602] [transport.py] [_log()] Compression: none
2025-11-24T14:29:07.331 [DEBUG] [Thread-191602] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:29:07.351 [DEBUG] [Thread-191602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:29:07.352 [DEBUG] [Thread-191602] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:29:07.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:29:07.353 [DEBUG] [Thread-191602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:29:07.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:29:07.355 [DEBUG] [Thread-191602] [transport.py] [_log()] userauth is OK
2025-11-24T14:29:07.355 [DEBUG] [Thread-191602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:29:07.355 [DEBUG] [Thread-191602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:29:07.355 [DEBUG] [Thread-191602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:29:07.356 [DEBUG] [Thread-191602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:29:07.373 [INFO] [Thread-191602] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:29:07.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:29:08.019 [DEBUG] [Thread-191602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:29:08.019 [DEBUG] [Thread-191602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:29:08.019 [DEBUG] [Thread-191602] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:29:08.060 [DEBUG] [Thread-191602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:29:08.060 [DEBUG] [Thread-191602] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:29:08.061 [DEBUG] [Thread-191602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:29:08.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:29:08.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:29:08.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:29:08.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:29:08.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:29:08.084 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:29:08.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.519492 -999.00  +21.80  17.46     25   +1.00 1 1 1 1 1   888    0 23.34 87.07 ----- 17.5 17.5 194.2 31.8 27.7 -27.3 26.6 -32.2 28.3 -25.3 29.1 -28.2
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.519492
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:29:08.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:29:08.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:28:58', tmtdew=23.65, humidity=20.22, cloud=0.0, wind=24.7, temperature=21.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:28:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:29:08.085 [DEBUG] [Thread-191602] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:29:08.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:29:08.171 [DEBUG] [Thread-191605] [transport.py] [_log()] starting thread (client mode): 0xd317fc70
2025-11-24T14:29:08.171 [DEBUG] [Thread-191605] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:29:08.189 [DEBUG] [Thread-191605] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:29:08.189 [INFO] [Thread-191605] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:29:08.208 [DEBUG] [Thread-191605] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:29:08.208 [DEBUG] [Thread-191605] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:29:08.208 [DEBUG] [Thread-191605] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:29:08.208 [DEBUG] [Thread-191605] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:29:08.208 [DEBUG] [Thread-191605] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:29:08.208 [DEBUG] [Thread-191605] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:29:08.208 [DEBUG] [Thread-191605] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] client lang: <none>
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] server lang: <none>
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] kex follows: False
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] Compression: none
2025-11-24T14:29:08.209 [DEBUG] [Thread-191605] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:29:08.259 [DEBUG] [Thread-191605] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:29:08.259 [DEBUG] [Thread-191605] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:29:08.259 [DEBUG] [Thread-191605] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:29:08.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:29:08.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:29:08.316 [DEBUG] [Thread-191605] [transport.py] [_log()] userauth is OK
2025-11-24T14:29:08.316 [DEBUG] [Thread-191605] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:29:08.317 [DEBUG] [Thread-191605] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:29:08.317 [DEBUG] [Thread-191605] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:29:08.317 [DEBUG] [Thread-191605] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:29:08.330 [INFO] [Thread-191605] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:29:08.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:29:08.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:29:08.981 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:29:08.991 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:29:09.165 [DEBUG] [Thread-191605] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:29:09.165 [DEBUG] [Thread-191605] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:29:09.213 [DEBUG] [Thread-191605] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:29:09.214 [DEBUG] [Thread-191605] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:29:09.224 [DEBUG] [Thread-191605] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:29:09.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:29:09.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-11-24T14:29:09.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-11-24T14:29:09.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:29:09.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:29:09.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:29:09.271 [DEBUG] [Thread-191605] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:29:13.524 [DEBUG] [Thread-191607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:29:21.348 [DEBUG] [Thread-191608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:29:36.404 [DEBUG] [Thread-191609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:29:39.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:29:39.291 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:29:39.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-11-24T14:29:40.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 29, 30), 23.7, 20.17, 0.0, 25.67, 21.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:29:40.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:29:30
2025-11-24T14:29:40.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:29:40.384 [DEBUG] [Thread-191610] [transport.py] [_log()] starting thread (client mode): 0xd31b2ad0
2025-11-24T14:29:40.384 [DEBUG] [Thread-191610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:29:40.404 [DEBUG] [Thread-191610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:29:40.404 [INFO] [Thread-191610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] client lang: <none>
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] server lang: <none>
2025-11-24T14:29:40.407 [DEBUG] [Thread-191610] [transport.py] [_log()] kex follows: False
2025-11-24T14:29:40.408 [DEBUG] [Thread-191610] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:29:40.408 [DEBUG] [Thread-191610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:29:40.408 [DEBUG] [Thread-191610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:29:40.408 [DEBUG] [Thread-191610] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:29:40.408 [DEBUG] [Thread-191610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:29:40.408 [DEBUG] [Thread-191610] [transport.py] [_log()] Compression: none
2025-11-24T14:29:40.408 [DEBUG] [Thread-191610] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:29:40.418 [DEBUG] [Thread-191610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:29:40.419 [DEBUG] [Thread-191610] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:29:40.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:29:40.420 [DEBUG] [Thread-191610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:29:40.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:29:40.461 [DEBUG] [Thread-191610] [transport.py] [_log()] userauth is OK
2025-11-24T14:29:40.462 [DEBUG] [Thread-191610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:29:40.462 [DEBUG] [Thread-191610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:29:40.462 [DEBUG] [Thread-191610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:29:40.462 [DEBUG] [Thread-191610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:29:40.493 [INFO] [Thread-191610] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:29:40.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:29:41.099 [DEBUG] [Thread-191610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:29:41.100 [DEBUG] [Thread-191610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:29:41.100 [DEBUG] [Thread-191610] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:29:41.140 [DEBUG] [Thread-191610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:29:41.141 [DEBUG] [Thread-191610] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:29:41.145 [DEBUG] [Thread-191610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:29:41.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:29:41.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:29:41.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:29:41.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:29:41.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:29:41.167 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:29:41.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:29:41.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:29:41.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:29:41.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.519839 -999.00  +21.70  12.31     25   +1.10 1 1 1 1 1   888    0 23.09 80.94 ----- 12.3 12.3 212.8 25.2 27.7 -26.3 26.7 -32.4 28.4 -24.8 29.1 -28.2
2025-11-24T14:29:41.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:29:41.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:29:41.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.519839
2025-11-24T14:29:41.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:29:41.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:29:41.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:29:41.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:29:41.170 [DEBUG] [Thread-191610] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:29:41.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:29:41.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:29:30', tmtdew=23.7, humidity=20.17, cloud=0.0, wind=25.67, temperature=21.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:28:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:29:41.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:29:41.269 [DEBUG] [Thread-191613] [transport.py] [_log()] starting thread (client mode): 0xd07a9ae0
2025-11-24T14:29:41.269 [DEBUG] [Thread-191613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:29:41.284 [DEBUG] [Thread-191613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:29:41.284 [INFO] [Thread-191613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:29:41.291 [DEBUG] [Thread-191613] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:29:41.291 [DEBUG] [Thread-191613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:29:41.291 [DEBUG] [Thread-191613] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:29:41.291 [DEBUG] [Thread-191613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:29:41.291 [DEBUG] [Thread-191613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] client lang: <none>
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] server lang: <none>
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] kex follows: False
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] Compression: none
2025-11-24T14:29:41.292 [DEBUG] [Thread-191613] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:29:41.348 [DEBUG] [Thread-191613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:29:41.349 [DEBUG] [Thread-191613] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:29:41.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:29:41.350 [DEBUG] [Thread-191613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:29:41.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:29:41.411 [DEBUG] [Thread-191613] [transport.py] [_log()] userauth is OK
2025-11-24T14:29:41.411 [DEBUG] [Thread-191613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:29:41.412 [DEBUG] [Thread-191613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:29:41.412 [DEBUG] [Thread-191613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:29:41.412 [DEBUG] [Thread-191613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:29:41.431 [INFO] [Thread-191613] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:29:41.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:29:41.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:29:42.264 [DEBUG] [Thread-191613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:29:42.265 [DEBUG] [Thread-191613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:29:42.312 [DEBUG] [Thread-191613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:29:42.313 [DEBUG] [Thread-191613] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:29:42.322 [DEBUG] [Thread-191613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:29:42.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:29:42.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-11-24T14:29:42.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-11-24T14:29:42.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:29:42.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:29:42.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:29:42.362 [DEBUG] [Thread-191613] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:29:51.438 [DEBUG] [Thread-191615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:30:06.519 [DEBUG] [Thread-191616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:30:09.142 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:30:09.145 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:30:12.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:30:12.395 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:30:12.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:30:13.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 30, 2), 23.6, 20.34, 0.0, 25.25, 21.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:30:13.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:30:02
2025-11-24T14:30:13.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:30:13.500 [DEBUG] [Thread-191617] [transport.py] [_log()] starting thread (client mode): 0xd3150d60
2025-11-24T14:30:13.501 [DEBUG] [Thread-191617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:30:13.515 [DEBUG] [Thread-191617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:30:13.515 [INFO] [Thread-191617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:30:13.519 [DEBUG] [Thread-191617] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:30:13.519 [DEBUG] [Thread-191617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:30:13.519 [DEBUG] [Thread-191617] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:30:13.519 [DEBUG] [Thread-191617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:30:13.519 [DEBUG] [Thread-191617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:30:13.519 [DEBUG] [Thread-191617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:30:13.519 [DEBUG] [Thread-191617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:30:13.519 [DEBUG] [Thread-191617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:30:13.519 [DEBUG] [Thread-191617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:30:13.520 [DEBUG] [Thread-191617] [transport.py] [_log()] client lang: <none>
2025-11-24T14:30:13.520 [DEBUG] [Thread-191617] [transport.py] [_log()] server lang: <none>
2025-11-24T14:30:13.520 [DEBUG] [Thread-191617] [transport.py] [_log()] kex follows: False
2025-11-24T14:30:13.520 [DEBUG] [Thread-191617] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:30:13.520 [DEBUG] [Thread-191617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:30:13.520 [DEBUG] [Thread-191617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:30:13.520 [DEBUG] [Thread-191617] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:30:13.521 [DEBUG] [Thread-191617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:30:13.521 [DEBUG] [Thread-191617] [transport.py] [_log()] Compression: none
2025-11-24T14:30:13.521 [DEBUG] [Thread-191617] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:30:13.557 [DEBUG] [Thread-191617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:30:13.560 [DEBUG] [Thread-191617] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:30:13.561 [DEBUG] [Thread-191617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:30:13.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:30:13.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:30:13.566 [DEBUG] [Thread-191617] [transport.py] [_log()] userauth is OK
2025-11-24T14:30:13.566 [DEBUG] [Thread-191617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:30:13.566 [DEBUG] [Thread-191617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:30:13.566 [DEBUG] [Thread-191617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:30:13.567 [DEBUG] [Thread-191617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:30:13.594 [INFO] [Thread-191617] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:30:13.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:30:13.866 [DEBUG] [Thread-191619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:30:14.317 [DEBUG] [Thread-191617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:30:14.317 [DEBUG] [Thread-191617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:30:14.327 [DEBUG] [Thread-191617] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:30:14.358 [DEBUG] [Thread-191617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:30:14.358 [DEBUG] [Thread-191617] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:30:14.360 [DEBUG] [Thread-191617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:30:14.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:30:14.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:30:14.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:30:14.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:30:14.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:30:14.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:30:14.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:30:14.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:30:14.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:30:14.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.520533 -999.00  +22.00  12.66     25   +1.30 1 1 1 1 1   888    0 22.53 74.41 ----- 12.7 12.7 204.6 24.8 27.8 -27.1 27.1 -26.5 28.5 -25.5 29.3 -26.9
2025-11-24T14:30:14.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:30:14.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:30:14.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.520533
2025-11-24T14:30:14.386 [DEBUG] [Thread-191617] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:30:14.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:30:14.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:30:14.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:30:14.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:30:14.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:30:14.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:30:02', tmtdew=23.6, humidity=20.34, cloud=0.0, wind=25.25, temperature=21.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:29:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:30:14.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:30:14.480 [DEBUG] [Thread-191621] [transport.py] [_log()] starting thread (client mode): 0xd0712fb0
2025-11-24T14:30:14.480 [DEBUG] [Thread-191621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:30:14.495 [DEBUG] [Thread-191621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:30:14.495 [INFO] [Thread-191621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] client lang: <none>
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] server lang: <none>
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] kex follows: False
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] Compression: none
2025-11-24T14:30:14.504 [DEBUG] [Thread-191621] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:30:14.559 [DEBUG] [Thread-191621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:30:14.559 [DEBUG] [Thread-191621] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:30:14.559 [DEBUG] [Thread-191621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:30:14.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:30:14.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:30:14.619 [DEBUG] [Thread-191621] [transport.py] [_log()] userauth is OK
2025-11-24T14:30:14.619 [DEBUG] [Thread-191621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:30:14.619 [DEBUG] [Thread-191621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:30:14.619 [DEBUG] [Thread-191621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:30:14.619 [DEBUG] [Thread-191621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:30:14.633 [INFO] [Thread-191621] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:30:14.633 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:30:14.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:30:15.492 [DEBUG] [Thread-191621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:30:15.492 [DEBUG] [Thread-191621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:30:15.531 [DEBUG] [Thread-191621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:30:15.531 [DEBUG] [Thread-191621] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:30:15.540 [DEBUG] [Thread-191621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:30:15.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:30:15.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-11-24T14:30:15.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-11-24T14:30:15.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:30:15.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:30:15.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:30:15.575 [DEBUG] [Thread-191621] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:30:21.582 [DEBUG] [Thread-191623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:30:36.634 [DEBUG] [Thread-191624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:30:45.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:30:45.570 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:30:45.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-11-24T14:30:46.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 30, 35), 23.87, 20.27, 0.0, 24.1, 21.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:30:46.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:30:35
2025-11-24T14:30:46.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:30:46.650 [DEBUG] [Thread-191625] [transport.py] [_log()] starting thread (client mode): 0xd07f9de0
2025-11-24T14:30:46.650 [DEBUG] [Thread-191625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:30:46.670 [DEBUG] [Thread-191625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:30:46.671 [INFO] [Thread-191625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:30:46.682 [DEBUG] [Thread-191625] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:30:46.682 [DEBUG] [Thread-191625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:30:46.683 [DEBUG] [Thread-191625] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:30:46.683 [DEBUG] [Thread-191625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:30:46.683 [DEBUG] [Thread-191625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:30:46.683 [DEBUG] [Thread-191625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:30:46.683 [DEBUG] [Thread-191625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:30:46.683 [DEBUG] [Thread-191625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:30:46.683 [DEBUG] [Thread-191625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:30:46.683 [DEBUG] [Thread-191625] [transport.py] [_log()] client lang: <none>
2025-11-24T14:30:46.684 [DEBUG] [Thread-191625] [transport.py] [_log()] server lang: <none>
2025-11-24T14:30:46.684 [DEBUG] [Thread-191625] [transport.py] [_log()] kex follows: False
2025-11-24T14:30:46.684 [DEBUG] [Thread-191625] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:30:46.684 [DEBUG] [Thread-191625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:30:46.684 [DEBUG] [Thread-191625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:30:46.684 [DEBUG] [Thread-191625] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:30:46.684 [DEBUG] [Thread-191625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:30:46.685 [DEBUG] [Thread-191625] [transport.py] [_log()] Compression: none
2025-11-24T14:30:46.685 [DEBUG] [Thread-191625] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:30:46.704 [DEBUG] [Thread-191625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:30:46.705 [DEBUG] [Thread-191625] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:30:46.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:30:46.706 [DEBUG] [Thread-191625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:30:46.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:30:46.708 [DEBUG] [Thread-191625] [transport.py] [_log()] userauth is OK
2025-11-24T14:30:46.709 [DEBUG] [Thread-191625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:30:46.709 [DEBUG] [Thread-191625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:30:46.709 [DEBUG] [Thread-191625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:30:46.709 [DEBUG] [Thread-191625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:30:46.734 [INFO] [Thread-191625] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:30:46.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:30:47.461 [DEBUG] [Thread-191625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:30:47.470 [DEBUG] [Thread-191625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:30:47.470 [DEBUG] [Thread-191625] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:30:47.502 [DEBUG] [Thread-191625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:30:47.502 [DEBUG] [Thread-191625] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:30:47.503 [DEBUG] [Thread-191625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:30:47.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:30:47.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:30:47.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:30:47.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:30:47.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:30:47.515 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:30:47.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.520881 -999.00  +22.20  17.37     25   +1.30 1 1 1 1 1   888    0 23.09 75.60 ----- 17.4 17.4 192.2 25.1 27.9 -26.5 27.1 -26.0 28.6 -24.7 29.4 -26.9
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.520881
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:30:47.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:30:35', tmtdew=23.87, humidity=20.27, cloud=0.0, wind=24.1, temperature=21.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:30:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:30:47.516 [DEBUG] [Thread-191625] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:30:47.589 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:30:47.600 [DEBUG] [Thread-191628] [transport.py] [_log()] starting thread (client mode): 0xd317c040
2025-11-24T14:30:47.600 [DEBUG] [Thread-191628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:30:47.615 [DEBUG] [Thread-191628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:30:47.615 [INFO] [Thread-191628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] client lang: <none>
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] server lang: <none>
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] kex follows: False
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] Compression: none
2025-11-24T14:30:47.623 [DEBUG] [Thread-191628] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:30:47.679 [DEBUG] [Thread-191628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:30:47.679 [DEBUG] [Thread-191628] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:30:47.680 [DEBUG] [Thread-191628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:30:47.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:30:47.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:30:47.736 [DEBUG] [Thread-191628] [transport.py] [_log()] userauth is OK
2025-11-24T14:30:47.736 [DEBUG] [Thread-191628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:30:47.737 [DEBUG] [Thread-191628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:30:47.737 [DEBUG] [Thread-191628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:30:47.737 [DEBUG] [Thread-191628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:30:47.751 [INFO] [Thread-191628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:30:47.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:30:47.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:30:48.611 [DEBUG] [Thread-191628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:30:48.620 [DEBUG] [Thread-191628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:30:48.658 [DEBUG] [Thread-191628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:30:48.659 [DEBUG] [Thread-191628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:30:48.668 [DEBUG] [Thread-191628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:30:48.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:30:48.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-11-24T14:30:48.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-11-24T14:30:48.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:30:48.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:30:48.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:30:48.704 [DEBUG] [Thread-191628] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:30:51.663 [DEBUG] [Thread-191630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:31:06.713 [DEBUG] [Thread-191631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:31:09.285 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:31:09.285 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:31:13.926 [DEBUG] [Thread-191632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:31:18.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:31:18.726 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:31:18.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-11-24T14:31:19.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 31, 8), 24.0, 20.1, 0.0, 21.6, 21.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:31:19.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:31:08
2025-11-24T14:31:19.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:31:19.854 [DEBUG] [Thread-191633] [transport.py] [_log()] starting thread (client mode): 0xc9baab60
2025-11-24T14:31:19.854 [DEBUG] [Thread-191633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:31:19.874 [DEBUG] [Thread-191633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:31:19.874 [INFO] [Thread-191633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] client lang: <none>
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] server lang: <none>
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] kex follows: False
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] Compression: none
2025-11-24T14:31:19.877 [DEBUG] [Thread-191633] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:31:19.894 [DEBUG] [Thread-191633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:31:19.894 [DEBUG] [Thread-191633] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:31:19.895 [DEBUG] [Thread-191633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:31:19.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:31:19.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:31:19.895 [DEBUG] [Thread-191633] [transport.py] [_log()] userauth is OK
2025-11-24T14:31:19.895 [DEBUG] [Thread-191633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:31:19.895 [DEBUG] [Thread-191633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:31:19.895 [DEBUG] [Thread-191633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:31:19.895 [DEBUG] [Thread-191633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:31:19.904 [INFO] [Thread-191633] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:31:19.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:31:20.573 [DEBUG] [Thread-191633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:31:20.573 [DEBUG] [Thread-191633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:31:20.574 [DEBUG] [Thread-191633] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:31:20.615 [DEBUG] [Thread-191633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:31:20.615 [DEBUG] [Thread-191633] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:31:20.619 [DEBUG] [Thread-191633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:31:20.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:31:20.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:31:20.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:31:20.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:31:20.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:31:20.639 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:31:20.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:31:20.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:31:20.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:31:20.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.521228 -999.00  +22.50  19.66     24   +1.40 1 1 1 1 1   888    0 23.35 78.96 ----- 19.7 19.7 184.2 23.4 28.1 -27.9 27.3 -25.7 28.6 -25.7 29.6 -26.2
2025-11-24T14:31:20.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:31:20.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:31:20.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.521228
2025-11-24T14:31:20.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:31:20.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:31:20.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:31:20.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:31:20.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:31:20.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:31:08', tmtdew=24.0, humidity=20.1, cloud=0.0, wind=21.6, temperature=21.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:30:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:31:20.640 [DEBUG] [Thread-191633] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:31:20.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:31:20.725 [DEBUG] [Thread-191636] [transport.py] [_log()] starting thread (client mode): 0xd07f9a80
2025-11-24T14:31:20.725 [DEBUG] [Thread-191636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:31:20.739 [DEBUG] [Thread-191636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:31:20.739 [INFO] [Thread-191636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] client lang: <none>
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] server lang: <none>
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] kex follows: False
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] Compression: none
2025-11-24T14:31:20.747 [DEBUG] [Thread-191636] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:31:20.803 [DEBUG] [Thread-191636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:31:20.803 [DEBUG] [Thread-191636] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:31:20.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:31:20.803 [DEBUG] [Thread-191636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:31:20.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:31:20.860 [DEBUG] [Thread-191636] [transport.py] [_log()] userauth is OK
2025-11-24T14:31:20.860 [DEBUG] [Thread-191636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:31:20.860 [DEBUG] [Thread-191636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:31:20.860 [DEBUG] [Thread-191636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:31:20.861 [DEBUG] [Thread-191636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:31:20.875 [INFO] [Thread-191636] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:31:20.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:31:20.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:31:21.677 [DEBUG] [Thread-191636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:31:21.677 [DEBUG] [Thread-191636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:31:21.725 [DEBUG] [Thread-191636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:31:21.725 [DEBUG] [Thread-191636] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:31:21.735 [DEBUG] [Thread-191636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:31:21.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:31:21.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-11-24T14:31:21.752 [DEBUG] [Thread-191638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:31:21.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-11-24T14:31:21.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:31:21.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:31:21.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:31:21.772 [DEBUG] [Thread-191636] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:31:36.807 [DEBUG] [Thread-191639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:31:51.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:31:51.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:31:51.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-11-24T14:31:51.841 [DEBUG] [Thread-191640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:31:52.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 31, 40), 24.2, 19.84, 0.0, 22.92, 22.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:31:52.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:31:40
2025-11-24T14:31:52.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:31:52.965 [DEBUG] [Thread-191641] [transport.py] [_log()] starting thread (client mode): 0xd07fa6b0
2025-11-24T14:31:52.965 [DEBUG] [Thread-191641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:31:52.984 [DEBUG] [Thread-191641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:31:52.984 [INFO] [Thread-191641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] client lang: <none>
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] server lang: <none>
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] kex follows: False
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] Compression: none
2025-11-24T14:31:52.987 [DEBUG] [Thread-191641] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:31:53.003 [DEBUG] [Thread-191641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:31:53.004 [DEBUG] [Thread-191641] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:31:53.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:31:53.004 [DEBUG] [Thread-191641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:31:53.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:31:53.005 [DEBUG] [Thread-191641] [transport.py] [_log()] userauth is OK
2025-11-24T14:31:53.005 [DEBUG] [Thread-191641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:31:53.005 [DEBUG] [Thread-191641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:31:53.005 [DEBUG] [Thread-191641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:31:53.005 [DEBUG] [Thread-191641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:31:53.013 [INFO] [Thread-191641] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:31:53.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:31:53.771 [DEBUG] [Thread-191641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:31:53.771 [DEBUG] [Thread-191641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:31:53.772 [DEBUG] [Thread-191641] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:31:53.812 [DEBUG] [Thread-191641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:31:53.812 [DEBUG] [Thread-191641] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:31:53.814 [DEBUG] [Thread-191641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:31:53.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:31:53.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:31:53.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:31:53.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:31:53.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:31:53.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:31:53.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.521575 -999.00  +22.30  20.28     24   +1.20 1 1 1 1 1   888    0 23.24 80.70 ----- 20.3 20.3 154.3 28.6 28.0 -27.4 27.2 -25.9 28.7 -26.2 29.6 -26.2
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.521575
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:31:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:31:40', tmtdew=24.2, humidity=19.84, cloud=0.0, wind=22.92, temperature=22.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:31:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:31:53.833 [DEBUG] [Thread-191641] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:31:53.905 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:31:53.917 [DEBUG] [Thread-191644] [transport.py] [_log()] starting thread (client mode): 0xd07eb1c0
2025-11-24T14:31:53.917 [DEBUG] [Thread-191644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:31:53.931 [DEBUG] [Thread-191644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:31:53.931 [INFO] [Thread-191644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] client lang: <none>
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] server lang: <none>
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] kex follows: False
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:31:53.939 [DEBUG] [Thread-191644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:31:53.940 [DEBUG] [Thread-191644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:31:53.940 [DEBUG] [Thread-191644] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:31:53.940 [DEBUG] [Thread-191644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:31:53.940 [DEBUG] [Thread-191644] [transport.py] [_log()] Compression: none
2025-11-24T14:31:53.940 [DEBUG] [Thread-191644] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:31:53.999 [DEBUG] [Thread-191644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:31:53.999 [DEBUG] [Thread-191644] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:31:53.999 [DEBUG] [Thread-191644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:31:54.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:31:54.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:31:54.056 [DEBUG] [Thread-191644] [transport.py] [_log()] userauth is OK
2025-11-24T14:31:54.057 [DEBUG] [Thread-191644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:31:54.057 [DEBUG] [Thread-191644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:31:54.057 [DEBUG] [Thread-191644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:31:54.057 [DEBUG] [Thread-191644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:31:54.070 [INFO] [Thread-191644] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:31:54.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:31:54.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:31:54.905 [DEBUG] [Thread-191644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:31:54.905 [DEBUG] [Thread-191644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:31:54.953 [DEBUG] [Thread-191644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:31:54.953 [DEBUG] [Thread-191644] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:31:54.961 [DEBUG] [Thread-191644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:31:54.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:31:54.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-11-24T14:31:54.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:31:54.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:31:54.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:31:54.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:31:54.993 [DEBUG] [Thread-191644] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:32:06.869 [DEBUG] [Thread-191646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:32:09.427 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:32:09.428 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:32:14.197 [DEBUG] [Thread-191647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:32:21.930 [DEBUG] [Thread-191648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:32:25.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:32:25.002 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:32:25.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-11-24T14:32:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 32, 12), 24.19, 19.84, 0.0, 25.28, 22.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:32:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:32:12
2025-11-24T14:32:25.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:32:26.128 [DEBUG] [Thread-191649] [transport.py] [_log()] starting thread (client mode): 0xd07eacb0
2025-11-24T14:32:26.128 [DEBUG] [Thread-191649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:32:26.149 [DEBUG] [Thread-191649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:32:26.149 [INFO] [Thread-191649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:32:26.152 [DEBUG] [Thread-191649] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:32:26.152 [DEBUG] [Thread-191649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:32:26.152 [DEBUG] [Thread-191649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:32:26.152 [DEBUG] [Thread-191649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:32:26.152 [DEBUG] [Thread-191649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:32:26.152 [DEBUG] [Thread-191649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:32:26.152 [DEBUG] [Thread-191649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] client lang: <none>
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] server lang: <none>
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] kex follows: False
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] Compression: none
2025-11-24T14:32:26.153 [DEBUG] [Thread-191649] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:32:26.172 [DEBUG] [Thread-191649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:32:26.173 [DEBUG] [Thread-191649] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:32:26.173 [DEBUG] [Thread-191649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:32:26.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:32:26.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:32:26.176 [DEBUG] [Thread-191649] [transport.py] [_log()] userauth is OK
2025-11-24T14:32:26.176 [DEBUG] [Thread-191649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:32:26.176 [DEBUG] [Thread-191649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:32:26.176 [DEBUG] [Thread-191649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:32:26.177 [DEBUG] [Thread-191649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:32:26.197 [INFO] [Thread-191649] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:32:26.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:32:26.857 [DEBUG] [Thread-191649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:32:26.857 [DEBUG] [Thread-191649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:32:26.858 [DEBUG] [Thread-191649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:32:26.898 [DEBUG] [Thread-191649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:32:26.899 [DEBUG] [Thread-191649] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:32:26.902 [DEBUG] [Thread-191649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:32:26.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:32:26.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:32:26.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:32:26.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:32:26.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:32:26.927 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:32:26.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:32:26.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:32:26.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:32:26.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.521922 -999.00  +22.20  17.86     25   +1.40 1 1 1 1 1   888    0 23.35 75.90 ----- 17.9 17.9 161.8 25.4 28.1 -27.5 27.4 -25.6 28.7 -26.5 29.7 -27.9
2025-11-24T14:32:26.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:32:26.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:32:26.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.521922
2025-11-24T14:32:26.936 [DEBUG] [Thread-191649] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:32:26.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:32:26.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:32:26.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:32:26.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:32:26.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:32:26.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:32:12', tmtdew=24.19, humidity=19.84, cloud=0.0, wind=25.28, temperature=22.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:31:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:32: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-11-24T14:32:27.039 [DEBUG] [Thread-191652] [transport.py] [_log()] starting thread (client mode): 0xd07e91e0
2025-11-24T14:32:27.039 [DEBUG] [Thread-191652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:32:27.058 [DEBUG] [Thread-191652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:32:27.058 [INFO] [Thread-191652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:32:27.067 [DEBUG] [Thread-191652] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:32:27.067 [DEBUG] [Thread-191652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:32:27.067 [DEBUG] [Thread-191652] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] client lang: <none>
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] server lang: <none>
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] kex follows: False
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:32:27.068 [DEBUG] [Thread-191652] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:32:27.069 [DEBUG] [Thread-191652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:32:27.069 [DEBUG] [Thread-191652] [transport.py] [_log()] Compression: none
2025-11-24T14:32:27.069 [DEBUG] [Thread-191652] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:32:27.125 [DEBUG] [Thread-191652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:32:27.125 [DEBUG] [Thread-191652] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:32:27.126 [DEBUG] [Thread-191652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:32:27.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:32:27.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:32:27.184 [DEBUG] [Thread-191652] [transport.py] [_log()] userauth is OK
2025-11-24T14:32:27.185 [DEBUG] [Thread-191652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:32:27.185 [DEBUG] [Thread-191652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:32:27.185 [DEBUG] [Thread-191652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:32:27.185 [DEBUG] [Thread-191652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:32:27.204 [INFO] [Thread-191652] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:32:27.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:32:27.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:32:28.064 [DEBUG] [Thread-191652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:32:28.064 [DEBUG] [Thread-191652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:32:28.112 [DEBUG] [Thread-191652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:32:28.112 [DEBUG] [Thread-191652] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:32:28.120 [DEBUG] [Thread-191652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:32:28.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:32:28.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-11-24T14:32: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-11-24T14:32:28.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:32:28.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:32:28.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:32:28.159 [DEBUG] [Thread-191652] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:32:36.963 [DEBUG] [Thread-191654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:32:52.004 [DEBUG] [Thread-191655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:32:58.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:32:58.177 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:32:58.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-11-24T14:32:58.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 32, 45), 24.61, 19.0, 0.0, 30.12, 22.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:32:58.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:32:45
2025-11-24T14:32:59.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:32:59.279 [DEBUG] [Thread-191656] [transport.py] [_log()] starting thread (client mode): 0xd07f8400
2025-11-24T14:32:59.279 [DEBUG] [Thread-191656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:32:59.291 [DEBUG] [Thread-191656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:32:59.292 [INFO] [Thread-191656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:32:59.293 [DEBUG] [Thread-191656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] client lang: <none>
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] server lang: <none>
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] kex follows: False
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] Compression: none
2025-11-24T14:32:59.294 [DEBUG] [Thread-191656] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:32:59.306 [DEBUG] [Thread-191656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:32:59.308 [DEBUG] [Thread-191656] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:32:59.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:32:59.309 [DEBUG] [Thread-191656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:32:59.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:32:59.312 [DEBUG] [Thread-191656] [transport.py] [_log()] userauth is OK
2025-11-24T14:32:59.312 [DEBUG] [Thread-191656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:32:59.312 [DEBUG] [Thread-191656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:32:59.312 [DEBUG] [Thread-191656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:32:59.312 [DEBUG] [Thread-191656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:32:59.332 [INFO] [Thread-191656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:32:59.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:32:59.919 [DEBUG] [Thread-191656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:32:59.919 [DEBUG] [Thread-191656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:32:59.920 [DEBUG] [Thread-191656] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:32:59.961 [DEBUG] [Thread-191656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:32:59.961 [DEBUG] [Thread-191656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:32:59.964 [DEBUG] [Thread-191656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:32:59.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:32:59.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:32:59.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:32:59.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:32:59.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:32:59.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:32:59.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:32:59.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:32:59.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:32:59.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.522270 -999.00  +22.30  29.69     25   +1.30 1 1 1 1 1   888    0 22.76 71.22 ----- 29.7 29.7 168.9 32.9 28.1 -29.0 27.4 -26.7 28.7 -27.7 29.6 -28.7
2025-11-24T14:32:59.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:32:59.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:32:59.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.522270
2025-11-24T14:32:59.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:32:59.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:32:59.992 [DEBUG] [Thread-191656] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:32:59.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:32:59.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:32:59.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:32:59.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:32:45', tmtdew=24.61, humidity=19.0, cloud=0.0, wind=30.12, temperature=22.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:32:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:33:00.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:33:00.087 [DEBUG] [Thread-191659] [transport.py] [_log()] starting thread (client mode): 0xd07e8e20
2025-11-24T14:33:00.087 [DEBUG] [Thread-191659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:33:00.102 [DEBUG] [Thread-191659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:33:00.102 [INFO] [Thread-191659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:33:00.109 [DEBUG] [Thread-191659] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] client lang: <none>
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] server lang: <none>
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] kex follows: False
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] Compression: none
2025-11-24T14:33:00.110 [DEBUG] [Thread-191659] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:33:00.169 [DEBUG] [Thread-191659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:33:00.169 [DEBUG] [Thread-191659] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:33:00.170 [DEBUG] [Thread-191659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:33:00.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:33:00.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:33:00.225 [DEBUG] [Thread-191659] [transport.py] [_log()] userauth is OK
2025-11-24T14:33:00.225 [DEBUG] [Thread-191659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:33:00.226 [DEBUG] [Thread-191659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:33:00.226 [DEBUG] [Thread-191659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:33:00.226 [DEBUG] [Thread-191659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:33:00.244 [INFO] [Thread-191659] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:33:00.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:33:00.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:33:01.070 [DEBUG] [Thread-191659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:33:01.070 [DEBUG] [Thread-191659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:33:01.118 [DEBUG] [Thread-191659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:33:01.118 [DEBUG] [Thread-191659] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:33:01.126 [DEBUG] [Thread-191659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:33:01.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:33:01.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-11-24T14:33:01.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-11-24T14:33:01.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:33:01.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:33:01.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:33:01.158 [DEBUG] [Thread-191659] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:33:07.040 [DEBUG] [Thread-191661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:33:09.569 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:33:09.569 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:33:14.435 [DEBUG] [Thread-191662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:33:22.101 [DEBUG] [Thread-191663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:33:31.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:33:31.192 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:33:31.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-11-24T14:33:31.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 33, 17), 24.83, 18.72, 0.0, 29.54, 22.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:33:31.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:33:17
2025-11-24T14:33:32.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:33:32.261 [DEBUG] [Thread-191664] [transport.py] [_log()] starting thread (client mode): 0xd07e9540
2025-11-24T14:33:32.262 [DEBUG] [Thread-191664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:33:32.278 [DEBUG] [Thread-191664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:33:32.278 [INFO] [Thread-191664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:33:32.282 [DEBUG] [Thread-191664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:33:32.282 [DEBUG] [Thread-191664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:33:32.282 [DEBUG] [Thread-191664] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:33:32.282 [DEBUG] [Thread-191664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:33:32.282 [DEBUG] [Thread-191664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:33:32.282 [DEBUG] [Thread-191664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:33:32.282 [DEBUG] [Thread-191664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:33:32.282 [DEBUG] [Thread-191664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:33:32.282 [DEBUG] [Thread-191664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:33:32.282 [DEBUG] [Thread-191664] [transport.py] [_log()] client lang: <none>
2025-11-24T14:33:32.283 [DEBUG] [Thread-191664] [transport.py] [_log()] server lang: <none>
2025-11-24T14:33:32.283 [DEBUG] [Thread-191664] [transport.py] [_log()] kex follows: False
2025-11-24T14:33:32.283 [DEBUG] [Thread-191664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:33:32.283 [DEBUG] [Thread-191664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:33:32.283 [DEBUG] [Thread-191664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:33:32.284 [DEBUG] [Thread-191664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:33:32.284 [DEBUG] [Thread-191664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:33:32.284 [DEBUG] [Thread-191664] [transport.py] [_log()] Compression: none
2025-11-24T14:33:32.284 [DEBUG] [Thread-191664] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:33:32.314 [DEBUG] [Thread-191664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:33:32.315 [DEBUG] [Thread-191664] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:33:32.316 [DEBUG] [Thread-191664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:33:32.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:33:32.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:33:32.319 [DEBUG] [Thread-191664] [transport.py] [_log()] userauth is OK
2025-11-24T14:33:32.319 [DEBUG] [Thread-191664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:33:32.320 [DEBUG] [Thread-191664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:33:32.320 [DEBUG] [Thread-191664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:33:32.320 [DEBUG] [Thread-191664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:33:32.356 [INFO] [Thread-191664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:33:32.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:33:33.009 [DEBUG] [Thread-191664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:33:33.009 [DEBUG] [Thread-191664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:33:33.009 [DEBUG] [Thread-191664] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:33:33.050 [DEBUG] [Thread-191664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:33:33.050 [DEBUG] [Thread-191664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:33:33.052 [DEBUG] [Thread-191664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:33:33.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:33:33.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:33:33.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:33:33.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:33:33.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:33:33.071 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:33:33.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:33:33.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:33:33.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:33:33.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.522617 -999.00  +22.00  22.65     24   +0.90 1 1 1 1 1   888    0 22.75 64.01 ----- 22.6 22.6 177.8 39.7 27.9 -28.3 27.1 -30.1 28.5 -28.1 29.3 -27.8
2025-11-24T14:33:33.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:33:33.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:33:33.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.522617
2025-11-24T14:33:33.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:33:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:33:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:33:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:33:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:33:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:33:17', tmtdew=24.83, humidity=18.72, cloud=0.0, wind=29.54, temperature=22.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:32:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:33:33.074 [DEBUG] [Thread-191664] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:33:33.147 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:33:33.159 [DEBUG] [Thread-191667] [transport.py] [_log()] starting thread (client mode): 0xd07f9300
2025-11-24T14:33:33.159 [DEBUG] [Thread-191667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:33:33.173 [DEBUG] [Thread-191667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:33:33.173 [INFO] [Thread-191667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] client lang: <none>
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] server lang: <none>
2025-11-24T14:33:33.181 [DEBUG] [Thread-191667] [transport.py] [_log()] kex follows: False
2025-11-24T14:33:33.182 [DEBUG] [Thread-191667] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:33:33.182 [DEBUG] [Thread-191667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:33:33.182 [DEBUG] [Thread-191667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:33:33.182 [DEBUG] [Thread-191667] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:33:33.182 [DEBUG] [Thread-191667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:33:33.182 [DEBUG] [Thread-191667] [transport.py] [_log()] Compression: none
2025-11-24T14:33:33.182 [DEBUG] [Thread-191667] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:33:33.239 [DEBUG] [Thread-191667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:33:33.239 [DEBUG] [Thread-191667] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:33:33.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:33:33.240 [DEBUG] [Thread-191667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:33:33.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:33:33.296 [DEBUG] [Thread-191667] [transport.py] [_log()] userauth is OK
2025-11-24T14:33:33.296 [DEBUG] [Thread-191667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:33:33.296 [DEBUG] [Thread-191667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:33:33.296 [DEBUG] [Thread-191667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:33:33.296 [DEBUG] [Thread-191667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:33:33.313 [INFO] [Thread-191667] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:33:33.313 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:33:33.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:33:34.159 [DEBUG] [Thread-191667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:33:34.159 [DEBUG] [Thread-191667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:33:34.207 [DEBUG] [Thread-191667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:33:34.207 [DEBUG] [Thread-191667] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:33:34.216 [DEBUG] [Thread-191667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:33:34.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:33:34.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:33:34.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:33:34.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:33:34.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:33:34.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:33:34.253 [DEBUG] [Thread-191667] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:33:37.155 [DEBUG] [Thread-191669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:33:52.224 [DEBUG] [Thread-191670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:34:04.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:34:04.253 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:34:04.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-11-24T14:34:05.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 33, 50), 24.77, 19.04, 0.0, 32.66, 22.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:34:05.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:33:50
2025-11-24T14:34:05.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:34:05.316 [DEBUG] [Thread-191671] [transport.py] [_log()] starting thread (client mode): 0xd07aa830
2025-11-24T14:34:05.317 [DEBUG] [Thread-191671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:34:05.326 [DEBUG] [Thread-191671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:34:05.326 [INFO] [Thread-191671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:34:05.329 [DEBUG] [Thread-191671] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:34:05.329 [DEBUG] [Thread-191671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] client lang: <none>
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] server lang: <none>
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] kex follows: False
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] Compression: none
2025-11-24T14:34:05.330 [DEBUG] [Thread-191671] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:34:05.338 [DEBUG] [Thread-191671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:34:05.339 [DEBUG] [Thread-191671] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:34:05.339 [DEBUG] [Thread-191671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:34:05.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:34:05.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:34:05.342 [DEBUG] [Thread-191671] [transport.py] [_log()] userauth is OK
2025-11-24T14:34:05.342 [DEBUG] [Thread-191671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:34:05.342 [DEBUG] [Thread-191671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:34:05.342 [DEBUG] [Thread-191671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:34:05.342 [DEBUG] [Thread-191671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:34:05.363 [INFO] [Thread-191671] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:34:05.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:34:06.087 [DEBUG] [Thread-191671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:34:06.087 [DEBUG] [Thread-191671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:34:06.087 [DEBUG] [Thread-191671] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:34:06.128 [DEBUG] [Thread-191671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:34:06.129 [DEBUG] [Thread-191671] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:34:06.137 [DEBUG] [Thread-191671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:34:06.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:34:06.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:34:06.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:34:06.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:34:06.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:34:06.158 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:34:06.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:34:06.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:34:06.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:34:06.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.522964 -999.00  +21.80  20.18     25   +0.90 1 1 1 1 1   888    0 23.09 59.21 ----- 20.2 20.2 178.8 30.5 27.8 -27.8 26.8 -32.2 28.4 -27.2 29.3 -30.2
2025-11-24T14:34:06.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:34:06.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:34:06.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.522964
2025-11-24T14:34:06.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:34:06.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:34:06.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:34:06.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:34:06.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:34:06.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:33:50', tmtdew=24.77, humidity=19.04, cloud=0.0, wind=32.66, temperature=22.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:33:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:34:06.161 [DEBUG] [Thread-191671] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:34:06.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:34:06.256 [DEBUG] [Thread-191674] [transport.py] [_log()] starting thread (client mode): 0xd07a9810
2025-11-24T14:34:06.256 [DEBUG] [Thread-191674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:34:06.271 [DEBUG] [Thread-191674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:34:06.271 [INFO] [Thread-191674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] client lang: <none>
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] server lang: <none>
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] kex follows: False
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] Compression: none
2025-11-24T14:34:06.281 [DEBUG] [Thread-191674] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:34:06.346 [DEBUG] [Thread-191674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:34:06.346 [DEBUG] [Thread-191674] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:34:06.347 [DEBUG] [Thread-191674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:34:06.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:34:06.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:34:06.409 [DEBUG] [Thread-191674] [transport.py] [_log()] userauth is OK
2025-11-24T14:34:06.409 [DEBUG] [Thread-191674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:34:06.410 [DEBUG] [Thread-191674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:34:06.410 [DEBUG] [Thread-191674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:34:06.410 [DEBUG] [Thread-191674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:34:06.430 [INFO] [Thread-191674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:34:06.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:34:06.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:34:07.257 [DEBUG] [Thread-191676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:34:07.317 [DEBUG] [Thread-191674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:34:07.317 [DEBUG] [Thread-191674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:34:07.365 [DEBUG] [Thread-191674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:34:07.365 [DEBUG] [Thread-191674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:34:07.374 [DEBUG] [Thread-191674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:34:07.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:34:07.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')
2025-11-24T14:34:07.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:34:07.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:34:07.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:34:07.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:34:07.412 [DEBUG] [Thread-191674] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:34:09.711 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:34:09.713 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:34:14.553 [DEBUG] [Thread-191677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:34:22.308 [DEBUG] [Thread-191678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:34:37.345 [DEBUG] [Thread-191679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:34:37.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:34:37.413 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:34:37.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-11-24T14:34:38.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 34, 22), 24.74, 19.1, 0.0, 29.57, 22.32, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:34:38.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:34:22
2025-11-24T14:34:38.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:34:38.552 [DEBUG] [Thread-191680] [transport.py] [_log()] starting thread (client mode): 0xd07fa620
2025-11-24T14:34:38.552 [DEBUG] [Thread-191680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:34:38.572 [DEBUG] [Thread-191680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:34:38.573 [INFO] [Thread-191680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:34:38.583 [DEBUG] [Thread-191680] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:34:38.583 [DEBUG] [Thread-191680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:34:38.583 [DEBUG] [Thread-191680] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:34:38.583 [DEBUG] [Thread-191680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:34:38.584 [DEBUG] [Thread-191680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:34:38.584 [DEBUG] [Thread-191680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:34:38.584 [DEBUG] [Thread-191680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:34:38.584 [DEBUG] [Thread-191680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:34:38.584 [DEBUG] [Thread-191680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:34:38.584 [DEBUG] [Thread-191680] [transport.py] [_log()] client lang: <none>
2025-11-24T14:34:38.584 [DEBUG] [Thread-191680] [transport.py] [_log()] server lang: <none>
2025-11-24T14:34:38.584 [DEBUG] [Thread-191680] [transport.py] [_log()] kex follows: False
2025-11-24T14:34:38.584 [DEBUG] [Thread-191680] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:34:38.585 [DEBUG] [Thread-191680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:34:38.585 [DEBUG] [Thread-191680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:34:38.585 [DEBUG] [Thread-191680] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:34:38.585 [DEBUG] [Thread-191680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:34:38.585 [DEBUG] [Thread-191680] [transport.py] [_log()] Compression: none
2025-11-24T14:34:38.585 [DEBUG] [Thread-191680] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:34:38.604 [DEBUG] [Thread-191680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:34:38.605 [DEBUG] [Thread-191680] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:34:38.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:34:38.606 [DEBUG] [Thread-191680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:34:38.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:34:38.608 [DEBUG] [Thread-191680] [transport.py] [_log()] userauth is OK
2025-11-24T14:34:38.608 [DEBUG] [Thread-191680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:34:38.608 [DEBUG] [Thread-191680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:34:38.608 [DEBUG] [Thread-191680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:34:38.608 [DEBUG] [Thread-191680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:34:38.633 [INFO] [Thread-191680] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:34:38.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:34:39.232 [DEBUG] [Thread-191680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:34:39.242 [DEBUG] [Thread-191680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:34:39.242 [DEBUG] [Thread-191680] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:34:39.273 [DEBUG] [Thread-191680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:34:39.274 [DEBUG] [Thread-191680] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:34:39.277 [DEBUG] [Thread-191680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:34:39.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:34:39.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:34:39.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:34:39.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:34:39.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:34:39.295 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:34:39.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:34:39.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:34:39.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:34:39.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.523311 -999.00  +22.20  17.80     24   +1.10 1 1 1 1 1   888    0 22.51 55.22 ----- 17.8 17.8 166.8 34.1 27.8 -26.9 26.9 -26.2 28.4 -27.0 29.4 -28.5
2025-11-24T14:34:39.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:34:39.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:34:39.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.523311
2025-11-24T14:34:39.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:34:39.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:34:39.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:34:39.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:34:39.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:34:39.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:34:22', tmtdew=24.74, humidity=19.1, cloud=0.0, wind=29.57, temperature=22.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:33:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:34:39.299 [DEBUG] [Thread-191680] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:34:39.383 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:34:39.396 [DEBUG] [Thread-191683] [transport.py] [_log()] starting thread (client mode): 0xd07eb070
2025-11-24T14:34:39.396 [DEBUG] [Thread-191683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:34:39.411 [DEBUG] [Thread-191683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:34:39.411 [INFO] [Thread-191683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:34:39.427 [DEBUG] [Thread-191683] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] client lang: <none>
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] server lang: <none>
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] kex follows: False
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] Compression: none
2025-11-24T14:34:39.428 [DEBUG] [Thread-191683] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:34:39.475 [DEBUG] [Thread-191683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:34:39.475 [DEBUG] [Thread-191683] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:34:39.475 [DEBUG] [Thread-191683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:34:39.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:34:39.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:34:39.532 [DEBUG] [Thread-191683] [transport.py] [_log()] userauth is OK
2025-11-24T14:34:39.532 [DEBUG] [Thread-191683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:34:39.532 [DEBUG] [Thread-191683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:34:39.532 [DEBUG] [Thread-191683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:34:39.532 [DEBUG] [Thread-191683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:34:39.549 [INFO] [Thread-191683] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:34:39.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:34:39.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:34:40.371 [DEBUG] [Thread-191683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:34:40.372 [DEBUG] [Thread-191683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:34:40.420 [DEBUG] [Thread-191683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:34:40.420 [DEBUG] [Thread-191683] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:34:40.429 [DEBUG] [Thread-191683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:34:40.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:34:40.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-11-24T14:34:40.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-11-24T14:34:40.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:34:40.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:34:40.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:34:40.463 [DEBUG] [Thread-191683] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:34:52.390 [DEBUG] [Thread-191685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:35:07.444 [DEBUG] [Thread-191686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:35:09.853 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:35:09.854 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:35:10.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:35:10.467 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:35:10.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:35:11.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 34, 55), 25.11, 18.51, 0.0, 23.59, 22.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:35:11.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:34:55
2025-11-24T14:35:11.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:35:11.630 [DEBUG] [Thread-191687] [transport.py] [_log()] starting thread (client mode): 0xd07eb100
2025-11-24T14:35:11.630 [DEBUG] [Thread-191687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:35:11.641 [DEBUG] [Thread-191687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:35:11.641 [INFO] [Thread-191687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] client lang: <none>
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] server lang: <none>
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] kex follows: False
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:35:11.642 [DEBUG] [Thread-191687] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:35:11.643 [DEBUG] [Thread-191687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:35:11.643 [DEBUG] [Thread-191687] [transport.py] [_log()] Compression: none
2025-11-24T14:35:11.643 [DEBUG] [Thread-191687] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:35:11.652 [DEBUG] [Thread-191687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:35:11.652 [DEBUG] [Thread-191687] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:35:11.653 [DEBUG] [Thread-191687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:35:11.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:35:11.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:35:11.654 [DEBUG] [Thread-191687] [transport.py] [_log()] userauth is OK
2025-11-24T14:35:11.654 [DEBUG] [Thread-191687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:35:11.654 [DEBUG] [Thread-191687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:35:11.654 [DEBUG] [Thread-191687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:35:11.654 [DEBUG] [Thread-191687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:35:11.671 [INFO] [Thread-191687] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:35:11.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:35:14.161 [DEBUG] [Thread-191687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:35:14.161 [DEBUG] [Thread-191687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:35:14.162 [DEBUG] [Thread-191687] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:35:14.202 [DEBUG] [Thread-191687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:35:14.203 [DEBUG] [Thread-191687] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:35:14.206 [DEBUG] [Thread-191687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:35:14.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:35:14.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:35:14.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:35:14.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:35:14.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:35:14.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:35:14.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:35:14.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:35:14.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:35:14.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.524353 -999.00  +21.90  25.23     24   +0.50 1 1 1 1 1   888    0 22.17 50.31 ----- 25.2 25.2 175.2 31.0 27.6 -28.7 26.5 -33.7 28.2 -28.6 29.1 -28.9
2025-11-24T14:35:14.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:35:14.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:35:14.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.524353
2025-11-24T14:35:14.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:35:14.239 [DEBUG] [Thread-191687] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:35:14.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:35:14.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:35:14.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:35:14.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:35:14.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:34:55', tmtdew=25.11, humidity=18.51, cloud=0.0, wind=23.59, temperature=22.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:35:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:35:14.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:35:14.336 [DEBUG] [Thread-191690] [transport.py] [_log()] starting thread (client mode): 0xd07f8580
2025-11-24T14:35:14.336 [DEBUG] [Thread-191690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:35:14.350 [DEBUG] [Thread-191690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:35:14.350 [INFO] [Thread-191690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:35:14.361 [DEBUG] [Thread-191690] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:35:14.361 [DEBUG] [Thread-191690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:35:14.361 [DEBUG] [Thread-191690] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:35:14.362 [DEBUG] [Thread-191690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:35:14.362 [DEBUG] [Thread-191690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:35:14.362 [DEBUG] [Thread-191690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:35:14.362 [DEBUG] [Thread-191690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:35:14.362 [DEBUG] [Thread-191690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:35:14.362 [DEBUG] [Thread-191690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:35:14.362 [DEBUG] [Thread-191690] [transport.py] [_log()] client lang: <none>
2025-11-24T14:35:14.362 [DEBUG] [Thread-191690] [transport.py] [_log()] server lang: <none>
2025-11-24T14:35:14.362 [DEBUG] [Thread-191690] [transport.py] [_log()] kex follows: False
2025-11-24T14:35:14.363 [DEBUG] [Thread-191690] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:35:14.363 [DEBUG] [Thread-191690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:35:14.363 [DEBUG] [Thread-191690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:35:14.363 [DEBUG] [Thread-191690] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:35:14.363 [DEBUG] [Thread-191690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:35:14.363 [DEBUG] [Thread-191690] [transport.py] [_log()] Compression: none
2025-11-24T14:35:14.363 [DEBUG] [Thread-191690] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:35:14.429 [DEBUG] [Thread-191690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:35:14.430 [DEBUG] [Thread-191690] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:35:14.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:35:14.431 [DEBUG] [Thread-191690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:35:14.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:35:14.489 [DEBUG] [Thread-191690] [transport.py] [_log()] userauth is OK
2025-11-24T14:35:14.489 [DEBUG] [Thread-191690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:35:14.489 [DEBUG] [Thread-191690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:35:14.490 [DEBUG] [Thread-191690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:35:14.490 [DEBUG] [Thread-191690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:35:14.509 [INFO] [Thread-191690] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:35:14.509 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:35:14.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:35:14.910 [DEBUG] [Thread-191692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:35:15.335 [DEBUG] [Thread-191690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:35:15.335 [DEBUG] [Thread-191690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:35:15.382 [DEBUG] [Thread-191690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:35:15.382 [DEBUG] [Thread-191690] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:35:15.391 [DEBUG] [Thread-191690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:35:15.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:35:15.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-11-24T14:35:15.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-11-24T14:35:15.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:35:15.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:35:15.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:35:15.423 [DEBUG] [Thread-191690] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:35:22.481 [DEBUG] [Thread-191693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:35:37.534 [DEBUG] [Thread-191694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:35:45.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:35:45.443 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:35:45.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:35:46.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 35, 27), 25.6, 17.96, 0.0, 26.48, 22.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:35:46.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:35:27
2025-11-24T14:35:46.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:35:46.490 [DEBUG] [Thread-191695] [transport.py] [_log()] starting thread (client mode): 0xc9b806a0
2025-11-24T14:35:46.490 [DEBUG] [Thread-191695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:35:46.507 [DEBUG] [Thread-191695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:35:46.507 [INFO] [Thread-191695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] client lang: <none>
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] server lang: <none>
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] kex follows: False
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:35:46.510 [DEBUG] [Thread-191695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:35:46.511 [DEBUG] [Thread-191695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:35:46.511 [DEBUG] [Thread-191695] [transport.py] [_log()] Compression: none
2025-11-24T14:35:46.511 [DEBUG] [Thread-191695] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:35:46.527 [DEBUG] [Thread-191695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:35:46.528 [DEBUG] [Thread-191695] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:35:46.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:35:46.528 [DEBUG] [Thread-191695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:35:46.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:35:46.529 [DEBUG] [Thread-191695] [transport.py] [_log()] userauth is OK
2025-11-24T14:35:46.529 [DEBUG] [Thread-191695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:35:46.529 [DEBUG] [Thread-191695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:35:46.529 [DEBUG] [Thread-191695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:35:46.529 [DEBUG] [Thread-191695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:35:46.560 [INFO] [Thread-191695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:35:46.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:35:47.141 [DEBUG] [Thread-191695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:35:47.141 [DEBUG] [Thread-191695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:35:47.141 [DEBUG] [Thread-191695] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:35:47.182 [DEBUG] [Thread-191695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:35:47.182 [DEBUG] [Thread-191695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:35:47.184 [DEBUG] [Thread-191695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:35:47.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:35:47.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:35:47.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:35:47.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:35:47.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:35:47.196 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:35:47.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:35:47.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:35:47.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:35:47.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.524353 -999.00  +21.90  25.23     24   +0.50 1 1 1 1 1   888    0 22.17 50.31 ----- 25.2 25.2 175.2 31.0 27.6 -28.7 26.5 -33.7 28.2 -28.6 29.1 -28.9
2025-11-24T14:35:47.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:35:47.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:35:47.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.524353
2025-11-24T14:35:47.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:35:47.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:35:47.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:35:47.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:35:47.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:35:47.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:35:27', tmtdew=25.6, humidity=17.96, cloud=0.0, wind=26.48, temperature=22.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:35:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:35:47.197 [DEBUG] [Thread-191695] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:35:47.277 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:35:47.289 [DEBUG] [Thread-191698] [transport.py] [_log()] starting thread (client mode): 0xc9b80250
2025-11-24T14:35:47.289 [DEBUG] [Thread-191698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:35:47.303 [DEBUG] [Thread-191698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:35:47.303 [INFO] [Thread-191698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] client lang: <none>
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] server lang: <none>
2025-11-24T14:35:47.310 [DEBUG] [Thread-191698] [transport.py] [_log()] kex follows: False
2025-11-24T14:35:47.311 [DEBUG] [Thread-191698] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:35:47.311 [DEBUG] [Thread-191698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:35:47.311 [DEBUG] [Thread-191698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:35:47.311 [DEBUG] [Thread-191698] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:35:47.311 [DEBUG] [Thread-191698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:35:47.311 [DEBUG] [Thread-191698] [transport.py] [_log()] Compression: none
2025-11-24T14:35:47.311 [DEBUG] [Thread-191698] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:35:47.367 [DEBUG] [Thread-191698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:35:47.368 [DEBUG] [Thread-191698] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:35:47.368 [DEBUG] [Thread-191698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:35:47.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:35:47.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:35:47.424 [DEBUG] [Thread-191698] [transport.py] [_log()] userauth is OK
2025-11-24T14:35:47.424 [DEBUG] [Thread-191698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:35:47.424 [DEBUG] [Thread-191698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:35:47.424 [DEBUG] [Thread-191698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:35:47.424 [DEBUG] [Thread-191698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:35:47.438 [INFO] [Thread-191698] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:35:47.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:35:47.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:35:48.289 [DEBUG] [Thread-191698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:35:48.289 [DEBUG] [Thread-191698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:35:48.337 [DEBUG] [Thread-191698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:35:48.337 [DEBUG] [Thread-191698] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:35:48.346 [DEBUG] [Thread-191698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:35:48.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:35:48.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-11-24T14:35:48.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-11-24T14:35:48.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:35:48.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:35:48.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:35:48.378 [DEBUG] [Thread-191698] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:35:52.570 [DEBUG] [Thread-191700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:36:07.631 [DEBUG] [Thread-191701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:36:09.996 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:36:09.998 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:36:14.978 [DEBUG] [Thread-191702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:36:18.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:36:18.400 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:36:18.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-11-24T14:36:19.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 35, 27), 25.25, 18.46, 0.0, 30.08, 22.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:36:19.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:35:27
2025-11-24T14:36:19.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:36:19.527 [DEBUG] [Thread-191703] [transport.py] [_log()] starting thread (client mode): 0xd07e8190
2025-11-24T14:36:19.527 [DEBUG] [Thread-191703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:36:19.546 [DEBUG] [Thread-191703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:36:19.546 [INFO] [Thread-191703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:36:19.549 [DEBUG] [Thread-191703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] client lang: <none>
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] server lang: <none>
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] kex follows: False
2025-11-24T14:36:19.550 [DEBUG] [Thread-191703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:36:19.551 [DEBUG] [Thread-191703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:36:19.551 [DEBUG] [Thread-191703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:36:19.551 [DEBUG] [Thread-191703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:36:19.551 [DEBUG] [Thread-191703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:36:19.551 [DEBUG] [Thread-191703] [transport.py] [_log()] Compression: none
2025-11-24T14:36:19.551 [DEBUG] [Thread-191703] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:36:19.571 [DEBUG] [Thread-191703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:36:19.571 [DEBUG] [Thread-191703] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:36:19.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:36:19.573 [DEBUG] [Thread-191703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:36:19.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:36:19.576 [DEBUG] [Thread-191703] [transport.py] [_log()] userauth is OK
2025-11-24T14:36:19.576 [DEBUG] [Thread-191703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:36:19.576 [DEBUG] [Thread-191703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:36:19.576 [DEBUG] [Thread-191703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:36:19.576 [DEBUG] [Thread-191703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:36:19.600 [INFO] [Thread-191703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:36:19.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:36:20.332 [DEBUG] [Thread-191703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:36:20.332 [DEBUG] [Thread-191703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:36:20.332 [DEBUG] [Thread-191703] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:36:20.374 [DEBUG] [Thread-191703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:36:20.374 [DEBUG] [Thread-191703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:36:20.375 [DEBUG] [Thread-191703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:36:20.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:36:20.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:36:20.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:36:20.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:36:20.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:36:20.392 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:36:20.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:36:20.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:36:20.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:36:20.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.524700 -999.00  +21.60  19.00     24   +0.50 1 1 1 1 1   888    0 22.41 48.09 ----- 19.0 19.0 193.2 29.6 27.5 -27.5 26.4 -32.7 28.2 -27.1 29.0 -28.6
2025-11-24T14:36:20.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:36:20.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:36:20.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.524700
2025-11-24T14:36:20.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:36:20.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:36:20.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:36:20.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:36:20.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:36:20.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:35:27', tmtdew=25.25, humidity=18.46, cloud=0.0, wind=30.08, temperature=22.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:35:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:36:20.393 [DEBUG] [Thread-191703] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:36: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-11-24T14:36:20.479 [DEBUG] [Thread-191706] [transport.py] [_log()] starting thread (client mode): 0xd07aa5c0
2025-11-24T14:36:20.479 [DEBUG] [Thread-191706] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:36:20.493 [DEBUG] [Thread-191706] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:36:20.494 [INFO] [Thread-191706] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:36:20.501 [DEBUG] [Thread-191706] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:36:20.501 [DEBUG] [Thread-191706] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:36:20.501 [DEBUG] [Thread-191706] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:36:20.501 [DEBUG] [Thread-191706] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] client lang: <none>
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] server lang: <none>
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] kex follows: False
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] Compression: none
2025-11-24T14:36:20.502 [DEBUG] [Thread-191706] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:36:20.559 [DEBUG] [Thread-191706] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:36:20.559 [DEBUG] [Thread-191706] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:36:20.559 [DEBUG] [Thread-191706] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:36:20.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:36:20.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:36:20.616 [DEBUG] [Thread-191706] [transport.py] [_log()] userauth is OK
2025-11-24T14:36:20.616 [DEBUG] [Thread-191706] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:36:20.616 [DEBUG] [Thread-191706] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:36:20.616 [DEBUG] [Thread-191706] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:36:20.616 [DEBUG] [Thread-191706] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:36:20.630 [INFO] [Thread-191706] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:36:20.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:36:20.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:36:21.466 [DEBUG] [Thread-191706] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:36:21.466 [DEBUG] [Thread-191706] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:36:21.514 [DEBUG] [Thread-191706] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:36:21.514 [DEBUG] [Thread-191706] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:36:21.522 [DEBUG] [Thread-191706] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:36:21.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:36:21.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:36:21.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-11-24T14:36:21.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:36:21.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:36:21.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:36:21.553 [DEBUG] [Thread-191706] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:36:22.664 [DEBUG] [Thread-191708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:36:37.700 [DEBUG] [Thread-191709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:36:51.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:36:51.576 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:36:51.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:36:52.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 36, 32), 25.3, 18.38, 0.0, 27.67, 22.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:36:52.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:36:32
2025-11-24T14:36:52.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:36:52.652 [DEBUG] [Thread-191710] [transport.py] [_log()] starting thread (client mode): 0xd07aac80
2025-11-24T14:36:52.652 [DEBUG] [Thread-191710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:36:52.669 [DEBUG] [Thread-191710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:36:52.670 [INFO] [Thread-191710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] client lang: <none>
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] server lang: <none>
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] kex follows: False
2025-11-24T14:36:52.673 [DEBUG] [Thread-191710] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:36:52.674 [DEBUG] [Thread-191710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:36:52.674 [DEBUG] [Thread-191710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:36:52.674 [DEBUG] [Thread-191710] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:36:52.674 [DEBUG] [Thread-191710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:36:52.674 [DEBUG] [Thread-191710] [transport.py] [_log()] Compression: none
2025-11-24T14:36:52.674 [DEBUG] [Thread-191710] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:36:52.693 [DEBUG] [Thread-191710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:36:52.694 [DEBUG] [Thread-191710] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:36:52.694 [DEBUG] [Thread-191710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:36:52.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:36:52.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:36:52.696 [DEBUG] [Thread-191710] [transport.py] [_log()] userauth is OK
2025-11-24T14:36:52.696 [DEBUG] [Thread-191710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:36:52.697 [DEBUG] [Thread-191710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:36:52.697 [DEBUG] [Thread-191710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:36:52.697 [DEBUG] [Thread-191710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:36:52.715 [INFO] [Thread-191710] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:36:52.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:36:52.737 [DEBUG] [Thread-191712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:36:53.359 [DEBUG] [Thread-191710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:36:53.359 [DEBUG] [Thread-191710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:36:53.360 [DEBUG] [Thread-191710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:36:53.400 [DEBUG] [Thread-191710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:36:53.400 [DEBUG] [Thread-191710] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:36:53.402 [DEBUG] [Thread-191710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:36:53.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:36:53.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:36:53.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:36:53.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:36:53.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:36:53.432 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:36:53.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.525047 -999.00  +21.50  16.70     25   +0.70 1 1 1 1 1   888    0 22.24 39.29 ----- 16.7 16.7 166.6 30.0 27.5 -27.3 26.4 -30.0 28.1 -25.6 28.9 -28.5
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.525047
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:36:53.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:36:32', tmtdew=25.3, humidity=18.38, cloud=0.0, wind=27.67, temperature=22.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:36:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:36:53.433 [DEBUG] [Thread-191710] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:36:53.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:36:53.516 [DEBUG] [Thread-191714] [transport.py] [_log()] starting thread (client mode): 0xd07a91e0
2025-11-24T14:36:53.516 [DEBUG] [Thread-191714] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:36:53.531 [DEBUG] [Thread-191714] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:36:53.531 [INFO] [Thread-191714] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:36:53.538 [DEBUG] [Thread-191714] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] client lang: <none>
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] server lang: <none>
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] kex follows: False
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:36:53.539 [DEBUG] [Thread-191714] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:36:53.540 [DEBUG] [Thread-191714] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:36:53.540 [DEBUG] [Thread-191714] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:36:53.540 [DEBUG] [Thread-191714] [transport.py] [_log()] Compression: none
2025-11-24T14:36:53.540 [DEBUG] [Thread-191714] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:36:53.595 [DEBUG] [Thread-191714] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:36:53.595 [DEBUG] [Thread-191714] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:36:53.595 [DEBUG] [Thread-191714] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:36:53.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:36:53.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:36:53.652 [DEBUG] [Thread-191714] [transport.py] [_log()] userauth is OK
2025-11-24T14:36:53.652 [DEBUG] [Thread-191714] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:36:53.652 [DEBUG] [Thread-191714] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:36:53.652 [DEBUG] [Thread-191714] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:36:53.652 [DEBUG] [Thread-191714] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:36:53.666 [INFO] [Thread-191714] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:36:53.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:36:53.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:36:54.516 [DEBUG] [Thread-191714] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:36:54.516 [DEBUG] [Thread-191714] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:36:54.564 [DEBUG] [Thread-191714] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:36:54.564 [DEBUG] [Thread-191714] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:36:54.573 [DEBUG] [Thread-191714] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:36:54.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:36:54.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-11-24T14:36:54.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-11-24T14:36:54.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:36:54.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:36:54.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:36:54.608 [DEBUG] [Thread-191714] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:37:07.767 [DEBUG] [Thread-191716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:37:10.140 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:37:10.142 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:37:15.337 [DEBUG] [Thread-191717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:37:22.829 [DEBUG] [Thread-191718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:37:24.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:37:24.642 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:37:24.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-11-24T14:37:25.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 37, 5), 24.76, 18.94, 0.0, 25.81, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:37:25.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:37:05
2025-11-24T14:37:25.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:37:25.761 [DEBUG] [Thread-191719] [transport.py] [_log()] starting thread (client mode): 0xd07fb700
2025-11-24T14:37:25.762 [DEBUG] [Thread-191719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:37:25.773 [DEBUG] [Thread-191719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:37:25.774 [INFO] [Thread-191719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] client lang: <none>
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] server lang: <none>
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] kex follows: False
2025-11-24T14:37:25.777 [DEBUG] [Thread-191719] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:37:25.778 [DEBUG] [Thread-191719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:37:25.778 [DEBUG] [Thread-191719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:37:25.778 [DEBUG] [Thread-191719] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:37:25.778 [DEBUG] [Thread-191719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:37:25.778 [DEBUG] [Thread-191719] [transport.py] [_log()] Compression: none
2025-11-24T14:37:25.778 [DEBUG] [Thread-191719] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:37:25.807 [DEBUG] [Thread-191719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:37:25.810 [DEBUG] [Thread-191719] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:37:25.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:37:25.813 [DEBUG] [Thread-191719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:37:25.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:37:25.816 [DEBUG] [Thread-191719] [transport.py] [_log()] userauth is OK
2025-11-24T14:37:25.816 [DEBUG] [Thread-191719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:37:25.816 [DEBUG] [Thread-191719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:37:25.816 [DEBUG] [Thread-191719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:37:25.816 [DEBUG] [Thread-191719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:37:25.838 [INFO] [Thread-191719] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:37:25.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:37:26.419 [DEBUG] [Thread-191719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:37:26.420 [DEBUG] [Thread-191719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:37:26.421 [DEBUG] [Thread-191719] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:37:26.461 [DEBUG] [Thread-191719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:37:26.461 [DEBUG] [Thread-191719] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:37:26.463 [DEBUG] [Thread-191719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:37:26.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:37:26.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:37:26.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:37:26.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:37:26.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:37:26.485 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:37:26.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:37:26.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:37:26.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:37:26.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.525395 -999.00  +21.40  24.00     25   +0.80 1 1 1 1 1   888    0 21.63 32.39 ----- 24.0 24.0 182.6 30.3 27.4 -27.1 26.4 -30.7 28.1 -26.0 29.0 -29.3
2025-11-24T14:37:26.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:37:26.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:37:26.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.525395
2025-11-24T14:37:26.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:37:26.488 [DEBUG] [Thread-191719] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:37:26.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:37:26.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:37:26.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:37:26.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:37:26.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:37:05', tmtdew=24.76, humidity=18.94, cloud=0.0, wind=25.81, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:36:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:37:26.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:37:26.589 [DEBUG] [Thread-191722] [transport.py] [_log()] starting thread (client mode): 0xd07e8a90
2025-11-24T14:37:26.589 [DEBUG] [Thread-191722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:37:26.603 [DEBUG] [Thread-191722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:37:26.603 [INFO] [Thread-191722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:37:26.614 [DEBUG] [Thread-191722] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:37:26.614 [DEBUG] [Thread-191722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:37:26.614 [DEBUG] [Thread-191722] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:37:26.614 [DEBUG] [Thread-191722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:37:26.614 [DEBUG] [Thread-191722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:37:26.615 [DEBUG] [Thread-191722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:37:26.615 [DEBUG] [Thread-191722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:37:26.615 [DEBUG] [Thread-191722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:37:26.615 [DEBUG] [Thread-191722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:37:26.615 [DEBUG] [Thread-191722] [transport.py] [_log()] client lang: <none>
2025-11-24T14:37:26.615 [DEBUG] [Thread-191722] [transport.py] [_log()] server lang: <none>
2025-11-24T14:37:26.615 [DEBUG] [Thread-191722] [transport.py] [_log()] kex follows: False
2025-11-24T14:37:26.615 [DEBUG] [Thread-191722] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:37:26.615 [DEBUG] [Thread-191722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:37:26.616 [DEBUG] [Thread-191722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:37:26.616 [DEBUG] [Thread-191722] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:37:26.616 [DEBUG] [Thread-191722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:37:26.616 [DEBUG] [Thread-191722] [transport.py] [_log()] Compression: none
2025-11-24T14:37:26.617 [DEBUG] [Thread-191722] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:37:26.677 [DEBUG] [Thread-191722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:37:26.678 [DEBUG] [Thread-191722] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:37:26.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:37:26.679 [DEBUG] [Thread-191722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:37:26.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:37:26.733 [DEBUG] [Thread-191722] [transport.py] [_log()] userauth is OK
2025-11-24T14:37:26.733 [DEBUG] [Thread-191722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:37:26.733 [DEBUG] [Thread-191722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:37:26.733 [DEBUG] [Thread-191722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:37:26.733 [DEBUG] [Thread-191722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:37:26.752 [INFO] [Thread-191722] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:37:26.753 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:37:26.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:37:27.599 [DEBUG] [Thread-191722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:37:27.599 [DEBUG] [Thread-191722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:37:27.647 [DEBUG] [Thread-191722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:37:27.647 [DEBUG] [Thread-191722] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:37:27.656 [DEBUG] [Thread-191722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:37:27.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:37:27.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-11-24T14:37:27.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-11-24T14:37:27.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:37:27.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:37:27.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:37:27.696 [DEBUG] [Thread-191722] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:37:37.860 [DEBUG] [Thread-191724 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:37:52.907 [DEBUG] [Thread-191725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:37:57.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:37:57.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:37:57.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-11-24T14:37:58.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 37, 37), 23.8, 20.05, 0.0, 20.54, 21.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:37:58.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:37:37
2025-11-24T14:37:58.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:37:58.818 [DEBUG] [Thread-191726] [transport.py] [_log()] starting thread (client mode): 0xd07a8550
2025-11-24T14:37:58.818 [DEBUG] [Thread-191726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:37:58.838 [DEBUG] [Thread-191726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:37:58.838 [INFO] [Thread-191726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:37:58.841 [DEBUG] [Thread-191726] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:37:58.841 [DEBUG] [Thread-191726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:37:58.841 [DEBUG] [Thread-191726] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:37:58.841 [DEBUG] [Thread-191726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:37:58.841 [DEBUG] [Thread-191726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:37:58.841 [DEBUG] [Thread-191726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:37:58.841 [DEBUG] [Thread-191726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:37:58.841 [DEBUG] [Thread-191726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:37:58.841 [DEBUG] [Thread-191726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:37:58.842 [DEBUG] [Thread-191726] [transport.py] [_log()] client lang: <none>
2025-11-24T14:37:58.842 [DEBUG] [Thread-191726] [transport.py] [_log()] server lang: <none>
2025-11-24T14:37:58.842 [DEBUG] [Thread-191726] [transport.py] [_log()] kex follows: False
2025-11-24T14:37:58.842 [DEBUG] [Thread-191726] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:37:58.842 [DEBUG] [Thread-191726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:37:58.842 [DEBUG] [Thread-191726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:37:58.842 [DEBUG] [Thread-191726] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:37:58.842 [DEBUG] [Thread-191726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:37:58.842 [DEBUG] [Thread-191726] [transport.py] [_log()] Compression: none
2025-11-24T14:37:58.842 [DEBUG] [Thread-191726] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:37:58.859 [DEBUG] [Thread-191726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:37:58.859 [DEBUG] [Thread-191726] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:37:58.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:37:58.860 [DEBUG] [Thread-191726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:37:58.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:37:58.861 [DEBUG] [Thread-191726] [transport.py] [_log()] userauth is OK
2025-11-24T14:37:58.861 [DEBUG] [Thread-191726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:37:58.861 [DEBUG] [Thread-191726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:37:58.862 [DEBUG] [Thread-191726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:37:58.862 [DEBUG] [Thread-191726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:37:58.876 [INFO] [Thread-191726] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:37:58.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:37:59.513 [DEBUG] [Thread-191726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:37:59.513 [DEBUG] [Thread-191726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:37:59.513 [DEBUG] [Thread-191726] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:37:59.554 [DEBUG] [Thread-191726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:37:59.554 [DEBUG] [Thread-191726] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:37:59.563 [DEBUG] [Thread-191726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:37:59.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:37:59.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:37:59.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:37:59.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:37:59.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:37:59.573 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:37:59.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.525742 -999.00  +21.50  14.47     25   +1.00 1 1 1 1 1   888    0 21.71 28.25 ----- 14.5 14.5 188.0 28.3 27.5 -28.0 26.5 -29.4 28.3 -24.7 29.1 -27.2
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.525742
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:37:59.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:37:37', tmtdew=23.8, humidity=20.05, cloud=0.0, wind=20.54, temperature=21.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:37:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:37:59.574 [DEBUG] [Thread-191726] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:37:59.646 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:37:59.657 [DEBUG] [Thread-191729] [transport.py] [_log()] starting thread (client mode): 0xd31b2020
2025-11-24T14:37:59.657 [DEBUG] [Thread-191729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:37:59.671 [DEBUG] [Thread-191729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:37:59.671 [INFO] [Thread-191729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] client lang: <none>
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] server lang: <none>
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] kex follows: False
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] Compression: none
2025-11-24T14:37:59.679 [DEBUG] [Thread-191729] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:37:59.735 [DEBUG] [Thread-191729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:37:59.735 [DEBUG] [Thread-191729] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:37:59.735 [DEBUG] [Thread-191729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:37:59.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:37:59.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:37:59.792 [DEBUG] [Thread-191729] [transport.py] [_log()] userauth is OK
2025-11-24T14:37:59.792 [DEBUG] [Thread-191729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:37:59.792 [DEBUG] [Thread-191729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:37:59.793 [DEBUG] [Thread-191729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:37:59.793 [DEBUG] [Thread-191729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:37:59.806 [INFO] [Thread-191729] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:37:59.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:37:59.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:38:00.606 [DEBUG] [Thread-191729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:38:00.616 [DEBUG] [Thread-191729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:38:00.654 [DEBUG] [Thread-191729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:38:00.655 [DEBUG] [Thread-191729] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:38:00.664 [DEBUG] [Thread-191729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:38:00.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:38:00.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-11-24T14:38:00.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-11-24T14:38:00.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:38:00.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:38:00.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:38:00.702 [DEBUG] [Thread-191729] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:38:07.941 [DEBUG] [Thread-191731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:38:10.281 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:38:10.282 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:38:15.500 [DEBUG] [Thread-191732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:38:22.980 [DEBUG] [Thread-191733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:38:30.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:38:30.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:38:30.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-11-24T14:38:31.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 38, 10), 23.4, 20.55, 0.0, 19.62, 20.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:38:31.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:38:10
2025-11-24T14:38:31.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:38:31.873 [DEBUG] [Thread-191734] [transport.py] [_log()] starting thread (client mode): 0xd3153e50
2025-11-24T14:38:31.873 [DEBUG] [Thread-191734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:38:31.901 [DEBUG] [Thread-191734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:38:31.901 [INFO] [Thread-191734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:38:31.903 [DEBUG] [Thread-191734] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] client lang: <none>
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] server lang: <none>
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] kex follows: False
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] Compression: none
2025-11-24T14:38:31.904 [DEBUG] [Thread-191734] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:38:31.914 [DEBUG] [Thread-191734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:38:31.915 [DEBUG] [Thread-191734] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:38:31.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:38:31.915 [DEBUG] [Thread-191734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:38:31.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:38:31.916 [DEBUG] [Thread-191734] [transport.py] [_log()] userauth is OK
2025-11-24T14:38:31.917 [DEBUG] [Thread-191734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:38:31.917 [DEBUG] [Thread-191734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:38:31.917 [DEBUG] [Thread-191734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:38:31.917 [DEBUG] [Thread-191734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:38:31.929 [INFO] [Thread-191734] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:38:31.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:38:32.539 [DEBUG] [Thread-191734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:38:32.539 [DEBUG] [Thread-191734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:38:32.539 [DEBUG] [Thread-191734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:38:32.580 [DEBUG] [Thread-191734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:38:32.580 [DEBUG] [Thread-191734] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:38:32.583 [DEBUG] [Thread-191734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:38:32.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:38:32.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:38:32.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:38:32.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:38:32.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:38:32.610 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:38:32.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:38:32.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:38:32.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:38:32.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.526089 -999.00  +21.70  20.35     25   +1.20 1 1 1 1 1   888    0 21.61 20.71 ----- 20.4 20.4 182.0 24.2 27.4 -29.0 26.7 -28.0 28.2 -26.4 29.1 -28.6
2025-11-24T14:38:32.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:38:32.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:38:32.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.526089
2025-11-24T14:38:32.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:38:32.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:38:32.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:38:32.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:38:32.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:38:32.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:38:10', tmtdew=23.4, humidity=20.55, cloud=0.0, wind=19.62, temperature=20.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:37:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:38:32.614 [DEBUG] [Thread-191734] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:38:32.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:38:32.707 [DEBUG] [Thread-191737] [transport.py] [_log()] starting thread (client mode): 0xd0701030
2025-11-24T14:38:32.707 [DEBUG] [Thread-191737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:38:32.722 [DEBUG] [Thread-191737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:38:32.723 [INFO] [Thread-191737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:38:32.730 [DEBUG] [Thread-191737] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] client lang: <none>
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] server lang: <none>
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] kex follows: False
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:38:32.731 [DEBUG] [Thread-191737] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:38:32.740 [DEBUG] [Thread-191737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:38:32.740 [DEBUG] [Thread-191737] [transport.py] [_log()] Compression: none
2025-11-24T14:38:32.740 [DEBUG] [Thread-191737] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:38:32.791 [DEBUG] [Thread-191737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:38:32.791 [DEBUG] [Thread-191737] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:38:32.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:38:32.792 [DEBUG] [Thread-191737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:38:32.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:38:32.850 [DEBUG] [Thread-191737] [transport.py] [_log()] userauth is OK
2025-11-24T14:38:32.850 [DEBUG] [Thread-191737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:38:32.850 [DEBUG] [Thread-191737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:38:32.850 [DEBUG] [Thread-191737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:38:32.850 [DEBUG] [Thread-191737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:38:32.869 [INFO] [Thread-191737] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:38:32.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:38:32.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:38:33.723 [DEBUG] [Thread-191737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:38:33.723 [DEBUG] [Thread-191737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:38:33.772 [DEBUG] [Thread-191737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:38:33.772 [DEBUG] [Thread-191737] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:38:33.780 [DEBUG] [Thread-191737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:38:33.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:38:33.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-11-24T14:38:33.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-11-24T14:38:33.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:38:33.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:38:33.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:38:33.813 [DEBUG] [Thread-191737] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:38:38.012 [DEBUG] [Thread-191739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:38:53.074 [DEBUG] [Thread-191740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:39:03.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:39:03.835 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:39:03.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:39:04.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 38, 44), 23.3, 20.77, 0.0, 18.21, 20.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:39:04.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:38:44
2025-11-24T14:39:04.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:39:04.952 [DEBUG] [Thread-191741] [transport.py] [_log()] starting thread (client mode): 0xd07e8a00
2025-11-24T14:39:04.953 [DEBUG] [Thread-191741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:39:04.972 [DEBUG] [Thread-191741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:39:04.972 [INFO] [Thread-191741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:39:04.975 [DEBUG] [Thread-191741] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:39:04.975 [DEBUG] [Thread-191741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] client lang: <none>
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] server lang: <none>
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] kex follows: False
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] Compression: none
2025-11-24T14:39:04.976 [DEBUG] [Thread-191741] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:39:04.995 [DEBUG] [Thread-191741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:39:05.005 [DEBUG] [Thread-191741] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:39:05.005 [DEBUG] [Thread-191741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:39:05.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:39:05.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:39:05.008 [DEBUG] [Thread-191741] [transport.py] [_log()] userauth is OK
2025-11-24T14:39:05.008 [DEBUG] [Thread-191741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:39:05.008 [DEBUG] [Thread-191741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:39:05.008 [DEBUG] [Thread-191741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:39:05.008 [DEBUG] [Thread-191741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:39:05.045 [INFO] [Thread-191741] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:39:05.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:39:05.654 [DEBUG] [Thread-191741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:39:05.654 [DEBUG] [Thread-191741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:39:05.654 [DEBUG] [Thread-191741] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:39:05.695 [DEBUG] [Thread-191741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:39:05.695 [DEBUG] [Thread-191741] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:39:05.697 [DEBUG] [Thread-191741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:39:05.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:39:05.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:39:05.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:39:05.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:39:05.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:39:05.718 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:39:05.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:39:05.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:39:05.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:39:05.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.526436 -999.00  +21.50  16.14     25   +1.20 1 1 1 1 1   888    0 20.87 11.87 ----- 16.1 16.1 211.5 30.6 27.4 -27.7 26.5 -27.7 28.2 -25.8 29.0 -26.9
2025-11-24T14:39:05.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:39:05.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:39:05.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.526436
2025-11-24T14:39:05.727 [DEBUG] [Thread-191741] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:39:05.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:39:05.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:39:05.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:39:05.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:39:05.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:39:05.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:38:44', tmtdew=23.3, humidity=20.77, cloud=0.0, wind=18.21, temperature=20.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:38:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:39:05.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:39:05.813 [DEBUG] [Thread-191744] [transport.py] [_log()] starting thread (client mode): 0xd31b3190
2025-11-24T14:39:05.813 [DEBUG] [Thread-191744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:39:05.829 [DEBUG] [Thread-191744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:39:05.829 [INFO] [Thread-191744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] client lang: <none>
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] server lang: <none>
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] kex follows: False
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:39:05.836 [DEBUG] [Thread-191744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:39:05.845 [DEBUG] [Thread-191744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:39:05.845 [DEBUG] [Thread-191744] [transport.py] [_log()] Compression: none
2025-11-24T14:39:05.845 [DEBUG] [Thread-191744] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:39:05.892 [DEBUG] [Thread-191744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:39:05.892 [DEBUG] [Thread-191744] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:39:05.892 [DEBUG] [Thread-191744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:39:05.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:39:05.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:39:05.948 [DEBUG] [Thread-191744] [transport.py] [_log()] userauth is OK
2025-11-24T14:39:05.948 [DEBUG] [Thread-191744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:39:05.948 [DEBUG] [Thread-191744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:39:05.948 [DEBUG] [Thread-191744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:39:05.948 [DEBUG] [Thread-191744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:39:05.962 [INFO] [Thread-191744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:39:05.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:39:05.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:39:06.821 [DEBUG] [Thread-191744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:39:06.821 [DEBUG] [Thread-191744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:39:06.872 [DEBUG] [Thread-191744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:39:06.872 [DEBUG] [Thread-191744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:39:06.881 [DEBUG] [Thread-191744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:39:06.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:39:06.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-11-24T14:39:06.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-11-24T14:39:06.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:39:06.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:39:06.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:39:06.915 [DEBUG] [Thread-191744] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:39:08.104 [DEBUG] [Thread-191746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:39:10.424 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:39:10.425 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:39:15.674 [DEBUG] [Thread-191747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:39:23.173 [DEBUG] [Thread-191748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:39:36.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:39:36.929 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:39:36.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-11-24T14:39:37.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 39, 17), 23.26, 20.83, 0.0, 20.7, 20.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:39:37.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:39:17
2025-11-24T14:39:37.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:39:38.097 [DEBUG] [Thread-191749] [transport.py] [_log()] starting thread (client mode): 0xd31b2140
2025-11-24T14:39:38.097 [DEBUG] [Thread-191749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:39:38.115 [DEBUG] [Thread-191749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:39:38.116 [INFO] [Thread-191749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] client lang: <none>
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] server lang: <none>
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] kex follows: False
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] Compression: none
2025-11-24T14:39:38.119 [DEBUG] [Thread-191749] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:39:38.135 [DEBUG] [Thread-191749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:39:38.135 [DEBUG] [Thread-191749] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:39:38.135 [DEBUG] [Thread-191749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:39:38.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:39:38.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:39:38.136 [DEBUG] [Thread-191749] [transport.py] [_log()] userauth is OK
2025-11-24T14:39:38.136 [DEBUG] [Thread-191749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:39:38.136 [DEBUG] [Thread-191749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:39:38.136 [DEBUG] [Thread-191749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:39:38.136 [DEBUG] [Thread-191749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:39:38.145 [INFO] [Thread-191749] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:39:38.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:39:38.208 [DEBUG] [Thread-191751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:39:38.748 [DEBUG] [Thread-191749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:39:38.748 [DEBUG] [Thread-191749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:39:38.748 [DEBUG] [Thread-191749] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:39:38.789 [DEBUG] [Thread-191749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:39:38.789 [DEBUG] [Thread-191749] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:39:38.791 [DEBUG] [Thread-191749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:39:38.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:39:38.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:39:38.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:39:38.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:39:38.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:39:38.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:39:38.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:39:38.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:39:38.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:39:38.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.526783 -999.00  +21.80   8.43     25   +1.30 1 1 1 1 1   888    0 20.84 4.31 ----- 8.4 8.4 183.8 14.6 27.7 -27.0 26.8 -25.5 28.4 -24.9 29.2 -25.3
2025-11-24T14:39:38.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:39:38.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:39:38.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.526783
2025-11-24T14:39:38.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:39:38.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:39:38.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:39:38.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:39:38.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:39:38.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:39:17', tmtdew=23.26, humidity=20.83, cloud=0.0, wind=20.7, temperature=20.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:38:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:39:38.811 [DEBUG] [Thread-191749] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:39:38.886 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:39:38.898 [DEBUG] [Thread-191753] [transport.py] [_log()] starting thread (client mode): 0xd07e9570
2025-11-24T14:39:38.898 [DEBUG] [Thread-191753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:39:38.913 [DEBUG] [Thread-191753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:39:38.913 [INFO] [Thread-191753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] client lang: <none>
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] server lang: <none>
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] kex follows: False
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:39:38.920 [DEBUG] [Thread-191753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:39:38.921 [DEBUG] [Thread-191753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:39:38.921 [DEBUG] [Thread-191753] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:39:38.921 [DEBUG] [Thread-191753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:39:38.921 [DEBUG] [Thread-191753] [transport.py] [_log()] Compression: none
2025-11-24T14:39:38.921 [DEBUG] [Thread-191753] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:39:38.975 [DEBUG] [Thread-191753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:39:38.975 [DEBUG] [Thread-191753] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:39:38.976 [DEBUG] [Thread-191753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:39:38.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:39:38.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:39:39.033 [DEBUG] [Thread-191753] [transport.py] [_log()] userauth is OK
2025-11-24T14:39:39.033 [DEBUG] [Thread-191753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:39:39.033 [DEBUG] [Thread-191753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:39:39.033 [DEBUG] [Thread-191753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:39:39.033 [DEBUG] [Thread-191753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:39:39.048 [INFO] [Thread-191753] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:39:39.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:39:39.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:39:39.886 [DEBUG] [Thread-191753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:39:39.886 [DEBUG] [Thread-191753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:39:39.934 [DEBUG] [Thread-191753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:39:39.934 [DEBUG] [Thread-191753] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:39:39.942 [DEBUG] [Thread-191753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:39:39.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:39:39.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-11-24T14:39:39.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-11-24T14:39:39.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:39:39.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:39:39.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:39:39.973 [DEBUG] [Thread-191753] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:39:53.249 [DEBUG] [Thread-191755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:40:08.306 [DEBUG] [Thread-191756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:40:09.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:40:09.979 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:40:09.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-11-24T14:40:10.566 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:40:10.566 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:40:10.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 39, 49), 23.17, 21.03, 0.0, 18.72, 21.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:40:10.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:39:49
2025-11-24T14:40:10.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:40:11.094 [DEBUG] [Thread-191757] [transport.py] [_log()] starting thread (client mode): 0xd07f93f0
2025-11-24T14:40:11.095 [DEBUG] [Thread-191757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:40:11.115 [DEBUG] [Thread-191757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:40:11.115 [INFO] [Thread-191757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:40:11.118 [DEBUG] [Thread-191757] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:40:11.118 [DEBUG] [Thread-191757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:40:11.118 [DEBUG] [Thread-191757] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] client lang: <none>
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] server lang: <none>
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] kex follows: False
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:40:11.119 [DEBUG] [Thread-191757] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:40:11.120 [DEBUG] [Thread-191757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:40:11.120 [DEBUG] [Thread-191757] [transport.py] [_log()] Compression: none
2025-11-24T14:40:11.120 [DEBUG] [Thread-191757] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:40:11.139 [DEBUG] [Thread-191757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:40:11.140 [DEBUG] [Thread-191757] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:40:11.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:40:11.150 [DEBUG] [Thread-191757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:40:11.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:40:11.152 [DEBUG] [Thread-191757] [transport.py] [_log()] userauth is OK
2025-11-24T14:40:11.153 [DEBUG] [Thread-191757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:40:11.153 [DEBUG] [Thread-191757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:40:11.153 [DEBUG] [Thread-191757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:40:11.153 [DEBUG] [Thread-191757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:40:11.185 [INFO] [Thread-191757] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:40:11.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:40:12.104 [DEBUG] [Thread-191757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:40:12.104 [DEBUG] [Thread-191757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:40:12.104 [DEBUG] [Thread-191757] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:40:12.145 [DEBUG] [Thread-191757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:40:12.145 [DEBUG] [Thread-191757] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:40:12.147 [DEBUG] [Thread-191757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:40:12.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:40:12.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:40:12.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:40:12.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:40:12.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:40:12.165 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:40:12.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:40:12.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:40:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:40:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.527478 -999.00  +22.40  17.87     25   +1.50 1 1 1 1 1   888    0 21.04 -9.41 ----- 17.9 17.9 198.0 23.6 27.9 -27.6 27.1 -27.9 28.6 -26.4 29.4 -28.2
2025-11-24T14:40:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:40:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:40:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.527478
2025-11-24T14:40:12.174 [DEBUG] [Thread-191757] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:40:12.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:40:12.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:40:12.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:40:12.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:40:12.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:40:12.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:39:49', tmtdew=23.17, humidity=21.03, cloud=0.0, wind=18.72, temperature=21.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:39:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:40:12.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:40:12.259 [DEBUG] [Thread-191760] [transport.py] [_log()] starting thread (client mode): 0xd3153070
2025-11-24T14:40:12.259 [DEBUG] [Thread-191760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:40:12.274 [DEBUG] [Thread-191760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:40:12.274 [INFO] [Thread-191760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:40:12.281 [DEBUG] [Thread-191760] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:40:12.281 [DEBUG] [Thread-191760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] client lang: <none>
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] server lang: <none>
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] kex follows: False
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] Compression: none
2025-11-24T14:40:12.282 [DEBUG] [Thread-191760] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:40:12.340 [DEBUG] [Thread-191760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:40:12.340 [DEBUG] [Thread-191760] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:40:12.340 [DEBUG] [Thread-191760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:40:12.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:40:12.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:40:12.397 [DEBUG] [Thread-191760] [transport.py] [_log()] userauth is OK
2025-11-24T14:40:12.397 [DEBUG] [Thread-191760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:40:12.398 [DEBUG] [Thread-191760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:40:12.398 [DEBUG] [Thread-191760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:40:12.398 [DEBUG] [Thread-191760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:40:12.423 [INFO] [Thread-191760] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:40:12.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:40:12.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:40:13.267 [DEBUG] [Thread-191760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:40:13.267 [DEBUG] [Thread-191760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:40:13.315 [DEBUG] [Thread-191760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:40:13.316 [DEBUG] [Thread-191760] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:40:13.324 [DEBUG] [Thread-191760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:40:13.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:40:13.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-11-24T14:40:13.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-11-24T14:40:13.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:40:13.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:40:13.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:40:13.357 [DEBUG] [Thread-191760] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:40:15.932 [DEBUG] [Thread-191762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:40:23.335 [DEBUG] [Thread-191763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:40:38.374 [DEBUG] [Thread-191764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:40:43.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:40:43.376 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:40:43.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-11-24T14:40:44.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 40, 21), 23.25, 20.92, 0.0, 25.67, 21.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:40:44.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:40:21
2025-11-24T14:40:44.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:40:44.472 [DEBUG] [Thread-191765] [transport.py] [_log()] starting thread (client mode): 0xd0700d60
2025-11-24T14:40:44.473 [DEBUG] [Thread-191765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:40:44.492 [DEBUG] [Thread-191765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:40:44.492 [INFO] [Thread-191765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] client lang: <none>
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] server lang: <none>
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] kex follows: False
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] Compression: none
2025-11-24T14:40:44.496 [DEBUG] [Thread-191765] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:40:44.505 [DEBUG] [Thread-191765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:40:44.505 [DEBUG] [Thread-191765] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:40:44.505 [DEBUG] [Thread-191765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:40:44.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:40:44.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:40:44.507 [DEBUG] [Thread-191765] [transport.py] [_log()] userauth is OK
2025-11-24T14:40:44.507 [DEBUG] [Thread-191765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:40:44.507 [DEBUG] [Thread-191765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:40:44.507 [DEBUG] [Thread-191765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:40:44.507 [DEBUG] [Thread-191765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:40:44.529 [INFO] [Thread-191765] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:40:44.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:40:45.158 [DEBUG] [Thread-191765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:40:45.158 [DEBUG] [Thread-191765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:40:45.158 [DEBUG] [Thread-191765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:40:45.199 [DEBUG] [Thread-191765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:40:45.200 [DEBUG] [Thread-191765] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:40:45.201 [DEBUG] [Thread-191765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:40:45.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:40:45.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:40:45.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:40:45.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:40:45.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:40:45.211 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:40:45.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:40:45.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:40:45.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:40:45.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.527825 -999.00  +22.40  22.78     25   +1.40 1 1 1 1 1   888    0 20.87 -12.78 ----- 22.8 22.8 198.8 29.3 27.9 -27.4 27.0 -29.7 28.6 -25.2 29.4 -28.3
2025-11-24T14:40:45.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:40:45.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:40:45.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.527825
2025-11-24T14:40:45.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:40:45.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:40:45.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:40:45.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:40:45.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:40:45.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:40:21', tmtdew=23.25, humidity=20.92, cloud=0.0, wind=25.67, temperature=21.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:40:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:40:45.220 [DEBUG] [Thread-191765] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:40:45.293 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:40:45.307 [DEBUG] [Thread-191768] [transport.py] [_log()] starting thread (client mode): 0xd07f8970
2025-11-24T14:40:45.307 [DEBUG] [Thread-191768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:40:45.322 [DEBUG] [Thread-191768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:40:45.322 [INFO] [Thread-191768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:40:45.329 [DEBUG] [Thread-191768] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:40:45.329 [DEBUG] [Thread-191768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] client lang: <none>
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] server lang: <none>
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] kex follows: False
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] Compression: none
2025-11-24T14:40:45.330 [DEBUG] [Thread-191768] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:40:45.387 [DEBUG] [Thread-191768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:40:45.387 [DEBUG] [Thread-191768] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:40:45.387 [DEBUG] [Thread-191768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:40:45.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:40:45.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:40:45.444 [DEBUG] [Thread-191768] [transport.py] [_log()] userauth is OK
2025-11-24T14:40:45.444 [DEBUG] [Thread-191768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:40:45.444 [DEBUG] [Thread-191768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:40:45.444 [DEBUG] [Thread-191768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:40:45.444 [DEBUG] [Thread-191768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:40:45.458 [INFO] [Thread-191768] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:40:45.458 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:40:45.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:40:46.274 [DEBUG] [Thread-191768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:40:46.284 [DEBUG] [Thread-191768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:40:46.323 [DEBUG] [Thread-191768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:40:46.323 [DEBUG] [Thread-191768] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:40:46.332 [DEBUG] [Thread-191768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:40:46.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:40:46.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-11-24T14:40:46.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-11-24T14:40:46.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:40:46.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:40:46.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:40:46.368 [DEBUG] [Thread-191768] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:40:53.407 [DEBUG] [Thread-191770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:41:08.444 [DEBUG] [Thread-191771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:41:10.708 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:41:10.709 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:41:16.229 [DEBUG] [Thread-191772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:41:16.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:41:16.391 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:41:16.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-11-24T14:41:17.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 40, 54), 23.79, 20.27, 0.0, 26.89, 21.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:41:17.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:40:54
2025-11-24T14:41:17.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:41:17.507 [DEBUG] [Thread-191773] [transport.py] [_log()] starting thread (client mode): 0xd07eb100
2025-11-24T14:41:17.507 [DEBUG] [Thread-191773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:41:17.526 [DEBUG] [Thread-191773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:41:17.526 [INFO] [Thread-191773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] client lang: <none>
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] server lang: <none>
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] kex follows: False
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:41:17.529 [DEBUG] [Thread-191773] [transport.py] [_log()] Compression: none
2025-11-24T14:41:17.530 [DEBUG] [Thread-191773] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:41:17.547 [DEBUG] [Thread-191773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:41:17.547 [DEBUG] [Thread-191773] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:41:17.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:41:17.548 [DEBUG] [Thread-191773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:41:17.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:41:17.550 [DEBUG] [Thread-191773] [transport.py] [_log()] userauth is OK
2025-11-24T14:41:17.551 [DEBUG] [Thread-191773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:41:17.551 [DEBUG] [Thread-191773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:41:17.551 [DEBUG] [Thread-191773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:41:17.551 [DEBUG] [Thread-191773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:41:17.575 [INFO] [Thread-191773] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:41:17.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:41:18.208 [DEBUG] [Thread-191773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:41:18.208 [DEBUG] [Thread-191773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:41:18.208 [DEBUG] [Thread-191773] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:41:18.249 [DEBUG] [Thread-191773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:41:18.249 [DEBUG] [Thread-191773] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:41:18.251 [DEBUG] [Thread-191773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:41:18.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:41:18.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:41:18.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:41:18.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:41:18.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:41:18.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:41:18.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.528172 -999.00  +22.30  24.78     24   +1.30 1 1 1 1 1   888    0 20.75 -14.30 ----- 24.8 24.8 171.2 28.2 27.9 -27.1 26.9 -28.9 28.6 -25.7 29.4 -26.9
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.528172
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:41:18.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:40:54', tmtdew=23.79, humidity=20.27, cloud=0.0, wind=26.89, temperature=21.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:40:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:41:18.272 [DEBUG] [Thread-191773] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:41:18.344 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:41:18.355 [DEBUG] [Thread-191776] [transport.py] [_log()] starting thread (client mode): 0xd31526e0
2025-11-24T14:41:18.355 [DEBUG] [Thread-191776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:41:18.370 [DEBUG] [Thread-191776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:41:18.370 [INFO] [Thread-191776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:41:18.378 [DEBUG] [Thread-191776] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:41:18.378 [DEBUG] [Thread-191776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:41:18.378 [DEBUG] [Thread-191776] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:41:18.378 [DEBUG] [Thread-191776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:41:18.378 [DEBUG] [Thread-191776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:41:18.378 [DEBUG] [Thread-191776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] client lang: <none>
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] server lang: <none>
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] kex follows: False
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:41:18.379 [DEBUG] [Thread-191776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:41:18.380 [DEBUG] [Thread-191776] [transport.py] [_log()] Compression: none
2025-11-24T14:41:18.380 [DEBUG] [Thread-191776] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:41:18.437 [DEBUG] [Thread-191776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:41:18.437 [DEBUG] [Thread-191776] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:41:18.438 [DEBUG] [Thread-191776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:41:18.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:41:18.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:41:18.493 [DEBUG] [Thread-191776] [transport.py] [_log()] userauth is OK
2025-11-24T14:41:18.493 [DEBUG] [Thread-191776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:41:18.493 [DEBUG] [Thread-191776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:41:18.494 [DEBUG] [Thread-191776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:41:18.494 [DEBUG] [Thread-191776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:41:18.532 [INFO] [Thread-191776] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:41:18.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:41:18.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:41:19.332 [DEBUG] [Thread-191776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:41:19.333 [DEBUG] [Thread-191776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:41:19.383 [DEBUG] [Thread-191776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:41:19.383 [DEBUG] [Thread-191776] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:41:19.395 [DEBUG] [Thread-191776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:41:19.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:41:19.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-11-24T14:41:19.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-11-24T14:41:19.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:41:19.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:41:19.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:41:19.441 [DEBUG] [Thread-191776] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:41:23.478 [DEBUG] [Thread-191778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:41:38.527 [DEBUG] [Thread-191779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:41:49.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:41:49.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:41:49.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-11-24T14:41:50.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 41, 26), 24.01, 19.97, 0.0, 24.67, 21.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:41:50.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:41:26
2025-11-24T14:41:50.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:41:50.483 [DEBUG] [Thread-191780] [transport.py] [_log()] starting thread (client mode): 0xd317fac0
2025-11-24T14:41:50.483 [DEBUG] [Thread-191780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:41:50.504 [DEBUG] [Thread-191780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:41:50.504 [INFO] [Thread-191780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:41:50.507 [DEBUG] [Thread-191780] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:41:50.507 [DEBUG] [Thread-191780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] client lang: <none>
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] server lang: <none>
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] kex follows: False
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:41:50.508 [DEBUG] [Thread-191780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:41:50.509 [DEBUG] [Thread-191780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:41:50.509 [DEBUG] [Thread-191780] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:41:50.509 [DEBUG] [Thread-191780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:41:50.509 [DEBUG] [Thread-191780] [transport.py] [_log()] Compression: none
2025-11-24T14:41:50.509 [DEBUG] [Thread-191780] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:41:50.530 [DEBUG] [Thread-191780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:41:50.531 [DEBUG] [Thread-191780] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:41:50.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:41:50.532 [DEBUG] [Thread-191780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:41:50.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:41:50.572 [DEBUG] [Thread-191780] [transport.py] [_log()] userauth is OK
2025-11-24T14:41:50.573 [DEBUG] [Thread-191780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:41:50.573 [DEBUG] [Thread-191780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:41:50.573 [DEBUG] [Thread-191780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:41:50.573 [DEBUG] [Thread-191780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:41:50.609 [INFO] [Thread-191780] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:41:50.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:41:51.246 [DEBUG] [Thread-191780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:41:51.255 [DEBUG] [Thread-191780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:41:51.256 [DEBUG] [Thread-191780] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:41:51.287 [DEBUG] [Thread-191780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:41:51.287 [DEBUG] [Thread-191780] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:41:51.289 [DEBUG] [Thread-191780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:41:51.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:41:51.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:41:51.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:41:51.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:41:51.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:41:51.311 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:41:51.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:41:51.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:41:51.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:41:51.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.528520 -999.00  +22.30  19.17     25   +1.30 1 1 1 1 1   888    0 20.37 -15.61 ----- 19.2 19.2 163.2 28.8 28.0 -28.2 27.2 -27.7 28.6 -25.7 29.6 -27.4
2025-11-24T14:41:51.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:41:51.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:41:51.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.528520
2025-11-24T14:41:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:41:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:41:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:41:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:41:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:41:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:41:26', tmtdew=24.01, humidity=19.97, cloud=0.0, wind=24.67, temperature=21.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:41:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:41:51.312 [DEBUG] [Thread-191780] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:41:51.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:41:51.398 [DEBUG] [Thread-191783] [transport.py] [_log()] starting thread (client mode): 0xd3151ae0
2025-11-24T14:41:51.398 [DEBUG] [Thread-191783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:41:51.415 [DEBUG] [Thread-191783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:41:51.416 [INFO] [Thread-191783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:41:51.424 [DEBUG] [Thread-191783] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:41:51.424 [DEBUG] [Thread-191783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:41:51.424 [DEBUG] [Thread-191783] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:41:51.424 [DEBUG] [Thread-191783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] client lang: <none>
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] server lang: <none>
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] kex follows: False
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] Compression: none
2025-11-24T14:41:51.425 [DEBUG] [Thread-191783] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:41:51.483 [DEBUG] [Thread-191783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:41:51.484 [DEBUG] [Thread-191783] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:41:51.484 [DEBUG] [Thread-191783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:41:51.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:41:51.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:41:51.540 [DEBUG] [Thread-191783] [transport.py] [_log()] userauth is OK
2025-11-24T14:41:51.540 [DEBUG] [Thread-191783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:41:51.540 [DEBUG] [Thread-191783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:41:51.541 [DEBUG] [Thread-191783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:41:51.541 [DEBUG] [Thread-191783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:41:51.555 [INFO] [Thread-191783] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:41:51.555 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:41:51.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:41:52.410 [DEBUG] [Thread-191783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:41:52.410 [DEBUG] [Thread-191783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:41:52.458 [DEBUG] [Thread-191783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:41:52.459 [DEBUG] [Thread-191783] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:41:52.468 [DEBUG] [Thread-191783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:41:52.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:41:52.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:41:52.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-11-24T14:41:52.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:41:52.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:41:52.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:41:52.505 [DEBUG] [Thread-191783] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:41:53.573 [DEBUG] [Thread-191785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:42:08.627 [DEBUG] [Thread-191786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:42:10.849 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:42:10.849 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:42:16.519 [DEBUG] [Thread-191787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:42:22.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:42:22.527 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:42:22.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-11-24T14:42:23.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 41, 59), 24.25, 19.67, 0.0, 22.09, 22.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:42:23.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:41:59
2025-11-24T14:42:23.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:42:23.587 [DEBUG] [Thread-191788] [transport.py] [_log()] starting thread (client mode): 0xd317fbb0
2025-11-24T14:42:23.588 [DEBUG] [Thread-191788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:42:23.591 [DEBUG] [Thread-191788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:42:23.592 [INFO] [Thread-191788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] client lang: <none>
2025-11-24T14:42:23.595 [DEBUG] [Thread-191788] [transport.py] [_log()] server lang: <none>
2025-11-24T14:42:23.596 [DEBUG] [Thread-191788] [transport.py] [_log()] kex follows: False
2025-11-24T14:42:23.596 [DEBUG] [Thread-191788] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:42:23.596 [DEBUG] [Thread-191788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:42:23.596 [DEBUG] [Thread-191788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:42:23.596 [DEBUG] [Thread-191788] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:42:23.596 [DEBUG] [Thread-191788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:42:23.596 [DEBUG] [Thread-191788] [transport.py] [_log()] Compression: none
2025-11-24T14:42:23.596 [DEBUG] [Thread-191788] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:42:23.611 [DEBUG] [Thread-191788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:42:23.611 [DEBUG] [Thread-191788] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:42:23.612 [DEBUG] [Thread-191788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:42:23.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:42:23.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:42:23.653 [DEBUG] [Thread-191788] [transport.py] [_log()] userauth is OK
2025-11-24T14:42:23.653 [DEBUG] [Thread-191788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:42:23.653 [DEBUG] [Thread-191788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:42:23.653 [DEBUG] [Thread-191788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:42:23.653 [DEBUG] [Thread-191788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:42:23.655 [DEBUG] [Thread-191790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:42:23.692 [INFO] [Thread-191788] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:42:23.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:42:24.332 [DEBUG] [Thread-191788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:42:24.332 [DEBUG] [Thread-191788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:42:24.332 [DEBUG] [Thread-191788] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:42:24.373 [DEBUG] [Thread-191788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:42:24.373 [DEBUG] [Thread-191788] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:42:24.376 [DEBUG] [Thread-191788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:42:24.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:42:24.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:42:24.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:42:24.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:42:24.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:42:24.402 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:42:24.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:42:24.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:42:24.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:42:24.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.528866 -999.00  +21.90  16.03     25   +1.10 1 1 1 1 1   888    0 20.34 -15.94 ----- 16.0 16.0 167.0 22.8 27.9 -27.0 27.3 -27.3 28.6 -25.2 29.5 -26.8
2025-11-24T14:42:24.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:42:24.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:42:24.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.528866
2025-11-24T14:42:24.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:42:24.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:42:24.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:42:24.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:42:24.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:42:24.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:41:59', tmtdew=24.25, humidity=19.67, cloud=0.0, wind=22.09, temperature=22.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:41:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:42:24.406 [DEBUG] [Thread-191788] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:42:24.485 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:42:24.498 [DEBUG] [Thread-191792] [transport.py] [_log()] starting thread (client mode): 0xd0703220
2025-11-24T14:42:24.498 [DEBUG] [Thread-191792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:42:24.512 [DEBUG] [Thread-191792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:42:24.513 [INFO] [Thread-191792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:42:24.520 [DEBUG] [Thread-191792] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] client lang: <none>
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] server lang: <none>
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] kex follows: False
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] Compression: none
2025-11-24T14:42:24.521 [DEBUG] [Thread-191792] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:42:24.580 [DEBUG] [Thread-191792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:42:24.581 [DEBUG] [Thread-191792] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:42:24.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:42:24.582 [DEBUG] [Thread-191792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:42:24.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:42:24.641 [DEBUG] [Thread-191792] [transport.py] [_log()] userauth is OK
2025-11-24T14:42:24.641 [DEBUG] [Thread-191792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:42:24.641 [DEBUG] [Thread-191792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:42:24.642 [DEBUG] [Thread-191792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:42:24.642 [DEBUG] [Thread-191792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:42:24.661 [INFO] [Thread-191792] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:42: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-11-24T14:42:24.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:42:25.517 [DEBUG] [Thread-191792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:42:25.517 [DEBUG] [Thread-191792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:42:25.565 [DEBUG] [Thread-191792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:42:25.565 [DEBUG] [Thread-191792] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:42:25.573 [DEBUG] [Thread-191792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:42:25.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:42:25.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-11-24T14:42:25.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-11-24T14:42:25.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:42:25.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:42:25.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:42:25.605 [DEBUG] [Thread-191792] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:42:38.687 [DEBUG] [Thread-191794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:42:53.724 [DEBUG] [Thread-191795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:42:55.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:42:55.628 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:42:55.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-11-24T14:42:56.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 42, 31), 24.27, 19.68, 0.0, 24.01, 22.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:42:56.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:42:31
2025-11-24T14:42:56.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:42:56.702 [DEBUG] [Thread-191796] [transport.py] [_log()] starting thread (client mode): 0xd317cca0
2025-11-24T14:42:56.702 [DEBUG] [Thread-191796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:42:56.726 [DEBUG] [Thread-191796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:42:56.726 [INFO] [Thread-191796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:42:56.729 [DEBUG] [Thread-191796] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:42:56.729 [DEBUG] [Thread-191796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] client lang: <none>
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] server lang: <none>
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] kex follows: False
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] Compression: none
2025-11-24T14:42:56.730 [DEBUG] [Thread-191796] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:42:56.747 [DEBUG] [Thread-191796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:42:56.748 [DEBUG] [Thread-191796] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:42:56.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:42:56.749 [DEBUG] [Thread-191796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:42:56.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:42:56.751 [DEBUG] [Thread-191796] [transport.py] [_log()] userauth is OK
2025-11-24T14:42:56.751 [DEBUG] [Thread-191796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:42:56.751 [DEBUG] [Thread-191796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:42:56.751 [DEBUG] [Thread-191796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:42:56.751 [DEBUG] [Thread-191796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:42:56.789 [INFO] [Thread-191796] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:42:56.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:42:57.437 [DEBUG] [Thread-191796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:42:57.437 [DEBUG] [Thread-191796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:42:57.438 [DEBUG] [Thread-191796] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:42:57.478 [DEBUG] [Thread-191796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:42:57.478 [DEBUG] [Thread-191796] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:42:57.480 [DEBUG] [Thread-191796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:42:57.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:42:57.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:42:57.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:42:57.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:42:57.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:42:57.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:42:57.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:42:57.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:42:57.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:42:57.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.529214 -999.00  +22.00  19.17     25   +1.30 1 1 1 1 1   888    0 20.21 -15.88 ----- 19.2 19.2 177.3 26.4 27.9 -27.2 27.3 -26.0 28.7 -25.9 29.6 -27.8
2025-11-24T14:42:57.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:42:57.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:42:57.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.529214
2025-11-24T14:42:57.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:42:57.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:42:57.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:42:57.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:42:57.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:42:57.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:42:31', tmtdew=24.27, humidity=19.68, cloud=0.0, wind=24.01, temperature=22.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:42:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:42:57.501 [DEBUG] [Thread-191796] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:42:57.593 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:42:57.605 [DEBUG] [Thread-191799] [transport.py] [_log()] starting thread (client mode): 0xd317c340
2025-11-24T14:42:57.605 [DEBUG] [Thread-191799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:42:57.619 [DEBUG] [Thread-191799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:42:57.619 [INFO] [Thread-191799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] client lang: <none>
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] server lang: <none>
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] kex follows: False
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] Compression: none
2025-11-24T14:42:57.627 [DEBUG] [Thread-191799] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:42:57.686 [DEBUG] [Thread-191799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:42:57.687 [DEBUG] [Thread-191799] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:42:57.687 [DEBUG] [Thread-191799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:42:57.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:42:57.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:42:57.744 [DEBUG] [Thread-191799] [transport.py] [_log()] userauth is OK
2025-11-24T14:42:57.744 [DEBUG] [Thread-191799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:42:57.744 [DEBUG] [Thread-191799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:42:57.744 [DEBUG] [Thread-191799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:42:57.744 [DEBUG] [Thread-191799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:42:57.757 [INFO] [Thread-191799] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:42:57.757 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:42:57.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:42:58.550 [DEBUG] [Thread-191799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:42:58.551 [DEBUG] [Thread-191799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:42:58.598 [DEBUG] [Thread-191799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:42:58.599 [DEBUG] [Thread-191799] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:42:58.608 [DEBUG] [Thread-191799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:42:58.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:42:58.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-11-24T14:42:58.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-11-24T14:42:58.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:42:58.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:42:58.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:42:58.644 [DEBUG] [Thread-191799] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:43:08.775 [DEBUG] [Thread-191801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:43:10.988 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:43:10.989 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:43:16.608 [DEBUG] [Thread-191802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:43:23.826 [DEBUG] [Thread-191803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:43:28.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:43:28.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:43:28.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-11-24T14:43:29.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 43, 4), 24.54, 19.32, 0.0, 23.22, 22.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:43:29.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:43:04
2025-11-24T14:43:29.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:43:29.811 [DEBUG] [Thread-191804] [transport.py] [_log()] starting thread (client mode): 0xd0711450
2025-11-24T14:43:29.812 [DEBUG] [Thread-191804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:43:29.830 [DEBUG] [Thread-191804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:43:29.830 [INFO] [Thread-191804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] client lang: <none>
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] server lang: <none>
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] kex follows: False
2025-11-24T14:43:29.833 [DEBUG] [Thread-191804] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:43:29.834 [DEBUG] [Thread-191804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:43:29.834 [DEBUG] [Thread-191804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:43:29.834 [DEBUG] [Thread-191804] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:43:29.834 [DEBUG] [Thread-191804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:43:29.834 [DEBUG] [Thread-191804] [transport.py] [_log()] Compression: none
2025-11-24T14:43:29.834 [DEBUG] [Thread-191804] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:43:29.859 [DEBUG] [Thread-191804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:43:29.859 [DEBUG] [Thread-191804] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:43:29.859 [DEBUG] [Thread-191804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:43:29.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:43:29.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:43:29.900 [DEBUG] [Thread-191804] [transport.py] [_log()] userauth is OK
2025-11-24T14:43:29.900 [DEBUG] [Thread-191804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:43:29.901 [DEBUG] [Thread-191804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:43:29.901 [DEBUG] [Thread-191804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:43:29.901 [DEBUG] [Thread-191804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:43:29.928 [INFO] [Thread-191804] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:43:29.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:43:30.597 [DEBUG] [Thread-191804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:43:30.597 [DEBUG] [Thread-191804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:43:30.597 [DEBUG] [Thread-191804] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:43:30.638 [DEBUG] [Thread-191804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:43:30.638 [DEBUG] [Thread-191804] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:43:30.640 [DEBUG] [Thread-191804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:43:30.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:43:30.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:43:30.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:43:30.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:43:30.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:43:30.661 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:43:30.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:43:30.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:43:30.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:43:30.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.529561 -999.00  +22.10  21.80     25   +1.30 1 1 1 1 1   888    0 20.54 -16.98 ----- 21.8 21.8 165.2 28.5 28.1 -27.2 27.1 -29.2 28.7 -24.5 29.5 -28.5
2025-11-24T14:43:30.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:43:30.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:43:30.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.529561
2025-11-24T14:43:30.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:43:30.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:43:30.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:43:30.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:43:30.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:43:30.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:43:04', tmtdew=24.54, humidity=19.32, cloud=0.0, wind=23.22, temperature=22.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:42:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:43:30.662 [DEBUG] [Thread-191804] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:43:30.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:43:30.749 [DEBUG] [Thread-191807] [transport.py] [_log()] starting thread (client mode): 0xd0711ba0
2025-11-24T14:43:30.749 [DEBUG] [Thread-191807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:43:30.763 [DEBUG] [Thread-191807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:43:30.763 [INFO] [Thread-191807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] client lang: <none>
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] server lang: <none>
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] kex follows: False
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:43:30.774 [DEBUG] [Thread-191807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:43:30.775 [DEBUG] [Thread-191807] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:43:30.775 [DEBUG] [Thread-191807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:43:30.775 [DEBUG] [Thread-191807] [transport.py] [_log()] Compression: none
2025-11-24T14:43:30.775 [DEBUG] [Thread-191807] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:43:30.827 [DEBUG] [Thread-191807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:43:30.827 [DEBUG] [Thread-191807] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:43:30.828 [DEBUG] [Thread-191807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:43:30.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:43:30.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:43:30.884 [DEBUG] [Thread-191807] [transport.py] [_log()] userauth is OK
2025-11-24T14:43:30.884 [DEBUG] [Thread-191807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:43:30.884 [DEBUG] [Thread-191807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:43:30.884 [DEBUG] [Thread-191807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:43:30.884 [DEBUG] [Thread-191807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:43:30.899 [INFO] [Thread-191807] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:43:30.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:43:30.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:43:31.768 [DEBUG] [Thread-191807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:43:31.768 [DEBUG] [Thread-191807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:43:31.816 [DEBUG] [Thread-191807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:43:31.816 [DEBUG] [Thread-191807] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:43:31.824 [DEBUG] [Thread-191807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:43:31.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:43:31.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-11-24T14:43:31.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-11-24T14:43:31.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:43:31.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:43:31.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:43:31.857 [DEBUG] [Thread-191807] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:43:38.856 [DEBUG] [Thread-191809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:43:53.937 [DEBUG] [Thread-191810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:44:01.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:44:01.879 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:44:01.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-11-24T14:44:02.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 43, 36), 24.27, 19.37, 0.0, 30.68, 21.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:44:02.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:43:36
2025-11-24T14:44:02.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:44:02.969 [DEBUG] [Thread-191811] [transport.py] [_log()] starting thread (client mode): 0xd0712890
2025-11-24T14:44:02.970 [DEBUG] [Thread-191811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:44:02.981 [DEBUG] [Thread-191811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:44:02.981 [INFO] [Thread-191811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] client lang: <none>
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] server lang: <none>
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] kex follows: False
2025-11-24T14:44:02.985 [DEBUG] [Thread-191811] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:44:02.986 [DEBUG] [Thread-191811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:44:02.986 [DEBUG] [Thread-191811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:44:02.986 [DEBUG] [Thread-191811] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:44:02.986 [DEBUG] [Thread-191811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:44:02.986 [DEBUG] [Thread-191811] [transport.py] [_log()] Compression: none
2025-11-24T14:44:02.986 [DEBUG] [Thread-191811] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:44:03.005 [DEBUG] [Thread-191811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:44:03.006 [DEBUG] [Thread-191811] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:44:03.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:44:03.007 [DEBUG] [Thread-191811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:44:03.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:44:03.009 [DEBUG] [Thread-191811] [transport.py] [_log()] userauth is OK
2025-11-24T14:44:03.010 [DEBUG] [Thread-191811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:44:03.010 [DEBUG] [Thread-191811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:44:03.010 [DEBUG] [Thread-191811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:44:03.010 [DEBUG] [Thread-191811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:44:03.049 [INFO] [Thread-191811] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:44:03.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:44:03.681 [DEBUG] [Thread-191811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:44:03.681 [DEBUG] [Thread-191811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:44:03.681 [DEBUG] [Thread-191811] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:44:03.722 [DEBUG] [Thread-191811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:44:03.722 [DEBUG] [Thread-191811] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:44:03.724 [DEBUG] [Thread-191811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:44:03.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:44:03.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:44:03.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:44:03.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:44:03.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:44:03.741 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:44:03.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:44:03.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.529908 -999.00  +22.30  23.28     24   +1.20 1 1 1 1 1   888    0 20.46 -17.20 ----- 23.3 23.3 169.8 34.9 28.0 -28.7 27.3 -26.7 28.6 -26.3 29.6 -28.7
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.529908
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:44:03.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:43:36', tmtdew=24.27, humidity=19.37, cloud=0.0, wind=30.68, temperature=21.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:43:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:44:03.743 [DEBUG] [Thread-191811] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:44:03.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:44:03.829 [DEBUG] [Thread-191814] [transport.py] [_log()] starting thread (client mode): 0xd31b2fe0
2025-11-24T14:44:03.829 [DEBUG] [Thread-191814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:44:03.848 [DEBUG] [Thread-191814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:44:03.848 [INFO] [Thread-191814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:44:03.855 [DEBUG] [Thread-191814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:44:03.855 [DEBUG] [Thread-191814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:44:03.855 [DEBUG] [Thread-191814] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:44:03.855 [DEBUG] [Thread-191814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:44:03.855 [DEBUG] [Thread-191814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] client lang: <none>
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] server lang: <none>
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] kex follows: False
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] Compression: none
2025-11-24T14:44:03.856 [DEBUG] [Thread-191814] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:44:03.911 [DEBUG] [Thread-191814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:44:03.911 [DEBUG] [Thread-191814] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:44:03.911 [DEBUG] [Thread-191814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:44:03.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:44:03.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:44:03.968 [DEBUG] [Thread-191814] [transport.py] [_log()] userauth is OK
2025-11-24T14:44:03.969 [DEBUG] [Thread-191814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:44:03.969 [DEBUG] [Thread-191814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:44:03.969 [DEBUG] [Thread-191814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:44:03.969 [DEBUG] [Thread-191814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:44:03.985 [INFO] [Thread-191814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:44:03.985 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:44:03.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:44:04.827 [DEBUG] [Thread-191814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:44:04.827 [DEBUG] [Thread-191814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:44:04.875 [DEBUG] [Thread-191814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:44:04.875 [DEBUG] [Thread-191814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:44:04.883 [DEBUG] [Thread-191814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:44:04.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:44: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-11-24T14:44: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-11-24T14:44:04.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:44:04.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:44:04.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:44:04.915 [DEBUG] [Thread-191814] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:44:08.970 [DEBUG] [Thread-191816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:44:11.131 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:44:11.132 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:44:16.996 [DEBUG] [Thread-191817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:44:24.010 [DEBUG] [Thread-191818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:44:34.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:44:34.933 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:44:34.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-11-24T14:44:35.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 44, 9), 24.2, 19.47, 0.0, 28.09, 21.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:44:35.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:44:09
2025-11-24T14:44:35.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:44:36.021 [DEBUG] [Thread-191819] [transport.py] [_log()] starting thread (client mode): 0xd07128c0
2025-11-24T14:44:36.021 [DEBUG] [Thread-191819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:44:36.042 [DEBUG] [Thread-191819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:44:36.042 [INFO] [Thread-191819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:44:36.045 [DEBUG] [Thread-191819] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] client lang: <none>
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] server lang: <none>
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] kex follows: False
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] Compression: none
2025-11-24T14:44:36.046 [DEBUG] [Thread-191819] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:44:36.064 [DEBUG] [Thread-191819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:44:36.064 [DEBUG] [Thread-191819] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:44:36.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:44:36.066 [DEBUG] [Thread-191819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:44:36.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:44:36.068 [DEBUG] [Thread-191819] [transport.py] [_log()] userauth is OK
2025-11-24T14:44:36.068 [DEBUG] [Thread-191819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:44:36.068 [DEBUG] [Thread-191819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:44:36.068 [DEBUG] [Thread-191819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:44:36.068 [DEBUG] [Thread-191819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:44:36.086 [INFO] [Thread-191819] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:44:36.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:44:36.677 [DEBUG] [Thread-191819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:44:36.677 [DEBUG] [Thread-191819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:44:36.678 [DEBUG] [Thread-191819] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:44:36.717 [DEBUG] [Thread-191819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:44:36.717 [DEBUG] [Thread-191819] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:44:36.719 [DEBUG] [Thread-191819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:44:36.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:44:36.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:44:36.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:44:36.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:44:36.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:44:36.740 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:44:36.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:44:36.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:44:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:44:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.530256 -999.00  +22.20  19.89     25   +1.20 1 1 1 1 1   888    0 20.35 -16.83 ----- 19.9 19.9 174.4 34.3 27.9 -26.7 27.2 -27.1 28.6 -26.2 29.4 -28.9
2025-11-24T14:44:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:44:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:44:36.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.530256
2025-11-24T14:44:36.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:44:36.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:44:36.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:44:36.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:44:36.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:44:36.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:44:09', tmtdew=24.2, humidity=19.47, cloud=0.0, wind=28.09, temperature=21.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:43:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:44:36.741 [DEBUG] [Thread-191819] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:44: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-11-24T14:44:36.826 [DEBUG] [Thread-191822] [transport.py] [_log()] starting thread (client mode): 0xd0703b50
2025-11-24T14:44:36.826 [DEBUG] [Thread-191822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:44:36.840 [DEBUG] [Thread-191822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:44:36.840 [INFO] [Thread-191822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:44:36.847 [DEBUG] [Thread-191822] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] client lang: <none>
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] server lang: <none>
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] kex follows: False
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] Compression: none
2025-11-24T14:44:36.848 [DEBUG] [Thread-191822] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:44:36.903 [DEBUG] [Thread-191822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:44:36.903 [DEBUG] [Thread-191822] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:44:36.903 [DEBUG] [Thread-191822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:44:36.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:44:36.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:44:36.960 [DEBUG] [Thread-191822] [transport.py] [_log()] userauth is OK
2025-11-24T14:44:36.960 [DEBUG] [Thread-191822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:44:36.960 [DEBUG] [Thread-191822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:44:36.960 [DEBUG] [Thread-191822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:44:36.960 [DEBUG] [Thread-191822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:44:36.975 [INFO] [Thread-191822] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:44:36.975 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:44:36.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:44:37.794 [DEBUG] [Thread-191822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:44:37.795 [DEBUG] [Thread-191822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:44:37.843 [DEBUG] [Thread-191822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:44:37.844 [DEBUG] [Thread-191822] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:44:37.853 [DEBUG] [Thread-191822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:44:37.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:44:37.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-11-24T14:44: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-11-24T14:44:37.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:44:37.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:44:37.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:44:37.889 [DEBUG] [Thread-191822] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:44:39.043 [DEBUG] [Thread-191824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:44:54.087 [DEBUG] [Thread-191825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:45:07.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:45:07.912 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:45:07.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-11-24T14:45:08.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 44, 41), 24.08, 20.1, 0.0, 28.14, 22.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:45:08.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:44:41
2025-11-24T14:45:08.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:45:09.108 [DEBUG] [Thread-191826] [transport.py] [_log()] starting thread (client mode): 0xd317fdf0
2025-11-24T14:45:09.108 [DEBUG] [Thread-191826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:45:09.118 [DEBUG] [Thread-191827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:45:09.119 [DEBUG] [Thread-191826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:45:09.119 [INFO] [Thread-191826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:45:09.122 [DEBUG] [Thread-191826] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:45:09.122 [DEBUG] [Thread-191826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:45:09.122 [DEBUG] [Thread-191826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:45:09.122 [DEBUG] [Thread-191826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:45:09.123 [DEBUG] [Thread-191826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:45:09.123 [DEBUG] [Thread-191826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:45:09.123 [DEBUG] [Thread-191826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:45:09.123 [DEBUG] [Thread-191826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:45:09.123 [DEBUG] [Thread-191826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:45:09.123 [DEBUG] [Thread-191826] [transport.py] [_log()] client lang: <none>
2025-11-24T14:45:09.123 [DEBUG] [Thread-191826] [transport.py] [_log()] server lang: <none>
2025-11-24T14:45:09.123 [DEBUG] [Thread-191826] [transport.py] [_log()] kex follows: False
2025-11-24T14:45:09.123 [DEBUG] [Thread-191826] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:45:09.124 [DEBUG] [Thread-191826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:45:09.124 [DEBUG] [Thread-191826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:45:09.124 [DEBUG] [Thread-191826] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:45:09.124 [DEBUG] [Thread-191826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:45:09.124 [DEBUG] [Thread-191826] [transport.py] [_log()] Compression: none
2025-11-24T14:45:09.124 [DEBUG] [Thread-191826] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:45:09.145 [DEBUG] [Thread-191826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:45:09.147 [DEBUG] [Thread-191826] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:45:09.148 [DEBUG] [Thread-191826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:45:09.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:45:09.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:45:09.152 [DEBUG] [Thread-191826] [transport.py] [_log()] userauth is OK
2025-11-24T14:45:09.152 [DEBUG] [Thread-191826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:45:09.153 [DEBUG] [Thread-191826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:45:09.153 [DEBUG] [Thread-191826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:45:09.153 [DEBUG] [Thread-191826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:45:09.177 [INFO] [Thread-191826] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:45:09.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:45:10.744 [DEBUG] [Thread-191826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:45:10.744 [DEBUG] [Thread-191826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:45:10.744 [DEBUG] [Thread-191826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:45:10.784 [DEBUG] [Thread-191826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:45:10.784 [DEBUG] [Thread-191826] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:45:10.787 [DEBUG] [Thread-191826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:45:10.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:45:10.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:45:10.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:45:10.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:45:10.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:45:10.817 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:45:10.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:45:10.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:45:10.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:45:10.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.530603 -999.00  +22.10  16.40     24   +1.10 1 1 1 1 1   888    0 20.50 -16.93 ----- 16.4 16.4 165.6 29.1 28.0 -27.1 27.1 -28.1 28.7 -25.9 29.5 -26.9
2025-11-24T14:45:10.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:45:10.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:45:10.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.530603
2025-11-24T14:45:10.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:45:10.821 [DEBUG] [Thread-191826] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:45:10.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:45:10.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:45:10.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:45:10.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:45:10.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:44:41', tmtdew=24.08, humidity=20.1, cloud=0.0, wind=28.14, temperature=22.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:44:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:45:10.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:45:10.945 [DEBUG] [Thread-191830] [transport.py] [_log()] starting thread (client mode): 0xd31508b0
2025-11-24T14:45:10.945 [DEBUG] [Thread-191830] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:45:10.962 [DEBUG] [Thread-191830] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:45:10.962 [INFO] [Thread-191830] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:45:10.969 [DEBUG] [Thread-191830] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:45:10.969 [DEBUG] [Thread-191830] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] client lang: <none>
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] server lang: <none>
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] kex follows: False
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] Compression: none
2025-11-24T14:45:10.970 [DEBUG] [Thread-191830] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:45:11.028 [DEBUG] [Thread-191830] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:45:11.028 [DEBUG] [Thread-191830] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:45:11.029 [DEBUG] [Thread-191830] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:45:11.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:45:11.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:45:11.085 [DEBUG] [Thread-191830] [transport.py] [_log()] userauth is OK
2025-11-24T14:45:11.085 [DEBUG] [Thread-191830] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:45:11.094 [DEBUG] [Thread-191830] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:45:11.094 [DEBUG] [Thread-191830] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:45:11.094 [DEBUG] [Thread-191830] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:45:11.114 [INFO] [Thread-191830] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:45:11.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:45:11.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:45:11.280 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:45:11.282 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:45:11.953 [DEBUG] [Thread-191830] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:45:11.953 [DEBUG] [Thread-191830] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:45:12.001 [DEBUG] [Thread-191830] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:45:12.001 [DEBUG] [Thread-191830] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:45:12.009 [DEBUG] [Thread-191830] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:45:12.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:45: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-11-24T14:45:12.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-11-24T14:45:12.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:45:12.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:45:12.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:45:12.050 [DEBUG] [Thread-191830] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:45:17.173 [DEBUG] [Thread-191832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:45:24.145 [DEBUG] [Thread-191833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:45:39.224 [DEBUG] [Thread-191834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:45:42.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:45:42.056 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:45:42.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-11-24T14:45:42.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 45, 14), 24.15, 20.03, 0.0, 24.05, 22.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:45:42.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:45:14
2025-11-24T14:45:43.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:45:43.179 [DEBUG] [Thread-191835] [transport.py] [_log()] starting thread (client mode): 0xd317ef50
2025-11-24T14:45:43.180 [DEBUG] [Thread-191835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:45:43.199 [DEBUG] [Thread-191835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:45:43.199 [INFO] [Thread-191835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] client lang: <none>
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] server lang: <none>
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] kex follows: False
2025-11-24T14:45:43.203 [DEBUG] [Thread-191835] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:45:43.204 [DEBUG] [Thread-191835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:45:43.204 [DEBUG] [Thread-191835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:45:43.204 [DEBUG] [Thread-191835] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:45:43.204 [DEBUG] [Thread-191835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:45:43.204 [DEBUG] [Thread-191835] [transport.py] [_log()] Compression: none
2025-11-24T14:45:43.204 [DEBUG] [Thread-191835] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:45:43.214 [DEBUG] [Thread-191835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:45:43.214 [DEBUG] [Thread-191835] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:45:43.215 [DEBUG] [Thread-191835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:45:43.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:45:43.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:45:43.257 [DEBUG] [Thread-191835] [transport.py] [_log()] userauth is OK
2025-11-24T14:45:43.257 [DEBUG] [Thread-191835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:45:43.257 [DEBUG] [Thread-191835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:45:43.257 [DEBUG] [Thread-191835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:45:43.257 [DEBUG] [Thread-191835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:45:43.277 [INFO] [Thread-191835] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:45:43.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:45:43.894 [DEBUG] [Thread-191835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:45:43.894 [DEBUG] [Thread-191835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:45:43.895 [DEBUG] [Thread-191835] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:45:43.935 [DEBUG] [Thread-191835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:45:43.935 [DEBUG] [Thread-191835] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:45:43.938 [DEBUG] [Thread-191835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:45:43.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:45:43.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:45:43.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:45:43.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:45:43.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:45:43.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:45:43.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:45:43.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:45:43.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:45:43.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.531297 -999.00  +22.80  17.15     24   +1.50 1 1 1 1 1   888    0 20.57 -19.97 ----- 17.1 17.1 187.2 19.7 28.1 -26.3 27.3 -25.4 28.8 -24.6 29.7 -26.7
2025-11-24T14:45:43.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:45:43.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:45:43.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.531297
2025-11-24T14:45:43.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:45:43.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:45:43.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:45:43.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:45:43.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:45:43.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:45:14', tmtdew=24.15, humidity=20.03, cloud=0.0, wind=24.05, temperature=22.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:45:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:45:43.972 [DEBUG] [Thread-191835] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:45:44.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:45:44.067 [DEBUG] [Thread-191838] [transport.py] [_log()] starting thread (client mode): 0xd0712ef0
2025-11-24T14:45:44.067 [DEBUG] [Thread-191838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:45:44.081 [DEBUG] [Thread-191838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:45:44.082 [INFO] [Thread-191838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] client lang: <none>
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] server lang: <none>
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] kex follows: False
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:45:44.091 [DEBUG] [Thread-191838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:45:44.092 [DEBUG] [Thread-191838] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:45:44.092 [DEBUG] [Thread-191838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:45:44.092 [DEBUG] [Thread-191838] [transport.py] [_log()] Compression: none
2025-11-24T14:45:44.092 [DEBUG] [Thread-191838] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:45:44.157 [DEBUG] [Thread-191838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:45:44.157 [DEBUG] [Thread-191838] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:45:44.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:45:44.158 [DEBUG] [Thread-191838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:45:44.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:45:44.216 [DEBUG] [Thread-191838] [transport.py] [_log()] userauth is OK
2025-11-24T14:45:44.216 [DEBUG] [Thread-191838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:45:44.216 [DEBUG] [Thread-191838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:45:44.216 [DEBUG] [Thread-191838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:45:44.216 [DEBUG] [Thread-191838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:45:44.230 [INFO] [Thread-191838] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:45:44.230 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:45:44.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:45:45.068 [DEBUG] [Thread-191838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:45:45.068 [DEBUG] [Thread-191838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:45:45.116 [DEBUG] [Thread-191838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:45:45.117 [DEBUG] [Thread-191838] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:45:45.126 [DEBUG] [Thread-191838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:45:45.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:45:45.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-11-24T14:45:45.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-11-24T14:45:45.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:45:45.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:45:45.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:45:45.163 [DEBUG] [Thread-191838] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:45:54.259 [DEBUG] [Thread-191840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:46:09.310 [DEBUG] [Thread-191841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:46:11.435 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:46:11.437 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:46:15.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:46:15.195 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:46:15.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-11-24T14:46:15.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 45, 46), 24.71, 19.19, 0.0, 19.34, 22.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:46:15.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:45:46
2025-11-24T14:46:16.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:46:16.249 [DEBUG] [Thread-191842] [transport.py] [_log()] starting thread (client mode): 0xd07106a0
2025-11-24T14:46:16.250 [DEBUG] [Thread-191842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:46:16.266 [DEBUG] [Thread-191842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:46:16.267 [INFO] [Thread-191842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:46:16.270 [DEBUG] [Thread-191842] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:46:16.270 [DEBUG] [Thread-191842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] client lang: <none>
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] server lang: <none>
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] kex follows: False
2025-11-24T14:46:16.271 [DEBUG] [Thread-191842] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:46:16.272 [DEBUG] [Thread-191842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:46:16.272 [DEBUG] [Thread-191842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:46:16.272 [DEBUG] [Thread-191842] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:46:16.272 [DEBUG] [Thread-191842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:46:16.273 [DEBUG] [Thread-191842] [transport.py] [_log()] Compression: none
2025-11-24T14:46:16.273 [DEBUG] [Thread-191842] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:46:16.302 [DEBUG] [Thread-191842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:46:16.305 [DEBUG] [Thread-191842] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:46:16.306 [DEBUG] [Thread-191842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:46:16.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:46:16.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:46:16.310 [DEBUG] [Thread-191842] [transport.py] [_log()] userauth is OK
2025-11-24T14:46:16.311 [DEBUG] [Thread-191842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:46:16.311 [DEBUG] [Thread-191842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:46:16.311 [DEBUG] [Thread-191842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:46:16.311 [DEBUG] [Thread-191842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:46:16.335 [INFO] [Thread-191842] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:46:16.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:46:16.963 [DEBUG] [Thread-191842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:46:16.963 [DEBUG] [Thread-191842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:46:16.964 [DEBUG] [Thread-191842] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:46:17.003 [DEBUG] [Thread-191842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:46:17.004 [DEBUG] [Thread-191842] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:46:17.006 [DEBUG] [Thread-191842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:46:17.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:46:17.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:46:17.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:46:17.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:46:17.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:46:17.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:46:17.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:46:17.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:46:17.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:46:17.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.531644 -999.00  +22.80  21.64     24   +1.20 1 1 1 1 1   888    0 20.37 -20.12 ----- 21.6 21.6 175.0 27.0 28.1 -28.3 27.4 -29.5 28.8 -26.3 29.6 -27.7
2025-11-24T14:46:17.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:46:17.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:46:17.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.531644
2025-11-24T14:46:17.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:46:17.028 [DEBUG] [Thread-191842] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:46:17.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:46:17.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:46:17.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:46:17.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:46:17.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:45:46', tmtdew=24.71, humidity=19.19, cloud=0.0, wind=19.34, temperature=22.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:45:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:46:17.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:46:17.124 [DEBUG] [Thread-191845] [transport.py] [_log()] starting thread (client mode): 0xd31b0a60
2025-11-24T14:46:17.124 [DEBUG] [Thread-191845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:46:17.139 [DEBUG] [Thread-191845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:46:17.139 [INFO] [Thread-191845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:46:17.147 [DEBUG] [Thread-191845] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:46:17.147 [DEBUG] [Thread-191845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:46:17.147 [DEBUG] [Thread-191845] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:46:17.147 [DEBUG] [Thread-191845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:46:17.147 [DEBUG] [Thread-191845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:46:17.147 [DEBUG] [Thread-191845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:46:17.147 [DEBUG] [Thread-191845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:46:17.148 [DEBUG] [Thread-191845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:46:17.148 [DEBUG] [Thread-191845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:46:17.148 [DEBUG] [Thread-191845] [transport.py] [_log()] client lang: <none>
2025-11-24T14:46:17.148 [DEBUG] [Thread-191845] [transport.py] [_log()] server lang: <none>
2025-11-24T14:46:17.148 [DEBUG] [Thread-191845] [transport.py] [_log()] kex follows: False
2025-11-24T14:46:17.148 [DEBUG] [Thread-191845] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:46:17.148 [DEBUG] [Thread-191845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:46:17.148 [DEBUG] [Thread-191845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:46:17.149 [DEBUG] [Thread-191845] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:46:17.149 [DEBUG] [Thread-191845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:46:17.149 [DEBUG] [Thread-191845] [transport.py] [_log()] Compression: none
2025-11-24T14:46:17.149 [DEBUG] [Thread-191845] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:46:17.205 [DEBUG] [Thread-191845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:46:17.206 [DEBUG] [Thread-191845] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:46:17.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:46:17.208 [DEBUG] [Thread-191845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:46:17.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:46:17.261 [DEBUG] [Thread-191845] [transport.py] [_log()] userauth is OK
2025-11-24T14:46:17.261 [DEBUG] [Thread-191845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:46:17.261 [DEBUG] [Thread-191845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:46:17.261 [DEBUG] [Thread-191845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:46:17.261 [DEBUG] [Thread-191845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:46:17.284 [INFO] [Thread-191845] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:46:17.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:46:17.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:46:17.356 [DEBUG] [Thread-191847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:46:18.113 [DEBUG] [Thread-191845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:46:18.114 [DEBUG] [Thread-191845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:46:18.162 [DEBUG] [Thread-191845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:46:18.162 [DEBUG] [Thread-191845] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:46:18.181 [DEBUG] [Thread-191845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:46:18.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:46:18.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:46:18.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-11-24T14:46:18.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:46:18.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:46:18.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:46:18.218 [DEBUG] [Thread-191845] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:46:24.343 [DEBUG] [Thread-191848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:46:39.391 [DEBUG] [Thread-191849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:46:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:46:48.241 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:46:48.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-11-24T14:46:49.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 46, 19), 24.67, 19.24, 0.0, 16.25, 22.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:46:49.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:46:19
2025-11-24T14:46:49.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:46:49.320 [DEBUG] [Thread-191850] [transport.py] [_log()] starting thread (client mode): 0xd31b2b90
2025-11-24T14:46:49.321 [DEBUG] [Thread-191850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:46:49.331 [DEBUG] [Thread-191850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:46:49.331 [INFO] [Thread-191850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] client lang: <none>
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] server lang: <none>
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] kex follows: False
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:46:49.335 [DEBUG] [Thread-191850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:46:49.336 [DEBUG] [Thread-191850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:46:49.336 [DEBUG] [Thread-191850] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:46:49.336 [DEBUG] [Thread-191850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:46:49.336 [DEBUG] [Thread-191850] [transport.py] [_log()] Compression: none
2025-11-24T14:46:49.336 [DEBUG] [Thread-191850] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:46:49.353 [DEBUG] [Thread-191850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:46:49.353 [DEBUG] [Thread-191850] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:46:49.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:46:49.354 [DEBUG] [Thread-191850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:46:49.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:46:49.397 [DEBUG] [Thread-191850] [transport.py] [_log()] userauth is OK
2025-11-24T14:46:49.397 [DEBUG] [Thread-191850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:46:49.397 [DEBUG] [Thread-191850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:46:49.397 [DEBUG] [Thread-191850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:46:49.397 [DEBUG] [Thread-191850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:46:49.429 [INFO] [Thread-191850] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:46:49.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:46:50.067 [DEBUG] [Thread-191850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:46:50.067 [DEBUG] [Thread-191850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:46:50.067 [DEBUG] [Thread-191850] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:46:50.108 [DEBUG] [Thread-191850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:46:50.108 [DEBUG] [Thread-191850] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:46:50.110 [DEBUG] [Thread-191850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:46:50.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:46:50.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:46:50.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:46:50.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:46:50.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:46:50.132 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:46:50.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:46:50.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:46:50.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:46:50.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.531992 -999.00  +22.50  19.76     24   +1.30 1 1 1 1 1   888    0 20.83 -20.42 ----- 19.8 19.8 191.8 28.4 28.0 -28.5 27.1 -29.5 28.8 -26.3 29.6 -28.1
2025-11-24T14:46:50.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:46:50.141 [DEBUG] [Thread-191850] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:46:50.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:46:50.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.531992
2025-11-24T14:46:50.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:46:50.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:46:50.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:46:50.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:46:50.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:46:50.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:46:19', tmtdew=24.67, humidity=19.24, cloud=0.0, wind=16.25, temperature=22.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:46:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:46:50.217 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:46:50.229 [DEBUG] [Thread-191853] [transport.py] [_log()] starting thread (client mode): 0xd0710c70
2025-11-24T14:46:50.229 [DEBUG] [Thread-191853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:46:50.243 [DEBUG] [Thread-191853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:46:50.243 [INFO] [Thread-191853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:46:50.250 [DEBUG] [Thread-191853] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:46:50.250 [DEBUG] [Thread-191853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:46:50.250 [DEBUG] [Thread-191853] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:46:50.250 [DEBUG] [Thread-191853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:46:50.250 [DEBUG] [Thread-191853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:46:50.250 [DEBUG] [Thread-191853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:46:50.250 [DEBUG] [Thread-191853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:46:50.250 [DEBUG] [Thread-191853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] client lang: <none>
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] server lang: <none>
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] kex follows: False
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] Compression: none
2025-11-24T14:46:50.251 [DEBUG] [Thread-191853] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:46:50.307 [DEBUG] [Thread-191853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:46:50.307 [DEBUG] [Thread-191853] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:46:50.307 [DEBUG] [Thread-191853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:46:50.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:46:50.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:46:50.364 [DEBUG] [Thread-191853] [transport.py] [_log()] userauth is OK
2025-11-24T14:46:50.364 [DEBUG] [Thread-191853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:46:50.364 [DEBUG] [Thread-191853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:46:50.364 [DEBUG] [Thread-191853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:46:50.364 [DEBUG] [Thread-191853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:46:50.378 [INFO] [Thread-191853] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:46:50.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:46:50.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:46:51.175 [DEBUG] [Thread-191853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:46:51.175 [DEBUG] [Thread-191853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:46:51.223 [DEBUG] [Thread-191853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:46:51.224 [DEBUG] [Thread-191853] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:46:51.233 [DEBUG] [Thread-191853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:46:51.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:46:51.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-11-24T14:46:51.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-11-24T14:46:51.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:46:51.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:46:51.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:46:51.281 [DEBUG] [Thread-191853] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:46:54.418 [DEBUG] [Thread-191855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:47:09.467 [DEBUG] [Thread-191856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:47:11.580 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:47:11.581 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:47:17.549 [DEBUG] [Thread-191857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:47:21.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:47:21.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:47:21.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-11-24T14:47:21.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 46, 51), 24.69, 18.94, 0.0, 22.53, 22.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:47:21.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:46:51
2025-11-24T14:47:22.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:47:22.295 [DEBUG] [Thread-191858] [transport.py] [_log()] starting thread (client mode): 0xd07fb310
2025-11-24T14:47:22.295 [DEBUG] [Thread-191858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:47:22.312 [DEBUG] [Thread-191858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:47:22.312 [INFO] [Thread-191858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] client lang: <none>
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] server lang: <none>
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] kex follows: False
2025-11-24T14:47:22.315 [DEBUG] [Thread-191858] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:47:22.316 [DEBUG] [Thread-191858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:47:22.316 [DEBUG] [Thread-191858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:47:22.316 [DEBUG] [Thread-191858] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:47:22.316 [DEBUG] [Thread-191858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:47:22.316 [DEBUG] [Thread-191858] [transport.py] [_log()] Compression: none
2025-11-24T14:47:22.316 [DEBUG] [Thread-191858] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:47:22.337 [DEBUG] [Thread-191858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:47:22.339 [DEBUG] [Thread-191858] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:47:22.339 [DEBUG] [Thread-191858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:47:22.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:47:22.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:47:22.381 [DEBUG] [Thread-191858] [transport.py] [_log()] userauth is OK
2025-11-24T14:47:22.381 [DEBUG] [Thread-191858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:47:22.381 [DEBUG] [Thread-191858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:47:22.381 [DEBUG] [Thread-191858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:47:22.381 [DEBUG] [Thread-191858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:47:22.397 [INFO] [Thread-191858] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:47:22.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:47:23.012 [DEBUG] [Thread-191858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:47:23.012 [DEBUG] [Thread-191858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:47:23.012 [DEBUG] [Thread-191858] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:47:23.053 [DEBUG] [Thread-191858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:47:23.053 [DEBUG] [Thread-191858] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:47:23.056 [DEBUG] [Thread-191858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:47:23.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:47:23.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:47:23.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:47:23.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:47:23.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:47:23.076 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:47:23.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:47:23.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:47:23.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:47:23.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.532339 -999.00  +22.40  15.11     24   +1.30 1 1 1 1 1   888    0 20.12 -23.38 ----- 15.1 15.1 193.4 23.9 28.1 -26.4 27.1 -29.0 28.9 -24.0 29.5 -28.5
2025-11-24T14:47:23.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:47:23.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:47:23.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.532339
2025-11-24T14:47:23.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:47:23.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:47:23.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:47:23.078 [DEBUG] [Thread-191858] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:47:23.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:47:23.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:47:23.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:46:51', tmtdew=24.69, humidity=18.94, cloud=0.0, wind=22.53, temperature=22.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:46:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:47:23.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:47:23.165 [DEBUG] [Thread-191861] [transport.py] [_log()] starting thread (client mode): 0xd31b33a0
2025-11-24T14:47:23.165 [DEBUG] [Thread-191861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:47:23.179 [DEBUG] [Thread-191861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:47:23.180 [INFO] [Thread-191861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] client lang: <none>
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] server lang: <none>
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] kex follows: False
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:47:23.187 [DEBUG] [Thread-191861] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:47:23.188 [DEBUG] [Thread-191861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:47:23.188 [DEBUG] [Thread-191861] [transport.py] [_log()] Compression: none
2025-11-24T14:47:23.188 [DEBUG] [Thread-191861] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:47:23.243 [DEBUG] [Thread-191861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:47:23.243 [DEBUG] [Thread-191861] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:47:23.244 [DEBUG] [Thread-191861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:47:23.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:47:23.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:47:23.300 [DEBUG] [Thread-191861] [transport.py] [_log()] userauth is OK
2025-11-24T14:47:23.300 [DEBUG] [Thread-191861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:47:23.300 [DEBUG] [Thread-191861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:47:23.300 [DEBUG] [Thread-191861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:47:23.301 [DEBUG] [Thread-191861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:47:23.315 [INFO] [Thread-191861] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:47:23.315 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:47:23.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:47:24.168 [DEBUG] [Thread-191861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:47:24.168 [DEBUG] [Thread-191861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:47:24.216 [DEBUG] [Thread-191861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:47:24.216 [DEBUG] [Thread-191861] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:47:24.224 [DEBUG] [Thread-191861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:47:24.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:47:24.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-11-24T14:47:24.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-11-24T14:47:24.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:47:24.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:47:24.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:47:24.256 [DEBUG] [Thread-191861] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:47:24.498 [DEBUG] [Thread-191863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:47:39.546 [DEBUG] [Thread-191864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:47:54.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:47:54.280 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:47:54.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-11-24T14:47:54.576 [DEBUG] [Thread-191865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:47:55.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 47, 24), 24.56, 19.05, 0.0, 20.17, 22.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:47:55.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:47:24
2025-11-24T14:47:55.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:47:55.358 [DEBUG] [Thread-191866] [transport.py] [_log()] starting thread (client mode): 0xd31b1c30
2025-11-24T14:47:55.358 [DEBUG] [Thread-191866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:47:55.375 [DEBUG] [Thread-191866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:47:55.376 [INFO] [Thread-191866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:47:55.378 [DEBUG] [Thread-191866] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] client lang: <none>
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] server lang: <none>
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] kex follows: False
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] Compression: none
2025-11-24T14:47:55.379 [DEBUG] [Thread-191866] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:47:55.398 [DEBUG] [Thread-191866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:47:55.399 [DEBUG] [Thread-191866] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:47:55.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:47:55.400 [DEBUG] [Thread-191866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:47:55.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:47:55.402 [DEBUG] [Thread-191866] [transport.py] [_log()] userauth is OK
2025-11-24T14:47:55.402 [DEBUG] [Thread-191866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:47:55.402 [DEBUG] [Thread-191866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:47:55.402 [DEBUG] [Thread-191866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:47:55.403 [DEBUG] [Thread-191866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:47:55.421 [INFO] [Thread-191866] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:47:55.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:47:56.045 [DEBUG] [Thread-191866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:47:56.045 [DEBUG] [Thread-191866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:47:56.046 [DEBUG] [Thread-191866] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:47:56.085 [DEBUG] [Thread-191866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:47:56.086 [DEBUG] [Thread-191866] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:47:56.088 [DEBUG] [Thread-191866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:47:56.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:47:56.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:47:56.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:47:56.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:47:56.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:47:56.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:47:56.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:47:56.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:47:56.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:47:56.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.532686 -999.00  +22.70  10.48     24   +1.50 1 1 1 1 1   888    0 19.68 -24.31 ----- 10.5 10.5 191.4 17.5 28.1 -27.9 27.3 -27.5 29.0 -24.8 29.8 -27.5
2025-11-24T14:47:56.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:47:56.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:47:56.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.532686
2025-11-24T14:47:56.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:47:56.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:47:56.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:47:56.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:47:56.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:47:56.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:47:24', tmtdew=24.56, humidity=19.05, cloud=0.0, wind=20.17, temperature=22.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:47:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:47:56.109 [DEBUG] [Thread-191866] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:47:56.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:47:56.207 [DEBUG] [Thread-191869] [transport.py] [_log()] starting thread (client mode): 0xd3192f80
2025-11-24T14:47:56.207 [DEBUG] [Thread-191869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:47:56.225 [DEBUG] [Thread-191869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:47:56.225 [INFO] [Thread-191869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] client lang: <none>
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] server lang: <none>
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] kex follows: False
2025-11-24T14:47:56.234 [DEBUG] [Thread-191869] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:47:56.235 [DEBUG] [Thread-191869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:47:56.235 [DEBUG] [Thread-191869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:47:56.235 [DEBUG] [Thread-191869] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:47:56.235 [DEBUG] [Thread-191869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:47:56.235 [DEBUG] [Thread-191869] [transport.py] [_log()] Compression: none
2025-11-24T14:47:56.235 [DEBUG] [Thread-191869] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:47:56.291 [DEBUG] [Thread-191869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:47:56.291 [DEBUG] [Thread-191869] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:47:56.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:47:56.291 [DEBUG] [Thread-191869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:47:56.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:47:56.348 [DEBUG] [Thread-191869] [transport.py] [_log()] userauth is OK
2025-11-24T14:47:56.348 [DEBUG] [Thread-191869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:47:56.348 [DEBUG] [Thread-191869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:47:56.348 [DEBUG] [Thread-191869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:47:56.348 [DEBUG] [Thread-191869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:47:56.362 [INFO] [Thread-191869] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:47:56.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:47:56.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:47:57.246 [DEBUG] [Thread-191869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:47:57.246 [DEBUG] [Thread-191869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:47:57.294 [DEBUG] [Thread-191869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:47:57.294 [DEBUG] [Thread-191869] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:47:57.302 [DEBUG] [Thread-191869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:47:57.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:47:57.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-11-24T14:47:57.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-11-24T14:47:57.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:47:57.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:47:57.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:47:57.334 [DEBUG] [Thread-191869] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:48:09.613 [DEBUG] [Thread-191871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:48:11.730 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:48:11.731 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:48:17.818 [DEBUG] [Thread-191872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:48:24.677 [DEBUG] [Thread-191873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:48:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:48:27.334 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:48:27.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:48:28.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 47, 56), 24.45, 19.52, 0.0, 17.27, 22.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:48:28.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:47:56
2025-11-24T14:48:28.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:48:28.416 [DEBUG] [Thread-191874] [transport.py] [_log()] starting thread (client mode): 0xd31509d0
2025-11-24T14:48:28.416 [DEBUG] [Thread-191874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:48:28.427 [DEBUG] [Thread-191874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:48:28.427 [INFO] [Thread-191874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] client lang: <none>
2025-11-24T14:48:28.429 [DEBUG] [Thread-191874] [transport.py] [_log()] server lang: <none>
2025-11-24T14:48:28.430 [DEBUG] [Thread-191874] [transport.py] [_log()] kex follows: False
2025-11-24T14:48:28.430 [DEBUG] [Thread-191874] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:48:28.430 [DEBUG] [Thread-191874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:48:28.430 [DEBUG] [Thread-191874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:48:28.430 [DEBUG] [Thread-191874] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:48:28.430 [DEBUG] [Thread-191874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:48:28.430 [DEBUG] [Thread-191874] [transport.py] [_log()] Compression: none
2025-11-24T14:48:28.430 [DEBUG] [Thread-191874] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:48:28.445 [DEBUG] [Thread-191874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:48:28.446 [DEBUG] [Thread-191874] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:48:28.446 [DEBUG] [Thread-191874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:48:28.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:48:28.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:48:28.448 [DEBUG] [Thread-191874] [transport.py] [_log()] userauth is OK
2025-11-24T14:48:28.448 [DEBUG] [Thread-191874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:48:28.448 [DEBUG] [Thread-191874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:48:28.449 [DEBUG] [Thread-191874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:48:28.449 [DEBUG] [Thread-191874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:48:28.475 [INFO] [Thread-191874] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:48:28.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:48:29.113 [DEBUG] [Thread-191874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:48:29.113 [DEBUG] [Thread-191874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:48:29.113 [DEBUG] [Thread-191874] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:48:29.153 [DEBUG] [Thread-191874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:48:29.153 [DEBUG] [Thread-191874] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:48:29.155 [DEBUG] [Thread-191874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:48:29.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:48:29.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:48:29.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:48:29.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:48:29.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:48:29.175 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:48:29.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:48:29.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:48:29.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:48:29.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.533033 -999.00  +22.20  15.24     25   +1.30 1 1 1 1 1   888    0 20.18 -24.79 ----- 15.2 15.2 194.0 24.8 28.1 -27.9 27.1 -33.8 28.9 -25.6 29.7 -27.3
2025-11-24T14:48:29.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:48:29.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:48:29.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.533033
2025-11-24T14:48:29.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:48:29.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:48:29.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:48:29.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:48:29.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:48:29.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:47:56', tmtdew=24.45, humidity=19.52, cloud=0.0, wind=17.27, temperature=22.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:47:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:48:29.176 [DEBUG] [Thread-191874] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:48:29.250 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:48:29.262 [DEBUG] [Thread-191877] [transport.py] [_log()] starting thread (client mode): 0xc9b82170
2025-11-24T14:48:29.262 [DEBUG] [Thread-191877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:48:29.282 [DEBUG] [Thread-191877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:48:29.282 [INFO] [Thread-191877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] client lang: <none>
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] server lang: <none>
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] kex follows: False
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] Compression: none
2025-11-24T14:48:29.290 [DEBUG] [Thread-191877] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:48:29.349 [DEBUG] [Thread-191877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:48:29.350 [DEBUG] [Thread-191877] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:48:29.350 [DEBUG] [Thread-191877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:48:29.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:48:29.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:48:29.408 [DEBUG] [Thread-191877] [transport.py] [_log()] userauth is OK
2025-11-24T14:48:29.408 [DEBUG] [Thread-191877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:48:29.408 [DEBUG] [Thread-191877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:48:29.409 [DEBUG] [Thread-191877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:48:29.409 [DEBUG] [Thread-191877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:48:29.426 [INFO] [Thread-191877] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:48:29.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:48:29.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:48:30.280 [DEBUG] [Thread-191877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:48:30.280 [DEBUG] [Thread-191877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:48:30.328 [DEBUG] [Thread-191877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:48:30.328 [DEBUG] [Thread-191877] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:48:30.336 [DEBUG] [Thread-191877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:48:30.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:48:30.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-11-24T14:48:30.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-11-24T14:48:30.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:48:30.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:48:30.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:48:30.371 [DEBUG] [Thread-191877] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:48:39.717 [DEBUG] [Thread-191879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:48:54.760 [DEBUG] [Thread-191880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:49:00.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:49:00.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:49:00.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-11-24T14:49:01.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 48, 28), 24.61, 19.34, 0.0, 23.64, 22.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:49:01.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:48:28
2025-11-24T14:49:01.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:49:01.512 [DEBUG] [Thread-191881] [transport.py] [_log()] starting thread (client mode): 0xd07f8460
2025-11-24T14:49:01.512 [DEBUG] [Thread-191881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:49:01.533 [DEBUG] [Thread-191881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:49:01.533 [INFO] [Thread-191881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] client lang: <none>
2025-11-24T14:49:01.534 [DEBUG] [Thread-191881] [transport.py] [_log()] server lang: <none>
2025-11-24T14:49:01.535 [DEBUG] [Thread-191881] [transport.py] [_log()] kex follows: False
2025-11-24T14:49:01.535 [DEBUG] [Thread-191881] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:49:01.535 [DEBUG] [Thread-191881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:49:01.535 [DEBUG] [Thread-191881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:49:01.535 [DEBUG] [Thread-191881] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:49:01.535 [DEBUG] [Thread-191881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:49:01.535 [DEBUG] [Thread-191881] [transport.py] [_log()] Compression: none
2025-11-24T14:49:01.535 [DEBUG] [Thread-191881] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:49:01.544 [DEBUG] [Thread-191881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:49:01.545 [DEBUG] [Thread-191881] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:49:01.545 [DEBUG] [Thread-191881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:49:01.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:49:01.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:49:01.545 [DEBUG] [Thread-191881] [transport.py] [_log()] userauth is OK
2025-11-24T14:49:01.545 [DEBUG] [Thread-191881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:49:01.545 [DEBUG] [Thread-191881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:49:01.545 [DEBUG] [Thread-191881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:49:01.545 [DEBUG] [Thread-191881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:49:01.555 [INFO] [Thread-191881] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:49:01.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:49:02.214 [DEBUG] [Thread-191881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:49:02.215 [DEBUG] [Thread-191881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:49:02.215 [DEBUG] [Thread-191881] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:49:02.255 [DEBUG] [Thread-191881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:49:02.255 [DEBUG] [Thread-191881] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:49:02.257 [DEBUG] [Thread-191881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:49:02.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:49:02.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:49:02.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:49:02.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:49:02.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:49:02.272 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:49:02.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:49:02.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:49:02.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:49:02.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.533381 -999.00  +22.10  16.76     25   +1.30 1 1 1 1 1   888    0 20.73 -25.55 ----- 16.8 16.8 183.1 30.7 28.1 -26.3 27.4 -30.8 29.0 -24.8 29.9 -26.1
2025-11-24T14:49:02.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:49:02.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:49:02.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.533381
2025-11-24T14:49:02.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:49:02.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:49:02.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:49:02.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:49:02.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:49:02.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:48:28', tmtdew=24.61, humidity=19.34, cloud=0.0, wind=23.64, temperature=22.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:48:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:49:02.273 [DEBUG] [Thread-191881] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:49:02.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:49:02.360 [DEBUG] [Thread-191884] [transport.py] [_log()] starting thread (client mode): 0xd317ee30
2025-11-24T14:49:02.360 [DEBUG] [Thread-191884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:49:02.374 [DEBUG] [Thread-191884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:49:02.375 [INFO] [Thread-191884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] client lang: <none>
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] server lang: <none>
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] kex follows: False
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:49:02.382 [DEBUG] [Thread-191884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:49:02.383 [DEBUG] [Thread-191884] [transport.py] [_log()] Compression: none
2025-11-24T14:49:02.383 [DEBUG] [Thread-191884] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:49:02.443 [DEBUG] [Thread-191884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:49:02.444 [DEBUG] [Thread-191884] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:49:02.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:49:02.444 [DEBUG] [Thread-191884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:49:02.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:49:02.506 [DEBUG] [Thread-191884] [transport.py] [_log()] userauth is OK
2025-11-24T14:49:02.506 [DEBUG] [Thread-191884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:49:02.506 [DEBUG] [Thread-191884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:49:02.506 [DEBUG] [Thread-191884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:49:02.506 [DEBUG] [Thread-191884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:49:02.521 [INFO] [Thread-191884] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:49:02.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:49:02.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:49:03.323 [DEBUG] [Thread-191884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:49:03.323 [DEBUG] [Thread-191884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:49:03.371 [DEBUG] [Thread-191884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:49:03.371 [DEBUG] [Thread-191884] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:49:03.379 [DEBUG] [Thread-191884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:49:03.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:49:03.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-11-24T14:49:03.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-11-24T14:49:03.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:49:03.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:49:03.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:49:03.410 [DEBUG] [Thread-191884] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:49:09.803 [DEBUG] [Thread-191886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:49:11.873 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:49:11.882 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:49:18.004 [DEBUG] [Thread-191887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:49:24.851 [DEBUG] [Thread-191888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:49:33.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:49:33.434 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:49:33.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-11-24T14:49:34.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 49, 1), 25.22, 18.54, 29.3, 35.48, 22.73, 0, 0, 0, 0, 0, 0),)
2025-11-24T14:49:34.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:49:01
2025-11-24T14:49:34.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:49:34.589 [DEBUG] [Thread-191889] [transport.py] [_log()] starting thread (client mode): 0xd07f8c40
2025-11-24T14:49:34.589 [DEBUG] [Thread-191889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:49:34.608 [DEBUG] [Thread-191889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:49:34.608 [INFO] [Thread-191889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:49:34.611 [DEBUG] [Thread-191889] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:49:34.611 [DEBUG] [Thread-191889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] client lang: <none>
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] server lang: <none>
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] kex follows: False
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] Compression: none
2025-11-24T14:49:34.612 [DEBUG] [Thread-191889] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:49:34.630 [DEBUG] [Thread-191889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:49:34.630 [DEBUG] [Thread-191889] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:49:34.630 [DEBUG] [Thread-191889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:49:34.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:49:34.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:49:34.631 [DEBUG] [Thread-191889] [transport.py] [_log()] userauth is OK
2025-11-24T14:49:34.631 [DEBUG] [Thread-191889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:49:34.631 [DEBUG] [Thread-191889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:49:34.631 [DEBUG] [Thread-191889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:49:34.631 [DEBUG] [Thread-191889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:49:34.648 [INFO] [Thread-191889] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:49:34.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:49:35.294 [DEBUG] [Thread-191889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:49:35.294 [DEBUG] [Thread-191889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:49:35.295 [DEBUG] [Thread-191889] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:49:35.335 [DEBUG] [Thread-191889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:49:35.335 [DEBUG] [Thread-191889] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:49:35.337 [DEBUG] [Thread-191889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:49:35.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:49:35.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:49:35.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:49:35.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:49:35.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:49:35.357 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:49:35.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:49:35.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:49:35.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:49:35.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.533728 -999.00  +22.30  27.85     24   +1.20 1 1 1 1 1   888    0 20.65 -24.88 ----- 27.9 27.9 184.6 34.7 28.2 -27.5 27.4 -29.1 28.8 -29.5 29.8 -28.4
2025-11-24T14:49:35.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:49:35.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:49:35.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.533728
2025-11-24T14:49:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:49:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:49:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:49:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:49:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:49:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:49:01', tmtdew=25.22, humidity=18.54, cloud=29.3, wind=35.48, temperature=22.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:48:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:49:35.358 [DEBUG] [Thread-191889] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:49: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-11-24T14:49:35.444 [DEBUG] [Thread-191892] [transport.py] [_log()] starting thread (client mode): 0xd3152a70
2025-11-24T14:49:35.444 [DEBUG] [Thread-191892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:49:35.458 [DEBUG] [Thread-191892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:49:35.458 [INFO] [Thread-191892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] client lang: <none>
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] server lang: <none>
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] kex follows: False
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:49:35.466 [DEBUG] [Thread-191892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:49:35.467 [DEBUG] [Thread-191892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:49:35.467 [DEBUG] [Thread-191892] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:49:35.467 [DEBUG] [Thread-191892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:49:35.467 [DEBUG] [Thread-191892] [transport.py] [_log()] Compression: none
2025-11-24T14:49:35.467 [DEBUG] [Thread-191892] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:49:35.523 [DEBUG] [Thread-191892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:49:35.523 [DEBUG] [Thread-191892] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:49:35.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:49:35.523 [DEBUG] [Thread-191892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:49:35.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:49:35.580 [DEBUG] [Thread-191892] [transport.py] [_log()] userauth is OK
2025-11-24T14:49:35.580 [DEBUG] [Thread-191892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:49:35.580 [DEBUG] [Thread-191892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:49:35.580 [DEBUG] [Thread-191892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:49:35.580 [DEBUG] [Thread-191892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:49:35.594 [INFO] [Thread-191892] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:49:35.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:49:35.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:49:36.407 [DEBUG] [Thread-191892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:49:36.407 [DEBUG] [Thread-191892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:49:36.455 [DEBUG] [Thread-191892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:49:36.455 [DEBUG] [Thread-191892] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:49:36.463 [DEBUG] [Thread-191892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:49:36.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:49:36.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-11-24T14:49:36.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-11-24T14:49:36.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:49:36.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:49:36.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:49:36.494 [DEBUG] [Thread-191892] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:49:39.881 [DEBUG] [Thread-191894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:49:54.972 [DEBUG] [Thread-191895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:50:06.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:50:06.506 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:50:06.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-11-24T14:50:07.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 49, 33), 25.27, 18.52, 29.3, 38.08, 22.51, 0, 0, 0, 0, 0, 0),)
2025-11-24T14:50:07.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:49:33
2025-11-24T14:50:07.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:50:07.779 [DEBUG] [Thread-191896] [transport.py] [_log()] starting thread (client mode): 0xd07fbe20
2025-11-24T14:50:07.779 [DEBUG] [Thread-191896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:50:07.793 [DEBUG] [Thread-191896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:50:07.793 [INFO] [Thread-191896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] client lang: <none>
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] server lang: <none>
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] kex follows: False
2025-11-24T14:50:07.797 [DEBUG] [Thread-191896] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:50:07.798 [DEBUG] [Thread-191896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:50:07.798 [DEBUG] [Thread-191896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:50:07.798 [DEBUG] [Thread-191896] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:50:07.798 [DEBUG] [Thread-191896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:50:07.798 [DEBUG] [Thread-191896] [transport.py] [_log()] Compression: none
2025-11-24T14:50:07.798 [DEBUG] [Thread-191896] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:50:07.829 [DEBUG] [Thread-191896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:50:07.832 [DEBUG] [Thread-191896] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:50:07.833 [DEBUG] [Thread-191896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:50:07.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:50:07.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:50:07.836 [DEBUG] [Thread-191896] [transport.py] [_log()] userauth is OK
2025-11-24T14:50:07.836 [DEBUG] [Thread-191896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:50:07.836 [DEBUG] [Thread-191896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:50:07.836 [DEBUG] [Thread-191896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:50:07.836 [DEBUG] [Thread-191896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:50:07.854 [INFO] [Thread-191896] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:50:07.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:50:10.002 [DEBUG] [Thread-191898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:50:11.579 [DEBUG] [Thread-191896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:50:11.579 [DEBUG] [Thread-191896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:50:11.589 [DEBUG] [Thread-191896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:50:11.619 [DEBUG] [Thread-191896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:50:11.620 [DEBUG] [Thread-191896] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:50:11.623 [DEBUG] [Thread-191896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:50:11.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:50:11.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:50:11.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:50:11.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:50:11.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:50:11.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:50:11.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:50:11.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:50:11.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:50:11.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.534075 -999.00  +22.10  23.39     24   +1.10 1 1 1 1 1   888    0 20.07 -22.13 ----- 23.4 23.4 176.8 35.9 28.0 -29.7 27.1 -28.4 28.6 -26.7 29.4 -30.3
2025-11-24T14:50:11.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:50:11.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:50:11.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.534075
2025-11-24T14:50:11.706 [DEBUG] [Thread-191896] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:50:11.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:50:11.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:50:11.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:50:11.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:50:11.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:50:11.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:49:33', tmtdew=25.27, humidity=18.52, cloud=29.3, wind=38.08, temperature=22.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:49:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:50:11.787 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:50:11.800 [DEBUG] [Thread-191900] [transport.py] [_log()] starting thread (client mode): 0xd07f8d30
2025-11-24T14:50:11.800 [DEBUG] [Thread-191900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:50:11.814 [DEBUG] [Thread-191900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:50:11.814 [INFO] [Thread-191900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] client lang: <none>
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] server lang: <none>
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] kex follows: False
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] Compression: none
2025-11-24T14:50:11.822 [DEBUG] [Thread-191900] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:50:11.886 [DEBUG] [Thread-191900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:50:11.886 [DEBUG] [Thread-191900] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:50:11.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:50:11.886 [DEBUG] [Thread-191900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:50:11.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:50:11.944 [DEBUG] [Thread-191900] [transport.py] [_log()] userauth is OK
2025-11-24T14:50:11.944 [DEBUG] [Thread-191900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:50:11.944 [DEBUG] [Thread-191900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:50:11.944 [DEBUG] [Thread-191900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:50:11.944 [DEBUG] [Thread-191900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:50:11.958 [INFO] [Thread-191900] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:50:11.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:50:11.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:50:12.024 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:50:12.025 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:50:12.792 [DEBUG] [Thread-191900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:50:12.792 [DEBUG] [Thread-191900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:50:12.832 [DEBUG] [Thread-191900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:50:12.832 [DEBUG] [Thread-191900] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:50:12.841 [DEBUG] [Thread-191900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:50:12.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:50:12.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-11-24T14:50:12.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-11-24T14:50:12.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:50:12.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:50:12.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:50:12.882 [DEBUG] [Thread-191900] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:50:18.344 [DEBUG] [Thread-191902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:50:25.036 [DEBUG] [Thread-191903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:50:40.100 [DEBUG] [Thread-191904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:50:42.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:50:42.901 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:50:42.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-11-24T14:50:43.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 50, 38), 24.8, 19.06, 29.3, 29.73, 22.35, 0, 0, 0, 0, 0, 0),)
2025-11-24T14:50:43.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:50:38
2025-11-24T14:50:43.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:50:43.954 [DEBUG] [Thread-191905] [transport.py] [_log()] starting thread (client mode): 0xd07eabf0
2025-11-24T14:50:43.954 [DEBUG] [Thread-191905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:50:43.973 [DEBUG] [Thread-191905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:50:43.973 [INFO] [Thread-191905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] client lang: <none>
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] server lang: <none>
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] kex follows: False
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:50:43.976 [DEBUG] [Thread-191905] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:50:43.977 [DEBUG] [Thread-191905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:50:43.977 [DEBUG] [Thread-191905] [transport.py] [_log()] Compression: none
2025-11-24T14:50:43.977 [DEBUG] [Thread-191905] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:50:43.996 [DEBUG] [Thread-191905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:50:43.996 [DEBUG] [Thread-191905] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:50:43.997 [DEBUG] [Thread-191905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:50:43.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:50:43.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:50:44.000 [DEBUG] [Thread-191905] [transport.py] [_log()] userauth is OK
2025-11-24T14:50:44.000 [DEBUG] [Thread-191905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:50:44.000 [DEBUG] [Thread-191905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:50:44.000 [DEBUG] [Thread-191905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:50:44.000 [DEBUG] [Thread-191905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:50:44.036 [INFO] [Thread-191905] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:50:44.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:50:44.633 [DEBUG] [Thread-191905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:50:44.633 [DEBUG] [Thread-191905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:50:44.634 [DEBUG] [Thread-191905] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:50:44.674 [DEBUG] [Thread-191905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:50:44.674 [DEBUG] [Thread-191905] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:50:44.677 [DEBUG] [Thread-191905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:50:44.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:50:44.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:50:44.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:50:44.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:50:44.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:50:44.703 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:50:44.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:50:44.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:50:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:50:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.534422 -999.00  +22.20  24.38     24   +1.10 1 1 1 1 1   888    0 20.43 -17.91 ----- 24.4 24.4 179.6 31.3 27.9 -27.4 26.9 -29.9 28.7 -26.2 29.5 -27.4
2025-11-24T14:50:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:50:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:50:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.534422
2025-11-24T14:50:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:50:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:50:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:50:44.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:50:44.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:50:44.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:50:38', tmtdew=24.8, humidity=19.06, cloud=29.3, wind=29.73, temperature=22.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:49:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:50:44.704 [DEBUG] [Thread-191905] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:50: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-11-24T14:50:44.789 [DEBUG] [Thread-191908] [transport.py] [_log()] starting thread (client mode): 0xd317c1f0
2025-11-24T14:50:44.789 [DEBUG] [Thread-191908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:50:44.804 [DEBUG] [Thread-191908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:50:44.804 [INFO] [Thread-191908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:50:44.811 [DEBUG] [Thread-191908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:50:44.811 [DEBUG] [Thread-191908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:50:44.811 [DEBUG] [Thread-191908] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:50:44.811 [DEBUG] [Thread-191908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:50:44.811 [DEBUG] [Thread-191908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] client lang: <none>
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] server lang: <none>
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] kex follows: False
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] Compression: none
2025-11-24T14:50:44.812 [DEBUG] [Thread-191908] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:50:44.867 [DEBUG] [Thread-191908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:50:44.867 [DEBUG] [Thread-191908] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:50:44.867 [DEBUG] [Thread-191908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:50:44.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:50:44.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:50:44.924 [DEBUG] [Thread-191908] [transport.py] [_log()] userauth is OK
2025-11-24T14:50:44.924 [DEBUG] [Thread-191908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:50:44.924 [DEBUG] [Thread-191908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:50:44.924 [DEBUG] [Thread-191908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:50:44.924 [DEBUG] [Thread-191908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:50:44.938 [INFO] [Thread-191908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:50:44.938 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:50:44.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:50:45.741 [DEBUG] [Thread-191908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:50:45.741 [DEBUG] [Thread-191908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:50:45.788 [DEBUG] [Thread-191908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:50:45.789 [DEBUG] [Thread-191908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:50:45.798 [DEBUG] [Thread-191908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:50:45.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:50:45.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-11-24T14:50:45.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') -> 00000000
2025-11-24T14:50:45.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:50:45.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:50:45.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:50:45.834 [DEBUG] [Thread-191908] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:50:55.135 [DEBUG] [Thread-191910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:51:10.185 [DEBUG] [Thread-191911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:51:12.165 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:51:12.165 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:51:15.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:51:15.857 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:51:15.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-11-24T14:51:16.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 51, 11), 24.52, 19.39, 29.3, 29.15, 22.2, 0, 0, 0, 0, 0, 0),)
2025-11-24T14:51:16.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:51:11
2025-11-24T14:51:16.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:51:16.840 [DEBUG] [Thread-191912] [transport.py] [_log()] starting thread (client mode): 0xd07fa230
2025-11-24T14:51:16.840 [DEBUG] [Thread-191912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:51:16.860 [DEBUG] [Thread-191912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:51:16.860 [INFO] [Thread-191912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:51:16.863 [DEBUG] [Thread-191912] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:51:16.863 [DEBUG] [Thread-191912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:51:16.863 [DEBUG] [Thread-191912] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:51:16.863 [DEBUG] [Thread-191912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:51:16.863 [DEBUG] [Thread-191912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:51:16.863 [DEBUG] [Thread-191912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:51:16.863 [DEBUG] [Thread-191912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:51:16.863 [DEBUG] [Thread-191912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] client lang: <none>
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] server lang: <none>
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] kex follows: False
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] Compression: none
2025-11-24T14:51:16.864 [DEBUG] [Thread-191912] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:51:16.884 [DEBUG] [Thread-191912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:51:16.885 [DEBUG] [Thread-191912] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:51:16.885 [DEBUG] [Thread-191912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:51:16.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:51:16.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:51:16.887 [DEBUG] [Thread-191912] [transport.py] [_log()] userauth is OK
2025-11-24T14:51:16.888 [DEBUG] [Thread-191912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:51:16.888 [DEBUG] [Thread-191912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:51:16.888 [DEBUG] [Thread-191912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:51:16.888 [DEBUG] [Thread-191912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:51:16.912 [INFO] [Thread-191912] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:51:16.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:51:17.627 [DEBUG] [Thread-191912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:51:17.636 [DEBUG] [Thread-191912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:51:17.637 [DEBUG] [Thread-191912] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:51:17.669 [DEBUG] [Thread-191912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:51:17.669 [DEBUG] [Thread-191912] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:51:17.673 [DEBUG] [Thread-191912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:51:17.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:51:17.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:51:17.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:51:17.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:51:17.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:51:17.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:51:17.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:51:17.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:51:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:51:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.535117 -999.00  +22.40  24.96     24   +1.10 1 1 1 1 1   888    0 20.07 -6.76 ----- 25.0 25.0 163.0 36.6 27.9 -28.4 27.0 -30.1 28.6 -27.7 29.5 -28.1
2025-11-24T14:51:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:51:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:51:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.535117
2025-11-24T14:51:17.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:51:17.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:51:17.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:51:17.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:51:17.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:51:17.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:51:11', tmtdew=24.52, humidity=19.39, cloud=29.3, wind=29.15, temperature=22.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:50:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:51:17.708 [DEBUG] [Thread-191912] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:51:17.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:51:17.795 [DEBUG] [Thread-191915] [transport.py] [_log()] starting thread (client mode): 0xd07f8d30
2025-11-24T14:51:17.795 [DEBUG] [Thread-191915] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:51:17.810 [DEBUG] [Thread-191915] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:51:17.810 [INFO] [Thread-191915] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:51:17.821 [DEBUG] [Thread-191915] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:51:17.821 [DEBUG] [Thread-191915] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:51:17.821 [DEBUG] [Thread-191915] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:51:17.822 [DEBUG] [Thread-191915] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:51:17.822 [DEBUG] [Thread-191915] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:51:17.822 [DEBUG] [Thread-191915] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:51:17.822 [DEBUG] [Thread-191915] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:51:17.822 [DEBUG] [Thread-191915] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:51:17.822 [DEBUG] [Thread-191915] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:51:17.822 [DEBUG] [Thread-191915] [transport.py] [_log()] client lang: <none>
2025-11-24T14:51:17.822 [DEBUG] [Thread-191915] [transport.py] [_log()] server lang: <none>
2025-11-24T14:51:17.822 [DEBUG] [Thread-191915] [transport.py] [_log()] kex follows: False
2025-11-24T14:51:17.823 [DEBUG] [Thread-191915] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:51:17.823 [DEBUG] [Thread-191915] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:51:17.823 [DEBUG] [Thread-191915] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:51:17.823 [DEBUG] [Thread-191915] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:51:17.823 [DEBUG] [Thread-191915] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:51:17.823 [DEBUG] [Thread-191915] [transport.py] [_log()] Compression: none
2025-11-24T14:51:17.823 [DEBUG] [Thread-191915] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:51:17.885 [DEBUG] [Thread-191915] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:51:17.886 [DEBUG] [Thread-191915] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:51:17.886 [DEBUG] [Thread-191915] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:51:17.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:51:17.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:51:17.941 [DEBUG] [Thread-191915] [transport.py] [_log()] userauth is OK
2025-11-24T14:51:17.941 [DEBUG] [Thread-191915] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:51:17.941 [DEBUG] [Thread-191915] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:51:17.941 [DEBUG] [Thread-191915] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:51:17.941 [DEBUG] [Thread-191915] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:51:17.965 [INFO] [Thread-191915] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:51:17.966 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:51:17.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:51:18.691 [DEBUG] [Thread-191917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:51:18.817 [DEBUG] [Thread-191915] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:51:18.817 [DEBUG] [Thread-191915] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:51:18.865 [DEBUG] [Thread-191915] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:51:18.865 [DEBUG] [Thread-191915] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:51:18.875 [DEBUG] [Thread-191915] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:51:18.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:51:18.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-11-24T14:51:18.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-11-24T14:51:18.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:51:18.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:51:18.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:51:18.911 [DEBUG] [Thread-191915] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:51:25.213 [DEBUG] [Thread-191918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:51:40.267 [DEBUG] [Thread-191919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:51:48.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:51:48.934 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:51:48.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-11-24T14:51:49.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 51, 43), 24.53, 19.21, 29.3, 35.94, 21.96, 0, 0, 0, 0, 0, 0),)
2025-11-24T14:51:49.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:51:43
2025-11-24T14:51:49.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:51:50.108 [DEBUG] [Thread-191920] [transport.py] [_log()] starting thread (client mode): 0xd07ebfd0
2025-11-24T14:51:50.108 [DEBUG] [Thread-191920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:51:50.128 [DEBUG] [Thread-191920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:51:50.128 [INFO] [Thread-191920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:51:50.130 [DEBUG] [Thread-191920] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] client lang: <none>
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] server lang: <none>
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] kex follows: False
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] Compression: none
2025-11-24T14:51:50.131 [DEBUG] [Thread-191920] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:51:50.138 [DEBUG] [Thread-191920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:51:50.138 [DEBUG] [Thread-191920] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:51:50.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:51:50.139 [DEBUG] [Thread-191920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:51:50.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:51:50.139 [DEBUG] [Thread-191920] [transport.py] [_log()] userauth is OK
2025-11-24T14:51:50.140 [DEBUG] [Thread-191920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:51:50.140 [DEBUG] [Thread-191920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:51:50.140 [DEBUG] [Thread-191920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:51:50.140 [DEBUG] [Thread-191920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:51:50.151 [INFO] [Thread-191920] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:51:50.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:51:50.794 [DEBUG] [Thread-191920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:51:50.794 [DEBUG] [Thread-191920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:51:50.794 [DEBUG] [Thread-191920] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:51:50.835 [DEBUG] [Thread-191920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:51:50.835 [DEBUG] [Thread-191920] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:51:50.837 [DEBUG] [Thread-191920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:51:50.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:51:50.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:51:50.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:51:50.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:51:50.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:51:50.855 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:51:50.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.535464 -999.00  +22.10  27.05     25   +1.10 1 1 1 1 1   888    0 20.73 -1.81 ----- 27.1 27.1 167.5 46.7 27.9 -27.5 27.1 -28.2 28.4 -28.9 29.3 -29.3
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.535464
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:51:50.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:51:43', tmtdew=24.53, humidity=19.21, cloud=29.3, wind=35.94, temperature=21.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:51:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:51:50.857 [DEBUG] [Thread-191920] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:51:50.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:51:50.942 [DEBUG] [Thread-191923] [transport.py] [_log()] starting thread (client mode): 0xd07e9d80
2025-11-24T14:51:50.942 [DEBUG] [Thread-191923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:51:50.957 [DEBUG] [Thread-191923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:51:50.957 [INFO] [Thread-191923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] client lang: <none>
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] server lang: <none>
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] kex follows: False
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] Compression: none
2025-11-24T14:51:50.965 [DEBUG] [Thread-191923] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:51:51.023 [DEBUG] [Thread-191923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:51:51.023 [DEBUG] [Thread-191923] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:51:51.023 [DEBUG] [Thread-191923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:51:51.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:51:51.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:51:51.081 [DEBUG] [Thread-191923] [transport.py] [_log()] userauth is OK
2025-11-24T14:51:51.081 [DEBUG] [Thread-191923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:51:51.081 [DEBUG] [Thread-191923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:51:51.081 [DEBUG] [Thread-191923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:51:51.081 [DEBUG] [Thread-191923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:51:51.095 [INFO] [Thread-191923] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:51:51.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:51:51.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:51:51.919 [DEBUG] [Thread-191923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:51:51.919 [DEBUG] [Thread-191923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:51:51.967 [DEBUG] [Thread-191923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:51:51.967 [DEBUG] [Thread-191923] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:51:51.975 [DEBUG] [Thread-191923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:51:51.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:51:51.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-11-24T14:51:51.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:51:51.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:51:51.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:51:51.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:51:52.007 [DEBUG] [Thread-191923] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:51:55.291 [DEBUG] [Thread-191925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:52:10.329 [DEBUG] [Thread-191926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:52:12.314 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:52:12.316 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:52:18.924 [DEBUG] [Thread-191927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:52:22.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:52:22.029 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:52:22.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-11-24T14:52:22.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 52, 16), 24.22, 19.57, 29.3, 32.31, 21.8, 0, 0, 0, 0, 0, 0),)
2025-11-24T14:52:22.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:52:16
2025-11-24T14:52:22.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:52:23.125 [DEBUG] [Thread-191928] [transport.py] [_log()] starting thread (client mode): 0xd317e6e0
2025-11-24T14:52:23.125 [DEBUG] [Thread-191928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:52:23.140 [DEBUG] [Thread-191928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:52:23.140 [INFO] [Thread-191928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] client lang: <none>
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] server lang: <none>
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] kex follows: False
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:52:23.144 [DEBUG] [Thread-191928] [transport.py] [_log()] Compression: none
2025-11-24T14:52:23.145 [DEBUG] [Thread-191928] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:52:23.153 [DEBUG] [Thread-191928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:52:23.154 [DEBUG] [Thread-191928] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:52:23.154 [DEBUG] [Thread-191928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:52:23.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:52:23.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:52:23.156 [DEBUG] [Thread-191928] [transport.py] [_log()] userauth is OK
2025-11-24T14:52:23.156 [DEBUG] [Thread-191928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:52:23.156 [DEBUG] [Thread-191928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:52:23.156 [DEBUG] [Thread-191928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:52:23.156 [DEBUG] [Thread-191928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:52:23.190 [INFO] [Thread-191928] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:52:23.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:52:23.772 [DEBUG] [Thread-191928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:52:23.772 [DEBUG] [Thread-191928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:52:23.773 [DEBUG] [Thread-191928] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:52:23.812 [DEBUG] [Thread-191928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:52:23.812 [DEBUG] [Thread-191928] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:52:23.815 [DEBUG] [Thread-191928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:52:23.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:52:23.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:52:23.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:52:23.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:52:23.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:52:23.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:52:23.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:52:23.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:52:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:52:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.535811 -999.00  +21.60  25.10     25   +1.00 1 1 1 1 1   888    0 20.87 1.31 ----- 25.1 25.1 172.6 39.5 27.7 -30.0 26.5 -34.4 28.2 -27.6 29.0 -30.3
2025-11-24T14:52:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:52:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:52:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.535811
2025-11-24T14:52:23.840 [DEBUG] [Thread-191928] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:52:23.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:52:23.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:52:23.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:52:23.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:52:23.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:52:23.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:52:16', tmtdew=24.22, humidity=19.57, cloud=29.3, wind=32.31, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:51:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:52: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-11-24T14:52:23.932 [DEBUG] [Thread-191931] [transport.py] [_log()] starting thread (client mode): 0xd317ef50
2025-11-24T14:52:23.932 [DEBUG] [Thread-191931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:52:23.948 [DEBUG] [Thread-191931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:52:23.948 [INFO] [Thread-191931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:52:23.956 [DEBUG] [Thread-191931] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:52:23.956 [DEBUG] [Thread-191931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:52:23.956 [DEBUG] [Thread-191931] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:52:23.956 [DEBUG] [Thread-191931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:52:23.956 [DEBUG] [Thread-191931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:52:23.957 [DEBUG] [Thread-191931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:52:23.957 [DEBUG] [Thread-191931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:52:23.957 [DEBUG] [Thread-191931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:52:23.957 [DEBUG] [Thread-191931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:52:23.957 [DEBUG] [Thread-191931] [transport.py] [_log()] client lang: <none>
2025-11-24T14:52:23.957 [DEBUG] [Thread-191931] [transport.py] [_log()] server lang: <none>
2025-11-24T14:52:23.957 [DEBUG] [Thread-191931] [transport.py] [_log()] kex follows: False
2025-11-24T14:52:23.957 [DEBUG] [Thread-191931] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:52:23.958 [DEBUG] [Thread-191931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:52:23.958 [DEBUG] [Thread-191931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:52:23.958 [DEBUG] [Thread-191931] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:52:23.958 [DEBUG] [Thread-191931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:52:23.958 [DEBUG] [Thread-191931] [transport.py] [_log()] Compression: none
2025-11-24T14:52:23.958 [DEBUG] [Thread-191931] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:52:24.014 [DEBUG] [Thread-191931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:52:24.015 [DEBUG] [Thread-191931] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:52:24.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:52:24.025 [DEBUG] [Thread-191931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:52:24.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:52:24.077 [DEBUG] [Thread-191931] [transport.py] [_log()] userauth is OK
2025-11-24T14:52:24.078 [DEBUG] [Thread-191931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:52:24.078 [DEBUG] [Thread-191931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:52:24.078 [DEBUG] [Thread-191931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:52:24.078 [DEBUG] [Thread-191931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:52:24.097 [INFO] [Thread-191931] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:52:24.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:52:24.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:52:24.928 [DEBUG] [Thread-191931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:52:24.928 [DEBUG] [Thread-191931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:52:24.976 [DEBUG] [Thread-191931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:52:24.976 [DEBUG] [Thread-191931] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:52:24.984 [DEBUG] [Thread-191931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:52:24.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:52:24.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-11-24T14:52:25.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-11-24T14:52:25.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:52:25.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:52:25.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:52:25.015 [DEBUG] [Thread-191931] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:52:25.368 [DEBUG] [Thread-191933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:52:40.424 [DEBUG] [Thread-191934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:52:55.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:52:55.029 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:52: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-11-24T14:52:55.456 [DEBUG] [Thread-191935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:52:55.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 52, 48), 23.97, 20.32, 29.3, 22.39, 21.68, 0, 0, 0, 0, 0, 0),)
2025-11-24T14:52:55.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:52:48
2025-11-24T14:52:55.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:52:56.098 [DEBUG] [Thread-191936] [transport.py] [_log()] starting thread (client mode): 0xd07eb4f0
2025-11-24T14:52:56.099 [DEBUG] [Thread-191936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:52:56.116 [DEBUG] [Thread-191936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:52:56.116 [INFO] [Thread-191936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:52:56.119 [DEBUG] [Thread-191936] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:52:56.119 [DEBUG] [Thread-191936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:52:56.119 [DEBUG] [Thread-191936] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:52:56.119 [DEBUG] [Thread-191936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:52:56.119 [DEBUG] [Thread-191936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:52:56.119 [DEBUG] [Thread-191936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:52:56.120 [DEBUG] [Thread-191936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:52:56.120 [DEBUG] [Thread-191936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:52:56.120 [DEBUG] [Thread-191936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:52:56.120 [DEBUG] [Thread-191936] [transport.py] [_log()] client lang: <none>
2025-11-24T14:52:56.120 [DEBUG] [Thread-191936] [transport.py] [_log()] server lang: <none>
2025-11-24T14:52:56.120 [DEBUG] [Thread-191936] [transport.py] [_log()] kex follows: False
2025-11-24T14:52:56.120 [DEBUG] [Thread-191936] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:52:56.120 [DEBUG] [Thread-191936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:52:56.120 [DEBUG] [Thread-191936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:52:56.120 [DEBUG] [Thread-191936] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:52:56.121 [DEBUG] [Thread-191936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:52:56.121 [DEBUG] [Thread-191936] [transport.py] [_log()] Compression: none
2025-11-24T14:52:56.121 [DEBUG] [Thread-191936] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:52:56.133 [DEBUG] [Thread-191936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:52:56.137 [DEBUG] [Thread-191936] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:52:56.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:52:56.140 [DEBUG] [Thread-191936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:52:56.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:52:56.142 [DEBUG] [Thread-191936] [transport.py] [_log()] userauth is OK
2025-11-24T14:52:56.142 [DEBUG] [Thread-191936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:52:56.142 [DEBUG] [Thread-191936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:52:56.142 [DEBUG] [Thread-191936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:52:56.142 [DEBUG] [Thread-191936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:52:56.165 [INFO] [Thread-191936] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:52:56.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:52:56.817 [DEBUG] [Thread-191936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:52:56.817 [DEBUG] [Thread-191936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:52:56.818 [DEBUG] [Thread-191936] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:52:56.858 [DEBUG] [Thread-191936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:52:56.859 [DEBUG] [Thread-191936] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:52:56.861 [DEBUG] [Thread-191936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:52:56.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:52:56.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:52:56.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:52:56.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:52:56.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:52:56.886 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:52:56.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:52:56.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:52:56.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:52:56.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.536158 -999.00  +21.50  21.28     25   +1.10 1 1 1 1 1   888    0 21.55 3.27 ----- 21.3 21.3 202.8 36.1 27.5 -29.5 26.4 -29.4 28.3 -25.1 28.9 -28.7
2025-11-24T14:52:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:52:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:52:56.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.536158
2025-11-24T14:52:56.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:52:56.891 [DEBUG] [Thread-191936] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:52:56.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:52:56.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:52:56.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:52:56.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:52:56.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:52:48', tmtdew=23.97, humidity=20.32, cloud=29.3, wind=22.39, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:52:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:52:56.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:52:56.986 [DEBUG] [Thread-191939] [transport.py] [_log()] starting thread (client mode): 0xd07a8ca0
2025-11-24T14:52:56.986 [DEBUG] [Thread-191939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:52:57.001 [DEBUG] [Thread-191939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:52:57.001 [INFO] [Thread-191939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:52:57.008 [DEBUG] [Thread-191939] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] client lang: <none>
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] server lang: <none>
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] kex follows: False
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:52:57.009 [DEBUG] [Thread-191939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:52:57.010 [DEBUG] [Thread-191939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:52:57.010 [DEBUG] [Thread-191939] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:52:57.010 [DEBUG] [Thread-191939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:52:57.010 [DEBUG] [Thread-191939] [transport.py] [_log()] Compression: none
2025-11-24T14:52:57.010 [DEBUG] [Thread-191939] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:52:57.069 [DEBUG] [Thread-191939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:52:57.069 [DEBUG] [Thread-191939] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:52:57.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:52:57.071 [DEBUG] [Thread-191939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:52:57.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:52:57.125 [DEBUG] [Thread-191939] [transport.py] [_log()] userauth is OK
2025-11-24T14:52:57.126 [DEBUG] [Thread-191939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:52:57.126 [DEBUG] [Thread-191939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:52:57.126 [DEBUG] [Thread-191939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:52:57.126 [DEBUG] [Thread-191939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:52:57.150 [INFO] [Thread-191939] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:52:57.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:52:57.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:52:57.976 [DEBUG] [Thread-191939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:52:57.976 [DEBUG] [Thread-191939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:52:58.023 [DEBUG] [Thread-191939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:52:58.024 [DEBUG] [Thread-191939] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:52:58.032 [DEBUG] [Thread-191939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:52:58.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:52:58.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-11-24T14:52:58.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:52:58.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:52:58.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:52:58.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:52:58.078 [DEBUG] [Thread-191939] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:53:10.484 [DEBUG] [Thread-191941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:53:12.457 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:53:12.459 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:53:19.205 [DEBUG] [Thread-191942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:53:25.545 [DEBUG] [Thread-191943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:53:28.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:53:28.077 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:53:28.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-11-24T14:53:29.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 53, 21), 23.68, 20.65, 29.3, 24.98, 21.5, 0, 0, 0, 0, 0, 0),)
2025-11-24T14:53:29.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:53:21
2025-11-24T14:53:29.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:53:29.373 [DEBUG] [Thread-191944] [transport.py] [_log()] starting thread (client mode): 0xd07a9ae0
2025-11-24T14:53:29.373 [DEBUG] [Thread-191944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:53:29.393 [DEBUG] [Thread-191944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:53:29.394 [INFO] [Thread-191944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:53:29.397 [DEBUG] [Thread-191944] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:53:29.397 [DEBUG] [Thread-191944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:53:29.397 [DEBUG] [Thread-191944] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:53:29.397 [DEBUG] [Thread-191944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:53:29.397 [DEBUG] [Thread-191944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:53:29.397 [DEBUG] [Thread-191944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:53:29.397 [DEBUG] [Thread-191944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] client lang: <none>
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] server lang: <none>
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] kex follows: False
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] Compression: none
2025-11-24T14:53:29.398 [DEBUG] [Thread-191944] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:53:29.418 [DEBUG] [Thread-191944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:53:29.419 [DEBUG] [Thread-191944] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:53:29.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:53:29.421 [DEBUG] [Thread-191944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:53:29.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:53:29.422 [DEBUG] [Thread-191944] [transport.py] [_log()] userauth is OK
2025-11-24T14:53:29.423 [DEBUG] [Thread-191944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:53:29.423 [DEBUG] [Thread-191944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:53:29.423 [DEBUG] [Thread-191944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:53:29.423 [DEBUG] [Thread-191944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:53:29.447 [INFO] [Thread-191944] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:53:29.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:53:30.038 [DEBUG] [Thread-191944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:53:30.038 [DEBUG] [Thread-191944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:53:30.038 [DEBUG] [Thread-191944] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:53:30.079 [DEBUG] [Thread-191944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:53:30.079 [DEBUG] [Thread-191944] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:53:30.082 [DEBUG] [Thread-191944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:53:30.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:53:30.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:53:30.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:53:30.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:53:30.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:53:30.107 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:53:30.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:53:30.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:53:30.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:53:30.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.536505 -999.00  +21.40  19.59     26   +1.10 1 1 1 1 1   888    0 21.24 3.43 ----- 20.8 19.6 173.1 26.1 27.4 -27.9 26.3 -31.2 28.1 -26.6 29.0 -28.8
2025-11-24T14:53:30.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:53:30.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:53:30.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.536505
2025-11-24T14:53:30.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:53:30.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:53:30.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:53:30.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:53:30.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:53:30.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:53:21', tmtdew=23.68, humidity=20.65, cloud=29.3, wind=24.98, temperature=21.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:52:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:53:30.110 [DEBUG] [Thread-191944] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:53:30.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:53:30.195 [DEBUG] [Thread-191947] [transport.py] [_log()] starting thread (client mode): 0xd07e91e0
2025-11-24T14:53:30.195 [DEBUG] [Thread-191947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:53:30.210 [DEBUG] [Thread-191947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:53:30.210 [INFO] [Thread-191947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:53:30.217 [DEBUG] [Thread-191947] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:53:30.217 [DEBUG] [Thread-191947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:53:30.217 [DEBUG] [Thread-191947] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:53:30.217 [DEBUG] [Thread-191947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:53:30.217 [DEBUG] [Thread-191947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] client lang: <none>
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] server lang: <none>
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] kex follows: False
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] Compression: none
2025-11-24T14:53:30.218 [DEBUG] [Thread-191947] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:53:30.275 [DEBUG] [Thread-191947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:53:30.275 [DEBUG] [Thread-191947] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:53:30.275 [DEBUG] [Thread-191947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:53:30.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:53:30.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:53:30.332 [DEBUG] [Thread-191947] [transport.py] [_log()] userauth is OK
2025-11-24T14:53:30.332 [DEBUG] [Thread-191947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:53:30.332 [DEBUG] [Thread-191947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:53:30.332 [DEBUG] [Thread-191947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:53:30.332 [DEBUG] [Thread-191947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:53:30.346 [INFO] [Thread-191947] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:53:30.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:53:30.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:53:31.201 [DEBUG] [Thread-191947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:53:31.202 [DEBUG] [Thread-191947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:53:31.250 [DEBUG] [Thread-191947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:53:31.250 [DEBUG] [Thread-191947] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:53:31.259 [DEBUG] [Thread-191947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:53:31.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:53:31.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:53:31.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-11-24T14:53:31.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:53:31.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:53:31.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:53:31.297 [DEBUG] [Thread-191947] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:53:40.581 [DEBUG] [Thread-191949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:53:55.644 [DEBUG] [Thread-191950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:54:01.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:54:01.320 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:54:01.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-11-24T14:54:02.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 53, 54), 24.1, 19.75, 0.0, 31.11, 21.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:54:02.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:53:54
2025-11-24T14:54:02.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:54:02.383 [DEBUG] [Thread-191951] [transport.py] [_log()] starting thread (client mode): 0xd07e8e20
2025-11-24T14:54:02.383 [DEBUG] [Thread-191951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:54:02.399 [DEBUG] [Thread-191951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:54:02.400 [INFO] [Thread-191951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] client lang: <none>
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] server lang: <none>
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] kex follows: False
2025-11-24T14:54:02.402 [DEBUG] [Thread-191951] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:54:02.403 [DEBUG] [Thread-191951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:54:02.403 [DEBUG] [Thread-191951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:54:02.403 [DEBUG] [Thread-191951] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:54:02.403 [DEBUG] [Thread-191951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:54:02.403 [DEBUG] [Thread-191951] [transport.py] [_log()] Compression: none
2025-11-24T14:54:02.403 [DEBUG] [Thread-191951] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:54:02.418 [DEBUG] [Thread-191951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:54:02.421 [DEBUG] [Thread-191951] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:54:02.422 [DEBUG] [Thread-191951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:54:02.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:54:02.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:54:02.426 [DEBUG] [Thread-191951] [transport.py] [_log()] userauth is OK
2025-11-24T14:54:02.426 [DEBUG] [Thread-191951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:54:02.426 [DEBUG] [Thread-191951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:54:02.426 [DEBUG] [Thread-191951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:54:02.427 [DEBUG] [Thread-191951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:54:02.451 [INFO] [Thread-191951] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:54:02.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:54:03.084 [DEBUG] [Thread-191951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:54:03.084 [DEBUG] [Thread-191951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:54:03.093 [DEBUG] [Thread-191951] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:54:03.125 [DEBUG] [Thread-191951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:54:03.125 [DEBUG] [Thread-191951] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:54:03.128 [DEBUG] [Thread-191951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:54:03.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:54:03.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:54:03.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:54:03.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:54:03.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:54:03.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:54:03.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:54:03.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:54:03.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:54:03.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.536853 -999.00  +21.50  20.01     26   +1.20 1 1 1 1 1   888    0 20.77 0.52 ----- 20.8 20.0 153.9 26.3 27.3 -27.5 26.4 -27.5 28.2 -26.4 29.1 -28.0
2025-11-24T14:54:03.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:54:03.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:54:03.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.536853
2025-11-24T14:54:03.154 [DEBUG] [Thread-191951] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:54:03.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:54:03.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:54:03.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:54:03.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:54:03.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:54:03.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:53:54', tmtdew=24.1, humidity=19.75, cloud=0.0, wind=31.11, temperature=21.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:53:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:54:03.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:54:03.243 [DEBUG] [Thread-191954] [transport.py] [_log()] starting thread (client mode): 0xd07a8a00
2025-11-24T14:54:03.243 [DEBUG] [Thread-191954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:54:03.258 [DEBUG] [Thread-191954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:54:03.258 [INFO] [Thread-191954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:54:03.265 [DEBUG] [Thread-191954] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] client lang: <none>
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] server lang: <none>
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] kex follows: False
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] Compression: none
2025-11-24T14:54:03.266 [DEBUG] [Thread-191954] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:54:03.323 [DEBUG] [Thread-191954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:54:03.324 [DEBUG] [Thread-191954] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:54:03.324 [DEBUG] [Thread-191954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:54:03.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:54:03.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:54:03.380 [DEBUG] [Thread-191954] [transport.py] [_log()] userauth is OK
2025-11-24T14:54:03.380 [DEBUG] [Thread-191954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:54:03.381 [DEBUG] [Thread-191954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:54:03.381 [DEBUG] [Thread-191954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:54:03.381 [DEBUG] [Thread-191954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:54:03.394 [INFO] [Thread-191954] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:54:03.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:54:03.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:54:04.258 [DEBUG] [Thread-191954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:54:04.259 [DEBUG] [Thread-191954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:54:04.307 [DEBUG] [Thread-191954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:54:04.307 [DEBUG] [Thread-191954] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:54:04.317 [DEBUG] [Thread-191954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:54:04.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:54:04.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-11-24T14:54:04.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-11-24T14:54:04.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:54:04.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:54:04.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:54:04.365 [DEBUG] [Thread-191954] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:54:10.677 [DEBUG] [Thread-191956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:54:12.603 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:54:12.605 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:54:19.336 [DEBUG] [Thread-191957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:54:25.728 [DEBUG] [Thread-191958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:54:34.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:54:34.388 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:54:34.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-11-24T14:54:35.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 54, 26), 24.01, 19.89, 0.0, 26.4, 21.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:54:35.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:54:26
2025-11-24T14:54:35.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:54:35.376 [DEBUG] [Thread-191959] [transport.py] [_log()] starting thread (client mode): 0xd07a9b10
2025-11-24T14:54:35.376 [DEBUG] [Thread-191959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:54:35.396 [DEBUG] [Thread-191959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:54:35.396 [INFO] [Thread-191959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] client lang: <none>
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] server lang: <none>
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] kex follows: False
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] Compression: none
2025-11-24T14:54:35.400 [DEBUG] [Thread-191959] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:54:35.421 [DEBUG] [Thread-191959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:54:35.422 [DEBUG] [Thread-191959] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:54:35.422 [DEBUG] [Thread-191959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:54:35.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:54:35.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:54:35.423 [DEBUG] [Thread-191959] [transport.py] [_log()] userauth is OK
2025-11-24T14:54:35.423 [DEBUG] [Thread-191959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:54:35.423 [DEBUG] [Thread-191959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:54:35.423 [DEBUG] [Thread-191959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:54:35.423 [DEBUG] [Thread-191959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:54:35.438 [INFO] [Thread-191959] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:54:35.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:54:36.074 [DEBUG] [Thread-191959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:54:36.074 [DEBUG] [Thread-191959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:54:36.074 [DEBUG] [Thread-191959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:54:36.115 [DEBUG] [Thread-191959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:54:36.115 [DEBUG] [Thread-191959] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:54:36.117 [DEBUG] [Thread-191959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:54:36.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:54:36.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:54:36.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:54:36.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:54:36.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:54:36.127 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:54:36.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:54:36.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.537200 -999.00  +21.40  21.23     25   +1.00 1 1 1 1 1   888    0 20.99 -3.09 ----- 23.8 21.2 184.0 39.4 27.4 -28.0 26.3 -34.3 27.9 -26.6 28.8 -29.6
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.537200
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:54:36.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:54:26', tmtdew=24.01, humidity=19.89, cloud=0.0, wind=26.4, temperature=21.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:53:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:54:36.129 [DEBUG] [Thread-191959] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:54:36.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:54:36.213 [DEBUG] [Thread-191962] [transport.py] [_log()] starting thread (client mode): 0xd07aa290
2025-11-24T14:54:36.213 [DEBUG] [Thread-191962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:54:36.229 [DEBUG] [Thread-191962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:54:36.229 [INFO] [Thread-191962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:54:36.236 [DEBUG] [Thread-191962] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:54:36.236 [DEBUG] [Thread-191962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:54:36.236 [DEBUG] [Thread-191962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:54:36.236 [DEBUG] [Thread-191962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:54:36.236 [DEBUG] [Thread-191962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:54:36.236 [DEBUG] [Thread-191962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:54:36.236 [DEBUG] [Thread-191962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] client lang: <none>
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] server lang: <none>
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] kex follows: False
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] Compression: none
2025-11-24T14:54:36.237 [DEBUG] [Thread-191962] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:54:36.290 [DEBUG] [Thread-191962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:54:36.290 [DEBUG] [Thread-191962] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:54:36.290 [DEBUG] [Thread-191962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:54:36.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:54:36.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:54:36.349 [DEBUG] [Thread-191962] [transport.py] [_log()] userauth is OK
2025-11-24T14:54:36.349 [DEBUG] [Thread-191962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:54:36.349 [DEBUG] [Thread-191962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:54:36.349 [DEBUG] [Thread-191962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:54:36.349 [DEBUG] [Thread-191962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:54:36.368 [INFO] [Thread-191962] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:54:36.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:54:36.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:54:37.207 [DEBUG] [Thread-191962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:54:37.208 [DEBUG] [Thread-191962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:54:37.255 [DEBUG] [Thread-191962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:54:37.255 [DEBUG] [Thread-191962] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:54:37.264 [DEBUG] [Thread-191962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:54:37.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:54:37.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-11-24T14:54:37.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-11-24T14:54:37.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:54:37.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:54:37.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:54:37.296 [DEBUG] [Thread-191962] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:54:40.759 [DEBUG] [Thread-191964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:54:55.808 [DEBUG] [Thread-191965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:55:07.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:55:07.318 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:55:07.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:55:07.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 54, 59), 23.65, 20.29, 0.0, 28.46, 21.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:55:07.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:54:59
2025-11-24T14:55:08.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:55:08.277 [DEBUG] [Thread-191966] [transport.py] [_log()] starting thread (client mode): 0xd07a9330
2025-11-24T14:55:08.277 [DEBUG] [Thread-191966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:55:08.298 [DEBUG] [Thread-191966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:55:08.298 [INFO] [Thread-191966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] client lang: <none>
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] server lang: <none>
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] kex follows: False
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] Compression: none
2025-11-24T14:55:08.302 [DEBUG] [Thread-191966] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:55:08.319 [DEBUG] [Thread-191966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:55:08.319 [DEBUG] [Thread-191966] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:55:08.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:55:08.320 [DEBUG] [Thread-191966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:55:08.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:55:08.321 [DEBUG] [Thread-191966] [transport.py] [_log()] userauth is OK
2025-11-24T14:55:08.321 [DEBUG] [Thread-191966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:55:08.321 [DEBUG] [Thread-191966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:55:08.321 [DEBUG] [Thread-191966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:55:08.321 [DEBUG] [Thread-191966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:55:08.335 [INFO] [Thread-191966] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:55:08.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:55:10.839 [DEBUG] [Thread-191968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:55:12.755 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:55:12.757 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:55:12.885 [DEBUG] [Thread-191966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:55:12.886 [DEBUG] [Thread-191966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:55:12.886 [DEBUG] [Thread-191966] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:55:12.927 [DEBUG] [Thread-191966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:55:12.927 [DEBUG] [Thread-191966] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:55:12.931 [DEBUG] [Thread-191966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:55:12.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:55:12.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:55:12.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:55:12.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:55:12.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:55:12.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:55:12.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:55:12.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:55:12.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:55:12.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.538242 -999.00  +21.40  27.94     26   +1.20 1 1 1 1 1   888    0 20.73 -16.68 ----- 21.7 27.9 179.0 35.5 27.1 -28.7 26.0 -30.3 27.9 -27.4 28.6 -27.0
2025-11-24T14:55:12.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:55:12.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:55:12.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.538242
2025-11-24T14:55:12.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:55:12.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:55:12.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:55:12.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:55:12.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:55:12.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:54:59', tmtdew=23.65, humidity=20.29, cloud=0.0, wind=28.46, temperature=21.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:55:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:55:12.973 [DEBUG] [Thread-191966] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:55:13.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:55:13.070 [DEBUG] [Thread-191970] [transport.py] [_log()] starting thread (client mode): 0xc9b803d0
2025-11-24T14:55:13.070 [DEBUG] [Thread-191970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:55:13.085 [DEBUG] [Thread-191970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:55:13.085 [INFO] [Thread-191970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:55:13.092 [DEBUG] [Thread-191970] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:55:13.092 [DEBUG] [Thread-191970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:55:13.092 [DEBUG] [Thread-191970] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:55:13.092 [DEBUG] [Thread-191970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:55:13.092 [DEBUG] [Thread-191970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:55:13.092 [DEBUG] [Thread-191970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:55:13.092 [DEBUG] [Thread-191970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:55:13.093 [DEBUG] [Thread-191970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:55:13.093 [DEBUG] [Thread-191970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:55:13.093 [DEBUG] [Thread-191970] [transport.py] [_log()] client lang: <none>
2025-11-24T14:55:13.093 [DEBUG] [Thread-191970] [transport.py] [_log()] server lang: <none>
2025-11-24T14:55:13.093 [DEBUG] [Thread-191970] [transport.py] [_log()] kex follows: False
2025-11-24T14:55:13.093 [DEBUG] [Thread-191970] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:55:13.093 [DEBUG] [Thread-191970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:55:13.102 [DEBUG] [Thread-191970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:55:13.102 [DEBUG] [Thread-191970] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:55:13.102 [DEBUG] [Thread-191970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:55:13.102 [DEBUG] [Thread-191970] [transport.py] [_log()] Compression: none
2025-11-24T14:55:13.102 [DEBUG] [Thread-191970] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:55:13.154 [DEBUG] [Thread-191970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:55:13.155 [DEBUG] [Thread-191970] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:55:13.156 [DEBUG] [Thread-191970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:55:13.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:55:13.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:55:13.213 [DEBUG] [Thread-191970] [transport.py] [_log()] userauth is OK
2025-11-24T14:55:13.213 [DEBUG] [Thread-191970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:55:13.223 [DEBUG] [Thread-191970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:55:13.223 [DEBUG] [Thread-191970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:55:13.223 [DEBUG] [Thread-191970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:55:13.242 [INFO] [Thread-191970] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:55:13.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:55:13.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:55:14.052 [DEBUG] [Thread-191970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:55:14.052 [DEBUG] [Thread-191970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:55:14.101 [DEBUG] [Thread-191970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:55:14.101 [DEBUG] [Thread-191970] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:55:14.111 [DEBUG] [Thread-191970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:55:14.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:55:14.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-11-24T14:55:14.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-11-24T14:55:14.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:55:14.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:55:14.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:55:14.147 [DEBUG] [Thread-191970] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:55:19.426 [DEBUG] [Thread-191972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:55:25.877 [DEBUG] [Thread-191973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:55:40.931 [DEBUG] [Thread-191974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:55:44.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:55:44.171 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:55:44.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-11-24T14:55:44.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 55, 31), 23.67, 20.27, 0.0, 28.02, 21.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:55:44.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:55:31
2025-11-24T14:55:45.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:55:45.228 [DEBUG] [Thread-191975] [transport.py] [_log()] starting thread (client mode): 0xd07eac80
2025-11-24T14:55:45.229 [DEBUG] [Thread-191975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:55:45.241 [DEBUG] [Thread-191975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:55:45.241 [INFO] [Thread-191975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] client lang: <none>
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] server lang: <none>
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] kex follows: False
2025-11-24T14:55:45.244 [DEBUG] [Thread-191975] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:55:45.245 [DEBUG] [Thread-191975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:55:45.245 [DEBUG] [Thread-191975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:55:45.245 [DEBUG] [Thread-191975] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:55:45.245 [DEBUG] [Thread-191975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:55:45.245 [DEBUG] [Thread-191975] [transport.py] [_log()] Compression: none
2025-11-24T14:55:45.245 [DEBUG] [Thread-191975] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:55:45.268 [DEBUG] [Thread-191975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:55:45.271 [DEBUG] [Thread-191975] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:55:45.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:55:45.272 [DEBUG] [Thread-191975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:55:45.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:55:45.274 [DEBUG] [Thread-191975] [transport.py] [_log()] userauth is OK
2025-11-24T14:55:45.274 [DEBUG] [Thread-191975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:55:45.274 [DEBUG] [Thread-191975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:55:45.274 [DEBUG] [Thread-191975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:55:45.274 [DEBUG] [Thread-191975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:55:45.288 [INFO] [Thread-191975] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:55:45.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:55:45.861 [DEBUG] [Thread-191975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:55:45.861 [DEBUG] [Thread-191975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:55:45.862 [DEBUG] [Thread-191975] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:55:45.902 [DEBUG] [Thread-191975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:55:45.902 [DEBUG] [Thread-191975] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:55:45.904 [DEBUG] [Thread-191975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:55:45.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:55:45.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:55:45.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:55:45.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:55:45.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:55:45.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:55:45.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:55:45.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:55:45.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:55:45.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.538589 -999.00  +21.20  19.54     26   +1.20 1 1 1 1 1   888    0 20.50 -18.88 ----- 15.7 19.5 179.2 34.6 27.0 -28.2 26.1 -30.9 27.9 -24.9 28.6 -27.5
2025-11-24T14:55:45.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:55:45.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:55:45.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.538589
2025-11-24T14:55:45.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:55:45.933 [DEBUG] [Thread-191975] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:55:45.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:55:45.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:55:45.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:55:45.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:55:45.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:55:31', tmtdew=23.67, humidity=20.27, cloud=0.0, wind=28.02, temperature=21.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:55:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:55:46.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:55:46.028 [DEBUG] [Thread-191978] [transport.py] [_log()] starting thread (client mode): 0xd07ebd30
2025-11-24T14:55:46.028 [DEBUG] [Thread-191978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:55:46.045 [DEBUG] [Thread-191978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:55:46.046 [INFO] [Thread-191978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] client lang: <none>
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] server lang: <none>
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] kex follows: False
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:55:46.053 [DEBUG] [Thread-191978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:55:46.054 [DEBUG] [Thread-191978] [transport.py] [_log()] Compression: none
2025-11-24T14:55:46.054 [DEBUG] [Thread-191978] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:55:46.112 [DEBUG] [Thread-191978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:55:46.113 [DEBUG] [Thread-191978] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:55:46.113 [DEBUG] [Thread-191978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:55:46.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:55:46.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:55:46.169 [DEBUG] [Thread-191978] [transport.py] [_log()] userauth is OK
2025-11-24T14:55:46.169 [DEBUG] [Thread-191978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:55:46.169 [DEBUG] [Thread-191978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:55:46.169 [DEBUG] [Thread-191978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:55:46.169 [DEBUG] [Thread-191978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:55:46.188 [INFO] [Thread-191978] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:55:46.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:55:46.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:55:47.034 [DEBUG] [Thread-191978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:55:47.034 [DEBUG] [Thread-191978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:55:47.082 [DEBUG] [Thread-191978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:55:47.082 [DEBUG] [Thread-191978] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:55:47.091 [DEBUG] [Thread-191978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:55:47.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:55:47.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-11-24T14:55:47.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-11-24T14:55:47.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:55:47.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:55:47.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:55:47.131 [DEBUG] [Thread-191978] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:55:55.968 [DEBUG] [Thread-191980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:56:11.019 [DEBUG] [Thread-191981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:56:12.901 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:56:12.904 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:56:17.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:56:17.153 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:56:17.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-11-24T14:56:17.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 56, 4), 23.57, 20.35, 0.0, 27.47, 21.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:56:17.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:56:04
2025-11-24T14:56:18.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:56:18.258 [DEBUG] [Thread-191982] [transport.py] [_log()] starting thread (client mode): 0xd07aba60
2025-11-24T14:56:18.258 [DEBUG] [Thread-191982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:56:18.278 [DEBUG] [Thread-191982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:56:18.279 [INFO] [Thread-191982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] client lang: <none>
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] server lang: <none>
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] kex follows: False
2025-11-24T14:56:18.282 [DEBUG] [Thread-191982] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:56:18.283 [DEBUG] [Thread-191982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:56:18.283 [DEBUG] [Thread-191982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:56:18.283 [DEBUG] [Thread-191982] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:56:18.283 [DEBUG] [Thread-191982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:56:18.283 [DEBUG] [Thread-191982] [transport.py] [_log()] Compression: none
2025-11-24T14:56:18.283 [DEBUG] [Thread-191982] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:56:18.299 [DEBUG] [Thread-191982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:56:18.299 [DEBUG] [Thread-191982] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:56:18.300 [DEBUG] [Thread-191982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:56:18.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:56:18.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:56:18.301 [DEBUG] [Thread-191982] [transport.py] [_log()] userauth is OK
2025-11-24T14:56:18.301 [DEBUG] [Thread-191982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:56:18.301 [DEBUG] [Thread-191982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:56:18.301 [DEBUG] [Thread-191982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:56:18.301 [DEBUG] [Thread-191982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:56:18.314 [INFO] [Thread-191982] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:56:18.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:56:18.950 [DEBUG] [Thread-191982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:56:18.950 [DEBUG] [Thread-191982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:56:18.950 [DEBUG] [Thread-191982] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:56:18.991 [DEBUG] [Thread-191982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:56:18.991 [DEBUG] [Thread-191982] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:56:18.993 [DEBUG] [Thread-191982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:56:19.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:56:19.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:56:19.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:56:19.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:56:19.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:56:19.006 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:56:19.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:56:19.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:56:19.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:56:19.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.538589 -999.00  +21.20  19.54     26   +1.20 1 1 1 1 1   888    0 20.50 -18.88 ----- 15.7 19.5 179.2 34.6 27.0 -28.2 26.1 -30.9 27.9 -24.9 28.6 -27.5
2025-11-24T14:56:19.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:56:19.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:56:19.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.538589
2025-11-24T14:56:19.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:56:19.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:56:19.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:56:19.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:56:19.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:56:19.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:56:04', tmtdew=23.57, humidity=20.35, cloud=0.0, wind=27.47, temperature=21.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:55:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:56:19.007 [DEBUG] [Thread-191982] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:56:19.081 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:56:19.093 [DEBUG] [Thread-191985] [transport.py] [_log()] starting thread (client mode): 0xd07a8c10
2025-11-24T14:56:19.093 [DEBUG] [Thread-191985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:56:19.108 [DEBUG] [Thread-191985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:56:19.108 [INFO] [Thread-191985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:56:19.115 [DEBUG] [Thread-191985] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:56:19.115 [DEBUG] [Thread-191985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:56:19.115 [DEBUG] [Thread-191985] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:56:19.115 [DEBUG] [Thread-191985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:56:19.115 [DEBUG] [Thread-191985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:56:19.115 [DEBUG] [Thread-191985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] client lang: <none>
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] server lang: <none>
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] kex follows: False
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] Compression: none
2025-11-24T14:56:19.116 [DEBUG] [Thread-191985] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:56:19.171 [DEBUG] [Thread-191985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:56:19.171 [DEBUG] [Thread-191985] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:56:19.171 [DEBUG] [Thread-191985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:56:19.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:56:19.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:56:19.228 [DEBUG] [Thread-191985] [transport.py] [_log()] userauth is OK
2025-11-24T14:56:19.228 [DEBUG] [Thread-191985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:56:19.228 [DEBUG] [Thread-191985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:56:19.228 [DEBUG] [Thread-191985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:56:19.228 [DEBUG] [Thread-191985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:56:19.242 [INFO] [Thread-191985] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:56:19.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:56:19.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:56:19.702 [DEBUG] [Thread-191987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:56:20.054 [DEBUG] [Thread-191985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:56:20.055 [DEBUG] [Thread-191985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:56:20.103 [DEBUG] [Thread-191985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:56:20.103 [DEBUG] [Thread-191985] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:56:20.111 [DEBUG] [Thread-191985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:56:20.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:56:20.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T14:56:20.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:56:20.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:56:20.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:56:20.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:56:20.143 [DEBUG] [Thread-191985] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:56:26.058 [DEBUG] [Thread-191988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:56:41.106 [DEBUG] [Thread-191989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:56:50.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:56:50.166 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:56:50.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-11-24T14:56:50.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 56, 36), 23.41, 20.55, 0.0, 17.08, 21.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:56:50.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:56:36
2025-11-24T14:56:51.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:56:51.244 [DEBUG] [Thread-191990] [transport.py] [_log()] starting thread (client mode): 0xd07e8310
2025-11-24T14:56:51.245 [DEBUG] [Thread-191990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:56:51.267 [DEBUG] [Thread-191990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:56:51.267 [INFO] [Thread-191990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:56:51.277 [DEBUG] [Thread-191990] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:56:51.278 [DEBUG] [Thread-191990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:56:51.278 [DEBUG] [Thread-191990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:56:51.278 [DEBUG] [Thread-191990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:56:51.278 [DEBUG] [Thread-191990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:56:51.278 [DEBUG] [Thread-191990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:56:51.278 [DEBUG] [Thread-191990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:56:51.279 [DEBUG] [Thread-191990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:56:51.279 [DEBUG] [Thread-191990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:56:51.279 [DEBUG] [Thread-191990] [transport.py] [_log()] client lang: <none>
2025-11-24T14:56:51.279 [DEBUG] [Thread-191990] [transport.py] [_log()] server lang: <none>
2025-11-24T14:56:51.279 [DEBUG] [Thread-191990] [transport.py] [_log()] kex follows: False
2025-11-24T14:56:51.279 [DEBUG] [Thread-191990] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:56:51.279 [DEBUG] [Thread-191990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:56:51.279 [DEBUG] [Thread-191990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:56:51.279 [DEBUG] [Thread-191990] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:56:51.280 [DEBUG] [Thread-191990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:56:51.280 [DEBUG] [Thread-191990] [transport.py] [_log()] Compression: none
2025-11-24T14:56:51.280 [DEBUG] [Thread-191990] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:56:51.299 [DEBUG] [Thread-191990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:56:51.299 [DEBUG] [Thread-191990] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:56:51.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:56:51.300 [DEBUG] [Thread-191990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:56:51.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:56:51.303 [DEBUG] [Thread-191990] [transport.py] [_log()] userauth is OK
2025-11-24T14:56:51.303 [DEBUG] [Thread-191990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:56:51.303 [DEBUG] [Thread-191990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:56:51.303 [DEBUG] [Thread-191990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:56:51.303 [DEBUG] [Thread-191990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:56:51.327 [INFO] [Thread-191990] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:56:51.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:56:51.887 [DEBUG] [Thread-191990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:56:51.887 [DEBUG] [Thread-191990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:56:51.887 [DEBUG] [Thread-191990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:56:51.928 [DEBUG] [Thread-191990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:56:51.928 [DEBUG] [Thread-191990] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:56:51.930 [DEBUG] [Thread-191990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:56:51.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:56:51.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:56:51.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:56:51.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:56:51.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:56:51.959 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:56:51.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:56:51.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:56:51.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:56:51.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.538936 -999.00  +21.10  16.33     26   +1.30 1 1 1 1 1   888    0 19.97 -23.67 ----- 15.3 16.3 180.7 27.1 27.1 -27.0 26.1 -29.4 28.0 -24.8 28.8 -25.6
2025-11-24T14:56:51.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:56:51.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:56:51.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.538936
2025-11-24T14:56:51.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:56:51.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:56:51.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:56:51.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:56:51.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:56:51.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:56:36', tmtdew=23.41, humidity=20.55, cloud=0.0, wind=17.08, temperature=21.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:56:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:56:51.960 [DEBUG] [Thread-191990] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:56:52.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:56:52.047 [DEBUG] [Thread-191993] [transport.py] [_log()] starting thread (client mode): 0xc9b83e50
2025-11-24T14:56:52.047 [DEBUG] [Thread-191993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:56:52.062 [DEBUG] [Thread-191993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:56:52.062 [INFO] [Thread-191993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:56:52.069 [DEBUG] [Thread-191993] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:56:52.069 [DEBUG] [Thread-191993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] client lang: <none>
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] server lang: <none>
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] kex follows: False
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] Compression: none
2025-11-24T14:56:52.070 [DEBUG] [Thread-191993] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:56:52.130 [DEBUG] [Thread-191993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:56:52.131 [DEBUG] [Thread-191993] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:56:52.131 [DEBUG] [Thread-191993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:56:52.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:56:52.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:56:52.188 [DEBUG] [Thread-191993] [transport.py] [_log()] userauth is OK
2025-11-24T14:56:52.188 [DEBUG] [Thread-191993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:56:52.188 [DEBUG] [Thread-191993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:56:52.189 [DEBUG] [Thread-191993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:56:52.189 [DEBUG] [Thread-191993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:56:52.202 [INFO] [Thread-191993] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:56: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-11-24T14:56:52.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:56:53.046 [DEBUG] [Thread-191993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:56:53.046 [DEBUG] [Thread-191993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:56:53.094 [DEBUG] [Thread-191993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:56:53.094 [DEBUG] [Thread-191993] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:56:53.104 [DEBUG] [Thread-191993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:56:53.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:56:53.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-11-24T14:56:53.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-11-24T14:56:53.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:56:53.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:56:53.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:56:53.142 [DEBUG] [Thread-191993] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:56:56.140 [DEBUG] [Thread-191995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:57:11.186 [DEBUG] [Thread-191996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:57:13.053 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:57:13.054 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:57:19.968 [DEBUG] [Thread-191997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:57:23.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:57:23.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:57:23.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-11-24T14:57:24.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 57, 8), 23.52, 20.45, 0.0, 22.28, 21.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:57:24.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:57:08
2025-11-24T14:57:24.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:57:24.437 [DEBUG] [Thread-191998] [transport.py] [_log()] starting thread (client mode): 0xc9b824a0
2025-11-24T14:57:24.437 [DEBUG] [Thread-191998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:57:24.458 [DEBUG] [Thread-191998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:57:24.458 [INFO] [Thread-191998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] client lang: <none>
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] server lang: <none>
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] kex follows: False
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] Compression: none
2025-11-24T14:57:24.461 [DEBUG] [Thread-191998] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:57:24.479 [DEBUG] [Thread-191998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:57:24.479 [DEBUG] [Thread-191998] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:57:24.480 [DEBUG] [Thread-191998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:57:24.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:57:24.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:57:24.482 [DEBUG] [Thread-191998] [transport.py] [_log()] userauth is OK
2025-11-24T14:57:24.482 [DEBUG] [Thread-191998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:57:24.482 [DEBUG] [Thread-191998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:57:24.483 [DEBUG] [Thread-191998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:57:24.483 [DEBUG] [Thread-191998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:57:24.506 [INFO] [Thread-191998] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:57:24.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:57:25.126 [DEBUG] [Thread-191998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:57:25.126 [DEBUG] [Thread-191998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:57:25.126 [DEBUG] [Thread-191998] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:57:25.167 [DEBUG] [Thread-191998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:57:25.167 [DEBUG] [Thread-191998] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:57:25.170 [DEBUG] [Thread-191998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:57:25.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:57:25.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:57:25.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:57:25.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:57:25.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:57:25.197 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:57:25.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.539283 -999.00  +21.30  15.67     26   +1.40 1 1 1 1 1   888    0 20.04 -27.89 ----- 25.7 15.7 168.2 23.9 27.2 -26.6 26.5 -25.7 28.1 -26.1 29.0 -27.6
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.539283
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:57:25.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:57:08', tmtdew=23.52, humidity=20.45, cloud=0.0, wind=22.28, temperature=21.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:56:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:57:25.198 [DEBUG] [Thread-191998] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:57:25.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:57:25.282 [DEBUG] [Thread-192001] [transport.py] [_log()] starting thread (client mode): 0xd07e8310
2025-11-24T14:57:25.283 [DEBUG] [Thread-192001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:57:25.298 [DEBUG] [Thread-192001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:57:25.298 [INFO] [Thread-192001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] client lang: <none>
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] server lang: <none>
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] kex follows: False
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:57:25.305 [DEBUG] [Thread-192001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:57:25.306 [DEBUG] [Thread-192001] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:57:25.306 [DEBUG] [Thread-192001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:57:25.306 [DEBUG] [Thread-192001] [transport.py] [_log()] Compression: none
2025-11-24T14:57:25.306 [DEBUG] [Thread-192001] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:57:25.363 [DEBUG] [Thread-192001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:57:25.363 [DEBUG] [Thread-192001] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:57:25.364 [DEBUG] [Thread-192001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:57:25.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:57:25.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:57:25.420 [DEBUG] [Thread-192001] [transport.py] [_log()] userauth is OK
2025-11-24T14:57:25.420 [DEBUG] [Thread-192001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:57:25.420 [DEBUG] [Thread-192001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:57:25.420 [DEBUG] [Thread-192001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:57:25.420 [DEBUG] [Thread-192001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:57:25.434 [INFO] [Thread-192001] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:57:25.434 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:57:25.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:57:26.224 [DEBUG] [Thread-192003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:57:26.256 [DEBUG] [Thread-192001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:57:26.257 [DEBUG] [Thread-192001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:57:26.304 [DEBUG] [Thread-192001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:57:26.304 [DEBUG] [Thread-192001] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:57:26.312 [DEBUG] [Thread-192001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:57:26.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:57: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-11-24T14:57:26.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T14:57:26.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:57:26.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:57:26.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:57:26.344 [DEBUG] [Thread-192001] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:57:41.268 [DEBUG] [Thread-192004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:57:56.304 [DEBUG] [Thread-192005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:57:56.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:57:56.366 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:57:56.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:57:57.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 57, 41), 23.81, 20.02, 0.0, 25.14, 21.88, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:57:57.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:57:41
2025-11-24T14:57:57.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:57:57.447 [DEBUG] [Thread-192006] [transport.py] [_log()] starting thread (client mode): 0xd07e8a90
2025-11-24T14:57:57.447 [DEBUG] [Thread-192006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:57:57.467 [DEBUG] [Thread-192006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:57:57.467 [INFO] [Thread-192006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:57:57.470 [DEBUG] [Thread-192006] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] client lang: <none>
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] server lang: <none>
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] kex follows: False
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] Compression: none
2025-11-24T14:57:57.471 [DEBUG] [Thread-192006] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:57:57.490 [DEBUG] [Thread-192006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:57:57.490 [DEBUG] [Thread-192006] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:57:57.491 [DEBUG] [Thread-192006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:57:57.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:57:57.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:57:57.494 [DEBUG] [Thread-192006] [transport.py] [_log()] userauth is OK
2025-11-24T14:57:57.494 [DEBUG] [Thread-192006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:57:57.494 [DEBUG] [Thread-192006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:57:57.494 [DEBUG] [Thread-192006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:57:57.494 [DEBUG] [Thread-192006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:57:57.529 [INFO] [Thread-192006] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:57:57.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:57:58.156 [DEBUG] [Thread-192006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:57:58.156 [DEBUG] [Thread-192006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:57:58.156 [DEBUG] [Thread-192006] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:57:58.197 [DEBUG] [Thread-192006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:57:58.197 [DEBUG] [Thread-192006] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:57:58.200 [DEBUG] [Thread-192006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:57:58.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:57:58.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:57:58.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:57:58.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:57:58.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:57:58.218 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:57:58.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.539630 -999.00  +21.30  18.60     26   +1.40 1 1 1 1 1   888    0 19.87 -33.65 ----- 20.4 18.6 152.4 37.0 27.2 -28.5 26.6 -27.0 28.1 -27.3 28.9 -26.0
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.539630
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:57:58.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:57:41', tmtdew=23.81, humidity=20.02, cloud=0.0, wind=25.14, temperature=21.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:57:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:57:58.219 [DEBUG] [Thread-192006] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:57:58.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:57:58.300 [DEBUG] [Thread-192009] [transport.py] [_log()] starting thread (client mode): 0xc9b83d60
2025-11-24T14:57:58.301 [DEBUG] [Thread-192009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:57:58.315 [DEBUG] [Thread-192009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:57:58.315 [INFO] [Thread-192009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:57:58.322 [DEBUG] [Thread-192009] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:57:58.322 [DEBUG] [Thread-192009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] client lang: <none>
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] server lang: <none>
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] kex follows: False
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] Compression: none
2025-11-24T14:57:58.323 [DEBUG] [Thread-192009] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:57:58.379 [DEBUG] [Thread-192009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:57:58.379 [DEBUG] [Thread-192009] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:57:58.379 [DEBUG] [Thread-192009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:57:58.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:57:58.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:57:58.439 [DEBUG] [Thread-192009] [transport.py] [_log()] userauth is OK
2025-11-24T14:57:58.439 [DEBUG] [Thread-192009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:57:58.439 [DEBUG] [Thread-192009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:57:58.439 [DEBUG] [Thread-192009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:57:58.439 [DEBUG] [Thread-192009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:57:58.456 [INFO] [Thread-192009] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:57:58.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:57:58.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:57:59.265 [DEBUG] [Thread-192009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:57:59.265 [DEBUG] [Thread-192009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:57:59.314 [DEBUG] [Thread-192009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:57:59.314 [DEBUG] [Thread-192009] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:57:59.324 [DEBUG] [Thread-192009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:57:59.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:57:59.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-11-24T14:57:59.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-11-24T14:57:59.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:57:59.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:57:59.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:57:59.362 [DEBUG] [Thread-192009] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:58:11.352 [DEBUG] [Thread-192011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:58:13.206 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:58:13.208 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:58:20.196 [DEBUG] [Thread-192012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:58:26.422 [DEBUG] [Thread-192013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:58:29.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:58:29.383 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:58: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-11-24T14:58:30.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 58, 13), 23.73, 20.13, 0.0, 24.42, 21.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:58:30.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:58:13
2025-11-24T14:58:30.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:58:30.500 [DEBUG] [Thread-192014] [transport.py] [_log()] starting thread (client mode): 0xd07fa4a0
2025-11-24T14:58:30.501 [DEBUG] [Thread-192014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:58:30.521 [DEBUG] [Thread-192014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:58:30.521 [INFO] [Thread-192014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] client lang: <none>
2025-11-24T14:58:30.524 [DEBUG] [Thread-192014] [transport.py] [_log()] server lang: <none>
2025-11-24T14:58:30.525 [DEBUG] [Thread-192014] [transport.py] [_log()] kex follows: False
2025-11-24T14:58:30.525 [DEBUG] [Thread-192014] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:58:30.525 [DEBUG] [Thread-192014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:58:30.525 [DEBUG] [Thread-192014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:58:30.525 [DEBUG] [Thread-192014] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:58:30.525 [DEBUG] [Thread-192014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:58:30.525 [DEBUG] [Thread-192014] [transport.py] [_log()] Compression: none
2025-11-24T14:58:30.525 [DEBUG] [Thread-192014] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:58:30.543 [DEBUG] [Thread-192014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:58:30.544 [DEBUG] [Thread-192014] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:58:30.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:58:30.545 [DEBUG] [Thread-192014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:58:30.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:58:30.547 [DEBUG] [Thread-192014] [transport.py] [_log()] userauth is OK
2025-11-24T14:58:30.547 [DEBUG] [Thread-192014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:58:30.547 [DEBUG] [Thread-192014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:58:30.547 [DEBUG] [Thread-192014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:58:30.547 [DEBUG] [Thread-192014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:58:30.582 [INFO] [Thread-192014] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:58:30.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:58:31.173 [DEBUG] [Thread-192014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:58:31.173 [DEBUG] [Thread-192014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:58:31.173 [DEBUG] [Thread-192014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:58:31.214 [DEBUG] [Thread-192014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:58:31.214 [DEBUG] [Thread-192014] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:58:31.217 [DEBUG] [Thread-192014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:58:31.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:58:31.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:58:31.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:58:31.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:58:31.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:58:31.236 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:58:31.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:58:31.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:58:31.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:58:31.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.539978 -999.00  +21.50  24.44     26   +1.60 1 1 1 1 1   888    0 19.37 -36.37 ----- 26.8 24.4 159.8 38.2 27.1 -28.0 26.3 -27.7 27.9 -27.5 28.8 -28.5
2025-11-24T14:58:31.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:58:31.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:58:31.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.539978
2025-11-24T14:58:31.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:58:31.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:58:31.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:58:31.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:58:31.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:58:31.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:58:13', tmtdew=23.73, humidity=20.13, cloud=0.0, wind=24.42, temperature=21.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:57:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:58:31.238 [DEBUG] [Thread-192014] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:58:31.311 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:58:31.323 [DEBUG] [Thread-192017] [transport.py] [_log()] starting thread (client mode): 0xd07f8970
2025-11-24T14:58:31.323 [DEBUG] [Thread-192017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:58:31.340 [DEBUG] [Thread-192017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:58:31.340 [INFO] [Thread-192017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:58:31.347 [DEBUG] [Thread-192017] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] client lang: <none>
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] server lang: <none>
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] kex follows: False
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] Compression: none
2025-11-24T14:58:31.348 [DEBUG] [Thread-192017] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:58:31.411 [DEBUG] [Thread-192017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:58:31.411 [DEBUG] [Thread-192017] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:58:31.411 [DEBUG] [Thread-192017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:58:31.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:58:31.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:58:31.468 [DEBUG] [Thread-192017] [transport.py] [_log()] userauth is OK
2025-11-24T14:58:31.468 [DEBUG] [Thread-192017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:58:31.477 [DEBUG] [Thread-192017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:58:31.477 [DEBUG] [Thread-192017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:58:31.477 [DEBUG] [Thread-192017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:58:31.492 [INFO] [Thread-192017] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:58:31.492 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:58:31.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:58:32.354 [DEBUG] [Thread-192017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:58:32.354 [DEBUG] [Thread-192017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:58:32.403 [DEBUG] [Thread-192017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:58:32.403 [DEBUG] [Thread-192017] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:58:32.412 [DEBUG] [Thread-192017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:58:32.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:58:32.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-11-24T14:58:32.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-11-24T14:58:32.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:58:32.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:58:32.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:58:32.450 [DEBUG] [Thread-192017] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:58:41.457 [DEBUG] [Thread-192019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:58:56.506 [DEBUG] [Thread-192020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:59:02.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:59:02.459 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:59:02.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-11-24T14:59:03.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 58, 46), 23.84, 20.29, 0.0, 32.45, 22.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:59:03.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:58:46
2025-11-24T14:59:03.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:59:03.616 [DEBUG] [Thread-192021] [transport.py] [_log()] starting thread (client mode): 0xd07f8310
2025-11-24T14:59:03.617 [DEBUG] [Thread-192021] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:59:03.631 [DEBUG] [Thread-192021] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:59:03.631 [INFO] [Thread-192021] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:59:03.634 [DEBUG] [Thread-192021] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:59:03.634 [DEBUG] [Thread-192021] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:59:03.634 [DEBUG] [Thread-192021] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:59:03.634 [DEBUG] [Thread-192021] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:59:03.634 [DEBUG] [Thread-192021] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:59:03.634 [DEBUG] [Thread-192021] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] client lang: <none>
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] server lang: <none>
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] kex follows: False
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:59:03.635 [DEBUG] [Thread-192021] [transport.py] [_log()] Compression: none
2025-11-24T14:59:03.636 [DEBUG] [Thread-192021] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:59:03.663 [DEBUG] [Thread-192021] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:59:03.664 [DEBUG] [Thread-192021] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:59:03.666 [DEBUG] [Thread-192021] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:59:03.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:59:03.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:59:03.705 [DEBUG] [Thread-192021] [transport.py] [_log()] userauth is OK
2025-11-24T14:59:03.706 [DEBUG] [Thread-192021] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:59:03.706 [DEBUG] [Thread-192021] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:59:03.706 [DEBUG] [Thread-192021] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:59:03.707 [DEBUG] [Thread-192021] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:59:03.747 [INFO] [Thread-192021] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:59:03.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:59:04.314 [DEBUG] [Thread-192021] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:59:04.315 [DEBUG] [Thread-192021] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:59:04.316 [DEBUG] [Thread-192021] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:59:04.356 [DEBUG] [Thread-192021] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:59:04.356 [DEBUG] [Thread-192021] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:59:04.359 [DEBUG] [Thread-192021] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:59:04.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:59:04.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:59:04.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:59:04.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:59:04.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:59:04.383 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:59:04.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:59:04.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:59:04.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:59:04.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.540672 -999.00  +21.60  20.78     26   +1.60 1 1 1 1 1   888    0 19.36 -45.73 ----- 30.1 20.8 161.4 32.6 27.2 -26.6 26.6 -26.0 28.1 -25.7 29.0 -27.8
2025-11-24T14:59:04.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:59:04.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:59:04.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.540672
2025-11-24T14:59:04.390 [DEBUG] [Thread-192021] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:59:04.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:59:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:59:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:59:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:59:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:59:04.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:58:46', tmtdew=23.84, humidity=20.29, cloud=0.0, wind=32.45, temperature=22.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:58:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:59:04.479 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T14:59:04.493 [DEBUG] [Thread-192023] [transport.py] [_log()] starting thread (client mode): 0xd07e8ca0
2025-11-24T14:59:04.494 [DEBUG] [Thread-192023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:59:04.511 [DEBUG] [Thread-192023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:59:04.511 [INFO] [Thread-192023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:59:04.521 [DEBUG] [Thread-192023] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:59:04.521 [DEBUG] [Thread-192023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] client lang: <none>
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] server lang: <none>
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] kex follows: False
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:59:04.522 [DEBUG] [Thread-192023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:59:04.523 [DEBUG] [Thread-192023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:59:04.523 [DEBUG] [Thread-192023] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:59:04.523 [DEBUG] [Thread-192023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:59:04.524 [DEBUG] [Thread-192023] [transport.py] [_log()] Compression: none
2025-11-24T14:59:04.524 [DEBUG] [Thread-192023] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:59:04.581 [DEBUG] [Thread-192023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:59:04.582 [DEBUG] [Thread-192023] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:59:04.583 [DEBUG] [Thread-192023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:59:04.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:59:04.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:59:04.641 [DEBUG] [Thread-192023] [transport.py] [_log()] userauth is OK
2025-11-24T14:59:04.641 [DEBUG] [Thread-192023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:59:04.641 [DEBUG] [Thread-192023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:59:04.641 [DEBUG] [Thread-192023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:59:04.642 [DEBUG] [Thread-192023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:59:04.660 [INFO] [Thread-192023] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:59:04.660 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:59:04.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:59:05.533 [DEBUG] [Thread-192023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:59:05.533 [DEBUG] [Thread-192023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:59:05.581 [DEBUG] [Thread-192023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:59:05.581 [DEBUG] [Thread-192023] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:59:05.590 [DEBUG] [Thread-192023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:59:05.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:59:05.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-11-24T14:59:05.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-11-24T14:59:05.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:59:05.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:59:05.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:59:05.628 [DEBUG] [Thread-192023] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:59:11.536 [DEBUG] [Thread-192025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:59:13.361 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:59:13.363 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:59:20.412 [DEBUG] [Thread-192026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:59:26.583 [DEBUG] [Thread-192027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:59:35.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T14:59:35.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T14:59:35.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T14:59:36.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 59, 17), 23.91, 20.17, 0.0, 30.72, 22.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T14:59:36.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:59:17
2025-11-24T14:59:36.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T14:59:36.693 [DEBUG] [Thread-192028] [transport.py] [_log()] starting thread (client mode): 0xd07aad10
2025-11-24T14:59:36.693 [DEBUG] [Thread-192028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:59:36.710 [DEBUG] [Thread-192028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T14:59:36.710 [INFO] [Thread-192028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] client lang: <none>
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] server lang: <none>
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] kex follows: False
2025-11-24T14:59:36.713 [DEBUG] [Thread-192028] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:59:36.714 [DEBUG] [Thread-192028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:59:36.714 [DEBUG] [Thread-192028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:59:36.714 [DEBUG] [Thread-192028] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:59:36.714 [DEBUG] [Thread-192028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:59:36.714 [DEBUG] [Thread-192028] [transport.py] [_log()] Compression: none
2025-11-24T14:59:36.714 [DEBUG] [Thread-192028] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:59:36.735 [DEBUG] [Thread-192028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:59:36.737 [DEBUG] [Thread-192028] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:59:36.738 [DEBUG] [Thread-192028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T14:59:36.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T14:59:36.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:59:36.741 [DEBUG] [Thread-192028] [transport.py] [_log()] userauth is OK
2025-11-24T14:59:36.741 [DEBUG] [Thread-192028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:59:36.741 [DEBUG] [Thread-192028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:59:36.741 [DEBUG] [Thread-192028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T14:59:36.741 [DEBUG] [Thread-192028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:59:36.752 [INFO] [Thread-192028] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:59:36.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:59:37.367 [DEBUG] [Thread-192028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:59:37.367 [DEBUG] [Thread-192028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:59:37.376 [DEBUG] [Thread-192028] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T14:59:37.408 [DEBUG] [Thread-192028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:59:37.408 [DEBUG] [Thread-192028] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:59:37.411 [DEBUG] [Thread-192028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:59:37.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:59:37.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T14:59:37.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T14:59:37.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T14:59:37.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:59:37.429 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T14:59:37.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:59:37.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:59:37.431 [DEBUG] [Thread-192028] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:59:37.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T14:59:37.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.541019 -999.00  +21.40  18.43     26   +1.50 1 1 1 1 1   888    0 18.93 -50.32 ----- 15.3 18.4 170.2 31.3 27.2 -28.0 26.2 -31.0 28.1 -25.7 28.9 -26.7
2025-11-24T14:59:37.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T14:59:37.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T14:59:37.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.541019
2025-11-24T14:59:37.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T14:59:37.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T14:59:37.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T14:59:37.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T14:59:37.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T14:59:37.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:59:17', tmtdew=23.91, humidity=20.17, cloud=0.0, wind=30.72, temperature=22.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T12:59:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T14:59: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-11-24T14:59:37.535 [DEBUG] [Thread-192031] [transport.py] [_log()] starting thread (client mode): 0xc9b82c80
2025-11-24T14:59:37.536 [DEBUG] [Thread-192031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T14:59:37.551 [DEBUG] [Thread-192031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T14:59:37.551 [INFO] [Thread-192031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] client lang: <none>
2025-11-24T14:59:37.558 [DEBUG] [Thread-192031] [transport.py] [_log()] server lang: <none>
2025-11-24T14:59:37.559 [DEBUG] [Thread-192031] [transport.py] [_log()] kex follows: False
2025-11-24T14:59:37.559 [DEBUG] [Thread-192031] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T14:59:37.559 [DEBUG] [Thread-192031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T14:59:37.559 [DEBUG] [Thread-192031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T14:59:37.559 [DEBUG] [Thread-192031] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T14:59:37.559 [DEBUG] [Thread-192031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T14:59:37.559 [DEBUG] [Thread-192031] [transport.py] [_log()] Compression: none
2025-11-24T14:59:37.559 [DEBUG] [Thread-192031] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T14:59:37.615 [DEBUG] [Thread-192031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T14:59:37.615 [DEBUG] [Thread-192031] [transport.py] [_log()] Switch to new keys ...
2025-11-24T14:59:37.615 [DEBUG] [Thread-192031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T14:59:37.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T14:59:37.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T14:59:37.672 [DEBUG] [Thread-192031] [transport.py] [_log()] userauth is OK
2025-11-24T14:59:37.672 [DEBUG] [Thread-192031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T14:59:37.672 [DEBUG] [Thread-192031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T14:59:37.672 [DEBUG] [Thread-192031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T14:59:37.672 [DEBUG] [Thread-192031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T14:59:37.688 [INFO] [Thread-192031] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T14:59:37.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T14:59:37.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T14:59:38.532 [DEBUG] [Thread-192031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T14:59:38.532 [DEBUG] [Thread-192031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T14:59:38.572 [DEBUG] [Thread-192031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T14:59:38.572 [DEBUG] [Thread-192031] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T14:59:38.584 [DEBUG] [Thread-192031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T14:59:38.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T14:59:38.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-11-24T14:59:38.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-11-24T14:59:38.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T14:59:38.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T14:59:38.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T14:59:38.629 [DEBUG] [Thread-192031] [transport.py] [_log()] EOF in transport thread
2025-11-24T14:59:41.616 [DEBUG] [Thread-192033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T14:59:56.671 [DEBUG] [Thread-192034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:00:08.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:00:08.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:00:08.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:00:09.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 14, 59, 51), 23.59, 20.52, 0.0, 21.33, 21.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:00:09.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 14:59:51
2025-11-24T15:00:09.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:00:09.934 [DEBUG] [Thread-192035] [transport.py] [_log()] starting thread (client mode): 0xd31b0190
2025-11-24T15:00:09.934 [DEBUG] [Thread-192035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:00:09.949 [DEBUG] [Thread-192035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:00:09.949 [INFO] [Thread-192035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] client lang: <none>
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] server lang: <none>
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] kex follows: False
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:00:09.952 [DEBUG] [Thread-192035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:00:09.953 [DEBUG] [Thread-192035] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:00:09.953 [DEBUG] [Thread-192035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:00:09.953 [DEBUG] [Thread-192035] [transport.py] [_log()] Compression: none
2025-11-24T15:00:09.953 [DEBUG] [Thread-192035] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:00:09.970 [DEBUG] [Thread-192035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:00:09.971 [DEBUG] [Thread-192035] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:00:09.972 [DEBUG] [Thread-192035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:00:09.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:00:09.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:00:09.975 [DEBUG] [Thread-192035] [transport.py] [_log()] userauth is OK
2025-11-24T15:00:09.975 [DEBUG] [Thread-192035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:00:09.975 [DEBUG] [Thread-192035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:00:09.975 [DEBUG] [Thread-192035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:00:09.975 [DEBUG] [Thread-192035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:00:09.989 [INFO] [Thread-192035] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:00:09.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:00:10.968 [DEBUG] [Thread-192035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:00:10.968 [DEBUG] [Thread-192035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:00:10.969 [DEBUG] [Thread-192035] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:00:11.010 [DEBUG] [Thread-192035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:00:11.010 [DEBUG] [Thread-192035] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:00:11.012 [DEBUG] [Thread-192035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:00:11.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:00:11.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:00:11.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:00:11.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:00:11.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:00:11.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:00:11.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:00:11.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:00:11.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:00:11.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.541714 -999.00  +22.00  20.85     25   +1.40 1 1 1 1 1   888    0 19.16 -56.86 ----- 26.1 20.9 175.8 23.2 27.4 -26.2 26.9 -27.6 28.3 -24.3 29.2 -28.0
2025-11-24T15:00:11.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:00:11.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:00:11.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.541714
2025-11-24T15:00:11.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:00:11.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:00:11.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:00:11.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:00:11.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:00:11.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T14:59:51', tmtdew=23.59, humidity=20.52, cloud=0.0, wind=21.33, temperature=21.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:00:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:00:11.033 [DEBUG] [Thread-192035] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:00:11.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:00:11.118 [DEBUG] [Thread-192037] [transport.py] [_log()] starting thread (client mode): 0xd07f9210
2025-11-24T15:00:11.118 [DEBUG] [Thread-192037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:00:11.133 [DEBUG] [Thread-192037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:00:11.133 [INFO] [Thread-192037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] client lang: <none>
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] server lang: <none>
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] kex follows: False
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] Compression: none
2025-11-24T15:00:11.141 [DEBUG] [Thread-192037] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:00:11.195 [DEBUG] [Thread-192037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:00:11.196 [DEBUG] [Thread-192037] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:00:11.196 [DEBUG] [Thread-192037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:00:11.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:00:11.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:00:11.252 [DEBUG] [Thread-192037] [transport.py] [_log()] userauth is OK
2025-11-24T15:00:11.252 [DEBUG] [Thread-192037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:00:11.252 [DEBUG] [Thread-192037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:00:11.252 [DEBUG] [Thread-192037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:00:11.252 [DEBUG] [Thread-192037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:00:11.268 [INFO] [Thread-192037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:00:11.269 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:00:11.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:00:11.704 [DEBUG] [Thread-192039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:00:12.100 [DEBUG] [Thread-192037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:00:12.100 [DEBUG] [Thread-192037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:00:12.148 [DEBUG] [Thread-192037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:00:12.148 [DEBUG] [Thread-192037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:00:12.156 [DEBUG] [Thread-192037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:00:12.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:00:12.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-11-24T15:00:12.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-11-24T15:00:12.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:00:12.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:00:12.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:00:12.187 [DEBUG] [Thread-192037] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:00:13.509 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:00:13.511 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:00:20.628 [DEBUG] [Thread-192040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:00:26.750 [DEBUG] [Thread-192041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:00:41.784 [DEBUG] [Thread-192042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:00:42.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:00:42.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:00: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-11-24T15:00:43.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 0, 23), 23.45, 20.7, 0.0, 24.98, 21.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:00:43.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:00:23
2025-11-24T15:00:43.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:00:43.304 [DEBUG] [Thread-192043] [transport.py] [_log()] starting thread (client mode): 0xc9b80d30
2025-11-24T15:00:43.304 [DEBUG] [Thread-192043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:00:43.324 [DEBUG] [Thread-192043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:00:43.324 [INFO] [Thread-192043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:00:43.327 [DEBUG] [Thread-192043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:00:43.328 [DEBUG] [Thread-192043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:00:43.328 [DEBUG] [Thread-192043] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:00:43.328 [DEBUG] [Thread-192043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:00:43.328 [DEBUG] [Thread-192043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:00:43.328 [DEBUG] [Thread-192043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:00:43.328 [DEBUG] [Thread-192043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:00:43.328 [DEBUG] [Thread-192043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:00:43.329 [DEBUG] [Thread-192043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:00:43.329 [DEBUG] [Thread-192043] [transport.py] [_log()] client lang: <none>
2025-11-24T15:00:43.329 [DEBUG] [Thread-192043] [transport.py] [_log()] server lang: <none>
2025-11-24T15:00:43.329 [DEBUG] [Thread-192043] [transport.py] [_log()] kex follows: False
2025-11-24T15:00:43.329 [DEBUG] [Thread-192043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:00:43.329 [DEBUG] [Thread-192043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:00:43.329 [DEBUG] [Thread-192043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:00:43.330 [DEBUG] [Thread-192043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:00:43.330 [DEBUG] [Thread-192043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:00:43.330 [DEBUG] [Thread-192043] [transport.py] [_log()] Compression: none
2025-11-24T15:00:43.330 [DEBUG] [Thread-192043] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:00:43.348 [DEBUG] [Thread-192043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:00:43.349 [DEBUG] [Thread-192043] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:00:43.349 [DEBUG] [Thread-192043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:00:43.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:00:43.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:00:43.397 [DEBUG] [Thread-192043] [transport.py] [_log()] userauth is OK
2025-11-24T15:00:43.397 [DEBUG] [Thread-192043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:00:43.397 [DEBUG] [Thread-192043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:00:43.397 [DEBUG] [Thread-192043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:00:43.397 [DEBUG] [Thread-192043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:00:43.429 [INFO] [Thread-192043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:00:43.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:00:44.025 [DEBUG] [Thread-192043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:00:44.025 [DEBUG] [Thread-192043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:00:44.025 [DEBUG] [Thread-192043] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:00:44.065 [DEBUG] [Thread-192043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:00:44.066 [DEBUG] [Thread-192043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:00:44.069 [DEBUG] [Thread-192043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:00:44.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:00:44.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:00:44.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:00:44.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:00:44.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:00:44.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:00:44.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:00:44.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:00:44.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:00:44.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.542061 -999.00  +21.90  14.29     25   +1.30 1 1 1 1 1   888    0 19.16 -50.95 ----- 17.0 14.3 166.0 27.2 27.5 -28.2 26.9 -26.5 28.3 -25.7 29.3 -26.5
2025-11-24T15:00:44.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:00:44.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:00:44.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.542061
2025-11-24T15:00:44.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:00:44.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:00:44.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:00:44.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:00:44.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:00:44.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:00:23', tmtdew=23.45, humidity=20.7, cloud=0.0, wind=24.98, temperature=21.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:00:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:00:44.097 [DEBUG] [Thread-192043] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:00:44.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:00:44.189 [DEBUG] [Thread-192046] [transport.py] [_log()] starting thread (client mode): 0xc9b82770
2025-11-24T15:00:44.189 [DEBUG] [Thread-192046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:00:44.208 [DEBUG] [Thread-192046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:00:44.208 [INFO] [Thread-192046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] client lang: <none>
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] server lang: <none>
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] kex follows: False
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:00:44.217 [DEBUG] [Thread-192046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:00:44.226 [DEBUG] [Thread-192046] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:00:44.226 [DEBUG] [Thread-192046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:00:44.226 [DEBUG] [Thread-192046] [transport.py] [_log()] Compression: none
2025-11-24T15:00:44.226 [DEBUG] [Thread-192046] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:00:44.271 [DEBUG] [Thread-192046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:00:44.271 [DEBUG] [Thread-192046] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:00:44.271 [DEBUG] [Thread-192046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:00:44.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:00:44.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:00:44.328 [DEBUG] [Thread-192046] [transport.py] [_log()] userauth is OK
2025-11-24T15:00:44.328 [DEBUG] [Thread-192046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:00:44.328 [DEBUG] [Thread-192046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:00:44.328 [DEBUG] [Thread-192046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:00:44.328 [DEBUG] [Thread-192046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:00:44.343 [INFO] [Thread-192046] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:00:44.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:00:44.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:00:45.197 [DEBUG] [Thread-192046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:00:45.197 [DEBUG] [Thread-192046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:00:45.244 [DEBUG] [Thread-192046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:00:45.245 [DEBUG] [Thread-192046] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:00:45.254 [DEBUG] [Thread-192046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:00:45.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:00:45.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-11-24T15:00:45.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-11-24T15:00:45.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:00:45.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:00:45.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:00:45.291 [DEBUG] [Thread-192046] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:00:56.813 [DEBUG] [Thread-192048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:01:11.858 [DEBUG] [Thread-192049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:01:13.661 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:01:13.664 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:01:15.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:01:15.314 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:01:15.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-11-24T15:01:16.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 0, 56), 23.71, 20.62, 0.0, 23.22, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:01:16.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:00:56
2025-11-24T15:01:16.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:01:16.476 [DEBUG] [Thread-192050] [transport.py] [_log()] starting thread (client mode): 0xd3152590
2025-11-24T15:01:16.476 [DEBUG] [Thread-192050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:01:16.495 [DEBUG] [Thread-192050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:01:16.495 [INFO] [Thread-192050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] client lang: <none>
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] server lang: <none>
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] kex follows: False
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:01:16.499 [DEBUG] [Thread-192050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:01:16.500 [DEBUG] [Thread-192050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:01:16.500 [DEBUG] [Thread-192050] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:01:16.500 [DEBUG] [Thread-192050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:01:16.500 [DEBUG] [Thread-192050] [transport.py] [_log()] Compression: none
2025-11-24T15:01:16.500 [DEBUG] [Thread-192050] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:01:16.518 [DEBUG] [Thread-192050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:01:16.519 [DEBUG] [Thread-192050] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:01:16.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:01:16.520 [DEBUG] [Thread-192050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:01:16.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:01:16.523 [DEBUG] [Thread-192050] [transport.py] [_log()] userauth is OK
2025-11-24T15:01:16.523 [DEBUG] [Thread-192050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:01:16.523 [DEBUG] [Thread-192050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:01:16.523 [DEBUG] [Thread-192050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:01:16.523 [DEBUG] [Thread-192050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:01:16.547 [INFO] [Thread-192050] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:01:16.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:01:17.156 [DEBUG] [Thread-192050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:01:17.157 [DEBUG] [Thread-192050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:01:17.157 [DEBUG] [Thread-192050] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:01:17.197 [DEBUG] [Thread-192050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:01:17.197 [DEBUG] [Thread-192050] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:01:17.201 [DEBUG] [Thread-192050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:01:17.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:01:17.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:01:17.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:01:17.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:01:17.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:01:17.232 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:01:17.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.542061 -999.00  +21.90  14.29     25   +1.30 1 1 1 1 1   888    0 19.16 -50.95 ----- 17.0 14.3 166.0 27.2 27.5 -28.2 26.9 -26.5 28.3 -25.7 29.3 -26.5
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.542061
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:01:17.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:01:17.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:00:56', tmtdew=23.71, humidity=20.62, cloud=0.0, wind=23.22, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:00:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:01:17.233 [DEBUG] [Thread-192050] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:01:17.305 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:01:17.316 [DEBUG] [Thread-192053] [transport.py] [_log()] starting thread (client mode): 0xd31501c0
2025-11-24T15:01:17.316 [DEBUG] [Thread-192053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:01:17.331 [DEBUG] [Thread-192053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:01:17.331 [INFO] [Thread-192053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] client lang: <none>
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] server lang: <none>
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] kex follows: False
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] Compression: none
2025-11-24T15:01:17.339 [DEBUG] [Thread-192053] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:01:17.395 [DEBUG] [Thread-192053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:01:17.395 [DEBUG] [Thread-192053] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:01:17.395 [DEBUG] [Thread-192053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:01:17.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:01:17.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:01:17.453 [DEBUG] [Thread-192053] [transport.py] [_log()] userauth is OK
2025-11-24T15:01:17.453 [DEBUG] [Thread-192053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:01:17.453 [DEBUG] [Thread-192053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:01:17.453 [DEBUG] [Thread-192053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:01:17.453 [DEBUG] [Thread-192053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:01:17.467 [INFO] [Thread-192053] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:01:17.467 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:01:17.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:01:18.309 [DEBUG] [Thread-192053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:01:18.310 [DEBUG] [Thread-192053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:01:18.357 [DEBUG] [Thread-192053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:01:18.358 [DEBUG] [Thread-192053] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:01:18.367 [DEBUG] [Thread-192053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:01:18.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:01:18.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-11-24T15:01:18.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-11-24T15:01:18.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:01:18.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:01:18.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:01:18.403 [DEBUG] [Thread-192053] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:01:20.798 [DEBUG] [Thread-192055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:01:26.885 [DEBUG] [Thread-192056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:01:41.925 [DEBUG] [Thread-192057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:01:48.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:01:48.410 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:01:48.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-11-24T15:01:49.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 1, 28), 23.62, 20.72, 0.0, 22.96, 21.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:01:49.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:01:28
2025-11-24T15:01:49.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:01:49.576 [DEBUG] [Thread-192058] [transport.py] [_log()] starting thread (client mode): 0xd317f8e0
2025-11-24T15:01:49.576 [DEBUG] [Thread-192058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:01:49.594 [DEBUG] [Thread-192058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:01:49.594 [INFO] [Thread-192058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] client lang: <none>
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] server lang: <none>
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] kex follows: False
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] Compression: none
2025-11-24T15:01:49.598 [DEBUG] [Thread-192058] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:01:49.615 [DEBUG] [Thread-192058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:01:49.616 [DEBUG] [Thread-192058] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:01:49.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:01:49.618 [DEBUG] [Thread-192058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:01:49.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:01:49.620 [DEBUG] [Thread-192058] [transport.py] [_log()] userauth is OK
2025-11-24T15:01:49.620 [DEBUG] [Thread-192058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:01:49.620 [DEBUG] [Thread-192058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:01:49.620 [DEBUG] [Thread-192058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:01:49.620 [DEBUG] [Thread-192058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:01:49.655 [INFO] [Thread-192058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:01:49.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:01:50.261 [DEBUG] [Thread-192058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:01:50.261 [DEBUG] [Thread-192058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:01:50.261 [DEBUG] [Thread-192058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:01:50.302 [DEBUG] [Thread-192058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:01:50.302 [DEBUG] [Thread-192058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:01:50.303 [DEBUG] [Thread-192058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:01:50.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:01:50.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:01:50.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:01:50.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:01:50.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:01:50.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:01:50.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:01:50.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.542408 -999.00  +21.80  12.45     25   +1.30 1 1 1 1 1   888    0 19.14 -47.66 ----- 12.6 12.4 173.4 23.9 27.6 -27.2 26.9 -26.0 28.4 -25.5 29.4 -26.4
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.542408
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:01:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:01:28', tmtdew=23.62, humidity=20.72, cloud=0.0, wind=22.96, temperature=21.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:01:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:01:50.325 [DEBUG] [Thread-192058] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:01:50.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:01:50.409 [DEBUG] [Thread-192061] [transport.py] [_log()] starting thread (client mode): 0xd07f8820
2025-11-24T15:01:50.409 [DEBUG] [Thread-192061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:01:50.424 [DEBUG] [Thread-192061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:01:50.424 [INFO] [Thread-192061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] client lang: <none>
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] server lang: <none>
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] kex follows: False
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:01:50.431 [DEBUG] [Thread-192061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:01:50.432 [DEBUG] [Thread-192061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:01:50.432 [DEBUG] [Thread-192061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:01:50.432 [DEBUG] [Thread-192061] [transport.py] [_log()] Compression: none
2025-11-24T15:01:50.432 [DEBUG] [Thread-192061] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:01:50.491 [DEBUG] [Thread-192061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:01:50.491 [DEBUG] [Thread-192061] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:01:50.491 [DEBUG] [Thread-192061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:01:50.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:01:50.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:01:50.553 [DEBUG] [Thread-192061] [transport.py] [_log()] userauth is OK
2025-11-24T15:01:50.553 [DEBUG] [Thread-192061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:01:50.553 [DEBUG] [Thread-192061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:01:50.553 [DEBUG] [Thread-192061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:01:50.553 [DEBUG] [Thread-192061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:01:50.567 [INFO] [Thread-192061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:01:50.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:01:50.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:01:51.435 [DEBUG] [Thread-192061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:01:51.435 [DEBUG] [Thread-192061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:01:51.482 [DEBUG] [Thread-192061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:01:51.482 [DEBUG] [Thread-192061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:01:51.490 [DEBUG] [Thread-192061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:01:51.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:01:51.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-11-24T15:01:51.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-11-24T15:01:51.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:01:51.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:01:51.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:01:51.521 [DEBUG] [Thread-192061] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:01:56.958 [DEBUG] [Thread-192063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:02:12.000 [DEBUG] [Thread-192064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:02:13.815 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:02:13.817 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:02:20.967 [DEBUG] [Thread-192065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:02:21.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:02:21.521 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:02:21.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-11-24T15:02:22.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 2, 1), 23.78, 20.17, 0.0, 23.31, 21.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:02:22.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:02:01
2025-11-24T15:02:22.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:02:22.581 [DEBUG] [Thread-192066] [transport.py] [_log()] starting thread (client mode): 0xd3152d40
2025-11-24T15:02:22.581 [DEBUG] [Thread-192066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:02:22.600 [DEBUG] [Thread-192066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:02:22.600 [INFO] [Thread-192066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:02:22.603 [DEBUG] [Thread-192066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] client lang: <none>
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] server lang: <none>
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] kex follows: False
2025-11-24T15:02:22.604 [DEBUG] [Thread-192066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:02:22.605 [DEBUG] [Thread-192066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:02:22.605 [DEBUG] [Thread-192066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:02:22.605 [DEBUG] [Thread-192066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:02:22.605 [DEBUG] [Thread-192066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:02:22.605 [DEBUG] [Thread-192066] [transport.py] [_log()] Compression: none
2025-11-24T15:02:22.605 [DEBUG] [Thread-192066] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:02:22.625 [DEBUG] [Thread-192066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:02:22.626 [DEBUG] [Thread-192066] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:02:22.626 [DEBUG] [Thread-192066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:02:22.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:02:22.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:02:22.628 [DEBUG] [Thread-192066] [transport.py] [_log()] userauth is OK
2025-11-24T15:02:22.628 [DEBUG] [Thread-192066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:02:22.629 [DEBUG] [Thread-192066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:02:22.629 [DEBUG] [Thread-192066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:02:22.629 [DEBUG] [Thread-192066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:02:22.653 [INFO] [Thread-192066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:02:22.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:02:23.232 [DEBUG] [Thread-192066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:02:23.240 [DEBUG] [Thread-192066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:02:23.241 [DEBUG] [Thread-192066] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:02:23.273 [DEBUG] [Thread-192066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:02:23.273 [DEBUG] [Thread-192066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:02:23.278 [DEBUG] [Thread-192066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:02:23.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:02:23.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:02:23.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:02:23.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:02:23.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:02:23.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:02:23.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.542755 -999.00  +22.00  16.94     25   +1.40 1 1 1 1 1   888    0 19.21 -51.88 ----- 18.3 16.9 182.4 21.4 27.7 -25.9 27.1 -29.7 28.6 -24.7 29.3 -28.8
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.542755
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:02:23.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:02:01', tmtdew=23.78, humidity=20.17, cloud=0.0, wind=23.31, temperature=21.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:01:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:02:23.295 [DEBUG] [Thread-192066] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:02:23.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:02:23.379 [DEBUG] [Thread-192069] [transport.py] [_log()] starting thread (client mode): 0xd07133a0
2025-11-24T15:02:23.379 [DEBUG] [Thread-192069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:02:23.394 [DEBUG] [Thread-192069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:02:23.394 [INFO] [Thread-192069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:02:23.401 [DEBUG] [Thread-192069] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:02:23.401 [DEBUG] [Thread-192069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:02:23.401 [DEBUG] [Thread-192069] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:02:23.401 [DEBUG] [Thread-192069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:02:23.401 [DEBUG] [Thread-192069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:02:23.401 [DEBUG] [Thread-192069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:02:23.401 [DEBUG] [Thread-192069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:02:23.401 [DEBUG] [Thread-192069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:02:23.401 [DEBUG] [Thread-192069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:02:23.401 [DEBUG] [Thread-192069] [transport.py] [_log()] client lang: <none>
2025-11-24T15:02:23.402 [DEBUG] [Thread-192069] [transport.py] [_log()] server lang: <none>
2025-11-24T15:02:23.402 [DEBUG] [Thread-192069] [transport.py] [_log()] kex follows: False
2025-11-24T15:02:23.402 [DEBUG] [Thread-192069] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:02:23.402 [DEBUG] [Thread-192069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:02:23.402 [DEBUG] [Thread-192069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:02:23.402 [DEBUG] [Thread-192069] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:02:23.402 [DEBUG] [Thread-192069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:02:23.402 [DEBUG] [Thread-192069] [transport.py] [_log()] Compression: none
2025-11-24T15:02:23.402 [DEBUG] [Thread-192069] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:02:23.459 [DEBUG] [Thread-192069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:02:23.460 [DEBUG] [Thread-192069] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:02:23.460 [DEBUG] [Thread-192069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:02:23.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:02:23.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:02:23.516 [DEBUG] [Thread-192069] [transport.py] [_log()] userauth is OK
2025-11-24T15:02:23.517 [DEBUG] [Thread-192069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:02:23.517 [DEBUG] [Thread-192069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:02:23.517 [DEBUG] [Thread-192069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:02:23.517 [DEBUG] [Thread-192069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:02:23.531 [INFO] [Thread-192069] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:02:23.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:02:23.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:02:24.369 [DEBUG] [Thread-192069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:02:24.369 [DEBUG] [Thread-192069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:02:24.418 [DEBUG] [Thread-192069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:02:24.418 [DEBUG] [Thread-192069] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:02:24.427 [DEBUG] [Thread-192069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:02:24.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:02:24.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-11-24T15:02:24.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-11-24T15:02:24.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:02:24.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:02:24.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:02:24.463 [DEBUG] [Thread-192069] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:02:27.035 [DEBUG] [Thread-192071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:02:42.088 [DEBUG] [Thread-192072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:02:54.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:02:54.460 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:02:54.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-11-24T15:02:55.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 2, 33), 24.86, 18.94, 0.0, 35.04, 22.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:02:55.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:02:33
2025-11-24T15:02:55.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:02:55.517 [DEBUG] [Thread-192073] [transport.py] [_log()] starting thread (client mode): 0xc9b81de0
2025-11-24T15:02:55.517 [DEBUG] [Thread-192073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:02:55.538 [DEBUG] [Thread-192073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:02:55.538 [INFO] [Thread-192073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:02:55.549 [DEBUG] [Thread-192073] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:02:55.549 [DEBUG] [Thread-192073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:02:55.549 [DEBUG] [Thread-192073] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:02:55.549 [DEBUG] [Thread-192073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:02:55.549 [DEBUG] [Thread-192073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:02:55.549 [DEBUG] [Thread-192073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:02:55.550 [DEBUG] [Thread-192073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:02:55.550 [DEBUG] [Thread-192073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:02:55.550 [DEBUG] [Thread-192073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:02:55.550 [DEBUG] [Thread-192073] [transport.py] [_log()] client lang: <none>
2025-11-24T15:02:55.550 [DEBUG] [Thread-192073] [transport.py] [_log()] server lang: <none>
2025-11-24T15:02:55.550 [DEBUG] [Thread-192073] [transport.py] [_log()] kex follows: False
2025-11-24T15:02:55.550 [DEBUG] [Thread-192073] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:02:55.550 [DEBUG] [Thread-192073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:02:55.551 [DEBUG] [Thread-192073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:02:55.551 [DEBUG] [Thread-192073] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:02:55.551 [DEBUG] [Thread-192073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:02:55.551 [DEBUG] [Thread-192073] [transport.py] [_log()] Compression: none
2025-11-24T15:02:55.551 [DEBUG] [Thread-192073] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:02:55.571 [DEBUG] [Thread-192073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:02:55.572 [DEBUG] [Thread-192073] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:02:55.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:02:55.573 [DEBUG] [Thread-192073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:02:55.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:02:55.576 [DEBUG] [Thread-192073] [transport.py] [_log()] userauth is OK
2025-11-24T15:02:55.576 [DEBUG] [Thread-192073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:02:55.576 [DEBUG] [Thread-192073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:02:55.576 [DEBUG] [Thread-192073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:02:55.576 [DEBUG] [Thread-192073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:02:55.602 [INFO] [Thread-192073] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:02:55.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:02:56.204 [DEBUG] [Thread-192073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:02:56.204 [DEBUG] [Thread-192073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:02:56.204 [DEBUG] [Thread-192073] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:02:56.245 [DEBUG] [Thread-192073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:02:56.245 [DEBUG] [Thread-192073] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:02:56.248 [DEBUG] [Thread-192073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:02:56.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:02:56.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:02:56.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:02:56.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:02:56.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:02:56.283 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:02:56.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:02:56.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:02:56.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:02:56.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.543103 -999.00  +21.80  16.66     26   +1.40 1 1 1 1 1   888    0 19.32 -48.59 ----- 15.5 16.7 186.8 21.6 27.6 -27.4 26.7 -27.8 28.5 -26.3 29.4 -26.4
2025-11-24T15:02:56.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:02:56.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:02:56.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.543103
2025-11-24T15:02:56.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:02:56.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:02:56.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:02:56.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:02:56.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:02:56.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:02:33', tmtdew=24.86, humidity=18.94, cloud=0.0, wind=35.04, temperature=22.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:02:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:02:56.286 [DEBUG] [Thread-192073] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:02:56.371 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:02:56.382 [DEBUG] [Thread-192076] [transport.py] [_log()] starting thread (client mode): 0xd0711330
2025-11-24T15:02:56.383 [DEBUG] [Thread-192076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:02:56.398 [DEBUG] [Thread-192076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:02:56.398 [INFO] [Thread-192076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:02:56.405 [DEBUG] [Thread-192076] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:02:56.405 [DEBUG] [Thread-192076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:02:56.405 [DEBUG] [Thread-192076] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:02:56.405 [DEBUG] [Thread-192076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:02:56.405 [DEBUG] [Thread-192076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] client lang: <none>
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] server lang: <none>
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] kex follows: False
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] Compression: none
2025-11-24T15:02:56.406 [DEBUG] [Thread-192076] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:02:56.467 [DEBUG] [Thread-192076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:02:56.468 [DEBUG] [Thread-192076] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:02:56.468 [DEBUG] [Thread-192076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:02:56.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:02:56.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:02:56.526 [DEBUG] [Thread-192076] [transport.py] [_log()] userauth is OK
2025-11-24T15:02:56.527 [DEBUG] [Thread-192076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:02:56.527 [DEBUG] [Thread-192076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:02:56.527 [DEBUG] [Thread-192076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:02:56.527 [DEBUG] [Thread-192076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:02:56.549 [INFO] [Thread-192076] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:02:56.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:02:56.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:02:57.126 [DEBUG] [Thread-192078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:02:57.374 [DEBUG] [Thread-192076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:02:57.383 [DEBUG] [Thread-192076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:02:57.422 [DEBUG] [Thread-192076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:02:57.422 [DEBUG] [Thread-192076] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:02:57.430 [DEBUG] [Thread-192076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:02:57.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:02:57.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-11-24T15:02:57.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-11-24T15:02:57.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:02:57.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:02:57.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:02:57.462 [DEBUG] [Thread-192076] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:03:12.161 [DEBUG] [Thread-192079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:03:13.959 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:03:13.960 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:03:21.107 [DEBUG] [Thread-192080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:03:27.191 [DEBUG] [Thread-192081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:03:27.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:03:27.483 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:03:27.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-11-24T15:03:28.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 3, 6), 24.04, 20.07, 0.0, 36.36, 22.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:03:28.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:03:06
2025-11-24T15:03:28.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:03:28.506 [DEBUG] [Thread-192082] [transport.py] [_log()] starting thread (client mode): 0xd07ebb80
2025-11-24T15:03:28.506 [DEBUG] [Thread-192082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:03:28.527 [DEBUG] [Thread-192082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:03:28.527 [INFO] [Thread-192082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:03:28.531 [DEBUG] [Thread-192082] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:03:28.531 [DEBUG] [Thread-192082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:03:28.531 [DEBUG] [Thread-192082] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:03:28.531 [DEBUG] [Thread-192082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:03:28.531 [DEBUG] [Thread-192082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:03:28.531 [DEBUG] [Thread-192082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:03:28.531 [DEBUG] [Thread-192082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:03:28.531 [DEBUG] [Thread-192082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:03:28.531 [DEBUG] [Thread-192082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:03:28.532 [DEBUG] [Thread-192082] [transport.py] [_log()] client lang: <none>
2025-11-24T15:03:28.532 [DEBUG] [Thread-192082] [transport.py] [_log()] server lang: <none>
2025-11-24T15:03:28.532 [DEBUG] [Thread-192082] [transport.py] [_log()] kex follows: False
2025-11-24T15:03:28.532 [DEBUG] [Thread-192082] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:03:28.532 [DEBUG] [Thread-192082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:03:28.532 [DEBUG] [Thread-192082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:03:28.532 [DEBUG] [Thread-192082] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:03:28.532 [DEBUG] [Thread-192082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:03:28.532 [DEBUG] [Thread-192082] [transport.py] [_log()] Compression: none
2025-11-24T15:03:28.532 [DEBUG] [Thread-192082] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:03:28.546 [DEBUG] [Thread-192082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:03:28.546 [DEBUG] [Thread-192082] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:03:28.546 [DEBUG] [Thread-192082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:03:28.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:03:28.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:03:28.546 [DEBUG] [Thread-192082] [transport.py] [_log()] userauth is OK
2025-11-24T15:03:28.547 [DEBUG] [Thread-192082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:03:28.547 [DEBUG] [Thread-192082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:03:28.547 [DEBUG] [Thread-192082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:03:28.547 [DEBUG] [Thread-192082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:03:28.561 [INFO] [Thread-192082] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:03:28.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:03:29.160 [DEBUG] [Thread-192082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:03:29.160 [DEBUG] [Thread-192082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:03:29.160 [DEBUG] [Thread-192082] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:03:29.201 [DEBUG] [Thread-192082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:03:29.202 [DEBUG] [Thread-192082] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:03:29.204 [DEBUG] [Thread-192082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:03:29.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:03:29.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:03:29.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:03:29.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:03:29.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:03:29.221 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:03:29.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.543450 -999.00  +21.90  29.20     25   +1.40 1 1 1 1 1   888    0 18.73 -50.48 ----- 27.9 29.2 178.6 39.0 27.7 -27.2 26.8 -30.9 28.6 -24.0 29.1 -30.3
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.543450
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:03:29.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:03:29.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:03:06', tmtdew=24.04, humidity=20.07, cloud=0.0, wind=36.36, temperature=22.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:02:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:03:29.230 [DEBUG] [Thread-192082] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:03:29.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:03:29.314 [DEBUG] [Thread-192085] [transport.py] [_log()] starting thread (client mode): 0xd07ebe50
2025-11-24T15:03:29.314 [DEBUG] [Thread-192085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:03:29.330 [DEBUG] [Thread-192085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:03:29.330 [INFO] [Thread-192085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] client lang: <none>
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] server lang: <none>
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] kex follows: False
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] Compression: none
2025-11-24T15:03:29.338 [DEBUG] [Thread-192085] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:03:29.395 [DEBUG] [Thread-192085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:03:29.395 [DEBUG] [Thread-192085] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:03:29.395 [DEBUG] [Thread-192085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:03:29.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:03:29.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:03:29.452 [DEBUG] [Thread-192085] [transport.py] [_log()] userauth is OK
2025-11-24T15:03:29.452 [DEBUG] [Thread-192085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:03:29.452 [DEBUG] [Thread-192085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:03:29.452 [DEBUG] [Thread-192085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:03:29.452 [DEBUG] [Thread-192085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:03:29.466 [INFO] [Thread-192085] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:03:29.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:03:29.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:03:30.314 [DEBUG] [Thread-192085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:03:30.314 [DEBUG] [Thread-192085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:03:30.362 [DEBUG] [Thread-192085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:03:30.362 [DEBUG] [Thread-192085] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:03:30.371 [DEBUG] [Thread-192085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:03:30.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:03:30.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-11-24T15:03:30.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-11-24T15:03:30.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:03:30.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:03:30.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:03:30.403 [DEBUG] [Thread-192085] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:03:42.220 [DEBUG] [Thread-192087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:03:57.271 [DEBUG] [Thread-192088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:04:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:04:00.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:04:00.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:04:01.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 3, 38), 23.97, 20.05, 0.0, 31.9, 21.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:04:01.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:03:38
2025-11-24T15:04:01.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:04:01.557 [DEBUG] [Thread-192089] [transport.py] [_log()] starting thread (client mode): 0xd3152d40
2025-11-24T15:04:01.558 [DEBUG] [Thread-192089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:04:01.578 [DEBUG] [Thread-192089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:04:01.578 [INFO] [Thread-192089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] client lang: <none>
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] server lang: <none>
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] kex follows: False
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] Compression: none
2025-11-24T15:04:01.581 [DEBUG] [Thread-192089] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:04:01.596 [DEBUG] [Thread-192089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:04:01.597 [DEBUG] [Thread-192089] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:04:01.597 [DEBUG] [Thread-192089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:04:01.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:04:01.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:04:01.597 [DEBUG] [Thread-192089] [transport.py] [_log()] userauth is OK
2025-11-24T15:04:01.597 [DEBUG] [Thread-192089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:04:01.597 [DEBUG] [Thread-192089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:04:01.597 [DEBUG] [Thread-192089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:04:01.597 [DEBUG] [Thread-192089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:04:01.612 [INFO] [Thread-192089] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:04:01.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:04:02.217 [DEBUG] [Thread-192089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:04:02.217 [DEBUG] [Thread-192089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:04:02.218 [DEBUG] [Thread-192089] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:04:02.258 [DEBUG] [Thread-192089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:04:02.258 [DEBUG] [Thread-192089] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:04:02.259 [DEBUG] [Thread-192089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:04:02.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:04:02.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:04:02.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:04:02.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:04:02.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:04:02.269 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:04:02.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:04:02.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:04:02.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:04:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.543797 -999.00  +22.20  19.29     25   +1.40 1 1 1 1 1   888    0 19.17 -52.47 ----- 24.7 19.3 164.2 28.9 27.5 -27.3 26.6 -29.9 28.2 -26.7 29.2 -30.0
2025-11-24T15:04:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:04:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:04:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.543797
2025-11-24T15:04:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:04:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:04:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:04:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:04:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:04:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:03:38', tmtdew=23.97, humidity=20.05, cloud=0.0, wind=31.9, temperature=21.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:03:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:04:02.270 [DEBUG] [Thread-192089] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:04:02.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:04:02.355 [DEBUG] [Thread-192092] [transport.py] [_log()] starting thread (client mode): 0xd317ce80
2025-11-24T15:04:02.355 [DEBUG] [Thread-192092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:04:02.370 [DEBUG] [Thread-192092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:04:02.370 [INFO] [Thread-192092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] client lang: <none>
2025-11-24T15:04:02.377 [DEBUG] [Thread-192092] [transport.py] [_log()] server lang: <none>
2025-11-24T15:04:02.378 [DEBUG] [Thread-192092] [transport.py] [_log()] kex follows: False
2025-11-24T15:04:02.378 [DEBUG] [Thread-192092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:04:02.378 [DEBUG] [Thread-192092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:04:02.378 [DEBUG] [Thread-192092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:04:02.378 [DEBUG] [Thread-192092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:04:02.378 [DEBUG] [Thread-192092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:04:02.378 [DEBUG] [Thread-192092] [transport.py] [_log()] Compression: none
2025-11-24T15:04:02.378 [DEBUG] [Thread-192092] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:04:02.435 [DEBUG] [Thread-192092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:04:02.435 [DEBUG] [Thread-192092] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:04:02.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:04:02.435 [DEBUG] [Thread-192092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:04:02.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:04:02.492 [DEBUG] [Thread-192092] [transport.py] [_log()] userauth is OK
2025-11-24T15:04:02.492 [DEBUG] [Thread-192092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:04:02.492 [DEBUG] [Thread-192092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:04:02.492 [DEBUG] [Thread-192092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:04:02.492 [DEBUG] [Thread-192092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:04:02.506 [INFO] [Thread-192092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:04:02.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:04:02.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:04:03.351 [DEBUG] [Thread-192092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:04:03.351 [DEBUG] [Thread-192092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:04:03.399 [DEBUG] [Thread-192092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:04:03.399 [DEBUG] [Thread-192092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:04:03.407 [DEBUG] [Thread-192092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:04:03.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:04:03.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-11-24T15:04:03.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:04:03.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:04:03.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:04:03.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:04:03.438 [DEBUG] [Thread-192092] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:04:12.300 [DEBUG] [Thread-192094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:04:14.103 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:04:14.106 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:04:21.359 [DEBUG] [Thread-192095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:04:27.379 [DEBUG] [Thread-192096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:04:33.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:04:33.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:04:33.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-11-24T15:04:34.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 4, 11), 24.01, 19.97, 0.0, 30.31, 21.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:04:34.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:04:11
2025-11-24T15:04:34.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:04:34.624 [DEBUG] [Thread-192097] [transport.py] [_log()] starting thread (client mode): 0xd3151150
2025-11-24T15:04:34.625 [DEBUG] [Thread-192097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:04:34.630 [DEBUG] [Thread-192097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:04:34.630 [INFO] [Thread-192097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] client lang: <none>
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] server lang: <none>
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] kex follows: False
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:04:34.634 [DEBUG] [Thread-192097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:04:34.635 [DEBUG] [Thread-192097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:04:34.635 [DEBUG] [Thread-192097] [transport.py] [_log()] Compression: none
2025-11-24T15:04:34.635 [DEBUG] [Thread-192097] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:04:34.661 [DEBUG] [Thread-192097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:04:34.663 [DEBUG] [Thread-192097] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:04:34.664 [DEBUG] [Thread-192097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:04:34.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:04:34.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:04:34.667 [DEBUG] [Thread-192097] [transport.py] [_log()] userauth is OK
2025-11-24T15:04:34.667 [DEBUG] [Thread-192097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:04:34.667 [DEBUG] [Thread-192097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:04:34.668 [DEBUG] [Thread-192097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:04:34.668 [DEBUG] [Thread-192097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:04:34.693 [INFO] [Thread-192097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:04:34.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:04:35.327 [DEBUG] [Thread-192097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:04:35.327 [DEBUG] [Thread-192097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:04:35.337 [DEBUG] [Thread-192097] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:04:35.367 [DEBUG] [Thread-192097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:04:35.368 [DEBUG] [Thread-192097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:04:35.373 [DEBUG] [Thread-192097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:04:35.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:04:35.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:04:35.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:04:35.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:04:35.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:04:35.401 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:04:35.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:04:35.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:04:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:04:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.544144 -999.00  +22.10  25.17     25   +1.10 1 1 1 1 1   888    0 18.84 -48.42 ----- 28.9 25.2 180.2 36.4 27.4 -27.6 26.4 -32.3 28.3 -27.9 29.0 -29.1
2025-11-24T15:04:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:04:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:04:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.544144
2025-11-24T15:04:35.408 [DEBUG] [Thread-192097] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:04:35.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:04:35.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:04:35.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:04:35.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:04:35.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:04:35.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:04:11', tmtdew=24.01, humidity=19.97, cloud=0.0, wind=30.31, temperature=21.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:03:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:04:35.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:04:35.512 [DEBUG] [Thread-192100] [transport.py] [_log()] starting thread (client mode): 0xc9ba3640
2025-11-24T15:04:35.512 [DEBUG] [Thread-192100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:04:35.527 [DEBUG] [Thread-192100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:04:35.527 [INFO] [Thread-192100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:04:35.542 [DEBUG] [Thread-192100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:04:35.542 [DEBUG] [Thread-192100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:04:35.542 [DEBUG] [Thread-192100] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:04:35.542 [DEBUG] [Thread-192100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:04:35.542 [DEBUG] [Thread-192100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:04:35.542 [DEBUG] [Thread-192100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:04:35.542 [DEBUG] [Thread-192100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:04:35.542 [DEBUG] [Thread-192100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:04:35.542 [DEBUG] [Thread-192100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:04:35.543 [DEBUG] [Thread-192100] [transport.py] [_log()] client lang: <none>
2025-11-24T15:04:35.543 [DEBUG] [Thread-192100] [transport.py] [_log()] server lang: <none>
2025-11-24T15:04:35.543 [DEBUG] [Thread-192100] [transport.py] [_log()] kex follows: False
2025-11-24T15:04:35.543 [DEBUG] [Thread-192100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:04:35.543 [DEBUG] [Thread-192100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:04:35.543 [DEBUG] [Thread-192100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:04:35.543 [DEBUG] [Thread-192100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:04:35.543 [DEBUG] [Thread-192100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:04:35.543 [DEBUG] [Thread-192100] [transport.py] [_log()] Compression: none
2025-11-24T15:04:35.543 [DEBUG] [Thread-192100] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:04:35.591 [DEBUG] [Thread-192100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:04:35.591 [DEBUG] [Thread-192100] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:04:35.591 [DEBUG] [Thread-192100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:04:35.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:04:35.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:04:35.649 [DEBUG] [Thread-192100] [transport.py] [_log()] userauth is OK
2025-11-24T15:04:35.649 [DEBUG] [Thread-192100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:04:35.649 [DEBUG] [Thread-192100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:04:35.649 [DEBUG] [Thread-192100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:04:35.649 [DEBUG] [Thread-192100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:04:35.663 [INFO] [Thread-192100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:04:35.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:04:35.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:04:36.496 [DEBUG] [Thread-192100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:04:36.496 [DEBUG] [Thread-192100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:04:36.545 [DEBUG] [Thread-192100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:04:36.545 [DEBUG] [Thread-192100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:04:36.554 [DEBUG] [Thread-192100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:04:36.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:04:36.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:04:36.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-11-24T15:04:36.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:04:36.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:04:36.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:04:36.603 [DEBUG] [Thread-192100] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:04:42.412 [DEBUG] [Thread-192102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:04:57.453 [DEBUG] [Thread-192103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:05:06.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:05:06.597 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:05:06.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-11-24T15:05:07.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 4, 43), 24.16, 19.92, 0.0, 26.87, 21.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:05:07.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:04:43
2025-11-24T15:05:07.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:05:07.697 [DEBUG] [Thread-192104] [transport.py] [_log()] starting thread (client mode): 0xc9ba2020
2025-11-24T15:05:07.697 [DEBUG] [Thread-192104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:05:07.722 [DEBUG] [Thread-192104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:05:07.722 [INFO] [Thread-192104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:05:07.725 [DEBUG] [Thread-192104] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:05:07.725 [DEBUG] [Thread-192104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:05:07.725 [DEBUG] [Thread-192104] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] client lang: <none>
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] server lang: <none>
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] kex follows: False
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] Compression: none
2025-11-24T15:05:07.726 [DEBUG] [Thread-192104] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:05:07.744 [DEBUG] [Thread-192104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:05:07.744 [DEBUG] [Thread-192104] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:05:07.745 [DEBUG] [Thread-192104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:05:07.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:05:07.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:05:07.748 [DEBUG] [Thread-192104] [transport.py] [_log()] userauth is OK
2025-11-24T15:05:07.748 [DEBUG] [Thread-192104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:05:07.748 [DEBUG] [Thread-192104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:05:07.748 [DEBUG] [Thread-192104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:05:07.748 [DEBUG] [Thread-192104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:05:07.783 [INFO] [Thread-192104] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:05:07.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:05:12.171 [DEBUG] [Thread-192104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:05:12.171 [DEBUG] [Thread-192104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:05:12.171 [DEBUG] [Thread-192104] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:05:12.212 [DEBUG] [Thread-192104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:05:12.212 [DEBUG] [Thread-192104] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:05:12.214 [DEBUG] [Thread-192104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:05:12.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:05:12.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:05:12.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:05:12.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:05:12.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:05:12.295 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:05:12.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:05:12.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:05:12.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:05:12.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.544492 -999.00  +21.80  17.04     25   +1.10 1 1 1 1 1   888    0 19.27 -42.95 ----- 25.2 17.0 171.0 31.4 27.4 -28.6 26.4 -30.6 28.2 -25.8 28.9 -30.7
2025-11-24T15:05:12.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:05:12.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:05:12.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.544492
2025-11-24T15:05:12.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:05:12.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:05:12.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:05:12.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:05:12.300 [DEBUG] [Thread-192104] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:05:12.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:05:12.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:04:43', tmtdew=24.16, humidity=19.92, cloud=0.0, wind=26.87, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:04:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:05:12.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:05:12.383 [DEBUG] [Thread-192107] [transport.py] [_log()] starting thread (client mode): 0xc9ba17b0
2025-11-24T15:05:12.383 [DEBUG] [Thread-192107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:05:12.402 [DEBUG] [Thread-192107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:05:12.403 [INFO] [Thread-192107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:05:12.410 [DEBUG] [Thread-192107] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:05:12.410 [DEBUG] [Thread-192107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:05:12.410 [DEBUG] [Thread-192107] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:05:12.410 [DEBUG] [Thread-192107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:05:12.410 [DEBUG] [Thread-192107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:05:12.410 [DEBUG] [Thread-192107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:05:12.410 [DEBUG] [Thread-192107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] client lang: <none>
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] server lang: <none>
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] kex follows: False
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] Compression: none
2025-11-24T15:05:12.411 [DEBUG] [Thread-192107] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:05:12.468 [DEBUG] [Thread-192107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:05:12.468 [DEBUG] [Thread-192107] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:05:12.469 [DEBUG] [Thread-192107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:05:12.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:05:12.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:05:12.486 [DEBUG] [Thread-192109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:05:12.524 [DEBUG] [Thread-192107] [transport.py] [_log()] userauth is OK
2025-11-24T15:05:12.524 [DEBUG] [Thread-192107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:05:12.525 [DEBUG] [Thread-192107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:05:12.525 [DEBUG] [Thread-192107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:05:12.525 [DEBUG] [Thread-192107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:05:12.545 [INFO] [Thread-192107] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:05:12.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:05:12.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:05:13.354 [DEBUG] [Thread-192107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:05:13.354 [DEBUG] [Thread-192107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:05:13.402 [DEBUG] [Thread-192107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:05:13.402 [DEBUG] [Thread-192107] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:05:13.410 [DEBUG] [Thread-192107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:05:13.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:05:13.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-11-24T15:05:13.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-11-24T15:05:13.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:05:13.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:05:13.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:05:13.442 [DEBUG] [Thread-192107] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:05:14.247 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:05:14.248 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:05:21.520 [DEBUG] [Thread-192110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:05:27.537 [DEBUG] [Thread-192111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:05:42.582 [DEBUG] [Thread-192112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:05:43.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:05:43.465 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:05:43.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:05:44.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 5, 16), 24.22, 19.84, 0.0, 23.52, 21.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:05:44.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:05:16
2025-11-24T15:05:44.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:05:44.593 [DEBUG] [Thread-192113] [transport.py] [_log()] starting thread (client mode): 0xc9ba1c90
2025-11-24T15:05:44.593 [DEBUG] [Thread-192113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:05:44.613 [DEBUG] [Thread-192113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:05:44.613 [INFO] [Thread-192113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:05:44.616 [DEBUG] [Thread-192113] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:05:44.616 [DEBUG] [Thread-192113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:05:44.616 [DEBUG] [Thread-192113] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:05:44.616 [DEBUG] [Thread-192113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:05:44.616 [DEBUG] [Thread-192113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:05:44.616 [DEBUG] [Thread-192113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:05:44.616 [DEBUG] [Thread-192113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:05:44.616 [DEBUG] [Thread-192113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:05:44.616 [DEBUG] [Thread-192113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:05:44.617 [DEBUG] [Thread-192113] [transport.py] [_log()] client lang: <none>
2025-11-24T15:05:44.617 [DEBUG] [Thread-192113] [transport.py] [_log()] server lang: <none>
2025-11-24T15:05:44.617 [DEBUG] [Thread-192113] [transport.py] [_log()] kex follows: False
2025-11-24T15:05:44.617 [DEBUG] [Thread-192113] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:05:44.617 [DEBUG] [Thread-192113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:05:44.617 [DEBUG] [Thread-192113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:05:44.617 [DEBUG] [Thread-192113] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:05:44.617 [DEBUG] [Thread-192113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:05:44.617 [DEBUG] [Thread-192113] [transport.py] [_log()] Compression: none
2025-11-24T15:05:44.617 [DEBUG] [Thread-192113] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:05:44.637 [DEBUG] [Thread-192113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:05:44.638 [DEBUG] [Thread-192113] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:05:44.639 [DEBUG] [Thread-192113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:05:44.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:05:44.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:05:44.641 [DEBUG] [Thread-192113] [transport.py] [_log()] userauth is OK
2025-11-24T15:05:44.641 [DEBUG] [Thread-192113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:05:44.642 [DEBUG] [Thread-192113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:05:44.642 [DEBUG] [Thread-192113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:05:44.642 [DEBUG] [Thread-192113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:05:44.666 [INFO] [Thread-192113] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:05:44.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:05:45.226 [DEBUG] [Thread-192113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:05:45.226 [DEBUG] [Thread-192113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:05:45.226 [DEBUG] [Thread-192113] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:05:45.267 [DEBUG] [Thread-192113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:05:45.267 [DEBUG] [Thread-192113] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:05:45.269 [DEBUG] [Thread-192113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:05:45.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:05:45.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:05:45.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:05:45.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:05:45.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:05:45.287 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:05:45.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:05:45.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:05:45.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:05:45.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.545533 -999.00  +21.60  14.45     25   +1.20 1 1 1 1 1   888    0 19.19 -30.15 ----- 12.9 14.4 176.8 25.3 27.2 -26.7 26.4 -26.1 28.1 -25.7 29.0 -28.5
2025-11-24T15:05:45.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:05:45.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:05:45.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.545533
2025-11-24T15:05:45.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:05:45.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:05:45.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:05:45.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:05:45.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:05:45.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:05:16', tmtdew=24.22, humidity=19.84, cloud=0.0, wind=23.52, temperature=21.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:05:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:05:45.290 [DEBUG] [Thread-192113] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:05:45.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:05:45.375 [DEBUG] [Thread-192116] [transport.py] [_log()] starting thread (client mode): 0xc9ba11e0
2025-11-24T15:05:45.375 [DEBUG] [Thread-192116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:05:45.390 [DEBUG] [Thread-192116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:05:45.390 [INFO] [Thread-192116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:05:45.397 [DEBUG] [Thread-192116] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:05:45.397 [DEBUG] [Thread-192116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:05:45.397 [DEBUG] [Thread-192116] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] client lang: <none>
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] server lang: <none>
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] kex follows: False
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] Compression: none
2025-11-24T15:05:45.398 [DEBUG] [Thread-192116] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:05:45.455 [DEBUG] [Thread-192116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:05:45.455 [DEBUG] [Thread-192116] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:05:45.455 [DEBUG] [Thread-192116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:05:45.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:05:45.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:05:45.512 [DEBUG] [Thread-192116] [transport.py] [_log()] userauth is OK
2025-11-24T15:05:45.512 [DEBUG] [Thread-192116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:05:45.512 [DEBUG] [Thread-192116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:05:45.512 [DEBUG] [Thread-192116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:05:45.512 [DEBUG] [Thread-192116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:05:45.526 [INFO] [Thread-192116] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:05:45.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:05:45.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:05:46.372 [DEBUG] [Thread-192116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:05:46.372 [DEBUG] [Thread-192116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:05:46.421 [DEBUG] [Thread-192116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:05:46.421 [DEBUG] [Thread-192116] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:05:46.430 [DEBUG] [Thread-192116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:05:46.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:05:46.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-11-24T15:05:46.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-11-24T15:05:46.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:05:46.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:05:46.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:05:46.475 [DEBUG] [Thread-192116] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:05:57.613 [DEBUG] [Thread-192118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:06:12.663 [DEBUG] [Thread-192119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:06:14.398 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:06:14.401 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:06:16.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:06:16.499 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:06:16.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-11-24T15:06:17.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 5, 48), 23.75, 20.44, 0.0, 24.79, 21.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:06:17.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:05:48
2025-11-24T15:06:17.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:06:17.581 [DEBUG] [Thread-192120] [transport.py] [_log()] starting thread (client mode): 0xc9ba1cf0
2025-11-24T15:06:17.581 [DEBUG] [Thread-192120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:06:17.599 [DEBUG] [Thread-192120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:06:17.599 [INFO] [Thread-192120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:06:17.603 [DEBUG] [Thread-192120] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:06:17.603 [DEBUG] [Thread-192120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:06:17.603 [DEBUG] [Thread-192120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:06:17.603 [DEBUG] [Thread-192120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:06:17.603 [DEBUG] [Thread-192120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:06:17.603 [DEBUG] [Thread-192120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:06:17.603 [DEBUG] [Thread-192120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:06:17.603 [DEBUG] [Thread-192120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:06:17.603 [DEBUG] [Thread-192120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:06:17.604 [DEBUG] [Thread-192120] [transport.py] [_log()] client lang: <none>
2025-11-24T15:06:17.604 [DEBUG] [Thread-192120] [transport.py] [_log()] server lang: <none>
2025-11-24T15:06:17.604 [DEBUG] [Thread-192120] [transport.py] [_log()] kex follows: False
2025-11-24T15:06:17.604 [DEBUG] [Thread-192120] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:06:17.604 [DEBUG] [Thread-192120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:06:17.604 [DEBUG] [Thread-192120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:06:17.604 [DEBUG] [Thread-192120] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:06:17.604 [DEBUG] [Thread-192120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:06:17.604 [DEBUG] [Thread-192120] [transport.py] [_log()] Compression: none
2025-11-24T15:06:17.604 [DEBUG] [Thread-192120] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:06:17.622 [DEBUG] [Thread-192120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:06:17.623 [DEBUG] [Thread-192120] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:06:17.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:06:17.624 [DEBUG] [Thread-192120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:06:17.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:06:17.664 [DEBUG] [Thread-192120] [transport.py] [_log()] userauth is OK
2025-11-24T15:06:17.665 [DEBUG] [Thread-192120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:06:17.665 [DEBUG] [Thread-192120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:06:17.665 [DEBUG] [Thread-192120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:06:17.665 [DEBUG] [Thread-192120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:06:17.697 [INFO] [Thread-192120] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:06:17.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:06:18.459 [DEBUG] [Thread-192120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:06:18.459 [DEBUG] [Thread-192120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:06:18.459 [DEBUG] [Thread-192120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:06:18.500 [DEBUG] [Thread-192120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:06:18.500 [DEBUG] [Thread-192120] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:06:18.502 [DEBUG] [Thread-192120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:06:18.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:06:18.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:06:18.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:06:18.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:06:18.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:06:18.516 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:06:18.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:06:18.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:06:18.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:06:18.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.545533 -999.00  +21.60  14.45     25   +1.20 1 1 1 1 1   888    0 19.19 -30.15 ----- 12.9 14.4 176.8 25.3 27.2 -26.7 26.4 -26.1 28.1 -25.7 29.0 -28.5
2025-11-24T15:06:18.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:06:18.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:06:18.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.545533
2025-11-24T15:06:18.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:06:18.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:06:18.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:06:18.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:06:18.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:06:18.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:05:48', tmtdew=23.75, humidity=20.44, cloud=0.0, wind=24.79, temperature=21.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:05:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:06:18.521 [DEBUG] [Thread-192120] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:06:18.593 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:06:18.605 [DEBUG] [Thread-192123] [transport.py] [_log()] starting thread (client mode): 0xd0713550
2025-11-24T15:06:18.605 [DEBUG] [Thread-192123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:06:18.619 [DEBUG] [Thread-192123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:06:18.620 [INFO] [Thread-192123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] client lang: <none>
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] server lang: <none>
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] kex follows: False
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] Compression: none
2025-11-24T15:06:18.627 [DEBUG] [Thread-192123] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:06:18.692 [DEBUG] [Thread-192123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:06:18.693 [DEBUG] [Thread-192123] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:06:18.693 [DEBUG] [Thread-192123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:06:18.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:06:18.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:06:18.750 [DEBUG] [Thread-192123] [transport.py] [_log()] userauth is OK
2025-11-24T15:06:18.750 [DEBUG] [Thread-192123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:06:18.750 [DEBUG] [Thread-192123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:06:18.750 [DEBUG] [Thread-192123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:06:18.750 [DEBUG] [Thread-192123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:06:18.766 [INFO] [Thread-192123] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:06:18.766 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:06:18.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:06:19.589 [DEBUG] [Thread-192123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:06:19.590 [DEBUG] [Thread-192123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:06:19.637 [DEBUG] [Thread-192123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:06:19.637 [DEBUG] [Thread-192123] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:06:19.646 [DEBUG] [Thread-192123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:06:19.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:06:19.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:06:19.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:06:19.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:06:19.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:06:19.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:06:19.683 [DEBUG] [Thread-192123] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:06:21.738 [DEBUG] [Thread-192125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:06:27.699 [DEBUG] [Thread-192126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:06:42.745 [DEBUG] [Thread-192127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:06:49.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:06:49.685 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:06:49.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-11-24T15:06:50.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 6, 20), 23.67, 20.53, 0.0, 30.24, 21.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:06:50.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:06:20
2025-11-24T15:06:50.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:06:50.767 [DEBUG] [Thread-192128] [transport.py] [_log()] starting thread (client mode): 0xd317df90
2025-11-24T15:06:50.767 [DEBUG] [Thread-192128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:06:50.788 [DEBUG] [Thread-192128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:06:50.788 [INFO] [Thread-192128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] client lang: <none>
2025-11-24T15:06:50.791 [DEBUG] [Thread-192128] [transport.py] [_log()] server lang: <none>
2025-11-24T15:06:50.792 [DEBUG] [Thread-192128] [transport.py] [_log()] kex follows: False
2025-11-24T15:06:50.792 [DEBUG] [Thread-192128] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:06:50.792 [DEBUG] [Thread-192128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:06:50.792 [DEBUG] [Thread-192128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:06:50.792 [DEBUG] [Thread-192128] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:06:50.792 [DEBUG] [Thread-192128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:06:50.792 [DEBUG] [Thread-192128] [transport.py] [_log()] Compression: none
2025-11-24T15:06:50.792 [DEBUG] [Thread-192128] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:06:50.812 [DEBUG] [Thread-192128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:06:50.813 [DEBUG] [Thread-192128] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:06:50.813 [DEBUG] [Thread-192128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:06:50.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:06:50.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:06:50.857 [DEBUG] [Thread-192128] [transport.py] [_log()] userauth is OK
2025-11-24T15:06:50.858 [DEBUG] [Thread-192128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:06:50.858 [DEBUG] [Thread-192128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:06:50.858 [DEBUG] [Thread-192128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:06:50.858 [DEBUG] [Thread-192128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:06:50.892 [INFO] [Thread-192128] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:06:50.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:06:51.475 [DEBUG] [Thread-192128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:06:51.475 [DEBUG] [Thread-192128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:06:51.475 [DEBUG] [Thread-192128] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:06:51.516 [DEBUG] [Thread-192128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:06:51.516 [DEBUG] [Thread-192128] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:06:51.518 [DEBUG] [Thread-192128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:06:51.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:06:51.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:06:51.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:06:51.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:06:51.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:06:51.531 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:06:51.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:06:51.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.545880 -999.00  +21.90  20.89     25   +1.20 1 1 1 1 1   888    0 19.94 -27.61 ----- 24.9 20.9 181.0 34.1 27.2 -28.0 26.5 -26.0 28.2 -25.9 28.8 -29.6
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.545880
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:06:51.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:06:20', tmtdew=23.67, humidity=20.53, cloud=0.0, wind=30.24, temperature=21.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:06:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:06:51.532 [DEBUG] [Thread-192128] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:06:51.606 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:06:51.619 [DEBUG] [Thread-192131] [transport.py] [_log()] starting thread (client mode): 0xd317e830
2025-11-24T15:06:51.619 [DEBUG] [Thread-192131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:06:51.633 [DEBUG] [Thread-192131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:06:51.633 [INFO] [Thread-192131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:06:51.640 [DEBUG] [Thread-192131] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:06:51.640 [DEBUG] [Thread-192131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] client lang: <none>
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] server lang: <none>
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] kex follows: False
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] Compression: none
2025-11-24T15:06:51.641 [DEBUG] [Thread-192131] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:06:51.703 [DEBUG] [Thread-192131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:06:51.703 [DEBUG] [Thread-192131] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:06:51.703 [DEBUG] [Thread-192131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:06:51.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:06:51.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:06:51.760 [DEBUG] [Thread-192131] [transport.py] [_log()] userauth is OK
2025-11-24T15:06:51.760 [DEBUG] [Thread-192131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:06:51.760 [DEBUG] [Thread-192131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:06:51.760 [DEBUG] [Thread-192131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:06:51.760 [DEBUG] [Thread-192131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:06:51.773 [INFO] [Thread-192131] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:06:51.774 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:06:51.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:06:52.609 [DEBUG] [Thread-192131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:06:52.609 [DEBUG] [Thread-192131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:06:52.658 [DEBUG] [Thread-192131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:06:52.658 [DEBUG] [Thread-192131] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:06:52.667 [DEBUG] [Thread-192131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:06:52.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:06:52.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-11-24T15:06:52.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-11-24T15:06:52.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:06:52.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:06:52.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:06:52.705 [DEBUG] [Thread-192131] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:06:57.774 [DEBUG] [Thread-192133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:07:12.829 [DEBUG] [Thread-192134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:07:14.541 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:07:14.542 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:07:22.001 [DEBUG] [Thread-192135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:07:22.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:07:22.719 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:07: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-11-24T15:07:23.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 6, 53), 23.98, 19.9, 0.0, 29.68, 21.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:07:23.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:06:53
2025-11-24T15:07:23.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:07:23.826 [DEBUG] [Thread-192136] [transport.py] [_log()] starting thread (client mode): 0xd317de10
2025-11-24T15:07:23.827 [DEBUG] [Thread-192136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:07:23.836 [DEBUG] [Thread-192136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:07:23.836 [INFO] [Thread-192136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:07:23.838 [DEBUG] [Thread-192136] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:07:23.838 [DEBUG] [Thread-192136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:07:23.838 [DEBUG] [Thread-192136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:07:23.838 [DEBUG] [Thread-192136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:07:23.838 [DEBUG] [Thread-192136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:07:23.838 [DEBUG] [Thread-192136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:07:23.838 [DEBUG] [Thread-192136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] client lang: <none>
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] server lang: <none>
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] kex follows: False
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] Compression: none
2025-11-24T15:07:23.839 [DEBUG] [Thread-192136] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:07:23.849 [DEBUG] [Thread-192136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:07:23.849 [DEBUG] [Thread-192136] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:07:23.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:07:23.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:07:23.850 [DEBUG] [Thread-192136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:07:23.851 [DEBUG] [Thread-192136] [transport.py] [_log()] userauth is OK
2025-11-24T15:07:23.851 [DEBUG] [Thread-192136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:07:23.851 [DEBUG] [Thread-192136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:07:23.851 [DEBUG] [Thread-192136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:07:23.851 [DEBUG] [Thread-192136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:07:23.870 [INFO] [Thread-192136] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:07:23.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:07:24.550 [DEBUG] [Thread-192136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:07:24.550 [DEBUG] [Thread-192136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:07:24.550 [DEBUG] [Thread-192136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:07:24.591 [DEBUG] [Thread-192136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:07:24.591 [DEBUG] [Thread-192136] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:07:24.593 [DEBUG] [Thread-192136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:07:24.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:07:24.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:07:24.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:07:24.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:07:24.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:07:24.616 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:07:24.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:07:24.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:07:24.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:07:24.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.546228 -999.00  +21.50  28.51     25   +0.90 1 1 1 1 1   888    0 19.46 -28.36 ----- 26.7 28.5 180.0 43.6 27.1 -29.1 26.1 -33.8 27.9 -27.2 28.6 -28.9
2025-11-24T15:07:24.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:07:24.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:07:24.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.546228
2025-11-24T15:07:24.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:07:24.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:07:24.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:07:24.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:07:24.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:07:24.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:06:53', tmtdew=23.98, humidity=19.9, cloud=0.0, wind=29.68, temperature=21.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:06:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:07:24.621 [DEBUG] [Thread-192136] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:07:24.687 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:07:24.699 [DEBUG] [Thread-192139] [transport.py] [_log()] starting thread (client mode): 0xc9ba2f80
2025-11-24T15:07:24.699 [DEBUG] [Thread-192139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:07:24.714 [DEBUG] [Thread-192139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:07:24.714 [INFO] [Thread-192139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:07:24.721 [DEBUG] [Thread-192139] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:07:24.721 [DEBUG] [Thread-192139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] client lang: <none>
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] server lang: <none>
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] kex follows: False
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] Compression: none
2025-11-24T15:07:24.722 [DEBUG] [Thread-192139] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:07:24.781 [DEBUG] [Thread-192139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:07:24.781 [DEBUG] [Thread-192139] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:07:24.782 [DEBUG] [Thread-192139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:07:24.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:07:24.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:07:24.837 [DEBUG] [Thread-192139] [transport.py] [_log()] userauth is OK
2025-11-24T15:07:24.838 [DEBUG] [Thread-192139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:07:24.838 [DEBUG] [Thread-192139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:07:24.838 [DEBUG] [Thread-192139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:07:24.838 [DEBUG] [Thread-192139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:07:24.857 [INFO] [Thread-192139] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:07:24.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:07:24.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:07:25.683 [DEBUG] [Thread-192139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:07:25.683 [DEBUG] [Thread-192139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:07:25.731 [DEBUG] [Thread-192139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:07:25.731 [DEBUG] [Thread-192139] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:07:25.739 [DEBUG] [Thread-192139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:07:25.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:07:25.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-11-24T15:07:25.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-11-24T15:07:25.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:07:25.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:07:25.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:07:25.772 [DEBUG] [Thread-192139] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:07:27.858 [DEBUG] [Thread-192141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:07:42.900 [DEBUG] [Thread-192142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:07:55.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:07:55.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:07:55.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-11-24T15:07:56.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 7, 25), 24.03, 19.84, 0.0, 25.0, 21.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:07:56.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:07:25
2025-11-24T15:07:56.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:07:56.930 [DEBUG] [Thread-192143] [transport.py] [_log()] starting thread (client mode): 0xd317ec50
2025-11-24T15:07:56.930 [DEBUG] [Thread-192143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:07:56.950 [DEBUG] [Thread-192143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:07:56.950 [INFO] [Thread-192143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:07:56.953 [DEBUG] [Thread-192143] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:07:56.953 [DEBUG] [Thread-192143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:07:56.953 [DEBUG] [Thread-192143] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:07:56.953 [DEBUG] [Thread-192143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:07:56.953 [DEBUG] [Thread-192143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] client lang: <none>
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] server lang: <none>
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] kex follows: False
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] Compression: none
2025-11-24T15:07:56.954 [DEBUG] [Thread-192143] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:07:56.972 [DEBUG] [Thread-192143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:07:56.973 [DEBUG] [Thread-192143] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:07:56.973 [DEBUG] [Thread-192143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:07:56.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:07:56.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:07:56.974 [DEBUG] [Thread-192143] [transport.py] [_log()] userauth is OK
2025-11-24T15:07:56.974 [DEBUG] [Thread-192143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:07:56.974 [DEBUG] [Thread-192143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:07:56.974 [DEBUG] [Thread-192143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:07:56.974 [DEBUG] [Thread-192143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:07:56.985 [INFO] [Thread-192143] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:07:56.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:07:57.583 [DEBUG] [Thread-192143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:07:57.583 [DEBUG] [Thread-192143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:07:57.583 [DEBUG] [Thread-192143] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:07:57.624 [DEBUG] [Thread-192143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:07:57.624 [DEBUG] [Thread-192143] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:07:57.626 [DEBUG] [Thread-192143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:07:57.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:07:57.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:07:57.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:07:57.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:07:57.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:07:57.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:07:57.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:07:57.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.546575 -999.00  +21.10  22.95     26   +1.00 1 1 1 1 1   888    0 19.45 -26.47 ----- 21.1 22.9 186.8 36.5 26.9 -29.9 25.8 -32.3 27.8 -27.3 28.6 -26.3
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.546575
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:07:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:07:25', tmtdew=24.03, humidity=19.84, cloud=0.0, wind=25.0, temperature=21.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:07:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:07:57.645 [DEBUG] [Thread-192143] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:07:57.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:07:57.730 [DEBUG] [Thread-192146] [transport.py] [_log()] starting thread (client mode): 0xd317cca0
2025-11-24T15:07:57.730 [DEBUG] [Thread-192146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:07:57.744 [DEBUG] [Thread-192146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:07:57.744 [INFO] [Thread-192146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:07:57.751 [DEBUG] [Thread-192146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:07:57.751 [DEBUG] [Thread-192146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:07:57.751 [DEBUG] [Thread-192146] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:07:57.751 [DEBUG] [Thread-192146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:07:57.751 [DEBUG] [Thread-192146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:07:57.751 [DEBUG] [Thread-192146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:07:57.751 [DEBUG] [Thread-192146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] client lang: <none>
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] server lang: <none>
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] kex follows: False
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] Compression: none
2025-11-24T15:07:57.752 [DEBUG] [Thread-192146] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:07:57.807 [DEBUG] [Thread-192146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:07:57.807 [DEBUG] [Thread-192146] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:07:57.807 [DEBUG] [Thread-192146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:07:57.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:07:57.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:07:57.864 [DEBUG] [Thread-192146] [transport.py] [_log()] userauth is OK
2025-11-24T15:07:57.864 [DEBUG] [Thread-192146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:07:57.864 [DEBUG] [Thread-192146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:07:57.864 [DEBUG] [Thread-192146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:07:57.864 [DEBUG] [Thread-192146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:07:57.878 [INFO] [Thread-192146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:07:57.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:07:57.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:07:57.928 [DEBUG] [Thread-192148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:07:58.694 [DEBUG] [Thread-192146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:07:58.694 [DEBUG] [Thread-192146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:07:58.742 [DEBUG] [Thread-192146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:07:58.742 [DEBUG] [Thread-192146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:07:58.750 [DEBUG] [Thread-192146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:07:58.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:07:58.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-11-24T15:07:58.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-11-24T15:07:58.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:07:58.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:07:58.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:07:58.782 [DEBUG] [Thread-192146] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:08:12.966 [DEBUG] [Thread-192149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:08:14.681 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:08:14.682 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:08:22.298 [DEBUG] [Thread-192150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:08:28.000 [DEBUG] [Thread-192151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:08:28.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:08:28.781 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:08:28.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-11-24T15:08:29.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 7, 58), 24.53, 19.24, 0.0, 28.88, 22.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:08:29.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:07:58
2025-11-24T15:08:29.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:08:30.062 [DEBUG] [Thread-192152] [transport.py] [_log()] starting thread (client mode): 0xd0710550
2025-11-24T15:08:30.062 [DEBUG] [Thread-192152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:08:30.072 [DEBUG] [Thread-192152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:08:30.072 [INFO] [Thread-192152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] client lang: <none>
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] server lang: <none>
2025-11-24T15:08:30.075 [DEBUG] [Thread-192152] [transport.py] [_log()] kex follows: False
2025-11-24T15:08:30.076 [DEBUG] [Thread-192152] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:08:30.076 [DEBUG] [Thread-192152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:08:30.076 [DEBUG] [Thread-192152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:08:30.076 [DEBUG] [Thread-192152] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:08:30.076 [DEBUG] [Thread-192152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:08:30.076 [DEBUG] [Thread-192152] [transport.py] [_log()] Compression: none
2025-11-24T15:08:30.076 [DEBUG] [Thread-192152] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:08:30.097 [DEBUG] [Thread-192152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:08:30.099 [DEBUG] [Thread-192152] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:08:30.100 [DEBUG] [Thread-192152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:08:30.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:08:30.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:08:30.102 [DEBUG] [Thread-192152] [transport.py] [_log()] userauth is OK
2025-11-24T15:08:30.102 [DEBUG] [Thread-192152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:08:30.102 [DEBUG] [Thread-192152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:08:30.102 [DEBUG] [Thread-192152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:08:30.102 [DEBUG] [Thread-192152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:08:30.119 [INFO] [Thread-192152] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:08:30.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:08:30.703 [DEBUG] [Thread-192152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:08:30.703 [DEBUG] [Thread-192152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:08:30.704 [DEBUG] [Thread-192152] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:08:30.744 [DEBUG] [Thread-192152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:08:30.744 [DEBUG] [Thread-192152] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:08:30.746 [DEBUG] [Thread-192152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:08:30.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:08:30.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:08:30.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:08:30.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:08:30.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:08:30.766 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:08:30.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:08:30.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:08:30.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:08:30.767 [DEBUG] [Thread-192152] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:08:30.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.546922 -999.00  +21.30  22.26     26   +1.20 1 1 1 1 1   888    0 19.08 -30.23 ----- 17.1 22.3 158.7 35.4 26.9 -27.8 26.0 -27.1 27.8 -25.3 28.8 -26.2
2025-11-24T15:08:30.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:08:30.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:08:30.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.546922
2025-11-24T15:08:30.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:08:30.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:08:30.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:08:30.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:08:30.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:08:30.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:07:58', tmtdew=24.53, humidity=19.24, cloud=0.0, wind=28.88, temperature=22.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:07:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:08:30.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:08:30.878 [DEBUG] [Thread-192155] [transport.py] [_log()] starting thread (client mode): 0xd317ded0
2025-11-24T15:08:30.878 [DEBUG] [Thread-192155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:08:30.892 [DEBUG] [Thread-192155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:08:30.893 [INFO] [Thread-192155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] client lang: <none>
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] server lang: <none>
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] kex follows: False
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] Compression: none
2025-11-24T15:08:30.900 [DEBUG] [Thread-192155] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:08:30.955 [DEBUG] [Thread-192155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:08:30.955 [DEBUG] [Thread-192155] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:08:30.956 [DEBUG] [Thread-192155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:08:30.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:08:30.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:08:31.012 [DEBUG] [Thread-192155] [transport.py] [_log()] userauth is OK
2025-11-24T15:08:31.012 [DEBUG] [Thread-192155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:08:31.013 [DEBUG] [Thread-192155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:08:31.013 [DEBUG] [Thread-192155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:08:31.013 [DEBUG] [Thread-192155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:08:31.027 [INFO] [Thread-192155] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:08:31.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:08:31.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:08:31.870 [DEBUG] [Thread-192155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:08:31.870 [DEBUG] [Thread-192155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:08:31.918 [DEBUG] [Thread-192155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:08:31.918 [DEBUG] [Thread-192155] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:08:31.926 [DEBUG] [Thread-192155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:08:31.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:08:31.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-11-24T15:08:31.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-11-24T15:08:31.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:08:31.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:08:31.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:08:31.961 [DEBUG] [Thread-192155] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:08:43.030 [DEBUG] [Thread-192157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:08:58.111 [DEBUG] [Thread-192158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:09:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:09:01.982 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:09:01.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-11-24T15:09:02.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 8, 30), 24.63, 19.12, 0.0, 26.24, 22.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:09:02.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:08:30
2025-11-24T15:09:02.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:09:03.083 [DEBUG] [Thread-192159] [transport.py] [_log()] starting thread (client mode): 0xd317e710
2025-11-24T15:09:03.084 [DEBUG] [Thread-192159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:09:03.103 [DEBUG] [Thread-192159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:09:03.104 [INFO] [Thread-192159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:09:03.106 [DEBUG] [Thread-192159] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] client lang: <none>
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] server lang: <none>
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] kex follows: False
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] Compression: none
2025-11-24T15:09:03.107 [DEBUG] [Thread-192159] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:09:03.124 [DEBUG] [Thread-192159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:09:03.125 [DEBUG] [Thread-192159] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:09:03.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:09:03.125 [DEBUG] [Thread-192159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:09:03.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:09:03.169 [DEBUG] [Thread-192159] [transport.py] [_log()] userauth is OK
2025-11-24T15:09:03.169 [DEBUG] [Thread-192159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:09:03.169 [DEBUG] [Thread-192159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:09:03.170 [DEBUG] [Thread-192159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:09:03.170 [DEBUG] [Thread-192159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:09:03.196 [INFO] [Thread-192159] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:09:03.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:09:03.809 [DEBUG] [Thread-192159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:09:03.810 [DEBUG] [Thread-192159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:09:03.810 [DEBUG] [Thread-192159] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:09:03.850 [DEBUG] [Thread-192159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:09:03.850 [DEBUG] [Thread-192159] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:09:03.852 [DEBUG] [Thread-192159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:09:03.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:09:03.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:09:03.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:09:03.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:09:03.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:09:03.869 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:09:03.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.547269 -999.00  +21.60  20.94     26   +1.30 1 1 1 1 1   888    0 19.80 -32.44 ----- 16.4 20.9 193.8 33.2 27.0 -27.4 26.3 -28.5 28.0 -25.1 28.6 -28.7
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.547269
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:09:03.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:08:30', tmtdew=24.63, humidity=19.12, cloud=0.0, wind=26.24, temperature=22.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:08:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:09:03.870 [DEBUG] [Thread-192159] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:09:03.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:09:03.955 [DEBUG] [Thread-192162] [transport.py] [_log()] starting thread (client mode): 0xd07eb940
2025-11-24T15:09:03.955 [DEBUG] [Thread-192162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:09:03.970 [DEBUG] [Thread-192162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:09:03.970 [INFO] [Thread-192162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] client lang: <none>
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] server lang: <none>
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] kex follows: False
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:09:03.977 [DEBUG] [Thread-192162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:09:03.978 [DEBUG] [Thread-192162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:09:03.978 [DEBUG] [Thread-192162] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:09:03.978 [DEBUG] [Thread-192162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:09:03.978 [DEBUG] [Thread-192162] [transport.py] [_log()] Compression: none
2025-11-24T15:09:03.978 [DEBUG] [Thread-192162] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:09:04.035 [DEBUG] [Thread-192162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:09:04.035 [DEBUG] [Thread-192162] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:09:04.035 [DEBUG] [Thread-192162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:09:04.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:09:04.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:09:04.096 [DEBUG] [Thread-192162] [transport.py] [_log()] userauth is OK
2025-11-24T15:09:04.096 [DEBUG] [Thread-192162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:09:04.096 [DEBUG] [Thread-192162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:09:04.096 [DEBUG] [Thread-192162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:09:04.096 [DEBUG] [Thread-192162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:09:04.110 [INFO] [Thread-192162] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:09:04.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:09:04.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:09:04.918 [DEBUG] [Thread-192162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:09:04.918 [DEBUG] [Thread-192162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:09:04.967 [DEBUG] [Thread-192162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:09:04.967 [DEBUG] [Thread-192162] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:09:04.975 [DEBUG] [Thread-192162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:09:04.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:09:04.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-11-24T15:09:04.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-11-24T15:09:05.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:09:05.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:09:05.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:09:05.009 [DEBUG] [Thread-192162] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:09:13.141 [DEBUG] [Thread-192164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:09:14.831 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:09:14.832 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:09:22.623 [DEBUG] [Thread-192165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:09:28.182 [DEBUG] [Thread-192166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:09:35.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:09:35.021 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:09:35.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:09:35.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 9, 3), 24.31, 19.48, 0.0, 21.44, 22.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:09:35.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:09:03
2025-11-24T15:09:35.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:09:36.022 [DEBUG] [Thread-192167] [transport.py] [_log()] starting thread (client mode): 0xd0713a90
2025-11-24T15:09:36.031 [DEBUG] [Thread-192167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:09:36.041 [DEBUG] [Thread-192167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:09:36.042 [INFO] [Thread-192167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] client lang: <none>
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] server lang: <none>
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] kex follows: False
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] Compression: none
2025-11-24T15:09:36.045 [DEBUG] [Thread-192167] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:09:36.063 [DEBUG] [Thread-192167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:09:36.064 [DEBUG] [Thread-192167] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:09:36.064 [DEBUG] [Thread-192167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:09:36.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:09:36.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:09:36.066 [DEBUG] [Thread-192167] [transport.py] [_log()] userauth is OK
2025-11-24T15:09:36.066 [DEBUG] [Thread-192167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:09:36.067 [DEBUG] [Thread-192167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:09:36.067 [DEBUG] [Thread-192167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:09:36.067 [DEBUG] [Thread-192167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:09:36.101 [INFO] [Thread-192167] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:09:36.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:09:36.698 [DEBUG] [Thread-192167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:09:36.698 [DEBUG] [Thread-192167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:09:36.698 [DEBUG] [Thread-192167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:09:36.739 [DEBUG] [Thread-192167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:09:36.739 [DEBUG] [Thread-192167] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:09:36.740 [DEBUG] [Thread-192167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:09:36.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:09:36.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:09:36.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:09:36.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:09:36.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:09:36.758 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:09:36.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:09:36.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.547617 -999.00  +21.50  14.54     26   +1.20 1 1 1 1 1   888    0 19.65 -33.55 ----- 16.1 14.5 180.6 20.7 27.0 -27.5 26.2 -26.7 28.0 -25.5 28.8 -28.3
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.547617
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:09:36.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:09:03', tmtdew=24.31, humidity=19.48, cloud=0.0, wind=21.44, temperature=22.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:08:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:09:36.759 [DEBUG] [Thread-192167] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:09:36.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:09:36.849 [DEBUG] [Thread-192170] [transport.py] [_log()] starting thread (client mode): 0xd31507c0
2025-11-24T15:09:36.849 [DEBUG] [Thread-192170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:09:36.864 [DEBUG] [Thread-192170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:09:36.864 [INFO] [Thread-192170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] client lang: <none>
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] server lang: <none>
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] kex follows: False
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] Compression: none
2025-11-24T15:09:36.872 [DEBUG] [Thread-192170] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:09:36.927 [DEBUG] [Thread-192170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:09:36.927 [DEBUG] [Thread-192170] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:09:36.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:09:36.927 [DEBUG] [Thread-192170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:09:36.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:09:36.984 [DEBUG] [Thread-192170] [transport.py] [_log()] userauth is OK
2025-11-24T15:09:36.984 [DEBUG] [Thread-192170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:09:36.984 [DEBUG] [Thread-192170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:09:36.984 [DEBUG] [Thread-192170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:09:36.984 [DEBUG] [Thread-192170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:09:36.998 [INFO] [Thread-192170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:09:36.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:09:36.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:09:37.807 [DEBUG] [Thread-192170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:09:37.807 [DEBUG] [Thread-192170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:09:37.855 [DEBUG] [Thread-192170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:09:37.855 [DEBUG] [Thread-192170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:09:37.863 [DEBUG] [Thread-192170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:09:37.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:09:37.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-11-24T15:09:37.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-11-24T15:09:37.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:09:37.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:09:37.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:09:37.896 [DEBUG] [Thread-192170] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:09:43.228 [DEBUG] [Thread-192172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:09:58.282 [DEBUG] [Thread-192173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:10:07.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:10:07.919 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:10:07.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-11-24T15:10:08.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 9, 36), 23.42, 20.53, 0.0, 18.35, 21.32, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:10:08.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:09:36
2025-11-24T15:10:08.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:10:09.032 [DEBUG] [Thread-192174] [transport.py] [_log()] starting thread (client mode): 0xd0711330
2025-11-24T15:10:09.032 [DEBUG] [Thread-192174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:10:09.052 [DEBUG] [Thread-192174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:10:09.052 [INFO] [Thread-192174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] client lang: <none>
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] server lang: <none>
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] kex follows: False
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] Compression: none
2025-11-24T15:10:09.056 [DEBUG] [Thread-192174] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:10:09.072 [DEBUG] [Thread-192174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:10:09.072 [DEBUG] [Thread-192174] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:10:09.072 [DEBUG] [Thread-192174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:10:09.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:10:09.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:10:09.073 [DEBUG] [Thread-192174] [transport.py] [_log()] userauth is OK
2025-11-24T15:10:09.073 [DEBUG] [Thread-192174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:10:09.073 [DEBUG] [Thread-192174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:10:09.073 [DEBUG] [Thread-192174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:10:09.073 [DEBUG] [Thread-192174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:10:09.082 [INFO] [Thread-192174] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:10:09.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:10:13.325 [DEBUG] [Thread-192176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:10:14.970 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:10:14.972 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:10:15.578 [DEBUG] [Thread-192174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:10:15.578 [DEBUG] [Thread-192174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:10:15.579 [DEBUG] [Thread-192174] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:10:15.620 [DEBUG] [Thread-192174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:10:15.620 [DEBUG] [Thread-192174] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:10:15.623 [DEBUG] [Thread-192174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:10:15.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:10:15.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:10:15.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:10:15.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:10:15.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:10:15.648 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:10:15.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:10:15.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:10:15.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:10:15.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.547964 -999.00  +21.40  10.35     26   +1.20 1 1 1 1 1   888    0 19.51 -36.86 ----- 10.5 10.3 195.8 19.9 27.0 -26.8 26.2 -27.3 28.0 -25.9 28.9 -27.0
2025-11-24T15:10:15.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:10:15.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:10:15.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.547964
2025-11-24T15:10:15.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:10:15.653 [DEBUG] [Thread-192174] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:10:15.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:10:15.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:10:15.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:10:15.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:10:15.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:09:36', tmtdew=23.42, humidity=20.53, cloud=0.0, wind=18.35, temperature=21.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:09:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:10:15.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:10:15.749 [DEBUG] [Thread-192178] [transport.py] [_log()] starting thread (client mode): 0xc9b82170
2025-11-24T15:10:15.749 [DEBUG] [Thread-192178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:10:15.764 [DEBUG] [Thread-192178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:10:15.764 [INFO] [Thread-192178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:10:15.772 [DEBUG] [Thread-192178] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:10:15.772 [DEBUG] [Thread-192178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:10:15.772 [DEBUG] [Thread-192178] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:10:15.772 [DEBUG] [Thread-192178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:10:15.772 [DEBUG] [Thread-192178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:10:15.772 [DEBUG] [Thread-192178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:10:15.772 [DEBUG] [Thread-192178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:10:15.773 [DEBUG] [Thread-192178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:10:15.773 [DEBUG] [Thread-192178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:10:15.773 [DEBUG] [Thread-192178] [transport.py] [_log()] client lang: <none>
2025-11-24T15:10:15.773 [DEBUG] [Thread-192178] [transport.py] [_log()] server lang: <none>
2025-11-24T15:10:15.773 [DEBUG] [Thread-192178] [transport.py] [_log()] kex follows: False
2025-11-24T15:10:15.773 [DEBUG] [Thread-192178] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:10:15.773 [DEBUG] [Thread-192178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:10:15.773 [DEBUG] [Thread-192178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:10:15.773 [DEBUG] [Thread-192178] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:10:15.774 [DEBUG] [Thread-192178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:10:15.774 [DEBUG] [Thread-192178] [transport.py] [_log()] Compression: none
2025-11-24T15:10:15.774 [DEBUG] [Thread-192178] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:10:15.829 [DEBUG] [Thread-192178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:10:15.830 [DEBUG] [Thread-192178] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:10:15.831 [DEBUG] [Thread-192178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:10:15.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:10:15.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:10:15.885 [DEBUG] [Thread-192178] [transport.py] [_log()] userauth is OK
2025-11-24T15:10:15.886 [DEBUG] [Thread-192178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:10:15.886 [DEBUG] [Thread-192178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:10:15.886 [DEBUG] [Thread-192178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:10:15.886 [DEBUG] [Thread-192178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:10:15.905 [INFO] [Thread-192178] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:10:15.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:10:15.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:10:16.731 [DEBUG] [Thread-192178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:10:16.731 [DEBUG] [Thread-192178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:10:16.779 [DEBUG] [Thread-192178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:10:16.780 [DEBUG] [Thread-192178] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:10:16.789 [DEBUG] [Thread-192178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:10:16.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:10:16.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-11-24T15:10:16.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-11-24T15:10:16.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:10:16.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:10:16.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:10:16.824 [DEBUG] [Thread-192178] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:10:22.686 [DEBUG] [Thread-192180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:10:28.357 [DEBUG] [Thread-192181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:10:43.392 [DEBUG] [Thread-192182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:10:46.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:10:46.847 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:10:46.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-11-24T15:10:47.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 10, 40), 23.65, 20.3, 0.0, 22.62, 21.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:10:47.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:10:40
2025-11-24T15:10:47.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:10:47.954 [DEBUG] [Thread-192183] [transport.py] [_log()] starting thread (client mode): 0xd3150100
2025-11-24T15:10:47.954 [DEBUG] [Thread-192183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:10:47.973 [DEBUG] [Thread-192183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:10:47.974 [INFO] [Thread-192183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:10:47.977 [DEBUG] [Thread-192183] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:10:47.977 [DEBUG] [Thread-192183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] client lang: <none>
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] server lang: <none>
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] kex follows: False
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:10:47.978 [DEBUG] [Thread-192183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:10:47.979 [DEBUG] [Thread-192183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:10:47.979 [DEBUG] [Thread-192183] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:10:47.979 [DEBUG] [Thread-192183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:10:47.979 [DEBUG] [Thread-192183] [transport.py] [_log()] Compression: none
2025-11-24T15:10:47.979 [DEBUG] [Thread-192183] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:10:47.999 [DEBUG] [Thread-192183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:10:48.000 [DEBUG] [Thread-192183] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:10:48.001 [DEBUG] [Thread-192183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:10:48.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:10:48.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:10:48.003 [DEBUG] [Thread-192183] [transport.py] [_log()] userauth is OK
2025-11-24T15:10:48.003 [DEBUG] [Thread-192183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:10:48.003 [DEBUG] [Thread-192183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:10:48.003 [DEBUG] [Thread-192183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:10:48.004 [DEBUG] [Thread-192183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:10:48.041 [INFO] [Thread-192183] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:10:48.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:10:48.638 [DEBUG] [Thread-192183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:10:48.647 [DEBUG] [Thread-192183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:10:48.648 [DEBUG] [Thread-192183] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:10:48.680 [DEBUG] [Thread-192183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:10:48.680 [DEBUG] [Thread-192183] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:10:48.683 [DEBUG] [Thread-192183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:10:48.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:10:48.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:10:48.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:10:48.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:10:48.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:10:48.705 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:10:48.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:10:48.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:10:48.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:10:48.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.548658 -999.00  +21.60  22.43     26   +1.30 1 1 1 1 1   888    0 19.51 -34.98 ----- 21.4 22.4 138.6 32.0 27.4 -26.6 26.8 -26.6 28.3 -24.9 29.0 -27.9
2025-11-24T15:10:48.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:10:48.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:10:48.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.548658
2025-11-24T15:10:48.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:10:48.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:10:48.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:10:48.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:10:48.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:10:48.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:10:40', tmtdew=23.65, humidity=20.3, cloud=0.0, wind=22.62, temperature=21.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:10:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:10:48.709 [DEBUG] [Thread-192183] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:10:48.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:10:48.804 [DEBUG] [Thread-192186] [transport.py] [_log()] starting thread (client mode): 0xd317ebf0
2025-11-24T15:10:48.804 [DEBUG] [Thread-192186] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:10:48.819 [DEBUG] [Thread-192186] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:10:48.819 [INFO] [Thread-192186] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] client lang: <none>
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] server lang: <none>
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] kex follows: False
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:10:48.827 [DEBUG] [Thread-192186] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:10:48.828 [DEBUG] [Thread-192186] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:10:48.828 [DEBUG] [Thread-192186] [transport.py] [_log()] Compression: none
2025-11-24T15:10:48.828 [DEBUG] [Thread-192186] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:10:48.887 [DEBUG] [Thread-192186] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:10:48.887 [DEBUG] [Thread-192186] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:10:48.887 [DEBUG] [Thread-192186] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:10:48.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:10:48.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:10:48.944 [DEBUG] [Thread-192186] [transport.py] [_log()] userauth is OK
2025-11-24T15:10:48.944 [DEBUG] [Thread-192186] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:10:48.944 [DEBUG] [Thread-192186] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:10:48.945 [DEBUG] [Thread-192186] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:10:48.945 [DEBUG] [Thread-192186] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:10:48.967 [INFO] [Thread-192186] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:10:48.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:10:48.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:10:49.791 [DEBUG] [Thread-192186] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:10:49.791 [DEBUG] [Thread-192186] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:10:49.840 [DEBUG] [Thread-192186] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:10:49.840 [DEBUG] [Thread-192186] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:10:49.849 [DEBUG] [Thread-192186] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:10:49.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:10: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')
2025-11-24T15:10:49.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-11-24T15:10:49.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:10:49.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:10:49.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:10:49.885 [DEBUG] [Thread-192186] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:10:58.423 [DEBUG] [Thread-192188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:11:13.482 [DEBUG] [Thread-192189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:11:15.111 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:11:15.112 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:11:19.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:11:19.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:11:19.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-11-24T15:11:20.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 11, 13), 23.43, 20.52, 0.0, 20.26, 21.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:11:20.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:11:13
2025-11-24T15:11:20.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:11:20.987 [DEBUG] [Thread-192190] [transport.py] [_log()] starting thread (client mode): 0xd0710af0
2025-11-24T15:11:20.987 [DEBUG] [Thread-192190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:11:21.006 [DEBUG] [Thread-192190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:11:21.007 [INFO] [Thread-192190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:11:21.009 [DEBUG] [Thread-192190] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] client lang: <none>
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] server lang: <none>
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] kex follows: False
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] Compression: none
2025-11-24T15:11:21.010 [DEBUG] [Thread-192190] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:11:21.027 [DEBUG] [Thread-192190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:11:21.028 [DEBUG] [Thread-192190] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:11:21.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:11:21.029 [DEBUG] [Thread-192190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:11:21.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:11:21.031 [DEBUG] [Thread-192190] [transport.py] [_log()] userauth is OK
2025-11-24T15:11:21.031 [DEBUG] [Thread-192190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:11:21.031 [DEBUG] [Thread-192190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:11:21.032 [DEBUG] [Thread-192190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:11:21.032 [DEBUG] [Thread-192190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:11:21.056 [INFO] [Thread-192190] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:11:21.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:11:21.840 [DEBUG] [Thread-192190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:11:21.840 [DEBUG] [Thread-192190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:11:21.840 [DEBUG] [Thread-192190] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:11:21.880 [DEBUG] [Thread-192190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:11:21.881 [DEBUG] [Thread-192190] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:11:21.884 [DEBUG] [Thread-192190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:11:21.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:11:21.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:11:21.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:11:21.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:11:21.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:11:21.913 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:11:21.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:11:21.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:11:21.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:11:21.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.549006 -999.00  +21.30  18.65     26   +1.30 1 1 1 1 1   888    0 19.36 -32.92 ----- 16.2 18.6 129.6 24.0 27.3 -27.3 26.8 -26.6 28.2 -27.1 29.1 -26.9
2025-11-24T15:11:21.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:11:21.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:11:21.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.549006
2025-11-24T15:11:21.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:11:21.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:11:21.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:11:21.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:11:21.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:11:21.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:11:13', tmtdew=23.43, humidity=20.52, cloud=0.0, wind=20.26, temperature=21.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:10:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:11:21.914 [DEBUG] [Thread-192190] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:11:21.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:11:21.998 [DEBUG] [Thread-192193] [transport.py] [_log()] starting thread (client mode): 0xd317dcc0
2025-11-24T15:11:21.998 [DEBUG] [Thread-192193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:11:22.013 [DEBUG] [Thread-192193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:11:22.013 [INFO] [Thread-192193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] client lang: <none>
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] server lang: <none>
2025-11-24T15:11:22.021 [DEBUG] [Thread-192193] [transport.py] [_log()] kex follows: False
2025-11-24T15:11:22.022 [DEBUG] [Thread-192193] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:11:22.022 [DEBUG] [Thread-192193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:11:22.030 [DEBUG] [Thread-192193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:11:22.030 [DEBUG] [Thread-192193] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:11:22.030 [DEBUG] [Thread-192193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:11:22.030 [DEBUG] [Thread-192193] [transport.py] [_log()] Compression: none
2025-11-24T15:11:22.030 [DEBUG] [Thread-192193] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:11:22.079 [DEBUG] [Thread-192193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:11:22.079 [DEBUG] [Thread-192193] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:11:22.079 [DEBUG] [Thread-192193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:11:22.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:11:22.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:11:22.140 [DEBUG] [Thread-192193] [transport.py] [_log()] userauth is OK
2025-11-24T15:11:22.140 [DEBUG] [Thread-192193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:11:22.140 [DEBUG] [Thread-192193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:11:22.140 [DEBUG] [Thread-192193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:11:22.140 [DEBUG] [Thread-192193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:11:22.154 [INFO] [Thread-192193] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:11:22.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:11:22.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:11:22.973 [DEBUG] [Thread-192195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:11:23.037 [DEBUG] [Thread-192193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:11:23.037 [DEBUG] [Thread-192193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:11:23.085 [DEBUG] [Thread-192193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:11:23.085 [DEBUG] [Thread-192193] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:11:23.095 [DEBUG] [Thread-192193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:11:23.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:11:23.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:11:23.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-11-24T15:11:23.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:11:23.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:11:23.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:11:23.131 [DEBUG] [Thread-192193] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:11:28.522 [DEBUG] [Thread-192196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:11:43.572 [DEBUG] [Thread-192197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:11:53.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:11:53.147 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:11:53.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:11:53.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 11, 45), 23.5, 20.78, 0.0, 23.84, 21.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:11:53.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:11:45
2025-11-24T15:11:54.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:11:54.209 [DEBUG] [Thread-192198] [transport.py] [_log()] starting thread (client mode): 0xc9ba2a10
2025-11-24T15:11:54.209 [DEBUG] [Thread-192198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:11:54.233 [DEBUG] [Thread-192198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:11:54.234 [INFO] [Thread-192198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:11:54.238 [DEBUG] [Thread-192198] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:11:54.238 [DEBUG] [Thread-192198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:11:54.238 [DEBUG] [Thread-192198] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:11:54.238 [DEBUG] [Thread-192198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:11:54.238 [DEBUG] [Thread-192198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:11:54.239 [DEBUG] [Thread-192198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:11:54.239 [DEBUG] [Thread-192198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:11:54.239 [DEBUG] [Thread-192198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:11:54.239 [DEBUG] [Thread-192198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:11:54.239 [DEBUG] [Thread-192198] [transport.py] [_log()] client lang: <none>
2025-11-24T15:11:54.239 [DEBUG] [Thread-192198] [transport.py] [_log()] server lang: <none>
2025-11-24T15:11:54.239 [DEBUG] [Thread-192198] [transport.py] [_log()] kex follows: False
2025-11-24T15:11:54.239 [DEBUG] [Thread-192198] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:11:54.239 [DEBUG] [Thread-192198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:11:54.239 [DEBUG] [Thread-192198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:11:54.240 [DEBUG] [Thread-192198] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:11:54.240 [DEBUG] [Thread-192198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:11:54.240 [DEBUG] [Thread-192198] [transport.py] [_log()] Compression: none
2025-11-24T15:11:54.240 [DEBUG] [Thread-192198] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:11:54.258 [DEBUG] [Thread-192198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:11:54.259 [DEBUG] [Thread-192198] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:11:54.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:11:54.260 [DEBUG] [Thread-192198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:11:54.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:11:54.262 [DEBUG] [Thread-192198] [transport.py] [_log()] userauth is OK
2025-11-24T15:11:54.262 [DEBUG] [Thread-192198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:11:54.262 [DEBUG] [Thread-192198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:11:54.262 [DEBUG] [Thread-192198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:11:54.262 [DEBUG] [Thread-192198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:11:54.286 [INFO] [Thread-192198] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:11:54.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:11:54.866 [DEBUG] [Thread-192198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:11:54.866 [DEBUG] [Thread-192198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:11:54.866 [DEBUG] [Thread-192198] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:11:54.906 [DEBUG] [Thread-192198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:11:54.907 [DEBUG] [Thread-192198] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:11:54.909 [DEBUG] [Thread-192198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:11:54.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:11:54.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:11:54.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:11:54.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:11:54.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:11:54.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:11:54.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:11:54.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:11:54.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:11:54.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.549353 -999.00  +21.60  16.57     26   +1.30 1 1 1 1 1   888    0 19.40 -34.08 ----- 14.3 16.6 147.8 27.0 27.4 -27.1 26.9 -26.5 28.4 -25.6 29.1 -28.3
2025-11-24T15:11:54.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:11:54.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:11:54.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.549353
2025-11-24T15:11:54.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:11:54.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:11:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:11:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:11:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:11:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:11:45', tmtdew=23.5, humidity=20.78, cloud=0.0, wind=23.84, temperature=21.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:11:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:11:54.944 [DEBUG] [Thread-192198] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:11:55.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:11:55.038 [DEBUG] [Thread-192201] [transport.py] [_log()] starting thread (client mode): 0xd07eb0a0
2025-11-24T15:11:55.038 [DEBUG] [Thread-192201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:11:55.053 [DEBUG] [Thread-192201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:11:55.053 [INFO] [Thread-192201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:11:55.060 [DEBUG] [Thread-192201] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] client lang: <none>
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] server lang: <none>
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] kex follows: False
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] Compression: none
2025-11-24T15:11:55.061 [DEBUG] [Thread-192201] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:11:55.121 [DEBUG] [Thread-192201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:11:55.122 [DEBUG] [Thread-192201] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:11:55.122 [DEBUG] [Thread-192201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:11:55.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:11:55.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:11:55.177 [DEBUG] [Thread-192201] [transport.py] [_log()] userauth is OK
2025-11-24T15:11:55.177 [DEBUG] [Thread-192201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:11:55.177 [DEBUG] [Thread-192201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:11:55.178 [DEBUG] [Thread-192201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:11:55.178 [DEBUG] [Thread-192201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:11:55.211 [INFO] [Thread-192201] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:11:55.211 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:11:55.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:11:56.050 [DEBUG] [Thread-192201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:11:56.051 [DEBUG] [Thread-192201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:11:56.098 [DEBUG] [Thread-192201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:11:56.099 [DEBUG] [Thread-192201] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:11:56.107 [DEBUG] [Thread-192201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:11:56.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:11:56.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-11-24T15:11:56.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:11:56.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:11:56.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:11:56.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:11:56.144 [DEBUG] [Thread-192201] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:11:58.605 [DEBUG] [Thread-192203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:12:13.657 [DEBUG] [Thread-192204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:12:15.252 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:12:15.253 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:12:23.111 [DEBUG] [Thread-192205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:12:26.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:12:26.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:12:26.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-11-24T15:12:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 12, 18), 23.49, 20.83, 0.0, 30.45, 21.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:12:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:12:18
2025-11-24T15:12:27.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:12:27.226 [DEBUG] [Thread-192206] [transport.py] [_log()] starting thread (client mode): 0xd0713a00
2025-11-24T15:12:27.226 [DEBUG] [Thread-192206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:12:27.246 [DEBUG] [Thread-192206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:12:27.246 [INFO] [Thread-192206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] client lang: <none>
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] server lang: <none>
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] kex follows: False
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] Compression: none
2025-11-24T15:12:27.249 [DEBUG] [Thread-192206] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:12:27.264 [DEBUG] [Thread-192206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:12:27.264 [DEBUG] [Thread-192206] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:12:27.264 [DEBUG] [Thread-192206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:12:27.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:12:27.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:12:27.265 [DEBUG] [Thread-192206] [transport.py] [_log()] userauth is OK
2025-11-24T15:12:27.265 [DEBUG] [Thread-192206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:12:27.265 [DEBUG] [Thread-192206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:12:27.265 [DEBUG] [Thread-192206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:12:27.265 [DEBUG] [Thread-192206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:12:27.274 [INFO] [Thread-192206] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:12:27.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:12:28.051 [DEBUG] [Thread-192206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:12:28.051 [DEBUG] [Thread-192206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:12:28.051 [DEBUG] [Thread-192206] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:12:28.092 [DEBUG] [Thread-192206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:12:28.092 [DEBUG] [Thread-192206] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:12:28.094 [DEBUG] [Thread-192206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:12:28.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:12:28.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:12:28.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:12:28.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:12:28.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:12:28.111 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:12:28.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:12:28.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:12:28.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:12:28.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.549700 -999.00  +21.80  13.77     26   +1.40 1 1 1 1 1   888    0 19.86 -35.75 ----- 18.8 13.8 190.5 31.2 27.3 -27.8 26.7 -27.6 28.4 -26.8 29.2 -28.3
2025-11-24T15:12:28.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:12:28.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:12:28.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.549700
2025-11-24T15:12:28.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:12:28.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:12:28.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:12:28.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:12:28.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:12:28.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:12:18', tmtdew=23.49, humidity=20.83, cloud=0.0, wind=30.45, temperature=21.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:11:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:12:28.112 [DEBUG] [Thread-192206] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:12:28.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:12:28.199 [DEBUG] [Thread-192209] [transport.py] [_log()] starting thread (client mode): 0xd317dbd0
2025-11-24T15:12:28.199 [DEBUG] [Thread-192209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:12:28.218 [DEBUG] [Thread-192209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:12:28.218 [INFO] [Thread-192209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] client lang: <none>
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] server lang: <none>
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] kex follows: False
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:12:28.226 [DEBUG] [Thread-192209] [transport.py] [_log()] Compression: none
2025-11-24T15:12:28.227 [DEBUG] [Thread-192209] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:12:28.284 [DEBUG] [Thread-192209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:12:28.284 [DEBUG] [Thread-192209] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:12:28.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:12:28.285 [DEBUG] [Thread-192209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:12:28.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:12:28.340 [DEBUG] [Thread-192209] [transport.py] [_log()] userauth is OK
2025-11-24T15:12:28.340 [DEBUG] [Thread-192209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:12:28.340 [DEBUG] [Thread-192209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:12:28.341 [DEBUG] [Thread-192209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:12:28.341 [DEBUG] [Thread-192209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:12:28.364 [INFO] [Thread-192209] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:12:28.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:12:28.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:12:28.688 [DEBUG] [Thread-192211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:12:29.219 [DEBUG] [Thread-192209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:12:29.219 [DEBUG] [Thread-192209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:12:29.267 [DEBUG] [Thread-192209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:12:29.267 [DEBUG] [Thread-192209] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:12:29.275 [DEBUG] [Thread-192209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:12:29.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:12:29.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-11-24T15:12:29.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-11-24T15:12:29.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:12:29.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:12:29.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:12:29.305 [DEBUG] [Thread-192209] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:12:43.739 [DEBUG] [Thread-192212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:12:58.774 [DEBUG] [Thread-192213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:12:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:12:59.304 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:12:59.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-11-24T15:13:00.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 12, 50), 23.92, 19.87, 0.0, 36.66, 21.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:13:00.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:12:50
2025-11-24T15:13:00.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:13:00.494 [DEBUG] [Thread-192214] [transport.py] [_log()] starting thread (client mode): 0xd07eb2e0
2025-11-24T15:13:00.494 [DEBUG] [Thread-192214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:13:00.515 [DEBUG] [Thread-192214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:13:00.515 [INFO] [Thread-192214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:13:00.518 [DEBUG] [Thread-192214] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:13:00.518 [DEBUG] [Thread-192214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:13:00.518 [DEBUG] [Thread-192214] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:13:00.518 [DEBUG] [Thread-192214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:13:00.518 [DEBUG] [Thread-192214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] client lang: <none>
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] server lang: <none>
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] kex follows: False
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] Compression: none
2025-11-24T15:13:00.519 [DEBUG] [Thread-192214] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:13:00.534 [DEBUG] [Thread-192214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:13:00.534 [DEBUG] [Thread-192214] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:13:00.534 [DEBUG] [Thread-192214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:13:00.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:13:00.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:13:00.535 [DEBUG] [Thread-192214] [transport.py] [_log()] userauth is OK
2025-11-24T15:13:00.535 [DEBUG] [Thread-192214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:13:00.535 [DEBUG] [Thread-192214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:13:00.535 [DEBUG] [Thread-192214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:13:00.535 [DEBUG] [Thread-192214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:13:00.544 [INFO] [Thread-192214] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:13:00.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:13:01.160 [DEBUG] [Thread-192214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:13:01.160 [DEBUG] [Thread-192214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:13:01.160 [DEBUG] [Thread-192214] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:13:01.201 [DEBUG] [Thread-192214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:13:01.201 [DEBUG] [Thread-192214] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:13:01.203 [DEBUG] [Thread-192214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:13:01.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:13:01.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:13:01.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:13:01.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:13:01.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:13:01.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:13:01.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:13:01.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:13:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:13:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.550047 -999.00  +22.00  26.92     25   +1.30 1 1 1 1 1   888    0 19.11 -34.98 ----- 22.7 26.9 182.2 32.0 27.3 -28.6 26.6 -31.0 28.4 -26.3 29.0 -28.7
2025-11-24T15:13:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:13:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:13:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.550047
2025-11-24T15:13:01.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:13:01.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:13:01.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:13:01.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:13:01.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:13:01.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:12:50', tmtdew=23.92, humidity=19.87, cloud=0.0, wind=36.66, temperature=21.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:12:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:13:01.217 [DEBUG] [Thread-192214] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:13: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-11-24T15:13:01.303 [DEBUG] [Thread-192217] [transport.py] [_log()] starting thread (client mode): 0xd0713010
2025-11-24T15:13:01.303 [DEBUG] [Thread-192217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:13:01.317 [DEBUG] [Thread-192217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:13:01.317 [INFO] [Thread-192217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:13:01.324 [DEBUG] [Thread-192217] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:13:01.324 [DEBUG] [Thread-192217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:13:01.324 [DEBUG] [Thread-192217] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:13:01.324 [DEBUG] [Thread-192217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] client lang: <none>
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] server lang: <none>
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] kex follows: False
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] Compression: none
2025-11-24T15:13:01.325 [DEBUG] [Thread-192217] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:13:01.383 [DEBUG] [Thread-192217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:13:01.383 [DEBUG] [Thread-192217] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:13:01.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:13:01.384 [DEBUG] [Thread-192217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:13:01.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:13:01.441 [DEBUG] [Thread-192217] [transport.py] [_log()] userauth is OK
2025-11-24T15:13:01.441 [DEBUG] [Thread-192217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:13:01.441 [DEBUG] [Thread-192217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:13:01.441 [DEBUG] [Thread-192217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:13:01.441 [DEBUG] [Thread-192217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:13:01.458 [INFO] [Thread-192217] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:13:01.459 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:13:01.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:13:02.306 [DEBUG] [Thread-192217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:13:02.306 [DEBUG] [Thread-192217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:13:02.354 [DEBUG] [Thread-192217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:13:02.354 [DEBUG] [Thread-192217] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:13:02.362 [DEBUG] [Thread-192217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:13:02.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:13:02.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-11-24T15:13:02.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:13:02.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:13:02.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:13:02.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:13:02.393 [DEBUG] [Thread-192217] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:13:13.807 [DEBUG] [Thread-192219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:13:15.391 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:13:15.391 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:13:23.206 [DEBUG] [Thread-192220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:13:28.866 [DEBUG] [Thread-192221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:13:32.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:13:32.411 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:13:32.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-11-24T15:13:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 13, 23), 23.94, 19.84, 0.0, 35.22, 21.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:13:33.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:13:23
2025-11-24T15:13:33.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:13:33.520 [DEBUG] [Thread-192222] [transport.py] [_log()] starting thread (client mode): 0xc9b83460
2025-11-24T15:13:33.520 [DEBUG] [Thread-192222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:13:33.540 [DEBUG] [Thread-192222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:13:33.540 [INFO] [Thread-192222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:13:33.543 [DEBUG] [Thread-192222] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:13:33.543 [DEBUG] [Thread-192222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:13:33.543 [DEBUG] [Thread-192222] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:13:33.543 [DEBUG] [Thread-192222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:13:33.543 [DEBUG] [Thread-192222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:13:33.543 [DEBUG] [Thread-192222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:13:33.543 [DEBUG] [Thread-192222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] client lang: <none>
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] server lang: <none>
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] kex follows: False
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] Compression: none
2025-11-24T15:13:33.544 [DEBUG] [Thread-192222] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:13:33.562 [DEBUG] [Thread-192222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:13:33.569 [DEBUG] [Thread-192222] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:13:33.569 [DEBUG] [Thread-192222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:13:33.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:13:33.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:13:33.572 [DEBUG] [Thread-192222] [transport.py] [_log()] userauth is OK
2025-11-24T15:13:33.572 [DEBUG] [Thread-192222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:13:33.572 [DEBUG] [Thread-192222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:13:33.572 [DEBUG] [Thread-192222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:13:33.572 [DEBUG] [Thread-192222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:13:33.597 [INFO] [Thread-192222] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:13:33.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:13:34.360 [DEBUG] [Thread-192222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:13:34.361 [DEBUG] [Thread-192222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:13:34.361 [DEBUG] [Thread-192222] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:13:34.401 [DEBUG] [Thread-192222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:13:34.402 [DEBUG] [Thread-192222] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:13:34.405 [DEBUG] [Thread-192222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:13:34.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:13:34.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:13:34.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:13:34.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:13:34.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:13:34.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:13:34.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:13:34.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:13:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:13:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.550741 -999.00  +21.60  26.94     25   +1.10 1 1 1 1 1   888    0 19.04 -35.12 ----- 24.4 26.9 169.2 38.3 27.2 -27.9 26.6 -26.9 28.1 -25.7 29.1 -28.0
2025-11-24T15:13:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:13:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:13:34.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.550741
2025-11-24T15:13:34.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:13:34.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:13:34.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:13:34.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:13:34.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:13:34.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:13:23', tmtdew=23.94, humidity=19.84, cloud=0.0, wind=35.22, temperature=21.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:13:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:13:34.436 [DEBUG] [Thread-192222] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:13:34.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:13:34.531 [DEBUG] [Thread-192225] [transport.py] [_log()] starting thread (client mode): 0xd07fba30
2025-11-24T15:13:34.531 [DEBUG] [Thread-192225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:13:34.546 [DEBUG] [Thread-192225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:13:34.546 [INFO] [Thread-192225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] client lang: <none>
2025-11-24T15:13:34.554 [DEBUG] [Thread-192225] [transport.py] [_log()] server lang: <none>
2025-11-24T15:13:34.555 [DEBUG] [Thread-192225] [transport.py] [_log()] kex follows: False
2025-11-24T15:13:34.555 [DEBUG] [Thread-192225] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:13:34.555 [DEBUG] [Thread-192225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:13:34.555 [DEBUG] [Thread-192225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:13:34.555 [DEBUG] [Thread-192225] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:13:34.555 [DEBUG] [Thread-192225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:13:34.555 [DEBUG] [Thread-192225] [transport.py] [_log()] Compression: none
2025-11-24T15:13:34.555 [DEBUG] [Thread-192225] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:13:34.613 [DEBUG] [Thread-192225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:13:34.614 [DEBUG] [Thread-192225] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:13:34.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:13:34.615 [DEBUG] [Thread-192225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:13:34.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:13:34.669 [DEBUG] [Thread-192225] [transport.py] [_log()] userauth is OK
2025-11-24T15:13:34.669 [DEBUG] [Thread-192225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:13:34.669 [DEBUG] [Thread-192225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:13:34.669 [DEBUG] [Thread-192225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:13:34.669 [DEBUG] [Thread-192225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:13:34.688 [INFO] [Thread-192225] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:13:34.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:13:34.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:13:35.522 [DEBUG] [Thread-192225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:13:35.523 [DEBUG] [Thread-192225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:13:35.569 [DEBUG] [Thread-192225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:13:35.569 [DEBUG] [Thread-192225] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:13:35.578 [DEBUG] [Thread-192225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:13:35.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:13:35.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:13:35.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-11-24T15:13:35.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:13:35.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:13:35.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:13:35.613 [DEBUG] [Thread-192225] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:13:43.898 [DEBUG] [Thread-192227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:13:58.947 [DEBUG] [Thread-192228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:14:05.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:14:05.636 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:14:05.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-11-24T15:14:06.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 13, 55), 23.84, 20.32, 0.0, 30.38, 21.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:14:06.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:13:55
2025-11-24T15:14:06.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:14:06.688 [DEBUG] [Thread-192229] [transport.py] [_log()] starting thread (client mode): 0xd07fa140
2025-11-24T15:14:06.688 [DEBUG] [Thread-192229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:14:06.703 [DEBUG] [Thread-192229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:14:06.703 [INFO] [Thread-192229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:14:06.704 [DEBUG] [Thread-192229] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:14:06.704 [DEBUG] [Thread-192229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] client lang: <none>
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] server lang: <none>
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] kex follows: False
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] Compression: none
2025-11-24T15:14:06.705 [DEBUG] [Thread-192229] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:14:06.717 [DEBUG] [Thread-192229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:14:06.717 [DEBUG] [Thread-192229] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:14:06.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:14:06.718 [DEBUG] [Thread-192229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:14:06.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:14:06.719 [DEBUG] [Thread-192229] [transport.py] [_log()] userauth is OK
2025-11-24T15:14:06.719 [DEBUG] [Thread-192229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:14:06.719 [DEBUG] [Thread-192229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:14:06.719 [DEBUG] [Thread-192229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:14:06.719 [DEBUG] [Thread-192229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:14:06.738 [INFO] [Thread-192229] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:14:06.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:14:07.318 [DEBUG] [Thread-192229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:14:07.318 [DEBUG] [Thread-192229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:14:07.318 [DEBUG] [Thread-192229] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:14:07.359 [DEBUG] [Thread-192229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:14:07.359 [DEBUG] [Thread-192229] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:14:07.361 [DEBUG] [Thread-192229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:14:07.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:14:07.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:14:07.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:14:07.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:14:07.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:14:07.376 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:14:07.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:14:07.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:14:07.385 [DEBUG] [Thread-192229] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.551089 -999.00  +21.70  23.94     25   +1.10 1 1 1 1 1   888    0 19.64 -32.90 ----- 25.5 23.9 158.2 35.0 27.2 -28.2 26.4 -28.9 28.2 -26.6 29.0 -29.2
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.551089
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:14:07.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:13:55', tmtdew=23.84, humidity=20.32, cloud=0.0, wind=30.38, temperature=21.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:13:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:14:07.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:14:07.468 [DEBUG] [Thread-192232] [transport.py] [_log()] starting thread (client mode): 0xd317e830
2025-11-24T15:14:07.468 [DEBUG] [Thread-192232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:14:07.485 [DEBUG] [Thread-192232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:14:07.486 [INFO] [Thread-192232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:14:07.493 [DEBUG] [Thread-192232] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:14:07.494 [DEBUG] [Thread-192232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:14:07.494 [DEBUG] [Thread-192232] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:14:07.494 [DEBUG] [Thread-192232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:14:07.494 [DEBUG] [Thread-192232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:14:07.494 [DEBUG] [Thread-192232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:14:07.494 [DEBUG] [Thread-192232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:14:07.494 [DEBUG] [Thread-192232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:14:07.494 [DEBUG] [Thread-192232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:14:07.494 [DEBUG] [Thread-192232] [transport.py] [_log()] client lang: <none>
2025-11-24T15:14:07.494 [DEBUG] [Thread-192232] [transport.py] [_log()] server lang: <none>
2025-11-24T15:14:07.495 [DEBUG] [Thread-192232] [transport.py] [_log()] kex follows: False
2025-11-24T15:14:07.495 [DEBUG] [Thread-192232] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:14:07.495 [DEBUG] [Thread-192232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:14:07.495 [DEBUG] [Thread-192232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:14:07.495 [DEBUG] [Thread-192232] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:14:07.495 [DEBUG] [Thread-192232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:14:07.495 [DEBUG] [Thread-192232] [transport.py] [_log()] Compression: none
2025-11-24T15:14:07.495 [DEBUG] [Thread-192232] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:14:07.553 [DEBUG] [Thread-192232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:14:07.553 [DEBUG] [Thread-192232] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:14:07.554 [DEBUG] [Thread-192232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:14:07.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:14:07.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:14:07.613 [DEBUG] [Thread-192232] [transport.py] [_log()] userauth is OK
2025-11-24T15:14:07.614 [DEBUG] [Thread-192232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:14:07.614 [DEBUG] [Thread-192232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:14:07.614 [DEBUG] [Thread-192232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:14:07.614 [DEBUG] [Thread-192232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:14:07.639 [INFO] [Thread-192232] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:14:07.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:14:07.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:14:08.564 [DEBUG] [Thread-192232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:14:08.565 [DEBUG] [Thread-192232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:14:08.612 [DEBUG] [Thread-192232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:14:08.613 [DEBUG] [Thread-192232] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:14:08.621 [DEBUG] [Thread-192232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:14:08.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:14:08.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:14:08.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:14:08.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:14:08.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:14:08.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:14:08.660 [DEBUG] [Thread-192232] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:14:13.991 [DEBUG] [Thread-192234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:14:15.539 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:14:15.540 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:14:23.460 [DEBUG] [Thread-192235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:14:29.042 [DEBUG] [Thread-192236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:14:38.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:14:38.682 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:14:38.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-11-24T15:14:39.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 14, 27), 23.89, 20.29, 0.0, 32.06, 21.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:14:39.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:14:27
2025-11-24T15:14:39.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:14:39.782 [DEBUG] [Thread-192237] [transport.py] [_log()] starting thread (client mode): 0xd317ee30
2025-11-24T15:14:39.783 [DEBUG] [Thread-192237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:14:39.794 [DEBUG] [Thread-192237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:14:39.794 [INFO] [Thread-192237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] client lang: <none>
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] server lang: <none>
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] kex follows: False
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] Compression: none
2025-11-24T15:14:39.796 [DEBUG] [Thread-192237] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:14:39.804 [DEBUG] [Thread-192237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:14:39.804 [DEBUG] [Thread-192237] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:14:39.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:14:39.804 [DEBUG] [Thread-192237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:14:39.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:14:39.805 [DEBUG] [Thread-192237] [transport.py] [_log()] userauth is OK
2025-11-24T15:14:39.805 [DEBUG] [Thread-192237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:14:39.805 [DEBUG] [Thread-192237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:14:39.805 [DEBUG] [Thread-192237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:14:39.805 [DEBUG] [Thread-192237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:14:39.823 [INFO] [Thread-192237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:14:39.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:14:40.382 [DEBUG] [Thread-192237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:14:40.382 [DEBUG] [Thread-192237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:14:40.382 [DEBUG] [Thread-192237] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:14:40.423 [DEBUG] [Thread-192237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:14:40.423 [DEBUG] [Thread-192237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:14:40.424 [DEBUG] [Thread-192237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:14:40.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:14:40.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:14:40.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:14:40.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:14:40.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:14:40.442 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:14:40.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.551089 -999.00  +21.70  23.94     25   +1.10 1 1 1 1 1   888    0 19.64 -32.90 ----- 25.5 23.9 158.2 35.0 27.2 -28.2 26.4 -28.9 28.2 -26.6 29.0 -29.2
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.551089
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:14:40.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:14:27', tmtdew=23.89, humidity=20.29, cloud=0.0, wind=32.06, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:13:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:14:40.443 [DEBUG] [Thread-192237] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:14:40.523 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:14:40.534 [DEBUG] [Thread-192240] [transport.py] [_log()] starting thread (client mode): 0xc9b813c0
2025-11-24T15:14:40.535 [DEBUG] [Thread-192240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:14:40.549 [DEBUG] [Thread-192240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:14:40.549 [INFO] [Thread-192240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:14:40.557 [DEBUG] [Thread-192240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:14:40.557 [DEBUG] [Thread-192240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:14:40.557 [DEBUG] [Thread-192240] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:14:40.557 [DEBUG] [Thread-192240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:14:40.557 [DEBUG] [Thread-192240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:14:40.557 [DEBUG] [Thread-192240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:14:40.557 [DEBUG] [Thread-192240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:14:40.557 [DEBUG] [Thread-192240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:14:40.557 [DEBUG] [Thread-192240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:14:40.558 [DEBUG] [Thread-192240] [transport.py] [_log()] client lang: <none>
2025-11-24T15:14:40.558 [DEBUG] [Thread-192240] [transport.py] [_log()] server lang: <none>
2025-11-24T15:14:40.558 [DEBUG] [Thread-192240] [transport.py] [_log()] kex follows: False
2025-11-24T15:14:40.558 [DEBUG] [Thread-192240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:14:40.558 [DEBUG] [Thread-192240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:14:40.558 [DEBUG] [Thread-192240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:14:40.558 [DEBUG] [Thread-192240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:14:40.558 [DEBUG] [Thread-192240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:14:40.558 [DEBUG] [Thread-192240] [transport.py] [_log()] Compression: none
2025-11-24T15:14:40.558 [DEBUG] [Thread-192240] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:14:40.615 [DEBUG] [Thread-192240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:14:40.615 [DEBUG] [Thread-192240] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:14:40.615 [DEBUG] [Thread-192240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:14:40.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:14:40.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:14:40.672 [DEBUG] [Thread-192240] [transport.py] [_log()] userauth is OK
2025-11-24T15:14:40.673 [DEBUG] [Thread-192240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:14:40.673 [DEBUG] [Thread-192240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:14:40.673 [DEBUG] [Thread-192240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:14:40.673 [DEBUG] [Thread-192240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:14:40.691 [INFO] [Thread-192240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:14:40.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:14:40.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:14:41.509 [DEBUG] [Thread-192240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:14:41.509 [DEBUG] [Thread-192240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:14:41.557 [DEBUG] [Thread-192240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:14:41.557 [DEBUG] [Thread-192240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:14:41.567 [DEBUG] [Thread-192240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:14:41.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:14:41.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-11-24T15:14:41.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-11-24T15:14:41.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:14:41.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:14:41.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:14:41.600 [DEBUG] [Thread-192240] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:14:44.074 [DEBUG] [Thread-192242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:14:59.111 [DEBUG] [Thread-192243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:15:11.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:15:11.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:15:11.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-11-24T15:15:12.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 14, 27), 23.89, 20.29, 0.0, 32.06, 21.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:15:12.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:14:27
2025-11-24T15:15:12.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:15:12.751 [DEBUG] [Thread-192244] [transport.py] [_log()] starting thread (client mode): 0xd317e830
2025-11-24T15:15:12.751 [DEBUG] [Thread-192244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:15:12.764 [DEBUG] [Thread-192244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:15:12.765 [INFO] [Thread-192244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:15:12.768 [DEBUG] [Thread-192244] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:15:12.768 [DEBUG] [Thread-192244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:15:12.768 [DEBUG] [Thread-192244] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:15:12.769 [DEBUG] [Thread-192244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:15:12.769 [DEBUG] [Thread-192244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:15:12.769 [DEBUG] [Thread-192244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:15:12.769 [DEBUG] [Thread-192244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:15:12.769 [DEBUG] [Thread-192244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:15:12.769 [DEBUG] [Thread-192244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:15:12.769 [DEBUG] [Thread-192244] [transport.py] [_log()] client lang: <none>
2025-11-24T15:15:12.769 [DEBUG] [Thread-192244] [transport.py] [_log()] server lang: <none>
2025-11-24T15:15:12.769 [DEBUG] [Thread-192244] [transport.py] [_log()] kex follows: False
2025-11-24T15:15:12.769 [DEBUG] [Thread-192244] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:15:12.770 [DEBUG] [Thread-192244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:15:12.770 [DEBUG] [Thread-192244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:15:12.770 [DEBUG] [Thread-192244] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:15:12.770 [DEBUG] [Thread-192244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:15:12.770 [DEBUG] [Thread-192244] [transport.py] [_log()] Compression: none
2025-11-24T15:15:12.770 [DEBUG] [Thread-192244] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:15:12.801 [DEBUG] [Thread-192244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:15:12.807 [DEBUG] [Thread-192244] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:15:12.809 [DEBUG] [Thread-192244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:15:12.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:15:12.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:15:12.815 [DEBUG] [Thread-192244] [transport.py] [_log()] userauth is OK
2025-11-24T15:15:12.815 [DEBUG] [Thread-192244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:15:12.815 [DEBUG] [Thread-192244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:15:12.815 [DEBUG] [Thread-192244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:15:12.815 [DEBUG] [Thread-192244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:15:12.838 [INFO] [Thread-192244] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:15:12.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:15:13.397 [DEBUG] [Thread-192244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:15:13.405 [DEBUG] [Thread-192244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:15:13.406 [DEBUG] [Thread-192244] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:15:13.438 [DEBUG] [Thread-192244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:15:13.438 [DEBUG] [Thread-192244] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:15:13.441 [DEBUG] [Thread-192244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:15:13.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:15:13.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:15:13.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:15:13.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:15:13.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:15:13.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:15:13.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:15:13.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:15:13.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:15:13.462 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-11-24T15:15:13.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:14:27', tmtdew=23.89, humidity=20.29, cloud=0.0, wind=32.06, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:15:13.466 [DEBUG] [Thread-192244] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:15:13.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:15:13.545 [DEBUG] [Thread-192247] [transport.py] [_log()] starting thread (client mode): 0xc9b6c9a0
2025-11-24T15:15:13.545 [DEBUG] [Thread-192247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:15:13.560 [DEBUG] [Thread-192247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:15:13.560 [INFO] [Thread-192247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:15:13.568 [DEBUG] [Thread-192247] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:15:13.568 [DEBUG] [Thread-192247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:15:13.568 [DEBUG] [Thread-192247] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:15:13.568 [DEBUG] [Thread-192247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:15:13.568 [DEBUG] [Thread-192247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:15:13.568 [DEBUG] [Thread-192247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:15:13.568 [DEBUG] [Thread-192247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:15:13.568 [DEBUG] [Thread-192247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:15:13.568 [DEBUG] [Thread-192247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:15:13.569 [DEBUG] [Thread-192247] [transport.py] [_log()] client lang: <none>
2025-11-24T15:15:13.569 [DEBUG] [Thread-192247] [transport.py] [_log()] server lang: <none>
2025-11-24T15:15:13.569 [DEBUG] [Thread-192247] [transport.py] [_log()] kex follows: False
2025-11-24T15:15:13.569 [DEBUG] [Thread-192247] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:15:13.569 [DEBUG] [Thread-192247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:15:13.569 [DEBUG] [Thread-192247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:15:13.569 [DEBUG] [Thread-192247] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:15:13.569 [DEBUG] [Thread-192247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:15:13.569 [DEBUG] [Thread-192247] [transport.py] [_log()] Compression: none
2025-11-24T15:15:13.569 [DEBUG] [Thread-192247] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:15:13.626 [DEBUG] [Thread-192247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:15:13.642 [DEBUG] [Thread-192247] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:15:13.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:15:13.643 [DEBUG] [Thread-192247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:15:13.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:15:13.685 [DEBUG] [Thread-192247] [transport.py] [_log()] userauth is OK
2025-11-24T15:15:13.685 [DEBUG] [Thread-192247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:15:13.685 [DEBUG] [Thread-192247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:15:13.685 [DEBUG] [Thread-192247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:15:13.685 [DEBUG] [Thread-192247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:15:13.704 [INFO] [Thread-192247] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:15:13.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:15:13.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:15:14.142 [DEBUG] [Thread-192249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:15:14.534 [DEBUG] [Thread-192247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:15:14.535 [DEBUG] [Thread-192247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:15:14.573 [DEBUG] [Thread-192247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:15:14.574 [DEBUG] [Thread-192247] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:15:14.583 [DEBUG] [Thread-192247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:15:14.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:15:14.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-11-24T15:15:14.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-11-24T15:15:14.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:15:14.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:15:14.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:15:14.621 [DEBUG] [Thread-192247] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:15:15.692 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:15:15.693 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:15:23.818 [DEBUG] [Thread-192250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:15:29.244 [DEBUG] [Thread-192251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:15:44.272 [DEBUG] [Thread-192252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:15:44.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:15:44.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:15:44.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-11-24T15:15:45.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 15, 32), 24.35, 19.65, 0.0, 24.97, 22.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:15:45.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:15:32
2025-11-24T15:15:45.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:15:45.696 [DEBUG] [Thread-192253] [transport.py] [_log()] starting thread (client mode): 0xd07a8c10
2025-11-24T15:15:45.696 [DEBUG] [Thread-192253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:15:45.716 [DEBUG] [Thread-192253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:15:45.717 [INFO] [Thread-192253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:15:45.720 [DEBUG] [Thread-192253] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:15:45.720 [DEBUG] [Thread-192253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:15:45.720 [DEBUG] [Thread-192253] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:15:45.720 [DEBUG] [Thread-192253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:15:45.720 [DEBUG] [Thread-192253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:15:45.721 [DEBUG] [Thread-192253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:15:45.721 [DEBUG] [Thread-192253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:15:45.721 [DEBUG] [Thread-192253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:15:45.721 [DEBUG] [Thread-192253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:15:45.721 [DEBUG] [Thread-192253] [transport.py] [_log()] client lang: <none>
2025-11-24T15:15:45.721 [DEBUG] [Thread-192253] [transport.py] [_log()] server lang: <none>
2025-11-24T15:15:45.721 [DEBUG] [Thread-192253] [transport.py] [_log()] kex follows: False
2025-11-24T15:15:45.721 [DEBUG] [Thread-192253] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:15:45.721 [DEBUG] [Thread-192253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:15:45.722 [DEBUG] [Thread-192253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:15:45.722 [DEBUG] [Thread-192253] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:15:45.722 [DEBUG] [Thread-192253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:15:45.722 [DEBUG] [Thread-192253] [transport.py] [_log()] Compression: none
2025-11-24T15:15:45.722 [DEBUG] [Thread-192253] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:15:45.740 [DEBUG] [Thread-192253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:15:45.741 [DEBUG] [Thread-192253] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:15:45.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:15:45.742 [DEBUG] [Thread-192253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:15:45.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:15:45.744 [DEBUG] [Thread-192253] [transport.py] [_log()] userauth is OK
2025-11-24T15:15:45.744 [DEBUG] [Thread-192253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:15:45.744 [DEBUG] [Thread-192253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:15:45.744 [DEBUG] [Thread-192253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:15:45.744 [DEBUG] [Thread-192253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:15:45.768 [INFO] [Thread-192253] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:15:45.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:15:46.363 [DEBUG] [Thread-192253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:15:46.363 [DEBUG] [Thread-192253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:15:46.363 [DEBUG] [Thread-192253] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:15:46.404 [DEBUG] [Thread-192253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:15:46.405 [DEBUG] [Thread-192253] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:15:46.407 [DEBUG] [Thread-192253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:15:46.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:15:46.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:15:46.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:15:46.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:15:46.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:15:46.429 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:15:46.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:15:46.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:15:46.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:15:46.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.552130 -999.00  +21.70  25.96     25   +1.00 1 1 1 1 1   888    0 20.08 -23.91 ----- 21.1 26.0 171.2 34.0 27.3 -27.8 26.6 -28.2 28.2 -25.6 29.0 -28.0
2025-11-24T15:15:46.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:15:46.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:15:46.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.552130
2025-11-24T15:15:46.436 [DEBUG] [Thread-192253] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:15:46.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:15:46.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:15:46.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:15:46.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:15:46.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:15:46.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:15:32', tmtdew=24.35, humidity=19.65, cloud=0.0, wind=24.97, temperature=22.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:15:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:15:46.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:15:46.548 [DEBUG] [Thread-192256] [transport.py] [_log()] starting thread (client mode): 0xd07aa5f0
2025-11-24T15:15:46.548 [DEBUG] [Thread-192256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:15:46.564 [DEBUG] [Thread-192256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:15:46.564 [INFO] [Thread-192256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:15:46.572 [DEBUG] [Thread-192256] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:15:46.572 [DEBUG] [Thread-192256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:15:46.572 [DEBUG] [Thread-192256] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:15:46.572 [DEBUG] [Thread-192256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:15:46.572 [DEBUG] [Thread-192256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:15:46.573 [DEBUG] [Thread-192256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:15:46.573 [DEBUG] [Thread-192256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:15:46.573 [DEBUG] [Thread-192256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:15:46.573 [DEBUG] [Thread-192256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:15:46.573 [DEBUG] [Thread-192256] [transport.py] [_log()] client lang: <none>
2025-11-24T15:15:46.573 [DEBUG] [Thread-192256] [transport.py] [_log()] server lang: <none>
2025-11-24T15:15:46.573 [DEBUG] [Thread-192256] [transport.py] [_log()] kex follows: False
2025-11-24T15:15:46.573 [DEBUG] [Thread-192256] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:15:46.574 [DEBUG] [Thread-192256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:15:46.574 [DEBUG] [Thread-192256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:15:46.574 [DEBUG] [Thread-192256] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:15:46.574 [DEBUG] [Thread-192256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:15:46.574 [DEBUG] [Thread-192256] [transport.py] [_log()] Compression: none
2025-11-24T15:15:46.574 [DEBUG] [Thread-192256] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:15:46.630 [DEBUG] [Thread-192256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:15:46.631 [DEBUG] [Thread-192256] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:15:46.632 [DEBUG] [Thread-192256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:15:46.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:15:46.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:15:46.689 [DEBUG] [Thread-192256] [transport.py] [_log()] userauth is OK
2025-11-24T15:15:46.690 [DEBUG] [Thread-192256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:15:46.690 [DEBUG] [Thread-192256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:15:46.690 [DEBUG] [Thread-192256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:15:46.690 [DEBUG] [Thread-192256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:15:46.710 [INFO] [Thread-192256] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:15:46.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:15:46.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:15:47.543 [DEBUG] [Thread-192256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:15:47.543 [DEBUG] [Thread-192256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:15:47.591 [DEBUG] [Thread-192256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:15:47.591 [DEBUG] [Thread-192256] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:15:47.599 [DEBUG] [Thread-192256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:15:47.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:15:47.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:15:47.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:15:47.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:15:47.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:15:47.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:15:47.639 [DEBUG] [Thread-192256] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:15:59.302 [DEBUG] [Thread-192258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:16:14.346 [DEBUG] [Thread-192259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:16:15.834 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:16:15.835 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:16:17.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:16:17.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:16:17.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-11-24T15:16:18.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 16, 5), 24.53, 19.44, 0.0, 25.48, 22.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:16:18.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:16:05
2025-11-24T15:16:18.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:16:18.793 [DEBUG] [Thread-192260] [transport.py] [_log()] starting thread (client mode): 0xd07a97b0
2025-11-24T15:16:18.793 [DEBUG] [Thread-192260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:16:18.814 [DEBUG] [Thread-192260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:16:18.814 [INFO] [Thread-192260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] client lang: <none>
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] server lang: <none>
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] kex follows: False
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:16:18.815 [DEBUG] [Thread-192260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:16:18.816 [DEBUG] [Thread-192260] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:16:18.816 [DEBUG] [Thread-192260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:16:18.816 [DEBUG] [Thread-192260] [transport.py] [_log()] Compression: none
2025-11-24T15:16:18.816 [DEBUG] [Thread-192260] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:16:18.822 [DEBUG] [Thread-192260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:16:18.823 [DEBUG] [Thread-192260] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:16:18.823 [DEBUG] [Thread-192260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:16:18.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:16:18.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:16:18.823 [DEBUG] [Thread-192260] [transport.py] [_log()] userauth is OK
2025-11-24T15:16:19.040 [DEBUG] [Thread-192260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:16:19.040 [DEBUG] [Thread-192260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:16:19.040 [DEBUG] [Thread-192260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:16:19.041 [DEBUG] [Thread-192260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:16:19.056 [INFO] [Thread-192260] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:16:19.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:16:19.659 [DEBUG] [Thread-192260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:16:19.659 [DEBUG] [Thread-192260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:16:19.659 [DEBUG] [Thread-192260] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:16:19.700 [DEBUG] [Thread-192260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:16:19.700 [DEBUG] [Thread-192260] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:16:19.703 [DEBUG] [Thread-192260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:16:19.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:16:19.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:16:19.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:16:19.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:16:19.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:16:19.717 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:16:19.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:16:19.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:16:19.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:16:19.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.552478 -999.00  +21.60  23.52     25   +1.10 1 1 1 1 1   888    0 19.95 -18.65 ----- 20.3 23.5 175.5 33.0 27.3 -27.7 26.6 -29.1 28.1 -26.1 28.9 -28.5
2025-11-24T15:16:19.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:16:19.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:16:19.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.552478
2025-11-24T15:16:19.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:16:19.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:16:19.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:16:19.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:16:19.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:16:19.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:16:05', tmtdew=24.53, humidity=19.44, cloud=0.0, wind=25.48, temperature=22.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:15:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:16:19.718 [DEBUG] [Thread-192260] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:16:19.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:16:19.805 [DEBUG] [Thread-192263] [transport.py] [_log()] starting thread (client mode): 0xd07aa530
2025-11-24T15:16:19.805 [DEBUG] [Thread-192263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:16:19.820 [DEBUG] [Thread-192263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:16:19.820 [INFO] [Thread-192263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] client lang: <none>
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] server lang: <none>
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] kex follows: False
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] Compression: none
2025-11-24T15:16:19.828 [DEBUG] [Thread-192263] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:16:19.883 [DEBUG] [Thread-192263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:16:19.883 [DEBUG] [Thread-192263] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:16:19.883 [DEBUG] [Thread-192263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:16:19.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:16:19.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:16:19.940 [DEBUG] [Thread-192263] [transport.py] [_log()] userauth is OK
2025-11-24T15:16:19.940 [DEBUG] [Thread-192263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:16:19.940 [DEBUG] [Thread-192263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:16:19.940 [DEBUG] [Thread-192263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:16:19.940 [DEBUG] [Thread-192263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:16:19.954 [INFO] [Thread-192263] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:16:19.954 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:16:19.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:16:20.768 [DEBUG] [Thread-192263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:16:20.769 [DEBUG] [Thread-192263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:16:20.817 [DEBUG] [Thread-192263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:16:20.817 [DEBUG] [Thread-192263] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:16:20.826 [DEBUG] [Thread-192263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:16:20.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:16:20.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-11-24T15:16:20.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-11-24T15:16:20.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:16:20.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:16:20.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:16:20.863 [DEBUG] [Thread-192263] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:16:23.955 [DEBUG] [Thread-192265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:16:29.375 [DEBUG] [Thread-192266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:16:44.431 [DEBUG] [Thread-192267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:16:50.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:16:50.864 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:16:50.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-11-24T15:16:51.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 16, 37), 23.76, 20.14, 0.0, 23.55, 21.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:16:51.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:16:37
2025-11-24T15:16:51.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:16:52.119 [DEBUG] [Thread-192268] [transport.py] [_log()] starting thread (client mode): 0xd07ab4c0
2025-11-24T15:16:52.119 [DEBUG] [Thread-192268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:16:52.138 [DEBUG] [Thread-192268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:16:52.138 [INFO] [Thread-192268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] client lang: <none>
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] server lang: <none>
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] kex follows: False
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] Compression: none
2025-11-24T15:16:52.142 [DEBUG] [Thread-192268] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:16:52.160 [DEBUG] [Thread-192268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:16:52.161 [DEBUG] [Thread-192268] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:16:52.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:16:52.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:16:52.162 [DEBUG] [Thread-192268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:16:52.162 [DEBUG] [Thread-192268] [transport.py] [_log()] userauth is OK
2025-11-24T15:16:52.162 [DEBUG] [Thread-192268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:16:52.162 [DEBUG] [Thread-192268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:16:52.162 [DEBUG] [Thread-192268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:16:52.162 [DEBUG] [Thread-192268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:16:52.181 [INFO] [Thread-192268] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:16:52.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:16:52.792 [DEBUG] [Thread-192268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:16:52.792 [DEBUG] [Thread-192268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:16:52.792 [DEBUG] [Thread-192268] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:16:52.833 [DEBUG] [Thread-192268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:16:52.833 [DEBUG] [Thread-192268] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:16:52.836 [DEBUG] [Thread-192268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:16:52.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:16:52.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:16:52.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:16:52.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:16:52.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:16:52.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:16:52.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:16:52.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:16:52.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:16:52.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.552825 -999.00  +21.60  14.57     25   +1.10 1 1 1 1 1   888    0 19.88 -14.13 ----- 19.1 14.6 187.2 33.1 27.1 -28.7 26.2 -28.6 28.1 -27.5 29.0 -29.3
2025-11-24T15:16:52.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:16:52.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:16:52.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.552825
2025-11-24T15:16:52.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:16:52.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:16:52.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:16:52.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:16:52.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:16:52.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:16:37', tmtdew=23.76, humidity=20.14, cloud=0.0, wind=23.55, temperature=21.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:16:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:16:52.853 [DEBUG] [Thread-192268] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:16:52.928 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:16:52.940 [DEBUG] [Thread-192271] [transport.py] [_log()] starting thread (client mode): 0xd07abe80
2025-11-24T15:16:52.940 [DEBUG] [Thread-192271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:16:52.954 [DEBUG] [Thread-192271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:16:52.954 [INFO] [Thread-192271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] client lang: <none>
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] server lang: <none>
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] kex follows: False
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] Compression: none
2025-11-24T15:16:52.962 [DEBUG] [Thread-192271] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:16:53.019 [DEBUG] [Thread-192271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:16:53.019 [DEBUG] [Thread-192271] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:16:53.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:16:53.020 [DEBUG] [Thread-192271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:16:53.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:16:53.076 [DEBUG] [Thread-192271] [transport.py] [_log()] userauth is OK
2025-11-24T15:16:53.076 [DEBUG] [Thread-192271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:16:53.076 [DEBUG] [Thread-192271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:16:53.076 [DEBUG] [Thread-192271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:16:53.076 [DEBUG] [Thread-192271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:16:53.090 [INFO] [Thread-192271] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:16:53.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:16:53.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:16:53.899 [DEBUG] [Thread-192271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:16:53.899 [DEBUG] [Thread-192271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:16:53.947 [DEBUG] [Thread-192271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:16:53.947 [DEBUG] [Thread-192271] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:16:53.955 [DEBUG] [Thread-192271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:16:53.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:16:53.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-11-24T15:16:53.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-11-24T15:16:53.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:16:53.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:16:53.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:16:53.987 [DEBUG] [Thread-192271] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:16:59.460 [DEBUG] [Thread-192273 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:17:14.515 [DEBUG] [Thread-192274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:17:15.986 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:17:15.989 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:17:23.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:17:23.982 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:17:23.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-11-24T15:17:24.110 [DEBUG] [Thread-192275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:17:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 17, 10), 23.7, 20.19, 0.0, 20.91, 21.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:17:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:17:10
2025-11-24T15:17:25.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:17:25.166 [DEBUG] [Thread-192276] [transport.py] [_log()] starting thread (client mode): 0xd07aaa70
2025-11-24T15:17:25.166 [DEBUG] [Thread-192276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:17:25.186 [DEBUG] [Thread-192276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:17:25.187 [INFO] [Thread-192276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:17:25.189 [DEBUG] [Thread-192276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:17:25.189 [DEBUG] [Thread-192276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] client lang: <none>
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] server lang: <none>
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] kex follows: False
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] Compression: none
2025-11-24T15:17:25.190 [DEBUG] [Thread-192276] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:17:25.206 [DEBUG] [Thread-192276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:17:25.206 [DEBUG] [Thread-192276] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:17:25.206 [DEBUG] [Thread-192276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:17:25.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:17:25.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:17:25.207 [DEBUG] [Thread-192276] [transport.py] [_log()] userauth is OK
2025-11-24T15:17:25.207 [DEBUG] [Thread-192276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:17:25.208 [DEBUG] [Thread-192276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:17:25.208 [DEBUG] [Thread-192276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:17:25.208 [DEBUG] [Thread-192276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:17:25.227 [INFO] [Thread-192276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:17:25.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:17:25.783 [DEBUG] [Thread-192276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:17:25.783 [DEBUG] [Thread-192276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:17:25.792 [DEBUG] [Thread-192276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:17:25.824 [DEBUG] [Thread-192276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:17:25.824 [DEBUG] [Thread-192276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:17:25.826 [DEBUG] [Thread-192276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:17:25.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:17:25.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:17:25.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:17:25.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:17:25.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:17:25.845 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:17:25.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:17:25.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:17:25.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:17:25.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.553172 -999.00  +21.60  19.63     25   +1.10 1 1 1 1 1   888    0 20.36 -11.60 ----- 25.0 19.6 180.0 30.5 27.1 -28.4 26.4 -27.0 28.1 -28.5 28.8 -28.0
2025-11-24T15:17:25.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:17:25.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:17:25.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.553172
2025-11-24T15:17:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:17:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:17:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:17:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:17:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:17:25.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:17:10', tmtdew=23.7, humidity=20.19, cloud=0.0, wind=20.91, temperature=21.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:16:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:17:25.846 [DEBUG] [Thread-192276] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:17:25.920 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:17:25.932 [DEBUG] [Thread-192279] [transport.py] [_log()] starting thread (client mode): 0xd07aa9e0
2025-11-24T15:17:25.932 [DEBUG] [Thread-192279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:17:25.952 [DEBUG] [Thread-192279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:17:25.952 [INFO] [Thread-192279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] client lang: <none>
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] server lang: <none>
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] kex follows: False
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:17:25.962 [DEBUG] [Thread-192279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:17:25.971 [DEBUG] [Thread-192279] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:17:25.971 [DEBUG] [Thread-192279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:17:25.971 [DEBUG] [Thread-192279] [transport.py] [_log()] Compression: none
2025-11-24T15:17:25.971 [DEBUG] [Thread-192279] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:17:26.015 [DEBUG] [Thread-192279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:17:26.016 [DEBUG] [Thread-192279] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:17:26.016 [DEBUG] [Thread-192279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:17:26.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:17:26.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:17:26.072 [DEBUG] [Thread-192279] [transport.py] [_log()] userauth is OK
2025-11-24T15:17:26.072 [DEBUG] [Thread-192279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:17:26.072 [DEBUG] [Thread-192279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:17:26.072 [DEBUG] [Thread-192279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:17:26.072 [DEBUG] [Thread-192279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:17:26.086 [INFO] [Thread-192279] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:17:26.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:17:26.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:17:26.910 [DEBUG] [Thread-192279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:17:26.910 [DEBUG] [Thread-192279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:17:26.958 [DEBUG] [Thread-192279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:17:26.958 [DEBUG] [Thread-192279] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:17:26.967 [DEBUG] [Thread-192279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:17:26.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:17:26.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-11-24T15:17:26.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-11-24T15:17:26.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:17:26.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:17:26.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:17:27.003 [DEBUG] [Thread-192279] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:17:29.548 [DEBUG] [Thread-192281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:17:44.584 [DEBUG] [Thread-192282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:17:57.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:17:57.011 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:17:57.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-11-24T15:17:57.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 17, 42), 23.78, 20.24, 0.0, 21.72, 21.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:17:57.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:17:42
2025-11-24T15:17:57.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:17:58.122 [DEBUG] [Thread-192283] [transport.py] [_log()] starting thread (client mode): 0xd07a9540
2025-11-24T15:17:58.122 [DEBUG] [Thread-192283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:17:58.143 [DEBUG] [Thread-192283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:17:58.143 [INFO] [Thread-192283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] client lang: <none>
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] server lang: <none>
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] kex follows: False
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:17:58.146 [DEBUG] [Thread-192283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:17:58.147 [DEBUG] [Thread-192283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:17:58.147 [DEBUG] [Thread-192283] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:17:58.147 [DEBUG] [Thread-192283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:17:58.147 [DEBUG] [Thread-192283] [transport.py] [_log()] Compression: none
2025-11-24T15:17:58.147 [DEBUG] [Thread-192283] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:17:58.162 [DEBUG] [Thread-192283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:17:58.163 [DEBUG] [Thread-192283] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:17:58.163 [DEBUG] [Thread-192283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:17:58.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:17:58.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:17:58.164 [DEBUG] [Thread-192283] [transport.py] [_log()] userauth is OK
2025-11-24T15:17:58.164 [DEBUG] [Thread-192283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:17:58.165 [DEBUG] [Thread-192283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:17:58.165 [DEBUG] [Thread-192283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:17:58.165 [DEBUG] [Thread-192283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:17:58.176 [INFO] [Thread-192283] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:17:58.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:17:58.730 [DEBUG] [Thread-192283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:17:58.730 [DEBUG] [Thread-192283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:17:58.730 [DEBUG] [Thread-192283] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:17:58.772 [DEBUG] [Thread-192283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:17:58.772 [DEBUG] [Thread-192283] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:17:58.775 [DEBUG] [Thread-192283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:17:58.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:17:58.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:17:58.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:17:58.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:17:58.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:17:58.798 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:17:58.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:17:58.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:17:58.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:17:58.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.553519 -999.00  +21.60  14.94     25   +1.20 1 1 1 1 1   888    0 20.19 -10.03 ----- 21.4 14.9 188.5 28.1 27.1 -27.5 26.3 -27.0 28.0 -26.3 28.9 -27.2
2025-11-24T15:17:58.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:17:58.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:17:58.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.553519
2025-11-24T15:17:58.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:17:58.807 [DEBUG] [Thread-192283] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:17:58.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:17:58.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:17:58.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:17:58.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:17:58.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:17:42', tmtdew=23.78, humidity=20.24, cloud=0.0, wind=21.72, temperature=21.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:17:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:17:58.894 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:17:58.907 [DEBUG] [Thread-192286] [transport.py] [_log()] starting thread (client mode): 0xd07a95d0
2025-11-24T15:17:58.907 [DEBUG] [Thread-192286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:17:58.924 [DEBUG] [Thread-192286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:17:58.924 [INFO] [Thread-192286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:17:58.931 [DEBUG] [Thread-192286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:17:58.931 [DEBUG] [Thread-192286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:17:58.931 [DEBUG] [Thread-192286] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:17:58.931 [DEBUG] [Thread-192286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:17:58.931 [DEBUG] [Thread-192286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:17:58.931 [DEBUG] [Thread-192286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] client lang: <none>
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] server lang: <none>
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] kex follows: False
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] Compression: none
2025-11-24T15:17:58.932 [DEBUG] [Thread-192286] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:17:58.988 [DEBUG] [Thread-192286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:17:58.988 [DEBUG] [Thread-192286] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:17:58.988 [DEBUG] [Thread-192286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:17:58.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:17:58.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:17:59.044 [DEBUG] [Thread-192286] [transport.py] [_log()] userauth is OK
2025-11-24T15:17:59.044 [DEBUG] [Thread-192286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:17:59.044 [DEBUG] [Thread-192286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:17:59.044 [DEBUG] [Thread-192286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:17:59.044 [DEBUG] [Thread-192286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:17:59.058 [INFO] [Thread-192286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:17:59.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:17:59.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:17:59.621 [DEBUG] [Thread-192288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:17:59.893 [DEBUG] [Thread-192286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:17:59.893 [DEBUG] [Thread-192286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:17:59.941 [DEBUG] [Thread-192286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:17:59.942 [DEBUG] [Thread-192286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:17:59.951 [DEBUG] [Thread-192286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:17:59.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:17:59.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:17:59.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-11-24T15:17:59.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:17:59.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:17:59.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:17:59.984 [DEBUG] [Thread-192286] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:18:14.660 [DEBUG] [Thread-192289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:18:16.128 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:18:16.128 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:18:24.428 [DEBUG] [Thread-192290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:18:29.693 [DEBUG] [Thread-192291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:18:29.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:18:29.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:18:29.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:18:30.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 18, 15), 23.81, 20.19, 0.0, 27.21, 21.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:18:30.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:18:15
2025-11-24T15:18:30.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:18:31.087 [DEBUG] [Thread-192292] [transport.py] [_log()] starting thread (client mode): 0xd07a8fd0
2025-11-24T15:18:31.087 [DEBUG] [Thread-192292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:18:31.098 [DEBUG] [Thread-192292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:18:31.098 [INFO] [Thread-192292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] client lang: <none>
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] server lang: <none>
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] kex follows: False
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:18:31.101 [DEBUG] [Thread-192292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:18:31.102 [DEBUG] [Thread-192292] [transport.py] [_log()] Compression: none
2025-11-24T15:18:31.102 [DEBUG] [Thread-192292] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:18:31.118 [DEBUG] [Thread-192292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:18:31.119 [DEBUG] [Thread-192292] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:18:31.120 [DEBUG] [Thread-192292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:18:31.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:18:31.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:18:31.122 [DEBUG] [Thread-192292] [transport.py] [_log()] userauth is OK
2025-11-24T15:18:31.122 [DEBUG] [Thread-192292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:18:31.122 [DEBUG] [Thread-192292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:18:31.122 [DEBUG] [Thread-192292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:18:31.122 [DEBUG] [Thread-192292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:18:31.158 [INFO] [Thread-192292] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:18:31.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:18:31.757 [DEBUG] [Thread-192292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:18:31.757 [DEBUG] [Thread-192292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:18:31.757 [DEBUG] [Thread-192292] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:18:31.797 [DEBUG] [Thread-192292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:18:31.798 [DEBUG] [Thread-192292] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:18:31.802 [DEBUG] [Thread-192292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:18:31.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:18:31.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:18:31.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:18:31.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:18:31.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:18:31.824 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:18:31.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:18:31.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:18:31.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:18:31.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.553867 -999.00  +21.80  12.94     25   +1.20 1 1 1 1 1   888    0 20.31 -7.16 ----- 14.9 12.9 191.6 22.3 27.2 -27.7 26.6 -28.8 28.2 -25.7 29.0 -28.1
2025-11-24T15:18:31.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:18:31.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:18:31.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.553867
2025-11-24T15:18:31.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:18:31.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:18:31.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:18:31.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:18:31.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:18:31.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:18:15', tmtdew=23.81, humidity=20.19, cloud=0.0, wind=27.21, temperature=21.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:17:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:18:31.827 [DEBUG] [Thread-192292] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:18:31.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:18:31.923 [DEBUG] [Thread-192295] [transport.py] [_log()] starting thread (client mode): 0xd07a8e80
2025-11-24T15:18:31.923 [DEBUG] [Thread-192295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:18:31.937 [DEBUG] [Thread-192295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:18:31.937 [INFO] [Thread-192295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] client lang: <none>
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] server lang: <none>
2025-11-24T15:18:31.945 [DEBUG] [Thread-192295] [transport.py] [_log()] kex follows: False
2025-11-24T15:18:31.946 [DEBUG] [Thread-192295] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:18:31.946 [DEBUG] [Thread-192295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:18:31.946 [DEBUG] [Thread-192295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:18:31.946 [DEBUG] [Thread-192295] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:18:31.946 [DEBUG] [Thread-192295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:18:31.946 [DEBUG] [Thread-192295] [transport.py] [_log()] Compression: none
2025-11-24T15:18:31.946 [DEBUG] [Thread-192295] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:18:32.005 [DEBUG] [Thread-192295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:18:32.006 [DEBUG] [Thread-192295] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:18:32.006 [DEBUG] [Thread-192295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:18:32.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:18:32.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:18:32.065 [DEBUG] [Thread-192295] [transport.py] [_log()] userauth is OK
2025-11-24T15:18:32.065 [DEBUG] [Thread-192295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:18:32.065 [DEBUG] [Thread-192295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:18:32.066 [DEBUG] [Thread-192295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:18:32.066 [DEBUG] [Thread-192295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:18:32.085 [INFO] [Thread-192295] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:18:32.094 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:18:32.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:18:32.905 [DEBUG] [Thread-192295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:18:32.905 [DEBUG] [Thread-192295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:18:32.953 [DEBUG] [Thread-192295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:18:32.953 [DEBUG] [Thread-192295] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:18:32.961 [DEBUG] [Thread-192295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:18:32.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:18:32.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-11-24T15:18: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-11-24T15:18:32.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:18:32.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:18:32.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:18:32.998 [DEBUG] [Thread-192295] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:18:44.729 [DEBUG] [Thread-192297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:18:59.769 [DEBUG] [Thread-192298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:19:03.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:19:03.017 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:19: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-11-24T15:19:03.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 18, 47), 23.86, 20.17, 0.0, 30.1, 21.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:19:03.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:18:47
2025-11-24T15:19:04.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:19:04.249 [DEBUG] [Thread-192299] [transport.py] [_log()] starting thread (client mode): 0xd07a9690
2025-11-24T15:19:04.249 [DEBUG] [Thread-192299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:19:04.270 [DEBUG] [Thread-192299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:19:04.271 [INFO] [Thread-192299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] client lang: <none>
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] server lang: <none>
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] kex follows: False
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] Compression: none
2025-11-24T15:19:04.272 [DEBUG] [Thread-192299] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:19:04.290 [DEBUG] [Thread-192299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:19:04.291 [DEBUG] [Thread-192299] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:19:04.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:19:04.292 [DEBUG] [Thread-192299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:19:04.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:19:04.294 [DEBUG] [Thread-192299] [transport.py] [_log()] userauth is OK
2025-11-24T15:19:04.294 [DEBUG] [Thread-192299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:19:04.294 [DEBUG] [Thread-192299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:19:04.294 [DEBUG] [Thread-192299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:19:04.294 [DEBUG] [Thread-192299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:19:04.318 [INFO] [Thread-192299] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:19:04.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:19:04.882 [DEBUG] [Thread-192299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:19:04.883 [DEBUG] [Thread-192299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:19:04.883 [DEBUG] [Thread-192299] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:19:04.924 [DEBUG] [Thread-192299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:19:04.924 [DEBUG] [Thread-192299] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:19:04.927 [DEBUG] [Thread-192299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:19:04.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:19:04.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:19:04.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:19:04.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:19:04.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:19:04.944 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:19:04.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:19:04.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:19:04.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:19:04.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.554214 -999.00  +21.80  11.45     25   +1.20 1 1 1 1 1   888    0 20.24 -4.62 ----- 13.2 11.4 195.8 21.3 27.2 -27.8 26.6 -26.5 28.2 -25.6 29.1 -27.0
2025-11-24T15:19:04.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:19:04.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:19:04.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.554214
2025-11-24T15:19:04.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:19:04.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:19:04.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:19:04.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:19:04.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:19:04.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:18:47', tmtdew=23.86, humidity=20.17, cloud=0.0, wind=30.1, temperature=21.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:18:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:19:04.949 [DEBUG] [Thread-192299] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:19:05.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:19:05.054 [DEBUG] [Thread-192302] [transport.py] [_log()] starting thread (client mode): 0xd07aae30
2025-11-24T15:19:05.054 [DEBUG] [Thread-192302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:19:05.068 [DEBUG] [Thread-192302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:19:05.069 [INFO] [Thread-192302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:19:05.078 [DEBUG] [Thread-192302] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] client lang: <none>
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] server lang: <none>
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] kex follows: False
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] Compression: none
2025-11-24T15:19:05.079 [DEBUG] [Thread-192302] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:19:05.145 [DEBUG] [Thread-192302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:19:05.146 [DEBUG] [Thread-192302] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:19:05.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:19:05.147 [DEBUG] [Thread-192302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:19:05.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:19:05.201 [DEBUG] [Thread-192302] [transport.py] [_log()] userauth is OK
2025-11-24T15:19:05.201 [DEBUG] [Thread-192302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:19:05.201 [DEBUG] [Thread-192302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:19:05.201 [DEBUG] [Thread-192302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:19:05.202 [DEBUG] [Thread-192302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:19:05.220 [INFO] [Thread-192302] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:19:05.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:19:05.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:19:06.053 [DEBUG] [Thread-192302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:19:06.053 [DEBUG] [Thread-192302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:19:06.107 [DEBUG] [Thread-192302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:19:06.107 [DEBUG] [Thread-192302] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:19:06.124 [DEBUG] [Thread-192302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:19:06.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:19:06.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-11-24T15:19:06.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-11-24T15:19:06.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:19:06.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:19:06.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:19:06.156 [DEBUG] [Thread-192302] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:19:14.797 [DEBUG] [Thread-192304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:19:16.266 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:19:16.268 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:19:24.587 [DEBUG] [Thread-192305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:19:29.834 [DEBUG] [Thread-192306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:19:36.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:19:36.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:19:36.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-11-24T15:19:36.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 19, 19), 23.92, 20.09, 0.0, 27.17, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:19:36.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:19:19
2025-11-24T15:19:37.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:19:37.164 [DEBUG] [Thread-192307] [transport.py] [_log()] starting thread (client mode): 0xd07a89a0
2025-11-24T15:19:37.164 [DEBUG] [Thread-192307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:19:37.184 [DEBUG] [Thread-192307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:19:37.185 [INFO] [Thread-192307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:19:37.187 [DEBUG] [Thread-192307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:19:37.187 [DEBUG] [Thread-192307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:19:37.187 [DEBUG] [Thread-192307] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:19:37.187 [DEBUG] [Thread-192307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:19:37.187 [DEBUG] [Thread-192307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:19:37.187 [DEBUG] [Thread-192307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:19:37.187 [DEBUG] [Thread-192307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:19:37.187 [DEBUG] [Thread-192307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:19:37.187 [DEBUG] [Thread-192307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:19:37.187 [DEBUG] [Thread-192307] [transport.py] [_log()] client lang: <none>
2025-11-24T15:19:37.188 [DEBUG] [Thread-192307] [transport.py] [_log()] server lang: <none>
2025-11-24T15:19:37.188 [DEBUG] [Thread-192307] [transport.py] [_log()] kex follows: False
2025-11-24T15:19:37.188 [DEBUG] [Thread-192307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:19:37.188 [DEBUG] [Thread-192307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:19:37.188 [DEBUG] [Thread-192307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:19:37.188 [DEBUG] [Thread-192307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:19:37.188 [DEBUG] [Thread-192307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:19:37.188 [DEBUG] [Thread-192307] [transport.py] [_log()] Compression: none
2025-11-24T15:19:37.188 [DEBUG] [Thread-192307] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:19:37.209 [DEBUG] [Thread-192307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:19:37.210 [DEBUG] [Thread-192307] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:19:37.210 [DEBUG] [Thread-192307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:19:37.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:19:37.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:19:37.212 [DEBUG] [Thread-192307] [transport.py] [_log()] userauth is OK
2025-11-24T15:19:37.213 [DEBUG] [Thread-192307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:19:37.213 [DEBUG] [Thread-192307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:19:37.213 [DEBUG] [Thread-192307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:19:37.213 [DEBUG] [Thread-192307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:19:37.239 [INFO] [Thread-192307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:19:37.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:19:37.860 [DEBUG] [Thread-192307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:19:37.860 [DEBUG] [Thread-192307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:19:37.860 [DEBUG] [Thread-192307] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:19:37.901 [DEBUG] [Thread-192307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:19:37.901 [DEBUG] [Thread-192307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:19:37.904 [DEBUG] [Thread-192307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:19:37.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:19:37.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:19:37.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:19:37.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:19:37.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:19:37.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:19:37.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:19:37.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.554561 -999.00  +22.10  27.01     25   +1.40 1 1 1 1 1   888    0 20.46 -2.36 ----- 23.5 27.0 198.6 35.6 27.3 -28.3 26.5 -29.3 28.4 -24.9 29.0 -28.6
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.554561
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:19:37.919 [DEBUG] [Thread-192307] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:19:37.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:19:19', tmtdew=23.92, humidity=20.09, cloud=0.0, wind=27.17, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:18:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:19:37.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:19:38.005 [DEBUG] [Thread-192310] [transport.py] [_log()] starting thread (client mode): 0xd07aa860
2025-11-24T15:19:38.005 [DEBUG] [Thread-192310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:19:38.019 [DEBUG] [Thread-192310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:19:38.019 [INFO] [Thread-192310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] client lang: <none>
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] server lang: <none>
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] kex follows: False
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:19:38.027 [DEBUG] [Thread-192310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:19:38.028 [DEBUG] [Thread-192310] [transport.py] [_log()] Compression: none
2025-11-24T15:19:38.028 [DEBUG] [Thread-192310] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:19:38.083 [DEBUG] [Thread-192310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:19:38.083 [DEBUG] [Thread-192310] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:19:38.083 [DEBUG] [Thread-192310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:19:38.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:19:38.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:19:38.140 [DEBUG] [Thread-192310] [transport.py] [_log()] userauth is OK
2025-11-24T15:19:38.140 [DEBUG] [Thread-192310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:19:38.140 [DEBUG] [Thread-192310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:19:38.140 [DEBUG] [Thread-192310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:19:38.140 [DEBUG] [Thread-192310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:19:38.153 [INFO] [Thread-192310] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:19:38.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:19:38.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:19:38.973 [DEBUG] [Thread-192310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:19:38.974 [DEBUG] [Thread-192310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:19:39.020 [DEBUG] [Thread-192310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:19:39.021 [DEBUG] [Thread-192310] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:19:39.030 [DEBUG] [Thread-192310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:19:39.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:19:39.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-11-24T15:19:39.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-11-24T15:19:39.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:19:39.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:19:39.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:19:39.067 [DEBUG] [Thread-192310] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:19:44.869 [DEBUG] [Thread-192312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:19:59.908 [DEBUG] [Thread-192313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:20:09.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:20:09.090 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:20:09.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-11-24T15:20:09.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 19, 52), 23.95, 20.09, 0.0, 29.47, 21.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:20:09.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:19:52
2025-11-24T15:20:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:20:10.103 [DEBUG] [Thread-192314] [transport.py] [_log()] starting thread (client mode): 0xd07abb20
2025-11-24T15:20:10.103 [DEBUG] [Thread-192314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:20:10.124 [DEBUG] [Thread-192314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:20:10.124 [INFO] [Thread-192314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] client lang: <none>
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] server lang: <none>
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] kex follows: False
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:20:10.128 [DEBUG] [Thread-192314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:20:10.129 [DEBUG] [Thread-192314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:20:10.129 [DEBUG] [Thread-192314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:20:10.129 [DEBUG] [Thread-192314] [transport.py] [_log()] Compression: none
2025-11-24T15:20:10.129 [DEBUG] [Thread-192314] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:20:10.152 [DEBUG] [Thread-192314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:20:10.152 [DEBUG] [Thread-192314] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:20:10.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:20:10.152 [DEBUG] [Thread-192314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:20:10.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:20:10.153 [DEBUG] [Thread-192314] [transport.py] [_log()] userauth is OK
2025-11-24T15:20:10.153 [DEBUG] [Thread-192314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:20:10.153 [DEBUG] [Thread-192314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:20:10.153 [DEBUG] [Thread-192314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:20:10.153 [DEBUG] [Thread-192314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:20:10.169 [INFO] [Thread-192314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:20:10.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:20:13.371 [DEBUG] [Thread-192314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:20:13.371 [DEBUG] [Thread-192314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:20:13.382 [DEBUG] [Thread-192314] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:20:13.412 [DEBUG] [Thread-192314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:20:13.412 [DEBUG] [Thread-192314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:20:13.416 [DEBUG] [Thread-192314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:20:13.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:20:13.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:20:13.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:20:13.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:20:13.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:20:13.439 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:20:13.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:20:13.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:20:13.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:20:13.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.555603 -999.00  +21.90  18.99     25   +1.40 1 1 1 1 1   888    0 20.69 6.25 ----- 19.6 19.0 185.0 29.6 27.1 -27.1 26.4 -25.8 28.1 -26.5 28.9 -26.8
2025-11-24T15:20:13.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:20:13.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:20:13.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.555603
2025-11-24T15:20:13.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:20:13.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:20:13.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:20:13.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:20:13.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:20:13.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:19:52', tmtdew=23.95, humidity=20.09, cloud=0.0, wind=29.47, temperature=21.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:20:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:20:13.450 [DEBUG] [Thread-192314] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:20:13.527 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:20:13.540 [DEBUG] [Thread-192317] [transport.py] [_log()] starting thread (client mode): 0xd07a94e0
2025-11-24T15:20:13.540 [DEBUG] [Thread-192317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:20:13.555 [DEBUG] [Thread-192317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:20:13.556 [INFO] [Thread-192317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] client lang: <none>
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] server lang: <none>
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] kex follows: False
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:20:13.563 [DEBUG] [Thread-192317] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:20:13.564 [DEBUG] [Thread-192317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:20:13.564 [DEBUG] [Thread-192317] [transport.py] [_log()] Compression: none
2025-11-24T15:20:13.564 [DEBUG] [Thread-192317] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:20:13.621 [DEBUG] [Thread-192317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:20:13.621 [DEBUG] [Thread-192317] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:20:13.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:20:13.623 [DEBUG] [Thread-192317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:20:13.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:20:13.677 [DEBUG] [Thread-192317] [transport.py] [_log()] userauth is OK
2025-11-24T15:20:13.677 [DEBUG] [Thread-192317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:20:13.677 [DEBUG] [Thread-192317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:20:13.677 [DEBUG] [Thread-192317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:20:13.677 [DEBUG] [Thread-192317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:20:13.697 [INFO] [Thread-192317] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:20:13.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:20:13.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:20:14.508 [DEBUG] [Thread-192317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:20:14.509 [DEBUG] [Thread-192317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:20:14.556 [DEBUG] [Thread-192317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:20:14.556 [DEBUG] [Thread-192317] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:20:14.564 [DEBUG] [Thread-192317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:20:14.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:20:14.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-11-24T15:20:14.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-11-24T15:20:14.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:20:14.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:20:14.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:20:14.596 [DEBUG] [Thread-192317] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:20:14.951 [DEBUG] [Thread-192319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:20:16.417 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:20:16.419 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:20:24.924 [DEBUG] [Thread-192320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:20:30.018 [DEBUG] [Thread-192321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:20:44.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:20:44.617 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:20:44.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-11-24T15:20:45.052 [DEBUG] [Thread-192322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:20:45.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 20, 24), 24.0, 20.02, 0.0, 27.46, 21.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:20:45.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:20:24
2025-11-24T15:20:45.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:20:45.792 [DEBUG] [Thread-192323] [transport.py] [_log()] starting thread (client mode): 0xd3160d90
2025-11-24T15:20:45.792 [DEBUG] [Thread-192323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:20:45.807 [DEBUG] [Thread-192323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:20:45.807 [INFO] [Thread-192323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] client lang: <none>
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] server lang: <none>
2025-11-24T15:20:45.810 [DEBUG] [Thread-192323] [transport.py] [_log()] kex follows: False
2025-11-24T15:20:45.811 [DEBUG] [Thread-192323] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:20:45.811 [DEBUG] [Thread-192323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:20:45.811 [DEBUG] [Thread-192323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:20:45.811 [DEBUG] [Thread-192323] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:20:45.811 [DEBUG] [Thread-192323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:20:45.811 [DEBUG] [Thread-192323] [transport.py] [_log()] Compression: none
2025-11-24T15:20:45.811 [DEBUG] [Thread-192323] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:20:45.826 [DEBUG] [Thread-192323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:20:45.826 [DEBUG] [Thread-192323] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:20:45.826 [DEBUG] [Thread-192323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:20:45.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:20:45.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:20:45.827 [DEBUG] [Thread-192323] [transport.py] [_log()] userauth is OK
2025-11-24T15:20:45.827 [DEBUG] [Thread-192323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:20:45.827 [DEBUG] [Thread-192323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:20:45.827 [DEBUG] [Thread-192323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:20:45.827 [DEBUG] [Thread-192323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:20:45.836 [INFO] [Thread-192323] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:20:45.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:20:46.429 [DEBUG] [Thread-192323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:20:46.429 [DEBUG] [Thread-192323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:20:46.430 [DEBUG] [Thread-192323] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:20:46.470 [DEBUG] [Thread-192323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:20:46.471 [DEBUG] [Thread-192323] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:20:46.472 [DEBUG] [Thread-192323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:20:46.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:20:46.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:20:46.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:20:46.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:20:46.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:20:46.486 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:20:46.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:20:46.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:20:46.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:20:46.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.555950 -999.00  +22.50  17.22     25   +1.50 1 1 1 1 1   888    0 21.03 9.90 ----- 25.1 17.2 194.8 24.7 27.2 -26.4 26.6 -26.7 28.2 -25.2 28.9 -26.8
2025-11-24T15:20:46.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:20:46.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:20:46.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.555950
2025-11-24T15:20:46.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:20:46.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:20:46.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:20:46.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:20:46.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:20:46.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:20:24', tmtdew=24.0, humidity=20.02, cloud=0.0, wind=27.46, temperature=21.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:20:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:20:46.488 [DEBUG] [Thread-192323] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:20:46.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:20:46.574 [DEBUG] [Thread-192326] [transport.py] [_log()] starting thread (client mode): 0xd3161cf0
2025-11-24T15:20:46.575 [DEBUG] [Thread-192326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:20:46.589 [DEBUG] [Thread-192326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:20:46.589 [INFO] [Thread-192326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] client lang: <none>
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] server lang: <none>
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] kex follows: False
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:20:46.597 [DEBUG] [Thread-192326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:20:46.598 [DEBUG] [Thread-192326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:20:46.598 [DEBUG] [Thread-192326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:20:46.598 [DEBUG] [Thread-192326] [transport.py] [_log()] Compression: none
2025-11-24T15:20:46.598 [DEBUG] [Thread-192326] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:20:46.655 [DEBUG] [Thread-192326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:20:46.655 [DEBUG] [Thread-192326] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:20:46.656 [DEBUG] [Thread-192326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:20:46.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:20:46.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:20:46.712 [DEBUG] [Thread-192326] [transport.py] [_log()] userauth is OK
2025-11-24T15:20:46.712 [DEBUG] [Thread-192326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:20:46.712 [DEBUG] [Thread-192326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:20:46.712 [DEBUG] [Thread-192326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:20:46.712 [DEBUG] [Thread-192326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:20:46.726 [INFO] [Thread-192326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:20:46.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:20:46.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:20:47.566 [DEBUG] [Thread-192326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:20:47.566 [DEBUG] [Thread-192326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:20:47.614 [DEBUG] [Thread-192326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:20:47.614 [DEBUG] [Thread-192326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:20:47.622 [DEBUG] [Thread-192326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:20:47.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:20:47.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-11-24T15:20:47.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-11-24T15:20:47.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:20:47.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:20:47.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:20:47.653 [DEBUG] [Thread-192326] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:21:00.080 [DEBUG] [Thread-192328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:21:15.124 [DEBUG] [Thread-192329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:21:16.558 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:21:16.559 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:21:17.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:21:17.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:21:17.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-11-24T15:21:18.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 20, 57), 24.49, 19.52, 0.0, 23.04, 22.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:21:18.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:20:57
2025-11-24T15:21:18.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:21:18.787 [DEBUG] [Thread-192330] [transport.py] [_log()] starting thread (client mode): 0xd31612a0
2025-11-24T15:21:18.787 [DEBUG] [Thread-192330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:21:18.802 [DEBUG] [Thread-192330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:21:18.802 [INFO] [Thread-192330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:21:18.812 [DEBUG] [Thread-192330] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] client lang: <none>
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] server lang: <none>
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] kex follows: False
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] Compression: none
2025-11-24T15:21:18.813 [DEBUG] [Thread-192330] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:21:18.832 [DEBUG] [Thread-192330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:21:18.833 [DEBUG] [Thread-192330] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:21:18.834 [DEBUG] [Thread-192330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:21:18.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:21:18.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:21:18.836 [DEBUG] [Thread-192330] [transport.py] [_log()] userauth is OK
2025-11-24T15:21:18.836 [DEBUG] [Thread-192330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:21:18.836 [DEBUG] [Thread-192330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:21:18.836 [DEBUG] [Thread-192330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:21:18.837 [DEBUG] [Thread-192330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:21:18.859 [INFO] [Thread-192330] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:21:18.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:21:19.678 [DEBUG] [Thread-192330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:21:19.678 [DEBUG] [Thread-192330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:21:19.679 [DEBUG] [Thread-192330] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:21:19.720 [DEBUG] [Thread-192330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:21:19.721 [DEBUG] [Thread-192330] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:21:19.723 [DEBUG] [Thread-192330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:21:19.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:21:19.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:21:19.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:21:19.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:21:19.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:21:19.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:21:19.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:21:19.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:21:19.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:21:19.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.555950 -999.00  +22.50  17.22     25   +1.50 1 1 1 1 1   888    0 21.03 9.90 ----- 25.1 17.2 194.8 24.7 27.2 -26.4 26.6 -26.7 28.2 -25.2 28.9 -26.8
2025-11-24T15:21:19.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:21:19.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:21:19.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.555950
2025-11-24T15:21:19.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:21:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:21:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:21:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:21:19.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:21:19.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:20:57', tmtdew=24.49, humidity=19.52, cloud=0.0, wind=23.04, temperature=22.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:20:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:21:19.743 [DEBUG] [Thread-192330] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:21:19.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:21:19.838 [DEBUG] [Thread-192333] [transport.py] [_log()] starting thread (client mode): 0xd07a8af0
2025-11-24T15:21:19.839 [DEBUG] [Thread-192333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:21:19.852 [DEBUG] [Thread-192333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:21:19.853 [INFO] [Thread-192333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:21:19.863 [DEBUG] [Thread-192333] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:21:19.863 [DEBUG] [Thread-192333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:21:19.863 [DEBUG] [Thread-192333] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:21:19.863 [DEBUG] [Thread-192333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:21:19.863 [DEBUG] [Thread-192333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:21:19.863 [DEBUG] [Thread-192333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:21:19.863 [DEBUG] [Thread-192333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:21:19.863 [DEBUG] [Thread-192333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:21:19.863 [DEBUG] [Thread-192333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:21:19.863 [DEBUG] [Thread-192333] [transport.py] [_log()] client lang: <none>
2025-11-24T15:21:19.864 [DEBUG] [Thread-192333] [transport.py] [_log()] server lang: <none>
2025-11-24T15:21:19.864 [DEBUG] [Thread-192333] [transport.py] [_log()] kex follows: False
2025-11-24T15:21:19.864 [DEBUG] [Thread-192333] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:21:19.864 [DEBUG] [Thread-192333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:21:19.864 [DEBUG] [Thread-192333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:21:19.864 [DEBUG] [Thread-192333] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:21:19.864 [DEBUG] [Thread-192333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:21:19.864 [DEBUG] [Thread-192333] [transport.py] [_log()] Compression: none
2025-11-24T15:21:19.864 [DEBUG] [Thread-192333] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:21:19.929 [DEBUG] [Thread-192333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:21:19.930 [DEBUG] [Thread-192333] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:21:19.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:21:19.931 [DEBUG] [Thread-192333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:21:19.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:21:19.984 [DEBUG] [Thread-192333] [transport.py] [_log()] userauth is OK
2025-11-24T15:21:19.984 [DEBUG] [Thread-192333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:21:19.984 [DEBUG] [Thread-192333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:21:19.984 [DEBUG] [Thread-192333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:21:19.985 [DEBUG] [Thread-192333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:21:19.998 [INFO] [Thread-192333] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:21:19.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:21:19.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:21:20.866 [DEBUG] [Thread-192333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:21:20.867 [DEBUG] [Thread-192333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:21:20.915 [DEBUG] [Thread-192333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:21:20.915 [DEBUG] [Thread-192333] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:21:20.924 [DEBUG] [Thread-192333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:21:20.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:21: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')
2025-11-24T15:21:20.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:21:20.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:21:20.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:21:20.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:21:20.959 [DEBUG] [Thread-192333] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:21:25.182 [DEBUG] [Thread-192335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:21:30.157 [DEBUG] [Thread-192336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:21:45.207 [DEBUG] [Thread-192337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:21:50.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:21:50.986 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:21:50.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-11-24T15:21:51.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 21, 29), 24.25, 19.84, 0.0, 21.77, 22.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:21:51.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:21:29
2025-11-24T15:21:51.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:21:52.092 [DEBUG] [Thread-192338] [transport.py] [_log()] starting thread (client mode): 0xd3163e50
2025-11-24T15:21:52.093 [DEBUG] [Thread-192338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:21:52.111 [DEBUG] [Thread-192338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:21:52.111 [INFO] [Thread-192338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:21:52.114 [DEBUG] [Thread-192338] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:21:52.114 [DEBUG] [Thread-192338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:21:52.114 [DEBUG] [Thread-192338] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:21:52.114 [DEBUG] [Thread-192338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:21:52.114 [DEBUG] [Thread-192338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] client lang: <none>
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] server lang: <none>
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] kex follows: False
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] Compression: none
2025-11-24T15:21:52.115 [DEBUG] [Thread-192338] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:21:52.142 [DEBUG] [Thread-192338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:21:52.145 [DEBUG] [Thread-192338] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:21:52.146 [DEBUG] [Thread-192338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:21:52.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:21:52.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:21:52.185 [DEBUG] [Thread-192338] [transport.py] [_log()] userauth is OK
2025-11-24T15:21:52.186 [DEBUG] [Thread-192338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:21:52.186 [DEBUG] [Thread-192338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:21:52.186 [DEBUG] [Thread-192338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:21:52.186 [DEBUG] [Thread-192338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:21:52.214 [INFO] [Thread-192338] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:21:52.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:21:52.812 [DEBUG] [Thread-192338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:21:52.812 [DEBUG] [Thread-192338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:21:52.813 [DEBUG] [Thread-192338] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:21:52.854 [DEBUG] [Thread-192338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:21:52.854 [DEBUG] [Thread-192338] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:21:52.857 [DEBUG] [Thread-192338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:21:52.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:21:52.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:21:52.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:21:52.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:21:52.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:21:52.880 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:21:52.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:21:52.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:21:52.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:21:52.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.556297 -999.00  +22.50  16.43     24   +1.40 1 1 1 1 1   888    0 20.88 15.88 ----- 15.6 16.4 200.6 31.8 27.2 -27.7 26.6 -26.7 28.3 -25.3 29.0 -27.6
2025-11-24T15:21:52.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:21:52.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:21:52.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.556297
2025-11-24T15:21:52.887 [DEBUG] [Thread-192338] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:21:52.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:21:52.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:21:52.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:21:52.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:21:52.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:21:52.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:21:29', tmtdew=24.25, humidity=19.84, cloud=0.0, wind=21.77, temperature=22.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:21:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:21:52.975 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:21:52.986 [DEBUG] [Thread-192341] [transport.py] [_log()] starting thread (client mode): 0xd3162740
2025-11-24T15:21:52.987 [DEBUG] [Thread-192341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:21:53.002 [DEBUG] [Thread-192341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:21:53.002 [INFO] [Thread-192341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] client lang: <none>
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] server lang: <none>
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] kex follows: False
2025-11-24T15:21:53.010 [DEBUG] [Thread-192341] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:21:53.011 [DEBUG] [Thread-192341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:21:53.011 [DEBUG] [Thread-192341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:21:53.011 [DEBUG] [Thread-192341] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:21:53.011 [DEBUG] [Thread-192341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:21:53.011 [DEBUG] [Thread-192341] [transport.py] [_log()] Compression: none
2025-11-24T15:21:53.011 [DEBUG] [Thread-192341] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:21:53.069 [DEBUG] [Thread-192341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:21:53.069 [DEBUG] [Thread-192341] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:21:53.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:21:53.070 [DEBUG] [Thread-192341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:21:53.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:21:53.125 [DEBUG] [Thread-192341] [transport.py] [_log()] userauth is OK
2025-11-24T15:21:53.125 [DEBUG] [Thread-192341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:21:53.125 [DEBUG] [Thread-192341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:21:53.125 [DEBUG] [Thread-192341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:21:53.126 [DEBUG] [Thread-192341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:21:53.144 [INFO] [Thread-192341] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:21:53.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:21:53.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:21:53.985 [DEBUG] [Thread-192341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:21:53.985 [DEBUG] [Thread-192341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:21:54.033 [DEBUG] [Thread-192341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:21:54.033 [DEBUG] [Thread-192341] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:21:54.041 [DEBUG] [Thread-192341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:21:54.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:21: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-11-24T15:21: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-11-24T15:21:54.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:21:54.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:21:54.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:21:54.073 [DEBUG] [Thread-192341] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:22:00.244 [DEBUG] [Thread-192343 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:22:15.306 [DEBUG] [Thread-192344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:22:16.715 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:22:16.717 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:22:24.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:22:24.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:22:24.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-11-24T15:22:24.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 22, 1), 24.39, 19.65, 0.0, 20.52, 22.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:22:24.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:22:01
2025-11-24T15:22:24.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:22:25.075 [DEBUG] [Thread-192345] [transport.py] [_log()] starting thread (client mode): 0xd3163af0
2025-11-24T15:22:25.076 [DEBUG] [Thread-192345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:22:25.094 [DEBUG] [Thread-192345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:22:25.094 [INFO] [Thread-192345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:22:25.097 [DEBUG] [Thread-192345] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:22:25.097 [DEBUG] [Thread-192345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:22:25.097 [DEBUG] [Thread-192345] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] client lang: <none>
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] server lang: <none>
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] kex follows: False
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] Compression: none
2025-11-24T15:22:25.098 [DEBUG] [Thread-192345] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:22:25.116 [DEBUG] [Thread-192345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:22:25.117 [DEBUG] [Thread-192345] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:22:25.117 [DEBUG] [Thread-192345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:22:25.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:22:25.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:22:25.120 [DEBUG] [Thread-192345] [transport.py] [_log()] userauth is OK
2025-11-24T15:22:25.120 [DEBUG] [Thread-192345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:22:25.120 [DEBUG] [Thread-192345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:22:25.120 [DEBUG] [Thread-192345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:22:25.120 [DEBUG] [Thread-192345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:22:25.138 [INFO] [Thread-192345] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:22:25.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:22:25.440 [DEBUG] [Thread-192347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:22:25.900 [DEBUG] [Thread-192345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:22:25.900 [DEBUG] [Thread-192345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:22:25.900 [DEBUG] [Thread-192345] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:22:25.941 [DEBUG] [Thread-192345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:22:25.941 [DEBUG] [Thread-192345] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:22:25.944 [DEBUG] [Thread-192345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:22:25.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:22:25.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:22:25.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:22:25.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:22:25.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:22:25.970 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:22:25.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:22:25.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:22:25.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:22:25.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.556991 -999.00  +22.40  26.60     24   +1.30 1 1 1 1 1   888    0 21.17 23.16 ----- 24.9 26.6 197.6 31.0 27.3 -27.5 26.8 -26.7 28.4 -25.0 29.1 -28.3
2025-11-24T15:22:25.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:22:25.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:22:25.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.556991
2025-11-24T15:22:25.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:22:25.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:22:25.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:22:25.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:22:25.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:22:25.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:22:01', tmtdew=24.39, humidity=19.65, cloud=0.0, wind=20.52, temperature=22.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:22:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:22:25.972 [DEBUG] [Thread-192345] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:22:26.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:22:26.057 [DEBUG] [Thread-192349] [transport.py] [_log()] starting thread (client mode): 0xd07a91e0
2025-11-24T15:22:26.057 [DEBUG] [Thread-192349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:22:26.072 [DEBUG] [Thread-192349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:22:26.072 [INFO] [Thread-192349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] client lang: <none>
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] server lang: <none>
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] kex follows: False
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:22:26.080 [DEBUG] [Thread-192349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:22:26.081 [DEBUG] [Thread-192349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:22:26.081 [DEBUG] [Thread-192349] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:22:26.081 [DEBUG] [Thread-192349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:22:26.081 [DEBUG] [Thread-192349] [transport.py] [_log()] Compression: none
2025-11-24T15:22:26.081 [DEBUG] [Thread-192349] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:22:26.135 [DEBUG] [Thread-192349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:22:26.135 [DEBUG] [Thread-192349] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:22:26.135 [DEBUG] [Thread-192349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:22:26.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:22:26.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:22:26.192 [DEBUG] [Thread-192349] [transport.py] [_log()] userauth is OK
2025-11-24T15:22:26.192 [DEBUG] [Thread-192349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:22:26.192 [DEBUG] [Thread-192349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:22:26.192 [DEBUG] [Thread-192349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:22:26.192 [DEBUG] [Thread-192349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:22:26.206 [INFO] [Thread-192349] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:22: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-11-24T15:22:26.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:22:27.015 [DEBUG] [Thread-192349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:22:27.015 [DEBUG] [Thread-192349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:22:27.063 [DEBUG] [Thread-192349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:22:27.063 [DEBUG] [Thread-192349] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:22:27.072 [DEBUG] [Thread-192349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:22:27.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:22:27.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-11-24T15:22:27.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-11-24T15:22:27.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:22:27.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:22:27.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:22:27.108 [DEBUG] [Thread-192349] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:22:30.356 [DEBUG] [Thread-192351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:22:45.399 [DEBUG] [Thread-192352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:22:57.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:22:57.131 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:22:57.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-11-24T15:22:57.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 22, 34), 23.75, 20.22, 0.0, 20.06, 21.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:22:57.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:22:34
2025-11-24T15:22:58.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:22:58.182 [DEBUG] [Thread-192353] [transport.py] [_log()] starting thread (client mode): 0xd3160d90
2025-11-24T15:22:58.183 [DEBUG] [Thread-192353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:22:58.203 [DEBUG] [Thread-192353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:22:58.203 [INFO] [Thread-192353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] client lang: <none>
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] server lang: <none>
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] kex follows: False
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:22:58.206 [DEBUG] [Thread-192353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:22:58.207 [DEBUG] [Thread-192353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:22:58.207 [DEBUG] [Thread-192353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:22:58.207 [DEBUG] [Thread-192353] [transport.py] [_log()] Compression: none
2025-11-24T15:22:58.207 [DEBUG] [Thread-192353] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:22:58.227 [DEBUG] [Thread-192353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:22:58.227 [DEBUG] [Thread-192353] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:22:58.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:22:58.228 [DEBUG] [Thread-192353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:22:58.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:22:58.230 [DEBUG] [Thread-192353] [transport.py] [_log()] userauth is OK
2025-11-24T15:22:58.231 [DEBUG] [Thread-192353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:22:58.231 [DEBUG] [Thread-192353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:22:58.231 [DEBUG] [Thread-192353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:22:58.231 [DEBUG] [Thread-192353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:22:58.268 [INFO] [Thread-192353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:22:58.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:22:58.815 [DEBUG] [Thread-192353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:22:58.823 [DEBUG] [Thread-192353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:22:58.824 [DEBUG] [Thread-192353] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:22:58.856 [DEBUG] [Thread-192353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:22:58.856 [DEBUG] [Thread-192353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:22:58.860 [DEBUG] [Thread-192353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:22:58.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:22:58.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:22:58.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:22:58.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:22:58.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:22:58.880 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:22:58.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:22:58.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:22:58.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:22:58.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.557339 -999.00  +22.30   7.34     25   +1.50 1 1 1 1 1   888    0 21.33 24.82 ----- 9.0 7.3 165.2 22.3 27.3 -27.7 26.7 -27.0 28.4 -25.0 29.0 -27.4
2025-11-24T15:22:58.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:22:58.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:22:58.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.557339
2025-11-24T15:22:58.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:22:58.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:22:58.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:22:58.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:22:58.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:22:58.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:22:34', tmtdew=23.75, humidity=20.22, cloud=0.0, wind=20.06, temperature=21.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:22:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:22:58.882 [DEBUG] [Thread-192353] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:22:58.955 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:22:58.966 [DEBUG] [Thread-192356] [transport.py] [_log()] starting thread (client mode): 0xd3162980
2025-11-24T15:22:58.966 [DEBUG] [Thread-192356] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:22:58.985 [DEBUG] [Thread-192356] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:22:58.985 [INFO] [Thread-192356] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] client lang: <none>
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] server lang: <none>
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] kex follows: False
2025-11-24T15:22:58.992 [DEBUG] [Thread-192356] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:22:58.993 [DEBUG] [Thread-192356] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:22:58.993 [DEBUG] [Thread-192356] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:22:58.993 [DEBUG] [Thread-192356] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:22:58.993 [DEBUG] [Thread-192356] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:22:58.993 [DEBUG] [Thread-192356] [transport.py] [_log()] Compression: none
2025-11-24T15:22:58.993 [DEBUG] [Thread-192356] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:22:59.047 [DEBUG] [Thread-192356] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:22:59.047 [DEBUG] [Thread-192356] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:22:59.047 [DEBUG] [Thread-192356] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:22:59.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:22:59.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:22:59.104 [DEBUG] [Thread-192356] [transport.py] [_log()] userauth is OK
2025-11-24T15:22:59.104 [DEBUG] [Thread-192356] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:22:59.104 [DEBUG] [Thread-192356] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:22:59.104 [DEBUG] [Thread-192356] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:22:59.104 [DEBUG] [Thread-192356] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:22:59.118 [INFO] [Thread-192356] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:22:59.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:22:59.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:22:59.975 [DEBUG] [Thread-192356] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:22:59.975 [DEBUG] [Thread-192356] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:23:00.023 [DEBUG] [Thread-192356] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:23:00.023 [DEBUG] [Thread-192356] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:23:00.032 [DEBUG] [Thread-192356] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:23:00.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:23:00.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-11-24T15:23:00.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-11-24T15:23:00.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:23:00.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:23:00.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:23:00.066 [DEBUG] [Thread-192356] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:23:00.443 [DEBUG] [Thread-192358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:23:15.499 [DEBUG] [Thread-192359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:23:16.857 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:23:16.858 [DEBUG] [Thread-189573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:23:25.769 [DEBUG] [Thread-192360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:23:30.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:23:30.102 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:23:30.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-11-24T15:23:30.532 [DEBUG] [Thread-192361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:23:30.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 23, 6), 23.87, 20.09, 0.0, 20.06, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:23:30.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:23:06
2025-11-24T15:23:31.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:23:31.219 [DEBUG] [Thread-192362] [transport.py] [_log()] starting thread (client mode): 0xd3160ca0
2025-11-24T15:23:31.220 [DEBUG] [Thread-192362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:23:31.225 [DEBUG] [Thread-192362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:23:31.226 [INFO] [Thread-192362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:23:31.229 [DEBUG] [Thread-192362] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:23:31.229 [DEBUG] [Thread-192362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:23:31.229 [DEBUG] [Thread-192362] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:23:31.229 [DEBUG] [Thread-192362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:23:31.229 [DEBUG] [Thread-192362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] client lang: <none>
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] server lang: <none>
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] kex follows: False
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:23:31.230 [DEBUG] [Thread-192362] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:23:31.231 [DEBUG] [Thread-192362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:23:31.231 [DEBUG] [Thread-192362] [transport.py] [_log()] Compression: none
2025-11-24T15:23:31.231 [DEBUG] [Thread-192362] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:23:31.257 [DEBUG] [Thread-192362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:23:31.263 [DEBUG] [Thread-192362] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:23:31.265 [DEBUG] [Thread-192362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:23:31.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:23:31.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:23:31.270 [DEBUG] [Thread-192362] [transport.py] [_log()] userauth is OK
2025-11-24T15:23:31.270 [DEBUG] [Thread-192362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:23:31.270 [DEBUG] [Thread-192362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:23:31.270 [DEBUG] [Thread-192362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:23:31.270 [DEBUG] [Thread-192362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:23:31.297 [INFO] [Thread-192362] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:23:31.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:23:31.920 [DEBUG] [Thread-192362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:23:31.920 [DEBUG] [Thread-192362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:23:31.921 [DEBUG] [Thread-192362] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:23:31.961 [DEBUG] [Thread-192362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:23:31.961 [DEBUG] [Thread-192362] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:23:31.963 [DEBUG] [Thread-192362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:23:31.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:23:31.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:23:31.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:23:31.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:23:31.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:23:31.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:23:31.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:23:31.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:23:31.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:23:31.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.557686 -999.00  +22.30  18.30     25   +1.40 1 1 1 1 1   888    0 21.30 25.65 ----- 17.0 18.3 191.7 22.5 27.4 -27.1 26.9 -26.7 28.4 -25.5 29.2 -29.0
2025-11-24T15:23:31.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:23:31.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:23:31.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.557686
2025-11-24T15:23:31.997 [DEBUG] [Thread-192362] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:23:32.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:23:32.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:23:32.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:23:32.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:23:32.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:23:32.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:23:06', tmtdew=23.87, humidity=20.09, cloud=0.0, wind=20.06, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:23:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:23:32.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:23:32.095 [DEBUG] [Thread-192365] [transport.py] [_log()] starting thread (client mode): 0xd07a85e0
2025-11-24T15:23:32.096 [DEBUG] [Thread-192365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:23:32.114 [DEBUG] [Thread-192365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:23:32.114 [INFO] [Thread-192365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:23:32.125 [DEBUG] [Thread-192365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] client lang: <none>
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] server lang: <none>
2025-11-24T15:23:32.126 [DEBUG] [Thread-192365] [transport.py] [_log()] kex follows: False
2025-11-24T15:23:32.127 [DEBUG] [Thread-192365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:23:32.127 [DEBUG] [Thread-192365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:23:32.127 [DEBUG] [Thread-192365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:23:32.127 [DEBUG] [Thread-192365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:23:32.127 [DEBUG] [Thread-192365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:23:32.127 [DEBUG] [Thread-192365] [transport.py] [_log()] Compression: none
2025-11-24T15:23:32.127 [DEBUG] [Thread-192365] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:23:32.181 [DEBUG] [Thread-192365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:23:32.182 [DEBUG] [Thread-192365] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:23:32.182 [DEBUG] [Thread-192365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:23:32.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:23:32.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:23:32.239 [DEBUG] [Thread-192365] [transport.py] [_log()] userauth is OK
2025-11-24T15:23:32.240 [DEBUG] [Thread-192365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:23:32.240 [DEBUG] [Thread-192365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:23:32.240 [DEBUG] [Thread-192365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:23:32.240 [DEBUG] [Thread-192365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:23:32.260 [INFO] [Thread-192365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:23:32.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:23:32.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:23:33.066 [DEBUG] [Thread-192365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:23:33.074 [DEBUG] [Thread-192365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:23:33.114 [DEBUG] [Thread-192365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:23:33.114 [DEBUG] [Thread-192365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:23:33.122 [DEBUG] [Thread-192365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:23:33.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:23:33.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-11-24T15:23:33.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-11-24T15:23:33.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:23:33.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:23:33.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:23:33.158 [DEBUG] [Thread-192365] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:23:45.563 [DEBUG] [Thread-192367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:24:00.646 [DEBUG] [Thread-192368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:24:03.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:24:03.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:24:03.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:24:03.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 23, 39), 24.14, 20.07, 0.0, 20.57, 22.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:24:03.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:23:39
2025-11-24T15:24:03.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:24:04.142 [DEBUG] [Thread-192369] [transport.py] [_log()] starting thread (client mode): 0xd07abdf0
2025-11-24T15:24:04.142 [DEBUG] [Thread-192369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:24:04.161 [DEBUG] [Thread-192369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:24:04.161 [INFO] [Thread-192369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] client lang: <none>
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] server lang: <none>
2025-11-24T15:24:04.165 [DEBUG] [Thread-192369] [transport.py] [_log()] kex follows: False
2025-11-24T15:24:04.166 [DEBUG] [Thread-192369] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:24:04.166 [DEBUG] [Thread-192369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:24:04.166 [DEBUG] [Thread-192369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:24:04.166 [DEBUG] [Thread-192369] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:24:04.166 [DEBUG] [Thread-192369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:24:04.166 [DEBUG] [Thread-192369] [transport.py] [_log()] Compression: none
2025-11-24T15:24:04.166 [DEBUG] [Thread-192369] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:24:04.185 [DEBUG] [Thread-192369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:24:04.186 [DEBUG] [Thread-192369] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:24:04.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:24:04.187 [DEBUG] [Thread-192369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:24:04.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:24:04.189 [DEBUG] [Thread-192369] [transport.py] [_log()] userauth is OK
2025-11-24T15:24:04.189 [DEBUG] [Thread-192369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:24:04.189 [DEBUG] [Thread-192369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:24:04.189 [DEBUG] [Thread-192369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:24:04.189 [DEBUG] [Thread-192369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:24:04.213 [INFO] [Thread-192369] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:24:04.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:24:04.796 [DEBUG] [Thread-192369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:24:04.796 [DEBUG] [Thread-192369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:24:04.796 [DEBUG] [Thread-192369] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:24:04.836 [DEBUG] [Thread-192369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:24:04.837 [DEBUG] [Thread-192369] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:24:04.840 [DEBUG] [Thread-192369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:24:04.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:24:04.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:24:04.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:24:04.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:24:04.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:24:04.875 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:24:04.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:24:04.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:24:04.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:24:04.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.557686 -999.00  +22.30  18.30     25   +1.40 1 1 1 1 1   888    0 21.30 25.65 ----- 17.0 18.3 191.7 22.5 27.4 -27.1 26.9 -26.7 28.4 -25.5 29.2 -29.0
2025-11-24T15:24:04.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:24:04.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:24:04.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.557686
2025-11-24T15:24:04.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:24:04.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:24:04.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:24:04.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:24:04.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:24:04.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:23:39', tmtdew=24.14, humidity=20.07, cloud=0.0, wind=20.57, temperature=22.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:23:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:24:04.879 [DEBUG] [Thread-192369] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:24:04.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:24:04.975 [DEBUG] [Thread-192372] [transport.py] [_log()] starting thread (client mode): 0xd3160c40
2025-11-24T15:24:04.975 [DEBUG] [Thread-192372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:24:04.990 [DEBUG] [Thread-192372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:24:04.990 [INFO] [Thread-192372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:24:04.997 [DEBUG] [Thread-192372] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:24:04.998 [DEBUG] [Thread-192372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:24:04.998 [DEBUG] [Thread-192372] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:24:04.998 [DEBUG] [Thread-192372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:24:04.998 [DEBUG] [Thread-192372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:24:04.998 [DEBUG] [Thread-192372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:24:04.998 [DEBUG] [Thread-192372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:24:04.998 [DEBUG] [Thread-192372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] client lang: <none>
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] server lang: <none>
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] kex follows: False
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] Compression: none
2025-11-24T15:24:04.999 [DEBUG] [Thread-192372] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:24:05.056 [DEBUG] [Thread-192372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:24:05.057 [DEBUG] [Thread-192372] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:24:05.057 [DEBUG] [Thread-192372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:24:05.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:24:05.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:24:05.113 [DEBUG] [Thread-192372] [transport.py] [_log()] userauth is OK
2025-11-24T15:24:05.113 [DEBUG] [Thread-192372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:24:05.113 [DEBUG] [Thread-192372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:24:05.113 [DEBUG] [Thread-192372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:24:05.113 [DEBUG] [Thread-192372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:24:05.132 [INFO] [Thread-192372] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:24:05.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:24:05.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:24:05.976 [DEBUG] [Thread-192372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:24:05.976 [DEBUG] [Thread-192372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:24:06.024 [DEBUG] [Thread-192372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:24:06.024 [DEBUG] [Thread-192372] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:24:06.032 [DEBUG] [Thread-192372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:24:06.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:24:06.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-11-24T15:24:06.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-11-24T15:24:06.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:24:06.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:24:06.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:24:06.064 [DEBUG] [Thread-192372] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:24:15.675 [DEBUG] [Thread-192374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:24:25.931 [DEBUG] [Thread-192375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:24:30.723 [DEBUG] [Thread-192376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:24:36.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:24:36.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:24:36.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:24:36.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 24, 11), 24.08, 20.15, 0.0, 21.91, 22.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:24:36.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:24:11
2025-11-24T15:24:37.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:24:37.217 [DEBUG] [Thread-192377] [transport.py] [_log()] starting thread (client mode): 0xd31607c0
2025-11-24T15:24:37.217 [DEBUG] [Thread-192377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:24:37.232 [DEBUG] [Thread-192377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:24:37.232 [INFO] [Thread-192377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:24:37.233 [DEBUG] [Thread-192377] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] client lang: <none>
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] server lang: <none>
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] kex follows: False
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] Compression: none
2025-11-24T15:24:37.234 [DEBUG] [Thread-192377] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:24:37.243 [DEBUG] [Thread-192377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:24:37.243 [DEBUG] [Thread-192377] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:24:37.243 [DEBUG] [Thread-192377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:24:37.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:24:37.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:24:37.243 [DEBUG] [Thread-192377] [transport.py] [_log()] userauth is OK
2025-11-24T15:24:37.243 [DEBUG] [Thread-192377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:24:37.243 [DEBUG] [Thread-192377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:24:37.243 [DEBUG] [Thread-192377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:24:37.243 [DEBUG] [Thread-192377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:24:37.252 [INFO] [Thread-192377] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:24:37.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:24:37.984 [DEBUG] [Thread-192377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:24:37.984 [DEBUG] [Thread-192377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:24:37.984 [DEBUG] [Thread-192377] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:24:38.025 [DEBUG] [Thread-192377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:24:38.025 [DEBUG] [Thread-192377] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:24:38.027 [DEBUG] [Thread-192377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:24:38.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:24:38.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:24:38.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:24:38.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:24:38.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:24:38.044 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:24:38.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:24:38.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:24:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:24:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.558380 -999.00  +22.40  19.79     25   +1.50 1 1 1 1 1   888    0 21.42 32.39 ----- 17.6 19.8 201.4 25.3 27.5 -27.3 26.9 -26.7 28.6 -25.4 29.3 -27.7
2025-11-24T15:24:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:24:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:24:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.558380
2025-11-24T15:24:38.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:24:38.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:24:38.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:24:38.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:24:38.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:24:38.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:24:11', tmtdew=24.08, humidity=20.15, cloud=0.0, wind=21.91, temperature=22.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:24:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:24:38.045 [DEBUG] [Thread-192377] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:24:38.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:24:38.132 [DEBUG] [Thread-192380] [transport.py] [_log()] starting thread (client mode): 0xd3161810
2025-11-24T15:24:38.132 [DEBUG] [Thread-192380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:24:38.147 [DEBUG] [Thread-192380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:24:38.147 [INFO] [Thread-192380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] client lang: <none>
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] server lang: <none>
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] kex follows: False
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:24:38.155 [DEBUG] [Thread-192380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:24:38.156 [DEBUG] [Thread-192380] [transport.py] [_log()] Compression: none
2025-11-24T15:24:38.156 [DEBUG] [Thread-192380] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:24:38.211 [DEBUG] [Thread-192380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:24:38.211 [DEBUG] [Thread-192380] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:24:38.211 [DEBUG] [Thread-192380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:24:38.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:24:38.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:24:38.268 [DEBUG] [Thread-192380] [transport.py] [_log()] userauth is OK
2025-11-24T15:24:38.268 [DEBUG] [Thread-192380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:24:38.268 [DEBUG] [Thread-192380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:24:38.268 [DEBUG] [Thread-192380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:24:38.268 [DEBUG] [Thread-192380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:24:38.283 [INFO] [Thread-192380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:24:38.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:24:38.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:24:39.119 [DEBUG] [Thread-192380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:24:39.119 [DEBUG] [Thread-192380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:24:39.167 [DEBUG] [Thread-192380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:24:39.167 [DEBUG] [Thread-192380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:24:39.175 [DEBUG] [Thread-192380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:24:39.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:24:39.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-11-24T15:24:39.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-11-24T15:24:39.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:24:39.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:24:39.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:24:39.206 [DEBUG] [Thread-192380] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:24:45.753 [DEBUG] [Thread-192382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:25:00.792 [DEBUG] [Thread-192383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:25:09.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:25:09.221 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:25:09.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-11-24T15:25:10.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 24, 43), 24.7, 19.27, 0.0, 28.8, 22.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:25:10.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:24:43
2025-11-24T15:25:10.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:25:10.344 [DEBUG] [Thread-192384] [transport.py] [_log()] starting thread (client mode): 0xd07a8790
2025-11-24T15:25:10.344 [DEBUG] [Thread-192384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:25:10.363 [DEBUG] [Thread-192384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:25:10.363 [INFO] [Thread-192384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:25:10.366 [DEBUG] [Thread-192384] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:25:10.366 [DEBUG] [Thread-192384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] client lang: <none>
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] server lang: <none>
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] kex follows: False
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] Compression: none
2025-11-24T15:25:10.367 [DEBUG] [Thread-192384] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:25:10.381 [DEBUG] [Thread-192384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:25:10.381 [DEBUG] [Thread-192384] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:25:10.381 [DEBUG] [Thread-192384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:25:10.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:25:10.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:25:10.382 [DEBUG] [Thread-192384] [transport.py] [_log()] userauth is OK
2025-11-24T15:25:10.382 [DEBUG] [Thread-192384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:25:10.382 [DEBUG] [Thread-192384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:25:10.383 [DEBUG] [Thread-192384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:25:10.383 [DEBUG] [Thread-192384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:25:10.395 [INFO] [Thread-192384] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:25:10.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:25:14.085 [DEBUG] [Thread-192384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:25:14.085 [DEBUG] [Thread-192384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:25:14.085 [DEBUG] [Thread-192384] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:25:14.126 [DEBUG] [Thread-192384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:25:14.126 [DEBUG] [Thread-192384] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:25:14.128 [DEBUG] [Thread-192384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:25:14.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:25:14.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:25:14.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:25:14.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:25:14.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:25:14.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:25:14.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:25:14.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:25:14.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:25:14.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.558380 -999.00  +22.40  19.79     25   +1.50 1 1 1 1 1   888    0 21.42 32.39 ----- 17.6 19.8 201.4 25.3 27.5 -27.3 26.9 -26.7 28.6 -25.4 29.3 -27.7
2025-11-24T15:25:14.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:25:14.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:25:14.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.558380
2025-11-24T15:25:14.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:25:14.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:25:14.149 [DEBUG] [Thread-192384] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:25:14.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:25:14.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:25:14.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:25:14.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:24:43', tmtdew=24.7, humidity=19.27, cloud=0.0, wind=28.8, temperature=22.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:24:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:25:14.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:25:14.234 [DEBUG] [Thread-192387] [transport.py] [_log()] starting thread (client mode): 0xd07a9fc0
2025-11-24T15:25:14.234 [DEBUG] [Thread-192387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:25:14.249 [DEBUG] [Thread-192387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:25:14.249 [INFO] [Thread-192387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] client lang: <none>
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] server lang: <none>
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] kex follows: False
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] Compression: none
2025-11-24T15:25:14.257 [DEBUG] [Thread-192387] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:25:14.315 [DEBUG] [Thread-192387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:25:14.315 [DEBUG] [Thread-192387] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:25:14.315 [DEBUG] [Thread-192387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:25:14.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:25:14.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:25:14.375 [DEBUG] [Thread-192387] [transport.py] [_log()] userauth is OK
2025-11-24T15:25:14.375 [DEBUG] [Thread-192387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:25:14.375 [DEBUG] [Thread-192387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:25:14.375 [DEBUG] [Thread-192387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:25:14.375 [DEBUG] [Thread-192387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:25:14.390 [INFO] [Thread-192387] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:25:14.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:25:14.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:25:15.245 [DEBUG] [Thread-192387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:25:15.245 [DEBUG] [Thread-192387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:25:15.293 [DEBUG] [Thread-192387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:25:15.293 [DEBUG] [Thread-192387] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:25:15.301 [DEBUG] [Thread-192387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:25:15.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:25:15.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-11-24T15:25:15.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:25:15.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:25:15.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:25:15.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:25:15.332 [DEBUG] [Thread-192387] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:25:15.819 [DEBUG] [Thread-192389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:25:26.256 [DEBUG] [Thread-192390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:25:30.855 [DEBUG] [Thread-192391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:25:45.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:25:45.347 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:25:45.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-11-24T15:25:45.888 [DEBUG] [Thread-192392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:25:46.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 25, 16), 24.79, 19.14, 0.0, 27.26, 22.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:25:46.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:25:16
2025-11-24T15:25:46.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:25:46.473 [DEBUG] [Thread-192393] [transport.py] [_log()] starting thread (client mode): 0xd07a9c60
2025-11-24T15:25:46.473 [DEBUG] [Thread-192393] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:25:46.490 [DEBUG] [Thread-192393] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:25:46.491 [INFO] [Thread-192393] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:25:46.494 [DEBUG] [Thread-192393] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:25:46.494 [DEBUG] [Thread-192393] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:25:46.494 [DEBUG] [Thread-192393] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] client lang: <none>
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] server lang: <none>
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] kex follows: False
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:25:46.495 [DEBUG] [Thread-192393] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:25:46.496 [DEBUG] [Thread-192393] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:25:46.496 [DEBUG] [Thread-192393] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:25:46.496 [DEBUG] [Thread-192393] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:25:46.496 [DEBUG] [Thread-192393] [transport.py] [_log()] Compression: none
2025-11-24T15:25:46.496 [DEBUG] [Thread-192393] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:25:46.520 [DEBUG] [Thread-192393] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:25:46.521 [DEBUG] [Thread-192393] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:25:46.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:25:46.524 [DEBUG] [Thread-192393] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:25:46.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:25:46.566 [DEBUG] [Thread-192393] [transport.py] [_log()] userauth is OK
2025-11-24T15:25:46.566 [DEBUG] [Thread-192393] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:25:46.566 [DEBUG] [Thread-192393] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:25:46.567 [DEBUG] [Thread-192393] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:25:46.567 [DEBUG] [Thread-192393] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:25:46.605 [INFO] [Thread-192393] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:25:46.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:25:47.225 [DEBUG] [Thread-192393] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:25:47.234 [DEBUG] [Thread-192393] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:25:47.234 [DEBUG] [Thread-192393] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:25:47.266 [DEBUG] [Thread-192393] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:25:47.266 [DEBUG] [Thread-192393] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:25:47.267 [DEBUG] [Thread-192393] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:25:47.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:25:47.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:25:47.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:25:47.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:25:47.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:25:47.282 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:25:47.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:25:47.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:25:47.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:25:47.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.559075 -999.00  +22.40   7.32     24   +1.30 1 1 1 1 1   888    0 21.79 35.32 ----- 13.3 7.3 170.7 21.2 27.6 -27.9 26.7 -30.4 28.6 -25.9 29.2 -28.2
2025-11-24T15:25:47.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:25:47.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:25:47.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.559075
2025-11-24T15:25:47.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:25:47.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:25:47.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:25:47.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:25:47.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:25:47.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:25:16', tmtdew=24.79, humidity=19.14, cloud=0.0, wind=27.26, temperature=22.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:25:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:25:47.290 [DEBUG] [Thread-192393] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:25:47.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:25:47.374 [DEBUG] [Thread-192396] [transport.py] [_log()] starting thread (client mode): 0xd3163940
2025-11-24T15:25:47.376 [DEBUG] [Thread-192396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:25:47.391 [DEBUG] [Thread-192396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:25:47.391 [INFO] [Thread-192396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:25:47.398 [DEBUG] [Thread-192396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:25:47.398 [DEBUG] [Thread-192396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:25:47.398 [DEBUG] [Thread-192396] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:25:47.398 [DEBUG] [Thread-192396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:25:47.398 [DEBUG] [Thread-192396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:25:47.398 [DEBUG] [Thread-192396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:25:47.398 [DEBUG] [Thread-192396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:25:47.398 [DEBUG] [Thread-192396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] client lang: <none>
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] server lang: <none>
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] kex follows: False
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] Compression: none
2025-11-24T15:25:47.399 [DEBUG] [Thread-192396] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:25:47.455 [DEBUG] [Thread-192396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:25:47.455 [DEBUG] [Thread-192396] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:25:47.456 [DEBUG] [Thread-192396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:25:47.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:25:47.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:25:47.513 [DEBUG] [Thread-192396] [transport.py] [_log()] userauth is OK
2025-11-24T15:25:47.513 [DEBUG] [Thread-192396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:25:47.513 [DEBUG] [Thread-192396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:25:47.513 [DEBUG] [Thread-192396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:25:47.513 [DEBUG] [Thread-192396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:25:47.531 [INFO] [Thread-192396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:25:47.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:25:47.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:25:48.402 [DEBUG] [Thread-192396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:25:48.402 [DEBUG] [Thread-192396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:25:48.450 [DEBUG] [Thread-192396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:25:48.450 [DEBUG] [Thread-192396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:25:48.459 [DEBUG] [Thread-192396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:25:48.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:25:48.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:25:48.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-11-24T15:25:48.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:25:48.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:25:48.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:25:48.513 [DEBUG] [Thread-192396] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:26:00.926 [DEBUG] [Thread-192398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:26:16.005 [DEBUG] [Thread-192399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:26:18.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:26:18.535 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:26:18.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-11-24T15:26:19.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 25, 48), 24.71, 19.07, 0.0, 30.26, 22.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:26:19.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:25:48
2025-11-24T15:26:19.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:26:19.644 [DEBUG] [Thread-192400] [transport.py] [_log()] starting thread (client mode): 0xd31b2080
2025-11-24T15:26:19.644 [DEBUG] [Thread-192400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:26:19.664 [DEBUG] [Thread-192400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:26:19.665 [INFO] [Thread-192400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:26:19.666 [DEBUG] [Thread-192400] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:26:19.666 [DEBUG] [Thread-192400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:26:19.666 [DEBUG] [Thread-192400] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:26:19.666 [DEBUG] [Thread-192400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:26:19.666 [DEBUG] [Thread-192400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:26:19.667 [DEBUG] [Thread-192400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:26:19.667 [DEBUG] [Thread-192400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:26:19.667 [DEBUG] [Thread-192400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:26:19.667 [DEBUG] [Thread-192400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:26:19.667 [DEBUG] [Thread-192400] [transport.py] [_log()] client lang: <none>
2025-11-24T15:26:19.667 [DEBUG] [Thread-192400] [transport.py] [_log()] server lang: <none>
2025-11-24T15:26:19.667 [DEBUG] [Thread-192400] [transport.py] [_log()] kex follows: False
2025-11-24T15:26:19.667 [DEBUG] [Thread-192400] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:26:19.667 [DEBUG] [Thread-192400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:26:19.667 [DEBUG] [Thread-192400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:26:19.668 [DEBUG] [Thread-192400] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:26:19.668 [DEBUG] [Thread-192400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:26:19.668 [DEBUG] [Thread-192400] [transport.py] [_log()] Compression: none
2025-11-24T15:26:19.668 [DEBUG] [Thread-192400] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:26:19.679 [DEBUG] [Thread-192400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:26:19.680 [DEBUG] [Thread-192400] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:26:19.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:26:19.682 [DEBUG] [Thread-192400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:26:19.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:26:19.684 [DEBUG] [Thread-192400] [transport.py] [_log()] userauth is OK
2025-11-24T15:26:19.684 [DEBUG] [Thread-192400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:26:19.684 [DEBUG] [Thread-192400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:26:19.684 [DEBUG] [Thread-192400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:26:19.685 [DEBUG] [Thread-192400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:26:19.702 [INFO] [Thread-192400] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:26:19.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:26:20.284 [DEBUG] [Thread-192400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:26:20.284 [DEBUG] [Thread-192400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:26:20.284 [DEBUG] [Thread-192400] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:26:20.325 [DEBUG] [Thread-192400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:26:20.325 [DEBUG] [Thread-192400] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:26:20.328 [DEBUG] [Thread-192400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:26:20.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:26:20.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:26:20.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:26:20.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:26:20.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:26:20.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:26:20.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:26:20.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:26:20.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:26:20.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.559422 -999.00  +22.50  17.41     24   +1.40 1 1 1 1 1   888    0 21.15 37.00 ----- 26.1 17.4 187.4 27.6 27.6 -27.0 26.9 -27.5 28.7 -25.1 29.4 -27.3
2025-11-24T15:26:20.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:26:20.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:26:20.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.559422
2025-11-24T15:26:20.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:26:20.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:26:20.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:26:20.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:26:20.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:26:20.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:25:48', tmtdew=24.71, humidity=19.07, cloud=0.0, wind=30.26, temperature=22.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:25:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:26:20.357 [DEBUG] [Thread-192400] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:26:20.439 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:26:20.452 [DEBUG] [Thread-192403] [transport.py] [_log()] starting thread (client mode): 0xd31b2680
2025-11-24T15:26:20.452 [DEBUG] [Thread-192403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:26:20.469 [DEBUG] [Thread-192403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:26:20.469 [INFO] [Thread-192403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:26:20.477 [DEBUG] [Thread-192403] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:26:20.477 [DEBUG] [Thread-192403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:26:20.477 [DEBUG] [Thread-192403] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:26:20.477 [DEBUG] [Thread-192403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:26:20.477 [DEBUG] [Thread-192403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:26:20.477 [DEBUG] [Thread-192403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:26:20.477 [DEBUG] [Thread-192403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:26:20.477 [DEBUG] [Thread-192403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] client lang: <none>
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] server lang: <none>
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] kex follows: False
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] Compression: none
2025-11-24T15:26:20.478 [DEBUG] [Thread-192403] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:26:20.537 [DEBUG] [Thread-192403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:26:20.537 [DEBUG] [Thread-192403] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:26:20.538 [DEBUG] [Thread-192403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:26:20.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:26:20.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:26:20.593 [DEBUG] [Thread-192403] [transport.py] [_log()] userauth is OK
2025-11-24T15:26:20.593 [DEBUG] [Thread-192403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:26:20.593 [DEBUG] [Thread-192403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:26:20.594 [DEBUG] [Thread-192403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:26:20.594 [DEBUG] [Thread-192403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:26:20.612 [INFO] [Thread-192403] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:26:20.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:26:20.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:26:21.423 [DEBUG] [Thread-192403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:26:21.423 [DEBUG] [Thread-192403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:26:21.471 [DEBUG] [Thread-192403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:26:21.471 [DEBUG] [Thread-192403] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:26:21.479 [DEBUG] [Thread-192403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:26:21.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:26:21.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-11-24T15:26:21.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-11-24T15:26:21.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:26:21.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:26:21.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:26:21.511 [DEBUG] [Thread-192403] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:26:26.465 [DEBUG] [Thread-192405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:26:31.034 [DEBUG] [Thread-192406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:26:46.082 [DEBUG] [Thread-192407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:26:51.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:26:51.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:26:51.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-11-24T15:26:52.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 26, 21), 24.56, 19.25, 0.0, 34.46, 22.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:26:52.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:26:21
2025-11-24T15:26:52.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:26:52.629 [DEBUG] [Thread-192408] [transport.py] [_log()] starting thread (client mode): 0xd31b38e0
2025-11-24T15:26:52.636 [DEBUG] [Thread-192408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:26:52.650 [DEBUG] [Thread-192408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:26:52.650 [INFO] [Thread-192408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] client lang: <none>
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] server lang: <none>
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] kex follows: False
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:26:52.653 [DEBUG] [Thread-192408] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:26:52.654 [DEBUG] [Thread-192408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:26:52.654 [DEBUG] [Thread-192408] [transport.py] [_log()] Compression: none
2025-11-24T15:26:52.654 [DEBUG] [Thread-192408] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:26:52.672 [DEBUG] [Thread-192408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:26:52.672 [DEBUG] [Thread-192408] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:26:52.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:26:52.675 [DEBUG] [Thread-192408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:26:52.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:26:52.676 [DEBUG] [Thread-192408] [transport.py] [_log()] userauth is OK
2025-11-24T15:26:52.677 [DEBUG] [Thread-192408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:26:52.677 [DEBUG] [Thread-192408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:26:52.677 [DEBUG] [Thread-192408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:26:52.677 [DEBUG] [Thread-192408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:26:52.701 [INFO] [Thread-192408] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:26:52.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:26:53.334 [DEBUG] [Thread-192408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:26:53.334 [DEBUG] [Thread-192408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:26:53.334 [DEBUG] [Thread-192408] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:26:53.374 [DEBUG] [Thread-192408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:26:53.375 [DEBUG] [Thread-192408] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:26:53.378 [DEBUG] [Thread-192408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:26:53.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:26:53.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:26:53.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:26:53.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:26:53.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:26:53.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:26:53.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:26:53.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:26:53.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:26:53.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.559769 -999.00  +22.60  26.50     24   +1.40 1 1 1 1 1   888    0 21.84 37.61 ----- 25.8 26.5 192.2 35.1 27.6 -29.1 26.8 -31.0 28.6 -26.4 29.4 -27.4
2025-11-24T15:26:53.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:26:53.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:26:53.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.559769
2025-11-24T15:26:53.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:26:53.407 [DEBUG] [Thread-192408] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:26:53.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:26:53.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:26:53.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:26:53.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:26:53.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:26:21', tmtdew=24.56, humidity=19.25, cloud=0.0, wind=34.46, temperature=22.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:26:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:26:53.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:26:53.504 [DEBUG] [Thread-192411] [transport.py] [_log()] starting thread (client mode): 0xd31b2b30
2025-11-24T15:26:53.505 [DEBUG] [Thread-192411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:26:53.519 [DEBUG] [Thread-192411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:26:53.520 [INFO] [Thread-192411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] client lang: <none>
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] server lang: <none>
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] kex follows: False
2025-11-24T15:26:53.527 [DEBUG] [Thread-192411] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:26:53.528 [DEBUG] [Thread-192411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:26:53.528 [DEBUG] [Thread-192411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:26:53.528 [DEBUG] [Thread-192411] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:26:53.528 [DEBUG] [Thread-192411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:26:53.528 [DEBUG] [Thread-192411] [transport.py] [_log()] Compression: none
2025-11-24T15:26:53.528 [DEBUG] [Thread-192411] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:26:53.585 [DEBUG] [Thread-192411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:26:53.585 [DEBUG] [Thread-192411] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:26:53.586 [DEBUG] [Thread-192411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:26:53.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:26:53.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:26:53.641 [DEBUG] [Thread-192411] [transport.py] [_log()] userauth is OK
2025-11-24T15:26:53.641 [DEBUG] [Thread-192411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:26:53.641 [DEBUG] [Thread-192411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:26:53.641 [DEBUG] [Thread-192411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:26:53.642 [DEBUG] [Thread-192411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:26:53.660 [INFO] [Thread-192411] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:26:53.660 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:26:53.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:26:54.523 [DEBUG] [Thread-192411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:26:54.523 [DEBUG] [Thread-192411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:26:54.571 [DEBUG] [Thread-192411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:26:54.571 [DEBUG] [Thread-192411] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:26:54.579 [DEBUG] [Thread-192411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:26:54.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:26:54.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-11-24T15:26:54.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-11-24T15:26:54.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:26:54.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:26:54.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:26:54.610 [DEBUG] [Thread-192411] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:27:01.116 [DEBUG] [Thread-192413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:27:16.155 [DEBUG] [Thread-192414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:27:24.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:27:24.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:27:24.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-11-24T15:27:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 26, 53), 24.38, 19.67, 0.0, 31.69, 22.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:27:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:26:53
2025-11-24T15:27:25.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:27:25.686 [DEBUG] [Thread-192415] [transport.py] [_log()] starting thread (client mode): 0xd31b11e0
2025-11-24T15:27:25.686 [DEBUG] [Thread-192415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:27:25.706 [DEBUG] [Thread-192415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:27:25.706 [INFO] [Thread-192415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:27:25.709 [DEBUG] [Thread-192415] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:27:25.709 [DEBUG] [Thread-192415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:27:25.709 [DEBUG] [Thread-192415] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:27:25.709 [DEBUG] [Thread-192415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:27:25.709 [DEBUG] [Thread-192415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:27:25.709 [DEBUG] [Thread-192415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:27:25.709 [DEBUG] [Thread-192415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:27:25.709 [DEBUG] [Thread-192415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] client lang: <none>
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] server lang: <none>
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] kex follows: False
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] Compression: none
2025-11-24T15:27:25.710 [DEBUG] [Thread-192415] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:27:25.728 [DEBUG] [Thread-192415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:27:25.729 [DEBUG] [Thread-192415] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:27:25.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:27:25.730 [DEBUG] [Thread-192415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:27:25.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:27:25.732 [DEBUG] [Thread-192415] [transport.py] [_log()] userauth is OK
2025-11-24T15:27:25.732 [DEBUG] [Thread-192415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:27:25.733 [DEBUG] [Thread-192415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:27:25.733 [DEBUG] [Thread-192415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:27:25.733 [DEBUG] [Thread-192415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:27:25.756 [INFO] [Thread-192415] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:27:25.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:27:26.362 [DEBUG] [Thread-192415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:27:26.362 [DEBUG] [Thread-192415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:27:26.362 [DEBUG] [Thread-192415] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:27:26.403 [DEBUG] [Thread-192415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:27:26.403 [DEBUG] [Thread-192415] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:27:26.405 [DEBUG] [Thread-192415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:27:26.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:27:26.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:27:26.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:27:26.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:27:26.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:27:26.431 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:27:26.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:27:26.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:27:26.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:27:26.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.560116 -999.00  +22.50  28.93     24   +1.30 1 1 1 1 1   888    0 21.37 39.15 ----- 30.2 28.9 191.6 37.6 27.5 -28.2 26.7 -32.0 28.6 -27.4 29.2 -29.3
2025-11-24T15:27:26.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:27:26.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:27:26.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.560116
2025-11-24T15:27:26.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:27:26.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:27:26.432 [DEBUG] [Thread-192415] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:27:26.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:27:26.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:27:26.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:27:26.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:26:53', tmtdew=24.38, humidity=19.67, cloud=0.0, wind=31.69, temperature=22.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:26:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:27:26.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:27:26.523 [DEBUG] [Thread-192418] [transport.py] [_log()] starting thread (client mode): 0xd31b0cd0
2025-11-24T15:27:26.523 [DEBUG] [Thread-192418] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:27:26.537 [DEBUG] [Thread-192418] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:27:26.537 [INFO] [Thread-192418] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] client lang: <none>
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] server lang: <none>
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] kex follows: False
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:27:26.545 [DEBUG] [Thread-192418] [transport.py] [_log()] Compression: none
2025-11-24T15:27:26.546 [DEBUG] [Thread-192418] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:27:26.603 [DEBUG] [Thread-192418] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:27:26.603 [DEBUG] [Thread-192418] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:27:26.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:27:26.604 [DEBUG] [Thread-192418] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:27:26.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:27:26.660 [DEBUG] [Thread-192418] [transport.py] [_log()] userauth is OK
2025-11-24T15:27:26.660 [DEBUG] [Thread-192418] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:27:26.660 [DEBUG] [Thread-192418] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:27:26.660 [DEBUG] [Thread-192418] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:27:26.660 [DEBUG] [Thread-192418] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:27:26.674 [INFO] [Thread-192418] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:27:26.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:27:26.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:27:26.712 [DEBUG] [Thread-192420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:27:27.527 [DEBUG] [Thread-192418] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:27:27.527 [DEBUG] [Thread-192418] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:27:27.575 [DEBUG] [Thread-192418] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:27:27.575 [DEBUG] [Thread-192418] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:27:27.583 [DEBUG] [Thread-192418] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:27:27.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:27:27.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-11-24T15:27:27.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:27:27.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:27:27.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:27:27.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:27:27.614 [DEBUG] [Thread-192418] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:27:31.195 [DEBUG] [Thread-192421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:27:46.252 [DEBUG] [Thread-192422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:27:57.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:27:57.637 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:27:57.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-11-24T15:27:58.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 27, 26), 24.49, 19.55, 0.0, 34.74, 22.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:27:58.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:27:26
2025-11-24T15:27:58.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:27:58.732 [DEBUG] [Thread-192423] [transport.py] [_log()] starting thread (client mode): 0xd31b1a80
2025-11-24T15:27:58.732 [DEBUG] [Thread-192423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:27:58.752 [DEBUG] [Thread-192423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:27:58.752 [INFO] [Thread-192423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:27:58.761 [DEBUG] [Thread-192423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] client lang: <none>
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] server lang: <none>
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] kex follows: False
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:27:58.762 [DEBUG] [Thread-192423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:27:58.763 [DEBUG] [Thread-192423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:27:58.763 [DEBUG] [Thread-192423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:27:58.763 [DEBUG] [Thread-192423] [transport.py] [_log()] Compression: none
2025-11-24T15:27:58.763 [DEBUG] [Thread-192423] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:27:58.781 [DEBUG] [Thread-192423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:27:58.782 [DEBUG] [Thread-192423] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:27:58.782 [DEBUG] [Thread-192423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:27:58.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:27:58.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:27:58.785 [DEBUG] [Thread-192423] [transport.py] [_log()] userauth is OK
2025-11-24T15:27:58.785 [DEBUG] [Thread-192423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:27:58.785 [DEBUG] [Thread-192423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:27:58.785 [DEBUG] [Thread-192423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:27:58.785 [DEBUG] [Thread-192423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:27:58.821 [INFO] [Thread-192423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:27:58.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:27:59.446 [DEBUG] [Thread-192423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:27:59.446 [DEBUG] [Thread-192423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:27:59.447 [DEBUG] [Thread-192423] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:27:59.487 [DEBUG] [Thread-192423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:27:59.487 [DEBUG] [Thread-192423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:27:59.489 [DEBUG] [Thread-192423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:27:59.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:27:59.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:27:59.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:27:59.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:27:59.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:27:59.507 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:27:59.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.560464 -999.00  +22.60  18.29     24   +1.40 1 1 1 1 1   888    0 21.43 36.84 ----- 22.5 18.3 149.3 34.1 27.3 -27.9 26.7 -26.5 28.4 -27.3 29.0 -29.7
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.560464
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:27:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:27:26', tmtdew=24.49, humidity=19.55, cloud=0.0, wind=34.74, temperature=22.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:27:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:27:59.508 [DEBUG] [Thread-192423] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:27:59.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:27:59.594 [DEBUG] [Thread-192426] [transport.py] [_log()] starting thread (client mode): 0xd31b0820
2025-11-24T15:27:59.594 [DEBUG] [Thread-192426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:27:59.609 [DEBUG] [Thread-192426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:27:59.609 [INFO] [Thread-192426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] client lang: <none>
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] server lang: <none>
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] kex follows: False
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] Compression: none
2025-11-24T15:27:59.617 [DEBUG] [Thread-192426] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:27:59.675 [DEBUG] [Thread-192426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:27:59.675 [DEBUG] [Thread-192426] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:27:59.675 [DEBUG] [Thread-192426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:27:59.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:27:59.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:27:59.732 [DEBUG] [Thread-192426] [transport.py] [_log()] userauth is OK
2025-11-24T15:27:59.732 [DEBUG] [Thread-192426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:27:59.732 [DEBUG] [Thread-192426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:27:59.732 [DEBUG] [Thread-192426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:27:59.732 [DEBUG] [Thread-192426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:27:59.750 [INFO] [Thread-192426] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:27:59.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:27:59.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:28:00.583 [DEBUG] [Thread-192426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:28:00.583 [DEBUG] [Thread-192426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:28:00.631 [DEBUG] [Thread-192426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:28:00.631 [DEBUG] [Thread-192426] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:28:00.639 [DEBUG] [Thread-192426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:28:00.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:28:00.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-11-24T15:28:00.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-11-24T15:28:00.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:28:00.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:28:00.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:28:00.671 [DEBUG] [Thread-192426] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:28:01.280 [DEBUG] [Thread-192428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:28:16.333 [DEBUG] [Thread-192429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:28:26.754 [DEBUG] [Thread-192430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:28:30.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:28:30.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:28:30.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-11-24T15:28:31.365 [DEBUG] [Thread-192431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:28:31.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 27, 58), 23.87, 20.19, 0.0, 33.59, 21.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:28:31.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:27:58
2025-11-24T15:28:31.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:28:31.838 [DEBUG] [Thread-192432] [transport.py] [_log()] starting thread (client mode): 0xd31b26b0
2025-11-24T15:28:31.839 [DEBUG] [Thread-192432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:28:31.859 [DEBUG] [Thread-192432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:28:31.859 [INFO] [Thread-192432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] client lang: <none>
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] server lang: <none>
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] kex follows: False
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:28:31.862 [DEBUG] [Thread-192432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:28:31.863 [DEBUG] [Thread-192432] [transport.py] [_log()] Compression: none
2025-11-24T15:28:31.863 [DEBUG] [Thread-192432] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:28:31.878 [DEBUG] [Thread-192432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:28:31.878 [DEBUG] [Thread-192432] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:28:31.879 [DEBUG] [Thread-192432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:28:31.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:28:31.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:28:31.880 [DEBUG] [Thread-192432] [transport.py] [_log()] userauth is OK
2025-11-24T15:28:31.880 [DEBUG] [Thread-192432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:28:31.880 [DEBUG] [Thread-192432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:28:31.880 [DEBUG] [Thread-192432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:28:31.880 [DEBUG] [Thread-192432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:28:31.896 [INFO] [Thread-192432] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:28:31.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:28:32.533 [DEBUG] [Thread-192432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:28:32.534 [DEBUG] [Thread-192432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:28:32.534 [DEBUG] [Thread-192432] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:28:32.574 [DEBUG] [Thread-192432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:28:32.574 [DEBUG] [Thread-192432] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:28:32.576 [DEBUG] [Thread-192432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:28:32.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:28:32.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:28:32.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:28:32.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:28:32.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:28:32.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:28:32.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:28:32.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:28:32.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:28:32.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.560811 -999.00  +22.50  19.94     24   +1.40 1 1 1 1 1   888    0 21.77 37.37 ----- 27.5 19.9 164.6 37.9 27.3 -29.6 26.5 -31.8 28.4 -27.0 29.1 -28.5
2025-11-24T15:28:32.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:28:32.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:28:32.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.560811
2025-11-24T15:28:32.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:28:32.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:28:32.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:28:32.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:28:32.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:28:32.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:27:58', tmtdew=23.87, humidity=20.19, cloud=0.0, wind=33.59, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:27:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:28:32.593 [DEBUG] [Thread-192432] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:28:32.668 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:28:32.685 [DEBUG] [Thread-192435] [transport.py] [_log()] starting thread (client mode): 0xd31b3bb0
2025-11-24T15:28:32.685 [DEBUG] [Thread-192435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:28:32.700 [DEBUG] [Thread-192435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:28:32.700 [INFO] [Thread-192435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] client lang: <none>
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] server lang: <none>
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] kex follows: False
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] Compression: none
2025-11-24T15:28:32.711 [DEBUG] [Thread-192435] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:28:32.768 [DEBUG] [Thread-192435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:28:32.769 [DEBUG] [Thread-192435] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:28:32.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:28:32.769 [DEBUG] [Thread-192435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:28:32.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:28:32.824 [DEBUG] [Thread-192435] [transport.py] [_log()] userauth is OK
2025-11-24T15:28:32.824 [DEBUG] [Thread-192435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:28:32.824 [DEBUG] [Thread-192435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:28:32.824 [DEBUG] [Thread-192435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:28:32.824 [DEBUG] [Thread-192435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:28:32.837 [INFO] [Thread-192435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:28:32.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:28:32.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:28:33.642 [DEBUG] [Thread-192435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:28:33.643 [DEBUG] [Thread-192435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:28:33.690 [DEBUG] [Thread-192435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:28:33.690 [DEBUG] [Thread-192435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:28:33.700 [DEBUG] [Thread-192435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:28:33.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:28:33.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-11-24T15:28:33.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-11-24T15:28:33.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:28:33.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:28:33.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:28:33.735 [DEBUG] [Thread-192435] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:28:46.406 [DEBUG] [Thread-192437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:29:01.459 [DEBUG] [Thread-192438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:29:03.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:29:03.757 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:29:03.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-11-24T15:29:04.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 28, 31), 23.71, 20.38, 0.0, 30.47, 21.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:29:04.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:28:31
2025-11-24T15:29:04.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:29:04.920 [DEBUG] [Thread-192439] [transport.py] [_log()] starting thread (client mode): 0xd31b0ee0
2025-11-24T15:29:04.921 [DEBUG] [Thread-192439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:29:04.941 [DEBUG] [Thread-192439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:29:04.941 [INFO] [Thread-192439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] client lang: <none>
2025-11-24T15:29:04.944 [DEBUG] [Thread-192439] [transport.py] [_log()] server lang: <none>
2025-11-24T15:29:04.945 [DEBUG] [Thread-192439] [transport.py] [_log()] kex follows: False
2025-11-24T15:29:04.945 [DEBUG] [Thread-192439] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:29:04.945 [DEBUG] [Thread-192439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:29:04.945 [DEBUG] [Thread-192439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:29:04.945 [DEBUG] [Thread-192439] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:29:04.945 [DEBUG] [Thread-192439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:29:04.945 [DEBUG] [Thread-192439] [transport.py] [_log()] Compression: none
2025-11-24T15:29:04.945 [DEBUG] [Thread-192439] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:29:04.963 [DEBUG] [Thread-192439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:29:04.964 [DEBUG] [Thread-192439] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:29:04.964 [DEBUG] [Thread-192439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:29:04.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:29:04.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:29:04.965 [DEBUG] [Thread-192439] [transport.py] [_log()] userauth is OK
2025-11-24T15:29:04.965 [DEBUG] [Thread-192439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:29:04.965 [DEBUG] [Thread-192439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:29:04.965 [DEBUG] [Thread-192439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:29:04.965 [DEBUG] [Thread-192439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:29:04.986 [INFO] [Thread-192439] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:29:04.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:29:05.609 [DEBUG] [Thread-192439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:29:05.609 [DEBUG] [Thread-192439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:29:05.609 [DEBUG] [Thread-192439] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:29:05.650 [DEBUG] [Thread-192439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:29:05.650 [DEBUG] [Thread-192439] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:29:05.652 [DEBUG] [Thread-192439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:29:05.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:29:05.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:29:05.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:29:05.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:29:05.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:29:05.669 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:29:05.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:29:05.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:29:05.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:29:05.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.561158 -999.00  +22.00  27.28     25   +1.30 1 1 1 1 1   888    0 21.97 34.92 ----- 26.0 27.3 172.6 39.1 27.2 -28.4 26.4 -29.2 28.1 -28.5 28.9 -31.1
2025-11-24T15:29:05.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:29:05.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:29:05.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.561158
2025-11-24T15:29:05.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:29:05.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:29:05.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:29:05.670 [DEBUG] [Thread-192439] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:29:05.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:29:05.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:29:05.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:28:31', tmtdew=23.71, humidity=20.38, cloud=0.0, wind=30.47, temperature=21.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:28:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:29:05.745 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:29:05.760 [DEBUG] [Thread-192442] [transport.py] [_log()] starting thread (client mode): 0xd31b0dc0
2025-11-24T15:29:05.760 [DEBUG] [Thread-192442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:29:05.777 [DEBUG] [Thread-192442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:29:05.777 [INFO] [Thread-192442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] client lang: <none>
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] server lang: <none>
2025-11-24T15:29:05.788 [DEBUG] [Thread-192442] [transport.py] [_log()] kex follows: False
2025-11-24T15:29:05.789 [DEBUG] [Thread-192442] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:29:05.789 [DEBUG] [Thread-192442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:29:05.789 [DEBUG] [Thread-192442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:29:05.789 [DEBUG] [Thread-192442] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:29:05.789 [DEBUG] [Thread-192442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:29:05.789 [DEBUG] [Thread-192442] [transport.py] [_log()] Compression: none
2025-11-24T15:29:05.789 [DEBUG] [Thread-192442] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:29:05.846 [DEBUG] [Thread-192442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:29:05.846 [DEBUG] [Thread-192442] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:29:05.846 [DEBUG] [Thread-192442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:29:05.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:29:05.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:29:05.904 [DEBUG] [Thread-192442] [transport.py] [_log()] userauth is OK
2025-11-24T15:29:05.904 [DEBUG] [Thread-192442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:29:05.904 [DEBUG] [Thread-192442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:29:05.904 [DEBUG] [Thread-192442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:29:05.904 [DEBUG] [Thread-192442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:29:05.919 [INFO] [Thread-192442] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:29:05.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:29:05.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:29:06.787 [DEBUG] [Thread-192442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:29:06.788 [DEBUG] [Thread-192442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:29:06.835 [DEBUG] [Thread-192442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:29:06.835 [DEBUG] [Thread-192442] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:29:06.843 [DEBUG] [Thread-192442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:29:06.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:29:06.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:29:06.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-11-24T15:29:06.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:29:06.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:29:06.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:29:06.876 [DEBUG] [Thread-192442] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:29:16.504 [DEBUG] [Thread-192444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:29:26.930 [DEBUG] [Thread-192445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:29:31.550 [DEBUG] [Thread-192446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:29:36.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:29:36.871 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:29:36.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:29:37.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 29, 3), 23.63, 20.47, 0.0, 31.74, 21.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:29:37.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:29:03
2025-11-24T15:29:37.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:29:38.146 [DEBUG] [Thread-192447] [transport.py] [_log()] starting thread (client mode): 0xd31606d0
2025-11-24T15:29:38.146 [DEBUG] [Thread-192447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:29:38.157 [DEBUG] [Thread-192447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:29:38.157 [INFO] [Thread-192447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] client lang: <none>
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] server lang: <none>
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] kex follows: False
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] Compression: none
2025-11-24T15:29:38.160 [DEBUG] [Thread-192447] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:29:38.170 [DEBUG] [Thread-192447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:29:38.170 [DEBUG] [Thread-192447] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:29:38.170 [DEBUG] [Thread-192447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:29:38.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:29:38.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:29:38.171 [DEBUG] [Thread-192447] [transport.py] [_log()] userauth is OK
2025-11-24T15:29:38.171 [DEBUG] [Thread-192447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:29:38.171 [DEBUG] [Thread-192447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:29:38.171 [DEBUG] [Thread-192447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:29:38.171 [DEBUG] [Thread-192447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:29:38.180 [INFO] [Thread-192447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:29:38.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:29:38.746 [DEBUG] [Thread-192447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:29:38.746 [DEBUG] [Thread-192447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:29:38.746 [DEBUG] [Thread-192447] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:29:38.787 [DEBUG] [Thread-192447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:29:38.787 [DEBUG] [Thread-192447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:29:38.789 [DEBUG] [Thread-192447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:29:38.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:29:38.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:29:38.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:29:38.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:29:38.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:29:38.802 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:29:38.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:29:38.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:29:38.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:29:38.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.561505 -999.00  +22.10  26.04     25   +1.30 1 1 1 1 1   888    0 21.44 30.30 ----- 24.2 26.0 183.8 30.2 27.2 -27.8 26.5 -30.2 28.2 -26.1 29.0 -27.8
2025-11-24T15:29:38.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:29:38.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:29:38.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.561505
2025-11-24T15:29:38.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:29:38.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:29:38.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:29:38.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:29:38.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:29:38.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:29:03', tmtdew=23.63, humidity=20.47, cloud=0.0, wind=31.74, temperature=21.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:28:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:29:38.804 [DEBUG] [Thread-192447] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:29:38.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:29:38.891 [DEBUG] [Thread-192450] [transport.py] [_log()] starting thread (client mode): 0xd31625c0
2025-11-24T15:29:38.891 [DEBUG] [Thread-192450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:29:38.906 [DEBUG] [Thread-192450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:29:38.906 [INFO] [Thread-192450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] client lang: <none>
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] server lang: <none>
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] kex follows: False
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:29:38.914 [DEBUG] [Thread-192450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:29:38.915 [DEBUG] [Thread-192450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:29:38.915 [DEBUG] [Thread-192450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:29:38.915 [DEBUG] [Thread-192450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:29:38.915 [DEBUG] [Thread-192450] [transport.py] [_log()] Compression: none
2025-11-24T15:29:38.915 [DEBUG] [Thread-192450] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:29:38.971 [DEBUG] [Thread-192450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:29:38.972 [DEBUG] [Thread-192450] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:29:38.973 [DEBUG] [Thread-192450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:29:38.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:29:38.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:29:39.028 [DEBUG] [Thread-192450] [transport.py] [_log()] userauth is OK
2025-11-24T15:29:39.028 [DEBUG] [Thread-192450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:29:39.029 [DEBUG] [Thread-192450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:29:39.029 [DEBUG] [Thread-192450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:29:39.029 [DEBUG] [Thread-192450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:29:39.048 [INFO] [Thread-192450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:29:39.049 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:29:39.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:29:39.883 [DEBUG] [Thread-192450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:29:39.883 [DEBUG] [Thread-192450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:29:39.931 [DEBUG] [Thread-192450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:29:39.931 [DEBUG] [Thread-192450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:29:39.939 [DEBUG] [Thread-192450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:29:39.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:29:39.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-11-24T15:29:39.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:29:39.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:29:39.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:29:39.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:29:39.972 [DEBUG] [Thread-192450] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:29:46.585 [DEBUG] [Thread-192452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:30:01.647 [DEBUG] [Thread-192453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:30:09.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:30:09.993 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:30:09.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-11-24T15:30:10.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 29, 36), 23.44, 20.95, 0.0, 28.07, 21.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:30:10.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:29:36
2025-11-24T15:30:11.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:30:11.225 [DEBUG] [Thread-192454] [transport.py] [_log()] starting thread (client mode): 0xd31600a0
2025-11-24T15:30:11.226 [DEBUG] [Thread-192454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:30:11.245 [DEBUG] [Thread-192454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:30:11.246 [INFO] [Thread-192454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:30:11.248 [DEBUG] [Thread-192454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:30:11.248 [DEBUG] [Thread-192454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] client lang: <none>
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] server lang: <none>
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] kex follows: False
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] Compression: none
2025-11-24T15:30:11.249 [DEBUG] [Thread-192454] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:30:11.265 [DEBUG] [Thread-192454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:30:11.265 [DEBUG] [Thread-192454] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:30:11.266 [DEBUG] [Thread-192454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:30:11.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:30:11.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:30:11.267 [DEBUG] [Thread-192454] [transport.py] [_log()] userauth is OK
2025-11-24T15:30:11.267 [DEBUG] [Thread-192454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:30:11.267 [DEBUG] [Thread-192454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:30:11.267 [DEBUG] [Thread-192454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:30:11.267 [DEBUG] [Thread-192454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:30:11.286 [INFO] [Thread-192454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:30:11.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:30:13.820 [DEBUG] [Thread-192454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:30:13.820 [DEBUG] [Thread-192454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:30:13.821 [DEBUG] [Thread-192454] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:30:13.861 [DEBUG] [Thread-192454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:30:13.862 [DEBUG] [Thread-192454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:30:13.865 [DEBUG] [Thread-192454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:30:13.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:30:13.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:30:13.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:30:13.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:30:13.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:30:13.903 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:30:13.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:30:13.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:30:13.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:30:13.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.562547 -999.00  +22.10  19.17     25   +1.30 1 1 1 1 1   888    0 21.12 26.15 ----- 18.8 19.2 180.8 22.6 27.2 -27.8 26.4 -29.7 28.2 -26.0 29.0 -28.5
2025-11-24T15:30:13.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:30:13.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:30:13.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.562547
2025-11-24T15:30:13.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:30:13.905 [DEBUG] [Thread-192454] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:30:13.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:30:13.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:30:13.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:30:13.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:30:13.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:29:36', tmtdew=23.44, humidity=20.95, cloud=0.0, wind=28.07, temperature=21.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:30:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:30:13.987 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:30:13.997 [DEBUG] [Thread-192457] [transport.py] [_log()] starting thread (client mode): 0xd31b2b30
2025-11-24T15:30:13.998 [DEBUG] [Thread-192457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:30:14.012 [DEBUG] [Thread-192457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:30:14.012 [INFO] [Thread-192457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] client lang: <none>
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] server lang: <none>
2025-11-24T15:30:14.020 [DEBUG] [Thread-192457] [transport.py] [_log()] kex follows: False
2025-11-24T15:30:14.021 [DEBUG] [Thread-192457] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:30:14.021 [DEBUG] [Thread-192457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:30:14.021 [DEBUG] [Thread-192457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:30:14.021 [DEBUG] [Thread-192457] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:30:14.021 [DEBUG] [Thread-192457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:30:14.021 [DEBUG] [Thread-192457] [transport.py] [_log()] Compression: none
2025-11-24T15:30:14.021 [DEBUG] [Thread-192457] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:30:14.079 [DEBUG] [Thread-192457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:30:14.080 [DEBUG] [Thread-192457] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:30:14.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:30:14.081 [DEBUG] [Thread-192457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:30:14.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:30:14.135 [DEBUG] [Thread-192457] [transport.py] [_log()] userauth is OK
2025-11-24T15:30:14.136 [DEBUG] [Thread-192457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:30:14.136 [DEBUG] [Thread-192457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:30:14.136 [DEBUG] [Thread-192457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:30:14.136 [DEBUG] [Thread-192457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:30:14.159 [INFO] [Thread-192457] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:30:14.159 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:30:14.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:30:14.994 [DEBUG] [Thread-192457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:30:14.994 [DEBUG] [Thread-192457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:30:15.042 [DEBUG] [Thread-192457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:30:15.042 [DEBUG] [Thread-192457] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:30:15.050 [DEBUG] [Thread-192457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:30:15.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:30:15.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:30:15.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-11-24T15:30:15.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:30:15.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:30:15.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:30:15.091 [DEBUG] [Thread-192457] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:30:16.679 [DEBUG] [Thread-192459 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:30:27.151 [DEBUG] [Thread-192460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:30:31.738 [DEBUG] [Thread-192461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:30:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:30:45.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:30:45.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-11-24T15:30:45.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 30, 41), 23.2, 20.8, 0.0, 15.86, 21.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:30:45.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:30:41
2025-11-24T15:30:46.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:30:46.170 [DEBUG] [Thread-192462] [transport.py] [_log()] starting thread (client mode): 0xd3162290
2025-11-24T15:30:46.170 [DEBUG] [Thread-192462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:30:46.183 [DEBUG] [Thread-192462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:30:46.183 [INFO] [Thread-192462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:30:46.185 [DEBUG] [Thread-192462] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] client lang: <none>
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] server lang: <none>
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] kex follows: False
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:30:46.186 [DEBUG] [Thread-192462] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:30:46.187 [DEBUG] [Thread-192462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:30:46.187 [DEBUG] [Thread-192462] [transport.py] [_log()] Compression: none
2025-11-24T15:30:46.187 [DEBUG] [Thread-192462] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:30:46.214 [DEBUG] [Thread-192462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:30:46.216 [DEBUG] [Thread-192462] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:30:46.217 [DEBUG] [Thread-192462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:30:46.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:30:46.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:30:46.261 [DEBUG] [Thread-192462] [transport.py] [_log()] userauth is OK
2025-11-24T15:30:46.261 [DEBUG] [Thread-192462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:30:46.261 [DEBUG] [Thread-192462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:30:46.262 [DEBUG] [Thread-192462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:30:46.262 [DEBUG] [Thread-192462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:30:46.288 [INFO] [Thread-192462] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:30:46.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:30:46.773 [DEBUG] [Thread-192464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:30:46.869 [DEBUG] [Thread-192462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:30:46.869 [DEBUG] [Thread-192462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:30:46.870 [DEBUG] [Thread-192462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:30:46.911 [DEBUG] [Thread-192462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:30:46.911 [DEBUG] [Thread-192462] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:30:46.917 [DEBUG] [Thread-192462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:30:46.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:30:46.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:30:46.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:30:46.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:30:46.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:30:46.937 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:30:46.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:30:46.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:30:46.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:30:46.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.562894 -999.00  +21.80  13.58     25   +1.30 1 1 1 1 1   888    0 21.38 25.76 ----- 13.8 13.6 190.4 18.2 27.2 -27.9 26.4 -30.5 28.3 -26.1 28.9 -28.2
2025-11-24T15:30:46.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:30:46.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:30:46.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.562894
2025-11-24T15:30:46.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:30:46.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:30:46.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:30:46.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:30:46.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:30:46.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:30:41', tmtdew=23.2, humidity=20.8, cloud=0.0, wind=15.86, temperature=21.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:30:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:30:46.944 [DEBUG] [Thread-192462] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:30:47.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:30:47.044 [DEBUG] [Thread-192466] [transport.py] [_log()] starting thread (client mode): 0xd3160be0
2025-11-24T15:30:47.044 [DEBUG] [Thread-192466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:30:47.058 [DEBUG] [Thread-192466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:30:47.058 [INFO] [Thread-192466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:30:47.065 [DEBUG] [Thread-192466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] client lang: <none>
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] server lang: <none>
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] kex follows: False
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:30:47.066 [DEBUG] [Thread-192466] [transport.py] [_log()] Compression: none
2025-11-24T15:30:47.067 [DEBUG] [Thread-192466] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:30:47.122 [DEBUG] [Thread-192466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:30:47.123 [DEBUG] [Thread-192466] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:30:47.123 [DEBUG] [Thread-192466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:30:47.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:30:47.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:30:47.179 [DEBUG] [Thread-192466] [transport.py] [_log()] userauth is OK
2025-11-24T15:30:47.179 [DEBUG] [Thread-192466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:30:47.179 [DEBUG] [Thread-192466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:30:47.179 [DEBUG] [Thread-192466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:30:47.179 [DEBUG] [Thread-192466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:30:47.203 [INFO] [Thread-192466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:30:47.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:30:47.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:30:48.054 [DEBUG] [Thread-192466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:30:48.063 [DEBUG] [Thread-192466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:30:48.102 [DEBUG] [Thread-192466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:30:48.102 [DEBUG] [Thread-192466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:30:48.110 [DEBUG] [Thread-192466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:30:48.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:30:48.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:30:48.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:30:48.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:30:48.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:30:48.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:30:48.142 [DEBUG] [Thread-192466] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:31:01.806 [DEBUG] [Thread-192468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:31:16.872 [DEBUG] [Thread-192469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:31:18.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:31:18.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:31:18.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-11-24T15:31:18.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 31, 13), 23.13, 20.88, 0.0, 17.54, 21.0, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:31:18.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:31:13
2025-11-24T15:31:19.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:31:19.239 [DEBUG] [Thread-192470] [transport.py] [_log()] starting thread (client mode): 0xd31b0940
2025-11-24T15:31:19.239 [DEBUG] [Thread-192470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:31:19.259 [DEBUG] [Thread-192470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:31:19.259 [INFO] [Thread-192470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] client lang: <none>
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] server lang: <none>
2025-11-24T15:31:19.262 [DEBUG] [Thread-192470] [transport.py] [_log()] kex follows: False
2025-11-24T15:31:19.263 [DEBUG] [Thread-192470] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:31:19.263 [DEBUG] [Thread-192470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:31:19.263 [DEBUG] [Thread-192470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:31:19.263 [DEBUG] [Thread-192470] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:31:19.263 [DEBUG] [Thread-192470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:31:19.263 [DEBUG] [Thread-192470] [transport.py] [_log()] Compression: none
2025-11-24T15:31:19.263 [DEBUG] [Thread-192470] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:31:19.281 [DEBUG] [Thread-192470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:31:19.281 [DEBUG] [Thread-192470] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:31:19.282 [DEBUG] [Thread-192470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:31:19.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:31:19.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:31:19.284 [DEBUG] [Thread-192470] [transport.py] [_log()] userauth is OK
2025-11-24T15:31:19.285 [DEBUG] [Thread-192470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:31:19.285 [DEBUG] [Thread-192470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:31:19.285 [DEBUG] [Thread-192470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:31:19.285 [DEBUG] [Thread-192470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:31:19.306 [INFO] [Thread-192470] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:31:19.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:31:19.867 [DEBUG] [Thread-192470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:31:19.868 [DEBUG] [Thread-192470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:31:19.868 [DEBUG] [Thread-192470] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:31:19.909 [DEBUG] [Thread-192470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:31:19.909 [DEBUG] [Thread-192470] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:31:19.912 [DEBUG] [Thread-192470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:31:19.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:31:19.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:31:19.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:31:19.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:31:19.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:31:19.935 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:31:19.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:31:19.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:31:19.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:31:19.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.562894 -999.00  +21.80  13.58     25   +1.30 1 1 1 1 1   888    0 21.38 25.76 ----- 13.8 13.6 190.4 18.2 27.2 -27.9 26.4 -30.5 28.3 -26.1 28.9 -28.2
2025-11-24T15:31:19.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:31:19.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:31:19.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.562894
2025-11-24T15:31:19.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:31:19.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:31:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:31:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:31:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:31:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:31:13', tmtdew=23.13, humidity=20.88, cloud=0.0, wind=17.54, temperature=21.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:30:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:31:19.939 [DEBUG] [Thread-192470] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:31:20.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:31:20.037 [DEBUG] [Thread-192473] [transport.py] [_log()] starting thread (client mode): 0xd3163970
2025-11-24T15:31:20.037 [DEBUG] [Thread-192473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:31:20.051 [DEBUG] [Thread-192473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:31:20.051 [INFO] [Thread-192473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:31:20.059 [DEBUG] [Thread-192473] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:31:20.059 [DEBUG] [Thread-192473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:31:20.059 [DEBUG] [Thread-192473] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:31:20.060 [DEBUG] [Thread-192473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:31:20.060 [DEBUG] [Thread-192473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:31:20.060 [DEBUG] [Thread-192473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:31:20.060 [DEBUG] [Thread-192473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:31:20.060 [DEBUG] [Thread-192473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:31:20.060 [DEBUG] [Thread-192473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:31:20.060 [DEBUG] [Thread-192473] [transport.py] [_log()] client lang: <none>
2025-11-24T15:31:20.060 [DEBUG] [Thread-192473] [transport.py] [_log()] server lang: <none>
2025-11-24T15:31:20.060 [DEBUG] [Thread-192473] [transport.py] [_log()] kex follows: False
2025-11-24T15:31:20.060 [DEBUG] [Thread-192473] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:31:20.061 [DEBUG] [Thread-192473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:31:20.061 [DEBUG] [Thread-192473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:31:20.061 [DEBUG] [Thread-192473] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:31:20.061 [DEBUG] [Thread-192473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:31:20.061 [DEBUG] [Thread-192473] [transport.py] [_log()] Compression: none
2025-11-24T15:31:20.061 [DEBUG] [Thread-192473] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:31:20.119 [DEBUG] [Thread-192473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:31:20.120 [DEBUG] [Thread-192473] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:31:20.120 [DEBUG] [Thread-192473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:31:20.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:31:20.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:31:20.175 [DEBUG] [Thread-192473] [transport.py] [_log()] userauth is OK
2025-11-24T15:31:20.175 [DEBUG] [Thread-192473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:31:20.175 [DEBUG] [Thread-192473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:31:20.175 [DEBUG] [Thread-192473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:31:20.176 [DEBUG] [Thread-192473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:31:20.196 [INFO] [Thread-192473] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:31:20.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:31:20.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:31:21.007 [DEBUG] [Thread-192473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:31:21.007 [DEBUG] [Thread-192473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:31:21.055 [DEBUG] [Thread-192473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:31:21.055 [DEBUG] [Thread-192473] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:31:21.064 [DEBUG] [Thread-192473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:31:21.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:31:21.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-11-24T15:31:21.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:31:21.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:31:21.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:31:21.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:31:21.103 [DEBUG] [Thread-192473] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:31:27.406 [DEBUG] [Thread-192475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:31:31.907 [DEBUG] [Thread-192476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:31:46.947 [DEBUG] [Thread-192477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:31:51.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:31:51.099 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:31:51.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-11-24T15:31:51.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 31, 45), 23.58, 20.7, 0.0, 27.86, 21.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:31:51.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:31:45
2025-11-24T15:31:52.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:31:52.266 [DEBUG] [Thread-192478] [transport.py] [_log()] starting thread (client mode): 0xd31b16f0
2025-11-24T15:31:52.266 [DEBUG] [Thread-192478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:31:52.281 [DEBUG] [Thread-192478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:31:52.282 [INFO] [Thread-192478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:31:52.286 [DEBUG] [Thread-192478] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:31:52.286 [DEBUG] [Thread-192478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:31:52.286 [DEBUG] [Thread-192478] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:31:52.286 [DEBUG] [Thread-192478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:31:52.286 [DEBUG] [Thread-192478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:31:52.286 [DEBUG] [Thread-192478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:31:52.286 [DEBUG] [Thread-192478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:31:52.286 [DEBUG] [Thread-192478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:31:52.286 [DEBUG] [Thread-192478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:31:52.286 [DEBUG] [Thread-192478] [transport.py] [_log()] client lang: <none>
2025-11-24T15:31:52.287 [DEBUG] [Thread-192478] [transport.py] [_log()] server lang: <none>
2025-11-24T15:31:52.287 [DEBUG] [Thread-192478] [transport.py] [_log()] kex follows: False
2025-11-24T15:31:52.287 [DEBUG] [Thread-192478] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:31:52.287 [DEBUG] [Thread-192478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:31:52.287 [DEBUG] [Thread-192478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:31:52.288 [DEBUG] [Thread-192478] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:31:52.288 [DEBUG] [Thread-192478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:31:52.288 [DEBUG] [Thread-192478] [transport.py] [_log()] Compression: none
2025-11-24T15:31:52.288 [DEBUG] [Thread-192478] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:31:52.318 [DEBUG] [Thread-192478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:31:52.322 [DEBUG] [Thread-192478] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:31:52.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:31:52.325 [DEBUG] [Thread-192478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:31:52.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:31:52.328 [DEBUG] [Thread-192478] [transport.py] [_log()] userauth is OK
2025-11-24T15:31:52.328 [DEBUG] [Thread-192478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:31:52.328 [DEBUG] [Thread-192478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:31:52.328 [DEBUG] [Thread-192478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:31:52.328 [DEBUG] [Thread-192478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:31:52.352 [INFO] [Thread-192478] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:31:52.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:31:52.951 [DEBUG] [Thread-192478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:31:52.951 [DEBUG] [Thread-192478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:31:52.952 [DEBUG] [Thread-192478] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:31:52.992 [DEBUG] [Thread-192478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:31:52.993 [DEBUG] [Thread-192478] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:31:52.996 [DEBUG] [Thread-192478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:31:53.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:31:53.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:31:53.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:31:53.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:31:53.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:31:53.020 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:31:53.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:31:53.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:31:53.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:31:53.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.563241 -999.00  +21.80  26.60     25   +1.30 1 1 1 1 1   888    0 21.71 25.49 ----- 27.2 26.6 179.4 36.9 27.2 -29.7 26.3 -34.5 28.3 -28.2 29.1 -28.1
2025-11-24T15:31:53.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:31:53.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:31:53.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.563241
2025-11-24T15:31:53.028 [DEBUG] [Thread-192478] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:31:53.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:31:53.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:31:53.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:31:53.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:31:53.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:31:53.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:31:45', tmtdew=23.58, humidity=20.7, cloud=0.0, wind=27.86, temperature=21.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:31:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:31:53.126 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:31:53.138 [DEBUG] [Thread-192481] [transport.py] [_log()] starting thread (client mode): 0xd31b3c10
2025-11-24T15:31:53.138 [DEBUG] [Thread-192481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:31:53.154 [DEBUG] [Thread-192481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:31:53.154 [INFO] [Thread-192481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:31:53.161 [DEBUG] [Thread-192481] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:31:53.162 [DEBUG] [Thread-192481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:31:53.162 [DEBUG] [Thread-192481] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:31:53.162 [DEBUG] [Thread-192481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:31:53.162 [DEBUG] [Thread-192481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:31:53.162 [DEBUG] [Thread-192481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:31:53.162 [DEBUG] [Thread-192481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:31:53.162 [DEBUG] [Thread-192481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:31:53.162 [DEBUG] [Thread-192481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:31:53.163 [DEBUG] [Thread-192481] [transport.py] [_log()] client lang: <none>
2025-11-24T15:31:53.163 [DEBUG] [Thread-192481] [transport.py] [_log()] server lang: <none>
2025-11-24T15:31:53.163 [DEBUG] [Thread-192481] [transport.py] [_log()] kex follows: False
2025-11-24T15:31:53.163 [DEBUG] [Thread-192481] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:31:53.163 [DEBUG] [Thread-192481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:31:53.163 [DEBUG] [Thread-192481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:31:53.163 [DEBUG] [Thread-192481] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:31:53.163 [DEBUG] [Thread-192481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:31:53.164 [DEBUG] [Thread-192481] [transport.py] [_log()] Compression: none
2025-11-24T15:31:53.164 [DEBUG] [Thread-192481] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:31:53.224 [DEBUG] [Thread-192481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:31:53.225 [DEBUG] [Thread-192481] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:31:53.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:31:53.227 [DEBUG] [Thread-192481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:31:53.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:31:53.283 [DEBUG] [Thread-192481] [transport.py] [_log()] userauth is OK
2025-11-24T15:31:53.283 [DEBUG] [Thread-192481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:31:53.283 [DEBUG] [Thread-192481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:31:53.283 [DEBUG] [Thread-192481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:31:53.283 [DEBUG] [Thread-192481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:31:53.305 [INFO] [Thread-192481] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:31:53.305 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:31:53.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:31:54.126 [DEBUG] [Thread-192481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:31:54.126 [DEBUG] [Thread-192481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:31:54.174 [DEBUG] [Thread-192481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:31:54.174 [DEBUG] [Thread-192481] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:31:54.182 [DEBUG] [Thread-192481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:31:54.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:31:54.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-11-24T15:31:54.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-11-24T15:31:54.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:31:54.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:31:54.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:31:54.223 [DEBUG] [Thread-192481] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:32:01.979 [DEBUG] [Thread-192483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:32:17.031 [DEBUG] [Thread-192484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:32:24.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:32:24.246 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:32:24.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:32:24.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 32, 18), 23.72, 20.55, 0.0, 30.77, 21.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:32:24.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:32:18
2025-11-24T15:32:25.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:32:25.283 [DEBUG] [Thread-192485] [transport.py] [_log()] starting thread (client mode): 0xd07aa200
2025-11-24T15:32:25.283 [DEBUG] [Thread-192485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:32:25.306 [DEBUG] [Thread-192485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:32:25.306 [INFO] [Thread-192485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:32:25.309 [DEBUG] [Thread-192485] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:32:25.309 [DEBUG] [Thread-192485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:32:25.310 [DEBUG] [Thread-192485] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:32:25.310 [DEBUG] [Thread-192485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:32:25.310 [DEBUG] [Thread-192485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:32:25.310 [DEBUG] [Thread-192485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:32:25.310 [DEBUG] [Thread-192485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:32:25.310 [DEBUG] [Thread-192485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:32:25.310 [DEBUG] [Thread-192485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:32:25.310 [DEBUG] [Thread-192485] [transport.py] [_log()] client lang: <none>
2025-11-24T15:32:25.310 [DEBUG] [Thread-192485] [transport.py] [_log()] server lang: <none>
2025-11-24T15:32:25.310 [DEBUG] [Thread-192485] [transport.py] [_log()] kex follows: False
2025-11-24T15:32:25.311 [DEBUG] [Thread-192485] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:32:25.311 [DEBUG] [Thread-192485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:32:25.311 [DEBUG] [Thread-192485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:32:25.311 [DEBUG] [Thread-192485] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:32:25.311 [DEBUG] [Thread-192485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:32:25.311 [DEBUG] [Thread-192485] [transport.py] [_log()] Compression: none
2025-11-24T15:32:25.311 [DEBUG] [Thread-192485] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:32:25.329 [DEBUG] [Thread-192485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:32:25.330 [DEBUG] [Thread-192485] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:32:25.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:32:25.330 [DEBUG] [Thread-192485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:32:25.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:32:25.332 [DEBUG] [Thread-192485] [transport.py] [_log()] userauth is OK
2025-11-24T15:32:25.333 [DEBUG] [Thread-192485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:32:25.333 [DEBUG] [Thread-192485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:32:25.333 [DEBUG] [Thread-192485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:32:25.333 [DEBUG] [Thread-192485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:32:25.356 [INFO] [Thread-192485] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:32:25.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:32:25.969 [DEBUG] [Thread-192485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:32:25.969 [DEBUG] [Thread-192485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:32:25.969 [DEBUG] [Thread-192485] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:32:26.010 [DEBUG] [Thread-192485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:32:26.010 [DEBUG] [Thread-192485] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:32:26.012 [DEBUG] [Thread-192485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:32:26.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:32:26.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:32:26.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:32:26.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:32:26.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:32:26.042 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:32:26.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.563589 -999.00  +21.70  21.24     25   +1.30 1 1 1 1 1   888    0 21.38 24.54 ----- 22.0 21.2 180.4 37.7 27.0 -28.5 26.2 -30.3 28.1 -27.1 28.8 -28.3
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.563589
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:32:26.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:32:18', tmtdew=23.72, humidity=20.55, cloud=0.0, wind=30.77, temperature=21.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:31:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:32:26.042 [DEBUG] [Thread-192485] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:32:26.115 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:32:26.128 [DEBUG] [Thread-192488] [transport.py] [_log()] starting thread (client mode): 0xd07abf70
2025-11-24T15:32:26.128 [DEBUG] [Thread-192488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:32:26.143 [DEBUG] [Thread-192488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:32:26.143 [INFO] [Thread-192488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] client lang: <none>
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] server lang: <none>
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] kex follows: False
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:32:26.150 [DEBUG] [Thread-192488] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:32:26.151 [DEBUG] [Thread-192488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:32:26.151 [DEBUG] [Thread-192488] [transport.py] [_log()] Compression: none
2025-11-24T15:32:26.151 [DEBUG] [Thread-192488] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:32:26.208 [DEBUG] [Thread-192488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:32:26.208 [DEBUG] [Thread-192488] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:32:26.209 [DEBUG] [Thread-192488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:32:26.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:32:26.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:32:26.265 [DEBUG] [Thread-192488] [transport.py] [_log()] userauth is OK
2025-11-24T15:32:26.265 [DEBUG] [Thread-192488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:32:26.265 [DEBUG] [Thread-192488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:32:26.265 [DEBUG] [Thread-192488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:32:26.265 [DEBUG] [Thread-192488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:32:26.279 [INFO] [Thread-192488] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:32:26.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:32:26.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:32:27.136 [DEBUG] [Thread-192488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:32:27.136 [DEBUG] [Thread-192488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:32:27.184 [DEBUG] [Thread-192488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:32:27.185 [DEBUG] [Thread-192488] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:32:27.194 [DEBUG] [Thread-192488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:32:27.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:32:27.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-11-24T15:32:27.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-11-24T15:32:27.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:32:27.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:32:27.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:32:27.231 [DEBUG] [Thread-192488] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:32:27.726 [DEBUG] [Thread-192490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:32:32.066 [DEBUG] [Thread-192491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:32:47.119 [DEBUG] [Thread-192492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:32:57.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:32:57.253 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:32:57.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-11-24T15:32:57.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 32, 50), 24.2, 19.72, 0.0, 32.02, 22.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:32:57.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:32:50
2025-11-24T15:32:58.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:32:58.246 [DEBUG] [Thread-192493] [transport.py] [_log()] starting thread (client mode): 0xd31b3a90
2025-11-24T15:32:58.246 [DEBUG] [Thread-192493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:32:58.266 [DEBUG] [Thread-192493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:32:58.266 [INFO] [Thread-192493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:32:58.267 [DEBUG] [Thread-192493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:32:58.267 [DEBUG] [Thread-192493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:32:58.267 [DEBUG] [Thread-192493] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:32:58.267 [DEBUG] [Thread-192493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:32:58.267 [DEBUG] [Thread-192493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:32:58.267 [DEBUG] [Thread-192493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] client lang: <none>
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] server lang: <none>
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] kex follows: False
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] Compression: none
2025-11-24T15:32:58.268 [DEBUG] [Thread-192493] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:32:58.276 [DEBUG] [Thread-192493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:32:58.276 [DEBUG] [Thread-192493] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:32:58.276 [DEBUG] [Thread-192493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:32:58.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:32:58.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:32:58.277 [DEBUG] [Thread-192493] [transport.py] [_log()] userauth is OK
2025-11-24T15:32:58.277 [DEBUG] [Thread-192493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:32:58.277 [DEBUG] [Thread-192493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:32:58.277 [DEBUG] [Thread-192493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:32:58.277 [DEBUG] [Thread-192493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:32:58.289 [INFO] [Thread-192493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:32:58.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:32:58.886 [DEBUG] [Thread-192493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:32:58.886 [DEBUG] [Thread-192493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:32:58.886 [DEBUG] [Thread-192493] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:32:58.927 [DEBUG] [Thread-192493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:32:58.927 [DEBUG] [Thread-192493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:32:58.930 [DEBUG] [Thread-192493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:32:58.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:32:58.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:32:58.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:32:58.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:32:58.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:32:58.946 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:32:58.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:32:58.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:32:58.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:32:58.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.563936 -999.00  +21.60  22.04     26   +1.30 1 1 1 1 1   888    0 21.60 23.12 ----- 27.9 22.0 180.0 33.5 26.9 -28.5 26.1 -31.3 28.0 -28.8 28.8 -28.0
2025-11-24T15:32:58.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:32:58.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:32:58.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.563936
2025-11-24T15:32:58.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:32:58.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:32:58.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:32:58.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:32:58.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:32:58.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:32:50', tmtdew=24.2, humidity=19.72, cloud=0.0, wind=32.02, temperature=22.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:32:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:32:58.948 [DEBUG] [Thread-192493] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:32:59.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:32:59.033 [DEBUG] [Thread-192496] [transport.py] [_log()] starting thread (client mode): 0xd31b0400
2025-11-24T15:32:59.033 [DEBUG] [Thread-192496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:32:59.050 [DEBUG] [Thread-192496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:32:59.050 [INFO] [Thread-192496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:32:59.057 [DEBUG] [Thread-192496] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:32:59.057 [DEBUG] [Thread-192496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] client lang: <none>
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] server lang: <none>
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] kex follows: False
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] Compression: none
2025-11-24T15:32:59.058 [DEBUG] [Thread-192496] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:32:59.116 [DEBUG] [Thread-192496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:32:59.116 [DEBUG] [Thread-192496] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:32:59.116 [DEBUG] [Thread-192496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:32:59.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:32:59.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:32:59.174 [DEBUG] [Thread-192496] [transport.py] [_log()] userauth is OK
2025-11-24T15:32:59.175 [DEBUG] [Thread-192496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:32:59.175 [DEBUG] [Thread-192496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:32:59.175 [DEBUG] [Thread-192496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:32:59.175 [DEBUG] [Thread-192496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:32:59.188 [INFO] [Thread-192496] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:32:59.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:32:59.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:33:00.027 [DEBUG] [Thread-192496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:33:00.027 [DEBUG] [Thread-192496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:33:00.076 [DEBUG] [Thread-192496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:33:00.076 [DEBUG] [Thread-192496] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:33:00.084 [DEBUG] [Thread-192496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:33:00.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:33:00.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:33:00.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-11-24T15:33:00.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:33:00.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:33:00.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:33:00.116 [DEBUG] [Thread-192496] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:33:02.153 [DEBUG] [Thread-192498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:33:17.204 [DEBUG] [Thread-192499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:33:27.894 [DEBUG] [Thread-192500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:33:30.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:33:30.137 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:33:30.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-11-24T15:33:31.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 33, 23), 24.28, 19.64, 0.0, 31.11, 22.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:33:31.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:33:23
2025-11-24T15:33:31.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:33:31.429 [DEBUG] [Thread-192501] [transport.py] [_log()] starting thread (client mode): 0xd07aba30
2025-11-24T15:33:31.429 [DEBUG] [Thread-192501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:33:31.439 [DEBUG] [Thread-192501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:33:31.439 [INFO] [Thread-192501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:33:31.442 [DEBUG] [Thread-192501] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] client lang: <none>
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] server lang: <none>
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] kex follows: False
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:33:31.443 [DEBUG] [Thread-192501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:33:31.444 [DEBUG] [Thread-192501] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:33:31.444 [DEBUG] [Thread-192501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:33:31.444 [DEBUG] [Thread-192501] [transport.py] [_log()] Compression: none
2025-11-24T15:33:31.444 [DEBUG] [Thread-192501] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:33:31.464 [DEBUG] [Thread-192501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:33:31.465 [DEBUG] [Thread-192501] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:33:31.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:33:31.466 [DEBUG] [Thread-192501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:33:31.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:33:31.509 [DEBUG] [Thread-192501] [transport.py] [_log()] userauth is OK
2025-11-24T15:33:31.509 [DEBUG] [Thread-192501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:33:31.509 [DEBUG] [Thread-192501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:33:31.510 [DEBUG] [Thread-192501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:33:31.510 [DEBUG] [Thread-192501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:33:31.541 [INFO] [Thread-192501] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:33:31.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:33:32.107 [DEBUG] [Thread-192501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:33:32.107 [DEBUG] [Thread-192501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:33:32.108 [DEBUG] [Thread-192501] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:33:32.148 [DEBUG] [Thread-192501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:33:32.149 [DEBUG] [Thread-192501] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:33:32.152 [DEBUG] [Thread-192501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:33:32.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:33:32.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:33:32.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:33:32.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:33:32.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:33:32.184 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:33:32.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:33:32.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:33:32.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:33:32.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.564283 -999.00  +21.80  24.77     25   +1.30 1 1 1 1 1   888    0 21.75 20.54 ----- 25.2 24.8 178.8 42.1 26.9 -28.7 26.2 -30.3 28.0 -28.1 28.8 -27.2
2025-11-24T15:33:32.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:33:32.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:33:32.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.564283
2025-11-24T15:33:32.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:33:32.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:33:32.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:33:32.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:33:32.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:33:32.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:33:23', tmtdew=24.28, humidity=19.64, cloud=0.0, wind=31.11, temperature=22.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:32:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:33:32.188 [DEBUG] [Thread-192501] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:33:32.234 [DEBUG] [Thread-192504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:33:32.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:33:32.285 [DEBUG] [Thread-192505] [transport.py] [_log()] starting thread (client mode): 0xd3160fa0
2025-11-24T15:33:32.285 [DEBUG] [Thread-192505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:33:32.299 [DEBUG] [Thread-192505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:33:32.300 [INFO] [Thread-192505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:33:32.307 [DEBUG] [Thread-192505] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:33:32.307 [DEBUG] [Thread-192505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] client lang: <none>
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] server lang: <none>
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] kex follows: False
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:33:32.308 [DEBUG] [Thread-192505] [transport.py] [_log()] Compression: none
2025-11-24T15:33:32.309 [DEBUG] [Thread-192505] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:33:32.365 [DEBUG] [Thread-192505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:33:32.366 [DEBUG] [Thread-192505] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:33:32.367 [DEBUG] [Thread-192505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:33:32.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:33:32.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:33:32.422 [DEBUG] [Thread-192505] [transport.py] [_log()] userauth is OK
2025-11-24T15:33:32.422 [DEBUG] [Thread-192505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:33:32.422 [DEBUG] [Thread-192505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:33:32.422 [DEBUG] [Thread-192505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:33:32.422 [DEBUG] [Thread-192505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:33:32.444 [INFO] [Thread-192505] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:33:32.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:33:32.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:33:33.289 [DEBUG] [Thread-192505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:33:33.289 [DEBUG] [Thread-192505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:33:33.337 [DEBUG] [Thread-192505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:33:33.338 [DEBUG] [Thread-192505] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:33:33.347 [DEBUG] [Thread-192505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:33:33.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:33:33.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-11-24T15:33:33.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:33:33.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:33:33.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:33:33.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:33:33.384 [DEBUG] [Thread-192505] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:33:47.277 [DEBUG] [Thread-192507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:34:02.307 [DEBUG] [Thread-192508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:34:03.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:34:03.406 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:34:03.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-11-24T15:34:04.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 33, 55), 24.09, 19.8, 0.0, 36.08, 21.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:34:04.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:33:55
2025-11-24T15:34:04.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:34:04.513 [DEBUG] [Thread-192509] [transport.py] [_log()] starting thread (client mode): 0xd31b0dc0
2025-11-24T15:34:04.513 [DEBUG] [Thread-192509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:34:04.533 [DEBUG] [Thread-192509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:34:04.533 [INFO] [Thread-192509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:34:04.544 [DEBUG] [Thread-192509] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] client lang: <none>
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] server lang: <none>
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] kex follows: False
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] Compression: none
2025-11-24T15:34:04.545 [DEBUG] [Thread-192509] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:34:04.563 [DEBUG] [Thread-192509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:34:04.564 [DEBUG] [Thread-192509] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:34:04.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:34:04.566 [DEBUG] [Thread-192509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:34:04.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:34:04.568 [DEBUG] [Thread-192509] [transport.py] [_log()] userauth is OK
2025-11-24T15:34:04.568 [DEBUG] [Thread-192509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:34:04.568 [DEBUG] [Thread-192509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:34:04.568 [DEBUG] [Thread-192509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:34:04.569 [DEBUG] [Thread-192509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:34:04.592 [INFO] [Thread-192509] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:34:04.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:34:05.186 [DEBUG] [Thread-192509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:34:05.187 [DEBUG] [Thread-192509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:34:05.187 [DEBUG] [Thread-192509] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:34:05.228 [DEBUG] [Thread-192509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:34:05.228 [DEBUG] [Thread-192509] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:34:05.231 [DEBUG] [Thread-192509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:34:05.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:34:05.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:34:05.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:34:05.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:34:05.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:34:05.253 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:34:05.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:34:05.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:34:05.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:34:05.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.564630 -999.00  +21.90  22.05     25   +1.30 1 1 1 1 1   888    0 21.06 19.42 ----- 24.6 22.1 173.2 31.3 26.9 -29.2 26.2 -30.0 28.0 -25.5 28.6 -28.1
2025-11-24T15:34:05.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:34:05.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:34:05.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.564630
2025-11-24T15:34:05.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:34:05.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:34:05.256 [DEBUG] [Thread-192509] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:34:05.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:34:05.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:34:05.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:34:05.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:33:55', tmtdew=24.09, humidity=19.8, cloud=0.0, wind=36.08, temperature=21.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:33:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:34:05.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:34:05.354 [DEBUG] [Thread-192512] [transport.py] [_log()] starting thread (client mode): 0xd31b2620
2025-11-24T15:34:05.354 [DEBUG] [Thread-192512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:34:05.369 [DEBUG] [Thread-192512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:34:05.369 [INFO] [Thread-192512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:34:05.379 [DEBUG] [Thread-192512] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:34:05.379 [DEBUG] [Thread-192512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:34:05.379 [DEBUG] [Thread-192512] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:34:05.379 [DEBUG] [Thread-192512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:34:05.379 [DEBUG] [Thread-192512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] client lang: <none>
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] server lang: <none>
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] kex follows: False
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] Compression: none
2025-11-24T15:34:05.380 [DEBUG] [Thread-192512] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:34:05.445 [DEBUG] [Thread-192512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:34:05.446 [DEBUG] [Thread-192512] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:34:05.447 [DEBUG] [Thread-192512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:34:05.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:34:05.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:34:05.506 [DEBUG] [Thread-192512] [transport.py] [_log()] userauth is OK
2025-11-24T15:34:05.506 [DEBUG] [Thread-192512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:34:05.506 [DEBUG] [Thread-192512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:34:05.506 [DEBUG] [Thread-192512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:34:05.506 [DEBUG] [Thread-192512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:34:05.524 [INFO] [Thread-192512] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:34:05.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:34:05.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:34:06.390 [DEBUG] [Thread-192512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:34:06.390 [DEBUG] [Thread-192512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:34:06.438 [DEBUG] [Thread-192512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:34:06.438 [DEBUG] [Thread-192512] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:34:06.446 [DEBUG] [Thread-192512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:34:06.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:34:06.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-11-24T15:34: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') -> 00000000
2025-11-24T15:34:06.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:34:06.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:34:06.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:34:06.478 [DEBUG] [Thread-192512] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:34:17.336 [DEBUG] [Thread-192514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:34:27.960 [DEBUG] [Thread-192515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:34:32.374 [DEBUG] [Thread-192516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:34:36.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:34:36.501 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:34:36.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-11-24T15:34:37.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 34, 28), 23.96, 19.93, 0.0, 32.71, 21.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:34:37.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:34:28
2025-11-24T15:34:37.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:34:37.618 [DEBUG] [Thread-192517] [transport.py] [_log()] starting thread (client mode): 0xd07a8c10
2025-11-24T15:34:37.618 [DEBUG] [Thread-192517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:34:37.638 [DEBUG] [Thread-192517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:34:37.638 [INFO] [Thread-192517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:34:37.648 [DEBUG] [Thread-192517] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:34:37.649 [DEBUG] [Thread-192517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:34:37.649 [DEBUG] [Thread-192517] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:34:37.649 [DEBUG] [Thread-192517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:34:37.649 [DEBUG] [Thread-192517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:34:37.649 [DEBUG] [Thread-192517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:34:37.649 [DEBUG] [Thread-192517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:34:37.649 [DEBUG] [Thread-192517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:34:37.649 [DEBUG] [Thread-192517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:34:37.650 [DEBUG] [Thread-192517] [transport.py] [_log()] client lang: <none>
2025-11-24T15:34:37.650 [DEBUG] [Thread-192517] [transport.py] [_log()] server lang: <none>
2025-11-24T15:34:37.650 [DEBUG] [Thread-192517] [transport.py] [_log()] kex follows: False
2025-11-24T15:34:37.650 [DEBUG] [Thread-192517] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:34:37.650 [DEBUG] [Thread-192517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:34:37.650 [DEBUG] [Thread-192517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:34:37.651 [DEBUG] [Thread-192517] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:34:37.651 [DEBUG] [Thread-192517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:34:37.651 [DEBUG] [Thread-192517] [transport.py] [_log()] Compression: none
2025-11-24T15:34:37.652 [DEBUG] [Thread-192517] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:34:37.671 [DEBUG] [Thread-192517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:34:37.672 [DEBUG] [Thread-192517] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:34:37.673 [DEBUG] [Thread-192517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:34:37.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:34:37.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:34:37.675 [DEBUG] [Thread-192517] [transport.py] [_log()] userauth is OK
2025-11-24T15:34:37.676 [DEBUG] [Thread-192517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:34:37.676 [DEBUG] [Thread-192517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:34:37.676 [DEBUG] [Thread-192517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:34:37.676 [DEBUG] [Thread-192517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:34:37.702 [INFO] [Thread-192517] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:34:37.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:34:38.249 [DEBUG] [Thread-192517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:34:38.258 [DEBUG] [Thread-192517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:34:38.259 [DEBUG] [Thread-192517] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:34:38.290 [DEBUG] [Thread-192517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:34:38.290 [DEBUG] [Thread-192517] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:34:38.293 [DEBUG] [Thread-192517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:34:38.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:34:38.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:34:38.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:34:38.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:34:38.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:34:38.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:34:38.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:34:38.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:34:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:34:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.564977 -999.00  +21.70  23.72     25   +1.30 1 1 1 1 1   888    0 21.62 21.11 ----- 28.1 23.7 169.5 34.3 26.6 -28.2 25.8 -30.2 27.7 -28.3 28.4 -30.9
2025-11-24T15:34:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:34:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:34:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.564977
2025-11-24T15:34:38.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:34:38.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:34:38.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:34:38.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:34:38.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:34:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:34:28', tmtdew=23.96, humidity=19.93, cloud=0.0, wind=32.71, temperature=21.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:33:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:34:38.322 [DEBUG] [Thread-192517] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:34:38.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:34:38.419 [DEBUG] [Thread-192520] [transport.py] [_log()] starting thread (client mode): 0xd07a8070
2025-11-24T15:34:38.419 [DEBUG] [Thread-192520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:34:38.434 [DEBUG] [Thread-192520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:34:38.435 [INFO] [Thread-192520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] client lang: <none>
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] server lang: <none>
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] kex follows: False
2025-11-24T15:34:38.443 [DEBUG] [Thread-192520] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:34:38.444 [DEBUG] [Thread-192520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:34:38.444 [DEBUG] [Thread-192520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:34:38.444 [DEBUG] [Thread-192520] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:34:38.444 [DEBUG] [Thread-192520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:34:38.444 [DEBUG] [Thread-192520] [transport.py] [_log()] Compression: none
2025-11-24T15:34:38.444 [DEBUG] [Thread-192520] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:34:38.501 [DEBUG] [Thread-192520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:34:38.502 [DEBUG] [Thread-192520] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:34:38.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:34:38.503 [DEBUG] [Thread-192520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:34:38.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:34:38.557 [DEBUG] [Thread-192520] [transport.py] [_log()] userauth is OK
2025-11-24T15:34:38.557 [DEBUG] [Thread-192520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:34:38.558 [DEBUG] [Thread-192520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:34:38.558 [DEBUG] [Thread-192520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:34:38.558 [DEBUG] [Thread-192520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:34:38.580 [INFO] [Thread-192520] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:34:38.580 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:34:38.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:34:39.403 [DEBUG] [Thread-192520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:34:39.403 [DEBUG] [Thread-192520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:34:39.451 [DEBUG] [Thread-192520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:34:39.451 [DEBUG] [Thread-192520] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:34:39.459 [DEBUG] [Thread-192520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:34:39.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:34:39.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-11-24T15:34:39.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-11-24T15:34:39.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:34:39.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:34:39.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:34:39.491 [DEBUG] [Thread-192520] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:34:47.406 [DEBUG] [Thread-192522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:35:02.451 [DEBUG] [Thread-192523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:35:09.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:35:09.513 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:35:09.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-11-24T15:35:10.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 35), 23.54, 20.52, 0.0, 24.23, 21.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:35:10.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:35:00
2025-11-24T15:35:10.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:35:10.628 [DEBUG] [Thread-192524] [transport.py] [_log()] starting thread (client mode): 0xd07a9480
2025-11-24T15:35:10.628 [DEBUG] [Thread-192524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:35:10.649 [DEBUG] [Thread-192524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:35:10.649 [INFO] [Thread-192524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:35:10.652 [DEBUG] [Thread-192524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:35:10.652 [DEBUG] [Thread-192524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:35:10.652 [DEBUG] [Thread-192524] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] client lang: <none>
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] server lang: <none>
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] kex follows: False
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:35:10.653 [DEBUG] [Thread-192524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:35:10.654 [DEBUG] [Thread-192524] [transport.py] [_log()] Compression: none
2025-11-24T15:35:10.654 [DEBUG] [Thread-192524] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:35:10.673 [DEBUG] [Thread-192524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:35:10.673 [DEBUG] [Thread-192524] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:35:10.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:35:10.674 [DEBUG] [Thread-192524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:35:10.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:35:10.676 [DEBUG] [Thread-192524] [transport.py] [_log()] userauth is OK
2025-11-24T15:35:10.676 [DEBUG] [Thread-192524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:35:10.676 [DEBUG] [Thread-192524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:35:10.676 [DEBUG] [Thread-192524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:35:10.677 [DEBUG] [Thread-192524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:35:10.694 [INFO] [Thread-192524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:35:10.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:35:12.292 [DEBUG] [Thread-192524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:35:12.292 [DEBUG] [Thread-192524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:35:12.293 [DEBUG] [Thread-192524] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:35:12.333 [DEBUG] [Thread-192524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:35:12.334 [DEBUG] [Thread-192524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:35:12.337 [DEBUG] [Thread-192524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:35:12.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:35:12.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:35:12.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:35:12.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:35:12.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:35:12.360 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:35:12.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:35:12.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:35:12.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:35:12.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.566019 -999.00  +21.50  13.10     26   +1.40 1 1 1 1 1   888    0 21.12 15.77 ----- 15.8 13.1 172.8 20.8 26.6 -27.9 25.9 -30.4 27.7 -25.5 28.4 -26.7
2025-11-24T15:35:12.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:35:12.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:35:12.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.566019
2025-11-24T15:35:12.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:35:12.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:35:12.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:35:12.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:35:12.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:35:12.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:35:00', tmtdew=23.54, humidity=20.52, cloud=0.0, wind=24.23, temperature=21.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:35:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:35:12.364 [DEBUG] [Thread-192524] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:35:12.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:35:12.458 [DEBUG] [Thread-192527] [transport.py] [_log()] starting thread (client mode): 0xd07aabf0
2025-11-24T15:35:12.458 [DEBUG] [Thread-192527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:35:12.473 [DEBUG] [Thread-192527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:35:12.473 [INFO] [Thread-192527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:35:12.480 [DEBUG] [Thread-192527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:35:12.481 [DEBUG] [Thread-192527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:35:12.481 [DEBUG] [Thread-192527] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:35:12.481 [DEBUG] [Thread-192527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:35:12.481 [DEBUG] [Thread-192527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:35:12.481 [DEBUG] [Thread-192527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:35:12.481 [DEBUG] [Thread-192527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:35:12.481 [DEBUG] [Thread-192527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:35:12.481 [DEBUG] [Thread-192527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:35:12.482 [DEBUG] [Thread-192527] [transport.py] [_log()] client lang: <none>
2025-11-24T15:35:12.482 [DEBUG] [Thread-192527] [transport.py] [_log()] server lang: <none>
2025-11-24T15:35:12.482 [DEBUG] [Thread-192527] [transport.py] [_log()] kex follows: False
2025-11-24T15:35:12.482 [DEBUG] [Thread-192527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:35:12.482 [DEBUG] [Thread-192527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:35:12.482 [DEBUG] [Thread-192527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:35:12.482 [DEBUG] [Thread-192527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:35:12.482 [DEBUG] [Thread-192527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:35:12.492 [DEBUG] [Thread-192527] [transport.py] [_log()] Compression: none
2025-11-24T15:35:12.492 [DEBUG] [Thread-192527] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:35:12.542 [DEBUG] [Thread-192527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:35:12.542 [DEBUG] [Thread-192527] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:35:12.543 [DEBUG] [Thread-192527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:35:12.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:35:12.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:35:12.601 [DEBUG] [Thread-192527] [transport.py] [_log()] userauth is OK
2025-11-24T15:35:12.601 [DEBUG] [Thread-192527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:35:12.602 [DEBUG] [Thread-192527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:35:12.602 [DEBUG] [Thread-192527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:35:12.602 [DEBUG] [Thread-192527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:35:12.626 [INFO] [Thread-192527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:35:12.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:35:12.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:35:13.468 [DEBUG] [Thread-192527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:35:13.468 [DEBUG] [Thread-192527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:35:13.516 [DEBUG] [Thread-192527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:35:13.516 [DEBUG] [Thread-192527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:35:13.525 [DEBUG] [Thread-192527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:35:13.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:35:13.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-11-24T15:35:13.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') -> 00000000
2025-11-24T15:35:13.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:35:13.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:35:13.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:35:13.561 [DEBUG] [Thread-192527] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:35:17.485 [DEBUG] [Thread-192529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:35:28.117 [DEBUG] [Thread-192530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:35:32.537 [DEBUG] [Thread-192531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:35:43.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:35:43.579 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:35: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-11-24T15:35:44.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 35, 33), 23.6, 20.45, 0.0, 23.36, 21.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:35:44.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:35:33
2025-11-24T15:35:44.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:35:44.731 [DEBUG] [Thread-192532] [transport.py] [_log()] starting thread (client mode): 0xd31b1c90
2025-11-24T15:35:44.731 [DEBUG] [Thread-192532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:35:44.742 [DEBUG] [Thread-192532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:35:44.742 [INFO] [Thread-192532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:35:44.743 [DEBUG] [Thread-192532] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:35:44.743 [DEBUG] [Thread-192532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] client lang: <none>
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] server lang: <none>
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] kex follows: False
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:35:44.744 [DEBUG] [Thread-192532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:35:44.745 [DEBUG] [Thread-192532] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:35:44.745 [DEBUG] [Thread-192532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:35:44.745 [DEBUG] [Thread-192532] [transport.py] [_log()] Compression: none
2025-11-24T15:35:44.745 [DEBUG] [Thread-192532] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:35:44.753 [DEBUG] [Thread-192532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:35:44.754 [DEBUG] [Thread-192532] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:35:44.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:35:44.755 [DEBUG] [Thread-192532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:35:44.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:35:44.757 [DEBUG] [Thread-192532] [transport.py] [_log()] userauth is OK
2025-11-24T15:35:44.757 [DEBUG] [Thread-192532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:35:44.757 [DEBUG] [Thread-192532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:35:44.757 [DEBUG] [Thread-192532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:35:44.757 [DEBUG] [Thread-192532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:35:44.775 [INFO] [Thread-192532] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:35:44.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:35:45.354 [DEBUG] [Thread-192532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:35:45.355 [DEBUG] [Thread-192532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:35:45.356 [DEBUG] [Thread-192532] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:35:45.396 [DEBUG] [Thread-192532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:35:45.396 [DEBUG] [Thread-192532] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:35:45.399 [DEBUG] [Thread-192532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:35:45.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:35:45.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:35:45.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:35:45.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:35:45.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:35:45.419 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:35:45.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:35:45.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:35:45.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:35:45.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.566366 -999.00  +21.70  15.79     25   +1.30 1 1 1 1 1   888    0 20.98 15.11 ----- 17.1 15.8 191.4 24.3 26.7 -27.4 26.1 -26.9 27.9 -26.0 28.6 -26.6
2025-11-24T15:35:45.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:35:45.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:35:45.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.566366
2025-11-24T15:35:45.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:35:45.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:35:45.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:35:45.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:35:45.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:35:45.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:35:33', tmtdew=23.6, humidity=20.45, cloud=0.0, wind=23.36, temperature=21.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:35:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:35:45.424 [DEBUG] [Thread-192532] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:35:45.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:35:45.519 [DEBUG] [Thread-192535] [transport.py] [_log()] starting thread (client mode): 0xd3135d50
2025-11-24T15:35:45.519 [DEBUG] [Thread-192535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:35:45.534 [DEBUG] [Thread-192535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:35:45.535 [INFO] [Thread-192535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] client lang: <none>
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] server lang: <none>
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] kex follows: False
2025-11-24T15:35:45.542 [DEBUG] [Thread-192535] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:35:45.543 [DEBUG] [Thread-192535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:35:45.543 [DEBUG] [Thread-192535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:35:45.543 [DEBUG] [Thread-192535] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:35:45.543 [DEBUG] [Thread-192535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:35:45.543 [DEBUG] [Thread-192535] [transport.py] [_log()] Compression: none
2025-11-24T15:35:45.543 [DEBUG] [Thread-192535] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:35:45.601 [DEBUG] [Thread-192535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:35:45.601 [DEBUG] [Thread-192535] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:35:45.602 [DEBUG] [Thread-192535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:35:45.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:35:45.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:35:45.657 [DEBUG] [Thread-192535] [transport.py] [_log()] userauth is OK
2025-11-24T15:35:45.658 [DEBUG] [Thread-192535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:35:45.658 [DEBUG] [Thread-192535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:35:45.658 [DEBUG] [Thread-192535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:35:45.658 [DEBUG] [Thread-192535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:35:45.676 [INFO] [Thread-192535] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:35:45.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:35:45.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:35:46.555 [DEBUG] [Thread-192535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:35:46.555 [DEBUG] [Thread-192535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:35:46.603 [DEBUG] [Thread-192535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:35:46.603 [DEBUG] [Thread-192535] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:35:46.612 [DEBUG] [Thread-192535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:35:46.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:35:46.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-11-24T15:35:46.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-11-24T15:35:46.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:35:46.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:35:46.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:35:46.643 [DEBUG] [Thread-192535] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:35:47.577 [DEBUG] [Thread-192537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:36:02.626 [DEBUG] [Thread-192538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:36:16.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:36:16.666 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:36:16.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-11-24T15:36:17.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 36, 5), 23.69, 20.34, 0.0, 26.15, 21.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:36:17.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:36:05
2025-11-24T15:36:17.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:36:17.654 [DEBUG] [Thread-192539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:36:17.783 [DEBUG] [Thread-192540] [transport.py] [_log()] starting thread (client mode): 0xd07a8460
2025-11-24T15:36:17.783 [DEBUG] [Thread-192540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:36:17.785 [DEBUG] [Thread-192540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:36:17.785 [INFO] [Thread-192540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] client lang: <none>
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] server lang: <none>
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] kex follows: False
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:36:17.787 [DEBUG] [Thread-192540] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:36:17.788 [DEBUG] [Thread-192540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:36:17.788 [DEBUG] [Thread-192540] [transport.py] [_log()] Compression: none
2025-11-24T15:36:17.788 [DEBUG] [Thread-192540] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:36:17.795 [DEBUG] [Thread-192540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:36:17.796 [DEBUG] [Thread-192540] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:36:17.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:36:17.796 [DEBUG] [Thread-192540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:36:17.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:36:17.798 [DEBUG] [Thread-192540] [transport.py] [_log()] userauth is OK
2025-11-24T15:36:17.798 [DEBUG] [Thread-192540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:36:17.798 [DEBUG] [Thread-192540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:36:17.798 [DEBUG] [Thread-192540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:36:17.798 [DEBUG] [Thread-192540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:36:17.819 [INFO] [Thread-192540] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:36:17.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:36:18.356 [DEBUG] [Thread-192540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:36:18.356 [DEBUG] [Thread-192540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:36:18.357 [DEBUG] [Thread-192540] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:36:18.397 [DEBUG] [Thread-192540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:36:18.397 [DEBUG] [Thread-192540] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:36:18.399 [DEBUG] [Thread-192540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:36:18.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:36:18.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:36:18.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:36:18.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:36:18.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:36:18.424 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:36:18.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:36:18.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:36:18.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:36:18.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.566366 -999.00  +21.70  15.79     25   +1.30 1 1 1 1 1   888    0 20.98 15.11 ----- 17.1 15.8 191.4 24.3 26.7 -27.4 26.1 -26.9 27.9 -26.0 28.6 -26.6
2025-11-24T15:36:18.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:36:18.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:36:18.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.566366
2025-11-24T15:36:18.433 [DEBUG] [Thread-192540] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:36:18.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:36:18.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:36:18.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:36:18.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:36:18.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:36:18.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:36:05', tmtdew=23.69, humidity=20.34, cloud=0.0, wind=26.15, temperature=21.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:35:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:36:18.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:36:18.528 [DEBUG] [Thread-192543] [transport.py] [_log()] starting thread (client mode): 0xd07a8730
2025-11-24T15:36:18.529 [DEBUG] [Thread-192543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:36:18.543 [DEBUG] [Thread-192543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:36:18.543 [INFO] [Thread-192543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:36:18.550 [DEBUG] [Thread-192543] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:36:18.551 [DEBUG] [Thread-192543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:36:18.551 [DEBUG] [Thread-192543] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:36:18.551 [DEBUG] [Thread-192543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:36:18.551 [DEBUG] [Thread-192543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:36:18.551 [DEBUG] [Thread-192543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:36:18.551 [DEBUG] [Thread-192543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:36:18.551 [DEBUG] [Thread-192543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] client lang: <none>
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] server lang: <none>
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] kex follows: False
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] Compression: none
2025-11-24T15:36:18.552 [DEBUG] [Thread-192543] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:36:18.609 [DEBUG] [Thread-192543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:36:18.610 [DEBUG] [Thread-192543] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:36:18.611 [DEBUG] [Thread-192543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:36:18.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:36:18.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:36:18.677 [DEBUG] [Thread-192543] [transport.py] [_log()] userauth is OK
2025-11-24T15:36:18.677 [DEBUG] [Thread-192543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:36:18.677 [DEBUG] [Thread-192543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:36:18.677 [DEBUG] [Thread-192543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:36:18.677 [DEBUG] [Thread-192543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:36:18.696 [INFO] [Thread-192543] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:36:18.696 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:36:18.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:36:19.511 [DEBUG] [Thread-192543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:36:19.512 [DEBUG] [Thread-192543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:36:19.560 [DEBUG] [Thread-192543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:36:19.560 [DEBUG] [Thread-192543] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:36:19.570 [DEBUG] [Thread-192543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:36:19.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:36:19.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-11-24T15:36:19.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-11-24T15:36:19.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:36:19.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:36:19.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:36:19.604 [DEBUG] [Thread-192543] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:36:28.211 [DEBUG] [Thread-192545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:36:32.695 [DEBUG] [Thread-192546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:36:47.751 [DEBUG] [Thread-192547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:36:49.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:36:49.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:36:49.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-11-24T15:36:50.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 36, 38), 23.8, 20.43, 0.0, 24.17, 21.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:36:50.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:36:38
2025-11-24T15:36:50.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:36:50.797 [DEBUG] [Thread-192548] [transport.py] [_log()] starting thread (client mode): 0xd3135540
2025-11-24T15:36:50.797 [DEBUG] [Thread-192548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:36:50.816 [DEBUG] [Thread-192548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:36:50.817 [INFO] [Thread-192548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] client lang: <none>
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] server lang: <none>
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] kex follows: False
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] Compression: none
2025-11-24T15:36:50.820 [DEBUG] [Thread-192548] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:36:50.837 [DEBUG] [Thread-192548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:36:50.837 [DEBUG] [Thread-192548] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:36:50.837 [DEBUG] [Thread-192548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:36:50.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:36:50.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:36:50.838 [DEBUG] [Thread-192548] [transport.py] [_log()] userauth is OK
2025-11-24T15:36:50.838 [DEBUG] [Thread-192548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:36:50.838 [DEBUG] [Thread-192548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:36:50.838 [DEBUG] [Thread-192548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:36:50.838 [DEBUG] [Thread-192548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:36:50.848 [INFO] [Thread-192548] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:36:50.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:36:51.430 [DEBUG] [Thread-192548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:36:51.430 [DEBUG] [Thread-192548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:36:51.430 [DEBUG] [Thread-192548] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:36:51.471 [DEBUG] [Thread-192548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:36:51.471 [DEBUG] [Thread-192548] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:36:51.473 [DEBUG] [Thread-192548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:36:51.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:36:51.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:36:51.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:36:51.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:36:51.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:36:51.485 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:36:51.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.566714 -999.00  +21.60  23.06     26   +1.30 1 1 1 1 1   888    0 21.34 13.80 ----- 20.4 23.1 162.9 29.7 26.8 -27.1 26.1 -26.8 27.8 -26.3 28.5 -27.9
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.566714
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:36:51.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:36:38', tmtdew=23.8, humidity=20.43, cloud=0.0, wind=24.17, temperature=21.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:36:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:36:51.486 [DEBUG] [Thread-192548] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:36:51.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:36:51.572 [DEBUG] [Thread-192551] [transport.py] [_log()] starting thread (client mode): 0xd3137be0
2025-11-24T15:36:51.572 [DEBUG] [Thread-192551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:36:51.587 [DEBUG] [Thread-192551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:36:51.587 [INFO] [Thread-192551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] client lang: <none>
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] server lang: <none>
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] kex follows: False
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] Compression: none
2025-11-24T15:36:51.595 [DEBUG] [Thread-192551] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:36:51.651 [DEBUG] [Thread-192551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:36:51.651 [DEBUG] [Thread-192551] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:36:51.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:36:51.651 [DEBUG] [Thread-192551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:36:51.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:36:51.708 [DEBUG] [Thread-192551] [transport.py] [_log()] userauth is OK
2025-11-24T15:36:51.708 [DEBUG] [Thread-192551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:36:51.708 [DEBUG] [Thread-192551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:36:51.708 [DEBUG] [Thread-192551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:36:51.708 [DEBUG] [Thread-192551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:36:51.722 [INFO] [Thread-192551] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:36:51.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:36:51.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:36:52.551 [DEBUG] [Thread-192551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:36:52.551 [DEBUG] [Thread-192551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:36:52.599 [DEBUG] [Thread-192551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:36:52.599 [DEBUG] [Thread-192551] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:36:52.609 [DEBUG] [Thread-192551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:36:52.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:36:52.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:36:52.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-11-24T15:36:52.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:36:52.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:36:52.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:36:52.642 [DEBUG] [Thread-192551] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:37:02.778 [DEBUG] [Thread-192553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:37:17.823 [DEBUG] [Thread-192554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:37:22.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:37:22.666 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:37:22.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-11-24T15:37:23.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 37, 10), 23.75, 20.5, 0.0, 25.6, 21.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:37:23.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:37:10
2025-11-24T15:37:23.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:37:23.895 [DEBUG] [Thread-192555] [transport.py] [_log()] starting thread (client mode): 0xd31342b0
2025-11-24T15:37:23.895 [DEBUG] [Thread-192555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:37:23.910 [DEBUG] [Thread-192555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:37:23.910 [INFO] [Thread-192555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] client lang: <none>
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] server lang: <none>
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] kex follows: False
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:37:23.913 [DEBUG] [Thread-192555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:37:23.914 [DEBUG] [Thread-192555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:37:23.914 [DEBUG] [Thread-192555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:37:23.914 [DEBUG] [Thread-192555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:37:23.914 [DEBUG] [Thread-192555] [transport.py] [_log()] Compression: none
2025-11-24T15:37:23.914 [DEBUG] [Thread-192555] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:37:23.933 [DEBUG] [Thread-192555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:37:23.933 [DEBUG] [Thread-192555] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:37:23.934 [DEBUG] [Thread-192555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:37:23.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:37:23.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:37:23.935 [DEBUG] [Thread-192555] [transport.py] [_log()] userauth is OK
2025-11-24T15:37:23.935 [DEBUG] [Thread-192555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:37:23.935 [DEBUG] [Thread-192555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:37:23.935 [DEBUG] [Thread-192555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:37:23.935 [DEBUG] [Thread-192555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:37:23.945 [INFO] [Thread-192555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:37:23.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:37:24.529 [DEBUG] [Thread-192555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:37:24.539 [DEBUG] [Thread-192555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:37:24.540 [DEBUG] [Thread-192555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:37:24.571 [DEBUG] [Thread-192555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:37:24.571 [DEBUG] [Thread-192555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:37:24.574 [DEBUG] [Thread-192555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:37:24.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:37:24.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:37:24.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:37:24.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:37:24.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:37:24.597 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:37:24.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:37:24.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:37:24.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:37:24.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.567061 -999.00  +21.80  15.88     25   +1.40 1 1 1 1 1   888    0 20.68 12.62 ----- 18.0 15.9 161.0 27.8 26.9 -27.0 26.4 -26.4 28.0 -24.5 28.7 -27.3
2025-11-24T15:37:24.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:37:24.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:37:24.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.567061
2025-11-24T15:37:24.604 [DEBUG] [Thread-192555] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:37:24.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:37:24.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:37:24.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:37:24.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:37:24.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:37:24.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:37:10', tmtdew=23.75, humidity=20.5, cloud=0.0, wind=25.6, temperature=21.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:36:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:37:24.693 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:37:24.707 [DEBUG] [Thread-192558] [transport.py] [_log()] starting thread (client mode): 0xd07aac80
2025-11-24T15:37:24.707 [DEBUG] [Thread-192558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:37:24.723 [DEBUG] [Thread-192558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:37:24.723 [INFO] [Thread-192558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:37:24.732 [DEBUG] [Thread-192558] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:37:24.732 [DEBUG] [Thread-192558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] client lang: <none>
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] server lang: <none>
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] kex follows: False
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] Compression: none
2025-11-24T15:37:24.733 [DEBUG] [Thread-192558] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:37:24.786 [DEBUG] [Thread-192558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:37:24.787 [DEBUG] [Thread-192558] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:37:24.787 [DEBUG] [Thread-192558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:37:24.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:37:24.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:37:24.844 [DEBUG] [Thread-192558] [transport.py] [_log()] userauth is OK
2025-11-24T15:37:24.844 [DEBUG] [Thread-192558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:37:24.844 [DEBUG] [Thread-192558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:37:24.844 [DEBUG] [Thread-192558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:37:24.844 [DEBUG] [Thread-192558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:37:24.857 [INFO] [Thread-192558] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:37:24.857 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:37:24.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:37:25.709 [DEBUG] [Thread-192558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:37:25.718 [DEBUG] [Thread-192558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:37:25.765 [DEBUG] [Thread-192558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:37:25.765 [DEBUG] [Thread-192558] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:37:25.784 [DEBUG] [Thread-192558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:37:25.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:37:25.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-11-24T15:37:25.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:37:25.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:37:25.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:37:25.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:37:25.818 [DEBUG] [Thread-192558] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:37:28.438 [DEBUG] [Thread-192560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:37:32.858 [DEBUG] [Thread-192561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:37:47.906 [DEBUG] [Thread-192562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:37:55.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:37:55.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:37:55.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:37:56.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 37, 43), 23.74, 20.5, 0.0, 22.29, 21.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:37:56.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:37:43
2025-11-24T15:37:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:37:56.990 [DEBUG] [Thread-192563] [transport.py] [_log()] starting thread (client mode): 0xd3134b80
2025-11-24T15:37:56.990 [DEBUG] [Thread-192563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:37:57.002 [DEBUG] [Thread-192563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:37:57.002 [INFO] [Thread-192563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:37:57.005 [DEBUG] [Thread-192563] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] client lang: <none>
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] server lang: <none>
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] kex follows: False
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] Compression: none
2025-11-24T15:37:57.006 [DEBUG] [Thread-192563] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:37:57.023 [DEBUG] [Thread-192563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:37:57.023 [DEBUG] [Thread-192563] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:37:57.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:37:57.024 [DEBUG] [Thread-192563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:37:57.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:37:57.026 [DEBUG] [Thread-192563] [transport.py] [_log()] userauth is OK
2025-11-24T15:37:57.026 [DEBUG] [Thread-192563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:37:57.027 [DEBUG] [Thread-192563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:37:57.027 [DEBUG] [Thread-192563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:37:57.027 [DEBUG] [Thread-192563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:37:57.041 [INFO] [Thread-192563] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:37:57.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:37:57.676 [DEBUG] [Thread-192563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:37:57.676 [DEBUG] [Thread-192563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:37:57.676 [DEBUG] [Thread-192563] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:37:57.717 [DEBUG] [Thread-192563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:37:57.717 [DEBUG] [Thread-192563] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:37:57.721 [DEBUG] [Thread-192563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:37:57.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:37:57.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:37:57.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:37:57.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:37:57.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:37:57.740 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:37:57.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:37:57.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:37:57.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:37:57.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.567408 -999.00  +21.80  17.42     25   +1.20 1 1 1 1 1   888    0 21.28 11.73 ----- 15.3 17.4 193.2 26.7 26.8 -27.8 26.1 -30.8 27.9 -27.2 28.8 -28.1
2025-11-24T15:37:57.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:37:57.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:37:57.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.567408
2025-11-24T15:37:57.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:37:57.749 [DEBUG] [Thread-192563] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:37:57.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:37:57.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:37:57.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:37:57.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:37:57.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:37:43', tmtdew=23.74, humidity=20.5, cloud=0.0, wind=22.29, temperature=21.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:37:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:37:57.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:37:57.834 [DEBUG] [Thread-192566] [transport.py] [_log()] starting thread (client mode): 0xd3134f40
2025-11-24T15:37:57.834 [DEBUG] [Thread-192566] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:37:57.850 [DEBUG] [Thread-192566] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:37:57.850 [INFO] [Thread-192566] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] client lang: <none>
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] server lang: <none>
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] kex follows: False
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:37:57.857 [DEBUG] [Thread-192566] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:37:57.859 [DEBUG] [Thread-192566] [transport.py] [_log()] Compression: none
2025-11-24T15:37:57.859 [DEBUG] [Thread-192566] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:37:57.914 [DEBUG] [Thread-192566] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:37:57.914 [DEBUG] [Thread-192566] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:37:57.914 [DEBUG] [Thread-192566] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:37:57.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:37:57.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:37:57.972 [DEBUG] [Thread-192566] [transport.py] [_log()] userauth is OK
2025-11-24T15:37:57.972 [DEBUG] [Thread-192566] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:37:57.972 [DEBUG] [Thread-192566] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:37:57.972 [DEBUG] [Thread-192566] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:37:57.972 [DEBUG] [Thread-192566] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:37:57.986 [INFO] [Thread-192566] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:37:57.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:37:57.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:37:58.874 [DEBUG] [Thread-192566] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:37:58.874 [DEBUG] [Thread-192566] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:37:58.922 [DEBUG] [Thread-192566] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:37:58.923 [DEBUG] [Thread-192566] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:37:58.935 [DEBUG] [Thread-192566] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:37:58.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:37:58.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-11-24T15:37:58.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:37:58.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:37:58.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:37:58.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:37:58.969 [DEBUG] [Thread-192566] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:38:02.939 [DEBUG] [Thread-192568 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:38:17.995 [DEBUG] [Thread-192569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:38:28.580 [DEBUG] [Thread-192570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:38:28.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:38:28.995 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:38:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:38:29.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 38, 15), 23.82, 20.4, 0.0, 20.45, 21.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:38:29.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:38:15
2025-11-24T15:38:29.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:38:30.134 [DEBUG] [Thread-192571] [transport.py] [_log()] starting thread (client mode): 0xd3136230
2025-11-24T15:38:30.134 [DEBUG] [Thread-192571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:38:30.141 [DEBUG] [Thread-192571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:38:30.141 [INFO] [Thread-192571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:38:30.146 [DEBUG] [Thread-192571] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:38:30.146 [DEBUG] [Thread-192571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:38:30.146 [DEBUG] [Thread-192571] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:38:30.146 [DEBUG] [Thread-192571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:38:30.146 [DEBUG] [Thread-192571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:38:30.146 [DEBUG] [Thread-192571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:38:30.146 [DEBUG] [Thread-192571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:38:30.146 [DEBUG] [Thread-192571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] client lang: <none>
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] server lang: <none>
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] kex follows: False
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] Compression: none
2025-11-24T15:38:30.147 [DEBUG] [Thread-192571] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:38:30.179 [DEBUG] [Thread-192571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:38:30.184 [DEBUG] [Thread-192571] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:38:30.186 [DEBUG] [Thread-192571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:38:30.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:38:30.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:38:30.190 [DEBUG] [Thread-192571] [transport.py] [_log()] userauth is OK
2025-11-24T15:38:30.190 [DEBUG] [Thread-192571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:38:30.190 [DEBUG] [Thread-192571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:38:30.190 [DEBUG] [Thread-192571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:38:30.190 [DEBUG] [Thread-192571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:38:30.208 [INFO] [Thread-192571] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:38:30.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:38:30.807 [DEBUG] [Thread-192571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:38:30.816 [DEBUG] [Thread-192571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:38:30.817 [DEBUG] [Thread-192571] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:38:30.848 [DEBUG] [Thread-192571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:38:30.848 [DEBUG] [Thread-192571] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:38:30.851 [DEBUG] [Thread-192571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:38:30.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:38:30.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:38:30.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:38:30.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:38:30.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:38:30.874 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:38:30.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:38:30.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:38:30.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:38:30.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.567755 -999.00  +21.90  17.60     25   +1.10 1 1 1 1 1   888    0 21.43 8.85 ----- 17.6 17.6 193.0 23.1 26.9 -27.5 26.2 -27.8 28.0 -26.4 28.7 -28.2
2025-11-24T15:38:30.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:38:30.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:38:30.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.567755
2025-11-24T15:38:30.881 [DEBUG] [Thread-192571] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:38:30.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:38:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:38:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:38:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:38:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:38:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:38:15', tmtdew=23.82, humidity=20.4, cloud=0.0, wind=20.45, temperature=21.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:37:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:38:30.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:38:30.976 [DEBUG] [Thread-192574] [transport.py] [_log()] starting thread (client mode): 0xd3136020
2025-11-24T15:38:30.976 [DEBUG] [Thread-192574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:38:30.991 [DEBUG] [Thread-192574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:38:30.991 [INFO] [Thread-192574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] client lang: <none>
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] server lang: <none>
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] kex follows: False
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] Compression: none
2025-11-24T15:38:30.999 [DEBUG] [Thread-192574] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:38:31.054 [DEBUG] [Thread-192574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:38:31.054 [DEBUG] [Thread-192574] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:38:31.054 [DEBUG] [Thread-192574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:38:31.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:38:31.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:38:31.119 [DEBUG] [Thread-192574] [transport.py] [_log()] userauth is OK
2025-11-24T15:38:31.119 [DEBUG] [Thread-192574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:38:31.128 [DEBUG] [Thread-192574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:38:31.128 [DEBUG] [Thread-192574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:38:31.128 [DEBUG] [Thread-192574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:38:31.141 [INFO] [Thread-192574] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:38:31.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:38:31.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:38:31.983 [DEBUG] [Thread-192574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:38:31.983 [DEBUG] [Thread-192574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:38:32.030 [DEBUG] [Thread-192574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:38:32.031 [DEBUG] [Thread-192574] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:38:32.041 [DEBUG] [Thread-192574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:38:32.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:38:32.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-11-24T15:38:32.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-11-24T15:38:32.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:38:32.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:38:32.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:38:32.079 [DEBUG] [Thread-192574] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:38:33.039 [DEBUG] [Thread-192576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:38:48.108 [DEBUG] [Thread-192577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:39:02.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:39:02.102 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:39:02.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-11-24T15:39:02.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 38, 48), 23.73, 20.4, 0.0, 14.13, 21.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:39:02.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:38:48
2025-11-24T15:39:03.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:39:03.138 [DEBUG] [Thread-192578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:39:03.185 [DEBUG] [Thread-192579] [transport.py] [_log()] starting thread (client mode): 0xd31354e0
2025-11-24T15:39:03.185 [DEBUG] [Thread-192579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:39:03.205 [DEBUG] [Thread-192579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:39:03.205 [INFO] [Thread-192579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:39:03.208 [DEBUG] [Thread-192579] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:39:03.208 [DEBUG] [Thread-192579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:39:03.208 [DEBUG] [Thread-192579] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:39:03.208 [DEBUG] [Thread-192579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:39:03.208 [DEBUG] [Thread-192579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:39:03.208 [DEBUG] [Thread-192579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:39:03.208 [DEBUG] [Thread-192579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:39:03.208 [DEBUG] [Thread-192579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] client lang: <none>
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] server lang: <none>
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] kex follows: False
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] Compression: none
2025-11-24T15:39:03.209 [DEBUG] [Thread-192579] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:39:03.225 [DEBUG] [Thread-192579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:39:03.226 [DEBUG] [Thread-192579] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:39:03.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:39:03.227 [DEBUG] [Thread-192579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:39:03.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:39:03.229 [DEBUG] [Thread-192579] [transport.py] [_log()] userauth is OK
2025-11-24T15:39:03.229 [DEBUG] [Thread-192579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:39:03.230 [DEBUG] [Thread-192579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:39:03.230 [DEBUG] [Thread-192579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:39:03.230 [DEBUG] [Thread-192579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:39:03.255 [INFO] [Thread-192579] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:39:03.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:39:03.851 [DEBUG] [Thread-192579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:39:03.852 [DEBUG] [Thread-192579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:39:03.852 [DEBUG] [Thread-192579] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:39:03.893 [DEBUG] [Thread-192579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:39:03.893 [DEBUG] [Thread-192579] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:39:03.896 [DEBUG] [Thread-192579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:39:03.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:39:03.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:39:03.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:39:03.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:39:03.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:39:03.920 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:39:03.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:39:03.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:39:03.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:39:03.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.568102 -999.00  +22.10  18.27     25   +1.20 1 1 1 1 1   888    0 20.54 8.32 ----- 16.6 18.3 197.6 22.1 27.0 -28.0 26.4 -29.9 28.1 -25.2 28.9 -27.2
2025-11-24T15:39:03.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:39:03.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:39:03.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.568102
2025-11-24T15:39:03.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:39:03.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:39:03.923 [DEBUG] [Thread-192579] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:39:03.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:39:03.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:39:03.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:39:03.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:38:48', tmtdew=23.73, humidity=20.4, cloud=0.0, wind=14.13, temperature=21.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:38:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:39:04.007 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:39:04.019 [DEBUG] [Thread-192582] [transport.py] [_log()] starting thread (client mode): 0xd31362f0
2025-11-24T15:39:04.019 [DEBUG] [Thread-192582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:39:04.033 [DEBUG] [Thread-192582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:39:04.033 [INFO] [Thread-192582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] client lang: <none>
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] server lang: <none>
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] kex follows: False
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] Compression: none
2025-11-24T15:39:04.041 [DEBUG] [Thread-192582] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:39:04.100 [DEBUG] [Thread-192582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:39:04.100 [DEBUG] [Thread-192582] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:39:04.101 [DEBUG] [Thread-192582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:39:04.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:39:04.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:39:04.155 [DEBUG] [Thread-192582] [transport.py] [_log()] userauth is OK
2025-11-24T15:39:04.155 [DEBUG] [Thread-192582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:39:04.155 [DEBUG] [Thread-192582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:39:04.155 [DEBUG] [Thread-192582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:39:04.156 [DEBUG] [Thread-192582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:39:04.175 [INFO] [Thread-192582] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:39:04.175 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:39:04.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:39:05.058 [DEBUG] [Thread-192582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:39:05.067 [DEBUG] [Thread-192582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:39:05.106 [DEBUG] [Thread-192582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:39:05.107 [DEBUG] [Thread-192582] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:39:05.116 [DEBUG] [Thread-192582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:39:05.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:39:05.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-11-24T15:39:05.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-11-24T15:39:05.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:39:05.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:39:05.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:39:05.148 [DEBUG] [Thread-192582] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:39:18.176 [DEBUG] [Thread-192584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:39:28.893 [DEBUG] [Thread-192585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:39:33.210 [DEBUG] [Thread-192586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:39:35.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:39:35.171 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:39:35.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-11-24T15:39:35.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 39, 20), 23.86, 20.27, 0.0, 16.55, 21.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:39:35.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:39:20
2025-11-24T15:39:36.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:39:36.246 [DEBUG] [Thread-192587] [transport.py] [_log()] starting thread (client mode): 0xd07a8040
2025-11-24T15:39:36.246 [DEBUG] [Thread-192587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:39:36.267 [DEBUG] [Thread-192587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:39:36.267 [INFO] [Thread-192587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] client lang: <none>
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] server lang: <none>
2025-11-24T15:39:36.270 [DEBUG] [Thread-192587] [transport.py] [_log()] kex follows: False
2025-11-24T15:39:36.271 [DEBUG] [Thread-192587] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:39:36.271 [DEBUG] [Thread-192587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:39:36.271 [DEBUG] [Thread-192587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:39:36.271 [DEBUG] [Thread-192587] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:39:36.271 [DEBUG] [Thread-192587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:39:36.271 [DEBUG] [Thread-192587] [transport.py] [_log()] Compression: none
2025-11-24T15:39:36.271 [DEBUG] [Thread-192587] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:39:36.284 [DEBUG] [Thread-192587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:39:36.285 [DEBUG] [Thread-192587] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:39:36.285 [DEBUG] [Thread-192587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:39:36.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:39:36.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:39:36.287 [DEBUG] [Thread-192587] [transport.py] [_log()] userauth is OK
2025-11-24T15:39:36.288 [DEBUG] [Thread-192587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:39:36.288 [DEBUG] [Thread-192587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:39:36.288 [DEBUG] [Thread-192587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:39:36.288 [DEBUG] [Thread-192587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:39:36.312 [INFO] [Thread-192587] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:39:36.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:39:36.903 [DEBUG] [Thread-192587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:39:36.904 [DEBUG] [Thread-192587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:39:36.904 [DEBUG] [Thread-192587] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:39:36.945 [DEBUG] [Thread-192587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:39:36.945 [DEBUG] [Thread-192587] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:39:36.947 [DEBUG] [Thread-192587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:39:36.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:39:36.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:39:36.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:39:36.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:39:36.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:39:36.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:39:36.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:39:36.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:39:36.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:39:36.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.568450 -999.00  +22.00  14.22     25   +1.20 1 1 1 1 1   888    0 21.02 8.21 ----- 12.9 14.2 183.8 20.6 26.9 -27.5 26.3 -29.5 28.1 -26.4 28.8 -27.7
2025-11-24T15:39:36.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:39:36.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:39:36.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.568450
2025-11-24T15:39:36.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:39:36.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:39:36.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:39:36.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:39:36.972 [DEBUG] [Thread-192587] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:39:36.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:39:36.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:39:20', tmtdew=23.86, humidity=20.27, cloud=0.0, wind=16.55, temperature=21.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:38:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:39:37.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:39:37.079 [DEBUG] [Thread-192590] [transport.py] [_log()] starting thread (client mode): 0xd07ab4f0
2025-11-24T15:39:37.079 [DEBUG] [Thread-192590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:39:37.093 [DEBUG] [Thread-192590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:39:37.094 [INFO] [Thread-192590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:39:37.104 [DEBUG] [Thread-192590] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:39:37.104 [DEBUG] [Thread-192590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:39:37.104 [DEBUG] [Thread-192590] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:39:37.104 [DEBUG] [Thread-192590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:39:37.104 [DEBUG] [Thread-192590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:39:37.104 [DEBUG] [Thread-192590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:39:37.104 [DEBUG] [Thread-192590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:39:37.104 [DEBUG] [Thread-192590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:39:37.104 [DEBUG] [Thread-192590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:39:37.105 [DEBUG] [Thread-192590] [transport.py] [_log()] client lang: <none>
2025-11-24T15:39:37.105 [DEBUG] [Thread-192590] [transport.py] [_log()] server lang: <none>
2025-11-24T15:39:37.105 [DEBUG] [Thread-192590] [transport.py] [_log()] kex follows: False
2025-11-24T15:39:37.105 [DEBUG] [Thread-192590] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:39:37.105 [DEBUG] [Thread-192590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:39:37.105 [DEBUG] [Thread-192590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:39:37.105 [DEBUG] [Thread-192590] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:39:37.105 [DEBUG] [Thread-192590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:39:37.105 [DEBUG] [Thread-192590] [transport.py] [_log()] Compression: none
2025-11-24T15:39:37.106 [DEBUG] [Thread-192590] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:39:37.171 [DEBUG] [Thread-192590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:39:37.172 [DEBUG] [Thread-192590] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:39:37.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:39:37.173 [DEBUG] [Thread-192590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:39:37.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:39:37.228 [DEBUG] [Thread-192590] [transport.py] [_log()] userauth is OK
2025-11-24T15:39:37.228 [DEBUG] [Thread-192590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:39:37.228 [DEBUG] [Thread-192590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:39:37.228 [DEBUG] [Thread-192590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:39:37.228 [DEBUG] [Thread-192590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:39:37.247 [INFO] [Thread-192590] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:39: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-11-24T15:39:37.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:39:38.069 [DEBUG] [Thread-192590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:39:38.070 [DEBUG] [Thread-192590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:39:38.117 [DEBUG] [Thread-192590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:39:38.117 [DEBUG] [Thread-192590] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:39:38.126 [DEBUG] [Thread-192590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:39:38.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:39:38.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:39:38.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-11-24T15:39:38.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:39:38.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:39:38.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:39:38.158 [DEBUG] [Thread-192590] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:39:48.248 [DEBUG] [Thread-192592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:40:03.294 [DEBUG] [Thread-192593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:40:08.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:40:08.152 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:40:08.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-11-24T15:40:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 39, 53), 23.91, 20.32, 0.0, 16.92, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:40:08.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:39:53
2025-11-24T15:40:09.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:40:09.190 [DEBUG] [Thread-192594] [transport.py] [_log()] starting thread (client mode): 0xd07a9180
2025-11-24T15:40:09.190 [DEBUG] [Thread-192594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:40:09.210 [DEBUG] [Thread-192594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:40:09.210 [INFO] [Thread-192594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] client lang: <none>
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] server lang: <none>
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] kex follows: False
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:40:09.214 [DEBUG] [Thread-192594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:40:09.215 [DEBUG] [Thread-192594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:40:09.215 [DEBUG] [Thread-192594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:40:09.215 [DEBUG] [Thread-192594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:40:09.215 [DEBUG] [Thread-192594] [transport.py] [_log()] Compression: none
2025-11-24T15:40:09.215 [DEBUG] [Thread-192594] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:40:09.236 [DEBUG] [Thread-192594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:40:09.240 [DEBUG] [Thread-192594] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:40:09.241 [DEBUG] [Thread-192594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:40:09.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:40:09.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:40:09.242 [DEBUG] [Thread-192594] [transport.py] [_log()] userauth is OK
2025-11-24T15:40:09.243 [DEBUG] [Thread-192594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:40:09.243 [DEBUG] [Thread-192594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:40:09.243 [DEBUG] [Thread-192594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:40:09.243 [DEBUG] [Thread-192594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:40:09.261 [INFO] [Thread-192594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:40:09.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:40:12.063 [DEBUG] [Thread-192594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:40:12.072 [DEBUG] [Thread-192594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:40:12.072 [DEBUG] [Thread-192594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:40:12.104 [DEBUG] [Thread-192594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:40:12.104 [DEBUG] [Thread-192594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:40:12.106 [DEBUG] [Thread-192594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:40:12.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:40:12.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:40:12.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:40:12.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:40:12.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:40:12.126 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:40:12.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:40:12.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:40:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:40:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.569491 -999.00  +21.90  15.16     25   +1.40 1 1 1 1 1   888    0 20.42 0.21 ----- 10.6 15.2 193.7 22.6 27.1 -26.9 26.4 -27.5 28.3 -26.4 29.0 -27.4
2025-11-24T15:40:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:40:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:40:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.569491
2025-11-24T15:40:12.132 [DEBUG] [Thread-192594] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:40:12.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:40:12.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:40:12.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:40:12.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:40:12.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:40:12.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:39:53', tmtdew=23.91, humidity=20.32, cloud=0.0, wind=16.92, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:40:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:40:12.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:40:12.225 [DEBUG] [Thread-192596] [transport.py] [_log()] starting thread (client mode): 0xd3137b80
2025-11-24T15:40:12.225 [DEBUG] [Thread-192596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:40:12.239 [DEBUG] [Thread-192596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:40:12.239 [INFO] [Thread-192596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] client lang: <none>
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] server lang: <none>
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] kex follows: False
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] Compression: none
2025-11-24T15:40:12.247 [DEBUG] [Thread-192596] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:40:12.306 [DEBUG] [Thread-192596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:40:12.307 [DEBUG] [Thread-192596] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:40:12.307 [DEBUG] [Thread-192596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:40:12.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:40:12.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:40:12.363 [DEBUG] [Thread-192596] [transport.py] [_log()] userauth is OK
2025-11-24T15:40:12.363 [DEBUG] [Thread-192596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:40:12.363 [DEBUG] [Thread-192596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:40:12.363 [DEBUG] [Thread-192596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:40:12.363 [DEBUG] [Thread-192596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:40:12.386 [INFO] [Thread-192596] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:40:12.386 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:40:12.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:40:13.230 [DEBUG] [Thread-192596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:40:13.230 [DEBUG] [Thread-192596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:40:13.278 [DEBUG] [Thread-192596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:40:13.278 [DEBUG] [Thread-192596] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:40:13.287 [DEBUG] [Thread-192596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:40:13.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:40:13.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-11-24T15:40:13.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-11-24T15:40:13.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:40:13.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:40:13.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:40:13.322 [DEBUG] [Thread-192596] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:40:18.326 [DEBUG] [Thread-192598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:40:29.173 [DEBUG] [Thread-192599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:40:33.376 [DEBUG] [Thread-192600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:40:43.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:40:43.331 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:40:43.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-11-24T15:40:44.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 40, 25), 23.83, 20.4, 0.0, 23.82, 21.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:40:44.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:40:25
2025-11-24T15:40:44.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:40:44.335 [DEBUG] [Thread-192601] [transport.py] [_log()] starting thread (client mode): 0xd07ab2e0
2025-11-24T15:40:44.335 [DEBUG] [Thread-192601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:40:44.353 [DEBUG] [Thread-192601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:40:44.353 [INFO] [Thread-192601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] client lang: <none>
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] server lang: <none>
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] kex follows: False
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:40:44.356 [DEBUG] [Thread-192601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:40:44.357 [DEBUG] [Thread-192601] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:40:44.357 [DEBUG] [Thread-192601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:40:44.357 [DEBUG] [Thread-192601] [transport.py] [_log()] Compression: none
2025-11-24T15:40:44.357 [DEBUG] [Thread-192601] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:40:44.374 [DEBUG] [Thread-192601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:40:44.377 [DEBUG] [Thread-192601] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:40:44.377 [DEBUG] [Thread-192601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:40:44.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:40:44.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:40:44.379 [DEBUG] [Thread-192601] [transport.py] [_log()] userauth is OK
2025-11-24T15:40:44.379 [DEBUG] [Thread-192601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:40:44.379 [DEBUG] [Thread-192601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:40:44.379 [DEBUG] [Thread-192601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:40:44.379 [DEBUG] [Thread-192601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:40:44.391 [INFO] [Thread-192601] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:40:44.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:40:44.992 [DEBUG] [Thread-192601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:40:44.992 [DEBUG] [Thread-192601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:40:44.992 [DEBUG] [Thread-192601] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:40:45.033 [DEBUG] [Thread-192601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:40:45.033 [DEBUG] [Thread-192601] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:40:45.036 [DEBUG] [Thread-192601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:40:45.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:40:45.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:40:45.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:40:45.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:40:45.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:40:45.058 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:40:45.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:40:45.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:40:45.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:40:45.060 [DEBUG] [Thread-192601] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:40:45.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.569491 -999.00  +21.90  15.16     25   +1.40 1 1 1 1 1   888    0 20.42 0.21 ----- 10.6 15.2 193.7 22.6 27.1 -26.9 26.4 -27.5 28.3 -26.4 29.0 -27.4
2025-11-24T15:40:45.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:40:45.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:40:45.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.569491
2025-11-24T15:40:45.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:40:45.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:40:45.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:40:45.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:40:45.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:40:45.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:40:25', tmtdew=23.83, humidity=20.4, cloud=0.0, wind=23.82, temperature=21.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:40:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:40:45.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:40:45.163 [DEBUG] [Thread-192604] [transport.py] [_log()] starting thread (client mode): 0xd07aaad0
2025-11-24T15:40:45.163 [DEBUG] [Thread-192604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:40:45.178 [DEBUG] [Thread-192604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:40:45.179 [INFO] [Thread-192604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:40:45.186 [DEBUG] [Thread-192604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:40:45.186 [DEBUG] [Thread-192604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:40:45.186 [DEBUG] [Thread-192604] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:40:45.186 [DEBUG] [Thread-192604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:40:45.186 [DEBUG] [Thread-192604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:40:45.186 [DEBUG] [Thread-192604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:40:45.186 [DEBUG] [Thread-192604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:40:45.186 [DEBUG] [Thread-192604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] client lang: <none>
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] server lang: <none>
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] kex follows: False
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] Compression: none
2025-11-24T15:40:45.187 [DEBUG] [Thread-192604] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:40:45.242 [DEBUG] [Thread-192604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:40:45.243 [DEBUG] [Thread-192604] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:40:45.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:40:45.244 [DEBUG] [Thread-192604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:40:45.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:40:45.299 [DEBUG] [Thread-192604] [transport.py] [_log()] userauth is OK
2025-11-24T15:40:45.299 [DEBUG] [Thread-192604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:40:45.299 [DEBUG] [Thread-192604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:40:45.299 [DEBUG] [Thread-192604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:40:45.299 [DEBUG] [Thread-192604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:40:45.319 [INFO] [Thread-192604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:40:45.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:40:45.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:40:46.157 [DEBUG] [Thread-192604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:40:46.157 [DEBUG] [Thread-192604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:40:46.205 [DEBUG] [Thread-192604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:40:46.205 [DEBUG] [Thread-192604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:40:46.214 [DEBUG] [Thread-192604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:40:46.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:40: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')
2025-11-24T15:40:46.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-11-24T15:40:46.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:40:46.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:40:46.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:40:46.247 [DEBUG] [Thread-192604] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:40:48.421 [DEBUG] [Thread-192606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:41:03.496 [DEBUG] [Thread-192607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:41:16.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:41:16.259 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:41:16.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-11-24T15:41:17.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 40, 58), 23.99, 19.9, 0.0, 35.22, 21.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:41:17.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:40:58
2025-11-24T15:41:17.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:41:17.323 [DEBUG] [Thread-192608] [transport.py] [_log()] starting thread (client mode): 0xd3137610
2025-11-24T15:41:17.323 [DEBUG] [Thread-192608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:41:17.343 [DEBUG] [Thread-192608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:41:17.344 [INFO] [Thread-192608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:41:17.346 [DEBUG] [Thread-192608] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:41:17.346 [DEBUG] [Thread-192608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] client lang: <none>
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] server lang: <none>
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] kex follows: False
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] Compression: none
2025-11-24T15:41:17.347 [DEBUG] [Thread-192608] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:41:17.366 [DEBUG] [Thread-192608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:41:17.366 [DEBUG] [Thread-192608] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:41:17.366 [DEBUG] [Thread-192608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:41:17.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:41:17.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:41:17.367 [DEBUG] [Thread-192608] [transport.py] [_log()] userauth is OK
2025-11-24T15:41:17.367 [DEBUG] [Thread-192608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:41:17.367 [DEBUG] [Thread-192608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:41:17.367 [DEBUG] [Thread-192608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:41:17.367 [DEBUG] [Thread-192608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:41:17.378 [INFO] [Thread-192608] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:41:17.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:41:17.961 [DEBUG] [Thread-192608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:41:17.962 [DEBUG] [Thread-192608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:41:17.962 [DEBUG] [Thread-192608] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:41:18.002 [DEBUG] [Thread-192608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:41:18.002 [DEBUG] [Thread-192608] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:41:18.005 [DEBUG] [Thread-192608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:41:18.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:41:18.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:41:18.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:41:18.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:41:18.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:41:18.024 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:41:18.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:41:18.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:41:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:41:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.569839 -999.00  +22.30  27.36     25   +1.40 1 1 1 1 1   888    0 20.58 -1.89 ----- 26.7 27.4 201.8 36.7 27.2 -27.8 26.6 -28.8 28.4 -24.8 29.1 -26.5
2025-11-24T15:41:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:41:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:41:18.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.569839
2025-11-24T15:41:18.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:41:18.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:41:18.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:41:18.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:41:18.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:41:18.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:40:58', tmtdew=23.99, humidity=19.9, cloud=0.0, wind=35.22, temperature=21.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:40:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:41:18.026 [DEBUG] [Thread-192608] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:41:18.098 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:41:18.109 [DEBUG] [Thread-192611] [transport.py] [_log()] starting thread (client mode): 0xd07a9ff0
2025-11-24T15:41:18.109 [DEBUG] [Thread-192611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:41:18.124 [DEBUG] [Thread-192611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:41:18.124 [INFO] [Thread-192611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:41:18.131 [DEBUG] [Thread-192611] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:41:18.131 [DEBUG] [Thread-192611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] client lang: <none>
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] server lang: <none>
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] kex follows: False
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] Compression: none
2025-11-24T15:41:18.132 [DEBUG] [Thread-192611] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:41:18.189 [DEBUG] [Thread-192611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:41:18.189 [DEBUG] [Thread-192611] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:41:18.189 [DEBUG] [Thread-192611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:41:18.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:41:18.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:41:18.246 [DEBUG] [Thread-192611] [transport.py] [_log()] userauth is OK
2025-11-24T15:41:18.246 [DEBUG] [Thread-192611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:41:18.247 [DEBUG] [Thread-192611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:41:18.247 [DEBUG] [Thread-192611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:41:18.247 [DEBUG] [Thread-192611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:41:18.260 [INFO] [Thread-192611] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:41: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-11-24T15:41:18.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:41:18.526 [DEBUG] [Thread-192613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:41:19.097 [DEBUG] [Thread-192611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:41:19.097 [DEBUG] [Thread-192611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:41:19.145 [DEBUG] [Thread-192611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:41:19.145 [DEBUG] [Thread-192611] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:41:19.153 [DEBUG] [Thread-192611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:41:19.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:41:19.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:41:19.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:41:19.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:41:19.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:41:19.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:41:19.184 [DEBUG] [Thread-192611] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:41:29.474 [DEBUG] [Thread-192614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:41:33.568 [DEBUG] [Thread-192615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:41:48.603 [DEBUG] [Thread-192616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:41:49.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:41:49.196 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:41:49.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-11-24T15:41:49.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 41, 30), 24.02, 19.87, 0.0, 37.58, 21.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:41:49.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:41:30
2025-11-24T15:41:50.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:41:50.284 [DEBUG] [Thread-192617] [transport.py] [_log()] starting thread (client mode): 0xd3134b80
2025-11-24T15:41:50.284 [DEBUG] [Thread-192617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:41:50.303 [DEBUG] [Thread-192617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:41:50.303 [INFO] [Thread-192617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:41:50.309 [DEBUG] [Thread-192617] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:41:50.309 [DEBUG] [Thread-192617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:41:50.309 [DEBUG] [Thread-192617] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:41:50.309 [DEBUG] [Thread-192617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:41:50.309 [DEBUG] [Thread-192617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:41:50.310 [DEBUG] [Thread-192617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:41:50.310 [DEBUG] [Thread-192617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:41:50.310 [DEBUG] [Thread-192617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:41:50.310 [DEBUG] [Thread-192617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:41:50.310 [DEBUG] [Thread-192617] [transport.py] [_log()] client lang: <none>
2025-11-24T15:41:50.310 [DEBUG] [Thread-192617] [transport.py] [_log()] server lang: <none>
2025-11-24T15:41:50.310 [DEBUG] [Thread-192617] [transport.py] [_log()] kex follows: False
2025-11-24T15:41:50.310 [DEBUG] [Thread-192617] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:41:50.310 [DEBUG] [Thread-192617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:41:50.310 [DEBUG] [Thread-192617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:41:50.311 [DEBUG] [Thread-192617] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:41:50.311 [DEBUG] [Thread-192617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:41:50.311 [DEBUG] [Thread-192617] [transport.py] [_log()] Compression: none
2025-11-24T15:41:50.311 [DEBUG] [Thread-192617] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:41:50.330 [DEBUG] [Thread-192617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:41:50.331 [DEBUG] [Thread-192617] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:41:50.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:41:50.332 [DEBUG] [Thread-192617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:41:50.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:41:50.334 [DEBUG] [Thread-192617] [transport.py] [_log()] userauth is OK
2025-11-24T15:41:50.334 [DEBUG] [Thread-192617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:41:50.334 [DEBUG] [Thread-192617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:41:50.334 [DEBUG] [Thread-192617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:41:50.334 [DEBUG] [Thread-192617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:41:50.358 [INFO] [Thread-192617] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:41:50.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:41:51.007 [DEBUG] [Thread-192617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:41:51.016 [DEBUG] [Thread-192617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:41:51.016 [DEBUG] [Thread-192617] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:41:51.049 [DEBUG] [Thread-192617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:41:51.049 [DEBUG] [Thread-192617] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:41:51.051 [DEBUG] [Thread-192617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:41:51.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:41:51.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:41:51.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:41:51.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:41:51.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:41:51.071 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:41:51.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:41:51.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:41:51.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:41:51.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.570186 -999.00  +22.50  16.56     25   +1.60 1 1 1 1 1   888    0 20.58 -3.65 ----- 22.6 16.6 189.6 31.8 27.2 -27.9 26.7 -28.3 28.4 -25.8 29.1 -27.4
2025-11-24T15:41:51.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:41:51.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:41:51.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.570186
2025-11-24T15:41:51.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:41:51.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:41:51.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:41:51.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:41:51.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:41:51.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:41:30', tmtdew=24.02, humidity=19.87, cloud=0.0, wind=37.58, temperature=21.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:41:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:41:51.073 [DEBUG] [Thread-192617] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:41:51.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:41:51.156 [DEBUG] [Thread-192620] [transport.py] [_log()] starting thread (client mode): 0xd3135510
2025-11-24T15:41:51.156 [DEBUG] [Thread-192620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:41:51.172 [DEBUG] [Thread-192620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:41:51.172 [INFO] [Thread-192620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] client lang: <none>
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] server lang: <none>
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] kex follows: False
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:41:51.179 [DEBUG] [Thread-192620] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:41:51.180 [DEBUG] [Thread-192620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:41:51.180 [DEBUG] [Thread-192620] [transport.py] [_log()] Compression: none
2025-11-24T15:41:51.180 [DEBUG] [Thread-192620] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:41:51.237 [DEBUG] [Thread-192620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:41:51.237 [DEBUG] [Thread-192620] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:41:51.237 [DEBUG] [Thread-192620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:41:51.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:41:51.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:41:51.294 [DEBUG] [Thread-192620] [transport.py] [_log()] userauth is OK
2025-11-24T15:41:51.294 [DEBUG] [Thread-192620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:41:51.294 [DEBUG] [Thread-192620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:41:51.294 [DEBUG] [Thread-192620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:41:51.294 [DEBUG] [Thread-192620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:41:51.308 [INFO] [Thread-192620] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:41:51.317 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:41:51.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:41:52.140 [DEBUG] [Thread-192620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:41:52.141 [DEBUG] [Thread-192620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:41:52.189 [DEBUG] [Thread-192620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:41:52.189 [DEBUG] [Thread-192620] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:41:52.198 [DEBUG] [Thread-192620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:41:52.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:41:52.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-11-24T15:41:52.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:41:52.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:41:52.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:41:52.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:41:52.243 [DEBUG] [Thread-192620] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:42:03.634 [DEBUG] [Thread-192622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:42:18.673 [DEBUG] [Thread-192623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:42:22.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:42:22.237 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:42:22.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:42:23.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 42, 3), 24.05, 19.84, 0.0, 32.71, 22.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:42:23.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:42:03
2025-11-24T15:42:23.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:42:23.314 [DEBUG] [Thread-192624] [transport.py] [_log()] starting thread (client mode): 0xd31374c0
2025-11-24T15:42:23.314 [DEBUG] [Thread-192624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:42:23.336 [DEBUG] [Thread-192624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:42:23.336 [INFO] [Thread-192624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:42:23.346 [DEBUG] [Thread-192624] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:42:23.347 [DEBUG] [Thread-192624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:42:23.347 [DEBUG] [Thread-192624] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:42:23.347 [DEBUG] [Thread-192624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:42:23.347 [DEBUG] [Thread-192624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:42:23.347 [DEBUG] [Thread-192624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:42:23.347 [DEBUG] [Thread-192624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:42:23.347 [DEBUG] [Thread-192624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:42:23.348 [DEBUG] [Thread-192624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:42:23.348 [DEBUG] [Thread-192624] [transport.py] [_log()] client lang: <none>
2025-11-24T15:42:23.348 [DEBUG] [Thread-192624] [transport.py] [_log()] server lang: <none>
2025-11-24T15:42:23.348 [DEBUG] [Thread-192624] [transport.py] [_log()] kex follows: False
2025-11-24T15:42:23.348 [DEBUG] [Thread-192624] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:42:23.348 [DEBUG] [Thread-192624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:42:23.348 [DEBUG] [Thread-192624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:42:23.348 [DEBUG] [Thread-192624] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:42:23.349 [DEBUG] [Thread-192624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:42:23.349 [DEBUG] [Thread-192624] [transport.py] [_log()] Compression: none
2025-11-24T15:42:23.349 [DEBUG] [Thread-192624] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:42:23.368 [DEBUG] [Thread-192624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:42:23.369 [DEBUG] [Thread-192624] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:42:23.370 [DEBUG] [Thread-192624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:42:23.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:42:23.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:42:23.373 [DEBUG] [Thread-192624] [transport.py] [_log()] userauth is OK
2025-11-24T15:42:23.373 [DEBUG] [Thread-192624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:42:23.373 [DEBUG] [Thread-192624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:42:23.373 [DEBUG] [Thread-192624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:42:23.373 [DEBUG] [Thread-192624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:42:23.399 [INFO] [Thread-192624] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:42:23.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:42:24.032 [DEBUG] [Thread-192624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:42:24.032 [DEBUG] [Thread-192624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:42:24.032 [DEBUG] [Thread-192624] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:42:24.073 [DEBUG] [Thread-192624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:42:24.073 [DEBUG] [Thread-192624] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:42:24.076 [DEBUG] [Thread-192624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:42:24.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:42:24.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:42:24.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:42:24.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:42:24.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:42:24.099 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:42:24.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:42:24.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:42:24.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:42:24.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.570533 -999.00  +22.40  28.58     24   +1.30 1 1 1 1 1   888    0 20.13 -3.12 ----- 30.0 28.6 181.8 37.7 27.1 -30.3 26.4 -32.5 28.2 -29.1 29.0 -29.8
2025-11-24T15:42:24.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:42:24.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:42:24.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.570533
2025-11-24T15:42:24.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:42:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:42:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:42:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:42:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:42:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:42:03', tmtdew=24.05, humidity=19.84, cloud=0.0, wind=32.71, temperature=22.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:41:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:42:24.102 [DEBUG] [Thread-192624] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:42:24.185 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:42:24.197 [DEBUG] [Thread-192627] [transport.py] [_log()] starting thread (client mode): 0xd31362f0
2025-11-24T15:42:24.198 [DEBUG] [Thread-192627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:42:24.212 [DEBUG] [Thread-192627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:42:24.213 [INFO] [Thread-192627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:42:24.220 [DEBUG] [Thread-192627] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:42:24.220 [DEBUG] [Thread-192627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:42:24.220 [DEBUG] [Thread-192627] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:42:24.220 [DEBUG] [Thread-192627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:42:24.220 [DEBUG] [Thread-192627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:42:24.220 [DEBUG] [Thread-192627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:42:24.220 [DEBUG] [Thread-192627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:42:24.220 [DEBUG] [Thread-192627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:42:24.220 [DEBUG] [Thread-192627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:42:24.221 [DEBUG] [Thread-192627] [transport.py] [_log()] client lang: <none>
2025-11-24T15:42:24.221 [DEBUG] [Thread-192627] [transport.py] [_log()] server lang: <none>
2025-11-24T15:42:24.221 [DEBUG] [Thread-192627] [transport.py] [_log()] kex follows: False
2025-11-24T15:42:24.221 [DEBUG] [Thread-192627] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:42:24.221 [DEBUG] [Thread-192627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:42:24.221 [DEBUG] [Thread-192627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:42:24.221 [DEBUG] [Thread-192627] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:42:24.221 [DEBUG] [Thread-192627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:42:24.221 [DEBUG] [Thread-192627] [transport.py] [_log()] Compression: none
2025-11-24T15:42:24.221 [DEBUG] [Thread-192627] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:42:24.279 [DEBUG] [Thread-192627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:42:24.280 [DEBUG] [Thread-192627] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:42:24.280 [DEBUG] [Thread-192627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:42:24.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:42:24.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:42:24.334 [DEBUG] [Thread-192627] [transport.py] [_log()] userauth is OK
2025-11-24T15:42:24.335 [DEBUG] [Thread-192627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:42:24.335 [DEBUG] [Thread-192627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:42:24.335 [DEBUG] [Thread-192627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:42:24.335 [DEBUG] [Thread-192627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:42:24.353 [INFO] [Thread-192627] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:42:24.354 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:42:24.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:42:25.252 [DEBUG] [Thread-192627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:42:25.252 [DEBUG] [Thread-192627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:42:25.300 [DEBUG] [Thread-192627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:42:25.300 [DEBUG] [Thread-192627] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:42:25.308 [DEBUG] [Thread-192627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:42:25.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:42:25.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-11-24T15:42:25.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-11-24T15:42:25.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:42:25.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:42:25.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:42:25.340 [DEBUG] [Thread-192627] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:42:29.770 [DEBUG] [Thread-192629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:42:33.707 [DEBUG] [Thread-192630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:42:48.757 [DEBUG] [Thread-192631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:42:55.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:42:55.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:42:55.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-11-24T15:42:56.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 42, 35), 24.12, 19.74, 0.0, 27.72, 21.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:42:56.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:42:35
2025-11-24T15:42:56.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:42:56.465 [DEBUG] [Thread-192632] [transport.py] [_log()] starting thread (client mode): 0xd3136f20
2025-11-24T15:42:56.465 [DEBUG] [Thread-192632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:42:56.484 [DEBUG] [Thread-192632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:42:56.484 [INFO] [Thread-192632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:42:56.487 [DEBUG] [Thread-192632] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:42:56.487 [DEBUG] [Thread-192632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] client lang: <none>
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] server lang: <none>
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] kex follows: False
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] Compression: none
2025-11-24T15:42:56.488 [DEBUG] [Thread-192632] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:42:56.504 [DEBUG] [Thread-192632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:42:56.505 [DEBUG] [Thread-192632] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:42:56.505 [DEBUG] [Thread-192632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:42:56.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:42:56.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:42:56.507 [DEBUG] [Thread-192632] [transport.py] [_log()] userauth is OK
2025-11-24T15:42:56.508 [DEBUG] [Thread-192632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:42:56.508 [DEBUG] [Thread-192632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:42:56.508 [DEBUG] [Thread-192632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:42:56.508 [DEBUG] [Thread-192632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:42:56.541 [INFO] [Thread-192632] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:42:56.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:42:57.188 [DEBUG] [Thread-192632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:42:57.197 [DEBUG] [Thread-192632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:42:57.197 [DEBUG] [Thread-192632] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:42:57.229 [DEBUG] [Thread-192632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:42:57.229 [DEBUG] [Thread-192632] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:42:57.232 [DEBUG] [Thread-192632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:42:57.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:42:57.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:42:57.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:42:57.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:42:57.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:42:57.250 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:42:57.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:42:57.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:42:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:42:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.570880 -999.00  +21.80  25.10     25   +1.10 1 1 1 1 1   888    0 20.58 -2.42 ----- 21.4 25.1 182.0 33.5 26.9 -29.6 26.1 -31.1 27.9 -27.1 28.7 -30.0
2025-11-24T15:42:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:42:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:42:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.570880
2025-11-24T15:42:57.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:42:57.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:42:57.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:42:57.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:42:57.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:42:57.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:42:35', tmtdew=24.12, humidity=19.74, cloud=0.0, wind=27.72, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:42:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:42:57.252 [DEBUG] [Thread-192632] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:42:57.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:42:57.336 [DEBUG] [Thread-192635] [transport.py] [_log()] starting thread (client mode): 0xd07aa800
2025-11-24T15:42:57.336 [DEBUG] [Thread-192635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:42:57.349 [DEBUG] [Thread-192635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:42:57.350 [INFO] [Thread-192635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] client lang: <none>
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] server lang: <none>
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] kex follows: False
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] Compression: none
2025-11-24T15:42:57.357 [DEBUG] [Thread-192635] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:42:57.415 [DEBUG] [Thread-192635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:42:57.416 [DEBUG] [Thread-192635] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:42:57.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:42:57.418 [DEBUG] [Thread-192635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:42:57.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:42:57.471 [DEBUG] [Thread-192635] [transport.py] [_log()] userauth is OK
2025-11-24T15:42:57.471 [DEBUG] [Thread-192635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:42:57.471 [DEBUG] [Thread-192635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:42:57.471 [DEBUG] [Thread-192635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:42:57.472 [DEBUG] [Thread-192635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:42:57.490 [INFO] [Thread-192635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:42:57.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:42:57.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:42:58.338 [DEBUG] [Thread-192635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:42:58.338 [DEBUG] [Thread-192635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:42:58.387 [DEBUG] [Thread-192635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:42:58.387 [DEBUG] [Thread-192635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:42:58.396 [DEBUG] [Thread-192635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:42:58.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:42:58.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:42:58.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-11-24T15:42:58.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:42:58.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:42:58.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:42:58.440 [DEBUG] [Thread-192635] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:43:03.800 [DEBUG] [Thread-192637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:43:18.847 [DEBUG] [Thread-192638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:43:28.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:43:28.441 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:43:28.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-11-24T15:43:29.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 43, 7), 23.87, 20.02, 0.0, 27.84, 21.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:43:29.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:43:07
2025-11-24T15:43:29.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:43:29.553 [DEBUG] [Thread-192639] [transport.py] [_log()] starting thread (client mode): 0xd3134a90
2025-11-24T15:43:29.553 [DEBUG] [Thread-192639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:43:29.574 [DEBUG] [Thread-192639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:43:29.574 [INFO] [Thread-192639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:43:29.577 [DEBUG] [Thread-192639] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:43:29.577 [DEBUG] [Thread-192639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:43:29.577 [DEBUG] [Thread-192639] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:43:29.577 [DEBUG] [Thread-192639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] client lang: <none>
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] server lang: <none>
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] kex follows: False
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:43:29.578 [DEBUG] [Thread-192639] [transport.py] [_log()] Compression: none
2025-11-24T15:43:29.579 [DEBUG] [Thread-192639] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:43:29.598 [DEBUG] [Thread-192639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:43:29.599 [DEBUG] [Thread-192639] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:43:29.599 [DEBUG] [Thread-192639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:43:29.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:43:29.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:43:29.601 [DEBUG] [Thread-192639] [transport.py] [_log()] userauth is OK
2025-11-24T15:43:29.601 [DEBUG] [Thread-192639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:43:29.601 [DEBUG] [Thread-192639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:43:29.601 [DEBUG] [Thread-192639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:43:29.601 [DEBUG] [Thread-192639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:43:29.637 [INFO] [Thread-192639] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:43:29.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:43:30.076 [DEBUG] [Thread-192641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:43:30.242 [DEBUG] [Thread-192639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:43:30.242 [DEBUG] [Thread-192639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:43:30.243 [DEBUG] [Thread-192639] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:43:30.284 [DEBUG] [Thread-192639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:43:30.285 [DEBUG] [Thread-192639] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:43:30.288 [DEBUG] [Thread-192639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:43:30.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:43:30.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:43:30.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:43:30.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:43:30.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:43:30.312 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:43:30.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:43:30.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:43:30.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:43:30.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.571227 -999.00  +22.10  20.80     25   +1.20 1 1 1 1 1   888    0 20.89 -2.39 ----- 17.6 20.8 205.6 31.3 26.9 -29.2 26.5 -28.7 28.2 -26.4 28.9 -27.0
2025-11-24T15:43:30.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:43:30.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:43:30.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.571227
2025-11-24T15:43:30.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:43:30.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:43:30.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:43:30.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:43:30.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:43:30.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:43:07', tmtdew=23.87, humidity=20.02, cloud=0.0, wind=27.84, temperature=21.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:42:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:43:30.315 [DEBUG] [Thread-192639] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:43:30.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:43:30.421 [DEBUG] [Thread-192643] [transport.py] [_log()] starting thread (client mode): 0xd31341f0
2025-11-24T15:43:30.421 [DEBUG] [Thread-192643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:43:30.434 [DEBUG] [Thread-192643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:43:30.435 [INFO] [Thread-192643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:43:30.442 [DEBUG] [Thread-192643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:43:30.442 [DEBUG] [Thread-192643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:43:30.442 [DEBUG] [Thread-192643] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] client lang: <none>
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] server lang: <none>
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] kex follows: False
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] Compression: none
2025-11-24T15:43:30.443 [DEBUG] [Thread-192643] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:43:30.502 [DEBUG] [Thread-192643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:43:30.503 [DEBUG] [Thread-192643] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:43:30.503 [DEBUG] [Thread-192643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:43:30.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:43:30.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:43:30.558 [DEBUG] [Thread-192643] [transport.py] [_log()] userauth is OK
2025-11-24T15:43:30.558 [DEBUG] [Thread-192643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:43:30.558 [DEBUG] [Thread-192643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:43:30.558 [DEBUG] [Thread-192643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:43:30.559 [DEBUG] [Thread-192643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:43:30.577 [INFO] [Thread-192643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:43:30.578 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:43:30.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:43:31.411 [DEBUG] [Thread-192643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:43:31.411 [DEBUG] [Thread-192643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:43:31.459 [DEBUG] [Thread-192643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:43:31.459 [DEBUG] [Thread-192643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:43:31.467 [DEBUG] [Thread-192643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:43:31.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:43:31.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-11-24T15:43:31.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-11-24T15:43:31.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:43:31.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:43:31.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:43:31.499 [DEBUG] [Thread-192643] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:43:33.889 [DEBUG] [Thread-192645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:43:48.945 [DEBUG] [Thread-192646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:44:01.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:44:01.530 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:44:01.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:44:02.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 43, 40), 23.6, 20.55, 0.0, 21.03, 21.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:44:02.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:43:40
2025-11-24T15:44:02.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:44:02.585 [DEBUG] [Thread-192647] [transport.py] [_log()] starting thread (client mode): 0xd3161510
2025-11-24T15:44:02.585 [DEBUG] [Thread-192647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:44:02.605 [DEBUG] [Thread-192647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:44:02.605 [INFO] [Thread-192647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] client lang: <none>
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] server lang: <none>
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] kex follows: False
2025-11-24T15:44:02.609 [DEBUG] [Thread-192647] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:44:02.610 [DEBUG] [Thread-192647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:44:02.610 [DEBUG] [Thread-192647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:44:02.610 [DEBUG] [Thread-192647] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:44:02.610 [DEBUG] [Thread-192647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:44:02.610 [DEBUG] [Thread-192647] [transport.py] [_log()] Compression: none
2025-11-24T15:44:02.610 [DEBUG] [Thread-192647] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:44:02.631 [DEBUG] [Thread-192647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:44:02.632 [DEBUG] [Thread-192647] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:44:02.633 [DEBUG] [Thread-192647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:44:02.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:44:02.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:44:02.635 [DEBUG] [Thread-192647] [transport.py] [_log()] userauth is OK
2025-11-24T15:44:02.636 [DEBUG] [Thread-192647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:44:02.636 [DEBUG] [Thread-192647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:44:02.636 [DEBUG] [Thread-192647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:44:02.636 [DEBUG] [Thread-192647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:44:02.672 [INFO] [Thread-192647] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:44:02.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:44:03.299 [DEBUG] [Thread-192647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:44:03.299 [DEBUG] [Thread-192647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:44:03.299 [DEBUG] [Thread-192647] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:44:03.340 [DEBUG] [Thread-192647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:44:03.340 [DEBUG] [Thread-192647] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:44:03.342 [DEBUG] [Thread-192647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:44:03.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:44:03.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:44:03.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:44:03.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:44:03.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:44:03.371 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:44:03.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.571575 -999.00  +22.10  19.40     25   +1.30 1 1 1 1 1   888    0 20.25 -2.50 ----- 18.6 19.4 226.1 29.7 27.0 -28.6 26.5 -27.9 28.1 -26.7 28.9 -26.2
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.571575
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:44:03.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:43:40', tmtdew=23.6, humidity=20.55, cloud=0.0, wind=21.03, temperature=21.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:43:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:44:03.372 [DEBUG] [Thread-192647] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:44:03.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:44:03.455 [DEBUG] [Thread-192650] [transport.py] [_log()] starting thread (client mode): 0xd31636d0
2025-11-24T15:44:03.455 [DEBUG] [Thread-192650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:44:03.470 [DEBUG] [Thread-192650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:44:03.470 [INFO] [Thread-192650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:44:03.480 [DEBUG] [Thread-192650] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:44:03.480 [DEBUG] [Thread-192650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:44:03.480 [DEBUG] [Thread-192650] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] client lang: <none>
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] server lang: <none>
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] kex follows: False
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] Compression: none
2025-11-24T15:44:03.481 [DEBUG] [Thread-192650] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:44:03.533 [DEBUG] [Thread-192650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:44:03.533 [DEBUG] [Thread-192650] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:44:03.533 [DEBUG] [Thread-192650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:44:03.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:44:03.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:44:03.595 [DEBUG] [Thread-192650] [transport.py] [_log()] userauth is OK
2025-11-24T15:44:03.595 [DEBUG] [Thread-192650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:44:03.595 [DEBUG] [Thread-192650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:44:03.595 [DEBUG] [Thread-192650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:44:03.595 [DEBUG] [Thread-192650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:44:03.609 [INFO] [Thread-192650] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:44:03.609 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:44:03.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:44:03.980 [DEBUG] [Thread-192652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:44:04.448 [DEBUG] [Thread-192650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:44:04.448 [DEBUG] [Thread-192650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:44:04.495 [DEBUG] [Thread-192650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:44:04.496 [DEBUG] [Thread-192650] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:44:04.504 [DEBUG] [Thread-192650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:44:04.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:44:04.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-11-24T15:44:04.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-11-24T15:44:04.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:44:04.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:44:04.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:44:04.550 [DEBUG] [Thread-192650] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:44:19.024 [DEBUG] [Thread-192653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:44:30.279 [DEBUG] [Thread-192654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:44:34.053 [DEBUG] [Thread-192655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:44:34.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:44:34.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:44:34.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-11-24T15:44:35.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 44, 13), 23.69, 20.43, 0.0, 19.69, 21.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:44:35.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:44:13
2025-11-24T15:44:35.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:44:35.663 [DEBUG] [Thread-192656] [transport.py] [_log()] starting thread (client mode): 0xd31631f0
2025-11-24T15:44:35.663 [DEBUG] [Thread-192656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:44:35.683 [DEBUG] [Thread-192656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:44:35.683 [INFO] [Thread-192656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:44:35.686 [DEBUG] [Thread-192656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:44:35.686 [DEBUG] [Thread-192656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] client lang: <none>
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] server lang: <none>
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] kex follows: False
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] Compression: none
2025-11-24T15:44:35.687 [DEBUG] [Thread-192656] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:44:35.703 [DEBUG] [Thread-192656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:44:35.704 [DEBUG] [Thread-192656] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:44:35.704 [DEBUG] [Thread-192656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:44:35.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:44:35.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:44:35.705 [DEBUG] [Thread-192656] [transport.py] [_log()] userauth is OK
2025-11-24T15:44:35.705 [DEBUG] [Thread-192656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:44:35.705 [DEBUG] [Thread-192656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:44:35.705 [DEBUG] [Thread-192656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:44:35.705 [DEBUG] [Thread-192656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:44:35.717 [INFO] [Thread-192656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:44:35.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:44:36.401 [DEBUG] [Thread-192656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:44:36.402 [DEBUG] [Thread-192656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:44:36.402 [DEBUG] [Thread-192656] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:44:36.443 [DEBUG] [Thread-192656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:44:36.443 [DEBUG] [Thread-192656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:44:36.446 [DEBUG] [Thread-192656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:44:36.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:44:36.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:44:36.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:44:36.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:44:36.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:44:36.469 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:44:36.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:44:36.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:44:36.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:44:36.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.571922 -999.00  +21.70   9.74     25   +1.10 1 1 1 1 1   888    0 20.83 -3.04 ----- 9.4 9.7 235.9 30.0 26.9 -28.1 26.2 -27.6 28.1 -26.9 28.8 -30.1
2025-11-24T15:44:36.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:44:36.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:44:36.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.571922
2025-11-24T15:44:36.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:44:36.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:44:36.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:44:36.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:44:36.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:44:36.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:44:13', tmtdew=23.69, humidity=20.43, cloud=0.0, wind=19.69, temperature=21.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:43:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:44:36.472 [DEBUG] [Thread-192656] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:44:36.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:44:36.579 [DEBUG] [Thread-192659] [transport.py] [_log()] starting thread (client mode): 0xd3136800
2025-11-24T15:44:36.579 [DEBUG] [Thread-192659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:44:36.594 [DEBUG] [Thread-192659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:44:36.594 [INFO] [Thread-192659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:44:36.605 [DEBUG] [Thread-192659] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:44:36.605 [DEBUG] [Thread-192659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:44:36.605 [DEBUG] [Thread-192659] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:44:36.606 [DEBUG] [Thread-192659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:44:36.606 [DEBUG] [Thread-192659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:44:36.606 [DEBUG] [Thread-192659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:44:36.606 [DEBUG] [Thread-192659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:44:36.606 [DEBUG] [Thread-192659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:44:36.606 [DEBUG] [Thread-192659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:44:36.607 [DEBUG] [Thread-192659] [transport.py] [_log()] client lang: <none>
2025-11-24T15:44:36.607 [DEBUG] [Thread-192659] [transport.py] [_log()] server lang: <none>
2025-11-24T15:44:36.607 [DEBUG] [Thread-192659] [transport.py] [_log()] kex follows: False
2025-11-24T15:44:36.607 [DEBUG] [Thread-192659] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:44:36.607 [DEBUG] [Thread-192659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:44:36.607 [DEBUG] [Thread-192659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:44:36.608 [DEBUG] [Thread-192659] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:44:36.608 [DEBUG] [Thread-192659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:44:36.608 [DEBUG] [Thread-192659] [transport.py] [_log()] Compression: none
2025-11-24T15:44:36.608 [DEBUG] [Thread-192659] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:44:36.671 [DEBUG] [Thread-192659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:44:36.672 [DEBUG] [Thread-192659] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:44:36.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:44:36.673 [DEBUG] [Thread-192659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:44:36.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:44:36.731 [DEBUG] [Thread-192659] [transport.py] [_log()] userauth is OK
2025-11-24T15:44:36.731 [DEBUG] [Thread-192659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:44:36.731 [DEBUG] [Thread-192659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:44:36.731 [DEBUG] [Thread-192659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:44:36.731 [DEBUG] [Thread-192659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:44:36.750 [INFO] [Thread-192659] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:44:36.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:44:36.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:44:37.577 [DEBUG] [Thread-192659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:44:37.578 [DEBUG] [Thread-192659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:44:37.625 [DEBUG] [Thread-192659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:44:37.626 [DEBUG] [Thread-192659] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:44:37.635 [DEBUG] [Thread-192659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:44:37.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:44:37.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:44:37.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-11-24T15:44:37.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:44:37.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:44:37.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:44:37.673 [DEBUG] [Thread-192659] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:44:49.090 [DEBUG] [Thread-192661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:45:04.168 [DEBUG] [Thread-192662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:45:07.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:45:07.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:45:07.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-11-24T15:45:08.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 44, 45), 23.8, 20.43, 0.0, 20.8, 21.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:45:08.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:44:45
2025-11-24T15:45:08.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:45:08.966 [DEBUG] [Thread-192663] [transport.py] [_log()] starting thread (client mode): 0xd31b3790
2025-11-24T15:45:08.967 [DEBUG] [Thread-192663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:45:08.982 [DEBUG] [Thread-192663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:45:08.983 [INFO] [Thread-192663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] client lang: <none>
2025-11-24T15:45:08.986 [DEBUG] [Thread-192663] [transport.py] [_log()] server lang: <none>
2025-11-24T15:45:08.987 [DEBUG] [Thread-192663] [transport.py] [_log()] kex follows: False
2025-11-24T15:45:08.987 [DEBUG] [Thread-192663] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:45:08.987 [DEBUG] [Thread-192663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:45:08.987 [DEBUG] [Thread-192663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:45:08.987 [DEBUG] [Thread-192663] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:45:08.987 [DEBUG] [Thread-192663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:45:08.987 [DEBUG] [Thread-192663] [transport.py] [_log()] Compression: none
2025-11-24T15:45:08.987 [DEBUG] [Thread-192663] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:45:09.015 [DEBUG] [Thread-192663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:45:09.017 [DEBUG] [Thread-192663] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:45:09.019 [DEBUG] [Thread-192663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:45:09.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:45:09.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:45:09.021 [DEBUG] [Thread-192663] [transport.py] [_log()] userauth is OK
2025-11-24T15:45:09.021 [DEBUG] [Thread-192663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:45:09.021 [DEBUG] [Thread-192663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:45:09.021 [DEBUG] [Thread-192663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:45:09.021 [DEBUG] [Thread-192663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:45:09.038 [INFO] [Thread-192663] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:45:09.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:45:09.760 [DEBUG] [Thread-192663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:45:09.761 [DEBUG] [Thread-192663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:45:09.762 [DEBUG] [Thread-192663] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:45:09.801 [DEBUG] [Thread-192663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:45:09.801 [DEBUG] [Thread-192663] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:45:09.803 [DEBUG] [Thread-192663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:45:09.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:45:09.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:45:09.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:45:09.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:45:09.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:45:09.848 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:45:09.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:45:09.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:45:09.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:45:09.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.572269 -999.00  +21.70  13.28     25   +1.20 1 1 1 1 1   888    0 20.28 -4.19 ----- 16.8 13.3 192.8 17.3 27.1 -27.5 26.5 -29.6 28.2 -25.3 28.9 -28.8
2025-11-24T15:45:09.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:45:09.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:45:09.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.572269
2025-11-24T15:45:09.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:45:09.863 [DEBUG] [Thread-192663] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:45:09.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:45:09.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:45:09.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:45:09.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:45:09.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:44:45', tmtdew=23.8, humidity=20.43, cloud=0.0, wind=20.8, temperature=21.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:44:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:45:09.940 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:45:09.951 [DEBUG] [Thread-192666] [transport.py] [_log()] starting thread (client mode): 0xd31b1ed0
2025-11-24T15:45:09.951 [DEBUG] [Thread-192666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:45:09.966 [DEBUG] [Thread-192666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:45:09.966 [INFO] [Thread-192666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] client lang: <none>
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] server lang: <none>
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] kex follows: False
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] Compression: none
2025-11-24T15:45:09.974 [DEBUG] [Thread-192666] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:45:10.029 [DEBUG] [Thread-192666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:45:10.029 [DEBUG] [Thread-192666] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:45:10.029 [DEBUG] [Thread-192666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:45:10.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:45:10.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:45:10.086 [DEBUG] [Thread-192666] [transport.py] [_log()] userauth is OK
2025-11-24T15:45:10.086 [DEBUG] [Thread-192666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:45:10.086 [DEBUG] [Thread-192666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:45:10.086 [DEBUG] [Thread-192666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:45:10.086 [DEBUG] [Thread-192666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:45:10.101 [INFO] [Thread-192666] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:45:10.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:45:10.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:45:10.917 [DEBUG] [Thread-192666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:45:10.917 [DEBUG] [Thread-192666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:45:10.965 [DEBUG] [Thread-192666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:45:10.965 [DEBUG] [Thread-192666] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:45:10.973 [DEBUG] [Thread-192666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:45:10.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:45:10.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-11-24T15:45:10.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-11-24T15:45:10.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:45:10.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:45:10.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:45:11.006 [DEBUG] [Thread-192666] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:45:19.198 [DEBUG] [Thread-192668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:45:30.513 [DEBUG] [Thread-192669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:45:34.261 [DEBUG] [Thread-192670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:45:41.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:45:41.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:45:41.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-11-24T15:45:41.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 45, 18), 23.82, 20.4, 0.0, 18.69, 21.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:45:41.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:45:18
2025-11-24T15:45:41.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:45:42.108 [DEBUG] [Thread-192671] [transport.py] [_log()] starting thread (client mode): 0xd3137940
2025-11-24T15:45:42.108 [DEBUG] [Thread-192671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:45:42.127 [DEBUG] [Thread-192671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:45:42.127 [INFO] [Thread-192671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:45:42.130 [DEBUG] [Thread-192671] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:45:42.131 [DEBUG] [Thread-192671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:45:42.131 [DEBUG] [Thread-192671] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:45:42.131 [DEBUG] [Thread-192671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] client lang: <none>
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] server lang: <none>
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] kex follows: False
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:45:42.132 [DEBUG] [Thread-192671] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:45:42.133 [DEBUG] [Thread-192671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:45:42.133 [DEBUG] [Thread-192671] [transport.py] [_log()] Compression: none
2025-11-24T15:45:42.133 [DEBUG] [Thread-192671] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:45:42.154 [DEBUG] [Thread-192671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:45:42.155 [DEBUG] [Thread-192671] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:45:42.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:45:42.156 [DEBUG] [Thread-192671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:45:42.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:45:42.197 [DEBUG] [Thread-192671] [transport.py] [_log()] userauth is OK
2025-11-24T15:45:42.198 [DEBUG] [Thread-192671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:45:42.198 [DEBUG] [Thread-192671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:45:42.198 [DEBUG] [Thread-192671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:45:42.198 [DEBUG] [Thread-192671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:45:42.225 [INFO] [Thread-192671] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:45:42.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:45:42.867 [DEBUG] [Thread-192671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:45:42.867 [DEBUG] [Thread-192671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:45:42.867 [DEBUG] [Thread-192671] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:45:42.908 [DEBUG] [Thread-192671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:45:42.908 [DEBUG] [Thread-192671] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:45:42.910 [DEBUG] [Thread-192671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:45:42.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:45:42.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:45:42.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:45:42.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:45:42.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:45:42.931 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:45:42.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:45:42.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:45:42.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:45:42.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.572963 -999.00  +21.30  20.76     25   +0.90 1 1 1 1 1   888    0 20.42 -6.61 ----- 18.5 20.8 179.0 26.9 27.0 -29.6 26.5 -31.3 28.2 -27.4 28.9 -28.6
2025-11-24T15:45:42.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:45:42.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:45:42.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.572963
2025-11-24T15:45:42.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:45:42.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:45:42.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:45:42.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:45:42.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:45:42.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:45:18', tmtdew=23.82, humidity=20.4, cloud=0.0, wind=18.69, temperature=21.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:45:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:45:42.933 [DEBUG] [Thread-192671] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:45:43.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:45:43.024 [DEBUG] [Thread-192674] [transport.py] [_log()] starting thread (client mode): 0xd3137a60
2025-11-24T15:45:43.024 [DEBUG] [Thread-192674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:45:43.039 [DEBUG] [Thread-192674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:45:43.039 [INFO] [Thread-192674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:45:43.046 [DEBUG] [Thread-192674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:45:43.046 [DEBUG] [Thread-192674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:45:43.047 [DEBUG] [Thread-192674] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:45:43.047 [DEBUG] [Thread-192674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:45:43.047 [DEBUG] [Thread-192674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:45:43.047 [DEBUG] [Thread-192674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:45:43.047 [DEBUG] [Thread-192674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:45:43.047 [DEBUG] [Thread-192674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:45:43.047 [DEBUG] [Thread-192674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:45:43.048 [DEBUG] [Thread-192674] [transport.py] [_log()] client lang: <none>
2025-11-24T15:45:43.048 [DEBUG] [Thread-192674] [transport.py] [_log()] server lang: <none>
2025-11-24T15:45:43.048 [DEBUG] [Thread-192674] [transport.py] [_log()] kex follows: False
2025-11-24T15:45:43.048 [DEBUG] [Thread-192674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:45:43.049 [DEBUG] [Thread-192674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:45:43.049 [DEBUG] [Thread-192674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:45:43.049 [DEBUG] [Thread-192674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:45:43.049 [DEBUG] [Thread-192674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:45:43.049 [DEBUG] [Thread-192674] [transport.py] [_log()] Compression: none
2025-11-24T15:45:43.050 [DEBUG] [Thread-192674] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:45:43.107 [DEBUG] [Thread-192674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:45:43.107 [DEBUG] [Thread-192674] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:45:43.108 [DEBUG] [Thread-192674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:45:43.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:45:43.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:45:43.166 [DEBUG] [Thread-192674] [transport.py] [_log()] userauth is OK
2025-11-24T15:45:43.166 [DEBUG] [Thread-192674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:45:43.166 [DEBUG] [Thread-192674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:45:43.166 [DEBUG] [Thread-192674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:45:43.166 [DEBUG] [Thread-192674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:45:43.185 [INFO] [Thread-192674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:45:43.185 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:45:43.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:45:44.026 [DEBUG] [Thread-192674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:45:44.026 [DEBUG] [Thread-192674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:45:44.074 [DEBUG] [Thread-192674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:45:44.074 [DEBUG] [Thread-192674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:45:44.083 [DEBUG] [Thread-192674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:45:44.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:45:44.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-11-24T15:45:44.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-11-24T15:45:44.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:45:44.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:45:44.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:45:44.115 [DEBUG] [Thread-192674] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:45:49.292 [DEBUG] [Thread-192676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:46:04.327 [DEBUG] [Thread-192677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:46:14.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:46:14.147 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:46:14.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-11-24T15:46:14.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 45, 50), 23.81, 20.0, 0.0, 16.18, 21.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:46:14.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:45:50
2025-11-24T15:46:15.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:46:15.270 [DEBUG] [Thread-192678] [transport.py] [_log()] starting thread (client mode): 0xd31b3b20
2025-11-24T15:46:15.270 [DEBUG] [Thread-192678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:46:15.290 [DEBUG] [Thread-192678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:46:15.290 [INFO] [Thread-192678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:46:15.293 [DEBUG] [Thread-192678] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] client lang: <none>
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] server lang: <none>
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] kex follows: False
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:46:15.294 [DEBUG] [Thread-192678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:46:15.295 [DEBUG] [Thread-192678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:46:15.295 [DEBUG] [Thread-192678] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:46:15.295 [DEBUG] [Thread-192678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:46:15.295 [DEBUG] [Thread-192678] [transport.py] [_log()] Compression: none
2025-11-24T15:46:15.295 [DEBUG] [Thread-192678] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:46:15.314 [DEBUG] [Thread-192678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:46:15.314 [DEBUG] [Thread-192678] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:46:15.325 [DEBUG] [Thread-192678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:46:15.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:46:15.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:46:15.328 [DEBUG] [Thread-192678] [transport.py] [_log()] userauth is OK
2025-11-24T15:46:15.328 [DEBUG] [Thread-192678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:46:15.328 [DEBUG] [Thread-192678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:46:15.328 [DEBUG] [Thread-192678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:46:15.328 [DEBUG] [Thread-192678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:46:15.364 [INFO] [Thread-192678] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:46:15.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:46:15.973 [DEBUG] [Thread-192678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:46:15.973 [DEBUG] [Thread-192678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:46:15.973 [DEBUG] [Thread-192678] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:46:16.014 [DEBUG] [Thread-192678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:46:16.014 [DEBUG] [Thread-192678] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:46:16.017 [DEBUG] [Thread-192678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:46:16.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:46:16.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:46:16.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:46:16.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:46:16.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:46:16.043 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:46:16.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:46:16.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.573310 -999.00  +21.30  17.28     26   +1.00 1 1 1 1 1   888    0 20.26 -9.22 ----- 16.1 17.3 184.6 22.5 27.0 -28.8 26.3 -30.1 28.1 -26.1 28.8 -27.5
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.573310
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:46:16.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:45:50', tmtdew=23.81, humidity=20.0, cloud=0.0, wind=16.18, temperature=21.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:45:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:46:16.045 [DEBUG] [Thread-192678] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:46:16.116 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:46:16.125 [DEBUG] [Thread-192681] [transport.py] [_log()] starting thread (client mode): 0xd31b25c0
2025-11-24T15:46:16.126 [DEBUG] [Thread-192681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:46:16.140 [DEBUG] [Thread-192681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:46:16.140 [INFO] [Thread-192681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] client lang: <none>
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] server lang: <none>
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] kex follows: False
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] Compression: none
2025-11-24T15:46:16.148 [DEBUG] [Thread-192681] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:46:16.205 [DEBUG] [Thread-192681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:46:16.214 [DEBUG] [Thread-192681] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:46:16.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:46:16.214 [DEBUG] [Thread-192681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:46:16.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:46:16.262 [DEBUG] [Thread-192681] [transport.py] [_log()] userauth is OK
2025-11-24T15:46:16.262 [DEBUG] [Thread-192681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:46:16.262 [DEBUG] [Thread-192681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:46:16.262 [DEBUG] [Thread-192681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:46:16.262 [DEBUG] [Thread-192681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:46:16.276 [INFO] [Thread-192681] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:46:16.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:46:16.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:46:17.131 [DEBUG] [Thread-192681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:46:17.131 [DEBUG] [Thread-192681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:46:17.179 [DEBUG] [Thread-192681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:46:17.179 [DEBUG] [Thread-192681] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:46:17.188 [DEBUG] [Thread-192681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:46:17.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:46:17.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-11-24T15:46:17.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-11-24T15:46:17.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:46:17.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:46:17.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:46:17.223 [DEBUG] [Thread-192681] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:46:19.357 [DEBUG] [Thread-192683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:46:30.748 [DEBUG] [Thread-192684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:46:34.395 [DEBUG] [Thread-192685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:46:47.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:46:47.228 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:46:47.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-11-24T15:46:48.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 46, 23), 24.06, 19.7, 0.0, 16.3, 21.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:46:48.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:46:23
2025-11-24T15:46:48.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:46:48.408 [DEBUG] [Thread-192686] [transport.py] [_log()] starting thread (client mode): 0xd3137940
2025-11-24T15:46:48.409 [DEBUG] [Thread-192686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:46:48.420 [DEBUG] [Thread-192686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:46:48.420 [INFO] [Thread-192686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:46:48.422 [DEBUG] [Thread-192686] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] client lang: <none>
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] server lang: <none>
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] kex follows: False
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] Compression: none
2025-11-24T15:46:48.423 [DEBUG] [Thread-192686] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:46:48.439 [DEBUG] [Thread-192686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:46:48.439 [DEBUG] [Thread-192686] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:46:48.439 [DEBUG] [Thread-192686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:46:48.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:46:48.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:46:48.440 [DEBUG] [Thread-192686] [transport.py] [_log()] userauth is OK
2025-11-24T15:46:48.440 [DEBUG] [Thread-192686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:46:48.440 [DEBUG] [Thread-192686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:46:48.440 [DEBUG] [Thread-192686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:46:48.440 [DEBUG] [Thread-192686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:46:48.450 [INFO] [Thread-192686] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:46:48.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:46:49.072 [DEBUG] [Thread-192686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:46:49.073 [DEBUG] [Thread-192686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:46:49.073 [DEBUG] [Thread-192686] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:46:49.113 [DEBUG] [Thread-192686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:46:49.113 [DEBUG] [Thread-192686] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:46:49.115 [DEBUG] [Thread-192686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:46:49.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:46:49.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:46:49.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:46:49.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:46:49.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:46:49.140 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:46:49.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:46:49.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:46:49.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:46:49.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.573658 -999.00  +21.30  12.26     26   +1.10 1 1 1 1 1   888    0 20.36 -13.59 ----- 13.4 12.3 187.2 23.1 26.9 -27.8 26.1 -30.1 28.0 -26.5 28.9 -29.5
2025-11-24T15:46:49.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:46:49.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:46:49.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.573658
2025-11-24T15:46:49.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:46:49.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:46:49.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:46:49.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:46:49.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:46:49.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:46:23', tmtdew=24.06, humidity=19.7, cloud=0.0, wind=16.3, temperature=21.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:46:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:46:49.143 [DEBUG] [Thread-192686] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:46:49.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:46:49.237 [DEBUG] [Thread-192689] [transport.py] [_log()] starting thread (client mode): 0xd31b19c0
2025-11-24T15:46:49.237 [DEBUG] [Thread-192689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:46:49.251 [DEBUG] [Thread-192689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:46:49.251 [INFO] [Thread-192689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:46:49.258 [DEBUG] [Thread-192689] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:46:49.258 [DEBUG] [Thread-192689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:46:49.258 [DEBUG] [Thread-192689] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] client lang: <none>
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] server lang: <none>
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] kex follows: False
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:46:49.259 [DEBUG] [Thread-192689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:46:49.260 [DEBUG] [Thread-192689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:46:49.260 [DEBUG] [Thread-192689] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:46:49.260 [DEBUG] [Thread-192689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:46:49.260 [DEBUG] [Thread-192689] [transport.py] [_log()] Compression: none
2025-11-24T15:46:49.260 [DEBUG] [Thread-192689] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:46:49.319 [DEBUG] [Thread-192689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:46:49.320 [DEBUG] [Thread-192689] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:46:49.321 [DEBUG] [Thread-192689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:46:49.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:46:49.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:46:49.378 [DEBUG] [Thread-192689] [transport.py] [_log()] userauth is OK
2025-11-24T15:46:49.379 [DEBUG] [Thread-192689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:46:49.379 [DEBUG] [Thread-192689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:46:49.379 [DEBUG] [Thread-192689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:46:49.379 [DEBUG] [Thread-192689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:46:49.401 [INFO] [Thread-192689] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:46:49.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:46:49.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:46:49.427 [DEBUG] [Thread-192691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:46:50.223 [DEBUG] [Thread-192689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:46:50.223 [DEBUG] [Thread-192689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:46:50.271 [DEBUG] [Thread-192689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:46:50.271 [DEBUG] [Thread-192689] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:46:50.279 [DEBUG] [Thread-192689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:46:50.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:46:50.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:46:50.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-11-24T15:46:50.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:46:50.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:46:50.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:46:50.312 [DEBUG] [Thread-192689] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:47:04.475 [DEBUG] [Thread-192692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:47:19.504 [DEBUG] [Thread-192693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:47:20.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:47:20.334 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:47:20.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:47:21.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 46, 55), 24.48, 19.57, 0.0, 25.18, 22.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:47:21.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:46:55
2025-11-24T15:47:21.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:47:21.441 [DEBUG] [Thread-192694] [transport.py] [_log()] starting thread (client mode): 0xd31b00a0
2025-11-24T15:47:21.441 [DEBUG] [Thread-192694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:47:21.459 [DEBUG] [Thread-192694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:47:21.459 [INFO] [Thread-192694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:47:21.463 [DEBUG] [Thread-192694] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:47:21.463 [DEBUG] [Thread-192694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:47:21.463 [DEBUG] [Thread-192694] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:47:21.463 [DEBUG] [Thread-192694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:47:21.463 [DEBUG] [Thread-192694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:47:21.463 [DEBUG] [Thread-192694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:47:21.463 [DEBUG] [Thread-192694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:47:21.463 [DEBUG] [Thread-192694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:47:21.463 [DEBUG] [Thread-192694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:47:21.464 [DEBUG] [Thread-192694] [transport.py] [_log()] client lang: <none>
2025-11-24T15:47:21.464 [DEBUG] [Thread-192694] [transport.py] [_log()] server lang: <none>
2025-11-24T15:47:21.464 [DEBUG] [Thread-192694] [transport.py] [_log()] kex follows: False
2025-11-24T15:47:21.464 [DEBUG] [Thread-192694] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:47:21.464 [DEBUG] [Thread-192694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:47:21.464 [DEBUG] [Thread-192694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:47:21.464 [DEBUG] [Thread-192694] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:47:21.464 [DEBUG] [Thread-192694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:47:21.465 [DEBUG] [Thread-192694] [transport.py] [_log()] Compression: none
2025-11-24T15:47:21.465 [DEBUG] [Thread-192694] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:47:21.495 [DEBUG] [Thread-192694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:47:21.496 [DEBUG] [Thread-192694] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:47:21.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:47:21.497 [DEBUG] [Thread-192694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:47:21.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:47:21.498 [DEBUG] [Thread-192694] [transport.py] [_log()] userauth is OK
2025-11-24T15:47:21.499 [DEBUG] [Thread-192694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:47:21.499 [DEBUG] [Thread-192694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:47:21.499 [DEBUG] [Thread-192694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:47:21.499 [DEBUG] [Thread-192694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:47:21.529 [INFO] [Thread-192694] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:47:21.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:47:22.187 [DEBUG] [Thread-192694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:47:22.196 [DEBUG] [Thread-192694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:47:22.197 [DEBUG] [Thread-192694] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:47:22.228 [DEBUG] [Thread-192694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:47:22.229 [DEBUG] [Thread-192694] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:47:22.231 [DEBUG] [Thread-192694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:47:22.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:47:22.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:47:22.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:47:22.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:47:22.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:47:22.251 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:47:22.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:47:22.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:47:22.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:47:22.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.574005 -999.00  +22.00  15.76     25   +1.40 1 1 1 1 1   888    0 20.56 -14.70 ----- 19.4 15.8 205.6 22.8 27.1 -26.8 26.5 -26.3 28.2 -25.7 28.9 -28.0
2025-11-24T15:47:22.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:47:22.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:47:22.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.574005
2025-11-24T15:47:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:47:22.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:47:22.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:47:22.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:47:22.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:47:22.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:46:55', tmtdew=24.48, humidity=19.57, cloud=0.0, wind=25.18, temperature=22.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:46:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:47:22.259 [DEBUG] [Thread-192694] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:47:22.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:47:22.342 [DEBUG] [Thread-192697] [transport.py] [_log()] starting thread (client mode): 0xd3135510
2025-11-24T15:47:22.342 [DEBUG] [Thread-192697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:47:22.356 [DEBUG] [Thread-192697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:47:22.356 [INFO] [Thread-192697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] client lang: <none>
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] server lang: <none>
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] kex follows: False
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] Compression: none
2025-11-24T15:47:22.364 [DEBUG] [Thread-192697] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:47:22.431 [DEBUG] [Thread-192697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:47:22.432 [DEBUG] [Thread-192697] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:47:22.432 [DEBUG] [Thread-192697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:47:22.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:47:22.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:47:22.489 [DEBUG] [Thread-192697] [transport.py] [_log()] userauth is OK
2025-11-24T15:47:22.489 [DEBUG] [Thread-192697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:47:22.489 [DEBUG] [Thread-192697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:47:22.489 [DEBUG] [Thread-192697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:47:22.489 [DEBUG] [Thread-192697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:47:22.503 [INFO] [Thread-192697] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:47:22.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:47:22.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:47:23.322 [DEBUG] [Thread-192697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:47:23.322 [DEBUG] [Thread-192697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:47:23.369 [DEBUG] [Thread-192697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:47:23.369 [DEBUG] [Thread-192697] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:47:23.379 [DEBUG] [Thread-192697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:47:23.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:47:23.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-11-24T15:47:23.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-11-24T15:47:23.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:47:23.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:47:23.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:47:23.426 [DEBUG] [Thread-192697] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:47:31.078 [DEBUG] [Thread-192699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:47:34.536 [DEBUG] [Thread-192700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:47:49.609 [DEBUG] [Thread-192701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:47:53.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:47:53.448 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:47:53.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-11-24T15:47:54.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 47, 28), 24.69, 19.31, 0.0, 30.82, 22.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:47:54.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:47:28
2025-11-24T15:47:54.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:47:54.517 [DEBUG] [Thread-192702] [transport.py] [_log()] starting thread (client mode): 0xd3136b60
2025-11-24T15:47:54.517 [DEBUG] [Thread-192702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:47:54.537 [DEBUG] [Thread-192702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:47:54.537 [INFO] [Thread-192702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:47:54.538 [DEBUG] [Thread-192702] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:47:54.538 [DEBUG] [Thread-192702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:47:54.538 [DEBUG] [Thread-192702] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:47:54.538 [DEBUG] [Thread-192702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:47:54.538 [DEBUG] [Thread-192702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] client lang: <none>
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] server lang: <none>
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] kex follows: False
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] Compression: none
2025-11-24T15:47:54.539 [DEBUG] [Thread-192702] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:47:54.547 [DEBUG] [Thread-192702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:47:54.547 [DEBUG] [Thread-192702] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:47:54.547 [DEBUG] [Thread-192702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:47:54.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:47:54.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:47:54.549 [DEBUG] [Thread-192702] [transport.py] [_log()] userauth is OK
2025-11-24T15:47:54.549 [DEBUG] [Thread-192702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:47:54.549 [DEBUG] [Thread-192702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:47:54.549 [DEBUG] [Thread-192702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:47:54.549 [DEBUG] [Thread-192702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:47:54.570 [INFO] [Thread-192702] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:47:54.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:47:55.168 [DEBUG] [Thread-192702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:47:55.168 [DEBUG] [Thread-192702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:47:55.168 [DEBUG] [Thread-192702] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:47:55.209 [DEBUG] [Thread-192702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:47:55.210 [DEBUG] [Thread-192702] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:47:55.213 [DEBUG] [Thread-192702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:47:55.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:47:55.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:47:55.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:47:55.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:47:55.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:47:55.237 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:47:55.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:47:55.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:47:55.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:47:55.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.574352 -999.00  +22.50  33.44     24   +1.30 1 1 2 1 1   888    0 20.05 -14.38 ----- 19.9 33.4 196.0 41.1 27.1 -28.6 26.6 -27.9 28.4 -25.6 29.0 -26.7
2025-11-24T15:47:55.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:47:55.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:47:55.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.574352
2025-11-24T15:47:55.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:47:55.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:47:55.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:47:55.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:47:55.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:47:55.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:47:28', tmtdew=24.69, humidity=19.31, cloud=0.0, wind=30.82, temperature=22.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:47:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:47:55.240 [DEBUG] [Thread-192702] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:47:55.326 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:47:55.336 [DEBUG] [Thread-192705] [transport.py] [_log()] starting thread (client mode): 0xd3136860
2025-11-24T15:47:55.336 [DEBUG] [Thread-192705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:47:55.350 [DEBUG] [Thread-192705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:47:55.350 [INFO] [Thread-192705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:47:55.358 [DEBUG] [Thread-192705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:47:55.358 [DEBUG] [Thread-192705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:47:55.358 [DEBUG] [Thread-192705] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:47:55.358 [DEBUG] [Thread-192705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:47:55.358 [DEBUG] [Thread-192705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:47:55.358 [DEBUG] [Thread-192705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:47:55.358 [DEBUG] [Thread-192705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:47:55.358 [DEBUG] [Thread-192705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:47:55.358 [DEBUG] [Thread-192705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:47:55.359 [DEBUG] [Thread-192705] [transport.py] [_log()] client lang: <none>
2025-11-24T15:47:55.359 [DEBUG] [Thread-192705] [transport.py] [_log()] server lang: <none>
2025-11-24T15:47:55.359 [DEBUG] [Thread-192705] [transport.py] [_log()] kex follows: False
2025-11-24T15:47:55.359 [DEBUG] [Thread-192705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:47:55.359 [DEBUG] [Thread-192705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:47:55.359 [DEBUG] [Thread-192705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:47:55.359 [DEBUG] [Thread-192705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:47:55.359 [DEBUG] [Thread-192705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:47:55.359 [DEBUG] [Thread-192705] [transport.py] [_log()] Compression: none
2025-11-24T15:47:55.359 [DEBUG] [Thread-192705] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:47:55.418 [DEBUG] [Thread-192705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:47:55.419 [DEBUG] [Thread-192705] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:47:55.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:47:55.420 [DEBUG] [Thread-192705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:47:55.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:47:55.474 [DEBUG] [Thread-192705] [transport.py] [_log()] userauth is OK
2025-11-24T15:47:55.474 [DEBUG] [Thread-192705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:47:55.474 [DEBUG] [Thread-192705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:47:55.474 [DEBUG] [Thread-192705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:47:55.474 [DEBUG] [Thread-192705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:47:55.498 [INFO] [Thread-192705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:47:55.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:47:55.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:47:56.316 [DEBUG] [Thread-192705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:47:56.316 [DEBUG] [Thread-192705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:47:56.364 [DEBUG] [Thread-192705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:47:56.364 [DEBUG] [Thread-192705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:47:56.372 [DEBUG] [Thread-192705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:47:56.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:47:56.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:47: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') -> 00000000
2025-11-24T15:47:56.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:47:56.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:47:56.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:47:56.404 [DEBUG] [Thread-192705] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:48:04.636 [DEBUG] [Thread-192707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:48:19.694 [DEBUG] [Thread-192708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:48:26.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:48:26.401 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:48:26.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-11-24T15:48:27.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 48), 24.73, 18.89, 0.0, 31.53, 22.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:48:27.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:48:00
2025-11-24T15:48:27.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:48:27.467 [DEBUG] [Thread-192709] [transport.py] [_log()] starting thread (client mode): 0xd07aa2f0
2025-11-24T15:48:27.467 [DEBUG] [Thread-192709] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:48:27.486 [DEBUG] [Thread-192709] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:48:27.486 [INFO] [Thread-192709] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] client lang: <none>
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] server lang: <none>
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] kex follows: False
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] Compression: none
2025-11-24T15:48:27.488 [DEBUG] [Thread-192709] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:48:27.500 [DEBUG] [Thread-192709] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:48:27.500 [DEBUG] [Thread-192709] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:48:27.500 [DEBUG] [Thread-192709] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:48:27.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:48:27.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:48:27.501 [DEBUG] [Thread-192709] [transport.py] [_log()] userauth is OK
2025-11-24T15:48:27.501 [DEBUG] [Thread-192709] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:48:27.501 [DEBUG] [Thread-192709] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:48:27.501 [DEBUG] [Thread-192709] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:48:27.501 [DEBUG] [Thread-192709] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:48:27.510 [INFO] [Thread-192709] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:48:27.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:48:28.129 [DEBUG] [Thread-192709] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:48:28.129 [DEBUG] [Thread-192709] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:48:28.129 [DEBUG] [Thread-192709] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:48:28.170 [DEBUG] [Thread-192709] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:48:28.170 [DEBUG] [Thread-192709] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:48:28.172 [DEBUG] [Thread-192709] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:48:28.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:48:28.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:48:28.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:48:28.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:48:28.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:48:28.191 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:48:28.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:48:28.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:48:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:48:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.574700 -999.00  +22.60  20.23     24   +1.30 1 1 1 1 1   888    0 20.27 -13.08 ----- 15.3 20.2 209.2 31.2 27.1 -27.8 26.6 -28.8 28.3 -26.9 28.9 -29.2
2025-11-24T15:48:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:48:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:48:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.574700
2025-11-24T15:48:28.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:48:28.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:48:28.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:48:28.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:48:28.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:48:28.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:48:00', tmtdew=24.73, humidity=18.89, cloud=0.0, wind=31.53, temperature=22.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:47:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:48:28.192 [DEBUG] [Thread-192709] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:48:28.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:48:28.278 [DEBUG] [Thread-192712] [transport.py] [_log()] starting thread (client mode): 0xd07abd90
2025-11-24T15:48:28.278 [DEBUG] [Thread-192712] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:48:28.293 [DEBUG] [Thread-192712] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:48:28.293 [INFO] [Thread-192712] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] client lang: <none>
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] server lang: <none>
2025-11-24T15:48:28.302 [DEBUG] [Thread-192712] [transport.py] [_log()] kex follows: False
2025-11-24T15:48:28.303 [DEBUG] [Thread-192712] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:48:28.303 [DEBUG] [Thread-192712] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:48:28.303 [DEBUG] [Thread-192712] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:48:28.303 [DEBUG] [Thread-192712] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:48:28.303 [DEBUG] [Thread-192712] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:48:28.303 [DEBUG] [Thread-192712] [transport.py] [_log()] Compression: none
2025-11-24T15:48:28.303 [DEBUG] [Thread-192712] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:48:28.367 [DEBUG] [Thread-192712] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:48:28.368 [DEBUG] [Thread-192712] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:48:28.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:48:28.370 [DEBUG] [Thread-192712] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:48:28.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:48:28.427 [DEBUG] [Thread-192712] [transport.py] [_log()] userauth is OK
2025-11-24T15:48:28.427 [DEBUG] [Thread-192712] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:48:28.428 [DEBUG] [Thread-192712] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:48:28.428 [DEBUG] [Thread-192712] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:48:28.428 [DEBUG] [Thread-192712] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:48:28.442 [INFO] [Thread-192712] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:48:28.442 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:48:28.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:48:29.288 [DEBUG] [Thread-192712] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:48:29.288 [DEBUG] [Thread-192712] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:48:29.337 [DEBUG] [Thread-192712] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:48:29.337 [DEBUG] [Thread-192712] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:48:29.345 [DEBUG] [Thread-192712] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:48:29.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:48:29.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-11-24T15:48:29.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-11-24T15:48:29.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:48:29.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:48:29.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:48:29.378 [DEBUG] [Thread-192712] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:48:31.421 [DEBUG] [Thread-192714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:48:34.719 [DEBUG] [Thread-192715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:48:49.756 [DEBUG] [Thread-192716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:48:59.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:48:59.400 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:48:59.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-11-24T15:49:00.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 48, 33), 24.63, 19.0, 0.0, 31.58, 22.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:49:00.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:48:33
2025-11-24T15:49:00.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:49:00.542 [DEBUG] [Thread-192717] [transport.py] [_log()] starting thread (client mode): 0xd31b35b0
2025-11-24T15:49:00.542 [DEBUG] [Thread-192717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:49:00.560 [DEBUG] [Thread-192717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:49:00.560 [INFO] [Thread-192717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] client lang: <none>
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] server lang: <none>
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] kex follows: False
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] Compression: none
2025-11-24T15:49:00.564 [DEBUG] [Thread-192717] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:49:00.571 [DEBUG] [Thread-192717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:49:00.571 [DEBUG] [Thread-192717] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:49:00.572 [DEBUG] [Thread-192717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:49:00.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:49:00.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:49:00.572 [DEBUG] [Thread-192717] [transport.py] [_log()] userauth is OK
2025-11-24T15:49:00.572 [DEBUG] [Thread-192717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:49:00.572 [DEBUG] [Thread-192717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:49:00.572 [DEBUG] [Thread-192717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:49:00.572 [DEBUG] [Thread-192717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:49:00.581 [INFO] [Thread-192717] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:49:00.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:49:01.155 [DEBUG] [Thread-192717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:49:01.155 [DEBUG] [Thread-192717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:49:01.155 [DEBUG] [Thread-192717] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:49:01.196 [DEBUG] [Thread-192717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:49:01.196 [DEBUG] [Thread-192717] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:49:01.198 [DEBUG] [Thread-192717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:49:01.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:49:01.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:49:01.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:49:01.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:49:01.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:49:01.215 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:49:01.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.575047 -999.00  +22.70  22.85     24   +1.20 1 1 1 1 1   888    0 20.46 -10.40 ----- 23.2 22.9 185.4 32.8 27.2 -28.0 26.7 -31.1 28.4 -26.5 29.2 -26.8
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.575047
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:49:01.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:48:33', tmtdew=24.63, humidity=19.0, cloud=0.0, wind=31.58, temperature=22.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:48:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:49:01.216 [DEBUG] [Thread-192717] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:49:01.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:49:01.301 [DEBUG] [Thread-192720] [transport.py] [_log()] starting thread (client mode): 0xd31b1780
2025-11-24T15:49:01.301 [DEBUG] [Thread-192720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:49:01.316 [DEBUG] [Thread-192720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:49:01.316 [INFO] [Thread-192720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:49:01.326 [DEBUG] [Thread-192720] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:49:01.326 [DEBUG] [Thread-192720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:49:01.326 [DEBUG] [Thread-192720] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:49:01.326 [DEBUG] [Thread-192720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:49:01.326 [DEBUG] [Thread-192720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:49:01.326 [DEBUG] [Thread-192720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] client lang: <none>
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] server lang: <none>
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] kex follows: False
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] Compression: none
2025-11-24T15:49:01.327 [DEBUG] [Thread-192720] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:49:01.380 [DEBUG] [Thread-192720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:49:01.380 [DEBUG] [Thread-192720] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:49:01.380 [DEBUG] [Thread-192720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:49:01.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:49:01.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:49:01.438 [DEBUG] [Thread-192720] [transport.py] [_log()] userauth is OK
2025-11-24T15:49:01.438 [DEBUG] [Thread-192720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:49:01.438 [DEBUG] [Thread-192720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:49:01.438 [DEBUG] [Thread-192720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:49:01.438 [DEBUG] [Thread-192720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:49:01.452 [INFO] [Thread-192720] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:49:01.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:49:01.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:49:02.290 [DEBUG] [Thread-192720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:49:02.291 [DEBUG] [Thread-192720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:49:02.338 [DEBUG] [Thread-192720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:49:02.338 [DEBUG] [Thread-192720] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:49:02.346 [DEBUG] [Thread-192720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:49:02.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:49:02.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-11-24T15:49:02.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-11-24T15:49:02.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:49:02.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:49:02.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:49:02.378 [DEBUG] [Thread-192720] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:49:04.790 [DEBUG] [Thread-192722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:49:19.850 [DEBUG] [Thread-192723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:49:31.645 [DEBUG] [Thread-192724 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:49:32.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:49:32.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:49:32.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T15:49:33.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 49, 5), 24.63, 19.0, 0.0, 29.15, 22.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:49:33.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:49:05
2025-11-24T15:49:33.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:49:33.504 [DEBUG] [Thread-192725] [transport.py] [_log()] starting thread (client mode): 0xd31b3460
2025-11-24T15:49:33.504 [DEBUG] [Thread-192725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:49:33.525 [DEBUG] [Thread-192725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:49:33.525 [INFO] [Thread-192725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:49:33.530 [DEBUG] [Thread-192725] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:49:33.530 [DEBUG] [Thread-192725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] client lang: <none>
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] server lang: <none>
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] kex follows: False
2025-11-24T15:49:33.531 [DEBUG] [Thread-192725] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:49:33.532 [DEBUG] [Thread-192725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:49:33.532 [DEBUG] [Thread-192725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:49:33.532 [DEBUG] [Thread-192725] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:49:33.532 [DEBUG] [Thread-192725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:49:33.532 [DEBUG] [Thread-192725] [transport.py] [_log()] Compression: none
2025-11-24T15:49:33.533 [DEBUG] [Thread-192725] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:49:33.567 [DEBUG] [Thread-192725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:49:33.568 [DEBUG] [Thread-192725] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:49:33.568 [DEBUG] [Thread-192725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:49:33.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:49:33.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:49:33.571 [DEBUG] [Thread-192725] [transport.py] [_log()] userauth is OK
2025-11-24T15:49:33.571 [DEBUG] [Thread-192725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:49:33.571 [DEBUG] [Thread-192725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:49:33.572 [DEBUG] [Thread-192725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:49:33.572 [DEBUG] [Thread-192725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:49:33.608 [INFO] [Thread-192725] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:49:33.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:49:34.281 [DEBUG] [Thread-192725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:49:34.281 [DEBUG] [Thread-192725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:49:34.281 [DEBUG] [Thread-192725] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:49:34.322 [DEBUG] [Thread-192725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:49:34.322 [DEBUG] [Thread-192725] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:49:34.324 [DEBUG] [Thread-192725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:49:34.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:49:34.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:49:34.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:49:34.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:49:34.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:49:34.342 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:49:34.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:49:34.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:49:34.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:49:34.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.575394 -999.00  +22.20  14.28     24   +1.10 1 1 1 1 1   888    0 20.64 -9.15 ----- 16.5 14.3 190.0 30.6 27.1 -28.1 26.4 -30.1 28.1 -26.9 28.9 -29.4
2025-11-24T15:49:34.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:49:34.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:49:34.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.575394
2025-11-24T15:49:34.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:49:34.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:49:34.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:49:34.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:49:34.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:49:34.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:49:05', tmtdew=24.63, humidity=19.0, cloud=0.0, wind=29.15, temperature=22.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:48:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:49:34.348 [DEBUG] [Thread-192725] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:49:34.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:49:34.433 [DEBUG] [Thread-192728] [transport.py] [_log()] starting thread (client mode): 0xd3162590
2025-11-24T15:49:34.433 [DEBUG] [Thread-192728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:49:34.448 [DEBUG] [Thread-192728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:49:34.448 [INFO] [Thread-192728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] client lang: <none>
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] server lang: <none>
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] kex follows: False
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:49:34.455 [DEBUG] [Thread-192728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:49:34.456 [DEBUG] [Thread-192728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:49:34.456 [DEBUG] [Thread-192728] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:49:34.456 [DEBUG] [Thread-192728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:49:34.456 [DEBUG] [Thread-192728] [transport.py] [_log()] Compression: none
2025-11-24T15:49:34.456 [DEBUG] [Thread-192728] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:49:34.512 [DEBUG] [Thread-192728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:49:34.512 [DEBUG] [Thread-192728] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:49:34.512 [DEBUG] [Thread-192728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:49:34.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:49:34.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:49:34.569 [DEBUG] [Thread-192728] [transport.py] [_log()] userauth is OK
2025-11-24T15:49:34.569 [DEBUG] [Thread-192728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:49:34.569 [DEBUG] [Thread-192728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:49:34.569 [DEBUG] [Thread-192728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:49:34.569 [DEBUG] [Thread-192728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:49:34.583 [INFO] [Thread-192728] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:49:34.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:49:34.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:49:34.887 [DEBUG] [Thread-192730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:49:35.428 [DEBUG] [Thread-192728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:49:35.428 [DEBUG] [Thread-192728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:49:35.476 [DEBUG] [Thread-192728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:49:35.476 [DEBUG] [Thread-192728] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:49:35.484 [DEBUG] [Thread-192728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:49:35.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:49:35.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-11-24T15:49:35.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:49:35.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:49:35.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:49:35.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:49:35.525 [DEBUG] [Thread-192728] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:49:49.925 [DEBUG] [Thread-192731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:50:04.957 [DEBUG] [Thread-192732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:50:05.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:50:05.527 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:50:05.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-11-24T15:50:06.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 49, 38), 24.57, 19.39, 0.0, 27.61, 22.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:50:06.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:49:38
2025-11-24T15:50:06.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:50:06.738 [DEBUG] [Thread-192733] [transport.py] [_log()] starting thread (client mode): 0xd3162200
2025-11-24T15:50:06.738 [DEBUG] [Thread-192733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:50:06.751 [DEBUG] [Thread-192733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:50:06.751 [INFO] [Thread-192733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:50:06.760 [DEBUG] [Thread-192733] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:50:06.760 [DEBUG] [Thread-192733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] client lang: <none>
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] server lang: <none>
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] kex follows: False
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:50:06.761 [DEBUG] [Thread-192733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:50:06.762 [DEBUG] [Thread-192733] [transport.py] [_log()] Compression: none
2025-11-24T15:50:06.762 [DEBUG] [Thread-192733] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:50:06.780 [DEBUG] [Thread-192733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:50:06.780 [DEBUG] [Thread-192733] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:50:06.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:50:06.781 [DEBUG] [Thread-192733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:50:06.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:50:06.784 [DEBUG] [Thread-192733] [transport.py] [_log()] userauth is OK
2025-11-24T15:50:06.784 [DEBUG] [Thread-192733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:50:06.784 [DEBUG] [Thread-192733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:50:06.784 [DEBUG] [Thread-192733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:50:06.785 [DEBUG] [Thread-192733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:50:06.801 [INFO] [Thread-192733] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:50:06.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:50:13.144 [DEBUG] [Thread-192733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:50:13.144 [DEBUG] [Thread-192733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:50:13.144 [DEBUG] [Thread-192733] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:50:13.185 [DEBUG] [Thread-192733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:50:13.185 [DEBUG] [Thread-192733] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:50:13.188 [DEBUG] [Thread-192733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:50:13.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:50:13.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:50:13.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:50:13.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:50:13.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:50:13.299 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:50:13.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:50:13.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:50:13.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:50:13.303 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-11-24T15:50:13.303 [DEBUG] [Thread-192733] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:50:13.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:49:38', tmtdew=24.57, humidity=19.39, cloud=0.0, wind=27.61, temperature=22.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:50:13.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:50:13.403 [DEBUG] [Thread-192736] [transport.py] [_log()] starting thread (client mode): 0xd3134b20
2025-11-24T15:50:13.403 [DEBUG] [Thread-192736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:50:13.420 [DEBUG] [Thread-192736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:50:13.420 [INFO] [Thread-192736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] client lang: <none>
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] server lang: <none>
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] kex follows: False
2025-11-24T15:50:13.428 [DEBUG] [Thread-192736] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:50:13.429 [DEBUG] [Thread-192736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:50:13.429 [DEBUG] [Thread-192736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:50:13.430 [DEBUG] [Thread-192736] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:50:13.430 [DEBUG] [Thread-192736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:50:13.430 [DEBUG] [Thread-192736] [transport.py] [_log()] Compression: none
2025-11-24T15:50:13.430 [DEBUG] [Thread-192736] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:50:13.485 [DEBUG] [Thread-192736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:50:13.486 [DEBUG] [Thread-192736] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:50:13.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:50:13.487 [DEBUG] [Thread-192736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:50:13.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:50:13.542 [DEBUG] [Thread-192736] [transport.py] [_log()] userauth is OK
2025-11-24T15:50:13.542 [DEBUG] [Thread-192736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:50:13.542 [DEBUG] [Thread-192736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:50:13.542 [DEBUG] [Thread-192736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:50:13.542 [DEBUG] [Thread-192736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:50:13.560 [INFO] [Thread-192736] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:50:13.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:50:13.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:50:14.398 [DEBUG] [Thread-192736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:50:14.398 [DEBUG] [Thread-192736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:50:14.446 [DEBUG] [Thread-192736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:50:14.446 [DEBUG] [Thread-192736] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:50:14.454 [DEBUG] [Thread-192736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:50:14.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:50:14.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-11-24T15:50:14.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-11-24T15:50:14.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:50:14.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:50:14.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:50:14.486 [DEBUG] [Thread-192736] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:50:19.989 [DEBUG] [Thread-192738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:50:31.936 [DEBUG] [Thread-192739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:50:35.072 [DEBUG] [Thread-192740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:50:44.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:50:44.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:50:44.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-11-24T15:50:45.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 50, 10), 24.43, 19.52, 0.0, 24.9, 22.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:50:45.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:50:10
2025-11-24T15:50:45.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:50:45.696 [DEBUG] [Thread-192741] [transport.py] [_log()] starting thread (client mode): 0xd31b1180
2025-11-24T15:50:45.696 [DEBUG] [Thread-192741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:50:45.717 [DEBUG] [Thread-192741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:50:45.717 [INFO] [Thread-192741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] client lang: <none>
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] server lang: <none>
2025-11-24T15:50:45.721 [DEBUG] [Thread-192741] [transport.py] [_log()] kex follows: False
2025-11-24T15:50:45.722 [DEBUG] [Thread-192741] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:50:45.722 [DEBUG] [Thread-192741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:50:45.722 [DEBUG] [Thread-192741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:50:45.722 [DEBUG] [Thread-192741] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:50:45.722 [DEBUG] [Thread-192741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:50:45.722 [DEBUG] [Thread-192741] [transport.py] [_log()] Compression: none
2025-11-24T15:50:45.722 [DEBUG] [Thread-192741] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:50:45.739 [DEBUG] [Thread-192741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:50:45.740 [DEBUG] [Thread-192741] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:50:45.741 [DEBUG] [Thread-192741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:50:45.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:50:45.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:50:45.743 [DEBUG] [Thread-192741] [transport.py] [_log()] userauth is OK
2025-11-24T15:50:45.743 [DEBUG] [Thread-192741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:50:45.743 [DEBUG] [Thread-192741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:50:45.743 [DEBUG] [Thread-192741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:50:45.743 [DEBUG] [Thread-192741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:50:45.770 [INFO] [Thread-192741] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:50:45.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:50:46.377 [DEBUG] [Thread-192741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:50:46.377 [DEBUG] [Thread-192741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:50:46.378 [DEBUG] [Thread-192741] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:50:46.418 [DEBUG] [Thread-192741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:50:46.418 [DEBUG] [Thread-192741] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:50:46.421 [DEBUG] [Thread-192741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:50:46.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:50:46.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:50:46.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:50:46.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:50:46.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:50:46.440 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:50:46.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:50:46.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:50:46.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:50:46.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.576088 -999.00  +22.30  22.66     24   +1.10 1 1 1 1 1   888    0 20.96 -6.43 ----- 24.2 22.7 174.1 32.0 27.0 -29.7 26.3 -32.8 28.1 -30.2 29.0 -29.0
2025-11-24T15:50:46.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:50:46.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:50:46.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.576088
2025-11-24T15:50:46.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:50:46.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:50:46.450 [DEBUG] [Thread-192741] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:50:46.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:50:46.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:50:46.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:50:46.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:50:10', tmtdew=24.43, humidity=19.52, cloud=0.0, wind=24.9, temperature=22.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:49:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:50:46.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:50:46.542 [DEBUG] [Thread-192744] [transport.py] [_log()] starting thread (client mode): 0xd31b2ad0
2025-11-24T15:50:46.543 [DEBUG] [Thread-192744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:50:46.557 [DEBUG] [Thread-192744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:50:46.557 [INFO] [Thread-192744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] client lang: <none>
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] server lang: <none>
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] kex follows: False
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:50:46.565 [DEBUG] [Thread-192744] [transport.py] [_log()] Compression: none
2025-11-24T15:50:46.566 [DEBUG] [Thread-192744] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:50:46.620 [DEBUG] [Thread-192744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:50:46.621 [DEBUG] [Thread-192744] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:50:46.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:50:46.622 [DEBUG] [Thread-192744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:50:46.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:50:46.677 [DEBUG] [Thread-192744] [transport.py] [_log()] userauth is OK
2025-11-24T15:50:46.677 [DEBUG] [Thread-192744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:50:46.677 [DEBUG] [Thread-192744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:50:46.677 [DEBUG] [Thread-192744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:50:46.677 [DEBUG] [Thread-192744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:50:46.696 [INFO] [Thread-192744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:50: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-11-24T15:50:46.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:50:47.577 [DEBUG] [Thread-192744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:50:47.577 [DEBUG] [Thread-192744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:50:47.625 [DEBUG] [Thread-192744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:50:47.625 [DEBUG] [Thread-192744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:50:47.634 [DEBUG] [Thread-192744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:50:47.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:50:47.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-11-24T15:50:47.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-11-24T15:50:47.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:50:47.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:50:47.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:50:47.667 [DEBUG] [Thread-192744] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:50:50.101 [DEBUG] [Thread-192746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:51:05.135 [DEBUG] [Thread-192747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:51:17.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:51:17.690 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:51:17.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-11-24T15:51:18.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 50, 43), 24.35, 19.4, 0.0, 20.87, 21.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:51:18.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:50:43
2025-11-24T15:51:18.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:51:18.831 [DEBUG] [Thread-192748] [transport.py] [_log()] starting thread (client mode): 0xd31632b0
2025-11-24T15:51:18.831 [DEBUG] [Thread-192748] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:51:18.852 [DEBUG] [Thread-192748] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:51:18.852 [INFO] [Thread-192748] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:51:18.854 [DEBUG] [Thread-192748] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:51:18.854 [DEBUG] [Thread-192748] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:51:18.854 [DEBUG] [Thread-192748] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:51:18.854 [DEBUG] [Thread-192748] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:51:18.854 [DEBUG] [Thread-192748] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:51:18.854 [DEBUG] [Thread-192748] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:51:18.854 [DEBUG] [Thread-192748] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:51:18.855 [DEBUG] [Thread-192748] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:51:18.855 [DEBUG] [Thread-192748] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:51:18.855 [DEBUG] [Thread-192748] [transport.py] [_log()] client lang: <none>
2025-11-24T15:51:18.855 [DEBUG] [Thread-192748] [transport.py] [_log()] server lang: <none>
2025-11-24T15:51:18.855 [DEBUG] [Thread-192748] [transport.py] [_log()] kex follows: False
2025-11-24T15:51:18.855 [DEBUG] [Thread-192748] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:51:18.855 [DEBUG] [Thread-192748] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:51:18.855 [DEBUG] [Thread-192748] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:51:18.856 [DEBUG] [Thread-192748] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:51:18.856 [DEBUG] [Thread-192748] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:51:18.856 [DEBUG] [Thread-192748] [transport.py] [_log()] Compression: none
2025-11-24T15:51:18.856 [DEBUG] [Thread-192748] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:51:18.870 [DEBUG] [Thread-192748] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:51:18.871 [DEBUG] [Thread-192748] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:51:18.871 [DEBUG] [Thread-192748] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:51:18.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:51:18.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:51:18.874 [DEBUG] [Thread-192748] [transport.py] [_log()] userauth is OK
2025-11-24T15:51:18.874 [DEBUG] [Thread-192748] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:51:18.874 [DEBUG] [Thread-192748] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:51:18.874 [DEBUG] [Thread-192748] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:51:18.874 [DEBUG] [Thread-192748] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:51:18.892 [INFO] [Thread-192748] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:51:18.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:51:19.663 [DEBUG] [Thread-192748] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:51:19.663 [DEBUG] [Thread-192748] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:51:19.664 [DEBUG] [Thread-192748] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:51:19.704 [DEBUG] [Thread-192748] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:51:19.704 [DEBUG] [Thread-192748] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:51:19.709 [DEBUG] [Thread-192748] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:51:19.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:51:19.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:51:19.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:51:19.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:51:19.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:51:19.737 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:51:19.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:51:19.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:51:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:51:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.576783 -999.00  +21.90  16.38     25   +1.10 1 1 1 1 1   888    0 20.74 -6.92 ----- 22.2 16.4 182.8 27.9 27.1 -28.2 26.4 -29.2 28.2 -27.5 28.9 -28.4
2025-11-24T15:51:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:51:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:51:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.576783
2025-11-24T15:51:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:51:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:51:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:51:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:51:19.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:51:19.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:50:43', tmtdew=24.35, humidity=19.4, cloud=0.0, wind=20.87, temperature=21.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:50:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:51:19.738 [DEBUG] [Thread-192748] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:51:19.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:51:19.821 [DEBUG] [Thread-192751] [transport.py] [_log()] starting thread (client mode): 0xd3135120
2025-11-24T15:51:19.821 [DEBUG] [Thread-192751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:51:19.836 [DEBUG] [Thread-192751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:51:19.836 [INFO] [Thread-192751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:51:19.843 [DEBUG] [Thread-192751] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:51:19.843 [DEBUG] [Thread-192751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:51:19.843 [DEBUG] [Thread-192751] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:51:19.843 [DEBUG] [Thread-192751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:51:19.843 [DEBUG] [Thread-192751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:51:19.843 [DEBUG] [Thread-192751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:51:19.843 [DEBUG] [Thread-192751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] client lang: <none>
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] server lang: <none>
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] kex follows: False
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] Compression: none
2025-11-24T15:51:19.844 [DEBUG] [Thread-192751] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:51:19.900 [DEBUG] [Thread-192751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:51:19.900 [DEBUG] [Thread-192751] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:51:19.901 [DEBUG] [Thread-192751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:51:19.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:51:19.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:51:19.956 [DEBUG] [Thread-192751] [transport.py] [_log()] userauth is OK
2025-11-24T15:51:19.957 [DEBUG] [Thread-192751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:51:19.957 [DEBUG] [Thread-192751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:51:19.957 [DEBUG] [Thread-192751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:51:19.957 [DEBUG] [Thread-192751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:51:19.971 [INFO] [Thread-192751] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:51:19.971 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:51:19.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:51:20.177 [DEBUG] [Thread-192753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:51:20.816 [DEBUG] [Thread-192751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:51:20.816 [DEBUG] [Thread-192751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:51:20.864 [DEBUG] [Thread-192751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:51:20.864 [DEBUG] [Thread-192751] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:51:20.872 [DEBUG] [Thread-192751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:51:20.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:51:20.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-11-24T15:51:20.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-11-24T15:51:20.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:51:20.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:51:20.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:51:20.912 [DEBUG] [Thread-192751] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:51:32.157 [DEBUG] [Thread-192754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:51:35.220 [DEBUG] [Thread-192755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:51:50.248 [DEBUG] [Thread-192756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:51:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:51:50.935 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:51:50.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-11-24T15:51:51.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 51, 48), 24.63, 19.27, 0.0, 22.46, 22.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:51:51.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:51:48
2025-11-24T15:51:51.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:51:52.007 [DEBUG] [Thread-192757] [transport.py] [_log()] starting thread (client mode): 0xd31b0e80
2025-11-24T15:51:52.007 [DEBUG] [Thread-192757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:51:52.027 [DEBUG] [Thread-192757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:51:52.027 [INFO] [Thread-192757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:51:52.030 [DEBUG] [Thread-192757] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] client lang: <none>
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] server lang: <none>
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] kex follows: False
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:51:52.031 [DEBUG] [Thread-192757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:51:52.032 [DEBUG] [Thread-192757] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:51:52.032 [DEBUG] [Thread-192757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:51:52.032 [DEBUG] [Thread-192757] [transport.py] [_log()] Compression: none
2025-11-24T15:51:52.032 [DEBUG] [Thread-192757] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:51:52.050 [DEBUG] [Thread-192757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:51:52.051 [DEBUG] [Thread-192757] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:51:52.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:51:52.061 [DEBUG] [Thread-192757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:51:52.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:51:52.063 [DEBUG] [Thread-192757] [transport.py] [_log()] userauth is OK
2025-11-24T15:51:52.063 [DEBUG] [Thread-192757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:51:52.063 [DEBUG] [Thread-192757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:51:52.063 [DEBUG] [Thread-192757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:51:52.064 [DEBUG] [Thread-192757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:51:52.104 [INFO] [Thread-192757] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:51:52.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:51:52.705 [DEBUG] [Thread-192757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:51:52.705 [DEBUG] [Thread-192757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:51:52.706 [DEBUG] [Thread-192757] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:51:52.747 [DEBUG] [Thread-192757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:51:52.747 [DEBUG] [Thread-192757] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:51:52.753 [DEBUG] [Thread-192757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:51:52.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:51:52.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:51:52.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:51:52.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:51:52.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:51:52.787 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:51:52.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:51:52.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:51:52.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:51:52.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.577130 -999.00  +21.70  14.18     25   +1.00 1 1 1 1 1   888    0 20.77 -5.56 ----- 16.0 14.2 188.6 23.6 27.1 -28.1 26.3 -31.5 28.2 -26.5 28.9 -27.7
2025-11-24T15:51:52.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:51:52.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:51:52.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.577130
2025-11-24T15:51:52.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:51:52.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:51:52.791 [DEBUG] [Thread-192757] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:51:52.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:51:52.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:51:52.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:51:52.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:51:48', tmtdew=24.63, humidity=19.27, cloud=0.0, wind=22.46, temperature=22.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:51:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:51:52.880 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:51:52.893 [DEBUG] [Thread-192760] [transport.py] [_log()] starting thread (client mode): 0xd3160490
2025-11-24T15:51:52.893 [DEBUG] [Thread-192760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:51:52.907 [DEBUG] [Thread-192760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:51:52.908 [INFO] [Thread-192760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:51:52.915 [DEBUG] [Thread-192760] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:51:52.915 [DEBUG] [Thread-192760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:51:52.915 [DEBUG] [Thread-192760] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:51:52.915 [DEBUG] [Thread-192760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:51:52.915 [DEBUG] [Thread-192760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:51:52.915 [DEBUG] [Thread-192760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:51:52.915 [DEBUG] [Thread-192760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:51:52.915 [DEBUG] [Thread-192760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:51:52.915 [DEBUG] [Thread-192760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:51:52.915 [DEBUG] [Thread-192760] [transport.py] [_log()] client lang: <none>
2025-11-24T15:51:52.916 [DEBUG] [Thread-192760] [transport.py] [_log()] server lang: <none>
2025-11-24T15:51:52.916 [DEBUG] [Thread-192760] [transport.py] [_log()] kex follows: False
2025-11-24T15:51:52.916 [DEBUG] [Thread-192760] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:51:52.916 [DEBUG] [Thread-192760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:51:52.916 [DEBUG] [Thread-192760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:51:52.916 [DEBUG] [Thread-192760] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:51:52.916 [DEBUG] [Thread-192760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:51:52.916 [DEBUG] [Thread-192760] [transport.py] [_log()] Compression: none
2025-11-24T15:51:52.916 [DEBUG] [Thread-192760] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:51:52.977 [DEBUG] [Thread-192760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:51:52.977 [DEBUG] [Thread-192760] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:51:52.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:51:52.979 [DEBUG] [Thread-192760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:51:52.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:51:53.033 [DEBUG] [Thread-192760] [transport.py] [_log()] userauth is OK
2025-11-24T15:51:53.033 [DEBUG] [Thread-192760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:51:53.033 [DEBUG] [Thread-192760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:51:53.033 [DEBUG] [Thread-192760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:51:53.033 [DEBUG] [Thread-192760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:51:53.049 [INFO] [Thread-192760] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:51:53.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:51:53.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:51:53.883 [DEBUG] [Thread-192760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:51:53.883 [DEBUG] [Thread-192760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:51:53.932 [DEBUG] [Thread-192760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:51:53.932 [DEBUG] [Thread-192760] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:51:53.941 [DEBUG] [Thread-192760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:51:53.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:51: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')
2025-11-24T15:51:53.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-11-24T15:51:53.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:51:53.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:51:53.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:51:53.978 [DEBUG] [Thread-192760] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:52:05.280 [DEBUG] [Thread-192762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:52:20.328 [DEBUG] [Thread-192763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:52:23.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:52:23.977 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:52:23.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-11-24T15:52:24.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 52, 20), 24.7, 19.19, 0.0, 21.09, 22.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:52:24.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:52:20
2025-11-24T15:52:24.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:52:25.051 [DEBUG] [Thread-192764] [transport.py] [_log()] starting thread (client mode): 0xd3160e80
2025-11-24T15:52:25.051 [DEBUG] [Thread-192764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:52:25.071 [DEBUG] [Thread-192764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:52:25.071 [INFO] [Thread-192764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] client lang: <none>
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] server lang: <none>
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] kex follows: False
2025-11-24T15:52:25.074 [DEBUG] [Thread-192764] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:52:25.075 [DEBUG] [Thread-192764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:52:25.075 [DEBUG] [Thread-192764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:52:25.075 [DEBUG] [Thread-192764] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:52:25.075 [DEBUG] [Thread-192764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:52:25.075 [DEBUG] [Thread-192764] [transport.py] [_log()] Compression: none
2025-11-24T15:52:25.075 [DEBUG] [Thread-192764] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:52:25.092 [DEBUG] [Thread-192764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:52:25.092 [DEBUG] [Thread-192764] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:52:25.092 [DEBUG] [Thread-192764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:52:25.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:52:25.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:52:25.094 [DEBUG] [Thread-192764] [transport.py] [_log()] userauth is OK
2025-11-24T15:52:25.094 [DEBUG] [Thread-192764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:52:25.094 [DEBUG] [Thread-192764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:52:25.094 [DEBUG] [Thread-192764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:52:25.094 [DEBUG] [Thread-192764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:52:25.108 [INFO] [Thread-192764] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:52:25.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:52:25.894 [DEBUG] [Thread-192764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:52:25.894 [DEBUG] [Thread-192764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:52:25.894 [DEBUG] [Thread-192764] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:52:25.935 [DEBUG] [Thread-192764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:52:25.935 [DEBUG] [Thread-192764] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:52:25.937 [DEBUG] [Thread-192764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:52:25.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:52:25.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:52:25.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:52:25.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:52:25.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:52:25.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:52:25.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:52:25.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:52:25.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:52:25.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.577477 -999.00  +21.70  18.24     25   +1.10 1 1 1 1 1   888    0 20.20 -4.43 ----- 16.4 18.2 163.8 22.1 27.1 -27.3 26.3 -29.5 28.2 -25.9 28.8 -28.2
2025-11-24T15:52:25.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:52:25.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:52:25.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.577477
2025-11-24T15:52:25.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:52:25.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:52:25.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:52:25.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:52:25.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:52:25.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:52:20', tmtdew=24.7, humidity=19.19, cloud=0.0, wind=21.09, temperature=22.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:51:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:52:25.956 [DEBUG] [Thread-192764] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:52:26.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:52:26.044 [DEBUG] [Thread-192767] [transport.py] [_log()] starting thread (client mode): 0xd3161db0
2025-11-24T15:52:26.044 [DEBUG] [Thread-192767] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:52:26.059 [DEBUG] [Thread-192767] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:52:26.059 [INFO] [Thread-192767] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] client lang: <none>
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] server lang: <none>
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] kex follows: False
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] Compression: none
2025-11-24T15:52:26.067 [DEBUG] [Thread-192767] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:52:26.132 [DEBUG] [Thread-192767] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:52:26.132 [DEBUG] [Thread-192767] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:52:26.132 [DEBUG] [Thread-192767] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:52:26.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:52:26.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:52:26.192 [DEBUG] [Thread-192767] [transport.py] [_log()] userauth is OK
2025-11-24T15:52:26.193 [DEBUG] [Thread-192767] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:52:26.193 [DEBUG] [Thread-192767] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:52:26.193 [DEBUG] [Thread-192767] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:52:26.193 [DEBUG] [Thread-192767] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:52:26.207 [INFO] [Thread-192767] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:52:26.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:52:26.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:52:27.082 [DEBUG] [Thread-192767] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:52:27.082 [DEBUG] [Thread-192767] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:52:27.130 [DEBUG] [Thread-192767] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:52:27.131 [DEBUG] [Thread-192767] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:52:27.140 [DEBUG] [Thread-192767] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:52:27.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:52:27.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-11-24T15:52:27.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-11-24T15:52:27.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:52:27.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:52:27.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:52:27.177 [DEBUG] [Thread-192767] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:52:32.210 [DEBUG] [Thread-192769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:52:35.359 [DEBUG] [Thread-192770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:52:50.412 [DEBUG] [Thread-192771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:52:57.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:52:57.199 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:52:57.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-11-24T15:52:58.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 52, 52), 24.58, 19.04, 0.0, 21.67, 21.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:52:58.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:52:52
2025-11-24T15:52:58.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:52:58.355 [DEBUG] [Thread-192772] [transport.py] [_log()] starting thread (client mode): 0xd3134220
2025-11-24T15:52:58.355 [DEBUG] [Thread-192772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:52:58.375 [DEBUG] [Thread-192772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:52:58.375 [INFO] [Thread-192772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] client lang: <none>
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] server lang: <none>
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] kex follows: False
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:52:58.379 [DEBUG] [Thread-192772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:52:58.380 [DEBUG] [Thread-192772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:52:58.380 [DEBUG] [Thread-192772] [transport.py] [_log()] Compression: none
2025-11-24T15:52:58.380 [DEBUG] [Thread-192772] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:52:58.396 [DEBUG] [Thread-192772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:52:58.396 [DEBUG] [Thread-192772] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:52:58.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:52:58.397 [DEBUG] [Thread-192772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:52:58.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:52:58.397 [DEBUG] [Thread-192772] [transport.py] [_log()] userauth is OK
2025-11-24T15:52:58.398 [DEBUG] [Thread-192772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:52:58.398 [DEBUG] [Thread-192772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:52:58.398 [DEBUG] [Thread-192772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:52:58.398 [DEBUG] [Thread-192772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:52:58.410 [INFO] [Thread-192772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:52:58.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:52:59.072 [DEBUG] [Thread-192772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:52:59.072 [DEBUG] [Thread-192772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:52:59.072 [DEBUG] [Thread-192772] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:52:59.113 [DEBUG] [Thread-192772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:52:59.113 [DEBUG] [Thread-192772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:52:59.114 [DEBUG] [Thread-192772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:52:59.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:52:59.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:52:59.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:52:59.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:52:59.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:52:59.130 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:52:59.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.577824 -999.00  +21.90  15.45     25   +1.10 1 1 1 1 1   888    0 20.91 -2.20 ----- 24.3 15.4 181.2 20.6 27.1 -28.0 26.4 -31.3 28.2 -26.7 29.0 -29.9
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.577824
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:52:59.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:52:52', tmtdew=24.58, humidity=19.04, cloud=0.0, wind=21.67, temperature=21.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:52:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:52:59.131 [DEBUG] [Thread-192772] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:52:59.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:52:59.219 [DEBUG] [Thread-192775] [transport.py] [_log()] starting thread (client mode): 0xd3135fc0
2025-11-24T15:52:59.219 [DEBUG] [Thread-192775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:52:59.233 [DEBUG] [Thread-192775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:52:59.233 [INFO] [Thread-192775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] client lang: <none>
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] server lang: <none>
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] kex follows: False
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] Compression: none
2025-11-24T15:52:59.240 [DEBUG] [Thread-192775] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:52:59.295 [DEBUG] [Thread-192775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:52:59.295 [DEBUG] [Thread-192775] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:52:59.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:52:59.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:52:59.296 [DEBUG] [Thread-192775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:52:59.352 [DEBUG] [Thread-192775] [transport.py] [_log()] userauth is OK
2025-11-24T15:52:59.352 [DEBUG] [Thread-192775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:52:59.353 [DEBUG] [Thread-192775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:52:59.353 [DEBUG] [Thread-192775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:52:59.353 [DEBUG] [Thread-192775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:52:59.368 [INFO] [Thread-192775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:52:59.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:52:59.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:53:00.192 [DEBUG] [Thread-192775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:53:00.192 [DEBUG] [Thread-192775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:53:00.240 [DEBUG] [Thread-192775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:53:00.240 [DEBUG] [Thread-192775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:53:00.249 [DEBUG] [Thread-192775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:53:00.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:53:00.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-11-24T15:53:00.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-11-24T15:53:00.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:53:00.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:53:00.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:53:00.286 [DEBUG] [Thread-192775] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:53:05.445 [DEBUG] [Thread-192777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:53:20.497 [DEBUG] [Thread-192778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:53:30.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:53:30.309 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:53:30.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-11-24T15:53:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 53, 25), 24.69, 18.94, 0.0, 25.83, 22.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:53:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:53:25
2025-11-24T15:53:31.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:53:31.429 [DEBUG] [Thread-192779] [transport.py] [_log()] starting thread (client mode): 0xd31b1570
2025-11-24T15:53:31.429 [DEBUG] [Thread-192779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:53:31.448 [DEBUG] [Thread-192779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:53:31.449 [INFO] [Thread-192779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] client lang: <none>
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] server lang: <none>
2025-11-24T15:53:31.450 [DEBUG] [Thread-192779] [transport.py] [_log()] kex follows: False
2025-11-24T15:53:31.451 [DEBUG] [Thread-192779] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:53:31.451 [DEBUG] [Thread-192779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:53:31.451 [DEBUG] [Thread-192779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:53:31.451 [DEBUG] [Thread-192779] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:53:31.451 [DEBUG] [Thread-192779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:53:31.451 [DEBUG] [Thread-192779] [transport.py] [_log()] Compression: none
2025-11-24T15:53:31.451 [DEBUG] [Thread-192779] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:53:31.462 [DEBUG] [Thread-192779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:53:31.463 [DEBUG] [Thread-192779] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:53:31.463 [DEBUG] [Thread-192779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:53:31.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:53:31.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:53:31.463 [DEBUG] [Thread-192779] [transport.py] [_log()] userauth is OK
2025-11-24T15:53:31.463 [DEBUG] [Thread-192779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:53:31.463 [DEBUG] [Thread-192779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:53:31.463 [DEBUG] [Thread-192779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:53:31.463 [DEBUG] [Thread-192779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:53:31.489 [INFO] [Thread-192779] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:53:31.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:53:32.230 [DEBUG] [Thread-192779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:53:32.230 [DEBUG] [Thread-192779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:53:32.230 [DEBUG] [Thread-192779] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:53:32.271 [DEBUG] [Thread-192779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:53:32.271 [DEBUG] [Thread-192779] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:53:32.272 [DEBUG] [Thread-192779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:53:32.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:53:32.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:53:32.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:53:32.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:53:32.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:53:32.283 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:53:32.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:53:32.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:53:32.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:53:32.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.578519 -999.00  +21.90  15.42     25   +1.10 1 1 1 1 1   888    0 21.06 1.14 ----- 19.9 15.4 175.4 24.1 27.1 -27.9 26.5 -27.6 28.3 -26.2 28.9 -28.8
2025-11-24T15:53:32.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:53:32.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:53:32.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.578519
2025-11-24T15:53:32.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:53:32.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:53:32.284 [DEBUG] [Thread-192779] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:53:32.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:53:32.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:53:32.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:53:32.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:53:25', tmtdew=24.69, humidity=18.94, cloud=0.0, wind=25.83, temperature=22.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:53:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:53:32.361 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:53:32.372 [DEBUG] [Thread-192782] [transport.py] [_log()] starting thread (client mode): 0xd31b1420
2025-11-24T15:53:32.372 [DEBUG] [Thread-192782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:53:32.387 [DEBUG] [Thread-192782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:53:32.387 [INFO] [Thread-192782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] client lang: <none>
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] server lang: <none>
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] kex follows: False
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:53:32.395 [DEBUG] [Thread-192782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:53:32.396 [DEBUG] [Thread-192782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:53:32.396 [DEBUG] [Thread-192782] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:53:32.396 [DEBUG] [Thread-192782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:53:32.396 [DEBUG] [Thread-192782] [transport.py] [_log()] Compression: none
2025-11-24T15:53:32.396 [DEBUG] [Thread-192782] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:53:32.441 [DEBUG] [Thread-192784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:53:32.451 [DEBUG] [Thread-192782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:53:32.451 [DEBUG] [Thread-192782] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:53:32.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:53:32.451 [DEBUG] [Thread-192782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:53:32.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:53:32.508 [DEBUG] [Thread-192782] [transport.py] [_log()] userauth is OK
2025-11-24T15:53:32.508 [DEBUG] [Thread-192782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:53:32.508 [DEBUG] [Thread-192782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:53:32.508 [DEBUG] [Thread-192782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:53:32.508 [DEBUG] [Thread-192782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:53:32.522 [INFO] [Thread-192782] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:53:32.522 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:53:32.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:53:33.356 [DEBUG] [Thread-192782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:53:33.356 [DEBUG] [Thread-192782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:53:33.404 [DEBUG] [Thread-192782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:53:33.404 [DEBUG] [Thread-192782] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:53:33.412 [DEBUG] [Thread-192782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:53:33.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:53:33.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-11-24T15:53:33.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-11-24T15:53:33.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:53:33.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:53:33.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:53:33.445 [DEBUG] [Thread-192782] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:53:35.524 [DEBUG] [Thread-192785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:53:50.567 [DEBUG] [Thread-192786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:54:03.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:54:03.468 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:54: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-11-24T15:54:04.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 53, 57), 24.73, 18.81, 0.0, 23.84, 22.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:54:04.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:53:57
2025-11-24T15:54:04.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:54:04.615 [DEBUG] [Thread-192787] [transport.py] [_log()] starting thread (client mode): 0xd31628f0
2025-11-24T15:54:04.615 [DEBUG] [Thread-192787] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:54:04.631 [DEBUG] [Thread-192787] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:54:04.631 [INFO] [Thread-192787] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] client lang: <none>
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] server lang: <none>
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] kex follows: False
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] Compression: none
2025-11-24T15:54:04.635 [DEBUG] [Thread-192787] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:54:04.651 [DEBUG] [Thread-192787] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:54:04.654 [DEBUG] [Thread-192787] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:54:04.655 [DEBUG] [Thread-192787] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:54:04.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:54:04.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:54:04.660 [DEBUG] [Thread-192787] [transport.py] [_log()] userauth is OK
2025-11-24T15:54:04.660 [DEBUG] [Thread-192787] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:54:04.660 [DEBUG] [Thread-192787] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:54:04.660 [DEBUG] [Thread-192787] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:54:04.660 [DEBUG] [Thread-192787] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:54:04.686 [INFO] [Thread-192787] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:54:04.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:54:05.286 [DEBUG] [Thread-192787] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:54:05.286 [DEBUG] [Thread-192787] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:54:05.286 [DEBUG] [Thread-192787] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:54:05.327 [DEBUG] [Thread-192787] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:54:05.327 [DEBUG] [Thread-192787] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:54:05.329 [DEBUG] [Thread-192787] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:54:05.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:54:05.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:54:05.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:54:05.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:54:05.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:54:05.348 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:54:05.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:54:05.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:54:05.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:54:05.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.578866 -999.00  +22.10  23.56     24   +1.00 1 1 1 1 1   888    0 20.55 3.18 ----- 16.8 23.6 176.8 27.0 27.2 -27.5 26.7 -27.0 28.4 -26.2 29.2 -26.9
2025-11-24T15:54:05.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:54:05.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:54:05.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.578866
2025-11-24T15:54:05.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:54:05.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:54:05.351 [DEBUG] [Thread-192787] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:54:05.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:54:05.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:54:05.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:54:05.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:53:57', tmtdew=24.73, humidity=18.81, cloud=0.0, wind=23.84, temperature=22.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:53:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:54:05.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:54:05.436 [DEBUG] [Thread-192790] [transport.py] [_log()] starting thread (client mode): 0xd3135450
2025-11-24T15:54:05.436 [DEBUG] [Thread-192790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:54:05.451 [DEBUG] [Thread-192790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:54:05.451 [INFO] [Thread-192790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] client lang: <none>
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] server lang: <none>
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] kex follows: False
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] Compression: none
2025-11-24T15:54:05.459 [DEBUG] [Thread-192790] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:54:05.519 [DEBUG] [Thread-192790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:54:05.519 [DEBUG] [Thread-192790] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:54:05.519 [DEBUG] [Thread-192790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:54:05.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:54:05.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:54:05.580 [DEBUG] [Thread-192790] [transport.py] [_log()] userauth is OK
2025-11-24T15:54:05.580 [DEBUG] [Thread-192790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:54:05.580 [DEBUG] [Thread-192790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:54:05.580 [DEBUG] [Thread-192790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:54:05.580 [DEBUG] [Thread-192790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:54:05.594 [INFO] [Thread-192790] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:54:05.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:54:05.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:54:05.603 [DEBUG] [Thread-192792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:54:06.435 [DEBUG] [Thread-192790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:54:06.435 [DEBUG] [Thread-192790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:54:06.484 [DEBUG] [Thread-192790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:54:06.484 [DEBUG] [Thread-192790] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:54:06.493 [DEBUG] [Thread-192790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:54:06.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:54:06.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:54:06.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-11-24T15:54:06.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:54:06.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:54:06.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:54:06.539 [DEBUG] [Thread-192790] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:54:20.645 [DEBUG] [Thread-192793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:54:32.570 [DEBUG] [Thread-192794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:54:35.680 [DEBUG] [Thread-192795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:54:36.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:54:36.560 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:54:36.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-11-24T15:54:37.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 54, 30), 24.64, 18.89, 0.0, 25.9, 22.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:54:37.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:54:30
2025-11-24T15:54:37.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:54:37.618 [DEBUG] [Thread-192796] [transport.py] [_log()] starting thread (client mode): 0xd07a91e0
2025-11-24T15:54:37.618 [DEBUG] [Thread-192796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:54:37.629 [DEBUG] [Thread-192796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:54:37.630 [INFO] [Thread-192796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] client lang: <none>
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] server lang: <none>
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] kex follows: False
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:54:37.633 [DEBUG] [Thread-192796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:54:37.634 [DEBUG] [Thread-192796] [transport.py] [_log()] Compression: none
2025-11-24T15:54:37.634 [DEBUG] [Thread-192796] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:54:37.650 [DEBUG] [Thread-192796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:54:37.651 [DEBUG] [Thread-192796] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:54:37.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:54:37.652 [DEBUG] [Thread-192796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:54:37.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:54:37.654 [DEBUG] [Thread-192796] [transport.py] [_log()] userauth is OK
2025-11-24T15:54:37.655 [DEBUG] [Thread-192796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:54:37.655 [DEBUG] [Thread-192796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:54:37.655 [DEBUG] [Thread-192796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:54:37.655 [DEBUG] [Thread-192796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:54:37.678 [INFO] [Thread-192796] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:54:37.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:54:38.430 [DEBUG] [Thread-192796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:54:38.430 [DEBUG] [Thread-192796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:54:38.430 [DEBUG] [Thread-192796] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:54:38.471 [DEBUG] [Thread-192796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:54:38.471 [DEBUG] [Thread-192796] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:54:38.472 [DEBUG] [Thread-192796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:54:38.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:54:38.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:54:38.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:54:38.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:54:38.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:54:38.486 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:54:38.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:54:38.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:54:38.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:54:38.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.578866 -999.00  +22.10  23.56     24   +1.00 1 1 1 1 1   888    0 20.55 3.18 ----- 16.8 23.6 176.8 27.0 27.2 -27.5 26.7 -27.0 28.4 -26.2 29.2 -26.9
2025-11-24T15:54:38.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:54:38.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:54:38.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.578866
2025-11-24T15:54:38.495 [DEBUG] [Thread-192796] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:54:38.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:54:38.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:54:38.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:54:38.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:54:38.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:54:38.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:54:30', tmtdew=24.64, humidity=18.89, cloud=0.0, wind=25.9, temperature=22.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:53:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:54:38.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:54:38.580 [DEBUG] [Thread-192799] [transport.py] [_log()] starting thread (client mode): 0xd3160520
2025-11-24T15:54:38.580 [DEBUG] [Thread-192799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:54:38.596 [DEBUG] [Thread-192799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:54:38.596 [INFO] [Thread-192799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:54:38.603 [DEBUG] [Thread-192799] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:54:38.603 [DEBUG] [Thread-192799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:54:38.603 [DEBUG] [Thread-192799] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:54:38.603 [DEBUG] [Thread-192799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:54:38.603 [DEBUG] [Thread-192799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:54:38.603 [DEBUG] [Thread-192799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] client lang: <none>
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] server lang: <none>
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] kex follows: False
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] Compression: none
2025-11-24T15:54:38.604 [DEBUG] [Thread-192799] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:54:38.661 [DEBUG] [Thread-192799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:54:38.661 [DEBUG] [Thread-192799] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:54:38.661 [DEBUG] [Thread-192799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:54:38.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:54:38.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:54:38.716 [DEBUG] [Thread-192799] [transport.py] [_log()] userauth is OK
2025-11-24T15:54:38.716 [DEBUG] [Thread-192799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:54:38.716 [DEBUG] [Thread-192799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:54:38.716 [DEBUG] [Thread-192799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:54:38.716 [DEBUG] [Thread-192799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:54:38.730 [INFO] [Thread-192799] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:54:38.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:54:38.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:54:39.576 [DEBUG] [Thread-192799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:54:39.576 [DEBUG] [Thread-192799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:54:39.624 [DEBUG] [Thread-192799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:54:39.624 [DEBUG] [Thread-192799] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:54:39.633 [DEBUG] [Thread-192799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:54:39.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:54:39.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-11-24T15:54:39.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-11-24T15:54:39.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:54:39.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:54:39.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:54:39.673 [DEBUG] [Thread-192799] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:54:50.710 [DEBUG] [Thread-192801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:55:05.746 [DEBUG] [Thread-192802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:55:09.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:55:09.677 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:55:09.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-11-24T15:55:10.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 55, 2), 24.65, 18.89, 0.0, 26.5, 22.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:55:10.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:55:02
2025-11-24T15:55:10.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:55:10.760 [DEBUG] [Thread-192803] [transport.py] [_log()] starting thread (client mode): 0xd3163bb0
2025-11-24T15:55:10.760 [DEBUG] [Thread-192803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:55:10.780 [DEBUG] [Thread-192803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:55:10.780 [INFO] [Thread-192803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:55:10.783 [DEBUG] [Thread-192803] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:55:10.783 [DEBUG] [Thread-192803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:55:10.783 [DEBUG] [Thread-192803] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:55:10.783 [DEBUG] [Thread-192803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] client lang: <none>
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] server lang: <none>
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] kex follows: False
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:55:10.784 [DEBUG] [Thread-192803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:55:10.785 [DEBUG] [Thread-192803] [transport.py] [_log()] Compression: none
2025-11-24T15:55:10.785 [DEBUG] [Thread-192803] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:55:10.802 [DEBUG] [Thread-192803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:55:10.802 [DEBUG] [Thread-192803] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:55:10.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:55:10.803 [DEBUG] [Thread-192803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:55:10.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:55:10.805 [DEBUG] [Thread-192803] [transport.py] [_log()] userauth is OK
2025-11-24T15:55:10.805 [DEBUG] [Thread-192803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:55:10.805 [DEBUG] [Thread-192803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:55:10.806 [DEBUG] [Thread-192803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:55:10.806 [DEBUG] [Thread-192803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:55:10.839 [INFO] [Thread-192803] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:55:10.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:55:12.843 [DEBUG] [Thread-192803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:55:12.844 [DEBUG] [Thread-192803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:55:12.844 [DEBUG] [Thread-192803] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:55:12.884 [DEBUG] [Thread-192803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:55:12.885 [DEBUG] [Thread-192803] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:55:12.888 [DEBUG] [Thread-192803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:55:12.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:55:12.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:55:12.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:55:12.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:55:12.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:55:12.912 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:55:12.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:55:12.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:55:12.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:55:12.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.579908 -999.00  +22.50  15.39     24   +1.10 1 1 1 1 1   888    0 20.84 16.23 ----- 13.9 15.4 170.8 23.6 27.3 -27.9 26.8 -28.1 28.6 -25.0 29.2 -28.0
2025-11-24T15:55:12.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:55:12.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:55:12.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.579908
2025-11-24T15:55:12.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:55:12.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:55:12.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:55:12.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:55:12.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:55:12.915 [DEBUG] [Thread-192803] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:55:12.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:55:02', tmtdew=24.65, humidity=18.89, cloud=0.0, wind=26.5, temperature=22.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:55:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:55:13.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:55:13.014 [DEBUG] [Thread-192805] [transport.py] [_log()] starting thread (client mode): 0xd3161c90
2025-11-24T15:55:13.014 [DEBUG] [Thread-192805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:55:13.029 [DEBUG] [Thread-192805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:55:13.029 [INFO] [Thread-192805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] client lang: <none>
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] server lang: <none>
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] kex follows: False
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:55:13.037 [DEBUG] [Thread-192805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:55:13.038 [DEBUG] [Thread-192805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:55:13.038 [DEBUG] [Thread-192805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:55:13.038 [DEBUG] [Thread-192805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:55:13.038 [DEBUG] [Thread-192805] [transport.py] [_log()] Compression: none
2025-11-24T15:55:13.038 [DEBUG] [Thread-192805] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:55:13.098 [DEBUG] [Thread-192805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:55:13.099 [DEBUG] [Thread-192805] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:55:13.099 [DEBUG] [Thread-192805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:55:13.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:55:13.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:55:13.156 [DEBUG] [Thread-192805] [transport.py] [_log()] userauth is OK
2025-11-24T15:55:13.157 [DEBUG] [Thread-192805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:55:13.157 [DEBUG] [Thread-192805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:55:13.157 [DEBUG] [Thread-192805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:55:13.157 [DEBUG] [Thread-192805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:55:13.175 [INFO] [Thread-192805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:55:13.175 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:55:13.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:55:14.014 [DEBUG] [Thread-192805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:55:14.015 [DEBUG] [Thread-192805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:55:14.063 [DEBUG] [Thread-192805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:55:14.063 [DEBUG] [Thread-192805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:55:14.072 [DEBUG] [Thread-192805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:55:14.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:55: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-11-24T15:55: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-11-24T15:55:14.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:55:14.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:55:14.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:55:14.109 [DEBUG] [Thread-192805] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:55:20.785 [DEBUG] [Thread-192807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:55:32.769 [DEBUG] [Thread-192808 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:55:35.832 [DEBUG] [Thread-192809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:55:44.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:55:44.116 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:55:44.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-11-24T15:55:44.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 55, 35), 25.26, 18.49, 0.0, 25.44, 22.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:55:44.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:55:35
2025-11-24T15:55:45.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:55:45.211 [DEBUG] [Thread-192810] [transport.py] [_log()] starting thread (client mode): 0xd07aa200
2025-11-24T15:55:45.212 [DEBUG] [Thread-192810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:55:45.226 [DEBUG] [Thread-192810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:55:45.226 [INFO] [Thread-192810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] client lang: <none>
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] server lang: <none>
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] kex follows: False
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] Compression: none
2025-11-24T15:55:45.227 [DEBUG] [Thread-192810] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:55:45.240 [DEBUG] [Thread-192810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:55:45.240 [DEBUG] [Thread-192810] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:55:45.241 [DEBUG] [Thread-192810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:55:45.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:55:45.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:55:45.242 [DEBUG] [Thread-192810] [transport.py] [_log()] userauth is OK
2025-11-24T15:55:45.242 [DEBUG] [Thread-192810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:55:45.242 [DEBUG] [Thread-192810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:55:45.242 [DEBUG] [Thread-192810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:55:45.243 [DEBUG] [Thread-192810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:55:45.279 [INFO] [Thread-192810] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:55:45.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:55:45.945 [DEBUG] [Thread-192810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:55:45.945 [DEBUG] [Thread-192810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:55:45.945 [DEBUG] [Thread-192810] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:55:45.985 [DEBUG] [Thread-192810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:55:45.986 [DEBUG] [Thread-192810] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:55:45.989 [DEBUG] [Thread-192810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:55:46.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:55:46.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:55:46.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:55:46.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:55:46.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:55:46.018 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:55:46.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:55:46.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:55:46.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:55:46.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.579908 -999.00  +22.50  15.39     24   +1.10 1 1 1 1 1   888    0 20.84 16.23 ----- 13.9 15.4 170.8 23.6 27.3 -27.9 26.8 -28.1 28.6 -25.0 29.2 -28.0
2025-11-24T15:55:46.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:55:46.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:55:46.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.579908
2025-11-24T15:55:46.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:55:46.024 [DEBUG] [Thread-192810] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:55:46.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:55:46.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:55:46.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:55:46.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:55:46.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:55:35', tmtdew=25.26, humidity=18.49, cloud=0.0, wind=25.44, temperature=22.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:55:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:55:46.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:55:46.126 [DEBUG] [Thread-192813] [transport.py] [_log()] starting thread (client mode): 0xd07a8c10
2025-11-24T15:55:46.126 [DEBUG] [Thread-192813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:55:46.140 [DEBUG] [Thread-192813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:55:46.140 [INFO] [Thread-192813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:55:46.147 [DEBUG] [Thread-192813] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] client lang: <none>
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] server lang: <none>
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] kex follows: False
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] Compression: none
2025-11-24T15:55:46.148 [DEBUG] [Thread-192813] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:55:46.207 [DEBUG] [Thread-192813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:55:46.207 [DEBUG] [Thread-192813] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:55:46.207 [DEBUG] [Thread-192813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:55:46.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:55:46.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:55:46.265 [DEBUG] [Thread-192813] [transport.py] [_log()] userauth is OK
2025-11-24T15:55:46.265 [DEBUG] [Thread-192813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:55:46.265 [DEBUG] [Thread-192813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:55:46.265 [DEBUG] [Thread-192813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:55:46.265 [DEBUG] [Thread-192813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:55:46.279 [INFO] [Thread-192813] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:55:46.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:55:46.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:55:47.113 [DEBUG] [Thread-192813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:55:47.113 [DEBUG] [Thread-192813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:55:47.161 [DEBUG] [Thread-192813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:55:47.161 [DEBUG] [Thread-192813] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:55:47.169 [DEBUG] [Thread-192813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:55:47.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:55:47.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-11-24T15:55:47.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-11-24T15:55:47.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:55:47.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:55:47.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:55:47.202 [DEBUG] [Thread-192813] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:55:50.866 [DEBUG] [Thread-192815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:56:05.915 [DEBUG] [Thread-192816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:56:17.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:56:17.222 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:56:17.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-11-24T15:56:18.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 56, 7), 25.08, 18.69, 0.0, 23.96, 22.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:56:18.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:56:07
2025-11-24T15:56:18.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:56:18.318 [DEBUG] [Thread-192817] [transport.py] [_log()] starting thread (client mode): 0xd07a9cf0
2025-11-24T15:56:18.318 [DEBUG] [Thread-192817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:56:18.335 [DEBUG] [Thread-192817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:56:18.335 [INFO] [Thread-192817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:56:18.338 [DEBUG] [Thread-192817] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:56:18.338 [DEBUG] [Thread-192817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:56:18.338 [DEBUG] [Thread-192817] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:56:18.338 [DEBUG] [Thread-192817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:56:18.338 [DEBUG] [Thread-192817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:56:18.338 [DEBUG] [Thread-192817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:56:18.339 [DEBUG] [Thread-192817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:56:18.339 [DEBUG] [Thread-192817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:56:18.339 [DEBUG] [Thread-192817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:56:18.339 [DEBUG] [Thread-192817] [transport.py] [_log()] client lang: <none>
2025-11-24T15:56:18.339 [DEBUG] [Thread-192817] [transport.py] [_log()] server lang: <none>
2025-11-24T15:56:18.339 [DEBUG] [Thread-192817] [transport.py] [_log()] kex follows: False
2025-11-24T15:56:18.339 [DEBUG] [Thread-192817] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:56:18.339 [DEBUG] [Thread-192817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:56:18.339 [DEBUG] [Thread-192817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:56:18.340 [DEBUG] [Thread-192817] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:56:18.340 [DEBUG] [Thread-192817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:56:18.340 [DEBUG] [Thread-192817] [transport.py] [_log()] Compression: none
2025-11-24T15:56:18.340 [DEBUG] [Thread-192817] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:56:18.378 [DEBUG] [Thread-192817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:56:18.382 [DEBUG] [Thread-192817] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:56:18.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:56:18.384 [DEBUG] [Thread-192817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:56:18.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:56:18.421 [DEBUG] [Thread-192817] [transport.py] [_log()] userauth is OK
2025-11-24T15:56:18.422 [DEBUG] [Thread-192817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:56:18.423 [DEBUG] [Thread-192817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:56:18.423 [DEBUG] [Thread-192817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:56:18.423 [DEBUG] [Thread-192817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:56:18.462 [INFO] [Thread-192817] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:56:18.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:56:19.055 [DEBUG] [Thread-192817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:56:19.056 [DEBUG] [Thread-192817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:56:19.065 [DEBUG] [Thread-192817] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:56:19.096 [DEBUG] [Thread-192817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:56:19.096 [DEBUG] [Thread-192817] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:56:19.098 [DEBUG] [Thread-192817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:56:19.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:56:19.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:56:19.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:56:19.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:56:19.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:56:19.119 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:56:19.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:56:19.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:56:19.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:56:19.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.580255 -999.00  +22.30  19.01     24   +0.80 1 1 1 1 1   888    0 21.41 25.03 ----- 21.1 19.0 177.8 32.4 27.3 -28.8 26.9 -28.2 28.6 -27.9 29.3 -27.0
2025-11-24T15:56:19.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:56:19.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:56:19.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.580255
2025-11-24T15:56:19.125 [DEBUG] [Thread-192817] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:56:19.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:56:19.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:56:19.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:56:19.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:56:19.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:56:19.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:56:07', tmtdew=25.08, humidity=18.69, cloud=0.0, wind=23.96, temperature=22.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:55:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:56:19.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:56:19.218 [DEBUG] [Thread-192820] [transport.py] [_log()] starting thread (client mode): 0xd3160b80
2025-11-24T15:56:19.218 [DEBUG] [Thread-192820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:56:19.232 [DEBUG] [Thread-192820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:56:19.233 [INFO] [Thread-192820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] client lang: <none>
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] server lang: <none>
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] kex follows: False
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:56:19.240 [DEBUG] [Thread-192820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:56:19.241 [DEBUG] [Thread-192820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:56:19.241 [DEBUG] [Thread-192820] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:56:19.241 [DEBUG] [Thread-192820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:56:19.241 [DEBUG] [Thread-192820] [transport.py] [_log()] Compression: none
2025-11-24T15:56:19.241 [DEBUG] [Thread-192820] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:56:19.298 [DEBUG] [Thread-192820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:56:19.299 [DEBUG] [Thread-192820] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:56:19.299 [DEBUG] [Thread-192820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:56:19.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:56:19.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:56:19.356 [DEBUG] [Thread-192820] [transport.py] [_log()] userauth is OK
2025-11-24T15:56:19.356 [DEBUG] [Thread-192820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:56:19.356 [DEBUG] [Thread-192820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:56:19.356 [DEBUG] [Thread-192820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:56:19.356 [DEBUG] [Thread-192820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:56:19.370 [INFO] [Thread-192820] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:56:19.370 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:56:19.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:56:20.198 [DEBUG] [Thread-192820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:56:20.198 [DEBUG] [Thread-192820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:56:20.246 [DEBUG] [Thread-192820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:56:20.246 [DEBUG] [Thread-192820] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:56:20.255 [DEBUG] [Thread-192820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:56:20.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:56:20.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-11-24T15:56:20.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-11-24T15:56:20.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:56:20.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:56:20.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:56:20.301 [DEBUG] [Thread-192820] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:56:20.947 [DEBUG] [Thread-192822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:56:33.089 [DEBUG] [Thread-192823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:56:36.001 [DEBUG] [Thread-192824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:56:50.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:56:50.324 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:56:50.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-11-24T15:56:50.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 56, 39), 24.89, 18.69, 0.0, 22.3, 22.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:56:50.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:56:39
2025-11-24T15:56:51.029 [DEBUG] [Thread-192825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:56:51.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:56:51.280 [DEBUG] [Thread-192826] [transport.py] [_log()] starting thread (client mode): 0x8d3b1f0
2025-11-24T15:56:51.281 [DEBUG] [Thread-192826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:56:51.301 [DEBUG] [Thread-192826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:56:51.302 [INFO] [Thread-192826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:56:51.305 [DEBUG] [Thread-192826] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] client lang: <none>
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] server lang: <none>
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] kex follows: False
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] Compression: none
2025-11-24T15:56:51.306 [DEBUG] [Thread-192826] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:56:51.322 [DEBUG] [Thread-192826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:56:51.322 [DEBUG] [Thread-192826] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:56:51.323 [DEBUG] [Thread-192826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:56:51.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:56:51.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:56:51.325 [DEBUG] [Thread-192826] [transport.py] [_log()] userauth is OK
2025-11-24T15:56:51.325 [DEBUG] [Thread-192826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:56:51.325 [DEBUG] [Thread-192826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:56:51.325 [DEBUG] [Thread-192826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:56:51.325 [DEBUG] [Thread-192826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:56:51.346 [INFO] [Thread-192826] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:56:51.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:56:51.962 [DEBUG] [Thread-192826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:56:51.962 [DEBUG] [Thread-192826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:56:51.962 [DEBUG] [Thread-192826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:56:52.003 [DEBUG] [Thread-192826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:56:52.003 [DEBUG] [Thread-192826] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:56:52.005 [DEBUG] [Thread-192826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:56:52.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:56:52.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:56:52.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:56:52.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:56:52.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:56:52.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:56:52.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:56:52.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:56:52.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:56:52.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.580602 -999.00  +22.20  10.27     24   +1.00 1 1 1 1 1   888    0 21.97 29.12 ----- 10.3 10.3 164.4 20.5 27.5 -27.9 26.9 -26.7 28.7 -25.2 29.3 -27.0
2025-11-24T15:56:52.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:56:52.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:56:52.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.580602
2025-11-24T15:56:52.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:56:52.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:56:52.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:56:52.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:56:52.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:56:52.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:56:39', tmtdew=24.89, humidity=18.69, cloud=0.0, wind=22.3, temperature=22.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:56:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:56:52.030 [DEBUG] [Thread-192826] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:56:52.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:56:52.114 [DEBUG] [Thread-192829] [transport.py] [_log()] starting thread (client mode): 0xd31b3ac0
2025-11-24T15:56:52.114 [DEBUG] [Thread-192829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:56:52.129 [DEBUG] [Thread-192829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:56:52.129 [INFO] [Thread-192829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:56:52.136 [DEBUG] [Thread-192829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] client lang: <none>
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] server lang: <none>
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] kex follows: False
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] Compression: none
2025-11-24T15:56:52.137 [DEBUG] [Thread-192829] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:56:52.195 [DEBUG] [Thread-192829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:56:52.195 [DEBUG] [Thread-192829] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:56:52.195 [DEBUG] [Thread-192829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:56:52.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:56:52.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:56:52.252 [DEBUG] [Thread-192829] [transport.py] [_log()] userauth is OK
2025-11-24T15:56:52.252 [DEBUG] [Thread-192829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:56:52.252 [DEBUG] [Thread-192829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:56:52.252 [DEBUG] [Thread-192829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:56:52.252 [DEBUG] [Thread-192829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:56:52.265 [INFO] [Thread-192829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:56:52.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:56:52.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:56:53.099 [DEBUG] [Thread-192829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:56:53.099 [DEBUG] [Thread-192829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:56:53.148 [DEBUG] [Thread-192829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:56:53.148 [DEBUG] [Thread-192829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:56:53.157 [DEBUG] [Thread-192829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:56:53.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:56:53.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:56:53.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:56:53.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:56:53.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:56:53.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:56:53.194 [DEBUG] [Thread-192829] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:57:06.073 [DEBUG] [Thread-192831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:57:21.126 [DEBUG] [Thread-192832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:57:23.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:57:23.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:57:23.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-11-24T15:57:23.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 57, 12), 25.13, 18.39, 0.0, 20.8, 22.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:57:23.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:57:12
2025-11-24T15:57:24.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:57:24.278 [DEBUG] [Thread-192833] [transport.py] [_log()] starting thread (client mode): 0xd3160f10
2025-11-24T15:57:24.278 [DEBUG] [Thread-192833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:57:24.299 [DEBUG] [Thread-192833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:57:24.299 [INFO] [Thread-192833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:57:24.302 [DEBUG] [Thread-192833] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:57:24.302 [DEBUG] [Thread-192833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] client lang: <none>
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] server lang: <none>
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] kex follows: False
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] Compression: none
2025-11-24T15:57:24.303 [DEBUG] [Thread-192833] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:57:24.322 [DEBUG] [Thread-192833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:57:24.323 [DEBUG] [Thread-192833] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:57:24.323 [DEBUG] [Thread-192833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:57:24.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:57:24.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:57:24.324 [DEBUG] [Thread-192833] [transport.py] [_log()] userauth is OK
2025-11-24T15:57:24.324 [DEBUG] [Thread-192833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:57:24.324 [DEBUG] [Thread-192833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:57:24.324 [DEBUG] [Thread-192833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:57:24.324 [DEBUG] [Thread-192833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:57:24.339 [INFO] [Thread-192833] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:57:24.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:57:24.994 [DEBUG] [Thread-192833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:57:24.994 [DEBUG] [Thread-192833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:57:24.994 [DEBUG] [Thread-192833] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:57:25.035 [DEBUG] [Thread-192833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:57:25.035 [DEBUG] [Thread-192833] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:57:25.037 [DEBUG] [Thread-192833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:57:25.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:57:25.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:57:25.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:57:25.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:57:25.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:57:25.056 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:57:25.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:57:25.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:57:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:57:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.580949 -999.00  +22.30   9.57     24   +1.00 1 1 1 1 1   888    0 21.94 38.53 ----- 15.5 9.6 191.8 18.2 27.6 -27.7 27.1 -27.1 28.9 -25.4 29.5 -28.1
2025-11-24T15:57:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:57:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:57:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.580949
2025-11-24T15:57:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:57:25.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:57:25.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:57:25.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:57:25.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:57:25.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:57:12', tmtdew=25.13, humidity=18.39, cloud=0.0, wind=20.8, temperature=22.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:56:33.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:57:25.057 [DEBUG] [Thread-192833] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:57:25.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:57:25.144 [DEBUG] [Thread-192836] [transport.py] [_log()] starting thread (client mode): 0xd0700f40
2025-11-24T15:57:25.144 [DEBUG] [Thread-192836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:57:25.159 [DEBUG] [Thread-192836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:57:25.159 [INFO] [Thread-192836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] client lang: <none>
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] server lang: <none>
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] kex follows: False
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] Compression: none
2025-11-24T15:57:25.167 [DEBUG] [Thread-192836] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:57:25.222 [DEBUG] [Thread-192836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:57:25.223 [DEBUG] [Thread-192836] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:57:25.223 [DEBUG] [Thread-192836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:57:25.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:57:25.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:57:25.280 [DEBUG] [Thread-192836] [transport.py] [_log()] userauth is OK
2025-11-24T15:57:25.280 [DEBUG] [Thread-192836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:57:25.280 [DEBUG] [Thread-192836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:57:25.280 [DEBUG] [Thread-192836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:57:25.280 [DEBUG] [Thread-192836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:57:25.294 [INFO] [Thread-192836] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:57:25.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:57:25.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:57:26.124 [DEBUG] [Thread-192836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:57:26.124 [DEBUG] [Thread-192836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:57:26.172 [DEBUG] [Thread-192836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:57:26.172 [DEBUG] [Thread-192836] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:57:26.180 [DEBUG] [Thread-192836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:57:26.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:57:26.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-11-24T15:57:26.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-11-24T15:57:26.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:57:26.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:57:26.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:57:26.212 [DEBUG] [Thread-192836] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:57:33.253 [DEBUG] [Thread-192838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:57:36.154 [DEBUG] [Thread-192839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:57:51.192 [DEBUG] [Thread-192840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:57:56.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:57:56.235 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:57:56.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-11-24T15:57:57.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 57, 45), 24.46, 19.25, 0.0, 21.88, 21.88, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:57:57.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:57:45
2025-11-24T15:57:57.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:57:57.370 [DEBUG] [Thread-192841] [transport.py] [_log()] starting thread (client mode): 0xd07032b0
2025-11-24T15:57:57.370 [DEBUG] [Thread-192841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:57:57.392 [DEBUG] [Thread-192841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:57:57.393 [INFO] [Thread-192841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:57:57.394 [DEBUG] [Thread-192841] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] client lang: <none>
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] server lang: <none>
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] kex follows: False
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] Compression: none
2025-11-24T15:57:57.395 [DEBUG] [Thread-192841] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:57:57.407 [DEBUG] [Thread-192841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:57:57.407 [DEBUG] [Thread-192841] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:57:57.417 [DEBUG] [Thread-192841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:57:57.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:57:57.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:57:57.420 [DEBUG] [Thread-192841] [transport.py] [_log()] userauth is OK
2025-11-24T15:57:57.420 [DEBUG] [Thread-192841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:57:57.420 [DEBUG] [Thread-192841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:57:57.420 [DEBUG] [Thread-192841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:57:57.420 [DEBUG] [Thread-192841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:57:57.441 [INFO] [Thread-192841] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:57:57.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:57:58.202 [DEBUG] [Thread-192841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:57:58.202 [DEBUG] [Thread-192841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:57:58.203 [DEBUG] [Thread-192841] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:57:58.243 [DEBUG] [Thread-192841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:57:58.243 [DEBUG] [Thread-192841] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:57:58.246 [DEBUG] [Thread-192841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:57:58.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:57:58.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:57:58.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:57:58.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:57:58.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:57:58.275 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:57:58.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:57:58.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:57:58.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:57:58.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.581297 -999.00  +22.20  11.69     24   +1.00 1 1 1 1 1   888    0 22.32 43.31 ----- 14.1 11.7 178.8 17.6 27.6 -28.4 27.2 -31.1 28.9 -25.5 29.6 -28.3
2025-11-24T15:57:58.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:57:58.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:57:58.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.581297
2025-11-24T15:57:58.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:57:58.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:57:58.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:57:58.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:57:58.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:57:58.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:57:45', tmtdew=24.46, humidity=19.25, cloud=0.0, wind=21.88, temperature=21.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:57:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:57:58.279 [DEBUG] [Thread-192841] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:57:58.361 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:57:58.372 [DEBUG] [Thread-192844] [transport.py] [_log()] starting thread (client mode): 0xd07010f0
2025-11-24T15:57:58.372 [DEBUG] [Thread-192844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:57:58.386 [DEBUG] [Thread-192844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:57:58.387 [INFO] [Thread-192844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:57:58.394 [DEBUG] [Thread-192844] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:57:58.394 [DEBUG] [Thread-192844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:57:58.394 [DEBUG] [Thread-192844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:57:58.394 [DEBUG] [Thread-192844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] client lang: <none>
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] server lang: <none>
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] kex follows: False
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] Compression: none
2025-11-24T15:57:58.395 [DEBUG] [Thread-192844] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:57:58.452 [DEBUG] [Thread-192844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:57:58.453 [DEBUG] [Thread-192844] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:57:58.453 [DEBUG] [Thread-192844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:57:58.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:57:58.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:57:58.508 [DEBUG] [Thread-192844] [transport.py] [_log()] userauth is OK
2025-11-24T15:57:58.509 [DEBUG] [Thread-192844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:57:58.509 [DEBUG] [Thread-192844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:57:58.509 [DEBUG] [Thread-192844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:57:58.509 [DEBUG] [Thread-192844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:57:58.530 [INFO] [Thread-192844] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:57:58.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:57:58.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:57:59.354 [DEBUG] [Thread-192844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:57:59.355 [DEBUG] [Thread-192844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:57:59.403 [DEBUG] [Thread-192844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:57:59.403 [DEBUG] [Thread-192844] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:57:59.414 [DEBUG] [Thread-192844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:57:59.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:57:59.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:57:59.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-11-24T15:57:59.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:57:59.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:57:59.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:57:59.452 [DEBUG] [Thread-192844] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:58:06.222 [DEBUG] [Thread-192846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:58:21.263 [DEBUG] [Thread-192847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:58:29.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:58:29.474 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:58:29.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-11-24T15:58:30.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 58, 17), 24.39, 19.33, 0.0, 23.75, 21.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:58:30.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:58:17
2025-11-24T15:58:30.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:58:30.622 [DEBUG] [Thread-192848] [transport.py] [_log()] starting thread (client mode): 0xd07aa530
2025-11-24T15:58:30.622 [DEBUG] [Thread-192848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:58:30.642 [DEBUG] [Thread-192848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:58:30.643 [INFO] [Thread-192848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:58:30.653 [DEBUG] [Thread-192848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] client lang: <none>
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] server lang: <none>
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] kex follows: False
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] Compression: none
2025-11-24T15:58:30.654 [DEBUG] [Thread-192848] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:58:30.675 [DEBUG] [Thread-192848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:58:30.676 [DEBUG] [Thread-192848] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:58:30.676 [DEBUG] [Thread-192848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:58:30.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:58:30.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:58:30.678 [DEBUG] [Thread-192848] [transport.py] [_log()] userauth is OK
2025-11-24T15:58:30.678 [DEBUG] [Thread-192848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:58:30.679 [DEBUG] [Thread-192848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:58:30.679 [DEBUG] [Thread-192848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:58:30.679 [DEBUG] [Thread-192848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:58:30.703 [INFO] [Thread-192848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:58:30.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:58:31.271 [DEBUG] [Thread-192848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:58:31.271 [DEBUG] [Thread-192848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:58:31.272 [DEBUG] [Thread-192848] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:58:31.313 [DEBUG] [Thread-192848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:58:31.313 [DEBUG] [Thread-192848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:58:31.317 [DEBUG] [Thread-192848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:58:31.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:58:31.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:58:31.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:58:31.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:58:31.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:58:31.342 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:58:31.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:58:31.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:58:31.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:58:31.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.581644 -999.00  +22.30  22.00     24   +1.00 1 1 1 1 1   888    0 22.01 43.36 ----- 24.4 22.0 173.4 25.1 27.6 -30.2 27.1 -27.3 29.0 -26.0 29.6 -29.5
2025-11-24T15:58:31.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:58:31.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:58:31.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.581644
2025-11-24T15:58:31.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:58:31.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:58:31.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:58:31.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:58:31.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:58:31.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:58:17', tmtdew=24.39, humidity=19.33, cloud=0.0, wind=23.75, temperature=21.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:57:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:58:31.346 [DEBUG] [Thread-192848] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:58:31.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:58:31.441 [DEBUG] [Thread-192851] [transport.py] [_log()] starting thread (client mode): 0xd31b3ac0
2025-11-24T15:58:31.441 [DEBUG] [Thread-192851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:58:31.456 [DEBUG] [Thread-192851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:58:31.456 [INFO] [Thread-192851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:58:31.463 [DEBUG] [Thread-192851] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] client lang: <none>
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] server lang: <none>
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] kex follows: False
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:58:31.464 [DEBUG] [Thread-192851] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:58:31.465 [DEBUG] [Thread-192851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:58:31.465 [DEBUG] [Thread-192851] [transport.py] [_log()] Compression: none
2025-11-24T15:58:31.465 [DEBUG] [Thread-192851] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:58:31.523 [DEBUG] [Thread-192851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:58:31.524 [DEBUG] [Thread-192851] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:58:31.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:58:31.525 [DEBUG] [Thread-192851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:58:31.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:58:31.580 [DEBUG] [Thread-192851] [transport.py] [_log()] userauth is OK
2025-11-24T15:58:31.580 [DEBUG] [Thread-192851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:58:31.581 [DEBUG] [Thread-192851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:58:31.581 [DEBUG] [Thread-192851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:58:31.581 [DEBUG] [Thread-192851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:58:31.599 [INFO] [Thread-192851] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:58:31.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:58:31.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:58:32.447 [DEBUG] [Thread-192851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:58:32.447 [DEBUG] [Thread-192851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:58:32.495 [DEBUG] [Thread-192851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:58:32.495 [DEBUG] [Thread-192851] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:58:32.503 [DEBUG] [Thread-192851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:58:32.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:58:32.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:58:32.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T15:58:32.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:58:32.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:58:32.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:58:32.534 [DEBUG] [Thread-192851] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:58:33.528 [DEBUG] [Thread-192853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:58:36.295 [DEBUG] [Thread-192854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:58:51.346 [DEBUG] [Thread-192855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:59:02.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:59:02.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:59:02.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-11-24T15:59:03.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 58, 50), 24.12, 19.45, 0.0, 21.05, 21.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:59:03.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:58:50
2025-11-24T15:59:03.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:59:03.649 [DEBUG] [Thread-192856] [transport.py] [_log()] starting thread (client mode): 0xd0702350
2025-11-24T15:59:03.649 [DEBUG] [Thread-192856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:59:03.670 [DEBUG] [Thread-192856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:59:03.670 [INFO] [Thread-192856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:59:03.673 [DEBUG] [Thread-192856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:59:03.673 [DEBUG] [Thread-192856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:59:03.673 [DEBUG] [Thread-192856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:59:03.673 [DEBUG] [Thread-192856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:59:03.673 [DEBUG] [Thread-192856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:59:03.673 [DEBUG] [Thread-192856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:59:03.673 [DEBUG] [Thread-192856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:59:03.673 [DEBUG] [Thread-192856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:59:03.673 [DEBUG] [Thread-192856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:59:03.674 [DEBUG] [Thread-192856] [transport.py] [_log()] client lang: <none>
2025-11-24T15:59:03.674 [DEBUG] [Thread-192856] [transport.py] [_log()] server lang: <none>
2025-11-24T15:59:03.674 [DEBUG] [Thread-192856] [transport.py] [_log()] kex follows: False
2025-11-24T15:59:03.674 [DEBUG] [Thread-192856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:59:03.674 [DEBUG] [Thread-192856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:59:03.674 [DEBUG] [Thread-192856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:59:03.674 [DEBUG] [Thread-192856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:59:03.674 [DEBUG] [Thread-192856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:59:03.674 [DEBUG] [Thread-192856] [transport.py] [_log()] Compression: none
2025-11-24T15:59:03.674 [DEBUG] [Thread-192856] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:59:03.693 [DEBUG] [Thread-192856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:59:03.694 [DEBUG] [Thread-192856] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:59:03.694 [DEBUG] [Thread-192856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:59:03.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:59:03.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:59:03.696 [DEBUG] [Thread-192856] [transport.py] [_log()] userauth is OK
2025-11-24T15:59:03.696 [DEBUG] [Thread-192856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:59:03.697 [DEBUG] [Thread-192856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:59:03.697 [DEBUG] [Thread-192856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:59:03.697 [DEBUG] [Thread-192856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:59:03.714 [INFO] [Thread-192856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:59:03.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:59:04.439 [DEBUG] [Thread-192856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:59:04.439 [DEBUG] [Thread-192856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:59:04.440 [DEBUG] [Thread-192856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:59:04.480 [DEBUG] [Thread-192856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:59:04.480 [DEBUG] [Thread-192856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:59:04.483 [DEBUG] [Thread-192856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:59:04.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:59:04.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:59:04.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:59:04.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:59:04.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:59:04.508 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:59:04.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:59:04.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:59:04.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:59:04.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.581991 -999.00  +22.40  11.20     24   +1.20 1 1 1 1 1   888    0 22.52 50.24 ----- 13.6 11.2 226.3 21.8 27.6 -27.8 27.1 -28.0 28.9 -26.1 29.6 -27.8
2025-11-24T15:59:04.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:59:04.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:59:04.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.581991
2025-11-24T15:59:04.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:59:04.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:59:04.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:59:04.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:59:04.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:59:04.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:58:50', tmtdew=24.12, humidity=19.45, cloud=0.0, wind=21.05, temperature=21.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:58:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:59:04.511 [DEBUG] [Thread-192856] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:59:04.594 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:59:04.606 [DEBUG] [Thread-192859] [transport.py] [_log()] starting thread (client mode): 0xd0703b50
2025-11-24T15:59:04.607 [DEBUG] [Thread-192859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:59:04.622 [DEBUG] [Thread-192859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:59:04.622 [INFO] [Thread-192859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:59:04.630 [DEBUG] [Thread-192859] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:59:04.630 [DEBUG] [Thread-192859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:59:04.630 [DEBUG] [Thread-192859] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:59:04.630 [DEBUG] [Thread-192859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:59:04.630 [DEBUG] [Thread-192859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:59:04.630 [DEBUG] [Thread-192859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:59:04.630 [DEBUG] [Thread-192859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:59:04.630 [DEBUG] [Thread-192859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] client lang: <none>
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] server lang: <none>
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] kex follows: False
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] Compression: none
2025-11-24T15:59:04.631 [DEBUG] [Thread-192859] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:59:04.686 [DEBUG] [Thread-192859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:59:04.686 [DEBUG] [Thread-192859] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:59:04.686 [DEBUG] [Thread-192859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:59:04.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:59:04.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:59:04.746 [DEBUG] [Thread-192859] [transport.py] [_log()] userauth is OK
2025-11-24T15:59:04.746 [DEBUG] [Thread-192859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:59:04.746 [DEBUG] [Thread-192859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:59:04.747 [DEBUG] [Thread-192859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:59:04.747 [DEBUG] [Thread-192859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:59:04.767 [INFO] [Thread-192859] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:59:04.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:59:04.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:59:05.685 [DEBUG] [Thread-192859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:59:05.686 [DEBUG] [Thread-192859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:59:05.734 [DEBUG] [Thread-192859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:59:05.734 [DEBUG] [Thread-192859] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:59:05.742 [DEBUG] [Thread-192859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:59:05.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:59:05.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-11-24T15:59:05.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-11-24T15:59:05.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:59:05.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:59:05.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:59:05.774 [DEBUG] [Thread-192859] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:59:06.387 [DEBUG] [Thread-192861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:59:21.424 [DEBUG] [Thread-192862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:59:33.825 [DEBUG] [Thread-192863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:59:35.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T15:59:35.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T15:59:35.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-11-24T15:59:36.453 [DEBUG] [Thread-192864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T15:59:36.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 59, 22), 24.27, 19.3, 0.0, 20.04, 21.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T15:59:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:59:22
2025-11-24T15:59:36.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T15:59:36.878 [DEBUG] [Thread-192865] [transport.py] [_log()] starting thread (client mode): 0xd3160b50
2025-11-24T15:59:36.879 [DEBUG] [Thread-192865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:59:36.891 [DEBUG] [Thread-192865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T15:59:36.891 [INFO] [Thread-192865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T15:59:36.904 [DEBUG] [Thread-192865] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:59:36.904 [DEBUG] [Thread-192865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T15:59:36.904 [DEBUG] [Thread-192865] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:59:36.904 [DEBUG] [Thread-192865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:59:36.904 [DEBUG] [Thread-192865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:59:36.904 [DEBUG] [Thread-192865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:59:36.904 [DEBUG] [Thread-192865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:59:36.905 [DEBUG] [Thread-192865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:59:36.905 [DEBUG] [Thread-192865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:59:36.905 [DEBUG] [Thread-192865] [transport.py] [_log()] client lang: <none>
2025-11-24T15:59:36.905 [DEBUG] [Thread-192865] [transport.py] [_log()] server lang: <none>
2025-11-24T15:59:36.905 [DEBUG] [Thread-192865] [transport.py] [_log()] kex follows: False
2025-11-24T15:59:36.905 [DEBUG] [Thread-192865] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:59:36.906 [DEBUG] [Thread-192865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:59:36.906 [DEBUG] [Thread-192865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:59:36.906 [DEBUG] [Thread-192865] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:59:36.906 [DEBUG] [Thread-192865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:59:36.906 [DEBUG] [Thread-192865] [transport.py] [_log()] Compression: none
2025-11-24T15:59:36.906 [DEBUG] [Thread-192865] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:59:36.937 [DEBUG] [Thread-192865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:59:36.940 [DEBUG] [Thread-192865] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:59:36.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T15:59:36.944 [DEBUG] [Thread-192865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T15:59:36.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:59:36.947 [DEBUG] [Thread-192865] [transport.py] [_log()] userauth is OK
2025-11-24T15:59:36.947 [DEBUG] [Thread-192865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:59:36.948 [DEBUG] [Thread-192865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:59:36.948 [DEBUG] [Thread-192865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T15:59:36.948 [DEBUG] [Thread-192865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:59:36.979 [INFO] [Thread-192865] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:59:36.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:59:37.586 [DEBUG] [Thread-192865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:59:37.586 [DEBUG] [Thread-192865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:59:37.597 [DEBUG] [Thread-192865] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T15:59:37.627 [DEBUG] [Thread-192865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:59:37.627 [DEBUG] [Thread-192865] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:59:37.633 [DEBUG] [Thread-192865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:59:37.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:59:37.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T15:59:37.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T15:59:37.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T15:59:37.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:59:37.652 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T15:59:37.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:59:37.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:59:37.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T15:59:37.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.582338 -999.00  +22.70   8.35     24   +1.20 1 1 1 1 1   888    0 22.43 47.94 ----- 9.6 8.3 210.2 14.0 27.7 -27.9 27.3 -27.1 29.1 -24.9 29.7 -28.1
2025-11-24T15:59:37.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T15:59:37.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T15:59:37.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.582338
2025-11-24T15:59:37.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T15:59:37.665 [DEBUG] [Thread-192865] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:59:37.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T15:59:37.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T15:59:37.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T15:59:37.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T15:59:37.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:59:22', tmtdew=24.27, humidity=19.3, cloud=0.0, wind=20.04, temperature=21.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:58:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T15:59:37.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T15:59:37.750 [DEBUG] [Thread-192868] [transport.py] [_log()] starting thread (client mode): 0xd07a8730
2025-11-24T15:59:37.750 [DEBUG] [Thread-192868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T15:59:37.764 [DEBUG] [Thread-192868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T15:59:37.764 [INFO] [Thread-192868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] client lang: <none>
2025-11-24T15:59:37.772 [DEBUG] [Thread-192868] [transport.py] [_log()] server lang: <none>
2025-11-24T15:59:37.773 [DEBUG] [Thread-192868] [transport.py] [_log()] kex follows: False
2025-11-24T15:59:37.773 [DEBUG] [Thread-192868] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T15:59:37.773 [DEBUG] [Thread-192868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T15:59:37.773 [DEBUG] [Thread-192868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T15:59:37.773 [DEBUG] [Thread-192868] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T15:59:37.773 [DEBUG] [Thread-192868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T15:59:37.773 [DEBUG] [Thread-192868] [transport.py] [_log()] Compression: none
2025-11-24T15:59:37.773 [DEBUG] [Thread-192868] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T15:59:37.837 [DEBUG] [Thread-192868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T15:59:37.837 [DEBUG] [Thread-192868] [transport.py] [_log()] Switch to new keys ...
2025-11-24T15:59:37.838 [DEBUG] [Thread-192868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T15:59:37.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T15:59:37.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T15:59:37.897 [DEBUG] [Thread-192868] [transport.py] [_log()] userauth is OK
2025-11-24T15:59:37.897 [DEBUG] [Thread-192868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T15:59:37.897 [DEBUG] [Thread-192868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T15:59:37.897 [DEBUG] [Thread-192868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T15:59:37.897 [DEBUG] [Thread-192868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T15:59:37.916 [INFO] [Thread-192868] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T15:59:37.917 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T15:59:37.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T15:59:38.807 [DEBUG] [Thread-192868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T15:59:38.807 [DEBUG] [Thread-192868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T15:59:38.855 [DEBUG] [Thread-192868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T15:59:38.855 [DEBUG] [Thread-192868] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T15:59:38.863 [DEBUG] [Thread-192868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T15:59:38.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T15:59:38.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T15:59:38.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-11-24T15:59:38.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T15:59:38.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T15:59:38.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T15:59:38.904 [DEBUG] [Thread-192868] [transport.py] [_log()] EOF in transport thread
2025-11-24T15:59:51.495 [DEBUG] [Thread-192870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:00:06.596 [DEBUG] [Thread-192871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:00:08.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:00:08.923 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:00:08.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-11-24T16:00:09.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 15, 59, 54), 24.48, 19.1, 0.0, 20.89, 22.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:00:09.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 15:59:54
2025-11-24T16:00:09.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:00:09.995 [DEBUG] [Thread-192872] [transport.py] [_log()] starting thread (client mode): 0xd07abd60
2025-11-24T16:00:09.995 [DEBUG] [Thread-192872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:00:10.012 [DEBUG] [Thread-192872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:00:10.013 [INFO] [Thread-192872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:00:10.016 [DEBUG] [Thread-192872] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:00:10.016 [DEBUG] [Thread-192872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] client lang: <none>
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] server lang: <none>
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] kex follows: False
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] Compression: none
2025-11-24T16:00:10.017 [DEBUG] [Thread-192872] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:00:10.035 [DEBUG] [Thread-192872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:00:10.036 [DEBUG] [Thread-192872] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:00:10.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:00:10.037 [DEBUG] [Thread-192872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:00:10.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:00:10.039 [DEBUG] [Thread-192872] [transport.py] [_log()] userauth is OK
2025-11-24T16:00:10.039 [DEBUG] [Thread-192872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:00:10.039 [DEBUG] [Thread-192872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:00:10.039 [DEBUG] [Thread-192872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:00:10.039 [DEBUG] [Thread-192872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:00:10.061 [INFO] [Thread-192872] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:00:10.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:00:19.301 [DEBUG] [Thread-192872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:00:19.301 [DEBUG] [Thread-192872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:00:19.301 [DEBUG] [Thread-192872] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:00:19.341 [DEBUG] [Thread-192872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:00:19.341 [DEBUG] [Thread-192872] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:00:19.343 [DEBUG] [Thread-192872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:00:19.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:00:19.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:00:19.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:00:19.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:00:19.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:00:19.468 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:00:19.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:00:19.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:00:19.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:00:19.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.582686 -999.00  +22.60  17.23     24   +1.10 1 1 1 1 1   888    0 23.06 52.89 ----- 13.8 17.2 153.4 24.8 27.8 -28.3 27.4 -27.5 29.1 -26.3 29.8 -29.0
2025-11-24T16:00:19.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:00:19.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:00:19.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.582686
2025-11-24T16:00:19.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:00:19.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:00:19.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:00:19.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:00:19.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:00:19.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T15:59:54', tmtdew=24.48, humidity=19.1, cloud=0.0, wind=20.89, temperature=22.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T13:59:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:00:19.469 [DEBUG] [Thread-192872] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:00:19.543 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:00:19.556 [DEBUG] [Thread-192875] [transport.py] [_log()] starting thread (client mode): 0xd07020b0
2025-11-24T16:00:19.556 [DEBUG] [Thread-192875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:00:19.571 [DEBUG] [Thread-192875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:00:19.572 [INFO] [Thread-192875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] client lang: <none>
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] server lang: <none>
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] kex follows: False
2025-11-24T16:00:19.579 [DEBUG] [Thread-192875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:00:19.580 [DEBUG] [Thread-192875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:00:19.580 [DEBUG] [Thread-192875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:00:19.580 [DEBUG] [Thread-192875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:00:19.580 [DEBUG] [Thread-192875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:00:19.580 [DEBUG] [Thread-192875] [transport.py] [_log()] Compression: none
2025-11-24T16:00:19.580 [DEBUG] [Thread-192875] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:00:19.635 [DEBUG] [Thread-192875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:00:19.636 [DEBUG] [Thread-192875] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:00:19.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:00:19.637 [DEBUG] [Thread-192875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:00:19.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:00:19.692 [DEBUG] [Thread-192875] [transport.py] [_log()] userauth is OK
2025-11-24T16:00:19.692 [DEBUG] [Thread-192875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:00:19.692 [DEBUG] [Thread-192875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:00:19.693 [DEBUG] [Thread-192875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:00:19.693 [DEBUG] [Thread-192875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:00:19.712 [INFO] [Thread-192875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:00:19.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:00:19.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:00:20.588 [DEBUG] [Thread-192875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:00:20.588 [DEBUG] [Thread-192875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:00:20.636 [DEBUG] [Thread-192875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:00:20.636 [DEBUG] [Thread-192875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:00:20.645 [DEBUG] [Thread-192875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:00:20.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:00:20.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-11-24T16:00:20.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-11-24T16:00:20.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:00:20.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:00:20.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:00:20.677 [DEBUG] [Thread-192875] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:00:21.631 [DEBUG] [Thread-192877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:00:34.146 [DEBUG] [Thread-192878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:00:36.679 [DEBUG] [Thread-192879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:00:50.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:00:50.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:00:50.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-11-24T16:00:51.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 0, 27), 24.51, 19.07, 0.0, 22.28, 22.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:00:51.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:00:27
2025-11-24T16:00:51.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:00:51.707 [DEBUG] [Thread-192880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:00:51.742 [DEBUG] [Thread-192881] [transport.py] [_log()] starting thread (client mode): 0xd0700d60
2025-11-24T16:00:51.742 [DEBUG] [Thread-192881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:00:51.763 [DEBUG] [Thread-192881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:00:51.764 [INFO] [Thread-192881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:00:51.766 [DEBUG] [Thread-192881] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] client lang: <none>
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] server lang: <none>
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] kex follows: False
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] Compression: none
2025-11-24T16:00:51.767 [DEBUG] [Thread-192881] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:00:51.785 [DEBUG] [Thread-192881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:00:51.785 [DEBUG] [Thread-192881] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:00:51.786 [DEBUG] [Thread-192881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:00:51.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:00:51.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:00:51.788 [DEBUG] [Thread-192881] [transport.py] [_log()] userauth is OK
2025-11-24T16:00:51.788 [DEBUG] [Thread-192881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:00:51.788 [DEBUG] [Thread-192881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:00:51.789 [DEBUG] [Thread-192881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:00:51.789 [DEBUG] [Thread-192881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:00:51.811 [INFO] [Thread-192881] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:00:51.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:00:52.438 [DEBUG] [Thread-192881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:00:52.438 [DEBUG] [Thread-192881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:00:52.438 [DEBUG] [Thread-192881] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:00:52.479 [DEBUG] [Thread-192881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:00:52.479 [DEBUG] [Thread-192881] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:00:52.481 [DEBUG] [Thread-192881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:00:52.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:00:52.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:00:52.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:00:52.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:00:52.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:00:52.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:00:52.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:00:52.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:00:52.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:00:52.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.583380 -999.00  +22.70  16.44     24   +1.20 1 1 1 1 1   888    0 22.73 56.52 ----- 14.6 16.4 183.8 21.5 27.7 -28.9 27.3 -28.4 29.1 -26.5 29.8 -28.2
2025-11-24T16:00:52.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:00:52.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:00:52.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.583380
2025-11-24T16:00:52.509 [DEBUG] [Thread-192881] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:00:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:00:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:00:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:00:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:00:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:00:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:00:27', tmtdew=24.51, humidity=19.07, cloud=0.0, wind=22.28, temperature=22.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:00:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:00:52.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:00:52.593 [DEBUG] [Thread-192884] [transport.py] [_log()] starting thread (client mode): 0xd07005b0
2025-11-24T16:00:52.594 [DEBUG] [Thread-192884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:00:52.608 [DEBUG] [Thread-192884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:00:52.609 [INFO] [Thread-192884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:00:52.616 [DEBUG] [Thread-192884] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:00:52.616 [DEBUG] [Thread-192884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:00:52.616 [DEBUG] [Thread-192884] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:00:52.616 [DEBUG] [Thread-192884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:00:52.616 [DEBUG] [Thread-192884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:00:52.616 [DEBUG] [Thread-192884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:00:52.616 [DEBUG] [Thread-192884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] client lang: <none>
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] server lang: <none>
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] kex follows: False
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] Compression: none
2025-11-24T16:00:52.617 [DEBUG] [Thread-192884] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:00:52.678 [DEBUG] [Thread-192884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:00:52.678 [DEBUG] [Thread-192884] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:00:52.678 [DEBUG] [Thread-192884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:00:52.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:00:52.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:00:52.736 [DEBUG] [Thread-192884] [transport.py] [_log()] userauth is OK
2025-11-24T16:00:52.736 [DEBUG] [Thread-192884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:00:52.736 [DEBUG] [Thread-192884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:00:52.736 [DEBUG] [Thread-192884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:00:52.736 [DEBUG] [Thread-192884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:00:52.755 [INFO] [Thread-192884] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:00:52.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:00:52.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:00:53.615 [DEBUG] [Thread-192884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:00:53.616 [DEBUG] [Thread-192884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:00:53.663 [DEBUG] [Thread-192884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:00:53.663 [DEBUG] [Thread-192884] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:00:53.671 [DEBUG] [Thread-192884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:00:53.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:00:53.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-11-24T16:00:53.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-11-24T16:00:53.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:00:53.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:00:53.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:00:53.703 [DEBUG] [Thread-192884] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:01:06.738 [DEBUG] [Thread-192886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:01:21.786 [DEBUG] [Thread-192887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:01:23.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:01:23.726 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:01:23.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-11-24T16:01:24.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 0, 27), 24.51, 19.07, 0.0, 22.28, 22.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:01:24.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:00:27
2025-11-24T16:01:24.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:01:24.809 [DEBUG] [Thread-192888] [transport.py] [_log()] starting thread (client mode): 0xd0701060
2025-11-24T16:01:24.809 [DEBUG] [Thread-192888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:01:24.820 [DEBUG] [Thread-192888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:01:24.820 [INFO] [Thread-192888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] client lang: <none>
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] server lang: <none>
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] kex follows: False
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:01:24.821 [DEBUG] [Thread-192888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:01:24.822 [DEBUG] [Thread-192888] [transport.py] [_log()] Compression: none
2025-11-24T16:01:24.822 [DEBUG] [Thread-192888] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:01:24.829 [DEBUG] [Thread-192888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:01:24.829 [DEBUG] [Thread-192888] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:01:24.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:01:24.829 [DEBUG] [Thread-192888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:01:24.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:01:24.830 [DEBUG] [Thread-192888] [transport.py] [_log()] userauth is OK
2025-11-24T16:01:24.830 [DEBUG] [Thread-192888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:01:24.830 [DEBUG] [Thread-192888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:01:24.830 [DEBUG] [Thread-192888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:01:24.830 [DEBUG] [Thread-192888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:01:24.847 [INFO] [Thread-192888] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:01:24.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:01:25.470 [DEBUG] [Thread-192888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:01:25.470 [DEBUG] [Thread-192888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:01:25.471 [DEBUG] [Thread-192888] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:01:25.512 [DEBUG] [Thread-192888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:01:25.512 [DEBUG] [Thread-192888] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:01:25.514 [DEBUG] [Thread-192888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:01:25.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:01:25.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:01:25.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:01:25.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:01:25.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:01:25.542 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:01:25.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:01:25.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:01:25.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:01:25.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.583727 -999.00  +22.80  16.95     23   +1.10 1 1 1 1 1   888    0 23.49 60.50 ----- 13.6 16.9 175.4 21.6 27.9 -28.2 27.4 -29.1 29.1 -26.1 29.8 -27.7
2025-11-24T16:01:25.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:01:25.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:01:25.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.583727
2025-11-24T16:01:25.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:01:25.549 [DEBUG] [Thread-192888] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:01:25.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:01:25.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:01:25.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:01:25.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:01:25.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:00:27', tmtdew=24.51, humidity=19.07, cloud=0.0, wind=22.28, temperature=22.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:00:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:01:25.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:01:25.650 [DEBUG] [Thread-192891] [transport.py] [_log()] starting thread (client mode): 0xd0701690
2025-11-24T16:01:25.651 [DEBUG] [Thread-192891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:01:25.666 [DEBUG] [Thread-192891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:01:25.666 [INFO] [Thread-192891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] client lang: <none>
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] server lang: <none>
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] kex follows: False
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:01:25.674 [DEBUG] [Thread-192891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:01:25.675 [DEBUG] [Thread-192891] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:01:25.675 [DEBUG] [Thread-192891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:01:25.675 [DEBUG] [Thread-192891] [transport.py] [_log()] Compression: none
2025-11-24T16:01:25.675 [DEBUG] [Thread-192891] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:01:25.731 [DEBUG] [Thread-192891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:01:25.732 [DEBUG] [Thread-192891] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:01:25.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:01:25.733 [DEBUG] [Thread-192891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:01:25.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:01:25.787 [DEBUG] [Thread-192891] [transport.py] [_log()] userauth is OK
2025-11-24T16:01:25.787 [DEBUG] [Thread-192891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:01:25.787 [DEBUG] [Thread-192891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:01:25.787 [DEBUG] [Thread-192891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:01:25.787 [DEBUG] [Thread-192891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:01:25.810 [INFO] [Thread-192891] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:01:25.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:01:25.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:01:26.649 [DEBUG] [Thread-192891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:01:26.649 [DEBUG] [Thread-192891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:01:26.700 [DEBUG] [Thread-192891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:01:26.700 [DEBUG] [Thread-192891] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:01:26.708 [DEBUG] [Thread-192891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:01:26.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:01:26.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-11-24T16:01:26.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-11-24T16:01:26.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:01:26.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:01:26.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:01:26.741 [DEBUG] [Thread-192891] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:01:34.378 [DEBUG] [Thread-192893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:01:36.813 [DEBUG] [Thread-192894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:01:51.865 [DEBUG] [Thread-192895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:01:56.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:01:56.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:01:56.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-11-24T16:01:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 1, 32), 24.43, 19.52, 0.0, 25.43, 21.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:01:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:01:32
2025-11-24T16:01:57.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:01:57.990 [DEBUG] [Thread-192896] [transport.py] [_log()] starting thread (client mode): 0xd0701ae0
2025-11-24T16:01:57.991 [DEBUG] [Thread-192896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:01:58.010 [DEBUG] [Thread-192896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:01:58.010 [INFO] [Thread-192896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] client lang: <none>
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] server lang: <none>
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] kex follows: False
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] Compression: none
2025-11-24T16:01:58.012 [DEBUG] [Thread-192896] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:01:58.024 [DEBUG] [Thread-192896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:01:58.024 [DEBUG] [Thread-192896] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:01:58.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:01:58.024 [DEBUG] [Thread-192896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:01:58.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:01:58.025 [DEBUG] [Thread-192896] [transport.py] [_log()] userauth is OK
2025-11-24T16:01:58.025 [DEBUG] [Thread-192896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:01:58.025 [DEBUG] [Thread-192896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:01:58.025 [DEBUG] [Thread-192896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:01:58.025 [DEBUG] [Thread-192896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:01:58.035 [INFO] [Thread-192896] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:01:58.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:01:58.699 [DEBUG] [Thread-192896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:01:58.699 [DEBUG] [Thread-192896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:01:58.700 [DEBUG] [Thread-192896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:01:58.740 [DEBUG] [Thread-192896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:01:58.740 [DEBUG] [Thread-192896] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:01:58.742 [DEBUG] [Thread-192896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:01:58.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:01:58.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:01:58.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:01:58.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:01:58.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:01:58.758 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:01:58.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.584074 -999.00  +23.10  13.83     23   +1.30 1 1 1 1 1   888    0 22.41 60.51 ----- 16.6 13.8 175.0 22.1 28.0 -27.9 27.6 -27.2 29.3 -25.3 29.9 -26.7
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.584074
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:01:58.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:01:58.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:01:32', tmtdew=24.43, humidity=19.52, cloud=0.0, wind=25.43, temperature=21.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:01:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:01:58.759 [DEBUG] [Thread-192896] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:01:58.834 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:01:58.845 [DEBUG] [Thread-192899] [transport.py] [_log()] starting thread (client mode): 0xd0701000
2025-11-24T16:01:58.845 [DEBUG] [Thread-192899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:01:58.860 [DEBUG] [Thread-192899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:01:58.860 [INFO] [Thread-192899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:01:58.867 [DEBUG] [Thread-192899] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:01:58.867 [DEBUG] [Thread-192899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:01:58.867 [DEBUG] [Thread-192899] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:01:58.867 [DEBUG] [Thread-192899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] client lang: <none>
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] server lang: <none>
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] kex follows: False
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] Compression: none
2025-11-24T16:01:58.868 [DEBUG] [Thread-192899] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:01:58.926 [DEBUG] [Thread-192899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:01:58.926 [DEBUG] [Thread-192899] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:01:58.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:01:58.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:01:58.926 [DEBUG] [Thread-192899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:01:58.983 [DEBUG] [Thread-192899] [transport.py] [_log()] userauth is OK
2025-11-24T16:01:58.983 [DEBUG] [Thread-192899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:01:58.983 [DEBUG] [Thread-192899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:01:58.983 [DEBUG] [Thread-192899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:01:58.983 [DEBUG] [Thread-192899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:01:58.997 [INFO] [Thread-192899] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:01:58.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:01:58.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:01:59.815 [DEBUG] [Thread-192899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:01:59.815 [DEBUG] [Thread-192899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:01:59.863 [DEBUG] [Thread-192899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:01:59.863 [DEBUG] [Thread-192899] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:01:59.871 [DEBUG] [Thread-192899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:01:59.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:01:59.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-11-24T16:01:59.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-11-24T16:01:59.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:01:59.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:01:59.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:01:59.903 [DEBUG] [Thread-192899] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:02:06.896 [DEBUG] [Thread-192901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:02:21.974 [DEBUG] [Thread-192902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:02:29.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:02:29.926 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:02:29.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-11-24T16:02:30.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 2, 4), 24.59, 19.37, 0.0, 27.93, 22.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:02:30.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:02:04
2025-11-24T16:02:30.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:02:31.048 [DEBUG] [Thread-192903] [transport.py] [_log()] starting thread (client mode): 0xd07abca0
2025-11-24T16:02:31.048 [DEBUG] [Thread-192903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:02:31.066 [DEBUG] [Thread-192903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:02:31.067 [INFO] [Thread-192903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:02:31.069 [DEBUG] [Thread-192903] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:02:31.069 [DEBUG] [Thread-192903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:02:31.069 [DEBUG] [Thread-192903] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:02:31.069 [DEBUG] [Thread-192903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:02:31.069 [DEBUG] [Thread-192903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:02:31.069 [DEBUG] [Thread-192903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] client lang: <none>
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] server lang: <none>
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] kex follows: False
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] Compression: none
2025-11-24T16:02:31.070 [DEBUG] [Thread-192903] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:02:31.086 [DEBUG] [Thread-192903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:02:31.086 [DEBUG] [Thread-192903] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:02:31.087 [DEBUG] [Thread-192903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:02:31.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:02:31.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:02:31.090 [DEBUG] [Thread-192903] [transport.py] [_log()] userauth is OK
2025-11-24T16:02:31.090 [DEBUG] [Thread-192903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:02:31.090 [DEBUG] [Thread-192903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:02:31.090 [DEBUG] [Thread-192903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:02:31.090 [DEBUG] [Thread-192903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:02:31.109 [INFO] [Thread-192903] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:02:31.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:02:31.717 [DEBUG] [Thread-192903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:02:31.717 [DEBUG] [Thread-192903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:02:31.717 [DEBUG] [Thread-192903] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:02:31.758 [DEBUG] [Thread-192903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:02:31.758 [DEBUG] [Thread-192903] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:02:31.761 [DEBUG] [Thread-192903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:02:31.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:02:31.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:02:31.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:02:31.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:02:31.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:02:31.787 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:02:31.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:02:31.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:02:31.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:02:31.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.584422 -999.00  +23.20  27.93     22   +0.80 1 1 1 1 1   888    0 22.86 64.73 ----- 21.4 27.9 200.0 31.3 27.9 -31.1 27.5 -36.0 29.3 -30.5 30.0 -28.1
2025-11-24T16:02:31.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:02:31.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:02:31.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.584422
2025-11-24T16:02:31.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:02:31.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:02:31.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:02:31.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:02:31.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:02:31.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:02:04', tmtdew=24.59, humidity=19.37, cloud=0.0, wind=27.93, temperature=22.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:01:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:02:31.790 [DEBUG] [Thread-192903] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:02:31.868 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:02:31.880 [DEBUG] [Thread-192906] [transport.py] [_log()] starting thread (client mode): 0xd07abdc0
2025-11-24T16:02:31.880 [DEBUG] [Thread-192906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:02:31.896 [DEBUG] [Thread-192906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:02:31.896 [INFO] [Thread-192906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] client lang: <none>
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] server lang: <none>
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] kex follows: False
2025-11-24T16:02:31.904 [DEBUG] [Thread-192906] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:02:31.905 [DEBUG] [Thread-192906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:02:31.905 [DEBUG] [Thread-192906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:02:31.905 [DEBUG] [Thread-192906] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:02:31.905 [DEBUG] [Thread-192906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:02:31.905 [DEBUG] [Thread-192906] [transport.py] [_log()] Compression: none
2025-11-24T16:02:31.905 [DEBUG] [Thread-192906] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:02:31.963 [DEBUG] [Thread-192906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:02:31.964 [DEBUG] [Thread-192906] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:02:31.964 [DEBUG] [Thread-192906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:02:31.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:02:31.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:02:32.022 [DEBUG] [Thread-192906] [transport.py] [_log()] userauth is OK
2025-11-24T16:02:32.022 [DEBUG] [Thread-192906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:02:32.022 [DEBUG] [Thread-192906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:02:32.022 [DEBUG] [Thread-192906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:02:32.022 [DEBUG] [Thread-192906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:02:32.042 [INFO] [Thread-192906] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:02:32.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:02:32.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:02:32.873 [DEBUG] [Thread-192906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:02:32.873 [DEBUG] [Thread-192906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:02:32.922 [DEBUG] [Thread-192906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:02:32.922 [DEBUG] [Thread-192906] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:02:32.930 [DEBUG] [Thread-192906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:02:32.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:02:32.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-11-24T16:02:32.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-11-24T16:02:32.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:02:32.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:02:32.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:02:32.962 [DEBUG] [Thread-192906] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:02:34.621 [DEBUG] [Thread-192908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:02:37.005 [DEBUG] [Thread-192909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:02:52.054 [DEBUG] [Thread-192910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:03:02.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:03:02.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:03:02.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-11-24T16:03:03.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 2, 37), 25.33, 18.04, 0.0, 34.18, 22.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:03:03.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:02:37
2025-11-24T16:03:03.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:03:04.120 [DEBUG] [Thread-192911] [transport.py] [_log()] starting thread (client mode): 0xd0700250
2025-11-24T16:03:04.120 [DEBUG] [Thread-192911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:03:04.137 [DEBUG] [Thread-192911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:03:04.137 [INFO] [Thread-192911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:03:04.141 [DEBUG] [Thread-192911] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:03:04.141 [DEBUG] [Thread-192911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:03:04.141 [DEBUG] [Thread-192911] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:03:04.141 [DEBUG] [Thread-192911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:03:04.141 [DEBUG] [Thread-192911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:03:04.141 [DEBUG] [Thread-192911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:03:04.141 [DEBUG] [Thread-192911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:03:04.141 [DEBUG] [Thread-192911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:03:04.142 [DEBUG] [Thread-192911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:03:04.142 [DEBUG] [Thread-192911] [transport.py] [_log()] client lang: <none>
2025-11-24T16:03:04.142 [DEBUG] [Thread-192911] [transport.py] [_log()] server lang: <none>
2025-11-24T16:03:04.142 [DEBUG] [Thread-192911] [transport.py] [_log()] kex follows: False
2025-11-24T16:03:04.142 [DEBUG] [Thread-192911] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:03:04.142 [DEBUG] [Thread-192911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:03:04.142 [DEBUG] [Thread-192911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:03:04.142 [DEBUG] [Thread-192911] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:03:04.143 [DEBUG] [Thread-192911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:03:04.143 [DEBUG] [Thread-192911] [transport.py] [_log()] Compression: none
2025-11-24T16:03:04.143 [DEBUG] [Thread-192911] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:03:04.169 [DEBUG] [Thread-192911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:03:04.170 [DEBUG] [Thread-192911] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:03:04.171 [DEBUG] [Thread-192911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:03:04.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:03:04.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:03:04.175 [DEBUG] [Thread-192911] [transport.py] [_log()] userauth is OK
2025-11-24T16:03:04.176 [DEBUG] [Thread-192911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:03:04.176 [DEBUG] [Thread-192911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:03:04.176 [DEBUG] [Thread-192911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:03:04.176 [DEBUG] [Thread-192911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:03:04.212 [INFO] [Thread-192911] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:03:04.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:03:04.853 [DEBUG] [Thread-192911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:03:04.862 [DEBUG] [Thread-192911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:03:04.863 [DEBUG] [Thread-192911] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:03:04.894 [DEBUG] [Thread-192911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:03:04.894 [DEBUG] [Thread-192911] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:03:04.897 [DEBUG] [Thread-192911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:03:04.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:03:04.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:03:04.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:03:04.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:03:04.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:03:04.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:03:04.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:03:04.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:03:04.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:03:04.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.584769 -999.00  +22.80  24.25     23   +0.70 1 1 1 1 1   888    0 23.01 68.81 ----- 24.7 24.2 192.2 32.2 27.7 -30.8 27.3 -31.2 29.1 -28.3 29.9 -29.3
2025-11-24T16:03:04.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:03:04.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:03:04.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.584769
2025-11-24T16:03:04.925 [DEBUG] [Thread-192911] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:03:04.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:03:04.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:03:04.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:03:04.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:03:04.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:03:04.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:02:37', tmtdew=25.33, humidity=18.04, cloud=0.0, wind=34.18, temperature=22.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:02:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:03:05.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:03:05.016 [DEBUG] [Thread-192914] [transport.py] [_log()] starting thread (client mode): 0xd07000a0
2025-11-24T16:03:05.017 [DEBUG] [Thread-192914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:03:05.031 [DEBUG] [Thread-192914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:03:05.031 [INFO] [Thread-192914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:03:05.038 [DEBUG] [Thread-192914] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:03:05.038 [DEBUG] [Thread-192914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:03:05.038 [DEBUG] [Thread-192914] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] client lang: <none>
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] server lang: <none>
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] kex follows: False
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] Compression: none
2025-11-24T16:03:05.039 [DEBUG] [Thread-192914] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:03:05.094 [DEBUG] [Thread-192914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:03:05.095 [DEBUG] [Thread-192914] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:03:05.095 [DEBUG] [Thread-192914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:03:05.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:03:05.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:03:05.151 [DEBUG] [Thread-192914] [transport.py] [_log()] userauth is OK
2025-11-24T16:03:05.151 [DEBUG] [Thread-192914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:03:05.151 [DEBUG] [Thread-192914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:03:05.151 [DEBUG] [Thread-192914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:03:05.151 [DEBUG] [Thread-192914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:03:05.165 [INFO] [Thread-192914] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:03:05.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:03:05.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:03:05.992 [DEBUG] [Thread-192914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:03:06.001 [DEBUG] [Thread-192914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:03:06.040 [DEBUG] [Thread-192914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:03:06.040 [DEBUG] [Thread-192914] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:03:06.048 [DEBUG] [Thread-192914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:03:06.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:03:06.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:03: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') -> 00000000
2025-11-24T16:03:06.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:03:06.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:03:06.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:03:06.081 [DEBUG] [Thread-192914] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:03:07.098 [DEBUG] [Thread-192916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:03:22.138 [DEBUG] [Thread-192917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:03:34.924 [DEBUG] [Thread-192918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:03:36.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:03:36.091 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:03:36.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-11-24T16:03:36.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 3, 9), 25.56, 17.73, 0.0, 35.66, 22.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:03:36.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:03:09
2025-11-24T16:03:37.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:03:37.164 [DEBUG] [Thread-192919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:03:37.230 [DEBUG] [Thread-192920] [transport.py] [_log()] starting thread (client mode): 0xd31b3a90
2025-11-24T16:03:37.230 [DEBUG] [Thread-192920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:03:37.250 [DEBUG] [Thread-192920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:03:37.250 [INFO] [Thread-192920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:03:37.253 [DEBUG] [Thread-192920] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:03:37.253 [DEBUG] [Thread-192920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:03:37.253 [DEBUG] [Thread-192920] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:03:37.253 [DEBUG] [Thread-192920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] client lang: <none>
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] server lang: <none>
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] kex follows: False
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:03:37.254 [DEBUG] [Thread-192920] [transport.py] [_log()] Compression: none
2025-11-24T16:03:37.255 [DEBUG] [Thread-192920] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:03:37.269 [DEBUG] [Thread-192920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:03:37.270 [DEBUG] [Thread-192920] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:03:37.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:03:37.271 [DEBUG] [Thread-192920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:03:37.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:03:37.272 [DEBUG] [Thread-192920] [transport.py] [_log()] userauth is OK
2025-11-24T16:03:37.272 [DEBUG] [Thread-192920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:03:37.272 [DEBUG] [Thread-192920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:03:37.273 [DEBUG] [Thread-192920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:03:37.273 [DEBUG] [Thread-192920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:03:37.285 [INFO] [Thread-192920] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:03:37.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:03:37.908 [DEBUG] [Thread-192920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:03:37.908 [DEBUG] [Thread-192920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:03:37.909 [DEBUG] [Thread-192920] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:03:37.949 [DEBUG] [Thread-192920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:03:37.949 [DEBUG] [Thread-192920] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:03:37.951 [DEBUG] [Thread-192920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:03:37.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:03:37.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:03:37.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:03:37.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:03:37.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:03:37.970 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:03:37.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:03:37.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:03:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:03:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.585116 -999.00  +22.80  27.15     22   +0.50 1 1 1 1 1   888    0 23.64 77.60 ----- 23.5 27.1 181.4 34.0 27.6 -30.1 27.2 -31.5 29.0 -27.5 29.6 -31.3
2025-11-24T16:03:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:03:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:03:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.585116
2025-11-24T16:03:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:03:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:03:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:03:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:03:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:03:37.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:03:09', tmtdew=25.56, humidity=17.73, cloud=0.0, wind=35.66, temperature=22.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:02:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:03:37.973 [DEBUG] [Thread-192920] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:03:38.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:03:38.067 [DEBUG] [Thread-192923] [transport.py] [_log()] starting thread (client mode): 0xd31b2d40
2025-11-24T16:03:38.067 [DEBUG] [Thread-192923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:03:38.083 [DEBUG] [Thread-192923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:03:38.084 [INFO] [Thread-192923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:03:38.091 [DEBUG] [Thread-192923] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:03:38.091 [DEBUG] [Thread-192923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:03:38.091 [DEBUG] [Thread-192923] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:03:38.091 [DEBUG] [Thread-192923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:03:38.091 [DEBUG] [Thread-192923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:03:38.091 [DEBUG] [Thread-192923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:03:38.091 [DEBUG] [Thread-192923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:03:38.091 [DEBUG] [Thread-192923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:03:38.091 [DEBUG] [Thread-192923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:03:38.092 [DEBUG] [Thread-192923] [transport.py] [_log()] client lang: <none>
2025-11-24T16:03:38.092 [DEBUG] [Thread-192923] [transport.py] [_log()] server lang: <none>
2025-11-24T16:03:38.092 [DEBUG] [Thread-192923] [transport.py] [_log()] kex follows: False
2025-11-24T16:03:38.092 [DEBUG] [Thread-192923] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:03:38.092 [DEBUG] [Thread-192923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:03:38.092 [DEBUG] [Thread-192923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:03:38.092 [DEBUG] [Thread-192923] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:03:38.092 [DEBUG] [Thread-192923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:03:38.092 [DEBUG] [Thread-192923] [transport.py] [_log()] Compression: none
2025-11-24T16:03:38.092 [DEBUG] [Thread-192923] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:03:38.152 [DEBUG] [Thread-192923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:03:38.152 [DEBUG] [Thread-192923] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:03:38.153 [DEBUG] [Thread-192923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:03:38.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:03:38.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:03:38.208 [DEBUG] [Thread-192923] [transport.py] [_log()] userauth is OK
2025-11-24T16:03:38.208 [DEBUG] [Thread-192923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:03:38.208 [DEBUG] [Thread-192923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:03:38.209 [DEBUG] [Thread-192923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:03:38.209 [DEBUG] [Thread-192923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:03:38.228 [INFO] [Thread-192923] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:03:38.229 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:03:38.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:03:39.076 [DEBUG] [Thread-192923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:03:39.076 [DEBUG] [Thread-192923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:03:39.124 [DEBUG] [Thread-192923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:03:39.124 [DEBUG] [Thread-192923] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:03:39.132 [DEBUG] [Thread-192923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:03:39.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:03:39.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-11-24T16:03:39.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-11-24T16:03:39.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:03:39.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:03:39.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:03:39.165 [DEBUG] [Thread-192923] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:03:52.207 [DEBUG] [Thread-192925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:04:07.272 [DEBUG] [Thread-192926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:04:09.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:04:09.195 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:04:09.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-11-24T16:04:10.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 3, 42), 25.21, 18.04, 0.0, 27.56, 21.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:04:10.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:03:42
2025-11-24T16:04:10.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:04:10.311 [DEBUG] [Thread-192927] [transport.py] [_log()] starting thread (client mode): 0xd07a8df0
2025-11-24T16:04:10.311 [DEBUG] [Thread-192927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:04:10.331 [DEBUG] [Thread-192927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:04:10.331 [INFO] [Thread-192927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] client lang: <none>
2025-11-24T16:04:10.334 [DEBUG] [Thread-192927] [transport.py] [_log()] server lang: <none>
2025-11-24T16:04:10.335 [DEBUG] [Thread-192927] [transport.py] [_log()] kex follows: False
2025-11-24T16:04:10.335 [DEBUG] [Thread-192927] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:04:10.335 [DEBUG] [Thread-192927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:04:10.335 [DEBUG] [Thread-192927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:04:10.335 [DEBUG] [Thread-192927] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:04:10.335 [DEBUG] [Thread-192927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:04:10.335 [DEBUG] [Thread-192927] [transport.py] [_log()] Compression: none
2025-11-24T16:04:10.335 [DEBUG] [Thread-192927] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:04:10.351 [DEBUG] [Thread-192927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:04:10.352 [DEBUG] [Thread-192927] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:04:10.352 [DEBUG] [Thread-192927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:04:10.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:04:10.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:04:10.353 [DEBUG] [Thread-192927] [transport.py] [_log()] userauth is OK
2025-11-24T16:04:10.353 [DEBUG] [Thread-192927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:04:10.353 [DEBUG] [Thread-192927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:04:10.353 [DEBUG] [Thread-192927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:04:10.353 [DEBUG] [Thread-192927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:04:10.363 [INFO] [Thread-192927] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:04:10.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:04:10.948 [DEBUG] [Thread-192927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:04:10.949 [DEBUG] [Thread-192927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:04:10.949 [DEBUG] [Thread-192927] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:04:10.989 [DEBUG] [Thread-192927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:04:10.989 [DEBUG] [Thread-192927] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:04:10.991 [DEBUG] [Thread-192927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:04:11.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:04:11.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:04:11.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:04:11.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:04:11.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:04:11.010 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:04:11.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:04:11.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:04:11.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:04:11.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.585463 -999.00  +22.50  23.36     23   +0.50 1 1 1 1 1   888    0 23.94 76.19 ----- 27.4 23.4 190.6 34.1 27.4 -31.1 26.9 -33.4 28.9 -28.8 29.4 -30.4
2025-11-24T16:04:11.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:04:11.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:04:11.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.585463
2025-11-24T16:04:11.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:04:11.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:04:11.012 [DEBUG] [Thread-192927] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:04:11.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:04:11.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:04:11.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:04:11.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:03:42', tmtdew=25.21, humidity=18.04, cloud=0.0, wind=27.56, temperature=21.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:03:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:04:11.116 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:04:11.128 [DEBUG] [Thread-192930] [transport.py] [_log()] starting thread (client mode): 0xd31b03a0
2025-11-24T16:04:11.128 [DEBUG] [Thread-192930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:04:11.142 [DEBUG] [Thread-192930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:04:11.142 [INFO] [Thread-192930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:04:11.150 [DEBUG] [Thread-192930] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:04:11.150 [DEBUG] [Thread-192930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:04:11.150 [DEBUG] [Thread-192930] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:04:11.150 [DEBUG] [Thread-192930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] client lang: <none>
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] server lang: <none>
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] kex follows: False
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] Compression: none
2025-11-24T16:04:11.151 [DEBUG] [Thread-192930] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:04:11.207 [DEBUG] [Thread-192930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:04:11.209 [DEBUG] [Thread-192930] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:04:11.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:04:11.210 [DEBUG] [Thread-192930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:04:11.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:04:11.263 [DEBUG] [Thread-192930] [transport.py] [_log()] userauth is OK
2025-11-24T16:04:11.263 [DEBUG] [Thread-192930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:04:11.263 [DEBUG] [Thread-192930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:04:11.263 [DEBUG] [Thread-192930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:04:11.263 [DEBUG] [Thread-192930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:04:11.280 [INFO] [Thread-192930] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:04:11.280 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:04:11.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:04:12.091 [DEBUG] [Thread-192930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:04:12.091 [DEBUG] [Thread-192930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:04:12.139 [DEBUG] [Thread-192930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:04:12.139 [DEBUG] [Thread-192930] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:04:12.148 [DEBUG] [Thread-192930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:04:12.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:04:12.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:04: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-11-24T16:04:12.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:04:12.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:04:12.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:04:12.179 [DEBUG] [Thread-192930] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:04:22.307 [DEBUG] [Thread-192932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:04:35.086 [DEBUG] [Thread-192933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:04:37.356 [DEBUG] [Thread-192934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:04:42.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:04:42.202 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:04: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-11-24T16:04:42.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 4, 14), 25.09, 18.17, 0.0, 30.44, 21.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:04:42.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:04:14
2025-11-24T16:04:43.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:04:43.284 [DEBUG] [Thread-192935] [transport.py] [_log()] starting thread (client mode): 0xd0703fd0
2025-11-24T16:04:43.284 [DEBUG] [Thread-192935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:04:43.301 [DEBUG] [Thread-192935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:04:43.301 [INFO] [Thread-192935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] client lang: <none>
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] server lang: <none>
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] kex follows: False
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:04:43.304 [DEBUG] [Thread-192935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:04:43.305 [DEBUG] [Thread-192935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:04:43.305 [DEBUG] [Thread-192935] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:04:43.305 [DEBUG] [Thread-192935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:04:43.305 [DEBUG] [Thread-192935] [transport.py] [_log()] Compression: none
2025-11-24T16:04:43.305 [DEBUG] [Thread-192935] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:04:43.313 [DEBUG] [Thread-192935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:04:43.313 [DEBUG] [Thread-192935] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:04:43.314 [DEBUG] [Thread-192935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:04:43.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:04:43.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:04:43.315 [DEBUG] [Thread-192935] [transport.py] [_log()] userauth is OK
2025-11-24T16:04:43.316 [DEBUG] [Thread-192935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:04:43.316 [DEBUG] [Thread-192935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:04:43.316 [DEBUG] [Thread-192935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:04:43.316 [DEBUG] [Thread-192935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:04:43.329 [INFO] [Thread-192935] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:04:43.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:04:44.004 [DEBUG] [Thread-192935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:04:44.005 [DEBUG] [Thread-192935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:04:44.005 [DEBUG] [Thread-192935] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:04:44.045 [DEBUG] [Thread-192935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:04:44.045 [DEBUG] [Thread-192935] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:04:44.048 [DEBUG] [Thread-192935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:04:44.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:04:44.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:04:44.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:04:44.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:04:44.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:04:44.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:04:44.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:04:44.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:04:44.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:04:44.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.586158 -999.00  +21.90  17.82     24   +0.50 1 1 1 1 1   888    0 23.45 69.77 ----- 22.2 17.8 179.8 26.6 27.2 -30.6 26.6 -30.0 28.6 -26.9 29.2 -28.9
2025-11-24T16:04:44.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:04:44.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:04:44.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.586158
2025-11-24T16:04:44.076 [DEBUG] [Thread-192935] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:04:44.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:04:44.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:04:44.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:04:44.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:04:44.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:04:44.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:04:14', tmtdew=25.09, humidity=18.17, cloud=0.0, wind=30.44, temperature=21.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:04:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:04:44.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:04:44.161 [DEBUG] [Thread-192938] [transport.py] [_log()] starting thread (client mode): 0xd0703eb0
2025-11-24T16:04:44.161 [DEBUG] [Thread-192938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:04:44.178 [DEBUG] [Thread-192938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:04:44.178 [INFO] [Thread-192938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] client lang: <none>
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] server lang: <none>
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] kex follows: False
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] Compression: none
2025-11-24T16:04:44.185 [DEBUG] [Thread-192938] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:04:44.242 [DEBUG] [Thread-192938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:04:44.242 [DEBUG] [Thread-192938] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:04:44.242 [DEBUG] [Thread-192938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:04:44.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:04:44.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:04:44.299 [DEBUG] [Thread-192938] [transport.py] [_log()] userauth is OK
2025-11-24T16:04:44.299 [DEBUG] [Thread-192938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:04:44.299 [DEBUG] [Thread-192938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:04:44.299 [DEBUG] [Thread-192938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:04:44.299 [DEBUG] [Thread-192938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:04:44.313 [INFO] [Thread-192938] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:04:44.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:04:44.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:04:45.156 [DEBUG] [Thread-192938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:04:45.156 [DEBUG] [Thread-192938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:04:45.205 [DEBUG] [Thread-192938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:04:45.205 [DEBUG] [Thread-192938] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:04:45.215 [DEBUG] [Thread-192938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:04:45.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:04:45.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:04:45.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:04:45.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:04:45.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:04:45.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:04:45.252 [DEBUG] [Thread-192938] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:04:52.387 [DEBUG] [Thread-192940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:05:07.435 [DEBUG] [Thread-192941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:05:15.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:05:15.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:05:15.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:05:16.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 4, 47), 24.63, 18.92, 0.0, 22.62, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:05:16.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:04:47
2025-11-24T16:05:16.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:05:16.403 [DEBUG] [Thread-192942] [transport.py] [_log()] starting thread (client mode): 0xd07031c0
2025-11-24T16:05:16.404 [DEBUG] [Thread-192942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:05:16.424 [DEBUG] [Thread-192942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:05:16.424 [INFO] [Thread-192942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] client lang: <none>
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] server lang: <none>
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] kex follows: False
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] Compression: none
2025-11-24T16:05:16.427 [DEBUG] [Thread-192942] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:05:16.441 [DEBUG] [Thread-192942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:05:16.441 [DEBUG] [Thread-192942] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:05:16.442 [DEBUG] [Thread-192942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:05:16.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:05:16.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:05:16.485 [DEBUG] [Thread-192942] [transport.py] [_log()] userauth is OK
2025-11-24T16:05:16.485 [DEBUG] [Thread-192942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:05:16.485 [DEBUG] [Thread-192942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:05:16.485 [DEBUG] [Thread-192942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:05:16.485 [DEBUG] [Thread-192942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:05:16.500 [INFO] [Thread-192942] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:05:16.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:05:17.168 [DEBUG] [Thread-192942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:05:17.168 [DEBUG] [Thread-192942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:05:17.168 [DEBUG] [Thread-192942] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:05:17.209 [DEBUG] [Thread-192942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:05:17.209 [DEBUG] [Thread-192942] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:05:17.211 [DEBUG] [Thread-192942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:05:17.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:05:17.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:05:17.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:05:17.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:05:17.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:05:17.227 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:05:17.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:05:17.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:05:17.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:05:17.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.586505 -999.00  +22.00  19.38     24   +0.70 1 1 1 1 1   888    0 23.07 73.32 ----- 19.5 19.4 203.0 24.6 27.2 -29.0 26.6 -28.5 28.6 -27.5 29.1 -28.6
2025-11-24T16:05:17.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:05:17.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:05:17.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.586505
2025-11-24T16:05:17.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:05:17.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:05:17.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:05:17.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:05:17.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:05:17.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:04:47', tmtdew=24.63, humidity=18.92, cloud=0.0, wind=22.62, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:04:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:05:17.228 [DEBUG] [Thread-192942] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:05:17.303 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:05:17.312 [DEBUG] [Thread-192945] [transport.py] [_log()] starting thread (client mode): 0xd0702e60
2025-11-24T16:05:17.312 [DEBUG] [Thread-192945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:05:17.326 [DEBUG] [Thread-192945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:05:17.326 [INFO] [Thread-192945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:05:17.333 [DEBUG] [Thread-192945] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:05:17.333 [DEBUG] [Thread-192945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:05:17.333 [DEBUG] [Thread-192945] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] client lang: <none>
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] server lang: <none>
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] kex follows: False
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] Compression: none
2025-11-24T16:05:17.334 [DEBUG] [Thread-192945] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:05:17.390 [DEBUG] [Thread-192945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:05:17.390 [DEBUG] [Thread-192945] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:05:17.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:05:17.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:05:17.391 [DEBUG] [Thread-192945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:05:17.447 [DEBUG] [Thread-192945] [transport.py] [_log()] userauth is OK
2025-11-24T16:05:17.447 [DEBUG] [Thread-192945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:05:17.447 [DEBUG] [Thread-192945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:05:17.447 [DEBUG] [Thread-192945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:05:17.447 [DEBUG] [Thread-192945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:05:17.465 [INFO] [Thread-192945] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:05:17.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:05:17.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:05:18.283 [DEBUG] [Thread-192945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:05:18.283 [DEBUG] [Thread-192945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:05:18.331 [DEBUG] [Thread-192945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:05:18.331 [DEBUG] [Thread-192945] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:05:18.339 [DEBUG] [Thread-192945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:05:18.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:05:18.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:05:18.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-11-24T16:05:18.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:05:18.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:05:18.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:05:18.371 [DEBUG] [Thread-192945] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:05:22.460 [DEBUG] [Thread-192947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:05:35.311 [DEBUG] [Thread-192948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:05:37.498 [DEBUG] [Thread-192949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:05:48.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:05:48.424 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:05:48.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-11-24T16:05:49.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 5, 19), 24.51, 19.07, 0.0, 20.57, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:05:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:05:19
2025-11-24T16:05:50.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:05:50.344 [DEBUG] [Thread-192950] [transport.py] [_log()] starting thread (client mode): 0xd0702560
2025-11-24T16:05:50.345 [DEBUG] [Thread-192950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:05:50.354 [DEBUG] [Thread-192950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:05:50.354 [INFO] [Thread-192950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:05:50.359 [DEBUG] [Thread-192950] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:05:50.359 [DEBUG] [Thread-192950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:05:50.359 [DEBUG] [Thread-192950] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:05:50.359 [DEBUG] [Thread-192950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:05:50.359 [DEBUG] [Thread-192950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:05:50.359 [DEBUG] [Thread-192950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:05:50.359 [DEBUG] [Thread-192950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:05:50.359 [DEBUG] [Thread-192950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:05:50.359 [DEBUG] [Thread-192950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:05:50.359 [DEBUG] [Thread-192950] [transport.py] [_log()] client lang: <none>
2025-11-24T16:05:50.360 [DEBUG] [Thread-192950] [transport.py] [_log()] server lang: <none>
2025-11-24T16:05:50.360 [DEBUG] [Thread-192950] [transport.py] [_log()] kex follows: False
2025-11-24T16:05:50.360 [DEBUG] [Thread-192950] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:05:50.360 [DEBUG] [Thread-192950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:05:50.360 [DEBUG] [Thread-192950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:05:50.360 [DEBUG] [Thread-192950] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:05:50.360 [DEBUG] [Thread-192950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:05:50.360 [DEBUG] [Thread-192950] [transport.py] [_log()] Compression: none
2025-11-24T16:05:50.360 [DEBUG] [Thread-192950] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:05:50.392 [DEBUG] [Thread-192950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:05:50.396 [DEBUG] [Thread-192950] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:05:50.398 [DEBUG] [Thread-192950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:05:50.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:05:50.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:05:50.401 [DEBUG] [Thread-192950] [transport.py] [_log()] userauth is OK
2025-11-24T16:05:50.401 [DEBUG] [Thread-192950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:05:50.401 [DEBUG] [Thread-192950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:05:50.401 [DEBUG] [Thread-192950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:05:50.401 [DEBUG] [Thread-192950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:05:50.413 [INFO] [Thread-192950] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:05:50.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:05:51.176 [DEBUG] [Thread-192950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:05:51.177 [DEBUG] [Thread-192950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:05:51.177 [DEBUG] [Thread-192950] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:05:51.217 [DEBUG] [Thread-192950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:05:51.217 [DEBUG] [Thread-192950] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:05:51.218 [DEBUG] [Thread-192950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:05:51.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:05:51.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:05:51.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:05:51.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:05:51.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:05:51.235 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:05:51.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:05:51.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:05:51.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:05:51.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.586852 -999.00  +22.10  19.94     24   +0.70 1 1 1 1 1   888    0 23.02 72.04 ----- 20.4 19.9 196.4 24.6 27.2 -28.5 26.7 -29.8 28.6 -26.6 29.2 -28.7
2025-11-24T16:05:51.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:05:51.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:05:51.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.586852
2025-11-24T16:05:51.241 [DEBUG] [Thread-192950] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:05:51.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:05:51.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:05:51.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:05:51.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:05:51.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:05:51.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:05:19', tmtdew=24.51, humidity=19.07, cloud=0.0, wind=20.57, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:05:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:05:51.334 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:05:51.343 [DEBUG] [Thread-192953] [transport.py] [_log()] starting thread (client mode): 0xd31b39a0
2025-11-24T16:05:51.343 [DEBUG] [Thread-192953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:05:51.357 [DEBUG] [Thread-192953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:05:51.357 [INFO] [Thread-192953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] client lang: <none>
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] server lang: <none>
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] kex follows: False
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] Compression: none
2025-11-24T16:05:51.365 [DEBUG] [Thread-192953] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:05:51.422 [DEBUG] [Thread-192953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:05:51.422 [DEBUG] [Thread-192953] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:05:51.422 [DEBUG] [Thread-192953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:05:51.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:05:51.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:05:51.479 [DEBUG] [Thread-192953] [transport.py] [_log()] userauth is OK
2025-11-24T16:05:51.479 [DEBUG] [Thread-192953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:05:51.479 [DEBUG] [Thread-192953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:05:51.479 [DEBUG] [Thread-192953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:05:51.479 [DEBUG] [Thread-192953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:05:51.493 [INFO] [Thread-192953] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:05:51.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:05:51.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:05:52.337 [DEBUG] [Thread-192953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:05:52.337 [DEBUG] [Thread-192953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:05:52.386 [DEBUG] [Thread-192953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:05:52.386 [DEBUG] [Thread-192953] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:05:52.394 [DEBUG] [Thread-192953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:05:52.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:05:52.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-11-24T16:05:52.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-11-24T16:05:52.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:05:52.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:05:52.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:05:52.428 [DEBUG] [Thread-192953] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:05:52.570 [DEBUG] [Thread-192955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:06:07.747 [DEBUG] [Thread-192956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:06:22.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:06:22.440 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:06: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-11-24T16:06:22.803 [DEBUG] [Thread-192957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:06:23.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 5, 53), 24.79, 18.89, 0.0, 25.8, 22.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:06:23.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:05:53
2025-11-24T16:06:24.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:06:24.266 [DEBUG] [Thread-192958] [transport.py] [_log()] starting thread (client mode): 0xd3163be0
2025-11-24T16:06:24.267 [DEBUG] [Thread-192958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:06:24.276 [DEBUG] [Thread-192958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:06:24.276 [INFO] [Thread-192958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] client lang: <none>
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] server lang: <none>
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] kex follows: False
2025-11-24T16:06:24.280 [DEBUG] [Thread-192958] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:06:24.281 [DEBUG] [Thread-192958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:06:24.281 [DEBUG] [Thread-192958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:06:24.281 [DEBUG] [Thread-192958] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:06:24.281 [DEBUG] [Thread-192958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:06:24.281 [DEBUG] [Thread-192958] [transport.py] [_log()] Compression: none
2025-11-24T16:06:24.281 [DEBUG] [Thread-192958] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:06:24.299 [DEBUG] [Thread-192958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:06:24.302 [DEBUG] [Thread-192958] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:06:24.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:06:24.304 [DEBUG] [Thread-192958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:06:24.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:06:24.341 [DEBUG] [Thread-192958] [transport.py] [_log()] userauth is OK
2025-11-24T16:06:24.341 [DEBUG] [Thread-192958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:06:24.341 [DEBUG] [Thread-192958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:06:24.341 [DEBUG] [Thread-192958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:06:24.341 [DEBUG] [Thread-192958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:06:24.374 [INFO] [Thread-192958] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:06:24.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:06:24.963 [DEBUG] [Thread-192958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:06:24.963 [DEBUG] [Thread-192958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:06:24.964 [DEBUG] [Thread-192958] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:06:25.004 [DEBUG] [Thread-192958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:06:25.004 [DEBUG] [Thread-192958] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:06:25.009 [DEBUG] [Thread-192958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:06:25.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:06:25.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:06:25.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:06:25.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:06:25.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:06:25.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:06:25.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:06:25.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:06:25.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:06:25.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.587547 -999.00  +22.10  26.33     24   +0.90 1 1 1 1 1   888    0 23.50 68.76 ----- 22.3 26.3 163.2 34.7 27.1 -28.9 26.9 -28.9 28.5 -27.6 29.1 -30.6
2025-11-24T16:06:25.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:06:25.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:06:25.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.587547
2025-11-24T16:06:25.032 [DEBUG] [Thread-192958] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:06:25.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:06:25.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:06:25.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:06:25.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:06:25.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:06:25.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:05:53', tmtdew=24.79, humidity=18.89, cloud=0.0, wind=25.8, temperature=22.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:06:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:06:25.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:06:25.131 [DEBUG] [Thread-192961] [transport.py] [_log()] starting thread (client mode): 0xd3160850
2025-11-24T16:06:25.131 [DEBUG] [Thread-192961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:06:25.145 [DEBUG] [Thread-192961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:06:25.146 [INFO] [Thread-192961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] client lang: <none>
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] server lang: <none>
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] kex follows: False
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] Compression: none
2025-11-24T16:06:25.153 [DEBUG] [Thread-192961] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:06:25.213 [DEBUG] [Thread-192961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:06:25.213 [DEBUG] [Thread-192961] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:06:25.214 [DEBUG] [Thread-192961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:06:25.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:06:25.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:06:25.271 [DEBUG] [Thread-192961] [transport.py] [_log()] userauth is OK
2025-11-24T16:06:25.271 [DEBUG] [Thread-192961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:06:25.271 [DEBUG] [Thread-192961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:06:25.271 [DEBUG] [Thread-192961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:06:25.271 [DEBUG] [Thread-192961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:06:25.288 [INFO] [Thread-192961] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:06:25.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:06:25.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:06:26.144 [DEBUG] [Thread-192961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:06:26.144 [DEBUG] [Thread-192961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:06:26.194 [DEBUG] [Thread-192961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:06:26.194 [DEBUG] [Thread-192961] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:06:26.202 [DEBUG] [Thread-192961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:06:26.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:06:26.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-11-24T16:06:26.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:06:26.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:06:26.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:06:26.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:06:26.236 [DEBUG] [Thread-192961] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:06:35.558 [DEBUG] [Thread-192963 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:06:37.858 [DEBUG] [Thread-192964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:06:52.975 [DEBUG] [Thread-192965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:06:56.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:06:56.264 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:06:56.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-11-24T16:06:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 6, 25), 24.84, 18.85, 0.0, 28.9, 22.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:06:57.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:06:25
2025-11-24T16:06:58.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:06:58.226 [DEBUG] [Thread-192966] [transport.py] [_log()] starting thread (client mode): 0xd3134730
2025-11-24T16:06:58.227 [DEBUG] [Thread-192966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:06:58.240 [DEBUG] [Thread-192966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:06:58.240 [INFO] [Thread-192966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] client lang: <none>
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] server lang: <none>
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] kex follows: False
2025-11-24T16:06:58.245 [DEBUG] [Thread-192966] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:06:58.246 [DEBUG] [Thread-192966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:06:58.246 [DEBUG] [Thread-192966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:06:58.246 [DEBUG] [Thread-192966] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:06:58.246 [DEBUG] [Thread-192966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:06:58.246 [DEBUG] [Thread-192966] [transport.py] [_log()] Compression: none
2025-11-24T16:06:58.246 [DEBUG] [Thread-192966] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:06:58.279 [DEBUG] [Thread-192966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:06:58.284 [DEBUG] [Thread-192966] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:06:58.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:06:58.288 [DEBUG] [Thread-192966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:06:58.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:06:58.291 [DEBUG] [Thread-192966] [transport.py] [_log()] userauth is OK
2025-11-24T16:06:58.291 [DEBUG] [Thread-192966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:06:58.292 [DEBUG] [Thread-192966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:06:58.292 [DEBUG] [Thread-192966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:06:58.292 [DEBUG] [Thread-192966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:06:58.319 [INFO] [Thread-192966] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:06:58.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:06:58.926 [DEBUG] [Thread-192966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:06:58.926 [DEBUG] [Thread-192966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:06:58.927 [DEBUG] [Thread-192966] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:06:58.967 [DEBUG] [Thread-192966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:06:58.967 [DEBUG] [Thread-192966] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:06:58.971 [DEBUG] [Thread-192966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:06:58.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:06:58.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:06:58.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:06:58.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:06:58.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:06:58.995 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:06:58.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:06:58.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:06:58.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:06:58.998 [DEBUG] [Thread-192966] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:06:58.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.587894 -999.00  +21.90  21.93     24   +0.90 1 1 1 1 1   888    0 22.56 67.48 ----- 23.2 21.9 175.6 30.4 27.2 -29.2 26.6 -33.2 28.4 -27.4 29.1 -28.9
2025-11-24T16:06:58.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:06:58.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:06:58.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.587894
2025-11-24T16:06:59.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:06:59.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:06:59.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:06:59.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:06:59.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:06:59.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:06:25', tmtdew=24.84, humidity=18.85, cloud=0.0, wind=28.9, temperature=22.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:06:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:06:59.112 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:06:59.125 [DEBUG] [Thread-192969] [transport.py] [_log()] starting thread (client mode): 0xd3134c10
2025-11-24T16:06:59.125 [DEBUG] [Thread-192969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:06:59.140 [DEBUG] [Thread-192969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:06:59.140 [INFO] [Thread-192969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] client lang: <none>
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] server lang: <none>
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] kex follows: False
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:06:59.148 [DEBUG] [Thread-192969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:06:59.149 [DEBUG] [Thread-192969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:06:59.149 [DEBUG] [Thread-192969] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:06:59.149 [DEBUG] [Thread-192969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:06:59.149 [DEBUG] [Thread-192969] [transport.py] [_log()] Compression: none
2025-11-24T16:06:59.149 [DEBUG] [Thread-192969] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:06:59.214 [DEBUG] [Thread-192969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:06:59.214 [DEBUG] [Thread-192969] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:06:59.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:06:59.215 [DEBUG] [Thread-192969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:06:59.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:06:59.284 [DEBUG] [Thread-192969] [transport.py] [_log()] userauth is OK
2025-11-24T16:06:59.284 [DEBUG] [Thread-192969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:06:59.284 [DEBUG] [Thread-192969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:06:59.284 [DEBUG] [Thread-192969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:06:59.284 [DEBUG] [Thread-192969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:06:59.311 [INFO] [Thread-192969] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:06:59.311 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:06:59.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:07:00.181 [DEBUG] [Thread-192969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:07:00.182 [DEBUG] [Thread-192969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:07:00.229 [DEBUG] [Thread-192969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:07:00.229 [DEBUG] [Thread-192969] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:07:00.238 [DEBUG] [Thread-192969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:07:00.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:07:00.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:07:00.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-11-24T16:07:00.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:07:00.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:07:00.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:07:00.285 [DEBUG] [Thread-192969] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:07:08.036 [DEBUG] [Thread-192971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:07:23.207 [DEBUG] [Thread-192972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:07:30.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:07:30.309 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:07:30.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-11-24T16:07:31.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 6, 59), 25.28, 18.31, 0.0, 31.9, 22.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:07:31.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:06:59
2025-11-24T16:07:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:07:31.925 [DEBUG] [Thread-192973] [transport.py] [_log()] starting thread (client mode): 0xd31b1810
2025-11-24T16:07:31.926 [DEBUG] [Thread-192973] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:07:31.930 [DEBUG] [Thread-192973] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:07:31.931 [INFO] [Thread-192973] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:07:31.935 [DEBUG] [Thread-192973] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:07:31.935 [DEBUG] [Thread-192973] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:07:31.935 [DEBUG] [Thread-192973] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:07:31.935 [DEBUG] [Thread-192973] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:07:31.935 [DEBUG] [Thread-192973] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:07:31.935 [DEBUG] [Thread-192973] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:07:31.935 [DEBUG] [Thread-192973] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:07:31.935 [DEBUG] [Thread-192973] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] client lang: <none>
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] server lang: <none>
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] kex follows: False
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] Compression: none
2025-11-24T16:07:31.936 [DEBUG] [Thread-192973] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:07:31.963 [DEBUG] [Thread-192973] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:07:31.970 [DEBUG] [Thread-192973] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:07:31.972 [DEBUG] [Thread-192973] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:07:31.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:07:31.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:07:31.976 [DEBUG] [Thread-192973] [transport.py] [_log()] userauth is OK
2025-11-24T16:07:31.977 [DEBUG] [Thread-192973] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:07:31.977 [DEBUG] [Thread-192973] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:07:31.977 [DEBUG] [Thread-192973] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:07:31.977 [DEBUG] [Thread-192973] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:07:32.003 [INFO] [Thread-192973] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:07:32.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:07:32.576 [DEBUG] [Thread-192973] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:07:32.576 [DEBUG] [Thread-192973] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:07:32.577 [DEBUG] [Thread-192973] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:07:32.617 [DEBUG] [Thread-192973] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:07:32.617 [DEBUG] [Thread-192973] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:07:32.619 [DEBUG] [Thread-192973] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:07:32.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:07:32.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:07:32.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:07:32.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:07:32.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:07:32.633 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:07:32.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:07:32.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:07:32.634 [DEBUG] [Thread-192973] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:07:32.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:07:32.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.588241 -999.00  +21.90  22.28     25   +1.00 1 1 1 1 1   888    0 22.99 64.36 ----- 26.1 22.3 163.0 29.3 27.2 -29.0 26.7 -27.1 28.4 -26.4 29.1 -29.0
2025-11-24T16:07:32.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:07:32.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:07:32.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.588241
2025-11-24T16:07:32.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:07:32.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:07:32.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:07:32.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:07:32.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:07:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:06:59', tmtdew=25.28, humidity=18.31, cloud=0.0, wind=31.9, temperature=22.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:07:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:07:32.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:07:32.739 [DEBUG] [Thread-192976] [transport.py] [_log()] starting thread (client mode): 0xd31b0ca0
2025-11-24T16:07:32.739 [DEBUG] [Thread-192976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:07:32.753 [DEBUG] [Thread-192976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:07:32.753 [INFO] [Thread-192976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:07:32.760 [DEBUG] [Thread-192976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] client lang: <none>
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] server lang: <none>
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] kex follows: False
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] Compression: none
2025-11-24T16:07:32.761 [DEBUG] [Thread-192976] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:07:32.818 [DEBUG] [Thread-192976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:07:32.818 [DEBUG] [Thread-192976] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:07:32.818 [DEBUG] [Thread-192976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:07:32.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:07:32.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:07:32.875 [DEBUG] [Thread-192976] [transport.py] [_log()] userauth is OK
2025-11-24T16:07:32.875 [DEBUG] [Thread-192976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:07:32.875 [DEBUG] [Thread-192976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:07:32.875 [DEBUG] [Thread-192976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:07:32.875 [DEBUG] [Thread-192976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:07:32.890 [INFO] [Thread-192976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:07:32.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:07:32.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:07:33.718 [DEBUG] [Thread-192976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:07:33.718 [DEBUG] [Thread-192976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:07:33.769 [DEBUG] [Thread-192976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:07:33.769 [DEBUG] [Thread-192976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:07:33.778 [DEBUG] [Thread-192976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:07:33.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:07:33.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-11-24T16:07:33.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:07:33.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:07:33.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:07:33.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:07:33.813 [DEBUG] [Thread-192976] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:07:35.879 [DEBUG] [Thread-192978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:07:38.282 [DEBUG] [Thread-192979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:07:53.417 [DEBUG] [Thread-192980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:08:03.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:08:03.838 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:08:03.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-11-24T16:08:04.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 7, 31), 25.04, 18.57, 0.0, 29.04, 22.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:08:04.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:07:31
2025-11-24T16:08:04.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:08:05.018 [DEBUG] [Thread-192981] [transport.py] [_log()] starting thread (client mode): 0xd3137a30
2025-11-24T16:08:05.019 [DEBUG] [Thread-192981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:08:05.031 [DEBUG] [Thread-192981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:08:05.031 [INFO] [Thread-192981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:08:05.045 [DEBUG] [Thread-192981] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:08:05.045 [DEBUG] [Thread-192981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:08:05.045 [DEBUG] [Thread-192981] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:08:05.045 [DEBUG] [Thread-192981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:08:05.045 [DEBUG] [Thread-192981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:08:05.045 [DEBUG] [Thread-192981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:08:05.045 [DEBUG] [Thread-192981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:08:05.045 [DEBUG] [Thread-192981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:08:05.045 [DEBUG] [Thread-192981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:08:05.046 [DEBUG] [Thread-192981] [transport.py] [_log()] client lang: <none>
2025-11-24T16:08:05.046 [DEBUG] [Thread-192981] [transport.py] [_log()] server lang: <none>
2025-11-24T16:08:05.046 [DEBUG] [Thread-192981] [transport.py] [_log()] kex follows: False
2025-11-24T16:08:05.046 [DEBUG] [Thread-192981] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:08:05.046 [DEBUG] [Thread-192981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:08:05.046 [DEBUG] [Thread-192981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:08:05.046 [DEBUG] [Thread-192981] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:08:05.046 [DEBUG] [Thread-192981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:08:05.046 [DEBUG] [Thread-192981] [transport.py] [_log()] Compression: none
2025-11-24T16:08:05.046 [DEBUG] [Thread-192981] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:08:05.069 [DEBUG] [Thread-192981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:08:05.071 [DEBUG] [Thread-192981] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:08:05.072 [DEBUG] [Thread-192981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:08:05.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:08:05.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:08:05.075 [DEBUG] [Thread-192981] [transport.py] [_log()] userauth is OK
2025-11-24T16:08:05.075 [DEBUG] [Thread-192981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:08:05.075 [DEBUG] [Thread-192981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:08:05.075 [DEBUG] [Thread-192981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:08:05.075 [DEBUG] [Thread-192981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:08:05.093 [INFO] [Thread-192981] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:08:05.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:08:05.675 [DEBUG] [Thread-192981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:08:05.675 [DEBUG] [Thread-192981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:08:05.676 [DEBUG] [Thread-192981] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:08:05.716 [DEBUG] [Thread-192981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:08:05.716 [DEBUG] [Thread-192981] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:08:05.718 [DEBUG] [Thread-192981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:08:05.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:08:05.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:08:05.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:08:05.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:08:05.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:08:05.735 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:08:05.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:08:05.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:08:05.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:08:05.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.588588 -999.00  +21.90  20.02     25   +1.00 1 1 1 1 1   888    0 22.61 61.94 ----- 20.5 20.0 174.1 32.1 27.1 -28.1 26.5 -35.2 28.3 -28.2 29.1 -30.2
2025-11-24T16:08:05.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:08:05.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:08:05.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.588588
2025-11-24T16:08:05.742 [DEBUG] [Thread-192981] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:08:05.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:08:05.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:08:05.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:08:05.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:08:05.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:08:05.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:07:31', tmtdew=25.04, humidity=18.57, cloud=0.0, wind=29.04, temperature=22.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:07:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:08:05.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:08:05.841 [DEBUG] [Thread-192984] [transport.py] [_log()] starting thread (client mode): 0xd31b0850
2025-11-24T16:08:05.841 [DEBUG] [Thread-192984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:08:05.859 [DEBUG] [Thread-192984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:08:05.859 [INFO] [Thread-192984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] client lang: <none>
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] server lang: <none>
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] kex follows: False
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] Compression: none
2025-11-24T16:08:05.867 [DEBUG] [Thread-192984] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:08:05.923 [DEBUG] [Thread-192984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:08:05.923 [DEBUG] [Thread-192984] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:08:05.923 [DEBUG] [Thread-192984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:08:05.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:08:05.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:08:05.979 [DEBUG] [Thread-192984] [transport.py] [_log()] userauth is OK
2025-11-24T16:08:05.979 [DEBUG] [Thread-192984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:08:05.979 [DEBUG] [Thread-192984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:08:05.979 [DEBUG] [Thread-192984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:08:05.979 [DEBUG] [Thread-192984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:08:05.997 [INFO] [Thread-192984] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:08:05.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:08:05.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:08:06.888 [DEBUG] [Thread-192984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:08:06.888 [DEBUG] [Thread-192984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:08:06.936 [DEBUG] [Thread-192984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:08:06.936 [DEBUG] [Thread-192984] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:08:06.944 [DEBUG] [Thread-192984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:08:06.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:08:06.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-11-24T16:08:06.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-11-24T16:08:06.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:08:06.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:08:06.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:08:06.978 [DEBUG] [Thread-192984] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:08:08.483 [DEBUG] [Thread-192986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:08:23.569 [DEBUG] [Thread-192987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:08:36.119 [DEBUG] [Thread-192988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:08:36.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:08:36.999 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:08:37.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-11-24T16:08:37.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 8, 4), 24.83, 18.82, 0.0, 25.28, 22.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:08:37.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:08:04
2025-11-24T16:08:38.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:08:38.171 [DEBUG] [Thread-192989] [transport.py] [_log()] starting thread (client mode): 0xd3161630
2025-11-24T16:08:38.172 [DEBUG] [Thread-192989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:08:38.191 [DEBUG] [Thread-192989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:08:38.191 [INFO] [Thread-192989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:08:38.195 [DEBUG] [Thread-192989] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:08:38.195 [DEBUG] [Thread-192989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:08:38.195 [DEBUG] [Thread-192989] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:08:38.195 [DEBUG] [Thread-192989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:08:38.195 [DEBUG] [Thread-192989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:08:38.195 [DEBUG] [Thread-192989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:08:38.195 [DEBUG] [Thread-192989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:08:38.195 [DEBUG] [Thread-192989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] client lang: <none>
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] server lang: <none>
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] kex follows: False
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] Compression: none
2025-11-24T16:08:38.196 [DEBUG] [Thread-192989] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:08:38.217 [DEBUG] [Thread-192989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:08:38.220 [DEBUG] [Thread-192989] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:08:38.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:08:38.222 [DEBUG] [Thread-192989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:08:38.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:08:38.225 [DEBUG] [Thread-192989] [transport.py] [_log()] userauth is OK
2025-11-24T16:08:38.225 [DEBUG] [Thread-192989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:08:38.225 [DEBUG] [Thread-192989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:08:38.225 [DEBUG] [Thread-192989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:08:38.225 [DEBUG] [Thread-192989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:08:38.242 [INFO] [Thread-192989] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:08:38.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:08:38.600 [DEBUG] [Thread-192991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:08:38.875 [DEBUG] [Thread-192989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:08:38.875 [DEBUG] [Thread-192989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:08:38.876 [DEBUG] [Thread-192989] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:08:38.917 [DEBUG] [Thread-192989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:08:38.917 [DEBUG] [Thread-192989] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:08:38.919 [DEBUG] [Thread-192989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:08:38.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:08:38.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:08:38.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:08:38.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:08:38.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:08:38.940 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:08:38.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:08:38.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:08:38.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:08:38.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.588936 -999.00  +22.00  25.28     24   +1.00 1 1 1 1 1   888    0 23.12 57.47 ----- 18.2 25.3 174.8 27.6 27.2 -28.6 26.8 -27.3 28.6 -26.2 29.2 -27.6
2025-11-24T16:08:38.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:08:38.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:08:38.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.588936
2025-11-24T16:08:38.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:08:38.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:08:38.948 [DEBUG] [Thread-192989] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:08:38.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:08:38.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:08:38.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:08:38.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:08:04', tmtdew=24.83, humidity=18.82, cloud=0.0, wind=25.28, temperature=22.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:08:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:08:39.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:08:39.041 [DEBUG] [Thread-192993] [transport.py] [_log()] starting thread (client mode): 0xd3163c40
2025-11-24T16:08:39.041 [DEBUG] [Thread-192993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:08:39.056 [DEBUG] [Thread-192993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:08:39.056 [INFO] [Thread-192993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] client lang: <none>
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] server lang: <none>
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] kex follows: False
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:08:39.064 [DEBUG] [Thread-192993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:08:39.065 [DEBUG] [Thread-192993] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:08:39.065 [DEBUG] [Thread-192993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:08:39.065 [DEBUG] [Thread-192993] [transport.py] [_log()] Compression: none
2025-11-24T16:08:39.065 [DEBUG] [Thread-192993] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:08:39.122 [DEBUG] [Thread-192993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:08:39.122 [DEBUG] [Thread-192993] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:08:39.122 [DEBUG] [Thread-192993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:08:39.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:08:39.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:08:39.179 [DEBUG] [Thread-192993] [transport.py] [_log()] userauth is OK
2025-11-24T16:08:39.179 [DEBUG] [Thread-192993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:08:39.179 [DEBUG] [Thread-192993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:08:39.179 [DEBUG] [Thread-192993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:08:39.179 [DEBUG] [Thread-192993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:08:39.196 [INFO] [Thread-192993] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:08:39.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:08:39.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:08:40.021 [DEBUG] [Thread-192993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:08:40.021 [DEBUG] [Thread-192993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:08:40.069 [DEBUG] [Thread-192993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:08:40.069 [DEBUG] [Thread-192993] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:08:40.078 [DEBUG] [Thread-192993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:08:40.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:08:40.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-11-24T16:08:40.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-11-24T16:08:40.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:08:40.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:08:40.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:08:40.112 [DEBUG] [Thread-192993] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:08:53.630 [DEBUG] [Thread-192995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:09:08.705 [DEBUG] [Thread-192996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:09:10.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:09:10.134 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:09:10.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:09:11.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 8, 37), 24.27, 19.27, 0.0, 26.5, 21.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:09:11.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:08:37
2025-11-24T16:09:11.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:09:11.656 [DEBUG] [Thread-192997] [transport.py] [_log()] starting thread (client mode): 0xd3163fd0
2025-11-24T16:09:11.657 [DEBUG] [Thread-192997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:09:11.672 [DEBUG] [Thread-192997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:09:11.672 [INFO] [Thread-192997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] client lang: <none>
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] server lang: <none>
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] kex follows: False
2025-11-24T16:09:11.674 [DEBUG] [Thread-192997] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:09:11.675 [DEBUG] [Thread-192997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:09:11.675 [DEBUG] [Thread-192997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:09:11.675 [DEBUG] [Thread-192997] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:09:11.675 [DEBUG] [Thread-192997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:09:11.675 [DEBUG] [Thread-192997] [transport.py] [_log()] Compression: none
2025-11-24T16:09:11.675 [DEBUG] [Thread-192997] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:09:11.689 [DEBUG] [Thread-192997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:09:11.691 [DEBUG] [Thread-192997] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:09:11.692 [DEBUG] [Thread-192997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:09:11.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:09:11.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:09:11.732 [DEBUG] [Thread-192997] [transport.py] [_log()] userauth is OK
2025-11-24T16:09:11.733 [DEBUG] [Thread-192997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:09:11.733 [DEBUG] [Thread-192997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:09:11.733 [DEBUG] [Thread-192997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:09:11.733 [DEBUG] [Thread-192997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:09:11.750 [INFO] [Thread-192997] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:09:11.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:09:12.305 [DEBUG] [Thread-192997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:09:12.305 [DEBUG] [Thread-192997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:09:12.306 [DEBUG] [Thread-192997] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:09:12.346 [DEBUG] [Thread-192997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:09:12.346 [DEBUG] [Thread-192997] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:09:12.348 [DEBUG] [Thread-192997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:09:12.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:09:12.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:09:12.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:09:12.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:09:12.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:09:12.373 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:09:12.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:09:12.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:09:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:09:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.589630 -999.00  +22.10  15.57     24   +1.00 1 1 1 1 1   888    0 22.80 48.55 ----- 18.7 15.6 185.0 25.6 27.1 -28.9 26.5 -28.7 28.4 -26.5 29.0 -29.8
2025-11-24T16:09:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:09:12.374 [DEBUG] [Thread-192997] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:09:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:09:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.589630
2025-11-24T16:09:12.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:09:12.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:09:12.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:09:12.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:09:12.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:09:12.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:08:37', tmtdew=24.27, humidity=19.27, cloud=0.0, wind=26.5, temperature=21.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:09:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:09:12.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:09:12.469 [DEBUG] [Thread-193000] [transport.py] [_log()] starting thread (client mode): 0xd3163be0
2025-11-24T16:09:12.470 [DEBUG] [Thread-193000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:09:12.484 [DEBUG] [Thread-193000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:09:12.484 [INFO] [Thread-193000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:09:12.492 [DEBUG] [Thread-193000] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:09:12.492 [DEBUG] [Thread-193000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:09:12.492 [DEBUG] [Thread-193000] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:09:12.492 [DEBUG] [Thread-193000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:09:12.492 [DEBUG] [Thread-193000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:09:12.492 [DEBUG] [Thread-193000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] client lang: <none>
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] server lang: <none>
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] kex follows: False
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] Compression: none
2025-11-24T16:09:12.493 [DEBUG] [Thread-193000] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:09:12.550 [DEBUG] [Thread-193000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:09:12.550 [DEBUG] [Thread-193000] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:09:12.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:09:12.551 [DEBUG] [Thread-193000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:09:12.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:09:12.607 [DEBUG] [Thread-193000] [transport.py] [_log()] userauth is OK
2025-11-24T16:09:12.607 [DEBUG] [Thread-193000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:09:12.607 [DEBUG] [Thread-193000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:09:12.607 [DEBUG] [Thread-193000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:09:12.607 [DEBUG] [Thread-193000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:09:12.622 [INFO] [Thread-193000] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:09:12.622 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:09:12.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:09:13.468 [DEBUG] [Thread-193000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:09:13.468 [DEBUG] [Thread-193000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:09:13.516 [DEBUG] [Thread-193000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:09:13.516 [DEBUG] [Thread-193000] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:09:13.524 [DEBUG] [Thread-193000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:09:13.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:09:13.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-11-24T16:09:13.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-11-24T16:09:13.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:09:13.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:09:13.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:09:13.557 [DEBUG] [Thread-193000] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:09:23.736 [DEBUG] [Thread-193002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:09:36.431 [DEBUG] [Thread-193003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:09:38.828 [DEBUG] [Thread-193004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:09:43.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:09:43.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:09:43.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-11-24T16:09:44.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 9, 9), 24.35, 19.17, 0.0, 23.71, 21.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:09:44.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:09:09
2025-11-24T16:09:44.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:09:44.883 [DEBUG] [Thread-193005] [transport.py] [_log()] starting thread (client mode): 0xd07bd180
2025-11-24T16:09:44.884 [DEBUG] [Thread-193005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:09:44.899 [DEBUG] [Thread-193005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:09:44.899 [INFO] [Thread-193005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:09:44.903 [DEBUG] [Thread-193005] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:09:44.903 [DEBUG] [Thread-193005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:09:44.903 [DEBUG] [Thread-193005] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:09:44.903 [DEBUG] [Thread-193005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:09:44.903 [DEBUG] [Thread-193005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:09:44.903 [DEBUG] [Thread-193005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:09:44.904 [DEBUG] [Thread-193005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:09:44.904 [DEBUG] [Thread-193005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:09:44.904 [DEBUG] [Thread-193005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:09:44.904 [DEBUG] [Thread-193005] [transport.py] [_log()] client lang: <none>
2025-11-24T16:09:44.904 [DEBUG] [Thread-193005] [transport.py] [_log()] server lang: <none>
2025-11-24T16:09:44.904 [DEBUG] [Thread-193005] [transport.py] [_log()] kex follows: False
2025-11-24T16:09:44.904 [DEBUG] [Thread-193005] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:09:44.904 [DEBUG] [Thread-193005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:09:44.904 [DEBUG] [Thread-193005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:09:44.904 [DEBUG] [Thread-193005] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:09:44.905 [DEBUG] [Thread-193005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:09:44.905 [DEBUG] [Thread-193005] [transport.py] [_log()] Compression: none
2025-11-24T16:09:44.905 [DEBUG] [Thread-193005] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:09:44.927 [DEBUG] [Thread-193005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:09:44.930 [DEBUG] [Thread-193005] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:09:44.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:09:44.932 [DEBUG] [Thread-193005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:09:44.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:09:44.934 [DEBUG] [Thread-193005] [transport.py] [_log()] userauth is OK
2025-11-24T16:09:44.934 [DEBUG] [Thread-193005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:09:44.934 [DEBUG] [Thread-193005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:09:44.934 [DEBUG] [Thread-193005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:09:44.934 [DEBUG] [Thread-193005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:09:44.954 [INFO] [Thread-193005] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:09:44.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:09:45.563 [DEBUG] [Thread-193005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:09:45.563 [DEBUG] [Thread-193005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:09:45.564 [DEBUG] [Thread-193005] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:09:45.604 [DEBUG] [Thread-193005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:09:45.604 [DEBUG] [Thread-193005] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:09:45.607 [DEBUG] [Thread-193005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:09:45.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:09:45.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:09:45.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:09:45.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:09:45.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:09:45.628 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:09:45.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:09:45.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:09:45.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:09:45.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.589977 -999.00  +22.10  15.31     24   +1.10 1 1 1 1 1   888    0 22.69 47.25 ----- 14.8 15.3 183.4 25.6 27.1 -27.7 26.6 -30.7 28.4 -26.8 29.0 -29.3
2025-11-24T16:09:45.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:09:45.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:09:45.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.589977
2025-11-24T16:09:45.635 [DEBUG] [Thread-193005] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:09:45.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:09:45.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:09:45.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:09:45.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:09:45.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:09:45.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:09:09', tmtdew=24.35, humidity=19.17, cloud=0.0, wind=23.71, temperature=21.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:09:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:09:45.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:09:45.729 [DEBUG] [Thread-193008] [transport.py] [_log()] starting thread (client mode): 0xd07bdd50
2025-11-24T16:09:45.729 [DEBUG] [Thread-193008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:09:45.744 [DEBUG] [Thread-193008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:09:45.745 [INFO] [Thread-193008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:09:45.752 [DEBUG] [Thread-193008] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:09:45.752 [DEBUG] [Thread-193008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:09:45.752 [DEBUG] [Thread-193008] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:09:45.752 [DEBUG] [Thread-193008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:09:45.752 [DEBUG] [Thread-193008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:09:45.752 [DEBUG] [Thread-193008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:09:45.752 [DEBUG] [Thread-193008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:09:45.752 [DEBUG] [Thread-193008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:09:45.752 [DEBUG] [Thread-193008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:09:45.753 [DEBUG] [Thread-193008] [transport.py] [_log()] client lang: <none>
2025-11-24T16:09:45.753 [DEBUG] [Thread-193008] [transport.py] [_log()] server lang: <none>
2025-11-24T16:09:45.753 [DEBUG] [Thread-193008] [transport.py] [_log()] kex follows: False
2025-11-24T16:09:45.753 [DEBUG] [Thread-193008] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:09:45.753 [DEBUG] [Thread-193008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:09:45.753 [DEBUG] [Thread-193008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:09:45.753 [DEBUG] [Thread-193008] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:09:45.753 [DEBUG] [Thread-193008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:09:45.753 [DEBUG] [Thread-193008] [transport.py] [_log()] Compression: none
2025-11-24T16:09:45.753 [DEBUG] [Thread-193008] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:09:45.812 [DEBUG] [Thread-193008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:09:45.812 [DEBUG] [Thread-193008] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:09:45.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:09:45.813 [DEBUG] [Thread-193008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:09:45.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:09:45.867 [DEBUG] [Thread-193008] [transport.py] [_log()] userauth is OK
2025-11-24T16:09:45.868 [DEBUG] [Thread-193008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:09:45.868 [DEBUG] [Thread-193008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:09:45.868 [DEBUG] [Thread-193008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:09:45.868 [DEBUG] [Thread-193008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:09:45.887 [INFO] [Thread-193008] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:09:45.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:09:45.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:09:46.750 [DEBUG] [Thread-193008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:09:46.751 [DEBUG] [Thread-193008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:09:46.799 [DEBUG] [Thread-193008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:09:46.799 [DEBUG] [Thread-193008] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:09:46.808 [DEBUG] [Thread-193008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:09:46.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:09:46.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-11-24T16:09:46.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-11-24T16:09:46.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:09:46.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:09:46.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:09:46.856 [DEBUG] [Thread-193008] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:09:53.887 [DEBUG] [Thread-193010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:10:08.966 [DEBUG] [Thread-193011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:10:16.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:10:16.878 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:10:16.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-11-24T16:10:17.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 9, 42), 24.14, 19.87, 0.0, 24.95, 21.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:10:17.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:09:42
2025-11-24T16:10:17.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:10:18.162 [DEBUG] [Thread-193012] [transport.py] [_log()] starting thread (client mode): 0xd31607c0
2025-11-24T16:10:18.162 [DEBUG] [Thread-193012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:10:18.168 [DEBUG] [Thread-193012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:10:18.168 [INFO] [Thread-193012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] client lang: <none>
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] server lang: <none>
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] kex follows: False
2025-11-24T16:10:18.172 [DEBUG] [Thread-193012] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:10:18.173 [DEBUG] [Thread-193012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:10:18.173 [DEBUG] [Thread-193012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:10:18.173 [DEBUG] [Thread-193012] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:10:18.173 [DEBUG] [Thread-193012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:10:18.173 [DEBUG] [Thread-193012] [transport.py] [_log()] Compression: none
2025-11-24T16:10:18.173 [DEBUG] [Thread-193012] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:10:18.201 [DEBUG] [Thread-193012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:10:18.205 [DEBUG] [Thread-193012] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:10:18.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:10:18.208 [DEBUG] [Thread-193012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:10:18.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:10:18.210 [DEBUG] [Thread-193012] [transport.py] [_log()] userauth is OK
2025-11-24T16:10:18.210 [DEBUG] [Thread-193012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:10:18.210 [DEBUG] [Thread-193012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:10:18.210 [DEBUG] [Thread-193012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:10:18.210 [DEBUG] [Thread-193012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:10:18.225 [INFO] [Thread-193012] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:10:18.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:10:18.816 [DEBUG] [Thread-193012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:10:18.817 [DEBUG] [Thread-193012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:10:18.818 [DEBUG] [Thread-193012] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:10:18.857 [DEBUG] [Thread-193012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:10:18.857 [DEBUG] [Thread-193012] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:10:18.860 [DEBUG] [Thread-193012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:10:18.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:10:18.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:10:18.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:10:18.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:10:18.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:10:18.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:10:18.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:10:18.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:10:18.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:10:18.885 [DEBUG] [Thread-193012] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:10:18.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.590324 -999.00  +22.20  17.29     24   +1.10 1 1 1 1 1   888    0 22.83 45.72 ----- 12.5 17.3 166.8 20.3 27.2 -27.2 26.8 -27.2 28.6 -25.7 29.2 -27.0
2025-11-24T16:10:18.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:10:18.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:10:18.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.590324
2025-11-24T16:10:18.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:10:18.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:10:18.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:10:18.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:10:18.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:10:18.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:09:42', tmtdew=24.14, humidity=19.87, cloud=0.0, wind=24.95, temperature=21.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:10:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:10:18.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:10:18.998 [DEBUG] [Thread-193015] [transport.py] [_log()] starting thread (client mode): 0xd31613f0
2025-11-24T16:10:18.998 [DEBUG] [Thread-193015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:10:19.012 [DEBUG] [Thread-193015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:10:19.012 [INFO] [Thread-193015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:10:19.019 [DEBUG] [Thread-193015] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:10:19.020 [DEBUG] [Thread-193015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:10:19.020 [DEBUG] [Thread-193015] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:10:19.020 [DEBUG] [Thread-193015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:10:19.020 [DEBUG] [Thread-193015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:10:19.020 [DEBUG] [Thread-193015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:10:19.020 [DEBUG] [Thread-193015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:10:19.020 [DEBUG] [Thread-193015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:10:19.020 [DEBUG] [Thread-193015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:10:19.020 [DEBUG] [Thread-193015] [transport.py] [_log()] client lang: <none>
2025-11-24T16:10:19.021 [DEBUG] [Thread-193015] [transport.py] [_log()] server lang: <none>
2025-11-24T16:10:19.021 [DEBUG] [Thread-193015] [transport.py] [_log()] kex follows: False
2025-11-24T16:10:19.021 [DEBUG] [Thread-193015] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:10:19.021 [DEBUG] [Thread-193015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:10:19.021 [DEBUG] [Thread-193015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:10:19.021 [DEBUG] [Thread-193015] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:10:19.021 [DEBUG] [Thread-193015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:10:19.021 [DEBUG] [Thread-193015] [transport.py] [_log()] Compression: none
2025-11-24T16:10:19.022 [DEBUG] [Thread-193015] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:10:19.084 [DEBUG] [Thread-193015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:10:19.085 [DEBUG] [Thread-193015] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:10:19.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:10:19.086 [DEBUG] [Thread-193015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:10:19.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:10:19.149 [DEBUG] [Thread-193015] [transport.py] [_log()] userauth is OK
2025-11-24T16:10:19.150 [DEBUG] [Thread-193015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:10:19.150 [DEBUG] [Thread-193015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:10:19.150 [DEBUG] [Thread-193015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:10:19.150 [DEBUG] [Thread-193015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:10:19.171 [INFO] [Thread-193015] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:10:19.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:10:19.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:10:20.076 [DEBUG] [Thread-193015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:10:20.085 [DEBUG] [Thread-193015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:10:20.124 [DEBUG] [Thread-193015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:10:20.124 [DEBUG] [Thread-193015] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:10:20.132 [DEBUG] [Thread-193015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:10:20.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:10:20.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-11-24T16:10:20.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-11-24T16:10:20.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:10:20.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:10:20.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:10:20.165 [DEBUG] [Thread-193015] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:10:24.000 [DEBUG] [Thread-193017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:10:36.731 [DEBUG] [Thread-193018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:10:39.039 [DEBUG] [Thread-193019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:10:50.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:10:50.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:10:50.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-11-24T16:10:51.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 10, 15), 24.24, 19.77, 0.0, 25.32, 21.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:10:51.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:10:15
2025-11-24T16:10:51.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:10:51.518 [DEBUG] [Thread-193020] [transport.py] [_log()] starting thread (client mode): 0xd31343a0
2025-11-24T16:10:51.519 [DEBUG] [Thread-193020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:10:51.530 [DEBUG] [Thread-193020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:10:51.530 [INFO] [Thread-193020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] client lang: <none>
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] server lang: <none>
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] kex follows: False
2025-11-24T16:10:51.546 [DEBUG] [Thread-193020] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:10:51.547 [DEBUG] [Thread-193020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:10:51.547 [DEBUG] [Thread-193020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:10:51.547 [DEBUG] [Thread-193020] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:10:51.547 [DEBUG] [Thread-193020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:10:51.547 [DEBUG] [Thread-193020] [transport.py] [_log()] Compression: none
2025-11-24T16:10:51.547 [DEBUG] [Thread-193020] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:10:51.573 [DEBUG] [Thread-193020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:10:51.575 [DEBUG] [Thread-193020] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:10:51.576 [DEBUG] [Thread-193020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:10:51.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:10:51.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:10:51.580 [DEBUG] [Thread-193020] [transport.py] [_log()] userauth is OK
2025-11-24T16:10:51.580 [DEBUG] [Thread-193020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:10:51.580 [DEBUG] [Thread-193020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:10:51.580 [DEBUG] [Thread-193020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:10:51.580 [DEBUG] [Thread-193020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:10:51.592 [INFO] [Thread-193020] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:10:51.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:10:52.207 [DEBUG] [Thread-193020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:10:52.207 [DEBUG] [Thread-193020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:10:52.209 [DEBUG] [Thread-193020] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:10:52.248 [DEBUG] [Thread-193020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:10:52.248 [DEBUG] [Thread-193020] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:10:52.251 [DEBUG] [Thread-193020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:10:52.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:10:52.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:10:52.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:10:52.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:10:52.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:10:52.274 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:10:52.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:10:52.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:10:52.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:10:52.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.590672 -999.00  +22.50  15.96     24   +1.20 1 1 1 1 1   888    0 22.34 42.04 ----- 13.2 16.0 174.0 18.2 27.4 -28.2 27.1 -26.9 28.9 -25.6 29.4 -27.4
2025-11-24T16:10:52.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:10:52.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:10:52.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.590672
2025-11-24T16:10:52.281 [DEBUG] [Thread-193020] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:10:52.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:10:52.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:10:52.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:10:52.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:10:52.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:10:52.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:10:15', tmtdew=24.24, humidity=19.77, cloud=0.0, wind=25.32, temperature=21.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:10:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:10:52.384 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:10:52.396 [DEBUG] [Thread-193023] [transport.py] [_log()] starting thread (client mode): 0xd07be3b0
2025-11-24T16:10:52.396 [DEBUG] [Thread-193023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:10:52.415 [DEBUG] [Thread-193023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:10:52.415 [INFO] [Thread-193023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:10:52.422 [DEBUG] [Thread-193023] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:10:52.422 [DEBUG] [Thread-193023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:10:52.422 [DEBUG] [Thread-193023] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:10:52.422 [DEBUG] [Thread-193023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:10:52.422 [DEBUG] [Thread-193023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:10:52.423 [DEBUG] [Thread-193023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:10:52.423 [DEBUG] [Thread-193023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:10:52.423 [DEBUG] [Thread-193023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:10:52.423 [DEBUG] [Thread-193023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:10:52.423 [DEBUG] [Thread-193023] [transport.py] [_log()] client lang: <none>
2025-11-24T16:10:52.423 [DEBUG] [Thread-193023] [transport.py] [_log()] server lang: <none>
2025-11-24T16:10:52.423 [DEBUG] [Thread-193023] [transport.py] [_log()] kex follows: False
2025-11-24T16:10:52.423 [DEBUG] [Thread-193023] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:10:52.424 [DEBUG] [Thread-193023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:10:52.424 [DEBUG] [Thread-193023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:10:52.424 [DEBUG] [Thread-193023] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:10:52.424 [DEBUG] [Thread-193023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:10:52.424 [DEBUG] [Thread-193023] [transport.py] [_log()] Compression: none
2025-11-24T16:10:52.424 [DEBUG] [Thread-193023] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:10:52.481 [DEBUG] [Thread-193023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:10:52.481 [DEBUG] [Thread-193023] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:10:52.482 [DEBUG] [Thread-193023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:10:52.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:10:52.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:10:52.540 [DEBUG] [Thread-193023] [transport.py] [_log()] userauth is OK
2025-11-24T16:10:52.540 [DEBUG] [Thread-193023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:10:52.541 [DEBUG] [Thread-193023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:10:52.541 [DEBUG] [Thread-193023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:10:52.541 [DEBUG] [Thread-193023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:10:52.561 [INFO] [Thread-193023] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:10:52.561 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:10:52.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:10:53.444 [DEBUG] [Thread-193023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:10:53.444 [DEBUG] [Thread-193023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:10:53.492 [DEBUG] [Thread-193023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:10:53.492 [DEBUG] [Thread-193023] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:10:53.500 [DEBUG] [Thread-193023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:10:53.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:10:53.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:10:53.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-11-24T16:10:53.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:10:53.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:10:53.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:10:53.542 [DEBUG] [Thread-193023] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:10:54.070 [DEBUG] [Thread-193025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:11:09.160 [DEBUG] [Thread-193026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:11:23.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:11:23.566 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:11:23.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:11:24.187 [DEBUG] [Thread-193027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:11:24.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 10, 48), 24.78, 18.92, 0.0, 22.64, 22.39, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:11:24.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:10:48
2025-11-24T16:11:24.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:11:24.741 [DEBUG] [Thread-193028] [transport.py] [_log()] starting thread (client mode): 0xd07bf970
2025-11-24T16:11:24.742 [DEBUG] [Thread-193028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:11:24.757 [DEBUG] [Thread-193028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:11:24.757 [INFO] [Thread-193028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] client lang: <none>
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] server lang: <none>
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] kex follows: False
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:11:24.760 [DEBUG] [Thread-193028] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:11:24.761 [DEBUG] [Thread-193028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:11:24.761 [DEBUG] [Thread-193028] [transport.py] [_log()] Compression: none
2025-11-24T16:11:24.761 [DEBUG] [Thread-193028] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:11:24.776 [DEBUG] [Thread-193028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:11:24.778 [DEBUG] [Thread-193028] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:11:24.779 [DEBUG] [Thread-193028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:11:24.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:11:24.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:11:24.784 [DEBUG] [Thread-193028] [transport.py] [_log()] userauth is OK
2025-11-24T16:11:24.784 [DEBUG] [Thread-193028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:11:24.784 [DEBUG] [Thread-193028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:11:24.784 [DEBUG] [Thread-193028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:11:24.784 [DEBUG] [Thread-193028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:11:24.809 [INFO] [Thread-193028] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:11:24.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:11:25.378 [DEBUG] [Thread-193028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:11:25.387 [DEBUG] [Thread-193028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:11:25.389 [DEBUG] [Thread-193028] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:11:25.418 [DEBUG] [Thread-193028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:11:25.419 [DEBUG] [Thread-193028] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:11:25.422 [DEBUG] [Thread-193028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:11:25.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:11:25.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:11:25.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:11:25.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:11:25.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:11:25.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:11:25.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:11:25.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:11:25.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:11:25.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.591019 -999.00  +22.40  15.81     24   +1.00 1 1 1 1 1   888    0 22.80 37.24 ----- 17.1 15.8 171.6 20.6 27.4 -28.2 26.9 -30.4 28.8 -25.8 29.4 -28.4
2025-11-24T16:11:25.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:11:25.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:11:25.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.591019
2025-11-24T16:11:25.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:11:25.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:11:25.455 [DEBUG] [Thread-193028] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:11:25.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:11:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:11:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:11:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:10:48', tmtdew=24.78, humidity=18.92, cloud=0.0, wind=22.64, temperature=22.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:11:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:11:25.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:11:25.550 [DEBUG] [Thread-193031] [transport.py] [_log()] starting thread (client mode): 0xd07bf550
2025-11-24T16:11:25.550 [DEBUG] [Thread-193031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:11:25.563 [DEBUG] [Thread-193031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:11:25.564 [INFO] [Thread-193031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] client lang: <none>
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] server lang: <none>
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] kex follows: False
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:11:25.571 [DEBUG] [Thread-193031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:11:25.572 [DEBUG] [Thread-193031] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:11:25.572 [DEBUG] [Thread-193031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:11:25.572 [DEBUG] [Thread-193031] [transport.py] [_log()] Compression: none
2025-11-24T16:11:25.572 [DEBUG] [Thread-193031] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:11:25.636 [DEBUG] [Thread-193031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:11:25.637 [DEBUG] [Thread-193031] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:11:25.637 [DEBUG] [Thread-193031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:11:25.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:11:25.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:11:25.696 [DEBUG] [Thread-193031] [transport.py] [_log()] userauth is OK
2025-11-24T16:11:25.696 [DEBUG] [Thread-193031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:11:25.696 [DEBUG] [Thread-193031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:11:25.696 [DEBUG] [Thread-193031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:11:25.697 [DEBUG] [Thread-193031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:11:25.715 [INFO] [Thread-193031] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:11:25.716 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:11:25.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:11:26.605 [DEBUG] [Thread-193031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:11:26.605 [DEBUG] [Thread-193031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:11:26.653 [DEBUG] [Thread-193031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:11:26.653 [DEBUG] [Thread-193031] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:11:26.662 [DEBUG] [Thread-193031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:11:26.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:11:26.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-11-24T16:11:26.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:11:26.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:11:26.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:11:26.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:11:26.709 [DEBUG] [Thread-193031] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:11:36.958 [DEBUG] [Thread-193033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:11:39.217 [DEBUG] [Thread-193034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:11:54.308 [DEBUG] [Thread-193035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:11:56.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:11:56.732 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:11:56.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-11-24T16:11:57.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 11, 21), 24.69, 19.02, 0.0, 20.2, 22.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:11:57.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:11:21
2025-11-24T16:11:57.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:11:57.894 [DEBUG] [Thread-193036] [transport.py] [_log()] starting thread (client mode): 0xd3162a10
2025-11-24T16:11:57.894 [DEBUG] [Thread-193036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:11:57.902 [DEBUG] [Thread-193036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:11:57.902 [INFO] [Thread-193036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:11:57.905 [DEBUG] [Thread-193036] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:11:57.905 [DEBUG] [Thread-193036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] client lang: <none>
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] server lang: <none>
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] kex follows: False
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] Compression: none
2025-11-24T16:11:57.906 [DEBUG] [Thread-193036] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:11:57.936 [DEBUG] [Thread-193036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:11:57.939 [DEBUG] [Thread-193036] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:11:57.940 [DEBUG] [Thread-193036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:11:57.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:11:57.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:11:57.986 [DEBUG] [Thread-193036] [transport.py] [_log()] userauth is OK
2025-11-24T16:11:57.986 [DEBUG] [Thread-193036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:11:57.986 [DEBUG] [Thread-193036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:11:57.987 [DEBUG] [Thread-193036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:11:57.987 [DEBUG] [Thread-193036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:11:58.029 [INFO] [Thread-193036] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:11:58.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:11:58.606 [DEBUG] [Thread-193036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:11:58.606 [DEBUG] [Thread-193036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:11:58.616 [DEBUG] [Thread-193036] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:11:58.647 [DEBUG] [Thread-193036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:11:58.647 [DEBUG] [Thread-193036] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:11:58.650 [DEBUG] [Thread-193036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:11:58.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:11:58.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:11:58.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:11:58.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:11:58.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:11:58.676 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:11:58.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:11:58.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:11:58.677 [DEBUG] [Thread-193036] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:11:58.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:11:58.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.591366 -999.00  +22.40  10.35     24   +1.10 1 1 1 1 1   888    0 22.57 40.75 ----- 14.8 10.3 167.8 16.8 27.5 -27.9 26.9 -31.3 28.8 -26.9 29.5 -28.6
2025-11-24T16:11:58.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:11:58.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:11:58.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.591366
2025-11-24T16:11:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:11:58.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:11:58.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:11:58.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:11:58.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:11:58.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:11:21', tmtdew=24.69, humidity=19.02, cloud=0.0, wind=20.2, temperature=22.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:11:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:11:58.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:11:58.790 [DEBUG] [Thread-193039] [transport.py] [_log()] starting thread (client mode): 0xd3162890
2025-11-24T16:11:58.791 [DEBUG] [Thread-193039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:11:58.805 [DEBUG] [Thread-193039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:11:58.806 [INFO] [Thread-193039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:11:58.813 [DEBUG] [Thread-193039] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:11:58.813 [DEBUG] [Thread-193039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:11:58.813 [DEBUG] [Thread-193039] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:11:58.813 [DEBUG] [Thread-193039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:11:58.813 [DEBUG] [Thread-193039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:11:58.813 [DEBUG] [Thread-193039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] client lang: <none>
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] server lang: <none>
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] kex follows: False
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] Compression: none
2025-11-24T16:11:58.814 [DEBUG] [Thread-193039] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:11:58.872 [DEBUG] [Thread-193039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:11:58.872 [DEBUG] [Thread-193039] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:11:58.873 [DEBUG] [Thread-193039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:11:58.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:11:58.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:11:58.927 [DEBUG] [Thread-193039] [transport.py] [_log()] userauth is OK
2025-11-24T16:11:58.927 [DEBUG] [Thread-193039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:11:58.927 [DEBUG] [Thread-193039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:11:58.927 [DEBUG] [Thread-193039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:11:58.927 [DEBUG] [Thread-193039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:11:58.941 [INFO] [Thread-193039] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:11:58.941 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:11:58.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:11:59.748 [DEBUG] [Thread-193039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:11:59.749 [DEBUG] [Thread-193039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:11:59.797 [DEBUG] [Thread-193039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:11:59.797 [DEBUG] [Thread-193039] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:11:59.806 [DEBUG] [Thread-193039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:11:59.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:11:59.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-11-24T16:11:59.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-11-24T16:11:59.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:11:59.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:11:59.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:11:59.853 [DEBUG] [Thread-193039] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:12:09.342 [DEBUG] [Thread-193041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:12:24.403 [DEBUG] [Thread-193042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:12:29.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:12:29.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:12:29.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-11-24T16:12:30.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 11, 54), 24.67, 19.04, 0.0, 20.89, 22.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:12:30.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:11:54
2025-11-24T16:12:30.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:12:31.048 [DEBUG] [Thread-193043] [transport.py] [_log()] starting thread (client mode): 0xd07bd7b0
2025-11-24T16:12:31.049 [DEBUG] [Thread-193043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:12:31.062 [DEBUG] [Thread-193043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:12:31.063 [INFO] [Thread-193043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] client lang: <none>
2025-11-24T16:12:31.068 [DEBUG] [Thread-193043] [transport.py] [_log()] server lang: <none>
2025-11-24T16:12:31.069 [DEBUG] [Thread-193043] [transport.py] [_log()] kex follows: False
2025-11-24T16:12:31.069 [DEBUG] [Thread-193043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:12:31.069 [DEBUG] [Thread-193043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:12:31.069 [DEBUG] [Thread-193043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:12:31.070 [DEBUG] [Thread-193043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:12:31.070 [DEBUG] [Thread-193043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:12:31.070 [DEBUG] [Thread-193043] [transport.py] [_log()] Compression: none
2025-11-24T16:12:31.070 [DEBUG] [Thread-193043] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:12:31.096 [DEBUG] [Thread-193043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:12:31.100 [DEBUG] [Thread-193043] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:12:31.101 [DEBUG] [Thread-193043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:12:31.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:12:31.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:12:31.104 [DEBUG] [Thread-193043] [transport.py] [_log()] userauth is OK
2025-11-24T16:12:31.104 [DEBUG] [Thread-193043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:12:31.105 [DEBUG] [Thread-193043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:12:31.105 [DEBUG] [Thread-193043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:12:31.105 [DEBUG] [Thread-193043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:12:31.117 [INFO] [Thread-193043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:12:31.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:12:31.702 [DEBUG] [Thread-193043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:12:31.703 [DEBUG] [Thread-193043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:12:31.704 [DEBUG] [Thread-193043] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:12:31.744 [DEBUG] [Thread-193043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:12:31.744 [DEBUG] [Thread-193043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:12:31.745 [DEBUG] [Thread-193043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:12:31.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:12:31.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:12:31.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:12:31.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:12:31.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:12:31.765 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:12:31.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:12:31.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:12:31.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:12:31.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.591713 -999.00  +22.50   5.86     24   +1.20 1 1 1 1 1   888    0 21.75 34.87 ----- 8.8 5.9 199.8 16.4 27.7 -27.5 27.3 -29.7 29.1 -26.1 29.8 -26.8
2025-11-24T16:12:31.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:12:31.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:12:31.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.591713
2025-11-24T16:12:31.772 [DEBUG] [Thread-193043] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:12:31.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:12:31.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:12:31.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:12:31.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:12:31.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:12:31.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:11:54', tmtdew=24.67, humidity=19.04, cloud=0.0, wind=20.89, temperature=22.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:12:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:12:31.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:12:31.871 [DEBUG] [Thread-193046] [transport.py] [_log()] starting thread (client mode): 0xd07bf970
2025-11-24T16:12:31.871 [DEBUG] [Thread-193046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:12:31.886 [DEBUG] [Thread-193046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:12:31.886 [INFO] [Thread-193046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] client lang: <none>
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] server lang: <none>
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] kex follows: False
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] Compression: none
2025-11-24T16:12:31.894 [DEBUG] [Thread-193046] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:12:31.954 [DEBUG] [Thread-193046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:12:31.955 [DEBUG] [Thread-193046] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:12:31.955 [DEBUG] [Thread-193046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:12:31.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:12:31.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:12:32.011 [DEBUG] [Thread-193046] [transport.py] [_log()] userauth is OK
2025-11-24T16:12:32.011 [DEBUG] [Thread-193046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:12:32.011 [DEBUG] [Thread-193046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:12:32.011 [DEBUG] [Thread-193046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:12:32.011 [DEBUG] [Thread-193046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:12:32.029 [INFO] [Thread-193046] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:12:32.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:12:32.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:12:32.857 [DEBUG] [Thread-193046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:12:32.857 [DEBUG] [Thread-193046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:12:32.905 [DEBUG] [Thread-193046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:12:32.905 [DEBUG] [Thread-193046] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:12:32.913 [DEBUG] [Thread-193046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:12:32.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:12:32.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-11-24T16:12:32.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-11-24T16:12:32.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:12:32.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:12:32.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:12:32.947 [DEBUG] [Thread-193046] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:12:37.199 [DEBUG] [Thread-193048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:12:39.446 [DEBUG] [Thread-193049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:12:54.557 [DEBUG] [Thread-193050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:13:02.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:13:02.951 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:13:02.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-11-24T16:13:03.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 12, 26), 25.11, 18.49, 0.0, 25.71, 22.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:13:03.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:12:26
2025-11-24T16:13:04.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:13:04.207 [DEBUG] [Thread-193051] [transport.py] [_log()] starting thread (client mode): 0xd3162350
2025-11-24T16:13:04.208 [DEBUG] [Thread-193051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:13:04.213 [DEBUG] [Thread-193051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:13:04.213 [INFO] [Thread-193051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] client lang: <none>
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] server lang: <none>
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] kex follows: False
2025-11-24T16:13:04.216 [DEBUG] [Thread-193051] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:13:04.217 [DEBUG] [Thread-193051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:13:04.217 [DEBUG] [Thread-193051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:13:04.217 [DEBUG] [Thread-193051] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:13:04.217 [DEBUG] [Thread-193051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:13:04.217 [DEBUG] [Thread-193051] [transport.py] [_log()] Compression: none
2025-11-24T16:13:04.217 [DEBUG] [Thread-193051] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:13:04.235 [DEBUG] [Thread-193051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:13:04.238 [DEBUG] [Thread-193051] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:13:04.240 [DEBUG] [Thread-193051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:13:04.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:13:04.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:13:04.245 [DEBUG] [Thread-193051] [transport.py] [_log()] userauth is OK
2025-11-24T16:13:04.245 [DEBUG] [Thread-193051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:13:04.245 [DEBUG] [Thread-193051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:13:04.245 [DEBUG] [Thread-193051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:13:04.245 [DEBUG] [Thread-193051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:13:04.282 [INFO] [Thread-193051] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:13:04.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:13:04.867 [DEBUG] [Thread-193051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:13:04.867 [DEBUG] [Thread-193051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:13:04.870 [DEBUG] [Thread-193051] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:13:04.907 [DEBUG] [Thread-193051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:13:04.907 [DEBUG] [Thread-193051] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:13:04.910 [DEBUG] [Thread-193051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:13:04.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:13:04.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:13:04.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:13:04.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:13:04.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:13:04.932 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:13:04.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:13:04.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:13:04.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:13:04.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.592060 -999.00  +22.80  27.38     23   +1.10 1 1 1 1 1   888    0 22.02 32.06 ----- 21.3 27.4 171.4 30.9 27.6 -29.6 27.3 -30.2 29.1 -28.4 29.8 -28.3
2025-11-24T16:13:04.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:13:04.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:13:04.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.592060
2025-11-24T16:13:04.939 [DEBUG] [Thread-193051] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:13:04.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:13:04.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:13:04.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:13:04.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:13:04.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:13:04.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:12:26', tmtdew=25.11, humidity=18.49, cloud=0.0, wind=25.71, temperature=22.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:12:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:13:05.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:13:05.036 [DEBUG] [Thread-193054] [transport.py] [_log()] starting thread (client mode): 0xd31628c0
2025-11-24T16:13:05.036 [DEBUG] [Thread-193054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:13:05.054 [DEBUG] [Thread-193054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:13:05.054 [INFO] [Thread-193054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:13:05.062 [DEBUG] [Thread-193054] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:13:05.062 [DEBUG] [Thread-193054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:13:05.062 [DEBUG] [Thread-193054] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:13:05.062 [DEBUG] [Thread-193054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:13:05.062 [DEBUG] [Thread-193054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:13:05.062 [DEBUG] [Thread-193054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:13:05.062 [DEBUG] [Thread-193054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:13:05.062 [DEBUG] [Thread-193054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:13:05.062 [DEBUG] [Thread-193054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:13:05.063 [DEBUG] [Thread-193054] [transport.py] [_log()] client lang: <none>
2025-11-24T16:13:05.063 [DEBUG] [Thread-193054] [transport.py] [_log()] server lang: <none>
2025-11-24T16:13:05.063 [DEBUG] [Thread-193054] [transport.py] [_log()] kex follows: False
2025-11-24T16:13:05.063 [DEBUG] [Thread-193054] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:13:05.063 [DEBUG] [Thread-193054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:13:05.063 [DEBUG] [Thread-193054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:13:05.063 [DEBUG] [Thread-193054] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:13:05.063 [DEBUG] [Thread-193054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:13:05.063 [DEBUG] [Thread-193054] [transport.py] [_log()] Compression: none
2025-11-24T16:13:05.063 [DEBUG] [Thread-193054] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:13:05.122 [DEBUG] [Thread-193054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:13:05.123 [DEBUG] [Thread-193054] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:13:05.123 [DEBUG] [Thread-193054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:13:05.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:13:05.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:13:05.183 [DEBUG] [Thread-193054] [transport.py] [_log()] userauth is OK
2025-11-24T16:13:05.183 [DEBUG] [Thread-193054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:13:05.183 [DEBUG] [Thread-193054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:13:05.183 [DEBUG] [Thread-193054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:13:05.183 [DEBUG] [Thread-193054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:13:05.197 [INFO] [Thread-193054] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:13:05.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:13:05.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:13:06.087 [DEBUG] [Thread-193054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:13:06.087 [DEBUG] [Thread-193054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:13:06.135 [DEBUG] [Thread-193054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:13:06.135 [DEBUG] [Thread-193054] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:13:06.143 [DEBUG] [Thread-193054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:13:06.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:13:06.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-11-24T16:13:06.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-11-24T16:13:06.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:13:06.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:13:06.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:13:06.175 [DEBUG] [Thread-193054] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:13:09.585 [DEBUG] [Thread-193056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:13:24.631 [DEBUG] [Thread-193057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:13:36.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:13:36.198 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:13:36.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-11-24T16:13:37.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 13, 32), 25.22, 18.39, 0.0, 26.71, 22.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:13:37.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:13:32
2025-11-24T16:13:37.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:13:37.326 [DEBUG] [Thread-193058] [transport.py] [_log()] starting thread (client mode): 0xd07bc430
2025-11-24T16:13:37.326 [DEBUG] [Thread-193058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:13:37.345 [DEBUG] [Thread-193058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:13:37.345 [INFO] [Thread-193058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:13:37.350 [DEBUG] [Thread-193058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:13:37.350 [DEBUG] [Thread-193058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:13:37.350 [DEBUG] [Thread-193058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:13:37.350 [DEBUG] [Thread-193058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:13:37.350 [DEBUG] [Thread-193058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:13:37.350 [DEBUG] [Thread-193058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:13:37.350 [DEBUG] [Thread-193058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:13:37.350 [DEBUG] [Thread-193058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:13:37.351 [DEBUG] [Thread-193058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:13:37.351 [DEBUG] [Thread-193058] [transport.py] [_log()] client lang: <none>
2025-11-24T16:13:37.351 [DEBUG] [Thread-193058] [transport.py] [_log()] server lang: <none>
2025-11-24T16:13:37.351 [DEBUG] [Thread-193058] [transport.py] [_log()] kex follows: False
2025-11-24T16:13:37.351 [DEBUG] [Thread-193058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:13:37.351 [DEBUG] [Thread-193058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:13:37.351 [DEBUG] [Thread-193058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:13:37.351 [DEBUG] [Thread-193058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:13:37.351 [DEBUG] [Thread-193058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:13:37.352 [DEBUG] [Thread-193058] [transport.py] [_log()] Compression: none
2025-11-24T16:13:37.352 [DEBUG] [Thread-193058] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:13:37.374 [DEBUG] [Thread-193058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:13:37.374 [DEBUG] [Thread-193058] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:13:37.374 [DEBUG] [Thread-193058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:13:37.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:13:37.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:13:37.376 [DEBUG] [Thread-193058] [transport.py] [_log()] userauth is OK
2025-11-24T16:13:37.376 [DEBUG] [Thread-193058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:13:37.376 [DEBUG] [Thread-193058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:13:37.376 [DEBUG] [Thread-193058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:13:37.376 [DEBUG] [Thread-193058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:13:37.391 [INFO] [Thread-193058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:13:37.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:13:37.474 [DEBUG] [Thread-193060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:13:37.963 [DEBUG] [Thread-193058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:13:37.964 [DEBUG] [Thread-193058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:13:37.965 [DEBUG] [Thread-193058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:13:38.004 [DEBUG] [Thread-193058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:13:38.004 [DEBUG] [Thread-193058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:13:38.007 [DEBUG] [Thread-193058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:13:38.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:13:38.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:13:38.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:13:38.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:13:38.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:13:38.023 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:13:38.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:13:38.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:13:38.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:13:38.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.592408 -999.00  +22.70  19.31     23   +0.90 1 1 1 1 1   888    0 22.12 33.00 ----- 21.2 19.3 191.3 27.4 27.5 -29.0 27.0 -32.8 28.9 -28.2 29.5 -29.3
2025-11-24T16:13:38.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:13:38.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:13:38.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.592408
2025-11-24T16:13:38.031 [DEBUG] [Thread-193058] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:13:38.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:13:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:13:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:13:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:13:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:13:38.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:13:32', tmtdew=25.22, humidity=18.39, cloud=0.0, wind=26.71, temperature=22.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:13:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:13:38.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:13:38.144 [DEBUG] [Thread-193062] [transport.py] [_log()] starting thread (client mode): 0xd3161ba0
2025-11-24T16:13:38.144 [DEBUG] [Thread-193062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:13:38.159 [DEBUG] [Thread-193062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:13:38.159 [INFO] [Thread-193062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:13:38.166 [DEBUG] [Thread-193062] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:13:38.166 [DEBUG] [Thread-193062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:13:38.166 [DEBUG] [Thread-193062] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:13:38.166 [DEBUG] [Thread-193062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:13:38.166 [DEBUG] [Thread-193062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:13:38.166 [DEBUG] [Thread-193062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] client lang: <none>
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] server lang: <none>
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] kex follows: False
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] Compression: none
2025-11-24T16:13:38.167 [DEBUG] [Thread-193062] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:13:38.223 [DEBUG] [Thread-193062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:13:38.224 [DEBUG] [Thread-193062] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:13:38.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:13:38.225 [DEBUG] [Thread-193062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:13:38.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:13:38.280 [DEBUG] [Thread-193062] [transport.py] [_log()] userauth is OK
2025-11-24T16:13:38.280 [DEBUG] [Thread-193062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:13:38.281 [DEBUG] [Thread-193062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:13:38.281 [DEBUG] [Thread-193062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:13:38.281 [DEBUG] [Thread-193062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:13:38.299 [INFO] [Thread-193062] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:13:38.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:13:38.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:13:39.144 [DEBUG] [Thread-193062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:13:39.144 [DEBUG] [Thread-193062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:13:39.192 [DEBUG] [Thread-193062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:13:39.193 [DEBUG] [Thread-193062] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:13:39.202 [DEBUG] [Thread-193062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:13:39.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:13:39.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-11-24T16:13:39.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:13:39.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:13:39.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:13:39.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:13:39.236 [DEBUG] [Thread-193062] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:13:39.665 [DEBUG] [Thread-193064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:13:54.718 [DEBUG] [Thread-193065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:14:09.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:14:09.255 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:14:09.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-11-24T16:14:09.773 [DEBUG] [Thread-193066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:14:10.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 14, 5), 25.21, 18.39, 0.0, 24.83, 22.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:14:10.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:14:05
2025-11-24T16:14:10.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:14:10.496 [DEBUG] [Thread-193067] [transport.py] [_log()] starting thread (client mode): 0xd3161c60
2025-11-24T16:14:10.496 [DEBUG] [Thread-193067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:14:10.517 [DEBUG] [Thread-193067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:14:10.517 [INFO] [Thread-193067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:14:10.522 [DEBUG] [Thread-193067] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] client lang: <none>
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] server lang: <none>
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] kex follows: False
2025-11-24T16:14:10.523 [DEBUG] [Thread-193067] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:14:10.524 [DEBUG] [Thread-193067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:14:10.524 [DEBUG] [Thread-193067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:14:10.524 [DEBUG] [Thread-193067] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:14:10.524 [DEBUG] [Thread-193067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:14:10.525 [DEBUG] [Thread-193067] [transport.py] [_log()] Compression: none
2025-11-24T16:14:10.525 [DEBUG] [Thread-193067] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:14:10.549 [DEBUG] [Thread-193067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:14:10.551 [DEBUG] [Thread-193067] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:14:10.552 [DEBUG] [Thread-193067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:14:10.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:14:10.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:14:10.555 [DEBUG] [Thread-193067] [transport.py] [_log()] userauth is OK
2025-11-24T16:14:10.556 [DEBUG] [Thread-193067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:14:10.556 [DEBUG] [Thread-193067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:14:10.556 [DEBUG] [Thread-193067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:14:10.556 [DEBUG] [Thread-193067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:14:10.576 [INFO] [Thread-193067] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:14:10.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:14:11.232 [DEBUG] [Thread-193067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:14:11.233 [DEBUG] [Thread-193067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:14:11.235 [DEBUG] [Thread-193067] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:14:11.273 [DEBUG] [Thread-193067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:14:11.273 [DEBUG] [Thread-193067] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:14:11.278 [DEBUG] [Thread-193067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:14:11.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:14:11.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:14:11.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:14:11.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:14:11.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:14:11.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:14:11.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:14:11.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:14:11.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:14:11.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.593102 -999.00  +22.60  17.47     24   +1.00 1 1 1 1 1   888    0 22.60 31.14 ----- 15.9 17.5 182.2 27.1 27.5 -28.4 27.1 -27.9 29.0 -26.2 29.4 -27.4
2025-11-24T16:14:11.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:14:11.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:14:11.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.593102
2025-11-24T16:14:11.315 [DEBUG] [Thread-193067] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:14:11.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:14:11.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:14:11.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:14:11.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:14:11.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:14:11.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:14:05', tmtdew=25.21, humidity=18.39, cloud=0.0, wind=24.83, temperature=22.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:14:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:14:11.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:14:11.406 [DEBUG] [Thread-193070] [transport.py] [_log()] starting thread (client mode): 0xd07bc6d0
2025-11-24T16:14:11.406 [DEBUG] [Thread-193070] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:14:11.421 [DEBUG] [Thread-193070] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:14:11.421 [INFO] [Thread-193070] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:14:11.429 [DEBUG] [Thread-193070] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:14:11.429 [DEBUG] [Thread-193070] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] client lang: <none>
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] server lang: <none>
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] kex follows: False
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:14:11.430 [DEBUG] [Thread-193070] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:14:11.431 [DEBUG] [Thread-193070] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:14:11.431 [DEBUG] [Thread-193070] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:14:11.431 [DEBUG] [Thread-193070] [transport.py] [_log()] Compression: none
2025-11-24T16:14:11.431 [DEBUG] [Thread-193070] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:14:11.487 [DEBUG] [Thread-193070] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:14:11.487 [DEBUG] [Thread-193070] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:14:11.488 [DEBUG] [Thread-193070] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:14:11.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:14:11.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:14:11.543 [DEBUG] [Thread-193070] [transport.py] [_log()] userauth is OK
2025-11-24T16:14:11.544 [DEBUG] [Thread-193070] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:14:11.544 [DEBUG] [Thread-193070] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:14:11.544 [DEBUG] [Thread-193070] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:14:11.544 [DEBUG] [Thread-193070] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:14:11.566 [INFO] [Thread-193070] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:14:11.566 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:14:11.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:14:12.439 [DEBUG] [Thread-193070] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:14:12.439 [DEBUG] [Thread-193070] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:14:12.487 [DEBUG] [Thread-193070] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:14:12.487 [DEBUG] [Thread-193070] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:14:12.495 [DEBUG] [Thread-193070] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:14:12.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:14:12.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-11-24T16:14:12.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-11-24T16:14:12.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:14:12.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:14:12.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:14:12.528 [DEBUG] [Thread-193070] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:14:24.821 [DEBUG] [Thread-193072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:14:37.712 [DEBUG] [Thread-193073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:14:39.903 [DEBUG] [Thread-193074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:14:42.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:14:42.561 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:14:42.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:14:43.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 14, 38), 25.4, 18.29, 0.0, 27.93, 22.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:14:43.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:14:38
2025-11-24T16:14:43.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:14:43.850 [DEBUG] [Thread-193075] [transport.py] [_log()] starting thread (client mode): 0xd07ab8b0
2025-11-24T16:14:43.851 [DEBUG] [Thread-193075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:14:43.865 [DEBUG] [Thread-193075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:14:43.865 [INFO] [Thread-193075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:14:43.869 [DEBUG] [Thread-193075] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:14:43.869 [DEBUG] [Thread-193075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:14:43.869 [DEBUG] [Thread-193075] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:14:43.869 [DEBUG] [Thread-193075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:14:43.870 [DEBUG] [Thread-193075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:14:43.870 [DEBUG] [Thread-193075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:14:43.870 [DEBUG] [Thread-193075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:14:43.870 [DEBUG] [Thread-193075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:14:43.870 [DEBUG] [Thread-193075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:14:43.870 [DEBUG] [Thread-193075] [transport.py] [_log()] client lang: <none>
2025-11-24T16:14:43.870 [DEBUG] [Thread-193075] [transport.py] [_log()] server lang: <none>
2025-11-24T16:14:43.870 [DEBUG] [Thread-193075] [transport.py] [_log()] kex follows: False
2025-11-24T16:14:43.870 [DEBUG] [Thread-193075] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:14:43.871 [DEBUG] [Thread-193075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:14:43.871 [DEBUG] [Thread-193075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:14:43.871 [DEBUG] [Thread-193075] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:14:43.871 [DEBUG] [Thread-193075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:14:43.871 [DEBUG] [Thread-193075] [transport.py] [_log()] Compression: none
2025-11-24T16:14:43.872 [DEBUG] [Thread-193075] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:14:43.896 [DEBUG] [Thread-193075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:14:43.901 [DEBUG] [Thread-193075] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:14:43.904 [DEBUG] [Thread-193075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:14:43.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:14:43.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:14:43.908 [DEBUG] [Thread-193075] [transport.py] [_log()] userauth is OK
2025-11-24T16:14:43.909 [DEBUG] [Thread-193075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:14:43.909 [DEBUG] [Thread-193075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:14:43.909 [DEBUG] [Thread-193075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:14:43.909 [DEBUG] [Thread-193075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:14:43.927 [INFO] [Thread-193075] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:14:43.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:14:44.555 [DEBUG] [Thread-193075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:14:44.555 [DEBUG] [Thread-193075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:14:44.556 [DEBUG] [Thread-193075] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:14:44.596 [DEBUG] [Thread-193075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:14:44.596 [DEBUG] [Thread-193075] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:14:44.599 [DEBUG] [Thread-193075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:14:44.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:14:44.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:14:44.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:14:44.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:14:44.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:14:44.622 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:14:44.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:14:44.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:14:44.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:14:44.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.593449 -999.00  +22.80  18.60     23   +1.00 1 1 1 1 1   888    0 22.00 30.90 ----- 13.1 18.6 199.9 36.2 27.4 -29.3 27.0 -29.1 28.8 -27.0 29.4 -29.5
2025-11-24T16:14:44.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:14:44.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:14:44.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.593449
2025-11-24T16:14:44.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:14:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:14:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:14:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:14:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:14:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:14:38', tmtdew=25.4, humidity=18.29, cloud=0.0, wind=27.93, temperature=22.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:14:33.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:14:44.633 [DEBUG] [Thread-193075] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:14:44.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:14:44.720 [DEBUG] [Thread-193078] [transport.py] [_log()] starting thread (client mode): 0xd07ab850
2025-11-24T16:14:44.720 [DEBUG] [Thread-193078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:14:44.735 [DEBUG] [Thread-193078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:14:44.735 [INFO] [Thread-193078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:14:44.742 [DEBUG] [Thread-193078] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:14:44.742 [DEBUG] [Thread-193078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:14:44.742 [DEBUG] [Thread-193078] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] client lang: <none>
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] server lang: <none>
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] kex follows: False
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] Compression: none
2025-11-24T16:14:44.743 [DEBUG] [Thread-193078] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:14:44.798 [DEBUG] [Thread-193078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:14:44.798 [DEBUG] [Thread-193078] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:14:44.798 [DEBUG] [Thread-193078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:14:44.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:14:44.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:14:44.855 [DEBUG] [Thread-193078] [transport.py] [_log()] userauth is OK
2025-11-24T16:14:44.855 [DEBUG] [Thread-193078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:14:44.855 [DEBUG] [Thread-193078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:14:44.855 [DEBUG] [Thread-193078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:14:44.855 [DEBUG] [Thread-193078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:14:44.869 [INFO] [Thread-193078] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:14:44.869 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:14:44.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:14:45.722 [DEBUG] [Thread-193078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:14:45.723 [DEBUG] [Thread-193078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:14:45.771 [DEBUG] [Thread-193078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:14:45.771 [DEBUG] [Thread-193078] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:14:45.780 [DEBUG] [Thread-193078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:14:45.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:14:45.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-11-24T16:14:45.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-11-24T16:14:45.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:14:45.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:14:45.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:14:45.827 [DEBUG] [Thread-193078] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:14:54.936 [DEBUG] [Thread-193080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:15:10.003 [DEBUG] [Thread-193081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:15:15.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:15:15.851 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:15:15.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:15:16.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 15, 10), 25.45, 18.21, 0.0, 28.72, 22.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:15:16.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:15:10
2025-11-24T16:15:16.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:15:17.012 [DEBUG] [Thread-193082] [transport.py] [_log()] starting thread (client mode): 0xd07a9e40
2025-11-24T16:15:17.013 [DEBUG] [Thread-193082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:15:17.022 [DEBUG] [Thread-193082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:15:17.022 [INFO] [Thread-193082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:15:17.025 [DEBUG] [Thread-193082] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:15:17.025 [DEBUG] [Thread-193082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:15:17.025 [DEBUG] [Thread-193082] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:15:17.025 [DEBUG] [Thread-193082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:15:17.025 [DEBUG] [Thread-193082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:15:17.025 [DEBUG] [Thread-193082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] client lang: <none>
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] server lang: <none>
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] kex follows: False
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] Compression: none
2025-11-24T16:15:17.026 [DEBUG] [Thread-193082] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:15:17.053 [DEBUG] [Thread-193082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:15:17.058 [DEBUG] [Thread-193082] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:15:17.060 [DEBUG] [Thread-193082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:15:17.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:15:17.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:15:17.064 [DEBUG] [Thread-193082] [transport.py] [_log()] userauth is OK
2025-11-24T16:15:17.065 [DEBUG] [Thread-193082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:15:17.065 [DEBUG] [Thread-193082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:15:17.065 [DEBUG] [Thread-193082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:15:17.065 [DEBUG] [Thread-193082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:15:17.091 [INFO] [Thread-193082] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:15:17.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:15:17.674 [DEBUG] [Thread-193082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:15:17.674 [DEBUG] [Thread-193082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:15:17.677 [DEBUG] [Thread-193082] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:15:17.715 [DEBUG] [Thread-193082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:15:17.715 [DEBUG] [Thread-193082] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:15:17.718 [DEBUG] [Thread-193082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:15:17.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:15:17.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:15:17.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:15:17.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:15:17.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:15:17.738 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:15:17.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:15:17.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:15:17.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:15:17.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.593802 -999.00  +22.80  13.44     23   +1.00 1 1 1 1 1   888    0 21.65 29.99 ----- 21.2 13.4 183.3 27.4 27.4 -29.1 27.1 -28.7 28.9 -26.8 29.4 -28.3
2025-11-24T16:15:17.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:15:17.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:15:17.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.593802
2025-11-24T16:15:17.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:15:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:15:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:15:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:15:17.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:15:17.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:15:10', tmtdew=25.45, humidity=18.21, cloud=0.0, wind=28.72, temperature=22.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:15:04.493', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:15:17.748 [DEBUG] [Thread-193082] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:15:17.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:15:17.832 [DEBUG] [Thread-193085] [transport.py] [_log()] starting thread (client mode): 0xd07bf3d0
2025-11-24T16:15:17.832 [DEBUG] [Thread-193085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:15:17.847 [DEBUG] [Thread-193085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:15:17.847 [INFO] [Thread-193085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] client lang: <none>
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] server lang: <none>
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] kex follows: False
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] Compression: none
2025-11-24T16:15:17.854 [DEBUG] [Thread-193085] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:15:17.917 [DEBUG] [Thread-193085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:15:17.917 [DEBUG] [Thread-193085] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:15:17.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:15:17.918 [DEBUG] [Thread-193085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:15:17.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:15:17.975 [DEBUG] [Thread-193085] [transport.py] [_log()] userauth is OK
2025-11-24T16:15:17.975 [DEBUG] [Thread-193085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:15:17.975 [DEBUG] [Thread-193085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:15:17.975 [DEBUG] [Thread-193085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:15:17.975 [DEBUG] [Thread-193085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:15:17.989 [INFO] [Thread-193085] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:15:17.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:15:17.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:15:18.853 [DEBUG] [Thread-193085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:15:18.853 [DEBUG] [Thread-193085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:15:18.902 [DEBUG] [Thread-193085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:15:18.903 [DEBUG] [Thread-193085] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:15:18.912 [DEBUG] [Thread-193085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:15:18.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:15:18.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-11-24T16:15:18.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-11-24T16:15:18.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:15:18.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:15:18.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:15:18.954 [DEBUG] [Thread-193085] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:15:25.033 [DEBUG] [Thread-193087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:15:37.967 [DEBUG] [Thread-193088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:15:40.126 [DEBUG] [Thread-193089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:15:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:15:48.978 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:15:48.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-11-24T16:15:49.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 15, 43), 25.29, 18.17, 0.0, 32.98, 22.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:15:49.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:15:43
2025-11-24T16:15:49.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:15:50.022 [DEBUG] [Thread-193090] [transport.py] [_log()] starting thread (client mode): 0xd31370a0
2025-11-24T16:15:50.022 [DEBUG] [Thread-193090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:15:50.039 [DEBUG] [Thread-193090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:15:50.039 [INFO] [Thread-193090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] client lang: <none>
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] server lang: <none>
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] kex follows: False
2025-11-24T16:15:50.042 [DEBUG] [Thread-193090] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:15:50.043 [DEBUG] [Thread-193090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:15:50.043 [DEBUG] [Thread-193090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:15:50.043 [DEBUG] [Thread-193090] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:15:50.043 [DEBUG] [Thread-193090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:15:50.043 [DEBUG] [Thread-193090] [transport.py] [_log()] Compression: none
2025-11-24T16:15:50.043 [DEBUG] [Thread-193090] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:15:50.067 [DEBUG] [Thread-193090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:15:50.069 [DEBUG] [Thread-193090] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:15:50.070 [DEBUG] [Thread-193090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:15:50.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:15:50.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:15:50.113 [DEBUG] [Thread-193090] [transport.py] [_log()] userauth is OK
2025-11-24T16:15:50.113 [DEBUG] [Thread-193090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:15:50.113 [DEBUG] [Thread-193090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:15:50.113 [DEBUG] [Thread-193090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:15:50.113 [DEBUG] [Thread-193090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:15:50.129 [INFO] [Thread-193090] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:15:50.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:15:50.697 [DEBUG] [Thread-193090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:15:50.697 [DEBUG] [Thread-193090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:15:50.698 [DEBUG] [Thread-193090] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:15:50.738 [DEBUG] [Thread-193090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:15:50.738 [DEBUG] [Thread-193090] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:15:50.740 [DEBUG] [Thread-193090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:15:50.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:15:50.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:15:50.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:15:50.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:15:50.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:15:50.760 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:15:50.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:15:50.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:15:50.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:15:50.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.594144 -999.00  +22.80  16.01     23   +1.00 1 1 1 1 1   888    0 21.82 26.43 ----- 14.9 16.0 197.5 24.4 27.4 -28.7 27.2 -27.8 28.8 -27.1 29.5 -28.5
2025-11-24T16:15:50.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:15:50.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:15:50.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.594144
2025-11-24T16:15:50.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:15:50.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:15:50.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:15:50.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:15:50.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:15:50.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:15:43', tmtdew=25.29, humidity=18.17, cloud=0.0, wind=32.98, temperature=22.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:15:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:15:50.768 [DEBUG] [Thread-193090] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:15:50.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:15:50.855 [DEBUG] [Thread-193093] [transport.py] [_log()] starting thread (client mode): 0xd07a8730
2025-11-24T16:15:50.855 [DEBUG] [Thread-193093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:15:50.871 [DEBUG] [Thread-193093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:15:50.871 [INFO] [Thread-193093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] client lang: <none>
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] server lang: <none>
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] kex follows: False
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] Compression: none
2025-11-24T16:15:50.878 [DEBUG] [Thread-193093] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:15:50.938 [DEBUG] [Thread-193093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:15:50.938 [DEBUG] [Thread-193093] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:15:50.938 [DEBUG] [Thread-193093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:15:50.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:15:50.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:15:50.995 [DEBUG] [Thread-193093] [transport.py] [_log()] userauth is OK
2025-11-24T16:15:50.995 [DEBUG] [Thread-193093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:15:50.995 [DEBUG] [Thread-193093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:15:50.995 [DEBUG] [Thread-193093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:15:50.995 [DEBUG] [Thread-193093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:15:51.010 [INFO] [Thread-193093] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:15:51.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:15:51.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:15:51.904 [DEBUG] [Thread-193093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:15:51.904 [DEBUG] [Thread-193093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:15:51.952 [DEBUG] [Thread-193093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:15:51.952 [DEBUG] [Thread-193093] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:15:51.961 [DEBUG] [Thread-193093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:15:51.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:15:51.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:15:51.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-11-24T16:15:51.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:15:51.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:15:51.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:15:51.997 [DEBUG] [Thread-193093] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:15:55.156 [DEBUG] [Thread-193095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:16:10.237 [DEBUG] [Thread-193096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:16:21.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:16:21.993 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:16:22.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-11-24T16:16:22.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 16, 16), 25.31, 18.16, 0.0, 31.09, 22.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:16:22.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:16:16
2025-11-24T16:16:23.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:16:23.275 [DEBUG] [Thread-193097] [transport.py] [_log()] starting thread (client mode): 0xd07bdd50
2025-11-24T16:16:23.275 [DEBUG] [Thread-193097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:16:23.289 [DEBUG] [Thread-193097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:16:23.289 [INFO] [Thread-193097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] client lang: <none>
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] server lang: <none>
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] kex follows: False
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:16:23.295 [DEBUG] [Thread-193097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:16:23.296 [DEBUG] [Thread-193097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:16:23.296 [DEBUG] [Thread-193097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:16:23.296 [DEBUG] [Thread-193097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:16:23.296 [DEBUG] [Thread-193097] [transport.py] [_log()] Compression: none
2025-11-24T16:16:23.296 [DEBUG] [Thread-193097] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:16:23.321 [DEBUG] [Thread-193097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:16:23.322 [DEBUG] [Thread-193097] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:16:23.322 [DEBUG] [Thread-193097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:16:23.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:16:23.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:16:23.325 [DEBUG] [Thread-193097] [transport.py] [_log()] userauth is OK
2025-11-24T16:16:23.325 [DEBUG] [Thread-193097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:16:23.325 [DEBUG] [Thread-193097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:16:23.325 [DEBUG] [Thread-193097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:16:23.325 [DEBUG] [Thread-193097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:16:23.334 [INFO] [Thread-193097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:16:23.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:16:23.921 [DEBUG] [Thread-193097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:16:23.921 [DEBUG] [Thread-193097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:16:23.921 [DEBUG] [Thread-193097] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:16:23.962 [DEBUG] [Thread-193097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:16:23.962 [DEBUG] [Thread-193097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:16:23.964 [DEBUG] [Thread-193097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:16:23.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:16:23.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:16:23.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:16:23.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:16:23.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:16:23.983 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:16:23.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:16:23.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:16:23.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:16:23.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.594491 -999.00  +23.00  20.99     23   +1.00 1 1 1 1 1   888    0 22.15 27.67 ----- 29.1 21.0 178.0 39.7 27.3 -30.6 26.9 -29.8 28.8 -26.4 29.3 -30.4
2025-11-24T16:16:23.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:16:23.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:16:23.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.594491
2025-11-24T16:16:23.990 [DEBUG] [Thread-193097] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:16:23.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:16:24.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:16:24.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:16:24.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:16:24.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:16:24.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:16:16', tmtdew=25.31, humidity=18.16, cloud=0.0, wind=31.09, temperature=22.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:16:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:16:24.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:16:24.088 [DEBUG] [Thread-193100] [transport.py] [_log()] starting thread (client mode): 0xd31b13f0
2025-11-24T16:16:24.088 [DEBUG] [Thread-193100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:16:24.103 [DEBUG] [Thread-193100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:16:24.103 [INFO] [Thread-193100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] client lang: <none>
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] server lang: <none>
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] kex follows: False
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] Compression: none
2025-11-24T16:16:24.113 [DEBUG] [Thread-193100] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:16:24.166 [DEBUG] [Thread-193100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:16:24.166 [DEBUG] [Thread-193100] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:16:24.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:16:24.166 [DEBUG] [Thread-193100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:16:24.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:16:24.230 [DEBUG] [Thread-193100] [transport.py] [_log()] userauth is OK
2025-11-24T16:16:24.230 [DEBUG] [Thread-193100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:16:24.230 [DEBUG] [Thread-193100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:16:24.230 [DEBUG] [Thread-193100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:16:24.230 [DEBUG] [Thread-193100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:16:24.248 [INFO] [Thread-193100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:16:24.248 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:16:24.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:16:25.110 [DEBUG] [Thread-193100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:16:25.110 [DEBUG] [Thread-193100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:16:25.158 [DEBUG] [Thread-193100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:16:25.158 [DEBUG] [Thread-193100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:16:25.166 [DEBUG] [Thread-193100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:16:25.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:16:25.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-11-24T16:16:25.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-11-24T16:16:25.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:16:25.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:16:25.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:16:25.199 [DEBUG] [Thread-193100] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:16:25.264 [DEBUG] [Thread-193102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:16:38.264 [DEBUG] [Thread-193103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:16:40.299 [DEBUG] [Thread-193104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:16:55.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:16:55.222 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:16:55.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-11-24T16:16:55.337 [DEBUG] [Thread-193105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:16:56.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 16, 49), 25.77, 17.97, 0.0, 30.17, 22.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:16:56.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:16:49
2025-11-24T16:16:56.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:16:56.356 [DEBUG] [Thread-193106] [transport.py] [_log()] starting thread (client mode): 0xd31b2c20
2025-11-24T16:16:56.356 [DEBUG] [Thread-193106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:16:56.375 [DEBUG] [Thread-193106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:16:56.376 [INFO] [Thread-193106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] client lang: <none>
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] server lang: <none>
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] kex follows: False
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:16:56.379 [DEBUG] [Thread-193106] [transport.py] [_log()] Compression: none
2025-11-24T16:16:56.380 [DEBUG] [Thread-193106] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:16:56.396 [DEBUG] [Thread-193106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:16:56.397 [DEBUG] [Thread-193106] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:16:56.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:16:56.398 [DEBUG] [Thread-193106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:16:56.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:16:56.441 [DEBUG] [Thread-193106] [transport.py] [_log()] userauth is OK
2025-11-24T16:16:56.441 [DEBUG] [Thread-193106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:16:56.441 [DEBUG] [Thread-193106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:16:56.441 [DEBUG] [Thread-193106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:16:56.442 [DEBUG] [Thread-193106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:16:56.479 [INFO] [Thread-193106] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:16:56.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:16:57.075 [DEBUG] [Thread-193106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:16:57.075 [DEBUG] [Thread-193106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:16:57.076 [DEBUG] [Thread-193106] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:16:57.116 [DEBUG] [Thread-193106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:16:57.116 [DEBUG] [Thread-193106] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:16:57.118 [DEBUG] [Thread-193106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:16:57.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:16:57.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:16:57.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:16:57.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:16:57.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:16:57.137 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:16:57.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:16:57.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:16:57.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:16:57.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.594838 -999.00  +22.50  23.25     23   +0.90 1 1 1 1 1   888    0 21.95 27.83 ----- 23.6 23.2 178.0 36.1 27.3 -29.5 26.9 -32.2 28.6 -28.2 29.2 -29.9
2025-11-24T16:16:57.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:16:57.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:16:57.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.594838
2025-11-24T16:16:57.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:16:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:16:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:16:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:16:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:16:57.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:16:49', tmtdew=25.77, humidity=17.97, cloud=0.0, wind=30.17, temperature=22.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:16:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:16:57.138 [DEBUG] [Thread-193106] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:16:57.210 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:16:57.222 [DEBUG] [Thread-193109] [transport.py] [_log()] starting thread (client mode): 0xd07beaa0
2025-11-24T16:16:57.222 [DEBUG] [Thread-193109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:16:57.237 [DEBUG] [Thread-193109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:16:57.237 [INFO] [Thread-193109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:16:57.244 [DEBUG] [Thread-193109] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:16:57.244 [DEBUG] [Thread-193109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] client lang: <none>
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] server lang: <none>
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] kex follows: False
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] Compression: none
2025-11-24T16:16:57.245 [DEBUG] [Thread-193109] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:16:57.303 [DEBUG] [Thread-193109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:16:57.303 [DEBUG] [Thread-193109] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:16:57.304 [DEBUG] [Thread-193109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:16:57.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:16:57.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:16:57.359 [DEBUG] [Thread-193109] [transport.py] [_log()] userauth is OK
2025-11-24T16:16:57.359 [DEBUG] [Thread-193109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:16:57.359 [DEBUG] [Thread-193109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:16:57.359 [DEBUG] [Thread-193109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:16:57.359 [DEBUG] [Thread-193109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:16:57.373 [INFO] [Thread-193109] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:16:57.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:16:57.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:16:58.215 [DEBUG] [Thread-193109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:16:58.215 [DEBUG] [Thread-193109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:16:58.264 [DEBUG] [Thread-193109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:16:58.264 [DEBUG] [Thread-193109] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:16:58.277 [DEBUG] [Thread-193109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:16:58.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:16:58.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:16:58.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:16:58.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:16:58.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:16:58.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:16:58.314 [DEBUG] [Thread-193109] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:17:10.367 [DEBUG] [Thread-193111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:17:25.473 [DEBUG] [Thread-193112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:17:28.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:17:28.334 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:17:28.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-11-24T16:17:29.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 17, 21), 25.53, 18.24, 0.0, 28.65, 22.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:17:29.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:17:21
2025-11-24T16:17:29.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:17:29.518 [DEBUG] [Thread-193113] [transport.py] [_log()] starting thread (client mode): 0xd3134a00
2025-11-24T16:17:29.518 [DEBUG] [Thread-193113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:17:29.524 [DEBUG] [Thread-193113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:17:29.524 [INFO] [Thread-193113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:17:29.527 [DEBUG] [Thread-193113] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] client lang: <none>
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] server lang: <none>
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] kex follows: False
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:17:29.528 [DEBUG] [Thread-193113] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:17:29.529 [DEBUG] [Thread-193113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:17:29.529 [DEBUG] [Thread-193113] [transport.py] [_log()] Compression: none
2025-11-24T16:17:29.529 [DEBUG] [Thread-193113] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:17:29.558 [DEBUG] [Thread-193113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:17:29.563 [DEBUG] [Thread-193113] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:17:29.565 [DEBUG] [Thread-193113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:17:29.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:17:29.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:17:29.569 [DEBUG] [Thread-193113] [transport.py] [_log()] userauth is OK
2025-11-24T16:17:29.569 [DEBUG] [Thread-193113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:17:29.569 [DEBUG] [Thread-193113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:17:29.569 [DEBUG] [Thread-193113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:17:29.569 [DEBUG] [Thread-193113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:17:29.596 [INFO] [Thread-193113] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:17:29.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:17:30.203 [DEBUG] [Thread-193113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:17:30.203 [DEBUG] [Thread-193113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:17:30.213 [DEBUG] [Thread-193113] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:17:30.244 [DEBUG] [Thread-193113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:17:30.244 [DEBUG] [Thread-193113] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:17:30.246 [DEBUG] [Thread-193113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:17:30.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:17:30.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:17:30.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:17:30.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:17:30.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:17:30.266 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:17:30.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:17:30.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:17:30.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:17:30.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.595185 -999.00  +22.10  22.22     24   +0.90 1 1 1 1 1   888    0 22.23 26.21 ----- 21.9 22.2 187.6 33.9 27.1 -28.9 26.3 -33.2 28.3 -28.6 28.9 -31.3
2025-11-24T16:17:30.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:17:30.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:17:30.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.595185
2025-11-24T16:17:30.273 [DEBUG] [Thread-193113] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:17:30.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:17:30.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:17:30.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:17:30.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:17:30.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:17:30.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:17:21', tmtdew=25.53, humidity=18.24, cloud=0.0, wind=28.65, temperature=22.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:17:03.984', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:17:30.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:17:30.370 [DEBUG] [Thread-193116] [transport.py] [_log()] starting thread (client mode): 0xd31362f0
2025-11-24T16:17:30.370 [DEBUG] [Thread-193116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:17:30.384 [DEBUG] [Thread-193116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:17:30.384 [INFO] [Thread-193116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] client lang: <none>
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] server lang: <none>
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] kex follows: False
2025-11-24T16:17:30.393 [DEBUG] [Thread-193116] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:17:30.394 [DEBUG] [Thread-193116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:17:30.394 [DEBUG] [Thread-193116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:17:30.394 [DEBUG] [Thread-193116] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:17:30.394 [DEBUG] [Thread-193116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:17:30.394 [DEBUG] [Thread-193116] [transport.py] [_log()] Compression: none
2025-11-24T16:17:30.394 [DEBUG] [Thread-193116] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:17:30.450 [DEBUG] [Thread-193116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:17:30.450 [DEBUG] [Thread-193116] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:17:30.450 [DEBUG] [Thread-193116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:17:30.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:17:30.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:17:30.510 [DEBUG] [Thread-193116] [transport.py] [_log()] userauth is OK
2025-11-24T16:17:30.511 [DEBUG] [Thread-193116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:17:30.511 [DEBUG] [Thread-193116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:17:30.511 [DEBUG] [Thread-193116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:17:30.511 [DEBUG] [Thread-193116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:17:30.524 [INFO] [Thread-193116] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:17:30.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:17:30.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:17:31.368 [DEBUG] [Thread-193116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:17:31.368 [DEBUG] [Thread-193116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:17:31.416 [DEBUG] [Thread-193116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:17:31.417 [DEBUG] [Thread-193116] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:17:31.426 [DEBUG] [Thread-193116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:17:31.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:17: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-11-24T16:17:31.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-11-24T16:17:31.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:17:31.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:17:31.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:17:31.464 [DEBUG] [Thread-193116] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:17:38.587 [DEBUG] [Thread-193118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:17:40.519 [DEBUG] [Thread-193119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:17:55.591 [DEBUG] [Thread-193120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:18:01.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:18:01.467 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:18:01.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-11-24T16:18:02.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 17, 54), 25.11, 18.72, 0.0, 32.24, 22.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:18:02.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:17:54
2025-11-24T16:18:02.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:18:02.584 [DEBUG] [Thread-193121] [transport.py] [_log()] starting thread (client mode): 0xd31b3e50
2025-11-24T16:18:02.584 [DEBUG] [Thread-193121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:18:02.591 [DEBUG] [Thread-193121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:18:02.592 [INFO] [Thread-193121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] client lang: <none>
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] server lang: <none>
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] kex follows: False
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:18:02.594 [DEBUG] [Thread-193121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:18:02.595 [DEBUG] [Thread-193121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:18:02.595 [DEBUG] [Thread-193121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:18:02.595 [DEBUG] [Thread-193121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:18:02.595 [DEBUG] [Thread-193121] [transport.py] [_log()] Compression: none
2025-11-24T16:18:02.595 [DEBUG] [Thread-193121] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:18:02.620 [DEBUG] [Thread-193121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:18:02.622 [DEBUG] [Thread-193121] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:18:02.623 [DEBUG] [Thread-193121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:18:02.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:18:02.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:18:02.627 [DEBUG] [Thread-193121] [transport.py] [_log()] userauth is OK
2025-11-24T16:18:02.627 [DEBUG] [Thread-193121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:18:02.627 [DEBUG] [Thread-193121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:18:02.627 [DEBUG] [Thread-193121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:18:02.627 [DEBUG] [Thread-193121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:18:02.649 [INFO] [Thread-193121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:18:02.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:18:03.229 [DEBUG] [Thread-193121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:18:03.230 [DEBUG] [Thread-193121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:18:03.239 [DEBUG] [Thread-193121] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:18:03.271 [DEBUG] [Thread-193121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:18:03.271 [DEBUG] [Thread-193121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:18:03.274 [DEBUG] [Thread-193121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:18:03.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:18:03.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:18:03.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:18:03.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:18:03.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:18:03.300 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:18:03.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:18:03.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:18:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:18:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.595533 -999.00  +22.20  23.02     24   +1.00 1 1 1 1 1   888    0 22.02 28.96 ----- 19.1 23.0 186.4 30.7 27.1 -28.5 26.6 -31.1 28.4 -26.4 28.9 -30.2
2025-11-24T16:18:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:18:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:18:03.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.595533
2025-11-24T16:18:03.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:18:03.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:18:03.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:18:03.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:18:03.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:18:03.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:17:54', tmtdew=25.11, humidity=18.72, cloud=0.0, wind=32.24, temperature=22.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:17:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:18:03.310 [DEBUG] [Thread-193121] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:18:03.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:18:03.409 [DEBUG] [Thread-193124] [transport.py] [_log()] starting thread (client mode): 0xd31b2b60
2025-11-24T16:18:03.409 [DEBUG] [Thread-193124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:18:03.423 [DEBUG] [Thread-193124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:18:03.423 [INFO] [Thread-193124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:18:03.431 [DEBUG] [Thread-193124] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] client lang: <none>
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] server lang: <none>
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] kex follows: False
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:18:03.432 [DEBUG] [Thread-193124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:18:03.433 [DEBUG] [Thread-193124] [transport.py] [_log()] Compression: none
2025-11-24T16:18:03.433 [DEBUG] [Thread-193124] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:18:03.494 [DEBUG] [Thread-193124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:18:03.494 [DEBUG] [Thread-193124] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:18:03.494 [DEBUG] [Thread-193124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:18:03.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:18:03.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:18:03.558 [DEBUG] [Thread-193124] [transport.py] [_log()] userauth is OK
2025-11-24T16:18:03.558 [DEBUG] [Thread-193124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:18:03.558 [DEBUG] [Thread-193124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:18:03.558 [DEBUG] [Thread-193124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:18:03.558 [DEBUG] [Thread-193124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:18:03.579 [INFO] [Thread-193124] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:18:03.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:18:03.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:18:04.416 [DEBUG] [Thread-193124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:18:04.416 [DEBUG] [Thread-193124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:18:04.465 [DEBUG] [Thread-193124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:18:04.465 [DEBUG] [Thread-193124] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:18:04.475 [DEBUG] [Thread-193124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:18:04.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:18:04.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')
2025-11-24T16:18:04.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-11-24T16:18:04.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:18:04.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:18:04.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:18:04.513 [DEBUG] [Thread-193124] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:18:10.626 [DEBUG] [Thread-193126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:18:25.660 [DEBUG] [Thread-193127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:18:34.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:18:34.547 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:18:34.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-11-24T16:18:35.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 18, 26), 24.98, 18.84, 0.0, 29.04, 22.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:18:35.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:18:26
2025-11-24T16:18:35.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:18:35.675 [DEBUG] [Thread-193128] [transport.py] [_log()] starting thread (client mode): 0xd07bee30
2025-11-24T16:18:35.676 [DEBUG] [Thread-193128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:18:35.689 [DEBUG] [Thread-193128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:18:35.689 [INFO] [Thread-193128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] client lang: <none>
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] server lang: <none>
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] kex follows: False
2025-11-24T16:18:35.691 [DEBUG] [Thread-193128] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:18:35.692 [DEBUG] [Thread-193128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:18:35.692 [DEBUG] [Thread-193128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:18:35.692 [DEBUG] [Thread-193128] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:18:35.692 [DEBUG] [Thread-193128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:18:35.692 [DEBUG] [Thread-193128] [transport.py] [_log()] Compression: none
2025-11-24T16:18:35.692 [DEBUG] [Thread-193128] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:18:35.713 [DEBUG] [Thread-193128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:18:35.716 [DEBUG] [Thread-193128] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:18:35.717 [DEBUG] [Thread-193128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:18:35.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:18:35.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:18:35.722 [DEBUG] [Thread-193128] [transport.py] [_log()] userauth is OK
2025-11-24T16:18:35.723 [DEBUG] [Thread-193128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:18:35.723 [DEBUG] [Thread-193128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:18:35.723 [DEBUG] [Thread-193128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:18:35.723 [DEBUG] [Thread-193128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:18:35.748 [INFO] [Thread-193128] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:18:35.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:18:36.327 [DEBUG] [Thread-193128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:18:36.327 [DEBUG] [Thread-193128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:18:36.337 [DEBUG] [Thread-193128] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:18:36.368 [DEBUG] [Thread-193128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:18:36.368 [DEBUG] [Thread-193128] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:18:36.371 [DEBUG] [Thread-193128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:18:36.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:18:36.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:18:36.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:18:36.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:18:36.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:18:36.391 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:18:36.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:18:36.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:18:36.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:18:36.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.595880 -999.00  +22.20  24.90     24   +0.90 1 1 1 1 1   888    0 22.55 28.73 ----- 25.9 24.9 179.8 34.7 26.8 -30.5 26.4 -34.2 28.3 -30.0 28.8 -29.8
2025-11-24T16:18:36.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:18:36.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:18:36.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.595880
2025-11-24T16:18:36.398 [DEBUG] [Thread-193128] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:18:36.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:18:36.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:18:36.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:18:36.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:18:36.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:18:36.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:18:26', tmtdew=24.98, humidity=18.84, cloud=0.0, wind=29.04, temperature=22.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:18:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:18:36.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:18:36.490 [DEBUG] [Thread-193131] [transport.py] [_log()] starting thread (client mode): 0xd07bcca0
2025-11-24T16:18:36.490 [DEBUG] [Thread-193131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:18:36.505 [DEBUG] [Thread-193131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:18:36.505 [INFO] [Thread-193131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] client lang: <none>
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] server lang: <none>
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] kex follows: False
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] Compression: none
2025-11-24T16:18:36.512 [DEBUG] [Thread-193131] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:18:36.569 [DEBUG] [Thread-193131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:18:36.569 [DEBUG] [Thread-193131] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:18:36.569 [DEBUG] [Thread-193131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:18:36.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:18:36.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:18:36.631 [DEBUG] [Thread-193131] [transport.py] [_log()] userauth is OK
2025-11-24T16:18:36.631 [DEBUG] [Thread-193131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:18:36.631 [DEBUG] [Thread-193131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:18:36.631 [DEBUG] [Thread-193131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:18:36.631 [DEBUG] [Thread-193131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:18:36.645 [INFO] [Thread-193131] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:18:36.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:18:36.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:18:37.496 [DEBUG] [Thread-193131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:18:37.497 [DEBUG] [Thread-193131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:18:37.544 [DEBUG] [Thread-193131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:18:37.545 [DEBUG] [Thread-193131] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:18:37.554 [DEBUG] [Thread-193131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:18:37.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:18:37.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:18:37.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:18:37.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:18:37.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:18:37.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:18:37.602 [DEBUG] [Thread-193131] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:18:38.898 [DEBUG] [Thread-193133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:18:40.689 [DEBUG] [Thread-193134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:18:55.747 [DEBUG] [Thread-193135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:19:07.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:19:07.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:19:07.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:19:08.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 18, 59), 24.58, 19.02, 0.0, 26.54, 21.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:19:08.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:18:59
2025-11-24T16:19:08.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:19:08.708 [DEBUG] [Thread-193136] [transport.py] [_log()] starting thread (client mode): 0xd31b1ab0
2025-11-24T16:19:08.709 [DEBUG] [Thread-193136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:19:08.715 [DEBUG] [Thread-193136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:19:08.715 [INFO] [Thread-193136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] client lang: <none>
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] server lang: <none>
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] kex follows: False
2025-11-24T16:19:08.725 [DEBUG] [Thread-193136] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:19:08.726 [DEBUG] [Thread-193136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:19:08.726 [DEBUG] [Thread-193136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:19:08.726 [DEBUG] [Thread-193136] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:19:08.726 [DEBUG] [Thread-193136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:19:08.726 [DEBUG] [Thread-193136] [transport.py] [_log()] Compression: none
2025-11-24T16:19:08.726 [DEBUG] [Thread-193136] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:19:08.742 [DEBUG] [Thread-193136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:19:08.748 [DEBUG] [Thread-193136] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:19:08.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:19:08.750 [DEBUG] [Thread-193136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:19:08.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:19:08.753 [DEBUG] [Thread-193136] [transport.py] [_log()] userauth is OK
2025-11-24T16:19:08.753 [DEBUG] [Thread-193136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:19:08.753 [DEBUG] [Thread-193136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:19:08.753 [DEBUG] [Thread-193136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:19:08.754 [DEBUG] [Thread-193136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:19:08.779 [INFO] [Thread-193136] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:19:08.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:19:09.375 [DEBUG] [Thread-193136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:19:09.375 [DEBUG] [Thread-193136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:19:09.380 [DEBUG] [Thread-193136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:19:09.417 [DEBUG] [Thread-193136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:19:09.417 [DEBUG] [Thread-193136] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:19:09.420 [DEBUG] [Thread-193136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:19:09.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:19:09.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:19:09.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:19:09.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:19:09.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:19:09.443 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:19:09.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:19:09.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:19:09.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:19:09.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.596227 -999.00  +21.90  22.68     24   +0.90 1 1 1 1 1   888    0 21.84 24.15 ----- 20.2 22.7 168.4 30.9 26.8 -30.0 26.2 -28.0 28.1 -27.0 28.8 -29.0
2025-11-24T16:19:09.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:19:09.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:19:09.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.596227
2025-11-24T16:19:09.449 [DEBUG] [Thread-193136] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:19:09.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:19:09.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:19:09.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:19:09.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:19:09.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:19:09.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:18:59', tmtdew=24.58, humidity=19.02, cloud=0.0, wind=26.54, temperature=21.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:18:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:19:09.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:19:09.540 [DEBUG] [Thread-193139] [transport.py] [_log()] starting thread (client mode): 0xd07bf100
2025-11-24T16:19:09.540 [DEBUG] [Thread-193139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:19:09.555 [DEBUG] [Thread-193139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:19:09.555 [INFO] [Thread-193139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:19:09.562 [DEBUG] [Thread-193139] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:19:09.562 [DEBUG] [Thread-193139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:19:09.562 [DEBUG] [Thread-193139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:19:09.562 [DEBUG] [Thread-193139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:19:09.562 [DEBUG] [Thread-193139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:19:09.562 [DEBUG] [Thread-193139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:19:09.562 [DEBUG] [Thread-193139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:19:09.562 [DEBUG] [Thread-193139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] client lang: <none>
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] server lang: <none>
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] kex follows: False
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] Compression: none
2025-11-24T16:19:09.563 [DEBUG] [Thread-193139] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:19:09.618 [DEBUG] [Thread-193139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:19:09.618 [DEBUG] [Thread-193139] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:19:09.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:19:09.627 [DEBUG] [Thread-193139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:19:09.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:19:09.675 [DEBUG] [Thread-193139] [transport.py] [_log()] userauth is OK
2025-11-24T16:19:09.675 [DEBUG] [Thread-193139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:19:09.675 [DEBUG] [Thread-193139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:19:09.675 [DEBUG] [Thread-193139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:19:09.675 [DEBUG] [Thread-193139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:19:09.688 [INFO] [Thread-193139] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:19:09.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:19:09.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:19:10.550 [DEBUG] [Thread-193139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:19:10.550 [DEBUG] [Thread-193139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:19:10.597 [DEBUG] [Thread-193139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:19:10.597 [DEBUG] [Thread-193139] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:19:10.605 [DEBUG] [Thread-193139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:19:10.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:19:10.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-11-24T16:19:10.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-11-24T16:19:10.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:19:10.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:19:10.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:19:10.639 [DEBUG] [Thread-193139] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:19:10.790 [DEBUG] [Thread-193141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:19:25.881 [DEBUG] [Thread-193142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:19:39.124 [DEBUG] [Thread-193143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:19:40.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:19:40.633 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:19:40.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-11-24T16:19:40.912 [DEBUG] [Thread-193144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:19:41.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 19, 31), 24.31, 19.32, 0.0, 22.16, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:19:41.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:19:31
2025-11-24T16:19:41.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:19:41.612 [DEBUG] [Thread-193145] [transport.py] [_log()] starting thread (client mode): 0xd07bc220
2025-11-24T16:19:41.612 [DEBUG] [Thread-193145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:19:41.632 [DEBUG] [Thread-193145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:19:41.632 [INFO] [Thread-193145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:19:41.634 [DEBUG] [Thread-193145] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] client lang: <none>
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] server lang: <none>
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] kex follows: False
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] Compression: none
2025-11-24T16:19:41.635 [DEBUG] [Thread-193145] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:19:41.647 [DEBUG] [Thread-193145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:19:41.648 [DEBUG] [Thread-193145] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:19:41.648 [DEBUG] [Thread-193145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:19:41.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:19:41.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:19:41.649 [DEBUG] [Thread-193145] [transport.py] [_log()] userauth is OK
2025-11-24T16:19:41.649 [DEBUG] [Thread-193145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:19:41.649 [DEBUG] [Thread-193145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:19:41.649 [DEBUG] [Thread-193145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:19:41.649 [DEBUG] [Thread-193145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:19:41.662 [INFO] [Thread-193145] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:19:41.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:19:42.259 [DEBUG] [Thread-193145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:19:42.259 [DEBUG] [Thread-193145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:19:42.259 [DEBUG] [Thread-193145] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:19:42.300 [DEBUG] [Thread-193145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:19:42.300 [DEBUG] [Thread-193145] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:19:42.303 [DEBUG] [Thread-193145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:19:42.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:19:42.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:19:42.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:19:42.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:19:42.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:19:42.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:19:42.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:19:42.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:19:42.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:19:42.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.596922 -999.00  +21.70  11.48     25   +1.00 1 1 1 1 1   888    0 22.19 19.00 ----- 16.2 11.5 205.2 25.9 26.8 -28.4 26.4 -27.7 28.1 -26.3 28.6 -28.2
2025-11-24T16:19:42.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:19:42.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:19:42.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.596922
2025-11-24T16:19:42.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:19:42.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:19:42.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:19:42.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:19:42.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:19:42.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:19:31', tmtdew=24.31, humidity=19.32, cloud=0.0, wind=22.16, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:19:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:19:42.324 [DEBUG] [Thread-193145] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:19:42.397 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:19:42.410 [DEBUG] [Thread-193148] [transport.py] [_log()] starting thread (client mode): 0xd0702bf0
2025-11-24T16:19:42.410 [DEBUG] [Thread-193148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:19:42.424 [DEBUG] [Thread-193148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:19:42.424 [INFO] [Thread-193148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] client lang: <none>
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] server lang: <none>
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] kex follows: False
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] Compression: none
2025-11-24T16:19:42.432 [DEBUG] [Thread-193148] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:19:42.490 [DEBUG] [Thread-193148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:19:42.490 [DEBUG] [Thread-193148] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:19:42.490 [DEBUG] [Thread-193148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:19:42.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:19:42.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:19:42.547 [DEBUG] [Thread-193148] [transport.py] [_log()] userauth is OK
2025-11-24T16:19:42.547 [DEBUG] [Thread-193148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:19:42.547 [DEBUG] [Thread-193148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:19:42.547 [DEBUG] [Thread-193148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:19:42.547 [DEBUG] [Thread-193148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:19:42.562 [INFO] [Thread-193148] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:19:42.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:19:42.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:19:43.390 [DEBUG] [Thread-193148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:19:43.390 [DEBUG] [Thread-193148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:19:43.438 [DEBUG] [Thread-193148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:19:43.438 [DEBUG] [Thread-193148] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:19:43.446 [DEBUG] [Thread-193148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:19:43.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:19:43.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-11-24T16:19:43.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-11-24T16:19:43.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:19:43.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:19:43.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:19:43.478 [DEBUG] [Thread-193148] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:19:55.942 [DEBUG] [Thread-193150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:20:11.020 [DEBUG] [Thread-193151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:20:13.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:20:13.501 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:20:13.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-11-24T16:20:14.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 20, 4), 24.28, 19.37, 0.0, 21.24, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:20:14.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:20:04
2025-11-24T16:20:14.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:20:14.713 [DEBUG] [Thread-193152] [transport.py] [_log()] starting thread (client mode): 0xd31b0ca0
2025-11-24T16:20:14.713 [DEBUG] [Thread-193152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:20:14.724 [DEBUG] [Thread-193152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:20:14.724 [INFO] [Thread-193152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:20:14.725 [DEBUG] [Thread-193152] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] client lang: <none>
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] server lang: <none>
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] kex follows: False
2025-11-24T16:20:14.726 [DEBUG] [Thread-193152] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:20:14.727 [DEBUG] [Thread-193152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:20:14.727 [DEBUG] [Thread-193152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:20:14.727 [DEBUG] [Thread-193152] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:20:14.727 [DEBUG] [Thread-193152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:20:14.727 [DEBUG] [Thread-193152] [transport.py] [_log()] Compression: none
2025-11-24T16:20:14.727 [DEBUG] [Thread-193152] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:20:14.741 [DEBUG] [Thread-193152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:20:14.744 [DEBUG] [Thread-193152] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:20:14.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:20:14.744 [DEBUG] [Thread-193152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:20:14.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:20:14.746 [DEBUG] [Thread-193152] [transport.py] [_log()] userauth is OK
2025-11-24T16:20:14.746 [DEBUG] [Thread-193152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:20:14.746 [DEBUG] [Thread-193152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:20:14.746 [DEBUG] [Thread-193152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:20:14.747 [DEBUG] [Thread-193152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:20:14.770 [INFO] [Thread-193152] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:20:14.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:20:15.354 [DEBUG] [Thread-193152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:20:15.355 [DEBUG] [Thread-193152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:20:15.355 [DEBUG] [Thread-193152] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:20:15.396 [DEBUG] [Thread-193152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:20:15.396 [DEBUG] [Thread-193152] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:20:15.399 [DEBUG] [Thread-193152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:20:15.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:20:15.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:20:15.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:20:15.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:20:15.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:20:15.428 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:20:15.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.597269 -999.00  +21.80  18.75     25   +0.90 1 1 1 1 1   888    0 21.60 15.13 ----- 18.8 18.8 195.6 21.4 26.7 -28.6 26.3 -31.5 28.2 -27.1 28.8 -29.5
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.597269
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:20:15.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:20:04', tmtdew=24.28, humidity=19.37, cloud=0.0, wind=21.24, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:20:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:20:15.429 [DEBUG] [Thread-193152] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:20:15.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:20:15.515 [DEBUG] [Thread-193155] [transport.py] [_log()] starting thread (client mode): 0xd07a8fa0
2025-11-24T16:20:15.515 [DEBUG] [Thread-193155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:20:15.529 [DEBUG] [Thread-193155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:20:15.529 [INFO] [Thread-193155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] client lang: <none>
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] server lang: <none>
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] kex follows: False
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] Compression: none
2025-11-24T16:20:15.537 [DEBUG] [Thread-193155] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:20:15.600 [DEBUG] [Thread-193155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:20:15.601 [DEBUG] [Thread-193155] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:20:15.601 [DEBUG] [Thread-193155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:20:15.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:20:15.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:20:15.658 [DEBUG] [Thread-193155] [transport.py] [_log()] userauth is OK
2025-11-24T16:20:15.658 [DEBUG] [Thread-193155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:20:15.658 [DEBUG] [Thread-193155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:20:15.658 [DEBUG] [Thread-193155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:20:15.658 [DEBUG] [Thread-193155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:20:15.672 [INFO] [Thread-193155] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:20:15.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:20:15.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:20:16.512 [DEBUG] [Thread-193155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:20:16.512 [DEBUG] [Thread-193155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:20:16.561 [DEBUG] [Thread-193155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:20:16.561 [DEBUG] [Thread-193155] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:20:16.570 [DEBUG] [Thread-193155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:20:16.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:20:16.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-11-24T16:20:16.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-11-24T16:20:16.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:20:16.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:20:16.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:20:16.607 [DEBUG] [Thread-193155] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:20:26.063 [DEBUG] [Thread-193157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:20:39.353 [DEBUG] [Thread-193158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:20:41.141 [DEBUG] [Thread-193159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:20:46.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:20:46.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:20:46.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:20:47.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 20, 37), 23.86, 19.88, 0.0, 17.96, 21.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:20:47.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:20:37
2025-11-24T16:20:47.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:20:47.791 [DEBUG] [Thread-193160] [transport.py] [_log()] starting thread (client mode): 0xd31347f0
2025-11-24T16:20:47.791 [DEBUG] [Thread-193160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:20:47.804 [DEBUG] [Thread-193160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:20:47.804 [INFO] [Thread-193160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:20:47.808 [DEBUG] [Thread-193160] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] client lang: <none>
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] server lang: <none>
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] kex follows: False
2025-11-24T16:20:47.809 [DEBUG] [Thread-193160] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:20:47.810 [DEBUG] [Thread-193160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:20:47.810 [DEBUG] [Thread-193160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:20:47.811 [DEBUG] [Thread-193160] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:20:47.811 [DEBUG] [Thread-193160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:20:47.811 [DEBUG] [Thread-193160] [transport.py] [_log()] Compression: none
2025-11-24T16:20:47.811 [DEBUG] [Thread-193160] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:20:47.846 [DEBUG] [Thread-193160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:20:47.852 [DEBUG] [Thread-193160] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:20:47.854 [DEBUG] [Thread-193160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:20:47.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:20:47.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:20:47.859 [DEBUG] [Thread-193160] [transport.py] [_log()] userauth is OK
2025-11-24T16:20:47.860 [DEBUG] [Thread-193160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:20:47.860 [DEBUG] [Thread-193160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:20:47.860 [DEBUG] [Thread-193160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:20:47.860 [DEBUG] [Thread-193160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:20:47.887 [INFO] [Thread-193160] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:20:47.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:20:48.441 [DEBUG] [Thread-193160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:20:48.441 [DEBUG] [Thread-193160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:20:48.442 [DEBUG] [Thread-193160] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:20:48.482 [DEBUG] [Thread-193160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:20:48.482 [DEBUG] [Thread-193160] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:20:48.485 [DEBUG] [Thread-193160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:20:48.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:20:48.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:20:48.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:20:48.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:20:48.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:20:48.506 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:20:48.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:20:48.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:20:48.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:20:48.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.597616 -999.00  +21.80  15.87     25   +0.90 1 1 1 1 1   888    0 22.05 9.47 ----- 11.2 15.9 193.4 22.8 26.8 -28.0 26.4 -30.5 28.2 -26.2 28.8 -29.0
2025-11-24T16:20:48.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:20:48.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:20:48.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.597616
2025-11-24T16:20:48.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:20:48.521 [DEBUG] [Thread-193160] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:20:48.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:20:48.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:20:48.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:20:48.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:20:48.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:20:37', tmtdew=23.86, humidity=19.88, cloud=0.0, wind=17.96, temperature=21.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:20:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:20:48.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:20:48.608 [DEBUG] [Thread-193163] [transport.py] [_log()] starting thread (client mode): 0xd31351e0
2025-11-24T16:20:48.609 [DEBUG] [Thread-193163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:20:48.623 [DEBUG] [Thread-193163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:20:48.623 [INFO] [Thread-193163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] client lang: <none>
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] server lang: <none>
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] kex follows: False
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:20:48.631 [DEBUG] [Thread-193163] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:20:48.633 [DEBUG] [Thread-193163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:20:48.633 [DEBUG] [Thread-193163] [transport.py] [_log()] Compression: none
2025-11-24T16:20:48.633 [DEBUG] [Thread-193163] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:20:48.692 [DEBUG] [Thread-193163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:20:48.692 [DEBUG] [Thread-193163] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:20:48.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:20:48.693 [DEBUG] [Thread-193163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:20:48.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:20:48.750 [DEBUG] [Thread-193163] [transport.py] [_log()] userauth is OK
2025-11-24T16:20:48.750 [DEBUG] [Thread-193163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:20:48.750 [DEBUG] [Thread-193163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:20:48.750 [DEBUG] [Thread-193163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:20:48.750 [DEBUG] [Thread-193163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:20:48.764 [INFO] [Thread-193163] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:20:48.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:20:48.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:20:49.599 [DEBUG] [Thread-193163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:20:49.600 [DEBUG] [Thread-193163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:20:49.647 [DEBUG] [Thread-193163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:20:49.648 [DEBUG] [Thread-193163] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:20:49.657 [DEBUG] [Thread-193163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:20:49.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:20:49.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-11-24T16:20:49.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:20:49.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:20:49.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:20:49.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:20:49.695 [DEBUG] [Thread-193163] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:20:56.171 [DEBUG] [Thread-193165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:21:11.265 [DEBUG] [Thread-193166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:21:19.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:21:19.708 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:21:19.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-11-24T16:21:20.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 21, 9), 24.04, 19.67, 0.0, 18.88, 21.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:21:20.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:21:09
2025-11-24T16:21:20.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:21:20.855 [DEBUG] [Thread-193167] [transport.py] [_log()] starting thread (client mode): 0xd07017b0
2025-11-24T16:21:20.856 [DEBUG] [Thread-193167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:21:20.869 [DEBUG] [Thread-193167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:21:20.869 [INFO] [Thread-193167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:21:20.874 [DEBUG] [Thread-193167] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] client lang: <none>
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] server lang: <none>
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] kex follows: False
2025-11-24T16:21:20.875 [DEBUG] [Thread-193167] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:21:20.876 [DEBUG] [Thread-193167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:21:20.876 [DEBUG] [Thread-193167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:21:20.876 [DEBUG] [Thread-193167] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:21:20.876 [DEBUG] [Thread-193167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:21:20.876 [DEBUG] [Thread-193167] [transport.py] [_log()] Compression: none
2025-11-24T16:21:20.876 [DEBUG] [Thread-193167] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:21:20.899 [DEBUG] [Thread-193167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:21:20.904 [DEBUG] [Thread-193167] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:21:20.905 [DEBUG] [Thread-193167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:21:20.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:21:20.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:21:20.911 [DEBUG] [Thread-193167] [transport.py] [_log()] userauth is OK
2025-11-24T16:21:20.911 [DEBUG] [Thread-193167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:21:20.911 [DEBUG] [Thread-193167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:21:20.911 [DEBUG] [Thread-193167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:21:20.911 [DEBUG] [Thread-193167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:21:20.936 [INFO] [Thread-193167] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:21:20.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:21:21.545 [DEBUG] [Thread-193167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:21:21.545 [DEBUG] [Thread-193167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:21:21.555 [DEBUG] [Thread-193167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:21:21.586 [DEBUG] [Thread-193167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:21:21.586 [DEBUG] [Thread-193167] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:21:21.589 [DEBUG] [Thread-193167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:21:21.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:21:21.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:21:21.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:21:21.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:21:21.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:21:21.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:21:21.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:21:21.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:21:21.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:21:21.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.597963 -999.00  +21.90  11.02     25   +1.00 1 1 1 1 1   888    0 21.01 2.83 ----- 12.7 11.0 196.8 17.5 26.9 -28.5 26.5 -29.4 28.4 -25.9 28.9 -28.0
2025-11-24T16:21:21.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:21:21.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:21:21.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.597963
2025-11-24T16:21:21.616 [DEBUG] [Thread-193167] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:21:21.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:21:21.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:21:21.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:21:21.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:21:21.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:21:21.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:21:09', tmtdew=24.04, humidity=19.67, cloud=0.0, wind=18.88, temperature=21.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:21:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:21:21.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:21:21.705 [DEBUG] [Thread-193170] [transport.py] [_log()] starting thread (client mode): 0xd07a8730
2025-11-24T16:21:21.705 [DEBUG] [Thread-193170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:21:21.720 [DEBUG] [Thread-193170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:21:21.721 [INFO] [Thread-193170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:21:21.728 [DEBUG] [Thread-193170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:21:21.729 [DEBUG] [Thread-193170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:21:21.729 [DEBUG] [Thread-193170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:21:21.729 [DEBUG] [Thread-193170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:21:21.729 [DEBUG] [Thread-193170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:21:21.729 [DEBUG] [Thread-193170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:21:21.729 [DEBUG] [Thread-193170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:21:21.729 [DEBUG] [Thread-193170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:21:21.730 [DEBUG] [Thread-193170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:21:21.730 [DEBUG] [Thread-193170] [transport.py] [_log()] client lang: <none>
2025-11-24T16:21:21.730 [DEBUG] [Thread-193170] [transport.py] [_log()] server lang: <none>
2025-11-24T16:21:21.730 [DEBUG] [Thread-193170] [transport.py] [_log()] kex follows: False
2025-11-24T16:21:21.730 [DEBUG] [Thread-193170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:21:21.730 [DEBUG] [Thread-193170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:21:21.730 [DEBUG] [Thread-193170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:21:21.731 [DEBUG] [Thread-193170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:21:21.731 [DEBUG] [Thread-193170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:21:21.731 [DEBUG] [Thread-193170] [transport.py] [_log()] Compression: none
2025-11-24T16:21:21.731 [DEBUG] [Thread-193170] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:21:21.787 [DEBUG] [Thread-193170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:21:21.788 [DEBUG] [Thread-193170] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:21:21.789 [DEBUG] [Thread-193170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:21:21.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:21:21.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:21:21.843 [DEBUG] [Thread-193170] [transport.py] [_log()] userauth is OK
2025-11-24T16:21:21.843 [DEBUG] [Thread-193170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:21:21.843 [DEBUG] [Thread-193170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:21:21.843 [DEBUG] [Thread-193170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:21:21.843 [DEBUG] [Thread-193170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:21:21.867 [INFO] [Thread-193170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:21:21.867 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:21:21.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:21:22.752 [DEBUG] [Thread-193170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:21:22.753 [DEBUG] [Thread-193170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:21:22.800 [DEBUG] [Thread-193170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:21:22.800 [DEBUG] [Thread-193170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:21:22.810 [DEBUG] [Thread-193170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:21:22.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:21:22.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-11-24T16:21:22.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-11-24T16:21:22.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:21:22.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:21:22.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:21:22.851 [DEBUG] [Thread-193170] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:21:26.312 [DEBUG] [Thread-193172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:21:39.589 [DEBUG] [Thread-193173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:21:41.382 [DEBUG] [Thread-193174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:21:52.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:21:52.865 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:21:52.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-11-24T16:21:53.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 21, 42), 24.37, 19.14, 0.0, 20.03, 21.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:21:53.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:21:42
2025-11-24T16:21:53.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:21:53.978 [DEBUG] [Thread-193175] [transport.py] [_log()] starting thread (client mode): 0xd0702a70
2025-11-24T16:21:53.978 [DEBUG] [Thread-193175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:21:53.997 [DEBUG] [Thread-193175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:21:53.997 [INFO] [Thread-193175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:21:54.000 [DEBUG] [Thread-193175] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:21:54.000 [DEBUG] [Thread-193175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:21:54.000 [DEBUG] [Thread-193175] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:21:54.000 [DEBUG] [Thread-193175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:21:54.000 [DEBUG] [Thread-193175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:21:54.000 [DEBUG] [Thread-193175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:21:54.000 [DEBUG] [Thread-193175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:21:54.000 [DEBUG] [Thread-193175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] client lang: <none>
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] server lang: <none>
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] kex follows: False
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] Compression: none
2025-11-24T16:21:54.001 [DEBUG] [Thread-193175] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:21:54.036 [DEBUG] [Thread-193175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:21:54.038 [DEBUG] [Thread-193175] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:21:54.040 [DEBUG] [Thread-193175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:21:54.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:21:54.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:21:54.043 [DEBUG] [Thread-193175] [transport.py] [_log()] userauth is OK
2025-11-24T16:21:54.043 [DEBUG] [Thread-193175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:21:54.043 [DEBUG] [Thread-193175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:21:54.043 [DEBUG] [Thread-193175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:21:54.043 [DEBUG] [Thread-193175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:21:54.068 [INFO] [Thread-193175] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:21:54.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:21:54.625 [DEBUG] [Thread-193175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:21:54.626 [DEBUG] [Thread-193175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:21:54.635 [DEBUG] [Thread-193175] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:21:54.666 [DEBUG] [Thread-193175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:21:54.667 [DEBUG] [Thread-193175] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:21:54.674 [DEBUG] [Thread-193175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:21:54.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:21:54.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:21:54.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:21:54.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:21:54.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:21:54.702 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:21:54.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:21:54.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:21:54.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:21:54.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.598310 -999.00  +22.10  12.97     24   +1.00 1 1 1 1 1   888    0 20.95 -2.90 ----- 15.9 13.0 186.4 17.1 26.9 -28.5 26.6 -28.3 28.4 -26.3 28.9 -27.6
2025-11-24T16:21:54.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:21:54.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:21:54.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.598310
2025-11-24T16:21:54.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:21:54.714 [DEBUG] [Thread-193175] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:21:54.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:21:54.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:21:54.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:21:54.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:21:54.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:21:42', tmtdew=24.37, humidity=19.14, cloud=0.0, wind=20.03, temperature=21.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:21:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:21:54.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:21:54.810 [DEBUG] [Thread-193178] [transport.py] [_log()] starting thread (client mode): 0xd07ab9a0
2025-11-24T16:21:54.810 [DEBUG] [Thread-193178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:21:54.825 [DEBUG] [Thread-193178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:21:54.825 [INFO] [Thread-193178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] client lang: <none>
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] server lang: <none>
2025-11-24T16:21:54.832 [DEBUG] [Thread-193178] [transport.py] [_log()] kex follows: False
2025-11-24T16:21:54.833 [DEBUG] [Thread-193178] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:21:54.833 [DEBUG] [Thread-193178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:21:54.833 [DEBUG] [Thread-193178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:21:54.833 [DEBUG] [Thread-193178] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:21:54.833 [DEBUG] [Thread-193178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:21:54.833 [DEBUG] [Thread-193178] [transport.py] [_log()] Compression: none
2025-11-24T16:21:54.833 [DEBUG] [Thread-193178] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:21:54.889 [DEBUG] [Thread-193178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:21:54.889 [DEBUG] [Thread-193178] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:21:54.889 [DEBUG] [Thread-193178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:21:54.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:21:54.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:21:54.946 [DEBUG] [Thread-193178] [transport.py] [_log()] userauth is OK
2025-11-24T16:21:54.946 [DEBUG] [Thread-193178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:21:54.946 [DEBUG] [Thread-193178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:21:54.946 [DEBUG] [Thread-193178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:21:54.946 [DEBUG] [Thread-193178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:21:54.960 [INFO] [Thread-193178] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:21:54.961 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:21:54.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:21:55.786 [DEBUG] [Thread-193178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:21:55.786 [DEBUG] [Thread-193178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:21:55.834 [DEBUG] [Thread-193178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:21:55.834 [DEBUG] [Thread-193178] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:21:55.842 [DEBUG] [Thread-193178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:21:55.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:21:55.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-11-24T16:21:55.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-11-24T16:21:55.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:21:55.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:21:55.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:21:55.875 [DEBUG] [Thread-193178] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:21:56.424 [DEBUG] [Thread-193180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:22:11.513 [DEBUG] [Thread-193181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:22:25.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:22:25.891 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:22:25.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:22:26.543 [DEBUG] [Thread-193182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:22:26.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 22, 14), 24.4, 19.09, 0.0, 21.07, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:22:26.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:22:14
2025-11-24T16:22:26.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:22:27.011 [DEBUG] [Thread-193183] [transport.py] [_log()] starting thread (client mode): 0xd07aa140
2025-11-24T16:22:27.011 [DEBUG] [Thread-193183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:22:27.026 [DEBUG] [Thread-193183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:22:27.026 [INFO] [Thread-193183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:22:27.029 [DEBUG] [Thread-193183] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:22:27.029 [DEBUG] [Thread-193183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:22:27.029 [DEBUG] [Thread-193183] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:22:27.029 [DEBUG] [Thread-193183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] client lang: <none>
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] server lang: <none>
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] kex follows: False
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:22:27.030 [DEBUG] [Thread-193183] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:22:27.031 [DEBUG] [Thread-193183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:22:27.031 [DEBUG] [Thread-193183] [transport.py] [_log()] Compression: none
2025-11-24T16:22:27.031 [DEBUG] [Thread-193183] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:22:27.052 [DEBUG] [Thread-193183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:22:27.057 [DEBUG] [Thread-193183] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:22:27.059 [DEBUG] [Thread-193183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:22:27.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:22:27.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:22:27.063 [DEBUG] [Thread-193183] [transport.py] [_log()] userauth is OK
2025-11-24T16:22:27.064 [DEBUG] [Thread-193183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:22:27.064 [DEBUG] [Thread-193183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:22:27.064 [DEBUG] [Thread-193183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:22:27.064 [DEBUG] [Thread-193183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:22:27.083 [INFO] [Thread-193183] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:22:27.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:22:27.647 [DEBUG] [Thread-193183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:22:27.647 [DEBUG] [Thread-193183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:22:27.650 [DEBUG] [Thread-193183] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:22:27.688 [DEBUG] [Thread-193183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:22:27.689 [DEBUG] [Thread-193183] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:22:27.692 [DEBUG] [Thread-193183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:22:27.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:22:27.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:22:27.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:22:27.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:22:27.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:22:27.711 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:22:27.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:22:27.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:22:27.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:22:27.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.598658 -999.00  +22.10  20.58     24   +0.80 1 1 1 1 1   888    0 21.05 -6.26 ----- 17.5 20.6 186.1 27.2 26.9 -29.6 26.5 -31.5 28.3 -26.8 28.9 -29.1
2025-11-24T16:22:27.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:22:27.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:22:27.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.598658
2025-11-24T16:22:27.718 [DEBUG] [Thread-193183] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:22:27.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:22:27.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:22:27.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:22:27.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:22:27.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:22:27.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:22:14', tmtdew=24.4, humidity=19.09, cloud=0.0, wind=21.07, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:22:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:22:27.808 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:22:27.820 [DEBUG] [Thread-193186] [transport.py] [_log()] starting thread (client mode): 0xd0701c00
2025-11-24T16:22:27.821 [DEBUG] [Thread-193186] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:22:27.835 [DEBUG] [Thread-193186] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:22:27.835 [INFO] [Thread-193186] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] client lang: <none>
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] server lang: <none>
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] kex follows: False
2025-11-24T16:22:27.843 [DEBUG] [Thread-193186] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:22:27.844 [DEBUG] [Thread-193186] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:22:27.844 [DEBUG] [Thread-193186] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:22:27.844 [DEBUG] [Thread-193186] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:22:27.844 [DEBUG] [Thread-193186] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:22:27.844 [DEBUG] [Thread-193186] [transport.py] [_log()] Compression: none
2025-11-24T16:22:27.844 [DEBUG] [Thread-193186] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:22:27.904 [DEBUG] [Thread-193186] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:22:27.905 [DEBUG] [Thread-193186] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:22:27.906 [DEBUG] [Thread-193186] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:22:27.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:22:27.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:22:27.963 [DEBUG] [Thread-193186] [transport.py] [_log()] userauth is OK
2025-11-24T16:22:27.963 [DEBUG] [Thread-193186] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:22:27.964 [DEBUG] [Thread-193186] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:22:27.964 [DEBUG] [Thread-193186] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:22:27.964 [DEBUG] [Thread-193186] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:22:27.983 [INFO] [Thread-193186] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:22: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-11-24T16:22:27.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:22:28.801 [DEBUG] [Thread-193186] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:22:28.801 [DEBUG] [Thread-193186] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:22:28.849 [DEBUG] [Thread-193186] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:22:28.849 [DEBUG] [Thread-193186] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:22:28.858 [DEBUG] [Thread-193186] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:22:28.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:22:28.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:22:28.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:22:28.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:22:28.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:22:28.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:22:28.893 [DEBUG] [Thread-193186] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:22:39.881 [DEBUG] [Thread-193188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:22:41.572 [DEBUG] [Thread-193189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:22:56.658 [DEBUG] [Thread-193190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:22:58.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:22:58.915 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:22:58.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-11-24T16:22:59.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 22, 47), 24.39, 19.15, 0.0, 24.61, 21.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:22:59.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:22:47
2025-11-24T16:22:59.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:23:00.128 [DEBUG] [Thread-193191] [transport.py] [_log()] starting thread (client mode): 0xd31348b0
2025-11-24T16:23:00.129 [DEBUG] [Thread-193191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:23:00.143 [DEBUG] [Thread-193191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:23:00.144 [INFO] [Thread-193191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:23:00.147 [DEBUG] [Thread-193191] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:23:00.147 [DEBUG] [Thread-193191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:23:00.147 [DEBUG] [Thread-193191] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:23:00.147 [DEBUG] [Thread-193191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:23:00.147 [DEBUG] [Thread-193191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:23:00.147 [DEBUG] [Thread-193191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:23:00.147 [DEBUG] [Thread-193191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:23:00.147 [DEBUG] [Thread-193191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] client lang: <none>
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] server lang: <none>
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] kex follows: False
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] Compression: none
2025-11-24T16:23:00.148 [DEBUG] [Thread-193191] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:23:00.172 [DEBUG] [Thread-193191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:23:00.175 [DEBUG] [Thread-193191] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:23:00.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:23:00.178 [DEBUG] [Thread-193191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:23:00.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:23:00.180 [DEBUG] [Thread-193191] [transport.py] [_log()] userauth is OK
2025-11-24T16:23:00.180 [DEBUG] [Thread-193191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:23:00.180 [DEBUG] [Thread-193191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:23:00.180 [DEBUG] [Thread-193191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:23:00.180 [DEBUG] [Thread-193191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:23:00.198 [INFO] [Thread-193191] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:23:00.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:23:00.770 [DEBUG] [Thread-193191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:23:00.770 [DEBUG] [Thread-193191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:23:00.770 [DEBUG] [Thread-193191] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:23:00.811 [DEBUG] [Thread-193191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:23:00.811 [DEBUG] [Thread-193191] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:23:00.813 [DEBUG] [Thread-193191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:23:00.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:23:00.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:23:00.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:23:00.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:23:00.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:23:00.833 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:23:00.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:23:00.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:23:00.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:23:00.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.599005 -999.00  +22.00  16.70     24   +0.70 1 1 1 1 1   888    0 20.54 -7.76 ----- 13.8 16.7 172.6 28.8 26.9 -27.9 26.2 -30.5 28.2 -26.5 28.8 -29.1
2025-11-24T16:23:00.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:23:00.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:23:00.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.599005
2025-11-24T16:23:00.840 [DEBUG] [Thread-193191] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:23:00.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:23:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:23:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:23:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:23:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:23:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:22:47', tmtdew=24.39, humidity=19.15, cloud=0.0, wind=24.61, temperature=21.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:22:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:23:00.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:23:00.940 [DEBUG] [Thread-193194] [transport.py] [_log()] starting thread (client mode): 0xd3135960
2025-11-24T16:23:00.940 [DEBUG] [Thread-193194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:23:00.957 [DEBUG] [Thread-193194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:23:00.957 [INFO] [Thread-193194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] client lang: <none>
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] server lang: <none>
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] kex follows: False
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:23:00.965 [DEBUG] [Thread-193194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:23:00.966 [DEBUG] [Thread-193194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:23:00.966 [DEBUG] [Thread-193194] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:23:00.966 [DEBUG] [Thread-193194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:23:00.966 [DEBUG] [Thread-193194] [transport.py] [_log()] Compression: none
2025-11-24T16:23:00.966 [DEBUG] [Thread-193194] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:23:01.021 [DEBUG] [Thread-193194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:23:01.021 [DEBUG] [Thread-193194] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:23:01.021 [DEBUG] [Thread-193194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:23:01.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:23:01.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:23:01.078 [DEBUG] [Thread-193194] [transport.py] [_log()] userauth is OK
2025-11-24T16:23:01.078 [DEBUG] [Thread-193194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:23:01.078 [DEBUG] [Thread-193194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:23:01.078 [DEBUG] [Thread-193194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:23:01.078 [DEBUG] [Thread-193194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:23:01.096 [INFO] [Thread-193194] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:23:01.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:23:01.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:23:01.925 [DEBUG] [Thread-193194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:23:01.925 [DEBUG] [Thread-193194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:23:01.972 [DEBUG] [Thread-193194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:23:01.972 [DEBUG] [Thread-193194] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:23:01.981 [DEBUG] [Thread-193194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:23:01.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:23:01.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-11-24T16:23:01.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-11-24T16:23:02.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:23:02.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:23:02.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:23:02.017 [DEBUG] [Thread-193194] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:23:11.691 [DEBUG] [Thread-193196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:23:26.773 [DEBUG] [Thread-193197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:23:32.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:23:32.041 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:23:32.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-11-24T16:23:32.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 23, 19), 24.44, 19.1, 0.0, 20.42, 21.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:23:32.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:23:19
2025-11-24T16:23:33.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:23:33.246 [DEBUG] [Thread-193198] [transport.py] [_log()] starting thread (client mode): 0xd3135d20
2025-11-24T16:23:33.246 [DEBUG] [Thread-193198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:23:33.262 [DEBUG] [Thread-193198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:23:33.262 [INFO] [Thread-193198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:23:33.265 [DEBUG] [Thread-193198] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:23:33.265 [DEBUG] [Thread-193198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:23:33.265 [DEBUG] [Thread-193198] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:23:33.265 [DEBUG] [Thread-193198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:23:33.265 [DEBUG] [Thread-193198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] client lang: <none>
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] server lang: <none>
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] kex follows: False
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] Compression: none
2025-11-24T16:23:33.266 [DEBUG] [Thread-193198] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:23:33.285 [DEBUG] [Thread-193198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:23:33.287 [DEBUG] [Thread-193198] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:23:33.287 [DEBUG] [Thread-193198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:23:33.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:23:33.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:23:33.329 [DEBUG] [Thread-193198] [transport.py] [_log()] userauth is OK
2025-11-24T16:23:33.329 [DEBUG] [Thread-193198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:23:33.329 [DEBUG] [Thread-193198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:23:33.329 [DEBUG] [Thread-193198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:23:33.329 [DEBUG] [Thread-193198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:23:33.347 [INFO] [Thread-193198] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:23:33.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:23:33.904 [DEBUG] [Thread-193198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:23:33.904 [DEBUG] [Thread-193198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:23:33.905 [DEBUG] [Thread-193198] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:23:33.945 [DEBUG] [Thread-193198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:23:33.945 [DEBUG] [Thread-193198] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:23:33.948 [DEBUG] [Thread-193198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:23:33.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:23:33.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:23:33.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:23:33.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:23:33.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:23:33.968 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:23:33.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:23:33.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:23:33.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:23:33.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.599352 -999.00  +22.30  20.35     24   +0.90 1 1 1 1 1   888    0 21.21 -10.48 ----- 21.7 20.4 158.4 24.0 26.9 -29.4 26.6 -27.3 28.5 -25.5 29.0 -27.6
2025-11-24T16:23:33.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:23:33.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:23:33.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.599352
2025-11-24T16:23:33.974 [DEBUG] [Thread-193198] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:23:33.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:23:33.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:23:33.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:23:33.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:23:33.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:23:33.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:23:19', tmtdew=24.44, humidity=19.1, cloud=0.0, wind=20.42, temperature=21.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:23:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:23:34.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:23:34.068 [DEBUG] [Thread-193201] [transport.py] [_log()] starting thread (client mode): 0xd0702ad0
2025-11-24T16:23:34.068 [DEBUG] [Thread-193201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:23:34.085 [DEBUG] [Thread-193201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:23:34.085 [INFO] [Thread-193201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] client lang: <none>
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] server lang: <none>
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] kex follows: False
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:23:34.093 [DEBUG] [Thread-193201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:23:34.094 [DEBUG] [Thread-193201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:23:34.094 [DEBUG] [Thread-193201] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:23:34.094 [DEBUG] [Thread-193201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:23:34.094 [DEBUG] [Thread-193201] [transport.py] [_log()] Compression: none
2025-11-24T16:23:34.096 [DEBUG] [Thread-193201] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:23:34.148 [DEBUG] [Thread-193201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:23:34.148 [DEBUG] [Thread-193201] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:23:34.149 [DEBUG] [Thread-193201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:23:34.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:23:34.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:23:34.206 [DEBUG] [Thread-193201] [transport.py] [_log()] userauth is OK
2025-11-24T16:23:34.206 [DEBUG] [Thread-193201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:23:34.206 [DEBUG] [Thread-193201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:23:34.206 [DEBUG] [Thread-193201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:23:34.206 [DEBUG] [Thread-193201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:23:34.221 [INFO] [Thread-193201] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:23:34.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:23:34.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:23:35.055 [DEBUG] [Thread-193201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:23:35.055 [DEBUG] [Thread-193201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:23:35.103 [DEBUG] [Thread-193201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:23:35.103 [DEBUG] [Thread-193201] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:23:35.111 [DEBUG] [Thread-193201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:23:35.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:23:35.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:23:35.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:23:35.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:23:35.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:23:35.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:23:35.143 [DEBUG] [Thread-193201] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:23:40.194 [DEBUG] [Thread-193203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:23:41.811 [DEBUG] [Thread-193204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:23:56.912 [DEBUG] [Thread-193205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:24:05.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:24:05.176 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:24:05.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-11-24T16:24:06.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 23, 52), 24.95, 18.79, 0.0, 29.36, 22.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:24:06.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:23:52
2025-11-24T16:24:06.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:24:06.443 [DEBUG] [Thread-193206] [transport.py] [_log()] starting thread (client mode): 0xd3136ad0
2025-11-24T16:24:06.444 [DEBUG] [Thread-193206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:24:06.459 [DEBUG] [Thread-193206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:24:06.459 [INFO] [Thread-193206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:24:06.462 [DEBUG] [Thread-193206] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] client lang: <none>
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] server lang: <none>
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] kex follows: False
2025-11-24T16:24:06.463 [DEBUG] [Thread-193206] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:24:06.464 [DEBUG] [Thread-193206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:24:06.464 [DEBUG] [Thread-193206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:24:06.464 [DEBUG] [Thread-193206] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:24:06.464 [DEBUG] [Thread-193206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:24:06.464 [DEBUG] [Thread-193206] [transport.py] [_log()] Compression: none
2025-11-24T16:24:06.464 [DEBUG] [Thread-193206] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:24:06.489 [DEBUG] [Thread-193206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:24:06.494 [DEBUG] [Thread-193206] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:24:06.495 [DEBUG] [Thread-193206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:24:06.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:24:06.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:24:06.533 [DEBUG] [Thread-193206] [transport.py] [_log()] userauth is OK
2025-11-24T16:24:06.533 [DEBUG] [Thread-193206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:24:06.534 [DEBUG] [Thread-193206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:24:06.534 [DEBUG] [Thread-193206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:24:06.534 [DEBUG] [Thread-193206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:24:06.563 [INFO] [Thread-193206] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:24:06.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:24:07.142 [DEBUG] [Thread-193206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:24:07.142 [DEBUG] [Thread-193206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:24:07.152 [DEBUG] [Thread-193206] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:24:07.183 [DEBUG] [Thread-193206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:24:07.183 [DEBUG] [Thread-193206] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:24:07.185 [DEBUG] [Thread-193206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:24:07.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:24:07.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:24:07.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:24:07.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:24:07.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:24:07.207 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:24:07.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:24:07.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:24:07.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:24:07.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.599699 -999.00  +22.40  18.76     24   +0.90 1 1 1 1 1   888    0 20.77 -11.83 ----- 11.9 18.8 170.2 29.4 27.1 -28.5 26.7 -27.8 28.4 -26.6 29.1 -28.0
2025-11-24T16:24:07.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:24:07.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:24:07.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.599699
2025-11-24T16:24:07.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:24:07.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:24:07.212 [DEBUG] [Thread-193206] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:24:07.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:24:07.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:24:07.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:24:07.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:23:52', tmtdew=24.95, humidity=18.79, cloud=0.0, wind=29.36, temperature=22.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:23:33.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:24:07.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:24:07.296 [DEBUG] [Thread-193209] [transport.py] [_log()] starting thread (client mode): 0xd31b3e50
2025-11-24T16:24:07.296 [DEBUG] [Thread-193209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:24:07.311 [DEBUG] [Thread-193209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:24:07.311 [INFO] [Thread-193209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] client lang: <none>
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] server lang: <none>
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] kex follows: False
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] Compression: none
2025-11-24T16:24:07.319 [DEBUG] [Thread-193209] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:24:07.377 [DEBUG] [Thread-193209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:24:07.377 [DEBUG] [Thread-193209] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:24:07.377 [DEBUG] [Thread-193209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:24:07.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:24:07.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:24:07.440 [DEBUG] [Thread-193209] [transport.py] [_log()] userauth is OK
2025-11-24T16:24:07.440 [DEBUG] [Thread-193209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:24:07.440 [DEBUG] [Thread-193209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:24:07.440 [DEBUG] [Thread-193209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:24:07.440 [DEBUG] [Thread-193209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:24:07.456 [INFO] [Thread-193209] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:24:07.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:24:07.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:24:08.311 [DEBUG] [Thread-193209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:24:08.311 [DEBUG] [Thread-193209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:24:08.360 [DEBUG] [Thread-193209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:24:08.361 [DEBUG] [Thread-193209] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:24:08.370 [DEBUG] [Thread-193209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:24:08.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:24:08.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:24:08.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:24:08.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:24:08.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:24:08.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:24:08.408 [DEBUG] [Thread-193209] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:24:11.959 [DEBUG] [Thread-193211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:24:27.000 [DEBUG] [Thread-193212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:24:38.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:24:38.441 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:24:38.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-11-24T16:24:39.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 24, 25), 25.13, 18.56, 0.0, 35.29, 22.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:24:39.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:24:25
2025-11-24T16:24:39.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:24:39.564 [DEBUG] [Thread-193213] [transport.py] [_log()] starting thread (client mode): 0xd31b0430
2025-11-24T16:24:39.565 [DEBUG] [Thread-193213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:24:39.573 [DEBUG] [Thread-193213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:24:39.574 [INFO] [Thread-193213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:24:39.577 [DEBUG] [Thread-193213] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:24:39.577 [DEBUG] [Thread-193213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:24:39.577 [DEBUG] [Thread-193213] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:24:39.577 [DEBUG] [Thread-193213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:24:39.577 [DEBUG] [Thread-193213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:24:39.577 [DEBUG] [Thread-193213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:24:39.577 [DEBUG] [Thread-193213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:24:39.577 [DEBUG] [Thread-193213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] client lang: <none>
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] server lang: <none>
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] kex follows: False
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] Compression: none
2025-11-24T16:24:39.578 [DEBUG] [Thread-193213] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:24:39.613 [DEBUG] [Thread-193213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:24:39.616 [DEBUG] [Thread-193213] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:24:39.617 [DEBUG] [Thread-193213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:24:39.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:24:39.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:24:39.620 [DEBUG] [Thread-193213] [transport.py] [_log()] userauth is OK
2025-11-24T16:24:39.620 [DEBUG] [Thread-193213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:24:39.620 [DEBUG] [Thread-193213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:24:39.620 [DEBUG] [Thread-193213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:24:39.620 [DEBUG] [Thread-193213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:24:39.641 [INFO] [Thread-193213] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:24:39.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:24:40.245 [DEBUG] [Thread-193213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:24:40.245 [DEBUG] [Thread-193213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:24:40.245 [DEBUG] [Thread-193213] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:24:40.286 [DEBUG] [Thread-193213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:24:40.286 [DEBUG] [Thread-193213] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:24:40.289 [DEBUG] [Thread-193213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:24:40.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:24:40.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:24:40.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:24:40.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:24:40.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:24:40.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:24:40.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:24:40.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:24:40.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:24:40.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.600394 -999.00  +22.20  31.08     24   +0.70 1 1 2 1 1   888    0 21.11 -10.03 ----- 25.6 31.1 164.8 39.6 26.9 -29.3 26.6 -28.2 28.3 -27.5 28.9 -28.5
2025-11-24T16:24:40.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:24:40.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:24:40.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.600394
2025-11-24T16:24:40.317 [DEBUG] [Thread-193213] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:24:40.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:24:40.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:24:40.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:24:40.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:24:40.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:24:40.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:24:25', tmtdew=25.13, humidity=18.56, cloud=0.0, wind=35.29, temperature=22.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:24:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:24:40.396 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:24:40.408 [DEBUG] [Thread-193216] [transport.py] [_log()] starting thread (client mode): 0xd07a94e0
2025-11-24T16:24:40.409 [DEBUG] [Thread-193216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:24:40.424 [DEBUG] [Thread-193216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:24:40.424 [INFO] [Thread-193216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:24:40.432 [DEBUG] [Thread-193216] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:24:40.432 [DEBUG] [Thread-193218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:24:40.432 [DEBUG] [Thread-193216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:24:40.432 [DEBUG] [Thread-193216] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] client lang: <none>
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] server lang: <none>
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] kex follows: False
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] Compression: none
2025-11-24T16:24:40.433 [DEBUG] [Thread-193216] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:24:40.489 [DEBUG] [Thread-193216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:24:40.490 [DEBUG] [Thread-193216] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:24:40.490 [DEBUG] [Thread-193216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:24:40.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:24:40.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:24:40.546 [DEBUG] [Thread-193216] [transport.py] [_log()] userauth is OK
2025-11-24T16:24:40.546 [DEBUG] [Thread-193216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:24:40.547 [DEBUG] [Thread-193216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:24:40.547 [DEBUG] [Thread-193216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:24:40.547 [DEBUG] [Thread-193216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:24:40.566 [INFO] [Thread-193216] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:24:40.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:24:40.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:24:41.449 [DEBUG] [Thread-193216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:24:41.449 [DEBUG] [Thread-193216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:24:41.497 [DEBUG] [Thread-193216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:24:41.497 [DEBUG] [Thread-193216] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:24:41.505 [DEBUG] [Thread-193216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:24:41.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:24:41.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:24: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-11-24T16:24:41.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:24:41.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:24:41.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:24:41.542 [DEBUG] [Thread-193216] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:24:42.029 [DEBUG] [Thread-193219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:24:57.082 [DEBUG] [Thread-193220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:25:11.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:25:11.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:25:11.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-11-24T16:25:12.110 [DEBUG] [Thread-193221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:25:12.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 24, 58), 25.17, 18.61, 0.0, 30.82, 22.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:25:12.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:24:58
2025-11-24T16:25:12.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:25:12.862 [DEBUG] [Thread-193222] [transport.py] [_log()] starting thread (client mode): 0xd0700850
2025-11-24T16:25:12.863 [DEBUG] [Thread-193222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:25:12.877 [DEBUG] [Thread-193222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:25:12.878 [INFO] [Thread-193222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:25:12.882 [DEBUG] [Thread-193222] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:25:12.882 [DEBUG] [Thread-193222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:25:12.882 [DEBUG] [Thread-193222] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:25:12.882 [DEBUG] [Thread-193222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:25:12.882 [DEBUG] [Thread-193222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:25:12.882 [DEBUG] [Thread-193222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:25:12.882 [DEBUG] [Thread-193222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:25:12.883 [DEBUG] [Thread-193222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:25:12.883 [DEBUG] [Thread-193222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:25:12.883 [DEBUG] [Thread-193222] [transport.py] [_log()] client lang: <none>
2025-11-24T16:25:12.883 [DEBUG] [Thread-193222] [transport.py] [_log()] server lang: <none>
2025-11-24T16:25:12.883 [DEBUG] [Thread-193222] [transport.py] [_log()] kex follows: False
2025-11-24T16:25:12.883 [DEBUG] [Thread-193222] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:25:12.883 [DEBUG] [Thread-193222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:25:12.883 [DEBUG] [Thread-193222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:25:12.884 [DEBUG] [Thread-193222] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:25:12.884 [DEBUG] [Thread-193222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:25:12.884 [DEBUG] [Thread-193222] [transport.py] [_log()] Compression: none
2025-11-24T16:25:12.884 [DEBUG] [Thread-193222] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:25:12.918 [DEBUG] [Thread-193222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:25:12.924 [DEBUG] [Thread-193222] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:25:12.925 [DEBUG] [Thread-193222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:25:12.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:25:12.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:25:12.928 [DEBUG] [Thread-193222] [transport.py] [_log()] userauth is OK
2025-11-24T16:25:12.929 [DEBUG] [Thread-193222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:25:12.929 [DEBUG] [Thread-193222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:25:12.929 [DEBUG] [Thread-193222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:25:12.929 [DEBUG] [Thread-193222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:25:12.956 [INFO] [Thread-193222] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:25:12.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:25:13.538 [DEBUG] [Thread-193222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:25:13.538 [DEBUG] [Thread-193222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:25:13.540 [DEBUG] [Thread-193222] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:25:13.579 [DEBUG] [Thread-193222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:25:13.579 [DEBUG] [Thread-193222] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:25:13.582 [DEBUG] [Thread-193222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:25:13.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:25:13.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:25:13.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:25:13.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:25:13.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:25:13.610 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:25:13.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:25:13.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:25:13.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:25:13.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.600741 -999.00  +22.10  33.35     24   +0.60 1 1 2 1 1   888    0 21.47 -9.79 ----- 29.6 33.4 168.0 38.6 26.9 -29.3 26.6 -27.8 28.2 -28.4 28.8 -29.8
2025-11-24T16:25:13.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:25:13.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:25:13.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.600741
2025-11-24T16:25:13.617 [DEBUG] [Thread-193222] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:25:13.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:25:13.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:25:13.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:25:13.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:25:13.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:25:13.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:24:58', tmtdew=25.17, humidity=18.61, cloud=0.0, wind=30.82, temperature=22.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:25:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:25:13.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:25:13.732 [DEBUG] [Thread-193225] [transport.py] [_log()] starting thread (client mode): 0xd0702dd0
2025-11-24T16:25:13.733 [DEBUG] [Thread-193225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:25:13.746 [DEBUG] [Thread-193225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:25:13.746 [INFO] [Thread-193225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] client lang: <none>
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] server lang: <none>
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] kex follows: False
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:25:13.754 [DEBUG] [Thread-193225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:25:13.755 [DEBUG] [Thread-193225] [transport.py] [_log()] Compression: none
2025-11-24T16:25:13.755 [DEBUG] [Thread-193225] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:25:13.814 [DEBUG] [Thread-193225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:25:13.814 [DEBUG] [Thread-193225] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:25:13.815 [DEBUG] [Thread-193225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:25:13.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:25:13.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:25:13.871 [DEBUG] [Thread-193225] [transport.py] [_log()] userauth is OK
2025-11-24T16:25:13.871 [DEBUG] [Thread-193225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:25:13.871 [DEBUG] [Thread-193225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:25:13.871 [DEBUG] [Thread-193225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:25:13.872 [DEBUG] [Thread-193225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:25:13.891 [INFO] [Thread-193225] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:25: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-11-24T16:25:13.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:25:14.707 [DEBUG] [Thread-193225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:25:14.707 [DEBUG] [Thread-193225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:25:14.759 [DEBUG] [Thread-193225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:25:14.759 [DEBUG] [Thread-193225] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:25:14.771 [DEBUG] [Thread-193225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:25:14.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:25:14.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-11-24T16:25:14.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-11-24T16:25:14.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:25:14.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:25:14.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:25:14.825 [DEBUG] [Thread-193225] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:25:27.151 [DEBUG] [Thread-193227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:25:40.776 [DEBUG] [Thread-193228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:25:42.227 [DEBUG] [Thread-193229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:25:44.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:25:44.846 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:25:44.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-11-24T16:25:45.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 25, 30), 24.99, 18.8, 0.0, 28.8, 22.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:25:45.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:25:30
2025-11-24T16:25:45.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:25:46.028 [DEBUG] [Thread-193230] [transport.py] [_log()] starting thread (client mode): 0xd3162920
2025-11-24T16:25:46.029 [DEBUG] [Thread-193230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:25:46.041 [DEBUG] [Thread-193230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:25:46.041 [INFO] [Thread-193230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:25:46.045 [DEBUG] [Thread-193230] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:25:46.045 [DEBUG] [Thread-193230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:25:46.045 [DEBUG] [Thread-193230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:25:46.045 [DEBUG] [Thread-193230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:25:46.045 [DEBUG] [Thread-193230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:25:46.045 [DEBUG] [Thread-193230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] client lang: <none>
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] server lang: <none>
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] kex follows: False
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] Compression: none
2025-11-24T16:25:46.046 [DEBUG] [Thread-193230] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:25:46.076 [DEBUG] [Thread-193230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:25:46.081 [DEBUG] [Thread-193230] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:25:46.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:25:46.085 [DEBUG] [Thread-193230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:25:46.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:25:46.088 [DEBUG] [Thread-193230] [transport.py] [_log()] userauth is OK
2025-11-24T16:25:46.088 [DEBUG] [Thread-193230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:25:46.088 [DEBUG] [Thread-193230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:25:46.088 [DEBUG] [Thread-193230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:25:46.088 [DEBUG] [Thread-193230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:25:46.108 [INFO] [Thread-193230] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:25:46.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:25:46.729 [DEBUG] [Thread-193230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:25:46.729 [DEBUG] [Thread-193230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:25:46.730 [DEBUG] [Thread-193230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:25:46.770 [DEBUG] [Thread-193230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:25:46.770 [DEBUG] [Thread-193230] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:25:46.773 [DEBUG] [Thread-193230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:25:46.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:25:46.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:25:46.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:25:46.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:25:46.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:25:46.792 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:25:46.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:25:46.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:25:46.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:25:46.794 [DEBUG] [Thread-193230] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:25:46.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.601088 -999.00  +21.90  28.47     24   +0.60 1 1 1 1 1   888    0 20.74 -10.43 ----- 22.9 28.5 178.2 33.2 26.7 -30.4 26.5 -31.6 28.1 -27.8 28.8 -29.9
2025-11-24T16:25:46.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:25:46.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:25:46.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.601088
2025-11-24T16:25:46.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:25:46.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:25:46.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:25:46.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:25:46.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:25:46.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:25:30', tmtdew=24.99, humidity=18.8, cloud=0.0, wind=28.8, temperature=22.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:25:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:25:46.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:25:46.903 [DEBUG] [Thread-193233] [transport.py] [_log()] starting thread (client mode): 0xd31b10f0
2025-11-24T16:25:46.904 [DEBUG] [Thread-193233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:25:46.919 [DEBUG] [Thread-193233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:25:46.919 [INFO] [Thread-193233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:25:46.927 [DEBUG] [Thread-193233] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:25:46.927 [DEBUG] [Thread-193233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:25:46.927 [DEBUG] [Thread-193233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:25:46.927 [DEBUG] [Thread-193233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:25:46.927 [DEBUG] [Thread-193233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:25:46.927 [DEBUG] [Thread-193233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:25:46.927 [DEBUG] [Thread-193233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:25:46.927 [DEBUG] [Thread-193233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:25:46.928 [DEBUG] [Thread-193233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:25:46.928 [DEBUG] [Thread-193233] [transport.py] [_log()] client lang: <none>
2025-11-24T16:25:46.928 [DEBUG] [Thread-193233] [transport.py] [_log()] server lang: <none>
2025-11-24T16:25:46.928 [DEBUG] [Thread-193233] [transport.py] [_log()] kex follows: False
2025-11-24T16:25:46.928 [DEBUG] [Thread-193233] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:25:46.928 [DEBUG] [Thread-193233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:25:46.928 [DEBUG] [Thread-193233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:25:46.928 [DEBUG] [Thread-193233] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:25:46.928 [DEBUG] [Thread-193233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:25:46.929 [DEBUG] [Thread-193233] [transport.py] [_log()] Compression: none
2025-11-24T16:25:46.929 [DEBUG] [Thread-193233] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:25:46.986 [DEBUG] [Thread-193233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:25:46.987 [DEBUG] [Thread-193233] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:25:46.987 [DEBUG] [Thread-193233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:25:46.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:25:46.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:25:47.046 [DEBUG] [Thread-193233] [transport.py] [_log()] userauth is OK
2025-11-24T16:25:47.046 [DEBUG] [Thread-193233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:25:47.047 [DEBUG] [Thread-193233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:25:47.047 [DEBUG] [Thread-193233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:25:47.047 [DEBUG] [Thread-193233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:25:47.067 [INFO] [Thread-193233] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:25:47.067 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:25:47.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:25:47.903 [DEBUG] [Thread-193233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:25:47.903 [DEBUG] [Thread-193233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:25:47.951 [DEBUG] [Thread-193233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:25:47.951 [DEBUG] [Thread-193233] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:25:47.959 [DEBUG] [Thread-193233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:25:47.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:25:47.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:25:47.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-11-24T16:25:47.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:25:47.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:25:47.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:25:48.002 [DEBUG] [Thread-193233] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:25:57.276 [DEBUG] [Thread-193235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:26:12.384 [DEBUG] [Thread-193236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:26:18.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:26:18.016 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:26:18.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:26:18.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 26, 3), 24.92, 18.89, 0.0, 27.51, 22.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:26:18.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:26:03
2025-11-24T16:26:18.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:26:19.121 [DEBUG] [Thread-193237] [transport.py] [_log()] starting thread (client mode): 0xd31351e0
2025-11-24T16:26:19.122 [DEBUG] [Thread-193237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:26:19.134 [DEBUG] [Thread-193237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:26:19.134 [INFO] [Thread-193237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] client lang: <none>
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] server lang: <none>
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] kex follows: False
2025-11-24T16:26:19.138 [DEBUG] [Thread-193237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:26:19.139 [DEBUG] [Thread-193237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:26:19.139 [DEBUG] [Thread-193237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:26:19.139 [DEBUG] [Thread-193237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:26:19.139 [DEBUG] [Thread-193237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:26:19.139 [DEBUG] [Thread-193237] [transport.py] [_log()] Compression: none
2025-11-24T16:26:19.139 [DEBUG] [Thread-193237] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:26:19.168 [DEBUG] [Thread-193237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:26:19.173 [DEBUG] [Thread-193237] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:26:19.175 [DEBUG] [Thread-193237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:26:19.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:26:19.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:26:19.179 [DEBUG] [Thread-193237] [transport.py] [_log()] userauth is OK
2025-11-24T16:26:19.180 [DEBUG] [Thread-193237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:26:19.180 [DEBUG] [Thread-193237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:26:19.180 [DEBUG] [Thread-193237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:26:19.180 [DEBUG] [Thread-193237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:26:19.207 [INFO] [Thread-193237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:26:19.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:26:19.814 [DEBUG] [Thread-193237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:26:19.814 [DEBUG] [Thread-193237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:26:19.825 [DEBUG] [Thread-193237] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:26:19.854 [DEBUG] [Thread-193237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:26:19.854 [DEBUG] [Thread-193237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:26:19.857 [DEBUG] [Thread-193237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:26:19.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:26:19.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:26:19.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:26:19.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:26:19.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:26:19.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:26:19.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:26:19.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:26:19.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:26:19.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.601088 -999.00  +21.90  28.47     24   +0.60 1 1 1 1 1   888    0 20.74 -10.43 ----- 22.9 28.5 178.2 33.2 26.7 -30.4 26.5 -31.6 28.1 -27.8 28.8 -29.9
2025-11-24T16:26:19.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:26:19.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:26:19.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.601088
2025-11-24T16:26:19.888 [DEBUG] [Thread-193237] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:26:19.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:26:19.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:26:19.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:26:19.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:26:19.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:26:19.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:26:03', tmtdew=24.92, humidity=18.89, cloud=0.0, wind=27.51, temperature=22.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:25:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:26:19.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:26:19.999 [DEBUG] [Thread-193240] [transport.py] [_log()] starting thread (client mode): 0xd07ab9a0
2025-11-24T16:26:19.999 [DEBUG] [Thread-193240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:26:20.014 [DEBUG] [Thread-193240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:26:20.014 [INFO] [Thread-193240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:26:20.021 [DEBUG] [Thread-193240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:26:20.021 [DEBUG] [Thread-193240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] client lang: <none>
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] server lang: <none>
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] kex follows: False
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:26:20.022 [DEBUG] [Thread-193240] [transport.py] [_log()] Compression: none
2025-11-24T16:26:20.023 [DEBUG] [Thread-193240] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:26:20.077 [DEBUG] [Thread-193240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:26:20.077 [DEBUG] [Thread-193240] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:26:20.077 [DEBUG] [Thread-193240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:26:20.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:26:20.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:26:20.139 [DEBUG] [Thread-193240] [transport.py] [_log()] userauth is OK
2025-11-24T16:26:20.139 [DEBUG] [Thread-193240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:26:20.139 [DEBUG] [Thread-193240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:26:20.139 [DEBUG] [Thread-193240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:26:20.140 [DEBUG] [Thread-193240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:26:20.154 [INFO] [Thread-193240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:26:20.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:26:20.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:26:20.980 [DEBUG] [Thread-193240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:26:20.980 [DEBUG] [Thread-193240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:26:21.027 [DEBUG] [Thread-193240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:26:21.027 [DEBUG] [Thread-193240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:26:21.036 [DEBUG] [Thread-193240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:26:21.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:26:21.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:26:21.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-11-24T16:26:21.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:26:21.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:26:21.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:26:21.071 [DEBUG] [Thread-193240] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:26:27.440 [DEBUG] [Thread-193242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:26:41.020 [DEBUG] [Thread-193243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:26:42.516 [DEBUG] [Thread-193244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:26:51.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:26:51.091 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:26:51.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-11-24T16:26:51.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 26, 36), 24.83, 18.79, 0.0, 27.77, 21.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:26:51.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:26:36
2025-11-24T16:26:52.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:26:52.246 [DEBUG] [Thread-193245] [transport.py] [_log()] starting thread (client mode): 0xd07002e0
2025-11-24T16:26:52.247 [DEBUG] [Thread-193245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:26:52.266 [DEBUG] [Thread-193245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:26:52.266 [INFO] [Thread-193245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] client lang: <none>
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] server lang: <none>
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] kex follows: False
2025-11-24T16:26:52.269 [DEBUG] [Thread-193245] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:26:52.270 [DEBUG] [Thread-193245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:26:52.270 [DEBUG] [Thread-193245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:26:52.270 [DEBUG] [Thread-193245] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:26:52.270 [DEBUG] [Thread-193245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:26:52.270 [DEBUG] [Thread-193245] [transport.py] [_log()] Compression: none
2025-11-24T16:26:52.270 [DEBUG] [Thread-193245] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:26:52.293 [DEBUG] [Thread-193245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:26:52.295 [DEBUG] [Thread-193245] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:26:52.295 [DEBUG] [Thread-193245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:26:52.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:26:52.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:26:52.296 [DEBUG] [Thread-193245] [transport.py] [_log()] userauth is OK
2025-11-24T16:26:52.296 [DEBUG] [Thread-193245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:26:52.296 [DEBUG] [Thread-193245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:26:52.296 [DEBUG] [Thread-193245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:26:52.296 [DEBUG] [Thread-193245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:26:52.325 [INFO] [Thread-193245] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:26:52.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:26:52.881 [DEBUG] [Thread-193245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:26:52.881 [DEBUG] [Thread-193245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:26:52.881 [DEBUG] [Thread-193245] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:26:52.922 [DEBUG] [Thread-193245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:26:52.922 [DEBUG] [Thread-193245] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:26:52.924 [DEBUG] [Thread-193245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:26:52.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:26:52.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:26:52.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:26:52.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:26:52.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:26:52.946 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:26:52.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:26:52.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:26:52.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:26:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.601783 -999.00  +21.70  21.12     24   +0.60 1 1 1 1 1   888    0 20.93 -12.24 ----- 14.5 21.1 162.8 33.0 26.6 -28.5 26.2 -30.1 28.0 -25.9 28.6 -29.2
2025-11-24T16:26:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:26:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:26:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.601783
2025-11-24T16:26:52.953 [DEBUG] [Thread-193245] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:26:52.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:26:52.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:26:52.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:26:52.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:26:52.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:26:52.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:26:36', tmtdew=24.83, humidity=18.79, cloud=0.0, wind=27.77, temperature=21.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:26:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:26:53.039 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:26:53.050 [DEBUG] [Thread-193248] [transport.py] [_log()] starting thread (client mode): 0xd31b2b60
2025-11-24T16:26:53.050 [DEBUG] [Thread-193248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:26:53.065 [DEBUG] [Thread-193248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:26:53.065 [INFO] [Thread-193248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] client lang: <none>
2025-11-24T16:26:53.072 [DEBUG] [Thread-193248] [transport.py] [_log()] server lang: <none>
2025-11-24T16:26:53.073 [DEBUG] [Thread-193248] [transport.py] [_log()] kex follows: False
2025-11-24T16:26:53.073 [DEBUG] [Thread-193248] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:26:53.073 [DEBUG] [Thread-193248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:26:53.073 [DEBUG] [Thread-193248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:26:53.073 [DEBUG] [Thread-193248] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:26:53.073 [DEBUG] [Thread-193248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:26:53.073 [DEBUG] [Thread-193248] [transport.py] [_log()] Compression: none
2025-11-24T16:26:53.073 [DEBUG] [Thread-193248] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:26:53.129 [DEBUG] [Thread-193248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:26:53.129 [DEBUG] [Thread-193248] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:26:53.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:26:53.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:26:53.130 [DEBUG] [Thread-193248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:26:53.186 [DEBUG] [Thread-193248] [transport.py] [_log()] userauth is OK
2025-11-24T16:26:53.186 [DEBUG] [Thread-193248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:26:53.186 [DEBUG] [Thread-193248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:26:53.186 [DEBUG] [Thread-193248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:26:53.186 [DEBUG] [Thread-193248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:26:53.201 [INFO] [Thread-193248] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:26:53.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:26:53.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:26:54.027 [DEBUG] [Thread-193248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:26:54.027 [DEBUG] [Thread-193248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:26:54.076 [DEBUG] [Thread-193248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:26:54.076 [DEBUG] [Thread-193248] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:26:54.084 [DEBUG] [Thread-193248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:26:54.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:26:54.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:26:54.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-11-24T16:26:54.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:26:54.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:26:54.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:26:54.117 [DEBUG] [Thread-193248] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:26:57.552 [DEBUG] [Thread-193250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:27:12.643 [DEBUG] [Thread-193251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:27:24.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:27:24.141 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:27:24.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:27:25.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 27, 8), 24.98, 18.59, 0.0, 26.45, 21.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:27:25.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:27:08
2025-11-24T16:27:25.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:27:25.358 [DEBUG] [Thread-193252] [transport.py] [_log()] starting thread (client mode): 0xd07034c0
2025-11-24T16:27:25.358 [DEBUG] [Thread-193252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:27:25.366 [DEBUG] [Thread-193252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:27:25.366 [INFO] [Thread-193252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:27:25.370 [DEBUG] [Thread-193252] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:27:25.370 [DEBUG] [Thread-193252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:27:25.370 [DEBUG] [Thread-193252] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:27:25.370 [DEBUG] [Thread-193252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:27:25.370 [DEBUG] [Thread-193252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:27:25.370 [DEBUG] [Thread-193252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:27:25.370 [DEBUG] [Thread-193252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:27:25.370 [DEBUG] [Thread-193252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:27:25.370 [DEBUG] [Thread-193252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:27:25.370 [DEBUG] [Thread-193252] [transport.py] [_log()] client lang: <none>
2025-11-24T16:27:25.371 [DEBUG] [Thread-193252] [transport.py] [_log()] server lang: <none>
2025-11-24T16:27:25.371 [DEBUG] [Thread-193252] [transport.py] [_log()] kex follows: False
2025-11-24T16:27:25.371 [DEBUG] [Thread-193252] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:27:25.371 [DEBUG] [Thread-193252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:27:25.371 [DEBUG] [Thread-193252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:27:25.371 [DEBUG] [Thread-193252] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:27:25.372 [DEBUG] [Thread-193252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:27:25.372 [DEBUG] [Thread-193252] [transport.py] [_log()] Compression: none
2025-11-24T16:27:25.372 [DEBUG] [Thread-193252] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:27:25.408 [DEBUG] [Thread-193252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:27:25.411 [DEBUG] [Thread-193252] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:27:25.413 [DEBUG] [Thread-193252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:27:25.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:27:25.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:27:25.418 [DEBUG] [Thread-193252] [transport.py] [_log()] userauth is OK
2025-11-24T16:27:25.419 [DEBUG] [Thread-193252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:27:25.419 [DEBUG] [Thread-193252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:27:25.419 [DEBUG] [Thread-193252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:27:25.419 [DEBUG] [Thread-193252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:27:25.445 [INFO] [Thread-193252] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:27:25.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:27:25.991 [DEBUG] [Thread-193252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:27:25.991 [DEBUG] [Thread-193252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:27:25.994 [DEBUG] [Thread-193252] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:27:26.032 [DEBUG] [Thread-193252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:27:26.033 [DEBUG] [Thread-193252] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:27:26.036 [DEBUG] [Thread-193252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:27:26.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:27:26.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:27:26.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:27:26.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:27:26.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:27:26.066 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:27:26.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:27:26.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:27:26.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:27:26.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.602130 -999.00  +22.00  18.81     24   +0.60 1 1 1 1 1   888    0 20.82 -13.27 ----- 21.3 18.8 175.4 31.2 26.6 -28.5 26.1 -28.9 28.0 -26.9 28.6 -27.9
2025-11-24T16:27:26.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:27:26.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:27:26.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.602130
2025-11-24T16:27:26.074 [DEBUG] [Thread-193252] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:27:26.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:27:26.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:27:26.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:27:26.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:27:26.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:27:26.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:27:08', tmtdew=24.98, humidity=18.59, cloud=0.0, wind=26.45, temperature=21.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:27:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:27:26.175 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:27:26.186 [DEBUG] [Thread-193255] [transport.py] [_log()] starting thread (client mode): 0xd0700fd0
2025-11-24T16:27:26.186 [DEBUG] [Thread-193255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:27:26.201 [DEBUG] [Thread-193255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:27:26.201 [INFO] [Thread-193255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] client lang: <none>
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] server lang: <none>
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] kex follows: False
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] Compression: none
2025-11-24T16:27:26.208 [DEBUG] [Thread-193255] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:27:26.270 [DEBUG] [Thread-193255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:27:26.270 [DEBUG] [Thread-193255] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:27:26.271 [DEBUG] [Thread-193255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:27:26.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:27:26.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:27:26.326 [DEBUG] [Thread-193255] [transport.py] [_log()] userauth is OK
2025-11-24T16:27:26.326 [DEBUG] [Thread-193255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:27:26.326 [DEBUG] [Thread-193255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:27:26.326 [DEBUG] [Thread-193255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:27:26.326 [DEBUG] [Thread-193255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:27:26.340 [INFO] [Thread-193255] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:27:26.340 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:27:26.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:27:27.183 [DEBUG] [Thread-193255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:27:27.183 [DEBUG] [Thread-193255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:27:27.231 [DEBUG] [Thread-193255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:27:27.231 [DEBUG] [Thread-193255] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:27:27.239 [DEBUG] [Thread-193255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:27:27.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:27:27.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-11-24T16:27:27.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-11-24T16:27:27.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:27:27.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:27:27.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:27:27.272 [DEBUG] [Thread-193255] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:27:27.691 [DEBUG] [Thread-193257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:27:41.263 [DEBUG] [Thread-193258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:27:42.756 [DEBUG] [Thread-193259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:27:57.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:27:57.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:27:57.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-11-24T16:27:57.788 [DEBUG] [Thread-193260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:27:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 27, 41), 25.39, 18.14, 0.0, 32.92, 22.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:27:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:27:41
2025-11-24T16:27:58.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:27:58.538 [DEBUG] [Thread-193261] [transport.py] [_log()] starting thread (client mode): 0xd07aba90
2025-11-24T16:27:58.539 [DEBUG] [Thread-193261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:27:58.552 [DEBUG] [Thread-193261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:27:58.552 [INFO] [Thread-193261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:27:58.558 [DEBUG] [Thread-193261] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:27:58.558 [DEBUG] [Thread-193261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:27:58.558 [DEBUG] [Thread-193261] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:27:58.558 [DEBUG] [Thread-193261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:27:58.558 [DEBUG] [Thread-193261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:27:58.558 [DEBUG] [Thread-193261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:27:58.559 [DEBUG] [Thread-193261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:27:58.559 [DEBUG] [Thread-193261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:27:58.559 [DEBUG] [Thread-193261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:27:58.559 [DEBUG] [Thread-193261] [transport.py] [_log()] client lang: <none>
2025-11-24T16:27:58.559 [DEBUG] [Thread-193261] [transport.py] [_log()] server lang: <none>
2025-11-24T16:27:58.559 [DEBUG] [Thread-193261] [transport.py] [_log()] kex follows: False
2025-11-24T16:27:58.559 [DEBUG] [Thread-193261] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:27:58.560 [DEBUG] [Thread-193261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:27:58.560 [DEBUG] [Thread-193261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:27:58.560 [DEBUG] [Thread-193261] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:27:58.560 [DEBUG] [Thread-193261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:27:58.560 [DEBUG] [Thread-193261] [transport.py] [_log()] Compression: none
2025-11-24T16:27:58.560 [DEBUG] [Thread-193261] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:27:58.593 [DEBUG] [Thread-193261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:27:58.598 [DEBUG] [Thread-193261] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:27:58.600 [DEBUG] [Thread-193261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:27:58.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:27:58.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:27:58.606 [DEBUG] [Thread-193261] [transport.py] [_log()] userauth is OK
2025-11-24T16:27:58.607 [DEBUG] [Thread-193261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:27:58.607 [DEBUG] [Thread-193261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:27:58.607 [DEBUG] [Thread-193261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:27:58.607 [DEBUG] [Thread-193261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:27:58.632 [INFO] [Thread-193261] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:27:58.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:27:59.235 [DEBUG] [Thread-193261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:27:59.235 [DEBUG] [Thread-193261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:27:59.237 [DEBUG] [Thread-193261] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:27:59.276 [DEBUG] [Thread-193261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:27:59.276 [DEBUG] [Thread-193261] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:27:59.280 [DEBUG] [Thread-193261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:27:59.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:27:59.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:27:59.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:27:59.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:27:59.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:27:59.302 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:27:59.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:27:59.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:27:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:27:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.602478 -999.00  +22.00  31.21     23   +0.40 1 1 2 1 1   888    0 20.99 -13.96 ----- 31.6 31.2 186.0 38.8 26.4 -28.7 26.0 -31.7 27.8 -27.7 28.4 -30.2
2025-11-24T16:27:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:27:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:27:59.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.602478
2025-11-24T16:27:59.309 [DEBUG] [Thread-193261] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:27:59.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:27:59.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:27:59.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:27:59.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:27:59.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:27:59.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:27:41', tmtdew=25.39, humidity=18.14, cloud=0.0, wind=32.92, temperature=22.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:27:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:27: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-11-24T16:27:59.405 [DEBUG] [Thread-193264] [transport.py] [_log()] starting thread (client mode): 0xd07bfcd0
2025-11-24T16:27:59.406 [DEBUG] [Thread-193264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:27:59.420 [DEBUG] [Thread-193264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:27:59.420 [INFO] [Thread-193264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:27:59.427 [DEBUG] [Thread-193264] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:27:59.427 [DEBUG] [Thread-193264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:27:59.427 [DEBUG] [Thread-193264] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] client lang: <none>
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] server lang: <none>
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] kex follows: False
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:27:59.428 [DEBUG] [Thread-193264] [transport.py] [_log()] Compression: none
2025-11-24T16:27:59.429 [DEBUG] [Thread-193264] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:27:59.485 [DEBUG] [Thread-193264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:27:59.485 [DEBUG] [Thread-193264] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:27:59.485 [DEBUG] [Thread-193264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:27:59.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:27:59.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:27:59.542 [DEBUG] [Thread-193264] [transport.py] [_log()] userauth is OK
2025-11-24T16:27:59.542 [DEBUG] [Thread-193264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:27:59.542 [DEBUG] [Thread-193264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:27:59.542 [DEBUG] [Thread-193264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:27:59.542 [DEBUG] [Thread-193264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:27:59.562 [INFO] [Thread-193264] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:27:59.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:27:59.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:28:00.424 [DEBUG] [Thread-193264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:28:00.424 [DEBUG] [Thread-193264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:28:00.472 [DEBUG] [Thread-193264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:28:00.472 [DEBUG] [Thread-193264] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:28:00.481 [DEBUG] [Thread-193264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:28:00.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:28:00.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-11-24T16:28:00.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-11-24T16:28:00.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:28:00.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:28:00.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:28:00.518 [DEBUG] [Thread-193264] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:28:12.814 [DEBUG] [Thread-193266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:28:27.895 [DEBUG] [Thread-193267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:28:30.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:28:30.551 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:28:30.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:28:31.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 28, 14), 25.48, 18.02, 0.0, 35.46, 22.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:28:31.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:28:14
2025-11-24T16:28:31.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:28:31.697 [DEBUG] [Thread-193268] [transport.py] [_log()] starting thread (client mode): 0xd07a9480
2025-11-24T16:28:31.698 [DEBUG] [Thread-193268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:28:31.716 [DEBUG] [Thread-193268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:28:31.716 [INFO] [Thread-193268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:28:31.718 [DEBUG] [Thread-193268] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:28:31.718 [DEBUG] [Thread-193268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:28:31.718 [DEBUG] [Thread-193268] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] client lang: <none>
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] server lang: <none>
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] kex follows: False
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] Compression: none
2025-11-24T16:28:31.719 [DEBUG] [Thread-193268] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:28:31.738 [DEBUG] [Thread-193268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:28:31.740 [DEBUG] [Thread-193268] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:28:31.741 [DEBUG] [Thread-193268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:28:31.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:28:31.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:28:31.745 [DEBUG] [Thread-193268] [transport.py] [_log()] userauth is OK
2025-11-24T16:28:31.745 [DEBUG] [Thread-193268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:28:31.746 [DEBUG] [Thread-193268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:28:31.746 [DEBUG] [Thread-193268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:28:31.746 [DEBUG] [Thread-193268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:28:31.771 [INFO] [Thread-193268] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:28:31.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:28:32.370 [DEBUG] [Thread-193268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:28:32.371 [DEBUG] [Thread-193268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:28:32.380 [DEBUG] [Thread-193268] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:28:32.411 [DEBUG] [Thread-193268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:28:32.411 [DEBUG] [Thread-193268] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:28:32.413 [DEBUG] [Thread-193268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:28:32.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:28:32.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:28:32.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:28:32.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:28:32.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:28:32.429 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:28:32.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:28:32.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:28:32.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:28:32.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.602824 -999.00  +22.00  18.76     23   +0.50 1 1 1 1 1   888    0 21.10 -14.24 ----- 22.4 18.8 168.9 33.4 26.4 -28.7 26.0 -29.9 27.9 -26.8 28.4 -29.0
2025-11-24T16:28:32.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:28:32.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:28:32.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.602824
2025-11-24T16:28:32.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:28:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:28:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:28:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:28:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:28:32.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:28:14', tmtdew=25.48, humidity=18.02, cloud=0.0, wind=35.46, temperature=22.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:28:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:28:32.437 [DEBUG] [Thread-193268] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:28:32.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:28:32.522 [DEBUG] [Thread-193271] [transport.py] [_log()] starting thread (client mode): 0xd07bc160
2025-11-24T16:28:32.523 [DEBUG] [Thread-193271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:28:32.539 [DEBUG] [Thread-193271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:28:32.539 [INFO] [Thread-193271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] client lang: <none>
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] server lang: <none>
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] kex follows: False
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] Compression: none
2025-11-24T16:28:32.548 [DEBUG] [Thread-193271] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:28:32.607 [DEBUG] [Thread-193271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:28:32.607 [DEBUG] [Thread-193271] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:28:32.608 [DEBUG] [Thread-193271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:28:32.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:28:32.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:28:32.666 [DEBUG] [Thread-193271] [transport.py] [_log()] userauth is OK
2025-11-24T16:28:32.667 [DEBUG] [Thread-193271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:28:32.667 [DEBUG] [Thread-193271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:28:32.667 [DEBUG] [Thread-193271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:28:32.667 [DEBUG] [Thread-193271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:28:32.690 [INFO] [Thread-193271] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:28:32.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:28:32.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:28:33.524 [DEBUG] [Thread-193271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:28:33.525 [DEBUG] [Thread-193271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:28:33.573 [DEBUG] [Thread-193271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:28:33.573 [DEBUG] [Thread-193271] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:28:33.583 [DEBUG] [Thread-193271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:28:33.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:28:33.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-11-24T16:28: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') -> 00000000
2025-11-24T16:28:33.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:28:33.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:28:33.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:28:33.620 [DEBUG] [Thread-193271] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:28:41.614 [DEBUG] [Thread-193273 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:28:42.925 [DEBUG] [Thread-193274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:28:58.009 [DEBUG] [Thread-193275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:29:03.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:29:03.646 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:29:03.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:29:04.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 28, 46), 25.45, 17.94, 0.0, 34.49, 22.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:29:04.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:28:46
2025-11-24T16:29:04.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:29:05.138 [DEBUG] [Thread-193276] [transport.py] [_log()] starting thread (client mode): 0xd0700df0
2025-11-24T16:29:05.139 [DEBUG] [Thread-193276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:29:05.142 [DEBUG] [Thread-193276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:29:05.142 [INFO] [Thread-193276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:29:05.145 [DEBUG] [Thread-193276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:29:05.145 [DEBUG] [Thread-193276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:29:05.145 [DEBUG] [Thread-193276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:29:05.145 [DEBUG] [Thread-193276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:29:05.145 [DEBUG] [Thread-193276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:29:05.145 [DEBUG] [Thread-193276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:29:05.145 [DEBUG] [Thread-193276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:29:05.145 [DEBUG] [Thread-193276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:29:05.145 [DEBUG] [Thread-193276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:29:05.146 [DEBUG] [Thread-193276] [transport.py] [_log()] client lang: <none>
2025-11-24T16:29:05.146 [DEBUG] [Thread-193276] [transport.py] [_log()] server lang: <none>
2025-11-24T16:29:05.146 [DEBUG] [Thread-193276] [transport.py] [_log()] kex follows: False
2025-11-24T16:29:05.146 [DEBUG] [Thread-193276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:29:05.146 [DEBUG] [Thread-193276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:29:05.146 [DEBUG] [Thread-193276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:29:05.146 [DEBUG] [Thread-193276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:29:05.146 [DEBUG] [Thread-193276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:29:05.146 [DEBUG] [Thread-193276] [transport.py] [_log()] Compression: none
2025-11-24T16:29:05.146 [DEBUG] [Thread-193276] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:29:05.172 [DEBUG] [Thread-193276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:29:05.177 [DEBUG] [Thread-193276] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:29:05.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:29:05.182 [DEBUG] [Thread-193276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:29:05.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:29:05.185 [DEBUG] [Thread-193276] [transport.py] [_log()] userauth is OK
2025-11-24T16:29:05.185 [DEBUG] [Thread-193276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:29:05.185 [DEBUG] [Thread-193276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:29:05.185 [DEBUG] [Thread-193276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:29:05.185 [DEBUG] [Thread-193276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:29:05.211 [INFO] [Thread-193276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:29:05.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:29:05.797 [DEBUG] [Thread-193276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:29:05.797 [DEBUG] [Thread-193276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:29:05.798 [DEBUG] [Thread-193276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:29:05.838 [DEBUG] [Thread-193276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:29:05.838 [DEBUG] [Thread-193276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:29:05.841 [DEBUG] [Thread-193276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:29:05.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:29:05.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:29:05.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:29:05.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:29:05.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:29:05.863 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:29:05.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:29:05.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:29:05.865 [DEBUG] [Thread-193276] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:29:05.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:29:05.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.603172 -999.00  +22.00  24.96     23   +0.40 1 1 1 1 1   888    0 20.95 -14.03 ----- 20.8 25.0 169.0 32.8 26.5 -28.8 26.2 -27.8 27.9 -27.3 28.4 -29.1
2025-11-24T16:29:05.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:29:05.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:29:05.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.603172
2025-11-24T16:29:05.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:29:05.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:29:05.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:29:05.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:29:05.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:29:05.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:28:46', tmtdew=25.45, humidity=17.94, cloud=0.0, wind=34.49, temperature=22.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:28:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:29:05.977 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:29:05.988 [DEBUG] [Thread-193279] [transport.py] [_log()] starting thread (client mode): 0xd07bdfc0
2025-11-24T16:29:05.988 [DEBUG] [Thread-193279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:29:06.002 [DEBUG] [Thread-193279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:29:06.003 [INFO] [Thread-193279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:29:06.010 [DEBUG] [Thread-193279] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:29:06.010 [DEBUG] [Thread-193279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] client lang: <none>
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] server lang: <none>
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] kex follows: False
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:29:06.011 [DEBUG] [Thread-193279] [transport.py] [_log()] Compression: none
2025-11-24T16:29:06.013 [DEBUG] [Thread-193279] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:29:06.074 [DEBUG] [Thread-193279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:29:06.074 [DEBUG] [Thread-193279] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:29:06.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:29:06.075 [DEBUG] [Thread-193279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:29:06.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:29:06.130 [DEBUG] [Thread-193279] [transport.py] [_log()] userauth is OK
2025-11-24T16:29:06.130 [DEBUG] [Thread-193279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:29:06.130 [DEBUG] [Thread-193279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:29:06.130 [DEBUG] [Thread-193279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:29:06.130 [DEBUG] [Thread-193279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:29:06.149 [INFO] [Thread-193279] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:29:06.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:29:06.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:29:07.006 [DEBUG] [Thread-193279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:29:07.006 [DEBUG] [Thread-193279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:29:07.058 [DEBUG] [Thread-193279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:29:07.058 [DEBUG] [Thread-193279] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:29:07.068 [DEBUG] [Thread-193279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:29:07.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:29:07.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-11-24T16:29:07.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-11-24T16:29:07.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:29:07.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:29:07.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:29:07.104 [DEBUG] [Thread-193279] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:29:13.059 [DEBUG] [Thread-193281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:29:28.162 [DEBUG] [Thread-193282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:29:37.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:29:37.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:29:37.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-11-24T16:29:37.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 29, 19), 25.38, 17.99, 0.0, 31.34, 22.03, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:29:37.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:29:19
2025-11-24T16:29:38.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:29:38.225 [DEBUG] [Thread-193283] [transport.py] [_log()] starting thread (client mode): 0xd07aa140
2025-11-24T16:29:38.225 [DEBUG] [Thread-193283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:29:38.244 [DEBUG] [Thread-193283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:29:38.244 [INFO] [Thread-193283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:29:38.247 [DEBUG] [Thread-193283] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:29:38.247 [DEBUG] [Thread-193283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:29:38.247 [DEBUG] [Thread-193283] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:29:38.247 [DEBUG] [Thread-193283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:29:38.247 [DEBUG] [Thread-193283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:29:38.247 [DEBUG] [Thread-193283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:29:38.247 [DEBUG] [Thread-193283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:29:38.247 [DEBUG] [Thread-193283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] client lang: <none>
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] server lang: <none>
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] kex follows: False
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] Compression: none
2025-11-24T16:29:38.248 [DEBUG] [Thread-193283] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:29:38.268 [DEBUG] [Thread-193283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:29:38.273 [DEBUG] [Thread-193283] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:29:38.274 [DEBUG] [Thread-193283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:29:38.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:29:38.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:29:38.279 [DEBUG] [Thread-193283] [transport.py] [_log()] userauth is OK
2025-11-24T16:29:38.280 [DEBUG] [Thread-193283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:29:38.280 [DEBUG] [Thread-193283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:29:38.280 [DEBUG] [Thread-193283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:29:38.280 [DEBUG] [Thread-193283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:29:38.305 [INFO] [Thread-193283] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:29:38.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:29:38.913 [DEBUG] [Thread-193283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:29:38.913 [DEBUG] [Thread-193283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:29:38.914 [DEBUG] [Thread-193283] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:29:38.953 [DEBUG] [Thread-193283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:29:38.954 [DEBUG] [Thread-193283] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:29:38.958 [DEBUG] [Thread-193283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:29:38.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:29:38.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:29:38.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:29:38.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:29:38.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:29:38.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:29:38.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:29:38.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:29:38.985 [DEBUG] [Thread-193283] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:29:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:29:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.603519 -999.00  +21.90  25.52     23   +0.40 1 1 1 1 1   888    0 20.60 -11.53 ----- 21.1 25.5 165.8 30.5 26.5 -28.7 26.1 -28.4 27.9 -26.3 28.4 -29.0
2025-11-24T16:29:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:29:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:29:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.603519
2025-11-24T16:29:38.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:29:38.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:29:38.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:29:38.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:29:38.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:29:38.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:29:19', tmtdew=25.38, humidity=17.99, cloud=0.0, wind=31.34, temperature=22.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:29:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:29:39.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:29:39.091 [DEBUG] [Thread-193286] [transport.py] [_log()] starting thread (client mode): 0xd31b3ac0
2025-11-24T16:29:39.091 [DEBUG] [Thread-193286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:29:39.105 [DEBUG] [Thread-193286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:29:39.105 [INFO] [Thread-193286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:29:39.113 [DEBUG] [Thread-193286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:29:39.113 [DEBUG] [Thread-193286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:29:39.114 [DEBUG] [Thread-193286] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:29:39.114 [DEBUG] [Thread-193286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:29:39.114 [DEBUG] [Thread-193286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:29:39.114 [DEBUG] [Thread-193286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:29:39.114 [DEBUG] [Thread-193286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:29:39.114 [DEBUG] [Thread-193286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:29:39.114 [DEBUG] [Thread-193286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:29:39.114 [DEBUG] [Thread-193286] [transport.py] [_log()] client lang: <none>
2025-11-24T16:29:39.115 [DEBUG] [Thread-193286] [transport.py] [_log()] server lang: <none>
2025-11-24T16:29:39.115 [DEBUG] [Thread-193286] [transport.py] [_log()] kex follows: False
2025-11-24T16:29:39.115 [DEBUG] [Thread-193286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:29:39.115 [DEBUG] [Thread-193286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:29:39.115 [DEBUG] [Thread-193286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:29:39.115 [DEBUG] [Thread-193286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:29:39.115 [DEBUG] [Thread-193286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:29:39.115 [DEBUG] [Thread-193286] [transport.py] [_log()] Compression: none
2025-11-24T16:29:39.116 [DEBUG] [Thread-193286] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:29:39.180 [DEBUG] [Thread-193286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:29:39.180 [DEBUG] [Thread-193286] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:29:39.180 [DEBUG] [Thread-193286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:29:39.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:29:39.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:29:39.238 [DEBUG] [Thread-193286] [transport.py] [_log()] userauth is OK
2025-11-24T16:29:39.238 [DEBUG] [Thread-193286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:29:39.238 [DEBUG] [Thread-193286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:29:39.238 [DEBUG] [Thread-193286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:29:39.238 [DEBUG] [Thread-193286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:29:39.253 [INFO] [Thread-193286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:29:39.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:29:39.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:29:40.088 [DEBUG] [Thread-193286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:29:40.089 [DEBUG] [Thread-193286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:29:40.136 [DEBUG] [Thread-193286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:29:40.136 [DEBUG] [Thread-193286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:29:40.145 [DEBUG] [Thread-193286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:29:40.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:29:40.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-11-24T16:29:40.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-11-24T16:29:40.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:29:40.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:29:40.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:29:40.400 [DEBUG] [Thread-193286] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:29:41.939 [DEBUG] [Thread-193288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:29:43.190 [DEBUG] [Thread-193289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:29:58.283 [DEBUG] [Thread-193290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:30:10.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:30:10.422 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:30:10.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-11-24T16:30:11.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 29, 51), 25.1, 18.26, 0.0, 25.87, 21.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:30:11.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:29:51
2025-11-24T16:30:11.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:30:11.633 [DEBUG] [Thread-193291] [transport.py] [_log()] starting thread (client mode): 0xd07bf790
2025-11-24T16:30:11.634 [DEBUG] [Thread-193291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:30:11.650 [DEBUG] [Thread-193291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:30:11.650 [INFO] [Thread-193291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] client lang: <none>
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] server lang: <none>
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] kex follows: False
2025-11-24T16:30:11.653 [DEBUG] [Thread-193291] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:30:11.654 [DEBUG] [Thread-193291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:30:11.654 [DEBUG] [Thread-193291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:30:11.654 [DEBUG] [Thread-193291] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:30:11.654 [DEBUG] [Thread-193291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:30:11.654 [DEBUG] [Thread-193291] [transport.py] [_log()] Compression: none
2025-11-24T16:30:11.654 [DEBUG] [Thread-193291] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:30:11.686 [DEBUG] [Thread-193291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:30:11.688 [DEBUG] [Thread-193291] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:30:11.688 [DEBUG] [Thread-193291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:30:11.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:30:11.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:30:11.725 [DEBUG] [Thread-193291] [transport.py] [_log()] userauth is OK
2025-11-24T16:30:11.725 [DEBUG] [Thread-193291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:30:11.725 [DEBUG] [Thread-193291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:30:11.725 [DEBUG] [Thread-193291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:30:11.725 [DEBUG] [Thread-193291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:30:11.754 [INFO] [Thread-193291] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:30:11.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:30:13.320 [DEBUG] [Thread-193293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:30:17.721 [DEBUG] [Thread-193291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:30:17.721 [DEBUG] [Thread-193291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:30:17.722 [DEBUG] [Thread-193291] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:30:17.762 [DEBUG] [Thread-193291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:30:17.762 [DEBUG] [Thread-193291] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:30:17.765 [DEBUG] [Thread-193291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:30:17.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:30:17.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:30:17.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:30:17.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:30:17.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:30:17.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:30:17.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:30:17.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:30:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:30:17.900 [DEBUG] [Thread-193291] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:30:17.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.603519 -999.00  +21.90  25.52     23   +0.40 1 1 1 1 1   888    0 20.60 -11.53 ----- 21.1 25.5 165.8 30.5 26.5 -28.7 26.1 -28.4 27.9 -26.3 28.4 -29.0
2025-11-24T16:30:17.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:30:17.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:30:17.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.603519
2025-11-24T16:30:17.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:30:17.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:30:17.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:30:17.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:30:17.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:30:17.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:29:51', tmtdew=25.1, humidity=18.26, cloud=0.0, wind=25.87, temperature=21.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:29:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:30:18.003 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:30:18.015 [DEBUG] [Thread-193295] [transport.py] [_log()] starting thread (client mode): 0xd3161c60
2025-11-24T16:30:18.015 [DEBUG] [Thread-193295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:30:18.030 [DEBUG] [Thread-193295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:30:18.030 [INFO] [Thread-193295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] client lang: <none>
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] server lang: <none>
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] kex follows: False
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:30:18.038 [DEBUG] [Thread-193295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:30:18.039 [DEBUG] [Thread-193295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:30:18.039 [DEBUG] [Thread-193295] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:30:18.039 [DEBUG] [Thread-193295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:30:18.039 [DEBUG] [Thread-193295] [transport.py] [_log()] Compression: none
2025-11-24T16:30:18.039 [DEBUG] [Thread-193295] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:30:18.098 [DEBUG] [Thread-193295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:30:18.099 [DEBUG] [Thread-193295] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:30:18.099 [DEBUG] [Thread-193295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:30:18.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:30:18.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:30:18.159 [DEBUG] [Thread-193295] [transport.py] [_log()] userauth is OK
2025-11-24T16:30:18.159 [DEBUG] [Thread-193295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:30:18.159 [DEBUG] [Thread-193295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:30:18.159 [DEBUG] [Thread-193295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:30:18.160 [DEBUG] [Thread-193295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:30:18.178 [INFO] [Thread-193295] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:30:18.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:30:18.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:30:19.005 [DEBUG] [Thread-193295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:30:19.005 [DEBUG] [Thread-193295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:30:19.053 [DEBUG] [Thread-193295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:30:19.053 [DEBUG] [Thread-193295] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:30:19.062 [DEBUG] [Thread-193295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:30:19.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:30:19.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-11-24T16:30:19.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-11-24T16:30:19.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:30:19.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:30:19.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:30:19.110 [DEBUG] [Thread-193295] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:30:28.364 [DEBUG] [Thread-193297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:30:42.154 [DEBUG] [Thread-193298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:30:43.475 [DEBUG] [Thread-193299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:30:49.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:30:49.133 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:30: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-11-24T16:30:49.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 30, 24), 25.15, 18.21, 0.0, 24.91, 21.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:30:49.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:30:24
2025-11-24T16:30:50.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:30:50.200 [DEBUG] [Thread-193300] [transport.py] [_log()] starting thread (client mode): 0xd31cf7c0
2025-11-24T16:30:50.201 [DEBUG] [Thread-193300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:30:50.214 [DEBUG] [Thread-193300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:30:50.214 [INFO] [Thread-193300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:30:50.218 [DEBUG] [Thread-193300] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:30:50.218 [DEBUG] [Thread-193300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:30:50.218 [DEBUG] [Thread-193300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:30:50.218 [DEBUG] [Thread-193300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:30:50.218 [DEBUG] [Thread-193300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:30:50.218 [DEBUG] [Thread-193300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:30:50.218 [DEBUG] [Thread-193300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:30:50.218 [DEBUG] [Thread-193300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:30:50.218 [DEBUG] [Thread-193300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:30:50.218 [DEBUG] [Thread-193300] [transport.py] [_log()] client lang: <none>
2025-11-24T16:30:50.219 [DEBUG] [Thread-193300] [transport.py] [_log()] server lang: <none>
2025-11-24T16:30:50.219 [DEBUG] [Thread-193300] [transport.py] [_log()] kex follows: False
2025-11-24T16:30:50.219 [DEBUG] [Thread-193300] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:30:50.219 [DEBUG] [Thread-193300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:30:50.219 [DEBUG] [Thread-193300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:30:50.219 [DEBUG] [Thread-193300] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:30:50.219 [DEBUG] [Thread-193300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:30:50.219 [DEBUG] [Thread-193300] [transport.py] [_log()] Compression: none
2025-11-24T16:30:50.219 [DEBUG] [Thread-193300] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:30:50.247 [DEBUG] [Thread-193300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:30:50.250 [DEBUG] [Thread-193300] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:30:50.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:30:50.252 [DEBUG] [Thread-193300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:30:50.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:30:50.254 [DEBUG] [Thread-193300] [transport.py] [_log()] userauth is OK
2025-11-24T16:30:50.254 [DEBUG] [Thread-193300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:30:50.254 [DEBUG] [Thread-193300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:30:50.254 [DEBUG] [Thread-193300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:30:50.254 [DEBUG] [Thread-193300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:30:50.271 [INFO] [Thread-193300] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:30:50.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:30:50.905 [DEBUG] [Thread-193300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:30:50.905 [DEBUG] [Thread-193300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:30:50.905 [DEBUG] [Thread-193300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:30:50.946 [DEBUG] [Thread-193300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:30:50.946 [DEBUG] [Thread-193300] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:30:50.949 [DEBUG] [Thread-193300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:30:50.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:30:50.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:30:50.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:30:50.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:30:50.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:30:50.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:30:50.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:30:50.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:30:50.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:30:50.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.604213 -999.00  +21.80  28.61     23   +0.30 1 1 1 1 1   888    0 21.16 -10.08 ----- 17.7 28.6 177.8 33.7 26.6 -29.1 26.1 -29.0 27.9 -27.2 28.5 -28.7
2025-11-24T16:30:50.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:30:50.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:30:50.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.604213
2025-11-24T16:30:50.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:30:50.984 [DEBUG] [Thread-193300] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:30:50.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:30:50.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:30:50.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:30:50.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:30:50.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:30:24', tmtdew=25.15, humidity=18.21, cloud=0.0, wind=24.91, temperature=21.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:30:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:30:51.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:30:51.074 [DEBUG] [Thread-193303] [transport.py] [_log()] starting thread (client mode): 0xd31cfe50
2025-11-24T16:30:51.074 [DEBUG] [Thread-193303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:30:51.088 [DEBUG] [Thread-193303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:30:51.088 [INFO] [Thread-193303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] client lang: <none>
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] server lang: <none>
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] kex follows: False
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] Compression: none
2025-11-24T16:30:51.096 [DEBUG] [Thread-193303] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:30:51.152 [DEBUG] [Thread-193303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:30:51.153 [DEBUG] [Thread-193303] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:30:51.153 [DEBUG] [Thread-193303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:30:51.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:30:51.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:30:51.209 [DEBUG] [Thread-193303] [transport.py] [_log()] userauth is OK
2025-11-24T16:30:51.210 [DEBUG] [Thread-193303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:30:51.210 [DEBUG] [Thread-193303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:30:51.210 [DEBUG] [Thread-193303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:30:51.210 [DEBUG] [Thread-193303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:30:51.224 [INFO] [Thread-193303] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:30: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-11-24T16:30:51.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:30:52.063 [DEBUG] [Thread-193303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:30:52.063 [DEBUG] [Thread-193303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:30:52.111 [DEBUG] [Thread-193303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:30:52.111 [DEBUG] [Thread-193303] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:30:52.119 [DEBUG] [Thread-193303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:30:52.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:30:52.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-11-24T16:30:52.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:30:52.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:30:52.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:30:52.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:30:52.151 [DEBUG] [Thread-193303] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:30:58.507 [DEBUG] [Thread-193305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:31:13.545 [DEBUG] [Thread-193306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:31:22.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:31:22.175 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:31:22.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:31:23.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 30, 57), 25.19, 18.22, 0.0, 19.8, 21.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:31:23.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:30:57
2025-11-24T16:31:23.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:31:23.466 [DEBUG] [Thread-193307] [transport.py] [_log()] starting thread (client mode): 0xd3161c60
2025-11-24T16:31:23.467 [DEBUG] [Thread-193307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:31:23.485 [DEBUG] [Thread-193307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:31:23.485 [INFO] [Thread-193307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] client lang: <none>
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] server lang: <none>
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] kex follows: False
2025-11-24T16:31:23.488 [DEBUG] [Thread-193307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:31:23.489 [DEBUG] [Thread-193307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:31:23.489 [DEBUG] [Thread-193307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:31:23.489 [DEBUG] [Thread-193307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:31:23.489 [DEBUG] [Thread-193307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:31:23.489 [DEBUG] [Thread-193307] [transport.py] [_log()] Compression: none
2025-11-24T16:31:23.489 [DEBUG] [Thread-193307] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:31:23.513 [DEBUG] [Thread-193307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:31:23.516 [DEBUG] [Thread-193307] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:31:23.517 [DEBUG] [Thread-193307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:31:23.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:31:23.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:31:23.520 [DEBUG] [Thread-193307] [transport.py] [_log()] userauth is OK
2025-11-24T16:31:23.520 [DEBUG] [Thread-193307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:31:23.520 [DEBUG] [Thread-193307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:31:23.520 [DEBUG] [Thread-193307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:31:23.520 [DEBUG] [Thread-193307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:31:23.544 [INFO] [Thread-193307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:31:23.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:31:24.299 [DEBUG] [Thread-193307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:31:24.299 [DEBUG] [Thread-193307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:31:24.300 [DEBUG] [Thread-193307] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:31:24.340 [DEBUG] [Thread-193307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:31:24.340 [DEBUG] [Thread-193307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:31:24.341 [DEBUG] [Thread-193307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:31:24.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:31:24.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:31:24.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:31:24.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:31:24.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:31:24.359 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:31:24.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:31:24.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:31:24.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:31:24.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.604560 -999.00  +21.90  21.51     23   +0.30 1 1 1 1 1   888    0 20.94 -9.36 ----- 21.1 21.5 179.0 25.7 26.5 -28.6 26.1 -32.1 27.9 -28.2 28.4 -30.4
2025-11-24T16:31:24.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:31:24.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:31:24.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.604560
2025-11-24T16:31:24.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:31:24.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:31:24.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:31:24.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:31:24.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:31:24.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:30:57', tmtdew=25.19, humidity=18.22, cloud=0.0, wind=19.8, temperature=21.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:30:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:31:24.360 [DEBUG] [Thread-193307] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:31:24.434 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:31:24.445 [DEBUG] [Thread-193310] [transport.py] [_log()] starting thread (client mode): 0xd07bead0
2025-11-24T16:31:24.445 [DEBUG] [Thread-193310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:31:24.459 [DEBUG] [Thread-193310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:31:24.459 [INFO] [Thread-193310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] client lang: <none>
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] server lang: <none>
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] kex follows: False
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] Compression: none
2025-11-24T16:31:24.467 [DEBUG] [Thread-193310] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:31:24.524 [DEBUG] [Thread-193310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:31:24.524 [DEBUG] [Thread-193310] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:31:24.525 [DEBUG] [Thread-193310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:31:24.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:31:24.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:31:24.581 [DEBUG] [Thread-193310] [transport.py] [_log()] userauth is OK
2025-11-24T16:31:24.581 [DEBUG] [Thread-193310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:31:24.581 [DEBUG] [Thread-193310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:31:24.581 [DEBUG] [Thread-193310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:31:24.581 [DEBUG] [Thread-193310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:31:24.595 [INFO] [Thread-193310] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:31:24.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:31:24.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:31:25.449 [DEBUG] [Thread-193310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:31:25.449 [DEBUG] [Thread-193310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:31:25.497 [DEBUG] [Thread-193310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:31:25.497 [DEBUG] [Thread-193310] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:31:25.505 [DEBUG] [Thread-193310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:31:25.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:31:25.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:31:25.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-11-24T16:31:25.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:31:25.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:31:25.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:31:25.538 [DEBUG] [Thread-193310] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:31:28.572 [DEBUG] [Thread-193312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:31:42.451 [DEBUG] [Thread-193313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:31:43.645 [DEBUG] [Thread-193314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:31:55.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:31:55.563 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:31:55.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-11-24T16:31:56.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 31, 29), 25.37, 18.02, 0.0, 20.96, 22.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:31:56.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:31:29
2025-11-24T16:31:56.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:31:57.129 [DEBUG] [Thread-193315] [transport.py] [_log()] starting thread (client mode): 0xd31b3ac0
2025-11-24T16:31:57.130 [DEBUG] [Thread-193315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:31:57.135 [DEBUG] [Thread-193315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:31:57.135 [INFO] [Thread-193315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] client lang: <none>
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] server lang: <none>
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] kex follows: False
2025-11-24T16:31:57.140 [DEBUG] [Thread-193315] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:31:57.141 [DEBUG] [Thread-193315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:31:57.141 [DEBUG] [Thread-193315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:31:57.141 [DEBUG] [Thread-193315] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:31:57.141 [DEBUG] [Thread-193315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:31:57.141 [DEBUG] [Thread-193315] [transport.py] [_log()] Compression: none
2025-11-24T16:31:57.141 [DEBUG] [Thread-193315] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:31:57.170 [DEBUG] [Thread-193315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:31:57.176 [DEBUG] [Thread-193315] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:31:57.179 [DEBUG] [Thread-193315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:31:57.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:31:57.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:31:57.185 [DEBUG] [Thread-193315] [transport.py] [_log()] userauth is OK
2025-11-24T16:31:57.186 [DEBUG] [Thread-193315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:31:57.186 [DEBUG] [Thread-193315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:31:57.186 [DEBUG] [Thread-193315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:31:57.186 [DEBUG] [Thread-193315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:31:57.224 [INFO] [Thread-193315] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:31:57.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:31:57.817 [DEBUG] [Thread-193315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:31:57.817 [DEBUG] [Thread-193315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:31:57.818 [DEBUG] [Thread-193315] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:31:57.858 [DEBUG] [Thread-193315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:31:57.858 [DEBUG] [Thread-193315] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:31:57.861 [DEBUG] [Thread-193315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:31:57.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:31:57.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:31:57.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:31:57.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:31:57.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:31:57.884 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:31:57.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:31:57.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:31:57.886 [DEBUG] [Thread-193315] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:31:57.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:31:57.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.605255 -999.00  +21.90  15.42     24   +0.50 1 1 1 1 1   888    0 21.32 -6.25 ----- 18.6 15.4 195.0 23.2 26.4 -29.1 26.0 -28.5 27.9 -26.9 28.4 -29.2
2025-11-24T16:31:57.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:31:57.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:31:57.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.605255
2025-11-24T16:31:57.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:31:57.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:31:57.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:31:57.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:31:57.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:31:57.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:31:29', tmtdew=25.37, humidity=18.02, cloud=0.0, wind=20.96, temperature=22.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:31:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:31:58.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:31:58.012 [DEBUG] [Thread-193318] [transport.py] [_log()] starting thread (client mode): 0xd31cea10
2025-11-24T16:31:58.012 [DEBUG] [Thread-193318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:31:58.027 [DEBUG] [Thread-193318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:31:58.028 [INFO] [Thread-193318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:31:58.035 [DEBUG] [Thread-193318] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:31:58.036 [DEBUG] [Thread-193318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:31:58.036 [DEBUG] [Thread-193318] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:31:58.036 [DEBUG] [Thread-193318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:31:58.036 [DEBUG] [Thread-193318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:31:58.036 [DEBUG] [Thread-193318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:31:58.036 [DEBUG] [Thread-193318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:31:58.036 [DEBUG] [Thread-193318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:31:58.037 [DEBUG] [Thread-193318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:31:58.037 [DEBUG] [Thread-193318] [transport.py] [_log()] client lang: <none>
2025-11-24T16:31:58.037 [DEBUG] [Thread-193318] [transport.py] [_log()] server lang: <none>
2025-11-24T16:31:58.037 [DEBUG] [Thread-193318] [transport.py] [_log()] kex follows: False
2025-11-24T16:31:58.037 [DEBUG] [Thread-193318] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:31:58.037 [DEBUG] [Thread-193318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:31:58.037 [DEBUG] [Thread-193318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:31:58.037 [DEBUG] [Thread-193318] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:31:58.042 [DEBUG] [Thread-193318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:31:58.042 [DEBUG] [Thread-193318] [transport.py] [_log()] Compression: none
2025-11-24T16:31:58.042 [DEBUG] [Thread-193318] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:31:58.094 [DEBUG] [Thread-193318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:31:58.095 [DEBUG] [Thread-193318] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:31:58.095 [DEBUG] [Thread-193318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:31:58.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:31:58.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:31:58.150 [DEBUG] [Thread-193318] [transport.py] [_log()] userauth is OK
2025-11-24T16:31:58.150 [DEBUG] [Thread-193318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:31:58.150 [DEBUG] [Thread-193318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:31:58.150 [DEBUG] [Thread-193318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:31:58.150 [DEBUG] [Thread-193318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:31:58.164 [INFO] [Thread-193318] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:31:58.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:31:58.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:31:58.688 [DEBUG] [Thread-193320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:31:59.036 [DEBUG] [Thread-193318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:31:59.037 [DEBUG] [Thread-193318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:31:59.085 [DEBUG] [Thread-193318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:31:59.085 [DEBUG] [Thread-193318] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:31:59.094 [DEBUG] [Thread-193318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:31:59.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:31:59.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:31:59.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-11-24T16:31:59.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:31:59.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:31:59.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:31:59.134 [DEBUG] [Thread-193318] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:32:13.817 [DEBUG] [Thread-193321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:32:28.869 [DEBUG] [Thread-193322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:32:29.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:32:29.131 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:32:29.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-11-24T16:32:30.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 32, 2), 25.52, 17.87, 0.0, 24.53, 22.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:32:30.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:32:02
2025-11-24T16:32:30.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:32:30.405 [DEBUG] [Thread-193323] [transport.py] [_log()] starting thread (client mode): 0xd31cf0d0
2025-11-24T16:32:30.406 [DEBUG] [Thread-193323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:32:30.420 [DEBUG] [Thread-193323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:32:30.420 [INFO] [Thread-193323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:32:30.424 [DEBUG] [Thread-193323] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:32:30.424 [DEBUG] [Thread-193323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:32:30.424 [DEBUG] [Thread-193323] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:32:30.424 [DEBUG] [Thread-193323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:32:30.424 [DEBUG] [Thread-193323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:32:30.424 [DEBUG] [Thread-193323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:32:30.424 [DEBUG] [Thread-193323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:32:30.424 [DEBUG] [Thread-193323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:32:30.425 [DEBUG] [Thread-193323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:32:30.425 [DEBUG] [Thread-193323] [transport.py] [_log()] client lang: <none>
2025-11-24T16:32:30.425 [DEBUG] [Thread-193323] [transport.py] [_log()] server lang: <none>
2025-11-24T16:32:30.425 [DEBUG] [Thread-193323] [transport.py] [_log()] kex follows: False
2025-11-24T16:32:30.425 [DEBUG] [Thread-193323] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:32:30.425 [DEBUG] [Thread-193323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:32:30.425 [DEBUG] [Thread-193323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:32:30.426 [DEBUG] [Thread-193323] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:32:30.426 [DEBUG] [Thread-193323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:32:30.426 [DEBUG] [Thread-193323] [transport.py] [_log()] Compression: none
2025-11-24T16:32:30.426 [DEBUG] [Thread-193323] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:32:30.444 [DEBUG] [Thread-193323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:32:30.447 [DEBUG] [Thread-193323] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:32:30.449 [DEBUG] [Thread-193323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:32:30.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:32:30.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:32:30.453 [DEBUG] [Thread-193323] [transport.py] [_log()] userauth is OK
2025-11-24T16:32:30.453 [DEBUG] [Thread-193323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:32:30.453 [DEBUG] [Thread-193323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:32:30.453 [DEBUG] [Thread-193323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:32:30.453 [DEBUG] [Thread-193323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:32:30.480 [INFO] [Thread-193323] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:32:30.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:32:31.058 [DEBUG] [Thread-193323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:32:31.058 [DEBUG] [Thread-193323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:32:31.060 [DEBUG] [Thread-193323] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:32:31.099 [DEBUG] [Thread-193323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:32:31.099 [DEBUG] [Thread-193323] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:32:31.101 [DEBUG] [Thread-193323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:32:31.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:32:31.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:32:31.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:32:31.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:32:31.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:32:31.120 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:32:31.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:32:31.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:32:31.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:32:31.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.605602 -999.00  +22.20  18.18     23   +0.60 1 1 1 1 1   888    0 21.15 -1.31 ----- 20.5 18.2 176.4 25.6 26.4 -29.1 26.2 -27.8 28.0 -26.7 28.5 -27.8
2025-11-24T16:32:31.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:32:31.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:32:31.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.605602
2025-11-24T16:32:31.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:32:31.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:32:31.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:32:31.129 [DEBUG] [Thread-193323] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:32:31.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:32:31.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:32:31.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:32:02', tmtdew=25.52, humidity=17.87, cloud=0.0, wind=24.53, temperature=22.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:32:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:32:31.203 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:32:31.215 [DEBUG] [Thread-193326] [transport.py] [_log()] starting thread (client mode): 0xd31cc340
2025-11-24T16:32:31.215 [DEBUG] [Thread-193326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:32:31.229 [DEBUG] [Thread-193326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:32:31.229 [INFO] [Thread-193326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] client lang: <none>
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] server lang: <none>
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] kex follows: False
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] Compression: none
2025-11-24T16:32:31.237 [DEBUG] [Thread-193326] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:32:31.292 [DEBUG] [Thread-193326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:32:31.292 [DEBUG] [Thread-193326] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:32:31.293 [DEBUG] [Thread-193326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:32:31.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:32:31.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:32:31.350 [DEBUG] [Thread-193326] [transport.py] [_log()] userauth is OK
2025-11-24T16:32:31.350 [DEBUG] [Thread-193326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:32:31.350 [DEBUG] [Thread-193326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:32:31.350 [DEBUG] [Thread-193326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:32:31.350 [DEBUG] [Thread-193326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:32:31.364 [INFO] [Thread-193326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:32:31.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:32:31.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:32:32.211 [DEBUG] [Thread-193326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:32:32.211 [DEBUG] [Thread-193326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:32:32.260 [DEBUG] [Thread-193326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:32:32.260 [DEBUG] [Thread-193326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:32:32.269 [DEBUG] [Thread-193326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:32:32.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:32:32.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:32:32.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-11-24T16:32:32.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:32:32.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:32:32.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:32:32.318 [DEBUG] [Thread-193326] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:32:42.758 [DEBUG] [Thread-193328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:32:43.929 [DEBUG] [Thread-193329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:32:59.033 [DEBUG] [Thread-193330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:33:02.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:33:02.342 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:33:02.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-11-24T16:33:03.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 32, 35), 25.72, 17.94, 0.0, 28.58, 22.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:33:03.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:32:35
2025-11-24T16:33:03.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:33:03.490 [DEBUG] [Thread-193331] [transport.py] [_log()] starting thread (client mode): 0xd07bc850
2025-11-24T16:33:03.490 [DEBUG] [Thread-193331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:33:03.503 [DEBUG] [Thread-193331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:33:03.503 [INFO] [Thread-193331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:33:03.509 [DEBUG] [Thread-193331] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:33:03.509 [DEBUG] [Thread-193331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:33:03.509 [DEBUG] [Thread-193331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:33:03.509 [DEBUG] [Thread-193331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:33:03.509 [DEBUG] [Thread-193331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] client lang: <none>
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] server lang: <none>
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] kex follows: False
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:33:03.510 [DEBUG] [Thread-193331] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:33:03.511 [DEBUG] [Thread-193331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:33:03.511 [DEBUG] [Thread-193331] [transport.py] [_log()] Compression: none
2025-11-24T16:33:03.511 [DEBUG] [Thread-193331] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:33:03.553 [DEBUG] [Thread-193331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:33:03.557 [DEBUG] [Thread-193331] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:33:03.559 [DEBUG] [Thread-193331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:33:03.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:33:03.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:33:03.564 [DEBUG] [Thread-193331] [transport.py] [_log()] userauth is OK
2025-11-24T16:33:03.564 [DEBUG] [Thread-193331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:33:03.564 [DEBUG] [Thread-193331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:33:03.564 [DEBUG] [Thread-193331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:33:03.564 [DEBUG] [Thread-193331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:33:03.590 [INFO] [Thread-193331] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:33:03.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:33:04.190 [DEBUG] [Thread-193331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:33:04.190 [DEBUG] [Thread-193331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:33:04.192 [DEBUG] [Thread-193331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:33:04.230 [DEBUG] [Thread-193331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:33:04.230 [DEBUG] [Thread-193331] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:33:04.233 [DEBUG] [Thread-193331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:33:04.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:33:04.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:33:04.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:33:04.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:33:04.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:33:04.258 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:33:04.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:33:04.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:33:04.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:33:04.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.605949 -999.00  +22.10  21.06     23   +0.30 1 1 1 1 1   888    0 21.10 5.13 ----- 29.5 21.1 179.6 32.0 26.4 -30.0 25.8 -33.0 27.7 -27.9 28.2 -29.3
2025-11-24T16:33:04.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:33:04.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:33:04.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.605949
2025-11-24T16:33:04.264 [DEBUG] [Thread-193331] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:33:04.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:33:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:33:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:33:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:33:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:33:04.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:32:35', tmtdew=25.72, humidity=17.94, cloud=0.0, wind=28.58, temperature=22.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:32:33.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:33:04.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:33:04.361 [DEBUG] [Thread-193334] [transport.py] [_log()] starting thread (client mode): 0xd7bc56c0
2025-11-24T16:33:04.361 [DEBUG] [Thread-193334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:33:04.376 [DEBUG] [Thread-193334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:33:04.376 [INFO] [Thread-193334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] client lang: <none>
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] server lang: <none>
2025-11-24T16:33:04.384 [DEBUG] [Thread-193334] [transport.py] [_log()] kex follows: False
2025-11-24T16:33:04.385 [DEBUG] [Thread-193334] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:33:04.385 [DEBUG] [Thread-193334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:33:04.385 [DEBUG] [Thread-193334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:33:04.385 [DEBUG] [Thread-193334] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:33:04.385 [DEBUG] [Thread-193334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:33:04.385 [DEBUG] [Thread-193334] [transport.py] [_log()] Compression: none
2025-11-24T16:33:04.385 [DEBUG] [Thread-193334] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:33:04.440 [DEBUG] [Thread-193334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:33:04.440 [DEBUG] [Thread-193334] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:33:04.441 [DEBUG] [Thread-193334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:33:04.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:33:04.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:33:04.498 [DEBUG] [Thread-193334] [transport.py] [_log()] userauth is OK
2025-11-24T16:33:04.498 [DEBUG] [Thread-193334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:33:04.498 [DEBUG] [Thread-193334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:33:04.498 [DEBUG] [Thread-193334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:33:04.498 [DEBUG] [Thread-193334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:33:04.521 [INFO] [Thread-193334] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:33:04.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:33:04.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:33:05.383 [DEBUG] [Thread-193334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:33:05.384 [DEBUG] [Thread-193334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:33:05.431 [DEBUG] [Thread-193334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:33:05.432 [DEBUG] [Thread-193334] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:33:05.441 [DEBUG] [Thread-193334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:33:05.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:33: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-11-24T16:33:05.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:33:05.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:33:05.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:33:05.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:33:05.488 [DEBUG] [Thread-193334] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:33:14.079 [DEBUG] [Thread-193336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:33:29.137 [DEBUG] [Thread-193337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:33:35.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:33:35.499 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:33:35.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-11-24T16:33:36.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 33, 8), 25.82, 17.81, 0.0, 24.46, 22.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:33:36.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:33:08
2025-11-24T16:33:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:33:36.632 [DEBUG] [Thread-193338] [transport.py] [_log()] starting thread (client mode): 0xd7bc52d0
2025-11-24T16:33:36.632 [DEBUG] [Thread-193338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:33:36.643 [DEBUG] [Thread-193338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:33:36.644 [INFO] [Thread-193338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] client lang: <none>
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] server lang: <none>
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] kex follows: False
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:33:36.647 [DEBUG] [Thread-193338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:33:36.648 [DEBUG] [Thread-193338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:33:36.648 [DEBUG] [Thread-193338] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:33:36.648 [DEBUG] [Thread-193338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:33:36.648 [DEBUG] [Thread-193338] [transport.py] [_log()] Compression: none
2025-11-24T16:33:36.648 [DEBUG] [Thread-193338] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:33:36.665 [DEBUG] [Thread-193338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:33:36.668 [DEBUG] [Thread-193338] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:33:36.670 [DEBUG] [Thread-193338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:33:36.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:33:36.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:33:36.674 [DEBUG] [Thread-193338] [transport.py] [_log()] userauth is OK
2025-11-24T16:33:36.675 [DEBUG] [Thread-193338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:33:36.675 [DEBUG] [Thread-193338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:33:36.675 [DEBUG] [Thread-193338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:33:36.675 [DEBUG] [Thread-193338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:33:36.700 [INFO] [Thread-193338] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:33:36.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:33:37.344 [DEBUG] [Thread-193338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:33:37.344 [DEBUG] [Thread-193338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:33:37.345 [DEBUG] [Thread-193338] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:33:37.385 [DEBUG] [Thread-193338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:33:37.385 [DEBUG] [Thread-193338] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:33:37.387 [DEBUG] [Thread-193338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:33:37.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:33:37.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:33:37.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:33:37.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:33:37.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:33:37.407 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:33:37.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:33:37.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:33:37.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:33:37.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.606296 -999.00  +21.80  27.08     23   +0.20 1 1 1 1 1   888    0 21.52 10.81 ----- 20.1 27.1 193.8 31.4 26.3 -29.1 25.8 -32.8 27.8 -27.5 28.2 -30.3
2025-11-24T16:33:37.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:33:37.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:33:37.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.606296
2025-11-24T16:33:37.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:33:37.411 [DEBUG] [Thread-193338] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:33:37.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:33:37.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:33:37.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:33:37.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:33:37.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:33:08', tmtdew=25.82, humidity=17.81, cloud=0.0, wind=24.46, temperature=22.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:33:03.974', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:33:37.485 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:33:37.499 [DEBUG] [Thread-193341] [transport.py] [_log()] starting thread (client mode): 0xd7bc7ac0
2025-11-24T16:33:37.499 [DEBUG] [Thread-193341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:33:37.513 [DEBUG] [Thread-193341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:33:37.514 [INFO] [Thread-193341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] client lang: <none>
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] server lang: <none>
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] kex follows: False
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] Compression: none
2025-11-24T16:33:37.521 [DEBUG] [Thread-193341] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:33:37.580 [DEBUG] [Thread-193341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:33:37.580 [DEBUG] [Thread-193341] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:33:37.581 [DEBUG] [Thread-193341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:33:37.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:33:37.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:33:37.639 [DEBUG] [Thread-193341] [transport.py] [_log()] userauth is OK
2025-11-24T16:33:37.639 [DEBUG] [Thread-193341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:33:37.639 [DEBUG] [Thread-193341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:33:37.639 [DEBUG] [Thread-193341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:33:37.639 [DEBUG] [Thread-193341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:33:37.653 [INFO] [Thread-193341] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:33:37.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:33:37.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:33:38.497 [DEBUG] [Thread-193341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:33:38.497 [DEBUG] [Thread-193341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:33:38.544 [DEBUG] [Thread-193341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:33:38.544 [DEBUG] [Thread-193341] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:33:38.554 [DEBUG] [Thread-193341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:33:38.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:33:38.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-11-24T16:33:38.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:33:38.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:33:38.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:33:38.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:33:38.600 [DEBUG] [Thread-193341] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:33:43.005 [DEBUG] [Thread-193343 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:33:44.195 [DEBUG] [Thread-193344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:33:59.319 [DEBUG] [Thread-193345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:34:08.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:34:08.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:34:08.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-11-24T16:34:09.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 33, 40), 25.35, 17.92, 0.0, 27.79, 21.88, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:34:09.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:33:40
2025-11-24T16:34:09.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:34:09.783 [DEBUG] [Thread-193346] [transport.py] [_log()] starting thread (client mode): 0xd31cce20
2025-11-24T16:34:09.783 [DEBUG] [Thread-193346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:34:09.802 [DEBUG] [Thread-193346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:34:09.803 [INFO] [Thread-193346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] client lang: <none>
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] server lang: <none>
2025-11-24T16:34:09.806 [DEBUG] [Thread-193346] [transport.py] [_log()] kex follows: False
2025-11-24T16:34:09.807 [DEBUG] [Thread-193346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:34:09.807 [DEBUG] [Thread-193346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:34:09.807 [DEBUG] [Thread-193346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:34:09.807 [DEBUG] [Thread-193346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:34:09.807 [DEBUG] [Thread-193346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:34:09.807 [DEBUG] [Thread-193346] [transport.py] [_log()] Compression: none
2025-11-24T16:34:09.807 [DEBUG] [Thread-193346] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:34:09.819 [DEBUG] [Thread-193346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:34:09.821 [DEBUG] [Thread-193346] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:34:09.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:34:09.822 [DEBUG] [Thread-193346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:34:09.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:34:09.824 [DEBUG] [Thread-193346] [transport.py] [_log()] userauth is OK
2025-11-24T16:34:09.824 [DEBUG] [Thread-193346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:34:09.824 [DEBUG] [Thread-193346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:34:09.824 [DEBUG] [Thread-193346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:34:09.824 [DEBUG] [Thread-193346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:34:09.845 [INFO] [Thread-193346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:34:09.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:34:10.453 [DEBUG] [Thread-193346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:34:10.454 [DEBUG] [Thread-193346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:34:10.454 [DEBUG] [Thread-193346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:34:10.494 [DEBUG] [Thread-193346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:34:10.494 [DEBUG] [Thread-193346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:34:10.495 [DEBUG] [Thread-193346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:34:10.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:34:10.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:34:10.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:34:10.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:34:10.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:34:10.514 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:34:10.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:34:10.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:34:10.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:34:10.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.606991 -999.00  +21.70  15.32     24   +0.30 1 1 1 1 1   888    0 21.82 17.38 ----- 15.3 15.3 199.4 26.7 26.2 -29.9 26.0 -28.4 27.9 -26.0 28.3 -28.2
2025-11-24T16:34:10.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:34:10.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:34:10.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.606991
2025-11-24T16:34:10.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:34:10.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:34:10.515 [DEBUG] [Thread-193346] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:34:10.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:34:10.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:34:10.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:34:10.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:33:40', tmtdew=25.35, humidity=17.92, cloud=0.0, wind=27.79, temperature=21.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:34:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:34:10.589 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:34:10.601 [DEBUG] [Thread-193349] [transport.py] [_log()] starting thread (client mode): 0xd31ce4d0
2025-11-24T16:34:10.601 [DEBUG] [Thread-193349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:34:10.615 [DEBUG] [Thread-193349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:34:10.615 [INFO] [Thread-193349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] client lang: <none>
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] server lang: <none>
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] kex follows: False
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:34:10.623 [DEBUG] [Thread-193349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:34:10.624 [DEBUG] [Thread-193349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:34:10.624 [DEBUG] [Thread-193349] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:34:10.624 [DEBUG] [Thread-193349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:34:10.624 [DEBUG] [Thread-193349] [transport.py] [_log()] Compression: none
2025-11-24T16:34:10.624 [DEBUG] [Thread-193349] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:34:10.682 [DEBUG] [Thread-193349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:34:10.682 [DEBUG] [Thread-193349] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:34:10.682 [DEBUG] [Thread-193349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:34:10.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:34:10.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:34:10.737 [DEBUG] [Thread-193349] [transport.py] [_log()] userauth is OK
2025-11-24T16:34:10.737 [DEBUG] [Thread-193349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:34:10.737 [DEBUG] [Thread-193349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:34:10.737 [DEBUG] [Thread-193349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:34:10.737 [DEBUG] [Thread-193349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:34:10.751 [INFO] [Thread-193349] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:34:10.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:34:10.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:34:11.598 [DEBUG] [Thread-193349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:34:11.598 [DEBUG] [Thread-193349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:34:11.648 [DEBUG] [Thread-193349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:34:11.649 [DEBUG] [Thread-193349] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:34:11.657 [DEBUG] [Thread-193349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:34:11.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:34:11.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-11-24T16:34:11.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-11-24T16:34:11.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:34:11.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:34:11.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:34:11.690 [DEBUG] [Thread-193349] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:34:14.347 [DEBUG] [Thread-193351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:34:29.405 [DEBUG] [Thread-193352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:34:41.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:34:41.715 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:34:41.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:34:42.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 34, 13), 25.3, 17.99, 0.0, 25.73, 21.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:34:42.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:34:13
2025-11-24T16:34:42.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:34:43.107 [DEBUG] [Thread-193353] [transport.py] [_log()] starting thread (client mode): 0xd31cf370
2025-11-24T16:34:43.107 [DEBUG] [Thread-193353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:34:43.116 [DEBUG] [Thread-193353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:34:43.116 [INFO] [Thread-193353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] client lang: <none>
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] server lang: <none>
2025-11-24T16:34:43.118 [DEBUG] [Thread-193353] [transport.py] [_log()] kex follows: False
2025-11-24T16:34:43.119 [DEBUG] [Thread-193353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:34:43.119 [DEBUG] [Thread-193353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:34:43.119 [DEBUG] [Thread-193353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:34:43.119 [DEBUG] [Thread-193353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:34:43.119 [DEBUG] [Thread-193353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:34:43.119 [DEBUG] [Thread-193353] [transport.py] [_log()] Compression: none
2025-11-24T16:34:43.119 [DEBUG] [Thread-193353] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:34:43.141 [DEBUG] [Thread-193353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:34:43.143 [DEBUG] [Thread-193353] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:34:43.143 [DEBUG] [Thread-193353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:34:43.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:34:43.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:34:43.145 [DEBUG] [Thread-193353] [transport.py] [_log()] userauth is OK
2025-11-24T16:34:43.145 [DEBUG] [Thread-193353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:34:43.145 [DEBUG] [Thread-193353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:34:43.145 [DEBUG] [Thread-193353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:34:43.145 [DEBUG] [Thread-193353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:34:43.160 [INFO] [Thread-193353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:34:43.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:34:43.201 [DEBUG] [Thread-193355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:34:43.716 [DEBUG] [Thread-193353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:34:43.716 [DEBUG] [Thread-193353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:34:43.716 [DEBUG] [Thread-193353] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:34:43.757 [DEBUG] [Thread-193353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:34:43.757 [DEBUG] [Thread-193353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:34:43.758 [DEBUG] [Thread-193353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:34:43.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:34:43.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:34:43.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:34:43.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:34:43.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:34:43.772 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:34:43.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:34:43.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:34:43.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:34:43.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.607338 -999.00  +21.90  19.25     23   +0.30 1 1 1 1 1   888    0 21.84 18.67 ----- 14.3 19.2 166.4 25.5 26.4 -28.6 26.1 -28.9 27.9 -27.3 28.4 -28.2
2025-11-24T16:34:43.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:34:43.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:34:43.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.607338
2025-11-24T16:34:43.778 [DEBUG] [Thread-193353] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:34:43.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:34:43.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:34:43.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:34:43.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:34:43.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:34:43.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:34:13', tmtdew=25.3, humidity=17.99, cloud=0.0, wind=25.73, temperature=21.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:34:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:34:43.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:34:43.886 [DEBUG] [Thread-193357] [transport.py] [_log()] starting thread (client mode): 0xd7bc7af0
2025-11-24T16:34:43.886 [DEBUG] [Thread-193357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:34:43.900 [DEBUG] [Thread-193357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:34:43.901 [INFO] [Thread-193357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] client lang: <none>
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] server lang: <none>
2025-11-24T16:34:43.908 [DEBUG] [Thread-193357] [transport.py] [_log()] kex follows: False
2025-11-24T16:34:43.909 [DEBUG] [Thread-193357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:34:43.909 [DEBUG] [Thread-193357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:34:43.909 [DEBUG] [Thread-193357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:34:43.909 [DEBUG] [Thread-193357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:34:43.909 [DEBUG] [Thread-193357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:34:43.909 [DEBUG] [Thread-193357] [transport.py] [_log()] Compression: none
2025-11-24T16:34:43.910 [DEBUG] [Thread-193357] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:34:43.963 [DEBUG] [Thread-193357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:34:43.964 [DEBUG] [Thread-193357] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:34:43.964 [DEBUG] [Thread-193357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:34:43.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:34:43.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:34:44.021 [DEBUG] [Thread-193357] [transport.py] [_log()] userauth is OK
2025-11-24T16:34:44.022 [DEBUG] [Thread-193357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:34:44.022 [DEBUG] [Thread-193357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:34:44.022 [DEBUG] [Thread-193357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:34:44.022 [DEBUG] [Thread-193357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:34:44.036 [INFO] [Thread-193357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:34:44.036 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:34:44.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:34:44.437 [DEBUG] [Thread-193359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:34:44.892 [DEBUG] [Thread-193357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:34:44.892 [DEBUG] [Thread-193357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:34:44.940 [DEBUG] [Thread-193357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:34:44.940 [DEBUG] [Thread-193357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:34:44.948 [DEBUG] [Thread-193357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:34:44.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:34:44.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-11-24T16:34:44.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-11-24T16:34:44.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:34:44.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:34:44.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:34:44.980 [DEBUG] [Thread-193357] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:34:59.480 [DEBUG] [Thread-193360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:35:14.516 [DEBUG] [Thread-193361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:35:15.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:35:15.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:35:15.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-11-24T16:35:15.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 34, 46), 25.29, 18.39, 0.0, 22.88, 22.06, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:35:15.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:34:46
2025-11-24T16:35:16.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:35:16.257 [DEBUG] [Thread-193362] [transport.py] [_log()] starting thread (client mode): 0xd7bc61a0
2025-11-24T16:35:16.257 [DEBUG] [Thread-193362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:35:16.271 [DEBUG] [Thread-193362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:35:16.271 [INFO] [Thread-193362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:35:16.273 [DEBUG] [Thread-193362] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] client lang: <none>
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] server lang: <none>
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] kex follows: False
2025-11-24T16:35:16.274 [DEBUG] [Thread-193362] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:35:16.275 [DEBUG] [Thread-193362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:35:16.275 [DEBUG] [Thread-193362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:35:16.275 [DEBUG] [Thread-193362] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:35:16.275 [DEBUG] [Thread-193362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:35:16.275 [DEBUG] [Thread-193362] [transport.py] [_log()] Compression: none
2025-11-24T16:35:16.275 [DEBUG] [Thread-193362] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:35:16.296 [DEBUG] [Thread-193362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:35:16.300 [DEBUG] [Thread-193362] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:35:16.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:35:16.303 [DEBUG] [Thread-193362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:35:16.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:35:16.306 [DEBUG] [Thread-193362] [transport.py] [_log()] userauth is OK
2025-11-24T16:35:16.306 [DEBUG] [Thread-193362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:35:16.306 [DEBUG] [Thread-193362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:35:16.306 [DEBUG] [Thread-193362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:35:16.306 [DEBUG] [Thread-193362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:35:16.329 [INFO] [Thread-193362] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:35:16.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:35:16.889 [DEBUG] [Thread-193362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:35:16.889 [DEBUG] [Thread-193362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:35:16.892 [DEBUG] [Thread-193362] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:35:16.930 [DEBUG] [Thread-193362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:35:16.930 [DEBUG] [Thread-193362] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:35:16.933 [DEBUG] [Thread-193362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:35:16.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:35:16.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:35:16.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:35:16.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:35:16.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:35:16.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:35:16.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:35:16.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:35:16.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:35:16.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.607685 -999.00  +21.80  10.96     23   +0.20 1 1 1 1 1   888    0 21.58 20.23 ----- 10.7 11.0 175.8 22.8 26.4 -29.0 26.1 -29.7 27.9 -26.2 28.4 -28.1
2025-11-24T16:35:16.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:35:16.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:35:16.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.607685
2025-11-24T16:35:16.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:35:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:35:16.960 [DEBUG] [Thread-193362] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:35:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:35:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:35:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:35:16.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:34:46', tmtdew=25.29, humidity=18.39, cloud=0.0, wind=22.88, temperature=22.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:35:03.984', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:35:17.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:35:17.045 [DEBUG] [Thread-193365] [transport.py] [_log()] starting thread (client mode): 0xd7bc5120
2025-11-24T16:35:17.045 [DEBUG] [Thread-193365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:35:17.060 [DEBUG] [Thread-193365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:35:17.060 [INFO] [Thread-193365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:35:17.068 [DEBUG] [Thread-193365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:35:17.068 [DEBUG] [Thread-193365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:35:17.068 [DEBUG] [Thread-193365] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:35:17.068 [DEBUG] [Thread-193365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:35:17.068 [DEBUG] [Thread-193365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:35:17.068 [DEBUG] [Thread-193365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] client lang: <none>
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] server lang: <none>
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] kex follows: False
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] Compression: none
2025-11-24T16:35:17.069 [DEBUG] [Thread-193365] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:35:17.123 [DEBUG] [Thread-193365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:35:17.124 [DEBUG] [Thread-193365] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:35:17.124 [DEBUG] [Thread-193365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:35:17.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:35:17.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:35:17.182 [DEBUG] [Thread-193365] [transport.py] [_log()] userauth is OK
2025-11-24T16:35:17.182 [DEBUG] [Thread-193365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:35:17.182 [DEBUG] [Thread-193365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:35:17.182 [DEBUG] [Thread-193365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:35:17.182 [DEBUG] [Thread-193365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:35:17.196 [INFO] [Thread-193365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:35:17.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:35:17.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:35:18.040 [DEBUG] [Thread-193365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:35:18.040 [DEBUG] [Thread-193365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:35:18.089 [DEBUG] [Thread-193365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:35:18.089 [DEBUG] [Thread-193365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:35:18.098 [DEBUG] [Thread-193365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:35:18.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:35:18.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-11-24T16:35:18.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-11-24T16:35:18.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:35:18.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:35:18.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:35:18.139 [DEBUG] [Thread-193365] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:35:29.548 [DEBUG] [Thread-193367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:35:43.476 [DEBUG] [Thread-193368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:35:44.637 [DEBUG] [Thread-193369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:35:48.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:35:48.173 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:35:48.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-11-24T16:35:49.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 35, 18), 25.27, 18.39, 0.0, 21.16, 21.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:35:49.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:35:18
2025-11-24T16:35:49.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:35:49.702 [DEBUG] [Thread-193370] [transport.py] [_log()] starting thread (client mode): 0xd31ce8c0
2025-11-24T16:35:49.702 [DEBUG] [Thread-193370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:35:49.714 [DEBUG] [Thread-193370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:35:49.714 [INFO] [Thread-193370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:35:49.719 [DEBUG] [Thread-193370] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:35:49.719 [DEBUG] [Thread-193370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:35:49.719 [DEBUG] [Thread-193370] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:35:49.719 [DEBUG] [Thread-193370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:35:49.719 [DEBUG] [Thread-193370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:35:49.719 [DEBUG] [Thread-193370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:35:49.719 [DEBUG] [Thread-193370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:35:49.719 [DEBUG] [Thread-193370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:35:49.719 [DEBUG] [Thread-193370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:35:49.720 [DEBUG] [Thread-193370] [transport.py] [_log()] client lang: <none>
2025-11-24T16:35:49.720 [DEBUG] [Thread-193370] [transport.py] [_log()] server lang: <none>
2025-11-24T16:35:49.720 [DEBUG] [Thread-193370] [transport.py] [_log()] kex follows: False
2025-11-24T16:35:49.720 [DEBUG] [Thread-193370] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:35:49.720 [DEBUG] [Thread-193370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:35:49.720 [DEBUG] [Thread-193370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:35:49.721 [DEBUG] [Thread-193370] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:35:49.721 [DEBUG] [Thread-193370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:35:49.721 [DEBUG] [Thread-193370] [transport.py] [_log()] Compression: none
2025-11-24T16:35:49.721 [DEBUG] [Thread-193370] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:35:49.752 [DEBUG] [Thread-193370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:35:49.758 [DEBUG] [Thread-193370] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:35:49.760 [DEBUG] [Thread-193370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:35:49.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:35:49.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:35:49.765 [DEBUG] [Thread-193370] [transport.py] [_log()] userauth is OK
2025-11-24T16:35:49.765 [DEBUG] [Thread-193370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:35:49.766 [DEBUG] [Thread-193370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:35:49.766 [DEBUG] [Thread-193370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:35:49.766 [DEBUG] [Thread-193370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:35:49.792 [INFO] [Thread-193370] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:35:49.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:35:50.406 [DEBUG] [Thread-193370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:35:50.406 [DEBUG] [Thread-193370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:35:50.408 [DEBUG] [Thread-193370] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:35:50.447 [DEBUG] [Thread-193370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:35:50.448 [DEBUG] [Thread-193370] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:35:50.451 [DEBUG] [Thread-193370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:35:50.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:35:50.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:35:50.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:35:50.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:35:50.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:35:50.479 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:35:50.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:35:50.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:35:50.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:35:50.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.608033 -999.00  +21.70  12.95     24   +0.30 1 1 1 1 1   888    0 22.36 19.53 ----- 19.0 12.9 167.8 20.7 26.4 -28.9 26.1 -27.9 28.0 -27.0 28.6 -29.0
2025-11-24T16:35:50.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:35:50.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:35:50.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.608033
2025-11-24T16:35:50.487 [DEBUG] [Thread-193370] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:35:50.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:35:50.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:35:50.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:35:50.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:35:50.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:35:50.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:35:18', tmtdew=25.27, humidity=18.39, cloud=0.0, wind=21.16, temperature=21.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:35:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:35:50.584 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:35:50.594 [DEBUG] [Thread-193373] [transport.py] [_log()] starting thread (client mode): 0xd7bc7880
2025-11-24T16:35:50.594 [DEBUG] [Thread-193373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:35:50.609 [DEBUG] [Thread-193373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:35:50.609 [INFO] [Thread-193373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:35:50.617 [DEBUG] [Thread-193373] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:35:50.617 [DEBUG] [Thread-193373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:35:50.617 [DEBUG] [Thread-193373] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] client lang: <none>
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] server lang: <none>
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] kex follows: False
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:35:50.618 [DEBUG] [Thread-193373] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:35:50.619 [DEBUG] [Thread-193373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:35:50.619 [DEBUG] [Thread-193373] [transport.py] [_log()] Compression: none
2025-11-24T16:35:50.619 [DEBUG] [Thread-193373] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:35:50.674 [DEBUG] [Thread-193373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:35:50.674 [DEBUG] [Thread-193373] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:35:50.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:35:50.676 [DEBUG] [Thread-193373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:35:50.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:35:50.730 [DEBUG] [Thread-193373] [transport.py] [_log()] userauth is OK
2025-11-24T16:35:50.730 [DEBUG] [Thread-193373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:35:50.730 [DEBUG] [Thread-193373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:35:50.730 [DEBUG] [Thread-193373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:35:50.730 [DEBUG] [Thread-193373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:35:50.749 [INFO] [Thread-193373] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:35:50.749 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:35:50.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:35:51.583 [DEBUG] [Thread-193373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:35:51.583 [DEBUG] [Thread-193373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:35:51.632 [DEBUG] [Thread-193373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:35:51.632 [DEBUG] [Thread-193373] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:35:51.641 [DEBUG] [Thread-193373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:35:51.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:35:51.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-11-24T16:35:51.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:35:51.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:35:51.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:35:51.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:35:51.688 [DEBUG] [Thread-193373] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:35:59.677 [DEBUG] [Thread-193375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:36:14.765 [DEBUG] [Thread-193376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:36:21.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:36:21.701 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:36:21.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-11-24T16:36:22.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 35, 51), 25.14, 18.09, 0.0, 19.62, 21.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:36:22.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:35:51
2025-11-24T16:36:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:36:22.854 [DEBUG] [Thread-193377] [transport.py] [_log()] starting thread (client mode): 0xd07bef80
2025-11-24T16:36:22.854 [DEBUG] [Thread-193377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:36:22.872 [DEBUG] [Thread-193377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:36:22.872 [INFO] [Thread-193377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:36:22.875 [DEBUG] [Thread-193377] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:36:22.875 [DEBUG] [Thread-193377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:36:22.875 [DEBUG] [Thread-193377] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:36:22.875 [DEBUG] [Thread-193377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:36:22.875 [DEBUG] [Thread-193377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:36:22.875 [DEBUG] [Thread-193377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:36:22.875 [DEBUG] [Thread-193377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:36:22.875 [DEBUG] [Thread-193377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] client lang: <none>
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] server lang: <none>
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] kex follows: False
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] Compression: none
2025-11-24T16:36:22.876 [DEBUG] [Thread-193377] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:36:22.899 [DEBUG] [Thread-193377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:36:22.902 [DEBUG] [Thread-193377] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:36:22.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:36:22.904 [DEBUG] [Thread-193377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:36:22.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:36:22.907 [DEBUG] [Thread-193377] [transport.py] [_log()] userauth is OK
2025-11-24T16:36:22.908 [DEBUG] [Thread-193377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:36:22.908 [DEBUG] [Thread-193377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:36:22.908 [DEBUG] [Thread-193377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:36:22.909 [DEBUG] [Thread-193377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:36:22.938 [INFO] [Thread-193377] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:36:22.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:36:23.587 [DEBUG] [Thread-193377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:36:23.587 [DEBUG] [Thread-193377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:36:23.589 [DEBUG] [Thread-193377] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:36:23.627 [DEBUG] [Thread-193377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:36:23.628 [DEBUG] [Thread-193377] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:36:23.631 [DEBUG] [Thread-193377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:36:23.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:36:23.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:36:23.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:36:23.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:36:23.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:36:23.657 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:36:23.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:36:23.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:36:23.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:36:23.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.608380 -999.00  +21.70  11.99     24   +0.30 1 1 1 1 1   888    0 21.91 19.32 ----- 9.5 12.0 174.2 24.0 26.4 -28.9 26.1 -28.9 28.0 -26.6 28.5 -29.2
2025-11-24T16:36:23.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:36:23.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:36:23.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.608380
2025-11-24T16:36:23.665 [DEBUG] [Thread-193377] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:36:23.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:36:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:36:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:36:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:36:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:36:23.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:35:51', tmtdew=25.14, humidity=18.09, cloud=0.0, wind=19.62, temperature=21.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:36:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:36: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-11-24T16:36:23.753 [DEBUG] [Thread-193380] [transport.py] [_log()] starting thread (client mode): 0xd31cd120
2025-11-24T16:36:23.753 [DEBUG] [Thread-193380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:36:23.767 [DEBUG] [Thread-193380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:36:23.767 [INFO] [Thread-193380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] client lang: <none>
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] server lang: <none>
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] kex follows: False
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:36:23.775 [DEBUG] [Thread-193380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:36:23.776 [DEBUG] [Thread-193380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:36:23.776 [DEBUG] [Thread-193380] [transport.py] [_log()] Compression: none
2025-11-24T16:36:23.776 [DEBUG] [Thread-193380] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:36:23.837 [DEBUG] [Thread-193380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:36:23.838 [DEBUG] [Thread-193380] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:36:23.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:36:23.838 [DEBUG] [Thread-193380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:36:23.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:36:23.894 [DEBUG] [Thread-193380] [transport.py] [_log()] userauth is OK
2025-11-24T16:36:23.895 [DEBUG] [Thread-193380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:36:23.895 [DEBUG] [Thread-193380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:36:23.895 [DEBUG] [Thread-193380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:36:23.895 [DEBUG] [Thread-193380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:36:23.917 [INFO] [Thread-193380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:36:23.917 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:36:23.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:36:24.747 [DEBUG] [Thread-193380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:36:24.747 [DEBUG] [Thread-193380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:36:24.795 [DEBUG] [Thread-193380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:36:24.795 [DEBUG] [Thread-193380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:36:24.804 [DEBUG] [Thread-193380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:36:24.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:36:24.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-11-24T16:36:24.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-11-24T16:36:24.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:36:24.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:36:24.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:36:24.838 [DEBUG] [Thread-193380] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:36:29.800 [DEBUG] [Thread-193382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:36:43.723 [DEBUG] [Thread-193383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:36:44.871 [DEBUG] [Thread-193384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:36:54.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:36:54.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:36:54.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-11-24T16:36:55.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 36, 24), 25.09, 18.16, 0.0, 20.11, 21.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:36:55.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:36:24
2025-11-24T16:36:55.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:36:56.017 [DEBUG] [Thread-193385] [transport.py] [_log()] starting thread (client mode): 0xd07a8880
2025-11-24T16:36:56.018 [DEBUG] [Thread-193385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:36:56.032 [DEBUG] [Thread-193385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:36:56.032 [INFO] [Thread-193385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] client lang: <none>
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] server lang: <none>
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] kex follows: False
2025-11-24T16:36:56.036 [DEBUG] [Thread-193385] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:36:56.037 [DEBUG] [Thread-193385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:36:56.037 [DEBUG] [Thread-193385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:36:56.037 [DEBUG] [Thread-193385] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:36:56.037 [DEBUG] [Thread-193385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:36:56.037 [DEBUG] [Thread-193385] [transport.py] [_log()] Compression: none
2025-11-24T16:36:56.037 [DEBUG] [Thread-193385] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:36:56.065 [DEBUG] [Thread-193385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:36:56.068 [DEBUG] [Thread-193385] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:36:56.070 [DEBUG] [Thread-193385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:36:56.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:36:56.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:36:56.075 [DEBUG] [Thread-193385] [transport.py] [_log()] userauth is OK
2025-11-24T16:36:56.075 [DEBUG] [Thread-193385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:36:56.076 [DEBUG] [Thread-193385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:36:56.076 [DEBUG] [Thread-193385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:36:56.076 [DEBUG] [Thread-193385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:36:56.100 [INFO] [Thread-193385] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:36:56.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:36:56.729 [DEBUG] [Thread-193385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:36:56.729 [DEBUG] [Thread-193385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:36:56.738 [DEBUG] [Thread-193385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:36:56.770 [DEBUG] [Thread-193385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:36:56.770 [DEBUG] [Thread-193385] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:36:56.774 [DEBUG] [Thread-193385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:36:56.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:36:56.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:36:56.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:36:56.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:36:56.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:36:56.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:36:56.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:36:56.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:36:56.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:36:56.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.608727 -999.00  +21.80  15.20     24   +0.30 1 1 1 1 1   888    0 22.50 18.36 ----- 13.1 15.2 168.6 20.2 26.5 -28.6 26.3 -28.9 28.1 -26.4 28.6 -28.7
2025-11-24T16:36:56.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:36:56.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:36:56.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.608727
2025-11-24T16:36:56.795 [DEBUG] [Thread-193385] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:36:56.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:36:56.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:36:56.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:36:56.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:36:56.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:36:56.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:36:24', tmtdew=25.09, humidity=18.16, cloud=0.0, wind=20.11, temperature=21.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:36:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:36:56.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:36:56.890 [DEBUG] [Thread-193388] [transport.py] [_log()] starting thread (client mode): 0xd31cf010
2025-11-24T16:36:56.890 [DEBUG] [Thread-193388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:36:56.907 [DEBUG] [Thread-193388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:36:56.907 [INFO] [Thread-193388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:36:56.914 [DEBUG] [Thread-193388] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:36:56.914 [DEBUG] [Thread-193388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:36:56.914 [DEBUG] [Thread-193388] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:36:56.914 [DEBUG] [Thread-193388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:36:56.914 [DEBUG] [Thread-193388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:36:56.914 [DEBUG] [Thread-193388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:36:56.914 [DEBUG] [Thread-193388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:36:56.914 [DEBUG] [Thread-193388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] client lang: <none>
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] server lang: <none>
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] kex follows: False
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] Compression: none
2025-11-24T16:36:56.915 [DEBUG] [Thread-193388] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:36:56.976 [DEBUG] [Thread-193388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:36:56.976 [DEBUG] [Thread-193388] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:36:56.977 [DEBUG] [Thread-193388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:36:56.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:36:56.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:36:57.033 [DEBUG] [Thread-193388] [transport.py] [_log()] userauth is OK
2025-11-24T16:36:57.034 [DEBUG] [Thread-193388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:36:57.034 [DEBUG] [Thread-193388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:36:57.034 [DEBUG] [Thread-193388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:36:57.034 [DEBUG] [Thread-193388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:36:57.048 [INFO] [Thread-193388] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:36:57.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:36:57.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:36:57.914 [DEBUG] [Thread-193388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:36:57.914 [DEBUG] [Thread-193388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:36:57.962 [DEBUG] [Thread-193388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:36:57.962 [DEBUG] [Thread-193388] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:36:57.970 [DEBUG] [Thread-193388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:36:57.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:36:57.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:36:57.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-11-24T16:36:57.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:36:57.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:36:57.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:36:58.003 [DEBUG] [Thread-193388] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:36:59.899 [DEBUG] [Thread-193390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:37:14.977 [DEBUG] [Thread-193391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:37:28.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:37:28.029 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:37:28.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-11-24T16:37:28.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 36, 57), 25.22, 18.11, 0.0, 19.34, 21.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:37:28.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:36:57
2025-11-24T16:37:28.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:37:29.168 [DEBUG] [Thread-193392] [transport.py] [_log()] starting thread (client mode): 0xd07bfee0
2025-11-24T16:37:29.169 [DEBUG] [Thread-193392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:37:29.180 [DEBUG] [Thread-193392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:37:29.180 [INFO] [Thread-193392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:37:29.185 [DEBUG] [Thread-193392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] client lang: <none>
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] server lang: <none>
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] kex follows: False
2025-11-24T16:37:29.186 [DEBUG] [Thread-193392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:37:29.187 [DEBUG] [Thread-193392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:37:29.187 [DEBUG] [Thread-193392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:37:29.187 [DEBUG] [Thread-193392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:37:29.187 [DEBUG] [Thread-193392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:37:29.187 [DEBUG] [Thread-193392] [transport.py] [_log()] Compression: none
2025-11-24T16:37:29.187 [DEBUG] [Thread-193392] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:37:29.220 [DEBUG] [Thread-193392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:37:29.225 [DEBUG] [Thread-193392] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:37:29.227 [DEBUG] [Thread-193392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:37:29.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:37:29.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:37:29.233 [DEBUG] [Thread-193392] [transport.py] [_log()] userauth is OK
2025-11-24T16:37:29.233 [DEBUG] [Thread-193392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:37:29.234 [DEBUG] [Thread-193392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:37:29.234 [DEBUG] [Thread-193392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:37:29.234 [DEBUG] [Thread-193392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:37:29.273 [INFO] [Thread-193392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:37:29.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:37:29.829 [DEBUG] [Thread-193392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:37:29.829 [DEBUG] [Thread-193392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:37:29.839 [DEBUG] [Thread-193392] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:37:29.870 [DEBUG] [Thread-193392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:37:29.870 [DEBUG] [Thread-193392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:37:29.872 [DEBUG] [Thread-193392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:37:29.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:37:29.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:37:29.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:37:29.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:37:29.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:37:29.888 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:37:29.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:37:29.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:37:29.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:37:29.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.609074 -999.00  +21.80  16.91     23   +0.30 1 1 1 1 1   888    0 21.89 15.74 ----- 17.2 16.9 177.4 19.3 26.4 -28.9 26.3 -28.9 28.1 -27.0 28.6 -28.8
2025-11-24T16:37:29.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:37:29.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:37:29.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.609074
2025-11-24T16:37:29.894 [DEBUG] [Thread-193392] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:37:29.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:37:29.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:37:29.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:37:29.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:37:29.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:37:29.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:36:57', tmtdew=25.22, humidity=18.11, cloud=0.0, wind=19.34, temperature=21.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:37:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:37:29.977 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:37:29.990 [DEBUG] [Thread-193395] [transport.py] [_log()] starting thread (client mode): 0xd07bceb0
2025-11-24T16:37:29.990 [DEBUG] [Thread-193395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:37:30.005 [DEBUG] [Thread-193395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:37:30.005 [INFO] [Thread-193395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:37:30.011 [DEBUG] [Thread-193397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] client lang: <none>
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] server lang: <none>
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] kex follows: False
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] Compression: none
2025-11-24T16:37:30.013 [DEBUG] [Thread-193395] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:37:30.068 [DEBUG] [Thread-193395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:37:30.069 [DEBUG] [Thread-193395] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:37:30.069 [DEBUG] [Thread-193395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:37:30.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:37:30.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:37:30.126 [DEBUG] [Thread-193395] [transport.py] [_log()] userauth is OK
2025-11-24T16:37:30.126 [DEBUG] [Thread-193395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:37:30.126 [DEBUG] [Thread-193395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:37:30.126 [DEBUG] [Thread-193395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:37:30.126 [DEBUG] [Thread-193395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:37:30.140 [INFO] [Thread-193395] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:37:30.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:37:30.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:37:30.972 [DEBUG] [Thread-193395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:37:30.972 [DEBUG] [Thread-193395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:37:31.020 [DEBUG] [Thread-193395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:37:31.020 [DEBUG] [Thread-193395] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:37:31.028 [DEBUG] [Thread-193395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:37:31.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:37:31.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-11-24T16:37:31.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-11-24T16:37:31.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:37:31.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:37:31.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:37:31.061 [DEBUG] [Thread-193395] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:37:44.009 [DEBUG] [Thread-193398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:37:45.057 [DEBUG] [Thread-193399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:38:00.088 [DEBUG] [Thread-193400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:38:01.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:38:01.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:38:01.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-11-24T16:38:01.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 37, 30), 25.11, 18.24, 0.0, 19.06, 21.88, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:38:01.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:37:30
2025-11-24T16:38:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:38:02.107 [DEBUG] [Thread-193401] [transport.py] [_log()] starting thread (client mode): 0xd07bf730
2025-11-24T16:38:02.108 [DEBUG] [Thread-193401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:38:02.125 [DEBUG] [Thread-193401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:38:02.125 [INFO] [Thread-193401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] client lang: <none>
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] server lang: <none>
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] kex follows: False
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] Compression: none
2025-11-24T16:38:02.127 [DEBUG] [Thread-193401] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:38:02.144 [DEBUG] [Thread-193401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:38:02.147 [DEBUG] [Thread-193401] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:38:02.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:38:02.148 [DEBUG] [Thread-193401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:38:02.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:38:02.149 [DEBUG] [Thread-193401] [transport.py] [_log()] userauth is OK
2025-11-24T16:38:02.149 [DEBUG] [Thread-193401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:38:02.150 [DEBUG] [Thread-193401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:38:02.150 [DEBUG] [Thread-193401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:38:02.150 [DEBUG] [Thread-193401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:38:02.161 [INFO] [Thread-193401] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:38:02.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:38:02.838 [DEBUG] [Thread-193401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:38:02.839 [DEBUG] [Thread-193401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:38:02.839 [DEBUG] [Thread-193401] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:38:02.879 [DEBUG] [Thread-193401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:38:02.879 [DEBUG] [Thread-193401] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:38:02.881 [DEBUG] [Thread-193401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:38:02.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:38:02.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:38:02.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:38:02.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:38:02.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:38:02.897 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:38:02.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:38:02.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:38:02.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:38:02.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.609421 -999.00  +22.10  19.32     23   +0.40 1 1 1 1 1   888    0 21.72 15.13 ----- 24.4 19.3 183.2 29.6 26.6 -28.5 26.3 -29.5 28.1 -29.6 28.6 -29.8
2025-11-24T16:38:02.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:38:02.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:38:02.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.609421
2025-11-24T16:38:02.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:38:02.898 [DEBUG] [Thread-193401] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:38:02.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:38:02.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:38:02.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:38:02.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:38:02.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:37:30', tmtdew=25.11, humidity=18.24, cloud=0.0, wind=19.06, temperature=21.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:37:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:38:02.977 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:38:02.989 [DEBUG] [Thread-193404] [transport.py] [_log()] starting thread (client mode): 0xd31cd480
2025-11-24T16:38:02.989 [DEBUG] [Thread-193404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:38:03.004 [DEBUG] [Thread-193404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:38:03.004 [INFO] [Thread-193404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] client lang: <none>
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] server lang: <none>
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] kex follows: False
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] Compression: none
2025-11-24T16:38:03.012 [DEBUG] [Thread-193404] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:38:03.069 [DEBUG] [Thread-193404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:38:03.069 [DEBUG] [Thread-193404] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:38:03.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:38:03.069 [DEBUG] [Thread-193404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:38:03.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:38:03.126 [DEBUG] [Thread-193404] [transport.py] [_log()] userauth is OK
2025-11-24T16:38:03.126 [DEBUG] [Thread-193404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:38:03.126 [DEBUG] [Thread-193404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:38:03.126 [DEBUG] [Thread-193404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:38:03.126 [DEBUG] [Thread-193404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:38:03.140 [INFO] [Thread-193404] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:38:03.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:38:03.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:38:03.986 [DEBUG] [Thread-193404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:38:03.986 [DEBUG] [Thread-193404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:38:04.034 [DEBUG] [Thread-193404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:38:04.034 [DEBUG] [Thread-193404] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:38:04.042 [DEBUG] [Thread-193404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:38:04.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:38:04.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-11-24T16:38:04.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-11-24T16:38:04.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:38:04.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:38:04.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:38:04.077 [DEBUG] [Thread-193404] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:38:15.124 [DEBUG] [Thread-193406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:38:30.201 [DEBUG] [Thread-193407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:38:34.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:38:34.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:38:34.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-11-24T16:38:35.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 38, 2), 25.15, 18.21, 0.0, 22.73, 21.94, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:38:35.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:38:02
2025-11-24T16:38:35.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:38:35.527 [DEBUG] [Thread-193408] [transport.py] [_log()] starting thread (client mode): 0xd7bc7a00
2025-11-24T16:38:35.527 [DEBUG] [Thread-193408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:38:35.539 [DEBUG] [Thread-193408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:38:35.539 [INFO] [Thread-193408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] client lang: <none>
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] server lang: <none>
2025-11-24T16:38:35.543 [DEBUG] [Thread-193408] [transport.py] [_log()] kex follows: False
2025-11-24T16:38:35.544 [DEBUG] [Thread-193408] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:38:35.544 [DEBUG] [Thread-193408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:38:35.544 [DEBUG] [Thread-193408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:38:35.544 [DEBUG] [Thread-193408] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:38:35.544 [DEBUG] [Thread-193408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:38:35.544 [DEBUG] [Thread-193408] [transport.py] [_log()] Compression: none
2025-11-24T16:38:35.544 [DEBUG] [Thread-193408] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:38:35.571 [DEBUG] [Thread-193408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:38:35.574 [DEBUG] [Thread-193408] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:38:35.575 [DEBUG] [Thread-193408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:38:35.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:38:35.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:38:35.578 [DEBUG] [Thread-193408] [transport.py] [_log()] userauth is OK
2025-11-24T16:38:35.578 [DEBUG] [Thread-193408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:38:35.578 [DEBUG] [Thread-193408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:38:35.578 [DEBUG] [Thread-193408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:38:35.578 [DEBUG] [Thread-193408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:38:35.596 [INFO] [Thread-193408] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:38:35.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:38:36.151 [DEBUG] [Thread-193408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:38:36.151 [DEBUG] [Thread-193408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:38:36.152 [DEBUG] [Thread-193408] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:38:36.192 [DEBUG] [Thread-193408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:38:36.192 [DEBUG] [Thread-193408] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:38:36.196 [DEBUG] [Thread-193408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:38:36.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:38:36.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:38:36.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:38:36.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:38:36.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:38:36.214 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:38:36.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:38:36.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:38:36.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:38:36.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.609769 -999.00  +21.80  18.29     23   +0.30 1 1 1 1 1   888    0 22.20 12.91 ----- 13.1 18.3 195.4 31.0 26.4 -30.7 26.1 -31.8 28.0 -26.3 28.4 -29.3
2025-11-24T16:38:36.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:38:36.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:38:36.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.609769
2025-11-24T16:38:36.220 [DEBUG] [Thread-193408] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:38:36.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:38:36.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:38:36.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:38:36.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:38:36.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:38:36.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:38:02', tmtdew=25.15, humidity=18.21, cloud=0.0, wind=22.73, temperature=21.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:38:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:38:36.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:38:36.316 [DEBUG] [Thread-193411] [transport.py] [_log()] starting thread (client mode): 0xd3161630
2025-11-24T16:38:36.316 [DEBUG] [Thread-193411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:38:36.331 [DEBUG] [Thread-193411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:38:36.331 [INFO] [Thread-193411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] client lang: <none>
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] server lang: <none>
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] kex follows: False
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] Compression: none
2025-11-24T16:38:36.339 [DEBUG] [Thread-193411] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:38:36.393 [DEBUG] [Thread-193411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:38:36.394 [DEBUG] [Thread-193411] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:38:36.394 [DEBUG] [Thread-193411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:38:36.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:38:36.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:38:36.451 [DEBUG] [Thread-193411] [transport.py] [_log()] userauth is OK
2025-11-24T16:38:36.451 [DEBUG] [Thread-193411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:38:36.451 [DEBUG] [Thread-193411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:38:36.451 [DEBUG] [Thread-193411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:38:36.451 [DEBUG] [Thread-193411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:38:36.465 [INFO] [Thread-193411] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:38:36.465 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:38:36.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:38:37.297 [DEBUG] [Thread-193411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:38:37.297 [DEBUG] [Thread-193411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:38:37.345 [DEBUG] [Thread-193411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:38:37.345 [DEBUG] [Thread-193411] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:38:37.353 [DEBUG] [Thread-193411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:38:37.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:38:37.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:38:37.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-11-24T16:38:37.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:38:37.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:38:37.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:38:37.386 [DEBUG] [Thread-193411] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:38:44.250 [DEBUG] [Thread-193413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:38:45.244 [DEBUG] [Thread-193414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:39:00.361 [DEBUG] [Thread-193415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:39:07.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:39:07.397 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:39:07.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-11-24T16:39:08.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 38, 35), 25.06, 18.57, 0.0, 20.82, 21.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:39:08.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:38:35
2025-11-24T16:39:08.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:39:08.935 [DEBUG] [Thread-193416] [transport.py] [_log()] starting thread (client mode): 0xd31b01c0
2025-11-24T16:39:08.936 [DEBUG] [Thread-193416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:39:08.949 [DEBUG] [Thread-193416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:39:08.949 [INFO] [Thread-193416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] client lang: <none>
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] server lang: <none>
2025-11-24T16:39:08.951 [DEBUG] [Thread-193416] [transport.py] [_log()] kex follows: False
2025-11-24T16:39:08.952 [DEBUG] [Thread-193416] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:39:08.952 [DEBUG] [Thread-193416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:39:08.952 [DEBUG] [Thread-193416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:39:08.952 [DEBUG] [Thread-193416] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:39:08.952 [DEBUG] [Thread-193416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:39:08.952 [DEBUG] [Thread-193416] [transport.py] [_log()] Compression: none
2025-11-24T16:39:08.952 [DEBUG] [Thread-193416] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:39:08.962 [DEBUG] [Thread-193416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:39:08.962 [DEBUG] [Thread-193416] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:39:08.962 [DEBUG] [Thread-193416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:39:08.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:39:08.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:39:08.965 [DEBUG] [Thread-193416] [transport.py] [_log()] userauth is OK
2025-11-24T16:39:08.965 [DEBUG] [Thread-193416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:39:08.965 [DEBUG] [Thread-193416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:39:08.965 [DEBUG] [Thread-193416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:39:08.965 [DEBUG] [Thread-193416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:39:08.981 [INFO] [Thread-193416] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:39:08.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:39:09.628 [DEBUG] [Thread-193416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:39:09.628 [DEBUG] [Thread-193416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:39:09.628 [DEBUG] [Thread-193416] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:39:09.669 [DEBUG] [Thread-193416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:39:09.669 [DEBUG] [Thread-193416] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:39:09.671 [DEBUG] [Thread-193416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:39:09.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:39:09.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:39:09.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:39:09.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:39:09.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:39:09.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:39:09.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:39:09.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:39:09.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:39:09.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.610116 -999.00  +21.90  13.31     24   +0.40 1 1 1 1 1   888    0 22.08 10.45 ----- 16.3 13.3 178.5 21.1 26.5 -29.2 26.2 -28.2 28.1 -27.4 28.6 -28.6
2025-11-24T16:39:09.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:39:09.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:39:09.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.610116
2025-11-24T16:39:09.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:39:09.693 [DEBUG] [Thread-193416] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:39:09.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:39:09.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:39:09.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:39:09.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:39:09.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:38:35', tmtdew=25.06, humidity=18.57, cloud=0.0, wind=20.82, temperature=21.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:38:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:39:09.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:39:09.779 [DEBUG] [Thread-193419] [transport.py] [_log()] starting thread (client mode): 0xd07bead0
2025-11-24T16:39:09.779 [DEBUG] [Thread-193419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:39:09.795 [DEBUG] [Thread-193419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:39:09.795 [INFO] [Thread-193419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:39:09.802 [DEBUG] [Thread-193419] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:39:09.802 [DEBUG] [Thread-193419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:39:09.802 [DEBUG] [Thread-193419] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] client lang: <none>
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] server lang: <none>
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] kex follows: False
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] Compression: none
2025-11-24T16:39:09.803 [DEBUG] [Thread-193419] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:39:09.858 [DEBUG] [Thread-193419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:39:09.858 [DEBUG] [Thread-193419] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:39:09.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:39:09.858 [DEBUG] [Thread-193419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:39:09.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:39:09.915 [DEBUG] [Thread-193419] [transport.py] [_log()] userauth is OK
2025-11-24T16:39:09.915 [DEBUG] [Thread-193419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:39:09.915 [DEBUG] [Thread-193419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:39:09.915 [DEBUG] [Thread-193419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:39:09.915 [DEBUG] [Thread-193419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:39:09.929 [INFO] [Thread-193419] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:39:09.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:39:09.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:39:10.780 [DEBUG] [Thread-193419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:39:10.781 [DEBUG] [Thread-193419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:39:10.828 [DEBUG] [Thread-193419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:39:10.829 [DEBUG] [Thread-193419] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:39:10.838 [DEBUG] [Thread-193419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:39:10.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:39:10.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-11-24T16:39:10.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:39:10.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:39:10.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:39:10.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:39:10.874 [DEBUG] [Thread-193419] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:39:15.392 [DEBUG] [Thread-193421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:39:30.440 [DEBUG] [Thread-193422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:39:40.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:39:40.896 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:39:40.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-11-24T16:39:41.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 39, 7), 25.33, 18.29, 0.0, 31.34, 22.03, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:39:41.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:39:07
2025-11-24T16:39:41.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:39:42.108 [DEBUG] [Thread-193423] [transport.py] [_log()] starting thread (client mode): 0xd7bc7880
2025-11-24T16:39:42.108 [DEBUG] [Thread-193423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:39:42.119 [DEBUG] [Thread-193423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:39:42.119 [INFO] [Thread-193423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:39:42.121 [DEBUG] [Thread-193423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:39:42.121 [DEBUG] [Thread-193423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:39:42.121 [DEBUG] [Thread-193423] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:39:42.121 [DEBUG] [Thread-193423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:39:42.121 [DEBUG] [Thread-193423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:39:42.121 [DEBUG] [Thread-193423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] client lang: <none>
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] server lang: <none>
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] kex follows: False
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] Compression: none
2025-11-24T16:39:42.122 [DEBUG] [Thread-193423] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:39:42.145 [DEBUG] [Thread-193423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:39:42.148 [DEBUG] [Thread-193423] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:39:42.149 [DEBUG] [Thread-193423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:39:42.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:39:42.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:39:42.152 [DEBUG] [Thread-193423] [transport.py] [_log()] userauth is OK
2025-11-24T16:39:42.152 [DEBUG] [Thread-193423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:39:42.152 [DEBUG] [Thread-193423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:39:42.152 [DEBUG] [Thread-193423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:39:42.152 [DEBUG] [Thread-193423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:39:42.163 [INFO] [Thread-193423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:39:42.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:39:42.766 [DEBUG] [Thread-193423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:39:42.766 [DEBUG] [Thread-193423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:39:42.766 [DEBUG] [Thread-193423] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:39:42.807 [DEBUG] [Thread-193423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:39:42.807 [DEBUG] [Thread-193423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:39:42.808 [DEBUG] [Thread-193423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:39:42.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:39:42.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:39:42.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:39:42.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:39:42.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:39:42.824 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:39:42.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:39:42.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:39:42.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:39:42.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.610810 -999.00  +22.10  17.91     23   +0.20 1 1 1 1 1   888    0 22.04 9.62 ----- 23.1 17.9 168.6 28.5 26.6 -29.2 26.4 -28.4 28.1 -27.5 28.6 -29.4
2025-11-24T16:39:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:39:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:39:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.610810
2025-11-24T16:39:42.831 [DEBUG] [Thread-193423] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:39:42.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:39:42.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:39:42.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:39:42.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:39:42.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:39:42.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:39:07', tmtdew=25.33, humidity=18.29, cloud=0.0, wind=31.34, temperature=22.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:39:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:39:42.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:39:42.931 [DEBUG] [Thread-193426] [transport.py] [_log()] starting thread (client mode): 0xd3137340
2025-11-24T16:39:42.931 [DEBUG] [Thread-193426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:39:42.945 [DEBUG] [Thread-193426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:39:42.945 [INFO] [Thread-193426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] client lang: <none>
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] server lang: <none>
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] kex follows: False
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] Compression: none
2025-11-24T16:39:42.953 [DEBUG] [Thread-193426] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:39:43.009 [DEBUG] [Thread-193426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:39:43.010 [DEBUG] [Thread-193426] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:39:43.010 [DEBUG] [Thread-193426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:39:43.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:39:43.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:39:43.067 [DEBUG] [Thread-193426] [transport.py] [_log()] userauth is OK
2025-11-24T16:39:43.067 [DEBUG] [Thread-193426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:39:43.067 [DEBUG] [Thread-193426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:39:43.067 [DEBUG] [Thread-193426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:39:43.067 [DEBUG] [Thread-193426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:39:43.085 [INFO] [Thread-193426] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:39:43.085 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:39:43.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:39:43.961 [DEBUG] [Thread-193426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:39:43.962 [DEBUG] [Thread-193426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:39:44.009 [DEBUG] [Thread-193426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:39:44.009 [DEBUG] [Thread-193426] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:39:44.018 [DEBUG] [Thread-193426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:39:44.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:39: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-11-24T16:39:44.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-11-24T16:39:44.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:39:44.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:39:44.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:39:44.056 [DEBUG] [Thread-193426] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:39:44.475 [DEBUG] [Thread-193428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:39:45.475 [DEBUG] [Thread-193429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:40:00.554 [DEBUG] [Thread-193430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:40:14.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:40:14.080 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:40:14.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-11-24T16:40:15.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 39, 40), 25.67, 17.81, 0.0, 27.05, 22.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:40:15.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:39:40
2025-11-24T16:40:15.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:40:15.395 [DEBUG] [Thread-193431] [transport.py] [_log()] starting thread (client mode): 0xd31614b0
2025-11-24T16:40:15.396 [DEBUG] [Thread-193431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:40:15.408 [DEBUG] [Thread-193431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:40:15.408 [INFO] [Thread-193431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:40:15.415 [DEBUG] [Thread-193431] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:40:15.415 [DEBUG] [Thread-193431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:40:15.415 [DEBUG] [Thread-193431] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:40:15.415 [DEBUG] [Thread-193431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:40:15.415 [DEBUG] [Thread-193431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] client lang: <none>
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] server lang: <none>
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] kex follows: False
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] Compression: none
2025-11-24T16:40:15.416 [DEBUG] [Thread-193431] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:40:15.436 [DEBUG] [Thread-193431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:40:15.439 [DEBUG] [Thread-193431] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:40:15.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:40:15.441 [DEBUG] [Thread-193431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:40:15.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:40:15.481 [DEBUG] [Thread-193431] [transport.py] [_log()] userauth is OK
2025-11-24T16:40:15.481 [DEBUG] [Thread-193431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:40:15.481 [DEBUG] [Thread-193431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:40:15.481 [DEBUG] [Thread-193431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:40:15.481 [DEBUG] [Thread-193431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:40:15.500 [INFO] [Thread-193431] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:40:15.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:40:15.603 [DEBUG] [Thread-193433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:40:17.729 [DEBUG] [Thread-193431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:40:17.730 [DEBUG] [Thread-193431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:40:17.741 [DEBUG] [Thread-193431] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:40:17.770 [DEBUG] [Thread-193431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:40:17.771 [DEBUG] [Thread-193431] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:40:17.774 [DEBUG] [Thread-193431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:40:17.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:40:17.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:40:17.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:40:17.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:40:17.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:40:17.798 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:40:17.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:40:17.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:40:17.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:40:17.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.610810 -999.00  +22.10  17.91     23   +0.20 1 1 1 1 1   888    0 22.04 9.62 ----- 23.1 17.9 168.6 28.5 26.6 -29.2 26.4 -28.4 28.1 -27.5 28.6 -29.4
2025-11-24T16:40:17.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:40:17.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:40:17.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.610810
2025-11-24T16:40:17.805 [DEBUG] [Thread-193431] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:40:17.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:40:17.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:40:17.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:40:17.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:40:17.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:40:17.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:39:40', tmtdew=25.67, humidity=17.81, cloud=0.0, wind=27.05, temperature=22.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:39:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:40:17.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:40:17.909 [DEBUG] [Thread-193435] [transport.py] [_log()] starting thread (client mode): 0xd31cc2e0
2025-11-24T16:40:17.909 [DEBUG] [Thread-193435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:40:17.924 [DEBUG] [Thread-193435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:40:17.924 [INFO] [Thread-193435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:40:17.931 [DEBUG] [Thread-193435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:40:17.931 [DEBUG] [Thread-193435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:40:17.931 [DEBUG] [Thread-193435] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] client lang: <none>
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] server lang: <none>
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] kex follows: False
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:40:17.932 [DEBUG] [Thread-193435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:40:17.934 [DEBUG] [Thread-193435] [transport.py] [_log()] Compression: none
2025-11-24T16:40:17.934 [DEBUG] [Thread-193435] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:40:17.992 [DEBUG] [Thread-193435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:40:17.992 [DEBUG] [Thread-193435] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:40:17.993 [DEBUG] [Thread-193435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:40:17.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:40:17.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:40:18.048 [DEBUG] [Thread-193435] [transport.py] [_log()] userauth is OK
2025-11-24T16:40:18.048 [DEBUG] [Thread-193435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:40:18.049 [DEBUG] [Thread-193435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:40:18.049 [DEBUG] [Thread-193435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:40:18.049 [DEBUG] [Thread-193435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:40:18.068 [INFO] [Thread-193435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:40:18.068 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:40:18.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:40:18.898 [DEBUG] [Thread-193435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:40:18.898 [DEBUG] [Thread-193435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:40:18.945 [DEBUG] [Thread-193435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:40:18.946 [DEBUG] [Thread-193435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:40:18.955 [DEBUG] [Thread-193435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:40:18.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:40:18.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:40:18.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-11-24T16:40:18.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:40:18.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:40:18.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:40:19.003 [DEBUG] [Thread-193435] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:40:30.660 [DEBUG] [Thread-193437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:40:44.717 [DEBUG] [Thread-193438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:40:45.768 [DEBUG] [Thread-193439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:40:49.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:40:49.031 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:40: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-11-24T16:40:49.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 40, 46), 25.61, 17.89, 0.0, 22.59, 21.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:40:49.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:40:46
2025-11-24T16:40:49.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:40:50.173 [DEBUG] [Thread-193440] [transport.py] [_log()] starting thread (client mode): 0xd31cd450
2025-11-24T16:40:50.173 [DEBUG] [Thread-193440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:40:50.180 [DEBUG] [Thread-193440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:40:50.180 [INFO] [Thread-193440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] client lang: <none>
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] server lang: <none>
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] kex follows: False
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:40:50.184 [DEBUG] [Thread-193440] [transport.py] [_log()] Compression: none
2025-11-24T16:40:50.185 [DEBUG] [Thread-193440] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:40:50.212 [DEBUG] [Thread-193440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:40:50.218 [DEBUG] [Thread-193440] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:40:50.220 [DEBUG] [Thread-193440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:40:50.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:40:50.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:40:50.225 [DEBUG] [Thread-193440] [transport.py] [_log()] userauth is OK
2025-11-24T16:40:50.225 [DEBUG] [Thread-193440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:40:50.225 [DEBUG] [Thread-193440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:40:50.225 [DEBUG] [Thread-193440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:40:50.226 [DEBUG] [Thread-193440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:40:50.252 [INFO] [Thread-193440] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:40:50.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:40:50.854 [DEBUG] [Thread-193440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:40:50.854 [DEBUG] [Thread-193440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:40:50.856 [DEBUG] [Thread-193440] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:40:50.895 [DEBUG] [Thread-193440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:40:50.895 [DEBUG] [Thread-193440] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:40:50.897 [DEBUG] [Thread-193440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:40:50.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:40:50.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:40:50.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:40:50.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:40:50.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:40:50.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:40:50.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:40:50.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:40:50.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:40:50.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.611505 -999.00  +21.80  17.70     23   +0.10 1 1 1 1 1   888    0 21.78 10.40 ----- 19.6 17.7 174.0 26.1 26.4 -29.4 26.0 -28.6 27.9 -28.0 28.4 -30.2
2025-11-24T16:40:50.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:40:50.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:40:50.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.611505
2025-11-24T16:40:50.922 [DEBUG] [Thread-193440] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:40:50.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:40:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:40:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:40:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:40:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:40:50.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:40:46', tmtdew=25.61, humidity=17.89, cloud=0.0, wind=22.59, temperature=21.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:40:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:40:51.020 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:40:51.032 [DEBUG] [Thread-193443] [transport.py] [_log()] starting thread (client mode): 0xd31ce2f0
2025-11-24T16:40:51.032 [DEBUG] [Thread-193443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:40:51.047 [DEBUG] [Thread-193443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:40:51.047 [INFO] [Thread-193443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] client lang: <none>
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] server lang: <none>
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] kex follows: False
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:40:51.055 [DEBUG] [Thread-193443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:40:51.056 [DEBUG] [Thread-193443] [transport.py] [_log()] Compression: none
2025-11-24T16:40:51.056 [DEBUG] [Thread-193443] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:40:51.113 [DEBUG] [Thread-193443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:40:51.114 [DEBUG] [Thread-193443] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:40:51.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:40:51.115 [DEBUG] [Thread-193443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:40:51.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:40:51.172 [DEBUG] [Thread-193443] [transport.py] [_log()] userauth is OK
2025-11-24T16:40:51.172 [DEBUG] [Thread-193443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:40:51.173 [DEBUG] [Thread-193443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:40:51.173 [DEBUG] [Thread-193443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:40:51.173 [DEBUG] [Thread-193443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:40:51.191 [INFO] [Thread-193443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:40: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-11-24T16:40:51.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:40:52.081 [DEBUG] [Thread-193443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:40:52.081 [DEBUG] [Thread-193443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:40:52.129 [DEBUG] [Thread-193443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:40:52.129 [DEBUG] [Thread-193443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:40:52.137 [DEBUG] [Thread-193443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:40:52.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:40:52.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-11-24T16:40:52.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-11-24T16:40:52.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:40:52.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:40:52.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:40:52.179 [DEBUG] [Thread-193443] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:41:00.804 [DEBUG] [Thread-193445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:41:15.936 [DEBUG] [Thread-193446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:41:22.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:41:22.206 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:41:22.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-11-24T16:41:22.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 41, 18), 25.53, 18.01, 0.0, 21.72, 21.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:41:22.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:41:18
2025-11-24T16:41:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:41:23.274 [DEBUG] [Thread-193447] [transport.py] [_log()] starting thread (client mode): 0xd31cfee0
2025-11-24T16:41:23.275 [DEBUG] [Thread-193447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:41:23.289 [DEBUG] [Thread-193447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:41:23.289 [INFO] [Thread-193447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:41:23.294 [DEBUG] [Thread-193447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:41:23.294 [DEBUG] [Thread-193447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:41:23.294 [DEBUG] [Thread-193447] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:41:23.294 [DEBUG] [Thread-193447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:41:23.294 [DEBUG] [Thread-193447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:41:23.294 [DEBUG] [Thread-193447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:41:23.295 [DEBUG] [Thread-193447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:41:23.295 [DEBUG] [Thread-193447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:41:23.295 [DEBUG] [Thread-193447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:41:23.295 [DEBUG] [Thread-193447] [transport.py] [_log()] client lang: <none>
2025-11-24T16:41:23.295 [DEBUG] [Thread-193447] [transport.py] [_log()] server lang: <none>
2025-11-24T16:41:23.295 [DEBUG] [Thread-193447] [transport.py] [_log()] kex follows: False
2025-11-24T16:41:23.295 [DEBUG] [Thread-193447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:41:23.296 [DEBUG] [Thread-193447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:41:23.296 [DEBUG] [Thread-193447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:41:23.296 [DEBUG] [Thread-193447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:41:23.296 [DEBUG] [Thread-193447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:41:23.296 [DEBUG] [Thread-193447] [transport.py] [_log()] Compression: none
2025-11-24T16:41:23.296 [DEBUG] [Thread-193447] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:41:23.330 [DEBUG] [Thread-193447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:41:23.333 [DEBUG] [Thread-193447] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:41:23.336 [DEBUG] [Thread-193447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:41:23.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:41:23.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:41:23.341 [DEBUG] [Thread-193447] [transport.py] [_log()] userauth is OK
2025-11-24T16:41:23.341 [DEBUG] [Thread-193447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:41:23.341 [DEBUG] [Thread-193447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:41:23.341 [DEBUG] [Thread-193447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:41:23.341 [DEBUG] [Thread-193447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:41:23.366 [INFO] [Thread-193447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:41:23.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:41:23.968 [DEBUG] [Thread-193447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:41:23.968 [DEBUG] [Thread-193447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:41:23.970 [DEBUG] [Thread-193447] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:41:24.009 [DEBUG] [Thread-193447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:41:24.010 [DEBUG] [Thread-193447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:41:24.013 [DEBUG] [Thread-193447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:41:24.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:41:24.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:41:24.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:41:24.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:41:24.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:41:24.042 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:41:24.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:41:24.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:41:24.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:41:24.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.611505 -999.00  +21.80  17.70     23   +0.10 1 1 1 1 1   888    0 21.78 10.40 ----- 19.6 17.7 174.0 26.1 26.4 -29.4 26.0 -28.6 27.9 -28.0 28.4 -30.2
2025-11-24T16:41:24.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:41:24.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:41:24.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.611505
2025-11-24T16:41:24.051 [DEBUG] [Thread-193447] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:41:24.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:41:24.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:41:24.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:41:24.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:41:24.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:41:24.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:41:18', tmtdew=25.53, humidity=18.01, cloud=0.0, wind=21.72, temperature=21.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:40:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:41:24.150 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:41:24.161 [DEBUG] [Thread-193450] [transport.py] [_log()] starting thread (client mode): 0xd0702470
2025-11-24T16:41:24.161 [DEBUG] [Thread-193450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:41:24.175 [DEBUG] [Thread-193450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:41:24.175 [INFO] [Thread-193450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:41:24.183 [DEBUG] [Thread-193450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:41:24.183 [DEBUG] [Thread-193450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:41:24.183 [DEBUG] [Thread-193450] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:41:24.184 [DEBUG] [Thread-193450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:41:24.184 [DEBUG] [Thread-193450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:41:24.184 [DEBUG] [Thread-193450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:41:24.184 [DEBUG] [Thread-193450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:41:24.184 [DEBUG] [Thread-193450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:41:24.184 [DEBUG] [Thread-193450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:41:24.184 [DEBUG] [Thread-193450] [transport.py] [_log()] client lang: <none>
2025-11-24T16:41:24.184 [DEBUG] [Thread-193450] [transport.py] [_log()] server lang: <none>
2025-11-24T16:41:24.184 [DEBUG] [Thread-193450] [transport.py] [_log()] kex follows: False
2025-11-24T16:41:24.184 [DEBUG] [Thread-193450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:41:24.185 [DEBUG] [Thread-193450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:41:24.185 [DEBUG] [Thread-193450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:41:24.185 [DEBUG] [Thread-193450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:41:24.185 [DEBUG] [Thread-193450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:41:24.185 [DEBUG] [Thread-193450] [transport.py] [_log()] Compression: none
2025-11-24T16:41:24.185 [DEBUG] [Thread-193450] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:41:24.240 [DEBUG] [Thread-193450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:41:24.241 [DEBUG] [Thread-193450] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:41:24.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:41:24.242 [DEBUG] [Thread-193450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:41:24.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:41:24.297 [DEBUG] [Thread-193450] [transport.py] [_log()] userauth is OK
2025-11-24T16:41:24.297 [DEBUG] [Thread-193450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:41:24.297 [DEBUG] [Thread-193450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:41:24.297 [DEBUG] [Thread-193450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:41:24.297 [DEBUG] [Thread-193450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:41:24.322 [INFO] [Thread-193450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:41:24.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:41:24.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:41:25.181 [DEBUG] [Thread-193450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:41:25.182 [DEBUG] [Thread-193450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:41:25.229 [DEBUG] [Thread-193450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:41:25.229 [DEBUG] [Thread-193450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:41:25.237 [DEBUG] [Thread-193450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:41:25.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:41:25.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-11-24T16:41:25.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-11-24T16:41:25.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:41:25.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:41:25.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:41:25.270 [DEBUG] [Thread-193450] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:41:30.987 [DEBUG] [Thread-193452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:41:44.969 [DEBUG] [Thread-193453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:41:46.093 [DEBUG] [Thread-193454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:41:55.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:41:55.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:41:55.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:41:56.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 41, 50), 25.75, 17.82, 0.0, 27.0, 22.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:41:56.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:41:50
2025-11-24T16:41:56.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:41:56.500 [DEBUG] [Thread-193455] [transport.py] [_log()] starting thread (client mode): 0xd3162200
2025-11-24T16:41:56.500 [DEBUG] [Thread-193455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:41:56.515 [DEBUG] [Thread-193455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:41:56.515 [INFO] [Thread-193455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] client lang: <none>
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] server lang: <none>
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] kex follows: False
2025-11-24T16:41:56.518 [DEBUG] [Thread-193455] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:41:56.519 [DEBUG] [Thread-193455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:41:56.519 [DEBUG] [Thread-193455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:41:56.519 [DEBUG] [Thread-193455] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:41:56.519 [DEBUG] [Thread-193455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:41:56.519 [DEBUG] [Thread-193455] [transport.py] [_log()] Compression: none
2025-11-24T16:41:56.519 [DEBUG] [Thread-193455] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:41:56.539 [DEBUG] [Thread-193455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:41:56.540 [DEBUG] [Thread-193455] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:41:56.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:41:56.542 [DEBUG] [Thread-193455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:41:56.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:41:56.585 [DEBUG] [Thread-193455] [transport.py] [_log()] userauth is OK
2025-11-24T16:41:56.585 [DEBUG] [Thread-193455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:41:56.585 [DEBUG] [Thread-193455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:41:56.585 [DEBUG] [Thread-193455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:41:56.585 [DEBUG] [Thread-193455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:41:56.601 [INFO] [Thread-193455] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:41:56.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:41:57.227 [DEBUG] [Thread-193455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:41:57.227 [DEBUG] [Thread-193455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:41:57.227 [DEBUG] [Thread-193455] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:41:57.268 [DEBUG] [Thread-193455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:41:57.268 [DEBUG] [Thread-193455] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:41:57.270 [DEBUG] [Thread-193455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:41:57.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:41:57.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:41:57.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:41:57.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:41:57.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:41:57.290 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:41:57.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:41:57.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:41:57.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:41:57.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.611852 -999.00  +21.90  23.18     23   +0.10 1 1 1 1 1   888    0 21.36 12.00 ----- 18.7 23.2 182.4 28.8 26.4 -28.8 26.0 -30.4 27.9 -27.3 28.4 -30.1
2025-11-24T16:41:57.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:41:57.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:41:57.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.611852
2025-11-24T16:41:57.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:41:57.291 [DEBUG] [Thread-193455] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:41:57.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:41:57.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:41:57.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:41:57.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:41:57.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:41:50', tmtdew=25.75, humidity=17.82, cloud=0.0, wind=27.0, temperature=22.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:41:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:41:57.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:41:57.390 [DEBUG] [Thread-193458] [transport.py] [_log()] starting thread (client mode): 0xd31cdc60
2025-11-24T16:41:57.390 [DEBUG] [Thread-193458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:41:57.404 [DEBUG] [Thread-193458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:41:57.404 [INFO] [Thread-193458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] client lang: <none>
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] server lang: <none>
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] kex follows: False
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:41:57.412 [DEBUG] [Thread-193458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:41:57.413 [DEBUG] [Thread-193458] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:41:57.413 [DEBUG] [Thread-193458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:41:57.413 [DEBUG] [Thread-193458] [transport.py] [_log()] Compression: none
2025-11-24T16:41:57.413 [DEBUG] [Thread-193458] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:41:57.467 [DEBUG] [Thread-193458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:41:57.467 [DEBUG] [Thread-193458] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:41:57.467 [DEBUG] [Thread-193458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:41:57.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:41:57.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:41:57.524 [DEBUG] [Thread-193458] [transport.py] [_log()] userauth is OK
2025-11-24T16:41:57.524 [DEBUG] [Thread-193458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:41:57.524 [DEBUG] [Thread-193458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:41:57.524 [DEBUG] [Thread-193458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:41:57.524 [DEBUG] [Thread-193458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:41:57.538 [INFO] [Thread-193458] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:41:57.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:41:57.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:41:58.425 [DEBUG] [Thread-193458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:41:58.425 [DEBUG] [Thread-193458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:41:58.473 [DEBUG] [Thread-193458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:41:58.473 [DEBUG] [Thread-193458] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:41:58.481 [DEBUG] [Thread-193458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:41:58.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:41:58.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-11-24T16:41:58.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-11-24T16:41:58.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:41:58.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:41:58.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:41:58.514 [DEBUG] [Thread-193458] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:42:01.124 [DEBUG] [Thread-193460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:42:16.211 [DEBUG] [Thread-193461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:42:28.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:42:28.542 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:42:28.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-11-24T16:42:29.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 42, 23), 25.77, 17.78, 0.0, 29.71, 22.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:42:29.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:42:23
2025-11-24T16:42:29.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:42:29.770 [DEBUG] [Thread-193462] [transport.py] [_log()] starting thread (client mode): 0xd07a94e0
2025-11-24T16:42:29.771 [DEBUG] [Thread-193462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:42:29.786 [DEBUG] [Thread-193462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:42:29.786 [INFO] [Thread-193462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:42:29.789 [DEBUG] [Thread-193462] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:42:29.789 [DEBUG] [Thread-193462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:42:29.789 [DEBUG] [Thread-193462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:42:29.789 [DEBUG] [Thread-193462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:42:29.789 [DEBUG] [Thread-193462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:42:29.789 [DEBUG] [Thread-193462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:42:29.789 [DEBUG] [Thread-193462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:42:29.789 [DEBUG] [Thread-193462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:42:29.789 [DEBUG] [Thread-193462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:42:29.790 [DEBUG] [Thread-193462] [transport.py] [_log()] client lang: <none>
2025-11-24T16:42:29.790 [DEBUG] [Thread-193462] [transport.py] [_log()] server lang: <none>
2025-11-24T16:42:29.790 [DEBUG] [Thread-193462] [transport.py] [_log()] kex follows: False
2025-11-24T16:42:29.790 [DEBUG] [Thread-193462] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:42:29.790 [DEBUG] [Thread-193462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:42:29.790 [DEBUG] [Thread-193462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:42:29.790 [DEBUG] [Thread-193462] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:42:29.791 [DEBUG] [Thread-193462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:42:29.791 [DEBUG] [Thread-193462] [transport.py] [_log()] Compression: none
2025-11-24T16:42:29.791 [DEBUG] [Thread-193462] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:42:29.816 [DEBUG] [Thread-193462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:42:29.819 [DEBUG] [Thread-193462] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:42:29.820 [DEBUG] [Thread-193462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:42:29.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:42:29.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:42:29.824 [DEBUG] [Thread-193462] [transport.py] [_log()] userauth is OK
2025-11-24T16:42:29.824 [DEBUG] [Thread-193462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:42:29.825 [DEBUG] [Thread-193462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:42:29.825 [DEBUG] [Thread-193462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:42:29.825 [DEBUG] [Thread-193462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:42:29.848 [INFO] [Thread-193462] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:42:29.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:42:30.408 [DEBUG] [Thread-193462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:42:30.408 [DEBUG] [Thread-193462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:42:30.409 [DEBUG] [Thread-193462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:42:30.448 [DEBUG] [Thread-193462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:42:30.448 [DEBUG] [Thread-193462] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:42:30.451 [DEBUG] [Thread-193462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:42:30.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:42:30.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:42:30.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:42:30.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:42:30.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:42:30.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:42:30.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:42:30.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:42:30.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:42:30.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.612546 -999.00  +21.80  21.72     23   +0.00 1 1 1 1 1   888    0 21.87 14.28 ----- 24.2 21.7 164.2 34.5 26.3 -29.2 26.1 -28.1 27.7 -27.9 28.2 -29.5
2025-11-24T16:42:30.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:42:30.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:42:30.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.612546
2025-11-24T16:42:30.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:42:30.486 [DEBUG] [Thread-193462] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:42:30.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:42:30.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:42:30.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:42:30.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:42:30.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:42:23', tmtdew=25.77, humidity=17.78, cloud=0.0, wind=29.71, temperature=22.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:42:03.974', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:42:30.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:42:30.589 [DEBUG] [Thread-193464] [transport.py] [_log()] starting thread (client mode): 0xd31cea10
2025-11-24T16:42:30.589 [DEBUG] [Thread-193464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:42:30.604 [DEBUG] [Thread-193464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:42:30.604 [INFO] [Thread-193464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:42:30.611 [DEBUG] [Thread-193464] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:42:30.611 [DEBUG] [Thread-193464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:42:30.611 [DEBUG] [Thread-193464] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:42:30.611 [DEBUG] [Thread-193464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:42:30.611 [DEBUG] [Thread-193464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:42:30.611 [DEBUG] [Thread-193464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] client lang: <none>
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] server lang: <none>
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] kex follows: False
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] Compression: none
2025-11-24T16:42:30.612 [DEBUG] [Thread-193464] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:42:30.669 [DEBUG] [Thread-193464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:42:30.669 [DEBUG] [Thread-193464] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:42:30.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:42:30.671 [DEBUG] [Thread-193464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:42:30.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:42:30.724 [DEBUG] [Thread-193464] [transport.py] [_log()] userauth is OK
2025-11-24T16:42:30.725 [DEBUG] [Thread-193464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:42:30.725 [DEBUG] [Thread-193464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:42:30.725 [DEBUG] [Thread-193464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:42:30.725 [DEBUG] [Thread-193464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:42:30.749 [INFO] [Thread-193464] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:42:30.749 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:42:30.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:42:31.246 [DEBUG] [Thread-193466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:42:31.590 [DEBUG] [Thread-193464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:42:31.591 [DEBUG] [Thread-193464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:42:31.638 [DEBUG] [Thread-193464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:42:31.639 [DEBUG] [Thread-193464] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:42:31.648 [DEBUG] [Thread-193464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:42:31.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:42:31.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:42:31.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-11-24T16:42:31.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:42:31.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:42:31.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:42:31.686 [DEBUG] [Thread-193464] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:42:45.203 [DEBUG] [Thread-193467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:42:46.355 [DEBUG] [Thread-193468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:43:01.392 [DEBUG] [Thread-193469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:43:01.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:43:01.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:43:01.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-11-24T16:43:02.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 42, 56), 26.09, 17.28, 0.0, 27.22, 22.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:43:02.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:42:56
2025-11-24T16:43:02.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:43:02.948 [DEBUG] [Thread-193470] [transport.py] [_log()] starting thread (client mode): 0xd0700580
2025-11-24T16:43:02.948 [DEBUG] [Thread-193470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:43:02.958 [DEBUG] [Thread-193470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:43:02.958 [INFO] [Thread-193470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] client lang: <none>
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] server lang: <none>
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] kex follows: False
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:43:02.961 [DEBUG] [Thread-193470] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:43:02.962 [DEBUG] [Thread-193470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:43:02.962 [DEBUG] [Thread-193470] [transport.py] [_log()] Compression: none
2025-11-24T16:43:02.962 [DEBUG] [Thread-193470] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:43:02.977 [DEBUG] [Thread-193470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:43:02.977 [DEBUG] [Thread-193470] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:43:02.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:43:02.978 [DEBUG] [Thread-193470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:43:02.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:43:02.979 [DEBUG] [Thread-193470] [transport.py] [_log()] userauth is OK
2025-11-24T16:43:02.979 [DEBUG] [Thread-193470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:43:02.979 [DEBUG] [Thread-193470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:43:02.979 [DEBUG] [Thread-193470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:43:02.979 [DEBUG] [Thread-193470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:43:02.989 [INFO] [Thread-193470] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:43:02.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:43:03.564 [DEBUG] [Thread-193470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:43:03.565 [DEBUG] [Thread-193470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:43:03.565 [DEBUG] [Thread-193470] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:43:03.605 [DEBUG] [Thread-193470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:43:03.606 [DEBUG] [Thread-193470] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:43:03.609 [DEBUG] [Thread-193470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:43:03.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:43:03.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:43:03.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:43:03.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:43:03.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:43:03.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:43:03.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:43:03.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:43:03.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:43:03.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.612894 -999.00  +21.60  18.76     23   +0.10 1 1 1 1 1   888    0 21.85 14.85 ----- 15.5 18.8 147.3 33.5 26.2 -30.0 26.0 -27.9 27.8 -26.9 28.3 -28.7
2025-11-24T16:43:03.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:43:03.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:43:03.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.612894
2025-11-24T16:43:03.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:43:03.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:43:03.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:43:03.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:43:03.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:43:03.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:42:56', tmtdew=26.09, humidity=17.28, cloud=0.0, wind=27.22, temperature=22.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:42:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:43:03.654 [DEBUG] [Thread-193470] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:43:03.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:43:03.749 [DEBUG] [Thread-193473] [transport.py] [_log()] starting thread (client mode): 0xd0703970
2025-11-24T16:43:03.749 [DEBUG] [Thread-193473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:43:03.764 [DEBUG] [Thread-193473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:43:03.765 [INFO] [Thread-193473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:43:03.772 [DEBUG] [Thread-193473] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:43:03.772 [DEBUG] [Thread-193473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:43:03.772 [DEBUG] [Thread-193473] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:43:03.772 [DEBUG] [Thread-193473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:43:03.772 [DEBUG] [Thread-193473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] client lang: <none>
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] server lang: <none>
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] kex follows: False
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:43:03.773 [DEBUG] [Thread-193473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:43:03.776 [DEBUG] [Thread-193473] [transport.py] [_log()] Compression: none
2025-11-24T16:43:03.776 [DEBUG] [Thread-193473] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:43:03.837 [DEBUG] [Thread-193473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:43:03.838 [DEBUG] [Thread-193473] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:43:03.838 [DEBUG] [Thread-193473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:43:03.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:43:03.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:43:03.893 [DEBUG] [Thread-193473] [transport.py] [_log()] userauth is OK
2025-11-24T16:43:03.893 [DEBUG] [Thread-193473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:43:03.893 [DEBUG] [Thread-193473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:43:03.893 [DEBUG] [Thread-193473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:43:03.893 [DEBUG] [Thread-193473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:43:03.915 [INFO] [Thread-193473] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:43:03.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:43:03.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:43:04.743 [DEBUG] [Thread-193473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:43:04.744 [DEBUG] [Thread-193473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:43:04.792 [DEBUG] [Thread-193473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:43:04.792 [DEBUG] [Thread-193473] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:43:04.802 [DEBUG] [Thread-193473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:43:04.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:43:04.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-11-24T16:43:04.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-11-24T16:43:04.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:43:04.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:43:04.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:43:04.849 [DEBUG] [Thread-193473] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:43:16.423 [DEBUG] [Thread-193475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:43:31.480 [DEBUG] [Thread-193476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:43:34.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:43:34.884 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:43:34.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:43:35.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 43, 29), 26.06, 17.29, 0.0, 28.72, 22.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:43:35.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:43:29
2025-11-24T16:43:36.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:43:36.195 [DEBUG] [Thread-193477] [transport.py] [_log()] starting thread (client mode): 0xd0700bb0
2025-11-24T16:43:36.196 [DEBUG] [Thread-193477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:43:36.210 [DEBUG] [Thread-193477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:43:36.210 [INFO] [Thread-193477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:43:36.214 [DEBUG] [Thread-193477] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:43:36.214 [DEBUG] [Thread-193477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:43:36.214 [DEBUG] [Thread-193477] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:43:36.215 [DEBUG] [Thread-193477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:43:36.215 [DEBUG] [Thread-193477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:43:36.215 [DEBUG] [Thread-193477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:43:36.215 [DEBUG] [Thread-193477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:43:36.215 [DEBUG] [Thread-193477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:43:36.215 [DEBUG] [Thread-193477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:43:36.215 [DEBUG] [Thread-193477] [transport.py] [_log()] client lang: <none>
2025-11-24T16:43:36.215 [DEBUG] [Thread-193477] [transport.py] [_log()] server lang: <none>
2025-11-24T16:43:36.215 [DEBUG] [Thread-193477] [transport.py] [_log()] kex follows: False
2025-11-24T16:43:36.215 [DEBUG] [Thread-193477] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:43:36.216 [DEBUG] [Thread-193477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:43:36.216 [DEBUG] [Thread-193477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:43:36.216 [DEBUG] [Thread-193477] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:43:36.216 [DEBUG] [Thread-193477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:43:36.216 [DEBUG] [Thread-193477] [transport.py] [_log()] Compression: none
2025-11-24T16:43:36.216 [DEBUG] [Thread-193477] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:43:36.246 [DEBUG] [Thread-193477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:43:36.251 [DEBUG] [Thread-193477] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:43:36.253 [DEBUG] [Thread-193477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:43:36.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:43:36.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:43:36.258 [DEBUG] [Thread-193477] [transport.py] [_log()] userauth is OK
2025-11-24T16:43:36.259 [DEBUG] [Thread-193477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:43:36.259 [DEBUG] [Thread-193477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:43:36.259 [DEBUG] [Thread-193477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:43:36.259 [DEBUG] [Thread-193477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:43:36.269 [INFO] [Thread-193477] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:43:36.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:43:36.850 [DEBUG] [Thread-193477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:43:36.850 [DEBUG] [Thread-193477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:43:36.861 [DEBUG] [Thread-193477] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:43:36.890 [DEBUG] [Thread-193477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:43:36.890 [DEBUG] [Thread-193477] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:43:36.892 [DEBUG] [Thread-193477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:43:36.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:43:36.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:43:36.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:43:36.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:43:36.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:43:36.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:43:36.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:43:36.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:43:36.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:43:36.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.613241 -999.00  +21.70  19.14     23   +0.10 1 1 1 1 1   887    0 22.21 17.59 ----- 15.1 19.1 151.3 37.1 26.2 -29.7 26.1 -27.6 27.8 -26.1 28.3 -28.3
2025-11-24T16:43:36.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:43:36.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:43:36.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.613241
2025-11-24T16:43:36.924 [DEBUG] [Thread-193477] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:43:36.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:43:36.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:43:36.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:43:36.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:43:36.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:43:36.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:43:29', tmtdew=26.06, humidity=17.29, cloud=0.0, wind=28.72, temperature=22.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:43:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:43:37.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:43:37.021 [DEBUG] [Thread-193480] [transport.py] [_log()] starting thread (client mode): 0xd3134400
2025-11-24T16:43:37.021 [DEBUG] [Thread-193480] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:43:37.036 [DEBUG] [Thread-193480] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:43:37.036 [INFO] [Thread-193480] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] client lang: <none>
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] server lang: <none>
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] kex follows: False
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] Compression: none
2025-11-24T16:43:37.044 [DEBUG] [Thread-193480] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:43:37.101 [DEBUG] [Thread-193480] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:43:37.101 [DEBUG] [Thread-193480] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:43:37.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:43:37.102 [DEBUG] [Thread-193480] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:43:37.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:43:37.157 [DEBUG] [Thread-193480] [transport.py] [_log()] userauth is OK
2025-11-24T16:43:37.158 [DEBUG] [Thread-193480] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:43:37.158 [DEBUG] [Thread-193480] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:43:37.158 [DEBUG] [Thread-193480] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:43:37.158 [DEBUG] [Thread-193480] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:43:37.176 [INFO] [Thread-193480] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:43:37.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:43:37.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:43:37.989 [DEBUG] [Thread-193480] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:43:37.998 [DEBUG] [Thread-193480] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:43:38.037 [DEBUG] [Thread-193480] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:43:38.037 [DEBUG] [Thread-193480] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:43:38.045 [DEBUG] [Thread-193480] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:43:38.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:43:38.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-11-24T16:43:38.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-11-24T16:43:38.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:43:38.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:43:38.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:43:38.080 [DEBUG] [Thread-193480] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:43:45.476 [DEBUG] [Thread-193482 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:43:46.509 [DEBUG] [Thread-193483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:44:01.618 [DEBUG] [Thread-193484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:44:08.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:44:08.104 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:44:08.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-11-24T16:44:09.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 44, 2), 25.87, 17.49, 0.0, 26.48, 22.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:44:09.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:44:02
2025-11-24T16:44:09.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:44:09.356 [DEBUG] [Thread-193485] [transport.py] [_log()] starting thread (client mode): 0xd07020b0
2025-11-24T16:44:09.356 [DEBUG] [Thread-193485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:44:09.368 [DEBUG] [Thread-193485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:44:09.369 [INFO] [Thread-193485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:44:09.373 [DEBUG] [Thread-193485] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] client lang: <none>
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] server lang: <none>
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] kex follows: False
2025-11-24T16:44:09.374 [DEBUG] [Thread-193485] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:44:09.375 [DEBUG] [Thread-193485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:44:09.375 [DEBUG] [Thread-193485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:44:09.375 [DEBUG] [Thread-193485] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:44:09.375 [DEBUG] [Thread-193485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:44:09.375 [DEBUG] [Thread-193485] [transport.py] [_log()] Compression: none
2025-11-24T16:44:09.375 [DEBUG] [Thread-193485] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:44:09.422 [DEBUG] [Thread-193485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:44:09.425 [DEBUG] [Thread-193485] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:44:09.427 [DEBUG] [Thread-193485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:44:09.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:44:09.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:44:09.432 [DEBUG] [Thread-193485] [transport.py] [_log()] userauth is OK
2025-11-24T16:44:09.432 [DEBUG] [Thread-193485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:44:09.432 [DEBUG] [Thread-193485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:44:09.432 [DEBUG] [Thread-193485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:44:09.433 [DEBUG] [Thread-193485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:44:09.464 [INFO] [Thread-193485] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:44:09.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:44:10.036 [DEBUG] [Thread-193485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:44:10.036 [DEBUG] [Thread-193485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:44:10.037 [DEBUG] [Thread-193485] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:44:10.077 [DEBUG] [Thread-193485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:44:10.077 [DEBUG] [Thread-193485] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:44:10.080 [DEBUG] [Thread-193485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:44:10.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:44:10.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:44:10.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:44:10.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:44:10.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:44:10.097 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:44:10.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:44:10.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:44:10.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:44:10.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.613935 -999.00  +21.80  22.83     23   +0.20 1 1 1 1 1   887    0 22.48 22.45 ----- 23.2 22.8 186.6 40.1 26.2 -30.0 25.7 -29.4 27.5 -28.2 27.9 -30.8
2025-11-24T16:44:10.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:44:10.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:44:10.099 [DEBUG] [Thread-193485] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:44:10.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.613935
2025-11-24T16:44:10.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:44:10.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:44:10.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:44:10.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:44:10.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:44:10.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:44:02', tmtdew=25.87, humidity=17.49, cloud=0.0, wind=26.48, temperature=22.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:44:03.984', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:44:10.199 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:44:10.211 [DEBUG] [Thread-193488] [transport.py] [_log()] starting thread (client mode): 0xd07032b0
2025-11-24T16:44:10.211 [DEBUG] [Thread-193488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:44:10.226 [DEBUG] [Thread-193488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:44:10.226 [INFO] [Thread-193488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:44:10.233 [DEBUG] [Thread-193488] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:44:10.233 [DEBUG] [Thread-193488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:44:10.233 [DEBUG] [Thread-193488] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] client lang: <none>
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] server lang: <none>
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] kex follows: False
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] Compression: none
2025-11-24T16:44:10.234 [DEBUG] [Thread-193488] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:44:10.291 [DEBUG] [Thread-193488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:44:10.291 [DEBUG] [Thread-193488] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:44:10.291 [DEBUG] [Thread-193488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:44:10.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:44:10.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:44:10.349 [DEBUG] [Thread-193488] [transport.py] [_log()] userauth is OK
2025-11-24T16:44:10.349 [DEBUG] [Thread-193488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:44:10.349 [DEBUG] [Thread-193488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:44:10.349 [DEBUG] [Thread-193488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:44:10.349 [DEBUG] [Thread-193488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:44:10.363 [INFO] [Thread-193488] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:44:10.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:44:10.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:44:11.216 [DEBUG] [Thread-193488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:44:11.217 [DEBUG] [Thread-193488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:44:11.264 [DEBUG] [Thread-193488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:44:11.264 [DEBUG] [Thread-193488] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:44:11.272 [DEBUG] [Thread-193488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:44:11.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:44:11.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-11-24T16:44:11.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-11-24T16:44:11.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:44:11.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:44:11.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:44:11.305 [DEBUG] [Thread-193488] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:44:16.702 [DEBUG] [Thread-193490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:44:31.802 [DEBUG] [Thread-193491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:44:41.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:44:41.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:44:41.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-11-24T16:44:42.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 44, 35), 25.24, 17.97, 0.0, 31.71, 21.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:44:42.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:44:35
2025-11-24T16:44:42.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:44:42.416 [DEBUG] [Thread-193492] [transport.py] [_log()] starting thread (client mode): 0xd07039d0
2025-11-24T16:44:42.416 [DEBUG] [Thread-193492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:44:42.437 [DEBUG] [Thread-193492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:44:42.437 [INFO] [Thread-193492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] client lang: <none>
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] server lang: <none>
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] kex follows: False
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:44:42.439 [DEBUG] [Thread-193492] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:44:42.440 [DEBUG] [Thread-193492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:44:42.440 [DEBUG] [Thread-193492] [transport.py] [_log()] Compression: none
2025-11-24T16:44:42.440 [DEBUG] [Thread-193492] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:44:42.463 [DEBUG] [Thread-193492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:44:42.464 [DEBUG] [Thread-193492] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:44:42.466 [DEBUG] [Thread-193492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:44:42.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:44:42.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:44:42.469 [DEBUG] [Thread-193492] [transport.py] [_log()] userauth is OK
2025-11-24T16:44:42.470 [DEBUG] [Thread-193492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:44:42.470 [DEBUG] [Thread-193492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:44:42.470 [DEBUG] [Thread-193492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:44:42.470 [DEBUG] [Thread-193492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:44:42.497 [INFO] [Thread-193492] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:44:42.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:44:43.074 [DEBUG] [Thread-193492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:44:43.075 [DEBUG] [Thread-193492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:44:43.075 [DEBUG] [Thread-193492] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:44:43.115 [DEBUG] [Thread-193492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:44:43.115 [DEBUG] [Thread-193492] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:44:43.117 [DEBUG] [Thread-193492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:44:43.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:44:43.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:44:43.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:44:43.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:44:43.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:44:43.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:44:43.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:44:43.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:44:43.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:44:43.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.614282 -999.00  +21.80  26.86     23   +0.20 1 1 1 1 1   887    0 22.43 24.17 ----- 29.0 26.9 183.6 34.2 26.1 -29.6 25.6 -32.3 27.4 -29.7 27.9 -30.3
2025-11-24T16:44:43.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:44:43.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:44:43.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.614282
2025-11-24T16:44:43.144 [DEBUG] [Thread-193492] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:44:43.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:44:43.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:44:43.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:44:43.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:44:43.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:44:43.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:44:35', tmtdew=25.24, humidity=17.97, cloud=0.0, wind=31.71, temperature=21.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:44:33.965', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:44:43.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:44:43.266 [DEBUG] [Thread-193495] [transport.py] [_log()] starting thread (client mode): 0xd3163fd0
2025-11-24T16:44:43.266 [DEBUG] [Thread-193495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:44:43.284 [DEBUG] [Thread-193495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:44:43.285 [INFO] [Thread-193495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:44:43.292 [DEBUG] [Thread-193495] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:44:43.292 [DEBUG] [Thread-193495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:44:43.292 [DEBUG] [Thread-193495] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:44:43.292 [DEBUG] [Thread-193495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] client lang: <none>
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] server lang: <none>
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] kex follows: False
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] Compression: none
2025-11-24T16:44:43.293 [DEBUG] [Thread-193495] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:44:43.348 [DEBUG] [Thread-193495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:44:43.348 [DEBUG] [Thread-193495] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:44:43.348 [DEBUG] [Thread-193495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:44:43.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:44:43.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:44:43.405 [DEBUG] [Thread-193495] [transport.py] [_log()] userauth is OK
2025-11-24T16:44:43.405 [DEBUG] [Thread-193495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:44:43.405 [DEBUG] [Thread-193495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:44:43.405 [DEBUG] [Thread-193495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:44:43.405 [DEBUG] [Thread-193495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:44:43.421 [INFO] [Thread-193495] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:44:43.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:44:43.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:44:44.237 [DEBUG] [Thread-193495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:44:44.238 [DEBUG] [Thread-193495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:44:44.285 [DEBUG] [Thread-193495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:44:44.285 [DEBUG] [Thread-193495] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:44:44.293 [DEBUG] [Thread-193495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:44:44.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:44:44.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-11-24T16:44:44.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-11-24T16:44:44.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:44:44.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:44:44.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:44:44.327 [DEBUG] [Thread-193495] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:44:45.785 [DEBUG] [Thread-193497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:44:46.844 [DEBUG] [Thread-193498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:45:01.943 [DEBUG] [Thread-193499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:45:14.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:45:14.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:45:14.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-11-24T16:45:15.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 45, 7), 25.22, 17.99, 0.0, 28.69, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:45:15.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:45:07
2025-11-24T16:45:15.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:45:15.419 [DEBUG] [Thread-193500] [transport.py] [_log()] starting thread (client mode): 0xd07ab9a0
2025-11-24T16:45:15.420 [DEBUG] [Thread-193500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:45:15.435 [DEBUG] [Thread-193500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:45:15.435 [INFO] [Thread-193500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] client lang: <none>
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] server lang: <none>
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] kex follows: False
2025-11-24T16:45:15.439 [DEBUG] [Thread-193500] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:45:15.440 [DEBUG] [Thread-193500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:45:15.440 [DEBUG] [Thread-193500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:45:15.440 [DEBUG] [Thread-193500] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:45:15.440 [DEBUG] [Thread-193500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:45:15.440 [DEBUG] [Thread-193500] [transport.py] [_log()] Compression: none
2025-11-24T16:45:15.440 [DEBUG] [Thread-193500] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:45:15.458 [DEBUG] [Thread-193500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:45:15.461 [DEBUG] [Thread-193500] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:45:15.462 [DEBUG] [Thread-193500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:45:15.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:45:15.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:45:15.465 [DEBUG] [Thread-193500] [transport.py] [_log()] userauth is OK
2025-11-24T16:45:15.465 [DEBUG] [Thread-193500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:45:15.465 [DEBUG] [Thread-193500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:45:15.465 [DEBUG] [Thread-193500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:45:15.465 [DEBUG] [Thread-193500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:45:15.477 [INFO] [Thread-193500] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:45:15.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:45:16.022 [DEBUG] [Thread-193500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:45:16.022 [DEBUG] [Thread-193500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:45:16.024 [DEBUG] [Thread-193500] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:45:16.064 [DEBUG] [Thread-193500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:45:16.064 [DEBUG] [Thread-193500] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:45:16.068 [DEBUG] [Thread-193500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:45:16.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:45:16.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:45:16.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:45:16.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:45:16.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:45:16.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:45:16.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:45:16.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:45:16.099 [DEBUG] [Thread-193500] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:45:16.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:45:16.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.614635 -999.00  +21.90  19.12     23   +0.30 1 1 1 1 1   887    0 21.81 26.12 ----- 16.9 19.1 187.0 32.4 25.9 -28.9 25.7 -31.1 27.5 -26.2 27.9 -27.7
2025-11-24T16:45:16.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:45:16.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:45:16.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.614635
2025-11-24T16:45:16.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:45:16.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:45:16.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:45:16.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:45:16.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:45:16.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:45:07', tmtdew=25.22, humidity=17.99, cloud=0.0, wind=28.69, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:45:04.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:45:16.199 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:45:16.216 [DEBUG] [Thread-193503] [transport.py] [_log()] starting thread (client mode): 0xd31b0af0
2025-11-24T16:45:16.216 [DEBUG] [Thread-193503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:45:16.230 [DEBUG] [Thread-193503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:45:16.230 [INFO] [Thread-193503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] client lang: <none>
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] server lang: <none>
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] kex follows: False
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] Compression: none
2025-11-24T16:45:16.238 [DEBUG] [Thread-193503] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:45:16.298 [DEBUG] [Thread-193503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:45:16.298 [DEBUG] [Thread-193503] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:45:16.299 [DEBUG] [Thread-193503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:45:16.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:45:16.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:45:16.353 [DEBUG] [Thread-193503] [transport.py] [_log()] userauth is OK
2025-11-24T16:45:16.354 [DEBUG] [Thread-193503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:45:16.354 [DEBUG] [Thread-193503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:45:16.354 [DEBUG] [Thread-193503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:45:16.354 [DEBUG] [Thread-193503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:45:16.378 [INFO] [Thread-193503] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:45:16.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:45:16.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:45:17.005 [DEBUG] [Thread-193505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:45:17.243 [DEBUG] [Thread-193503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:45:17.243 [DEBUG] [Thread-193503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:45:17.294 [DEBUG] [Thread-193503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:45:17.294 [DEBUG] [Thread-193503] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:45:17.302 [DEBUG] [Thread-193503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:45:17.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:45:17.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-11-24T16:45:17.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-11-24T16:45:17.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:45:17.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:45:17.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:45:17.345 [DEBUG] [Thread-193503] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:45:32.107 [DEBUG] [Thread-193506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:45:46.088 [DEBUG] [Thread-193507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:45:47.141 [DEBUG] [Thread-193508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:45:47.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:45:47.368 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:45:47.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-11-24T16:45:48.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 45, 40), 25.28, 18.02, 0.0, 32.98, 21.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:45:48.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:45:40
2025-11-24T16:45:48.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:45:48.603 [DEBUG] [Thread-193509] [transport.py] [_log()] starting thread (client mode): 0xd3162110
2025-11-24T16:45:48.603 [DEBUG] [Thread-193509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:45:48.618 [DEBUG] [Thread-193509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:45:48.618 [INFO] [Thread-193509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] client lang: <none>
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] server lang: <none>
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] kex follows: False
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] Compression: none
2025-11-24T16:45:48.620 [DEBUG] [Thread-193509] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:45:48.628 [DEBUG] [Thread-193509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:45:48.628 [DEBUG] [Thread-193509] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:45:48.628 [DEBUG] [Thread-193509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:45:48.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:45:48.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:45:48.629 [DEBUG] [Thread-193509] [transport.py] [_log()] userauth is OK
2025-11-24T16:45:48.629 [DEBUG] [Thread-193509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:45:48.629 [DEBUG] [Thread-193509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:45:48.629 [DEBUG] [Thread-193509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:45:48.629 [DEBUG] [Thread-193509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:45:48.637 [INFO] [Thread-193509] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:45:48.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:45:49.193 [DEBUG] [Thread-193509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:45:49.193 [DEBUG] [Thread-193509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:45:49.193 [DEBUG] [Thread-193509] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:45:49.234 [DEBUG] [Thread-193509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:45:49.234 [DEBUG] [Thread-193509] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:45:49.236 [DEBUG] [Thread-193509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:45:49.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:45:49.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:45:49.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:45:49.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:45:49.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:45:49.252 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:45:49.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:45:49.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:45:49.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:45:49.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.614977 -999.00  +22.10  18.84     23   +0.30 1 1 1 1 1   887    0 22.44 30.57 ----- 19.6 18.8 203.1 29.6 26.0 -29.0 25.9 -27.8 27.5 -27.3 28.1 -29.1
2025-11-24T16:45:49.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:45:49.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:45:49.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.614977
2025-11-24T16:45:49.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:45:49.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:45:49.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:45:49.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:45:49.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:45:49.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:45:40', tmtdew=25.28, humidity=18.02, cloud=0.0, wind=32.98, temperature=21.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:45:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:45:49.253 [DEBUG] [Thread-193509] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:45:49.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:45:49.340 [DEBUG] [Thread-193512] [transport.py] [_log()] starting thread (client mode): 0xd0700460
2025-11-24T16:45:49.340 [DEBUG] [Thread-193512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:45:49.355 [DEBUG] [Thread-193512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:45:49.355 [INFO] [Thread-193512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] client lang: <none>
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] server lang: <none>
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] kex follows: False
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:45:49.362 [DEBUG] [Thread-193512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:45:49.363 [DEBUG] [Thread-193512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:45:49.363 [DEBUG] [Thread-193512] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:45:49.363 [DEBUG] [Thread-193512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:45:49.363 [DEBUG] [Thread-193512] [transport.py] [_log()] Compression: none
2025-11-24T16:45:49.363 [DEBUG] [Thread-193512] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:45:49.420 [DEBUG] [Thread-193512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:45:49.420 [DEBUG] [Thread-193512] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:45:49.420 [DEBUG] [Thread-193512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:45:49.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:45:49.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:45:49.477 [DEBUG] [Thread-193512] [transport.py] [_log()] userauth is OK
2025-11-24T16:45:49.477 [DEBUG] [Thread-193512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:45:49.477 [DEBUG] [Thread-193512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:45:49.477 [DEBUG] [Thread-193512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:45:49.477 [DEBUG] [Thread-193512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:45:49.491 [INFO] [Thread-193512] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:45:49.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:45:49.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:45:50.352 [DEBUG] [Thread-193512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:45:50.352 [DEBUG] [Thread-193512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:45:50.400 [DEBUG] [Thread-193512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:45:50.400 [DEBUG] [Thread-193512] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:45:50.408 [DEBUG] [Thread-193512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:45:50.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:45:50.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-11-24T16:45:50.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-11-24T16:45:50.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:45:50.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:45:50.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:45:50.441 [DEBUG] [Thread-193512] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:46:02.172 [DEBUG] [Thread-193514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:46:17.236 [DEBUG] [Thread-193515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:46:20.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:46:20.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:46:20.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-11-24T16:46:21.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 46, 13), 25.39, 17.92, 0.0, 32.91, 21.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:46:21.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:46:13
2025-11-24T16:46:21.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:46:21.707 [DEBUG] [Thread-193516] [transport.py] [_log()] starting thread (client mode): 0xd07011e0
2025-11-24T16:46:21.708 [DEBUG] [Thread-193516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:46:21.711 [DEBUG] [Thread-193516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:46:21.711 [INFO] [Thread-193516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:46:21.714 [DEBUG] [Thread-193516] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:46:21.714 [DEBUG] [Thread-193516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:46:21.714 [DEBUG] [Thread-193516] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:46:21.714 [DEBUG] [Thread-193516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:46:21.715 [DEBUG] [Thread-193516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:46:21.715 [DEBUG] [Thread-193516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:46:21.715 [DEBUG] [Thread-193516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:46:21.715 [DEBUG] [Thread-193516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:46:21.715 [DEBUG] [Thread-193516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:46:21.715 [DEBUG] [Thread-193516] [transport.py] [_log()] client lang: <none>
2025-11-24T16:46:21.715 [DEBUG] [Thread-193516] [transport.py] [_log()] server lang: <none>
2025-11-24T16:46:21.715 [DEBUG] [Thread-193516] [transport.py] [_log()] kex follows: False
2025-11-24T16:46:21.715 [DEBUG] [Thread-193516] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:46:21.715 [DEBUG] [Thread-193516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:46:21.716 [DEBUG] [Thread-193516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:46:21.716 [DEBUG] [Thread-193516] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:46:21.716 [DEBUG] [Thread-193516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:46:21.716 [DEBUG] [Thread-193516] [transport.py] [_log()] Compression: none
2025-11-24T16:46:21.716 [DEBUG] [Thread-193516] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:46:21.744 [DEBUG] [Thread-193516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:46:21.748 [DEBUG] [Thread-193516] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:46:21.750 [DEBUG] [Thread-193516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:46:21.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:46:21.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:46:21.755 [DEBUG] [Thread-193516] [transport.py] [_log()] userauth is OK
2025-11-24T16:46:21.756 [DEBUG] [Thread-193516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:46:21.756 [DEBUG] [Thread-193516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:46:21.756 [DEBUG] [Thread-193516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:46:21.756 [DEBUG] [Thread-193516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:46:21.781 [INFO] [Thread-193516] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:46:21.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:46:22.364 [DEBUG] [Thread-193516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:46:22.364 [DEBUG] [Thread-193516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:46:22.366 [DEBUG] [Thread-193516] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:46:22.405 [DEBUG] [Thread-193516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:46:22.405 [DEBUG] [Thread-193516] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:46:22.407 [DEBUG] [Thread-193516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:46:22.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:46:22.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:46:22.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:46:22.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:46:22.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:46:22.423 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:46:22.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:46:22.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:46:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:46:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.615324 -999.00  +22.30  19.43     23   +0.30 1 1 1 1 1   887    0 22.65 33.24 ----- 16.4 19.4 200.6 23.1 26.1 -28.5 25.9 -27.6 27.7 -27.6 28.1 -28.2
2025-11-24T16:46:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:46:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:46:22.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.615324
2025-11-24T16:46:22.430 [DEBUG] [Thread-193516] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:46:22.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:46:22.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:46:22.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:46:22.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:46:22.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:46:22.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:46:13', tmtdew=25.39, humidity=17.92, cloud=0.0, wind=32.91, temperature=21.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:46:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:46:22.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:46:22.532 [DEBUG] [Thread-193519] [transport.py] [_log()] starting thread (client mode): 0xd31374c0
2025-11-24T16:46:22.533 [DEBUG] [Thread-193519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:46:22.546 [DEBUG] [Thread-193519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:46:22.547 [INFO] [Thread-193519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:46:22.554 [DEBUG] [Thread-193519] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:46:22.554 [DEBUG] [Thread-193519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:46:22.554 [DEBUG] [Thread-193519] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:46:22.554 [DEBUG] [Thread-193519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:46:22.554 [DEBUG] [Thread-193519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:46:22.554 [DEBUG] [Thread-193519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:46:22.554 [DEBUG] [Thread-193519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:46:22.554 [DEBUG] [Thread-193519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:46:22.554 [DEBUG] [Thread-193519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:46:22.554 [DEBUG] [Thread-193519] [transport.py] [_log()] client lang: <none>
2025-11-24T16:46:22.555 [DEBUG] [Thread-193519] [transport.py] [_log()] server lang: <none>
2025-11-24T16:46:22.555 [DEBUG] [Thread-193519] [transport.py] [_log()] kex follows: False
2025-11-24T16:46:22.555 [DEBUG] [Thread-193519] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:46:22.555 [DEBUG] [Thread-193519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:46:22.555 [DEBUG] [Thread-193519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:46:22.555 [DEBUG] [Thread-193519] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:46:22.555 [DEBUG] [Thread-193519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:46:22.555 [DEBUG] [Thread-193519] [transport.py] [_log()] Compression: none
2025-11-24T16:46:22.555 [DEBUG] [Thread-193519] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:46:22.614 [DEBUG] [Thread-193519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:46:22.614 [DEBUG] [Thread-193519] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:46:22.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:46:22.615 [DEBUG] [Thread-193519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:46:22.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:46:22.670 [DEBUG] [Thread-193519] [transport.py] [_log()] userauth is OK
2025-11-24T16:46:22.670 [DEBUG] [Thread-193519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:46:22.670 [DEBUG] [Thread-193519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:46:22.670 [DEBUG] [Thread-193519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:46:22.670 [DEBUG] [Thread-193519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:46:22.689 [INFO] [Thread-193519] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:46:22.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:46:22.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:46:23.533 [DEBUG] [Thread-193519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:46:23.534 [DEBUG] [Thread-193519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:46:23.582 [DEBUG] [Thread-193519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:46:23.582 [DEBUG] [Thread-193519] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:46:23.591 [DEBUG] [Thread-193519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:46:23.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:46:23.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-11-24T16:46:23.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-11-24T16:46:23.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:46:23.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:46:23.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:46:23.639 [DEBUG] [Thread-193519] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:46:32.264 [DEBUG] [Thread-193521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:46:46.449 [DEBUG] [Thread-193522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:46:47.345 [DEBUG] [Thread-193523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:46:53.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:46:53.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:46:53.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-11-24T16:46:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 46, 46), 25.48, 17.81, 0.0, 27.26, 22.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:46:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:46:46
2025-11-24T16:46:54.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:46:54.800 [DEBUG] [Thread-193524] [transport.py] [_log()] starting thread (client mode): 0xd07a9510
2025-11-24T16:46:54.800 [DEBUG] [Thread-193524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:46:54.818 [DEBUG] [Thread-193524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:46:54.818 [INFO] [Thread-193524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:46:54.820 [DEBUG] [Thread-193524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:46:54.820 [DEBUG] [Thread-193524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:46:54.820 [DEBUG] [Thread-193524] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:46:54.820 [DEBUG] [Thread-193524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:46:54.820 [DEBUG] [Thread-193524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] client lang: <none>
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] server lang: <none>
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] kex follows: False
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] Compression: none
2025-11-24T16:46:54.821 [DEBUG] [Thread-193524] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:46:54.839 [DEBUG] [Thread-193524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:46:54.840 [DEBUG] [Thread-193524] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:46:54.841 [DEBUG] [Thread-193524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:46:54.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:46:54.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:46:54.845 [DEBUG] [Thread-193524] [transport.py] [_log()] userauth is OK
2025-11-24T16:46:54.845 [DEBUG] [Thread-193524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:46:54.845 [DEBUG] [Thread-193524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:46:54.845 [DEBUG] [Thread-193524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:46:54.845 [DEBUG] [Thread-193524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:46:54.870 [INFO] [Thread-193524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:46:54.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:46:55.488 [DEBUG] [Thread-193524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:46:55.488 [DEBUG] [Thread-193524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:46:55.488 [DEBUG] [Thread-193524] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:46:55.528 [DEBUG] [Thread-193524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:46:55.528 [DEBUG] [Thread-193524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:46:55.531 [DEBUG] [Thread-193524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:46:55.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:46:55.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:46:55.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:46:55.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:46:55.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:46:55.556 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:46:55.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:46:55.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:46:55.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:46:55.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.615671 -999.00  +22.30  13.47     23   +0.30 1 1 1 1 1   887    0 22.33 37.66 ----- 7.1 13.5 193.0 25.3 26.1 -29.1 26.0 -27.5 27.8 -26.2 28.2 -27.8
2025-11-24T16:46:55.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:46:55.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:46:55.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.615671
2025-11-24T16:46:55.564 [DEBUG] [Thread-193524] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:46:55.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:46:55.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:46:55.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:46:55.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:46:55.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:46:55.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:46:46', tmtdew=25.48, humidity=17.81, cloud=0.0, wind=27.26, temperature=22.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:46:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:46:55.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:46:55.668 [DEBUG] [Thread-193527] [transport.py] [_log()] starting thread (client mode): 0xd31b3220
2025-11-24T16:46:55.669 [DEBUG] [Thread-193527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:46:55.684 [DEBUG] [Thread-193527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:46:55.684 [INFO] [Thread-193527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] client lang: <none>
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] server lang: <none>
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] kex follows: False
2025-11-24T16:46:55.694 [DEBUG] [Thread-193527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:46:55.695 [DEBUG] [Thread-193527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:46:55.695 [DEBUG] [Thread-193527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:46:55.695 [DEBUG] [Thread-193527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:46:55.695 [DEBUG] [Thread-193527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:46:55.695 [DEBUG] [Thread-193527] [transport.py] [_log()] Compression: none
2025-11-24T16:46:55.695 [DEBUG] [Thread-193527] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:46:55.758 [DEBUG] [Thread-193527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:46:55.759 [DEBUG] [Thread-193527] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:46:55.759 [DEBUG] [Thread-193527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:46:55.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:46:55.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:46:55.814 [DEBUG] [Thread-193527] [transport.py] [_log()] userauth is OK
2025-11-24T16:46:55.815 [DEBUG] [Thread-193527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:46:55.815 [DEBUG] [Thread-193527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:46:55.815 [DEBUG] [Thread-193527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:46:55.815 [DEBUG] [Thread-193527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:46:55.833 [INFO] [Thread-193527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:46:55.834 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:46:55.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:46:56.669 [DEBUG] [Thread-193527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:46:56.669 [DEBUG] [Thread-193527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:46:56.717 [DEBUG] [Thread-193527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:46:56.717 [DEBUG] [Thread-193527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:46:56.725 [DEBUG] [Thread-193527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:46:56.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:46:56.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-11-24T16:46:56.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-11-24T16:46:56.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:46:56.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:46:56.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:46:56.758 [DEBUG] [Thread-193527] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:47:02.373 [DEBUG] [Thread-193529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:47:17.421 [DEBUG] [Thread-193530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:47:26.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:47:26.786 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:47:26.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-11-24T16:47:27.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 47, 18), 25.43, 17.86, 0.0, 26.27, 21.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:47:27.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:47:18
2025-11-24T16:47:27.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:47:27.949 [DEBUG] [Thread-193531] [transport.py] [_log()] starting thread (client mode): 0xd3161630
2025-11-24T16:47:27.950 [DEBUG] [Thread-193531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:47:27.963 [DEBUG] [Thread-193531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:47:27.963 [INFO] [Thread-193531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:47:27.969 [DEBUG] [Thread-193531] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:47:27.969 [DEBUG] [Thread-193531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:47:27.969 [DEBUG] [Thread-193531] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:47:27.969 [DEBUG] [Thread-193531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:47:27.969 [DEBUG] [Thread-193531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:47:27.970 [DEBUG] [Thread-193531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:47:27.970 [DEBUG] [Thread-193531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:47:27.970 [DEBUG] [Thread-193531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:47:27.970 [DEBUG] [Thread-193531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:47:27.970 [DEBUG] [Thread-193531] [transport.py] [_log()] client lang: <none>
2025-11-24T16:47:27.970 [DEBUG] [Thread-193531] [transport.py] [_log()] server lang: <none>
2025-11-24T16:47:27.970 [DEBUG] [Thread-193531] [transport.py] [_log()] kex follows: False
2025-11-24T16:47:27.970 [DEBUG] [Thread-193531] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:47:27.971 [DEBUG] [Thread-193531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:47:27.971 [DEBUG] [Thread-193531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:47:27.971 [DEBUG] [Thread-193531] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:47:27.972 [DEBUG] [Thread-193531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:47:27.972 [DEBUG] [Thread-193531] [transport.py] [_log()] Compression: none
2025-11-24T16:47:27.972 [DEBUG] [Thread-193531] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:47:28.007 [DEBUG] [Thread-193531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:47:28.012 [DEBUG] [Thread-193531] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:47:28.014 [DEBUG] [Thread-193531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:47:28.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:47:28.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:47:28.019 [DEBUG] [Thread-193531] [transport.py] [_log()] userauth is OK
2025-11-24T16:47:28.019 [DEBUG] [Thread-193531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:47:28.020 [DEBUG] [Thread-193531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:47:28.020 [DEBUG] [Thread-193531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:47:28.020 [DEBUG] [Thread-193531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:47:28.046 [INFO] [Thread-193531] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:47:28.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:47:28.694 [DEBUG] [Thread-193531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:47:28.695 [DEBUG] [Thread-193531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:47:28.706 [DEBUG] [Thread-193531] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:47:28.736 [DEBUG] [Thread-193531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:47:28.736 [DEBUG] [Thread-193531] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:47:28.739 [DEBUG] [Thread-193531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:47:28.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:47:28.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:47:28.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:47:28.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:47:28.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:47:28.761 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:47:28.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:47:28.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:47:28.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:47:28.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.616019 -999.00  +22.50  17.29     22   +0.20 1 1 1 1 1   887    0 22.99 36.63 ----- 14.6 17.3 182.2 19.4 26.2 -28.6 26.1 -28.1 27.9 -25.4 28.3 -27.9
2025-11-24T16:47:28.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:47:28.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:47:28.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.616019
2025-11-24T16:47:28.769 [DEBUG] [Thread-193531] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:47:28.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:47:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:47:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:47:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:47:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:47:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:47:18', tmtdew=25.43, humidity=17.86, cloud=0.0, wind=26.27, temperature=21.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:47:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:47: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-11-24T16:47:28.898 [DEBUG] [Thread-193534] [transport.py] [_log()] starting thread (client mode): 0xd3163a00
2025-11-24T16:47:28.898 [DEBUG] [Thread-193534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:47:28.912 [DEBUG] [Thread-193534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:47:28.913 [INFO] [Thread-193534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] client lang: <none>
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] server lang: <none>
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] kex follows: False
2025-11-24T16:47:28.920 [DEBUG] [Thread-193534] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:47:28.921 [DEBUG] [Thread-193534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:47:28.921 [DEBUG] [Thread-193534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:47:28.921 [DEBUG] [Thread-193534] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:47:28.921 [DEBUG] [Thread-193534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:47:28.921 [DEBUG] [Thread-193534] [transport.py] [_log()] Compression: none
2025-11-24T16:47:28.921 [DEBUG] [Thread-193534] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:47:28.978 [DEBUG] [Thread-193534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:47:28.979 [DEBUG] [Thread-193534] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:47:28.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:47:28.980 [DEBUG] [Thread-193534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:47:28.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:47:29.039 [DEBUG] [Thread-193534] [transport.py] [_log()] userauth is OK
2025-11-24T16:47:29.039 [DEBUG] [Thread-193534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:47:29.039 [DEBUG] [Thread-193534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:47:29.039 [DEBUG] [Thread-193534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:47:29.039 [DEBUG] [Thread-193534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:47:29.057 [INFO] [Thread-193534] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:47:29.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:47:29.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:47:29.894 [DEBUG] [Thread-193534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:47:29.895 [DEBUG] [Thread-193534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:47:29.943 [DEBUG] [Thread-193534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:47:29.943 [DEBUG] [Thread-193534] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:47:29.951 [DEBUG] [Thread-193534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:47:29.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:47:29.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-11-24T16:47:29.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:47:29.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:47:29.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:47:29.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:47:29.993 [DEBUG] [Thread-193534] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:47:32.456 [DEBUG] [Thread-193536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:47:46.689 [DEBUG] [Thread-193537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:47:47.559 [DEBUG] [Thread-193538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:48:00.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:48:00.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:48:00.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-11-24T16:48:00.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 47, 51), 25.48, 18.02, 0.0, 23.59, 21.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:48:00.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:47:51
2025-11-24T16:48:01.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:48:01.175 [DEBUG] [Thread-193539] [transport.py] [_log()] starting thread (client mode): 0xd07ab9a0
2025-11-24T16:48:01.176 [DEBUG] [Thread-193539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:48:01.180 [DEBUG] [Thread-193539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:48:01.181 [INFO] [Thread-193539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] client lang: <none>
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] server lang: <none>
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] kex follows: False
2025-11-24T16:48:01.184 [DEBUG] [Thread-193539] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:48:01.185 [DEBUG] [Thread-193539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:48:01.185 [DEBUG] [Thread-193539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:48:01.185 [DEBUG] [Thread-193539] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:48:01.185 [DEBUG] [Thread-193539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:48:01.185 [DEBUG] [Thread-193539] [transport.py] [_log()] Compression: none
2025-11-24T16:48:01.185 [DEBUG] [Thread-193539] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:48:01.205 [DEBUG] [Thread-193539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:48:01.209 [DEBUG] [Thread-193539] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:48:01.211 [DEBUG] [Thread-193539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:48:01.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:48:01.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:48:01.216 [DEBUG] [Thread-193539] [transport.py] [_log()] userauth is OK
2025-11-24T16:48:01.216 [DEBUG] [Thread-193539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:48:01.216 [DEBUG] [Thread-193539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:48:01.216 [DEBUG] [Thread-193539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:48:01.216 [DEBUG] [Thread-193539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:48:01.236 [INFO] [Thread-193539] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:48:01.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:48:01.838 [DEBUG] [Thread-193539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:48:01.838 [DEBUG] [Thread-193539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:48:01.848 [DEBUG] [Thread-193539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:48:01.879 [DEBUG] [Thread-193539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:48:01.879 [DEBUG] [Thread-193539] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:48:01.882 [DEBUG] [Thread-193539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:48:01.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:48:01.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:48:01.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:48:01.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:48:01.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:48:01.911 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:48:01.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:48:01.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:48:01.914 [DEBUG] [Thread-193539] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:48:01.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:48:01.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.616366 -999.00  +22.60  22.29     22   +0.30 1 1 1 1 1   887    0 22.34 41.68 ----- 23.0 22.3 183.8 24.3 26.4 -28.2 26.1 -30.3 27.9 -27.7 28.3 -29.0
2025-11-24T16:48:01.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:48:01.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:48:01.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.616366
2025-11-24T16:48:01.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:48:01.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:48:01.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:48:01.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:48:01.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:48:01.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:47:51', tmtdew=25.48, humidity=18.02, cloud=0.0, wind=23.59, temperature=21.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:47:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:48:02.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:48:02.039 [DEBUG] [Thread-193542] [transport.py] [_log()] starting thread (client mode): 0xd31612d0
2025-11-24T16:48:02.040 [DEBUG] [Thread-193542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:48:02.055 [DEBUG] [Thread-193542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:48:02.055 [INFO] [Thread-193542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:48:02.062 [DEBUG] [Thread-193542] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:48:02.062 [DEBUG] [Thread-193542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:48:02.062 [DEBUG] [Thread-193542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:48:02.062 [DEBUG] [Thread-193542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:48:02.062 [DEBUG] [Thread-193542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:48:02.062 [DEBUG] [Thread-193542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:48:02.062 [DEBUG] [Thread-193542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:48:02.062 [DEBUG] [Thread-193542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] client lang: <none>
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] server lang: <none>
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] kex follows: False
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] Compression: none
2025-11-24T16:48:02.063 [DEBUG] [Thread-193542] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:48:02.122 [DEBUG] [Thread-193542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:48:02.123 [DEBUG] [Thread-193542] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:48:02.123 [DEBUG] [Thread-193542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:48:02.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:48:02.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:48:02.178 [DEBUG] [Thread-193542] [transport.py] [_log()] userauth is OK
2025-11-24T16:48:02.178 [DEBUG] [Thread-193542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:48:02.178 [DEBUG] [Thread-193542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:48:02.178 [DEBUG] [Thread-193542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:48:02.178 [DEBUG] [Thread-193542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:48:02.197 [INFO] [Thread-193542] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:48:02.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:48:02.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:48:02.589 [DEBUG] [Thread-193544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:48:03.056 [DEBUG] [Thread-193542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:48:03.056 [DEBUG] [Thread-193542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:48:03.105 [DEBUG] [Thread-193542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:48:03.105 [DEBUG] [Thread-193542] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:48:03.113 [DEBUG] [Thread-193542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:48:03.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:48:03.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')
2025-11-24T16:48:03.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:48:03.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:48:03.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:48:03.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:48:03.159 [DEBUG] [Thread-193542] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:48:17.660 [DEBUG] [Thread-193545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:48:32.692 [DEBUG] [Thread-193546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:48:33.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:48:33.185 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:48:33.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-11-24T16:48:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 48, 24), 25.31, 18.22, 0.0, 22.88, 21.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:48:33.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:48:24
2025-11-24T16:48:34.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:48:34.301 [DEBUG] [Thread-193547] [transport.py] [_log()] starting thread (client mode): 0xd3134400
2025-11-24T16:48:34.302 [DEBUG] [Thread-193547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:48:34.319 [DEBUG] [Thread-193547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:48:34.319 [INFO] [Thread-193547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:48:34.322 [DEBUG] [Thread-193547] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:48:34.322 [DEBUG] [Thread-193547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:48:34.322 [DEBUG] [Thread-193547] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:48:34.322 [DEBUG] [Thread-193547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:48:34.322 [DEBUG] [Thread-193547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:48:34.323 [DEBUG] [Thread-193547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:48:34.323 [DEBUG] [Thread-193547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:48:34.323 [DEBUG] [Thread-193547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:48:34.323 [DEBUG] [Thread-193547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:48:34.323 [DEBUG] [Thread-193547] [transport.py] [_log()] client lang: <none>
2025-11-24T16:48:34.323 [DEBUG] [Thread-193547] [transport.py] [_log()] server lang: <none>
2025-11-24T16:48:34.323 [DEBUG] [Thread-193547] [transport.py] [_log()] kex follows: False
2025-11-24T16:48:34.323 [DEBUG] [Thread-193547] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:48:34.323 [DEBUG] [Thread-193547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:48:34.323 [DEBUG] [Thread-193547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:48:34.324 [DEBUG] [Thread-193547] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:48:34.324 [DEBUG] [Thread-193547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:48:34.324 [DEBUG] [Thread-193547] [transport.py] [_log()] Compression: none
2025-11-24T16:48:34.324 [DEBUG] [Thread-193547] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:48:34.352 [DEBUG] [Thread-193547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:48:34.357 [DEBUG] [Thread-193547] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:48:34.358 [DEBUG] [Thread-193547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:48:34.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:48:34.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:48:34.398 [DEBUG] [Thread-193547] [transport.py] [_log()] userauth is OK
2025-11-24T16:48:34.398 [DEBUG] [Thread-193547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:48:34.399 [DEBUG] [Thread-193547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:48:34.399 [DEBUG] [Thread-193547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:48:34.399 [DEBUG] [Thread-193547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:48:34.425 [INFO] [Thread-193547] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:48:34.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:48:34.973 [DEBUG] [Thread-193547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:48:34.973 [DEBUG] [Thread-193547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:48:34.982 [DEBUG] [Thread-193547] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:48:35.014 [DEBUG] [Thread-193547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:48:35.014 [DEBUG] [Thread-193547] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:48:35.016 [DEBUG] [Thread-193547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:48:35.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:48:35.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:48:35.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:48:35.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:48:35.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:48:35.040 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:48:35.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:48:35.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:48:35.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:48:35.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.616713 -999.00  +22.30  19.04     23   +0.20 1 1 1 1 1   887    0 22.73 45.86 ----- 21.5 19.0 182.8 27.8 26.3 -29.0 25.9 -29.5 27.8 -27.4 28.2 -30.1
2025-11-24T16:48:35.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:48:35.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:48:35.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.616713
2025-11-24T16:48:35.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:48:35.051 [DEBUG] [Thread-193547] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:48:35.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:48:35.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:48:35.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:48:35.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:48:35.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:48:24', tmtdew=25.31, humidity=18.22, cloud=0.0, wind=22.88, temperature=21.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:48:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:48:35.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:48:35.144 [DEBUG] [Thread-193550] [transport.py] [_log()] starting thread (client mode): 0xd3135de0
2025-11-24T16:48:35.144 [DEBUG] [Thread-193550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:48:35.158 [DEBUG] [Thread-193550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:48:35.158 [INFO] [Thread-193550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] client lang: <none>
2025-11-24T16:48:35.166 [DEBUG] [Thread-193550] [transport.py] [_log()] server lang: <none>
2025-11-24T16:48:35.167 [DEBUG] [Thread-193550] [transport.py] [_log()] kex follows: False
2025-11-24T16:48:35.167 [DEBUG] [Thread-193550] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:48:35.167 [DEBUG] [Thread-193550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:48:35.167 [DEBUG] [Thread-193550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:48:35.167 [DEBUG] [Thread-193550] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:48:35.167 [DEBUG] [Thread-193550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:48:35.167 [DEBUG] [Thread-193550] [transport.py] [_log()] Compression: none
2025-11-24T16:48:35.169 [DEBUG] [Thread-193550] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:48:35.226 [DEBUG] [Thread-193550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:48:35.228 [DEBUG] [Thread-193550] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:48:35.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:48:35.230 [DEBUG] [Thread-193550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:48:35.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:48:35.284 [DEBUG] [Thread-193550] [transport.py] [_log()] userauth is OK
2025-11-24T16:48:35.284 [DEBUG] [Thread-193550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:48:35.284 [DEBUG] [Thread-193550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:48:35.284 [DEBUG] [Thread-193550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:48:35.284 [DEBUG] [Thread-193550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:48:35.301 [INFO] [Thread-193550] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:48:35.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:48:35.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:48:36.136 [DEBUG] [Thread-193550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:48:36.136 [DEBUG] [Thread-193550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:48:36.183 [DEBUG] [Thread-193550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:48:36.184 [DEBUG] [Thread-193550] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:48:36.192 [DEBUG] [Thread-193550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:48:36.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:48:36.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-11-24T16:48:36.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-11-24T16:48:36.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:48:36.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:48:36.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:48:36.233 [DEBUG] [Thread-193550] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:48:46.960 [DEBUG] [Thread-193552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:48:47.730 [DEBUG] [Thread-193553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:49:02.818 [DEBUG] [Thread-193554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:49:06.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:49:06.256 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:49:06.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-11-24T16:49:06.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 48, 56), 25.43, 17.74, 0.0, 21.42, 21.91, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:49:06.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:48:56
2025-11-24T16:49:07.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:49:07.304 [DEBUG] [Thread-193555] [transport.py] [_log()] starting thread (client mode): 0xd3162200
2025-11-24T16:49:07.305 [DEBUG] [Thread-193555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:49:07.309 [DEBUG] [Thread-193555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:49:07.309 [INFO] [Thread-193555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:49:07.312 [DEBUG] [Thread-193555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:49:07.312 [DEBUG] [Thread-193555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:49:07.312 [DEBUG] [Thread-193555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:49:07.312 [DEBUG] [Thread-193555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:49:07.312 [DEBUG] [Thread-193555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:49:07.312 [DEBUG] [Thread-193555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] client lang: <none>
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] server lang: <none>
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] kex follows: False
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] Compression: none
2025-11-24T16:49:07.313 [DEBUG] [Thread-193555] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:49:07.322 [DEBUG] [Thread-193555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:49:07.323 [DEBUG] [Thread-193555] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:49:07.323 [DEBUG] [Thread-193555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:49:07.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:49:07.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:49:07.324 [DEBUG] [Thread-193555] [transport.py] [_log()] userauth is OK
2025-11-24T16:49:07.324 [DEBUG] [Thread-193555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:49:07.324 [DEBUG] [Thread-193555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:49:07.324 [DEBUG] [Thread-193555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:49:07.324 [DEBUG] [Thread-193555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:49:07.333 [INFO] [Thread-193555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:49:07.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:49:07.909 [DEBUG] [Thread-193555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:49:07.909 [DEBUG] [Thread-193555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:49:07.910 [DEBUG] [Thread-193555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:49:07.950 [DEBUG] [Thread-193555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:49:07.950 [DEBUG] [Thread-193555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:49:07.952 [DEBUG] [Thread-193555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:49:07.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:49:07.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:49:07.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:49:07.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:49:07.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:49:07.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:49:07.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:49:07.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:49:07.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:49:07.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.617060 -999.00  +22.10  18.71     23   +0.30 1 1 1 1 1   887    0 22.54 43.65 ----- 19.3 18.7 205.6 23.4 26.2 -28.9 26.0 -29.1 27.9 -27.7 28.3 -29.0
2025-11-24T16:49:07.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:49:07.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:49:07.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.617060
2025-11-24T16:49:07.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:49:07.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:49:07.971 [DEBUG] [Thread-193555] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:49:07.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:49:07.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:49:07.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:49:07.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:48:56', tmtdew=25.43, humidity=17.74, cloud=0.0, wind=21.42, temperature=21.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:48:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:49:08.046 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:49:08.057 [DEBUG] [Thread-193558] [transport.py] [_log()] starting thread (client mode): 0xd3136e30
2025-11-24T16:49:08.057 [DEBUG] [Thread-193558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:49:08.072 [DEBUG] [Thread-193558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:49:08.072 [INFO] [Thread-193558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] client lang: <none>
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] server lang: <none>
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] kex follows: False
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] Compression: none
2025-11-24T16:49:08.079 [DEBUG] [Thread-193558] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:49:08.140 [DEBUG] [Thread-193558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:49:08.141 [DEBUG] [Thread-193558] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:49:08.141 [DEBUG] [Thread-193558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:49:08.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:49:08.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:49:08.198 [DEBUG] [Thread-193558] [transport.py] [_log()] userauth is OK
2025-11-24T16:49:08.198 [DEBUG] [Thread-193558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:49:08.198 [DEBUG] [Thread-193558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:49:08.198 [DEBUG] [Thread-193558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:49:08.198 [DEBUG] [Thread-193558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:49:08.212 [INFO] [Thread-193558] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:49:08.213 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:49:08.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:49:09.047 [DEBUG] [Thread-193558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:49:09.047 [DEBUG] [Thread-193558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:49:09.095 [DEBUG] [Thread-193558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:49:09.095 [DEBUG] [Thread-193558] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:49:09.103 [DEBUG] [Thread-193558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:49:09.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:49:09.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-11-24T16:49:09.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-11-24T16:49:09.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:49:09.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:49:09.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:49:09.136 [DEBUG] [Thread-193558] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:49:17.844 [DEBUG] [Thread-193560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:49:32.923 [DEBUG] [Thread-193561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:49:39.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:49:39.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:49:39.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:49:40.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 49, 29), 25.42, 17.79, 0.0, 25.18, 22.03, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:49:40.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:49:29
2025-11-24T16:49:40.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:49:40.403 [DEBUG] [Thread-193562] [transport.py] [_log()] starting thread (client mode): 0xd07bf730
2025-11-24T16:49:40.404 [DEBUG] [Thread-193562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:49:40.422 [DEBUG] [Thread-193562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:49:40.422 [INFO] [Thread-193562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:49:40.426 [DEBUG] [Thread-193562] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:49:40.426 [DEBUG] [Thread-193562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:49:40.426 [DEBUG] [Thread-193562] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:49:40.426 [DEBUG] [Thread-193562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:49:40.426 [DEBUG] [Thread-193562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:49:40.426 [DEBUG] [Thread-193562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:49:40.427 [DEBUG] [Thread-193562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:49:40.427 [DEBUG] [Thread-193562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:49:40.427 [DEBUG] [Thread-193562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:49:40.427 [DEBUG] [Thread-193562] [transport.py] [_log()] client lang: <none>
2025-11-24T16:49:40.427 [DEBUG] [Thread-193562] [transport.py] [_log()] server lang: <none>
2025-11-24T16:49:40.427 [DEBUG] [Thread-193562] [transport.py] [_log()] kex follows: False
2025-11-24T16:49:40.427 [DEBUG] [Thread-193562] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:49:40.427 [DEBUG] [Thread-193562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:49:40.427 [DEBUG] [Thread-193562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:49:40.427 [DEBUG] [Thread-193562] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:49:40.428 [DEBUG] [Thread-193562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:49:40.428 [DEBUG] [Thread-193562] [transport.py] [_log()] Compression: none
2025-11-24T16:49:40.428 [DEBUG] [Thread-193562] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:49:40.452 [DEBUG] [Thread-193562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:49:40.452 [DEBUG] [Thread-193562] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:49:40.453 [DEBUG] [Thread-193562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:49:40.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:49:40.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:49:40.456 [DEBUG] [Thread-193562] [transport.py] [_log()] userauth is OK
2025-11-24T16:49:40.456 [DEBUG] [Thread-193562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:49:40.456 [DEBUG] [Thread-193562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:49:40.456 [DEBUG] [Thread-193562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:49:40.456 [DEBUG] [Thread-193562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:49:40.474 [INFO] [Thread-193562] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:49:40.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:49:41.038 [DEBUG] [Thread-193562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:49:41.038 [DEBUG] [Thread-193562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:49:41.049 [DEBUG] [Thread-193562] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:49:41.079 [DEBUG] [Thread-193562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:49:41.079 [DEBUG] [Thread-193562] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:49:41.082 [DEBUG] [Thread-193562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:49:41.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:49:41.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:49:41.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:49:41.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:49:41.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:49:41.111 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:49:41.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:49:41.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:49:41.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:49:41.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.617755 -999.00  +22.30  11.25     23   +0.40 1 1 1 1 1   887    0 22.81 42.48 ----- 12.7 11.2 156.6 21.7 26.3 -28.7 26.2 -27.6 27.9 -26.4 28.4 -27.9
2025-11-24T16:49:41.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:49:41.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:49:41.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.617755
2025-11-24T16:49:41.118 [DEBUG] [Thread-193562] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:49:41.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:49:41.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:49:41.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:49:41.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:49:41.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:49:41.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:49:29', tmtdew=25.42, humidity=17.79, cloud=0.0, wind=25.18, temperature=22.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:49:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:49:41.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:49:41.232 [DEBUG] [Thread-193565] [transport.py] [_log()] starting thread (client mode): 0xd7bc63b0
2025-11-24T16:49:41.232 [DEBUG] [Thread-193565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:49:41.248 [DEBUG] [Thread-193565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:49:41.248 [INFO] [Thread-193565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:49:41.255 [DEBUG] [Thread-193565] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] client lang: <none>
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] server lang: <none>
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] kex follows: False
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:49:41.256 [DEBUG] [Thread-193565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:49:41.257 [DEBUG] [Thread-193565] [transport.py] [_log()] Compression: none
2025-11-24T16:49:41.257 [DEBUG] [Thread-193565] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:49:41.314 [DEBUG] [Thread-193565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:49:41.314 [DEBUG] [Thread-193565] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:49:41.315 [DEBUG] [Thread-193565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:49:41.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:49:41.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:49:41.371 [DEBUG] [Thread-193565] [transport.py] [_log()] userauth is OK
2025-11-24T16:49:41.371 [DEBUG] [Thread-193565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:49:41.371 [DEBUG] [Thread-193565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:49:41.371 [DEBUG] [Thread-193565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:49:41.371 [DEBUG] [Thread-193565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:49:41.390 [INFO] [Thread-193565] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:49:41.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:49:41.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:49:42.230 [DEBUG] [Thread-193565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:49:42.230 [DEBUG] [Thread-193565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:49:42.278 [DEBUG] [Thread-193565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:49:42.278 [DEBUG] [Thread-193565] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:49:42.286 [DEBUG] [Thread-193565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:49:42.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:49:42.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-11-24T16:49:42.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:49:42.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:49:42.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:49:42.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:49:42.319 [DEBUG] [Thread-193565] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:49:47.201 [DEBUG] [Thread-193567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:49:47.949 [DEBUG] [Thread-193568 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:50:02.988 [DEBUG] [Thread-193569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:50:12.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:50:12.342 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:50:12.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-11-24T16:50:13.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 50, 2), 25.57, 17.62, 0.0, 24.07, 22.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:50:13.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:50:02
2025-11-24T16:50:13.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:50:13.677 [DEBUG] [Thread-193570] [transport.py] [_log()] starting thread (client mode): 0xd07bd870
2025-11-24T16:50:13.677 [DEBUG] [Thread-193570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:50:13.692 [DEBUG] [Thread-193570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:50:13.692 [INFO] [Thread-193570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:50:13.695 [DEBUG] [Thread-193570] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:50:13.695 [DEBUG] [Thread-193570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:50:13.695 [DEBUG] [Thread-193570] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:50:13.696 [DEBUG] [Thread-193570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:50:13.696 [DEBUG] [Thread-193570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:50:13.696 [DEBUG] [Thread-193570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:50:13.696 [DEBUG] [Thread-193570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:50:13.696 [DEBUG] [Thread-193570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:50:13.696 [DEBUG] [Thread-193570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:50:13.696 [DEBUG] [Thread-193570] [transport.py] [_log()] client lang: <none>
2025-11-24T16:50:13.696 [DEBUG] [Thread-193570] [transport.py] [_log()] server lang: <none>
2025-11-24T16:50:13.696 [DEBUG] [Thread-193570] [transport.py] [_log()] kex follows: False
2025-11-24T16:50:13.696 [DEBUG] [Thread-193570] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:50:13.697 [DEBUG] [Thread-193570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:50:13.697 [DEBUG] [Thread-193570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:50:13.697 [DEBUG] [Thread-193570] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:50:13.697 [DEBUG] [Thread-193570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:50:13.697 [DEBUG] [Thread-193570] [transport.py] [_log()] Compression: none
2025-11-24T16:50:13.697 [DEBUG] [Thread-193570] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:50:13.730 [DEBUG] [Thread-193570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:50:13.733 [DEBUG] [Thread-193570] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:50:13.734 [DEBUG] [Thread-193570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:50:13.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:50:13.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:50:13.739 [DEBUG] [Thread-193570] [transport.py] [_log()] userauth is OK
2025-11-24T16:50:13.739 [DEBUG] [Thread-193570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:50:13.739 [DEBUG] [Thread-193570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:50:13.740 [DEBUG] [Thread-193570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:50:13.740 [DEBUG] [Thread-193570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:50:13.759 [INFO] [Thread-193570] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:50:13.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:50:18.017 [DEBUG] [Thread-193572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:50:19.580 [DEBUG] [Thread-193570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:50:19.581 [DEBUG] [Thread-193570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:50:19.582 [DEBUG] [Thread-193570] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:50:19.621 [DEBUG] [Thread-193570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:50:19.621 [DEBUG] [Thread-193570] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:50:19.625 [DEBUG] [Thread-193570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:50:19.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:50:19.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:50:19.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:50:19.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:50:19.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:50:19.792 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:50:19.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:50:19.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:50:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:50:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.617755 -999.00  +22.30  11.25     23   +0.40 1 1 1 1 1   887    0 22.81 42.48 ----- 12.7 11.2 156.6 21.7 26.3 -28.7 26.2 -27.6 27.9 -26.4 28.4 -27.9
2025-11-24T16:50:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:50:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:50:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.617755
2025-11-24T16:50:19.799 [DEBUG] [Thread-193570] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:50:19.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:50:19.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:50:19.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:50:19.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:50:19.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:50:19.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:50:02', tmtdew=25.57, humidity=17.62, cloud=0.0, wind=24.07, temperature=22.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:49:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:50:19.884 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:50:19.896 [DEBUG] [Thread-193574] [transport.py] [_log()] starting thread (client mode): 0xd07bf1f0
2025-11-24T16:50:19.896 [DEBUG] [Thread-193574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:50:19.911 [DEBUG] [Thread-193574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:50:19.911 [INFO] [Thread-193574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] client lang: <none>
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] server lang: <none>
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] kex follows: False
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] Compression: none
2025-11-24T16:50:19.919 [DEBUG] [Thread-193574] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:50:19.981 [DEBUG] [Thread-193574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:50:19.981 [DEBUG] [Thread-193574] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:50:19.981 [DEBUG] [Thread-193574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:50:19.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:50:19.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:50:20.038 [DEBUG] [Thread-193574] [transport.py] [_log()] userauth is OK
2025-11-24T16:50:20.038 [DEBUG] [Thread-193574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:50:20.038 [DEBUG] [Thread-193574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:50:20.038 [DEBUG] [Thread-193574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:50:20.038 [DEBUG] [Thread-193574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:50:20.053 [INFO] [Thread-193574] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:50:20.053 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:50:20.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:50:20.919 [DEBUG] [Thread-193574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:50:20.920 [DEBUG] [Thread-193574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:50:20.967 [DEBUG] [Thread-193574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:50:20.967 [DEBUG] [Thread-193574] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:50:20.976 [DEBUG] [Thread-193574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:50:20.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:50:20.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-11-24T16:50:20.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-11-24T16:50:21.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:50:21.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:50:21.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:50:21.012 [DEBUG] [Thread-193574] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:50:33.042 [DEBUG] [Thread-193576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:50:47.496 [DEBUG] [Thread-193577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:50:48.133 [DEBUG] [Thread-193578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:50:51.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:50:51.017 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:50:51.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-11-24T16:50:51.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 50, 34), 25.86, 17.52, 0.0, 27.86, 22.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:50:51.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:50:34
2025-11-24T16:50:51.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:50:52.171 [DEBUG] [Thread-193579] [transport.py] [_log()] starting thread (client mode): 0xd07a9e10
2025-11-24T16:50:52.172 [DEBUG] [Thread-193579] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:50:52.186 [DEBUG] [Thread-193579] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:50:52.186 [INFO] [Thread-193579] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:50:52.190 [DEBUG] [Thread-193579] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:50:52.190 [DEBUG] [Thread-193579] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:50:52.190 [DEBUG] [Thread-193579] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:50:52.190 [DEBUG] [Thread-193579] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:50:52.190 [DEBUG] [Thread-193579] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:50:52.190 [DEBUG] [Thread-193579] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:50:52.191 [DEBUG] [Thread-193579] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:50:52.191 [DEBUG] [Thread-193579] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:50:52.191 [DEBUG] [Thread-193579] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:50:52.191 [DEBUG] [Thread-193579] [transport.py] [_log()] client lang: <none>
2025-11-24T16:50:52.191 [DEBUG] [Thread-193579] [transport.py] [_log()] server lang: <none>
2025-11-24T16:50:52.191 [DEBUG] [Thread-193579] [transport.py] [_log()] kex follows: False
2025-11-24T16:50:52.191 [DEBUG] [Thread-193579] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:50:52.192 [DEBUG] [Thread-193579] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:50:52.192 [DEBUG] [Thread-193579] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:50:52.192 [DEBUG] [Thread-193579] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:50:52.192 [DEBUG] [Thread-193579] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:50:52.192 [DEBUG] [Thread-193579] [transport.py] [_log()] Compression: none
2025-11-24T16:50:52.192 [DEBUG] [Thread-193579] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:50:52.222 [DEBUG] [Thread-193579] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:50:52.225 [DEBUG] [Thread-193579] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:50:52.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:50:52.228 [DEBUG] [Thread-193579] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:50:52.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:50:52.231 [DEBUG] [Thread-193579] [transport.py] [_log()] userauth is OK
2025-11-24T16:50:52.232 [DEBUG] [Thread-193579] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:50:52.232 [DEBUG] [Thread-193579] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:50:52.232 [DEBUG] [Thread-193579] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:50:52.232 [DEBUG] [Thread-193579] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:50:52.256 [INFO] [Thread-193579] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:50:52.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:50:52.897 [DEBUG] [Thread-193579] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:50:52.897 [DEBUG] [Thread-193579] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:50:52.899 [DEBUG] [Thread-193579] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:50:52.938 [DEBUG] [Thread-193579] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:50:52.938 [DEBUG] [Thread-193579] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:50:52.941 [DEBUG] [Thread-193579] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:50:52.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:50:52.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:50:52.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:50:52.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:50:52.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:50:52.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:50:52.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:50:52.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:50:52.969 [DEBUG] [Thread-193579] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:50:52.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:50:52.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.618108 -999.00  +22.50  12.72     23   +0.40 1 1 1 1 1   887    0 22.77 37.59 ----- 13.8 12.7 187.0 21.2 26.4 -28.9 26.2 -27.8 28.0 -27.5 28.4 -29.1
2025-11-24T16:50:52.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:50:52.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:50:52.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.618108
2025-11-24T16:50:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:50:52.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:50:52.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:50:52.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:50:52.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:50:52.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:50:34', tmtdew=25.86, humidity=17.52, cloud=0.0, wind=27.86, temperature=22.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:50:04.531', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:50:53.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:50:53.090 [DEBUG] [Thread-193582] [transport.py] [_log()] starting thread (client mode): 0xd07be950
2025-11-24T16:50:53.090 [DEBUG] [Thread-193582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:50:53.106 [DEBUG] [Thread-193582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:50:53.106 [INFO] [Thread-193582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] client lang: <none>
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] server lang: <none>
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] kex follows: False
2025-11-24T16:50:53.114 [DEBUG] [Thread-193582] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:50:53.115 [DEBUG] [Thread-193582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:50:53.115 [DEBUG] [Thread-193582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:50:53.115 [DEBUG] [Thread-193582] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:50:53.115 [DEBUG] [Thread-193582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:50:53.115 [DEBUG] [Thread-193582] [transport.py] [_log()] Compression: none
2025-11-24T16:50:53.115 [DEBUG] [Thread-193582] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:50:53.173 [DEBUG] [Thread-193582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:50:53.173 [DEBUG] [Thread-193582] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:50:53.173 [DEBUG] [Thread-193582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:50:53.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:50:53.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:50:53.230 [DEBUG] [Thread-193582] [transport.py] [_log()] userauth is OK
2025-11-24T16:50:53.230 [DEBUG] [Thread-193582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:50:53.230 [DEBUG] [Thread-193582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:50:53.230 [DEBUG] [Thread-193582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:50:53.230 [DEBUG] [Thread-193582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:50:53.247 [INFO] [Thread-193582] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:50:53.248 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:50:53.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:50:54.089 [DEBUG] [Thread-193582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:50:54.090 [DEBUG] [Thread-193582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:50:54.137 [DEBUG] [Thread-193582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:50:54.138 [DEBUG] [Thread-193582] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:50:54.147 [DEBUG] [Thread-193582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:50:54.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:50:54.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-11-24T16:50:54.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-11-24T16:50:54.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:50:54.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:50:54.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:50:54.194 [DEBUG] [Thread-193582] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:51:03.165 [DEBUG] [Thread-193584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:51:18.237 [DEBUG] [Thread-193585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:51:24.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:51:24.227 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:51:24.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:51:25.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 51, 7), 25.81, 17.57, 0.0, 25.35, 22.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:51:25.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:51:07
2025-11-24T16:51:25.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:51:25.349 [DEBUG] [Thread-193586] [transport.py] [_log()] starting thread (client mode): 0xd31cc970
2025-11-24T16:51:25.350 [DEBUG] [Thread-193586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:51:25.363 [DEBUG] [Thread-193586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:51:25.363 [INFO] [Thread-193586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:51:25.368 [DEBUG] [Thread-193586] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:51:25.368 [DEBUG] [Thread-193586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:51:25.368 [DEBUG] [Thread-193586] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:51:25.368 [DEBUG] [Thread-193586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:51:25.368 [DEBUG] [Thread-193586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:51:25.368 [DEBUG] [Thread-193586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:51:25.368 [DEBUG] [Thread-193586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:51:25.368 [DEBUG] [Thread-193586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:51:25.369 [DEBUG] [Thread-193586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:51:25.369 [DEBUG] [Thread-193586] [transport.py] [_log()] client lang: <none>
2025-11-24T16:51:25.369 [DEBUG] [Thread-193586] [transport.py] [_log()] server lang: <none>
2025-11-24T16:51:25.369 [DEBUG] [Thread-193586] [transport.py] [_log()] kex follows: False
2025-11-24T16:51:25.369 [DEBUG] [Thread-193586] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:51:25.370 [DEBUG] [Thread-193586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:51:25.370 [DEBUG] [Thread-193586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:51:25.370 [DEBUG] [Thread-193586] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:51:25.370 [DEBUG] [Thread-193586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:51:25.370 [DEBUG] [Thread-193586] [transport.py] [_log()] Compression: none
2025-11-24T16:51:25.370 [DEBUG] [Thread-193586] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:51:25.402 [DEBUG] [Thread-193586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:51:25.407 [DEBUG] [Thread-193586] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:51:25.410 [DEBUG] [Thread-193586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:51:25.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:51:25.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:51:25.415 [DEBUG] [Thread-193586] [transport.py] [_log()] userauth is OK
2025-11-24T16:51:25.416 [DEBUG] [Thread-193586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:51:25.416 [DEBUG] [Thread-193586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:51:25.416 [DEBUG] [Thread-193586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:51:25.416 [DEBUG] [Thread-193586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:51:25.442 [INFO] [Thread-193586] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:51:25.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:51:26.047 [DEBUG] [Thread-193586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:51:26.047 [DEBUG] [Thread-193586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:51:26.056 [DEBUG] [Thread-193586] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:51:26.088 [DEBUG] [Thread-193586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:51:26.088 [DEBUG] [Thread-193586] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:51:26.090 [DEBUG] [Thread-193586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:51:26.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:51:26.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:51:26.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:51:26.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:51:26.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:51:26.112 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:51:26.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:51:26.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:51:26.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:51:26.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.618455 -999.00  +22.40  26.19     23   +0.20 1 1 1 1 1   887    0 22.64 35.78 ----- 19.4 26.2 197.8 30.3 26.3 -29.4 26.1 -31.7 27.9 -27.4 28.2 -29.5
2025-11-24T16:51:26.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:51:26.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:51:26.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.618455
2025-11-24T16:51:26.119 [DEBUG] [Thread-193586] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:51:26.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:51:26.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:51:26.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:51:26.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:51:26.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:51:26.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:51:07', tmtdew=25.81, humidity=17.57, cloud=0.0, wind=25.35, temperature=22.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:50:34.512', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:51:26.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:51:26.210 [DEBUG] [Thread-193589] [transport.py] [_log()] starting thread (client mode): 0xd7bc4970
2025-11-24T16:51:26.210 [DEBUG] [Thread-193589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:51:26.225 [DEBUG] [Thread-193589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:51:26.225 [INFO] [Thread-193589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:51:26.232 [DEBUG] [Thread-193589] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:51:26.232 [DEBUG] [Thread-193589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:51:26.232 [DEBUG] [Thread-193589] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] client lang: <none>
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] server lang: <none>
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] kex follows: False
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:51:26.233 [DEBUG] [Thread-193589] [transport.py] [_log()] Compression: none
2025-11-24T16:51:26.234 [DEBUG] [Thread-193589] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:51:26.289 [DEBUG] [Thread-193589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:51:26.289 [DEBUG] [Thread-193589] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:51:26.289 [DEBUG] [Thread-193589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:51:26.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:51:26.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:51:26.346 [DEBUG] [Thread-193589] [transport.py] [_log()] userauth is OK
2025-11-24T16:51:26.346 [DEBUG] [Thread-193589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:51:26.346 [DEBUG] [Thread-193589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:51:26.346 [DEBUG] [Thread-193589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:51:26.346 [DEBUG] [Thread-193589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:51:26.360 [INFO] [Thread-193589] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:51:26.360 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:51:26.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:51:27.239 [DEBUG] [Thread-193589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:51:27.240 [DEBUG] [Thread-193589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:51:27.287 [DEBUG] [Thread-193589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:51:27.288 [DEBUG] [Thread-193589] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:51:27.298 [DEBUG] [Thread-193589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:51:27.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:51:27.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-11-24T16:51:27.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-11-24T16:51:27.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:51:27.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:51:27.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:51:27.341 [DEBUG] [Thread-193589] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:51:33.270 [DEBUG] [Thread-193591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:51:47.742 [DEBUG] [Thread-193592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:51:48.315 [DEBUG] [Thread-193593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:51:57.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:51:57.362 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:51:57.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-11-24T16:51:58.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 51, 39), 25.76, 17.62, 0.0, 28.2, 22.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:51:58.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:51:39
2025-11-24T16:51:58.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:51:58.459 [DEBUG] [Thread-193594] [transport.py] [_log()] starting thread (client mode): 0xd07bfd90
2025-11-24T16:51:58.460 [DEBUG] [Thread-193594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:51:58.480 [DEBUG] [Thread-193594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:51:58.480 [INFO] [Thread-193594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] client lang: <none>
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] server lang: <none>
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] kex follows: False
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] Compression: none
2025-11-24T16:51:58.483 [DEBUG] [Thread-193594] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:51:58.505 [DEBUG] [Thread-193594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:51:58.507 [DEBUG] [Thread-193594] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:51:58.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:51:58.510 [DEBUG] [Thread-193594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:51:58.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:51:58.511 [DEBUG] [Thread-193594] [transport.py] [_log()] userauth is OK
2025-11-24T16:51:58.512 [DEBUG] [Thread-193594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:51:58.512 [DEBUG] [Thread-193594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:51:58.512 [DEBUG] [Thread-193594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:51:58.512 [DEBUG] [Thread-193594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:51:58.536 [INFO] [Thread-193594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:51:58.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:51:59.134 [DEBUG] [Thread-193594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:51:59.134 [DEBUG] [Thread-193594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:51:59.135 [DEBUG] [Thread-193594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:51:59.175 [DEBUG] [Thread-193594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:51:59.175 [DEBUG] [Thread-193594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:51:59.178 [DEBUG] [Thread-193594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:51:59.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:51:59.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:51:59.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:51:59.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:51:59.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:51:59.202 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:51:59.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:51:59.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:51:59.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:51:59.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.618796 -999.00  +22.20  14.48     23   +0.30 1 1 1 1 1   887    0 22.90 37.78 ----- 12.7 14.5 199.9 26.1 26.3 -29.4 26.1 -28.4 27.9 -26.5 28.4 -28.3
2025-11-24T16:51:59.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:51:59.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:51:59.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.618796
2025-11-24T16:51:59.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:51:59.207 [DEBUG] [Thread-193594] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:51:59.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:51:59.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:51:59.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:51:59.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:51:59.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:51:39', tmtdew=25.76, humidity=17.62, cloud=0.0, wind=28.2, temperature=22.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:51:03.974', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:51:59.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:51:59.306 [DEBUG] [Thread-193597] [transport.py] [_log()] starting thread (client mode): 0xd07bd1e0
2025-11-24T16:51:59.307 [DEBUG] [Thread-193597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:51:59.321 [DEBUG] [Thread-193597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:51:59.321 [INFO] [Thread-193597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:51:59.329 [DEBUG] [Thread-193597] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:51:59.329 [DEBUG] [Thread-193597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:51:59.329 [DEBUG] [Thread-193597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:51:59.329 [DEBUG] [Thread-193597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:51:59.329 [DEBUG] [Thread-193597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:51:59.329 [DEBUG] [Thread-193597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:51:59.329 [DEBUG] [Thread-193597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:51:59.329 [DEBUG] [Thread-193597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:51:59.329 [DEBUG] [Thread-193597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:51:59.329 [DEBUG] [Thread-193597] [transport.py] [_log()] client lang: <none>
2025-11-24T16:51:59.330 [DEBUG] [Thread-193597] [transport.py] [_log()] server lang: <none>
2025-11-24T16:51:59.330 [DEBUG] [Thread-193597] [transport.py] [_log()] kex follows: False
2025-11-24T16:51:59.330 [DEBUG] [Thread-193597] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:51:59.330 [DEBUG] [Thread-193597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:51:59.330 [DEBUG] [Thread-193597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:51:59.330 [DEBUG] [Thread-193597] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:51:59.330 [DEBUG] [Thread-193597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:51:59.330 [DEBUG] [Thread-193597] [transport.py] [_log()] Compression: none
2025-11-24T16:51:59.330 [DEBUG] [Thread-193597] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:51:59.386 [DEBUG] [Thread-193597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:51:59.387 [DEBUG] [Thread-193597] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:51:59.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:51:59.388 [DEBUG] [Thread-193597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:51:59.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:51:59.443 [DEBUG] [Thread-193597] [transport.py] [_log()] userauth is OK
2025-11-24T16:51:59.443 [DEBUG] [Thread-193597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:51:59.443 [DEBUG] [Thread-193597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:51:59.443 [DEBUG] [Thread-193597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:51:59.444 [DEBUG] [Thread-193597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:51:59.461 [INFO] [Thread-193597] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:51:59.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:51:59.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:52:00.355 [DEBUG] [Thread-193597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:52:00.355 [DEBUG] [Thread-193597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:52:00.403 [DEBUG] [Thread-193597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:52:00.403 [DEBUG] [Thread-193597] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:52:00.412 [DEBUG] [Thread-193597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:52:00.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:52:00.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-11-24T16:52: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-11-24T16:52:00.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:52:00.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:52:00.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:52:00.446 [DEBUG] [Thread-193597] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:52:03.355 [DEBUG] [Thread-193599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:52:18.454 [DEBUG] [Thread-193600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:52:30.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:52:30.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:52:30.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-11-24T16:52:31.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 52, 12), 25.85, 17.54, 0.0, 23.57, 22.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:52:31.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:52:12
2025-11-24T16:52:31.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:52:31.568 [DEBUG] [Thread-193601] [transport.py] [_log()] starting thread (client mode): 0xd07bc190
2025-11-24T16:52:31.568 [DEBUG] [Thread-193601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:52:31.585 [DEBUG] [Thread-193601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:52:31.585 [INFO] [Thread-193601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:52:31.589 [DEBUG] [Thread-193601] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:52:31.589 [DEBUG] [Thread-193601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:52:31.589 [DEBUG] [Thread-193601] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:52:31.589 [DEBUG] [Thread-193601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:52:31.589 [DEBUG] [Thread-193601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:52:31.589 [DEBUG] [Thread-193601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:52:31.589 [DEBUG] [Thread-193601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:52:31.589 [DEBUG] [Thread-193601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:52:31.589 [DEBUG] [Thread-193601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:52:31.590 [DEBUG] [Thread-193601] [transport.py] [_log()] client lang: <none>
2025-11-24T16:52:31.590 [DEBUG] [Thread-193601] [transport.py] [_log()] server lang: <none>
2025-11-24T16:52:31.590 [DEBUG] [Thread-193601] [transport.py] [_log()] kex follows: False
2025-11-24T16:52:31.590 [DEBUG] [Thread-193601] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:52:31.591 [DEBUG] [Thread-193601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:52:31.591 [DEBUG] [Thread-193601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:52:31.591 [DEBUG] [Thread-193601] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:52:31.591 [DEBUG] [Thread-193601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:52:31.591 [DEBUG] [Thread-193601] [transport.py] [_log()] Compression: none
2025-11-24T16:52:31.591 [DEBUG] [Thread-193601] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:52:31.627 [DEBUG] [Thread-193601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:52:31.630 [DEBUG] [Thread-193601] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:52:31.631 [DEBUG] [Thread-193601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:52:31.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:52:31.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:52:31.636 [DEBUG] [Thread-193601] [transport.py] [_log()] userauth is OK
2025-11-24T16:52:31.636 [DEBUG] [Thread-193601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:52:31.636 [DEBUG] [Thread-193601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:52:31.637 [DEBUG] [Thread-193601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:52:31.637 [DEBUG] [Thread-193601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:52:31.662 [INFO] [Thread-193601] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:52:31.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:52:32.277 [DEBUG] [Thread-193601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:52:32.277 [DEBUG] [Thread-193601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:52:32.278 [DEBUG] [Thread-193601] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:52:32.318 [DEBUG] [Thread-193601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:52:32.318 [DEBUG] [Thread-193601] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:52:32.320 [DEBUG] [Thread-193601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:52:32.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:52:32.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:52:32.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:52:32.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:52:32.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:52:32.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:52:32.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:52:32.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:52:32.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:52:32.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.619144 -999.00  +22.30  14.10     23   +0.30 1 1 1 1 1   887    0 22.89 35.24 ----- 18.1 14.1 199.0 20.9 26.3 -28.7 26.2 -27.9 28.0 -27.8 28.4 -29.5
2025-11-24T16:52:32.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:52:32.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:52:32.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.619144
2025-11-24T16:52:32.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:52:32.369 [DEBUG] [Thread-193601] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:52:32.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:52:32.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:52:32.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:52:32.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:52:32.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:52:12', tmtdew=25.85, humidity=17.54, cloud=0.0, wind=23.57, temperature=22.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:51:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:52:32.455 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:52:32.467 [DEBUG] [Thread-193604] [transport.py] [_log()] starting thread (client mode): 0xd07bc520
2025-11-24T16:52:32.467 [DEBUG] [Thread-193604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:52:32.484 [DEBUG] [Thread-193604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:52:32.484 [INFO] [Thread-193604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] client lang: <none>
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] server lang: <none>
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] kex follows: False
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:52:32.491 [DEBUG] [Thread-193604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:52:32.492 [DEBUG] [Thread-193604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:52:32.492 [DEBUG] [Thread-193604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:52:32.492 [DEBUG] [Thread-193604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:52:32.492 [DEBUG] [Thread-193604] [transport.py] [_log()] Compression: none
2025-11-24T16:52:32.492 [DEBUG] [Thread-193604] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:52:32.555 [DEBUG] [Thread-193604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:52:32.555 [DEBUG] [Thread-193604] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:52:32.556 [DEBUG] [Thread-193604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:52:32.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:52:32.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:52:32.615 [DEBUG] [Thread-193604] [transport.py] [_log()] userauth is OK
2025-11-24T16:52:32.615 [DEBUG] [Thread-193604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:52:32.615 [DEBUG] [Thread-193604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:52:32.615 [DEBUG] [Thread-193604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:52:32.615 [DEBUG] [Thread-193604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:52:32.633 [INFO] [Thread-193604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:52:32.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:52:32.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:52:33.469 [DEBUG] [Thread-193604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:52:33.469 [DEBUG] [Thread-193604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:52:33.493 [DEBUG] [Thread-193606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:52:33.516 [DEBUG] [Thread-193604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:52:33.516 [DEBUG] [Thread-193604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:52:33.529 [DEBUG] [Thread-193604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:52:33.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:52:33.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-11-24T16:52:33.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-11-24T16:52:33.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:52:33.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:52:33.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:52:33.562 [DEBUG] [Thread-193604] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:52:47.996 [DEBUG] [Thread-193607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:52:48.578 [DEBUG] [Thread-193608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:53:03.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:53:03.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:53:03.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:53:03.611 [DEBUG] [Thread-193609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:53:04.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 52, 45), 25.42, 17.86, 0.0, 24.1, 21.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:53:04.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:52:45
2025-11-24T16:53:04.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:53:04.663 [DEBUG] [Thread-193610] [transport.py] [_log()] starting thread (client mode): 0xd31cf580
2025-11-24T16:53:04.663 [DEBUG] [Thread-193610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:53:04.679 [DEBUG] [Thread-193610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:53:04.679 [INFO] [Thread-193610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:53:04.682 [DEBUG] [Thread-193610] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:53:04.682 [DEBUG] [Thread-193610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] client lang: <none>
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] server lang: <none>
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] kex follows: False
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:53:04.683 [DEBUG] [Thread-193610] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:53:04.684 [DEBUG] [Thread-193610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:53:04.684 [DEBUG] [Thread-193610] [transport.py] [_log()] Compression: none
2025-11-24T16:53:04.684 [DEBUG] [Thread-193610] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:53:04.708 [DEBUG] [Thread-193610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:53:04.709 [DEBUG] [Thread-193610] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:53:04.710 [DEBUG] [Thread-193610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:53:04.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:53:04.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:53:04.752 [DEBUG] [Thread-193610] [transport.py] [_log()] userauth is OK
2025-11-24T16:53:04.752 [DEBUG] [Thread-193610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:53:04.752 [DEBUG] [Thread-193610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:53:04.752 [DEBUG] [Thread-193610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:53:04.752 [DEBUG] [Thread-193610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:53:04.781 [INFO] [Thread-193610] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:53:04.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:53:05.432 [DEBUG] [Thread-193610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:53:05.432 [DEBUG] [Thread-193610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:53:05.433 [DEBUG] [Thread-193610] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:53:05.473 [DEBUG] [Thread-193610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:53:05.473 [DEBUG] [Thread-193610] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:53:05.476 [DEBUG] [Thread-193610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:53:05.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:53:05.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:53:05.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:53:05.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:53:05.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:53:05.493 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:53:05.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:53:05.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:53:05.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:53:05.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.619491 -999.00  +22.30  16.85     23   +0.30 1 1 1 1 1   887    0 22.85 34.77 ----- 16.6 16.9 197.4 26.5 26.4 -29.3 26.2 -28.3 27.9 -28.4 28.4 -31.0
2025-11-24T16:53:05.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:53:05.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:53:05.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.619491
2025-11-24T16:53:05.500 [DEBUG] [Thread-193610] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:53:05.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:53:05.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:53:05.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:53:05.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:53:05.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:53:05.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:52:45', tmtdew=25.42, humidity=17.86, cloud=0.0, wind=24.1, temperature=21.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:52:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:53:05.581 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:53:05.593 [DEBUG] [Thread-193613] [transport.py] [_log()] starting thread (client mode): 0xd07bdde0
2025-11-24T16:53:05.593 [DEBUG] [Thread-193613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:53:05.607 [DEBUG] [Thread-193613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:53:05.607 [INFO] [Thread-193613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] client lang: <none>
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] server lang: <none>
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] kex follows: False
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] Compression: none
2025-11-24T16:53:05.615 [DEBUG] [Thread-193613] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:53:05.674 [DEBUG] [Thread-193613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:53:05.674 [DEBUG] [Thread-193613] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:53:05.674 [DEBUG] [Thread-193613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:53:05.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:53:05.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:53:05.730 [DEBUG] [Thread-193613] [transport.py] [_log()] userauth is OK
2025-11-24T16:53:05.730 [DEBUG] [Thread-193613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:53:05.730 [DEBUG] [Thread-193613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:53:05.730 [DEBUG] [Thread-193613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:53:05.730 [DEBUG] [Thread-193613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:53:05.746 [INFO] [Thread-193613] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:53:05.746 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:53:05.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:53:06.602 [DEBUG] [Thread-193613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:53:06.602 [DEBUG] [Thread-193613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:53:06.649 [DEBUG] [Thread-193613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:53:06.649 [DEBUG] [Thread-193613] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:53:06.658 [DEBUG] [Thread-193613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:53:06.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:53:06.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-11-24T16:53:06.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:53:06.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:53:06.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:53:06.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:53:06.692 [DEBUG] [Thread-193613] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:53:18.641 [DEBUG] [Thread-193615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:53:33.737 [DEBUG] [Thread-193616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:53:36.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:53:36.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:53:36.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-11-24T16:53:37.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 53, 17), 25.43, 17.84, 0.0, 25.51, 21.94, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:53:37.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:53:17
2025-11-24T16:53:37.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:53:37.871 [DEBUG] [Thread-193617] [transport.py] [_log()] starting thread (client mode): 0xd7bc7010
2025-11-24T16:53:37.872 [DEBUG] [Thread-193617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:53:37.888 [DEBUG] [Thread-193617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:53:37.889 [INFO] [Thread-193617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:53:37.890 [DEBUG] [Thread-193617] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] client lang: <none>
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] server lang: <none>
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] kex follows: False
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:53:37.891 [DEBUG] [Thread-193617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:53:37.892 [DEBUG] [Thread-193617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:53:37.892 [DEBUG] [Thread-193617] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:53:37.892 [DEBUG] [Thread-193617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:53:37.892 [DEBUG] [Thread-193617] [transport.py] [_log()] Compression: none
2025-11-24T16:53:37.892 [DEBUG] [Thread-193617] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:53:37.905 [DEBUG] [Thread-193617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:53:37.906 [DEBUG] [Thread-193617] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:53:37.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:53:37.908 [DEBUG] [Thread-193617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:53:37.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:53:37.911 [DEBUG] [Thread-193617] [transport.py] [_log()] userauth is OK
2025-11-24T16:53:37.911 [DEBUG] [Thread-193617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:53:37.911 [DEBUG] [Thread-193617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:53:37.911 [DEBUG] [Thread-193617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:53:37.911 [DEBUG] [Thread-193617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:53:37.935 [INFO] [Thread-193617] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:53:37.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:53:38.537 [DEBUG] [Thread-193617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:53:38.537 [DEBUG] [Thread-193617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:53:38.538 [DEBUG] [Thread-193617] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:53:38.578 [DEBUG] [Thread-193617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:53:38.578 [DEBUG] [Thread-193617] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:53:38.580 [DEBUG] [Thread-193617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:53:38.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:53:38.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:53:38.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:53:38.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:53:38.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:53:38.600 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:53:38.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:53:38.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:53:38.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:53:38.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.619844 -999.00  +22.10  19.86     23   +0.20 1 1 1 1 1   887    0 22.56 32.09 ----- 19.6 19.9 209.2 33.2 26.3 -29.4 26.1 -29.2 27.8 -28.3 28.3 -30.8
2025-11-24T16:53:38.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:53:38.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:53:38.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.619844
2025-11-24T16:53:38.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:53:38.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:53:38.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:53:38.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:53:38.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:53:38.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:53:17', tmtdew=25.43, humidity=17.84, cloud=0.0, wind=25.51, temperature=21.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:52:34.522', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:53:38.609 [DEBUG] [Thread-193617] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:53:38.684 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:53:38.696 [DEBUG] [Thread-193620] [transport.py] [_log()] starting thread (client mode): 0xd07cfc40
2025-11-24T16:53:38.696 [DEBUG] [Thread-193620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:53:38.710 [DEBUG] [Thread-193620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:53:38.710 [INFO] [Thread-193620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:53:38.717 [DEBUG] [Thread-193620] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:53:38.717 [DEBUG] [Thread-193620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:53:38.717 [DEBUG] [Thread-193620] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:53:38.717 [DEBUG] [Thread-193620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:53:38.717 [DEBUG] [Thread-193620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:53:38.717 [DEBUG] [Thread-193620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:53:38.717 [DEBUG] [Thread-193620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] client lang: <none>
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] server lang: <none>
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] kex follows: False
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] Compression: none
2025-11-24T16:53:38.718 [DEBUG] [Thread-193620] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:53:38.773 [DEBUG] [Thread-193620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:53:38.773 [DEBUG] [Thread-193620] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:53:38.774 [DEBUG] [Thread-193620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:53:38.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:53:38.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:53:38.830 [DEBUG] [Thread-193620] [transport.py] [_log()] userauth is OK
2025-11-24T16:53:38.830 [DEBUG] [Thread-193620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:53:38.830 [DEBUG] [Thread-193620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:53:38.830 [DEBUG] [Thread-193620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:53:38.830 [DEBUG] [Thread-193620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:53:38.844 [INFO] [Thread-193620] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:53:38.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:53:38.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:53:39.681 [DEBUG] [Thread-193620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:53:39.682 [DEBUG] [Thread-193620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:53:39.729 [DEBUG] [Thread-193620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:53:39.729 [DEBUG] [Thread-193620] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:53:39.737 [DEBUG] [Thread-193620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:53:39.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:53:39.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-11-24T16:53:39.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-11-24T16:53:39.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:53:39.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:53:39.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:53:39.769 [DEBUG] [Thread-193620] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:53:48.338 [DEBUG] [Thread-193622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:53:48.765 [DEBUG] [Thread-193623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:54:03.842 [DEBUG] [Thread-193624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:54:09.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:54:09.796 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:54:09.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-11-24T16:54:11.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 53, 50), 25.44, 17.76, 0.0, 25.55, 21.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:54:11.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:53:50
2025-11-24T16:54:11.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:54:11.534 [DEBUG] [Thread-193625] [transport.py] [_log()] starting thread (client mode): 0xd07be770
2025-11-24T16:54:11.534 [DEBUG] [Thread-193625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:54:11.536 [DEBUG] [Thread-193625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:54:11.536 [INFO] [Thread-193625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] client lang: <none>
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] server lang: <none>
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] kex follows: False
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] Compression: none
2025-11-24T16:54:11.540 [DEBUG] [Thread-193625] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:54:11.566 [DEBUG] [Thread-193625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:54:11.572 [DEBUG] [Thread-193625] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:54:11.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:54:11.576 [DEBUG] [Thread-193625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:54:11.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:54:11.579 [DEBUG] [Thread-193625] [transport.py] [_log()] userauth is OK
2025-11-24T16:54:11.580 [DEBUG] [Thread-193625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:54:11.580 [DEBUG] [Thread-193625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:54:11.580 [DEBUG] [Thread-193625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:54:11.580 [DEBUG] [Thread-193625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:54:11.603 [INFO] [Thread-193625] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:54:11.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:54:12.207 [DEBUG] [Thread-193625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:54:12.208 [DEBUG] [Thread-193625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:54:12.210 [DEBUG] [Thread-193625] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:54:12.248 [DEBUG] [Thread-193625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:54:12.248 [DEBUG] [Thread-193625] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:54:12.251 [DEBUG] [Thread-193625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:54:12.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:54:12.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:54:12.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:54:12.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:54:12.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:54:12.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:54:12.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:54:12.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:54:12.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:54:12.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.620885 -999.00  +22.10  18.95     23   +0.30 1 1 1 1 1   887    0 22.63 28.76 ----- 14.1 18.9 186.2 22.9 26.2 -29.1 26.0 -28.8 27.8 -26.7 28.2 -29.0
2025-11-24T16:54:12.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:54:12.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:54:12.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.620885
2025-11-24T16:54:12.283 [DEBUG] [Thread-193625] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:54:12.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:54:12.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:54:12.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:54:12.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:54:12.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:54:12.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:53:50', tmtdew=25.44, humidity=17.76, cloud=0.0, wind=25.55, temperature=21.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:54:04.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:54:12.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:54:12.377 [DEBUG] [Thread-193628] [transport.py] [_log()] starting thread (client mode): 0xd31cc0a0
2025-11-24T16:54:12.377 [DEBUG] [Thread-193628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:54:12.394 [DEBUG] [Thread-193628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:54:12.394 [INFO] [Thread-193628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] client lang: <none>
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] server lang: <none>
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] kex follows: False
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:54:12.408 [DEBUG] [Thread-193628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:54:12.410 [DEBUG] [Thread-193628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:54:12.410 [DEBUG] [Thread-193628] [transport.py] [_log()] Compression: none
2025-11-24T16:54:12.410 [DEBUG] [Thread-193628] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:54:12.469 [DEBUG] [Thread-193628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:54:12.469 [DEBUG] [Thread-193628] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:54:12.470 [DEBUG] [Thread-193628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:54:12.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:54:12.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:54:12.526 [DEBUG] [Thread-193628] [transport.py] [_log()] userauth is OK
2025-11-24T16:54:12.526 [DEBUG] [Thread-193628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:54:12.526 [DEBUG] [Thread-193628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:54:12.526 [DEBUG] [Thread-193628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:54:12.526 [DEBUG] [Thread-193628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:54:12.541 [INFO] [Thread-193628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:54:12.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:54:12.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:54:13.415 [DEBUG] [Thread-193628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:54:13.416 [DEBUG] [Thread-193628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:54:13.465 [DEBUG] [Thread-193628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:54:13.465 [DEBUG] [Thread-193628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:54:13.474 [DEBUG] [Thread-193628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:54:13.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:54:13.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-11-24T16:54:13.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-11-24T16:54:13.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:54:13.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:54:13.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:54:13.519 [DEBUG] [Thread-193628] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:54:18.911 [DEBUG] [Thread-193630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:54:34.020 [DEBUG] [Thread-193631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:54:43.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:54:43.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:54:43.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-11-24T16:54:44.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 54, 23), 25.48, 17.76, 0.0, 19.78, 22.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:54:44.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:54:23
2025-11-24T16:54:44.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:54:44.671 [DEBUG] [Thread-193632] [transport.py] [_log()] starting thread (client mode): 0xd31cd480
2025-11-24T16:54:44.671 [DEBUG] [Thread-193632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:54:44.685 [DEBUG] [Thread-193632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:54:44.685 [INFO] [Thread-193632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:54:44.687 [DEBUG] [Thread-193632] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:54:44.687 [DEBUG] [Thread-193632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:54:44.687 [DEBUG] [Thread-193632] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] client lang: <none>
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] server lang: <none>
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] kex follows: False
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:54:44.688 [DEBUG] [Thread-193632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:54:44.689 [DEBUG] [Thread-193632] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:54:44.689 [DEBUG] [Thread-193632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:54:44.689 [DEBUG] [Thread-193632] [transport.py] [_log()] Compression: none
2025-11-24T16:54:44.689 [DEBUG] [Thread-193632] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:54:44.713 [DEBUG] [Thread-193632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:54:44.717 [DEBUG] [Thread-193632] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:54:44.719 [DEBUG] [Thread-193632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:54:44.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:54:44.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:54:44.724 [DEBUG] [Thread-193632] [transport.py] [_log()] userauth is OK
2025-11-24T16:54:44.724 [DEBUG] [Thread-193632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:54:44.724 [DEBUG] [Thread-193632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:54:44.724 [DEBUG] [Thread-193632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:54:44.724 [DEBUG] [Thread-193632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:54:44.750 [INFO] [Thread-193632] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:54:44.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:54:45.367 [DEBUG] [Thread-193632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:54:45.368 [DEBUG] [Thread-193632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:54:45.380 [DEBUG] [Thread-193632] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:54:45.409 [DEBUG] [Thread-193632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:54:45.409 [DEBUG] [Thread-193632] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:54:45.412 [DEBUG] [Thread-193632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:54:45.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:54:45.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:54:45.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:54:45.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:54:45.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:54:45.432 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:54:45.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:54:45.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:54:45.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:54:45.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.621233 -999.00  +22.00  17.41     23   +0.20 1 1 1 1 1   887    0 22.67 29.18 ----- 16.5 17.4 181.8 24.9 26.2 -29.4 26.0 -30.6 27.8 -27.2 28.3 -28.8
2025-11-24T16:54:45.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:54:45.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:54:45.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.621233
2025-11-24T16:54:45.440 [DEBUG] [Thread-193632] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:54:45.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:54:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:54:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:54:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:54:45.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:54:45.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:54:23', tmtdew=25.48, humidity=17.76, cloud=0.0, wind=19.78, temperature=22.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:54:34.531', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:54:45.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:54:45.550 [DEBUG] [Thread-193635] [transport.py] [_log()] starting thread (client mode): 0xd07cffa0
2025-11-24T16:54:45.550 [DEBUG] [Thread-193635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:54:45.565 [DEBUG] [Thread-193635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:54:45.565 [INFO] [Thread-193635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:54:45.572 [DEBUG] [Thread-193635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:54:45.572 [DEBUG] [Thread-193635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:54:45.572 [DEBUG] [Thread-193635] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:54:45.572 [DEBUG] [Thread-193635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:54:45.572 [DEBUG] [Thread-193635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:54:45.572 [DEBUG] [Thread-193635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] client lang: <none>
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] server lang: <none>
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] kex follows: False
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] Compression: none
2025-11-24T16:54:45.573 [DEBUG] [Thread-193635] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:54:45.634 [DEBUG] [Thread-193635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:54:45.634 [DEBUG] [Thread-193635] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:54:45.634 [DEBUG] [Thread-193635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:54:45.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:54:45.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:54:45.690 [DEBUG] [Thread-193635] [transport.py] [_log()] userauth is OK
2025-11-24T16:54:45.690 [DEBUG] [Thread-193635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:54:45.690 [DEBUG] [Thread-193635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:54:45.690 [DEBUG] [Thread-193635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:54:45.690 [DEBUG] [Thread-193635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:54:45.707 [INFO] [Thread-193635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:54:45.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:54:45.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:54:46.559 [DEBUG] [Thread-193635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:54:46.560 [DEBUG] [Thread-193635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:54:46.608 [DEBUG] [Thread-193635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:54:46.608 [DEBUG] [Thread-193635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:54:46.617 [DEBUG] [Thread-193635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:54:46.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:54:46.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-11-24T16:54:46.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-11-24T16:54:46.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:54:46.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:54:46.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:54:46.664 [DEBUG] [Thread-193635] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:54:48.667 [DEBUG] [Thread-193637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:54:49.058 [DEBUG] [Thread-193638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:55:04.138 [DEBUG] [Thread-193639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:55:16.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:55:16.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:55:16.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T16:55:17.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 54, 56), 25.7, 17.63, 0.0, 19.55, 22.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:55:17.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:54:56
2025-11-24T16:55:17.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:55:17.844 [DEBUG] [Thread-193640] [transport.py] [_log()] starting thread (client mode): 0xd07cc1f0
2025-11-24T16:55:17.845 [DEBUG] [Thread-193640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:55:17.859 [DEBUG] [Thread-193640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:55:17.860 [INFO] [Thread-193640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:55:17.865 [DEBUG] [Thread-193640] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:55:17.865 [DEBUG] [Thread-193640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:55:17.865 [DEBUG] [Thread-193640] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:55:17.865 [DEBUG] [Thread-193640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:55:17.865 [DEBUG] [Thread-193640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:55:17.865 [DEBUG] [Thread-193640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:55:17.866 [DEBUG] [Thread-193640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:55:17.866 [DEBUG] [Thread-193640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:55:17.866 [DEBUG] [Thread-193640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:55:17.866 [DEBUG] [Thread-193640] [transport.py] [_log()] client lang: <none>
2025-11-24T16:55:17.866 [DEBUG] [Thread-193640] [transport.py] [_log()] server lang: <none>
2025-11-24T16:55:17.866 [DEBUG] [Thread-193640] [transport.py] [_log()] kex follows: False
2025-11-24T16:55:17.866 [DEBUG] [Thread-193640] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:55:17.867 [DEBUG] [Thread-193640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:55:17.867 [DEBUG] [Thread-193640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:55:17.867 [DEBUG] [Thread-193640] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:55:17.867 [DEBUG] [Thread-193640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:55:17.867 [DEBUG] [Thread-193640] [transport.py] [_log()] Compression: none
2025-11-24T16:55:17.867 [DEBUG] [Thread-193640] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:55:17.909 [DEBUG] [Thread-193640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:55:17.911 [DEBUG] [Thread-193640] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:55:17.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:55:17.913 [DEBUG] [Thread-193640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:55:17.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:55:17.915 [DEBUG] [Thread-193640] [transport.py] [_log()] userauth is OK
2025-11-24T16:55:17.915 [DEBUG] [Thread-193640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:55:17.915 [DEBUG] [Thread-193640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:55:17.915 [DEBUG] [Thread-193640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:55:17.915 [DEBUG] [Thread-193640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:55:17.944 [INFO] [Thread-193640] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:55:17.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:55:18.539 [DEBUG] [Thread-193640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:55:18.539 [DEBUG] [Thread-193640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:55:18.548 [DEBUG] [Thread-193640] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:55:18.580 [DEBUG] [Thread-193640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:55:18.580 [DEBUG] [Thread-193640] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:55:18.583 [DEBUG] [Thread-193640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:55:18.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:55:18.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:55:18.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:55:18.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:55:18.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:55:18.600 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:55:18.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:55:18.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:55:18.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:55:18.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.621574 -999.00  +22.10  17.27     23   +0.30 1 1 1 1 1   887    0 22.91 30.49 ----- 29.3 17.3 175.8 26.0 26.2 -29.2 26.0 -31.2 27.7 -30.0 28.2 -30.4
2025-11-24T16:55:18.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:55:18.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:55:18.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.621574
2025-11-24T16:55:18.607 [DEBUG] [Thread-193640] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:55:18.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:55:18.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:55:18.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:55:18.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:55:18.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:55:18.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:54:56', tmtdew=25.7, humidity=17.63, cloud=0.0, wind=19.55, temperature=22.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:55:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:55:18.693 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:55:18.705 [DEBUG] [Thread-193643] [transport.py] [_log()] starting thread (client mode): 0xd07bc6d0
2025-11-24T16:55:18.705 [DEBUG] [Thread-193643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:55:18.719 [DEBUG] [Thread-193643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:55:18.719 [INFO] [Thread-193643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] client lang: <none>
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] server lang: <none>
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] kex follows: False
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] Compression: none
2025-11-24T16:55:18.727 [DEBUG] [Thread-193643] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:55:18.786 [DEBUG] [Thread-193643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:55:18.795 [DEBUG] [Thread-193643] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:55:18.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:55:18.795 [DEBUG] [Thread-193643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:55:18.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:55:18.843 [DEBUG] [Thread-193643] [transport.py] [_log()] userauth is OK
2025-11-24T16:55:18.843 [DEBUG] [Thread-193643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:55:18.844 [DEBUG] [Thread-193643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:55:18.844 [DEBUG] [Thread-193643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:55:18.844 [DEBUG] [Thread-193643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:55:18.862 [INFO] [Thread-193643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:55:18.863 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:55:18.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:55:19.175 [DEBUG] [Thread-193645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:55:19.687 [DEBUG] [Thread-193643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:55:19.688 [DEBUG] [Thread-193643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:55:19.735 [DEBUG] [Thread-193643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:55:19.735 [DEBUG] [Thread-193643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:55:19.744 [DEBUG] [Thread-193643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:55:19.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:55:19.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-11-24T16:55:19.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:55:19.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:55:19.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:55:19.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:55:19.778 [DEBUG] [Thread-193643] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:55:34.255 [DEBUG] [Thread-193646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:55:49.020 [DEBUG] [Thread-193647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:55:49.282 [DEBUG] [Thread-193648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:55:49.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:55:49.810 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:55:49.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-11-24T16:55:50.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 55, 28), 25.65, 17.68, 0.0, 25.81, 22.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:55:50.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:55:28
2025-11-24T16:55:50.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:55:50.898 [DEBUG] [Thread-193649] [transport.py] [_log()] starting thread (client mode): 0xd07cf400
2025-11-24T16:55:50.899 [DEBUG] [Thread-193649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:55:50.916 [DEBUG] [Thread-193649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:55:50.916 [INFO] [Thread-193649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:55:50.919 [DEBUG] [Thread-193649] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] client lang: <none>
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] server lang: <none>
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] kex follows: False
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:55:50.920 [DEBUG] [Thread-193649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:55:50.921 [DEBUG] [Thread-193649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:55:50.921 [DEBUG] [Thread-193649] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:55:50.921 [DEBUG] [Thread-193649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:55:50.921 [DEBUG] [Thread-193649] [transport.py] [_log()] Compression: none
2025-11-24T16:55:50.921 [DEBUG] [Thread-193649] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:55:50.938 [DEBUG] [Thread-193649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:55:50.940 [DEBUG] [Thread-193649] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:55:50.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:55:50.941 [DEBUG] [Thread-193649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:55:50.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:55:50.944 [DEBUG] [Thread-193649] [transport.py] [_log()] userauth is OK
2025-11-24T16:55:50.944 [DEBUG] [Thread-193649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:55:50.945 [DEBUG] [Thread-193649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:55:50.945 [DEBUG] [Thread-193649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:55:50.945 [DEBUG] [Thread-193649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:55:50.969 [INFO] [Thread-193649] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:55:50.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:55:51.563 [DEBUG] [Thread-193649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:55:51.563 [DEBUG] [Thread-193649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:55:51.563 [DEBUG] [Thread-193649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:55:51.604 [DEBUG] [Thread-193649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:55:51.605 [DEBUG] [Thread-193649] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:55:51.608 [DEBUG] [Thread-193649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:55:51.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:55:51.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:55:51.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:55:51.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:55:51.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:55:51.633 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:55:51.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:55:51.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:55:51.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:55:51.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.621921 -999.00  +21.90  17.19     23   +0.20 1 1 1 1 1   887    0 22.42 32.14 ----- 17.6 17.2 223.1 29.4 26.1 -29.0 26.0 -29.8 27.7 -26.5 28.1 -28.6
2025-11-24T16:55:51.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:55:51.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:55:51.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.621921
2025-11-24T16:55:51.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:55:51.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:55:51.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:55:51.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:55:51.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:55:51.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:55:28', tmtdew=25.65, humidity=17.68, cloud=0.0, wind=25.81, temperature=22.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:55:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:55:51.641 [DEBUG] [Thread-193649] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:55:51.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:55:51.733 [DEBUG] [Thread-193652] [transport.py] [_log()] starting thread (client mode): 0xd07cdde0
2025-11-24T16:55:51.733 [DEBUG] [Thread-193652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:55:51.749 [DEBUG] [Thread-193652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:55:51.749 [INFO] [Thread-193652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:55:51.756 [DEBUG] [Thread-193652] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:55:51.756 [DEBUG] [Thread-193652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:55:51.756 [DEBUG] [Thread-193652] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] client lang: <none>
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] server lang: <none>
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] kex follows: False
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:55:51.757 [DEBUG] [Thread-193652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:55:51.758 [DEBUG] [Thread-193652] [transport.py] [_log()] Compression: none
2025-11-24T16:55:51.758 [DEBUG] [Thread-193652] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:55:51.815 [DEBUG] [Thread-193652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:55:51.815 [DEBUG] [Thread-193652] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:55:51.816 [DEBUG] [Thread-193652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:55:51.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:55:51.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:55:51.871 [DEBUG] [Thread-193652] [transport.py] [_log()] userauth is OK
2025-11-24T16:55:51.871 [DEBUG] [Thread-193652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:55:51.871 [DEBUG] [Thread-193652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:55:51.871 [DEBUG] [Thread-193652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:55:51.871 [DEBUG] [Thread-193652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:55:51.891 [INFO] [Thread-193652] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:55:51.891 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:55:51.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:55:52.761 [DEBUG] [Thread-193652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:55:52.762 [DEBUG] [Thread-193652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:55:52.809 [DEBUG] [Thread-193652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:55:52.810 [DEBUG] [Thread-193652] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:55:52.819 [DEBUG] [Thread-193652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:55:52.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:55:52.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:55:52.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-11-24T16:55:52.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:55:52.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:55:52.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:55:52.855 [DEBUG] [Thread-193652] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:56:04.318 [DEBUG] [Thread-193654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:56:19.399 [DEBUG] [Thread-193655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:56:22.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:56:22.879 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:56:22.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-11-24T16:56:23.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 56, 1), 25.34, 18.01, 0.0, 26.64, 22.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:56:23.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:56:01
2025-11-24T16:56:23.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:56:23.904 [DEBUG] [Thread-193656] [transport.py] [_log()] starting thread (client mode): 0xd07ced70
2025-11-24T16:56:23.905 [DEBUG] [Thread-193656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:56:23.918 [DEBUG] [Thread-193656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:56:23.918 [INFO] [Thread-193656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] client lang: <none>
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] server lang: <none>
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] kex follows: False
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:56:23.922 [DEBUG] [Thread-193656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:56:23.923 [DEBUG] [Thread-193656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:56:23.923 [DEBUG] [Thread-193656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:56:23.923 [DEBUG] [Thread-193656] [transport.py] [_log()] Compression: none
2025-11-24T16:56:23.923 [DEBUG] [Thread-193656] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:56:23.948 [DEBUG] [Thread-193656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:56:23.949 [DEBUG] [Thread-193656] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:56:23.951 [DEBUG] [Thread-193656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:56:23.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:56:23.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:56:23.993 [DEBUG] [Thread-193656] [transport.py] [_log()] userauth is OK
2025-11-24T16:56:23.994 [DEBUG] [Thread-193656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:56:23.994 [DEBUG] [Thread-193656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:56:23.994 [DEBUG] [Thread-193656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:56:23.994 [DEBUG] [Thread-193656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:56:24.022 [INFO] [Thread-193656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:56:24.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:56:24.600 [DEBUG] [Thread-193656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:56:24.600 [DEBUG] [Thread-193656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:56:24.602 [DEBUG] [Thread-193656] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:56:24.641 [DEBUG] [Thread-193656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:56:24.641 [DEBUG] [Thread-193656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:56:24.643 [DEBUG] [Thread-193656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:56:24.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:56:24.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:56:24.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:56:24.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:56:24.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:56:24.664 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:56:24.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:56:24.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:56:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:56:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.621921 -999.00  +21.90  17.19     23   +0.20 1 1 1 1 1   887    0 22.42 32.14 ----- 17.6 17.2 223.1 29.4 26.1 -29.0 26.0 -29.8 27.7 -26.5 28.1 -28.6
2025-11-24T16:56:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:56:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:56:24.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.621921
2025-11-24T16:56:24.671 [DEBUG] [Thread-193656] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:56:24.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:56:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:56:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:56:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:56:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:56:24.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:56:01', tmtdew=25.34, humidity=18.01, cloud=0.0, wind=26.64, temperature=22.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:55:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:56:24.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:56:24.766 [DEBUG] [Thread-193659] [transport.py] [_log()] starting thread (client mode): 0xd07cdd20
2025-11-24T16:56:24.766 [DEBUG] [Thread-193659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:56:24.781 [DEBUG] [Thread-193659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:56:24.781 [INFO] [Thread-193659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:56:24.788 [DEBUG] [Thread-193659] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] client lang: <none>
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] server lang: <none>
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] kex follows: False
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] Compression: none
2025-11-24T16:56:24.789 [DEBUG] [Thread-193659] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:56:24.849 [DEBUG] [Thread-193659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:56:24.849 [DEBUG] [Thread-193659] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:56:24.849 [DEBUG] [Thread-193659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:56:24.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:56:24.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:56:24.907 [DEBUG] [Thread-193659] [transport.py] [_log()] userauth is OK
2025-11-24T16:56:24.907 [DEBUG] [Thread-193659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:56:24.907 [DEBUG] [Thread-193659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:56:24.907 [DEBUG] [Thread-193659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:56:24.907 [DEBUG] [Thread-193659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:56:24.928 [INFO] [Thread-193659] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:56:24.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:56:24.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:56:25.762 [DEBUG] [Thread-193659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:56:25.762 [DEBUG] [Thread-193659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:56:25.810 [DEBUG] [Thread-193659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:56:25.810 [DEBUG] [Thread-193659] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:56:25.818 [DEBUG] [Thread-193659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:56:25.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:56:25.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-11-24T16:56:25.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-11-24T16:56:25.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:56:25.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:56:25.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:56:25.853 [DEBUG] [Thread-193659] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:56:34.442 [DEBUG] [Thread-193661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:56:49.389 [DEBUG] [Thread-193662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:56:49.547 [DEBUG] [Thread-193663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:56:55.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:56:55.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:56: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-11-24T16:56:56.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 56, 34), 25.29, 18.39, 0.0, 33.58, 21.94, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:56:56.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:56:34
2025-11-24T16:56:56.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:56:57.064 [DEBUG] [Thread-193664] [transport.py] [_log()] starting thread (client mode): 0xd07bcee0
2025-11-24T16:56:57.064 [DEBUG] [Thread-193664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:56:57.083 [DEBUG] [Thread-193664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:56:57.083 [INFO] [Thread-193664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] client lang: <none>
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] server lang: <none>
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] kex follows: False
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] Compression: none
2025-11-24T16:56:57.087 [DEBUG] [Thread-193664] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:56:57.110 [DEBUG] [Thread-193664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:56:57.111 [DEBUG] [Thread-193664] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:56:57.112 [DEBUG] [Thread-193664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:56:57.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:56:57.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:56:57.152 [DEBUG] [Thread-193664] [transport.py] [_log()] userauth is OK
2025-11-24T16:56:57.153 [DEBUG] [Thread-193664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:56:57.153 [DEBUG] [Thread-193664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:56:57.153 [DEBUG] [Thread-193664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:56:57.153 [DEBUG] [Thread-193664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:56:57.170 [INFO] [Thread-193664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:56:57.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:56:57.776 [DEBUG] [Thread-193664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:56:57.776 [DEBUG] [Thread-193664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:56:57.777 [DEBUG] [Thread-193664] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:56:57.817 [DEBUG] [Thread-193664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:56:57.817 [DEBUG] [Thread-193664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:56:57.820 [DEBUG] [Thread-193664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:56:57.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:56:57.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:56:57.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:56:57.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:56:57.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:56:57.846 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:56:57.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:56:57.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:56:57.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:56:57.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.622269 -999.00  +22.00  27.89     23   +0.30 1 1 1 1 1   887    0 22.45 27.29 ----- 26.2 27.9 181.4 31.9 26.2 -29.3 25.9 -32.8 27.5 -29.1 28.0 -30.8
2025-11-24T16:56:57.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:56:57.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:56:57.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.622269
2025-11-24T16:56:57.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:56:57.859 [DEBUG] [Thread-193664] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:56:57.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:56:57.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:56:57.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:56:57.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:56:57.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:56:34', tmtdew=25.29, humidity=18.39, cloud=0.0, wind=33.58, temperature=21.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:56:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:56:57.935 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:56:57.947 [DEBUG] [Thread-193667] [transport.py] [_log()] starting thread (client mode): 0xd07bdc60
2025-11-24T16:56:57.948 [DEBUG] [Thread-193667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:56:57.962 [DEBUG] [Thread-193667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:56:57.962 [INFO] [Thread-193667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] client lang: <none>
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] server lang: <none>
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] kex follows: False
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] Compression: none
2025-11-24T16:56:57.969 [DEBUG] [Thread-193667] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:56:58.026 [DEBUG] [Thread-193667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:56:58.026 [DEBUG] [Thread-193667] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:56:58.026 [DEBUG] [Thread-193667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:56:58.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:56:58.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:56:58.082 [DEBUG] [Thread-193667] [transport.py] [_log()] userauth is OK
2025-11-24T16:56:58.082 [DEBUG] [Thread-193667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:56:58.082 [DEBUG] [Thread-193667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:56:58.083 [DEBUG] [Thread-193667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:56:58.083 [DEBUG] [Thread-193667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:56:58.096 [INFO] [Thread-193667] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:56:58.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:56:58.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:56:58.904 [DEBUG] [Thread-193667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:56:58.904 [DEBUG] [Thread-193667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:56:58.952 [DEBUG] [Thread-193667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:56:58.952 [DEBUG] [Thread-193667] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:56:58.960 [DEBUG] [Thread-193667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:56:58.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:56:58.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-11-24T16:56:58.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-11-24T16:56:58.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:56:58.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:56:58.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:56:58.994 [DEBUG] [Thread-193667] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:57:04.618 [DEBUG] [Thread-193669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:57:19.716 [DEBUG] [Thread-193670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:57:29.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:57:29.026 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:57:29.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-11-24T16:57:30.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 57, 6), 25.25, 18.42, 0.0, 30.74, 21.91, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:57:30.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:57:06
2025-11-24T16:57:30.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:57:30.336 [DEBUG] [Thread-193671] [transport.py] [_log()] starting thread (client mode): 0xd07bf850
2025-11-24T16:57:30.337 [DEBUG] [Thread-193671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:57:30.352 [DEBUG] [Thread-193671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:57:30.352 [INFO] [Thread-193671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] client lang: <none>
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] server lang: <none>
2025-11-24T16:57:30.355 [DEBUG] [Thread-193671] [transport.py] [_log()] kex follows: False
2025-11-24T16:57:30.356 [DEBUG] [Thread-193671] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:57:30.356 [DEBUG] [Thread-193671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:57:30.356 [DEBUG] [Thread-193671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:57:30.356 [DEBUG] [Thread-193671] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:57:30.356 [DEBUG] [Thread-193671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:57:30.356 [DEBUG] [Thread-193671] [transport.py] [_log()] Compression: none
2025-11-24T16:57:30.356 [DEBUG] [Thread-193671] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:57:30.388 [DEBUG] [Thread-193671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:57:30.392 [DEBUG] [Thread-193671] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:57:30.393 [DEBUG] [Thread-193671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:57:30.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:57:30.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:57:30.399 [DEBUG] [Thread-193671] [transport.py] [_log()] userauth is OK
2025-11-24T16:57:30.399 [DEBUG] [Thread-193671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:57:30.400 [DEBUG] [Thread-193671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:57:30.400 [DEBUG] [Thread-193671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:57:30.400 [DEBUG] [Thread-193671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:57:30.426 [INFO] [Thread-193671] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:57:30.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:57:31.007 [DEBUG] [Thread-193671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:57:31.007 [DEBUG] [Thread-193671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:57:31.017 [DEBUG] [Thread-193671] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:57:31.048 [DEBUG] [Thread-193671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:57:31.048 [DEBUG] [Thread-193671] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:57:31.050 [DEBUG] [Thread-193671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:57:31.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:57:31.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:57:31.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:57:31.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:57:31.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:57:31.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:57:31.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:57:31.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:57:31.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:57:31.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.622621 -999.00  +21.80  26.23     23   +0.30 1 1 1 1 1   887    0 22.64 23.81 ----- 30.6 26.2 171.6 33.4 26.0 -29.7 25.6 -33.3 27.4 -27.9 27.9 -30.0
2025-11-24T16:57:31.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:57:31.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:57:31.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.622621
2025-11-24T16:57:31.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:57:31.075 [DEBUG] [Thread-193671] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:57:31.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:57:31.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:57:31.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:57:31.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:57:31.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:57:06', tmtdew=25.25, humidity=18.42, cloud=0.0, wind=30.74, temperature=21.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:56:34.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:57:31.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:57:31.168 [DEBUG] [Thread-193674] [transport.py] [_log()] starting thread (client mode): 0xd07ccca0
2025-11-24T16:57:31.168 [DEBUG] [Thread-193674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:57:31.184 [DEBUG] [Thread-193674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:57:31.184 [INFO] [Thread-193674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:57:31.192 [DEBUG] [Thread-193674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:57:31.193 [DEBUG] [Thread-193674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:57:31.193 [DEBUG] [Thread-193674] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:57:31.193 [DEBUG] [Thread-193674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:57:31.193 [DEBUG] [Thread-193674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:57:31.193 [DEBUG] [Thread-193674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:57:31.193 [DEBUG] [Thread-193674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:57:31.194 [DEBUG] [Thread-193674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:57:31.194 [DEBUG] [Thread-193674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:57:31.194 [DEBUG] [Thread-193674] [transport.py] [_log()] client lang: <none>
2025-11-24T16:57:31.194 [DEBUG] [Thread-193674] [transport.py] [_log()] server lang: <none>
2025-11-24T16:57:31.194 [DEBUG] [Thread-193674] [transport.py] [_log()] kex follows: False
2025-11-24T16:57:31.194 [DEBUG] [Thread-193674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:57:31.194 [DEBUG] [Thread-193674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:57:31.194 [DEBUG] [Thread-193674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:57:31.195 [DEBUG] [Thread-193674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:57:31.195 [DEBUG] [Thread-193674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:57:31.195 [DEBUG] [Thread-193674] [transport.py] [_log()] Compression: none
2025-11-24T16:57:31.195 [DEBUG] [Thread-193674] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:57:31.251 [DEBUG] [Thread-193674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:57:31.252 [DEBUG] [Thread-193674] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:57:31.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:57:31.253 [DEBUG] [Thread-193674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:57:31.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:57:31.311 [DEBUG] [Thread-193674] [transport.py] [_log()] userauth is OK
2025-11-24T16:57:31.311 [DEBUG] [Thread-193674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:57:31.312 [DEBUG] [Thread-193674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:57:31.312 [DEBUG] [Thread-193674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:57:31.312 [DEBUG] [Thread-193674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:57:31.332 [INFO] [Thread-193674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:57:31.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:57:31.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:57:32.207 [DEBUG] [Thread-193674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:57:32.207 [DEBUG] [Thread-193674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:57:32.255 [DEBUG] [Thread-193674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:57:32.255 [DEBUG] [Thread-193674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:57:32.264 [DEBUG] [Thread-193674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:57:32.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:57:32.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-11-24T16:57:32.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-11-24T16:57:32.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:57:32.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:57:32.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:57:32.305 [DEBUG] [Thread-193674] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:57:34.748 [DEBUG] [Thread-193676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:57:49.638 [DEBUG] [Thread-193677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:57:49.785 [DEBUG] [Thread-193678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:58:02.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:58:02.324 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:58: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-11-24T16:58:03.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 57, 39), 25.04, 18.47, 0.0, 25.35, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:58:03.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:57:39
2025-11-24T16:58:03.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:58:03.811 [DEBUG] [Thread-193679] [transport.py] [_log()] starting thread (client mode): 0xd07cdab0
2025-11-24T16:58:03.811 [DEBUG] [Thread-193679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:58:03.825 [DEBUG] [Thread-193679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:58:03.826 [INFO] [Thread-193679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:58:03.827 [DEBUG] [Thread-193679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] client lang: <none>
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] server lang: <none>
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] kex follows: False
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:58:03.828 [DEBUG] [Thread-193679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:58:03.829 [DEBUG] [Thread-193679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:58:03.829 [DEBUG] [Thread-193679] [transport.py] [_log()] Compression: none
2025-11-24T16:58:03.829 [DEBUG] [Thread-193679] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:58:03.846 [DEBUG] [Thread-193679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:58:03.847 [DEBUG] [Thread-193679] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:58:03.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:58:03.850 [DEBUG] [Thread-193679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:58:03.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:58:03.856 [DEBUG] [Thread-193679] [transport.py] [_log()] userauth is OK
2025-11-24T16:58:03.856 [DEBUG] [Thread-193679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:58:03.856 [DEBUG] [Thread-193679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:58:03.856 [DEBUG] [Thread-193679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:58:03.856 [DEBUG] [Thread-193679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:58:03.874 [INFO] [Thread-193679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:58:03.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:58:04.462 [DEBUG] [Thread-193679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:58:04.462 [DEBUG] [Thread-193679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:58:04.463 [DEBUG] [Thread-193679] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:58:04.503 [DEBUG] [Thread-193679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:58:04.503 [DEBUG] [Thread-193679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:58:04.505 [DEBUG] [Thread-193679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:58:04.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:58:04.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:58:04.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:58:04.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:58:04.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:58:04.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:58:04.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:58:04.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:58:04.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:58:04.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.623316 -999.00  +21.80  18.14     24   +0.40 1 1 1 1 1   887    0 22.26 18.64 ----- 19.2 18.1 200.0 23.0 25.9 -29.2 25.7 -28.1 27.5 -28.3 27.9 -30.3
2025-11-24T16:58:04.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:58:04.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:58:04.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.623316
2025-11-24T16:58:04.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:58:04.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:58:04.529 [DEBUG] [Thread-193679] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:58:04.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:58:04.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:58:04.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:58:04.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:57:39', tmtdew=25.04, humidity=18.47, cloud=0.0, wind=25.35, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:57:34.502', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:58:04.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:58:04.624 [DEBUG] [Thread-193682] [transport.py] [_log()] starting thread (client mode): 0xd7bc5bd0
2025-11-24T16:58:04.624 [DEBUG] [Thread-193682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:58:04.639 [DEBUG] [Thread-193682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:58:04.639 [INFO] [Thread-193682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:58:04.647 [DEBUG] [Thread-193682] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:58:04.647 [DEBUG] [Thread-193682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:58:04.647 [DEBUG] [Thread-193682] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:58:04.647 [DEBUG] [Thread-193682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:58:04.647 [DEBUG] [Thread-193682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:58:04.647 [DEBUG] [Thread-193682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:58:04.647 [DEBUG] [Thread-193682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:58:04.647 [DEBUG] [Thread-193682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:58:04.647 [DEBUG] [Thread-193682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:58:04.648 [DEBUG] [Thread-193682] [transport.py] [_log()] client lang: <none>
2025-11-24T16:58:04.648 [DEBUG] [Thread-193682] [transport.py] [_log()] server lang: <none>
2025-11-24T16:58:04.648 [DEBUG] [Thread-193682] [transport.py] [_log()] kex follows: False
2025-11-24T16:58:04.648 [DEBUG] [Thread-193682] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:58:04.648 [DEBUG] [Thread-193682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:58:04.648 [DEBUG] [Thread-193682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:58:04.648 [DEBUG] [Thread-193682] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:58:04.648 [DEBUG] [Thread-193682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:58:04.648 [DEBUG] [Thread-193682] [transport.py] [_log()] Compression: none
2025-11-24T16:58:04.648 [DEBUG] [Thread-193682] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:58:04.713 [DEBUG] [Thread-193682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:58:04.714 [DEBUG] [Thread-193682] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:58:04.714 [DEBUG] [Thread-193682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:58:04.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:58:04.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:58:04.771 [DEBUG] [Thread-193682] [transport.py] [_log()] userauth is OK
2025-11-24T16:58:04.771 [DEBUG] [Thread-193682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:58:04.772 [DEBUG] [Thread-193682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:58:04.772 [DEBUG] [Thread-193682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:58:04.772 [DEBUG] [Thread-193682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:58:04.794 [INFO] [Thread-193682] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:58: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-11-24T16:58:04.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:58:04.817 [DEBUG] [Thread-193684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:58:05.632 [DEBUG] [Thread-193682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:58:05.632 [DEBUG] [Thread-193682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:58:05.680 [DEBUG] [Thread-193682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:58:05.680 [DEBUG] [Thread-193682] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:58:05.689 [DEBUG] [Thread-193682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:58:05.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:58:05.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-11-24T16:58:05.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-11-24T16:58:05.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:58:05.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:58:05.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:58:05.734 [DEBUG] [Thread-193682] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:58:19.912 [DEBUG] [Thread-193685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:58:34.970 [DEBUG] [Thread-193686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:58:35.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:58:35.767 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:58:35.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-11-24T16:58:36.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 58, 12), 24.79, 18.77, 0.0, 26.94, 21.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:58:36.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:58:12
2025-11-24T16:58:36.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:58:36.912 [DEBUG] [Thread-193687] [transport.py] [_log()] starting thread (client mode): 0xd7bc6cb0
2025-11-24T16:58:36.912 [DEBUG] [Thread-193687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:58:36.924 [DEBUG] [Thread-193687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:58:36.924 [INFO] [Thread-193687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:58:36.929 [DEBUG] [Thread-193687] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:58:36.930 [DEBUG] [Thread-193687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:58:36.930 [DEBUG] [Thread-193687] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:58:36.930 [DEBUG] [Thread-193687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:58:36.930 [DEBUG] [Thread-193687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:58:36.930 [DEBUG] [Thread-193687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:58:36.930 [DEBUG] [Thread-193687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:58:36.930 [DEBUG] [Thread-193687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:58:36.930 [DEBUG] [Thread-193687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:58:36.930 [DEBUG] [Thread-193687] [transport.py] [_log()] client lang: <none>
2025-11-24T16:58:36.930 [DEBUG] [Thread-193687] [transport.py] [_log()] server lang: <none>
2025-11-24T16:58:36.931 [DEBUG] [Thread-193687] [transport.py] [_log()] kex follows: False
2025-11-24T16:58:36.931 [DEBUG] [Thread-193687] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:58:36.931 [DEBUG] [Thread-193687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:58:36.931 [DEBUG] [Thread-193687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:58:36.932 [DEBUG] [Thread-193687] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:58:36.932 [DEBUG] [Thread-193687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:58:36.932 [DEBUG] [Thread-193687] [transport.py] [_log()] Compression: none
2025-11-24T16:58:36.932 [DEBUG] [Thread-193687] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:58:36.956 [DEBUG] [Thread-193687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:58:36.959 [DEBUG] [Thread-193687] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:58:36.961 [DEBUG] [Thread-193687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:58:36.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:58:36.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:58:36.966 [DEBUG] [Thread-193687] [transport.py] [_log()] userauth is OK
2025-11-24T16:58:36.967 [DEBUG] [Thread-193687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:58:36.967 [DEBUG] [Thread-193687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:58:36.967 [DEBUG] [Thread-193687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:58:36.967 [DEBUG] [Thread-193687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:58:36.992 [INFO] [Thread-193687] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:58:36.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:58:37.563 [DEBUG] [Thread-193687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:58:37.564 [DEBUG] [Thread-193687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:58:37.573 [DEBUG] [Thread-193687] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:58:37.604 [DEBUG] [Thread-193687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:58:37.604 [DEBUG] [Thread-193687] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:58:37.607 [DEBUG] [Thread-193687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:58:37.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:58:37.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:58:37.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:58:37.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:58:37.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:58:37.627 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:58:37.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:58:37.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:58:37.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:58:37.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.623663 -999.00  +21.90  27.71     23   +0.30 1 1 1 1 1   887    0 21.91 15.30 ----- 28.4 27.7 194.0 36.5 25.9 -30.2 25.5 -33.5 27.3 -27.1 27.7 -28.7
2025-11-24T16:58:37.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:58:37.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:58:37.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.623663
2025-11-24T16:58:37.633 [DEBUG] [Thread-193687] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:58:37.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:58:37.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:58:37.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:58:37.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:58:37.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:58:37.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:58:12', tmtdew=24.79, humidity=18.77, cloud=0.0, wind=26.94, temperature=21.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:58:04.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:58:37.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:58:37.732 [DEBUG] [Thread-193690] [transport.py] [_log()] starting thread (client mode): 0xd07cee30
2025-11-24T16:58:37.732 [DEBUG] [Thread-193690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:58:37.746 [DEBUG] [Thread-193690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:58:37.746 [INFO] [Thread-193690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] client lang: <none>
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] server lang: <none>
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] kex follows: False
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:58:37.754 [DEBUG] [Thread-193690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:58:37.755 [DEBUG] [Thread-193690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:58:37.755 [DEBUG] [Thread-193690] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:58:37.755 [DEBUG] [Thread-193690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:58:37.755 [DEBUG] [Thread-193690] [transport.py] [_log()] Compression: none
2025-11-24T16:58:37.755 [DEBUG] [Thread-193690] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:58:37.810 [DEBUG] [Thread-193690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:58:37.810 [DEBUG] [Thread-193690] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:58:37.810 [DEBUG] [Thread-193690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:58:37.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:58:37.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:58:37.866 [DEBUG] [Thread-193690] [transport.py] [_log()] userauth is OK
2025-11-24T16:58:37.867 [DEBUG] [Thread-193690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:58:37.867 [DEBUG] [Thread-193690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:58:37.867 [DEBUG] [Thread-193690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:58:37.867 [DEBUG] [Thread-193690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:58:37.884 [INFO] [Thread-193690] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:58:37.884 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:58:37.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:58:38.737 [DEBUG] [Thread-193690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:58:38.737 [DEBUG] [Thread-193690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:58:38.784 [DEBUG] [Thread-193690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:58:38.785 [DEBUG] [Thread-193690] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:58:38.797 [DEBUG] [Thread-193690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:58:38.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:58:38.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:58:38.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-11-24T16:58:38.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:58:38.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:58:38.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:58:38.849 [DEBUG] [Thread-193690] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:58:49.880 [DEBUG] [Thread-193692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:58:49.999 [DEBUG] [Thread-193693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:59:05.102 [DEBUG] [Thread-193694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:59:08.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:59:08.843 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:59:08.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-11-24T16:59:10.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 58, 44), 25.32, 18.11, 0.0, 27.15, 21.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:59:10.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:58:44
2025-11-24T16:59:10.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:59:10.415 [DEBUG] [Thread-193695] [transport.py] [_log()] starting thread (client mode): 0xd07bce20
2025-11-24T16:59:10.416 [DEBUG] [Thread-193695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:59:10.428 [DEBUG] [Thread-193695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:59:10.428 [INFO] [Thread-193695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] client lang: <none>
2025-11-24T16:59:10.432 [DEBUG] [Thread-193695] [transport.py] [_log()] server lang: <none>
2025-11-24T16:59:10.433 [DEBUG] [Thread-193695] [transport.py] [_log()] kex follows: False
2025-11-24T16:59:10.433 [DEBUG] [Thread-193695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:59:10.433 [DEBUG] [Thread-193695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:59:10.433 [DEBUG] [Thread-193695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:59:10.434 [DEBUG] [Thread-193695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:59:10.434 [DEBUG] [Thread-193695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:59:10.434 [DEBUG] [Thread-193695] [transport.py] [_log()] Compression: none
2025-11-24T16:59:10.434 [DEBUG] [Thread-193695] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:59:10.448 [DEBUG] [Thread-193695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:59:10.450 [DEBUG] [Thread-193695] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:59:10.452 [DEBUG] [Thread-193695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:59:10.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:59:10.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:59:10.455 [DEBUG] [Thread-193695] [transport.py] [_log()] userauth is OK
2025-11-24T16:59:10.455 [DEBUG] [Thread-193695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:59:10.455 [DEBUG] [Thread-193695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:59:10.455 [DEBUG] [Thread-193695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:59:10.455 [DEBUG] [Thread-193695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:59:10.482 [INFO] [Thread-193695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:59:10.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:59:11.068 [DEBUG] [Thread-193695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:59:11.069 [DEBUG] [Thread-193695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:59:11.069 [DEBUG] [Thread-193695] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:59:11.109 [DEBUG] [Thread-193695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:59:11.110 [DEBUG] [Thread-193695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:59:11.113 [DEBUG] [Thread-193695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:59:11.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:59:11.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:59:11.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:59:11.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:59:11.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:59:11.129 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:59:11.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:59:11.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:59:11.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:59:11.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.624352 -999.00  +21.70  27.18     24   +0.30 1 1 1 1 1   887    0 22.47 11.86 ----- 21.0 27.2 197.2 40.4 25.7 -30.1 25.4 -29.8 27.2 -27.5 27.6 -29.6
2025-11-24T16:59:11.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:59:11.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:59:11.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.624352
2025-11-24T16:59:11.136 [DEBUG] [Thread-193695] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:59:11.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:59:11.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:59:11.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:59:11.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:59:11.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:59:11.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:58:44', tmtdew=25.32, humidity=18.11, cloud=0.0, wind=27.15, temperature=21.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:59:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:59:11.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:59:11.266 [DEBUG] [Thread-193698] [transport.py] [_log()] starting thread (client mode): 0xd3135ae0
2025-11-24T16:59:11.267 [DEBUG] [Thread-193698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:59:11.283 [DEBUG] [Thread-193698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:59:11.283 [INFO] [Thread-193698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] client lang: <none>
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] server lang: <none>
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] kex follows: False
2025-11-24T16:59:11.291 [DEBUG] [Thread-193698] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:59:11.292 [DEBUG] [Thread-193698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:59:11.292 [DEBUG] [Thread-193698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:59:11.292 [DEBUG] [Thread-193698] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:59:11.292 [DEBUG] [Thread-193698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:59:11.292 [DEBUG] [Thread-193698] [transport.py] [_log()] Compression: none
2025-11-24T16:59:11.292 [DEBUG] [Thread-193698] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:59:11.353 [DEBUG] [Thread-193698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:59:11.354 [DEBUG] [Thread-193698] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:59:11.354 [DEBUG] [Thread-193698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:59:11.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:59:11.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:59:11.411 [DEBUG] [Thread-193698] [transport.py] [_log()] userauth is OK
2025-11-24T16:59:11.412 [DEBUG] [Thread-193698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:59:11.412 [DEBUG] [Thread-193698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:59:11.412 [DEBUG] [Thread-193698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:59:11.412 [DEBUG] [Thread-193698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:59:11.435 [INFO] [Thread-193698] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:59:11.436 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:59:11.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:59:12.307 [DEBUG] [Thread-193698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:59:12.307 [DEBUG] [Thread-193698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:59:12.355 [DEBUG] [Thread-193698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:59:12.355 [DEBUG] [Thread-193698] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:59:12.364 [DEBUG] [Thread-193698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:59:12.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:59:12.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-11-24T16:59:12.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T16:59:12.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:59:12.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:59:12.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:59:12.399 [DEBUG] [Thread-193698] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:59:20.144 [DEBUG] [Thread-193700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:59:35.200 [DEBUG] [Thread-193701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:59:42.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T16:59:42.422 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T16:59:42.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-11-24T16:59:43.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 59, 17), 25.25, 18.21, 0.0, 32.27, 22.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T16:59:43.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:59:17
2025-11-24T16:59:43.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T16:59:43.598 [DEBUG] [Thread-193702] [transport.py] [_log()] starting thread (client mode): 0xd07ce2f0
2025-11-24T16:59:43.599 [DEBUG] [Thread-193702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:59:43.612 [DEBUG] [Thread-193702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T16:59:43.612 [INFO] [Thread-193702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T16:59:43.616 [DEBUG] [Thread-193702] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:59:43.616 [DEBUG] [Thread-193702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T16:59:43.616 [DEBUG] [Thread-193702] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:59:43.617 [DEBUG] [Thread-193702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:59:43.617 [DEBUG] [Thread-193702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:59:43.617 [DEBUG] [Thread-193702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:59:43.617 [DEBUG] [Thread-193702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:59:43.617 [DEBUG] [Thread-193702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:59:43.617 [DEBUG] [Thread-193702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:59:43.617 [DEBUG] [Thread-193702] [transport.py] [_log()] client lang: <none>
2025-11-24T16:59:43.617 [DEBUG] [Thread-193702] [transport.py] [_log()] server lang: <none>
2025-11-24T16:59:43.617 [DEBUG] [Thread-193702] [transport.py] [_log()] kex follows: False
2025-11-24T16:59:43.617 [DEBUG] [Thread-193702] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:59:43.618 [DEBUG] [Thread-193702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:59:43.618 [DEBUG] [Thread-193702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:59:43.618 [DEBUG] [Thread-193702] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:59:43.618 [DEBUG] [Thread-193702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:59:43.618 [DEBUG] [Thread-193702] [transport.py] [_log()] Compression: none
2025-11-24T16:59:43.618 [DEBUG] [Thread-193702] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:59:43.652 [DEBUG] [Thread-193702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:59:43.657 [DEBUG] [Thread-193702] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:59:43.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T16:59:43.661 [DEBUG] [Thread-193702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T16:59:43.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:59:43.665 [DEBUG] [Thread-193702] [transport.py] [_log()] userauth is OK
2025-11-24T16:59:43.665 [DEBUG] [Thread-193702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:59:43.665 [DEBUG] [Thread-193702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:59:43.665 [DEBUG] [Thread-193702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T16:59:43.665 [DEBUG] [Thread-193702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:59:43.685 [INFO] [Thread-193702] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:59:43.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:59:44.281 [DEBUG] [Thread-193702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:59:44.281 [DEBUG] [Thread-193702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:59:44.290 [DEBUG] [Thread-193702] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T16:59:44.322 [DEBUG] [Thread-193702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:59:44.322 [DEBUG] [Thread-193702] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:59:44.325 [DEBUG] [Thread-193702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:59:44.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:59:44.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T16:59:44.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T16:59:44.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T16:59:44.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:59:44.346 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T16:59:44.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:59:44.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:59:44.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T16:59:44.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.624704 -999.00  +21.60  31.76     24   +0.20 1 1 2 1 1   887    0 21.57 9.85 ----- 25.4 31.8 181.2 36.8 25.6 -30.0 25.2 -32.3 26.9 -29.6 27.3 -31.5
2025-11-24T16:59:44.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T16:59:44.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T16:59:44.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.624704
2025-11-24T16:59:44.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T16:59:44.357 [DEBUG] [Thread-193702] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:59:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T16:59:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T16:59:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T16:59:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T16:59:44.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:59:17', tmtdew=25.25, humidity=18.21, cloud=0.0, wind=32.27, temperature=22.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T14:59:34.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T16:59:44.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T16:59:44.450 [DEBUG] [Thread-193705] [transport.py] [_log()] starting thread (client mode): 0xd7bc5f00
2025-11-24T16:59:44.450 [DEBUG] [Thread-193705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T16:59:44.464 [DEBUG] [Thread-193705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T16:59:44.464 [INFO] [Thread-193705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] client lang: <none>
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] server lang: <none>
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] kex follows: False
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T16:59:44.472 [DEBUG] [Thread-193705] [transport.py] [_log()] Compression: none
2025-11-24T16:59:44.474 [DEBUG] [Thread-193705] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T16:59:44.529 [DEBUG] [Thread-193705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T16:59:44.530 [DEBUG] [Thread-193705] [transport.py] [_log()] Switch to new keys ...
2025-11-24T16:59:44.530 [DEBUG] [Thread-193705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T16:59:44.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T16:59:44.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T16:59:44.587 [DEBUG] [Thread-193705] [transport.py] [_log()] userauth is OK
2025-11-24T16:59:44.588 [DEBUG] [Thread-193705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T16:59:44.588 [DEBUG] [Thread-193705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T16:59:44.588 [DEBUG] [Thread-193705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T16:59:44.588 [DEBUG] [Thread-193705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T16:59:44.607 [INFO] [Thread-193705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T16:59:44.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T16:59:44.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T16:59:45.441 [DEBUG] [Thread-193705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T16:59:45.441 [DEBUG] [Thread-193705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T16:59:45.489 [DEBUG] [Thread-193705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T16:59:45.489 [DEBUG] [Thread-193705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T16:59:45.497 [DEBUG] [Thread-193705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T16:59:45.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T16:59:45.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T16:59:45.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-11-24T16:59:45.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T16:59:45.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T16:59:45.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T16:59:45.537 [DEBUG] [Thread-193705] [transport.py] [_log()] EOF in transport thread
2025-11-24T16:59:50.219 [DEBUG] [Thread-193707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T16:59:50.229 [DEBUG] [Thread-193708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:00:05.273 [DEBUG] [Thread-193709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:00:15.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:00:15.545 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:00:15.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:00:16.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 16, 59, 50), 25.17, 18.12, 0.0, 34.11, 21.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:00:16.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 16:59:50
2025-11-24T17:00:16.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:00:16.658 [DEBUG] [Thread-193710] [transport.py] [_log()] starting thread (client mode): 0xd3136b30
2025-11-24T17:00:16.659 [DEBUG] [Thread-193710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:00:16.668 [DEBUG] [Thread-193710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:00:16.668 [INFO] [Thread-193710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:00:16.673 [DEBUG] [Thread-193710] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] client lang: <none>
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] server lang: <none>
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] kex follows: False
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:00:16.674 [DEBUG] [Thread-193710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:00:16.675 [DEBUG] [Thread-193710] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:00:16.675 [DEBUG] [Thread-193710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:00:16.675 [DEBUG] [Thread-193710] [transport.py] [_log()] Compression: none
2025-11-24T17:00:16.675 [DEBUG] [Thread-193710] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:00:16.705 [DEBUG] [Thread-193710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:00:16.709 [DEBUG] [Thread-193710] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:00:16.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:00:16.711 [DEBUG] [Thread-193710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:00:16.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:00:16.714 [DEBUG] [Thread-193710] [transport.py] [_log()] userauth is OK
2025-11-24T17:00:16.714 [DEBUG] [Thread-193710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:00:16.714 [DEBUG] [Thread-193710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:00:16.714 [DEBUG] [Thread-193710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:00:16.714 [DEBUG] [Thread-193710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:00:16.732 [INFO] [Thread-193710] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:00:16.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:00:17.316 [DEBUG] [Thread-193710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:00:17.317 [DEBUG] [Thread-193710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:00:17.317 [DEBUG] [Thread-193710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:00:17.358 [DEBUG] [Thread-193710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:00:17.358 [DEBUG] [Thread-193710] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:00:17.360 [DEBUG] [Thread-193710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:00:17.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:00:17.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:00:17.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:00:17.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:00:17.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:00:17.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:00:17.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:00:17.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:00:17.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:00:17.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.625052 -999.00  +21.50  17.56     24   +0.20 1 1 1 1 1   887    0 21.92 7.05 ----- 22.6 17.6 189.9 32.9 25.5 -28.8 25.3 -30.1 27.1 -27.1 27.3 -29.5
2025-11-24T17:00:17.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:00:17.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:00:17.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.625052
2025-11-24T17:00:17.406 [DEBUG] [Thread-193710] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:00:17.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:00:17.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:00:17.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:00:17.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:00:17.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:00:17.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T16:59:50', tmtdew=25.17, humidity=18.12, cloud=0.0, wind=34.11, temperature=21.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:00:04.493', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:00:17.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:00:17.502 [DEBUG] [Thread-193713] [transport.py] [_log()] starting thread (client mode): 0xd3136ad0
2025-11-24T17:00:17.503 [DEBUG] [Thread-193713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:00:17.517 [DEBUG] [Thread-193713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:00:17.517 [INFO] [Thread-193713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:00:17.524 [DEBUG] [Thread-193713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] client lang: <none>
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] server lang: <none>
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] kex follows: False
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] Compression: none
2025-11-24T17:00:17.525 [DEBUG] [Thread-193713] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:00:17.585 [DEBUG] [Thread-193713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:00:17.585 [DEBUG] [Thread-193713] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:00:17.586 [DEBUG] [Thread-193713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:00:17.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:00:17.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:00:17.642 [DEBUG] [Thread-193713] [transport.py] [_log()] userauth is OK
2025-11-24T17:00:17.642 [DEBUG] [Thread-193713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:00:17.642 [DEBUG] [Thread-193713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:00:17.643 [DEBUG] [Thread-193713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:00:17.643 [DEBUG] [Thread-193713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:00:17.656 [INFO] [Thread-193713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:00:17.657 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:00:17.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:00:18.529 [DEBUG] [Thread-193713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:00:18.530 [DEBUG] [Thread-193713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:00:18.580 [DEBUG] [Thread-193713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:00:18.580 [DEBUG] [Thread-193713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:00:18.590 [DEBUG] [Thread-193713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:00:18.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:00:18.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-11-24T17:00:18.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:00:18.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:00:18.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:00:18.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:00:18.632 [DEBUG] [Thread-193713] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:00:20.322 [DEBUG] [Thread-193715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:00:35.431 [DEBUG] [Thread-193716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:00:48.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:00:48.666 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:00:48.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-11-24T17:00:49.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 0, 23), 25.08, 18.21, 0.0, 31.64, 21.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:00:49.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:00:23
2025-11-24T17:00:49.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:00:49.803 [DEBUG] [Thread-193717] [transport.py] [_log()] starting thread (client mode): 0xd07cd450
2025-11-24T17:00:49.803 [DEBUG] [Thread-193717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:00:49.814 [DEBUG] [Thread-193717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:00:49.815 [INFO] [Thread-193717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:00:49.817 [DEBUG] [Thread-193717] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] client lang: <none>
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] server lang: <none>
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] kex follows: False
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:00:49.818 [DEBUG] [Thread-193717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:00:49.819 [DEBUG] [Thread-193717] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:00:49.819 [DEBUG] [Thread-193717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:00:49.819 [DEBUG] [Thread-193717] [transport.py] [_log()] Compression: none
2025-11-24T17:00:49.819 [DEBUG] [Thread-193717] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:00:49.841 [DEBUG] [Thread-193717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:00:49.842 [DEBUG] [Thread-193717] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:00:49.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:00:49.845 [DEBUG] [Thread-193717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:00:49.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:00:49.847 [DEBUG] [Thread-193717] [transport.py] [_log()] userauth is OK
2025-11-24T17:00:49.847 [DEBUG] [Thread-193717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:00:49.847 [DEBUG] [Thread-193717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:00:49.847 [DEBUG] [Thread-193717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:00:49.847 [DEBUG] [Thread-193717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:00:49.883 [INFO] [Thread-193717] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:00:49.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:00:50.463 [DEBUG] [Thread-193719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:00:50.489 [DEBUG] [Thread-193717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:00:50.489 [DEBUG] [Thread-193717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:00:50.490 [DEBUG] [Thread-193717] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:00:50.530 [DEBUG] [Thread-193717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:00:50.530 [DEBUG] [Thread-193717] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:00:50.532 [DEBUG] [Thread-193717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:00:50.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:00:50.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:00:50.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:00:50.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:00:50.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:00:50.543 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:00:50.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:00:50.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:00:50.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:00:50.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.625399 -999.00  +21.50  18.14     24   +0.20 1 1 1 1 1   887    0 22.04 4.45 ----- 14.7 18.1 184.4 28.3 25.4 -29.8 25.1 -28.8 27.0 -26.6 27.4 -29.1
2025-11-24T17:00:50.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:00:50.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:00:50.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.625399
2025-11-24T17:00:50.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:00:50.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:00:50.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:00:50.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:00:50.547 [DEBUG] [Thread-193717] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:00:50.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:00:50.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:00:23', tmtdew=25.08, humidity=18.21, cloud=0.0, wind=31.64, temperature=21.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:00:34.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:00:50.563 [DEBUG] [Thread-193721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:00:50.622 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:00:50.633 [DEBUG] [Thread-193722] [transport.py] [_log()] starting thread (client mode): 0xd3161a80
2025-11-24T17:00:50.633 [DEBUG] [Thread-193722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:00:50.648 [DEBUG] [Thread-193722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:00:50.648 [INFO] [Thread-193722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] client lang: <none>
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] server lang: <none>
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] kex follows: False
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] Compression: none
2025-11-24T17:00:50.656 [DEBUG] [Thread-193722] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:00:50.713 [DEBUG] [Thread-193722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:00:50.713 [DEBUG] [Thread-193722] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:00:50.714 [DEBUG] [Thread-193722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:00:50.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:00:50.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:00:50.770 [DEBUG] [Thread-193722] [transport.py] [_log()] userauth is OK
2025-11-24T17:00:50.770 [DEBUG] [Thread-193722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:00:50.770 [DEBUG] [Thread-193722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:00:50.770 [DEBUG] [Thread-193722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:00:50.770 [DEBUG] [Thread-193722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:00:50.784 [INFO] [Thread-193722] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:00:50.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:00:50.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:00:51.684 [DEBUG] [Thread-193722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:00:51.684 [DEBUG] [Thread-193722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:00:51.732 [DEBUG] [Thread-193722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:00:51.732 [DEBUG] [Thread-193722] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:00:51.740 [DEBUG] [Thread-193722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:00:51.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:00:51.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-11-24T17:00:51.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:00:51.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:00:51.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:00:51.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:00:51.772 [DEBUG] [Thread-193722] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:01:05.542 [DEBUG] [Thread-193724 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:01:20.676 [DEBUG] [Thread-193725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:01:21.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:01:21.798 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:01:21.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-11-24T17:01:23.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 0, 55), 25.0, 18.69, 0.0, 27.42, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:01:23.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:00:55
2025-11-24T17:01:23.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:01:23.356 [DEBUG] [Thread-193726] [transport.py] [_log()] starting thread (client mode): 0xd31ccb50
2025-11-24T17:01:23.357 [DEBUG] [Thread-193726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:01:23.363 [DEBUG] [Thread-193726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:01:23.363 [INFO] [Thread-193726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:01:23.367 [DEBUG] [Thread-193726] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] client lang: <none>
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] server lang: <none>
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] kex follows: False
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:01:23.368 [DEBUG] [Thread-193726] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:01:23.369 [DEBUG] [Thread-193726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:01:23.369 [DEBUG] [Thread-193726] [transport.py] [_log()] Compression: none
2025-11-24T17:01:23.369 [DEBUG] [Thread-193726] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:01:23.394 [DEBUG] [Thread-193726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:01:23.400 [DEBUG] [Thread-193726] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:01:23.402 [DEBUG] [Thread-193726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:01:23.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:01:23.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:01:23.407 [DEBUG] [Thread-193726] [transport.py] [_log()] userauth is OK
2025-11-24T17:01:23.407 [DEBUG] [Thread-193726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:01:23.407 [DEBUG] [Thread-193726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:01:23.408 [DEBUG] [Thread-193726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:01:23.408 [DEBUG] [Thread-193726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:01:23.434 [INFO] [Thread-193726] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:01:23.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:01:24.023 [DEBUG] [Thread-193726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:01:24.024 [DEBUG] [Thread-193726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:01:24.025 [DEBUG] [Thread-193726] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:01:24.064 [DEBUG] [Thread-193726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:01:24.064 [DEBUG] [Thread-193726] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:01:24.066 [DEBUG] [Thread-193726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:01:24.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:01:24.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:01:24.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:01:24.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:01:24.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:01:24.078 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:01:24.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:01:24.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:01:24.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:01:24.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.625746 -999.00  +21.60  17.87     24   +0.20 1 1 1 1 1   887    0 21.60 1.24 ----- 18.9 17.9 180.2 24.0 25.5 -29.1 25.2 -28.6 26.9 -27.2 27.4 -29.5
2025-11-24T17:01:24.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:01:24.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:01:24.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.625746
2025-11-24T17:01:24.085 [DEBUG] [Thread-193726] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:01:24.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:01:24.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:01:24.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:01:24.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:01:24.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:01:24.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:00:55', tmtdew=25.0, humidity=18.69, cloud=0.0, wind=27.42, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:01:04.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:01:24.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:01:24.183 [DEBUG] [Thread-193729] [transport.py] [_log()] starting thread (client mode): 0xd07cf640
2025-11-24T17:01:24.183 [DEBUG] [Thread-193729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:01:24.198 [DEBUG] [Thread-193729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:01:24.199 [INFO] [Thread-193729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:01:24.209 [DEBUG] [Thread-193729] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:01:24.209 [DEBUG] [Thread-193729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:01:24.209 [DEBUG] [Thread-193729] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:01:24.209 [DEBUG] [Thread-193729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:01:24.209 [DEBUG] [Thread-193729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] client lang: <none>
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] server lang: <none>
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] kex follows: False
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] Compression: none
2025-11-24T17:01:24.210 [DEBUG] [Thread-193729] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:01:24.268 [DEBUG] [Thread-193729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:01:24.269 [DEBUG] [Thread-193729] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:01:24.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:01:24.269 [DEBUG] [Thread-193729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:01:24.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:01:24.332 [DEBUG] [Thread-193729] [transport.py] [_log()] userauth is OK
2025-11-24T17:01:24.332 [DEBUG] [Thread-193729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:01:24.333 [DEBUG] [Thread-193729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:01:24.333 [DEBUG] [Thread-193729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:01:24.333 [DEBUG] [Thread-193729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:01:24.353 [INFO] [Thread-193729] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:01:24.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:01:24.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:01:25.221 [DEBUG] [Thread-193729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:01:25.230 [DEBUG] [Thread-193729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:01:25.270 [DEBUG] [Thread-193729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:01:25.270 [DEBUG] [Thread-193729] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:01:25.279 [DEBUG] [Thread-193729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:01:25.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:01:25.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-11-24T17:01:25.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-11-24T17:01:25.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:01:25.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:01:25.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:01:25.317 [DEBUG] [Thread-193729] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:01:35.710 [DEBUG] [Thread-193731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:01:50.789 [DEBUG] [Thread-193732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:01:50.810 [DEBUG] [Thread-193733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:01:55.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:01:55.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:01:55.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-11-24T17:01:56.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 1, 28), 24.91, 18.77, 0.0, 24.07, 21.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:01:56.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:01:28
2025-11-24T17:01:56.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:01:56.852 [DEBUG] [Thread-193734] [transport.py] [_log()] starting thread (client mode): 0xd7bc61a0
2025-11-24T17:01:56.853 [DEBUG] [Thread-193734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:01:56.868 [DEBUG] [Thread-193734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:01:56.869 [INFO] [Thread-193734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:01:56.872 [DEBUG] [Thread-193734] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:01:56.872 [DEBUG] [Thread-193734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:01:56.872 [DEBUG] [Thread-193734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:01:56.872 [DEBUG] [Thread-193734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:01:56.872 [DEBUG] [Thread-193734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:01:56.872 [DEBUG] [Thread-193734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:01:56.873 [DEBUG] [Thread-193734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:01:56.873 [DEBUG] [Thread-193734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:01:56.873 [DEBUG] [Thread-193734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:01:56.873 [DEBUG] [Thread-193734] [transport.py] [_log()] client lang: <none>
2025-11-24T17:01:56.873 [DEBUG] [Thread-193734] [transport.py] [_log()] server lang: <none>
2025-11-24T17:01:56.873 [DEBUG] [Thread-193734] [transport.py] [_log()] kex follows: False
2025-11-24T17:01:56.873 [DEBUG] [Thread-193734] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:01:56.874 [DEBUG] [Thread-193734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:01:56.874 [DEBUG] [Thread-193734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:01:56.874 [DEBUG] [Thread-193734] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:01:56.874 [DEBUG] [Thread-193734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:01:56.874 [DEBUG] [Thread-193734] [transport.py] [_log()] Compression: none
2025-11-24T17:01:56.875 [DEBUG] [Thread-193734] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:01:56.909 [DEBUG] [Thread-193734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:01:56.912 [DEBUG] [Thread-193734] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:01:56.914 [DEBUG] [Thread-193734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:01:56.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:01:56.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:01:56.918 [DEBUG] [Thread-193734] [transport.py] [_log()] userauth is OK
2025-11-24T17:01:56.918 [DEBUG] [Thread-193734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:01:56.918 [DEBUG] [Thread-193734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:01:56.918 [DEBUG] [Thread-193734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:01:56.919 [DEBUG] [Thread-193734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:01:56.939 [INFO] [Thread-193734] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:01:56.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:01:57.560 [DEBUG] [Thread-193734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:01:57.560 [DEBUG] [Thread-193734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:01:57.570 [DEBUG] [Thread-193734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:01:57.602 [DEBUG] [Thread-193734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:01:57.602 [DEBUG] [Thread-193734] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:01:57.605 [DEBUG] [Thread-193734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:01:57.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:01:57.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:01:57.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:01:57.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:01:57.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:01:57.628 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:01:57.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:01:57.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:01:57.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:01:57.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.626094 -999.00  +21.60  26.70     24   +0.20 1 1 1 1 1   887    0 21.68 -2.02 ----- 25.4 26.7 156.0 37.9 25.5 -29.8 25.4 -29.3 26.9 -27.8 27.4 -30.0
2025-11-24T17:01:57.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:01:57.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:01:57.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.626094
2025-11-24T17:01:57.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:01:57.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:01:57.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:01:57.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:01:57.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:01:57.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:01:28', tmtdew=24.91, humidity=18.77, cloud=0.0, wind=24.07, temperature=21.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:01:34.522', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:01:57.630 [DEBUG] [Thread-193734] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:01:57.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:01:57.716 [DEBUG] [Thread-193737] [transport.py] [_log()] starting thread (client mode): 0xd0701480
2025-11-24T17:01:57.716 [DEBUG] [Thread-193737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:01:57.732 [DEBUG] [Thread-193737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:01:57.732 [INFO] [Thread-193737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] client lang: <none>
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] server lang: <none>
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] kex follows: False
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:01:57.740 [DEBUG] [Thread-193737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:01:57.741 [DEBUG] [Thread-193737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:01:57.741 [DEBUG] [Thread-193737] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:01:57.741 [DEBUG] [Thread-193737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:01:57.741 [DEBUG] [Thread-193737] [transport.py] [_log()] Compression: none
2025-11-24T17:01:57.741 [DEBUG] [Thread-193737] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:01:57.802 [DEBUG] [Thread-193737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:01:57.803 [DEBUG] [Thread-193737] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:01:57.803 [DEBUG] [Thread-193737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:01:57.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:01:57.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:01:57.859 [DEBUG] [Thread-193737] [transport.py] [_log()] userauth is OK
2025-11-24T17:01:57.860 [DEBUG] [Thread-193737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:01:57.860 [DEBUG] [Thread-193737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:01:57.860 [DEBUG] [Thread-193737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:01:57.860 [DEBUG] [Thread-193737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:01:57.885 [INFO] [Thread-193737] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:01:57.886 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:01:57.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:01:58.756 [DEBUG] [Thread-193737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:01:58.756 [DEBUG] [Thread-193737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:01:58.804 [DEBUG] [Thread-193737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:01:58.804 [DEBUG] [Thread-193737] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:01:58.812 [DEBUG] [Thread-193737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:01:58.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:01:58.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-11-24T17:01:58.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:01:58.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:01:58.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:01:58.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:01:58.855 [DEBUG] [Thread-193737] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:02:05.817 [DEBUG] [Thread-193739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:02:20.876 [DEBUG] [Thread-193740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:02:28.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:02:28.880 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:02:28.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-11-24T17:02:29.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 2, 1), 24.75, 18.9, 0.0, 26.8, 21.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:02:29.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:02:01
2025-11-24T17:02:30.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:02:30.209 [DEBUG] [Thread-193741] [transport.py] [_log()] starting thread (client mode): 0xd31358d0
2025-11-24T17:02:30.209 [DEBUG] [Thread-193741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:02:30.225 [DEBUG] [Thread-193741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:02:30.225 [INFO] [Thread-193741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] client lang: <none>
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] server lang: <none>
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] kex follows: False
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:02:30.227 [DEBUG] [Thread-193741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:02:30.228 [DEBUG] [Thread-193741] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:02:30.228 [DEBUG] [Thread-193741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:02:30.228 [DEBUG] [Thread-193741] [transport.py] [_log()] Compression: none
2025-11-24T17:02:30.228 [DEBUG] [Thread-193741] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:02:30.249 [DEBUG] [Thread-193741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:02:30.251 [DEBUG] [Thread-193741] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:02:30.253 [DEBUG] [Thread-193741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:02:30.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:02:30.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:02:30.257 [DEBUG] [Thread-193741] [transport.py] [_log()] userauth is OK
2025-11-24T17:02:30.257 [DEBUG] [Thread-193741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:02:30.257 [DEBUG] [Thread-193741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:02:30.257 [DEBUG] [Thread-193741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:02:30.257 [DEBUG] [Thread-193741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:02:30.281 [INFO] [Thread-193741] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:02:30.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:02:30.896 [DEBUG] [Thread-193741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:02:30.897 [DEBUG] [Thread-193741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:02:30.899 [DEBUG] [Thread-193741] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:02:30.937 [DEBUG] [Thread-193741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:02:30.938 [DEBUG] [Thread-193741] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:02:30.942 [DEBUG] [Thread-193741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:02:30.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:02:30.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:02:30.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:02:30.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:02:30.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:02:30.970 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:02:30.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:02:30.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:02:30.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:02:30.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.626440 -999.00  +21.50  32.09     24   +0.20 1 1 2 1 1   887    0 21.40 -4.40 ----- 29.1 32.1 162.4 35.9 25.5 -29.5 25.4 -29.0 26.9 -27.6 27.3 -30.0
2025-11-24T17:02:30.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:02:30.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:02:30.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.626440
2025-11-24T17:02:30.978 [DEBUG] [Thread-193741] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:02:30.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:02:30.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:02:30.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:02:30.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:02:30.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:02:30.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:02:01', tmtdew=24.75, humidity=18.9, cloud=0.0, wind=26.8, temperature=21.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:02:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:02:31.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:02:31.088 [DEBUG] [Thread-193744] [transport.py] [_log()] starting thread (client mode): 0xd0701750
2025-11-24T17:02:31.088 [DEBUG] [Thread-193744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:02:31.103 [DEBUG] [Thread-193744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:02:31.103 [INFO] [Thread-193744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:02:31.111 [DEBUG] [Thread-193744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:02:31.111 [DEBUG] [Thread-193744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:02:31.111 [DEBUG] [Thread-193744] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:02:31.111 [DEBUG] [Thread-193744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:02:31.111 [DEBUG] [Thread-193744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:02:31.111 [DEBUG] [Thread-193744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:02:31.111 [DEBUG] [Thread-193744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:02:31.111 [DEBUG] [Thread-193744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:02:31.111 [DEBUG] [Thread-193744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:02:31.112 [DEBUG] [Thread-193744] [transport.py] [_log()] client lang: <none>
2025-11-24T17:02:31.112 [DEBUG] [Thread-193744] [transport.py] [_log()] server lang: <none>
2025-11-24T17:02:31.112 [DEBUG] [Thread-193744] [transport.py] [_log()] kex follows: False
2025-11-24T17:02:31.112 [DEBUG] [Thread-193744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:02:31.112 [DEBUG] [Thread-193744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:02:31.112 [DEBUG] [Thread-193744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:02:31.112 [DEBUG] [Thread-193744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:02:31.112 [DEBUG] [Thread-193744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:02:31.112 [DEBUG] [Thread-193744] [transport.py] [_log()] Compression: none
2025-11-24T17:02:31.114 [DEBUG] [Thread-193744] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:02:31.171 [DEBUG] [Thread-193744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:02:31.172 [DEBUG] [Thread-193744] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:02:31.172 [DEBUG] [Thread-193744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:02:31.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:02:31.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:02:31.227 [DEBUG] [Thread-193744] [transport.py] [_log()] userauth is OK
2025-11-24T17:02:31.228 [DEBUG] [Thread-193744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:02:31.228 [DEBUG] [Thread-193744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:02:31.228 [DEBUG] [Thread-193744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:02:31.228 [DEBUG] [Thread-193744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:02:31.247 [INFO] [Thread-193744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:02:31.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:02:31.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:02:32.084 [DEBUG] [Thread-193744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:02:32.084 [DEBUG] [Thread-193744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:02:32.132 [DEBUG] [Thread-193744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:02:32.132 [DEBUG] [Thread-193744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:02:32.140 [DEBUG] [Thread-193744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:02:32.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:02:32.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-11-24T17:02:32.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-11-24T17:02:32.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:02:32.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:02:32.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:02:32.182 [DEBUG] [Thread-193744] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:02:35.908 [DEBUG] [Thread-193746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:02:50.959 [DEBUG] [Thread-193747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:02:51.032 [DEBUG] [Thread-193748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:03:02.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:03:02.207 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:03:02.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-11-24T17:03:03.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 2, 33), 25.11, 18.39, 0.0, 27.42, 21.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:03:03.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:02:33
2025-11-24T17:03:03.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:03:03.378 [DEBUG] [Thread-193749] [transport.py] [_log()] starting thread (client mode): 0xd0703b20
2025-11-24T17:03:03.379 [DEBUG] [Thread-193749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:03:03.392 [DEBUG] [Thread-193749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:03:03.392 [INFO] [Thread-193749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:03:03.395 [DEBUG] [Thread-193749] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:03:03.395 [DEBUG] [Thread-193749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:03:03.395 [DEBUG] [Thread-193749] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:03:03.396 [DEBUG] [Thread-193749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:03:03.396 [DEBUG] [Thread-193749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:03:03.396 [DEBUG] [Thread-193749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:03:03.396 [DEBUG] [Thread-193749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:03:03.396 [DEBUG] [Thread-193749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:03:03.396 [DEBUG] [Thread-193749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:03:03.396 [DEBUG] [Thread-193749] [transport.py] [_log()] client lang: <none>
2025-11-24T17:03:03.396 [DEBUG] [Thread-193749] [transport.py] [_log()] server lang: <none>
2025-11-24T17:03:03.396 [DEBUG] [Thread-193749] [transport.py] [_log()] kex follows: False
2025-11-24T17:03:03.396 [DEBUG] [Thread-193749] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:03:03.397 [DEBUG] [Thread-193749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:03:03.397 [DEBUG] [Thread-193749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:03:03.397 [DEBUG] [Thread-193749] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:03:03.397 [DEBUG] [Thread-193749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:03:03.397 [DEBUG] [Thread-193749] [transport.py] [_log()] Compression: none
2025-11-24T17:03:03.397 [DEBUG] [Thread-193749] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:03:03.426 [DEBUG] [Thread-193749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:03:03.430 [DEBUG] [Thread-193749] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:03:03.432 [DEBUG] [Thread-193749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:03:03.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:03:03.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:03:03.436 [DEBUG] [Thread-193749] [transport.py] [_log()] userauth is OK
2025-11-24T17:03:03.436 [DEBUG] [Thread-193749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:03:03.436 [DEBUG] [Thread-193749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:03:03.437 [DEBUG] [Thread-193749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:03:03.437 [DEBUG] [Thread-193749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:03:03.462 [INFO] [Thread-193749] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:03:03.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:03:04.005 [DEBUG] [Thread-193749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:03:04.005 [DEBUG] [Thread-193749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:03:04.006 [DEBUG] [Thread-193749] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:03:04.046 [DEBUG] [Thread-193749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:03:04.046 [DEBUG] [Thread-193749] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:03:04.048 [DEBUG] [Thread-193749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:03:04.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:03:04.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:03:04.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:03:04.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:03:04.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:03:04.072 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:03:04.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:03:04.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:03:04.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:03:04.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.626788 -999.00  +21.50  20.92     24   +0.20 1 1 1 1 1   887    0 21.35 -4.94 ----- 18.5 20.9 173.2 32.4 25.5 -28.9 25.3 -31.3 26.9 -28.0 27.3 -29.8
2025-11-24T17:03:04.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:03:04.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:03:04.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.626788
2025-11-24T17:03:04.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:03:04.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:03:04.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:03:04.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:03:04.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:03:04.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:02:33', tmtdew=25.11, humidity=18.39, cloud=0.0, wind=27.42, temperature=21.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:02:34.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:03:04.075 [DEBUG] [Thread-193749] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:03: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-11-24T17:03:04.160 [DEBUG] [Thread-193752] [transport.py] [_log()] starting thread (client mode): 0xd0702620
2025-11-24T17:03:04.160 [DEBUG] [Thread-193752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:03:04.177 [DEBUG] [Thread-193752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:03:04.177 [INFO] [Thread-193752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:03:04.184 [DEBUG] [Thread-193752] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:03:04.185 [DEBUG] [Thread-193752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:03:04.185 [DEBUG] [Thread-193752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:03:04.185 [DEBUG] [Thread-193752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:03:04.185 [DEBUG] [Thread-193752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:03:04.185 [DEBUG] [Thread-193752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:03:04.185 [DEBUG] [Thread-193752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:03:04.185 [DEBUG] [Thread-193752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:03:04.185 [DEBUG] [Thread-193752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:03:04.185 [DEBUG] [Thread-193752] [transport.py] [_log()] client lang: <none>
2025-11-24T17:03:04.185 [DEBUG] [Thread-193752] [transport.py] [_log()] server lang: <none>
2025-11-24T17:03:04.186 [DEBUG] [Thread-193752] [transport.py] [_log()] kex follows: False
2025-11-24T17:03:04.186 [DEBUG] [Thread-193752] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:03:04.186 [DEBUG] [Thread-193752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:03:04.186 [DEBUG] [Thread-193752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:03:04.186 [DEBUG] [Thread-193752] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:03:04.186 [DEBUG] [Thread-193752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:03:04.187 [DEBUG] [Thread-193752] [transport.py] [_log()] Compression: none
2025-11-24T17:03:04.187 [DEBUG] [Thread-193752] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:03:04.242 [DEBUG] [Thread-193752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:03:04.243 [DEBUG] [Thread-193752] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:03:04.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:03:04.244 [DEBUG] [Thread-193752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:03:04.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:03:04.299 [DEBUG] [Thread-193752] [transport.py] [_log()] userauth is OK
2025-11-24T17:03:04.299 [DEBUG] [Thread-193752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:03:04.299 [DEBUG] [Thread-193752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:03:04.299 [DEBUG] [Thread-193752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:03:04.299 [DEBUG] [Thread-193752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:03:04.318 [INFO] [Thread-193752] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:03:04.318 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:03:04.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:03:05.218 [DEBUG] [Thread-193752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:03:05.218 [DEBUG] [Thread-193752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:03:05.266 [DEBUG] [Thread-193752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:03:05.266 [DEBUG] [Thread-193752] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:03:05.275 [DEBUG] [Thread-193752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:03:05.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:03:05.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-11-24T17:03:05.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-11-24T17:03:05.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:03:05.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:03:05.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:03:05.310 [DEBUG] [Thread-193752] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:03:05.988 [DEBUG] [Thread-193754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:03:21.073 [DEBUG] [Thread-193755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:03:35.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:03:35.335 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:03:35.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-11-24T17:03:36.101 [DEBUG] [Thread-193756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:03:36.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 3, 6), 25.24, 18.27, 0.0, 30.47, 21.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:03:36.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:03:06
2025-11-24T17:03:36.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:03:36.475 [DEBUG] [Thread-193757] [transport.py] [_log()] starting thread (client mode): 0xd0701030
2025-11-24T17:03:36.476 [DEBUG] [Thread-193757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:03:36.494 [DEBUG] [Thread-193757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:03:36.494 [INFO] [Thread-193757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] client lang: <none>
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] server lang: <none>
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] kex follows: False
2025-11-24T17:03:36.498 [DEBUG] [Thread-193757] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:03:36.499 [DEBUG] [Thread-193757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:03:36.499 [DEBUG] [Thread-193757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:03:36.499 [DEBUG] [Thread-193757] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:03:36.499 [DEBUG] [Thread-193757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:03:36.499 [DEBUG] [Thread-193757] [transport.py] [_log()] Compression: none
2025-11-24T17:03:36.499 [DEBUG] [Thread-193757] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:03:36.538 [DEBUG] [Thread-193757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:03:36.540 [DEBUG] [Thread-193757] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:03:36.542 [DEBUG] [Thread-193757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:03:36.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:03:36.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:03:36.547 [DEBUG] [Thread-193757] [transport.py] [_log()] userauth is OK
2025-11-24T17:03:36.547 [DEBUG] [Thread-193757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:03:36.547 [DEBUG] [Thread-193757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:03:36.547 [DEBUG] [Thread-193757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:03:36.547 [DEBUG] [Thread-193757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:03:36.572 [INFO] [Thread-193757] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:03:36.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:03:37.139 [DEBUG] [Thread-193757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:03:37.140 [DEBUG] [Thread-193757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:03:37.150 [DEBUG] [Thread-193757] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:03:37.181 [DEBUG] [Thread-193757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:03:37.181 [DEBUG] [Thread-193757] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:03:37.185 [DEBUG] [Thread-193757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:03:37.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:03:37.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:03:37.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:03:37.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:03:37.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:03:37.214 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:03:37.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:03:37.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:03:37.216 [DEBUG] [Thread-193757] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:03:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:03:37.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.627135 -999.00  +21.40  22.08     24   +0.20 1 1 1 1 1   887    0 21.42 -7.24 ----- 25.2 22.1 153.8 39.7 25.4 -29.7 25.2 -28.4 26.8 -27.7 27.3 -29.6
2025-11-24T17:03:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:03:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:03:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.627135
2025-11-24T17:03:37.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:03:37.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:03:37.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:03:37.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:03:37.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:03:37.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:03:06', tmtdew=25.24, humidity=18.27, cloud=0.0, wind=30.47, temperature=21.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:03:04.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:03: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-11-24T17:03:37.310 [DEBUG] [Thread-193760] [transport.py] [_log()] starting thread (client mode): 0xd07bce20
2025-11-24T17:03:37.311 [DEBUG] [Thread-193760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:03:37.326 [DEBUG] [Thread-193760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:03:37.326 [INFO] [Thread-193760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:03:37.333 [DEBUG] [Thread-193760] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:03:37.333 [DEBUG] [Thread-193760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:03:37.333 [DEBUG] [Thread-193760] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] client lang: <none>
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] server lang: <none>
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] kex follows: False
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] Compression: none
2025-11-24T17:03:37.334 [DEBUG] [Thread-193760] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:03:37.389 [DEBUG] [Thread-193760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:03:37.389 [DEBUG] [Thread-193760] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:03:37.389 [DEBUG] [Thread-193760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:03:37.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:03:37.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:03:37.446 [DEBUG] [Thread-193760] [transport.py] [_log()] userauth is OK
2025-11-24T17:03:37.446 [DEBUG] [Thread-193760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:03:37.446 [DEBUG] [Thread-193760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:03:37.447 [DEBUG] [Thread-193760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:03:37.447 [DEBUG] [Thread-193760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:03:37.460 [INFO] [Thread-193760] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:03: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-11-24T17:03:37.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:03:38.328 [DEBUG] [Thread-193760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:03:38.337 [DEBUG] [Thread-193760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:03:38.376 [DEBUG] [Thread-193760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:03:38.377 [DEBUG] [Thread-193760] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:03:38.385 [DEBUG] [Thread-193760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:03:38.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:03:38.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-11-24T17:03:38.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-11-24T17:03:38.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:03:38.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:03:38.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:03:38.420 [DEBUG] [Thread-193760] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:03:51.129 [DEBUG] [Thread-193762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:03:51.304 [DEBUG] [Thread-193763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:04:06.208 [DEBUG] [Thread-193764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:04:08.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:04:08.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:04:08.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-11-24T17:04:09.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 3, 39), 25.23, 18.22, 0.0, 28.35, 21.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:04:09.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:03:39
2025-11-24T17:04:09.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:04:09.589 [DEBUG] [Thread-193765] [transport.py] [_log()] starting thread (client mode): 0xd07cd300
2025-11-24T17:04:09.590 [DEBUG] [Thread-193765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:04:09.605 [DEBUG] [Thread-193765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:04:09.605 [INFO] [Thread-193765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:04:09.606 [DEBUG] [Thread-193765] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:04:09.606 [DEBUG] [Thread-193765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:04:09.606 [DEBUG] [Thread-193765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:04:09.606 [DEBUG] [Thread-193765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:04:09.606 [DEBUG] [Thread-193765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:04:09.606 [DEBUG] [Thread-193765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:04:09.606 [DEBUG] [Thread-193765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] client lang: <none>
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] server lang: <none>
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] kex follows: False
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] Compression: none
2025-11-24T17:04:09.607 [DEBUG] [Thread-193765] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:04:09.616 [DEBUG] [Thread-193765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:04:09.616 [DEBUG] [Thread-193765] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:04:09.616 [DEBUG] [Thread-193765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:04:09.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:04:09.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:04:09.616 [DEBUG] [Thread-193765] [transport.py] [_log()] userauth is OK
2025-11-24T17:04:09.616 [DEBUG] [Thread-193765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:04:09.617 [DEBUG] [Thread-193765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:04:09.617 [DEBUG] [Thread-193765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:04:09.617 [DEBUG] [Thread-193765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:04:09.626 [INFO] [Thread-193765] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:04:09.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:04:10.218 [DEBUG] [Thread-193765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:04:10.218 [DEBUG] [Thread-193765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:04:10.218 [DEBUG] [Thread-193765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:04:10.259 [DEBUG] [Thread-193765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:04:10.259 [DEBUG] [Thread-193765] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:04:10.261 [DEBUG] [Thread-193765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:04:10.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:04:10.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:04:10.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:04:10.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:04:10.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:04:10.279 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:04:10.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:04:10.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:04:10.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:04:10.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.627483 -999.00  +21.30  16.30     24   +0.20 1 1 1 1 1   887    0 21.23 -9.77 ----- 17.4 16.3 161.1 28.2 25.4 -29.0 25.1 -29.4 26.9 -26.6 27.3 -28.3
2025-11-24T17:04:10.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:04:10.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:04:10.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.627483
2025-11-24T17:04:10.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:04:10.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:04:10.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:04:10.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:04:10.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:04:10.280 [DEBUG] [Thread-193765] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:04:10.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:03:39', tmtdew=25.23, humidity=18.22, cloud=0.0, wind=28.35, temperature=21.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:03:34.531', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:04: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-11-24T17:04:10.367 [DEBUG] [Thread-193768] [transport.py] [_log()] starting thread (client mode): 0xd07ce170
2025-11-24T17:04:10.367 [DEBUG] [Thread-193768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:04:10.383 [DEBUG] [Thread-193768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:04:10.383 [INFO] [Thread-193768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:04:10.390 [DEBUG] [Thread-193768] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:04:10.390 [DEBUG] [Thread-193768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:04:10.390 [DEBUG] [Thread-193768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:04:10.390 [DEBUG] [Thread-193768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:04:10.390 [DEBUG] [Thread-193768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:04:10.390 [DEBUG] [Thread-193768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] client lang: <none>
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] server lang: <none>
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] kex follows: False
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] Compression: none
2025-11-24T17:04:10.391 [DEBUG] [Thread-193768] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:04:10.450 [DEBUG] [Thread-193768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:04:10.450 [DEBUG] [Thread-193768] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:04:10.450 [DEBUG] [Thread-193768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:04:10.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:04:10.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:04:10.507 [DEBUG] [Thread-193768] [transport.py] [_log()] userauth is OK
2025-11-24T17:04:10.507 [DEBUG] [Thread-193768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:04:10.507 [DEBUG] [Thread-193768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:04:10.507 [DEBUG] [Thread-193768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:04:10.507 [DEBUG] [Thread-193768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:04:10.521 [INFO] [Thread-193768] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:04:10.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:04:10.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:04:11.384 [DEBUG] [Thread-193768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:04:11.384 [DEBUG] [Thread-193768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:04:11.432 [DEBUG] [Thread-193768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:04:11.432 [DEBUG] [Thread-193768] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:04:11.441 [DEBUG] [Thread-193768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:04:11.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:04:11.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:04:11.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:04:11.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:04:11.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:04:11.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:04:11.473 [DEBUG] [Thread-193768] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:04:21.286 [DEBUG] [Thread-193770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:04:36.393 [DEBUG] [Thread-193771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:04:41.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:04:41.495 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:04:41.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-11-24T17:04:42.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 4, 11), 25.39, 18.06, 0.0, 28.2, 22.06, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:04:42.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:04:11
2025-11-24T17:04:42.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:04:42.923 [DEBUG] [Thread-193772] [transport.py] [_log()] starting thread (client mode): 0xd07bf190
2025-11-24T17:04:42.923 [DEBUG] [Thread-193772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:04:42.942 [DEBUG] [Thread-193772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:04:42.942 [INFO] [Thread-193772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] client lang: <none>
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] server lang: <none>
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] kex follows: False
2025-11-24T17:04:42.945 [DEBUG] [Thread-193772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:04:42.946 [DEBUG] [Thread-193772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:04:42.946 [DEBUG] [Thread-193772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:04:42.946 [DEBUG] [Thread-193772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:04:42.946 [DEBUG] [Thread-193772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:04:42.946 [DEBUG] [Thread-193772] [transport.py] [_log()] Compression: none
2025-11-24T17:04:42.946 [DEBUG] [Thread-193772] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:04:42.958 [DEBUG] [Thread-193772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:04:42.958 [DEBUG] [Thread-193772] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:04:42.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:04:42.958 [DEBUG] [Thread-193772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:04:42.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:04:42.959 [DEBUG] [Thread-193772] [transport.py] [_log()] userauth is OK
2025-11-24T17:04:42.959 [DEBUG] [Thread-193772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:04:42.959 [DEBUG] [Thread-193772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:04:42.959 [DEBUG] [Thread-193772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:04:42.959 [DEBUG] [Thread-193772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:04:42.972 [INFO] [Thread-193772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:04:42.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:04:43.595 [DEBUG] [Thread-193772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:04:43.595 [DEBUG] [Thread-193772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:04:43.596 [DEBUG] [Thread-193772] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:04:43.636 [DEBUG] [Thread-193772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:04:43.636 [DEBUG] [Thread-193772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:04:43.639 [DEBUG] [Thread-193772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:04:43.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:04:43.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:04:43.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:04:43.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:04:43.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:04:43.662 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:04:43.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:04:43.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:04:43.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:04:43.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.628177 -999.00  +21.20  27.30     24   +0.20 1 1 1 1 1   887    0 21.12 -15.33 ----- 26.5 27.3 187.2 36.4 25.2 -29.6 24.9 -31.8 26.7 -26.6 27.1 -28.6
2025-11-24T17:04:43.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:04:43.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:04:43.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.628177
2025-11-24T17:04:43.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:04:43.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:04:43.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:04:43.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:04:43.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:04:43.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:04:11', tmtdew=25.39, humidity=18.06, cloud=0.0, wind=28.2, temperature=22.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:04:34.493', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:04:43.670 [DEBUG] [Thread-193772] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:04:43.762 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:04:43.774 [DEBUG] [Thread-193775] [transport.py] [_log()] starting thread (client mode): 0xd31ed420
2025-11-24T17:04:43.774 [DEBUG] [Thread-193775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:04:43.789 [DEBUG] [Thread-193775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:04:43.790 [INFO] [Thread-193775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:04:43.797 [DEBUG] [Thread-193775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:04:43.797 [DEBUG] [Thread-193775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] client lang: <none>
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] server lang: <none>
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] kex follows: False
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] Compression: none
2025-11-24T17:04:43.798 [DEBUG] [Thread-193775] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:04:43.855 [DEBUG] [Thread-193775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:04:43.855 [DEBUG] [Thread-193775] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:04:43.856 [DEBUG] [Thread-193775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:04:43.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:04:43.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:04:43.911 [DEBUG] [Thread-193775] [transport.py] [_log()] userauth is OK
2025-11-24T17:04:43.911 [DEBUG] [Thread-193775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:04:43.911 [DEBUG] [Thread-193775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:04:43.912 [DEBUG] [Thread-193775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:04:43.912 [DEBUG] [Thread-193775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:04:43.935 [INFO] [Thread-193775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:04:43.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:04:43.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:04:44.788 [DEBUG] [Thread-193775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:04:44.788 [DEBUG] [Thread-193775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:04:44.836 [DEBUG] [Thread-193775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:04:44.836 [DEBUG] [Thread-193775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:04:44.844 [DEBUG] [Thread-193775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:04:44.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:04:44.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:04:44.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-11-24T17:04:44.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:04:44.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:04:44.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:04:44.875 [DEBUG] [Thread-193775] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:04:51.420 [DEBUG] [Thread-193777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:04:51.536 [DEBUG] [Thread-193778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:05:06.469 [DEBUG] [Thread-193779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:05:14.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:05:14.893 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:05:14.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:05:16.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 4, 44), 25.17, 18.17, 0.0, 29.24, 21.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:05:16.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:04:44
2025-11-24T17:05:16.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:05:16.493 [DEBUG] [Thread-193780] [transport.py] [_log()] starting thread (client mode): 0xd31ec610
2025-11-24T17:05:16.494 [DEBUG] [Thread-193780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:05:16.508 [DEBUG] [Thread-193780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:05:16.508 [INFO] [Thread-193780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] client lang: <none>
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] server lang: <none>
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] kex follows: False
2025-11-24T17:05:16.512 [DEBUG] [Thread-193780] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:05:16.513 [DEBUG] [Thread-193780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:05:16.513 [DEBUG] [Thread-193780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:05:16.513 [DEBUG] [Thread-193780] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:05:16.514 [DEBUG] [Thread-193780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:05:16.514 [DEBUG] [Thread-193780] [transport.py] [_log()] Compression: none
2025-11-24T17:05:16.514 [DEBUG] [Thread-193780] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:05:16.539 [DEBUG] [Thread-193780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:05:16.543 [DEBUG] [Thread-193780] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:05:16.545 [DEBUG] [Thread-193780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:05:16.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:05:16.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:05:16.549 [DEBUG] [Thread-193780] [transport.py] [_log()] userauth is OK
2025-11-24T17:05:16.549 [DEBUG] [Thread-193780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:05:16.550 [DEBUG] [Thread-193780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:05:16.550 [DEBUG] [Thread-193780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:05:16.550 [DEBUG] [Thread-193780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:05:16.574 [INFO] [Thread-193780] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:05:16.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:05:17.156 [DEBUG] [Thread-193780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:05:17.156 [DEBUG] [Thread-193780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:05:17.157 [DEBUG] [Thread-193780] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:05:17.197 [DEBUG] [Thread-193780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:05:17.197 [DEBUG] [Thread-193780] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:05:17.199 [DEBUG] [Thread-193780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:05:17.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:05:17.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:05:17.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:05:17.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:05:17.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:05:17.214 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:05:17.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:05:17.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:05:17.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:05:17.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.628524 -999.00  +21.20  23.93     24   +0.30 1 1 1 1 1   887    0 20.92 -19.73 ----- 29.2 23.9 184.0 35.7 25.2 -30.1 24.9 -29.7 26.7 -26.6 26.9 -30.4
2025-11-24T17:05:17.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:05:17.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:05:17.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.628524
2025-11-24T17:05:17.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:05:17.218 [DEBUG] [Thread-193780] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:05:17.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:05:17.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:05:17.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:05:17.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:05:17.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:04:44', tmtdew=25.17, humidity=18.17, cloud=0.0, wind=29.24, temperature=21.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:05:04.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:05:17.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:05:17.307 [DEBUG] [Thread-193783] [transport.py] [_log()] starting thread (client mode): 0xd31ef100
2025-11-24T17:05:17.307 [DEBUG] [Thread-193783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:05:17.322 [DEBUG] [Thread-193783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:05:17.322 [INFO] [Thread-193783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] client lang: <none>
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] server lang: <none>
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] kex follows: False
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:05:17.330 [DEBUG] [Thread-193783] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:05:17.332 [DEBUG] [Thread-193783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:05:17.332 [DEBUG] [Thread-193783] [transport.py] [_log()] Compression: none
2025-11-24T17:05:17.332 [DEBUG] [Thread-193783] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:05:17.390 [DEBUG] [Thread-193783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:05:17.390 [DEBUG] [Thread-193783] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:05:17.390 [DEBUG] [Thread-193783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:05:17.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:05:17.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:05:17.447 [DEBUG] [Thread-193783] [transport.py] [_log()] userauth is OK
2025-11-24T17:05:17.447 [DEBUG] [Thread-193783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:05:17.447 [DEBUG] [Thread-193783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:05:17.447 [DEBUG] [Thread-193783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:05:17.447 [DEBUG] [Thread-193783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:05:17.464 [INFO] [Thread-193783] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:05:17.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:05:17.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:05:18.321 [DEBUG] [Thread-193783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:05:18.322 [DEBUG] [Thread-193783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:05:18.369 [DEBUG] [Thread-193783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:05:18.369 [DEBUG] [Thread-193783] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:05:18.378 [DEBUG] [Thread-193783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:05:18.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:05:18.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-11-24T17:05:18.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:05:18.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:05:18.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:05:18.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:05:18.412 [DEBUG] [Thread-193783] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:05:21.505 [DEBUG] [Thread-193785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:05:36.600 [DEBUG] [Thread-193786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:05:48.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:05:48.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:05:48.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-11-24T17:05:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 5, 16), 25.11, 18.22, 0.0, 31.09, 21.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:05:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:05:16
2025-11-24T17:05:49.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:05:49.741 [DEBUG] [Thread-193787] [transport.py] [_log()] starting thread (client mode): 0xd3162350
2025-11-24T17:05:49.741 [DEBUG] [Thread-193787] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:05:49.757 [DEBUG] [Thread-193787] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:05:49.758 [INFO] [Thread-193787] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] client lang: <none>
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] server lang: <none>
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] kex follows: False
2025-11-24T17:05:49.762 [DEBUG] [Thread-193787] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:05:49.763 [DEBUG] [Thread-193787] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:05:49.763 [DEBUG] [Thread-193787] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:05:49.763 [DEBUG] [Thread-193787] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:05:49.763 [DEBUG] [Thread-193787] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:05:49.763 [DEBUG] [Thread-193787] [transport.py] [_log()] Compression: none
2025-11-24T17:05:49.763 [DEBUG] [Thread-193787] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:05:49.780 [DEBUG] [Thread-193787] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:05:49.781 [DEBUG] [Thread-193787] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:05:49.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:05:49.783 [DEBUG] [Thread-193787] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:05:49.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:05:49.828 [DEBUG] [Thread-193787] [transport.py] [_log()] userauth is OK
2025-11-24T17:05:49.829 [DEBUG] [Thread-193787] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:05:49.829 [DEBUG] [Thread-193787] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:05:49.829 [DEBUG] [Thread-193787] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:05:49.829 [DEBUG] [Thread-193787] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:05:49.856 [INFO] [Thread-193787] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:05:49.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:05:50.450 [DEBUG] [Thread-193787] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:05:50.450 [DEBUG] [Thread-193787] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:05:50.450 [DEBUG] [Thread-193787] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:05:50.491 [DEBUG] [Thread-193787] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:05:50.491 [DEBUG] [Thread-193787] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:05:50.493 [DEBUG] [Thread-193787] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:05:50.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:05:50.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:05:50.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:05:50.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:05:50.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:05:50.513 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:05:50.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:05:50.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:05:50.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:05:50.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.628871 -999.00  +21.10  16.48     24   +0.20 1 1 1 1 1   887    0 20.74 -24.37 ----- 15.1 16.5 184.6 33.4 25.0 -29.6 24.8 -27.9 26.5 -29.1 27.1 -27.8
2025-11-24T17:05:50.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:05:50.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:05:50.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.628871
2025-11-24T17:05:50.519 [DEBUG] [Thread-193787] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:05:50.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:05:50.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:05:50.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:05:50.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:05:50.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:05:50.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:05:16', tmtdew=25.11, humidity=18.22, cloud=0.0, wind=31.09, temperature=21.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:05:34.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:05:50.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:05:50.629 [DEBUG] [Thread-193790] [transport.py] [_log()] starting thread (client mode): 0xd31ec760
2025-11-24T17:05:50.629 [DEBUG] [Thread-193790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:05:50.643 [DEBUG] [Thread-193790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:05:50.643 [INFO] [Thread-193790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] client lang: <none>
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] server lang: <none>
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] kex follows: False
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:05:50.651 [DEBUG] [Thread-193790] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:05:50.652 [DEBUG] [Thread-193790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:05:50.652 [DEBUG] [Thread-193790] [transport.py] [_log()] Compression: none
2025-11-24T17:05:50.652 [DEBUG] [Thread-193790] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:05:50.710 [DEBUG] [Thread-193790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:05:50.710 [DEBUG] [Thread-193790] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:05:50.711 [DEBUG] [Thread-193790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:05:50.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:05:50.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:05:50.771 [DEBUG] [Thread-193790] [transport.py] [_log()] userauth is OK
2025-11-24T17:05:50.771 [DEBUG] [Thread-193790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:05:50.771 [DEBUG] [Thread-193790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:05:50.771 [DEBUG] [Thread-193790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:05:50.771 [DEBUG] [Thread-193790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:05:50.785 [INFO] [Thread-193790] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:05:50.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:05:50.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:05:51.581 [DEBUG] [Thread-193790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:05:51.581 [DEBUG] [Thread-193790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:05:51.629 [DEBUG] [Thread-193790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:05:51.629 [DEBUG] [Thread-193790] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:05:51.637 [DEBUG] [Thread-193790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:05:51.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:05:51.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:05:51.653 [DEBUG] [Thread-193792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:05:51.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-11-24T17:05:51.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:05:51.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:05:51.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:05:51.671 [DEBUG] [Thread-193790] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:05:51.797 [DEBUG] [Thread-193793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:06:06.731 [DEBUG] [Thread-193794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:06:21.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:06:21.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:06:21.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-11-24T17:06:21.759 [DEBUG] [Thread-193795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:06:22.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 5, 49), 24.78, 18.77, 0.0, 32.13, 21.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:06:22.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:05:49
2025-11-24T17:06:22.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:06:22.925 [DEBUG] [Thread-193796] [transport.py] [_log()] starting thread (client mode): 0xd31efa00
2025-11-24T17:06:22.926 [DEBUG] [Thread-193796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:06:22.932 [DEBUG] [Thread-193796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:06:22.932 [INFO] [Thread-193796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:06:22.935 [DEBUG] [Thread-193796] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:06:22.935 [DEBUG] [Thread-193796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:06:22.935 [DEBUG] [Thread-193796] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:06:22.935 [DEBUG] [Thread-193796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:06:22.935 [DEBUG] [Thread-193796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:06:22.935 [DEBUG] [Thread-193796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] client lang: <none>
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] server lang: <none>
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] kex follows: False
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] Compression: none
2025-11-24T17:06:22.936 [DEBUG] [Thread-193796] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:06:22.965 [DEBUG] [Thread-193796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:06:22.967 [DEBUG] [Thread-193796] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:06:22.968 [DEBUG] [Thread-193796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:06:22.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:06:22.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:06:22.970 [DEBUG] [Thread-193796] [transport.py] [_log()] userauth is OK
2025-11-24T17:06:22.970 [DEBUG] [Thread-193796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:06:22.970 [DEBUG] [Thread-193796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:06:22.970 [DEBUG] [Thread-193796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:06:22.970 [DEBUG] [Thread-193796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:06:22.980 [INFO] [Thread-193796] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:06:22.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:06:23.575 [DEBUG] [Thread-193796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:06:23.575 [DEBUG] [Thread-193796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:06:23.576 [DEBUG] [Thread-193796] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:06:23.616 [DEBUG] [Thread-193796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:06:23.616 [DEBUG] [Thread-193796] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:06:23.618 [DEBUG] [Thread-193796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:06:23.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:06:23.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:06:23.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:06:23.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:06:23.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:06:23.631 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:06:23.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:06:23.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:06:23.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:06:23.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.629218 -999.00  +21.40  22.28     24   +0.30 1 1 1 1 1   887    0 20.86 -32.60 ----- 19.8 22.3 192.6 29.8 25.2 -28.6 24.9 -31.9 26.6 -26.9 27.1 -28.2
2025-11-24T17:06:23.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:06:23.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:06:23.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.629218
2025-11-24T17:06:23.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:06:23.648 [DEBUG] [Thread-193796] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:06:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:06:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:06:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:06:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:06:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:05:49', tmtdew=24.78, humidity=18.77, cloud=0.0, wind=32.13, temperature=21.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:06:04.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:06:23.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:06:23.735 [DEBUG] [Thread-193799] [transport.py] [_log()] starting thread (client mode): 0xd31eec50
2025-11-24T17:06:23.735 [DEBUG] [Thread-193799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:06:23.750 [DEBUG] [Thread-193799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:06:23.750 [INFO] [Thread-193799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:06:23.757 [DEBUG] [Thread-193799] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] client lang: <none>
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] server lang: <none>
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] kex follows: False
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] Compression: none
2025-11-24T17:06:23.758 [DEBUG] [Thread-193799] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:06:23.813 [DEBUG] [Thread-193799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:06:23.814 [DEBUG] [Thread-193799] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:06:23.814 [DEBUG] [Thread-193799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:06:23.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:06:23.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:06:23.871 [DEBUG] [Thread-193799] [transport.py] [_log()] userauth is OK
2025-11-24T17:06:23.871 [DEBUG] [Thread-193799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:06:23.871 [DEBUG] [Thread-193799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:06:23.871 [DEBUG] [Thread-193799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:06:23.871 [DEBUG] [Thread-193799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:06:23.884 [INFO] [Thread-193799] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:06:23.884 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:06:23.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:06:24.727 [DEBUG] [Thread-193799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:06:24.727 [DEBUG] [Thread-193799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:06:24.775 [DEBUG] [Thread-193799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:06:24.775 [DEBUG] [Thread-193799] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:06:24.783 [DEBUG] [Thread-193799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:06:24.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:06:24.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:06:24.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-11-24T17:06:24.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:06:24.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:06:24.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:06:24.816 [DEBUG] [Thread-193799] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:06:36.805 [DEBUG] [Thread-193801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:06:51.911 [DEBUG] [Thread-193802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:06:52.026 [DEBUG] [Thread-193803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:06:54.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:06:54.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:06:54.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-11-24T17:06:55.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 6, 22), 24.87, 18.67, 0.0, 32.06, 21.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:06:55.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:06:22
2025-11-24T17:06:55.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:06:56.047 [DEBUG] [Thread-193804] [transport.py] [_log()] starting thread (client mode): 0xd31ece80
2025-11-24T17:06:56.048 [DEBUG] [Thread-193804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:06:56.062 [DEBUG] [Thread-193804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:06:56.062 [INFO] [Thread-193804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:06:56.064 [DEBUG] [Thread-193804] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:06:56.064 [DEBUG] [Thread-193804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:06:56.064 [DEBUG] [Thread-193804] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:06:56.064 [DEBUG] [Thread-193804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:06:56.064 [DEBUG] [Thread-193804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:06:56.064 [DEBUG] [Thread-193804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:06:56.064 [DEBUG] [Thread-193804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:06:56.064 [DEBUG] [Thread-193804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:06:56.064 [DEBUG] [Thread-193804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:06:56.064 [DEBUG] [Thread-193804] [transport.py] [_log()] client lang: <none>
2025-11-24T17:06:56.065 [DEBUG] [Thread-193804] [transport.py] [_log()] server lang: <none>
2025-11-24T17:06:56.065 [DEBUG] [Thread-193804] [transport.py] [_log()] kex follows: False
2025-11-24T17:06:56.065 [DEBUG] [Thread-193804] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:06:56.065 [DEBUG] [Thread-193804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:06:56.065 [DEBUG] [Thread-193804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:06:56.065 [DEBUG] [Thread-193804] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:06:56.065 [DEBUG] [Thread-193804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:06:56.065 [DEBUG] [Thread-193804] [transport.py] [_log()] Compression: none
2025-11-24T17:06:56.065 [DEBUG] [Thread-193804] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:06:56.085 [DEBUG] [Thread-193804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:06:56.088 [DEBUG] [Thread-193804] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:06:56.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:06:56.090 [DEBUG] [Thread-193804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:06:56.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:06:56.091 [DEBUG] [Thread-193804] [transport.py] [_log()] userauth is OK
2025-11-24T17:06:56.091 [DEBUG] [Thread-193804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:06:56.091 [DEBUG] [Thread-193804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:06:56.091 [DEBUG] [Thread-193804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:06:56.091 [DEBUG] [Thread-193804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:06:56.102 [INFO] [Thread-193804] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:06:56.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:06:56.708 [DEBUG] [Thread-193804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:06:56.708 [DEBUG] [Thread-193804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:06:56.708 [DEBUG] [Thread-193804] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:06:56.749 [DEBUG] [Thread-193804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:06:56.749 [DEBUG] [Thread-193804] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:06:56.752 [DEBUG] [Thread-193804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:06:56.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:06:56.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:06:56.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:06:56.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:06:56.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:06:56.765 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:06:56.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:06:56.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:06:56.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:06:56.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.629566 -999.00  +21.60  19.25     24   +0.40 1 1 1 1 1   887    0 20.45 -35.10 ----- 18.7 19.2 167.4 26.5 25.2 -28.5 25.1 -27.3 26.7 -26.1 27.2 -28.5
2025-11-24T17:06:56.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:06:56.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:06:56.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.629566
2025-11-24T17:06:56.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:06:56.774 [DEBUG] [Thread-193804] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:06:56.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:06:56.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:06:56.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:06:56.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:06:56.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:06:22', tmtdew=24.87, humidity=18.67, cloud=0.0, wind=32.06, temperature=21.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:06:34.502', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:06:56.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:06:56.868 [DEBUG] [Thread-193807] [transport.py] [_log()] starting thread (client mode): 0xd31ee620
2025-11-24T17:06:56.868 [DEBUG] [Thread-193807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:06:56.882 [DEBUG] [Thread-193807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:06:56.882 [INFO] [Thread-193807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:06:56.889 [DEBUG] [Thread-193807] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:06:56.889 [DEBUG] [Thread-193807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:06:56.889 [DEBUG] [Thread-193807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:06:56.889 [DEBUG] [Thread-193807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:06:56.889 [DEBUG] [Thread-193807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:06:56.889 [DEBUG] [Thread-193807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:06:56.889 [DEBUG] [Thread-193807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:06:56.889 [DEBUG] [Thread-193807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] client lang: <none>
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] server lang: <none>
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] kex follows: False
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] Compression: none
2025-11-24T17:06:56.890 [DEBUG] [Thread-193807] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:06:56.945 [DEBUG] [Thread-193807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:06:56.945 [DEBUG] [Thread-193807] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:06:56.945 [DEBUG] [Thread-193807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:06:56.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:06:56.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:06:57.006 [DEBUG] [Thread-193807] [transport.py] [_log()] userauth is OK
2025-11-24T17:06:57.006 [DEBUG] [Thread-193807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:06:57.006 [DEBUG] [Thread-193807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:06:57.006 [DEBUG] [Thread-193807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:06:57.006 [DEBUG] [Thread-193807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:06:57.021 [INFO] [Thread-193807] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:06:57.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:06:57.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:06:57.888 [DEBUG] [Thread-193807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:06:57.889 [DEBUG] [Thread-193807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:06:57.927 [DEBUG] [Thread-193807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:06:57.928 [DEBUG] [Thread-193807] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:06:57.937 [DEBUG] [Thread-193807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:06:57.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:06:57.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-11-24T17:06:57.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-11-24T17:06:57.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:06:57.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:06:57.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:06:57.974 [DEBUG] [Thread-193807] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:07:06.951 [DEBUG] [Thread-193809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:07:22.040 [DEBUG] [Thread-193810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:07:27.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:07:27.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:07:28.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-11-24T17:07:28.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 6, 54), 24.69, 18.71, 0.0, 30.4, 21.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:07:28.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:06:54
2025-11-24T17:07:29.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:07:29.207 [DEBUG] [Thread-193811] [transport.py] [_log()] starting thread (client mode): 0xd31b3760
2025-11-24T17:07:29.207 [DEBUG] [Thread-193811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:07:29.215 [DEBUG] [Thread-193811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:07:29.215 [INFO] [Thread-193811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:07:29.218 [DEBUG] [Thread-193811] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:07:29.218 [DEBUG] [Thread-193811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:07:29.218 [DEBUG] [Thread-193811] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:07:29.218 [DEBUG] [Thread-193811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:07:29.218 [DEBUG] [Thread-193811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:07:29.218 [DEBUG] [Thread-193811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:07:29.218 [DEBUG] [Thread-193811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] client lang: <none>
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] server lang: <none>
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] kex follows: False
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] Compression: none
2025-11-24T17:07:29.219 [DEBUG] [Thread-193811] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:07:29.238 [DEBUG] [Thread-193811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:07:29.241 [DEBUG] [Thread-193811] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:07:29.242 [DEBUG] [Thread-193811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:07:29.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:07:29.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:07:29.284 [DEBUG] [Thread-193811] [transport.py] [_log()] userauth is OK
2025-11-24T17:07:29.284 [DEBUG] [Thread-193811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:07:29.284 [DEBUG] [Thread-193811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:07:29.285 [DEBUG] [Thread-193811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:07:29.285 [DEBUG] [Thread-193811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:07:29.295 [INFO] [Thread-193811] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:07:29.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:07:29.945 [DEBUG] [Thread-193811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:07:29.945 [DEBUG] [Thread-193811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:07:29.946 [DEBUG] [Thread-193811] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:07:29.986 [DEBUG] [Thread-193811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:07:29.986 [DEBUG] [Thread-193811] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:07:29.990 [DEBUG] [Thread-193811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:07:30.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:07:30.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:07:30.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:07:30.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:07:30.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:07:30.010 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:07:30.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:07:30.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:07:30.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:07:30.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.629913 -999.00  +21.70  13.15     24   +0.40 1 1 1 1 1   887    0 20.10 -39.99 ----- 17.5 13.2 163.4 25.6 25.2 -28.4 25.1 -29.0 26.8 -26.5 27.2 -28.5
2025-11-24T17:07:30.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:07:30.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:07:30.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.629913
2025-11-24T17:07:30.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:07:30.026 [DEBUG] [Thread-193811] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:07:30.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:07:30.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:07:30.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:07:30.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:07:30.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:06:54', tmtdew=24.69, humidity=18.71, cloud=0.0, wind=30.4, temperature=21.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:07:04.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:07:30.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:07:30.115 [DEBUG] [Thread-193814] [transport.py] [_log()] starting thread (client mode): 0xd3136680
2025-11-24T17:07:30.115 [DEBUG] [Thread-193814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:07:30.130 [DEBUG] [Thread-193814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:07:30.130 [INFO] [Thread-193814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] client lang: <none>
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] server lang: <none>
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] kex follows: False
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] Compression: none
2025-11-24T17:07:30.137 [DEBUG] [Thread-193814] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:07:30.194 [DEBUG] [Thread-193814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:07:30.194 [DEBUG] [Thread-193814] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:07:30.194 [DEBUG] [Thread-193814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:07:30.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:07:30.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:07:30.255 [DEBUG] [Thread-193814] [transport.py] [_log()] userauth is OK
2025-11-24T17:07:30.255 [DEBUG] [Thread-193814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:07:30.255 [DEBUG] [Thread-193814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:07:30.255 [DEBUG] [Thread-193814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:07:30.255 [DEBUG] [Thread-193814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:07:30.269 [INFO] [Thread-193814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:07:30.269 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:07:30.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:07:31.112 [DEBUG] [Thread-193814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:07:31.112 [DEBUG] [Thread-193814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:07:31.160 [DEBUG] [Thread-193814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:07:31.160 [DEBUG] [Thread-193814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:07:31.167 [DEBUG] [Thread-193814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:07:31.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:07:31.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-11-24T17:07:31.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-11-24T17:07:31.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:07:31.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:07:31.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:07:31.200 [DEBUG] [Thread-193814] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:07:37.094 [DEBUG] [Thread-193816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:07:52.210 [DEBUG] [Thread-193817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:07:52.351 [DEBUG] [Thread-193818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:08:01.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:08:01.223 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:08:01.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-11-24T17:08:02.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 7, 27), 24.61, 18.77, 0.0, 34.16, 21.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:08:02.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:07:27
2025-11-24T17:08:02.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:08:02.466 [DEBUG] [Thread-193819] [transport.py] [_log()] starting thread (client mode): 0xd31ec700
2025-11-24T17:08:02.466 [DEBUG] [Thread-193819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:08:02.485 [DEBUG] [Thread-193819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:08:02.485 [INFO] [Thread-193819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] client lang: <none>
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] server lang: <none>
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] kex follows: False
2025-11-24T17:08:02.487 [DEBUG] [Thread-193819] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:08:02.488 [DEBUG] [Thread-193819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:08:02.488 [DEBUG] [Thread-193819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:08:02.488 [DEBUG] [Thread-193819] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:08:02.488 [DEBUG] [Thread-193819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:08:02.488 [DEBUG] [Thread-193819] [transport.py] [_log()] Compression: none
2025-11-24T17:08:02.488 [DEBUG] [Thread-193819] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:08:02.499 [DEBUG] [Thread-193819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:08:02.500 [DEBUG] [Thread-193819] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:08:02.500 [DEBUG] [Thread-193819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:08:02.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:08:02.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:08:02.501 [DEBUG] [Thread-193819] [transport.py] [_log()] userauth is OK
2025-11-24T17:08:02.501 [DEBUG] [Thread-193819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:08:02.501 [DEBUG] [Thread-193819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:08:02.501 [DEBUG] [Thread-193819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:08:02.501 [DEBUG] [Thread-193819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:08:02.519 [INFO] [Thread-193819] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:08:02.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:08:03.170 [DEBUG] [Thread-193819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:08:03.170 [DEBUG] [Thread-193819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:08:03.171 [DEBUG] [Thread-193819] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:08:03.211 [DEBUG] [Thread-193819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:08:03.212 [DEBUG] [Thread-193819] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:08:03.215 [DEBUG] [Thread-193819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:08:03.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:08:03.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:08:03.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:08:03.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:08:03.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:08:03.238 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:08:03.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:08:03.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:08:03.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:08:03.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.630260 -999.00  +21.50  17.35     24   +0.20 1 1 1 1 1   887    0 20.61 -39.33 ----- 22.0 17.4 154.4 30.7 25.2 -29.6 25.2 -28.0 26.8 -27.4 27.2 -29.6
2025-11-24T17:08:03.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:08:03.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:08:03.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.630260
2025-11-24T17:08:03.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:08:03.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:08:03.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:08:03.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:08:03.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:08:03.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:07:27', tmtdew=24.61, humidity=18.77, cloud=0.0, wind=34.16, temperature=21.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:07:34.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:08:03.241 [DEBUG] [Thread-193819] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:08:03.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:08:03.336 [DEBUG] [Thread-193822] [transport.py] [_log()] starting thread (client mode): 0xd31ee740
2025-11-24T17:08:03.336 [DEBUG] [Thread-193822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:08:03.351 [DEBUG] [Thread-193822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:08:03.351 [INFO] [Thread-193822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] client lang: <none>
2025-11-24T17:08:03.362 [DEBUG] [Thread-193822] [transport.py] [_log()] server lang: <none>
2025-11-24T17:08:03.363 [DEBUG] [Thread-193822] [transport.py] [_log()] kex follows: False
2025-11-24T17:08:03.363 [DEBUG] [Thread-193822] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:08:03.363 [DEBUG] [Thread-193822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:08:03.363 [DEBUG] [Thread-193822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:08:03.363 [DEBUG] [Thread-193822] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:08:03.363 [DEBUG] [Thread-193822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:08:03.364 [DEBUG] [Thread-193822] [transport.py] [_log()] Compression: none
2025-11-24T17:08:03.364 [DEBUG] [Thread-193822] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:08:03.414 [DEBUG] [Thread-193822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:08:03.414 [DEBUG] [Thread-193822] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:08:03.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:08:03.415 [DEBUG] [Thread-193822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:08:03.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:08:03.471 [DEBUG] [Thread-193822] [transport.py] [_log()] userauth is OK
2025-11-24T17:08:03.472 [DEBUG] [Thread-193822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:08:03.472 [DEBUG] [Thread-193822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:08:03.472 [DEBUG] [Thread-193822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:08:03.472 [DEBUG] [Thread-193822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:08:03.491 [INFO] [Thread-193822] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:08:03.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:08:03.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:08:04.343 [DEBUG] [Thread-193822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:08:04.343 [DEBUG] [Thread-193822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:08:04.391 [DEBUG] [Thread-193822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:08:04.391 [DEBUG] [Thread-193822] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:08:04.399 [DEBUG] [Thread-193822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:08:04.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:08:04.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-11-24T17:08:04.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:08:04.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:08:04.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:08:04.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:08:04.431 [DEBUG] [Thread-193822] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:08:07.241 [DEBUG] [Thread-193824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:08:22.278 [DEBUG] [Thread-193825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:08:34.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:08:34.456 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:08:34.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:08:35.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 7, 27), 25.01, 18.27, 0.0, 34.16, 21.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:08:35.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:07:27
2025-11-24T17:08:35.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:08:35.713 [DEBUG] [Thread-193826] [transport.py] [_log()] starting thread (client mode): 0xd3137430
2025-11-24T17:08:35.714 [DEBUG] [Thread-193826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:08:35.727 [DEBUG] [Thread-193826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:08:35.727 [INFO] [Thread-193826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] client lang: <none>
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] server lang: <none>
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] kex follows: False
2025-11-24T17:08:35.731 [DEBUG] [Thread-193826] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:08:35.732 [DEBUG] [Thread-193826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:08:35.732 [DEBUG] [Thread-193826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:08:35.733 [DEBUG] [Thread-193826] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:08:35.733 [DEBUG] [Thread-193826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:08:35.733 [DEBUG] [Thread-193826] [transport.py] [_log()] Compression: none
2025-11-24T17:08:35.733 [DEBUG] [Thread-193826] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:08:35.761 [DEBUG] [Thread-193826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:08:35.765 [DEBUG] [Thread-193826] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:08:35.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:08:35.767 [DEBUG] [Thread-193826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:08:35.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:08:35.769 [DEBUG] [Thread-193826] [transport.py] [_log()] userauth is OK
2025-11-24T17:08:35.769 [DEBUG] [Thread-193826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:08:35.769 [DEBUG] [Thread-193826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:08:35.769 [DEBUG] [Thread-193826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:08:35.769 [DEBUG] [Thread-193826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:08:35.786 [INFO] [Thread-193826] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:08:35.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:08:36.377 [DEBUG] [Thread-193826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:08:36.378 [DEBUG] [Thread-193826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:08:36.380 [DEBUG] [Thread-193826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:08:36.419 [DEBUG] [Thread-193826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:08:36.419 [DEBUG] [Thread-193826] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:08:36.422 [DEBUG] [Thread-193826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:08:36.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:08:36.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:08:36.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:08:36.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:08:36.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:08:36.449 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:08:36.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:08:36.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:08:36.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:08:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.630608 -999.00  +21.30  21.47     24   +0.20 1 1 1 1 1   887    0 20.23 -39.13 ----- 21.8 21.5 152.0 27.1 25.2 -29.1 25.1 -28.2 26.6 -27.0 27.1 -29.0
2025-11-24T17:08:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:08:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:08:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.630608
2025-11-24T17:08:36.457 [DEBUG] [Thread-193826] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:08:36.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:08:36.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:08:36.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:08:36.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:08:36.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:08:36.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:07:27', tmtdew=25.01, humidity=18.27, cloud=0.0, wind=34.16, temperature=21.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:08:04.531', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:08:36.553 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:08:36.565 [DEBUG] [Thread-193829] [transport.py] [_log()] starting thread (client mode): 0xd3134430
2025-11-24T17:08:36.565 [DEBUG] [Thread-193829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:08:36.579 [DEBUG] [Thread-193829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:08:36.579 [INFO] [Thread-193829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:08:36.586 [DEBUG] [Thread-193829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] client lang: <none>
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] server lang: <none>
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] kex follows: False
2025-11-24T17:08:36.587 [DEBUG] [Thread-193829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:08:36.588 [DEBUG] [Thread-193829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:08:36.588 [DEBUG] [Thread-193829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:08:36.588 [DEBUG] [Thread-193829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:08:36.588 [DEBUG] [Thread-193829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:08:36.588 [DEBUG] [Thread-193829] [transport.py] [_log()] Compression: none
2025-11-24T17:08:36.588 [DEBUG] [Thread-193829] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:08:36.647 [DEBUG] [Thread-193829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:08:36.648 [DEBUG] [Thread-193829] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:08:36.649 [DEBUG] [Thread-193829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:08:36.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:08:36.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:08:36.703 [DEBUG] [Thread-193829] [transport.py] [_log()] userauth is OK
2025-11-24T17:08:36.704 [DEBUG] [Thread-193829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:08:36.704 [DEBUG] [Thread-193829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:08:36.704 [DEBUG] [Thread-193829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:08:36.704 [DEBUG] [Thread-193829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:08:36.723 [INFO] [Thread-193829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:08: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-11-24T17:08:36.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:08:37.319 [DEBUG] [Thread-193831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:08:37.609 [DEBUG] [Thread-193829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:08:37.609 [DEBUG] [Thread-193829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:08:37.657 [DEBUG] [Thread-193829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:08:37.657 [DEBUG] [Thread-193829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:08:37.666 [DEBUG] [Thread-193829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:08:37.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:08:37.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-11-24T17:08:37.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:08:37.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:08:37.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:08:37.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:08:37.711 [DEBUG] [Thread-193829] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:08:52.377 [DEBUG] [Thread-193832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:08:52.693 [DEBUG] [Thread-193833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:09:07.411 [DEBUG] [Thread-193834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:09:07.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:09:07.734 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:09:07.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:09:08.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 8, 33), 24.74, 18.59, 0.0, 28.05, 21.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:09:08.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:08:33
2025-11-24T17:09:08.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:09:08.970 [DEBUG] [Thread-193835] [transport.py] [_log()] starting thread (client mode): 0xd31ec760
2025-11-24T17:09:08.971 [DEBUG] [Thread-193835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:09:08.982 [DEBUG] [Thread-193835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:09:08.982 [INFO] [Thread-193835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] client lang: <none>
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] server lang: <none>
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] kex follows: False
2025-11-24T17:09:08.986 [DEBUG] [Thread-193835] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:09:08.987 [DEBUG] [Thread-193835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:09:08.987 [DEBUG] [Thread-193835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:09:08.987 [DEBUG] [Thread-193835] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:09:08.987 [DEBUG] [Thread-193835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:09:08.987 [DEBUG] [Thread-193835] [transport.py] [_log()] Compression: none
2025-11-24T17:09:08.987 [DEBUG] [Thread-193835] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:09:09.021 [DEBUG] [Thread-193835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:09:09.024 [DEBUG] [Thread-193835] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:09:09.025 [DEBUG] [Thread-193835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:09:09.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:09:09.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:09:09.028 [DEBUG] [Thread-193835] [transport.py] [_log()] userauth is OK
2025-11-24T17:09:09.028 [DEBUG] [Thread-193835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:09:09.028 [DEBUG] [Thread-193835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:09:09.028 [DEBUG] [Thread-193835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:09:09.028 [DEBUG] [Thread-193835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:09:09.047 [INFO] [Thread-193835] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:09:09.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:09:09.728 [DEBUG] [Thread-193835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:09:09.728 [DEBUG] [Thread-193835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:09:09.730 [DEBUG] [Thread-193835] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:09:09.769 [DEBUG] [Thread-193835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:09:09.770 [DEBUG] [Thread-193835] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:09:09.773 [DEBUG] [Thread-193835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:09:09.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:09:09.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:09:09.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:09:09.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:09:09.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:09:09.802 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:09:09.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:09:09.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:09:09.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:09:09.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.630955 -999.00  +21.30  27.35     24   +0.30 1 1 1 1 1   887    0 20.26 -42.85 ----- 25.4 27.4 194.2 38.2 25.1 -29.9 24.8 -31.5 26.6 -28.5 27.1 -29.2
2025-11-24T17:09:09.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:09:09.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:09:09.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.630955
2025-11-24T17:09:09.810 [DEBUG] [Thread-193835] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:09:09.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:09:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:09:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:09:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:09:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:09:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:08:33', tmtdew=24.74, humidity=18.59, cloud=0.0, wind=28.05, temperature=21.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:08:34.512', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:09:09.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:09:09.927 [DEBUG] [Thread-193838] [transport.py] [_log()] starting thread (client mode): 0xd31cc940
2025-11-24T17:09:09.927 [DEBUG] [Thread-193838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:09:09.942 [DEBUG] [Thread-193838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:09:09.942 [INFO] [Thread-193838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:09:09.949 [DEBUG] [Thread-193838] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:09:09.949 [DEBUG] [Thread-193838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:09:09.949 [DEBUG] [Thread-193838] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:09:09.949 [DEBUG] [Thread-193838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:09:09.949 [DEBUG] [Thread-193838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:09:09.949 [DEBUG] [Thread-193838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:09:09.949 [DEBUG] [Thread-193838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:09:09.949 [DEBUG] [Thread-193838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] client lang: <none>
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] server lang: <none>
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] kex follows: False
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] Compression: none
2025-11-24T17:09:09.950 [DEBUG] [Thread-193838] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:09:10.012 [DEBUG] [Thread-193838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:09:10.013 [DEBUG] [Thread-193838] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:09:10.014 [DEBUG] [Thread-193838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:09:10.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:09:10.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:09:10.071 [DEBUG] [Thread-193838] [transport.py] [_log()] userauth is OK
2025-11-24T17:09:10.072 [DEBUG] [Thread-193838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:09:10.072 [DEBUG] [Thread-193838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:09:10.072 [DEBUG] [Thread-193838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:09:10.072 [DEBUG] [Thread-193838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:09:10.091 [INFO] [Thread-193838] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:09:10.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:09:10.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:09:10.952 [DEBUG] [Thread-193838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:09:10.952 [DEBUG] [Thread-193838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:09:11.000 [DEBUG] [Thread-193838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:09:11.000 [DEBUG] [Thread-193838] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:09:11.009 [DEBUG] [Thread-193838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:09:11.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:09:11.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-11-24T17:09:11.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-11-24T17:09:11.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:09:11.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:09:11.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:09:11.043 [DEBUG] [Thread-193838] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:09:22.451 [DEBUG] [Thread-193840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:09:37.548 [DEBUG] [Thread-193841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:09:41.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:09:41.066 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:09:41.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:09:41.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 9, 6), 24.7, 18.65, 0.0, 25.88, 21.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:09:41.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:09:06
2025-11-24T17:09:42.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:09:42.226 [DEBUG] [Thread-193842] [transport.py] [_log()] starting thread (client mode): 0xd0702c20
2025-11-24T17:09:42.227 [DEBUG] [Thread-193842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:09:42.242 [DEBUG] [Thread-193842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:09:42.243 [INFO] [Thread-193842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] client lang: <none>
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] server lang: <none>
2025-11-24T17:09:42.246 [DEBUG] [Thread-193842] [transport.py] [_log()] kex follows: False
2025-11-24T17:09:42.247 [DEBUG] [Thread-193842] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:09:42.247 [DEBUG] [Thread-193842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:09:42.247 [DEBUG] [Thread-193842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:09:42.247 [DEBUG] [Thread-193842] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:09:42.247 [DEBUG] [Thread-193842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:09:42.247 [DEBUG] [Thread-193842] [transport.py] [_log()] Compression: none
2025-11-24T17:09:42.247 [DEBUG] [Thread-193842] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:09:42.274 [DEBUG] [Thread-193842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:09:42.278 [DEBUG] [Thread-193842] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:09:42.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:09:42.281 [DEBUG] [Thread-193842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:09:42.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:09:42.284 [DEBUG] [Thread-193842] [transport.py] [_log()] userauth is OK
2025-11-24T17:09:42.284 [DEBUG] [Thread-193842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:09:42.284 [DEBUG] [Thread-193842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:09:42.284 [DEBUG] [Thread-193842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:09:42.284 [DEBUG] [Thread-193842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:09:42.311 [INFO] [Thread-193842] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:09:42.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:09:42.976 [DEBUG] [Thread-193842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:09:42.976 [DEBUG] [Thread-193842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:09:42.976 [DEBUG] [Thread-193842] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:09:43.017 [DEBUG] [Thread-193842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:09:43.017 [DEBUG] [Thread-193842] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:09:43.020 [DEBUG] [Thread-193842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:09:43.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:09:43.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:09:43.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:09:43.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:09:43.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:09:43.038 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:09:43.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:09:43.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:09:43.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:09:43.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.631649 -999.00  +21.30  18.32     24   +0.30 1 1 1 1 1   887    0 19.66 -50.64 ----- 19.6 18.3 184.0 23.1 25.0 -29.0 24.8 -29.9 26.5 -26.6 26.9 -28.6
2025-11-24T17:09:43.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:09:43.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:09:43.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.631649
2025-11-24T17:09:43.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:09:43.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:09:43.040 [DEBUG] [Thread-193842] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:09:43.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:09:43.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:09:43.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:09:43.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:09:06', tmtdew=24.7, humidity=18.65, cloud=0.0, wind=25.88, temperature=21.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:09:34.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:09:43.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:09:43.126 [DEBUG] [Thread-193845] [transport.py] [_log()] starting thread (client mode): 0xd07017b0
2025-11-24T17:09:43.127 [DEBUG] [Thread-193845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:09:43.141 [DEBUG] [Thread-193845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:09:43.141 [INFO] [Thread-193845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] client lang: <none>
2025-11-24T17:09:43.148 [DEBUG] [Thread-193845] [transport.py] [_log()] server lang: <none>
2025-11-24T17:09:43.149 [DEBUG] [Thread-193845] [transport.py] [_log()] kex follows: False
2025-11-24T17:09:43.149 [DEBUG] [Thread-193845] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:09:43.149 [DEBUG] [Thread-193845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:09:43.149 [DEBUG] [Thread-193845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:09:43.149 [DEBUG] [Thread-193845] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:09:43.149 [DEBUG] [Thread-193845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:09:43.149 [DEBUG] [Thread-193845] [transport.py] [_log()] Compression: none
2025-11-24T17:09:43.149 [DEBUG] [Thread-193845] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:09:43.206 [DEBUG] [Thread-193845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:09:43.207 [DEBUG] [Thread-193845] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:09:43.208 [DEBUG] [Thread-193845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:09:43.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:09:43.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:09:43.263 [DEBUG] [Thread-193845] [transport.py] [_log()] userauth is OK
2025-11-24T17:09:43.263 [DEBUG] [Thread-193845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:09:43.263 [DEBUG] [Thread-193845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:09:43.263 [DEBUG] [Thread-193845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:09:43.264 [DEBUG] [Thread-193845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:09:43.286 [INFO] [Thread-193845] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:09:43.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:09:43.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:09:44.125 [DEBUG] [Thread-193845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:09:44.125 [DEBUG] [Thread-193845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:09:44.172 [DEBUG] [Thread-193845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:09:44.172 [DEBUG] [Thread-193845] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:09:44.181 [DEBUG] [Thread-193845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:09:44.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:09:44.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-11-24T17:09:44.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-11-24T17:09:44.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:09:44.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:09:44.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:09:44.219 [DEBUG] [Thread-193845] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:09:52.581 [DEBUG] [Thread-193847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:09:53.031 [DEBUG] [Thread-193848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:10:07.628 [DEBUG] [Thread-193849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:10:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:10:14.237 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:10:14.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-11-24T17:10:15.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 9, 39), 24.58, 19.12, 0.0, 24.86, 21.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:10:15.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:09:39
2025-11-24T17:10:15.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:10:15.389 [DEBUG] [Thread-193850] [transport.py] [_log()] starting thread (client mode): 0xd31360b0
2025-11-24T17:10:15.390 [DEBUG] [Thread-193850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:10:15.400 [DEBUG] [Thread-193850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:10:15.400 [INFO] [Thread-193850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] client lang: <none>
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] server lang: <none>
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] kex follows: False
2025-11-24T17:10:15.403 [DEBUG] [Thread-193850] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:10:15.404 [DEBUG] [Thread-193850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:10:15.404 [DEBUG] [Thread-193850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:10:15.404 [DEBUG] [Thread-193850] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:10:15.404 [DEBUG] [Thread-193850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:10:15.404 [DEBUG] [Thread-193850] [transport.py] [_log()] Compression: none
2025-11-24T17:10:15.404 [DEBUG] [Thread-193850] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:10:15.422 [DEBUG] [Thread-193850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:10:15.426 [DEBUG] [Thread-193850] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:10:15.428 [DEBUG] [Thread-193850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:10:15.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:10:15.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:10:15.432 [DEBUG] [Thread-193850] [transport.py] [_log()] userauth is OK
2025-11-24T17:10:15.432 [DEBUG] [Thread-193850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:10:15.432 [DEBUG] [Thread-193850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:10:15.432 [DEBUG] [Thread-193850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:10:15.432 [DEBUG] [Thread-193850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:10:15.469 [INFO] [Thread-193850] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:10:15.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:10:16.124 [DEBUG] [Thread-193850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:10:16.124 [DEBUG] [Thread-193850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:10:16.126 [DEBUG] [Thread-193850] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:10:16.165 [DEBUG] [Thread-193850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:10:16.166 [DEBUG] [Thread-193850] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:10:16.169 [DEBUG] [Thread-193850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:10:16.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:10:16.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:10:16.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:10:16.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:10:16.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:10:16.198 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:10:16.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:10:16.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:10:16.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:10:16.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.631996 -999.00  +21.30  17.11     24   +0.40 1 1 1 1 1   887    0 20.40 -50.46 ----- 19.9 17.1 186.0 27.8 25.0 -28.8 24.8 -29.6 26.5 -27.7 26.8 -29.9
2025-11-24T17:10:16.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:10:16.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:10:16.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.631996
2025-11-24T17:10:16.206 [DEBUG] [Thread-193850] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:10:16.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:10:16.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:10:16.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:10:16.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:10:16.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:10:16.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:09:39', tmtdew=24.58, humidity=19.12, cloud=0.0, wind=24.86, temperature=21.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:10:04.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:10:16.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:10:16.307 [DEBUG] [Thread-193853] [transport.py] [_log()] starting thread (client mode): 0xd31365f0
2025-11-24T17:10:16.307 [DEBUG] [Thread-193853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:10:16.321 [DEBUG] [Thread-193853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:10:16.322 [INFO] [Thread-193853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:10:16.329 [DEBUG] [Thread-193853] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:10:16.329 [DEBUG] [Thread-193853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:10:16.329 [DEBUG] [Thread-193853] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] client lang: <none>
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] server lang: <none>
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] kex follows: False
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] Compression: none
2025-11-24T17:10:16.330 [DEBUG] [Thread-193853] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:10:16.388 [DEBUG] [Thread-193853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:10:16.389 [DEBUG] [Thread-193853] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:10:16.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:10:16.390 [DEBUG] [Thread-193853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:10:16.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:10:16.447 [DEBUG] [Thread-193853] [transport.py] [_log()] userauth is OK
2025-11-24T17:10:16.447 [DEBUG] [Thread-193853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:10:16.447 [DEBUG] [Thread-193853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:10:16.447 [DEBUG] [Thread-193853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:10:16.447 [DEBUG] [Thread-193853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:10:16.460 [INFO] [Thread-193853] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:10:16.461 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:10:16.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:10:17.304 [DEBUG] [Thread-193853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:10:17.304 [DEBUG] [Thread-193853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:10:17.352 [DEBUG] [Thread-193853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:10:17.352 [DEBUG] [Thread-193853] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:10:17.366 [DEBUG] [Thread-193853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:10:17.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:10:17.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-11-24T17:10:17.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-11-24T17:10:17.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:10:17.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:10:17.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:10:17.402 [DEBUG] [Thread-193853] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:10:22.693 [DEBUG] [Thread-193855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:10:37.827 [DEBUG] [Thread-193856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:10:47.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:10:47.411 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:10:47.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-11-24T17:10:48.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 10, 44), 24.73, 18.74, 0.0, 22.09, 21.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:10:48.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:10:44
2025-11-24T17:10:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:10:48.508 [DEBUG] [Thread-193857] [transport.py] [_log()] starting thread (client mode): 0xd31ee0e0
2025-11-24T17:10:48.509 [DEBUG] [Thread-193857] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:10:48.530 [DEBUG] [Thread-193857] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:10:48.530 [INFO] [Thread-193857] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:10:48.539 [DEBUG] [Thread-193857] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] client lang: <none>
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] server lang: <none>
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] kex follows: False
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:10:48.540 [DEBUG] [Thread-193857] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:10:48.541 [DEBUG] [Thread-193857] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:10:48.541 [DEBUG] [Thread-193857] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:10:48.541 [DEBUG] [Thread-193857] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:10:48.541 [DEBUG] [Thread-193857] [transport.py] [_log()] Compression: none
2025-11-24T17:10:48.541 [DEBUG] [Thread-193857] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:10:48.559 [DEBUG] [Thread-193857] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:10:48.559 [DEBUG] [Thread-193857] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:10:48.560 [DEBUG] [Thread-193857] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:10:48.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:10:48.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:10:48.561 [DEBUG] [Thread-193857] [transport.py] [_log()] userauth is OK
2025-11-24T17:10:48.561 [DEBUG] [Thread-193857] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:10:48.562 [DEBUG] [Thread-193857] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:10:48.562 [DEBUG] [Thread-193857] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:10:48.562 [DEBUG] [Thread-193857] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:10:48.585 [INFO] [Thread-193857] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:10:48.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:10:49.235 [DEBUG] [Thread-193857] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:10:49.235 [DEBUG] [Thread-193857] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:10:49.236 [DEBUG] [Thread-193857] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:10:49.276 [DEBUG] [Thread-193857] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:10:49.276 [DEBUG] [Thread-193857] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:10:49.279 [DEBUG] [Thread-193857] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:10:49.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:10:49.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:10:49.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:10:49.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:10:49.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:10:49.296 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:10:49.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:10:49.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:10:49.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:10:49.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.632344 -999.00  +21.40  16.74     24   +0.30 1 1 1 1 1   887    0 20.15 -52.06 ----- 16.6 16.7 187.0 26.0 25.0 -29.0 24.9 -28.3 26.6 -27.7 26.9 -30.0
2025-11-24T17:10:49.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:10:49.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:10:49.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.632344
2025-11-24T17:10:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:10:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:10:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:10:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:10:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:10:49.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:10:44', tmtdew=24.73, humidity=18.74, cloud=0.0, wind=22.09, temperature=21.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:10:34.522', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:10:49.299 [DEBUG] [Thread-193857] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:10:49.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:10:49.381 [DEBUG] [Thread-193860] [transport.py] [_log()] starting thread (client mode): 0xd31ccc40
2025-11-24T17:10:49.381 [DEBUG] [Thread-193860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:10:49.396 [DEBUG] [Thread-193860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:10:49.396 [INFO] [Thread-193860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] client lang: <none>
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] server lang: <none>
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] kex follows: False
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] Compression: none
2025-11-24T17:10:49.404 [DEBUG] [Thread-193860] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:10:49.465 [DEBUG] [Thread-193860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:10:49.466 [DEBUG] [Thread-193860] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:10:49.466 [DEBUG] [Thread-193860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:10:49.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:10:49.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:10:49.523 [DEBUG] [Thread-193860] [transport.py] [_log()] userauth is OK
2025-11-24T17:10:49.523 [DEBUG] [Thread-193860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:10:49.523 [DEBUG] [Thread-193860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:10:49.523 [DEBUG] [Thread-193860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:10:49.523 [DEBUG] [Thread-193860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:10:49.536 [INFO] [Thread-193860] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:10:49.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:10:49.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:10:50.377 [DEBUG] [Thread-193860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:10:50.378 [DEBUG] [Thread-193860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:10:50.425 [DEBUG] [Thread-193860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:10:50.426 [DEBUG] [Thread-193860] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:10:50.435 [DEBUG] [Thread-193860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:10:50.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:10:50.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-11-24T17:10:50.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-11-24T17:10:50.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:10:50.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:10:50.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:10:50.470 [DEBUG] [Thread-193860] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:10:52.857 [DEBUG] [Thread-193862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:10:53.321 [DEBUG] [Thread-193863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:11:07.902 [DEBUG] [Thread-193864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:11:20.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:11:20.499 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:11:20.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-11-24T17:11:21.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 11, 16), 24.83, 18.62, 0.0, 25.71, 21.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:11:21.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:11:16
2025-11-24T17:11:21.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:11:21.714 [DEBUG] [Thread-193865] [transport.py] [_log()] starting thread (client mode): 0xd31cf2b0
2025-11-24T17:11:21.714 [DEBUG] [Thread-193865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:11:21.719 [DEBUG] [Thread-193865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:11:21.719 [INFO] [Thread-193865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:11:21.723 [DEBUG] [Thread-193865] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] client lang: <none>
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] server lang: <none>
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] kex follows: False
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:11:21.724 [DEBUG] [Thread-193865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:11:21.725 [DEBUG] [Thread-193865] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:11:21.725 [DEBUG] [Thread-193865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:11:21.725 [DEBUG] [Thread-193865] [transport.py] [_log()] Compression: none
2025-11-24T17:11:21.725 [DEBUG] [Thread-193865] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:11:21.745 [DEBUG] [Thread-193865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:11:21.749 [DEBUG] [Thread-193865] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:11:21.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:11:21.752 [DEBUG] [Thread-193865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:11:21.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:11:21.754 [DEBUG] [Thread-193865] [transport.py] [_log()] userauth is OK
2025-11-24T17:11:21.754 [DEBUG] [Thread-193865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:11:21.754 [DEBUG] [Thread-193865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:11:21.754 [DEBUG] [Thread-193865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:11:21.754 [DEBUG] [Thread-193865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:11:21.767 [INFO] [Thread-193865] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:11:21.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:11:22.332 [DEBUG] [Thread-193865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:11:22.332 [DEBUG] [Thread-193865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:11:22.332 [DEBUG] [Thread-193865] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:11:22.373 [DEBUG] [Thread-193865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:11:22.373 [DEBUG] [Thread-193865] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:11:22.375 [DEBUG] [Thread-193865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:11:22.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:11:22.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:11:22.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:11:22.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:11:22.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:11:22.393 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:11:22.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:11:22.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:11:22.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:11:22.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.632691 -999.00  +21.40  13.74     24   +0.40 1 1 1 1 1   887    0 19.58 -55.40 ----- 14.9 13.7 203.8 23.6 25.0 -28.7 24.9 -30.3 26.6 -27.9 26.9 -30.0
2025-11-24T17:11:22.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:11:22.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:11:22.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.632691
2025-11-24T17:11:22.400 [DEBUG] [Thread-193865] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:11:22.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:11:22.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:11:22.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:11:22.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:11:22.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:11:22.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:11:16', tmtdew=24.83, humidity=18.62, cloud=0.0, wind=25.71, temperature=21.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:11:04.502', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:11:22.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:11:22.503 [DEBUG] [Thread-193868] [transport.py] [_log()] starting thread (client mode): 0xd7bc5690
2025-11-24T17:11:22.503 [DEBUG] [Thread-193868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:11:22.517 [DEBUG] [Thread-193868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:11:22.517 [INFO] [Thread-193868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] client lang: <none>
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] server lang: <none>
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] kex follows: False
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] Compression: none
2025-11-24T17:11:22.525 [DEBUG] [Thread-193868] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:11:22.581 [DEBUG] [Thread-193868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:11:22.581 [DEBUG] [Thread-193868] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:11:22.581 [DEBUG] [Thread-193868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:11:22.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:11:22.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:11:22.639 [DEBUG] [Thread-193868] [transport.py] [_log()] userauth is OK
2025-11-24T17:11:22.639 [DEBUG] [Thread-193868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:11:22.639 [DEBUG] [Thread-193868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:11:22.639 [DEBUG] [Thread-193868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:11:22.639 [DEBUG] [Thread-193868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:11:22.652 [INFO] [Thread-193868] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:11:22.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:11:22.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:11:22.942 [DEBUG] [Thread-193870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:11:23.448 [DEBUG] [Thread-193868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:11:23.448 [DEBUG] [Thread-193868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:11:23.496 [DEBUG] [Thread-193868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:11:23.496 [DEBUG] [Thread-193868] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:11:23.506 [DEBUG] [Thread-193868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:11:23.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:11:23.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:11:23.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-11-24T17:11:23.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:11:23.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:11:23.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:11:23.540 [DEBUG] [Thread-193868] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:11:38.009 [DEBUG] [Thread-193871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:11:53.038 [DEBUG] [Thread-193872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:11:53.548 [DEBUG] [Thread-193873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:11:53.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:11:53.563 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:11:53.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-11-24T17:11:54.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 11, 50), 25.03, 18.52, 0.0, 27.03, 21.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:11:54.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:11:50
2025-11-24T17:11:54.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:11:54.671 [DEBUG] [Thread-193874] [transport.py] [_log()] starting thread (client mode): 0xd31ec100
2025-11-24T17:11:54.672 [DEBUG] [Thread-193874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:11:54.685 [DEBUG] [Thread-193874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:11:54.685 [INFO] [Thread-193874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:11:54.688 [DEBUG] [Thread-193874] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] client lang: <none>
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] server lang: <none>
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] kex follows: False
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] Compression: none
2025-11-24T17:11:54.689 [DEBUG] [Thread-193874] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:11:54.707 [DEBUG] [Thread-193874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:11:54.710 [DEBUG] [Thread-193874] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:11:54.711 [DEBUG] [Thread-193874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:11:54.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:11:54.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:11:54.753 [DEBUG] [Thread-193874] [transport.py] [_log()] userauth is OK
2025-11-24T17:11:54.753 [DEBUG] [Thread-193874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:11:54.754 [DEBUG] [Thread-193874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:11:54.754 [DEBUG] [Thread-193874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:11:54.754 [DEBUG] [Thread-193874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:11:54.781 [INFO] [Thread-193874] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:11:54.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:11:55.359 [DEBUG] [Thread-193874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:11:55.359 [DEBUG] [Thread-193874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:11:55.368 [DEBUG] [Thread-193874] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:11:55.400 [DEBUG] [Thread-193874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:11:55.400 [DEBUG] [Thread-193874] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:11:55.402 [DEBUG] [Thread-193874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:11:55.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:11:55.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:11:55.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:11:55.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:11:55.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:11:55.423 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:11:55.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:11:55.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:11:55.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:11:55.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.633038 -999.00  +21.50  31.41     24   +0.30 1 1 2 1 1   887    0 20.00 -55.26 ----- 27.6 31.4 147.8 35.1 25.1 -28.3 25.0 -29.2 26.6 -26.0 26.9 -28.3
2025-11-24T17:11:55.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:11:55.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:11:55.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.633038
2025-11-24T17:11:55.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:11:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:11:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:11:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:11:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:11:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:11:50', tmtdew=25.03, humidity=18.52, cloud=0.0, wind=27.03, temperature=21.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:11:34.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:11:55.432 [DEBUG] [Thread-193874] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:11:55.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:12:08.103 [DEBUG] [Thread-193877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:12:23.203 [DEBUG] [Thread-193878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:12:38.243 [DEBUG] [Thread-193879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:12:53.272 [DEBUG] [Thread-193880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:12:53.862 [DEBUG] [Thread-193881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:13:08.319 [DEBUG] [Thread-193882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:13:23.388 [DEBUG] [Thread-193883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:13:38.426 [DEBUG] [Thread-193884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:13:53.470 [DEBUG] [Thread-193885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:13:54.130 [DEBUG] [Thread-193886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:14:08.565 [DEBUG] [Thread-193887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:14:10.239 [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-11-24T17:14:23.634 [DEBUG] [Thread-193888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:14:38.666 [DEBUG] [Thread-193889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:14:40.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:14:40.278 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:14:40.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-11-24T17:14:40.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 14, 35), 24.47, 19.02, 0.0, 19.3, 21.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:14:40.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:14:35
2025-11-24T17:14:41.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:14:41.329 [DEBUG] [Thread-193890] [transport.py] [_log()] starting thread (client mode): 0xd07039d0
2025-11-24T17:14:41.330 [DEBUG] [Thread-193890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:14:41.342 [DEBUG] [Thread-193890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:14:41.343 [INFO] [Thread-193890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] client lang: <none>
2025-11-24T17:14:41.348 [DEBUG] [Thread-193890] [transport.py] [_log()] server lang: <none>
2025-11-24T17:14:41.349 [DEBUG] [Thread-193890] [transport.py] [_log()] kex follows: False
2025-11-24T17:14:41.349 [DEBUG] [Thread-193890] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:14:41.349 [DEBUG] [Thread-193890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:14:41.349 [DEBUG] [Thread-193890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:14:41.349 [DEBUG] [Thread-193890] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:14:41.349 [DEBUG] [Thread-193890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:14:41.349 [DEBUG] [Thread-193890] [transport.py] [_log()] Compression: none
2025-11-24T17:14:41.349 [DEBUG] [Thread-193890] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:14:41.379 [DEBUG] [Thread-193890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:14:41.383 [DEBUG] [Thread-193890] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:14:41.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:14:41.385 [DEBUG] [Thread-193890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:14:41.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:14:41.387 [DEBUG] [Thread-193890] [transport.py] [_log()] userauth is OK
2025-11-24T17:14:41.387 [DEBUG] [Thread-193890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:14:41.388 [DEBUG] [Thread-193890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:14:41.388 [DEBUG] [Thread-193890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:14:41.388 [DEBUG] [Thread-193890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:14:41.405 [INFO] [Thread-193890] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:14:41.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:14:42.017 [DEBUG] [Thread-193890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:14:42.017 [DEBUG] [Thread-193890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:14:42.018 [DEBUG] [Thread-193890] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:14:42.058 [DEBUG] [Thread-193890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:14:42.058 [DEBUG] [Thread-193890] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:14:42.060 [DEBUG] [Thread-193890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:14:42.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:14:42.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:14:42.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:14:42.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:14:42.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:14:42.081 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:14:42.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:14:42.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:14:42.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:14:42.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.634774 -999.00  +21.10  13.41     25   +0.40 1 1 1 1 1   887    0 19.19 -62.96 ----- 16.7 13.4 184.6 24.6 24.9 -28.5 24.8 -29.8 26.4 -27.9 26.8 -29.4
2025-11-24T17:14:42.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:14:42.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:14:42.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.634774
2025-11-24T17:14:42.088 [DEBUG] [Thread-193890] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:14:42.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:14:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:14:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:14:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:14:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:14:42.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:14:35', tmtdew=24.47, humidity=19.02, cloud=0.0, wind=19.3, temperature=21.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:14:04.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:14:42.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:14:42.187 [DEBUG] [Thread-193893] [transport.py] [_log()] starting thread (client mode): 0xd07032e0
2025-11-24T17:14:42.187 [DEBUG] [Thread-193893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:14:42.202 [DEBUG] [Thread-193893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:14:42.202 [INFO] [Thread-193893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:14:42.209 [DEBUG] [Thread-193893] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:14:42.209 [DEBUG] [Thread-193893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:14:42.209 [DEBUG] [Thread-193893] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:14:42.209 [DEBUG] [Thread-193893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:14:42.209 [DEBUG] [Thread-193893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:14:42.209 [DEBUG] [Thread-193893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:14:42.209 [DEBUG] [Thread-193893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:14:42.209 [DEBUG] [Thread-193893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] client lang: <none>
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] server lang: <none>
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] kex follows: False
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] Compression: none
2025-11-24T17:14:42.210 [DEBUG] [Thread-193893] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:14:42.266 [DEBUG] [Thread-193893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:14:42.267 [DEBUG] [Thread-193893] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:14:42.267 [DEBUG] [Thread-193893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:14:42.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:14:42.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:14:42.323 [DEBUG] [Thread-193893] [transport.py] [_log()] userauth is OK
2025-11-24T17:14:42.323 [DEBUG] [Thread-193893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:14:42.323 [DEBUG] [Thread-193893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:14:42.323 [DEBUG] [Thread-193893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:14:42.323 [DEBUG] [Thread-193893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:14:42.336 [INFO] [Thread-193893] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:14:42.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:14:42.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:14:43.157 [DEBUG] [Thread-193893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:14:43.157 [DEBUG] [Thread-193893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:14:43.205 [DEBUG] [Thread-193893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:14:43.205 [DEBUG] [Thread-193893] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:14:43.213 [DEBUG] [Thread-193893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:14:43.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:14:43.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-11-24T17:14:43.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-11-24T17:14:43.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:14:43.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:14:43.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:14:43.246 [DEBUG] [Thread-193893] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:14:53.703 [DEBUG] [Thread-193895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:14:54.448 [DEBUG] [Thread-193896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:15:08.783 [DEBUG] [Thread-193897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:15:13.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:15:13.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:15:13.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-11-24T17:15:14.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 15, 8), 24.62, 18.84, 0.0, 25.5, 21.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:15:14.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:15:08
2025-11-24T17:15:14.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:15:14.436 [DEBUG] [Thread-193898] [transport.py] [_log()] starting thread (client mode): 0xd7bc5330
2025-11-24T17:15:14.437 [DEBUG] [Thread-193898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:15:14.450 [DEBUG] [Thread-193898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:15:14.451 [INFO] [Thread-193898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] client lang: <none>
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] server lang: <none>
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] kex follows: False
2025-11-24T17:15:14.454 [DEBUG] [Thread-193898] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:15:14.455 [DEBUG] [Thread-193898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:15:14.455 [DEBUG] [Thread-193898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:15:14.455 [DEBUG] [Thread-193898] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:15:14.455 [DEBUG] [Thread-193898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:15:14.455 [DEBUG] [Thread-193898] [transport.py] [_log()] Compression: none
2025-11-24T17:15:14.455 [DEBUG] [Thread-193898] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:15:14.482 [DEBUG] [Thread-193898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:15:14.484 [DEBUG] [Thread-193898] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:15:14.485 [DEBUG] [Thread-193898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:15:14.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:15:14.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:15:14.525 [DEBUG] [Thread-193898] [transport.py] [_log()] userauth is OK
2025-11-24T17:15:14.525 [DEBUG] [Thread-193898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:15:14.525 [DEBUG] [Thread-193898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:15:14.525 [DEBUG] [Thread-193898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:15:14.525 [DEBUG] [Thread-193898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:15:14.553 [INFO] [Thread-193898] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:15:14.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:15:15.170 [DEBUG] [Thread-193898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:15:15.170 [DEBUG] [Thread-193898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:15:15.182 [DEBUG] [Thread-193898] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:15:15.211 [DEBUG] [Thread-193898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:15:15.212 [DEBUG] [Thread-193898] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:15:15.215 [DEBUG] [Thread-193898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:15:15.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:15:15.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:15:15.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:15:15.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:15:15.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:15:15.241 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:15:15.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:15:15.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:15:15.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:15:15.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.635469 -999.00  +21.40  24.16     24   +0.40 1 1 1 1 1   887    0 19.50 -63.06 ----- 21.0 24.2 191.0 26.9 24.9 -28.8 24.8 -29.8 26.5 -27.1 26.8 -29.1
2025-11-24T17:15:15.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:15:15.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:15:15.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.635469
2025-11-24T17:15:15.248 [DEBUG] [Thread-193898] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:15:15.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:15:15.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:15:15.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:15:15.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:15:15.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:15:15.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:15:08', tmtdew=24.62, humidity=18.84, cloud=0.0, wind=25.5, temperature=21.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:15:04.522', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:15: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-11-24T17:15:15.350 [DEBUG] [Thread-193901] [transport.py] [_log()] starting thread (client mode): 0xd07cebf0
2025-11-24T17:15:15.350 [DEBUG] [Thread-193901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:15:15.365 [DEBUG] [Thread-193901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:15:15.365 [INFO] [Thread-193901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:15:15.374 [DEBUG] [Thread-193901] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:15:15.374 [DEBUG] [Thread-193901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:15:15.374 [DEBUG] [Thread-193901] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:15:15.374 [DEBUG] [Thread-193901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:15:15.374 [DEBUG] [Thread-193901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:15:15.374 [DEBUG] [Thread-193901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:15:15.374 [DEBUG] [Thread-193901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:15:15.375 [DEBUG] [Thread-193901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:15:15.375 [DEBUG] [Thread-193901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:15:15.375 [DEBUG] [Thread-193901] [transport.py] [_log()] client lang: <none>
2025-11-24T17:15:15.375 [DEBUG] [Thread-193901] [transport.py] [_log()] server lang: <none>
2025-11-24T17:15:15.375 [DEBUG] [Thread-193901] [transport.py] [_log()] kex follows: False
2025-11-24T17:15:15.375 [DEBUG] [Thread-193901] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:15:15.375 [DEBUG] [Thread-193901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:15:15.375 [DEBUG] [Thread-193901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:15:15.376 [DEBUG] [Thread-193901] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:15:15.376 [DEBUG] [Thread-193901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:15:15.376 [DEBUG] [Thread-193901] [transport.py] [_log()] Compression: none
2025-11-24T17:15:15.376 [DEBUG] [Thread-193901] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:15:15.431 [DEBUG] [Thread-193901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:15:15.431 [DEBUG] [Thread-193901] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:15:15.431 [DEBUG] [Thread-193901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:15:15.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:15:15.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:15:15.487 [DEBUG] [Thread-193901] [transport.py] [_log()] userauth is OK
2025-11-24T17:15:15.487 [DEBUG] [Thread-193901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:15:15.487 [DEBUG] [Thread-193901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:15:15.487 [DEBUG] [Thread-193901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:15:15.487 [DEBUG] [Thread-193901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:15:15.501 [INFO] [Thread-193901] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:15:15.501 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:15:15.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:15:16.328 [DEBUG] [Thread-193901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:15:16.328 [DEBUG] [Thread-193901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:15:16.376 [DEBUG] [Thread-193901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:15:16.376 [DEBUG] [Thread-193901] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:15:16.384 [DEBUG] [Thread-193901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:15:16.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:15:16.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-11-24T17:15:16.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:15:16.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:15:16.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:15:16.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:15:16.417 [DEBUG] [Thread-193901] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:15:23.821 [DEBUG] [Thread-193903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:15:38.863 [DEBUG] [Thread-193904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:15:46.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:15:46.417 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:15:46.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-11-24T17:15:47.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 15, 41), 24.64, 18.8, 0.0, 27.6, 21.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:15:47.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:15:41
2025-11-24T17:15:47.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:15:47.703 [DEBUG] [Thread-193905] [transport.py] [_log()] starting thread (client mode): 0xd07ce6b0
2025-11-24T17:15:47.704 [DEBUG] [Thread-193905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:15:47.716 [DEBUG] [Thread-193905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:15:47.716 [INFO] [Thread-193905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] client lang: <none>
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] server lang: <none>
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] kex follows: False
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:15:47.719 [DEBUG] [Thread-193905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:15:47.720 [DEBUG] [Thread-193905] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:15:47.720 [DEBUG] [Thread-193905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:15:47.720 [DEBUG] [Thread-193905] [transport.py] [_log()] Compression: none
2025-11-24T17:15:47.720 [DEBUG] [Thread-193905] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:15:47.739 [DEBUG] [Thread-193905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:15:47.746 [DEBUG] [Thread-193905] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:15:47.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:15:47.749 [DEBUG] [Thread-193905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:15:47.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:15:47.750 [DEBUG] [Thread-193905] [transport.py] [_log()] userauth is OK
2025-11-24T17:15:47.750 [DEBUG] [Thread-193905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:15:47.750 [DEBUG] [Thread-193905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:15:47.750 [DEBUG] [Thread-193905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:15:47.750 [DEBUG] [Thread-193905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:15:47.783 [INFO] [Thread-193905] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:15:47.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:15:48.349 [DEBUG] [Thread-193905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:15:48.350 [DEBUG] [Thread-193905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:15:48.360 [DEBUG] [Thread-193905] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:15:48.390 [DEBUG] [Thread-193905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:15:48.390 [DEBUG] [Thread-193905] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:15:48.394 [DEBUG] [Thread-193905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:15:48.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:15:48.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:15:48.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:15:48.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:15:48.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:15:48.407 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:15:48.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:15:48.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:15:48.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:15:48.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.635816 -999.00  +21.40  22.14     24   +0.40 1 1 1 1 1   887    0 19.41 -59.79 ----- 18.5 22.1 190.6 26.8 24.9 -28.6 24.8 -29.8 26.4 -27.0 26.7 -29.3
2025-11-24T17:15:48.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:15:48.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:15:48.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.635816
2025-11-24T17:15:48.414 [DEBUG] [Thread-193905] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:15:48.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:15:48.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:15:48.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:15:48.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:15:48.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:15:48.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:15:41', tmtdew=24.64, humidity=18.8, cloud=0.0, wind=27.6, temperature=21.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:15:34.502', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:15:48.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:15:48.519 [DEBUG] [Thread-193908] [transport.py] [_log()] starting thread (client mode): 0xd07cdbd0
2025-11-24T17:15:48.519 [DEBUG] [Thread-193908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:15:48.534 [DEBUG] [Thread-193908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:15:48.534 [INFO] [Thread-193908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:15:48.541 [DEBUG] [Thread-193908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:15:48.542 [DEBUG] [Thread-193908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:15:48.543 [DEBUG] [Thread-193908] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:15:48.543 [DEBUG] [Thread-193908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:15:48.543 [DEBUG] [Thread-193908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:15:48.543 [DEBUG] [Thread-193908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:15:48.543 [DEBUG] [Thread-193908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:15:48.543 [DEBUG] [Thread-193908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:15:48.544 [DEBUG] [Thread-193908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:15:48.544 [DEBUG] [Thread-193908] [transport.py] [_log()] client lang: <none>
2025-11-24T17:15:48.544 [DEBUG] [Thread-193908] [transport.py] [_log()] server lang: <none>
2025-11-24T17:15:48.544 [DEBUG] [Thread-193908] [transport.py] [_log()] kex follows: False
2025-11-24T17:15:48.544 [DEBUG] [Thread-193908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:15:48.544 [DEBUG] [Thread-193908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:15:48.544 [DEBUG] [Thread-193908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:15:48.544 [DEBUG] [Thread-193908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:15:48.545 [DEBUG] [Thread-193908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:15:48.545 [DEBUG] [Thread-193908] [transport.py] [_log()] Compression: none
2025-11-24T17:15:48.545 [DEBUG] [Thread-193908] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:15:48.600 [DEBUG] [Thread-193908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:15:48.601 [DEBUG] [Thread-193908] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:15:48.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:15:48.601 [DEBUG] [Thread-193908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:15:48.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:15:48.659 [DEBUG] [Thread-193908] [transport.py] [_log()] userauth is OK
2025-11-24T17:15:48.660 [DEBUG] [Thread-193908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:15:48.660 [DEBUG] [Thread-193908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:15:48.660 [DEBUG] [Thread-193908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:15:48.660 [DEBUG] [Thread-193908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:15:48.681 [INFO] [Thread-193908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:15:48.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:15:48.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:15:49.545 [DEBUG] [Thread-193908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:15:49.545 [DEBUG] [Thread-193908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:15:49.593 [DEBUG] [Thread-193908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:15:49.593 [DEBUG] [Thread-193908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:15:49.602 [DEBUG] [Thread-193908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:15:49.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:15:49.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-11-24T17:15:49.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-11-24T17:15:49.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:15:49.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:15:49.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:15:49.638 [DEBUG] [Thread-193908] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:15:53.939 [DEBUG] [Thread-193910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:15:54.748 [DEBUG] [Thread-193911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:16:09.076 [DEBUG] [Thread-193912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:16:19.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:16:19.665 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:16:19.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-11-24T17:16:20.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 16, 14), 24.6, 18.87, 0.0, 26.1, 21.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:16:20.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:16:14
2025-11-24T17:16:20.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:16:20.904 [DEBUG] [Thread-193913] [transport.py] [_log()] starting thread (client mode): 0xd07bf790
2025-11-24T17:16:20.904 [DEBUG] [Thread-193913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:16:20.918 [DEBUG] [Thread-193913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:16:20.918 [INFO] [Thread-193913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] client lang: <none>
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] server lang: <none>
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] kex follows: False
2025-11-24T17:16:20.922 [DEBUG] [Thread-193913] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:16:20.923 [DEBUG] [Thread-193913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:16:20.923 [DEBUG] [Thread-193913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:16:20.923 [DEBUG] [Thread-193913] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:16:20.923 [DEBUG] [Thread-193913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:16:20.923 [DEBUG] [Thread-193913] [transport.py] [_log()] Compression: none
2025-11-24T17:16:20.923 [DEBUG] [Thread-193913] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:16:20.955 [DEBUG] [Thread-193913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:16:20.958 [DEBUG] [Thread-193913] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:16:20.960 [DEBUG] [Thread-193913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:16:20.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:16:20.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:16:20.962 [DEBUG] [Thread-193913] [transport.py] [_log()] userauth is OK
2025-11-24T17:16:20.962 [DEBUG] [Thread-193913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:16:20.962 [DEBUG] [Thread-193913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:16:20.962 [DEBUG] [Thread-193913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:16:20.962 [DEBUG] [Thread-193913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:16:20.981 [INFO] [Thread-193913] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:16:20.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:16:21.557 [DEBUG] [Thread-193913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:16:21.557 [DEBUG] [Thread-193913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:16:21.559 [DEBUG] [Thread-193913] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:16:21.598 [DEBUG] [Thread-193913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:16:21.598 [DEBUG] [Thread-193913] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:16:21.602 [DEBUG] [Thread-193913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:16:21.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:16:21.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:16:21.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:16:21.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:16:21.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:16:21.625 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:16:21.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:16:21.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:16:21.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:16:21.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.636163 -999.00  +21.50  25.70     24   +0.40 1 1 1 1 1   887    0 20.04 -56.39 ----- 18.3 25.7 219.9 40.9 24.9 -29.7 24.8 -28.2 26.4 -26.8 26.7 -29.2
2025-11-24T17:16:21.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:16:21.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:16:21.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.636163
2025-11-24T17:16:21.633 [DEBUG] [Thread-193913] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:16:21.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:16:21.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:16:21.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:16:21.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:16:21.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:16:21.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:16:14', tmtdew=24.6, humidity=18.87, cloud=0.0, wind=26.1, temperature=21.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:16:04.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:16:21.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:16:21.739 [DEBUG] [Thread-193916] [transport.py] [_log()] starting thread (client mode): 0xd31ee860
2025-11-24T17:16:21.739 [DEBUG] [Thread-193916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:16:21.754 [DEBUG] [Thread-193916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:16:21.754 [INFO] [Thread-193916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:16:21.761 [DEBUG] [Thread-193916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:16:21.761 [DEBUG] [Thread-193916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:16:21.761 [DEBUG] [Thread-193916] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:16:21.761 [DEBUG] [Thread-193916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:16:21.761 [DEBUG] [Thread-193916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:16:21.761 [DEBUG] [Thread-193916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:16:21.761 [DEBUG] [Thread-193916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:16:21.761 [DEBUG] [Thread-193916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:16:21.761 [DEBUG] [Thread-193916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:16:21.761 [DEBUG] [Thread-193916] [transport.py] [_log()] client lang: <none>
2025-11-24T17:16:21.762 [DEBUG] [Thread-193916] [transport.py] [_log()] server lang: <none>
2025-11-24T17:16:21.762 [DEBUG] [Thread-193916] [transport.py] [_log()] kex follows: False
2025-11-24T17:16:21.762 [DEBUG] [Thread-193916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:16:21.762 [DEBUG] [Thread-193916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:16:21.762 [DEBUG] [Thread-193916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:16:21.762 [DEBUG] [Thread-193916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:16:21.762 [DEBUG] [Thread-193916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:16:21.762 [DEBUG] [Thread-193916] [transport.py] [_log()] Compression: none
2025-11-24T17:16:21.762 [DEBUG] [Thread-193916] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:16:21.818 [DEBUG] [Thread-193916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:16:21.819 [DEBUG] [Thread-193916] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:16:21.819 [DEBUG] [Thread-193916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:16:21.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:16:21.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:16:21.876 [DEBUG] [Thread-193916] [transport.py] [_log()] userauth is OK
2025-11-24T17:16:21.876 [DEBUG] [Thread-193916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:16:21.876 [DEBUG] [Thread-193916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:16:21.876 [DEBUG] [Thread-193916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:16:21.876 [DEBUG] [Thread-193916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:16:21.895 [INFO] [Thread-193916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:16:21.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:16:21.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:16:22.706 [DEBUG] [Thread-193916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:16:22.706 [DEBUG] [Thread-193916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:16:22.753 [DEBUG] [Thread-193916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:16:22.754 [DEBUG] [Thread-193916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:16:22.763 [DEBUG] [Thread-193916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:16:22.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:16:22.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-11-24T17:16:22.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-11-24T17:16:22.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:16:22.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:16:22.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:16:22.802 [DEBUG] [Thread-193916] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:16:24.109 [DEBUG] [Thread-193918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:16:39.160 [DEBUG] [Thread-193919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:16:52.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:16:52.821 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:16:52.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-11-24T17:16:53.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 16, 46), 24.88, 18.85, 0.0, 30.79, 21.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:16:53.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:16:46
2025-11-24T17:16:53.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:16:53.961 [DEBUG] [Thread-193920] [transport.py] [_log()] starting thread (client mode): 0xd31603a0
2025-11-24T17:16:53.961 [DEBUG] [Thread-193920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:16:53.975 [DEBUG] [Thread-193920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:16:53.975 [INFO] [Thread-193920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:16:53.980 [DEBUG] [Thread-193920] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:16:53.980 [DEBUG] [Thread-193920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:16:53.980 [DEBUG] [Thread-193920] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:16:53.980 [DEBUG] [Thread-193920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:16:53.981 [DEBUG] [Thread-193920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:16:53.981 [DEBUG] [Thread-193920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:16:53.981 [DEBUG] [Thread-193920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:16:53.981 [DEBUG] [Thread-193920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:16:53.981 [DEBUG] [Thread-193920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:16:53.981 [DEBUG] [Thread-193920] [transport.py] [_log()] client lang: <none>
2025-11-24T17:16:53.981 [DEBUG] [Thread-193920] [transport.py] [_log()] server lang: <none>
2025-11-24T17:16:53.981 [DEBUG] [Thread-193920] [transport.py] [_log()] kex follows: False
2025-11-24T17:16:53.981 [DEBUG] [Thread-193920] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:16:53.982 [DEBUG] [Thread-193920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:16:53.982 [DEBUG] [Thread-193920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:16:53.982 [DEBUG] [Thread-193920] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:16:53.982 [DEBUG] [Thread-193920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:16:53.982 [DEBUG] [Thread-193920] [transport.py] [_log()] Compression: none
2025-11-24T17:16:53.982 [DEBUG] [Thread-193920] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:16:54.019 [DEBUG] [Thread-193920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:16:54.022 [DEBUG] [Thread-193920] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:16:54.024 [DEBUG] [Thread-193920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:16:54.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:16:54.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:16:54.028 [DEBUG] [Thread-193920] [transport.py] [_log()] userauth is OK
2025-11-24T17:16:54.029 [DEBUG] [Thread-193920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:16:54.029 [DEBUG] [Thread-193920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:16:54.029 [DEBUG] [Thread-193920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:16:54.029 [DEBUG] [Thread-193920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:16:54.055 [INFO] [Thread-193920] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:16:54.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:16:54.199 [DEBUG] [Thread-193922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:16:54.667 [DEBUG] [Thread-193920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:16:54.667 [DEBUG] [Thread-193920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:16:54.677 [DEBUG] [Thread-193920] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:16:54.708 [DEBUG] [Thread-193920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:16:54.708 [DEBUG] [Thread-193920] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:16:54.712 [DEBUG] [Thread-193920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:16:54.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:16:54.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:16:54.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:16:54.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:16:54.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:16:54.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:16:54.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:16:54.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:16:54.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:16:54.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.636510 -999.00  +21.70  20.87     24   +0.50 1 1 1 1 1   887    0 19.56 -55.51 ----- 21.9 20.9 213.7 32.7 24.9 -28.4 24.9 -30.5 26.4 -27.2 26.7 -28.9
2025-11-24T17:16:54.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:16:54.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:16:54.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.636510
2025-11-24T17:16:54.733 [DEBUG] [Thread-193920] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:16:54.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:16:54.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:16:54.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:16:54.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:16:54.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:16:54.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:16:46', tmtdew=24.88, humidity=18.85, cloud=0.0, wind=30.79, temperature=21.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:16:34.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:16:54.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:16:54.830 [DEBUG] [Thread-193924] [transport.py] [_log()] starting thread (client mode): 0xd7bc6680
2025-11-24T17:16:54.831 [DEBUG] [Thread-193924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:16:54.846 [DEBUG] [Thread-193924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:16:54.846 [INFO] [Thread-193924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:16:54.854 [DEBUG] [Thread-193924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:16:54.854 [DEBUG] [Thread-193924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:16:54.854 [DEBUG] [Thread-193924] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:16:54.854 [DEBUG] [Thread-193924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:16:54.854 [DEBUG] [Thread-193924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:16:54.854 [DEBUG] [Thread-193924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:16:54.854 [DEBUG] [Thread-193924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:16:54.854 [DEBUG] [Thread-193924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:16:54.854 [DEBUG] [Thread-193924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:16:54.854 [DEBUG] [Thread-193924] [transport.py] [_log()] client lang: <none>
2025-11-24T17:16:54.855 [DEBUG] [Thread-193924] [transport.py] [_log()] server lang: <none>
2025-11-24T17:16:54.855 [DEBUG] [Thread-193924] [transport.py] [_log()] kex follows: False
2025-11-24T17:16:54.855 [DEBUG] [Thread-193924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:16:54.855 [DEBUG] [Thread-193924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:16:54.855 [DEBUG] [Thread-193924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:16:54.855 [DEBUG] [Thread-193924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:16:54.855 [DEBUG] [Thread-193924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:16:54.856 [DEBUG] [Thread-193924] [transport.py] [_log()] Compression: none
2025-11-24T17:16:54.856 [DEBUG] [Thread-193924] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:16:54.910 [DEBUG] [Thread-193924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:16:54.910 [DEBUG] [Thread-193924] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:16:54.910 [DEBUG] [Thread-193924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:16:54.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:16:54.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:16:54.967 [DEBUG] [Thread-193924] [transport.py] [_log()] userauth is OK
2025-11-24T17:16:54.967 [DEBUG] [Thread-193924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:16:54.967 [DEBUG] [Thread-193924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:16:54.967 [DEBUG] [Thread-193924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:16:54.967 [DEBUG] [Thread-193924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:16:54.982 [INFO] [Thread-193924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:16:54.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:16:54.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:16:54.996 [DEBUG] [Thread-193926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:16:55.853 [DEBUG] [Thread-193924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:16:55.854 [DEBUG] [Thread-193924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:16:55.901 [DEBUG] [Thread-193924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:16:55.901 [DEBUG] [Thread-193924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:16:55.910 [DEBUG] [Thread-193924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:16:55.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:16:55.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-11-24T17:16:55.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-11-24T17:16:55.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:16:55.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:16:55.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:16:55.945 [DEBUG] [Thread-193924] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:17:09.243 [DEBUG] [Thread-193927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:17:24.394 [DEBUG] [Thread-193928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:17:25.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:17:25.943 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:17:25.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-11-24T17:17:26.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 17, 19), 24.97, 18.76, 0.0, 34.05, 21.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:17:26.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:17:19
2025-11-24T17:17:26.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:17:27.082 [DEBUG] [Thread-193929] [transport.py] [_log()] starting thread (client mode): 0xd7bc52a0
2025-11-24T17:17:27.083 [DEBUG] [Thread-193929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:17:27.096 [DEBUG] [Thread-193929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:17:27.096 [INFO] [Thread-193929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:17:27.102 [DEBUG] [Thread-193929] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:17:27.102 [DEBUG] [Thread-193929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:17:27.102 [DEBUG] [Thread-193929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:17:27.102 [DEBUG] [Thread-193929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:17:27.102 [DEBUG] [Thread-193929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:17:27.102 [DEBUG] [Thread-193929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:17:27.103 [DEBUG] [Thread-193929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:17:27.103 [DEBUG] [Thread-193929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:17:27.103 [DEBUG] [Thread-193929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:17:27.103 [DEBUG] [Thread-193929] [transport.py] [_log()] client lang: <none>
2025-11-24T17:17:27.103 [DEBUG] [Thread-193929] [transport.py] [_log()] server lang: <none>
2025-11-24T17:17:27.103 [DEBUG] [Thread-193929] [transport.py] [_log()] kex follows: False
2025-11-24T17:17:27.103 [DEBUG] [Thread-193929] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:17:27.104 [DEBUG] [Thread-193929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:17:27.104 [DEBUG] [Thread-193929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:17:27.104 [DEBUG] [Thread-193929] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:17:27.104 [DEBUG] [Thread-193929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:17:27.104 [DEBUG] [Thread-193929] [transport.py] [_log()] Compression: none
2025-11-24T17:17:27.104 [DEBUG] [Thread-193929] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:17:27.143 [DEBUG] [Thread-193929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:17:27.148 [DEBUG] [Thread-193929] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:17:27.150 [DEBUG] [Thread-193929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:17:27.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:17:27.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:17:27.156 [DEBUG] [Thread-193929] [transport.py] [_log()] userauth is OK
2025-11-24T17:17:27.156 [DEBUG] [Thread-193929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:17:27.156 [DEBUG] [Thread-193929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:17:27.156 [DEBUG] [Thread-193929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:17:27.156 [DEBUG] [Thread-193929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:17:27.183 [INFO] [Thread-193929] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:17:27.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:17:27.789 [DEBUG] [Thread-193929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:17:27.798 [DEBUG] [Thread-193929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:17:27.799 [DEBUG] [Thread-193929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:17:27.830 [DEBUG] [Thread-193929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:17:27.830 [DEBUG] [Thread-193929] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:17:27.832 [DEBUG] [Thread-193929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:17:27.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:17:27.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:17:27.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:17:27.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:17:27.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:17:27.853 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:17:27.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:17:27.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:17:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:17:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.636857 -999.00  +21.60  32.00     24   +0.40 1 1 2 1 1   887    0 19.42 -55.21 ----- 26.6 32.0 198.8 36.0 24.9 -29.4 24.8 -29.7 26.5 -28.5 26.8 -30.1
2025-11-24T17:17:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:17:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:17:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.636857
2025-11-24T17:17:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:17:27.870 [DEBUG] [Thread-193929] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:17:27.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:17:27.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:17:27.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:17:27.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:17:27.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:17:19', tmtdew=24.97, humidity=18.76, cloud=0.0, wind=34.05, temperature=21.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:17:04.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:17:27.945 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:17:27.958 [DEBUG] [Thread-193932] [transport.py] [_log()] starting thread (client mode): 0xd31ec5e0
2025-11-24T17:17:27.958 [DEBUG] [Thread-193932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:17:27.973 [DEBUG] [Thread-193932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:17:27.973 [INFO] [Thread-193932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] client lang: <none>
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] server lang: <none>
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] kex follows: False
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] Compression: none
2025-11-24T17:17:27.981 [DEBUG] [Thread-193932] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:17:28.038 [DEBUG] [Thread-193932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:17:28.038 [DEBUG] [Thread-193932] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:17:28.038 [DEBUG] [Thread-193932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:17:28.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:17:28.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:17:28.095 [DEBUG] [Thread-193932] [transport.py] [_log()] userauth is OK
2025-11-24T17:17:28.096 [DEBUG] [Thread-193932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:17:28.096 [DEBUG] [Thread-193932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:17:28.096 [DEBUG] [Thread-193932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:17:28.096 [DEBUG] [Thread-193932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:17:28.114 [INFO] [Thread-193932] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:17:28.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:17:28.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:17:28.917 [DEBUG] [Thread-193932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:17:28.917 [DEBUG] [Thread-193932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:17:28.964 [DEBUG] [Thread-193932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:17:28.964 [DEBUG] [Thread-193932] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:17:28.972 [DEBUG] [Thread-193932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:17:28.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:17:28.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-11-24T17:17:28.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-11-24T17:17:28.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:17:28.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:17:28.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:17:29.007 [DEBUG] [Thread-193932] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:17:39.473 [DEBUG] [Thread-193934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:17:54.573 [DEBUG] [Thread-193935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:17:55.253 [DEBUG] [Thread-193936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:17:59.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:17:59.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:17:59.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-11-24T17:17:59.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 17, 52), 24.82, 18.71, 0.0, 31.55, 21.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:17:59.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:17:52
2025-11-24T17:17:59.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:18:00.139 [DEBUG] [Thread-193937] [transport.py] [_log()] starting thread (client mode): 0xd7bc5f00
2025-11-24T17:18:00.139 [DEBUG] [Thread-193937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:18:00.156 [DEBUG] [Thread-193937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:18:00.156 [INFO] [Thread-193937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] client lang: <none>
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] server lang: <none>
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] kex follows: False
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] Compression: none
2025-11-24T17:18:00.158 [DEBUG] [Thread-193937] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:18:00.169 [DEBUG] [Thread-193937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:18:00.169 [DEBUG] [Thread-193937] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:18:00.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:18:00.170 [DEBUG] [Thread-193937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:18:00.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:18:00.171 [DEBUG] [Thread-193937] [transport.py] [_log()] userauth is OK
2025-11-24T17:18:00.171 [DEBUG] [Thread-193937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:18:00.171 [DEBUG] [Thread-193937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:18:00.171 [DEBUG] [Thread-193937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:18:00.171 [DEBUG] [Thread-193937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:18:00.184 [INFO] [Thread-193937] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:18:00.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:18:00.789 [DEBUG] [Thread-193937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:18:00.789 [DEBUG] [Thread-193937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:18:00.790 [DEBUG] [Thread-193937] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:18:00.830 [DEBUG] [Thread-193937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:18:00.830 [DEBUG] [Thread-193937] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:18:00.833 [DEBUG] [Thread-193937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:18:00.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:18:00.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:18:00.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:18:00.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:18:00.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:18:00.849 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:18:00.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:18:00.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:18:00.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:18:00.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.637205 -999.00  +21.50  25.80     24   +0.40 1 1 1 1 1   887    0 19.70 -51.05 ----- 18.5 25.8 196.0 34.7 24.9 -29.2 24.8 -29.0 26.3 -28.1 26.6 -30.2
2025-11-24T17:18:00.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:18:00.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:18:00.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.637205
2025-11-24T17:18:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:18:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:18:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:18:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:18:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:18:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:17:52', tmtdew=24.82, humidity=18.71, cloud=0.0, wind=31.55, temperature=21.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:17:34.512', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:18:00.850 [DEBUG] [Thread-193937] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:18:00.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:18:00.936 [DEBUG] [Thread-193940] [transport.py] [_log()] starting thread (client mode): 0xd7bc5c00
2025-11-24T17:18:00.936 [DEBUG] [Thread-193940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:18:00.951 [DEBUG] [Thread-193940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:18:00.951 [INFO] [Thread-193940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] client lang: <none>
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] server lang: <none>
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] kex follows: False
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:18:00.958 [DEBUG] [Thread-193940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:18:00.959 [DEBUG] [Thread-193940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:18:00.959 [DEBUG] [Thread-193940] [transport.py] [_log()] Compression: none
2025-11-24T17:18:00.959 [DEBUG] [Thread-193940] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:18:01.013 [DEBUG] [Thread-193940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:18:01.013 [DEBUG] [Thread-193940] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:18:01.013 [DEBUG] [Thread-193940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:18:01.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:18:01.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:18:01.070 [DEBUG] [Thread-193940] [transport.py] [_log()] userauth is OK
2025-11-24T17:18:01.070 [DEBUG] [Thread-193940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:18:01.070 [DEBUG] [Thread-193940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:18:01.070 [DEBUG] [Thread-193940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:18:01.071 [DEBUG] [Thread-193940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:18:01.086 [INFO] [Thread-193940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:18:01.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:18:01.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:18:01.963 [DEBUG] [Thread-193940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:18:01.963 [DEBUG] [Thread-193940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:18:02.012 [DEBUG] [Thread-193940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:18:02.012 [DEBUG] [Thread-193940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:18:02.020 [DEBUG] [Thread-193940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:18:02.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:18:02.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-11-24T17:18:02.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-11-24T17:18:02.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:18:02.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:18:02.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:18:02.050 [DEBUG] [Thread-193940] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:18:09.620 [DEBUG] [Thread-193942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:18:24.716 [DEBUG] [Thread-193943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:18:32.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:18:32.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:18:32.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-11-24T17:18:32.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 18, 24), 24.86, 18.66, 0.0, 26.57, 21.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:18:32.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:18:24
2025-11-24T17:18:33.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:18:33.269 [DEBUG] [Thread-193944] [transport.py] [_log()] starting thread (client mode): 0xd31ec940
2025-11-24T17:18:33.270 [DEBUG] [Thread-193944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:18:33.274 [DEBUG] [Thread-193944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:18:33.275 [INFO] [Thread-193944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] client lang: <none>
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] server lang: <none>
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] kex follows: False
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:18:33.279 [DEBUG] [Thread-193944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:18:33.280 [DEBUG] [Thread-193944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:18:33.280 [DEBUG] [Thread-193944] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:18:33.280 [DEBUG] [Thread-193944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:18:33.280 [DEBUG] [Thread-193944] [transport.py] [_log()] Compression: none
2025-11-24T17:18:33.280 [DEBUG] [Thread-193944] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:18:33.316 [DEBUG] [Thread-193944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:18:33.321 [DEBUG] [Thread-193944] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:18:33.324 [DEBUG] [Thread-193944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:18:33.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:18:33.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:18:33.330 [DEBUG] [Thread-193944] [transport.py] [_log()] userauth is OK
2025-11-24T17:18:33.331 [DEBUG] [Thread-193944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:18:33.331 [DEBUG] [Thread-193944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:18:33.331 [DEBUG] [Thread-193944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:18:33.331 [DEBUG] [Thread-193944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:18:33.352 [INFO] [Thread-193944] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:18:33.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:18:33.915 [DEBUG] [Thread-193944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:18:33.915 [DEBUG] [Thread-193944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:18:33.916 [DEBUG] [Thread-193944] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:18:33.956 [DEBUG] [Thread-193944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:18:33.956 [DEBUG] [Thread-193944] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:18:33.958 [DEBUG] [Thread-193944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:18:33.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:18:33.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:18:33.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:18:33.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:18:33.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:18:33.978 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:18:33.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:18:33.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:18:33.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:18:33.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.637552 -999.00  +21.50  13.00     24   +0.50 1 1 1 1 1   887    0 19.67 -44.97 ----- 15.6 13.0 187.4 20.3 24.9 -28.1 24.9 -29.2 26.4 -26.9 26.7 -29.1
2025-11-24T17:18:33.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:18:33.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:18:33.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.637552
2025-11-24T17:18:33.985 [DEBUG] [Thread-193944] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:18:33.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:18:33.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:18:33.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:18:33.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:18:33.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:18:33.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:18:24', tmtdew=24.86, humidity=18.66, cloud=0.0, wind=26.57, temperature=21.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:18:04.493', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:18:34.065 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:18:34.078 [DEBUG] [Thread-193947] [transport.py] [_log()] starting thread (client mode): 0xd31ef7c0
2025-11-24T17:18:34.078 [DEBUG] [Thread-193947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:18:34.093 [DEBUG] [Thread-193947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:18:34.094 [INFO] [Thread-193947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:18:34.101 [DEBUG] [Thread-193947] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:18:34.101 [DEBUG] [Thread-193947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:18:34.101 [DEBUG] [Thread-193947] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:18:34.101 [DEBUG] [Thread-193947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:18:34.101 [DEBUG] [Thread-193947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:18:34.101 [DEBUG] [Thread-193947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:18:34.101 [DEBUG] [Thread-193947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:18:34.101 [DEBUG] [Thread-193947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:18:34.101 [DEBUG] [Thread-193947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:18:34.102 [DEBUG] [Thread-193947] [transport.py] [_log()] client lang: <none>
2025-11-24T17:18:34.102 [DEBUG] [Thread-193947] [transport.py] [_log()] server lang: <none>
2025-11-24T17:18:34.102 [DEBUG] [Thread-193947] [transport.py] [_log()] kex follows: False
2025-11-24T17:18:34.102 [DEBUG] [Thread-193947] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:18:34.102 [DEBUG] [Thread-193947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:18:34.102 [DEBUG] [Thread-193947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:18:34.102 [DEBUG] [Thread-193947] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:18:34.102 [DEBUG] [Thread-193947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:18:34.102 [DEBUG] [Thread-193947] [transport.py] [_log()] Compression: none
2025-11-24T17:18:34.102 [DEBUG] [Thread-193947] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:18:34.160 [DEBUG] [Thread-193947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:18:34.160 [DEBUG] [Thread-193947] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:18:34.161 [DEBUG] [Thread-193947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:18:34.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:18:34.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:18:34.215 [DEBUG] [Thread-193947] [transport.py] [_log()] userauth is OK
2025-11-24T17:18:34.215 [DEBUG] [Thread-193947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:18:34.215 [DEBUG] [Thread-193947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:18:34.215 [DEBUG] [Thread-193947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:18:34.215 [DEBUG] [Thread-193947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:18:34.230 [INFO] [Thread-193947] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:18:34.230 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:18:34.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:18:35.056 [DEBUG] [Thread-193947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:18:35.057 [DEBUG] [Thread-193947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:18:35.105 [DEBUG] [Thread-193947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:18:35.105 [DEBUG] [Thread-193947] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:18:35.114 [DEBUG] [Thread-193947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:18:35.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:18:35.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')
2025-11-24T17:18:35.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-11-24T17:18:35.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:18:35.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:18:35.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:18:35.155 [DEBUG] [Thread-193947] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:18:39.754 [DEBUG] [Thread-193949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:18:54.836 [DEBUG] [Thread-193950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:18:55.460 [DEBUG] [Thread-193951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:19:05.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:19:05.154 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:19:05.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-11-24T17:19:06.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 18, 57), 24.9, 18.72, 0.0, 24.72, 21.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:19:06.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:18:57
2025-11-24T17:19:06.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:19:06.443 [DEBUG] [Thread-193952] [transport.py] [_log()] starting thread (client mode): 0xd07cfac0
2025-11-24T17:19:06.444 [DEBUG] [Thread-193952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:19:06.460 [DEBUG] [Thread-193952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:19:06.460 [INFO] [Thread-193952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:19:06.464 [DEBUG] [Thread-193952] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:19:06.464 [DEBUG] [Thread-193952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:19:06.464 [DEBUG] [Thread-193952] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:19:06.464 [DEBUG] [Thread-193952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:19:06.464 [DEBUG] [Thread-193952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:19:06.464 [DEBUG] [Thread-193952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:19:06.464 [DEBUG] [Thread-193952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:19:06.464 [DEBUG] [Thread-193952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:19:06.464 [DEBUG] [Thread-193952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:19:06.465 [DEBUG] [Thread-193952] [transport.py] [_log()] client lang: <none>
2025-11-24T17:19:06.465 [DEBUG] [Thread-193952] [transport.py] [_log()] server lang: <none>
2025-11-24T17:19:06.465 [DEBUG] [Thread-193952] [transport.py] [_log()] kex follows: False
2025-11-24T17:19:06.465 [DEBUG] [Thread-193952] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:19:06.465 [DEBUG] [Thread-193952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:19:06.465 [DEBUG] [Thread-193952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:19:06.466 [DEBUG] [Thread-193952] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:19:06.466 [DEBUG] [Thread-193952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:19:06.466 [DEBUG] [Thread-193952] [transport.py] [_log()] Compression: none
2025-11-24T17:19:06.466 [DEBUG] [Thread-193952] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:19:06.495 [DEBUG] [Thread-193952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:19:06.497 [DEBUG] [Thread-193952] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:19:06.498 [DEBUG] [Thread-193952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:19:06.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:19:06.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:19:06.501 [DEBUG] [Thread-193952] [transport.py] [_log()] userauth is OK
2025-11-24T17:19:06.501 [DEBUG] [Thread-193952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:19:06.502 [DEBUG] [Thread-193952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:19:06.502 [DEBUG] [Thread-193952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:19:06.502 [DEBUG] [Thread-193952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:19:06.526 [INFO] [Thread-193952] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:19:06.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:19:07.170 [DEBUG] [Thread-193952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:19:07.170 [DEBUG] [Thread-193952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:19:07.171 [DEBUG] [Thread-193952] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:19:07.212 [DEBUG] [Thread-193952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:19:07.212 [DEBUG] [Thread-193952] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:19:07.216 [DEBUG] [Thread-193952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:19:07.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:19:07.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:19:07.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:19:07.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:19:07.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:19:07.239 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:19:07.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:19:07.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:19:07.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:19:07.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.637899 -999.00  +21.60  26.94     24   +0.40 1 1 1 1 1   887    0 19.94 -45.44 ----- 25.2 26.9 199.3 41.2 24.9 -29.1 24.8 -32.2 26.5 -26.5 26.8 -28.4
2025-11-24T17:19:07.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:19:07.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:19:07.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.637899
2025-11-24T17:19:07.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:19:07.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:19:07.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:19:07.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:19:07.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:19:07.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:18:57', tmtdew=24.9, humidity=18.72, cloud=0.0, wind=24.72, temperature=21.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:18:34.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:19:07.246 [DEBUG] [Thread-193952] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:19:07.330 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:19:07.342 [DEBUG] [Thread-193955] [transport.py] [_log()] starting thread (client mode): 0xd07ce740
2025-11-24T17:19:07.342 [DEBUG] [Thread-193955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:19:07.357 [DEBUG] [Thread-193955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:19:07.357 [INFO] [Thread-193955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] client lang: <none>
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] server lang: <none>
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] kex follows: False
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:19:07.365 [DEBUG] [Thread-193955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:19:07.366 [DEBUG] [Thread-193955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:19:07.366 [DEBUG] [Thread-193955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:19:07.366 [DEBUG] [Thread-193955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:19:07.366 [DEBUG] [Thread-193955] [transport.py] [_log()] Compression: none
2025-11-24T17:19:07.366 [DEBUG] [Thread-193955] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:19:07.423 [DEBUG] [Thread-193955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:19:07.424 [DEBUG] [Thread-193955] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:19:07.425 [DEBUG] [Thread-193955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:19:07.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:19:07.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:19:07.479 [DEBUG] [Thread-193955] [transport.py] [_log()] userauth is OK
2025-11-24T17:19:07.479 [DEBUG] [Thread-193955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:19:07.480 [DEBUG] [Thread-193955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:19:07.480 [DEBUG] [Thread-193955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:19:07.480 [DEBUG] [Thread-193955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:19:07.499 [INFO] [Thread-193955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:19:07.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:19:07.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:19:08.376 [DEBUG] [Thread-193955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:19:08.376 [DEBUG] [Thread-193955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:19:08.425 [DEBUG] [Thread-193955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:19:08.425 [DEBUG] [Thread-193955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:19:08.434 [DEBUG] [Thread-193955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:19:08.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:19: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-11-24T17:19:08.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-11-24T17:19:08.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:19:08.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:19:08.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:19:08.472 [DEBUG] [Thread-193955] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:19:09.875 [DEBUG] [Thread-193957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:19:24.919 [DEBUG] [Thread-193958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:19:38.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:19:38.506 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:19:38.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-11-24T17:19:39.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 19, 30), 24.93, 18.69, 0.0, 25.28, 21.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:19:39.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:19:30
2025-11-24T17:19:39.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:19:39.652 [DEBUG] [Thread-193959] [transport.py] [_log()] starting thread (client mode): 0xd0784b80
2025-11-24T17:19:39.652 [DEBUG] [Thread-193959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:19:39.661 [DEBUG] [Thread-193959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:19:39.661 [INFO] [Thread-193959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] client lang: <none>
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] server lang: <none>
2025-11-24T17:19:39.665 [DEBUG] [Thread-193959] [transport.py] [_log()] kex follows: False
2025-11-24T17:19:39.666 [DEBUG] [Thread-193959] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:19:39.666 [DEBUG] [Thread-193959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:19:39.666 [DEBUG] [Thread-193959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:19:39.666 [DEBUG] [Thread-193959] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:19:39.666 [DEBUG] [Thread-193959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:19:39.666 [DEBUG] [Thread-193959] [transport.py] [_log()] Compression: none
2025-11-24T17:19:39.666 [DEBUG] [Thread-193959] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:19:39.695 [DEBUG] [Thread-193959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:19:39.700 [DEBUG] [Thread-193959] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:19:39.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:19:39.703 [DEBUG] [Thread-193959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:19:39.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:19:39.706 [DEBUG] [Thread-193959] [transport.py] [_log()] userauth is OK
2025-11-24T17:19:39.707 [DEBUG] [Thread-193959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:19:39.707 [DEBUG] [Thread-193959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:19:39.707 [DEBUG] [Thread-193959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:19:39.707 [DEBUG] [Thread-193959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:19:39.729 [INFO] [Thread-193959] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:19:39.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:19:39.963 [DEBUG] [Thread-193961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:19:40.367 [DEBUG] [Thread-193959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:19:40.367 [DEBUG] [Thread-193959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:19:40.377 [DEBUG] [Thread-193959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:19:40.408 [DEBUG] [Thread-193959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:19:40.408 [DEBUG] [Thread-193959] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:19:40.411 [DEBUG] [Thread-193959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:19:40.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:19:40.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:19:40.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:19:40.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:19:40.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:19:40.434 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:19:40.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:19:40.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:19:40.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:19:40.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.638246 -999.00  +21.60  19.78     24   +0.50 1 1 1 1 1   887    0 19.58 -46.76 ----- 21.5 19.8 170.4 27.7 24.9 -28.4 24.9 -28.7 26.5 -26.6 26.7 -28.4
2025-11-24T17:19:40.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:19:40.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:19:40.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.638246
2025-11-24T17:19:40.441 [DEBUG] [Thread-193959] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:19:40.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:19:40.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:19:40.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:19:40.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:19:40.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:19:40.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:19:30', tmtdew=24.93, humidity=18.69, cloud=0.0, wind=25.28, temperature=21.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:19:04.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:19:40.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:19:40.535 [DEBUG] [Thread-193963] [transport.py] [_log()] starting thread (client mode): 0xd7bc59f0
2025-11-24T17:19:40.535 [DEBUG] [Thread-193963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:19:40.549 [DEBUG] [Thread-193963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:19:40.549 [INFO] [Thread-193963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] client lang: <none>
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] server lang: <none>
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] kex follows: False
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] Compression: none
2025-11-24T17:19:40.557 [DEBUG] [Thread-193963] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:19:40.617 [DEBUG] [Thread-193963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:19:40.617 [DEBUG] [Thread-193963] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:19:40.617 [DEBUG] [Thread-193963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:19:40.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:19:40.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:19:40.675 [DEBUG] [Thread-193963] [transport.py] [_log()] userauth is OK
2025-11-24T17:19:40.675 [DEBUG] [Thread-193963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:19:40.675 [DEBUG] [Thread-193963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:19:40.675 [DEBUG] [Thread-193963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:19:40.675 [DEBUG] [Thread-193963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:19:40.688 [INFO] [Thread-193963] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:19:40.689 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:19:40.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:19:41.533 [DEBUG] [Thread-193963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:19:41.534 [DEBUG] [Thread-193963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:19:41.581 [DEBUG] [Thread-193963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:19:41.582 [DEBUG] [Thread-193963] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:19:41.591 [DEBUG] [Thread-193963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:19:41.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:19:41.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-11-24T17:19:41.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-11-24T17:19:41.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:19:41.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:19:41.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:19:41.639 [DEBUG] [Thread-193963] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:19:55.005 [DEBUG] [Thread-193965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:19:55.708 [DEBUG] [Thread-193966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:20:10.111 [DEBUG] [Thread-193967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:20:11.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:20:11.642 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:20:11.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-11-24T17:20:12.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 20, 3), 24.91, 18.71, 0.0, 22.99, 21.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:20:12.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:20:03
2025-11-24T17:20:12.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:20:13.011 [DEBUG] [Thread-193968] [transport.py] [_log()] starting thread (client mode): 0xd7bc4af0
2025-11-24T17:20:13.012 [DEBUG] [Thread-193968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:20:13.023 [DEBUG] [Thread-193968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:20:13.023 [INFO] [Thread-193968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:20:13.028 [DEBUG] [Thread-193968] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] client lang: <none>
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] server lang: <none>
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] kex follows: False
2025-11-24T17:20:13.029 [DEBUG] [Thread-193968] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:20:13.030 [DEBUG] [Thread-193968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:20:13.030 [DEBUG] [Thread-193968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:20:13.030 [DEBUG] [Thread-193968] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:20:13.030 [DEBUG] [Thread-193968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:20:13.030 [DEBUG] [Thread-193968] [transport.py] [_log()] Compression: none
2025-11-24T17:20:13.030 [DEBUG] [Thread-193968] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:20:13.066 [DEBUG] [Thread-193968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:20:13.071 [DEBUG] [Thread-193968] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:20:13.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:20:13.075 [DEBUG] [Thread-193968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:20:13.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:20:13.079 [DEBUG] [Thread-193968] [transport.py] [_log()] userauth is OK
2025-11-24T17:20:13.080 [DEBUG] [Thread-193968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:20:13.080 [DEBUG] [Thread-193968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:20:13.080 [DEBUG] [Thread-193968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:20:13.080 [DEBUG] [Thread-193968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:20:13.118 [INFO] [Thread-193968] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:20:13.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:20:13.749 [DEBUG] [Thread-193968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:20:13.749 [DEBUG] [Thread-193968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:20:13.752 [DEBUG] [Thread-193968] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:20:13.790 [DEBUG] [Thread-193968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:20:13.790 [DEBUG] [Thread-193968] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:20:13.794 [DEBUG] [Thread-193968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:20:13.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:20:13.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:20:13.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:20:13.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:20:13.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:20:13.820 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:20:13.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:20:13.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:20:13.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:20:13.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.638940 -999.00  +21.40  23.54     24   +0.30 1 1 1 1 1   887    0 20.37 -42.43 ----- 21.3 23.5 176.8 36.1 24.9 -29.0 24.8 -29.3 26.4 -27.3 26.8 -28.7
2025-11-24T17:20:13.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:20:13.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:20:13.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.638940
2025-11-24T17:20:13.828 [DEBUG] [Thread-193968] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:20:13.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:20:13.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:20:13.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:20:13.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:20:13.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:20:13.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:20:03', tmtdew=24.91, humidity=18.71, cloud=0.0, wind=22.99, temperature=21.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:20:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:20:13.928 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:20:13.938 [DEBUG] [Thread-193971] [transport.py] [_log()] starting thread (client mode): 0xd3161210
2025-11-24T17:20:13.938 [DEBUG] [Thread-193971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:20:13.953 [DEBUG] [Thread-193971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:20:13.953 [INFO] [Thread-193971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:20:13.960 [DEBUG] [Thread-193971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] client lang: <none>
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] server lang: <none>
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] kex follows: False
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] Compression: none
2025-11-24T17:20:13.961 [DEBUG] [Thread-193971] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:20:14.019 [DEBUG] [Thread-193971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:20:14.020 [DEBUG] [Thread-193971] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:20:14.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:20:14.021 [DEBUG] [Thread-193971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:20:14.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:20:14.075 [DEBUG] [Thread-193971] [transport.py] [_log()] userauth is OK
2025-11-24T17:20:14.076 [DEBUG] [Thread-193971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:20:14.076 [DEBUG] [Thread-193971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:20:14.076 [DEBUG] [Thread-193971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:20:14.076 [DEBUG] [Thread-193971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:20:14.094 [INFO] [Thread-193971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:20:14.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:20:14.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:20:14.929 [DEBUG] [Thread-193971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:20:14.930 [DEBUG] [Thread-193971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:20:14.977 [DEBUG] [Thread-193971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:20:14.977 [DEBUG] [Thread-193971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:20:14.985 [DEBUG] [Thread-193971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:20:14.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:20:14.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:20:15.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:20:15.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:20:15.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:20:15.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:20:15.019 [DEBUG] [Thread-193971] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:20:25.161 [DEBUG] [Thread-193973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:20:40.257 [DEBUG] [Thread-193974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:20:45.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:20:45.043 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:20:45.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-11-24T17:20:45.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 20, 35), 25.17, 18.59, 0.0, 32.24, 21.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:20:45.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:20:35
2025-11-24T17:20:46.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:20:46.201 [DEBUG] [Thread-193975] [transport.py] [_log()] starting thread (client mode): 0xd3162200
2025-11-24T17:20:46.201 [DEBUG] [Thread-193975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:20:46.216 [DEBUG] [Thread-193975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:20:46.216 [INFO] [Thread-193975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] client lang: <none>
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] server lang: <none>
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] kex follows: False
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:20:46.219 [DEBUG] [Thread-193975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:20:46.220 [DEBUG] [Thread-193975] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:20:46.220 [DEBUG] [Thread-193975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:20:46.220 [DEBUG] [Thread-193975] [transport.py] [_log()] Compression: none
2025-11-24T17:20:46.223 [DEBUG] [Thread-193975] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:20:46.240 [DEBUG] [Thread-193975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:20:46.243 [DEBUG] [Thread-193975] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:20:46.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:20:46.246 [DEBUG] [Thread-193975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:20:46.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:20:46.248 [DEBUG] [Thread-193975] [transport.py] [_log()] userauth is OK
2025-11-24T17:20:46.248 [DEBUG] [Thread-193975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:20:46.248 [DEBUG] [Thread-193975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:20:46.248 [DEBUG] [Thread-193975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:20:46.249 [DEBUG] [Thread-193975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:20:46.274 [INFO] [Thread-193975] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:20:46.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:20:46.932 [DEBUG] [Thread-193975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:20:46.932 [DEBUG] [Thread-193975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:20:46.942 [DEBUG] [Thread-193975] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:20:46.972 [DEBUG] [Thread-193975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:20:46.973 [DEBUG] [Thread-193975] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:20:46.976 [DEBUG] [Thread-193975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:20:46.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:20:46.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:20:46.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:20:46.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:20:47.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:20:47.002 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:20:47.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:20:47.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:20:47.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:20:47.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.639288 -999.00  +21.40  19.50     24   +0.40 1 1 1 1 1   887    0 19.78 -38.31 ----- 16.9 19.5 170.2 35.9 24.9 -28.7 24.9 -28.4 26.3 -27.0 26.7 -28.6
2025-11-24T17:20:47.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:20:47.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:20:47.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.639288
2025-11-24T17:20:47.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:20:47.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:20:47.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:20:47.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:20:47.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:20:47.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:20:35', tmtdew=25.17, humidity=18.59, cloud=0.0, wind=32.24, temperature=21.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:20:34.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:20:47.010 [DEBUG] [Thread-193975] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:20:47.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:20:47.117 [DEBUG] [Thread-193978] [transport.py] [_log()] starting thread (client mode): 0xd31361d0
2025-11-24T17:20:47.118 [DEBUG] [Thread-193978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:20:47.132 [DEBUG] [Thread-193978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:20:47.132 [INFO] [Thread-193978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:20:47.141 [DEBUG] [Thread-193978] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:20:47.141 [DEBUG] [Thread-193978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:20:47.141 [DEBUG] [Thread-193978] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:20:47.141 [DEBUG] [Thread-193978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:20:47.141 [DEBUG] [Thread-193978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:20:47.141 [DEBUG] [Thread-193978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:20:47.141 [DEBUG] [Thread-193978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] client lang: <none>
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] server lang: <none>
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] kex follows: False
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] Compression: none
2025-11-24T17:20:47.142 [DEBUG] [Thread-193978] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:20:47.198 [DEBUG] [Thread-193978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:20:47.198 [DEBUG] [Thread-193978] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:20:47.198 [DEBUG] [Thread-193978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:20:47.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:20:47.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:20:47.255 [DEBUG] [Thread-193978] [transport.py] [_log()] userauth is OK
2025-11-24T17:20:47.255 [DEBUG] [Thread-193978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:20:47.255 [DEBUG] [Thread-193978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:20:47.255 [DEBUG] [Thread-193978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:20:47.255 [DEBUG] [Thread-193978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:20:47.271 [INFO] [Thread-193978] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:20:47.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:20:47.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:20:48.119 [DEBUG] [Thread-193978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:20:48.119 [DEBUG] [Thread-193978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:20:48.166 [DEBUG] [Thread-193978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:20:48.167 [DEBUG] [Thread-193978] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:20:48.176 [DEBUG] [Thread-193978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:20:48.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:20:48.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-11-24T17:20:48.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:20:48.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:20:48.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:20:48.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:20:48.219 [DEBUG] [Thread-193978] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:20:55.311 [DEBUG] [Thread-193980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:20:55.981 [DEBUG] [Thread-193981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:21:10.409 [DEBUG] [Thread-193982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:21:18.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:21:18.244 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:21:18.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:21:19.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 21, 8), 25.18, 18.56, 0.0, 34.25, 21.91, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:21:19.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:21:08
2025-11-24T17:21:19.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:21:19.359 [DEBUG] [Thread-193983] [transport.py] [_log()] starting thread (client mode): 0xd07cf940
2025-11-24T17:21:19.360 [DEBUG] [Thread-193983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:21:19.372 [DEBUG] [Thread-193983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:21:19.372 [INFO] [Thread-193983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] client lang: <none>
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] server lang: <none>
2025-11-24T17:21:19.375 [DEBUG] [Thread-193983] [transport.py] [_log()] kex follows: False
2025-11-24T17:21:19.376 [DEBUG] [Thread-193983] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:21:19.376 [DEBUG] [Thread-193983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:21:19.376 [DEBUG] [Thread-193983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:21:19.376 [DEBUG] [Thread-193983] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:21:19.376 [DEBUG] [Thread-193983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:21:19.376 [DEBUG] [Thread-193983] [transport.py] [_log()] Compression: none
2025-11-24T17:21:19.376 [DEBUG] [Thread-193983] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:21:19.397 [DEBUG] [Thread-193983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:21:19.398 [DEBUG] [Thread-193983] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:21:19.399 [DEBUG] [Thread-193983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:21:19.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:21:19.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:21:19.404 [DEBUG] [Thread-193983] [transport.py] [_log()] userauth is OK
2025-11-24T17:21:19.404 [DEBUG] [Thread-193983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:21:19.404 [DEBUG] [Thread-193983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:21:19.404 [DEBUG] [Thread-193983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:21:19.404 [DEBUG] [Thread-193983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:21:19.427 [INFO] [Thread-193983] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:21:19.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:21:20.021 [DEBUG] [Thread-193983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:21:20.021 [DEBUG] [Thread-193983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:21:20.022 [DEBUG] [Thread-193983] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:21:20.061 [DEBUG] [Thread-193983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:21:20.061 [DEBUG] [Thread-193983] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:21:20.064 [DEBUG] [Thread-193983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:21:20.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:21:20.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:21:20.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:21:20.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:21:20.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:21:20.081 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:21:20.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:21:20.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:21:20.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:21:20.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.639635 -999.00  +21.60  23.31     24   +0.40 1 1 1 1 1   887    0 20.05 -40.02 ----- 20.3 23.3 189.4 29.3 25.0 -28.8 24.8 -28.7 26.5 -26.2 26.8 -28.6
2025-11-24T17:21:20.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:21:20.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:21:20.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.639635
2025-11-24T17:21:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:21:20.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:21:20.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:21:20.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:21:20.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:21:20.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:21:08', tmtdew=25.18, humidity=18.56, cloud=0.0, wind=34.25, temperature=21.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:21:04.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:21:20.085 [DEBUG] [Thread-193983] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:21:20.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:21:20.170 [DEBUG] [Thread-193986] [transport.py] [_log()] starting thread (client mode): 0xd07ce950
2025-11-24T17:21:20.170 [DEBUG] [Thread-193986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:21:20.188 [DEBUG] [Thread-193986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:21:20.188 [INFO] [Thread-193986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] client lang: <none>
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] server lang: <none>
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] kex follows: False
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] Compression: none
2025-11-24T17:21:20.196 [DEBUG] [Thread-193986] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:21:20.254 [DEBUG] [Thread-193986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:21:20.254 [DEBUG] [Thread-193986] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:21:20.254 [DEBUG] [Thread-193986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:21:20.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:21:20.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:21:20.310 [DEBUG] [Thread-193986] [transport.py] [_log()] userauth is OK
2025-11-24T17:21:20.310 [DEBUG] [Thread-193986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:21:20.311 [DEBUG] [Thread-193986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:21:20.311 [DEBUG] [Thread-193986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:21:20.311 [DEBUG] [Thread-193986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:21:20.324 [INFO] [Thread-193986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:21:20.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:21:20.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:21:21.151 [DEBUG] [Thread-193986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:21:21.152 [DEBUG] [Thread-193986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:21:21.199 [DEBUG] [Thread-193986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:21:21.200 [DEBUG] [Thread-193986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:21:21.208 [DEBUG] [Thread-193986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:21:21.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:21:21.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-11-24T17:21:21.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-11-24T17:21:21.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:21:21.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:21:21.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:21:21.243 [DEBUG] [Thread-193986] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:21:25.450 [DEBUG] [Thread-193988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:21:40.550 [DEBUG] [Thread-193989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:21:51.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:21:51.265 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:21:51.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-11-24T17:21:52.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 21, 40), 25.01, 18.74, 0.0, 35.82, 21.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:21:52.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:21:40
2025-11-24T17:21:52.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:21:52.380 [DEBUG] [Thread-193990] [transport.py] [_log()] starting thread (client mode): 0xd7bc5ba0
2025-11-24T17:21:52.380 [DEBUG] [Thread-193990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:21:52.393 [DEBUG] [Thread-193990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:21:52.393 [INFO] [Thread-193990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] client lang: <none>
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] server lang: <none>
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] kex follows: False
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] Compression: none
2025-11-24T17:21:52.395 [DEBUG] [Thread-193990] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:21:52.404 [DEBUG] [Thread-193990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:21:52.404 [DEBUG] [Thread-193990] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:21:52.404 [DEBUG] [Thread-193990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:21:52.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:21:52.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:21:52.405 [DEBUG] [Thread-193990] [transport.py] [_log()] userauth is OK
2025-11-24T17:21:52.405 [DEBUG] [Thread-193990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:21:52.405 [DEBUG] [Thread-193990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:21:52.405 [DEBUG] [Thread-193990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:21:52.405 [DEBUG] [Thread-193990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:21:52.419 [INFO] [Thread-193990] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:21:52.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:21:52.986 [DEBUG] [Thread-193990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:21:52.986 [DEBUG] [Thread-193990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:21:52.986 [DEBUG] [Thread-193990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:21:53.027 [DEBUG] [Thread-193990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:21:53.027 [DEBUG] [Thread-193990] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:21:53.029 [DEBUG] [Thread-193990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:21:53.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:21:53.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:21:53.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:21:53.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:21:53.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:21:53.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:21:53.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:21:53.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:21:53.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:21:53.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.639982 -999.00  +21.50  22.10     24   +0.40 1 1 1 1 1   887    0 20.31 -33.50 ----- 23.0 22.1 184.0 35.5 24.9 -29.8 24.7 -31.2 26.5 -27.1 26.8 -29.2
2025-11-24T17:21:53.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:21:53.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:21:53.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.639982
2025-11-24T17:21:53.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:21:53.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:21:53.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:21:53.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:21:53.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:21:53.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:21:40', tmtdew=25.01, humidity=18.74, cloud=0.0, wind=35.82, temperature=21.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:21:34.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:21:53.048 [DEBUG] [Thread-193990] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:21:53.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:21:53.134 [DEBUG] [Thread-193993] [transport.py] [_log()] starting thread (client mode): 0xd0702ef0
2025-11-24T17:21:53.134 [DEBUG] [Thread-193993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:21:53.148 [DEBUG] [Thread-193993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:21:53.148 [INFO] [Thread-193993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:21:53.155 [DEBUG] [Thread-193993] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:21:53.155 [DEBUG] [Thread-193993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:21:53.155 [DEBUG] [Thread-193993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] client lang: <none>
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] server lang: <none>
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] kex follows: False
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] Compression: none
2025-11-24T17:21:53.156 [DEBUG] [Thread-193993] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:21:53.213 [DEBUG] [Thread-193993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:21:53.213 [DEBUG] [Thread-193993] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:21:53.213 [DEBUG] [Thread-193993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:21:53.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:21:53.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:21:53.270 [DEBUG] [Thread-193993] [transport.py] [_log()] userauth is OK
2025-11-24T17:21:53.270 [DEBUG] [Thread-193993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:21:53.270 [DEBUG] [Thread-193993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:21:53.271 [DEBUG] [Thread-193993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:21:53.271 [DEBUG] [Thread-193993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:21:53.284 [INFO] [Thread-193993] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:21:53.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:21:53.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:21:54.171 [DEBUG] [Thread-193993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:21:54.171 [DEBUG] [Thread-193993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:21:54.219 [DEBUG] [Thread-193993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:21:54.219 [DEBUG] [Thread-193993] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:21:54.227 [DEBUG] [Thread-193993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:21:54.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:21:54.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-11-24T17:21:54.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-11-24T17:21:54.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:21:54.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:21:54.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:21:54.258 [DEBUG] [Thread-193993] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:21:55.583 [DEBUG] [Thread-193995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:21:56.192 [DEBUG] [Thread-193996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:22:10.631 [DEBUG] [Thread-193997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:22:24.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:22:24.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:22:24.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-11-24T17:22:25.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 22, 13), 24.77, 19.02, 0.0, 38.89, 21.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:22:25.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:22:13
2025-11-24T17:22:25.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:22:25.462 [DEBUG] [Thread-193998] [transport.py] [_log()] starting thread (client mode): 0xd07cef20
2025-11-24T17:22:25.462 [DEBUG] [Thread-193998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:22:25.468 [DEBUG] [Thread-193998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:22:25.468 [INFO] [Thread-193998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:22:25.471 [DEBUG] [Thread-193998] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] client lang: <none>
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] server lang: <none>
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] kex follows: False
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] Compression: none
2025-11-24T17:22:25.472 [DEBUG] [Thread-193998] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:22:25.488 [DEBUG] [Thread-193998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:22:25.490 [DEBUG] [Thread-193998] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:22:25.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:22:25.492 [DEBUG] [Thread-193998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:22:25.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:22:25.495 [DEBUG] [Thread-193998] [transport.py] [_log()] userauth is OK
2025-11-24T17:22:25.495 [DEBUG] [Thread-193998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:22:25.496 [DEBUG] [Thread-193998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:22:25.496 [DEBUG] [Thread-193998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:22:25.496 [DEBUG] [Thread-193998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:22:25.521 [INFO] [Thread-193998] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:22:25.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:22:25.658 [DEBUG] [Thread-194000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:22:26.093 [DEBUG] [Thread-193998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:22:26.093 [DEBUG] [Thread-193998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:22:26.093 [DEBUG] [Thread-193998] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:22:26.134 [DEBUG] [Thread-193998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:22:26.134 [DEBUG] [Thread-193998] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:22:26.137 [DEBUG] [Thread-193998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:22:26.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:22:26.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:22:26.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:22:26.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:22:26.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:22:26.158 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:22:26.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:22:26.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:22:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:22:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.640329 -999.00  +21.50  18.50     24   +0.50 1 1 1 1 1   887    0 20.47 -31.27 ----- 17.1 18.5 186.8 34.4 24.9 -29.4 24.8 -29.5 26.3 -27.4 26.6 -29.5
2025-11-24T17:22:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:22:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:22:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.640329
2025-11-24T17:22:26.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:22:26.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:22:26.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:22:26.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:22:26.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:22:26.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:22:13', tmtdew=24.77, humidity=19.02, cloud=0.0, wind=38.89, temperature=21.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:22:04.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:22:26.165 [DEBUG] [Thread-193998] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:22:26.249 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:22:26.260 [DEBUG] [Thread-194002] [transport.py] [_log()] starting thread (client mode): 0xd07cdcc0
2025-11-24T17:22:26.260 [DEBUG] [Thread-194002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:22:26.274 [DEBUG] [Thread-194002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:22:26.274 [INFO] [Thread-194002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:22:26.281 [DEBUG] [Thread-194002] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:22:26.282 [DEBUG] [Thread-194002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:22:26.282 [DEBUG] [Thread-194002] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:22:26.282 [DEBUG] [Thread-194002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:22:26.282 [DEBUG] [Thread-194002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:22:26.282 [DEBUG] [Thread-194002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:22:26.282 [DEBUG] [Thread-194002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:22:26.282 [DEBUG] [Thread-194002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:22:26.282 [DEBUG] [Thread-194002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:22:26.282 [DEBUG] [Thread-194002] [transport.py] [_log()] client lang: <none>
2025-11-24T17:22:26.283 [DEBUG] [Thread-194002] [transport.py] [_log()] server lang: <none>
2025-11-24T17:22:26.283 [DEBUG] [Thread-194002] [transport.py] [_log()] kex follows: False
2025-11-24T17:22:26.283 [DEBUG] [Thread-194002] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:22:26.283 [DEBUG] [Thread-194002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:22:26.283 [DEBUG] [Thread-194002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:22:26.283 [DEBUG] [Thread-194002] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:22:26.283 [DEBUG] [Thread-194002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:22:26.285 [DEBUG] [Thread-194002] [transport.py] [_log()] Compression: none
2025-11-24T17:22:26.286 [DEBUG] [Thread-194002] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:22:26.341 [DEBUG] [Thread-194002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:22:26.342 [DEBUG] [Thread-194002] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:22:26.343 [DEBUG] [Thread-194002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:22:26.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:22:26.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:22:26.403 [DEBUG] [Thread-194002] [transport.py] [_log()] userauth is OK
2025-11-24T17:22:26.403 [DEBUG] [Thread-194002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:22:26.404 [DEBUG] [Thread-194002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:22:26.404 [DEBUG] [Thread-194002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:22:26.404 [DEBUG] [Thread-194002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:22:26.423 [INFO] [Thread-194002] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:22:26.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:22:26.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:22:27.268 [DEBUG] [Thread-194002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:22:27.268 [DEBUG] [Thread-194002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:22:27.316 [DEBUG] [Thread-194002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:22:27.316 [DEBUG] [Thread-194002] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:22:27.324 [DEBUG] [Thread-194002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:22:27.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:22:27.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-11-24T17:22:27.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:22:27.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:22:27.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:22:27.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:22:27.365 [DEBUG] [Thread-194002] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:22:40.700 [DEBUG] [Thread-194004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:22:55.812 [DEBUG] [Thread-194005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:22:56.430 [DEBUG] [Thread-194006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:22:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:22:57.382 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:22:57.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:22:58.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 22, 47), 24.3, 19.15, 0.0, 39.73, 21.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:22:58.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:22:47
2025-11-24T17:22:58.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:22:58.679 [DEBUG] [Thread-194007] [transport.py] [_log()] starting thread (client mode): 0xd07bded0
2025-11-24T17:22:58.680 [DEBUG] [Thread-194007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:22:58.693 [DEBUG] [Thread-194007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:22:58.693 [INFO] [Thread-194007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:22:58.699 [DEBUG] [Thread-194007] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] client lang: <none>
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] server lang: <none>
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] kex follows: False
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:22:58.700 [DEBUG] [Thread-194007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:22:58.701 [DEBUG] [Thread-194007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:22:58.701 [DEBUG] [Thread-194007] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:22:58.701 [DEBUG] [Thread-194007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:22:58.701 [DEBUG] [Thread-194007] [transport.py] [_log()] Compression: none
2025-11-24T17:22:58.701 [DEBUG] [Thread-194007] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:22:58.730 [DEBUG] [Thread-194007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:22:58.735 [DEBUG] [Thread-194007] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:22:58.737 [DEBUG] [Thread-194007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:22:58.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:22:58.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:22:58.742 [DEBUG] [Thread-194007] [transport.py] [_log()] userauth is OK
2025-11-24T17:22:58.742 [DEBUG] [Thread-194007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:22:58.743 [DEBUG] [Thread-194007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:22:58.743 [DEBUG] [Thread-194007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:22:58.743 [DEBUG] [Thread-194007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:22:58.770 [INFO] [Thread-194007] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:22:58.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:22:59.450 [DEBUG] [Thread-194007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:22:59.450 [DEBUG] [Thread-194007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:22:59.459 [DEBUG] [Thread-194007] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:22:59.491 [DEBUG] [Thread-194007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:22:59.491 [DEBUG] [Thread-194007] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:22:59.493 [DEBUG] [Thread-194007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:22:59.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:22:59.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:22:59.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:22:59.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:22:59.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:22:59.513 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:22:59.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:22:59.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:22:59.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:22:59.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.640677 -999.00  +21.60  22.44     24   +0.50 1 1 1 1 1   887    0 20.64 -34.61 ----- 21.5 22.4 181.8 27.5 24.9 -29.0 24.7 -30.0 26.4 -26.6 26.7 -28.6
2025-11-24T17:22:59.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:22:59.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:22:59.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.640677
2025-11-24T17:22:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:22:59.524 [DEBUG] [Thread-194007] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:22:59.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:22:59.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:22:59.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:22:59.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:22:59.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:22:47', tmtdew=24.3, humidity=19.15, cloud=0.0, wind=39.73, temperature=21.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:22:34.493', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:22:59.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:22:59.619 [DEBUG] [Thread-194010] [transport.py] [_log()] starting thread (client mode): 0xd31cf940
2025-11-24T17:22:59.619 [DEBUG] [Thread-194010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:22:59.634 [DEBUG] [Thread-194010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:22:59.634 [INFO] [Thread-194010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] client lang: <none>
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] server lang: <none>
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] kex follows: False
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:22:59.642 [DEBUG] [Thread-194010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:22:59.643 [DEBUG] [Thread-194010] [transport.py] [_log()] Compression: none
2025-11-24T17:22:59.643 [DEBUG] [Thread-194010] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:22:59.698 [DEBUG] [Thread-194010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:22:59.698 [DEBUG] [Thread-194010] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:22:59.698 [DEBUG] [Thread-194010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:22:59.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:22:59.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:22:59.755 [DEBUG] [Thread-194010] [transport.py] [_log()] userauth is OK
2025-11-24T17:22:59.755 [DEBUG] [Thread-194010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:22:59.755 [DEBUG] [Thread-194010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:22:59.755 [DEBUG] [Thread-194010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:22:59.755 [DEBUG] [Thread-194010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:22:59.769 [INFO] [Thread-194010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:22:59.769 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:22:59.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:23:00.592 [DEBUG] [Thread-194010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:23:00.592 [DEBUG] [Thread-194010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:23:00.640 [DEBUG] [Thread-194010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:23:00.641 [DEBUG] [Thread-194010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:23:00.650 [DEBUG] [Thread-194010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:23:00.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:23:00.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:23:00.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') -> 00000000
2025-11-24T17:23:00.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:23:00.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:23:00.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:23:00.685 [DEBUG] [Thread-194010] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:23:10.852 [DEBUG] [Thread-194012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:23:25.939 [DEBUG] [Thread-194013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:23:30.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:23:30.712 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:23:30.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-11-24T17:23:31.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 23, 19), 24.26, 19.2, 0.0, 38.18, 21.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:23:31.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:23:19
2025-11-24T17:23:31.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:23:31.841 [DEBUG] [Thread-194014] [transport.py] [_log()] starting thread (client mode): 0xd31cc910
2025-11-24T17:23:31.841 [DEBUG] [Thread-194014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:23:31.858 [DEBUG] [Thread-194014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:23:31.858 [INFO] [Thread-194014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:23:31.861 [DEBUG] [Thread-194014] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] client lang: <none>
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] server lang: <none>
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] kex follows: False
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] Compression: none
2025-11-24T17:23:31.862 [DEBUG] [Thread-194014] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:23:31.886 [DEBUG] [Thread-194014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:23:31.887 [DEBUG] [Thread-194014] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:23:31.888 [DEBUG] [Thread-194014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:23:31.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:23:31.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:23:31.929 [DEBUG] [Thread-194014] [transport.py] [_log()] userauth is OK
2025-11-24T17:23:31.929 [DEBUG] [Thread-194014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:23:31.929 [DEBUG] [Thread-194014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:23:31.929 [DEBUG] [Thread-194014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:23:31.930 [DEBUG] [Thread-194014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:23:31.968 [INFO] [Thread-194014] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:23:31.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:23:32.638 [DEBUG] [Thread-194014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:23:32.638 [DEBUG] [Thread-194014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:23:32.639 [DEBUG] [Thread-194014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:23:32.679 [DEBUG] [Thread-194014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:23:32.679 [DEBUG] [Thread-194014] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:23:32.682 [DEBUG] [Thread-194014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:23:32.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:23:32.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:23:32.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:23:32.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:23:32.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:23:32.708 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:23:32.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:23:32.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:23:32.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:23:32.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.641024 -999.00  +21.40  23.54     24   +0.50 1 1 1 1 1   887    0 20.46 -31.65 ----- 27.0 23.5 183.6 34.0 24.8 -29.4 24.6 -31.7 26.4 -27.9 26.6 -29.4
2025-11-24T17:23:32.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:23:32.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:23:32.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.641024
2025-11-24T17:23:32.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:23:32.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:23:32.714 [DEBUG] [Thread-194014] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:23:32.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:23:32.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:23:32.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:23:32.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:23:19', tmtdew=24.26, humidity=19.2, cloud=0.0, wind=38.18, temperature=21.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:23:04.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:23:32.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:23:32.814 [DEBUG] [Thread-194017] [transport.py] [_log()] starting thread (client mode): 0xd0700460
2025-11-24T17:23:32.814 [DEBUG] [Thread-194017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:23:32.830 [DEBUG] [Thread-194017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:23:32.831 [INFO] [Thread-194017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:23:32.838 [DEBUG] [Thread-194017] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] client lang: <none>
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] server lang: <none>
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] kex follows: False
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:23:32.839 [DEBUG] [Thread-194017] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:23:32.840 [DEBUG] [Thread-194017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:23:32.840 [DEBUG] [Thread-194017] [transport.py] [_log()] Compression: none
2025-11-24T17:23:32.840 [DEBUG] [Thread-194017] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:23:32.903 [DEBUG] [Thread-194017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:23:32.903 [DEBUG] [Thread-194017] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:23:32.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:23:32.905 [DEBUG] [Thread-194017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:23:32.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:23:32.959 [DEBUG] [Thread-194017] [transport.py] [_log()] userauth is OK
2025-11-24T17:23:32.959 [DEBUG] [Thread-194017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:23:32.959 [DEBUG] [Thread-194017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:23:32.959 [DEBUG] [Thread-194017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:23:32.959 [DEBUG] [Thread-194017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:23:32.984 [INFO] [Thread-194017] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:23:32.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:23:32.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:23:33.833 [DEBUG] [Thread-194017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:23:33.833 [DEBUG] [Thread-194017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:23:33.882 [DEBUG] [Thread-194017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:23:33.882 [DEBUG] [Thread-194017] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:23:33.893 [DEBUG] [Thread-194017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:23:33.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:23: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-11-24T17:23:33.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-11-24T17:23:33.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:23:33.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:23:33.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:23:33.949 [DEBUG] [Thread-194017] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:23:41.009 [DEBUG] [Thread-194019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:23:56.081 [DEBUG] [Thread-194020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:23:56.752 [DEBUG] [Thread-194021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:24:03.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:24:03.976 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:24:04.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:24:05.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 23, 52), 24.18, 19.69, 0.0, 32.01, 21.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:24:05.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:23:52
2025-11-24T17:24:05.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:24:05.618 [DEBUG] [Thread-194022] [transport.py] [_log()] starting thread (client mode): 0xd07cd8a0
2025-11-24T17:24:05.618 [DEBUG] [Thread-194022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:24:05.638 [DEBUG] [Thread-194022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:24:05.638 [INFO] [Thread-194022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] client lang: <none>
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] server lang: <none>
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] kex follows: False
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] Compression: none
2025-11-24T17:24:05.642 [DEBUG] [Thread-194022] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:24:05.662 [DEBUG] [Thread-194022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:24:05.663 [DEBUG] [Thread-194022] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:24:05.664 [DEBUG] [Thread-194022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:24:05.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:24:05.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:24:05.667 [DEBUG] [Thread-194022] [transport.py] [_log()] userauth is OK
2025-11-24T17:24:05.667 [DEBUG] [Thread-194022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:24:05.668 [DEBUG] [Thread-194022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:24:05.668 [DEBUG] [Thread-194022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:24:05.668 [DEBUG] [Thread-194022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:24:05.701 [INFO] [Thread-194022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:24:05.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:24:06.317 [DEBUG] [Thread-194022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:24:06.318 [DEBUG] [Thread-194022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:24:06.319 [DEBUG] [Thread-194022] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:24:06.358 [DEBUG] [Thread-194022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:24:06.358 [DEBUG] [Thread-194022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:24:06.361 [DEBUG] [Thread-194022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:24:06.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:24:06.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:24:06.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:24:06.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:24:06.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:24:06.385 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:24:06.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:24:06.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:24:06.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:24:06.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.641371 -999.00  +21.40  20.25     24   +0.50 1 1 1 1 1   887    0 19.86 -30.64 ----- 16.7 20.2 185.0 30.1 24.8 -29.6 24.6 -30.0 26.2 -27.8 26.5 -30.2
2025-11-24T17:24:06.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:24:06.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:24:06.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.641371
2025-11-24T17:24:06.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:24:06.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:24:06.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:24:06.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:24:06.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:24:06.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:23:52', tmtdew=24.18, humidity=19.69, cloud=0.0, wind=32.01, temperature=21.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:23:34.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:24:06.391 [DEBUG] [Thread-194022] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:24:06.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:24:06.487 [DEBUG] [Thread-194025] [transport.py] [_log()] starting thread (client mode): 0xd31ccb50
2025-11-24T17:24:06.487 [DEBUG] [Thread-194025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:24:06.501 [DEBUG] [Thread-194025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:24:06.502 [INFO] [Thread-194025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:24:06.509 [DEBUG] [Thread-194025] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:24:06.510 [DEBUG] [Thread-194025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:24:06.510 [DEBUG] [Thread-194025] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:24:06.510 [DEBUG] [Thread-194025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:24:06.510 [DEBUG] [Thread-194025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:24:06.510 [DEBUG] [Thread-194025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:24:06.510 [DEBUG] [Thread-194025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:24:06.510 [DEBUG] [Thread-194025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:24:06.510 [DEBUG] [Thread-194025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:24:06.511 [DEBUG] [Thread-194025] [transport.py] [_log()] client lang: <none>
2025-11-24T17:24:06.511 [DEBUG] [Thread-194025] [transport.py] [_log()] server lang: <none>
2025-11-24T17:24:06.511 [DEBUG] [Thread-194025] [transport.py] [_log()] kex follows: False
2025-11-24T17:24:06.511 [DEBUG] [Thread-194025] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:24:06.511 [DEBUG] [Thread-194025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:24:06.511 [DEBUG] [Thread-194025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:24:06.511 [DEBUG] [Thread-194025] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:24:06.512 [DEBUG] [Thread-194025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:24:06.512 [DEBUG] [Thread-194025] [transport.py] [_log()] Compression: none
2025-11-24T17:24:06.512 [DEBUG] [Thread-194025] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:24:06.566 [DEBUG] [Thread-194025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:24:06.566 [DEBUG] [Thread-194025] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:24:06.566 [DEBUG] [Thread-194025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:24:06.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:24:06.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:24:06.627 [DEBUG] [Thread-194025] [transport.py] [_log()] userauth is OK
2025-11-24T17:24:06.627 [DEBUG] [Thread-194025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:24:06.627 [DEBUG] [Thread-194025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:24:06.627 [DEBUG] [Thread-194025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:24:06.627 [DEBUG] [Thread-194025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:24:06.646 [INFO] [Thread-194025] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:24:06.646 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:24:06.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:24:07.458 [DEBUG] [Thread-194025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:24:07.467 [DEBUG] [Thread-194025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:24:07.506 [DEBUG] [Thread-194025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:24:07.506 [DEBUG] [Thread-194025] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:24:07.515 [DEBUG] [Thread-194025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:24:07.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:24: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-11-24T17:24:07.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-11-24T17:24:07.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:24:07.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:24:07.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:24:07.556 [DEBUG] [Thread-194025] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:24:11.109 [DEBUG] [Thread-194027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:24:26.201 [DEBUG] [Thread-194028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:24:37.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:24:37.579 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:24:37.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-11-24T17:24:38.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 24, 25), 24.2, 19.65, 0.0, 33.81, 21.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:24:38.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:24:25
2025-11-24T17:24:38.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:24:38.755 [DEBUG] [Thread-194029] [transport.py] [_log()] starting thread (client mode): 0xd7bc51e0
2025-11-24T17:24:38.755 [DEBUG] [Thread-194029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:24:38.771 [DEBUG] [Thread-194029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:24:38.771 [INFO] [Thread-194029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] client lang: <none>
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] server lang: <none>
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] kex follows: False
2025-11-24T17:24:38.774 [DEBUG] [Thread-194029] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:24:38.775 [DEBUG] [Thread-194029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:24:38.775 [DEBUG] [Thread-194029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:24:38.775 [DEBUG] [Thread-194029] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:24:38.775 [DEBUG] [Thread-194029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:24:38.775 [DEBUG] [Thread-194029] [transport.py] [_log()] Compression: none
2025-11-24T17:24:38.775 [DEBUG] [Thread-194029] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:24:38.805 [DEBUG] [Thread-194029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:24:38.809 [DEBUG] [Thread-194029] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:24:38.810 [DEBUG] [Thread-194029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:24:38.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:24:38.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:24:38.849 [DEBUG] [Thread-194029] [transport.py] [_log()] userauth is OK
2025-11-24T17:24:38.850 [DEBUG] [Thread-194029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:24:38.850 [DEBUG] [Thread-194029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:24:38.850 [DEBUG] [Thread-194029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:24:38.850 [DEBUG] [Thread-194029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:24:38.890 [INFO] [Thread-194029] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:24:38.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:24:39.525 [DEBUG] [Thread-194029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:24:39.526 [DEBUG] [Thread-194029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:24:39.535 [DEBUG] [Thread-194029] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:24:39.566 [DEBUG] [Thread-194029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:24:39.566 [DEBUG] [Thread-194029] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:24:39.569 [DEBUG] [Thread-194029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:24:39.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:24:39.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:24:39.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:24:39.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:24:39.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:24:39.589 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:24:39.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:24:39.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:24:39.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:24:39.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.641718 -999.00  +21.40  28.61     24   +0.50 1 1 1 1 1   887    0 19.95 -30.68 ----- 23.5 28.6 174.6 32.9 24.9 -28.8 24.7 -31.0 26.2 -26.7 26.6 -28.8
2025-11-24T17:24:39.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:24:39.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:24:39.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.641718
2025-11-24T17:24:39.595 [DEBUG] [Thread-194029] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:24:39.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:24:39.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:24:39.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:24:39.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:24:39.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:24:39.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:24:25', tmtdew=24.2, humidity=19.65, cloud=0.0, wind=33.81, temperature=21.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:24:04.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:24:39.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:24:39.693 [DEBUG] [Thread-194032] [transport.py] [_log()] starting thread (client mode): 0xd31eed40
2025-11-24T17:24:39.694 [DEBUG] [Thread-194032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:24:39.708 [DEBUG] [Thread-194032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:24:39.708 [INFO] [Thread-194032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] client lang: <none>
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] server lang: <none>
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] kex follows: False
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:24:39.716 [DEBUG] [Thread-194032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:24:39.718 [DEBUG] [Thread-194032] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:24:39.718 [DEBUG] [Thread-194032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:24:39.718 [DEBUG] [Thread-194032] [transport.py] [_log()] Compression: none
2025-11-24T17:24:39.718 [DEBUG] [Thread-194032] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:24:39.773 [DEBUG] [Thread-194032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:24:39.773 [DEBUG] [Thread-194032] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:24:39.773 [DEBUG] [Thread-194032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:24:39.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:24:39.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:24:39.830 [DEBUG] [Thread-194032] [transport.py] [_log()] userauth is OK
2025-11-24T17:24:39.831 [DEBUG] [Thread-194032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:24:39.831 [DEBUG] [Thread-194032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:24:39.831 [DEBUG] [Thread-194032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:24:39.831 [DEBUG] [Thread-194032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:24:39.845 [INFO] [Thread-194032] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:24:39.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:24:39.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:24:40.663 [DEBUG] [Thread-194032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:24:40.663 [DEBUG] [Thread-194032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:24:40.711 [DEBUG] [Thread-194032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:24:40.711 [DEBUG] [Thread-194032] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:24:40.720 [DEBUG] [Thread-194032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:24:40.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:24:40.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-11-24T17:24:40.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-11-24T17:24:40.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:24:40.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:24:40.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:24:40.756 [DEBUG] [Thread-194032] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:24:41.260 [DEBUG] [Thread-194034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:24:56.370 [DEBUG] [Thread-194035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:24:56.997 [DEBUG] [Thread-194036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:25:10.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:25:10.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:25:10.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-11-24T17:25:11.403 [DEBUG] [Thread-194037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:25:11.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 24, 58), 24.39, 19.1, 0.0, 31.78, 21.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:25:11.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:24:58
2025-11-24T17:25:11.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:25:11.941 [DEBUG] [Thread-194038] [transport.py] [_log()] starting thread (client mode): 0xd07cc6a0
2025-11-24T17:25:11.942 [DEBUG] [Thread-194038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:25:11.953 [DEBUG] [Thread-194038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:25:11.953 [INFO] [Thread-194038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] client lang: <none>
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] server lang: <none>
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] kex follows: False
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] Compression: none
2025-11-24T17:25:11.956 [DEBUG] [Thread-194038] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:25:11.974 [DEBUG] [Thread-194038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:25:11.978 [DEBUG] [Thread-194038] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:25:11.979 [DEBUG] [Thread-194038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:25:11.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:25:11.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:25:11.981 [DEBUG] [Thread-194038] [transport.py] [_log()] userauth is OK
2025-11-24T17:25:11.981 [DEBUG] [Thread-194038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:25:11.981 [DEBUG] [Thread-194038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:25:11.981 [DEBUG] [Thread-194038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:25:11.981 [DEBUG] [Thread-194038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:25:11.991 [INFO] [Thread-194038] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:25:11.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:25:12.604 [DEBUG] [Thread-194038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:25:12.605 [DEBUG] [Thread-194038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:25:12.606 [DEBUG] [Thread-194038] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:25:12.645 [DEBUG] [Thread-194038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:25:12.645 [DEBUG] [Thread-194038] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:25:12.647 [DEBUG] [Thread-194038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:25:12.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:25:12.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:25:12.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:25:12.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:25:12.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:25:12.658 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:25:12.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:25:12.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:25:12.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:25:12.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.642066 -999.00  +21.20  20.39     24   +0.40 1 1 1 1 1   887    0 20.37 -31.73 ----- 25.4 20.4 190.2 34.2 24.7 -29.1 24.5 -31.4 26.1 -28.5 26.4 -30.7
2025-11-24T17:25:12.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:25:12.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:25:12.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.642066
2025-11-24T17:25:12.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:25:12.664 [DEBUG] [Thread-194038] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:25:12.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:25:12.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:25:12.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:25:12.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:25:12.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:24:58', tmtdew=24.39, humidity=19.1, cloud=0.0, wind=31.78, temperature=21.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:24:34.502', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:25: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-11-24T17:25:12.755 [DEBUG] [Thread-194041] [transport.py] [_log()] starting thread (client mode): 0xd31cc9d0
2025-11-24T17:25:12.755 [DEBUG] [Thread-194041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:25:12.769 [DEBUG] [Thread-194041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:25:12.769 [INFO] [Thread-194041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] client lang: <none>
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] server lang: <none>
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] kex follows: False
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:25:12.777 [DEBUG] [Thread-194041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:25:12.778 [DEBUG] [Thread-194041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:25:12.778 [DEBUG] [Thread-194041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:25:12.778 [DEBUG] [Thread-194041] [transport.py] [_log()] Compression: none
2025-11-24T17:25:12.779 [DEBUG] [Thread-194041] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:25:12.833 [DEBUG] [Thread-194041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:25:12.833 [DEBUG] [Thread-194041] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:25:12.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:25:12.833 [DEBUG] [Thread-194041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:25:12.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:25:12.890 [DEBUG] [Thread-194041] [transport.py] [_log()] userauth is OK
2025-11-24T17:25:12.890 [DEBUG] [Thread-194041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:25:12.891 [DEBUG] [Thread-194041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:25:12.891 [DEBUG] [Thread-194041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:25:12.891 [DEBUG] [Thread-194041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:25:12.904 [INFO] [Thread-194041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:25:12.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:25:12.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:25:13.723 [DEBUG] [Thread-194041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:25:13.723 [DEBUG] [Thread-194041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:25:13.771 [DEBUG] [Thread-194041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:25:13.771 [DEBUG] [Thread-194041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:25:13.779 [DEBUG] [Thread-194041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:25:13.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:25:13.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-11-24T17:25:13.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-11-24T17:25:13.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:25:13.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:25:13.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:25:13.820 [DEBUG] [Thread-194041] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:25:26.436 [DEBUG] [Thread-194043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:25:41.527 [DEBUG] [Thread-194044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:25:43.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:25:43.821 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:25:43.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-11-24T17:25:44.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 25, 31), 24.39, 19.12, 0.0, 30.21, 21.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:25:44.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:25:31
2025-11-24T17:25:44.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:25:44.946 [DEBUG] [Thread-194045] [transport.py] [_log()] starting thread (client mode): 0xd07cf0a0
2025-11-24T17:25:44.946 [DEBUG] [Thread-194045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:25:44.966 [DEBUG] [Thread-194045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:25:44.966 [INFO] [Thread-194045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] client lang: <none>
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] server lang: <none>
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] kex follows: False
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] Compression: none
2025-11-24T17:25:44.968 [DEBUG] [Thread-194045] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:25:44.980 [DEBUG] [Thread-194045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:25:44.980 [DEBUG] [Thread-194045] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:25:44.981 [DEBUG] [Thread-194045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:25:44.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:25:44.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:25:44.983 [DEBUG] [Thread-194045] [transport.py] [_log()] userauth is OK
2025-11-24T17:25:44.983 [DEBUG] [Thread-194045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:25:44.983 [DEBUG] [Thread-194045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:25:44.983 [DEBUG] [Thread-194045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:25:44.983 [DEBUG] [Thread-194045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:25:45.002 [INFO] [Thread-194045] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:25:45.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:25:45.648 [DEBUG] [Thread-194045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:25:45.649 [DEBUG] [Thread-194045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:25:45.649 [DEBUG] [Thread-194045] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:25:45.689 [DEBUG] [Thread-194045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:25:45.689 [DEBUG] [Thread-194045] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:25:45.692 [DEBUG] [Thread-194045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:25:45.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:25:45.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:25:45.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:25:45.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:25:45.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:25:45.712 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:25:45.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.642760 -999.00  +21.40  15.00     24   +0.50 1 1 1 1 1   887    0 20.35 -27.45 ----- 20.2 15.0 185.2 29.3 24.7 -28.5 24.6 -29.1 26.2 -27.7 26.5 -28.9
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.642760
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:25:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:25:31', tmtdew=24.39, humidity=19.12, cloud=0.0, wind=30.21, temperature=21.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:25:34.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:25:45.713 [DEBUG] [Thread-194045] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:25:45.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:25:45.798 [DEBUG] [Thread-194048] [transport.py] [_log()] starting thread (client mode): 0xd31ceaa0
2025-11-24T17:25:45.798 [DEBUG] [Thread-194048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:25:45.813 [DEBUG] [Thread-194048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:25:45.813 [INFO] [Thread-194048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] client lang: <none>
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] server lang: <none>
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] kex follows: False
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:25:45.820 [DEBUG] [Thread-194048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:25:45.821 [DEBUG] [Thread-194048] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:25:45.821 [DEBUG] [Thread-194048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:25:45.821 [DEBUG] [Thread-194048] [transport.py] [_log()] Compression: none
2025-11-24T17:25:45.821 [DEBUG] [Thread-194048] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:25:45.877 [DEBUG] [Thread-194048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:25:45.877 [DEBUG] [Thread-194048] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:25:45.878 [DEBUG] [Thread-194048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:25:45.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:25:45.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:25:45.934 [DEBUG] [Thread-194048] [transport.py] [_log()] userauth is OK
2025-11-24T17:25:45.934 [DEBUG] [Thread-194048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:25:45.934 [DEBUG] [Thread-194048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:25:45.934 [DEBUG] [Thread-194048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:25:45.934 [DEBUG] [Thread-194048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:25:45.948 [INFO] [Thread-194048] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:25:45.948 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:25:45.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:25:46.794 [DEBUG] [Thread-194048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:25:46.794 [DEBUG] [Thread-194048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:25:46.842 [DEBUG] [Thread-194048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:25:46.842 [DEBUG] [Thread-194048] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:25:46.851 [DEBUG] [Thread-194048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:25:46.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:25:46.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:25:46.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:25:46.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:25:46.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:25:46.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:25:46.886 [DEBUG] [Thread-194048] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:25:56.570 [DEBUG] [Thread-194050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:25:57.258 [DEBUG] [Thread-194051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:26:11.640 [DEBUG] [Thread-194052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:26:16.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:26:16.888 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:26:16.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-11-24T17:26:17.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 26, 3), 24.46, 19.05, 0.0, 32.91, 21.39, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:26:17.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:26:03
2025-11-24T17:26:17.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:26:18.113 [DEBUG] [Thread-194053] [transport.py] [_log()] starting thread (client mode): 0xd31ccee0
2025-11-24T17:26:18.114 [DEBUG] [Thread-194053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:26:18.125 [DEBUG] [Thread-194053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:26:18.125 [INFO] [Thread-194053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] client lang: <none>
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] server lang: <none>
2025-11-24T17:26:18.129 [DEBUG] [Thread-194053] [transport.py] [_log()] kex follows: False
2025-11-24T17:26:18.130 [DEBUG] [Thread-194053] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:26:18.130 [DEBUG] [Thread-194053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:26:18.130 [DEBUG] [Thread-194053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:26:18.131 [DEBUG] [Thread-194053] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:26:18.131 [DEBUG] [Thread-194053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:26:18.131 [DEBUG] [Thread-194053] [transport.py] [_log()] Compression: none
2025-11-24T17:26:18.131 [DEBUG] [Thread-194053] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:26:18.169 [DEBUG] [Thread-194053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:26:18.173 [DEBUG] [Thread-194053] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:26:18.175 [DEBUG] [Thread-194053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:26:18.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:26:18.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:26:18.180 [DEBUG] [Thread-194053] [transport.py] [_log()] userauth is OK
2025-11-24T17:26:18.180 [DEBUG] [Thread-194053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:26:18.181 [DEBUG] [Thread-194053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:26:18.181 [DEBUG] [Thread-194053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:26:18.181 [DEBUG] [Thread-194053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:26:18.206 [INFO] [Thread-194053] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:26:18.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:26:18.815 [DEBUG] [Thread-194053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:26:18.815 [DEBUG] [Thread-194053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:26:18.824 [DEBUG] [Thread-194053] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:26:18.856 [DEBUG] [Thread-194053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:26:18.856 [DEBUG] [Thread-194053] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:26:18.858 [DEBUG] [Thread-194053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:26:18.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:26:18.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:26:18.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:26:18.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:26:18.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:26:18.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:26:18.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:26:18.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:26:18.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:26:18.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.643107 -999.00  +21.50  27.98     24   +0.50 1 1 1 1 1   887    0 20.06 -25.10 ----- 27.0 28.0 163.5 32.6 24.7 -29.7 24.6 -31.2 26.2 -27.9 26.5 -29.3
2025-11-24T17:26:18.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:26:18.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:26:18.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.643107
2025-11-24T17:26:18.883 [DEBUG] [Thread-194053] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:26:18.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:26:18.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:26:18.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:26:18.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:26:18.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:26:18.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:26:03', tmtdew=24.46, humidity=19.05, cloud=0.0, wind=32.91, temperature=21.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:26:04.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:26:18.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:26:18.975 [DEBUG] [Thread-194056] [transport.py] [_log()] starting thread (client mode): 0xd07cea10
2025-11-24T17:26:18.975 [DEBUG] [Thread-194056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:26:18.990 [DEBUG] [Thread-194056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:26:18.990 [INFO] [Thread-194056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] client lang: <none>
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] server lang: <none>
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] kex follows: False
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] Compression: none
2025-11-24T17:26:18.997 [DEBUG] [Thread-194056] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:26:19.056 [DEBUG] [Thread-194056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:26:19.057 [DEBUG] [Thread-194056] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:26:19.057 [DEBUG] [Thread-194056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:26:19.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:26:19.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:26:19.115 [DEBUG] [Thread-194056] [transport.py] [_log()] userauth is OK
2025-11-24T17:26:19.115 [DEBUG] [Thread-194056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:26:19.116 [DEBUG] [Thread-194056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:26:19.116 [DEBUG] [Thread-194056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:26:19.116 [DEBUG] [Thread-194056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:26:19.135 [INFO] [Thread-194056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:26:19.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:26:19.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:26:19.959 [DEBUG] [Thread-194056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:26:19.960 [DEBUG] [Thread-194056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:26:20.007 [DEBUG] [Thread-194056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:26:20.008 [DEBUG] [Thread-194056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:26:20.017 [DEBUG] [Thread-194056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:26:20.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:26:20.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-11-24T17:26:20.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-11-24T17:26:20.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:26:20.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:26:20.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:26:20.066 [DEBUG] [Thread-194056] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:26:26.679 [DEBUG] [Thread-194058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:26:41.757 [DEBUG] [Thread-194059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:26:50.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:26:50.102 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:26:50.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-11-24T17:26:50.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 26, 36), 24.61, 19.05, 0.0, 34.18, 21.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:26:50.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:26:36
2025-11-24T17:26:51.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:26:51.261 [DEBUG] [Thread-194060] [transport.py] [_log()] starting thread (client mode): 0xd31ef880
2025-11-24T17:26:51.262 [DEBUG] [Thread-194060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:26:51.274 [DEBUG] [Thread-194060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:26:51.274 [INFO] [Thread-194060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:26:51.279 [DEBUG] [Thread-194060] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:26:51.280 [DEBUG] [Thread-194060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:26:51.280 [DEBUG] [Thread-194060] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:26:51.280 [DEBUG] [Thread-194060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:26:51.280 [DEBUG] [Thread-194060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:26:51.280 [DEBUG] [Thread-194060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:26:51.280 [DEBUG] [Thread-194060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:26:51.280 [DEBUG] [Thread-194060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:26:51.280 [DEBUG] [Thread-194060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:26:51.280 [DEBUG] [Thread-194060] [transport.py] [_log()] client lang: <none>
2025-11-24T17:26:51.281 [DEBUG] [Thread-194060] [transport.py] [_log()] server lang: <none>
2025-11-24T17:26:51.281 [DEBUG] [Thread-194060] [transport.py] [_log()] kex follows: False
2025-11-24T17:26:51.281 [DEBUG] [Thread-194060] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:26:51.282 [DEBUG] [Thread-194060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:26:51.282 [DEBUG] [Thread-194060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:26:51.282 [DEBUG] [Thread-194060] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:26:51.282 [DEBUG] [Thread-194060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:26:51.282 [DEBUG] [Thread-194060] [transport.py] [_log()] Compression: none
2025-11-24T17:26:51.282 [DEBUG] [Thread-194060] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:26:51.320 [DEBUG] [Thread-194060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:26:51.325 [DEBUG] [Thread-194060] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:26:51.327 [DEBUG] [Thread-194060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:26:51.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:26:51.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:26:51.333 [DEBUG] [Thread-194060] [transport.py] [_log()] userauth is OK
2025-11-24T17:26:51.334 [DEBUG] [Thread-194060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:26:51.334 [DEBUG] [Thread-194060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:26:51.334 [DEBUG] [Thread-194060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:26:51.334 [DEBUG] [Thread-194060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:26:51.363 [INFO] [Thread-194060] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:26:51.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:26:51.914 [DEBUG] [Thread-194060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:26:51.914 [DEBUG] [Thread-194060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:26:51.924 [DEBUG] [Thread-194060] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:26:51.955 [DEBUG] [Thread-194060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:26:51.955 [DEBUG] [Thread-194060] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:26:51.961 [DEBUG] [Thread-194060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:26:51.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:26:51.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:26:51.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:26:51.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:26:51.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:26:51.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:26:51.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:26:51.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:26:51.989 [DEBUG] [Thread-194060] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:26:51.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:26:51.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.643455 -999.00  +21.30  23.25     25   +0.50 1 1 1 1 1   887    0 20.38 -26.77 ----- 19.9 23.2 186.6 34.5 24.6 -29.2 24.4 -29.3 26.1 -28.8 26.4 -30.5
2025-11-24T17:26:51.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:26:51.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:26:51.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.643455
2025-11-24T17:26:52.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:26:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:26:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:26:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:26:52.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:26:52.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:26:36', tmtdew=24.61, humidity=19.05, cloud=0.0, wind=34.18, temperature=21.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:26:34.512', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:26:52.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:26:52.093 [DEBUG] [Thread-194063] [transport.py] [_log()] starting thread (client mode): 0xd31efb20
2025-11-24T17:26:52.093 [DEBUG] [Thread-194063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:26:52.108 [DEBUG] [Thread-194063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:26:52.108 [INFO] [Thread-194063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] client lang: <none>
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] server lang: <none>
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] kex follows: False
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:26:52.115 [DEBUG] [Thread-194063] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:26:52.116 [DEBUG] [Thread-194063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:26:52.116 [DEBUG] [Thread-194063] [transport.py] [_log()] Compression: none
2025-11-24T17:26:52.116 [DEBUG] [Thread-194063] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:26:52.173 [DEBUG] [Thread-194063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:26:52.173 [DEBUG] [Thread-194063] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:26:52.173 [DEBUG] [Thread-194063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:26:52.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:26:52.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:26:52.230 [DEBUG] [Thread-194063] [transport.py] [_log()] userauth is OK
2025-11-24T17:26:52.230 [DEBUG] [Thread-194063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:26:52.230 [DEBUG] [Thread-194063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:26:52.230 [DEBUG] [Thread-194063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:26:52.231 [DEBUG] [Thread-194063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:26:52.244 [INFO] [Thread-194063] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:26:52.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:26:52.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:26:53.079 [DEBUG] [Thread-194063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:26:53.079 [DEBUG] [Thread-194063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:26:53.127 [DEBUG] [Thread-194063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:26:53.127 [DEBUG] [Thread-194063] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:26:53.136 [DEBUG] [Thread-194063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:26:53.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:26:53.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-11-24T17:26:53.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-11-24T17:26:53.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:26:53.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:26:53.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:26:53.186 [DEBUG] [Thread-194063] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:26:56.804 [DEBUG] [Thread-194065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:26:57.610 [DEBUG] [Thread-194066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:27:11.879 [DEBUG] [Thread-194067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:27:23.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:27:23.217 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:27:23.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-11-24T17:27:23.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 27, 9), 24.65, 19.0, 0.0, 33.88, 21.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:27:23.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:27:09
2025-11-24T17:27:24.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:27:24.323 [DEBUG] [Thread-194068] [transport.py] [_log()] starting thread (client mode): 0xd07ce560
2025-11-24T17:27:24.324 [DEBUG] [Thread-194068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:27:24.337 [DEBUG] [Thread-194068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:27:24.338 [INFO] [Thread-194068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] client lang: <none>
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] server lang: <none>
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] kex follows: False
2025-11-24T17:27:24.341 [DEBUG] [Thread-194068] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:27:24.342 [DEBUG] [Thread-194068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:27:24.342 [DEBUG] [Thread-194068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:27:24.342 [DEBUG] [Thread-194068] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:27:24.342 [DEBUG] [Thread-194068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:27:24.342 [DEBUG] [Thread-194068] [transport.py] [_log()] Compression: none
2025-11-24T17:27:24.342 [DEBUG] [Thread-194068] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:27:24.356 [DEBUG] [Thread-194068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:27:24.358 [DEBUG] [Thread-194068] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:27:24.360 [DEBUG] [Thread-194068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:27:24.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:27:24.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:27:24.363 [DEBUG] [Thread-194068] [transport.py] [_log()] userauth is OK
2025-11-24T17:27:24.363 [DEBUG] [Thread-194068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:27:24.363 [DEBUG] [Thread-194068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:27:24.363 [DEBUG] [Thread-194068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:27:24.363 [DEBUG] [Thread-194068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:27:24.377 [INFO] [Thread-194068] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:27:24.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:27:24.960 [DEBUG] [Thread-194068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:27:24.960 [DEBUG] [Thread-194068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:27:24.961 [DEBUG] [Thread-194068] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:27:25.001 [DEBUG] [Thread-194068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:27:25.001 [DEBUG] [Thread-194068] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:27:25.003 [DEBUG] [Thread-194068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:27:25.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:27:25.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:27:25.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:27:25.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:27:25.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:27:25.015 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:27:25.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:27:25.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:27:25.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:27:25.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.643802 -999.00  +21.20  28.92     25   +0.50 1 1 1 1 1   887    0 20.70 -26.91 ----- 26.5 28.9 183.4 32.4 24.6 -29.6 24.3 -31.3 26.1 -27.3 26.4 -29.5
2025-11-24T17:27:25.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:27:25.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:27:25.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.643802
2025-11-24T17:27:25.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:27:25.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:27:25.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:27:25.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:27:25.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:27:25.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:27:09', tmtdew=24.65, humidity=19.0, cloud=0.0, wind=33.88, temperature=21.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:27:04.493', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:27:25.025 [DEBUG] [Thread-194068] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:27:25.099 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:27:25.111 [DEBUG] [Thread-194071] [transport.py] [_log()] starting thread (client mode): 0xd07853f0
2025-11-24T17:27:25.111 [DEBUG] [Thread-194071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:27:25.128 [DEBUG] [Thread-194071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:27:25.128 [INFO] [Thread-194071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] client lang: <none>
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] server lang: <none>
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] kex follows: False
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] Compression: none
2025-11-24T17:27:25.136 [DEBUG] [Thread-194071] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:27:25.194 [DEBUG] [Thread-194071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:27:25.194 [DEBUG] [Thread-194071] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:27:25.195 [DEBUG] [Thread-194071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:27:25.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:27:25.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:27:25.251 [DEBUG] [Thread-194071] [transport.py] [_log()] userauth is OK
2025-11-24T17:27:25.251 [DEBUG] [Thread-194071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:27:25.252 [DEBUG] [Thread-194071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:27:25.252 [DEBUG] [Thread-194071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:27:25.252 [DEBUG] [Thread-194071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:27:25.277 [INFO] [Thread-194071] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:27:25.277 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:27:25.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:27:26.116 [DEBUG] [Thread-194071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:27:26.116 [DEBUG] [Thread-194071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:27:26.164 [DEBUG] [Thread-194071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:27:26.164 [DEBUG] [Thread-194071] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:27:26.175 [DEBUG] [Thread-194071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:27:26.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:27:26.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-11-24T17:27:26.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-11-24T17:27:26.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:27:26.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:27:26.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:27:26.218 [DEBUG] [Thread-194071] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:27:26.906 [DEBUG] [Thread-194073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:27:41.973 [DEBUG] [Thread-194074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:27:56.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:27:56.242 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:27:56.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:27:57.001 [DEBUG] [Thread-194075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:27:57.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 27, 41), 24.49, 19.05, 0.0, 21.61, 21.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:27:57.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:27:41
2025-11-24T17:27:57.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:27:57.383 [DEBUG] [Thread-194076] [transport.py] [_log()] starting thread (client mode): 0xd07bd7b0
2025-11-24T17:27:57.384 [DEBUG] [Thread-194076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:27:57.386 [DEBUG] [Thread-194076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:27:57.386 [INFO] [Thread-194076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] client lang: <none>
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] server lang: <none>
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] kex follows: False
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] Compression: none
2025-11-24T17:27:57.389 [DEBUG] [Thread-194076] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:27:57.397 [DEBUG] [Thread-194076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:27:57.397 [DEBUG] [Thread-194076] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:27:57.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:27:57.397 [DEBUG] [Thread-194076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:27:57.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:27:57.398 [DEBUG] [Thread-194076] [transport.py] [_log()] userauth is OK
2025-11-24T17:27:57.398 [DEBUG] [Thread-194076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:27:57.398 [DEBUG] [Thread-194076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:27:57.398 [DEBUG] [Thread-194076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:27:57.399 [DEBUG] [Thread-194076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:27:57.417 [INFO] [Thread-194076] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:27:57.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:27:57.875 [DEBUG] [Thread-194078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:27:57.987 [DEBUG] [Thread-194076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:27:57.988 [DEBUG] [Thread-194076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:27:57.988 [DEBUG] [Thread-194076] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:27:58.029 [DEBUG] [Thread-194076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:27:58.029 [DEBUG] [Thread-194076] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:27:58.032 [DEBUG] [Thread-194076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:27:58.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:27:58.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:27:58.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:27:58.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:27:58.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:27:58.056 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:27:58.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:27:58.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:27:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:27:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.644149 -999.00  +21.00  24.53     25   +0.50 1 1 1 1 1   887    0 20.33 -26.91 ----- 28.8 24.5 176.2 32.9 24.4 -29.1 24.3 -32.5 25.9 -27.8 26.3 -29.6
2025-11-24T17:27:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:27:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:27:58.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.644149
2025-11-24T17:27:58.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:27:58.059 [DEBUG] [Thread-194076] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:27:58.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:27:58.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:27:58.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:27:58.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:27:58.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:27:41', tmtdew=24.49, humidity=19.05, cloud=0.0, wind=21.61, temperature=21.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:27:34.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:27:58.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:27:58.168 [DEBUG] [Thread-194080] [transport.py] [_log()] starting thread (client mode): 0xd07cef20
2025-11-24T17:27:58.168 [DEBUG] [Thread-194080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:27:58.193 [DEBUG] [Thread-194080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:27:58.193 [INFO] [Thread-194080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:27:58.201 [DEBUG] [Thread-194080] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:27:58.201 [DEBUG] [Thread-194080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:27:58.202 [DEBUG] [Thread-194080] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:27:58.202 [DEBUG] [Thread-194080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:27:58.202 [DEBUG] [Thread-194080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:27:58.202 [DEBUG] [Thread-194080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:27:58.202 [DEBUG] [Thread-194080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:27:58.202 [DEBUG] [Thread-194080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:27:58.202 [DEBUG] [Thread-194080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:27:58.202 [DEBUG] [Thread-194080] [transport.py] [_log()] client lang: <none>
2025-11-24T17:27:58.202 [DEBUG] [Thread-194080] [transport.py] [_log()] server lang: <none>
2025-11-24T17:27:58.203 [DEBUG] [Thread-194080] [transport.py] [_log()] kex follows: False
2025-11-24T17:27:58.203 [DEBUG] [Thread-194080] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:27:58.203 [DEBUG] [Thread-194080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:27:58.203 [DEBUG] [Thread-194080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:27:58.203 [DEBUG] [Thread-194080] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:27:58.203 [DEBUG] [Thread-194080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:27:58.204 [DEBUG] [Thread-194080] [transport.py] [_log()] Compression: none
2025-11-24T17:27:58.204 [DEBUG] [Thread-194080] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:27:58.259 [DEBUG] [Thread-194080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:27:58.260 [DEBUG] [Thread-194080] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:27:58.261 [DEBUG] [Thread-194080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:27:58.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:27:58.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:27:58.315 [DEBUG] [Thread-194080] [transport.py] [_log()] userauth is OK
2025-11-24T17:27:58.315 [DEBUG] [Thread-194080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:27:58.315 [DEBUG] [Thread-194080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:27:58.315 [DEBUG] [Thread-194080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:27:58.315 [DEBUG] [Thread-194080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:27:58.334 [INFO] [Thread-194080] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:27:58.334 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:27:58.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:27:59.194 [DEBUG] [Thread-194080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:27:59.194 [DEBUG] [Thread-194080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:27:59.242 [DEBUG] [Thread-194080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:27:59.242 [DEBUG] [Thread-194080] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:27:59.251 [DEBUG] [Thread-194080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:27:59.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:27:59.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-11-24T17:27:59.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:27:59.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:27:59.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:27:59.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:27:59.286 [DEBUG] [Thread-194080] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:28:12.038 [DEBUG] [Thread-194082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:28:27.074 [DEBUG] [Thread-194083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:28:29.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:28:29.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:28:29.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-11-24T17:28:30.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 28, 14), 24.42, 19.15, 0.0, 23.59, 21.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:28:30.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:28:14
2025-11-24T17:28:30.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:28:30.332 [DEBUG] [Thread-194084] [transport.py] [_log()] starting thread (client mode): 0xd31ee140
2025-11-24T17:28:30.332 [DEBUG] [Thread-194084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:28:30.351 [DEBUG] [Thread-194084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:28:30.351 [INFO] [Thread-194084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] client lang: <none>
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] server lang: <none>
2025-11-24T17:28:30.354 [DEBUG] [Thread-194084] [transport.py] [_log()] kex follows: False
2025-11-24T17:28:30.355 [DEBUG] [Thread-194084] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:28:30.355 [DEBUG] [Thread-194084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:28:30.355 [DEBUG] [Thread-194084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:28:30.355 [DEBUG] [Thread-194084] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:28:30.355 [DEBUG] [Thread-194084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:28:30.355 [DEBUG] [Thread-194084] [transport.py] [_log()] Compression: none
2025-11-24T17:28:30.355 [DEBUG] [Thread-194084] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:28:30.369 [DEBUG] [Thread-194084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:28:30.370 [DEBUG] [Thread-194084] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:28:30.370 [DEBUG] [Thread-194084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:28:30.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:28:30.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:28:30.371 [DEBUG] [Thread-194084] [transport.py] [_log()] userauth is OK
2025-11-24T17:28:30.371 [DEBUG] [Thread-194084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:28:30.371 [DEBUG] [Thread-194084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:28:30.371 [DEBUG] [Thread-194084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:28:30.371 [DEBUG] [Thread-194084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:28:30.390 [INFO] [Thread-194084] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:28:30.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:28:30.974 [DEBUG] [Thread-194084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:28:30.974 [DEBUG] [Thread-194084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:28:30.974 [DEBUG] [Thread-194084] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:28:31.015 [DEBUG] [Thread-194084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:28:31.015 [DEBUG] [Thread-194084] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:28:31.017 [DEBUG] [Thread-194084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:28:31.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:28:31.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:28:31.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:28:31.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:28:31.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:28:31.033 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:28:31.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:28:31.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:28:31.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:28:31.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.644496 -999.00  +21.10  15.07     25   +0.50 1 1 1 1 1   887    0 20.16 -26.65 ----- 17.5 15.1 177.8 32.3 24.5 -28.6 24.5 -29.4 25.9 -27.2 26.2 -29.6
2025-11-24T17:28:31.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:28:31.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:28:31.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.644496
2025-11-24T17:28:31.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:28:31.038 [DEBUG] [Thread-194084] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:28:31.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:28:31.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:28:31.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:28:31.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:28:31.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:28:14', tmtdew=24.42, humidity=19.15, cloud=0.0, wind=23.59, temperature=21.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:28:04.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:28:31.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:28:31.133 [DEBUG] [Thread-194087] [transport.py] [_log()] starting thread (client mode): 0xd0703a00
2025-11-24T17:28:31.133 [DEBUG] [Thread-194087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:28:31.148 [DEBUG] [Thread-194087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:28:31.148 [INFO] [Thread-194087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] client lang: <none>
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] server lang: <none>
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] kex follows: False
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] Compression: none
2025-11-24T17:28:31.156 [DEBUG] [Thread-194087] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:28:31.213 [DEBUG] [Thread-194087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:28:31.214 [DEBUG] [Thread-194087] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:28:31.214 [DEBUG] [Thread-194087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:28:31.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:28:31.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:28:31.274 [DEBUG] [Thread-194087] [transport.py] [_log()] userauth is OK
2025-11-24T17:28:31.274 [DEBUG] [Thread-194087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:28:31.274 [DEBUG] [Thread-194087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:28:31.274 [DEBUG] [Thread-194087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:28:31.274 [DEBUG] [Thread-194087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:28:31.291 [INFO] [Thread-194087] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:28:31.292 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:28:31.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:28:32.160 [DEBUG] [Thread-194087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:28:32.160 [DEBUG] [Thread-194087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:28:32.209 [DEBUG] [Thread-194087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:28:32.209 [DEBUG] [Thread-194087] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:28:32.218 [DEBUG] [Thread-194087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:28:32.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:28:32.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:28:32.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:28:32.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:28:32.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:28:32.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:28:32.265 [DEBUG] [Thread-194087] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:28:42.111 [DEBUG] [Thread-194089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:28:57.183 [DEBUG] [Thread-194090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:28:58.113 [DEBUG] [Thread-194091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:29:02.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:29:02.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:29:02.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-11-24T17:29:03.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 28, 47), 24.38, 19.15, 0.0, 23.18, 21.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:29:03.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:28:47
2025-11-24T17:29:03.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:29:03.490 [DEBUG] [Thread-194092] [transport.py] [_log()] starting thread (client mode): 0xd0786500
2025-11-24T17:29:03.490 [DEBUG] [Thread-194092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:29:03.510 [DEBUG] [Thread-194092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:29:03.510 [INFO] [Thread-194092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] client lang: <none>
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] server lang: <none>
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] kex follows: False
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:29:03.512 [DEBUG] [Thread-194092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:29:03.513 [DEBUG] [Thread-194092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:29:03.513 [DEBUG] [Thread-194092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:29:03.513 [DEBUG] [Thread-194092] [transport.py] [_log()] Compression: none
2025-11-24T17:29:03.513 [DEBUG] [Thread-194092] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:29:03.526 [DEBUG] [Thread-194092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:29:03.527 [DEBUG] [Thread-194092] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:29:03.527 [DEBUG] [Thread-194092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:29:03.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:29:03.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:29:03.528 [DEBUG] [Thread-194092] [transport.py] [_log()] userauth is OK
2025-11-24T17:29:03.528 [DEBUG] [Thread-194092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:29:03.528 [DEBUG] [Thread-194092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:29:03.528 [DEBUG] [Thread-194092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:29:03.528 [DEBUG] [Thread-194092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:29:03.546 [INFO] [Thread-194092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:29:03.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:29:04.144 [DEBUG] [Thread-194092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:29:04.144 [DEBUG] [Thread-194092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:29:04.144 [DEBUG] [Thread-194092] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:29:04.185 [DEBUG] [Thread-194092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:29:04.185 [DEBUG] [Thread-194092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:29:04.187 [DEBUG] [Thread-194092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:29:04.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:29:04.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:29:04.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:29:04.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:29:04.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:29:04.204 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:29:04.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:29:04.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:29:04.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:29:04.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.644843 -999.00  +21.20  21.61     25   +0.50 1 1 1 1 1   887    0 20.14 -23.39 ----- 26.1 21.6 180.6 28.0 24.6 -28.6 24.4 -29.8 26.0 -27.1 26.4 -29.1
2025-11-24T17:29:04.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:29:04.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:29:04.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.644843
2025-11-24T17:29:04.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:29:04.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:29:04.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:29:04.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:29:04.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:29:04.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:28:47', tmtdew=24.38, humidity=19.15, cloud=0.0, wind=23.18, temperature=21.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:28:34.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:29:04.206 [DEBUG] [Thread-194092] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:29:04.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:29:04.294 [DEBUG] [Thread-194095] [transport.py] [_log()] starting thread (client mode): 0xd31ee440
2025-11-24T17:29:04.295 [DEBUG] [Thread-194095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:29:04.310 [DEBUG] [Thread-194095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:29:04.310 [INFO] [Thread-194095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] client lang: <none>
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] server lang: <none>
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] kex follows: False
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] Compression: none
2025-11-24T17:29:04.321 [DEBUG] [Thread-194095] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:29:04.377 [DEBUG] [Thread-194095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:29:04.377 [DEBUG] [Thread-194095] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:29:04.377 [DEBUG] [Thread-194095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:29:04.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:29:04.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:29:04.434 [DEBUG] [Thread-194095] [transport.py] [_log()] userauth is OK
2025-11-24T17:29:04.434 [DEBUG] [Thread-194095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:29:04.434 [DEBUG] [Thread-194095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:29:04.434 [DEBUG] [Thread-194095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:29:04.434 [DEBUG] [Thread-194095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:29:04.448 [INFO] [Thread-194095] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:29:04.448 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:29:04.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:29:05.270 [DEBUG] [Thread-194095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:29:05.270 [DEBUG] [Thread-194095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:29:05.318 [DEBUG] [Thread-194095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:29:05.318 [DEBUG] [Thread-194095] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:29:05.327 [DEBUG] [Thread-194095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:29:05.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:29:05.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-11-24T17:29:05.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-11-24T17:29:05.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:29:05.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:29:05.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:29:05.358 [DEBUG] [Thread-194095] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:29:12.230 [DEBUG] [Thread-194097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:29:27.323 [DEBUG] [Thread-194098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:29:35.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:29:35.390 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:29:35.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:29:36.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 29, 19), 24.39, 19.12, 0.0, 23.52, 21.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:29:36.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:29:19
2025-11-24T17:29:36.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:29:36.492 [DEBUG] [Thread-194099] [transport.py] [_log()] starting thread (client mode): 0xd0787130
2025-11-24T17:29:36.492 [DEBUG] [Thread-194099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:29:36.510 [DEBUG] [Thread-194099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:29:36.510 [INFO] [Thread-194099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:29:36.513 [DEBUG] [Thread-194099] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] client lang: <none>
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] server lang: <none>
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] kex follows: False
2025-11-24T17:29:36.514 [DEBUG] [Thread-194099] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:29:36.515 [DEBUG] [Thread-194099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:29:36.515 [DEBUG] [Thread-194099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:29:36.515 [DEBUG] [Thread-194099] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:29:36.515 [DEBUG] [Thread-194099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:29:36.515 [DEBUG] [Thread-194099] [transport.py] [_log()] Compression: none
2025-11-24T17:29:36.515 [DEBUG] [Thread-194099] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:29:36.546 [DEBUG] [Thread-194099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:29:36.548 [DEBUG] [Thread-194099] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:29:36.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:29:36.549 [DEBUG] [Thread-194099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:29:36.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:29:36.551 [DEBUG] [Thread-194099] [transport.py] [_log()] userauth is OK
2025-11-24T17:29:36.551 [DEBUG] [Thread-194099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:29:36.551 [DEBUG] [Thread-194099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:29:36.551 [DEBUG] [Thread-194099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:29:36.551 [DEBUG] [Thread-194099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:29:36.565 [INFO] [Thread-194099] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:29:36.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:29:37.144 [DEBUG] [Thread-194099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:29:37.144 [DEBUG] [Thread-194099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:29:37.154 [DEBUG] [Thread-194099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:29:37.185 [DEBUG] [Thread-194099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:29:37.185 [DEBUG] [Thread-194099] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:29:37.189 [DEBUG] [Thread-194099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:29:37.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:29:37.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:29:37.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:29:37.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:29:37.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:29:37.217 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:29:37.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:29:37.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:29:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:29:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.645191 -999.00  +21.20  22.27     25   +0.50 1 1 1 1 1   887    0 20.23 -25.81 ----- 20.4 22.3 191.7 29.2 24.5 -29.1 24.4 -30.2 26.0 -27.0 26.2 -28.8
2025-11-24T17:29:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:29:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:29:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.645191
2025-11-24T17:29:37.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:29:37.223 [DEBUG] [Thread-194099] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:29:37.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:29:37.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:29:37.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:29:37.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:29:37.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:29:19', tmtdew=24.39, humidity=19.12, cloud=0.0, wind=23.52, temperature=21.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:29:04.502', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:29:37.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:29:37.311 [DEBUG] [Thread-194102] [transport.py] [_log()] starting thread (client mode): 0xd0786d10
2025-11-24T17:29:37.311 [DEBUG] [Thread-194102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:29:37.327 [DEBUG] [Thread-194102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:29:37.327 [INFO] [Thread-194102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:29:37.334 [DEBUG] [Thread-194102] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] client lang: <none>
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] server lang: <none>
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] kex follows: False
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:29:37.335 [DEBUG] [Thread-194102] [transport.py] [_log()] Compression: none
2025-11-24T17:29:37.336 [DEBUG] [Thread-194102] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:29:37.396 [DEBUG] [Thread-194102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:29:37.397 [DEBUG] [Thread-194102] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:29:37.397 [DEBUG] [Thread-194102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:29:37.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:29:37.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:29:37.455 [DEBUG] [Thread-194102] [transport.py] [_log()] userauth is OK
2025-11-24T17:29:37.455 [DEBUG] [Thread-194102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:29:37.455 [DEBUG] [Thread-194102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:29:37.455 [DEBUG] [Thread-194102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:29:37.456 [DEBUG] [Thread-194102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:29:37.473 [INFO] [Thread-194102] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:29:37.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:29:37.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:29:38.328 [DEBUG] [Thread-194102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:29:38.328 [DEBUG] [Thread-194102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:29:38.376 [DEBUG] [Thread-194102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:29:38.376 [DEBUG] [Thread-194102] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:29:38.384 [DEBUG] [Thread-194102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:29:38.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:29:38.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-11-24T17:29:38.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-11-24T17:29:38.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:29:38.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:29:38.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:29:38.426 [DEBUG] [Thread-194102] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:29:42.363 [DEBUG] [Thread-194104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:29:57.423 [DEBUG] [Thread-194105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:29:58.421 [DEBUG] [Thread-194106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:30:08.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:30:08.472 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:30:08.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:30:09.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 29, 52), 24.33, 19.2, 0.0, 31.21, 21.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:30:09.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:29:52
2025-11-24T17:30:09.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:30:10.121 [DEBUG] [Thread-194107] [transport.py] [_log()] starting thread (client mode): 0xd0785810
2025-11-24T17:30:10.122 [DEBUG] [Thread-194107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:30:10.133 [DEBUG] [Thread-194107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:30:10.133 [INFO] [Thread-194107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] client lang: <none>
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] server lang: <none>
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] kex follows: False
2025-11-24T17:30:10.137 [DEBUG] [Thread-194107] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:30:10.138 [DEBUG] [Thread-194107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:30:10.138 [DEBUG] [Thread-194107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:30:10.138 [DEBUG] [Thread-194107] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:30:10.138 [DEBUG] [Thread-194107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:30:10.138 [DEBUG] [Thread-194107] [transport.py] [_log()] Compression: none
2025-11-24T17:30:10.138 [DEBUG] [Thread-194107] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:30:10.168 [DEBUG] [Thread-194107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:30:10.171 [DEBUG] [Thread-194107] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:30:10.172 [DEBUG] [Thread-194107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:30:10.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:30:10.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:30:10.175 [DEBUG] [Thread-194107] [transport.py] [_log()] userauth is OK
2025-11-24T17:30:10.176 [DEBUG] [Thread-194107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:30:10.176 [DEBUG] [Thread-194107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:30:10.176 [DEBUG] [Thread-194107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:30:10.176 [DEBUG] [Thread-194107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:30:10.194 [INFO] [Thread-194107] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:30:10.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:30:11.283 [DEBUG] [Thread-194107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:30:11.283 [DEBUG] [Thread-194107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:30:11.285 [DEBUG] [Thread-194107] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:30:11.323 [DEBUG] [Thread-194107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:30:11.323 [DEBUG] [Thread-194107] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:30:11.327 [DEBUG] [Thread-194107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:30:11.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:30:11.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:30:11.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:30:11.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:30:11.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:30:11.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:30:11.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:30:11.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:30:11.407 [DEBUG] [Thread-194107] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:30:11.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:30:11.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.645885 -999.00  +21.20  21.84     25   +0.60 1 1 1 1 1   887    0 20.30 -22.12 ----- 21.5 21.8 189.2 31.1 24.5 -28.8 24.5 -28.1 26.0 -26.8 26.2 -28.3
2025-11-24T17:30:11.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:30:11.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:30:11.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.645885
2025-11-24T17:30:11.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:30:11.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:30:11.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:30:11.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:30:11.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:30:11.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:29:52', tmtdew=24.33, humidity=19.2, cloud=0.0, wind=31.21, temperature=21.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:30:04.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:30:11.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:30:11.536 [DEBUG] [Thread-194110] [transport.py] [_log()] starting thread (client mode): 0xd07879a0
2025-11-24T17:30:11.537 [DEBUG] [Thread-194110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:30:11.552 [DEBUG] [Thread-194110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:30:11.552 [INFO] [Thread-194110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] client lang: <none>
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] server lang: <none>
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] kex follows: False
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:30:11.560 [DEBUG] [Thread-194110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:30:11.561 [DEBUG] [Thread-194110] [transport.py] [_log()] Compression: none
2025-11-24T17:30:11.561 [DEBUG] [Thread-194110] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:30:11.622 [DEBUG] [Thread-194110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:30:11.623 [DEBUG] [Thread-194110] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:30:11.624 [DEBUG] [Thread-194110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:30:11.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:30:11.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:30:11.678 [DEBUG] [Thread-194110] [transport.py] [_log()] userauth is OK
2025-11-24T17:30:11.679 [DEBUG] [Thread-194110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:30:11.679 [DEBUG] [Thread-194110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:30:11.679 [DEBUG] [Thread-194110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:30:11.679 [DEBUG] [Thread-194110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:30:11.699 [INFO] [Thread-194110] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:30:11.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:30:11.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:30:12.481 [DEBUG] [Thread-194112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:30:12.535 [DEBUG] [Thread-194110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:30:12.535 [DEBUG] [Thread-194110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:30:12.586 [DEBUG] [Thread-194110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:30:12.586 [DEBUG] [Thread-194110] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:30:12.596 [DEBUG] [Thread-194110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:30:12.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:30:12.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:30:12.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-11-24T17:30:12.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:30:12.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:30:12.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:30:12.632 [DEBUG] [Thread-194110] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:30:27.585 [DEBUG] [Thread-194113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:30:42.610 [DEBUG] [Thread-194114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:30:42.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:30:42.655 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:30:42.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:30:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 30, 25), 24.36, 19.17, 0.0, 27.91, 21.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:30:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:30:25
2025-11-24T17:30:43.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:30:43.686 [DEBUG] [Thread-194115] [transport.py] [_log()] starting thread (client mode): 0xd0784ac0
2025-11-24T17:30:43.686 [DEBUG] [Thread-194115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:30:43.700 [DEBUG] [Thread-194115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:30:43.701 [INFO] [Thread-194115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] client lang: <none>
2025-11-24T17:30:43.704 [DEBUG] [Thread-194115] [transport.py] [_log()] server lang: <none>
2025-11-24T17:30:43.705 [DEBUG] [Thread-194115] [transport.py] [_log()] kex follows: False
2025-11-24T17:30:43.705 [DEBUG] [Thread-194115] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:30:43.705 [DEBUG] [Thread-194115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:30:43.705 [DEBUG] [Thread-194115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:30:43.705 [DEBUG] [Thread-194115] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:30:43.705 [DEBUG] [Thread-194115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:30:43.705 [DEBUG] [Thread-194115] [transport.py] [_log()] Compression: none
2025-11-24T17:30:43.705 [DEBUG] [Thread-194115] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:30:43.722 [DEBUG] [Thread-194115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:30:43.723 [DEBUG] [Thread-194115] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:30:43.724 [DEBUG] [Thread-194115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:30:43.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:30:43.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:30:43.726 [DEBUG] [Thread-194115] [transport.py] [_log()] userauth is OK
2025-11-24T17:30:43.726 [DEBUG] [Thread-194115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:30:43.726 [DEBUG] [Thread-194115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:30:43.726 [DEBUG] [Thread-194115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:30:43.726 [DEBUG] [Thread-194115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:30:43.743 [INFO] [Thread-194115] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:30:43.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:30:44.319 [DEBUG] [Thread-194115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:30:44.319 [DEBUG] [Thread-194115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:30:44.320 [DEBUG] [Thread-194115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:30:44.361 [DEBUG] [Thread-194115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:30:44.361 [DEBUG] [Thread-194115] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:30:44.364 [DEBUG] [Thread-194115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:30:44.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:30:44.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:30:44.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:30:44.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:30:44.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:30:44.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:30:44.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:30:44.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:30:44.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:30:44.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.645885 -999.00  +21.20  21.84     25   +0.60 1 1 1 1 1   887    0 20.30 -22.12 ----- 21.5 21.8 189.2 31.1 24.5 -28.8 24.5 -28.1 26.0 -26.8 26.2 -28.3
2025-11-24T17:30:44.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:30:44.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:30:44.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.645885
2025-11-24T17:30:44.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:30:44.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:30:44.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:30:44.384 [DEBUG] [Thread-194115] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:30:44.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:30:44.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:30:44.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:30:25', tmtdew=24.36, humidity=19.17, cloud=0.0, wind=27.91, temperature=21.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:30:04.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:30:44.479 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:30:44.492 [DEBUG] [Thread-194118] [transport.py] [_log()] starting thread (client mode): 0xd0739120
2025-11-24T17:30:44.492 [DEBUG] [Thread-194118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:30:44.506 [DEBUG] [Thread-194118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:30:44.507 [INFO] [Thread-194118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] client lang: <none>
2025-11-24T17:30:44.514 [DEBUG] [Thread-194118] [transport.py] [_log()] server lang: <none>
2025-11-24T17:30:44.515 [DEBUG] [Thread-194118] [transport.py] [_log()] kex follows: False
2025-11-24T17:30:44.515 [DEBUG] [Thread-194118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:30:44.515 [DEBUG] [Thread-194118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:30:44.515 [DEBUG] [Thread-194118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:30:44.515 [DEBUG] [Thread-194118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:30:44.521 [DEBUG] [Thread-194118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:30:44.521 [DEBUG] [Thread-194118] [transport.py] [_log()] Compression: none
2025-11-24T17:30:44.521 [DEBUG] [Thread-194118] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:30:44.573 [DEBUG] [Thread-194118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:30:44.574 [DEBUG] [Thread-194118] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:30:44.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:30:44.575 [DEBUG] [Thread-194118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:30:44.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:30:44.630 [DEBUG] [Thread-194118] [transport.py] [_log()] userauth is OK
2025-11-24T17:30:44.630 [DEBUG] [Thread-194118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:30:44.630 [DEBUG] [Thread-194118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:30:44.630 [DEBUG] [Thread-194118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:30:44.631 [DEBUG] [Thread-194118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:30:44.653 [INFO] [Thread-194118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:30:44.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:30:44.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:30:45.479 [DEBUG] [Thread-194118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:30:45.479 [DEBUG] [Thread-194118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:30:45.527 [DEBUG] [Thread-194118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:30:45.527 [DEBUG] [Thread-194118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:30:45.536 [DEBUG] [Thread-194118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:30:45.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:30:45.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-11-24T17:30:45.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-11-24T17:30:45.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:30:45.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:30:45.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:30:45.576 [DEBUG] [Thread-194118] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:30:57.639 [DEBUG] [Thread-194120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:30:58.665 [DEBUG] [Thread-194121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:31:12.726 [DEBUG] [Thread-194122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:31:15.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:31:15.584 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:31:15.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-11-24T17:31:16.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 30, 57), 24.27, 19.24, 0.0, 30.6, 21.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:31:16.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:30:57
2025-11-24T17:31:16.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:31:16.670 [DEBUG] [Thread-194123] [transport.py] [_log()] starting thread (client mode): 0xd31ce9e0
2025-11-24T17:31:16.670 [DEBUG] [Thread-194123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:31:16.687 [DEBUG] [Thread-194123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:31:16.687 [INFO] [Thread-194123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:31:16.690 [DEBUG] [Thread-194123] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:31:16.690 [DEBUG] [Thread-194123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:31:16.690 [DEBUG] [Thread-194123] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] client lang: <none>
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] server lang: <none>
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] kex follows: False
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:31:16.691 [DEBUG] [Thread-194123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:31:16.692 [DEBUG] [Thread-194123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:31:16.692 [DEBUG] [Thread-194123] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:31:16.692 [DEBUG] [Thread-194123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:31:16.692 [DEBUG] [Thread-194123] [transport.py] [_log()] Compression: none
2025-11-24T17:31:16.692 [DEBUG] [Thread-194123] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:31:16.714 [DEBUG] [Thread-194123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:31:16.716 [DEBUG] [Thread-194123] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:31:16.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:31:16.718 [DEBUG] [Thread-194123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:31:16.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:31:16.720 [DEBUG] [Thread-194123] [transport.py] [_log()] userauth is OK
2025-11-24T17:31:16.720 [DEBUG] [Thread-194123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:31:16.720 [DEBUG] [Thread-194123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:31:16.720 [DEBUG] [Thread-194123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:31:16.721 [DEBUG] [Thread-194123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:31:16.744 [INFO] [Thread-194123] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:31:16.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:31:17.449 [DEBUG] [Thread-194123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:31:17.449 [DEBUG] [Thread-194123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:31:17.459 [DEBUG] [Thread-194123] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:31:17.490 [DEBUG] [Thread-194123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:31:17.490 [DEBUG] [Thread-194123] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:31:17.492 [DEBUG] [Thread-194123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:31:17.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:31:17.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:31:17.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:31:17.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:31:17.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:31:17.515 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:31:17.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:31:17.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:31:17.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:31:17.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.646232 -999.00  +21.20  30.98     25   +0.60 1 1 2 1 1   887    0 20.56 -22.77 ----- 31.1 31.0 199.0 41.8 24.4 -29.4 24.3 -30.6 26.0 -27.2 26.2 -30.0
2025-11-24T17:31:17.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:31:17.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:31:17.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.646232
2025-11-24T17:31:17.521 [DEBUG] [Thread-194123] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:31:17.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:31:17.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:31:17.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:31:17.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:31:17.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:31:17.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:30:57', tmtdew=24.27, humidity=19.24, cloud=0.0, wind=30.6, temperature=21.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:30:34.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:31:17.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:31:17.611 [DEBUG] [Thread-194126] [transport.py] [_log()] starting thread (client mode): 0xd31cc940
2025-11-24T17:31:17.611 [DEBUG] [Thread-194126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:31:17.625 [DEBUG] [Thread-194126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:31:17.625 [INFO] [Thread-194126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] client lang: <none>
2025-11-24T17:31:17.633 [DEBUG] [Thread-194126] [transport.py] [_log()] server lang: <none>
2025-11-24T17:31:17.634 [DEBUG] [Thread-194126] [transport.py] [_log()] kex follows: False
2025-11-24T17:31:17.634 [DEBUG] [Thread-194126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:31:17.634 [DEBUG] [Thread-194126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:31:17.634 [DEBUG] [Thread-194126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:31:17.634 [DEBUG] [Thread-194126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:31:17.634 [DEBUG] [Thread-194126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:31:17.634 [DEBUG] [Thread-194126] [transport.py] [_log()] Compression: none
2025-11-24T17:31:17.634 [DEBUG] [Thread-194126] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:31:17.689 [DEBUG] [Thread-194126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:31:17.689 [DEBUG] [Thread-194126] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:31:17.689 [DEBUG] [Thread-194126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:31:17.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:31:17.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:31:17.746 [DEBUG] [Thread-194126] [transport.py] [_log()] userauth is OK
2025-11-24T17:31:17.746 [DEBUG] [Thread-194126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:31:17.746 [DEBUG] [Thread-194126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:31:17.746 [DEBUG] [Thread-194126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:31:17.746 [DEBUG] [Thread-194126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:31:17.760 [INFO] [Thread-194126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:31:17.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:31:17.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:31:18.607 [DEBUG] [Thread-194126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:31:18.607 [DEBUG] [Thread-194126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:31:18.656 [DEBUG] [Thread-194126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:31:18.656 [DEBUG] [Thread-194126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:31:18.665 [DEBUG] [Thread-194126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:31:18.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:31:18.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-11-24T17:31:18.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-11-24T17:31:18.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:31:18.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:31:18.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:31:18.703 [DEBUG] [Thread-194126] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:31:27.763 [DEBUG] [Thread-194128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:31:42.834 [DEBUG] [Thread-194129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:31:48.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:31:48.726 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:31:48.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:31:49.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 31, 30), 24.46, 19.0, 0.0, 33.56, 21.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:31:49.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:31:30
2025-11-24T17:31:49.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:31:49.738 [DEBUG] [Thread-194130] [transport.py] [_log()] starting thread (client mode): 0xd0784b20
2025-11-24T17:31:49.739 [DEBUG] [Thread-194130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:31:49.755 [DEBUG] [Thread-194130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:31:49.756 [INFO] [Thread-194130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] client lang: <none>
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] server lang: <none>
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] kex follows: False
2025-11-24T17:31:49.760 [DEBUG] [Thread-194130] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:31:49.761 [DEBUG] [Thread-194130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:31:49.761 [DEBUG] [Thread-194130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:31:49.761 [DEBUG] [Thread-194130] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:31:49.761 [DEBUG] [Thread-194130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:31:49.761 [DEBUG] [Thread-194130] [transport.py] [_log()] Compression: none
2025-11-24T17:31:49.761 [DEBUG] [Thread-194130] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:31:49.790 [DEBUG] [Thread-194130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:31:49.792 [DEBUG] [Thread-194130] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:31:49.793 [DEBUG] [Thread-194130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:31:49.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:31:49.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:31:49.796 [DEBUG] [Thread-194130] [transport.py] [_log()] userauth is OK
2025-11-24T17:31:49.796 [DEBUG] [Thread-194130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:31:49.796 [DEBUG] [Thread-194130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:31:49.796 [DEBUG] [Thread-194130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:31:49.796 [DEBUG] [Thread-194130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:31:49.813 [INFO] [Thread-194130] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:31:49.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:31:50.463 [DEBUG] [Thread-194130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:31:50.464 [DEBUG] [Thread-194130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:31:50.464 [DEBUG] [Thread-194130] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:31:50.504 [DEBUG] [Thread-194130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:31:50.504 [DEBUG] [Thread-194130] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:31:50.506 [DEBUG] [Thread-194130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:31:50.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:31:50.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:31:50.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:31:50.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:31:50.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:31:50.524 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:31:50.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:31:50.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:31:50.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:31:50.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.646579 -999.00  +21.20  29.10     25   +0.60 1 1 1 1 1   887    0 19.86 -23.57 ----- 17.6 29.1 188.4 38.7 24.4 -29.4 24.3 -28.8 25.8 -26.9 26.1 -28.8
2025-11-24T17:31:50.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:31:50.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:31:50.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.646579
2025-11-24T17:31:50.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:31:50.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:31:50.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:31:50.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:31:50.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:31:50.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:31:30', tmtdew=24.46, humidity=19.0, cloud=0.0, wind=33.56, temperature=21.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:31:04.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:31:50.532 [DEBUG] [Thread-194130] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:31:50.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:31:50.620 [DEBUG] [Thread-194133] [transport.py] [_log()] starting thread (client mode): 0xd07038e0
2025-11-24T17:31:50.620 [DEBUG] [Thread-194133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:31:50.634 [DEBUG] [Thread-194133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:31:50.634 [INFO] [Thread-194133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] client lang: <none>
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] server lang: <none>
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] kex follows: False
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] Compression: none
2025-11-24T17:31:50.642 [DEBUG] [Thread-194133] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:31:50.701 [DEBUG] [Thread-194133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:31:50.702 [DEBUG] [Thread-194133] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:31:50.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:31:50.702 [DEBUG] [Thread-194133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:31:50.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:31:50.758 [DEBUG] [Thread-194133] [transport.py] [_log()] userauth is OK
2025-11-24T17:31:50.758 [DEBUG] [Thread-194133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:31:50.758 [DEBUG] [Thread-194133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:31:50.758 [DEBUG] [Thread-194133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:31:50.758 [DEBUG] [Thread-194133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:31:50.773 [INFO] [Thread-194133] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:31:50.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:31:50.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:31:51.645 [DEBUG] [Thread-194133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:31:51.645 [DEBUG] [Thread-194133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:31:51.693 [DEBUG] [Thread-194133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:31:51.693 [DEBUG] [Thread-194133] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:31:51.701 [DEBUG] [Thread-194133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:31:51.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:31:51.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-11-24T17:31:51.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-11-24T17:31:51.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:31:51.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:31:51.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:31:51.737 [DEBUG] [Thread-194133] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:31:57.863 [DEBUG] [Thread-194135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:31:58.917 [DEBUG] [Thread-194136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:32:12.941 [DEBUG] [Thread-194137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:32:21.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:32:21.755 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:32:21.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-11-24T17:32:22.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 32, 3), 24.41, 19.04, 0.0, 33.98, 21.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:32:22.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:32:03
2025-11-24T17:32:23.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:32:23.157 [DEBUG] [Thread-194138] [transport.py] [_log()] starting thread (client mode): 0xd31cd540
2025-11-24T17:32:23.158 [DEBUG] [Thread-194138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:32:23.174 [DEBUG] [Thread-194138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:32:23.174 [INFO] [Thread-194138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:32:23.178 [DEBUG] [Thread-194138] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:32:23.178 [DEBUG] [Thread-194138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:32:23.178 [DEBUG] [Thread-194138] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:32:23.178 [DEBUG] [Thread-194138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:32:23.178 [DEBUG] [Thread-194138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:32:23.178 [DEBUG] [Thread-194138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:32:23.178 [DEBUG] [Thread-194138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:32:23.178 [DEBUG] [Thread-194138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:32:23.178 [DEBUG] [Thread-194138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:32:23.179 [DEBUG] [Thread-194138] [transport.py] [_log()] client lang: <none>
2025-11-24T17:32:23.179 [DEBUG] [Thread-194138] [transport.py] [_log()] server lang: <none>
2025-11-24T17:32:23.179 [DEBUG] [Thread-194138] [transport.py] [_log()] kex follows: False
2025-11-24T17:32:23.179 [DEBUG] [Thread-194138] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:32:23.179 [DEBUG] [Thread-194138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:32:23.179 [DEBUG] [Thread-194138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:32:23.179 [DEBUG] [Thread-194138] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:32:23.180 [DEBUG] [Thread-194138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:32:23.180 [DEBUG] [Thread-194138] [transport.py] [_log()] Compression: none
2025-11-24T17:32:23.180 [DEBUG] [Thread-194138] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:32:23.202 [DEBUG] [Thread-194138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:32:23.205 [DEBUG] [Thread-194138] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:32:23.207 [DEBUG] [Thread-194138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:32:23.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:32:23.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:32:23.246 [DEBUG] [Thread-194138] [transport.py] [_log()] userauth is OK
2025-11-24T17:32:23.246 [DEBUG] [Thread-194138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:32:23.247 [DEBUG] [Thread-194138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:32:23.247 [DEBUG] [Thread-194138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:32:23.247 [DEBUG] [Thread-194138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:32:23.286 [INFO] [Thread-194138] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:32:23.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:32:23.899 [DEBUG] [Thread-194138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:32:23.899 [DEBUG] [Thread-194138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:32:23.901 [DEBUG] [Thread-194138] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:32:23.940 [DEBUG] [Thread-194138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:32:23.940 [DEBUG] [Thread-194138] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:32:23.943 [DEBUG] [Thread-194138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:32:23.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:32:23.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:32:23.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:32:23.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:32:23.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:32:23.971 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:32:23.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:32:23.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:32:23.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:32:23.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.646927 -999.00  +21.20  25.26     25   +0.60 1 1 1 1 1   887    0 20.28 -21.79 ----- 24.0 25.3 185.4 30.6 24.4 -28.9 24.3 -29.0 25.9 -28.2 26.1 -29.4
2025-11-24T17:32:23.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:32:23.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:32:23.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.646927
2025-11-24T17:32:23.979 [DEBUG] [Thread-194138] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:32:23.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:32:23.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:32:23.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:32:23.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:32:23.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:32:23.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:32:03', tmtdew=24.41, humidity=19.04, cloud=0.0, wind=33.98, temperature=21.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:31:34.493', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:32:24.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:32:24.084 [DEBUG] [Thread-194141] [transport.py] [_log()] starting thread (client mode): 0xd0786fb0
2025-11-24T17:32:24.084 [DEBUG] [Thread-194141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:32:24.103 [DEBUG] [Thread-194141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:32:24.103 [INFO] [Thread-194141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] client lang: <none>
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] server lang: <none>
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] kex follows: False
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:32:24.111 [DEBUG] [Thread-194141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:32:24.112 [DEBUG] [Thread-194141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:32:24.112 [DEBUG] [Thread-194141] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:32:24.112 [DEBUG] [Thread-194141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:32:24.112 [DEBUG] [Thread-194141] [transport.py] [_log()] Compression: none
2025-11-24T17:32:24.112 [DEBUG] [Thread-194141] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:32:24.172 [DEBUG] [Thread-194141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:32:24.172 [DEBUG] [Thread-194141] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:32:24.173 [DEBUG] [Thread-194141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:32:24.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:32:24.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:32:24.231 [DEBUG] [Thread-194141] [transport.py] [_log()] userauth is OK
2025-11-24T17:32:24.231 [DEBUG] [Thread-194141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:32:24.231 [DEBUG] [Thread-194141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:32:24.231 [DEBUG] [Thread-194141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:32:24.231 [DEBUG] [Thread-194141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:32:24.250 [INFO] [Thread-194141] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:32:24.250 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:32:24.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:32:25.096 [DEBUG] [Thread-194141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:32:25.096 [DEBUG] [Thread-194141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:32:25.144 [DEBUG] [Thread-194141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:32:25.144 [DEBUG] [Thread-194141] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:32:25.153 [DEBUG] [Thread-194141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:32:25.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:32:25.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-11-24T17:32:25.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-11-24T17:32:25.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:32:25.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:32:25.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:32:25.188 [DEBUG] [Thread-194141] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:32:27.969 [DEBUG] [Thread-194143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:32:43.024 [DEBUG] [Thread-194144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:32:55.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:32:55.188 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:32:55.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-11-24T17:32:56.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 32, 36), 24.54, 19.14, 0.0, 30.67, 21.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:32:56.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:32:36
2025-11-24T17:32:56.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:32:56.703 [DEBUG] [Thread-194145] [transport.py] [_log()] starting thread (client mode): 0xd07bfe50
2025-11-24T17:32:56.704 [DEBUG] [Thread-194145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:32:56.717 [DEBUG] [Thread-194145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:32:56.718 [INFO] [Thread-194145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] client lang: <none>
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] server lang: <none>
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] kex follows: False
2025-11-24T17:32:56.722 [DEBUG] [Thread-194145] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:32:56.723 [DEBUG] [Thread-194145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:32:56.723 [DEBUG] [Thread-194145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:32:56.723 [DEBUG] [Thread-194145] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:32:56.723 [DEBUG] [Thread-194145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:32:56.723 [DEBUG] [Thread-194145] [transport.py] [_log()] Compression: none
2025-11-24T17:32:56.723 [DEBUG] [Thread-194145] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:32:56.756 [DEBUG] [Thread-194145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:32:56.760 [DEBUG] [Thread-194145] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:32:56.762 [DEBUG] [Thread-194145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:32:56.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:32:56.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:32:56.768 [DEBUG] [Thread-194145] [transport.py] [_log()] userauth is OK
2025-11-24T17:32:56.768 [DEBUG] [Thread-194145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:32:56.768 [DEBUG] [Thread-194145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:32:56.768 [DEBUG] [Thread-194145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:32:56.768 [DEBUG] [Thread-194145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:32:56.790 [INFO] [Thread-194145] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:32:56.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:32:57.395 [DEBUG] [Thread-194145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:32:57.395 [DEBUG] [Thread-194145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:32:57.406 [DEBUG] [Thread-194145] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:32:57.435 [DEBUG] [Thread-194145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:32:57.435 [DEBUG] [Thread-194145] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:32:57.438 [DEBUG] [Thread-194145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:32:57.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:32:57.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:32:57.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:32:57.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:32:57.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:32:57.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:32:57.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:32:57.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:32:57.468 [DEBUG] [Thread-194145] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:32:57.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:32:57.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.647621 -999.00  +21.10  25.68     25   +0.60 1 1 1 1 1   887    0 20.22 -19.80 ----- 29.2 25.7 188.0 35.6 24.3 -29.5 24.1 -31.1 25.7 -27.2 26.0 -28.6
2025-11-24T17:32:57.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:32:57.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:32:57.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.647621
2025-11-24T17:32:57.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:32:57.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:32:57.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:32:57.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:32:57.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:32:57.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:32:36', tmtdew=24.54, humidity=19.14, cloud=0.0, wind=30.67, temperature=21.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:32:34.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:32:57.582 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:32:57.594 [DEBUG] [Thread-194148] [transport.py] [_log()] starting thread (client mode): 0xd07bd630
2025-11-24T17:32:57.595 [DEBUG] [Thread-194148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:32:57.609 [DEBUG] [Thread-194148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:32:57.609 [INFO] [Thread-194148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:32:57.617 [DEBUG] [Thread-194148] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:32:57.617 [DEBUG] [Thread-194148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:32:57.617 [DEBUG] [Thread-194148] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:32:57.617 [DEBUG] [Thread-194148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:32:57.617 [DEBUG] [Thread-194148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:32:57.617 [DEBUG] [Thread-194148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:32:57.617 [DEBUG] [Thread-194148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:32:57.617 [DEBUG] [Thread-194148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:32:57.617 [DEBUG] [Thread-194148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:32:57.617 [DEBUG] [Thread-194148] [transport.py] [_log()] client lang: <none>
2025-11-24T17:32:57.618 [DEBUG] [Thread-194148] [transport.py] [_log()] server lang: <none>
2025-11-24T17:32:57.618 [DEBUG] [Thread-194148] [transport.py] [_log()] kex follows: False
2025-11-24T17:32:57.618 [DEBUG] [Thread-194148] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:32:57.618 [DEBUG] [Thread-194148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:32:57.618 [DEBUG] [Thread-194148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:32:57.618 [DEBUG] [Thread-194148] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:32:57.618 [DEBUG] [Thread-194148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:32:57.618 [DEBUG] [Thread-194148] [transport.py] [_log()] Compression: none
2025-11-24T17:32:57.618 [DEBUG] [Thread-194148] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:32:57.673 [DEBUG] [Thread-194148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:32:57.673 [DEBUG] [Thread-194148] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:32:57.673 [DEBUG] [Thread-194148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:32:57.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:32:57.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:32:57.730 [DEBUG] [Thread-194148] [transport.py] [_log()] userauth is OK
2025-11-24T17:32:57.730 [DEBUG] [Thread-194148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:32:57.730 [DEBUG] [Thread-194148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:32:57.730 [DEBUG] [Thread-194148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:32:57.730 [DEBUG] [Thread-194148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:32:57.744 [INFO] [Thread-194148] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:32:57.744 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:32:57.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:32:58.053 [DEBUG] [Thread-194150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:32:58.550 [DEBUG] [Thread-194148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:32:58.551 [DEBUG] [Thread-194148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:32:58.598 [DEBUG] [Thread-194148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:32:58.599 [DEBUG] [Thread-194148] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:32:58.608 [DEBUG] [Thread-194148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:32:58.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:32:58.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-11-24T17:32:58.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:32:58.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:32:58.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:32:58.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:32:58.649 [DEBUG] [Thread-194148] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:32:59.155 [DEBUG] [Thread-194151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:33:13.186 [DEBUG] [Thread-194152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:33:28.251 [DEBUG] [Thread-194153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:33:28.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:33:28.683 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:33:28.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-11-24T17:33:29.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 33, 8), 24.56, 19.12, 0.0, 31.48, 21.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:33:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:33:08
2025-11-24T17:33:29.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:33:29.892 [DEBUG] [Thread-194154] [transport.py] [_log()] starting thread (client mode): 0xd0787b80
2025-11-24T17:33:29.892 [DEBUG] [Thread-194154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:33:29.904 [DEBUG] [Thread-194154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:33:29.904 [INFO] [Thread-194154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:33:29.909 [DEBUG] [Thread-194154] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:33:29.909 [DEBUG] [Thread-194154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:33:29.909 [DEBUG] [Thread-194154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:33:29.909 [DEBUG] [Thread-194154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:33:29.909 [DEBUG] [Thread-194154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:33:29.909 [DEBUG] [Thread-194154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:33:29.909 [DEBUG] [Thread-194154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:33:29.909 [DEBUG] [Thread-194154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:33:29.909 [DEBUG] [Thread-194154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:33:29.909 [DEBUG] [Thread-194154] [transport.py] [_log()] client lang: <none>
2025-11-24T17:33:29.910 [DEBUG] [Thread-194154] [transport.py] [_log()] server lang: <none>
2025-11-24T17:33:29.910 [DEBUG] [Thread-194154] [transport.py] [_log()] kex follows: False
2025-11-24T17:33:29.910 [DEBUG] [Thread-194154] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:33:29.910 [DEBUG] [Thread-194154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:33:29.910 [DEBUG] [Thread-194154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:33:29.910 [DEBUG] [Thread-194154] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:33:29.910 [DEBUG] [Thread-194154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:33:29.911 [DEBUG] [Thread-194154] [transport.py] [_log()] Compression: none
2025-11-24T17:33:29.911 [DEBUG] [Thread-194154] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:33:29.941 [DEBUG] [Thread-194154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:33:29.945 [DEBUG] [Thread-194154] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:33:29.947 [DEBUG] [Thread-194154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:33:29.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:33:29.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:33:29.951 [DEBUG] [Thread-194154] [transport.py] [_log()] userauth is OK
2025-11-24T17:33:29.952 [DEBUG] [Thread-194154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:33:29.952 [DEBUG] [Thread-194154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:33:29.952 [DEBUG] [Thread-194154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:33:29.952 [DEBUG] [Thread-194154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:33:29.979 [INFO] [Thread-194154] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:33:29.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:33:30.574 [DEBUG] [Thread-194154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:33:30.574 [DEBUG] [Thread-194154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:33:30.584 [DEBUG] [Thread-194154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:33:30.615 [DEBUG] [Thread-194154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:33:30.615 [DEBUG] [Thread-194154] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:33:30.618 [DEBUG] [Thread-194154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:33:30.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:33:30.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:33:30.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:33:30.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:33:30.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:33:30.640 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:33:30.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:33:30.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:33:30.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:33:30.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.647968 -999.00  +21.00  19.61     25   +0.60 1 1 1 1 1   887    0 20.13 -19.46 ----- 21.9 19.6 190.4 36.8 24.3 -28.6 24.1 -29.0 25.6 -27.5 25.9 -29.4
2025-11-24T17:33:30.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:33:30.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:33:30.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.647968
2025-11-24T17:33:30.647 [DEBUG] [Thread-194154] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:33:30.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:33:30.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:33:30.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:33:30.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:33:30.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:33:30.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:33:08', tmtdew=24.56, humidity=19.12, cloud=0.0, wind=31.48, temperature=21.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:33:04.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:33:30.730 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:33:30.743 [DEBUG] [Thread-194157] [transport.py] [_log()] starting thread (client mode): 0xd0785a20
2025-11-24T17:33:30.743 [DEBUG] [Thread-194157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:33:30.757 [DEBUG] [Thread-194157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:33:30.757 [INFO] [Thread-194157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:33:30.765 [DEBUG] [Thread-194157] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:33:30.765 [DEBUG] [Thread-194157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:33:30.765 [DEBUG] [Thread-194157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:33:30.766 [DEBUG] [Thread-194157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:33:30.766 [DEBUG] [Thread-194157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:33:30.766 [DEBUG] [Thread-194157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:33:30.766 [DEBUG] [Thread-194157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:33:30.766 [DEBUG] [Thread-194157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:33:30.766 [DEBUG] [Thread-194157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:33:30.766 [DEBUG] [Thread-194157] [transport.py] [_log()] client lang: <none>
2025-11-24T17:33:30.766 [DEBUG] [Thread-194157] [transport.py] [_log()] server lang: <none>
2025-11-24T17:33:30.766 [DEBUG] [Thread-194157] [transport.py] [_log()] kex follows: False
2025-11-24T17:33:30.767 [DEBUG] [Thread-194157] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:33:30.767 [DEBUG] [Thread-194157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:33:30.767 [DEBUG] [Thread-194157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:33:30.767 [DEBUG] [Thread-194157] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:33:30.768 [DEBUG] [Thread-194157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:33:30.768 [DEBUG] [Thread-194157] [transport.py] [_log()] Compression: none
2025-11-24T17:33:30.771 [DEBUG] [Thread-194157] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:33:30.822 [DEBUG] [Thread-194157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:33:30.823 [DEBUG] [Thread-194157] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:33:30.824 [DEBUG] [Thread-194157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:33:30.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:33:30.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:33:30.883 [DEBUG] [Thread-194157] [transport.py] [_log()] userauth is OK
2025-11-24T17:33:30.883 [DEBUG] [Thread-194157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:33:30.884 [DEBUG] [Thread-194157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:33:30.884 [DEBUG] [Thread-194157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:33:30.884 [DEBUG] [Thread-194157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:33:30.903 [INFO] [Thread-194157] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:33:30.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:33:30.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:33:31.798 [DEBUG] [Thread-194157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:33:31.798 [DEBUG] [Thread-194157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:33:31.846 [DEBUG] [Thread-194157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:33:31.846 [DEBUG] [Thread-194157] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:33:31.854 [DEBUG] [Thread-194157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:33:31.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:33:31.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-11-24T17:33:31.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-11-24T17:33:31.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:33:31.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:33:31.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:33:31.896 [DEBUG] [Thread-194157] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:33:43.282 [DEBUG] [Thread-194159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:33:58.358 [DEBUG] [Thread-194160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:33:59.382 [DEBUG] [Thread-194161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:34:01.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:34:01.911 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:34:01.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-11-24T17:34:03.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 33, 41), 24.36, 19.17, 0.0, 25.9, 21.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:34:03.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:33:41
2025-11-24T17:34:03.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:34:03.339 [DEBUG] [Thread-194162] [transport.py] [_log()] starting thread (client mode): 0xd0701e70
2025-11-24T17:34:03.340 [DEBUG] [Thread-194162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:34:03.357 [DEBUG] [Thread-194162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:34:03.357 [INFO] [Thread-194162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:34:03.359 [DEBUG] [Thread-194162] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:34:03.359 [DEBUG] [Thread-194162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:34:03.359 [DEBUG] [Thread-194162] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] client lang: <none>
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] server lang: <none>
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] kex follows: False
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] Compression: none
2025-11-24T17:34:03.360 [DEBUG] [Thread-194162] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:34:03.369 [DEBUG] [Thread-194162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:34:03.370 [DEBUG] [Thread-194162] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:34:03.370 [DEBUG] [Thread-194162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:34:03.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:34:03.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:34:03.372 [DEBUG] [Thread-194162] [transport.py] [_log()] userauth is OK
2025-11-24T17:34:03.372 [DEBUG] [Thread-194162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:34:03.372 [DEBUG] [Thread-194162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:34:03.372 [DEBUG] [Thread-194162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:34:03.372 [DEBUG] [Thread-194162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:34:03.384 [INFO] [Thread-194162] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:34:03.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:34:03.986 [DEBUG] [Thread-194162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:34:03.988 [DEBUG] [Thread-194162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:34:03.989 [DEBUG] [Thread-194162] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:34:04.028 [DEBUG] [Thread-194162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:34:04.028 [DEBUG] [Thread-194162] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:34:04.032 [DEBUG] [Thread-194162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:34:04.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:34:04.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:34:04.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:34:04.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:34:04.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:34:04.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:34:04.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:34:04.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:34:04.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:34:04.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.648316 -999.00  +21.10  15.44     25   +0.60 1 1 1 1 1   887    0 20.10 -20.56 ----- 19.8 15.4 204.7 28.3 24.2 -28.7 24.2 -28.1 25.7 -26.7 25.9 -28.7
2025-11-24T17:34:04.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:34:04.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:34:04.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.648316
2025-11-24T17:34:04.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:34:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:34:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:34:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:34:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:34:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:33:41', tmtdew=24.36, humidity=19.17, cloud=0.0, wind=25.9, temperature=21.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:33:34.502', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:34:04.056 [DEBUG] [Thread-194162] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:34:04.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:34:04.150 [DEBUG] [Thread-194165] [transport.py] [_log()] starting thread (client mode): 0xd07bdfc0
2025-11-24T17:34:04.150 [DEBUG] [Thread-194165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:34:04.164 [DEBUG] [Thread-194165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:34:04.165 [INFO] [Thread-194165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:34:04.172 [DEBUG] [Thread-194165] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:34:04.172 [DEBUG] [Thread-194165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] client lang: <none>
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] server lang: <none>
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] kex follows: False
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:34:04.173 [DEBUG] [Thread-194165] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:34:04.174 [DEBUG] [Thread-194165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:34:04.174 [DEBUG] [Thread-194165] [transport.py] [_log()] Compression: none
2025-11-24T17:34:04.174 [DEBUG] [Thread-194165] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:34:04.231 [DEBUG] [Thread-194165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:34:04.231 [DEBUG] [Thread-194165] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:34:04.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:34:04.232 [DEBUG] [Thread-194165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:34:04.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:34:04.291 [DEBUG] [Thread-194165] [transport.py] [_log()] userauth is OK
2025-11-24T17:34:04.291 [DEBUG] [Thread-194165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:34:04.291 [DEBUG] [Thread-194165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:34:04.292 [DEBUG] [Thread-194165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:34:04.292 [DEBUG] [Thread-194165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:34:04.308 [INFO] [Thread-194165] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:34:04.308 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:34:04.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:34:05.166 [DEBUG] [Thread-194165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:34:05.167 [DEBUG] [Thread-194165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:34:05.214 [DEBUG] [Thread-194165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:34:05.215 [DEBUG] [Thread-194165] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:34:05.223 [DEBUG] [Thread-194165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:34:05.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:34:05.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-11-24T17:34:05.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-11-24T17:34:05.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:34:05.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:34:05.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:34:05.265 [DEBUG] [Thread-194165] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:34:13.398 [DEBUG] [Thread-194167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:34:28.447 [DEBUG] [Thread-194168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:34:35.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:34:35.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:34:35.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:34:36.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 34, 13), 24.29, 19.25, 0.0, 23.68, 21.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:34:36.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:34:13
2025-11-24T17:34:36.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:34:36.330 [DEBUG] [Thread-194169] [transport.py] [_log()] starting thread (client mode): 0xd0784a00
2025-11-24T17:34:36.331 [DEBUG] [Thread-194169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:34:36.345 [DEBUG] [Thread-194169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:34:36.345 [INFO] [Thread-194169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:34:36.347 [DEBUG] [Thread-194169] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] client lang: <none>
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] server lang: <none>
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] kex follows: False
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:34:36.348 [DEBUG] [Thread-194169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:34:36.349 [DEBUG] [Thread-194169] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:34:36.349 [DEBUG] [Thread-194169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:34:36.349 [DEBUG] [Thread-194169] [transport.py] [_log()] Compression: none
2025-11-24T17:34:36.349 [DEBUG] [Thread-194169] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:34:36.373 [DEBUG] [Thread-194169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:34:36.374 [DEBUG] [Thread-194169] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:34:36.375 [DEBUG] [Thread-194169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:34:36.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:34:36.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:34:36.377 [DEBUG] [Thread-194169] [transport.py] [_log()] userauth is OK
2025-11-24T17:34:36.378 [DEBUG] [Thread-194169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:34:36.378 [DEBUG] [Thread-194169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:34:36.378 [DEBUG] [Thread-194169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:34:36.378 [DEBUG] [Thread-194169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:34:36.402 [INFO] [Thread-194169] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:34:36.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:34:36.996 [DEBUG] [Thread-194169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:34:36.997 [DEBUG] [Thread-194169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:34:36.998 [DEBUG] [Thread-194169] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:34:37.038 [DEBUG] [Thread-194169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:34:37.038 [DEBUG] [Thread-194169] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:34:37.041 [DEBUG] [Thread-194169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:34:37.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:34:37.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:34:37.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:34:37.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:34:37.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:34:37.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:34:37.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:34:37.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:34:37.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:34:37.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.648663 -999.00  +21.10  17.59     25   +0.60 1 1 1 1 1   887    0 20.13 -21.91 ----- 18.2 17.6 191.8 27.6 24.2 -28.7 24.2 -29.5 25.8 -26.9 25.9 -28.7
2025-11-24T17:34:37.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:34:37.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:34:37.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.648663
2025-11-24T17:34:37.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:34:37.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:34:37.070 [DEBUG] [Thread-194169] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:34:37.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:34:37.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:34:37.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:34:37.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:34:13', tmtdew=24.29, humidity=19.25, cloud=0.0, wind=23.68, temperature=21.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:34:04.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:34:37.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:34:37.164 [DEBUG] [Thread-194172] [transport.py] [_log()] starting thread (client mode): 0xd07cf8b0
2025-11-24T17:34:37.165 [DEBUG] [Thread-194172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:34:37.179 [DEBUG] [Thread-194172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:34:37.179 [INFO] [Thread-194172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:34:37.186 [DEBUG] [Thread-194172] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] client lang: <none>
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] server lang: <none>
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] kex follows: False
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] Compression: none
2025-11-24T17:34:37.187 [DEBUG] [Thread-194172] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:34:37.246 [DEBUG] [Thread-194172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:34:37.247 [DEBUG] [Thread-194172] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:34:37.248 [DEBUG] [Thread-194172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:34:37.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:34:37.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:34:37.302 [DEBUG] [Thread-194172] [transport.py] [_log()] userauth is OK
2025-11-24T17:34:37.303 [DEBUG] [Thread-194172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:34:37.303 [DEBUG] [Thread-194172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:34:37.303 [DEBUG] [Thread-194172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:34:37.303 [DEBUG] [Thread-194172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:34:37.326 [INFO] [Thread-194172] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:34:37.326 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:34:37.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:34:38.143 [DEBUG] [Thread-194172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:34:38.143 [DEBUG] [Thread-194172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:34:38.191 [DEBUG] [Thread-194172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:34:38.191 [DEBUG] [Thread-194172] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:34:38.199 [DEBUG] [Thread-194172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:34:38.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:34:38.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:34:38.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-11-24T17:34:38.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:34:38.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:34:38.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:34:38.241 [DEBUG] [Thread-194172] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:34:43.477 [DEBUG] [Thread-194174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:34:58.560 [DEBUG] [Thread-194175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:34:59.697 [DEBUG] [Thread-194176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:35:08.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:35:08.254 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:35:08.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-11-24T17:35:09.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 34, 46), 24.12, 19.78, 0.0, 22.0, 21.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:35:09.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:34:46
2025-11-24T17:35:09.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:35:09.393 [DEBUG] [Thread-194177] [transport.py] [_log()] starting thread (client mode): 0xd0784970
2025-11-24T17:35:09.393 [DEBUG] [Thread-194177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:35:09.402 [DEBUG] [Thread-194177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:35:09.402 [INFO] [Thread-194177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] client lang: <none>
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] server lang: <none>
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] kex follows: False
2025-11-24T17:35:09.404 [DEBUG] [Thread-194177] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:35:09.405 [DEBUG] [Thread-194177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:35:09.405 [DEBUG] [Thread-194177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:35:09.405 [DEBUG] [Thread-194177] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:35:09.405 [DEBUG] [Thread-194177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:35:09.405 [DEBUG] [Thread-194177] [transport.py] [_log()] Compression: none
2025-11-24T17:35:09.405 [DEBUG] [Thread-194177] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:35:09.413 [DEBUG] [Thread-194177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:35:09.413 [DEBUG] [Thread-194177] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:35:09.413 [DEBUG] [Thread-194177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:35:09.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:35:09.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:35:09.414 [DEBUG] [Thread-194177] [transport.py] [_log()] userauth is OK
2025-11-24T17:35:09.414 [DEBUG] [Thread-194177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:35:09.414 [DEBUG] [Thread-194177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:35:09.414 [DEBUG] [Thread-194177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:35:09.414 [DEBUG] [Thread-194177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:35:09.424 [INFO] [Thread-194177] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:35:09.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:35:10.052 [DEBUG] [Thread-194177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:35:10.052 [DEBUG] [Thread-194177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:35:10.053 [DEBUG] [Thread-194177] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:35:10.093 [DEBUG] [Thread-194177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:35:10.093 [DEBUG] [Thread-194177] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:35:10.094 [DEBUG] [Thread-194177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:35:10.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:35:10.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:35:10.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:35:10.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:35:10.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:35:10.109 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:35:10.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:35:10.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:35:10.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:35:10.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.649357 -999.00  +21.30  25.35     25   +0.60 1 1 1 1 1   887    0 20.75 -24.73 ----- 26.5 25.4 189.2 30.6 24.3 -29.3 24.1 -32.1 25.7 -27.6 25.9 -29.4
2025-11-24T17:35:10.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:35:10.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:35:10.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.649357
2025-11-24T17:35:10.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:35:10.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:35:10.112 [DEBUG] [Thread-194177] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:35:10.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:35:10.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:35:10.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:35:10.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:34:46', tmtdew=24.12, humidity=19.78, cloud=0.0, wind=22.0, temperature=21.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:35:04.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:35:10.187 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:35:10.199 [DEBUG] [Thread-194180] [transport.py] [_log()] starting thread (client mode): 0xd07858a0
2025-11-24T17:35:10.199 [DEBUG] [Thread-194180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:35:10.213 [DEBUG] [Thread-194180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:35:10.213 [INFO] [Thread-194180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:35:10.220 [DEBUG] [Thread-194180] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:35:10.220 [DEBUG] [Thread-194180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:35:10.220 [DEBUG] [Thread-194180] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:35:10.220 [DEBUG] [Thread-194180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:35:10.220 [DEBUG] [Thread-194180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:35:10.220 [DEBUG] [Thread-194180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:35:10.220 [DEBUG] [Thread-194180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:35:10.220 [DEBUG] [Thread-194180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:35:10.220 [DEBUG] [Thread-194180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:35:10.220 [DEBUG] [Thread-194180] [transport.py] [_log()] client lang: <none>
2025-11-24T17:35:10.221 [DEBUG] [Thread-194180] [transport.py] [_log()] server lang: <none>
2025-11-24T17:35:10.221 [DEBUG] [Thread-194180] [transport.py] [_log()] kex follows: False
2025-11-24T17:35:10.221 [DEBUG] [Thread-194180] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:35:10.221 [DEBUG] [Thread-194180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:35:10.221 [DEBUG] [Thread-194180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:35:10.221 [DEBUG] [Thread-194180] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:35:10.221 [DEBUG] [Thread-194180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:35:10.221 [DEBUG] [Thread-194180] [transport.py] [_log()] Compression: none
2025-11-24T17:35:10.221 [DEBUG] [Thread-194180] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:35:10.277 [DEBUG] [Thread-194180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:35:10.277 [DEBUG] [Thread-194180] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:35:10.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:35:10.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:35:10.278 [DEBUG] [Thread-194180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:35:10.334 [DEBUG] [Thread-194180] [transport.py] [_log()] userauth is OK
2025-11-24T17:35:10.334 [DEBUG] [Thread-194180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:35:10.334 [DEBUG] [Thread-194180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:35:10.334 [DEBUG] [Thread-194180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:35:10.334 [DEBUG] [Thread-194180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:35:10.351 [INFO] [Thread-194180] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:35:10.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:35:10.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:35:11.217 [DEBUG] [Thread-194180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:35:11.217 [DEBUG] [Thread-194180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:35:11.265 [DEBUG] [Thread-194180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:35:11.265 [DEBUG] [Thread-194180] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:35:11.273 [DEBUG] [Thread-194180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:35:11.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:35:11.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-11-24T17:35:11.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-11-24T17:35:11.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:35:11.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:35:11.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:35:11.304 [DEBUG] [Thread-194180] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:35:13.601 [DEBUG] [Thread-194182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:35:28.699 [DEBUG] [Thread-194183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:35:41.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:35:41.328 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:35:41.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-11-24T17:35:42.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 35, 19), 24.27, 19.6, 0.0, 26.62, 21.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:35:42.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:35:19
2025-11-24T17:35:42.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:35:42.652 [DEBUG] [Thread-194184] [transport.py] [_log()] starting thread (client mode): 0xd3134d60
2025-11-24T17:35:42.652 [DEBUG] [Thread-194184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:35:42.669 [DEBUG] [Thread-194184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:35:42.669 [INFO] [Thread-194184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:35:42.672 [DEBUG] [Thread-194184] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:35:42.672 [DEBUG] [Thread-194184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] client lang: <none>
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] server lang: <none>
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] kex follows: False
2025-11-24T17:35:42.673 [DEBUG] [Thread-194184] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:35:42.674 [DEBUG] [Thread-194184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:35:42.674 [DEBUG] [Thread-194184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:35:42.674 [DEBUG] [Thread-194184] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:35:42.674 [DEBUG] [Thread-194184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:35:42.674 [DEBUG] [Thread-194184] [transport.py] [_log()] Compression: none
2025-11-24T17:35:42.674 [DEBUG] [Thread-194184] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:35:42.693 [DEBUG] [Thread-194184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:35:42.696 [DEBUG] [Thread-194184] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:35:42.697 [DEBUG] [Thread-194184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:35:42.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:35:42.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:35:42.701 [DEBUG] [Thread-194184] [transport.py] [_log()] userauth is OK
2025-11-24T17:35:42.701 [DEBUG] [Thread-194184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:35:42.702 [DEBUG] [Thread-194184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:35:42.702 [DEBUG] [Thread-194184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:35:42.702 [DEBUG] [Thread-194184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:35:42.720 [INFO] [Thread-194184] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:35:42.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:35:43.321 [DEBUG] [Thread-194184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:35:43.321 [DEBUG] [Thread-194184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:35:43.322 [DEBUG] [Thread-194184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:35:43.361 [DEBUG] [Thread-194184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:35:43.362 [DEBUG] [Thread-194184] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:35:43.376 [DEBUG] [Thread-194184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:35:43.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:35:43.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:35:43.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:35:43.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:35:43.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:35:43.393 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:35:43.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:35:43.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:35:43.394 [DEBUG] [Thread-194184] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:35:43.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:35:43.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.649704 -999.00  +21.00  27.19     25   +0.60 1 1 1 1 1   887    0 19.74 -27.87 ----- 26.5 27.2 181.4 31.1 24.2 -29.1 24.1 -28.6 25.6 -27.8 25.9 -29.7
2025-11-24T17:35:43.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:35:43.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:35:43.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.649704
2025-11-24T17:35:43.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:35:43.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:35:43.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:35:43.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:35:43.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:35:43.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:35:19', tmtdew=24.27, humidity=19.6, cloud=0.0, wind=26.62, temperature=21.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:35:34.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:35:43.489 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:35:43.501 [DEBUG] [Thread-194187] [transport.py] [_log()] starting thread (client mode): 0xd3136ad0
2025-11-24T17:35:43.501 [DEBUG] [Thread-194187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:35:43.516 [DEBUG] [Thread-194187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:35:43.516 [INFO] [Thread-194187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:35:43.523 [DEBUG] [Thread-194187] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:35:43.523 [DEBUG] [Thread-194187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:35:43.524 [DEBUG] [Thread-194187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:35:43.524 [DEBUG] [Thread-194187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:35:43.524 [DEBUG] [Thread-194187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:35:43.524 [DEBUG] [Thread-194187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:35:43.524 [DEBUG] [Thread-194187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:35:43.524 [DEBUG] [Thread-194187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:35:43.524 [DEBUG] [Thread-194187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:35:43.524 [DEBUG] [Thread-194187] [transport.py] [_log()] client lang: <none>
2025-11-24T17:35:43.524 [DEBUG] [Thread-194187] [transport.py] [_log()] server lang: <none>
2025-11-24T17:35:43.524 [DEBUG] [Thread-194187] [transport.py] [_log()] kex follows: False
2025-11-24T17:35:43.525 [DEBUG] [Thread-194187] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:35:43.525 [DEBUG] [Thread-194187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:35:43.525 [DEBUG] [Thread-194187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:35:43.525 [DEBUG] [Thread-194187] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:35:43.525 [DEBUG] [Thread-194187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:35:43.525 [DEBUG] [Thread-194187] [transport.py] [_log()] Compression: none
2025-11-24T17:35:43.525 [DEBUG] [Thread-194187] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:35:43.582 [DEBUG] [Thread-194187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:35:43.583 [DEBUG] [Thread-194187] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:35:43.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:35:43.584 [DEBUG] [Thread-194187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:35:43.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:35:43.639 [DEBUG] [Thread-194187] [transport.py] [_log()] userauth is OK
2025-11-24T17:35:43.639 [DEBUG] [Thread-194187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:35:43.639 [DEBUG] [Thread-194187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:35:43.640 [DEBUG] [Thread-194187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:35:43.640 [DEBUG] [Thread-194187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:35:43.664 [INFO] [Thread-194187] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:35:43.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:35:43.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:35:43.731 [DEBUG] [Thread-194189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:35:44.480 [DEBUG] [Thread-194187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:35:44.480 [DEBUG] [Thread-194187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:35:44.531 [DEBUG] [Thread-194187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:35:44.531 [DEBUG] [Thread-194187] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:35:44.539 [DEBUG] [Thread-194187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:35:44.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:35:44.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-11-24T17:35:44.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:35:44.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:35:44.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:35:44.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:35:44.571 [DEBUG] [Thread-194187] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:35:58.793 [DEBUG] [Thread-194190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:36:00.008 [DEBUG] [Thread-194191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:36:13.829 [DEBUG] [Thread-194192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:36:14.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:36:14.595 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:36:14.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-11-24T17:36:15.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 35, 51), 24.18, 19.6, 0.0, 29.68, 21.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:36:15.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:35:51
2025-11-24T17:36:16.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:36:16.193 [DEBUG] [Thread-194193] [transport.py] [_log()] starting thread (client mode): 0xd07862c0
2025-11-24T17:36:16.193 [DEBUG] [Thread-194193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:36:16.214 [DEBUG] [Thread-194193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:36:16.214 [INFO] [Thread-194193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] client lang: <none>
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] server lang: <none>
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] kex follows: False
2025-11-24T17:36:16.218 [DEBUG] [Thread-194193] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:36:16.219 [DEBUG] [Thread-194193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:36:16.219 [DEBUG] [Thread-194193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:36:16.219 [DEBUG] [Thread-194193] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:36:16.219 [DEBUG] [Thread-194193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:36:16.219 [DEBUG] [Thread-194193] [transport.py] [_log()] Compression: none
2025-11-24T17:36:16.219 [DEBUG] [Thread-194193] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:36:16.250 [DEBUG] [Thread-194193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:36:16.253 [DEBUG] [Thread-194193] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:36:16.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:36:16.256 [DEBUG] [Thread-194193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:36:16.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:36:16.293 [DEBUG] [Thread-194193] [transport.py] [_log()] userauth is OK
2025-11-24T17:36:16.293 [DEBUG] [Thread-194193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:36:16.293 [DEBUG] [Thread-194193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:36:16.294 [DEBUG] [Thread-194193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:36:16.294 [DEBUG] [Thread-194193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:36:16.320 [INFO] [Thread-194193] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:36:16.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:36:16.928 [DEBUG] [Thread-194193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:36:16.938 [DEBUG] [Thread-194193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:36:16.939 [DEBUG] [Thread-194193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:36:16.970 [DEBUG] [Thread-194193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:36:16.970 [DEBUG] [Thread-194193] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:36:16.973 [DEBUG] [Thread-194193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:36:16.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:36:16.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:36:16.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:36:16.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:36:16.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:36:16.995 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:36:16.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:36:16.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:36:16.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:36:16.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.650052 -999.00  +20.90  29.82     25   +0.60 1 1 1 1 1   887    0 20.30 -31.32 ----- 28.6 29.8 198.4 37.5 24.1 -30.0 24.0 -30.9 25.6 -28.7 25.8 -30.0
2025-11-24T17:36:16.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:36:16.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:36:16.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.650052
2025-11-24T17:36:17.003 [DEBUG] [Thread-194193] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:36:17.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:36:17.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:36:17.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:36:17.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:36:17.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:36:17.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:35:51', tmtdew=24.18, humidity=19.6, cloud=0.0, wind=29.68, temperature=21.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:36:04.493', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:36:17.099 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:36:17.112 [DEBUG] [Thread-194196] [transport.py] [_log()] starting thread (client mode): 0xd07cd270
2025-11-24T17:36:17.112 [DEBUG] [Thread-194196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:36:17.128 [DEBUG] [Thread-194196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:36:17.128 [INFO] [Thread-194196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:36:17.135 [DEBUG] [Thread-194196] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:36:17.136 [DEBUG] [Thread-194196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:36:17.136 [DEBUG] [Thread-194196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:36:17.136 [DEBUG] [Thread-194196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:36:17.136 [DEBUG] [Thread-194196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:36:17.136 [DEBUG] [Thread-194196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:36:17.136 [DEBUG] [Thread-194196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:36:17.137 [DEBUG] [Thread-194196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:36:17.137 [DEBUG] [Thread-194196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:36:17.137 [DEBUG] [Thread-194196] [transport.py] [_log()] client lang: <none>
2025-11-24T17:36:17.137 [DEBUG] [Thread-194196] [transport.py] [_log()] server lang: <none>
2025-11-24T17:36:17.138 [DEBUG] [Thread-194196] [transport.py] [_log()] kex follows: False
2025-11-24T17:36:17.138 [DEBUG] [Thread-194196] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:36:17.138 [DEBUG] [Thread-194196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:36:17.138 [DEBUG] [Thread-194196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:36:17.138 [DEBUG] [Thread-194196] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:36:17.138 [DEBUG] [Thread-194196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:36:17.138 [DEBUG] [Thread-194196] [transport.py] [_log()] Compression: none
2025-11-24T17:36:17.138 [DEBUG] [Thread-194196] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:36:17.195 [DEBUG] [Thread-194196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:36:17.196 [DEBUG] [Thread-194196] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:36:17.197 [DEBUG] [Thread-194196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:36:17.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:36:17.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:36:17.255 [DEBUG] [Thread-194196] [transport.py] [_log()] userauth is OK
2025-11-24T17:36:17.255 [DEBUG] [Thread-194196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:36:17.258 [DEBUG] [Thread-194196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:36:17.259 [DEBUG] [Thread-194196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:36:17.259 [DEBUG] [Thread-194196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:36:17.283 [INFO] [Thread-194196] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:36:17.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:36:17.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:36:18.116 [DEBUG] [Thread-194196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:36:18.117 [DEBUG] [Thread-194196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:36:18.165 [DEBUG] [Thread-194196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:36:18.165 [DEBUG] [Thread-194196] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:36:18.174 [DEBUG] [Thread-194196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:36:18.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:36:18.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-11-24T17:36:18.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-11-24T17:36:18.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:36:18.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:36:18.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:36:18.211 [DEBUG] [Thread-194196] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:36:28.861 [DEBUG] [Thread-194198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:36:43.952 [DEBUG] [Thread-194199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:36:48.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:36:48.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:36:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:36:49.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 36, 24), 24.06, 19.74, 0.0, 29.36, 21.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:36:49.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:36:24
2025-11-24T17:36:49.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:36:49.335 [DEBUG] [Thread-194200] [transport.py] [_log()] starting thread (client mode): 0xd7bc5b10
2025-11-24T17:36:49.336 [DEBUG] [Thread-194200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:36:49.349 [DEBUG] [Thread-194200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:36:49.349 [INFO] [Thread-194200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:36:49.354 [DEBUG] [Thread-194200] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:36:49.354 [DEBUG] [Thread-194200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:36:49.354 [DEBUG] [Thread-194200] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:36:49.354 [DEBUG] [Thread-194200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:36:49.354 [DEBUG] [Thread-194200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:36:49.354 [DEBUG] [Thread-194200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:36:49.354 [DEBUG] [Thread-194200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:36:49.354 [DEBUG] [Thread-194200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:36:49.354 [DEBUG] [Thread-194200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:36:49.354 [DEBUG] [Thread-194200] [transport.py] [_log()] client lang: <none>
2025-11-24T17:36:49.355 [DEBUG] [Thread-194200] [transport.py] [_log()] server lang: <none>
2025-11-24T17:36:49.355 [DEBUG] [Thread-194200] [transport.py] [_log()] kex follows: False
2025-11-24T17:36:49.355 [DEBUG] [Thread-194200] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:36:49.355 [DEBUG] [Thread-194200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:36:49.356 [DEBUG] [Thread-194200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:36:49.356 [DEBUG] [Thread-194200] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:36:49.356 [DEBUG] [Thread-194200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:36:49.356 [DEBUG] [Thread-194200] [transport.py] [_log()] Compression: none
2025-11-24T17:36:49.356 [DEBUG] [Thread-194200] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:36:49.386 [DEBUG] [Thread-194200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:36:49.387 [DEBUG] [Thread-194200] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:36:49.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:36:49.388 [DEBUG] [Thread-194200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:36:49.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:36:49.390 [DEBUG] [Thread-194200] [transport.py] [_log()] userauth is OK
2025-11-24T17:36:49.390 [DEBUG] [Thread-194200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:36:49.390 [DEBUG] [Thread-194200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:36:49.390 [DEBUG] [Thread-194200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:36:49.391 [DEBUG] [Thread-194200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:36:49.414 [INFO] [Thread-194200] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:36:49.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:36:50.009 [DEBUG] [Thread-194200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:36:50.009 [DEBUG] [Thread-194200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:36:50.009 [DEBUG] [Thread-194200] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:36:50.050 [DEBUG] [Thread-194200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:36:50.050 [DEBUG] [Thread-194200] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:36:50.052 [DEBUG] [Thread-194200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:36:50.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:36:50.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:36:50.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:36:50.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:36:50.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:36:50.079 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:36:50.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:36:50.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:36:50.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:36:50.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.650399 -999.00  +20.90  20.23     26   +0.60 1 1 1 1 1   887    0 19.98 -33.30 ----- 21.9 20.2 184.0 34.2 24.1 -28.8 23.9 -31.3 25.6 -26.9 25.8 -28.7
2025-11-24T17:36:50.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:36:50.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:36:50.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.650399
2025-11-24T17:36:50.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:36:50.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:36:50.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:36:50.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:36:50.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:36:50.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:36:24', tmtdew=24.06, humidity=19.74, cloud=0.0, wind=29.36, temperature=21.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:36:34.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:36:50.086 [DEBUG] [Thread-194200] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:36:50.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:36:50.178 [DEBUG] [Thread-194203] [transport.py] [_log()] starting thread (client mode): 0xd07cdb40
2025-11-24T17:36:50.178 [DEBUG] [Thread-194203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:36:50.193 [DEBUG] [Thread-194203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:36:50.193 [INFO] [Thread-194203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:36:50.200 [DEBUG] [Thread-194203] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:36:50.200 [DEBUG] [Thread-194203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:36:50.200 [DEBUG] [Thread-194203] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:36:50.200 [DEBUG] [Thread-194203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] client lang: <none>
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] server lang: <none>
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] kex follows: False
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] Compression: none
2025-11-24T17:36:50.201 [DEBUG] [Thread-194203] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:36:50.261 [DEBUG] [Thread-194203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:36:50.261 [DEBUG] [Thread-194203] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:36:50.261 [DEBUG] [Thread-194203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:36:50.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:36:50.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:36:50.318 [DEBUG] [Thread-194203] [transport.py] [_log()] userauth is OK
2025-11-24T17:36:50.318 [DEBUG] [Thread-194203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:36:50.318 [DEBUG] [Thread-194203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:36:50.318 [DEBUG] [Thread-194203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:36:50.318 [DEBUG] [Thread-194203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:36:50.332 [INFO] [Thread-194203] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:36:50.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:36:50.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:36:51.183 [DEBUG] [Thread-194203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:36:51.183 [DEBUG] [Thread-194203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:36:51.232 [DEBUG] [Thread-194203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:36:51.232 [DEBUG] [Thread-194203] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:36:51.241 [DEBUG] [Thread-194203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:36:51.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:36:51.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-11-24T17:36:51.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-11-24T17:36:51.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:36:51.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:36:51.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:36:51.291 [DEBUG] [Thread-194203] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:36:58.985 [DEBUG] [Thread-194205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:37:00.318 [DEBUG] [Thread-194206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:37:14.062 [DEBUG] [Thread-194207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:37:21.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:37:21.303 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:37:21.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-11-24T17:37:22.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 36, 57), 23.89, 19.88, 0.0, 27.68, 21.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:37:22.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:36:57
2025-11-24T17:37:22.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:37:22.510 [DEBUG] [Thread-194208] [transport.py] [_log()] starting thread (client mode): 0xd7bc6a70
2025-11-24T17:37:22.510 [DEBUG] [Thread-194208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:37:22.522 [DEBUG] [Thread-194208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:37:22.523 [INFO] [Thread-194208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:37:22.527 [DEBUG] [Thread-194208] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] client lang: <none>
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] server lang: <none>
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] kex follows: False
2025-11-24T17:37:22.528 [DEBUG] [Thread-194208] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:37:22.529 [DEBUG] [Thread-194208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:37:22.529 [DEBUG] [Thread-194208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:37:22.529 [DEBUG] [Thread-194208] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:37:22.530 [DEBUG] [Thread-194208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:37:22.530 [DEBUG] [Thread-194208] [transport.py] [_log()] Compression: none
2025-11-24T17:37:22.530 [DEBUG] [Thread-194208] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:37:22.557 [DEBUG] [Thread-194208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:37:22.562 [DEBUG] [Thread-194208] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:37:22.564 [DEBUG] [Thread-194208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:37:22.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:37:22.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:37:22.570 [DEBUG] [Thread-194208] [transport.py] [_log()] userauth is OK
2025-11-24T17:37:22.570 [DEBUG] [Thread-194208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:37:22.570 [DEBUG] [Thread-194208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:37:22.570 [DEBUG] [Thread-194208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:37:22.570 [DEBUG] [Thread-194208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:37:22.607 [INFO] [Thread-194208] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:37:22.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:37:23.169 [DEBUG] [Thread-194208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:37:23.169 [DEBUG] [Thread-194208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:37:23.180 [DEBUG] [Thread-194208] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:37:23.211 [DEBUG] [Thread-194208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:37:23.211 [DEBUG] [Thread-194208] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:37:23.214 [DEBUG] [Thread-194208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:37:23.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:37:23.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:37:23.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:37:23.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:37:23.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:37:23.239 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:37:23.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:37:23.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:37:23.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:37:23.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.650746 -999.00  +20.80  22.44     26   +0.60 1 1 1 1 1   887    0 19.36 -36.69 ----- 19.7 22.4 196.2 27.8 24.1 -28.5 24.0 -29.7 25.4 -27.0 25.7 -29.2
2025-11-24T17:37:23.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:37:23.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:37:23.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.650746
2025-11-24T17:37:23.248 [DEBUG] [Thread-194208] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:37:23.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:37:23.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:37:23.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:37:23.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:37:23.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:37:23.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:36:57', tmtdew=23.89, humidity=19.88, cloud=0.0, wind=27.68, temperature=21.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:37:04.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:37:23.350 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:37:23.363 [DEBUG] [Thread-194211] [transport.py] [_log()] starting thread (client mode): 0xd0784820
2025-11-24T17:37:23.363 [DEBUG] [Thread-194211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:37:23.381 [DEBUG] [Thread-194211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:37:23.381 [INFO] [Thread-194211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] client lang: <none>
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] server lang: <none>
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] kex follows: False
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:37:23.392 [DEBUG] [Thread-194211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:37:23.393 [DEBUG] [Thread-194211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:37:23.393 [DEBUG] [Thread-194211] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:37:23.393 [DEBUG] [Thread-194211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:37:23.393 [DEBUG] [Thread-194211] [transport.py] [_log()] Compression: none
2025-11-24T17:37:23.393 [DEBUG] [Thread-194211] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:37:23.458 [DEBUG] [Thread-194211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:37:23.459 [DEBUG] [Thread-194211] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:37:23.460 [DEBUG] [Thread-194211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:37:23.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:37:23.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:37:23.514 [DEBUG] [Thread-194211] [transport.py] [_log()] userauth is OK
2025-11-24T17:37:23.514 [DEBUG] [Thread-194211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:37:23.515 [DEBUG] [Thread-194211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:37:23.515 [DEBUG] [Thread-194211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:37:23.515 [DEBUG] [Thread-194211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:37:23.533 [INFO] [Thread-194211] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:37:23.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:37:23.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:37:24.386 [DEBUG] [Thread-194211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:37:24.386 [DEBUG] [Thread-194211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:37:24.434 [DEBUG] [Thread-194211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:37:24.434 [DEBUG] [Thread-194211] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:37:24.442 [DEBUG] [Thread-194211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:37:24.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:37:24.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-11-24T17:37:24.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-11-24T17:37:24.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:37:24.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:37:24.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:37:24.484 [DEBUG] [Thread-194211] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:37:29.132 [DEBUG] [Thread-194213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:37:44.212 [DEBUG] [Thread-194214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:37:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:37:54.489 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:37:54.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-11-24T17:37:55.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 37, 29), 23.89, 19.9, 0.0, 25.81, 21.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:37:55.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:37:29
2025-11-24T17:37:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:37:55.586 [DEBUG] [Thread-194215] [transport.py] [_log()] starting thread (client mode): 0xd07ce320
2025-11-24T17:37:55.587 [DEBUG] [Thread-194215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:37:55.594 [DEBUG] [Thread-194215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:37:55.594 [INFO] [Thread-194215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:37:55.597 [DEBUG] [Thread-194215] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:37:55.597 [DEBUG] [Thread-194215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:37:55.597 [DEBUG] [Thread-194215] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:37:55.597 [DEBUG] [Thread-194215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:37:55.597 [DEBUG] [Thread-194215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:37:55.597 [DEBUG] [Thread-194215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] client lang: <none>
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] server lang: <none>
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] kex follows: False
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] Compression: none
2025-11-24T17:37:55.598 [DEBUG] [Thread-194215] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:37:55.625 [DEBUG] [Thread-194215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:37:55.629 [DEBUG] [Thread-194215] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:37:55.631 [DEBUG] [Thread-194215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:37:55.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:37:55.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:37:55.669 [DEBUG] [Thread-194215] [transport.py] [_log()] userauth is OK
2025-11-24T17:37:55.670 [DEBUG] [Thread-194215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:37:55.670 [DEBUG] [Thread-194215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:37:55.670 [DEBUG] [Thread-194215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:37:55.670 [DEBUG] [Thread-194215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:37:55.709 [INFO] [Thread-194215] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:37:55.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:37:56.254 [DEBUG] [Thread-194215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:37:56.255 [DEBUG] [Thread-194215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:37:56.256 [DEBUG] [Thread-194215] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:37:56.295 [DEBUG] [Thread-194215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:37:56.295 [DEBUG] [Thread-194215] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:37:56.299 [DEBUG] [Thread-194215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:37:56.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:37:56.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:37:56.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:37:56.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:37:56.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:37:56.322 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:37:56.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:37:56.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:37:56.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:37:56.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.651093 -999.00  +21.00  12.52     25   +0.70 1 1 1 1 1   887    0 19.51 -40.61 ----- 13.2 12.5 202.6 24.3 24.1 -28.2 24.1 -28.1 25.6 -26.0 25.8 -27.6
2025-11-24T17:37:56.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:37:56.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:37:56.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.651093
2025-11-24T17:37:56.330 [DEBUG] [Thread-194215] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:37:56.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:37:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:37:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:37:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:37:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:37:56.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:37:29', tmtdew=23.89, humidity=19.9, cloud=0.0, wind=25.81, temperature=21.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:37:34.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:37:56.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:37:56.443 [DEBUG] [Thread-194218] [transport.py] [_log()] starting thread (client mode): 0xd3162740
2025-11-24T17:37:56.444 [DEBUG] [Thread-194218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:37:56.457 [DEBUG] [Thread-194218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:37:56.457 [INFO] [Thread-194218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:37:56.467 [DEBUG] [Thread-194218] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:37:56.467 [DEBUG] [Thread-194218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:37:56.467 [DEBUG] [Thread-194218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:37:56.467 [DEBUG] [Thread-194218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:37:56.467 [DEBUG] [Thread-194218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:37:56.467 [DEBUG] [Thread-194218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:37:56.467 [DEBUG] [Thread-194218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:37:56.467 [DEBUG] [Thread-194218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:37:56.467 [DEBUG] [Thread-194218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:37:56.467 [DEBUG] [Thread-194218] [transport.py] [_log()] client lang: <none>
2025-11-24T17:37:56.468 [DEBUG] [Thread-194218] [transport.py] [_log()] server lang: <none>
2025-11-24T17:37:56.468 [DEBUG] [Thread-194218] [transport.py] [_log()] kex follows: False
2025-11-24T17:37:56.468 [DEBUG] [Thread-194218] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:37:56.468 [DEBUG] [Thread-194218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:37:56.468 [DEBUG] [Thread-194218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:37:56.468 [DEBUG] [Thread-194218] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:37:56.468 [DEBUG] [Thread-194218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:37:56.468 [DEBUG] [Thread-194218] [transport.py] [_log()] Compression: none
2025-11-24T17:37:56.468 [DEBUG] [Thread-194218] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:37:56.523 [DEBUG] [Thread-194218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:37:56.523 [DEBUG] [Thread-194218] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:37:56.524 [DEBUG] [Thread-194218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:37:56.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:37:56.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:37:56.578 [DEBUG] [Thread-194218] [transport.py] [_log()] userauth is OK
2025-11-24T17:37:56.579 [DEBUG] [Thread-194218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:37:56.579 [DEBUG] [Thread-194218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:37:56.579 [DEBUG] [Thread-194218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:37:56.579 [DEBUG] [Thread-194218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:37:56.600 [INFO] [Thread-194218] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:37:56.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:37:56.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:37:57.403 [DEBUG] [Thread-194218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:37:57.404 [DEBUG] [Thread-194218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:37:57.451 [DEBUG] [Thread-194218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:37:57.451 [DEBUG] [Thread-194218] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:37:57.459 [DEBUG] [Thread-194218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:37:57.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:37:57.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-11-24T17:37:57.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-11-24T17:37:57.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:37:57.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:37:57.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:37:57.501 [DEBUG] [Thread-194218] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:37:59.238 [DEBUG] [Thread-194220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:38:00.665 [DEBUG] [Thread-194221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:38:14.302 [DEBUG] [Thread-194222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:38:27.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:38:27.542 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:38:27.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:38:28.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 38, 2), 23.92, 19.87, 0.0, 25.16, 21.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:38:28.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:38:02
2025-11-24T17:38:28.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:38:28.793 [DEBUG] [Thread-194223] [transport.py] [_log()] starting thread (client mode): 0xd3162650
2025-11-24T17:38:28.793 [DEBUG] [Thread-194223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:38:28.795 [DEBUG] [Thread-194223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:38:28.795 [INFO] [Thread-194223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:38:28.798 [DEBUG] [Thread-194223] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] client lang: <none>
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] server lang: <none>
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] kex follows: False
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:38:28.799 [DEBUG] [Thread-194223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:38:28.800 [DEBUG] [Thread-194223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:38:28.800 [DEBUG] [Thread-194223] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:38:28.800 [DEBUG] [Thread-194223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:38:28.800 [DEBUG] [Thread-194223] [transport.py] [_log()] Compression: none
2025-11-24T17:38:28.800 [DEBUG] [Thread-194223] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:38:28.824 [DEBUG] [Thread-194223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:38:28.827 [DEBUG] [Thread-194223] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:38:28.828 [DEBUG] [Thread-194223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:38:28.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:38:28.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:38:28.831 [DEBUG] [Thread-194223] [transport.py] [_log()] userauth is OK
2025-11-24T17:38:28.831 [DEBUG] [Thread-194223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:38:28.832 [DEBUG] [Thread-194223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:38:28.832 [DEBUG] [Thread-194223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:38:28.832 [DEBUG] [Thread-194223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:38:28.849 [INFO] [Thread-194223] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:38:28.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:38:29.358 [DEBUG] [Thread-194225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:38:29.469 [DEBUG] [Thread-194223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:38:29.469 [DEBUG] [Thread-194223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:38:29.469 [DEBUG] [Thread-194223] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:38:29.510 [DEBUG] [Thread-194223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:38:29.510 [DEBUG] [Thread-194223] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:38:29.512 [DEBUG] [Thread-194223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:38:29.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:38:29.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:38:29.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:38:29.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:38:29.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:38:29.526 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:38:29.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:38:29.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:38:29.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:38:29.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.651440 -999.00  +21.20  20.62     25   +0.80 1 1 1 1 1   887    0 19.78 -37.75 ----- 19.6 20.6 204.8 28.0 24.1 -28.7 24.2 -28.4 25.6 -27.1 25.8 -29.0
2025-11-24T17:38:29.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:38:29.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:38:29.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.651440
2025-11-24T17:38:29.533 [DEBUG] [Thread-194223] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:38:29.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:38:29.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:38:29.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:38:29.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:38:29.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:38:29.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:38:02', tmtdew=23.92, humidity=19.87, cloud=0.0, wind=25.16, temperature=21.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:38:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:38:29.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:38:29.633 [DEBUG] [Thread-194227] [transport.py] [_log()] starting thread (client mode): 0xd07cd540
2025-11-24T17:38:29.633 [DEBUG] [Thread-194227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:38:29.647 [DEBUG] [Thread-194227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:38:29.647 [INFO] [Thread-194227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:38:29.654 [DEBUG] [Thread-194227] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:38:29.654 [DEBUG] [Thread-194227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:38:29.654 [DEBUG] [Thread-194227] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:38:29.654 [DEBUG] [Thread-194227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:38:29.654 [DEBUG] [Thread-194227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] client lang: <none>
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] server lang: <none>
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] kex follows: False
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] Compression: none
2025-11-24T17:38:29.655 [DEBUG] [Thread-194227] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:38:29.712 [DEBUG] [Thread-194227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:38:29.712 [DEBUG] [Thread-194227] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:38:29.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:38:29.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:38:29.713 [DEBUG] [Thread-194227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:38:29.770 [DEBUG] [Thread-194227] [transport.py] [_log()] userauth is OK
2025-11-24T17:38:29.770 [DEBUG] [Thread-194227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:38:29.770 [DEBUG] [Thread-194227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:38:29.770 [DEBUG] [Thread-194227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:38:29.770 [DEBUG] [Thread-194227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:38:29.784 [INFO] [Thread-194227] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:38:29.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:38:29.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:38:30.563 [DEBUG] [Thread-194227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:38:30.564 [DEBUG] [Thread-194227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:38:30.611 [DEBUG] [Thread-194227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:38:30.611 [DEBUG] [Thread-194227] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:38:30.619 [DEBUG] [Thread-194227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:38:30.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:38:30.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-11-24T17:38:30.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-11-24T17:38:30.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:38:30.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:38:30.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:38:30.653 [DEBUG] [Thread-194227] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:38:44.402 [DEBUG] [Thread-194229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:38:59.483 [DEBUG] [Thread-194230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:39:00.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:39:00.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:39:00.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-11-24T17:39:00.922 [DEBUG] [Thread-194231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:39:01.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 38, 35), 24.24, 19.33, 0.0, 31.92, 21.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:39:01.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:38:35
2025-11-24T17:39:02.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:39:02.161 [DEBUG] [Thread-194232] [transport.py] [_log()] starting thread (client mode): 0xd31efb20
2025-11-24T17:39:02.161 [DEBUG] [Thread-194232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:39:02.180 [DEBUG] [Thread-194232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:39:02.180 [INFO] [Thread-194232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:39:02.183 [DEBUG] [Thread-194232] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:39:02.183 [DEBUG] [Thread-194232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:39:02.183 [DEBUG] [Thread-194232] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:39:02.183 [DEBUG] [Thread-194232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:39:02.183 [DEBUG] [Thread-194232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:39:02.183 [DEBUG] [Thread-194232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:39:02.183 [DEBUG] [Thread-194232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:39:02.183 [DEBUG] [Thread-194232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] client lang: <none>
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] server lang: <none>
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] kex follows: False
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] Compression: none
2025-11-24T17:39:02.184 [DEBUG] [Thread-194232] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:39:02.196 [DEBUG] [Thread-194232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:39:02.196 [DEBUG] [Thread-194232] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:39:02.196 [DEBUG] [Thread-194232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:39:02.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:39:02.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:39:02.197 [DEBUG] [Thread-194232] [transport.py] [_log()] userauth is OK
2025-11-24T17:39:02.197 [DEBUG] [Thread-194232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:39:02.197 [DEBUG] [Thread-194232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:39:02.197 [DEBUG] [Thread-194232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:39:02.197 [DEBUG] [Thread-194232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:39:02.206 [INFO] [Thread-194232] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:39:02.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:39:02.816 [DEBUG] [Thread-194232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:39:02.816 [DEBUG] [Thread-194232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:39:02.816 [DEBUG] [Thread-194232] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:39:02.857 [DEBUG] [Thread-194232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:39:02.857 [DEBUG] [Thread-194232] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:39:02.859 [DEBUG] [Thread-194232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:39:02.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:39:02.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:39:02.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:39:02.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:39:02.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:39:02.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:39:02.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:39:02.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:39:02.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:39:02.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.651788 -999.00  +21.30  29.23     25   +0.80 1 1 1 1 1   887    0 19.99 -41.01 ----- 28.7 29.2 187.0 40.4 24.2 -29.1 24.1 -30.1 25.7 -26.6 25.9 -28.7
2025-11-24T17:39:02.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:39:02.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:39:02.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.651788
2025-11-24T17:39:02.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:39:02.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:39:02.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:39:02.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:39:02.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:39:02.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:38:35', tmtdew=24.24, humidity=19.33, cloud=0.0, wind=31.92, temperature=21.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:38:34.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:39:02.880 [DEBUG] [Thread-194232] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:39:02.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:39:02.965 [DEBUG] [Thread-194235] [transport.py] [_log()] starting thread (client mode): 0xd07cd8a0
2025-11-24T17:39:02.965 [DEBUG] [Thread-194235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:39:02.981 [DEBUG] [Thread-194235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:39:02.981 [INFO] [Thread-194235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:39:02.988 [DEBUG] [Thread-194235] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] client lang: <none>
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] server lang: <none>
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] kex follows: False
2025-11-24T17:39:02.989 [DEBUG] [Thread-194235] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:39:02.990 [DEBUG] [Thread-194235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:39:02.990 [DEBUG] [Thread-194235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:39:02.990 [DEBUG] [Thread-194235] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:39:02.990 [DEBUG] [Thread-194235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:39:02.990 [DEBUG] [Thread-194235] [transport.py] [_log()] Compression: none
2025-11-24T17:39:02.990 [DEBUG] [Thread-194235] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:39:03.045 [DEBUG] [Thread-194235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:39:03.045 [DEBUG] [Thread-194235] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:39:03.045 [DEBUG] [Thread-194235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:39:03.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:39:03.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:39:03.102 [DEBUG] [Thread-194235] [transport.py] [_log()] userauth is OK
2025-11-24T17:39:03.102 [DEBUG] [Thread-194235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:39:03.102 [DEBUG] [Thread-194235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:39:03.102 [DEBUG] [Thread-194235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:39:03.102 [DEBUG] [Thread-194235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:39:03.116 [INFO] [Thread-194235] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:39:03.117 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:39:03.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:39:03.936 [DEBUG] [Thread-194235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:39:03.937 [DEBUG] [Thread-194235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:39:03.984 [DEBUG] [Thread-194235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:39:03.984 [DEBUG] [Thread-194235] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:39:03.992 [DEBUG] [Thread-194235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:39:04.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:39: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-11-24T17:39:04.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-11-24T17:39:04.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:39:04.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:39:04.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:39:04.024 [DEBUG] [Thread-194235] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:39:14.507 [DEBUG] [Thread-194237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:39:29.562 [DEBUG] [Thread-194238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:39:34.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:39:34.048 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:39:34.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-11-24T17:39:35.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 39, 7), 24.31, 19.25, 0.0, 35.45, 21.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:39:35.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:39:07
2025-11-24T17:39:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:39:35.635 [DEBUG] [Thread-194239] [transport.py] [_log()] starting thread (client mode): 0xd3134430
2025-11-24T17:39:35.635 [DEBUG] [Thread-194239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:39:35.650 [DEBUG] [Thread-194239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:39:35.650 [INFO] [Thread-194239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:39:35.653 [DEBUG] [Thread-194239] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] client lang: <none>
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] server lang: <none>
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] kex follows: False
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:39:35.654 [DEBUG] [Thread-194239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:39:35.655 [DEBUG] [Thread-194239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:39:35.655 [DEBUG] [Thread-194239] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:39:35.655 [DEBUG] [Thread-194239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:39:35.655 [DEBUG] [Thread-194239] [transport.py] [_log()] Compression: none
2025-11-24T17:39:35.655 [DEBUG] [Thread-194239] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:39:35.683 [DEBUG] [Thread-194239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:39:35.687 [DEBUG] [Thread-194239] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:39:35.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:39:35.691 [DEBUG] [Thread-194239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:39:35.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:39:35.694 [DEBUG] [Thread-194239] [transport.py] [_log()] userauth is OK
2025-11-24T17:39:35.694 [DEBUG] [Thread-194239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:39:35.694 [DEBUG] [Thread-194239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:39:35.694 [DEBUG] [Thread-194239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:39:35.695 [DEBUG] [Thread-194239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:39:35.722 [INFO] [Thread-194239] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:39:35.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:39:36.303 [DEBUG] [Thread-194239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:39:36.303 [DEBUG] [Thread-194239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:39:36.305 [DEBUG] [Thread-194239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:39:36.343 [DEBUG] [Thread-194239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:39:36.344 [DEBUG] [Thread-194239] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:39:36.347 [DEBUG] [Thread-194239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:39:36.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:39:36.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:39:36.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:39:36.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:39:36.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:39:36.372 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:39:36.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:39:36.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:39:36.374 [DEBUG] [Thread-194239] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:39:36.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:39:36.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.652135 -999.00  +21.00  22.79     25   +0.70 1 1 1 1 1   887    0 19.51 -37.25 ----- 23.5 22.8 187.0 39.8 24.1 -28.9 24.0 -28.9 25.4 -28.8 25.7 -29.8
2025-11-24T17:39:36.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:39:36.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:39:36.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.652135
2025-11-24T17:39:36.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:39:36.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:39:36.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:39:36.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:39:36.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:39:36.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:39:07', tmtdew=24.31, humidity=19.25, cloud=0.0, wind=35.45, temperature=21.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:39:04.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:39:36.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:39:36.477 [DEBUG] [Thread-194242] [transport.py] [_log()] starting thread (client mode): 0xd3134640
2025-11-24T17:39:36.477 [DEBUG] [Thread-194242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:39:36.493 [DEBUG] [Thread-194242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:39:36.493 [INFO] [Thread-194242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:39:36.500 [DEBUG] [Thread-194242] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:39:36.501 [DEBUG] [Thread-194242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:39:36.501 [DEBUG] [Thread-194242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:39:36.501 [DEBUG] [Thread-194242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:39:36.501 [DEBUG] [Thread-194242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:39:36.501 [DEBUG] [Thread-194242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:39:36.501 [DEBUG] [Thread-194242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:39:36.501 [DEBUG] [Thread-194242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:39:36.501 [DEBUG] [Thread-194242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:39:36.502 [DEBUG] [Thread-194242] [transport.py] [_log()] client lang: <none>
2025-11-24T17:39:36.502 [DEBUG] [Thread-194242] [transport.py] [_log()] server lang: <none>
2025-11-24T17:39:36.502 [DEBUG] [Thread-194242] [transport.py] [_log()] kex follows: False
2025-11-24T17:39:36.502 [DEBUG] [Thread-194242] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:39:36.502 [DEBUG] [Thread-194242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:39:36.502 [DEBUG] [Thread-194242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:39:36.502 [DEBUG] [Thread-194242] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:39:36.502 [DEBUG] [Thread-194242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:39:36.502 [DEBUG] [Thread-194242] [transport.py] [_log()] Compression: none
2025-11-24T17:39:36.502 [DEBUG] [Thread-194242] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:39:36.558 [DEBUG] [Thread-194242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:39:36.559 [DEBUG] [Thread-194242] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:39:36.560 [DEBUG] [Thread-194242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:39:36.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:39:36.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:39:36.614 [DEBUG] [Thread-194242] [transport.py] [_log()] userauth is OK
2025-11-24T17:39:36.615 [DEBUG] [Thread-194242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:39:36.615 [DEBUG] [Thread-194242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:39:36.615 [DEBUG] [Thread-194242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:39:36.615 [DEBUG] [Thread-194242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:39:36.634 [INFO] [Thread-194242] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:39:36.635 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:39:36.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:39:37.493 [DEBUG] [Thread-194242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:39:37.493 [DEBUG] [Thread-194242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:39:37.541 [DEBUG] [Thread-194242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:39:37.541 [DEBUG] [Thread-194242] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:39:37.549 [DEBUG] [Thread-194242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:39:37.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:39:37.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-11-24T17:39:37.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-11-24T17:39:37.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:39:37.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:39:37.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:39:37.590 [DEBUG] [Thread-194242] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:39:44.600 [DEBUG] [Thread-194244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:39:59.697 [DEBUG] [Thread-194245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:40:01.181 [DEBUG] [Thread-194246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:40:07.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:40:07.624 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:40:07.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-11-24T17:40:08.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 39, 40), 23.95, 19.83, 0.0, 36.36, 21.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:40:08.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:39:40
2025-11-24T17:40:09.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:40:09.216 [DEBUG] [Thread-194247] [transport.py] [_log()] starting thread (client mode): 0xd073b1f0
2025-11-24T17:40:09.217 [DEBUG] [Thread-194247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:40:09.229 [DEBUG] [Thread-194247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:40:09.229 [INFO] [Thread-194247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] client lang: <none>
2025-11-24T17:40:09.233 [DEBUG] [Thread-194247] [transport.py] [_log()] server lang: <none>
2025-11-24T17:40:09.234 [DEBUG] [Thread-194247] [transport.py] [_log()] kex follows: False
2025-11-24T17:40:09.234 [DEBUG] [Thread-194247] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:40:09.234 [DEBUG] [Thread-194247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:40:09.234 [DEBUG] [Thread-194247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:40:09.235 [DEBUG] [Thread-194247] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:40:09.235 [DEBUG] [Thread-194247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:40:09.235 [DEBUG] [Thread-194247] [transport.py] [_log()] Compression: none
2025-11-24T17:40:09.235 [DEBUG] [Thread-194247] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:40:09.263 [DEBUG] [Thread-194247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:40:09.268 [DEBUG] [Thread-194247] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:40:09.270 [DEBUG] [Thread-194247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:40:09.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:40:09.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:40:09.274 [DEBUG] [Thread-194247] [transport.py] [_log()] userauth is OK
2025-11-24T17:40:09.275 [DEBUG] [Thread-194247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:40:09.275 [DEBUG] [Thread-194247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:40:09.275 [DEBUG] [Thread-194247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:40:09.275 [DEBUG] [Thread-194247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:40:09.301 [INFO] [Thread-194247] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:40:09.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:40:09.864 [DEBUG] [Thread-194247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:40:09.865 [DEBUG] [Thread-194247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:40:09.866 [DEBUG] [Thread-194247] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:40:09.906 [DEBUG] [Thread-194247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:40:09.906 [DEBUG] [Thread-194247] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:40:09.909 [DEBUG] [Thread-194247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:40:09.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:40:09.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:40:09.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:40:09.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:40:09.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:40:09.933 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:40:09.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:40:09.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:40:09.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:40:09.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.652482 -999.00  +20.90  27.48     25   +0.60 1 1 1 1 1   887    0 19.54 -44.53 ----- 24.6 27.5 184.2 31.9 24.0 -29.2 23.9 -30.5 25.5 -28.0 25.7 -30.0
2025-11-24T17:40:09.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:40:09.935 [DEBUG] [Thread-194247] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:40:09.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:40:09.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.652482
2025-11-24T17:40:09.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:40:09.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:40:09.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:40:09.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:40:09.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:40:09.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:39:40', tmtdew=23.95, humidity=19.83, cloud=0.0, wind=36.36, temperature=21.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:39:34.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:40:10.030 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:40:10.042 [DEBUG] [Thread-194250] [transport.py] [_log()] starting thread (client mode): 0xd0702b30
2025-11-24T17:40:10.043 [DEBUG] [Thread-194250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:40:10.057 [DEBUG] [Thread-194250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:40:10.058 [INFO] [Thread-194250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:40:10.065 [DEBUG] [Thread-194250] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:40:10.065 [DEBUG] [Thread-194250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:40:10.065 [DEBUG] [Thread-194250] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:40:10.066 [DEBUG] [Thread-194250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:40:10.066 [DEBUG] [Thread-194250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:40:10.066 [DEBUG] [Thread-194250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:40:10.066 [DEBUG] [Thread-194250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:40:10.066 [DEBUG] [Thread-194250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:40:10.066 [DEBUG] [Thread-194250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:40:10.066 [DEBUG] [Thread-194250] [transport.py] [_log()] client lang: <none>
2025-11-24T17:40:10.066 [DEBUG] [Thread-194250] [transport.py] [_log()] server lang: <none>
2025-11-24T17:40:10.067 [DEBUG] [Thread-194250] [transport.py] [_log()] kex follows: False
2025-11-24T17:40:10.067 [DEBUG] [Thread-194250] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:40:10.067 [DEBUG] [Thread-194250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:40:10.067 [DEBUG] [Thread-194250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:40:10.067 [DEBUG] [Thread-194250] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:40:10.067 [DEBUG] [Thread-194250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:40:10.067 [DEBUG] [Thread-194250] [transport.py] [_log()] Compression: none
2025-11-24T17:40:10.067 [DEBUG] [Thread-194250] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:40:10.122 [DEBUG] [Thread-194250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:40:10.123 [DEBUG] [Thread-194250] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:40:10.123 [DEBUG] [Thread-194250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:40:10.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:40:10.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:40:10.178 [DEBUG] [Thread-194250] [transport.py] [_log()] userauth is OK
2025-11-24T17:40:10.178 [DEBUG] [Thread-194250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:40:10.178 [DEBUG] [Thread-194250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:40:10.178 [DEBUG] [Thread-194250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:40:10.178 [DEBUG] [Thread-194250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:40:10.200 [INFO] [Thread-194250] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:40:10.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:40:10.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:40:11.060 [DEBUG] [Thread-194250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:40:11.060 [DEBUG] [Thread-194250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:40:11.108 [DEBUG] [Thread-194250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:40:11.108 [DEBUG] [Thread-194250] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:40:11.117 [DEBUG] [Thread-194250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:40:11.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:40:11.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:40:11.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-11-24T17:40:11.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:40:11.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:40:11.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:40:11.372 [DEBUG] [Thread-194250] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:40:14.724 [DEBUG] [Thread-194252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:40:29.790 [DEBUG] [Thread-194253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:40:41.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:40:41.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:40:41.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:40:42.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 40, 12), 23.95, 19.8, 0.0, 30.01, 21.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:40:42.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:40:12
2025-11-24T17:40:42.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:40:42.554 [DEBUG] [Thread-194254] [transport.py] [_log()] starting thread (client mode): 0xd7bc6b00
2025-11-24T17:40:42.554 [DEBUG] [Thread-194254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:40:42.570 [DEBUG] [Thread-194254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:40:42.571 [INFO] [Thread-194254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:40:42.573 [DEBUG] [Thread-194254] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:40:42.573 [DEBUG] [Thread-194254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:40:42.573 [DEBUG] [Thread-194254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] client lang: <none>
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] server lang: <none>
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] kex follows: False
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:40:42.574 [DEBUG] [Thread-194254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:40:42.575 [DEBUG] [Thread-194254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:40:42.575 [DEBUG] [Thread-194254] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:40:42.575 [DEBUG] [Thread-194254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:40:42.575 [DEBUG] [Thread-194254] [transport.py] [_log()] Compression: none
2025-11-24T17:40:42.575 [DEBUG] [Thread-194254] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:40:42.597 [DEBUG] [Thread-194254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:40:42.601 [DEBUG] [Thread-194254] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:40:42.603 [DEBUG] [Thread-194254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:40:42.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:40:42.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:40:42.607 [DEBUG] [Thread-194254] [transport.py] [_log()] userauth is OK
2025-11-24T17:40:42.607 [DEBUG] [Thread-194254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:40:42.607 [DEBUG] [Thread-194254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:40:42.607 [DEBUG] [Thread-194254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:40:42.607 [DEBUG] [Thread-194254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:40:42.626 [INFO] [Thread-194254] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:40:42.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:40:43.234 [DEBUG] [Thread-194254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:40:43.234 [DEBUG] [Thread-194254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:40:43.235 [DEBUG] [Thread-194254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:40:43.275 [DEBUG] [Thread-194254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:40:43.276 [DEBUG] [Thread-194254] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:40:43.279 [DEBUG] [Thread-194254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:40:43.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:40:43.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:40:43.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:40:43.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:40:43.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:40:43.299 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:40:43.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:40:43.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:40:43.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:40:43.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.653176 -999.00  +20.70  26.18     26   +0.60 1 1 1 1 1   887    0 19.21 -48.66 ----- 23.5 26.2 187.2 31.8 23.9 -29.2 23.7 -30.5 25.4 -27.2 25.7 -28.9
2025-11-24T17:40:43.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:40:43.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:40:43.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.653176
2025-11-24T17:40:43.306 [DEBUG] [Thread-194254] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:40:43.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:40:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:40:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:40:43.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:40:43.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:40:43.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:40:12', tmtdew=23.95, humidity=19.8, cloud=0.0, wind=30.01, temperature=21.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:40:34.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:40: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-11-24T17:40:43.414 [DEBUG] [Thread-194257] [transport.py] [_log()] starting thread (client mode): 0xd7bc7340
2025-11-24T17:40:43.414 [DEBUG] [Thread-194257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:40:43.429 [DEBUG] [Thread-194257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:40:43.430 [INFO] [Thread-194257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:40:43.437 [DEBUG] [Thread-194257] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:40:43.437 [DEBUG] [Thread-194257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:40:43.438 [DEBUG] [Thread-194257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:40:43.438 [DEBUG] [Thread-194257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:40:43.438 [DEBUG] [Thread-194257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:40:43.438 [DEBUG] [Thread-194257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:40:43.438 [DEBUG] [Thread-194257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:40:43.438 [DEBUG] [Thread-194257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:40:43.438 [DEBUG] [Thread-194257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:40:43.438 [DEBUG] [Thread-194257] [transport.py] [_log()] client lang: <none>
2025-11-24T17:40:43.438 [DEBUG] [Thread-194257] [transport.py] [_log()] server lang: <none>
2025-11-24T17:40:43.439 [DEBUG] [Thread-194257] [transport.py] [_log()] kex follows: False
2025-11-24T17:40:43.439 [DEBUG] [Thread-194257] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:40:43.439 [DEBUG] [Thread-194257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:40:43.439 [DEBUG] [Thread-194257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:40:43.439 [DEBUG] [Thread-194257] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:40:43.439 [DEBUG] [Thread-194257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:40:43.439 [DEBUG] [Thread-194257] [transport.py] [_log()] Compression: none
2025-11-24T17:40:43.439 [DEBUG] [Thread-194257] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:40:43.494 [DEBUG] [Thread-194257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:40:43.495 [DEBUG] [Thread-194257] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:40:43.495 [DEBUG] [Thread-194257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:40:43.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:40:43.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:40:43.550 [DEBUG] [Thread-194257] [transport.py] [_log()] userauth is OK
2025-11-24T17:40:43.550 [DEBUG] [Thread-194257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:40:43.550 [DEBUG] [Thread-194257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:40:43.550 [DEBUG] [Thread-194257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:40:43.550 [DEBUG] [Thread-194257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:40:43.568 [INFO] [Thread-194257] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:40:43.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:40:43.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:40:44.381 [DEBUG] [Thread-194257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:40:44.381 [DEBUG] [Thread-194257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:40:44.429 [DEBUG] [Thread-194257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:40:44.429 [DEBUG] [Thread-194257] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:40:44.437 [DEBUG] [Thread-194257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:40:44.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:40:44.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-11-24T17:40:44.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-11-24T17:40:44.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:40:44.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:40:44.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:40:44.479 [DEBUG] [Thread-194257] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:40:44.819 [DEBUG] [Thread-194259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:40:59.871 [DEBUG] [Thread-194260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:41:01.410 [DEBUG] [Thread-194261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:41:14.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:41:14.493 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:41:14.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:41:14.898 [DEBUG] [Thread-194262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:41:15.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 40, 45), 23.92, 19.8, 0.0, 28.25, 21.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:41:15.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:40:45
2025-11-24T17:41:15.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:41:15.700 [DEBUG] [Thread-194263] [transport.py] [_log()] starting thread (client mode): 0xd31612d0
2025-11-24T17:41:15.700 [DEBUG] [Thread-194263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:41:15.715 [DEBUG] [Thread-194263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:41:15.716 [INFO] [Thread-194263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:41:15.720 [DEBUG] [Thread-194263] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] client lang: <none>
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] server lang: <none>
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] kex follows: False
2025-11-24T17:41:15.721 [DEBUG] [Thread-194263] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:41:15.722 [DEBUG] [Thread-194263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:41:15.722 [DEBUG] [Thread-194263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:41:15.722 [DEBUG] [Thread-194263] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:41:15.722 [DEBUG] [Thread-194263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:41:15.722 [DEBUG] [Thread-194263] [transport.py] [_log()] Compression: none
2025-11-24T17:41:15.722 [DEBUG] [Thread-194263] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:41:15.751 [DEBUG] [Thread-194263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:41:15.755 [DEBUG] [Thread-194263] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:41:15.757 [DEBUG] [Thread-194263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:41:15.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:41:15.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:41:15.762 [DEBUG] [Thread-194263] [transport.py] [_log()] userauth is OK
2025-11-24T17:41:15.762 [DEBUG] [Thread-194263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:41:15.762 [DEBUG] [Thread-194263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:41:15.762 [DEBUG] [Thread-194263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:41:15.762 [DEBUG] [Thread-194263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:41:15.790 [INFO] [Thread-194263] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:41:15.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:41:16.342 [DEBUG] [Thread-194263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:41:16.342 [DEBUG] [Thread-194263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:41:16.352 [DEBUG] [Thread-194263] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:41:16.383 [DEBUG] [Thread-194263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:41:16.383 [DEBUG] [Thread-194263] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:41:16.388 [DEBUG] [Thread-194263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:41:16.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:41:16.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:41:16.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:41:16.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:41:16.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:41:16.415 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:41:16.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:41:16.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:41:16.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:41:16.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.653524 -999.00  +20.70  15.48     26   +0.70 1 1 1 1 1   887    0 19.45 -46.91 ----- 12.7 15.5 193.1 26.6 23.9 -28.8 23.9 -28.0 25.4 -27.3 25.6 -29.2
2025-11-24T17:41:16.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:41:16.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:41:16.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.653524
2025-11-24T17:41:16.423 [DEBUG] [Thread-194263] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:41:16.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:41:16.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:41:16.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:41:16.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:41:16.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:41:16.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:40:45', tmtdew=23.92, humidity=19.8, cloud=0.0, wind=28.25, temperature=21.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:41:04.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:41:16.523 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:41:16.535 [DEBUG] [Thread-194266] [transport.py] [_log()] starting thread (client mode): 0xd07389a0
2025-11-24T17:41:16.535 [DEBUG] [Thread-194266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:41:16.552 [DEBUG] [Thread-194266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:41:16.553 [INFO] [Thread-194266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:41:16.562 [DEBUG] [Thread-194266] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:41:16.562 [DEBUG] [Thread-194266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] client lang: <none>
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] server lang: <none>
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] kex follows: False
2025-11-24T17:41:16.563 [DEBUG] [Thread-194266] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:41:16.564 [DEBUG] [Thread-194266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:41:16.564 [DEBUG] [Thread-194266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:41:16.564 [DEBUG] [Thread-194266] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:41:16.564 [DEBUG] [Thread-194266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:41:16.564 [DEBUG] [Thread-194266] [transport.py] [_log()] Compression: none
2025-11-24T17:41:16.564 [DEBUG] [Thread-194266] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:41:16.625 [DEBUG] [Thread-194266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:41:16.625 [DEBUG] [Thread-194266] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:41:16.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:41:16.626 [DEBUG] [Thread-194266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:41:16.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:41:16.685 [DEBUG] [Thread-194266] [transport.py] [_log()] userauth is OK
2025-11-24T17:41:16.685 [DEBUG] [Thread-194266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:41:16.686 [DEBUG] [Thread-194266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:41:16.686 [DEBUG] [Thread-194266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:41:16.686 [DEBUG] [Thread-194266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:41:16.708 [INFO] [Thread-194266] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:41:16.709 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:41:16.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:41:17.550 [DEBUG] [Thread-194266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:41:17.550 [DEBUG] [Thread-194266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:41:17.599 [DEBUG] [Thread-194266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:41:17.599 [DEBUG] [Thread-194266] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:41:17.607 [DEBUG] [Thread-194266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:41:17.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:41:17.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-11-24T17:41:17.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-11-24T17:41:17.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:41:17.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:41:17.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:41:17.648 [DEBUG] [Thread-194266] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:41:29.937 [DEBUG] [Thread-194268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:41:45.040 [DEBUG] [Thread-194269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:41:47.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:41:47.683 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:41:47.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-11-24T17:41:48.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 41, 18), 23.9, 19.82, 0.0, 28.28, 21.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:41:48.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:41:18
2025-11-24T17:41:48.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:41:48.820 [DEBUG] [Thread-194270] [transport.py] [_log()] starting thread (client mode): 0xd31ef100
2025-11-24T17:41:48.821 [DEBUG] [Thread-194270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:41:48.833 [DEBUG] [Thread-194270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:41:48.834 [INFO] [Thread-194270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:41:48.837 [DEBUG] [Thread-194270] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:41:48.837 [DEBUG] [Thread-194270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:41:48.837 [DEBUG] [Thread-194270] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:41:48.837 [DEBUG] [Thread-194270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:41:48.837 [DEBUG] [Thread-194270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:41:48.837 [DEBUG] [Thread-194270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:41:48.837 [DEBUG] [Thread-194270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:41:48.837 [DEBUG] [Thread-194270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] client lang: <none>
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] server lang: <none>
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] kex follows: False
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] Compression: none
2025-11-24T17:41:48.838 [DEBUG] [Thread-194270] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:41:48.869 [DEBUG] [Thread-194270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:41:48.874 [DEBUG] [Thread-194270] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:41:48.876 [DEBUG] [Thread-194270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:41:48.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:41:48.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:41:48.881 [DEBUG] [Thread-194270] [transport.py] [_log()] userauth is OK
2025-11-24T17:41:48.881 [DEBUG] [Thread-194270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:41:48.881 [DEBUG] [Thread-194270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:41:48.881 [DEBUG] [Thread-194270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:41:48.881 [DEBUG] [Thread-194270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:41:48.908 [INFO] [Thread-194270] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:41:48.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:41:49.484 [DEBUG] [Thread-194270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:41:49.484 [DEBUG] [Thread-194270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:41:49.494 [DEBUG] [Thread-194270] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:41:49.525 [DEBUG] [Thread-194270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:41:49.525 [DEBUG] [Thread-194270] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:41:49.527 [DEBUG] [Thread-194270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:41:49.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:41:49.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:41:49.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:41:49.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:41:49.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:41:49.546 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:41:49.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:41:49.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:41:49.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:41:49.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.653871 -999.00  +20.90  15.15     26   +0.60 1 1 1 1 1   887    0 19.43 -46.45 ----- 16.4 15.2 197.6 24.7 24.0 -28.6 24.0 -28.5 25.5 -26.7 25.8 -28.7
2025-11-24T17:41:49.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:41:49.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:41:49.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.653871
2025-11-24T17:41:49.552 [DEBUG] [Thread-194270] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:41:49.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:41:49.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:41:49.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:41:49.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:41:49.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:41:49.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:41:18', tmtdew=23.9, humidity=19.82, cloud=0.0, wind=28.28, temperature=21.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:41:34.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:41:49.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:41:49.649 [DEBUG] [Thread-194273] [transport.py] [_log()] starting thread (client mode): 0xd31efa60
2025-11-24T17:41:49.649 [DEBUG] [Thread-194273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:41:49.664 [DEBUG] [Thread-194273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:41:49.664 [INFO] [Thread-194273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] client lang: <none>
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] server lang: <none>
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] kex follows: False
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] Compression: none
2025-11-24T17:41:49.672 [DEBUG] [Thread-194273] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:41:49.729 [DEBUG] [Thread-194273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:41:49.729 [DEBUG] [Thread-194273] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:41:49.730 [DEBUG] [Thread-194273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:41:49.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:41:49.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:41:49.786 [DEBUG] [Thread-194273] [transport.py] [_log()] userauth is OK
2025-11-24T17:41:49.786 [DEBUG] [Thread-194273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:41:49.786 [DEBUG] [Thread-194273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:41:49.786 [DEBUG] [Thread-194273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:41:49.786 [DEBUG] [Thread-194273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:41:49.800 [INFO] [Thread-194273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:41:49.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:41:49.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:41:50.646 [DEBUG] [Thread-194273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:41:50.646 [DEBUG] [Thread-194273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:41:50.695 [DEBUG] [Thread-194273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:41:50.695 [DEBUG] [Thread-194273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:41:50.705 [DEBUG] [Thread-194273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:41:50.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:41:50.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:41:50.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-11-24T17:41:50.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:41:50.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:41:50.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:41:50.745 [DEBUG] [Thread-194273] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:42:00.068 [DEBUG] [Thread-194275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:42:01.811 [DEBUG] [Thread-194276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:42:15.130 [DEBUG] [Thread-194277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:42:20.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:42:20.803 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:42:20.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-11-24T17:42:21.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 41, 51), 23.88, 19.88, 0.0, 26.47, 21.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:42:21.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:41:51
2025-11-24T17:42:21.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:42:21.894 [DEBUG] [Thread-194278] [transport.py] [_log()] starting thread (client mode): 0xd3137f10
2025-11-24T17:42:21.895 [DEBUG] [Thread-194278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:42:21.909 [DEBUG] [Thread-194278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:42:21.910 [INFO] [Thread-194278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] client lang: <none>
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] server lang: <none>
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] kex follows: False
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] Compression: none
2025-11-24T17:42:21.914 [DEBUG] [Thread-194278] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:42:21.931 [DEBUG] [Thread-194278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:42:21.934 [DEBUG] [Thread-194278] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:42:21.935 [DEBUG] [Thread-194278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:42:21.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:42:21.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:42:21.938 [DEBUG] [Thread-194278] [transport.py] [_log()] userauth is OK
2025-11-24T17:42:21.938 [DEBUG] [Thread-194278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:42:21.938 [DEBUG] [Thread-194278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:42:21.938 [DEBUG] [Thread-194278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:42:21.938 [DEBUG] [Thread-194278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:42:21.949 [INFO] [Thread-194278] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:42:21.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:42:22.515 [DEBUG] [Thread-194278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:42:22.515 [DEBUG] [Thread-194278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:42:22.515 [DEBUG] [Thread-194278] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:42:22.556 [DEBUG] [Thread-194278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:42:22.556 [DEBUG] [Thread-194278] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:42:22.561 [DEBUG] [Thread-194278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:42:22.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:42:22.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:42:22.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:42:22.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:42:22.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:42:22.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:42:22.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:42:22.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:42:22.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:42:22.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.654218 -999.00  +20.90  23.78     26   +0.60 1 1 1 1 1   887    0 19.14 -45.78 ----- 20.7 23.8 173.8 34.4 23.9 -29.5 23.9 -29.0 25.4 -28.1 25.7 -29.3
2025-11-24T17:42:22.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:42:22.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:42:22.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.654218
2025-11-24T17:42:22.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:42:22.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:42:22.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:42:22.600 [DEBUG] [Thread-194278] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:42:22.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:42:22.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:42:22.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:41:51', tmtdew=23.88, humidity=19.88, cloud=0.0, wind=26.47, temperature=21.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:42:04.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:42:22.676 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:42:22.689 [DEBUG] [Thread-194281] [transport.py] [_log()] starting thread (client mode): 0xd3163580
2025-11-24T17:42:22.689 [DEBUG] [Thread-194281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:42:22.704 [DEBUG] [Thread-194281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:42:22.704 [INFO] [Thread-194281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] client lang: <none>
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] server lang: <none>
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] kex follows: False
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] Compression: none
2025-11-24T17:42:22.712 [DEBUG] [Thread-194281] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:42:22.769 [DEBUG] [Thread-194281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:42:22.769 [DEBUG] [Thread-194281] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:42:22.769 [DEBUG] [Thread-194281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:42:22.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:42:22.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:42:22.826 [DEBUG] [Thread-194281] [transport.py] [_log()] userauth is OK
2025-11-24T17:42:22.826 [DEBUG] [Thread-194281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:42:22.826 [DEBUG] [Thread-194281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:42:22.826 [DEBUG] [Thread-194281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:42:22.826 [DEBUG] [Thread-194281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:42:22.839 [INFO] [Thread-194281] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:42:22.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:42:22.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:42:23.665 [DEBUG] [Thread-194281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:42:23.665 [DEBUG] [Thread-194281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:42:23.713 [DEBUG] [Thread-194281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:42:23.713 [DEBUG] [Thread-194281] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:42:23.721 [DEBUG] [Thread-194281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:42:23.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:42:23.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-11-24T17:42:23.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-11-24T17:42:23.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:42:23.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:42:23.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:42:23.754 [DEBUG] [Thread-194281] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:42:30.172 [DEBUG] [Thread-194283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:42:45.220 [DEBUG] [Thread-194284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:42:53.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:42:53.785 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:42:53.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:42:54.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 42, 23), 23.83, 19.97, 0.0, 28.62, 21.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:42:54.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:42:23
2025-11-24T17:42:54.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:42:54.884 [DEBUG] [Thread-194285] [transport.py] [_log()] starting thread (client mode): 0xd31632b0
2025-11-24T17:42:54.884 [DEBUG] [Thread-194285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:42:54.902 [DEBUG] [Thread-194285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:42:54.902 [INFO] [Thread-194285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:42:54.905 [DEBUG] [Thread-194285] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:42:54.905 [DEBUG] [Thread-194285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] client lang: <none>
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] server lang: <none>
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] kex follows: False
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:42:54.906 [DEBUG] [Thread-194285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:42:54.907 [DEBUG] [Thread-194285] [transport.py] [_log()] Compression: none
2025-11-24T17:42:54.907 [DEBUG] [Thread-194285] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:42:54.924 [DEBUG] [Thread-194285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:42:54.925 [DEBUG] [Thread-194285] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:42:54.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:42:54.926 [DEBUG] [Thread-194285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:42:54.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:42:54.969 [DEBUG] [Thread-194285] [transport.py] [_log()] userauth is OK
2025-11-24T17:42:54.969 [DEBUG] [Thread-194285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:42:54.969 [DEBUG] [Thread-194285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:42:54.969 [DEBUG] [Thread-194285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:42:54.969 [DEBUG] [Thread-194285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:42:55.001 [INFO] [Thread-194285] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:42:55.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:42:55.581 [DEBUG] [Thread-194285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:42:55.581 [DEBUG] [Thread-194285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:42:55.581 [DEBUG] [Thread-194285] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:42:55.622 [DEBUG] [Thread-194285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:42:55.622 [DEBUG] [Thread-194285] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:42:55.625 [DEBUG] [Thread-194285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:42:55.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:42:55.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:42:55.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:42:55.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:42:55.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:42:55.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:42:55.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:42:55.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:42:55.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:42:55.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.654565 -999.00  +20.70  23.39     26   +0.60 1 1 1 1 1   887    0 19.12 -47.48 ----- 24.5 23.4 167.6 36.2 23.9 -28.2 23.9 -29.0 25.3 -27.7 25.6 -29.1
2025-11-24T17:42:55.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:42:55.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:42:55.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.654565
2025-11-24T17:42:55.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:42:55.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:42:55.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:42:55.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:42:55.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:42:55.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:42:23', tmtdew=23.83, humidity=19.97, cloud=0.0, wind=28.62, temperature=21.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:42:34.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:42:55.652 [DEBUG] [Thread-194285] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:42:55.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:42:55.737 [DEBUG] [Thread-194288] [transport.py] [_log()] starting thread (client mode): 0xd3137130
2025-11-24T17:42:55.737 [DEBUG] [Thread-194288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:42:55.753 [DEBUG] [Thread-194288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:42:55.753 [INFO] [Thread-194288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:42:55.760 [DEBUG] [Thread-194288] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] client lang: <none>
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] server lang: <none>
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] kex follows: False
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] Compression: none
2025-11-24T17:42:55.761 [DEBUG] [Thread-194288] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:42:55.816 [DEBUG] [Thread-194288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:42:55.816 [DEBUG] [Thread-194288] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:42:55.816 [DEBUG] [Thread-194288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:42:55.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:42:55.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:42:55.874 [DEBUG] [Thread-194288] [transport.py] [_log()] userauth is OK
2025-11-24T17:42:55.874 [DEBUG] [Thread-194288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:42:55.874 [DEBUG] [Thread-194288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:42:55.874 [DEBUG] [Thread-194288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:42:55.874 [DEBUG] [Thread-194288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:42:55.888 [INFO] [Thread-194288] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:42:55.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:42:55.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:42:56.726 [DEBUG] [Thread-194288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:42:56.726 [DEBUG] [Thread-194288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:42:56.774 [DEBUG] [Thread-194288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:42:56.774 [DEBUG] [Thread-194288] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:42:56.782 [DEBUG] [Thread-194288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:42:56.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:42:56.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:42:56.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-11-24T17:42:56.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:42:56.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:42:56.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:42:56.815 [DEBUG] [Thread-194288] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:43:00.250 [DEBUG] [Thread-194290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:43:02.048 [DEBUG] [Thread-194291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:43:15.297 [DEBUG] [Thread-194292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:43:26.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:43:26.835 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:43:26.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-11-24T17:43:27.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 42, 56), 23.87, 19.92, 0.0, 23.64, 21.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:43:27.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:42:56
2025-11-24T17:43:27.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:43:28.117 [DEBUG] [Thread-194293] [transport.py] [_log()] starting thread (client mode): 0xd3135de0
2025-11-24T17:43:28.118 [DEBUG] [Thread-194293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:43:28.130 [DEBUG] [Thread-194293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:43:28.130 [INFO] [Thread-194293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] client lang: <none>
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] server lang: <none>
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] kex follows: False
2025-11-24T17:43:28.135 [DEBUG] [Thread-194293] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:43:28.136 [DEBUG] [Thread-194293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:43:28.136 [DEBUG] [Thread-194293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:43:28.136 [DEBUG] [Thread-194293] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:43:28.136 [DEBUG] [Thread-194293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:43:28.136 [DEBUG] [Thread-194293] [transport.py] [_log()] Compression: none
2025-11-24T17:43:28.136 [DEBUG] [Thread-194293] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:43:28.170 [DEBUG] [Thread-194293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:43:28.174 [DEBUG] [Thread-194293] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:43:28.176 [DEBUG] [Thread-194293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:43:28.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:43:28.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:43:28.179 [DEBUG] [Thread-194293] [transport.py] [_log()] userauth is OK
2025-11-24T17:43:28.180 [DEBUG] [Thread-194293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:43:28.180 [DEBUG] [Thread-194293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:43:28.180 [DEBUG] [Thread-194293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:43:28.180 [DEBUG] [Thread-194293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:43:28.217 [INFO] [Thread-194293] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:43:28.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:43:28.831 [DEBUG] [Thread-194293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:43:28.831 [DEBUG] [Thread-194293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:43:28.832 [DEBUG] [Thread-194293] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:43:28.871 [DEBUG] [Thread-194293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:43:28.871 [DEBUG] [Thread-194293] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:43:28.874 [DEBUG] [Thread-194293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:43:28.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:43:28.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:43:28.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:43:28.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:43:28.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:43:28.899 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:43:28.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:43:28.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:43:28.900 [DEBUG] [Thread-194293] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:43:28.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:43:28.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.654913 -999.00  +21.00  14.81     26   +0.70 1 1 1 1 1   887    0 19.87 -51.16 ----- 15.3 14.8 183.3 32.3 24.0 -28.7 24.0 -28.3 25.4 -26.5 25.7 -28.4
2025-11-24T17:43:28.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:43:28.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:43:28.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.654913
2025-11-24T17:43:28.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:43:28.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:43:28.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:43:28.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:43:28.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:43:28.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:42:56', tmtdew=23.87, humidity=19.92, cloud=0.0, wind=23.64, temperature=21.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:43:04.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:43:29.012 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:43:29.024 [DEBUG] [Thread-194296] [transport.py] [_log()] starting thread (client mode): 0xd31359c0
2025-11-24T17:43:29.024 [DEBUG] [Thread-194296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:43:29.038 [DEBUG] [Thread-194296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:43:29.038 [INFO] [Thread-194296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] client lang: <none>
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] server lang: <none>
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] kex follows: False
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:43:29.046 [DEBUG] [Thread-194296] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:43:29.047 [DEBUG] [Thread-194296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:43:29.047 [DEBUG] [Thread-194296] [transport.py] [_log()] Compression: none
2025-11-24T17:43:29.047 [DEBUG] [Thread-194296] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:43:29.104 [DEBUG] [Thread-194296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:43:29.104 [DEBUG] [Thread-194296] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:43:29.104 [DEBUG] [Thread-194296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:43:29.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:43:29.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:43:29.167 [DEBUG] [Thread-194296] [transport.py] [_log()] userauth is OK
2025-11-24T17:43:29.167 [DEBUG] [Thread-194296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:43:29.167 [DEBUG] [Thread-194296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:43:29.167 [DEBUG] [Thread-194296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:43:29.167 [DEBUG] [Thread-194296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:43:29.181 [INFO] [Thread-194296] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:43:29.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:43:29.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:43:30.068 [DEBUG] [Thread-194296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:43:30.068 [DEBUG] [Thread-194296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:43:30.116 [DEBUG] [Thread-194296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:43:30.116 [DEBUG] [Thread-194296] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:43:30.124 [DEBUG] [Thread-194296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:43:30.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:43:30.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-11-24T17:43:30.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-11-24T17:43:30.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:43:30.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:43:30.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:43:30.155 [DEBUG] [Thread-194296] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:43:30.325 [DEBUG] [Thread-194298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:43:45.383 [DEBUG] [Thread-194299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:44:00.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:44:00.178 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:44:00.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-11-24T17:44:00.412 [DEBUG] [Thread-194300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:44:01.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 43, 28), 23.96, 19.82, 0.0, 26.03, 21.41, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:44:01.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:43:28
2025-11-24T17:44:01.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:44:01.321 [DEBUG] [Thread-194301] [transport.py] [_log()] starting thread (client mode): 0xd3136950
2025-11-24T17:44:01.322 [DEBUG] [Thread-194301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:44:01.337 [DEBUG] [Thread-194301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:44:01.337 [INFO] [Thread-194301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:44:01.340 [DEBUG] [Thread-194301] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] client lang: <none>
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] server lang: <none>
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] kex follows: False
2025-11-24T17:44:01.341 [DEBUG] [Thread-194301] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:44:01.342 [DEBUG] [Thread-194301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:44:01.342 [DEBUG] [Thread-194301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:44:01.342 [DEBUG] [Thread-194301] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:44:01.342 [DEBUG] [Thread-194301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:44:01.342 [DEBUG] [Thread-194301] [transport.py] [_log()] Compression: none
2025-11-24T17:44:01.342 [DEBUG] [Thread-194301] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:44:01.367 [DEBUG] [Thread-194301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:44:01.369 [DEBUG] [Thread-194301] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:44:01.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:44:01.370 [DEBUG] [Thread-194301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:44:01.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:44:01.372 [DEBUG] [Thread-194301] [transport.py] [_log()] userauth is OK
2025-11-24T17:44:01.372 [DEBUG] [Thread-194301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:44:01.373 [DEBUG] [Thread-194301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:44:01.373 [DEBUG] [Thread-194301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:44:01.373 [DEBUG] [Thread-194301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:44:01.396 [INFO] [Thread-194301] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:44:01.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:44:01.975 [DEBUG] [Thread-194301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:44:01.975 [DEBUG] [Thread-194301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:44:01.976 [DEBUG] [Thread-194301] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:44:02.016 [DEBUG] [Thread-194301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:44:02.016 [DEBUG] [Thread-194301] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:44:02.018 [DEBUG] [Thread-194301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:44:02.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:44:02.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:44:02.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:44:02.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:44:02.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:44:02.033 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:44:02.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:44:02.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:44:02.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:44:02.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.655260 -999.00  +21.20  16.13     25   +0.80 1 1 1 1 1   887    0 19.04 -53.19 ----- 14.8 16.1 174.0 20.6 24.1 -28.5 24.0 -27.9 25.4 -26.3 25.7 -28.2
2025-11-24T17:44:02.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:44:02.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:44:02.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.655260
2025-11-24T17:44:02.039 [DEBUG] [Thread-194301] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:44:02.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:44:02.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:44:02.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:44:02.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:44:02.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:44:02.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:43:28', tmtdew=23.96, humidity=19.82, cloud=0.0, wind=26.03, temperature=21.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:43:34.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:44:02.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:44:02.135 [DEBUG] [Thread-194304] [transport.py] [_log()] starting thread (client mode): 0xd3162bf0
2025-11-24T17:44:02.135 [DEBUG] [Thread-194304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:44:02.150 [DEBUG] [Thread-194304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:44:02.150 [INFO] [Thread-194304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] client lang: <none>
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] server lang: <none>
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] kex follows: False
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] Compression: none
2025-11-24T17:44:02.161 [DEBUG] [Thread-194304] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:44:02.217 [DEBUG] [Thread-194304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:44:02.217 [DEBUG] [Thread-194304] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:44:02.217 [DEBUG] [Thread-194304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:44:02.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:44:02.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:44:02.258 [DEBUG] [Thread-194306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:44:02.274 [DEBUG] [Thread-194304] [transport.py] [_log()] userauth is OK
2025-11-24T17:44:02.274 [DEBUG] [Thread-194304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:44:02.274 [DEBUG] [Thread-194304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:44:02.274 [DEBUG] [Thread-194304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:44:02.274 [DEBUG] [Thread-194304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:44:02.289 [INFO] [Thread-194304] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:44:02.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:44:02.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:44:03.164 [DEBUG] [Thread-194304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:44:03.164 [DEBUG] [Thread-194304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:44:03.212 [DEBUG] [Thread-194304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:44:03.212 [DEBUG] [Thread-194304] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:44:03.220 [DEBUG] [Thread-194304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:44:03.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:44:03.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:44:03.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') -> 00000000
2025-11-24T17:44:03.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:44:03.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:44:03.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:44:03.254 [DEBUG] [Thread-194304] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:44:15.452 [DEBUG] [Thread-194307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:44:30.564 [DEBUG] [Thread-194308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:44:33.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:44:33.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:44:33.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-11-24T17:44:34.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 44, 1), 24.01, 19.74, 0.0, 21.19, 21.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:44:34.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:44:01
2025-11-24T17:44:34.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:44:34.368 [DEBUG] [Thread-194309] [transport.py] [_log()] starting thread (client mode): 0xd07bd780
2025-11-24T17:44:34.369 [DEBUG] [Thread-194309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:44:34.383 [DEBUG] [Thread-194309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:44:34.383 [INFO] [Thread-194309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] client lang: <none>
2025-11-24T17:44:34.387 [DEBUG] [Thread-194309] [transport.py] [_log()] server lang: <none>
2025-11-24T17:44:34.388 [DEBUG] [Thread-194309] [transport.py] [_log()] kex follows: False
2025-11-24T17:44:34.388 [DEBUG] [Thread-194309] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:44:34.388 [DEBUG] [Thread-194309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:44:34.388 [DEBUG] [Thread-194309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:44:34.388 [DEBUG] [Thread-194309] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:44:34.388 [DEBUG] [Thread-194309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:44:34.388 [DEBUG] [Thread-194309] [transport.py] [_log()] Compression: none
2025-11-24T17:44:34.388 [DEBUG] [Thread-194309] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:44:34.411 [DEBUG] [Thread-194309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:44:34.414 [DEBUG] [Thread-194309] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:44:34.415 [DEBUG] [Thread-194309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:44:34.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:44:34.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:44:34.418 [DEBUG] [Thread-194309] [transport.py] [_log()] userauth is OK
2025-11-24T17:44:34.418 [DEBUG] [Thread-194309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:44:34.418 [DEBUG] [Thread-194309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:44:34.418 [DEBUG] [Thread-194309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:44:34.418 [DEBUG] [Thread-194309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:44:34.439 [INFO] [Thread-194309] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:44:34.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:44:35.029 [DEBUG] [Thread-194309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:44:35.029 [DEBUG] [Thread-194309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:44:35.030 [DEBUG] [Thread-194309] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:44:35.070 [DEBUG] [Thread-194309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:44:35.070 [DEBUG] [Thread-194309] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:44:35.072 [DEBUG] [Thread-194309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:44:35.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:44:35.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:44:35.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:44:35.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:44:35.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:44:35.093 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:44:35.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:44:35.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:44:35.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:44:35.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.655607 -999.00  +21.20  21.01     25   +0.70 1 1 1 1 1   887    0 19.59 -53.70 ----- 20.9 21.0 177.8 29.1 24.0 -29.5 23.9 -31.1 25.5 -26.3 25.8 -28.1
2025-11-24T17:44:35.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:44:35.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:44:35.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.655607
2025-11-24T17:44:35.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:44:35.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:44:35.102 [DEBUG] [Thread-194309] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:44:35.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:44:35.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:44:35.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:44:35.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:44:01', tmtdew=24.01, humidity=19.74, cloud=0.0, wind=21.19, temperature=21.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:44:04.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:44:35.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:44:35.189 [DEBUG] [Thread-194312] [transport.py] [_log()] starting thread (client mode): 0xd0738910
2025-11-24T17:44:35.189 [DEBUG] [Thread-194312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:44:35.204 [DEBUG] [Thread-194312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:44:35.204 [INFO] [Thread-194312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] client lang: <none>
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] server lang: <none>
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] kex follows: False
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] Compression: none
2025-11-24T17:44:35.211 [DEBUG] [Thread-194312] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:44:35.269 [DEBUG] [Thread-194312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:44:35.269 [DEBUG] [Thread-194312] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:44:35.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:44:35.269 [DEBUG] [Thread-194312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:44:35.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:44:35.326 [DEBUG] [Thread-194312] [transport.py] [_log()] userauth is OK
2025-11-24T17:44:35.326 [DEBUG] [Thread-194312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:44:35.327 [DEBUG] [Thread-194312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:44:35.327 [DEBUG] [Thread-194312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:44:35.327 [DEBUG] [Thread-194312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:44:35.341 [INFO] [Thread-194312] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:44:35.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:44:35.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:44:36.178 [DEBUG] [Thread-194312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:44:36.179 [DEBUG] [Thread-194312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:44:36.227 [DEBUG] [Thread-194312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:44:36.227 [DEBUG] [Thread-194312] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:44:36.236 [DEBUG] [Thread-194312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:44:36.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:44:36.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-11-24T17:44:36.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-11-24T17:44:36.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:44:36.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:44:36.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:44:36.269 [DEBUG] [Thread-194312] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:44:45.609 [DEBUG] [Thread-194314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:45:00.665 [DEBUG] [Thread-194315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:45:02.522 [DEBUG] [Thread-194316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:45:06.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:45:06.292 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:45:06.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-11-24T17:45:07.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 44, 34), 24.03, 19.85, 0.0, 27.88, 21.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:45:07.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:44:34
2025-11-24T17:45:07.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:45:07.529 [DEBUG] [Thread-194317] [transport.py] [_log()] starting thread (client mode): 0xd3136590
2025-11-24T17:45:07.529 [DEBUG] [Thread-194317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:45:07.541 [DEBUG] [Thread-194317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:45:07.541 [INFO] [Thread-194317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:45:07.544 [DEBUG] [Thread-194317] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] client lang: <none>
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] server lang: <none>
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] kex follows: False
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] Compression: none
2025-11-24T17:45:07.545 [DEBUG] [Thread-194317] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:45:07.562 [DEBUG] [Thread-194317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:45:07.565 [DEBUG] [Thread-194317] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:45:07.565 [DEBUG] [Thread-194317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:45:07.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:45:07.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:45:07.568 [DEBUG] [Thread-194317] [transport.py] [_log()] userauth is OK
2025-11-24T17:45:07.568 [DEBUG] [Thread-194317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:45:07.568 [DEBUG] [Thread-194317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:45:07.568 [DEBUG] [Thread-194317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:45:07.568 [DEBUG] [Thread-194317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:45:07.579 [INFO] [Thread-194317] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:45:07.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:45:08.187 [DEBUG] [Thread-194317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:45:08.187 [DEBUG] [Thread-194317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:45:08.188 [DEBUG] [Thread-194317] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:45:08.228 [DEBUG] [Thread-194317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:45:08.228 [DEBUG] [Thread-194317] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:45:08.230 [DEBUG] [Thread-194317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:45:08.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:45:08.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:45:08.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:45:08.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:45:08.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:45:08.251 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:45:08.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:45:08.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:45:08.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:45:08.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.655954 -999.00  +20.90  16.76     26   +0.70 1 1 1 1 1   887    0 18.69 -51.95 ----- 15.8 16.8 191.2 28.4 24.0 -28.6 23.9 -29.7 25.3 -27.6 25.6 -29.1
2025-11-24T17:45:08.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:45:08.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:45:08.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.655954
2025-11-24T17:45:08.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:45:08.263 [DEBUG] [Thread-194317] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:45:08.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:45:08.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:45:08.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:45:08.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:45:08.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:44:34', tmtdew=24.03, humidity=19.85, cloud=0.0, wind=27.88, temperature=21.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:44:34.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:45:08.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:45:08.357 [DEBUG] [Thread-194320] [transport.py] [_log()] starting thread (client mode): 0xd07382b0
2025-11-24T17:45:08.357 [DEBUG] [Thread-194320] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:45:08.371 [DEBUG] [Thread-194320] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:45:08.371 [INFO] [Thread-194320] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:45:08.378 [DEBUG] [Thread-194320] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:45:08.378 [DEBUG] [Thread-194320] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:45:08.378 [DEBUG] [Thread-194320] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:45:08.378 [DEBUG] [Thread-194320] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:45:08.378 [DEBUG] [Thread-194320] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:45:08.378 [DEBUG] [Thread-194320] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:45:08.378 [DEBUG] [Thread-194320] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:45:08.378 [DEBUG] [Thread-194320] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] client lang: <none>
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] server lang: <none>
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] kex follows: False
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] Compression: none
2025-11-24T17:45:08.379 [DEBUG] [Thread-194320] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:45:08.436 [DEBUG] [Thread-194320] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:45:08.436 [DEBUG] [Thread-194320] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:45:08.436 [DEBUG] [Thread-194320] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:45:08.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:45:08.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:45:08.493 [DEBUG] [Thread-194320] [transport.py] [_log()] userauth is OK
2025-11-24T17:45:08.493 [DEBUG] [Thread-194320] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:45:08.493 [DEBUG] [Thread-194320] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:45:08.493 [DEBUG] [Thread-194320] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:45:08.493 [DEBUG] [Thread-194320] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:45:08.507 [INFO] [Thread-194320] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:45:08.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:45:08.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:45:09.339 [DEBUG] [Thread-194320] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:45:09.339 [DEBUG] [Thread-194320] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:45:09.387 [DEBUG] [Thread-194320] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:45:09.387 [DEBUG] [Thread-194320] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:45:09.395 [DEBUG] [Thread-194320] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:45:09.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:45:09.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-11-24T17:45:09.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:45:09.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:45:09.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:45:09.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:45:09.428 [DEBUG] [Thread-194320] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:45:15.700 [DEBUG] [Thread-194322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:45:30.826 [DEBUG] [Thread-194323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:45:39.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:45:39.429 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:45:39.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-11-24T17:45:40.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 45, 6), 24.07, 19.78, 0.0, 32.66, 21.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:45:40.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:45:06
2025-11-24T17:45:40.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:45:40.534 [DEBUG] [Thread-194324] [transport.py] [_log()] starting thread (client mode): 0xd07cf370
2025-11-24T17:45:40.535 [DEBUG] [Thread-194324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:45:40.545 [DEBUG] [Thread-194324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:45:40.545 [INFO] [Thread-194324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:45:40.548 [DEBUG] [Thread-194324] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:45:40.548 [DEBUG] [Thread-194324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:45:40.548 [DEBUG] [Thread-194324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:45:40.548 [DEBUG] [Thread-194324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:45:40.548 [DEBUG] [Thread-194324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] client lang: <none>
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] server lang: <none>
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] kex follows: False
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] Compression: none
2025-11-24T17:45:40.549 [DEBUG] [Thread-194324] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:45:40.566 [DEBUG] [Thread-194324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:45:40.566 [DEBUG] [Thread-194324] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:45:40.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:45:40.567 [DEBUG] [Thread-194324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:45:40.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:45:40.567 [DEBUG] [Thread-194324] [transport.py] [_log()] userauth is OK
2025-11-24T17:45:40.567 [DEBUG] [Thread-194324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:45:40.567 [DEBUG] [Thread-194324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:45:40.567 [DEBUG] [Thread-194324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:45:40.567 [DEBUG] [Thread-194324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:45:40.580 [INFO] [Thread-194324] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:45:40.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:45:41.147 [DEBUG] [Thread-194324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:45:41.147 [DEBUG] [Thread-194324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:45:41.147 [DEBUG] [Thread-194324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:45:41.188 [DEBUG] [Thread-194324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:45:41.188 [DEBUG] [Thread-194324] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:45:41.193 [DEBUG] [Thread-194324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:45:41.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:45:41.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:45:41.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:45:41.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:45:41.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:45:41.210 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:45:41.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:45:41.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:45:41.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:45:41.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.656649 -999.00  +21.10  12.87     25   +0.80 1 1 1 1 1   887    0 18.93 -55.08 ----- 19.0 12.9 180.2 23.9 24.0 -28.4 24.1 -29.4 25.5 -25.9 25.7 -27.7
2025-11-24T17:45:41.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:45:41.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:45:41.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.656649
2025-11-24T17:45:41.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:45:41.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:45:41.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:45:41.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:45:41.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:45:41.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:45:06', tmtdew=24.07, humidity=19.78, cloud=0.0, wind=32.66, temperature=21.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:45:34.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:45:41.211 [DEBUG] [Thread-194324] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:45:41.286 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:45:41.297 [DEBUG] [Thread-194327] [transport.py] [_log()] starting thread (client mode): 0xd31cd5d0
2025-11-24T17:45:41.297 [DEBUG] [Thread-194327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:45:41.311 [DEBUG] [Thread-194327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:45:41.311 [INFO] [Thread-194327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] client lang: <none>
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] server lang: <none>
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] kex follows: False
2025-11-24T17:45:41.318 [DEBUG] [Thread-194327] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:45:41.319 [DEBUG] [Thread-194327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:45:41.319 [DEBUG] [Thread-194327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:45:41.319 [DEBUG] [Thread-194327] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:45:41.319 [DEBUG] [Thread-194327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:45:41.319 [DEBUG] [Thread-194327] [transport.py] [_log()] Compression: none
2025-11-24T17:45:41.319 [DEBUG] [Thread-194327] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:45:41.376 [DEBUG] [Thread-194327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:45:41.376 [DEBUG] [Thread-194327] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:45:41.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:45:41.377 [DEBUG] [Thread-194327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:45:41.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:45:41.433 [DEBUG] [Thread-194327] [transport.py] [_log()] userauth is OK
2025-11-24T17:45:41.433 [DEBUG] [Thread-194327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:45:41.433 [DEBUG] [Thread-194327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:45:41.433 [DEBUG] [Thread-194327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:45:41.433 [DEBUG] [Thread-194327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:45:41.447 [INFO] [Thread-194327] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:45:41.448 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:45:41.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:45:42.266 [DEBUG] [Thread-194327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:45:42.266 [DEBUG] [Thread-194327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:45:42.313 [DEBUG] [Thread-194327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:45:42.313 [DEBUG] [Thread-194327] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:45:42.321 [DEBUG] [Thread-194327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:45:42.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:45:42.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-11-24T17:45:42.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-11-24T17:45:42.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:45:42.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:45:42.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:45:42.359 [DEBUG] [Thread-194327] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:45:45.859 [DEBUG] [Thread-194329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:46:00.901 [DEBUG] [Thread-194330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:46:02.776 [DEBUG] [Thread-194331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:46:12.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:46:12.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:46:12.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-11-24T17:46:13.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 45, 39), 23.97, 19.85, 0.0, 37.58, 21.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:46:13.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:45:39
2025-11-24T17:46:13.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:46:14.022 [DEBUG] [Thread-194332] [transport.py] [_log()] starting thread (client mode): 0xd07be1d0
2025-11-24T17:46:14.022 [DEBUG] [Thread-194332] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:46:14.038 [DEBUG] [Thread-194332] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:46:14.038 [INFO] [Thread-194332] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:46:14.041 [DEBUG] [Thread-194332] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:46:14.041 [DEBUG] [Thread-194332] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:46:14.041 [DEBUG] [Thread-194332] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:46:14.041 [DEBUG] [Thread-194332] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:46:14.041 [DEBUG] [Thread-194332] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:46:14.041 [DEBUG] [Thread-194332] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:46:14.041 [DEBUG] [Thread-194332] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:46:14.041 [DEBUG] [Thread-194332] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:46:14.041 [DEBUG] [Thread-194332] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:46:14.041 [DEBUG] [Thread-194332] [transport.py] [_log()] client lang: <none>
2025-11-24T17:46:14.042 [DEBUG] [Thread-194332] [transport.py] [_log()] server lang: <none>
2025-11-24T17:46:14.042 [DEBUG] [Thread-194332] [transport.py] [_log()] kex follows: False
2025-11-24T17:46:14.042 [DEBUG] [Thread-194332] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:46:14.042 [DEBUG] [Thread-194332] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:46:14.042 [DEBUG] [Thread-194332] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:46:14.042 [DEBUG] [Thread-194332] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:46:14.042 [DEBUG] [Thread-194332] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:46:14.042 [DEBUG] [Thread-194332] [transport.py] [_log()] Compression: none
2025-11-24T17:46:14.042 [DEBUG] [Thread-194332] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:46:14.069 [DEBUG] [Thread-194332] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:46:14.071 [DEBUG] [Thread-194332] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:46:14.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:46:14.072 [DEBUG] [Thread-194332] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:46:14.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:46:14.112 [DEBUG] [Thread-194332] [transport.py] [_log()] userauth is OK
2025-11-24T17:46:14.112 [DEBUG] [Thread-194332] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:46:14.113 [DEBUG] [Thread-194332] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:46:14.113 [DEBUG] [Thread-194332] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:46:14.113 [DEBUG] [Thread-194332] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:46:14.123 [INFO] [Thread-194332] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:46:14.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:46:14.782 [DEBUG] [Thread-194332] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:46:14.782 [DEBUG] [Thread-194332] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:46:14.782 [DEBUG] [Thread-194332] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:46:14.823 [DEBUG] [Thread-194332] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:46:14.823 [DEBUG] [Thread-194332] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:46:14.825 [DEBUG] [Thread-194332] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:46:14.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:46:14.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:46:14.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:46:14.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:46:14.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:46:14.844 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:46:14.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:46:14.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:46:14.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:46:14.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.656996 -999.00  +21.20  22.43     25   +0.80 1 1 1 1 1   887    0 19.16 -51.50 ----- 19.2 22.4 185.4 25.8 24.1 -28.6 24.1 -28.8 25.5 -26.8 25.7 -28.7
2025-11-24T17:46:14.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:46:14.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:46:14.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.656996
2025-11-24T17:46:14.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:46:14.853 [DEBUG] [Thread-194332] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:46:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:46:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:46:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:46:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:46:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:45:39', tmtdew=23.97, humidity=19.85, cloud=0.0, wind=37.58, temperature=21.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:46:04.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:46:14.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:46:14.944 [DEBUG] [Thread-194335] [transport.py] [_log()] starting thread (client mode): 0xd07cd780
2025-11-24T17:46:14.944 [DEBUG] [Thread-194335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:46:14.959 [DEBUG] [Thread-194335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:46:14.959 [INFO] [Thread-194335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] client lang: <none>
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] server lang: <none>
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] kex follows: False
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] Compression: none
2025-11-24T17:46:14.967 [DEBUG] [Thread-194335] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:46:15.024 [DEBUG] [Thread-194335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:46:15.024 [DEBUG] [Thread-194335] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:46:15.024 [DEBUG] [Thread-194335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:46:15.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:46:15.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:46:15.081 [DEBUG] [Thread-194335] [transport.py] [_log()] userauth is OK
2025-11-24T17:46:15.081 [DEBUG] [Thread-194335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:46:15.081 [DEBUG] [Thread-194335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:46:15.081 [DEBUG] [Thread-194335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:46:15.081 [DEBUG] [Thread-194335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:46:15.095 [INFO] [Thread-194335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:46:15.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:46:15.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:46:15.902 [DEBUG] [Thread-194335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:46:15.902 [DEBUG] [Thread-194335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:46:15.933 [DEBUG] [Thread-194337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:46:15.950 [DEBUG] [Thread-194335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:46:15.950 [DEBUG] [Thread-194335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:46:15.959 [DEBUG] [Thread-194335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:46:15.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:46:15.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:46:15.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-11-24T17:46:15.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:46:15.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:46:15.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:46:15.992 [DEBUG] [Thread-194335] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:46:30.990 [DEBUG] [Thread-194338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:46:46.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:46:46.015 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:46:46.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:46:46.024 [DEBUG] [Thread-194339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:46:46.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 46, 11), 23.82, 20.03, 0.0, 36.07, 21.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:46:46.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:46:11
2025-11-24T17:46:47.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:46:47.178 [DEBUG] [Thread-194340] [transport.py] [_log()] starting thread (client mode): 0xd07845b0
2025-11-24T17:46:47.178 [DEBUG] [Thread-194340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:46:47.197 [DEBUG] [Thread-194340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:46:47.197 [INFO] [Thread-194340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] client lang: <none>
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] server lang: <none>
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] kex follows: False
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] Compression: none
2025-11-24T17:46:47.199 [DEBUG] [Thread-194340] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:46:47.206 [DEBUG] [Thread-194340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:46:47.206 [DEBUG] [Thread-194340] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:46:47.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:46:47.206 [DEBUG] [Thread-194340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:46:47.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:46:47.207 [DEBUG] [Thread-194340] [transport.py] [_log()] userauth is OK
2025-11-24T17:46:47.207 [DEBUG] [Thread-194340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:46:47.207 [DEBUG] [Thread-194340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:46:47.207 [DEBUG] [Thread-194340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:46:47.207 [DEBUG] [Thread-194340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:46:47.216 [INFO] [Thread-194340] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:46:47.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:46:47.831 [DEBUG] [Thread-194340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:46:47.832 [DEBUG] [Thread-194340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:46:47.832 [DEBUG] [Thread-194340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:46:47.872 [DEBUG] [Thread-194340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:46:47.872 [DEBUG] [Thread-194340] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:46:47.875 [DEBUG] [Thread-194340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:46:47.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:46:47.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:46:47.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:46:47.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:46:47.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:46:47.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:46:47.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:46:47.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:46:47.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:46:47.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.657343 -999.00  +21.30  17.13     25   +0.80 1 1 1 1 1   887    0 19.43 -48.17 ----- 15.2 17.1 177.9 27.6 24.1 -29.0 24.1 -29.6 25.5 -26.7 25.7 -28.4
2025-11-24T17:46:47.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:46:47.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:46:47.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.657343
2025-11-24T17:46:47.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:46:47.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:46:47.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:46:47.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:46:47.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:46:47.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:46:11', tmtdew=23.82, humidity=20.03, cloud=0.0, wind=36.07, temperature=21.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:46:34.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:46:47.904 [DEBUG] [Thread-194340] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:46:47.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:46:47.997 [DEBUG] [Thread-194343] [transport.py] [_log()] starting thread (client mode): 0xd0785a20
2025-11-24T17:46:47.997 [DEBUG] [Thread-194343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:46:48.012 [DEBUG] [Thread-194343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:46:48.012 [INFO] [Thread-194343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:46:48.020 [DEBUG] [Thread-194343] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:46:48.020 [DEBUG] [Thread-194343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:46:48.020 [DEBUG] [Thread-194343] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:46:48.021 [DEBUG] [Thread-194343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:46:48.021 [DEBUG] [Thread-194343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:46:48.021 [DEBUG] [Thread-194343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:46:48.021 [DEBUG] [Thread-194343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:46:48.021 [DEBUG] [Thread-194343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:46:48.021 [DEBUG] [Thread-194343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:46:48.021 [DEBUG] [Thread-194343] [transport.py] [_log()] client lang: <none>
2025-11-24T17:46:48.021 [DEBUG] [Thread-194343] [transport.py] [_log()] server lang: <none>
2025-11-24T17:46:48.022 [DEBUG] [Thread-194343] [transport.py] [_log()] kex follows: False
2025-11-24T17:46:48.022 [DEBUG] [Thread-194343] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:46:48.022 [DEBUG] [Thread-194343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:46:48.022 [DEBUG] [Thread-194343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:46:48.022 [DEBUG] [Thread-194343] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:46:48.022 [DEBUG] [Thread-194343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:46:48.023 [DEBUG] [Thread-194343] [transport.py] [_log()] Compression: none
2025-11-24T17:46:48.023 [DEBUG] [Thread-194343] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:46:48.083 [DEBUG] [Thread-194343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:46:48.084 [DEBUG] [Thread-194343] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:46:48.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:46:48.086 [DEBUG] [Thread-194343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:46:48.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:46:48.143 [DEBUG] [Thread-194343] [transport.py] [_log()] userauth is OK
2025-11-24T17:46:48.143 [DEBUG] [Thread-194343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:46:48.144 [DEBUG] [Thread-194343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:46:48.144 [DEBUG] [Thread-194343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:46:48.144 [DEBUG] [Thread-194343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:46:48.171 [INFO] [Thread-194343] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:46:48.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:46:48.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:46:48.995 [DEBUG] [Thread-194343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:46:48.995 [DEBUG] [Thread-194343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:46:49.045 [DEBUG] [Thread-194343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:46:49.045 [DEBUG] [Thread-194343] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:46:49.061 [DEBUG] [Thread-194343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:46:49.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:46:49.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-11-24T17:46:49.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-11-24T17:46:49.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:46:49.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:46:49.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:46:49.116 [DEBUG] [Thread-194343] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:47:01.054 [DEBUG] [Thread-194345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:47:02.980 [DEBUG] [Thread-194346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:47:16.103 [DEBUG] [Thread-194347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:47:19.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:47:19.132 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:47:19.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-11-24T17:47:20.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 46, 45), 23.87, 19.95, 0.0, 33.21, 21.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:47:20.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:46:45
2025-11-24T17:47:20.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:47:20.380 [DEBUG] [Thread-194348] [transport.py] [_log()] starting thread (client mode): 0xd0784580
2025-11-24T17:47:20.380 [DEBUG] [Thread-194348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:47:20.399 [DEBUG] [Thread-194348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:47:20.399 [INFO] [Thread-194348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] client lang: <none>
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] server lang: <none>
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] kex follows: False
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] Compression: none
2025-11-24T17:47:20.402 [DEBUG] [Thread-194348] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:47:20.414 [DEBUG] [Thread-194348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:47:20.414 [DEBUG] [Thread-194348] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:47:20.414 [DEBUG] [Thread-194348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:47:20.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:47:20.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:47:20.415 [DEBUG] [Thread-194348] [transport.py] [_log()] userauth is OK
2025-11-24T17:47:20.415 [DEBUG] [Thread-194348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:47:20.415 [DEBUG] [Thread-194348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:47:20.415 [DEBUG] [Thread-194348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:47:20.415 [DEBUG] [Thread-194348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:47:20.424 [INFO] [Thread-194348] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:47:20.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:47:20.995 [DEBUG] [Thread-194348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:47:20.996 [DEBUG] [Thread-194348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:47:20.996 [DEBUG] [Thread-194348] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:47:21.037 [DEBUG] [Thread-194348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:47:21.037 [DEBUG] [Thread-194348] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:47:21.045 [DEBUG] [Thread-194348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:47:21.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:47:21.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:47:21.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:47:21.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:47:21.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:47:21.061 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:47:21.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:47:21.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:47:21.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:47:21.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.657690 -999.00  +21.20  25.98     25   +0.70 1 1 1 1 1   887    0 18.97 -45.61 ----- 27.4 26.0 181.4 30.3 24.0 -28.9 24.0 -31.0 25.5 -28.0 25.7 -28.8
2025-11-24T17:47:21.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:47:21.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:47:21.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.657690
2025-11-24T17:47:21.062 [DEBUG] [Thread-194348] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:47:21.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:47:21.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:47:21.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:47:21.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:47:21.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:47:21.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:46:45', tmtdew=23.87, humidity=19.95, cloud=0.0, wind=33.21, temperature=21.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:47:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:47:21.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:47:21.162 [DEBUG] [Thread-194351] [transport.py] [_log()] starting thread (client mode): 0xd07cd810
2025-11-24T17:47:21.162 [DEBUG] [Thread-194351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:47:21.176 [DEBUG] [Thread-194351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:47:21.177 [INFO] [Thread-194351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:47:21.184 [DEBUG] [Thread-194351] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:47:21.184 [DEBUG] [Thread-194351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:47:21.184 [DEBUG] [Thread-194351] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:47:21.184 [DEBUG] [Thread-194351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:47:21.185 [DEBUG] [Thread-194351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:47:21.185 [DEBUG] [Thread-194351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:47:21.185 [DEBUG] [Thread-194351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:47:21.185 [DEBUG] [Thread-194351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:47:21.185 [DEBUG] [Thread-194351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:47:21.185 [DEBUG] [Thread-194351] [transport.py] [_log()] client lang: <none>
2025-11-24T17:47:21.185 [DEBUG] [Thread-194351] [transport.py] [_log()] server lang: <none>
2025-11-24T17:47:21.185 [DEBUG] [Thread-194351] [transport.py] [_log()] kex follows: False
2025-11-24T17:47:21.185 [DEBUG] [Thread-194351] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:47:21.186 [DEBUG] [Thread-194351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:47:21.186 [DEBUG] [Thread-194351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:47:21.186 [DEBUG] [Thread-194351] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:47:21.186 [DEBUG] [Thread-194351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:47:21.186 [DEBUG] [Thread-194351] [transport.py] [_log()] Compression: none
2025-11-24T17:47:21.186 [DEBUG] [Thread-194351] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:47:21.243 [DEBUG] [Thread-194351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:47:21.244 [DEBUG] [Thread-194351] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:47:21.245 [DEBUG] [Thread-194351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:47:21.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:47:21.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:47:21.302 [DEBUG] [Thread-194351] [transport.py] [_log()] userauth is OK
2025-11-24T17:47:21.302 [DEBUG] [Thread-194351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:47:21.303 [DEBUG] [Thread-194351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:47:21.303 [DEBUG] [Thread-194351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:47:21.303 [DEBUG] [Thread-194351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:47:21.323 [INFO] [Thread-194351] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:47:21.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:47:21.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:47:22.219 [DEBUG] [Thread-194351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:47:22.219 [DEBUG] [Thread-194351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:47:22.266 [DEBUG] [Thread-194351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:47:22.267 [DEBUG] [Thread-194351] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:47:22.276 [DEBUG] [Thread-194351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:47:22.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:47:22.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-11-24T17:47:22.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-11-24T17:47:22.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:47:22.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:47:22.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:47:22.311 [DEBUG] [Thread-194351] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:47:31.148 [DEBUG] [Thread-194353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:47:46.236 [DEBUG] [Thread-194354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:47:52.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:47:52.336 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:47:52.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-11-24T17:47:53.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 47, 17), 23.83, 19.98, 0.0, 31.69, 21.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:47:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:47:17
2025-11-24T17:47:53.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:47:53.572 [DEBUG] [Thread-194355] [transport.py] [_log()] starting thread (client mode): 0xd31cfd00
2025-11-24T17:47:53.573 [DEBUG] [Thread-194355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:47:53.580 [DEBUG] [Thread-194355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:47:53.581 [INFO] [Thread-194355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] client lang: <none>
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] server lang: <none>
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] kex follows: False
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:47:53.586 [DEBUG] [Thread-194355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:47:53.587 [DEBUG] [Thread-194355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:47:53.587 [DEBUG] [Thread-194355] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:47:53.587 [DEBUG] [Thread-194355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:47:53.587 [DEBUG] [Thread-194355] [transport.py] [_log()] Compression: none
2025-11-24T17:47:53.587 [DEBUG] [Thread-194355] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:47:53.614 [DEBUG] [Thread-194355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:47:53.617 [DEBUG] [Thread-194355] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:47:53.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:47:53.619 [DEBUG] [Thread-194355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:47:53.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:47:53.621 [DEBUG] [Thread-194355] [transport.py] [_log()] userauth is OK
2025-11-24T17:47:53.622 [DEBUG] [Thread-194355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:47:53.622 [DEBUG] [Thread-194355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:47:53.622 [DEBUG] [Thread-194355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:47:53.622 [DEBUG] [Thread-194355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:47:53.639 [INFO] [Thread-194355] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:47:53.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:47:54.228 [DEBUG] [Thread-194355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:47:54.228 [DEBUG] [Thread-194355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:47:54.229 [DEBUG] [Thread-194355] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:47:54.270 [DEBUG] [Thread-194355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:47:54.270 [DEBUG] [Thread-194355] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:47:54.273 [DEBUG] [Thread-194355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:47:54.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:47:54.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:47:54.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:47:54.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:47:54.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:47:54.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:47:54.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:47:54.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:47:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:47:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.658038 -999.00  +21.10  25.33     25   +0.60 1 1 1 1 1   887    0 19.62 -42.48 ----- 28.9 25.3 178.4 34.5 23.9 -29.4 23.8 -28.8 25.3 -27.9 25.6 -30.9
2025-11-24T17:47:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:47:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:47:54.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.658038
2025-11-24T17:47:54.312 [DEBUG] [Thread-194355] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:47:54.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:47:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:47:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:47:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:47:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:47:54.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:47:17', tmtdew=23.83, humidity=19.98, cloud=0.0, wind=31.69, temperature=21.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:47:34.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:47:54.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:47:54.406 [DEBUG] [Thread-194358] [transport.py] [_log()] starting thread (client mode): 0xd3136500
2025-11-24T17:47:54.406 [DEBUG] [Thread-194358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:47:54.420 [DEBUG] [Thread-194358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:47:54.420 [INFO] [Thread-194358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] client lang: <none>
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] server lang: <none>
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] kex follows: False
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] Compression: none
2025-11-24T17:47:54.428 [DEBUG] [Thread-194358] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:47:54.485 [DEBUG] [Thread-194358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:47:54.485 [DEBUG] [Thread-194358] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:47:54.486 [DEBUG] [Thread-194358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:47:54.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:47:54.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:47:54.541 [DEBUG] [Thread-194358] [transport.py] [_log()] userauth is OK
2025-11-24T17:47:54.541 [DEBUG] [Thread-194358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:47:54.541 [DEBUG] [Thread-194358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:47:54.541 [DEBUG] [Thread-194358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:47:54.541 [DEBUG] [Thread-194358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:47:54.560 [INFO] [Thread-194358] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:47:54.560 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:47:54.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:47:55.376 [DEBUG] [Thread-194358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:47:55.376 [DEBUG] [Thread-194358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:47:55.424 [DEBUG] [Thread-194358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:47:55.424 [DEBUG] [Thread-194358] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:47:55.432 [DEBUG] [Thread-194358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:47:55.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:47:55.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:47:55.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:47:55.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:47:55.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:47:55.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:47:55.474 [DEBUG] [Thread-194358] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:48:01.277 [DEBUG] [Thread-194360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:48:03.271 [DEBUG] [Thread-194361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:48:16.359 [DEBUG] [Thread-194362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:48:25.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:48:25.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:48:25.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-11-24T17:48:26.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 47, 50), 23.88, 20.05, 0.0, 30.56, 21.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:48:26.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:47:50
2025-11-24T17:48:26.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:48:26.601 [DEBUG] [Thread-194363] [transport.py] [_log()] starting thread (client mode): 0xd07874f0
2025-11-24T17:48:26.602 [DEBUG] [Thread-194363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:48:26.611 [DEBUG] [Thread-194363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:48:26.611 [INFO] [Thread-194363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:48:26.616 [DEBUG] [Thread-194363] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:48:26.616 [DEBUG] [Thread-194363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] client lang: <none>
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] server lang: <none>
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] kex follows: False
2025-11-24T17:48:26.617 [DEBUG] [Thread-194363] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:48:26.618 [DEBUG] [Thread-194363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:48:26.618 [DEBUG] [Thread-194363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:48:26.618 [DEBUG] [Thread-194363] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:48:26.618 [DEBUG] [Thread-194363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:48:26.618 [DEBUG] [Thread-194363] [transport.py] [_log()] Compression: none
2025-11-24T17:48:26.618 [DEBUG] [Thread-194363] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:48:26.654 [DEBUG] [Thread-194363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:48:26.658 [DEBUG] [Thread-194363] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:48:26.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:48:26.662 [DEBUG] [Thread-194363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:48:26.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:48:26.664 [DEBUG] [Thread-194363] [transport.py] [_log()] userauth is OK
2025-11-24T17:48:26.665 [DEBUG] [Thread-194363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:48:26.665 [DEBUG] [Thread-194363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:48:26.665 [DEBUG] [Thread-194363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:48:26.665 [DEBUG] [Thread-194363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:48:26.692 [INFO] [Thread-194363] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:48:26.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:48:27.252 [DEBUG] [Thread-194363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:48:27.252 [DEBUG] [Thread-194363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:48:27.254 [DEBUG] [Thread-194363] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:48:27.293 [DEBUG] [Thread-194363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:48:27.294 [DEBUG] [Thread-194363] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:48:27.296 [DEBUG] [Thread-194363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:48:27.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:48:27.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:48:27.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:48:27.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:48:27.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:48:27.318 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:48:27.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:48:27.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:48:27.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:48:27.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.658385 -999.00  +20.90  27.66     25   +0.40 1 1 1 1 1   887    0 19.36 -38.44 ----- 23.7 27.7 187.0 39.7 23.9 -28.9 23.7 -30.6 25.2 -28.4 25.5 -30.1
2025-11-24T17:48:27.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:48:27.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:48:27.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.658385
2025-11-24T17:48:27.325 [DEBUG] [Thread-194363] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:48:27.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:48:27.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:48:27.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:48:27.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:48:27.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:48:27.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:47:50', tmtdew=23.88, humidity=20.05, cloud=0.0, wind=30.56, temperature=21.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:48:04.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:48:27.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:48:27.431 [DEBUG] [Thread-194366] [transport.py] [_log()] starting thread (client mode): 0xd31ef2b0
2025-11-24T17:48:27.431 [DEBUG] [Thread-194366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:48:27.446 [DEBUG] [Thread-194366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:48:27.447 [INFO] [Thread-194366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:48:27.454 [DEBUG] [Thread-194366] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:48:27.454 [DEBUG] [Thread-194366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:48:27.454 [DEBUG] [Thread-194366] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] client lang: <none>
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] server lang: <none>
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] kex follows: False
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] Compression: none
2025-11-24T17:48:27.455 [DEBUG] [Thread-194366] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:48:27.514 [DEBUG] [Thread-194366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:48:27.514 [DEBUG] [Thread-194366] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:48:27.515 [DEBUG] [Thread-194366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:48:27.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:48:27.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:48:27.570 [DEBUG] [Thread-194366] [transport.py] [_log()] userauth is OK
2025-11-24T17:48:27.570 [DEBUG] [Thread-194366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:48:27.570 [DEBUG] [Thread-194366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:48:27.570 [DEBUG] [Thread-194366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:48:27.570 [DEBUG] [Thread-194366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:48:27.589 [INFO] [Thread-194366] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:48:27.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:48:27.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:48:28.498 [DEBUG] [Thread-194366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:48:28.498 [DEBUG] [Thread-194366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:48:28.546 [DEBUG] [Thread-194366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:48:28.546 [DEBUG] [Thread-194366] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:48:28.555 [DEBUG] [Thread-194366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:48:28.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:48:28.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-11-24T17:48:28.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-11-24T17:48:28.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:48:28.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:48:28.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:48:28.593 [DEBUG] [Thread-194366] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:48:31.409 [DEBUG] [Thread-194368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:48:46.506 [DEBUG] [Thread-194369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:48:58.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:48:58.616 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:48:58.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-11-24T17:48:59.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 48, 23), 23.92, 20.02, 0.0, 27.9, 21.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:48:59.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:48:23
2025-11-24T17:48:59.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:48:59.781 [DEBUG] [Thread-194370] [transport.py] [_log()] starting thread (client mode): 0xd3136a10
2025-11-24T17:48:59.781 [DEBUG] [Thread-194370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:48:59.792 [DEBUG] [Thread-194370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:48:59.792 [INFO] [Thread-194370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:48:59.795 [DEBUG] [Thread-194370] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:48:59.795 [DEBUG] [Thread-194370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:48:59.795 [DEBUG] [Thread-194370] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:48:59.795 [DEBUG] [Thread-194370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:48:59.795 [DEBUG] [Thread-194370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:48:59.795 [DEBUG] [Thread-194370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] client lang: <none>
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] server lang: <none>
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] kex follows: False
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] Compression: none
2025-11-24T17:48:59.796 [DEBUG] [Thread-194370] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:48:59.817 [DEBUG] [Thread-194370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:48:59.819 [DEBUG] [Thread-194370] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:48:59.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:48:59.821 [DEBUG] [Thread-194370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:48:59.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:48:59.822 [DEBUG] [Thread-194370] [transport.py] [_log()] userauth is OK
2025-11-24T17:48:59.822 [DEBUG] [Thread-194370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:48:59.822 [DEBUG] [Thread-194370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:48:59.822 [DEBUG] [Thread-194370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:48:59.822 [DEBUG] [Thread-194370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:48:59.832 [INFO] [Thread-194370] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:48:59.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:49:00.450 [DEBUG] [Thread-194370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:49:00.451 [DEBUG] [Thread-194370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:49:00.452 [DEBUG] [Thread-194370] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:49:00.491 [DEBUG] [Thread-194370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:49:00.491 [DEBUG] [Thread-194370] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:49:00.497 [DEBUG] [Thread-194370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:49:00.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:49:00.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:49:00.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:49:00.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:49:00.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:49:00.512 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:49:00.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:49:00.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:49:00.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:49:00.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.658732 -999.00  +20.90  34.83     25   +0.30 1 1 2 1 1   887    0 19.52 -41.12 ----- 31.6 34.8 179.8 42.6 23.8 -30.0 23.6 -31.4 25.2 -26.9 25.4 -29.0
2025-11-24T17:49:00.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:49:00.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:49:00.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.658732
2025-11-24T17:49:00.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:49:00.515 [DEBUG] [Thread-194370] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:49:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:49:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:49:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:49:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:49:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:48:23', tmtdew=23.92, humidity=20.02, cloud=0.0, wind=27.9, temperature=21.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:48:34.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:49:00.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:49:00.607 [DEBUG] [Thread-194373] [transport.py] [_log()] starting thread (client mode): 0xd31ed6f0
2025-11-24T17:49:00.608 [DEBUG] [Thread-194373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:49:00.622 [DEBUG] [Thread-194373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:49:00.622 [INFO] [Thread-194373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:49:00.629 [DEBUG] [Thread-194373] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:49:00.629 [DEBUG] [Thread-194373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:49:00.629 [DEBUG] [Thread-194373] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] client lang: <none>
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] server lang: <none>
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] kex follows: False
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] Compression: none
2025-11-24T17:49:00.630 [DEBUG] [Thread-194373] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:49:00.688 [DEBUG] [Thread-194373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:49:00.688 [DEBUG] [Thread-194373] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:49:00.688 [DEBUG] [Thread-194373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:49:00.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:49:00.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:49:00.745 [DEBUG] [Thread-194373] [transport.py] [_log()] userauth is OK
2025-11-24T17:49:00.745 [DEBUG] [Thread-194373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:49:00.745 [DEBUG] [Thread-194373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:49:00.745 [DEBUG] [Thread-194373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:49:00.745 [DEBUG] [Thread-194373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:49:00.763 [INFO] [Thread-194373] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:49:00.763 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:49:00.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:49:01.548 [DEBUG] [Thread-194375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:49:01.609 [DEBUG] [Thread-194373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:49:01.610 [DEBUG] [Thread-194373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:49:01.658 [DEBUG] [Thread-194373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:49:01.658 [DEBUG] [Thread-194373] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:49:01.667 [DEBUG] [Thread-194373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:49:01.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:49: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')
2025-11-24T17:49:01.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-11-24T17:49:01.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:49:01.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:49:01.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:49:01.704 [DEBUG] [Thread-194373] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:49:03.511 [DEBUG] [Thread-194376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:49:16.641 [DEBUG] [Thread-194377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:49:31.674 [DEBUG] [Thread-194378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:49:31.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:49:31.718 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:49:31.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-11-24T17:49:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 48, 56), 24.26, 19.33, 0.0, 33.17, 21.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:49:32.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:48:56
2025-11-24T17:49:32.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:49:32.893 [DEBUG] [Thread-194379] [transport.py] [_log()] starting thread (client mode): 0xd3137f10
2025-11-24T17:49:32.894 [DEBUG] [Thread-194379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:49:32.905 [DEBUG] [Thread-194379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:49:32.906 [INFO] [Thread-194379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:49:32.909 [DEBUG] [Thread-194379] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:49:32.909 [DEBUG] [Thread-194379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:49:32.909 [DEBUG] [Thread-194379] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:49:32.909 [DEBUG] [Thread-194379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:49:32.909 [DEBUG] [Thread-194379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:49:32.909 [DEBUG] [Thread-194379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:49:32.909 [DEBUG] [Thread-194379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:49:32.909 [DEBUG] [Thread-194379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:49:32.909 [DEBUG] [Thread-194379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:49:32.909 [DEBUG] [Thread-194379] [transport.py] [_log()] client lang: <none>
2025-11-24T17:49:32.910 [DEBUG] [Thread-194379] [transport.py] [_log()] server lang: <none>
2025-11-24T17:49:32.910 [DEBUG] [Thread-194379] [transport.py] [_log()] kex follows: False
2025-11-24T17:49:32.910 [DEBUG] [Thread-194379] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:49:32.910 [DEBUG] [Thread-194379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:49:32.910 [DEBUG] [Thread-194379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:49:32.910 [DEBUG] [Thread-194379] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:49:32.910 [DEBUG] [Thread-194379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:49:32.910 [DEBUG] [Thread-194379] [transport.py] [_log()] Compression: none
2025-11-24T17:49:32.910 [DEBUG] [Thread-194379] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:49:32.927 [DEBUG] [Thread-194379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:49:32.929 [DEBUG] [Thread-194379] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:49:32.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:49:32.930 [DEBUG] [Thread-194379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:49:32.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:49:32.933 [DEBUG] [Thread-194379] [transport.py] [_log()] userauth is OK
2025-11-24T17:49:32.933 [DEBUG] [Thread-194379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:49:32.933 [DEBUG] [Thread-194379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:49:32.933 [DEBUG] [Thread-194379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:49:32.933 [DEBUG] [Thread-194379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:49:32.947 [INFO] [Thread-194379] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:49:32.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:49:33.544 [DEBUG] [Thread-194379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:49:33.545 [DEBUG] [Thread-194379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:49:33.545 [DEBUG] [Thread-194379] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:49:33.585 [DEBUG] [Thread-194379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:49:33.585 [DEBUG] [Thread-194379] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:49:33.587 [DEBUG] [Thread-194379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:49:33.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:49:33.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:49:33.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:49:33.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:49:33.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:49:33.606 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:49:33.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:49:33.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:49:33.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:49:33.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.659079 -999.00  +20.70  32.74     25   +0.30 1 1 2 1 1   887    0 19.48 -39.72 ----- 31.3 32.7 180.4 38.5 23.8 -29.7 23.6 -31.7 25.2 -26.8 25.4 -29.4
2025-11-24T17:49:33.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:49:33.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:49:33.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.659079
2025-11-24T17:49:33.613 [DEBUG] [Thread-194379] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:49:33.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:49:33.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:49:33.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:49:33.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:49:33.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:49:33.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:48:56', tmtdew=24.26, humidity=19.33, cloud=0.0, wind=33.17, temperature=21.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:49:04.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:49:33.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:49:33.714 [DEBUG] [Thread-194382] [transport.py] [_log()] starting thread (client mode): 0xd073b040
2025-11-24T17:49:33.714 [DEBUG] [Thread-194382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:49:33.728 [DEBUG] [Thread-194382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:49:33.728 [INFO] [Thread-194382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] client lang: <none>
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] server lang: <none>
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] kex follows: False
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] Compression: none
2025-11-24T17:49:33.736 [DEBUG] [Thread-194382] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:49:33.799 [DEBUG] [Thread-194382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:49:33.799 [DEBUG] [Thread-194382] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:49:33.799 [DEBUG] [Thread-194382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:49:33.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:49:33.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:49:33.857 [DEBUG] [Thread-194382] [transport.py] [_log()] userauth is OK
2025-11-24T17:49:33.857 [DEBUG] [Thread-194382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:49:33.857 [DEBUG] [Thread-194382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:49:33.857 [DEBUG] [Thread-194382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:49:33.857 [DEBUG] [Thread-194382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:49:33.871 [INFO] [Thread-194382] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:49:33.871 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:49:33.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:49:34.690 [DEBUG] [Thread-194382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:49:34.690 [DEBUG] [Thread-194382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:49:34.738 [DEBUG] [Thread-194382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:49:34.738 [DEBUG] [Thread-194382] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:49:34.746 [DEBUG] [Thread-194382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:49:34.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:49:34.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-11-24T17:49:34.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-11-24T17:49:34.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:49:34.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:49:34.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:49:34.779 [DEBUG] [Thread-194382] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:49:46.710 [DEBUG] [Thread-194384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:50:01.805 [DEBUG] [Thread-194385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:50:03.750 [DEBUG] [Thread-194386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:50:04.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:50:04.797 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:50:04.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-11-24T17:50:05.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 50, 1), 24.32, 19.27, 0.0, 30.67, 21.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:50:05.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:50:01
2025-11-24T17:50:05.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:50:06.013 [DEBUG] [Thread-194387] [transport.py] [_log()] starting thread (client mode): 0xd0786c80
2025-11-24T17:50:06.013 [DEBUG] [Thread-194387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:50:06.031 [DEBUG] [Thread-194387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:50:06.032 [INFO] [Thread-194387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] client lang: <none>
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] server lang: <none>
2025-11-24T17:50:06.034 [DEBUG] [Thread-194387] [transport.py] [_log()] kex follows: False
2025-11-24T17:50:06.035 [DEBUG] [Thread-194387] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:50:06.035 [DEBUG] [Thread-194387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:50:06.035 [DEBUG] [Thread-194387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:50:06.035 [DEBUG] [Thread-194387] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:50:06.035 [DEBUG] [Thread-194387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:50:06.035 [DEBUG] [Thread-194387] [transport.py] [_log()] Compression: none
2025-11-24T17:50:06.035 [DEBUG] [Thread-194387] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:50:06.058 [DEBUG] [Thread-194387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:50:06.060 [DEBUG] [Thread-194387] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:50:06.061 [DEBUG] [Thread-194387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:50:06.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:50:06.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:50:06.065 [DEBUG] [Thread-194387] [transport.py] [_log()] userauth is OK
2025-11-24T17:50:06.065 [DEBUG] [Thread-194387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:50:06.065 [DEBUG] [Thread-194387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:50:06.065 [DEBUG] [Thread-194387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:50:06.065 [DEBUG] [Thread-194387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:50:06.089 [INFO] [Thread-194387] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:50:06.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:50:08.886 [DEBUG] [Thread-194387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:50:08.895 [DEBUG] [Thread-194387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:50:08.896 [DEBUG] [Thread-194387] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:50:08.926 [DEBUG] [Thread-194387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:50:08.927 [DEBUG] [Thread-194387] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:50:08.929 [DEBUG] [Thread-194387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:50:08.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:50:08.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:50:08.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:50:08.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:50:08.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:50:08.946 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:50:08.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:50:08.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:50:08.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:50:08.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.659079 -999.00  +20.70  32.74     25   +0.30 1 1 2 1 1   887    0 19.48 -39.72 ----- 31.3 32.7 180.4 38.5 23.8 -29.7 23.6 -31.7 25.2 -26.8 25.4 -29.4
2025-11-24T17:50:08.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:50:08.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:50:08.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.659079
2025-11-24T17:50:08.953 [DEBUG] [Thread-194387] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:50:08.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:50:08.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:50:08.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:50:08.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:50:08.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:50:08.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:50:01', tmtdew=24.32, humidity=19.27, cloud=0.0, wind=30.67, temperature=21.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:49:04.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:50:09.044 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:50:09.055 [DEBUG] [Thread-194390] [transport.py] [_log()] starting thread (client mode): 0xd07ccca0
2025-11-24T17:50:09.055 [DEBUG] [Thread-194390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:50:09.070 [DEBUG] [Thread-194390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:50:09.070 [INFO] [Thread-194390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:50:09.077 [DEBUG] [Thread-194390] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] client lang: <none>
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] server lang: <none>
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] kex follows: False
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:50:09.078 [DEBUG] [Thread-194390] [transport.py] [_log()] Compression: none
2025-11-24T17:50:09.079 [DEBUG] [Thread-194390] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:50:09.137 [DEBUG] [Thread-194390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:50:09.137 [DEBUG] [Thread-194390] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:50:09.138 [DEBUG] [Thread-194390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:50:09.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:50:09.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:50:09.194 [DEBUG] [Thread-194390] [transport.py] [_log()] userauth is OK
2025-11-24T17:50:09.194 [DEBUG] [Thread-194390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:50:09.194 [DEBUG] [Thread-194390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:50:09.194 [DEBUG] [Thread-194390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:50:09.194 [DEBUG] [Thread-194390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:50:09.214 [INFO] [Thread-194390] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:50:09.215 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:50:09.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:50:10.028 [DEBUG] [Thread-194390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:50:10.029 [DEBUG] [Thread-194390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:50:10.076 [DEBUG] [Thread-194390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:50:10.077 [DEBUG] [Thread-194390] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:50:10.086 [DEBUG] [Thread-194390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:50:10.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:50:10.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:50:10.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-11-24T17:50:10.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:50:10.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:50:10.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:50:10.120 [DEBUG] [Thread-194390] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:50:16.833 [DEBUG] [Thread-194392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:50:31.904 [DEBUG] [Thread-194393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:50:40.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:50:40.146 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:50:40.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-11-24T17:50:40.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 50, 34), 24.06, 19.72, 0.0, 30.44, 21.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:50:40.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:50:34
2025-11-24T17:50:41.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:50:41.271 [DEBUG] [Thread-194394] [transport.py] [_log()] starting thread (client mode): 0xd31358d0
2025-11-24T17:50:41.272 [DEBUG] [Thread-194394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:50:41.286 [DEBUG] [Thread-194394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:50:41.286 [INFO] [Thread-194394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:50:41.291 [DEBUG] [Thread-194394] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:50:41.291 [DEBUG] [Thread-194394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:50:41.291 [DEBUG] [Thread-194394] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:50:41.291 [DEBUG] [Thread-194394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:50:41.291 [DEBUG] [Thread-194394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:50:41.291 [DEBUG] [Thread-194394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:50:41.291 [DEBUG] [Thread-194394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:50:41.292 [DEBUG] [Thread-194394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:50:41.292 [DEBUG] [Thread-194394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:50:41.292 [DEBUG] [Thread-194394] [transport.py] [_log()] client lang: <none>
2025-11-24T17:50:41.292 [DEBUG] [Thread-194394] [transport.py] [_log()] server lang: <none>
2025-11-24T17:50:41.292 [DEBUG] [Thread-194394] [transport.py] [_log()] kex follows: False
2025-11-24T17:50:41.292 [DEBUG] [Thread-194394] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:50:41.293 [DEBUG] [Thread-194394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:50:41.293 [DEBUG] [Thread-194394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:50:41.293 [DEBUG] [Thread-194394] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:50:41.293 [DEBUG] [Thread-194394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:50:41.293 [DEBUG] [Thread-194394] [transport.py] [_log()] Compression: none
2025-11-24T17:50:41.293 [DEBUG] [Thread-194394] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:50:41.329 [DEBUG] [Thread-194394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:50:41.334 [DEBUG] [Thread-194394] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:50:41.336 [DEBUG] [Thread-194394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:50:41.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:50:41.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:50:41.341 [DEBUG] [Thread-194394] [transport.py] [_log()] userauth is OK
2025-11-24T17:50:41.341 [DEBUG] [Thread-194394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:50:41.342 [DEBUG] [Thread-194394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:50:41.342 [DEBUG] [Thread-194394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:50:41.342 [DEBUG] [Thread-194394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:50:41.369 [INFO] [Thread-194394] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:50:41.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:50:41.968 [DEBUG] [Thread-194394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:50:41.968 [DEBUG] [Thread-194394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:50:41.977 [DEBUG] [Thread-194394] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:50:42.009 [DEBUG] [Thread-194394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:50:42.009 [DEBUG] [Thread-194394] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:50:42.012 [DEBUG] [Thread-194394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:50:42.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:50:42.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:50:42.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:50:42.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:50:42.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:50:42.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:50:42.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:50:42.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:50:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:50:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.659426 -999.00  +20.70  30.08     25   +0.40 1 1 2 1 1   887    0 19.13 -35.45 ----- 26.4 30.1 188.4 43.5 23.6 -29.2 23.6 -29.5 25.1 -28.9 25.3 -31.1
2025-11-24T17:50:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:50:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:50:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.659426
2025-11-24T17:50:42.039 [DEBUG] [Thread-194394] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:50:42.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:50:42.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:50:42.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:50:42.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:50:42.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:50:42.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:50:34', tmtdew=24.06, humidity=19.72, cloud=0.0, wind=30.44, temperature=21.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:49:34.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:50:42.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:50:42.132 [DEBUG] [Thread-194397] [transport.py] [_log()] starting thread (client mode): 0xd07cf2b0
2025-11-24T17:50:42.132 [DEBUG] [Thread-194397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:50:42.151 [DEBUG] [Thread-194397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:50:42.151 [INFO] [Thread-194397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] client lang: <none>
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] server lang: <none>
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] kex follows: False
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] Compression: none
2025-11-24T17:50:42.159 [DEBUG] [Thread-194397] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:50:42.216 [DEBUG] [Thread-194397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:50:42.216 [DEBUG] [Thread-194397] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:50:42.216 [DEBUG] [Thread-194397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:50:42.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:50:42.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:50:42.273 [DEBUG] [Thread-194397] [transport.py] [_log()] userauth is OK
2025-11-24T17:50:42.273 [DEBUG] [Thread-194397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:50:42.273 [DEBUG] [Thread-194397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:50:42.273 [DEBUG] [Thread-194397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:50:42.273 [DEBUG] [Thread-194397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:50:42.287 [INFO] [Thread-194397] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:50:42.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:50:42.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:50:43.102 [DEBUG] [Thread-194397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:50:43.102 [DEBUG] [Thread-194397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:50:43.151 [DEBUG] [Thread-194397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:50:43.151 [DEBUG] [Thread-194397] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:50:43.159 [DEBUG] [Thread-194397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:50:43.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:50:43.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T17:50:43.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:50:43.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:50:43.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:50:43.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:50:43.191 [DEBUG] [Thread-194397] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:50:46.939 [DEBUG] [Thread-194399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:51:01.988 [DEBUG] [Thread-194400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:51:03.981 [DEBUG] [Thread-194401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:51:13.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:51:13.202 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:51:13.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-11-24T17:51:14.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 51, 7), 24.01, 19.77, 0.0, 31.64, 21.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:51:14.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:51:07
2025-11-24T17:51:14.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:51:14.464 [DEBUG] [Thread-194402] [transport.py] [_log()] starting thread (client mode): 0xd31cd5d0
2025-11-24T17:51:14.464 [DEBUG] [Thread-194402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:51:14.478 [DEBUG] [Thread-194402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:51:14.479 [INFO] [Thread-194402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] client lang: <none>
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] server lang: <none>
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] kex follows: False
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] Compression: none
2025-11-24T17:51:14.482 [DEBUG] [Thread-194402] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:51:14.497 [DEBUG] [Thread-194402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:51:14.501 [DEBUG] [Thread-194402] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:51:14.503 [DEBUG] [Thread-194402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:51:14.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:51:14.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:51:14.507 [DEBUG] [Thread-194402] [transport.py] [_log()] userauth is OK
2025-11-24T17:51:14.508 [DEBUG] [Thread-194402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:51:14.508 [DEBUG] [Thread-194402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:51:14.508 [DEBUG] [Thread-194402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:51:14.508 [DEBUG] [Thread-194402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:51:14.531 [INFO] [Thread-194402] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:51:14.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:51:15.330 [DEBUG] [Thread-194402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:51:15.331 [DEBUG] [Thread-194402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:51:15.331 [DEBUG] [Thread-194402] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:51:15.372 [DEBUG] [Thread-194402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:51:15.372 [DEBUG] [Thread-194402] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:51:15.376 [DEBUG] [Thread-194402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:51:15.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:51:15.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:51:15.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:51:15.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:51:15.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:51:15.401 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:51:15.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:51:15.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:51:15.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:51:15.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.660121 -999.00  +20.70  31.04     26   +0.50 1 1 2 1 1   887    0 19.66 -28.92 ----- 29.6 31.0 194.2 39.0 23.6 -29.0 23.5 -29.1 25.0 -27.0 25.2 -29.0
2025-11-24T17:51:15.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:51:15.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:51:15.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.660121
2025-11-24T17:51:15.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:51:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:51:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:51:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:51:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:51:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:51:07', tmtdew=24.01, humidity=19.77, cloud=0.0, wind=31.64, temperature=21.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:50:34.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:51:15.406 [DEBUG] [Thread-194402] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:51:15.488 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:51:15.499 [DEBUG] [Thread-194405] [transport.py] [_log()] starting thread (client mode): 0xd07ce410
2025-11-24T17:51:15.499 [DEBUG] [Thread-194405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:51:15.517 [DEBUG] [Thread-194405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:51:15.517 [INFO] [Thread-194405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:51:15.524 [DEBUG] [Thread-194405] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] client lang: <none>
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] server lang: <none>
2025-11-24T17:51:15.525 [DEBUG] [Thread-194405] [transport.py] [_log()] kex follows: False
2025-11-24T17:51:15.526 [DEBUG] [Thread-194405] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:51:15.526 [DEBUG] [Thread-194405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:51:15.526 [DEBUG] [Thread-194405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:51:15.526 [DEBUG] [Thread-194405] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:51:15.526 [DEBUG] [Thread-194405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:51:15.526 [DEBUG] [Thread-194405] [transport.py] [_log()] Compression: none
2025-11-24T17:51:15.526 [DEBUG] [Thread-194405] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:51:15.585 [DEBUG] [Thread-194405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:51:15.586 [DEBUG] [Thread-194405] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:51:15.587 [DEBUG] [Thread-194405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:51:15.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:51:15.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:51:15.641 [DEBUG] [Thread-194405] [transport.py] [_log()] userauth is OK
2025-11-24T17:51:15.642 [DEBUG] [Thread-194405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:51:15.642 [DEBUG] [Thread-194405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:51:15.642 [DEBUG] [Thread-194405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:51:15.642 [DEBUG] [Thread-194405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:51:15.662 [INFO] [Thread-194405] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:51:15.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:51:15.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:51:16.504 [DEBUG] [Thread-194405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:51:16.504 [DEBUG] [Thread-194405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:51:16.552 [DEBUG] [Thread-194405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:51:16.552 [DEBUG] [Thread-194405] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:51:16.560 [DEBUG] [Thread-194405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:51:16.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:51:16.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')
2025-11-24T17:51:16.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:51:16.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:51:16.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:51:16.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:51:16.593 [DEBUG] [Thread-194405] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:51:17.031 [DEBUG] [Thread-194407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:51:32.071 [DEBUG] [Thread-194408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:51:46.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:51:46.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:51:46.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-11-24T17:51:47.105 [DEBUG] [Thread-194409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:51:47.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 51, 40), 23.88, 19.8, 0.0, 29.59, 21.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:51:47.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:51:40
2025-11-24T17:51:47.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:51:47.787 [DEBUG] [Thread-194410] [transport.py] [_log()] starting thread (client mode): 0xd07cf8b0
2025-11-24T17:51:47.787 [DEBUG] [Thread-194410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:51:47.803 [DEBUG] [Thread-194410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:51:47.803 [INFO] [Thread-194410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:51:47.808 [DEBUG] [Thread-194410] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:51:47.808 [DEBUG] [Thread-194410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:51:47.808 [DEBUG] [Thread-194410] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:51:47.808 [DEBUG] [Thread-194410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:51:47.808 [DEBUG] [Thread-194410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:51:47.808 [DEBUG] [Thread-194410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:51:47.809 [DEBUG] [Thread-194410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:51:47.809 [DEBUG] [Thread-194410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:51:47.809 [DEBUG] [Thread-194410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:51:47.809 [DEBUG] [Thread-194410] [transport.py] [_log()] client lang: <none>
2025-11-24T17:51:47.809 [DEBUG] [Thread-194410] [transport.py] [_log()] server lang: <none>
2025-11-24T17:51:47.809 [DEBUG] [Thread-194410] [transport.py] [_log()] kex follows: False
2025-11-24T17:51:47.809 [DEBUG] [Thread-194410] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:51:47.810 [DEBUG] [Thread-194410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:51:47.810 [DEBUG] [Thread-194410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:51:47.810 [DEBUG] [Thread-194410] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:51:47.810 [DEBUG] [Thread-194410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:51:47.810 [DEBUG] [Thread-194410] [transport.py] [_log()] Compression: none
2025-11-24T17:51:47.810 [DEBUG] [Thread-194410] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:51:47.846 [DEBUG] [Thread-194410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:51:47.852 [DEBUG] [Thread-194410] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:51:47.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:51:47.856 [DEBUG] [Thread-194410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:51:47.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:51:47.859 [DEBUG] [Thread-194410] [transport.py] [_log()] userauth is OK
2025-11-24T17:51:47.860 [DEBUG] [Thread-194410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:51:47.860 [DEBUG] [Thread-194410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:51:47.860 [DEBUG] [Thread-194410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:51:47.860 [DEBUG] [Thread-194410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:51:47.898 [INFO] [Thread-194410] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:51:47.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:51:48.515 [DEBUG] [Thread-194410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:51:48.515 [DEBUG] [Thread-194410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:51:48.516 [DEBUG] [Thread-194410] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:51:48.556 [DEBUG] [Thread-194410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:51:48.556 [DEBUG] [Thread-194410] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:51:48.559 [DEBUG] [Thread-194410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:51:48.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:51:48.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:51:48.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:51:48.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:51:48.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:51:48.581 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:51:48.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:51:48.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:51:48.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:51:48.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.660468 -999.00  +20.80  24.53     25   +0.50 1 1 1 1 1   887    0 19.58 -26.51 ----- 29.0 24.5 196.2 32.0 23.6 -28.7 23.6 -29.0 25.0 -26.6 25.2 -28.2
2025-11-24T17:51:48.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:51:48.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:51:48.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.660468
2025-11-24T17:51:48.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:51:48.597 [DEBUG] [Thread-194410] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:51:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:51:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:51:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:51:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:51:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:51:40', tmtdew=23.88, humidity=19.8, cloud=0.0, wind=29.59, temperature=21.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:51:04.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:51:48.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:51:48.684 [DEBUG] [Thread-194413] [transport.py] [_log()] starting thread (client mode): 0xd07398a0
2025-11-24T17:51:48.684 [DEBUG] [Thread-194413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:51:48.698 [DEBUG] [Thread-194413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:51:48.698 [INFO] [Thread-194413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:51:48.705 [DEBUG] [Thread-194413] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] client lang: <none>
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] server lang: <none>
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] kex follows: False
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] Compression: none
2025-11-24T17:51:48.706 [DEBUG] [Thread-194413] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:51:48.763 [DEBUG] [Thread-194413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:51:48.763 [DEBUG] [Thread-194413] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:51:48.763 [DEBUG] [Thread-194413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:51:48.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:51:48.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:51:48.824 [DEBUG] [Thread-194413] [transport.py] [_log()] userauth is OK
2025-11-24T17:51:48.824 [DEBUG] [Thread-194413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:51:48.824 [DEBUG] [Thread-194413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:51:48.824 [DEBUG] [Thread-194413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:51:48.824 [DEBUG] [Thread-194413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:51:48.838 [INFO] [Thread-194413] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:51:48.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:51:48.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:51:49.699 [DEBUG] [Thread-194413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:51:49.700 [DEBUG] [Thread-194413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:51:49.747 [DEBUG] [Thread-194413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:51:49.748 [DEBUG] [Thread-194413] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:51:49.757 [DEBUG] [Thread-194413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:51:49.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:51:49.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-11-24T17:51:49.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:51:49.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:51:49.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:51:49.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:51:49.804 [DEBUG] [Thread-194413] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:52:02.152 [DEBUG] [Thread-194415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:52:04.262 [DEBUG] [Thread-194416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:52:17.296 [DEBUG] [Thread-194417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:52:19.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:52:19.829 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:52:19.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-11-24T17:52:20.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 52, 12), 23.76, 19.97, 0.0, 27.72, 21.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:52:20.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:52:12
2025-11-24T17:52:20.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:52:20.960 [DEBUG] [Thread-194418] [transport.py] [_log()] starting thread (client mode): 0xd31cce50
2025-11-24T17:52:20.961 [DEBUG] [Thread-194418] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:52:20.976 [DEBUG] [Thread-194418] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:52:20.976 [INFO] [Thread-194418] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] client lang: <none>
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] server lang: <none>
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] kex follows: False
2025-11-24T17:52:20.981 [DEBUG] [Thread-194418] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:52:20.982 [DEBUG] [Thread-194418] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:52:20.982 [DEBUG] [Thread-194418] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:52:20.982 [DEBUG] [Thread-194418] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:52:20.982 [DEBUG] [Thread-194418] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:52:20.983 [DEBUG] [Thread-194418] [transport.py] [_log()] Compression: none
2025-11-24T17:52:20.983 [DEBUG] [Thread-194418] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:52:21.020 [DEBUG] [Thread-194418] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:52:21.024 [DEBUG] [Thread-194418] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:52:21.026 [DEBUG] [Thread-194418] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:52:21.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:52:21.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:52:21.031 [DEBUG] [Thread-194418] [transport.py] [_log()] userauth is OK
2025-11-24T17:52:21.031 [DEBUG] [Thread-194418] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:52:21.031 [DEBUG] [Thread-194418] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:52:21.031 [DEBUG] [Thread-194418] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:52:21.031 [DEBUG] [Thread-194418] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:52:21.060 [INFO] [Thread-194418] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:52:21.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:52:21.823 [DEBUG] [Thread-194418] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:52:21.823 [DEBUG] [Thread-194418] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:52:21.833 [DEBUG] [Thread-194418] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:52:21.864 [DEBUG] [Thread-194418] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:52:21.864 [DEBUG] [Thread-194418] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:52:21.867 [DEBUG] [Thread-194418] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:52:21.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:52:21.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:52:21.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:52:21.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:52:21.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:52:21.887 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:52:21.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:52:21.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:52:21.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:52:21.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.660815 -999.00  +20.90  23.10     25   +0.60 1 1 1 1 1   887    0 19.87 -24.86 ----- 23.0 23.1 200.6 29.2 23.6 -28.9 23.6 -29.1 25.1 -26.6 25.2 -28.8
2025-11-24T17:52:21.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:52:21.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:52:21.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.660815
2025-11-24T17:52:21.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:52:21.906 [DEBUG] [Thread-194418] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:52:21.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:52:21.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:52:21.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:52:21.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:52:21.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:52:12', tmtdew=23.76, humidity=19.97, cloud=0.0, wind=27.72, temperature=21.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:51:34.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:52:21.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:52:21.995 [DEBUG] [Thread-194421] [transport.py] [_log()] starting thread (client mode): 0xd07870a0
2025-11-24T17:52:21.995 [DEBUG] [Thread-194421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:52:22.009 [DEBUG] [Thread-194421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:52:22.009 [INFO] [Thread-194421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:52:22.016 [DEBUG] [Thread-194421] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:52:22.016 [DEBUG] [Thread-194421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:52:22.016 [DEBUG] [Thread-194421] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:52:22.016 [DEBUG] [Thread-194421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] client lang: <none>
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] server lang: <none>
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] kex follows: False
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] Compression: none
2025-11-24T17:52:22.017 [DEBUG] [Thread-194421] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:52:22.071 [DEBUG] [Thread-194421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:52:22.072 [DEBUG] [Thread-194421] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:52:22.072 [DEBUG] [Thread-194421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:52:22.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:52:22.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:52:22.128 [DEBUG] [Thread-194421] [transport.py] [_log()] userauth is OK
2025-11-24T17:52:22.128 [DEBUG] [Thread-194421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:52:22.128 [DEBUG] [Thread-194421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:52:22.128 [DEBUG] [Thread-194421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:52:22.128 [DEBUG] [Thread-194421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:52:22.142 [INFO] [Thread-194421] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:52:22.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:52:22.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:52:22.982 [DEBUG] [Thread-194421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:52:22.983 [DEBUG] [Thread-194421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:52:23.031 [DEBUG] [Thread-194421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:52:23.032 [DEBUG] [Thread-194421] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:52:23.041 [DEBUG] [Thread-194421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:52:23.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:52:23.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-11-24T17:52:23.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-11-24T17:52:23.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:52:23.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:52:23.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:52:23.080 [DEBUG] [Thread-194421] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:52:32.349 [DEBUG] [Thread-194423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:52:47.416 [DEBUG] [Thread-194424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:52:53.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:52:53.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:52:53.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-11-24T17:52:53.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 52, 45), 23.86, 19.98, 0.0, 28.78, 21.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:52:53.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:52:45
2025-11-24T17:52:53.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:52:54.102 [DEBUG] [Thread-194425] [transport.py] [_log()] starting thread (client mode): 0xd3135ae0
2025-11-24T17:52:54.102 [DEBUG] [Thread-194425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:52:54.121 [DEBUG] [Thread-194425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:52:54.122 [INFO] [Thread-194425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] client lang: <none>
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] server lang: <none>
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] kex follows: False
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] Compression: none
2025-11-24T17:52:54.125 [DEBUG] [Thread-194425] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:52:54.140 [DEBUG] [Thread-194425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:52:54.141 [DEBUG] [Thread-194425] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:52:54.141 [DEBUG] [Thread-194425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:52:54.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:52:54.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:52:54.142 [DEBUG] [Thread-194425] [transport.py] [_log()] userauth is OK
2025-11-24T17:52:54.142 [DEBUG] [Thread-194425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:52:54.142 [DEBUG] [Thread-194425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:52:54.142 [DEBUG] [Thread-194425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:52:54.142 [DEBUG] [Thread-194425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:52:54.152 [INFO] [Thread-194425] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:52:54.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:52:54.748 [DEBUG] [Thread-194425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:52:54.748 [DEBUG] [Thread-194425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:52:54.748 [DEBUG] [Thread-194425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:52:54.789 [DEBUG] [Thread-194425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:52:54.789 [DEBUG] [Thread-194425] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:52:54.791 [DEBUG] [Thread-194425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:52:54.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:52:54.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:52:54.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:52:54.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:52:54.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:52:54.808 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:52:54.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.661162 -999.00  +20.70  24.63     26   +0.60 1 1 1 1 1   887    0 19.88 -25.40 ----- 18.1 24.6 194.0 34.7 23.5 -28.2 23.6 -28.3 25.0 -27.7 25.1 -29.9
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.661162
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:52:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:52:45', tmtdew=23.86, humidity=19.98, cloud=0.0, wind=28.78, temperature=21.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:52:04.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:52:54.809 [DEBUG] [Thread-194425] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:52:54.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:52:54.894 [DEBUG] [Thread-194428] [transport.py] [_log()] starting thread (client mode): 0xd07ce110
2025-11-24T17:52:54.895 [DEBUG] [Thread-194428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:52:54.909 [DEBUG] [Thread-194428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:52:54.909 [INFO] [Thread-194428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] client lang: <none>
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] server lang: <none>
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] kex follows: False
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] Compression: none
2025-11-24T17:52:54.917 [DEBUG] [Thread-194428] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:52:54.976 [DEBUG] [Thread-194428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:52:54.976 [DEBUG] [Thread-194428] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:52:54.976 [DEBUG] [Thread-194428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:52:54.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:52:54.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:52:55.033 [DEBUG] [Thread-194428] [transport.py] [_log()] userauth is OK
2025-11-24T17:52:55.033 [DEBUG] [Thread-194428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:52:55.033 [DEBUG] [Thread-194428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:52:55.033 [DEBUG] [Thread-194428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:52:55.033 [DEBUG] [Thread-194428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:52:55.046 [INFO] [Thread-194428] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:52:55.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:52:55.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:52:55.903 [DEBUG] [Thread-194428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:52:55.903 [DEBUG] [Thread-194428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:52:55.952 [DEBUG] [Thread-194428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:52:55.952 [DEBUG] [Thread-194428] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:52:55.960 [DEBUG] [Thread-194428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:52:55.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:52:55.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-11-24T17:52:55.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-11-24T17:52:55.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:52:55.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:52:55.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:52:55.992 [DEBUG] [Thread-194428] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:53:02.443 [DEBUG] [Thread-194430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:53:04.481 [DEBUG] [Thread-194431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:53:17.529 [DEBUG] [Thread-194432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:53:26.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:53:26.025 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:53:26.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-11-24T17:53:26.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 53, 17), 23.86, 19.95, 0.0, 26.08, 21.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:53:26.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:53:17
2025-11-24T17:53:27.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:53:27.277 [DEBUG] [Thread-194433] [transport.py] [_log()] starting thread (client mode): 0xd31344f0
2025-11-24T17:53:27.278 [DEBUG] [Thread-194433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:53:27.287 [DEBUG] [Thread-194433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:53:27.287 [INFO] [Thread-194433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] client lang: <none>
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] server lang: <none>
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] kex follows: False
2025-11-24T17:53:27.291 [DEBUG] [Thread-194433] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:53:27.292 [DEBUG] [Thread-194433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:53:27.292 [DEBUG] [Thread-194433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:53:27.292 [DEBUG] [Thread-194433] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:53:27.292 [DEBUG] [Thread-194433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:53:27.292 [DEBUG] [Thread-194433] [transport.py] [_log()] Compression: none
2025-11-24T17:53:27.293 [DEBUG] [Thread-194433] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:53:27.329 [DEBUG] [Thread-194433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:53:27.333 [DEBUG] [Thread-194433] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:53:27.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:53:27.337 [DEBUG] [Thread-194433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:53:27.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:53:27.340 [DEBUG] [Thread-194433] [transport.py] [_log()] userauth is OK
2025-11-24T17:53:27.341 [DEBUG] [Thread-194433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:53:27.341 [DEBUG] [Thread-194433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:53:27.341 [DEBUG] [Thread-194433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:53:27.341 [DEBUG] [Thread-194433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:53:27.368 [INFO] [Thread-194433] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:53:27.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:53:28.138 [DEBUG] [Thread-194433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:53:28.138 [DEBUG] [Thread-194433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:53:28.140 [DEBUG] [Thread-194433] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:53:28.180 [DEBUG] [Thread-194433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:53:28.180 [DEBUG] [Thread-194433] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:53:28.184 [DEBUG] [Thread-194433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:53:28.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:53:28.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:53:28.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:53:28.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:53:28.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:53:28.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:53:28.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:53:28.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:53:28.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:53:28.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.661510 -999.00  +20.90  21.51     26   +0.70 1 1 1 1 1   887    0 19.60 -24.39 ----- 17.8 21.5 201.2 28.9 23.6 -28.6 23.6 -28.1 25.0 -27.4 25.2 -29.4
2025-11-24T17:53:28.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:53:28.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:53:28.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.661510
2025-11-24T17:53:28.216 [DEBUG] [Thread-194433] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:53:28.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:53:28.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:53:28.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:53:28.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:53:28.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:53:28.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:53:17', tmtdew=23.86, humidity=19.95, cloud=0.0, wind=26.08, temperature=21.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:52:34.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:53:28.318 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:53:28.331 [DEBUG] [Thread-194436] [transport.py] [_log()] starting thread (client mode): 0xd3135a80
2025-11-24T17:53:28.331 [DEBUG] [Thread-194436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:53:28.345 [DEBUG] [Thread-194436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:53:28.345 [INFO] [Thread-194436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:53:28.353 [DEBUG] [Thread-194436] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:53:28.353 [DEBUG] [Thread-194436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] client lang: <none>
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] server lang: <none>
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] kex follows: False
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] Compression: none
2025-11-24T17:53:28.354 [DEBUG] [Thread-194436] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:53:28.412 [DEBUG] [Thread-194436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:53:28.412 [DEBUG] [Thread-194436] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:53:28.413 [DEBUG] [Thread-194436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:53:28.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:53:28.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:53:28.468 [DEBUG] [Thread-194436] [transport.py] [_log()] userauth is OK
2025-11-24T17:53:28.468 [DEBUG] [Thread-194436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:53:28.468 [DEBUG] [Thread-194436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:53:28.468 [DEBUG] [Thread-194436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:53:28.468 [DEBUG] [Thread-194436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:53:28.483 [INFO] [Thread-194436] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:53:28.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:53:28.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:53:29.317 [DEBUG] [Thread-194436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:53:29.317 [DEBUG] [Thread-194436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:53:29.365 [DEBUG] [Thread-194436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:53:29.366 [DEBUG] [Thread-194436] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:53:29.374 [DEBUG] [Thread-194436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:53:29.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:53:29.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-11-24T17:53:29.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') -> 00000000
2025-11-24T17:53:29.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:53:29.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:53:29.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:53:29.412 [DEBUG] [Thread-194436] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:53:32.555 [DEBUG] [Thread-194438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:53:47.597 [DEBUG] [Thread-194439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:53:59.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:53:59.444 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:53:59.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-11-24T17:54:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 53, 51), 23.79, 20.0, 0.0, 24.51, 21.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:54:00.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:53:51
2025-11-24T17:54:00.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:54:00.765 [DEBUG] [Thread-194440] [transport.py] [_log()] starting thread (client mode): 0xd07fa9e0
2025-11-24T17:54:00.765 [DEBUG] [Thread-194440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:54:00.782 [DEBUG] [Thread-194440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:54:00.782 [INFO] [Thread-194440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:54:00.784 [DEBUG] [Thread-194440] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:54:00.784 [DEBUG] [Thread-194440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:54:00.784 [DEBUG] [Thread-194440] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:54:00.784 [DEBUG] [Thread-194440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:54:00.784 [DEBUG] [Thread-194440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:54:00.784 [DEBUG] [Thread-194440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:54:00.784 [DEBUG] [Thread-194440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:54:00.784 [DEBUG] [Thread-194440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] client lang: <none>
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] server lang: <none>
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] kex follows: False
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] Compression: none
2025-11-24T17:54:00.785 [DEBUG] [Thread-194440] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:54:00.797 [DEBUG] [Thread-194440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:54:00.797 [DEBUG] [Thread-194440] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:54:00.798 [DEBUG] [Thread-194440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:54:00.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:54:00.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:54:00.802 [DEBUG] [Thread-194440] [transport.py] [_log()] userauth is OK
2025-11-24T17:54:00.802 [DEBUG] [Thread-194440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:54:00.802 [DEBUG] [Thread-194440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:54:00.802 [DEBUG] [Thread-194440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:54:00.802 [DEBUG] [Thread-194440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:54:00.825 [INFO] [Thread-194440] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:54:00.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:54:01.414 [DEBUG] [Thread-194440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:54:01.415 [DEBUG] [Thread-194440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:54:01.416 [DEBUG] [Thread-194440] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:54:01.456 [DEBUG] [Thread-194440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:54:01.456 [DEBUG] [Thread-194440] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:54:01.460 [DEBUG] [Thread-194440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:54:01.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:54:01.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:54:01.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:54:01.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:54:01.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:54:01.486 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:54:01.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:54:01.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:54:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:54:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.662204 -999.00  +21.00  19.49     25   +0.70 1 1 1 1 1   887    0 19.46 -24.84 ----- 19.3 19.5 185.2 23.9 23.7 -28.5 23.7 -28.9 25.1 -26.1 25.3 -28.2
2025-11-24T17:54:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:54:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:54:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.662204
2025-11-24T17:54:01.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:54:01.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:54:01.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:54:01.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:54:01.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:54:01.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:53:51', tmtdew=23.79, humidity=20.0, cloud=0.0, wind=24.51, temperature=21.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:53:34.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:54:01.498 [DEBUG] [Thread-194440] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:54:01.580 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:54:01.592 [DEBUG] [Thread-194443] [transport.py] [_log()] starting thread (client mode): 0xd31ed0f0
2025-11-24T17:54:01.592 [DEBUG] [Thread-194443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:54:01.606 [DEBUG] [Thread-194443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:54:01.606 [INFO] [Thread-194443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:54:01.614 [DEBUG] [Thread-194443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:54:01.614 [DEBUG] [Thread-194443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:54:01.614 [DEBUG] [Thread-194443] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:54:01.614 [DEBUG] [Thread-194443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:54:01.614 [DEBUG] [Thread-194443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:54:01.614 [DEBUG] [Thread-194443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] client lang: <none>
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] server lang: <none>
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] kex follows: False
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] Compression: none
2025-11-24T17:54:01.615 [DEBUG] [Thread-194443] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:54:01.674 [DEBUG] [Thread-194443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:54:01.674 [DEBUG] [Thread-194443] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:54:01.675 [DEBUG] [Thread-194443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:54:01.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:54:01.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:54:01.734 [DEBUG] [Thread-194443] [transport.py] [_log()] userauth is OK
2025-11-24T17:54:01.735 [DEBUG] [Thread-194443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:54:01.735 [DEBUG] [Thread-194443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:54:01.735 [DEBUG] [Thread-194443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:54:01.735 [DEBUG] [Thread-194443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:54:01.760 [INFO] [Thread-194443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:54:01.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:54:01.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:54:02.631 [DEBUG] [Thread-194445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:54:02.642 [DEBUG] [Thread-194443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:54:02.643 [DEBUG] [Thread-194443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:54:02.690 [DEBUG] [Thread-194443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:54:02.690 [DEBUG] [Thread-194443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:54:02.698 [DEBUG] [Thread-194443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:54:02.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:54:02.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-11-24T17:54:02.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-11-24T17:54:02.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:54:02.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:54:02.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:54:02.732 [DEBUG] [Thread-194443] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:54:04.741 [DEBUG] [Thread-194446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:54:17.742 [DEBUG] [Thread-194447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:54:32.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:54:32.727 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:54:32.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:54:32.798 [DEBUG] [Thread-194448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:54:33.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 54, 23), 23.87, 19.92, 0.0, 28.55, 21.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:54:33.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:54:23
2025-11-24T17:54:33.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:54:33.884 [DEBUG] [Thread-194449] [transport.py] [_log()] starting thread (client mode): 0xd31ec640
2025-11-24T17:54:33.885 [DEBUG] [Thread-194449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:54:33.888 [DEBUG] [Thread-194449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:54:33.889 [INFO] [Thread-194449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] client lang: <none>
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] server lang: <none>
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] kex follows: False
2025-11-24T17:54:33.894 [DEBUG] [Thread-194449] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:54:33.895 [DEBUG] [Thread-194449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:54:33.895 [DEBUG] [Thread-194449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:54:33.895 [DEBUG] [Thread-194449] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:54:33.895 [DEBUG] [Thread-194449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:54:33.895 [DEBUG] [Thread-194449] [transport.py] [_log()] Compression: none
2025-11-24T17:54:33.895 [DEBUG] [Thread-194449] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:54:33.927 [DEBUG] [Thread-194449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:54:33.933 [DEBUG] [Thread-194449] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:54:33.935 [DEBUG] [Thread-194449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:54:33.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:54:33.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:54:33.940 [DEBUG] [Thread-194449] [transport.py] [_log()] userauth is OK
2025-11-24T17:54:33.940 [DEBUG] [Thread-194449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:54:33.940 [DEBUG] [Thread-194449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:54:33.940 [DEBUG] [Thread-194449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:54:33.940 [DEBUG] [Thread-194449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:54:33.967 [INFO] [Thread-194449] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:54:33.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:54:34.560 [DEBUG] [Thread-194449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:54:34.560 [DEBUG] [Thread-194449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:54:34.565 [DEBUG] [Thread-194449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:54:34.600 [DEBUG] [Thread-194449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:54:34.600 [DEBUG] [Thread-194449] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:54:34.604 [DEBUG] [Thread-194449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:54:34.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:54:34.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:54:34.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:54:34.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:54:34.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:54:34.631 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:54:34.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:54:34.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:54:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:54:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.662551 -999.00  +21.10  14.67     25   +0.70 1 1 1 1 1   887    0 19.74 -22.60 ----- 13.5 14.7 184.8 27.0 23.8 -28.0 23.9 -28.0 25.2 -26.1 25.3 -27.7
2025-11-24T17:54:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:54:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:54:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.662551
2025-11-24T17:54:34.639 [DEBUG] [Thread-194449] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:54:34.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:54:34.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:54:34.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:54:34.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:54:34.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:54:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:54:23', tmtdew=23.87, humidity=19.92, cloud=0.0, wind=28.55, temperature=21.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:54:04.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:54:34.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:54:34.771 [DEBUG] [Thread-194452] [transport.py] [_log()] starting thread (client mode): 0xd31374c0
2025-11-24T17:54:34.771 [DEBUG] [Thread-194452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:54:34.784 [DEBUG] [Thread-194452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:54:34.784 [INFO] [Thread-194452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:54:34.792 [DEBUG] [Thread-194452] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:54:34.792 [DEBUG] [Thread-194452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:54:34.792 [DEBUG] [Thread-194452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:54:34.792 [DEBUG] [Thread-194452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] client lang: <none>
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] server lang: <none>
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] kex follows: False
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] Compression: none
2025-11-24T17:54:34.793 [DEBUG] [Thread-194452] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:54:34.850 [DEBUG] [Thread-194452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:54:34.851 [DEBUG] [Thread-194452] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:54:34.852 [DEBUG] [Thread-194452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:54:34.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:54:34.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:54:34.909 [DEBUG] [Thread-194452] [transport.py] [_log()] userauth is OK
2025-11-24T17:54:34.909 [DEBUG] [Thread-194452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:54:34.909 [DEBUG] [Thread-194452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:54:34.909 [DEBUG] [Thread-194452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:54:34.909 [DEBUG] [Thread-194452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:54:34.928 [INFO] [Thread-194452] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:54:34.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:54:34.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:54:35.757 [DEBUG] [Thread-194452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:54:35.757 [DEBUG] [Thread-194452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:54:35.805 [DEBUG] [Thread-194452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:54:35.805 [DEBUG] [Thread-194452] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:54:35.813 [DEBUG] [Thread-194452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:54:35.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:54:35.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-11-24T17:54:35.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-11-24T17:54:35.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:54:35.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:54:35.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:54:35.856 [DEBUG] [Thread-194452] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:54:47.829 [DEBUG] [Thread-194454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:55:02.932 [DEBUG] [Thread-194455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:55:05.062 [DEBUG] [Thread-194456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:55:05.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:55:05.881 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:55:05.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-11-24T17:55:06.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 54, 56), 24.07, 19.9, 0.0, 27.38, 21.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:55:06.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:54:56
2025-11-24T17:55:06.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:55:07.108 [DEBUG] [Thread-194457] [transport.py] [_log()] starting thread (client mode): 0xd07fa380
2025-11-24T17:55:07.109 [DEBUG] [Thread-194457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:55:07.115 [DEBUG] [Thread-194457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:55:07.115 [INFO] [Thread-194457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:55:07.117 [DEBUG] [Thread-194457] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] client lang: <none>
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] server lang: <none>
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] kex follows: False
2025-11-24T17:55:07.118 [DEBUG] [Thread-194457] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:55:07.119 [DEBUG] [Thread-194457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:55:07.119 [DEBUG] [Thread-194457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:55:07.119 [DEBUG] [Thread-194457] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:55:07.119 [DEBUG] [Thread-194457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:55:07.119 [DEBUG] [Thread-194457] [transport.py] [_log()] Compression: none
2025-11-24T17:55:07.119 [DEBUG] [Thread-194457] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:55:07.150 [DEBUG] [Thread-194457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:55:07.154 [DEBUG] [Thread-194457] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:55:07.156 [DEBUG] [Thread-194457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:55:07.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:55:07.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:55:07.161 [DEBUG] [Thread-194457] [transport.py] [_log()] userauth is OK
2025-11-24T17:55:07.161 [DEBUG] [Thread-194457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:55:07.161 [DEBUG] [Thread-194457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:55:07.161 [DEBUG] [Thread-194457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:55:07.162 [DEBUG] [Thread-194457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:55:07.186 [INFO] [Thread-194457] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:55:07.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:55:09.778 [DEBUG] [Thread-194457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:55:09.778 [DEBUG] [Thread-194457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:55:09.788 [DEBUG] [Thread-194457] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:55:09.818 [DEBUG] [Thread-194457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:55:09.819 [DEBUG] [Thread-194457] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:55:09.822 [DEBUG] [Thread-194457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:55:09.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:55:09.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:55:09.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:55:09.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:55:09.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:55:09.852 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:55:09.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:55:09.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:55:09.854 [DEBUG] [Thread-194457] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:55:09.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:55:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.662899 -999.00  +21.20  20.66     25   +0.70 1 1 1 1 1   887    0 19.70 -21.85 ----- 20.0 20.7 186.2 28.0 23.8 -28.3 23.8 -28.4 25.2 -28.2 25.4 -29.6
2025-11-24T17:55:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:55:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:55:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.662899
2025-11-24T17:55:09.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:55:09.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:55:09.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:55:09.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:55:09.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:55:09.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:54:56', tmtdew=24.07, humidity=19.9, cloud=0.0, wind=27.38, temperature=21.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:54:34.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:55:09.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:55:09.965 [DEBUG] [Thread-194460] [transport.py] [_log()] starting thread (client mode): 0xd07f8940
2025-11-24T17:55:09.965 [DEBUG] [Thread-194460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:55:09.980 [DEBUG] [Thread-194460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:55:09.980 [INFO] [Thread-194460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] client lang: <none>
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] server lang: <none>
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] kex follows: False
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:55:09.988 [DEBUG] [Thread-194460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:55:09.989 [DEBUG] [Thread-194460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:55:09.989 [DEBUG] [Thread-194460] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:55:09.989 [DEBUG] [Thread-194460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:55:09.989 [DEBUG] [Thread-194460] [transport.py] [_log()] Compression: none
2025-11-24T17:55:09.989 [DEBUG] [Thread-194460] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:55:10.044 [DEBUG] [Thread-194460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:55:10.045 [DEBUG] [Thread-194460] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:55:10.045 [DEBUG] [Thread-194460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:55:10.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:55:10.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:55:10.100 [DEBUG] [Thread-194460] [transport.py] [_log()] userauth is OK
2025-11-24T17:55:10.101 [DEBUG] [Thread-194460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:55:10.101 [DEBUG] [Thread-194460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:55:10.101 [DEBUG] [Thread-194460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:55:10.101 [DEBUG] [Thread-194460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:55:10.122 [INFO] [Thread-194460] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:55:10.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:55:10.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:55:10.928 [DEBUG] [Thread-194460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:55:10.928 [DEBUG] [Thread-194460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:55:10.976 [DEBUG] [Thread-194460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:55:10.976 [DEBUG] [Thread-194460] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:55:10.984 [DEBUG] [Thread-194460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:55:10.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:55:10.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-11-24T17:55:11.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-11-24T17:55:11.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:55:11.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:55:11.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:55:11.020 [DEBUG] [Thread-194460] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:55:17.983 [DEBUG] [Thread-194462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:55:33.058 [DEBUG] [Thread-194463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:55:41.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:55:41.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:55: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-11-24T17:55:41.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 55, 28), 24.05, 19.93, 0.0, 33.36, 21.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:55:41.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:55:28
2025-11-24T17:55:41.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:55:42.078 [DEBUG] [Thread-194464] [transport.py] [_log()] starting thread (client mode): 0xd07fb2e0
2025-11-24T17:55:42.079 [DEBUG] [Thread-194464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:55:42.095 [DEBUG] [Thread-194464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:55:42.095 [INFO] [Thread-194464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:55:42.097 [DEBUG] [Thread-194464] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] client lang: <none>
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] server lang: <none>
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] kex follows: False
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:55:42.098 [DEBUG] [Thread-194464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:55:42.099 [DEBUG] [Thread-194464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:55:42.099 [DEBUG] [Thread-194464] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:55:42.099 [DEBUG] [Thread-194464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:55:42.099 [DEBUG] [Thread-194464] [transport.py] [_log()] Compression: none
2025-11-24T17:55:42.099 [DEBUG] [Thread-194464] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:55:42.114 [DEBUG] [Thread-194464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:55:42.114 [DEBUG] [Thread-194464] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:55:42.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:55:42.117 [DEBUG] [Thread-194464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:55:42.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:55:42.118 [DEBUG] [Thread-194464] [transport.py] [_log()] userauth is OK
2025-11-24T17:55:42.118 [DEBUG] [Thread-194464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:55:42.119 [DEBUG] [Thread-194464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:55:42.119 [DEBUG] [Thread-194464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:55:42.119 [DEBUG] [Thread-194464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:55:42.142 [INFO] [Thread-194464] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:55:42.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:55:42.743 [DEBUG] [Thread-194464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:55:42.743 [DEBUG] [Thread-194464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:55:42.744 [DEBUG] [Thread-194464] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:55:42.784 [DEBUG] [Thread-194464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:55:42.785 [DEBUG] [Thread-194464] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:55:42.787 [DEBUG] [Thread-194464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:55:42.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:55:42.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:55:42.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:55:42.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:55:42.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:55:42.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:55:42.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:55:42.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:55:42.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:55:42.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.662899 -999.00  +21.20  20.66     25   +0.70 1 1 1 1 1   887    0 19.70 -21.85 ----- 20.0 20.7 186.2 28.0 23.8 -28.3 23.8 -28.4 25.2 -28.2 25.4 -29.6
2025-11-24T17:55:42.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:55:42.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:55:42.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.662899
2025-11-24T17:55:42.818 [DEBUG] [Thread-194464] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:55:42.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:55:42.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:55:42.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:55:42.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:55:42.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:55:42.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:55:28', tmtdew=24.05, humidity=19.93, cloud=0.0, wind=33.36, temperature=21.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:54:34.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:55:42.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:55:42.936 [DEBUG] [Thread-194467] [transport.py] [_log()] starting thread (client mode): 0xd31ec640
2025-11-24T17:55:42.936 [DEBUG] [Thread-194467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:55:42.950 [DEBUG] [Thread-194467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:55:42.951 [INFO] [Thread-194467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] client lang: <none>
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] server lang: <none>
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] kex follows: False
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] Compression: none
2025-11-24T17:55:42.958 [DEBUG] [Thread-194467] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:55:43.017 [DEBUG] [Thread-194467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:55:43.017 [DEBUG] [Thread-194467] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:55:43.017 [DEBUG] [Thread-194467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:55:43.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:55:43.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:55:43.072 [DEBUG] [Thread-194467] [transport.py] [_log()] userauth is OK
2025-11-24T17:55:43.072 [DEBUG] [Thread-194467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:55:43.072 [DEBUG] [Thread-194467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:55:43.072 [DEBUG] [Thread-194467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:55:43.072 [DEBUG] [Thread-194467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:55:43.086 [INFO] [Thread-194467] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:55:43.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:55:43.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:55:43.915 [DEBUG] [Thread-194467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:55:43.915 [DEBUG] [Thread-194467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:55:43.964 [DEBUG] [Thread-194467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:55:43.964 [DEBUG] [Thread-194467] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:55:43.973 [DEBUG] [Thread-194467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:55:43.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:55:43.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')
2025-11-24T17:55:43.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:55:44.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:55:44.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:55:44.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:55:44.010 [DEBUG] [Thread-194467] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:55:48.091 [DEBUG] [Thread-194469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:56:03.141 [DEBUG] [Thread-194470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:56:05.325 [DEBUG] [Thread-194471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:56:14.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:56:14.038 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:56:14.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-11-24T17:56:14.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 56, 1), 23.9, 20.0, 0.0, 36.98, 21.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:56:14.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:56:01
2025-11-24T17:56:15.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:56:15.203 [DEBUG] [Thread-194472] [transport.py] [_log()] starting thread (client mode): 0xd07fb1f0
2025-11-24T17:56:15.204 [DEBUG] [Thread-194472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:56:15.214 [DEBUG] [Thread-194472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:56:15.215 [INFO] [Thread-194472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] client lang: <none>
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] server lang: <none>
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] kex follows: False
2025-11-24T17:56:15.219 [DEBUG] [Thread-194472] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:56:15.220 [DEBUG] [Thread-194472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:56:15.220 [DEBUG] [Thread-194472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:56:15.220 [DEBUG] [Thread-194472] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:56:15.220 [DEBUG] [Thread-194472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:56:15.220 [DEBUG] [Thread-194472] [transport.py] [_log()] Compression: none
2025-11-24T17:56:15.220 [DEBUG] [Thread-194472] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:56:15.252 [DEBUG] [Thread-194472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:56:15.256 [DEBUG] [Thread-194472] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:56:15.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:56:15.259 [DEBUG] [Thread-194472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:56:15.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:56:15.263 [DEBUG] [Thread-194472] [transport.py] [_log()] userauth is OK
2025-11-24T17:56:15.263 [DEBUG] [Thread-194472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:56:15.263 [DEBUG] [Thread-194472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:56:15.263 [DEBUG] [Thread-194472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:56:15.263 [DEBUG] [Thread-194472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:56:15.300 [INFO] [Thread-194472] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:56:15.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:56:15.865 [DEBUG] [Thread-194472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:56:15.865 [DEBUG] [Thread-194472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:56:15.866 [DEBUG] [Thread-194472] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:56:15.906 [DEBUG] [Thread-194472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:56:15.906 [DEBUG] [Thread-194472] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:56:15.909 [DEBUG] [Thread-194472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:56:15.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:56:15.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:56:15.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:56:15.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:56:15.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:56:15.929 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:56:15.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:56:15.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:56:15.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:56:15.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.663593 -999.00  +21.30  13.98     25   +0.80 1 1 1 1 1   887    0 19.94 -17.34 ----- 18.5 14.0 196.5 23.5 23.8 -28.9 23.9 -29.8 25.3 -26.7 25.5 -29.1
2025-11-24T17:56:15.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:56:15.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:56:15.931 [DEBUG] [Thread-194472] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:56:15.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.663593
2025-11-24T17:56:15.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:56:15.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:56:15.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:56:15.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:56:15.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:56:15.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:56:01', tmtdew=23.9, humidity=20.0, cloud=0.0, wind=36.98, temperature=21.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:55:34.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:56:16.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:56:16.035 [DEBUG] [Thread-194475] [transport.py] [_log()] starting thread (client mode): 0xd07fbfa0
2025-11-24T17:56:16.035 [DEBUG] [Thread-194475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:56:16.051 [DEBUG] [Thread-194475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:56:16.052 [INFO] [Thread-194475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:56:16.059 [DEBUG] [Thread-194475] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:56:16.059 [DEBUG] [Thread-194475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:56:16.059 [DEBUG] [Thread-194475] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:56:16.059 [DEBUG] [Thread-194475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:56:16.059 [DEBUG] [Thread-194475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:56:16.059 [DEBUG] [Thread-194475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:56:16.059 [DEBUG] [Thread-194475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:56:16.059 [DEBUG] [Thread-194475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:56:16.059 [DEBUG] [Thread-194475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:56:16.060 [DEBUG] [Thread-194475] [transport.py] [_log()] client lang: <none>
2025-11-24T17:56:16.060 [DEBUG] [Thread-194475] [transport.py] [_log()] server lang: <none>
2025-11-24T17:56:16.060 [DEBUG] [Thread-194475] [transport.py] [_log()] kex follows: False
2025-11-24T17:56:16.060 [DEBUG] [Thread-194475] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:56:16.060 [DEBUG] [Thread-194475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:56:16.060 [DEBUG] [Thread-194475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:56:16.060 [DEBUG] [Thread-194475] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:56:16.060 [DEBUG] [Thread-194475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:56:16.060 [DEBUG] [Thread-194475] [transport.py] [_log()] Compression: none
2025-11-24T17:56:16.060 [DEBUG] [Thread-194475] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:56:16.116 [DEBUG] [Thread-194475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:56:16.116 [DEBUG] [Thread-194475] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:56:16.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:56:16.117 [DEBUG] [Thread-194475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:56:16.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:56:16.172 [DEBUG] [Thread-194475] [transport.py] [_log()] userauth is OK
2025-11-24T17:56:16.172 [DEBUG] [Thread-194475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:56:16.172 [DEBUG] [Thread-194475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:56:16.173 [DEBUG] [Thread-194475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:56:16.173 [DEBUG] [Thread-194475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:56:16.194 [INFO] [Thread-194475] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:56:16.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:56:16.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:56:17.074 [DEBUG] [Thread-194475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:56:17.074 [DEBUG] [Thread-194475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:56:17.122 [DEBUG] [Thread-194475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:56:17.122 [DEBUG] [Thread-194475] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:56:17.130 [DEBUG] [Thread-194475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:56:17.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:56:17.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-11-24T17:56:17.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-11-24T17:56:17.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:56:17.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:56:17.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:56:17.172 [DEBUG] [Thread-194475] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:56:18.225 [DEBUG] [Thread-194477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:56:33.379 [DEBUG] [Thread-194478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:56:47.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:56:47.196 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:56:47.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-11-24T17:56:47.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 56, 34), 23.77, 20.03, 0.0, 33.98, 21.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:56:47.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:56:34
2025-11-24T17:56:48.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:56:48.326 [DEBUG] [Thread-194479] [transport.py] [_log()] starting thread (client mode): 0xd0787d90
2025-11-24T17:56:48.326 [DEBUG] [Thread-194479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:56:48.341 [DEBUG] [Thread-194479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:56:48.341 [INFO] [Thread-194479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:56:48.343 [DEBUG] [Thread-194479] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:56:48.343 [DEBUG] [Thread-194479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:56:48.343 [DEBUG] [Thread-194479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:56:48.343 [DEBUG] [Thread-194479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:56:48.343 [DEBUG] [Thread-194479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:56:48.343 [DEBUG] [Thread-194479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:56:48.343 [DEBUG] [Thread-194479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:56:48.343 [DEBUG] [Thread-194479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:56:48.343 [DEBUG] [Thread-194479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:56:48.344 [DEBUG] [Thread-194479] [transport.py] [_log()] client lang: <none>
2025-11-24T17:56:48.344 [DEBUG] [Thread-194479] [transport.py] [_log()] server lang: <none>
2025-11-24T17:56:48.344 [DEBUG] [Thread-194479] [transport.py] [_log()] kex follows: False
2025-11-24T17:56:48.344 [DEBUG] [Thread-194479] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:56:48.344 [DEBUG] [Thread-194479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:56:48.344 [DEBUG] [Thread-194479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:56:48.344 [DEBUG] [Thread-194479] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:56:48.344 [DEBUG] [Thread-194479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:56:48.344 [DEBUG] [Thread-194479] [transport.py] [_log()] Compression: none
2025-11-24T17:56:48.344 [DEBUG] [Thread-194479] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:56:48.356 [DEBUG] [Thread-194479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:56:48.357 [DEBUG] [Thread-194479] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:56:48.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:56:48.357 [DEBUG] [Thread-194479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:56:48.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:56:48.358 [DEBUG] [Thread-194479] [transport.py] [_log()] userauth is OK
2025-11-24T17:56:48.358 [DEBUG] [Thread-194479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:56:48.358 [DEBUG] [Thread-194479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:56:48.358 [DEBUG] [Thread-194479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:56:48.358 [DEBUG] [Thread-194479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:56:48.371 [INFO] [Thread-194479] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:56:48.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:56:48.410 [DEBUG] [Thread-194481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:56:48.960 [DEBUG] [Thread-194479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:56:48.961 [DEBUG] [Thread-194479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:56:48.961 [DEBUG] [Thread-194479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:56:49.001 [DEBUG] [Thread-194479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:56:49.001 [DEBUG] [Thread-194479] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:56:49.004 [DEBUG] [Thread-194479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:56:49.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:56:49.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:56:49.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:56:49.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:56:49.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:56:49.024 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:56:49.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:56:49.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:56:49.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:56:49.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.663940 -999.00  +21.20  21.27     25   +0.70 1 1 1 1 1   887    0 20.36 -15.63 ----- 21.6 21.3 197.0 28.3 23.8 -28.9 23.9 -28.8 25.2 -27.0 25.4 -29.9
2025-11-24T17:56:49.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:56:49.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:56:49.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.663940
2025-11-24T17:56:49.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:56:49.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:56:49.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:56:49.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:56:49.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:56:49.028 [DEBUG] [Thread-194479] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:56:49.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:56:34', tmtdew=23.77, humidity=20.03, cloud=0.0, wind=33.98, temperature=21.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:56:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:56:49.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:56:49.116 [DEBUG] [Thread-194483] [transport.py] [_log()] starting thread (client mode): 0xd0700b80
2025-11-24T17:56:49.116 [DEBUG] [Thread-194483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:56:49.130 [DEBUG] [Thread-194483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:56:49.130 [INFO] [Thread-194483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:56:49.137 [DEBUG] [Thread-194483] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:56:49.137 [DEBUG] [Thread-194483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] client lang: <none>
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] server lang: <none>
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] kex follows: False
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] Compression: none
2025-11-24T17:56:49.138 [DEBUG] [Thread-194483] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:56:49.195 [DEBUG] [Thread-194483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:56:49.195 [DEBUG] [Thread-194483] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:56:49.195 [DEBUG] [Thread-194483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:56:49.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:56:49.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:56:49.252 [DEBUG] [Thread-194483] [transport.py] [_log()] userauth is OK
2025-11-24T17:56:49.252 [DEBUG] [Thread-194483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:56:49.252 [DEBUG] [Thread-194483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:56:49.252 [DEBUG] [Thread-194483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:56:49.252 [DEBUG] [Thread-194483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:56:49.266 [INFO] [Thread-194483] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:56:49.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:56:49.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:56:50.186 [DEBUG] [Thread-194483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:56:50.186 [DEBUG] [Thread-194483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:56:50.234 [DEBUG] [Thread-194483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:56:50.234 [DEBUG] [Thread-194483] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:56:50.243 [DEBUG] [Thread-194483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:56:50.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:56: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')
2025-11-24T17:56:50.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:56:50.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:56:50.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:56:50.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:56:50.275 [DEBUG] [Thread-194483] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:57:03.445 [DEBUG] [Thread-194485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:57:06.189 [DEBUG] [Thread-194486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:57:18.620 [DEBUG] [Thread-194487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:57:20.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:57:20.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:57:20.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-11-24T17:57:21.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 57, 7), 23.77, 20.03, 0.0, 33.47, 21.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:57:21.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:57:07
2025-11-24T17:57:21.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:57:21.547 [DEBUG] [Thread-194488] [transport.py] [_log()] starting thread (client mode): 0xd0785c60
2025-11-24T17:57:21.548 [DEBUG] [Thread-194488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:57:21.559 [DEBUG] [Thread-194488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:57:21.559 [INFO] [Thread-194488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:57:21.564 [DEBUG] [Thread-194488] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:57:21.564 [DEBUG] [Thread-194488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:57:21.564 [DEBUG] [Thread-194488] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] client lang: <none>
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] server lang: <none>
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] kex follows: False
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:57:21.565 [DEBUG] [Thread-194488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:57:21.566 [DEBUG] [Thread-194488] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:57:21.566 [DEBUG] [Thread-194488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:57:21.566 [DEBUG] [Thread-194488] [transport.py] [_log()] Compression: none
2025-11-24T17:57:21.566 [DEBUG] [Thread-194488] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:57:21.593 [DEBUG] [Thread-194488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:57:21.598 [DEBUG] [Thread-194488] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:57:21.601 [DEBUG] [Thread-194488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:57:21.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:57:21.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:57:21.607 [DEBUG] [Thread-194488] [transport.py] [_log()] userauth is OK
2025-11-24T17:57:21.607 [DEBUG] [Thread-194488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:57:21.607 [DEBUG] [Thread-194488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:57:21.607 [DEBUG] [Thread-194488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:57:21.607 [DEBUG] [Thread-194488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:57:21.634 [INFO] [Thread-194488] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:57:21.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:57:22.234 [DEBUG] [Thread-194488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:57:22.234 [DEBUG] [Thread-194488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:57:22.245 [DEBUG] [Thread-194488] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:57:22.275 [DEBUG] [Thread-194488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:57:22.275 [DEBUG] [Thread-194488] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:57:22.278 [DEBUG] [Thread-194488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:57:22.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:57:22.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:57:22.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:57:22.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:57:22.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:57:22.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:57:22.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:57:22.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:57:22.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:57:22.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.664287 -999.00  +21.20  22.15     25   +0.70 1 1 1 1 1   887    0 20.24 -13.28 ----- 24.0 22.1 186.4 36.7 23.8 -29.2 23.8 -29.2 25.2 -27.6 25.3 -30.1
2025-11-24T17:57:22.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:57:22.305 [DEBUG] [Thread-194488] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:57:22.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:57:22.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.664287
2025-11-24T17:57:22.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:57:22.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:57:22.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:57:22.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:57:22.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:57:22.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:57:07', tmtdew=23.77, humidity=20.03, cloud=0.0, wind=33.47, temperature=21.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:56:34.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:57:22.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:57:22.427 [DEBUG] [Thread-194491] [transport.py] [_log()] starting thread (client mode): 0xd0784c10
2025-11-24T17:57:22.428 [DEBUG] [Thread-194491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:57:22.441 [DEBUG] [Thread-194491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:57:22.441 [INFO] [Thread-194491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:57:22.450 [DEBUG] [Thread-194491] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] client lang: <none>
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] server lang: <none>
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] kex follows: False
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] Compression: none
2025-11-24T17:57:22.451 [DEBUG] [Thread-194491] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:57:22.509 [DEBUG] [Thread-194491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:57:22.510 [DEBUG] [Thread-194491] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:57:22.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:57:22.511 [DEBUG] [Thread-194491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:57:22.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:57:22.567 [DEBUG] [Thread-194491] [transport.py] [_log()] userauth is OK
2025-11-24T17:57:22.567 [DEBUG] [Thread-194491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:57:22.567 [DEBUG] [Thread-194491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:57:22.567 [DEBUG] [Thread-194491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:57:22.567 [DEBUG] [Thread-194491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:57:22.587 [INFO] [Thread-194491] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:57:22.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:57:22.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:57:23.477 [DEBUG] [Thread-194491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:57:23.478 [DEBUG] [Thread-194491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:57:23.526 [DEBUG] [Thread-194491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:57:23.527 [DEBUG] [Thread-194491] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:57:23.536 [DEBUG] [Thread-194491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:57:23.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:57:23.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-11-24T17:57:23.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:57:23.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:57:23.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:57:23.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:57:23.573 [DEBUG] [Thread-194491] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:57:33.680 [DEBUG] [Thread-194493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:57:48.755 [DEBUG] [Thread-194494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:57:53.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:57:53.595 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:57:53.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T17:57:54.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 57, 40), 23.67, 20.07, 0.0, 35.2, 21.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:57:54.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:57:40
2025-11-24T17:57:54.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:57:54.851 [DEBUG] [Thread-194495] [transport.py] [_log()] starting thread (client mode): 0xd07cce20
2025-11-24T17:57:54.851 [DEBUG] [Thread-194495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:57:54.866 [DEBUG] [Thread-194495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:57:54.866 [INFO] [Thread-194495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] client lang: <none>
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] server lang: <none>
2025-11-24T17:57:54.870 [DEBUG] [Thread-194495] [transport.py] [_log()] kex follows: False
2025-11-24T17:57:54.871 [DEBUG] [Thread-194495] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:57:54.871 [DEBUG] [Thread-194495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:57:54.871 [DEBUG] [Thread-194495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:57:54.871 [DEBUG] [Thread-194495] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:57:54.871 [DEBUG] [Thread-194495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:57:54.871 [DEBUG] [Thread-194495] [transport.py] [_log()] Compression: none
2025-11-24T17:57:54.871 [DEBUG] [Thread-194495] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:57:54.903 [DEBUG] [Thread-194495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:57:54.905 [DEBUG] [Thread-194495] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:57:54.906 [DEBUG] [Thread-194495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:57:54.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:57:54.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:57:54.945 [DEBUG] [Thread-194495] [transport.py] [_log()] userauth is OK
2025-11-24T17:57:54.945 [DEBUG] [Thread-194495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:57:54.945 [DEBUG] [Thread-194495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:57:54.945 [DEBUG] [Thread-194495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:57:54.945 [DEBUG] [Thread-194495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:57:54.976 [INFO] [Thread-194495] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:57:54.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:57:55.554 [DEBUG] [Thread-194495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:57:55.554 [DEBUG] [Thread-194495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:57:55.554 [DEBUG] [Thread-194495] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:57:55.595 [DEBUG] [Thread-194495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:57:55.595 [DEBUG] [Thread-194495] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:57:55.597 [DEBUG] [Thread-194495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:57:55.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:57:55.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:57:55.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:57:55.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:57:55.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:57:55.618 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:57:55.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:57:55.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:57:55.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:57:55.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.664982 -999.00  +20.90  25.68     26   +0.70 1 1 1 1 1   887    0 20.37 -12.14 ----- 25.1 25.7 183.8 41.9 23.6 -29.5 23.6 -30.9 25.0 -28.1 25.2 -29.3
2025-11-24T17:57:55.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:57:55.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:57:55.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.664982
2025-11-24T17:57:55.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:57:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:57:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:57:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:57:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:57:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:57:40', tmtdew=23.67, humidity=20.07, cloud=0.0, wind=35.2, temperature=21.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:57:34.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:57:55.620 [DEBUG] [Thread-194495] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:57:55.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:57:55.708 [DEBUG] [Thread-194498] [transport.py] [_log()] starting thread (client mode): 0xd07ce740
2025-11-24T17:57:55.708 [DEBUG] [Thread-194498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:57:55.722 [DEBUG] [Thread-194498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:57:55.722 [INFO] [Thread-194498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] client lang: <none>
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] server lang: <none>
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] kex follows: False
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] Compression: none
2025-11-24T17:57:55.730 [DEBUG] [Thread-194498] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:57:55.786 [DEBUG] [Thread-194498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:57:55.786 [DEBUG] [Thread-194498] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:57:55.786 [DEBUG] [Thread-194498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:57:55.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:57:55.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:57:55.844 [DEBUG] [Thread-194498] [transport.py] [_log()] userauth is OK
2025-11-24T17:57:55.844 [DEBUG] [Thread-194498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:57:55.844 [DEBUG] [Thread-194498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:57:55.844 [DEBUG] [Thread-194498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:57:55.844 [DEBUG] [Thread-194498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:57:55.858 [INFO] [Thread-194498] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:57:55.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:57:55.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:57:56.681 [DEBUG] [Thread-194498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:57:56.681 [DEBUG] [Thread-194498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:57:56.728 [DEBUG] [Thread-194498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:57:56.729 [DEBUG] [Thread-194498] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:57:56.738 [DEBUG] [Thread-194498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:57:56.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:57:56.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-11-24T17:57:56.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T17:57:56.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:57:56.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:57:56.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:57:56.775 [DEBUG] [Thread-194498] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:58:03.793 [DEBUG] [Thread-194500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:58:06.415 [DEBUG] [Thread-194501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:58:18.899 [DEBUG] [Thread-194502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:58:26.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:58:26.800 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:58:26.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-11-24T17:58:27.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 58, 12), 23.58, 20.2, 0.0, 36.51, 21.03, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:58:27.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:58:12
2025-11-24T17:58:27.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:58:28.009 [DEBUG] [Thread-194503] [transport.py] [_log()] starting thread (client mode): 0xd07f8cd0
2025-11-24T17:58:28.010 [DEBUG] [Thread-194503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:58:28.023 [DEBUG] [Thread-194503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:58:28.023 [INFO] [Thread-194503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:58:28.028 [DEBUG] [Thread-194503] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:58:28.029 [DEBUG] [Thread-194503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:58:28.029 [DEBUG] [Thread-194503] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:58:28.029 [DEBUG] [Thread-194503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:58:28.029 [DEBUG] [Thread-194503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:58:28.029 [DEBUG] [Thread-194503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:58:28.029 [DEBUG] [Thread-194503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:58:28.029 [DEBUG] [Thread-194503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:58:28.029 [DEBUG] [Thread-194503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:58:28.030 [DEBUG] [Thread-194503] [transport.py] [_log()] client lang: <none>
2025-11-24T17:58:28.030 [DEBUG] [Thread-194503] [transport.py] [_log()] server lang: <none>
2025-11-24T17:58:28.030 [DEBUG] [Thread-194503] [transport.py] [_log()] kex follows: False
2025-11-24T17:58:28.030 [DEBUG] [Thread-194503] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:58:28.031 [DEBUG] [Thread-194503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:58:28.031 [DEBUG] [Thread-194503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:58:28.031 [DEBUG] [Thread-194503] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:58:28.031 [DEBUG] [Thread-194503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:58:28.031 [DEBUG] [Thread-194503] [transport.py] [_log()] Compression: none
2025-11-24T17:58:28.031 [DEBUG] [Thread-194503] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:58:28.069 [DEBUG] [Thread-194503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:58:28.074 [DEBUG] [Thread-194503] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:58:28.077 [DEBUG] [Thread-194503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:58:28.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:58:28.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:58:28.081 [DEBUG] [Thread-194503] [transport.py] [_log()] userauth is OK
2025-11-24T17:58:28.081 [DEBUG] [Thread-194503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:58:28.082 [DEBUG] [Thread-194503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:58:28.082 [DEBUG] [Thread-194503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:58:28.082 [DEBUG] [Thread-194503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:58:28.108 [INFO] [Thread-194503] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:58:28.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:58:28.689 [DEBUG] [Thread-194503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:58:28.699 [DEBUG] [Thread-194503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:58:28.701 [DEBUG] [Thread-194503] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:58:28.730 [DEBUG] [Thread-194503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:58:28.731 [DEBUG] [Thread-194503] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:58:28.735 [DEBUG] [Thread-194503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:58:28.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:58:28.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:58:28.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:58:28.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:58:28.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:58:28.761 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:58:28.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:58:28.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:58:28.763 [DEBUG] [Thread-194503] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:58:28.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:58:28.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.665329 -999.00  +20.70  26.36     26   +0.60 1 1 1 1 1   887    0 20.58 -15.94 ----- 21.8 26.4 182.0 39.3 23.5 -29.4 23.5 -30.0 24.9 -27.7 25.1 -30.0
2025-11-24T17:58:28.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:58:28.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:58:28.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.665329
2025-11-24T17:58:28.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:58:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:58:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:58:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:58:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:58:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:58:12', tmtdew=23.58, humidity=20.2, cloud=0.0, wind=36.51, temperature=21.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:58:04.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:58:28.877 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:58:28.889 [DEBUG] [Thread-194506] [transport.py] [_log()] starting thread (client mode): 0xd07fbaf0
2025-11-24T17:58:28.889 [DEBUG] [Thread-194506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:58:28.904 [DEBUG] [Thread-194506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:58:28.904 [INFO] [Thread-194506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:58:28.911 [DEBUG] [Thread-194506] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:58:28.911 [DEBUG] [Thread-194506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:58:28.911 [DEBUG] [Thread-194506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:58:28.911 [DEBUG] [Thread-194506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] client lang: <none>
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] server lang: <none>
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] kex follows: False
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] Compression: none
2025-11-24T17:58:28.912 [DEBUG] [Thread-194506] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:58:28.966 [DEBUG] [Thread-194506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:58:28.966 [DEBUG] [Thread-194506] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:58:28.967 [DEBUG] [Thread-194506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:58:28.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:58:28.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:58:29.024 [DEBUG] [Thread-194506] [transport.py] [_log()] userauth is OK
2025-11-24T17:58:29.024 [DEBUG] [Thread-194506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:58:29.024 [DEBUG] [Thread-194506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:58:29.024 [DEBUG] [Thread-194506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:58:29.024 [DEBUG] [Thread-194506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:58:29.038 [INFO] [Thread-194506] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:58:29.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:58:29.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:58:29.857 [DEBUG] [Thread-194506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:58:29.857 [DEBUG] [Thread-194506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:58:29.905 [DEBUG] [Thread-194506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:58:29.906 [DEBUG] [Thread-194506] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:58:29.915 [DEBUG] [Thread-194506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:58:29.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:58:29.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-11-24T17:58:29.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-11-24T17:58:29.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:58:29.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:58:29.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:58:29.961 [DEBUG] [Thread-194506] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:58:33.967 [DEBUG] [Thread-194508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:58:49.066 [DEBUG] [Thread-194509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:58:59.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:58:59.981 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:58:59.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-11-24T17:59:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 58, 45), 23.49, 20.67, 0.0, 38.91, 20.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:59:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:58:45
2025-11-24T17:59:01.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:59:01.168 [DEBUG] [Thread-194510] [transport.py] [_log()] starting thread (client mode): 0xd0703b20
2025-11-24T17:59:01.169 [DEBUG] [Thread-194510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:59:01.184 [DEBUG] [Thread-194510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:59:01.184 [INFO] [Thread-194510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:59:01.187 [DEBUG] [Thread-194510] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] client lang: <none>
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] server lang: <none>
2025-11-24T17:59:01.188 [DEBUG] [Thread-194510] [transport.py] [_log()] kex follows: False
2025-11-24T17:59:01.189 [DEBUG] [Thread-194510] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:59:01.189 [DEBUG] [Thread-194510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:59:01.189 [DEBUG] [Thread-194510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:59:01.189 [DEBUG] [Thread-194510] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:59:01.189 [DEBUG] [Thread-194510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:59:01.189 [DEBUG] [Thread-194510] [transport.py] [_log()] Compression: none
2025-11-24T17:59:01.189 [DEBUG] [Thread-194510] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:59:01.213 [DEBUG] [Thread-194510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:59:01.218 [DEBUG] [Thread-194510] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:59:01.220 [DEBUG] [Thread-194510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:59:01.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:59:01.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:59:01.224 [DEBUG] [Thread-194510] [transport.py] [_log()] userauth is OK
2025-11-24T17:59:01.225 [DEBUG] [Thread-194510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:59:01.225 [DEBUG] [Thread-194510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:59:01.225 [DEBUG] [Thread-194510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:59:01.225 [DEBUG] [Thread-194510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:59:01.263 [INFO] [Thread-194510] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:59:01.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:59:01.855 [DEBUG] [Thread-194510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:59:01.856 [DEBUG] [Thread-194510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:59:01.856 [DEBUG] [Thread-194510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:59:01.896 [DEBUG] [Thread-194510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:59:01.896 [DEBUG] [Thread-194510] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:59:01.899 [DEBUG] [Thread-194510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:59:01.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:59:01.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:59:01.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:59:01.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:59:01.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:59:01.924 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:59:01.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:59:01.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:59:01.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:59:01.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.665676 -999.00  +20.70  24.62     26   +0.70 1 1 1 1 1   887    0 19.71 -15.77 ----- 24.9 24.6 187.2 39.4 23.5 -29.3 23.5 -30.2 24.8 -29.1 25.0 -29.8
2025-11-24T17:59:01.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:59:01.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:59:01.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.665676
2025-11-24T17:59:01.932 [DEBUG] [Thread-194510] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:59:01.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:59:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:59:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:59:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:59:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:59:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:58:45', tmtdew=23.49, humidity=20.67, cloud=0.0, wind=38.91, temperature=20.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:58:34.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:59:02.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:59:02.047 [DEBUG] [Thread-194513] [transport.py] [_log()] starting thread (client mode): 0xd0784040
2025-11-24T17:59:02.047 [DEBUG] [Thread-194513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:59:02.062 [DEBUG] [Thread-194513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:59:02.062 [INFO] [Thread-194513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:59:02.071 [DEBUG] [Thread-194513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:59:02.071 [DEBUG] [Thread-194513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:59:02.072 [DEBUG] [Thread-194513] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:59:02.072 [DEBUG] [Thread-194513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:59:02.072 [DEBUG] [Thread-194513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:59:02.072 [DEBUG] [Thread-194513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:59:02.072 [DEBUG] [Thread-194513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:59:02.072 [DEBUG] [Thread-194513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:59:02.072 [DEBUG] [Thread-194513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:59:02.072 [DEBUG] [Thread-194513] [transport.py] [_log()] client lang: <none>
2025-11-24T17:59:02.073 [DEBUG] [Thread-194513] [transport.py] [_log()] server lang: <none>
2025-11-24T17:59:02.073 [DEBUG] [Thread-194513] [transport.py] [_log()] kex follows: False
2025-11-24T17:59:02.073 [DEBUG] [Thread-194513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:59:02.073 [DEBUG] [Thread-194513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:59:02.073 [DEBUG] [Thread-194513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:59:02.073 [DEBUG] [Thread-194513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:59:02.073 [DEBUG] [Thread-194513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:59:02.074 [DEBUG] [Thread-194513] [transport.py] [_log()] Compression: none
2025-11-24T17:59:02.074 [DEBUG] [Thread-194513] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:59:02.135 [DEBUG] [Thread-194513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:59:02.135 [DEBUG] [Thread-194513] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:59:02.136 [DEBUG] [Thread-194513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:59:02.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:59:02.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:59:02.199 [DEBUG] [Thread-194513] [transport.py] [_log()] userauth is OK
2025-11-24T17:59:02.199 [DEBUG] [Thread-194513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:59:02.199 [DEBUG] [Thread-194513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:59:02.199 [DEBUG] [Thread-194513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:59:02.199 [DEBUG] [Thread-194513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:59:02.221 [INFO] [Thread-194513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:59:02.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:59:02.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:59:03.047 [DEBUG] [Thread-194513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:59:03.048 [DEBUG] [Thread-194513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:59:03.096 [DEBUG] [Thread-194513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:59:03.096 [DEBUG] [Thread-194513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:59:03.105 [DEBUG] [Thread-194513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:59:03.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:59:03.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-11-24T17:59:03.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-11-24T17:59:03.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:59:03.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:59:03.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:59:03.144 [DEBUG] [Thread-194513] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:59:04.126 [DEBUG] [Thread-194515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:59:06.704 [DEBUG] [Thread-194516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:59:19.242 [DEBUG] [Thread-194517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:59:33.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T17:59:33.177 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T17:59:33.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-11-24T17:59:33.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 59, 17), 23.43, 20.75, 0.0, 35.85, 20.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T17:59:33.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:59:17
2025-11-24T17:59:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T17:59:34.207 [DEBUG] [Thread-194518] [transport.py] [_log()] starting thread (client mode): 0xd07cf610
2025-11-24T17:59:34.208 [DEBUG] [Thread-194518] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:59:34.223 [DEBUG] [Thread-194518] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T17:59:34.223 [INFO] [Thread-194518] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] client lang: <none>
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] server lang: <none>
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] kex follows: False
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] Compression: none
2025-11-24T17:59:34.227 [DEBUG] [Thread-194518] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:59:34.252 [DEBUG] [Thread-194518] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:59:34.256 [DEBUG] [Thread-194518] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:59:34.258 [DEBUG] [Thread-194518] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T17:59:34.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T17:59:34.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:59:34.268 [DEBUG] [Thread-194520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T17:59:34.296 [DEBUG] [Thread-194518] [transport.py] [_log()] userauth is OK
2025-11-24T17:59:34.297 [DEBUG] [Thread-194518] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:59:34.297 [DEBUG] [Thread-194518] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:59:34.297 [DEBUG] [Thread-194518] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T17:59:34.297 [DEBUG] [Thread-194518] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:59:34.336 [INFO] [Thread-194518] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:59:34.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:59:34.886 [DEBUG] [Thread-194518] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:59:34.886 [DEBUG] [Thread-194518] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:59:34.887 [DEBUG] [Thread-194518] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T17:59:34.927 [DEBUG] [Thread-194518] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:59:34.927 [DEBUG] [Thread-194518] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:59:34.930 [DEBUG] [Thread-194518] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:59:34.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:59:34.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T17:59:34.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T17:59:34.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T17:59:34.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:59:34.950 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T17:59:34.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:59:34.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:59:34.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T17:59:34.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.666024 -999.00  +20.60  34.14     26   +0.60 1 1 2 1 1   887    0 20.18 -16.54 ----- 30.4 34.1 178.2 43.5 23.4 -29.3 23.3 -29.8 24.7 -28.6 25.0 -30.3
2025-11-24T17:59:34.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T17:59:34.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T17:59:34.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.666024
2025-11-24T17:59:34.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T17:59:34.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T17:59:34.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T17:59:34.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T17:59:34.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T17:59:34.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:59:17', tmtdew=23.43, humidity=20.75, cloud=0.0, wind=35.85, temperature=20.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T15:59:04.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T17:59:34.961 [DEBUG] [Thread-194518] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:59:35.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T17:59:35.047 [DEBUG] [Thread-194522] [transport.py] [_log()] starting thread (client mode): 0xd07ce740
2025-11-24T17:59:35.047 [DEBUG] [Thread-194522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T17:59:35.062 [DEBUG] [Thread-194522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T17:59:35.062 [INFO] [Thread-194522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] client lang: <none>
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] server lang: <none>
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] kex follows: False
2025-11-24T17:59:35.070 [DEBUG] [Thread-194522] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T17:59:35.071 [DEBUG] [Thread-194522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T17:59:35.071 [DEBUG] [Thread-194522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T17:59:35.071 [DEBUG] [Thread-194522] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T17:59:35.071 [DEBUG] [Thread-194522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T17:59:35.071 [DEBUG] [Thread-194522] [transport.py] [_log()] Compression: none
2025-11-24T17:59:35.071 [DEBUG] [Thread-194522] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T17:59:35.128 [DEBUG] [Thread-194522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T17:59:35.129 [DEBUG] [Thread-194522] [transport.py] [_log()] Switch to new keys ...
2025-11-24T17:59:35.130 [DEBUG] [Thread-194522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T17:59:35.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T17:59:35.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T17:59:35.184 [DEBUG] [Thread-194522] [transport.py] [_log()] userauth is OK
2025-11-24T17:59:35.185 [DEBUG] [Thread-194522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T17:59:35.185 [DEBUG] [Thread-194522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T17:59:35.185 [DEBUG] [Thread-194522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T17:59:35.185 [DEBUG] [Thread-194522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T17:59:35.204 [INFO] [Thread-194522] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T17:59:35.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T17:59:35.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T17:59:36.025 [DEBUG] [Thread-194522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T17:59:36.025 [DEBUG] [Thread-194522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T17:59:36.073 [DEBUG] [Thread-194522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T17:59:36.073 [DEBUG] [Thread-194522] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T17:59:36.081 [DEBUG] [Thread-194522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T17:59:36.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T17:59:36.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-11-24T17:59:36.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-11-24T17:59:36.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T17:59:36.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T17:59:36.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T17:59:36.123 [DEBUG] [Thread-194522] [transport.py] [_log()] EOF in transport thread
2025-11-24T17:59:49.314 [DEBUG] [Thread-194524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:00:04.407 [DEBUG] [Thread-194525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:00:06.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:00:06.141 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:00:06.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-11-24T18:00:06.953 [DEBUG] [Thread-194526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:00:07.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 17, 59, 50), 23.5, 20.67, 0.0, 31.94, 20.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:00:07.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 17:59:50
2025-11-24T18:00:07.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:00:07.388 [DEBUG] [Thread-194527] [transport.py] [_log()] starting thread (client mode): 0xd3162110
2025-11-24T18:00:07.388 [DEBUG] [Thread-194527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:00:07.400 [DEBUG] [Thread-194527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:00:07.401 [INFO] [Thread-194527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] client lang: <none>
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] server lang: <none>
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] kex follows: False
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:00:07.406 [DEBUG] [Thread-194527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:00:07.407 [DEBUG] [Thread-194527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:00:07.407 [DEBUG] [Thread-194527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:00:07.407 [DEBUG] [Thread-194527] [transport.py] [_log()] Compression: none
2025-11-24T18:00:07.407 [DEBUG] [Thread-194527] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:00:07.428 [DEBUG] [Thread-194527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:00:07.432 [DEBUG] [Thread-194527] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:00:07.433 [DEBUG] [Thread-194527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:00:07.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:00:07.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:00:07.436 [DEBUG] [Thread-194527] [transport.py] [_log()] userauth is OK
2025-11-24T18:00:07.437 [DEBUG] [Thread-194527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:00:07.437 [DEBUG] [Thread-194527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:00:07.437 [DEBUG] [Thread-194527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:00:07.437 [DEBUG] [Thread-194527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:00:07.448 [INFO] [Thread-194527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:00:07.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:00:08.729 [DEBUG] [Thread-194527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:00:08.729 [DEBUG] [Thread-194527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:00:08.730 [DEBUG] [Thread-194527] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:00:08.770 [DEBUG] [Thread-194527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:00:08.770 [DEBUG] [Thread-194527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:00:08.773 [DEBUG] [Thread-194527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:00:08.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:00:08.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:00:08.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:00:08.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:00:08.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:00:08.797 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:00:08.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:00:08.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:00:08.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:00:08.799 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-11-24T18:00:08.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T17:59:50', tmtdew=23.5, humidity=20.67, cloud=0.0, wind=31.94, temperature=20.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:00:08.801 [DEBUG] [Thread-194527] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:00:08.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:00:08.886 [DEBUG] [Thread-194530] [transport.py] [_log()] starting thread (client mode): 0xd07391e0
2025-11-24T18:00:08.886 [DEBUG] [Thread-194530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:00:08.901 [DEBUG] [Thread-194530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:00:08.901 [INFO] [Thread-194530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] client lang: <none>
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] server lang: <none>
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] kex follows: False
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:00:08.909 [DEBUG] [Thread-194530] [transport.py] [_log()] Compression: none
2025-11-24T18:00:08.910 [DEBUG] [Thread-194530] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:00:08.967 [DEBUG] [Thread-194530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:00:08.967 [DEBUG] [Thread-194530] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:00:08.967 [DEBUG] [Thread-194530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:00:08.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:00:08.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:00:09.025 [DEBUG] [Thread-194530] [transport.py] [_log()] userauth is OK
2025-11-24T18:00:09.025 [DEBUG] [Thread-194530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:00:09.025 [DEBUG] [Thread-194530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:00:09.025 [DEBUG] [Thread-194530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:00:09.025 [DEBUG] [Thread-194530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:00:09.039 [INFO] [Thread-194530] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:00:09.039 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:00:09.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:00:09.956 [DEBUG] [Thread-194530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:00:09.956 [DEBUG] [Thread-194530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:00:10.007 [DEBUG] [Thread-194530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:00:10.008 [DEBUG] [Thread-194530] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:00:10.016 [DEBUG] [Thread-194530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:00:10.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:00:10.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-11-24T18:00:10.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-11-24T18:00:10.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:00:10.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:00:10.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:00:10.050 [DEBUG] [Thread-194530] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:00:19.449 [DEBUG] [Thread-194532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:00:34.537 [DEBUG] [Thread-194533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:00:40.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:00:40.073 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:00:40.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-11-24T18:00:40.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 0, 23), 23.46, 20.72, 0.0, 33.63, 20.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:00:40.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:00:23
2025-11-24T18:00:41.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:00:41.263 [DEBUG] [Thread-194534] [transport.py] [_log()] starting thread (client mode): 0xd3163a00
2025-11-24T18:00:41.263 [DEBUG] [Thread-194534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:00:41.283 [DEBUG] [Thread-194534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:00:41.283 [INFO] [Thread-194534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:00:41.284 [DEBUG] [Thread-194534] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:00:41.284 [DEBUG] [Thread-194534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:00:41.284 [DEBUG] [Thread-194534] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:00:41.284 [DEBUG] [Thread-194534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] client lang: <none>
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] server lang: <none>
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] kex follows: False
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:00:41.285 [DEBUG] [Thread-194534] [transport.py] [_log()] Compression: none
2025-11-24T18:00:41.286 [DEBUG] [Thread-194534] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:00:41.310 [DEBUG] [Thread-194534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:00:41.311 [DEBUG] [Thread-194534] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:00:41.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:00:41.313 [DEBUG] [Thread-194534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:00:41.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:00:41.316 [DEBUG] [Thread-194534] [transport.py] [_log()] userauth is OK
2025-11-24T18:00:41.316 [DEBUG] [Thread-194534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:00:41.316 [DEBUG] [Thread-194534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:00:41.316 [DEBUG] [Thread-194534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:00:41.316 [DEBUG] [Thread-194534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:00:41.341 [INFO] [Thread-194534] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:00:41.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:00:41.906 [DEBUG] [Thread-194534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:00:41.906 [DEBUG] [Thread-194534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:00:41.906 [DEBUG] [Thread-194534] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:00:41.947 [DEBUG] [Thread-194534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:00:41.947 [DEBUG] [Thread-194534] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:00:41.948 [DEBUG] [Thread-194534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:00:41.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:00:41.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:00:41.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:00:41.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:00:41.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:00:41.965 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:00:41.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:00:41.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:00:41.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:00:41.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.667065 -999.00  +20.50  21.15     26   +0.70 1 1 1 1 1   887    0 19.81 -19.08 ----- 20.2 21.1 175.8 37.0 23.2 -28.7 23.2 -30.1 24.5 -27.8 24.7 -29.7
2025-11-24T18:00:41.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:00:41.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:00:41.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.667065
2025-11-24T18:00:41.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:00:41.983 [DEBUG] [Thread-194534] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:00:41.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:00:41.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:00:41.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:00:41.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:00:41.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:00:23', tmtdew=23.46, humidity=20.72, cloud=0.0, wind=33.63, temperature=20.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:00:34.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:00:42.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:00:42.070 [DEBUG] [Thread-194537] [transport.py] [_log()] starting thread (client mode): 0xd0702e60
2025-11-24T18:00:42.070 [DEBUG] [Thread-194537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:00:42.088 [DEBUG] [Thread-194537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:00:42.088 [INFO] [Thread-194537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:00:42.095 [DEBUG] [Thread-194537] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:00:42.095 [DEBUG] [Thread-194537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:00:42.095 [DEBUG] [Thread-194537] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:00:42.095 [DEBUG] [Thread-194537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] client lang: <none>
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] server lang: <none>
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] kex follows: False
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] Compression: none
2025-11-24T18:00:42.096 [DEBUG] [Thread-194537] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:00:42.150 [DEBUG] [Thread-194537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:00:42.151 [DEBUG] [Thread-194537] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:00:42.151 [DEBUG] [Thread-194537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:00:42.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:00:42.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:00:42.209 [DEBUG] [Thread-194537] [transport.py] [_log()] userauth is OK
2025-11-24T18:00:42.209 [DEBUG] [Thread-194537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:00:42.209 [DEBUG] [Thread-194537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:00:42.209 [DEBUG] [Thread-194537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:00:42.209 [DEBUG] [Thread-194537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:00:42.233 [INFO] [Thread-194537] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:00:42.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:00:42.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:00:43.109 [DEBUG] [Thread-194537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:00:43.109 [DEBUG] [Thread-194537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:00:43.157 [DEBUG] [Thread-194537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:00:43.157 [DEBUG] [Thread-194537] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:00:43.165 [DEBUG] [Thread-194537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:00:43.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:00:43.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-11-24T18:00:43.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-11-24T18:00:43.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:00:43.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:00:43.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:00:43.196 [DEBUG] [Thread-194537] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:00:49.570 [DEBUG] [Thread-194539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:01:04.619 [DEBUG] [Thread-194540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:01:07.173 [DEBUG] [Thread-194541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:01:13.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:01:13.212 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:01:13.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:01:14.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 0, 56), 23.45, 20.73, 0.0, 33.03, 20.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:01:14.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:00:56
2025-11-24T18:01:14.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:01:14.921 [DEBUG] [Thread-194542] [transport.py] [_log()] starting thread (client mode): 0xd07860b0
2025-11-24T18:01:14.922 [DEBUG] [Thread-194542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:01:14.929 [DEBUG] [Thread-194542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:01:14.929 [INFO] [Thread-194542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:01:14.931 [DEBUG] [Thread-194542] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:01:14.931 [DEBUG] [Thread-194542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:01:14.931 [DEBUG] [Thread-194542] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:01:14.931 [DEBUG] [Thread-194542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:01:14.931 [DEBUG] [Thread-194542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:01:14.931 [DEBUG] [Thread-194542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] client lang: <none>
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] server lang: <none>
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] kex follows: False
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] Compression: none
2025-11-24T18:01:14.932 [DEBUG] [Thread-194542] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:01:14.946 [DEBUG] [Thread-194542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:01:14.949 [DEBUG] [Thread-194542] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:01:14.951 [DEBUG] [Thread-194542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:01:14.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:01:14.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:01:14.955 [DEBUG] [Thread-194542] [transport.py] [_log()] userauth is OK
2025-11-24T18:01:14.955 [DEBUG] [Thread-194542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:01:14.955 [DEBUG] [Thread-194542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:01:14.955 [DEBUG] [Thread-194542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:01:14.955 [DEBUG] [Thread-194542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:01:14.975 [INFO] [Thread-194542] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:01:14.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:01:15.605 [DEBUG] [Thread-194542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:01:15.605 [DEBUG] [Thread-194542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:01:15.606 [DEBUG] [Thread-194542] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:01:15.645 [DEBUG] [Thread-194542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:01:15.646 [DEBUG] [Thread-194542] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:01:15.650 [DEBUG] [Thread-194542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:01:15.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:01:15.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:01:15.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:01:15.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:01:15.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:01:15.672 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:01:15.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:01:15.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:01:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:01:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.667412 -999.00  +20.50  20.04     26   +0.60 1 1 1 1 1   887    0 19.92 -20.97 ----- 28.1 20.0 177.4 33.3 23.1 -29.2 23.0 -30.8 24.4 -28.5 24.6 -30.2
2025-11-24T18:01:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:01:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:01:15.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.667412
2025-11-24T18:01:15.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:01:15.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:01:15.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:01:15.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:01:15.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:01:15.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:00:56', tmtdew=23.45, humidity=20.73, cloud=0.0, wind=33.03, temperature=20.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:01:04.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:01:15.684 [DEBUG] [Thread-194542] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:01:15.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:01:15.782 [DEBUG] [Thread-194545] [transport.py] [_log()] starting thread (client mode): 0xd07bd450
2025-11-24T18:01:15.783 [DEBUG] [Thread-194545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:01:15.797 [DEBUG] [Thread-194545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:01:15.797 [INFO] [Thread-194545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] client lang: <none>
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] server lang: <none>
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] kex follows: False
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:01:15.805 [DEBUG] [Thread-194545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:01:15.806 [DEBUG] [Thread-194545] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:01:15.806 [DEBUG] [Thread-194545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:01:15.806 [DEBUG] [Thread-194545] [transport.py] [_log()] Compression: none
2025-11-24T18:01:15.806 [DEBUG] [Thread-194545] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:01:15.864 [DEBUG] [Thread-194545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:01:15.865 [DEBUG] [Thread-194545] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:01:15.865 [DEBUG] [Thread-194545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:01:15.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:01:15.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:01:15.920 [DEBUG] [Thread-194545] [transport.py] [_log()] userauth is OK
2025-11-24T18:01:15.921 [DEBUG] [Thread-194545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:01:15.921 [DEBUG] [Thread-194545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:01:15.921 [DEBUG] [Thread-194545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:01:15.921 [DEBUG] [Thread-194545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:01:15.939 [INFO] [Thread-194545] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:01:15.940 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:01:15.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:01:16.776 [DEBUG] [Thread-194545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:01:16.776 [DEBUG] [Thread-194545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:01:16.824 [DEBUG] [Thread-194545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:01:16.824 [DEBUG] [Thread-194545] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:01:16.832 [DEBUG] [Thread-194545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:01:16.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:01:16.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-11-24T18:01:16.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-11-24T18:01:16.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:01:16.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:01:16.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:01:16.878 [DEBUG] [Thread-194545] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:01:19.649 [DEBUG] [Thread-194547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:01:34.724 [DEBUG] [Thread-194548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:01:46.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:01:46.887 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:01:46.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:01:47.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 1, 28), 23.4, 20.77, 0.0, 29.34, 20.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:01:47.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:01:28
2025-11-24T18:01:47.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:01:48.025 [DEBUG] [Thread-194549] [transport.py] [_log()] starting thread (client mode): 0xd07fbc40
2025-11-24T18:01:48.026 [DEBUG] [Thread-194549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:01:48.042 [DEBUG] [Thread-194549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:01:48.042 [INFO] [Thread-194549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] client lang: <none>
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] server lang: <none>
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] kex follows: False
2025-11-24T18:01:48.046 [DEBUG] [Thread-194549] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:01:48.047 [DEBUG] [Thread-194549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:01:48.047 [DEBUG] [Thread-194549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:01:48.048 [DEBUG] [Thread-194549] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:01:48.048 [DEBUG] [Thread-194549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:01:48.048 [DEBUG] [Thread-194549] [transport.py] [_log()] Compression: none
2025-11-24T18:01:48.048 [DEBUG] [Thread-194549] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:01:48.069 [DEBUG] [Thread-194549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:01:48.072 [DEBUG] [Thread-194549] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:01:48.073 [DEBUG] [Thread-194549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:01:48.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:01:48.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:01:48.078 [DEBUG] [Thread-194549] [transport.py] [_log()] userauth is OK
2025-11-24T18:01:48.078 [DEBUG] [Thread-194549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:01:48.079 [DEBUG] [Thread-194549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:01:48.079 [DEBUG] [Thread-194549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:01:48.079 [DEBUG] [Thread-194549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:01:48.103 [INFO] [Thread-194549] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:01:48.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:01:48.704 [DEBUG] [Thread-194549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:01:48.705 [DEBUG] [Thread-194549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:01:48.707 [DEBUG] [Thread-194549] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:01:48.746 [DEBUG] [Thread-194549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:01:48.746 [DEBUG] [Thread-194549] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:01:48.749 [DEBUG] [Thread-194549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:01:48.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:01:48.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:01:48.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:01:48.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:01:48.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:01:48.777 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:01:48.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:01:48.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:01:48.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:01:48.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.667760 -999.00  +20.40  28.55     26   +0.60 1 1 1 1 1   887    0 19.99 -20.56 ----- 25.6 28.6 180.4 33.3 23.1 -28.8 23.0 -30.1 24.4 -27.5 24.6 -29.4
2025-11-24T18:01:48.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:01:48.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:01:48.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.667760
2025-11-24T18:01:48.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:01:48.783 [DEBUG] [Thread-194549] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:01:48.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:01:48.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:01:48.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:01:48.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:01:48.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:01:28', tmtdew=23.4, humidity=20.77, cloud=0.0, wind=29.34, temperature=20.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:01:34.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:01:48.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:01:48.888 [DEBUG] [Thread-194552] [transport.py] [_log()] starting thread (client mode): 0xd0700700
2025-11-24T18:01:48.888 [DEBUG] [Thread-194552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:01:48.903 [DEBUG] [Thread-194552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:01:48.903 [INFO] [Thread-194552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:01:48.911 [DEBUG] [Thread-194552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:01:48.911 [DEBUG] [Thread-194552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:01:48.911 [DEBUG] [Thread-194552] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:01:48.911 [DEBUG] [Thread-194552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:01:48.911 [DEBUG] [Thread-194552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:01:48.911 [DEBUG] [Thread-194552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:01:48.911 [DEBUG] [Thread-194552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] client lang: <none>
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] server lang: <none>
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] kex follows: False
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] Compression: none
2025-11-24T18:01:48.912 [DEBUG] [Thread-194552] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:01:48.968 [DEBUG] [Thread-194552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:01:48.969 [DEBUG] [Thread-194552] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:01:48.970 [DEBUG] [Thread-194552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:01:48.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:01:48.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:01:49.024 [DEBUG] [Thread-194552] [transport.py] [_log()] userauth is OK
2025-11-24T18:01:49.025 [DEBUG] [Thread-194552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:01:49.025 [DEBUG] [Thread-194552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:01:49.025 [DEBUG] [Thread-194552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:01:49.025 [DEBUG] [Thread-194552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:01:49.044 [INFO] [Thread-194552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:01:49.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:01:49.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:01:49.755 [DEBUG] [Thread-194554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:01:49.893 [DEBUG] [Thread-194552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:01:49.893 [DEBUG] [Thread-194552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:01:49.942 [DEBUG] [Thread-194552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:01:49.942 [DEBUG] [Thread-194552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:01:49.951 [DEBUG] [Thread-194552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:01:49.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:01:49.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-11-24T18:01:49.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-11-24T18:01:49.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:01:49.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:01:49.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:01:49.989 [DEBUG] [Thread-194552] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:02:04.849 [DEBUG] [Thread-194555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:02:07.394 [DEBUG] [Thread-194556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:02:19.878 [DEBUG] [Thread-194557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:02:20.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:02:20.011 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:02:20.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-11-24T18:02:21.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 2), 23.46, 20.27, 0.0, 32.22, 20.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:02:21.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:02:00
2025-11-24T18:02:21.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:02:21.714 [DEBUG] [Thread-194558] [transport.py] [_log()] starting thread (client mode): 0xd31609d0
2025-11-24T18:02:21.714 [DEBUG] [Thread-194558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:02:21.729 [DEBUG] [Thread-194558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:02:21.730 [INFO] [Thread-194558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] client lang: <none>
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] server lang: <none>
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] kex follows: False
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:02:21.731 [DEBUG] [Thread-194558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:02:21.732 [DEBUG] [Thread-194558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:02:21.732 [DEBUG] [Thread-194558] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:02:21.732 [DEBUG] [Thread-194558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:02:21.732 [DEBUG] [Thread-194558] [transport.py] [_log()] Compression: none
2025-11-24T18:02:21.732 [DEBUG] [Thread-194558] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:02:21.753 [DEBUG] [Thread-194558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:02:21.756 [DEBUG] [Thread-194558] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:02:21.758 [DEBUG] [Thread-194558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:02:21.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:02:21.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:02:21.761 [DEBUG] [Thread-194558] [transport.py] [_log()] userauth is OK
2025-11-24T18:02:21.762 [DEBUG] [Thread-194558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:02:21.762 [DEBUG] [Thread-194558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:02:21.762 [DEBUG] [Thread-194558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:02:21.762 [DEBUG] [Thread-194558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:02:21.793 [INFO] [Thread-194558] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:02:21.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:02:22.418 [DEBUG] [Thread-194558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:02:22.418 [DEBUG] [Thread-194558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:02:22.428 [DEBUG] [Thread-194558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:02:22.459 [DEBUG] [Thread-194558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:02:22.459 [DEBUG] [Thread-194558] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:02:22.462 [DEBUG] [Thread-194558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:02:22.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:02:22.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:02:22.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:02:22.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:02:22.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:02:22.480 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:02:22.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:02:22.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:02:22.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:02:22.481 [DEBUG] [Thread-194558] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:02:22.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.668107 -999.00  +20.50  14.22     26   +0.70 1 1 1 1 1   887    0 19.60 -23.27 ----- 20.1 14.2 215.9 26.1 23.1 -28.5 23.2 -28.3 24.5 -26.6 24.6 -28.3
2025-11-24T18:02:22.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:02:22.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:02:22.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.668107
2025-11-24T18:02:22.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:02:22.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:02:22.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:02:22.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:02:22.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:02:22.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:02:00', tmtdew=23.46, humidity=20.27, cloud=0.0, wind=32.22, temperature=20.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:02:04.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:02:22.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:02:22.573 [DEBUG] [Thread-194561] [transport.py] [_log()] starting thread (client mode): 0xd0703a00
2025-11-24T18:02:22.573 [DEBUG] [Thread-194561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:02:22.588 [DEBUG] [Thread-194561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:02:22.588 [INFO] [Thread-194561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] client lang: <none>
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] server lang: <none>
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] kex follows: False
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] Compression: none
2025-11-24T18:02:22.596 [DEBUG] [Thread-194561] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:02:22.654 [DEBUG] [Thread-194561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:02:22.654 [DEBUG] [Thread-194561] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:02:22.654 [DEBUG] [Thread-194561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:02:22.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:02:22.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:02:22.712 [DEBUG] [Thread-194561] [transport.py] [_log()] userauth is OK
2025-11-24T18:02:22.712 [DEBUG] [Thread-194561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:02:22.712 [DEBUG] [Thread-194561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:02:22.712 [DEBUG] [Thread-194561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:02:22.712 [DEBUG] [Thread-194561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:02:22.725 [INFO] [Thread-194561] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:02:22.725 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:02:22.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:02:23.564 [DEBUG] [Thread-194561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:02:23.565 [DEBUG] [Thread-194561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:02:23.613 [DEBUG] [Thread-194561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:02:23.613 [DEBUG] [Thread-194561] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:02:23.622 [DEBUG] [Thread-194561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:02:23.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:02:23.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:02:23.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-11-24T18:02:23.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:02:23.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:02:23.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:02:23.675 [DEBUG] [Thread-194561] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:02:34.914 [DEBUG] [Thread-194563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:02:49.991 [DEBUG] [Thread-194564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:02:53.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:02:53.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:02:53.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-11-24T18:02:54.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 2, 33), 23.32, 20.77, 0.0, 25.39, 20.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:02:54.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:02:33
2025-11-24T18:02:54.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:02:54.865 [DEBUG] [Thread-194565] [transport.py] [_log()] starting thread (client mode): 0xd07849a0
2025-11-24T18:02:54.866 [DEBUG] [Thread-194565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:02:54.877 [DEBUG] [Thread-194565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:02:54.877 [INFO] [Thread-194565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] client lang: <none>
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] server lang: <none>
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] kex follows: False
2025-11-24T18:02:54.880 [DEBUG] [Thread-194565] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:02:54.881 [DEBUG] [Thread-194565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:02:54.881 [DEBUG] [Thread-194565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:02:54.881 [DEBUG] [Thread-194565] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:02:54.881 [DEBUG] [Thread-194565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:02:54.881 [DEBUG] [Thread-194565] [transport.py] [_log()] Compression: none
2025-11-24T18:02:54.881 [DEBUG] [Thread-194565] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:02:54.912 [DEBUG] [Thread-194565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:02:54.917 [DEBUG] [Thread-194565] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:02:54.919 [DEBUG] [Thread-194565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:02:54.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:02:54.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:02:54.925 [DEBUG] [Thread-194565] [transport.py] [_log()] userauth is OK
2025-11-24T18:02:54.925 [DEBUG] [Thread-194565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:02:54.925 [DEBUG] [Thread-194565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:02:54.926 [DEBUG] [Thread-194565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:02:54.926 [DEBUG] [Thread-194565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:02:54.951 [INFO] [Thread-194565] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:02:54.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:02:55.529 [DEBUG] [Thread-194565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:02:55.529 [DEBUG] [Thread-194565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:02:55.540 [DEBUG] [Thread-194565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:02:55.569 [DEBUG] [Thread-194565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:02:55.569 [DEBUG] [Thread-194565] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:02:55.572 [DEBUG] [Thread-194565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:02:55.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:02:55.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:02:55.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:02:55.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:02:55.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:02:55.590 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:02:55.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:02:55.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:02:55.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:02:55.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.668454 -999.00  +20.70  15.88     26   +0.60 1 1 1 1 1   887    0 19.34 -22.16 ----- 15.6 15.9 190.6 30.2 23.2 -28.7 23.2 -27.9 24.6 -27.0 24.6 -28.7
2025-11-24T18:02:55.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:02:55.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:02:55.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.668454
2025-11-24T18:02:55.593 [DEBUG] [Thread-194565] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:02:55.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:02:55.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:02:55.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:02:55.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:02:55.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:02:55.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:02:33', tmtdew=23.32, humidity=20.77, cloud=0.0, wind=25.39, temperature=20.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:02:34.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:02:55.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:02:55.715 [DEBUG] [Thread-194568] [transport.py] [_log()] starting thread (client mode): 0xd073b8e0
2025-11-24T18:02:55.715 [DEBUG] [Thread-194568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:02:55.730 [DEBUG] [Thread-194568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:02:55.731 [INFO] [Thread-194568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:02:55.738 [DEBUG] [Thread-194568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:02:55.738 [DEBUG] [Thread-194568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:02:55.738 [DEBUG] [Thread-194568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] client lang: <none>
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] server lang: <none>
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] kex follows: False
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:02:55.739 [DEBUG] [Thread-194568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:02:55.740 [DEBUG] [Thread-194568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:02:55.740 [DEBUG] [Thread-194568] [transport.py] [_log()] Compression: none
2025-11-24T18:02:55.740 [DEBUG] [Thread-194568] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:02:55.796 [DEBUG] [Thread-194568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:02:55.796 [DEBUG] [Thread-194568] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:02:55.797 [DEBUG] [Thread-194568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:02:55.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:02:55.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:02:55.852 [DEBUG] [Thread-194568] [transport.py] [_log()] userauth is OK
2025-11-24T18:02:55.852 [DEBUG] [Thread-194568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:02:55.852 [DEBUG] [Thread-194568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:02:55.852 [DEBUG] [Thread-194568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:02:55.852 [DEBUG] [Thread-194568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:02:55.874 [INFO] [Thread-194568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:02:55.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:02:55.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:02:56.702 [DEBUG] [Thread-194568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:02:56.702 [DEBUG] [Thread-194568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:02:56.750 [DEBUG] [Thread-194568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:02:56.750 [DEBUG] [Thread-194568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:02:56.758 [DEBUG] [Thread-194568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:02:56.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:02:56.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-11-24T18:02:56.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:02:56.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:02:56.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:02:56.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:02:56.790 [DEBUG] [Thread-194568] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:03:05.045 [DEBUG] [Thread-194570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:03:07.630 [DEBUG] [Thread-194571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:03:20.136 [DEBUG] [Thread-194572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:03:26.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:03:26.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:03:26.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:03:27.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 3, 6), 23.39, 20.68, 0.0, 27.42, 20.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:03:27.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:03:06
2025-11-24T18:03:27.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:03:27.881 [DEBUG] [Thread-194573] [transport.py] [_log()] starting thread (client mode): 0xd0701870
2025-11-24T18:03:27.881 [DEBUG] [Thread-194573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:03:27.896 [DEBUG] [Thread-194573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:03:27.897 [INFO] [Thread-194573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:03:27.899 [DEBUG] [Thread-194573] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:03:27.899 [DEBUG] [Thread-194573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:03:27.899 [DEBUG] [Thread-194573] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:03:27.899 [DEBUG] [Thread-194573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:03:27.899 [DEBUG] [Thread-194573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:03:27.899 [DEBUG] [Thread-194573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] client lang: <none>
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] server lang: <none>
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] kex follows: False
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] Compression: none
2025-11-24T18:03:27.900 [DEBUG] [Thread-194573] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:03:27.914 [DEBUG] [Thread-194573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:03:27.917 [DEBUG] [Thread-194573] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:03:27.918 [DEBUG] [Thread-194573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:03:27.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:03:27.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:03:27.920 [DEBUG] [Thread-194573] [transport.py] [_log()] userauth is OK
2025-11-24T18:03:27.920 [DEBUG] [Thread-194573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:03:27.920 [DEBUG] [Thread-194573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:03:27.920 [DEBUG] [Thread-194573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:03:27.920 [DEBUG] [Thread-194573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:03:27.936 [INFO] [Thread-194573] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:03:27.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:03:28.531 [DEBUG] [Thread-194573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:03:28.531 [DEBUG] [Thread-194573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:03:28.533 [DEBUG] [Thread-194573] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:03:28.571 [DEBUG] [Thread-194573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:03:28.571 [DEBUG] [Thread-194573] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:03:28.574 [DEBUG] [Thread-194573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:03:28.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:03:28.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:03:28.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:03:28.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:03:28.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:03:28.586 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:03:28.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:03:28.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:03:28.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:03:28.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.668801 -999.00  +20.70  16.89     26   +0.70 1 1 1 1 1   887    0 19.72 -20.90 ----- 21.1 16.9 176.2 23.2 23.2 -28.8 23.2 -30.6 24.5 -27.0 24.8 -28.6
2025-11-24T18:03:28.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:03:28.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:03:28.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.668801
2025-11-24T18:03:28.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:03:28.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:03:28.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:03:28.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:03:28.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:03:28.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:03:06', tmtdew=23.39, humidity=20.68, cloud=0.0, wind=27.42, temperature=20.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:03:04.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:03:28.590 [DEBUG] [Thread-194573] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:03:28.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:03:28.677 [DEBUG] [Thread-194576] [transport.py] [_log()] starting thread (client mode): 0xd07beaa0
2025-11-24T18:03:28.677 [DEBUG] [Thread-194576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:03:28.691 [DEBUG] [Thread-194576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:03:28.692 [INFO] [Thread-194576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:03:28.699 [DEBUG] [Thread-194576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:03:28.699 [DEBUG] [Thread-194576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] client lang: <none>
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] server lang: <none>
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] kex follows: False
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:03:28.700 [DEBUG] [Thread-194576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:03:28.701 [DEBUG] [Thread-194576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:03:28.701 [DEBUG] [Thread-194576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:03:28.701 [DEBUG] [Thread-194576] [transport.py] [_log()] Compression: none
2025-11-24T18:03:28.701 [DEBUG] [Thread-194576] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:03:28.760 [DEBUG] [Thread-194576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:03:28.761 [DEBUG] [Thread-194576] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:03:28.761 [DEBUG] [Thread-194576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:03:28.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:03:28.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:03:28.820 [DEBUG] [Thread-194576] [transport.py] [_log()] userauth is OK
2025-11-24T18:03:28.821 [DEBUG] [Thread-194576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:03:28.821 [DEBUG] [Thread-194576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:03:28.821 [DEBUG] [Thread-194576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:03:28.821 [DEBUG] [Thread-194576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:03:28.839 [INFO] [Thread-194576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:03:28.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:03:28.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:03:29.710 [DEBUG] [Thread-194576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:03:29.711 [DEBUG] [Thread-194576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:03:29.759 [DEBUG] [Thread-194576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:03:29.759 [DEBUG] [Thread-194576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:03:29.768 [DEBUG] [Thread-194576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:03:29.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:03:29.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-11-24T18:03:29.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-11-24T18:03:29.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:03:29.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:03:29.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:03:29.815 [DEBUG] [Thread-194576] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:03:35.169 [DEBUG] [Thread-194578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:03:50.219 [DEBUG] [Thread-194579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:03:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:03:59.831 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:03: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-11-24T18:04:00.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 3, 39), 23.44, 20.75, 0.0, 27.1, 20.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:04:00.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:03:39
2025-11-24T18:04:01.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:04:01.273 [DEBUG] [Thread-194580] [transport.py] [_log()] starting thread (client mode): 0xd07bfa90
2025-11-24T18:04:01.273 [DEBUG] [Thread-194580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:04:01.281 [DEBUG] [Thread-194580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:04:01.281 [INFO] [Thread-194580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:04:01.284 [DEBUG] [Thread-194580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:04:01.284 [DEBUG] [Thread-194580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:04:01.284 [DEBUG] [Thread-194580] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:04:01.284 [DEBUG] [Thread-194580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:04:01.284 [DEBUG] [Thread-194580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:04:01.284 [DEBUG] [Thread-194580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:04:01.284 [DEBUG] [Thread-194580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:04:01.284 [DEBUG] [Thread-194580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:04:01.284 [DEBUG] [Thread-194580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:04:01.284 [DEBUG] [Thread-194580] [transport.py] [_log()] client lang: <none>
2025-11-24T18:04:01.285 [DEBUG] [Thread-194580] [transport.py] [_log()] server lang: <none>
2025-11-24T18:04:01.285 [DEBUG] [Thread-194580] [transport.py] [_log()] kex follows: False
2025-11-24T18:04:01.285 [DEBUG] [Thread-194580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:04:01.285 [DEBUG] [Thread-194580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:04:01.285 [DEBUG] [Thread-194580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:04:01.285 [DEBUG] [Thread-194580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:04:01.285 [DEBUG] [Thread-194580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:04:01.285 [DEBUG] [Thread-194580] [transport.py] [_log()] Compression: none
2025-11-24T18:04:01.285 [DEBUG] [Thread-194580] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:04:01.308 [DEBUG] [Thread-194580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:04:01.309 [DEBUG] [Thread-194580] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:04:01.310 [DEBUG] [Thread-194580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:04:01.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:04:01.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:04:01.310 [DEBUG] [Thread-194580] [transport.py] [_log()] userauth is OK
2025-11-24T18:04:01.311 [DEBUG] [Thread-194580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:04:01.311 [DEBUG] [Thread-194580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:04:01.311 [DEBUG] [Thread-194580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:04:01.311 [DEBUG] [Thread-194580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:04:01.321 [INFO] [Thread-194580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:04:01.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:04:01.917 [DEBUG] [Thread-194580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:04:01.917 [DEBUG] [Thread-194580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:04:01.918 [DEBUG] [Thread-194580] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:04:01.958 [DEBUG] [Thread-194580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:04:01.958 [DEBUG] [Thread-194580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:04:01.960 [DEBUG] [Thread-194580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:04:01.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:04:01.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:04:01.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:04:01.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:04:01.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:04:01.978 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:04:01.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:04:01.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:04:01.979 [DEBUG] [Thread-194580] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:04:01.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:04:01.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.669149 -999.00  +20.70  13.96     26   +0.60 1 1 1 1 1   887    0 19.72 -20.28 ----- 12.9 14.0 182.6 26.3 23.2 -28.8 23.2 -29.8 24.4 -27.0 24.7 -29.2
2025-11-24T18:04:01.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:04:01.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:04:01.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.669149
2025-11-24T18:04:01.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:04:01.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:04:01.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:04:01.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:04:01.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:04:01.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:03:39', tmtdew=23.44, humidity=20.75, cloud=0.0, wind=27.1, temperature=20.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:03:34.474', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:04:02.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:04:02.089 [DEBUG] [Thread-194583] [transport.py] [_log()] starting thread (client mode): 0xd3135f30
2025-11-24T18:04:02.089 [DEBUG] [Thread-194583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:04:02.104 [DEBUG] [Thread-194583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:04:02.104 [INFO] [Thread-194583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:04:02.111 [DEBUG] [Thread-194583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:04:02.111 [DEBUG] [Thread-194583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:04:02.111 [DEBUG] [Thread-194583] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] client lang: <none>
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] server lang: <none>
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] kex follows: False
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] Compression: none
2025-11-24T18:04:02.112 [DEBUG] [Thread-194583] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:04:02.166 [DEBUG] [Thread-194583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:04:02.166 [DEBUG] [Thread-194583] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:04:02.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:04:02.166 [DEBUG] [Thread-194583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:04:02.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:04:02.223 [DEBUG] [Thread-194583] [transport.py] [_log()] userauth is OK
2025-11-24T18:04:02.223 [DEBUG] [Thread-194583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:04:02.223 [DEBUG] [Thread-194583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:04:02.223 [DEBUG] [Thread-194583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:04:02.223 [DEBUG] [Thread-194583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:04:02.238 [INFO] [Thread-194583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:04:02.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:04:02.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:04:03.095 [DEBUG] [Thread-194583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:04:03.095 [DEBUG] [Thread-194583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:04:03.143 [DEBUG] [Thread-194583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:04:03.143 [DEBUG] [Thread-194583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:04:03.151 [DEBUG] [Thread-194583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:04:03.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:04:03.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-11-24T18:04:03.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-11-24T18:04:03.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:04:03.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:04:03.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:04:03.184 [DEBUG] [Thread-194583] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:04:05.256 [DEBUG] [Thread-194585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:04:07.849 [DEBUG] [Thread-194586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:04:20.331 [DEBUG] [Thread-194587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:04:33.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:04:33.215 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:04:33.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-11-24T18:04:34.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 4, 11), 23.42, 20.75, 0.0, 24.65, 20.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:04:34.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:04:11
2025-11-24T18:04:34.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:04:34.346 [DEBUG] [Thread-194588] [transport.py] [_log()] starting thread (client mode): 0xd0702ad0
2025-11-24T18:04:34.346 [DEBUG] [Thread-194588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:04:34.362 [DEBUG] [Thread-194588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:04:34.362 [INFO] [Thread-194588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:04:34.366 [DEBUG] [Thread-194588] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:04:34.366 [DEBUG] [Thread-194588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:04:34.366 [DEBUG] [Thread-194588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:04:34.366 [DEBUG] [Thread-194588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:04:34.366 [DEBUG] [Thread-194588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:04:34.366 [DEBUG] [Thread-194588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:04:34.366 [DEBUG] [Thread-194588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:04:34.366 [DEBUG] [Thread-194588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:04:34.366 [DEBUG] [Thread-194588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:04:34.367 [DEBUG] [Thread-194588] [transport.py] [_log()] client lang: <none>
2025-11-24T18:04:34.367 [DEBUG] [Thread-194588] [transport.py] [_log()] server lang: <none>
2025-11-24T18:04:34.367 [DEBUG] [Thread-194588] [transport.py] [_log()] kex follows: False
2025-11-24T18:04:34.367 [DEBUG] [Thread-194588] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:04:34.367 [DEBUG] [Thread-194588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:04:34.367 [DEBUG] [Thread-194588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:04:34.368 [DEBUG] [Thread-194588] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:04:34.368 [DEBUG] [Thread-194588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:04:34.368 [DEBUG] [Thread-194588] [transport.py] [_log()] Compression: none
2025-11-24T18:04:34.368 [DEBUG] [Thread-194588] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:04:34.390 [DEBUG] [Thread-194588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:04:34.393 [DEBUG] [Thread-194588] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:04:34.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:04:34.395 [DEBUG] [Thread-194588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:04:34.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:04:34.433 [DEBUG] [Thread-194588] [transport.py] [_log()] userauth is OK
2025-11-24T18:04:34.433 [DEBUG] [Thread-194588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:04:34.433 [DEBUG] [Thread-194588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:04:34.433 [DEBUG] [Thread-194588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:04:34.433 [DEBUG] [Thread-194588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:04:34.460 [INFO] [Thread-194588] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:04:34.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:04:35.066 [DEBUG] [Thread-194588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:04:35.066 [DEBUG] [Thread-194588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:04:35.066 [DEBUG] [Thread-194588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:04:35.107 [DEBUG] [Thread-194588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:04:35.107 [DEBUG] [Thread-194588] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:04:35.109 [DEBUG] [Thread-194588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:04:35.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:04:35.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:04:35.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:04:35.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:04:35.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:04:35.124 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:04:35.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:04:35.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:04:35.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:04:35.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.669496 -999.00  +20.70  16.71     26   +0.70 1 1 1 1 1   887    0 19.52 -20.74 ----- 27.0 16.7 202.7 19.6 23.2 -29.2 23.2 -30.7 24.6 -26.4 24.7 -29.2
2025-11-24T18:04:35.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:04:35.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:04:35.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.669496
2025-11-24T18:04:35.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:04:35.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:04:35.134 [DEBUG] [Thread-194588] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:04:35.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:04:35.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:04:35.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:04:35.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:04:11', tmtdew=23.42, humidity=20.75, cloud=0.0, wind=24.65, temperature=20.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:04:04.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:04:35.206 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:04:35.218 [DEBUG] [Thread-194591] [transport.py] [_log()] starting thread (client mode): 0xd07011e0
2025-11-24T18:04:35.218 [DEBUG] [Thread-194591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:04:35.236 [DEBUG] [Thread-194591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:04:35.236 [INFO] [Thread-194591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] client lang: <none>
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] server lang: <none>
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] kex follows: False
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:04:35.244 [DEBUG] [Thread-194591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:04:35.245 [DEBUG] [Thread-194591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:04:35.245 [DEBUG] [Thread-194591] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:04:35.245 [DEBUG] [Thread-194591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:04:35.245 [DEBUG] [Thread-194591] [transport.py] [_log()] Compression: none
2025-11-24T18:04:35.245 [DEBUG] [Thread-194591] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:04:35.304 [DEBUG] [Thread-194591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:04:35.305 [DEBUG] [Thread-194591] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:04:35.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:04:35.306 [DEBUG] [Thread-194591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:04:35.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:04:35.360 [DEBUG] [Thread-194591] [transport.py] [_log()] userauth is OK
2025-11-24T18:04:35.361 [DEBUG] [Thread-194591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:04:35.361 [DEBUG] [Thread-194591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:04:35.361 [DEBUG] [Thread-194591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:04:35.361 [DEBUG] [Thread-194591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:04:35.366 [DEBUG] [Thread-194593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:04:35.393 [INFO] [Thread-194591] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:04:35.393 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:04:35.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:04:36.296 [DEBUG] [Thread-194591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:04:36.296 [DEBUG] [Thread-194591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:04:36.344 [DEBUG] [Thread-194591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:04:36.344 [DEBUG] [Thread-194591] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:04:36.353 [DEBUG] [Thread-194591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:04:36.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:04:36.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-11-24T18:04:36.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-11-24T18:04:36.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:04:36.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:04:36.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:04:36.402 [DEBUG] [Thread-194591] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:04:50.428 [DEBUG] [Thread-194594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:05:05.464 [DEBUG] [Thread-194595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:05:06.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:05:06.428 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:05:06.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:05:07.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 4, 44), 23.44, 20.68, 0.0, 27.93, 20.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:05:07.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:04:44
2025-11-24T18:05:07.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:05:08.092 [DEBUG] [Thread-194596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:05:08.116 [DEBUG] [Thread-194597] [transport.py] [_log()] starting thread (client mode): 0xd07039d0
2025-11-24T18:05:08.117 [DEBUG] [Thread-194597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:05:08.131 [DEBUG] [Thread-194597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:05:08.131 [INFO] [Thread-194597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:05:08.135 [DEBUG] [Thread-194597] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:05:08.135 [DEBUG] [Thread-194597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:05:08.135 [DEBUG] [Thread-194597] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] client lang: <none>
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] server lang: <none>
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] kex follows: False
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:05:08.136 [DEBUG] [Thread-194597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:05:08.137 [DEBUG] [Thread-194597] [transport.py] [_log()] Compression: none
2025-11-24T18:05:08.137 [DEBUG] [Thread-194597] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:05:08.168 [DEBUG] [Thread-194597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:05:08.172 [DEBUG] [Thread-194597] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:05:08.175 [DEBUG] [Thread-194597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:05:08.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:05:08.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:05:08.180 [DEBUG] [Thread-194597] [transport.py] [_log()] userauth is OK
2025-11-24T18:05:08.180 [DEBUG] [Thread-194597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:05:08.180 [DEBUG] [Thread-194597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:05:08.180 [DEBUG] [Thread-194597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:05:08.180 [DEBUG] [Thread-194597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:05:08.219 [INFO] [Thread-194597] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:05:08.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:05:10.025 [DEBUG] [Thread-194597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:05:10.026 [DEBUG] [Thread-194597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:05:10.028 [DEBUG] [Thread-194597] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:05:10.066 [DEBUG] [Thread-194597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:05:10.066 [DEBUG] [Thread-194597] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:05:10.070 [DEBUG] [Thread-194597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:05:10.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:05:10.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:05:10.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:05:10.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:05:10.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:05:10.114 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:05:10.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:05:10.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:05:10.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:05:10.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.669496 -999.00  +20.70  16.71     26   +0.70 1 1 1 1 1   887    0 19.52 -20.74 ----- 27.0 16.7 202.7 19.6 23.2 -29.2 23.2 -30.7 24.6 -26.4 24.7 -29.2
2025-11-24T18:05:10.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:05:10.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:05:10.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.669496
2025-11-24T18:05:10.122 [DEBUG] [Thread-194597] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:05:10.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:05:10.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:05:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:05:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:05:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:05:10.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:04:44', tmtdew=23.44, humidity=20.68, cloud=0.0, wind=27.93, temperature=20.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:04:04.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:05:10.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:05:10.233 [DEBUG] [Thread-194600] [transport.py] [_log()] starting thread (client mode): 0xd07bfca0
2025-11-24T18:05:10.234 [DEBUG] [Thread-194600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:05:10.249 [DEBUG] [Thread-194600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:05:10.249 [INFO] [Thread-194600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:05:10.257 [DEBUG] [Thread-194600] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:05:10.257 [DEBUG] [Thread-194600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:05:10.257 [DEBUG] [Thread-194600] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:05:10.257 [DEBUG] [Thread-194600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:05:10.257 [DEBUG] [Thread-194600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:05:10.257 [DEBUG] [Thread-194600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] client lang: <none>
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] server lang: <none>
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] kex follows: False
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] Compression: none
2025-11-24T18:05:10.258 [DEBUG] [Thread-194600] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:05:10.320 [DEBUG] [Thread-194600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:05:10.321 [DEBUG] [Thread-194600] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:05:10.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:05:10.323 [DEBUG] [Thread-194600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:05:10.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:05:10.376 [DEBUG] [Thread-194600] [transport.py] [_log()] userauth is OK
2025-11-24T18:05:10.376 [DEBUG] [Thread-194600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:05:10.376 [DEBUG] [Thread-194600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:05:10.376 [DEBUG] [Thread-194600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:05:10.376 [DEBUG] [Thread-194600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:05:10.398 [INFO] [Thread-194600] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:05:10.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:05:10.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:05:11.276 [DEBUG] [Thread-194600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:05:11.276 [DEBUG] [Thread-194600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:05:11.324 [DEBUG] [Thread-194600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:05:11.325 [DEBUG] [Thread-194600] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:05:11.333 [DEBUG] [Thread-194600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:05:11.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:05:11.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-11-24T18:05:11.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:05:11.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:05:11.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:05:11.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:05:11.367 [DEBUG] [Thread-194600] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:05:20.513 [DEBUG] [Thread-194602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:05:35.608 [DEBUG] [Thread-194603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:05:41.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:05:41.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:05:41.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-11-24T18:05:42.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 5, 17), 23.45, 20.67, 0.0, 26.93, 20.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:05:42.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:05:17
2025-11-24T18:05:42.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:05:42.523 [DEBUG] [Thread-194604] [transport.py] [_log()] starting thread (client mode): 0xc9b80280
2025-11-24T18:05:42.523 [DEBUG] [Thread-194604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:05:42.541 [DEBUG] [Thread-194604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:05:42.541 [INFO] [Thread-194604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:05:42.545 [DEBUG] [Thread-194604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:05:42.545 [DEBUG] [Thread-194604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:05:42.546 [DEBUG] [Thread-194604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:05:42.546 [DEBUG] [Thread-194604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:05:42.546 [DEBUG] [Thread-194604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:05:42.546 [DEBUG] [Thread-194604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:05:42.546 [DEBUG] [Thread-194604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:05:42.546 [DEBUG] [Thread-194604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:05:42.546 [DEBUG] [Thread-194604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:05:42.546 [DEBUG] [Thread-194604] [transport.py] [_log()] client lang: <none>
2025-11-24T18:05:42.546 [DEBUG] [Thread-194604] [transport.py] [_log()] server lang: <none>
2025-11-24T18:05:42.546 [DEBUG] [Thread-194604] [transport.py] [_log()] kex follows: False
2025-11-24T18:05:42.547 [DEBUG] [Thread-194604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:05:42.547 [DEBUG] [Thread-194604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:05:42.548 [DEBUG] [Thread-194604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:05:42.548 [DEBUG] [Thread-194604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:05:42.548 [DEBUG] [Thread-194604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:05:42.548 [DEBUG] [Thread-194604] [transport.py] [_log()] Compression: none
2025-11-24T18:05:42.548 [DEBUG] [Thread-194604] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:05:42.584 [DEBUG] [Thread-194604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:05:42.588 [DEBUG] [Thread-194604] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:05:42.589 [DEBUG] [Thread-194604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:05:42.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:05:42.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:05:42.595 [DEBUG] [Thread-194604] [transport.py] [_log()] userauth is OK
2025-11-24T18:05:42.596 [DEBUG] [Thread-194604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:05:42.596 [DEBUG] [Thread-194604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:05:42.596 [DEBUG] [Thread-194604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:05:42.596 [DEBUG] [Thread-194604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:05:42.625 [INFO] [Thread-194604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:05:42.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:05:43.191 [DEBUG] [Thread-194604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:05:43.191 [DEBUG] [Thread-194604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:05:43.192 [DEBUG] [Thread-194604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:05:43.232 [DEBUG] [Thread-194604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:05:43.232 [DEBUG] [Thread-194604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:05:43.234 [DEBUG] [Thread-194604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:05:43.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:05:43.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:05:43.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:05:43.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:05:43.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:05:43.257 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:05:43.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:05:43.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:05:43.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:05:43.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.670537 -999.00  +20.60  21.15     26   +0.60 1 1 1 1 1   887    0 20.12 -17.29 ----- 25.9 21.1 174.2 31.7 23.1 -28.8 23.1 -29.2 24.4 -28.1 24.6 -29.2
2025-11-24T18:05:43.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:05:43.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:05:43.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.670537
2025-11-24T18:05:43.263 [DEBUG] [Thread-194604] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:05:43.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:05:43.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:05:43.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:05:43.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:05:43.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:05:43.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:05:17', tmtdew=23.45, humidity=20.67, cloud=0.0, wind=26.93, temperature=20.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:05:34.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:05:43.350 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:05:43.362 [DEBUG] [Thread-194607] [transport.py] [_log()] starting thread (client mode): 0xc9b81240
2025-11-24T18:05:43.362 [DEBUG] [Thread-194607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:05:43.377 [DEBUG] [Thread-194607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:05:43.377 [INFO] [Thread-194607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] client lang: <none>
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] server lang: <none>
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] kex follows: False
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:05:43.385 [DEBUG] [Thread-194607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:05:43.386 [DEBUG] [Thread-194607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:05:43.386 [DEBUG] [Thread-194607] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:05:43.386 [DEBUG] [Thread-194607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:05:43.386 [DEBUG] [Thread-194607] [transport.py] [_log()] Compression: none
2025-11-24T18:05:43.386 [DEBUG] [Thread-194607] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:05:43.451 [DEBUG] [Thread-194607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:05:43.452 [DEBUG] [Thread-194607] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:05:43.452 [DEBUG] [Thread-194607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:05:43.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:05:43.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:05:43.512 [DEBUG] [Thread-194607] [transport.py] [_log()] userauth is OK
2025-11-24T18:05:43.512 [DEBUG] [Thread-194607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:05:43.512 [DEBUG] [Thread-194607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:05:43.512 [DEBUG] [Thread-194607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:05:43.512 [DEBUG] [Thread-194607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:05:43.529 [INFO] [Thread-194607] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:05:43.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:05:43.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:05:44.398 [DEBUG] [Thread-194607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:05:44.398 [DEBUG] [Thread-194607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:05:44.446 [DEBUG] [Thread-194607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:05:44.446 [DEBUG] [Thread-194607] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:05:44.454 [DEBUG] [Thread-194607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:05:44.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:05:44.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-11-24T18:05:44.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-11-24T18:05:44.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:05:44.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:05:44.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:05:44.496 [DEBUG] [Thread-194607] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:05:50.642 [DEBUG] [Thread-194609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:06:05.751 [DEBUG] [Thread-194610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:06:08.400 [DEBUG] [Thread-194611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:06:14.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:06:14.529 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:06:14.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-11-24T18:06:15.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 5, 49), 23.52, 20.63, 0.0, 26.06, 20.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:06:15.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:05:49
2025-11-24T18:06:15.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:06:15.868 [DEBUG] [Thread-194612] [transport.py] [_log()] starting thread (client mode): 0xd0700be0
2025-11-24T18:06:15.869 [DEBUG] [Thread-194612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:06:15.882 [DEBUG] [Thread-194612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:06:15.882 [INFO] [Thread-194612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:06:15.886 [DEBUG] [Thread-194612] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] client lang: <none>
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] server lang: <none>
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] kex follows: False
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:06:15.887 [DEBUG] [Thread-194612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:06:15.888 [DEBUG] [Thread-194612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:06:15.888 [DEBUG] [Thread-194612] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:06:15.888 [DEBUG] [Thread-194612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:06:15.888 [DEBUG] [Thread-194612] [transport.py] [_log()] Compression: none
2025-11-24T18:06:15.888 [DEBUG] [Thread-194612] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:06:15.927 [DEBUG] [Thread-194612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:06:15.931 [DEBUG] [Thread-194612] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:06:15.934 [DEBUG] [Thread-194612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:06:15.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:06:15.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:06:15.938 [DEBUG] [Thread-194612] [transport.py] [_log()] userauth is OK
2025-11-24T18:06:15.938 [DEBUG] [Thread-194612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:06:15.939 [DEBUG] [Thread-194612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:06:15.939 [DEBUG] [Thread-194612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:06:15.939 [DEBUG] [Thread-194612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:06:15.983 [INFO] [Thread-194612] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:06:15.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:06:16.599 [DEBUG] [Thread-194612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:06:16.600 [DEBUG] [Thread-194612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:06:16.601 [DEBUG] [Thread-194612] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:06:16.641 [DEBUG] [Thread-194612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:06:16.641 [DEBUG] [Thread-194612] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:06:16.644 [DEBUG] [Thread-194612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:06:16.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:06:16.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:06:16.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:06:16.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:06:16.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:06:16.670 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:06:16.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:06:16.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:06:16.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:06:16.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.670885 -999.00  +20.50  25.78     26   +0.60 1 1 1 1 1   887    0 19.28 -17.71 ----- 23.0 25.8 183.2 35.9 23.1 -28.7 -999.0 -999.0 24.4 -27.6 24.6 -29.5
2025-11-24T18:06:16.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:06:16.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:06:16.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.670885
2025-11-24T18:06:16.678 [DEBUG] [Thread-194612] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:06:16.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:06:16.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:06:16.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:06:16.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:06:16.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:06:16.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:05:49', tmtdew=23.52, humidity=20.63, cloud=0.0, wind=26.06, temperature=20.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:06:04.464', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:06:16.799 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:06:16.812 [DEBUG] [Thread-194615] [transport.py] [_log()] starting thread (client mode): 0xd3135ea0
2025-11-24T18:06:16.813 [DEBUG] [Thread-194615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:06:16.826 [DEBUG] [Thread-194615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:06:16.826 [INFO] [Thread-194615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:06:16.833 [DEBUG] [Thread-194615] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:06:16.833 [DEBUG] [Thread-194615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:06:16.833 [DEBUG] [Thread-194615] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:06:16.833 [DEBUG] [Thread-194615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:06:16.833 [DEBUG] [Thread-194615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:06:16.833 [DEBUG] [Thread-194615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:06:16.833 [DEBUG] [Thread-194615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:06:16.833 [DEBUG] [Thread-194615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] client lang: <none>
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] server lang: <none>
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] kex follows: False
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] Compression: none
2025-11-24T18:06:16.834 [DEBUG] [Thread-194615] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:06:16.892 [DEBUG] [Thread-194615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:06:16.893 [DEBUG] [Thread-194615] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:06:16.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:06:16.894 [DEBUG] [Thread-194615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:06:16.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:06:16.948 [DEBUG] [Thread-194615] [transport.py] [_log()] userauth is OK
2025-11-24T18:06:16.948 [DEBUG] [Thread-194615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:06:16.948 [DEBUG] [Thread-194615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:06:16.949 [DEBUG] [Thread-194615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:06:16.949 [DEBUG] [Thread-194615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:06:16.973 [INFO] [Thread-194615] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:06:16.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:06:16.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:06:17.809 [DEBUG] [Thread-194615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:06:17.809 [DEBUG] [Thread-194615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:06:17.857 [DEBUG] [Thread-194615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:06:17.857 [DEBUG] [Thread-194615] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:06:17.865 [DEBUG] [Thread-194615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:06:17.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:06:17.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-11-24T18:06:17.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-11-24T18:06:17.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:06:17.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:06:17.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:06:17.898 [DEBUG] [Thread-194615] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:06:20.825 [DEBUG] [Thread-194617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:06:35.944 [DEBUG] [Thread-194618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:06:47.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:06:47.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:06:47.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-11-24T18:06:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 6, 22), 23.45, 20.72, 0.0, 29.75, 20.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:06:48.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:06:22
2025-11-24T18:06:48.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:06:48.917 [DEBUG] [Thread-194619] [transport.py] [_log()] starting thread (client mode): 0xd3137430
2025-11-24T18:06:48.917 [DEBUG] [Thread-194619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:06:48.922 [DEBUG] [Thread-194619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:06:48.922 [INFO] [Thread-194619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:06:48.925 [DEBUG] [Thread-194619] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:06:48.925 [DEBUG] [Thread-194619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:06:48.925 [DEBUG] [Thread-194619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:06:48.925 [DEBUG] [Thread-194619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:06:48.925 [DEBUG] [Thread-194619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:06:48.925 [DEBUG] [Thread-194619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:06:48.925 [DEBUG] [Thread-194619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:06:48.925 [DEBUG] [Thread-194619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:06:48.925 [DEBUG] [Thread-194619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:06:48.925 [DEBUG] [Thread-194619] [transport.py] [_log()] client lang: <none>
2025-11-24T18:06:48.926 [DEBUG] [Thread-194619] [transport.py] [_log()] server lang: <none>
2025-11-24T18:06:48.926 [DEBUG] [Thread-194619] [transport.py] [_log()] kex follows: False
2025-11-24T18:06:48.926 [DEBUG] [Thread-194619] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:06:48.926 [DEBUG] [Thread-194619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:06:48.926 [DEBUG] [Thread-194619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:06:48.926 [DEBUG] [Thread-194619] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:06:48.926 [DEBUG] [Thread-194619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:06:48.926 [DEBUG] [Thread-194619] [transport.py] [_log()] Compression: none
2025-11-24T18:06:48.926 [DEBUG] [Thread-194619] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:06:48.943 [DEBUG] [Thread-194619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:06:48.947 [DEBUG] [Thread-194619] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:06:48.948 [DEBUG] [Thread-194619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:06:48.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:06:48.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:06:48.952 [DEBUG] [Thread-194619] [transport.py] [_log()] userauth is OK
2025-11-24T18:06:48.952 [DEBUG] [Thread-194619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:06:48.953 [DEBUG] [Thread-194619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:06:48.953 [DEBUG] [Thread-194619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:06:48.953 [DEBUG] [Thread-194619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:06:48.978 [INFO] [Thread-194619] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:06:48.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:06:49.560 [DEBUG] [Thread-194619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:06:49.561 [DEBUG] [Thread-194619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:06:49.571 [DEBUG] [Thread-194619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:06:49.602 [DEBUG] [Thread-194619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:06:49.602 [DEBUG] [Thread-194619] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:06:49.605 [DEBUG] [Thread-194619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:06:49.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:06:49.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:06:49.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:06:49.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:06:49.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:06:49.625 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:06:49.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:06:49.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:06:49.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:06:49.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.671232 -999.00  +20.50  23.45     26   +0.60 1 1 1 1 1   887    0 19.23 -20.42 ----- 27.2 23.4 186.2 33.7 23.0 -29.2 23.1 -30.5 24.4 -27.2 24.6 -30.1
2025-11-24T18:06:49.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:06:49.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:06:49.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.671232
2025-11-24T18:06:49.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:06:49.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:06:49.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:06:49.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:06:49.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:06:49.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:06:22', tmtdew=23.45, humidity=20.72, cloud=0.0, wind=29.75, temperature=20.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:06:34.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:06:49.633 [DEBUG] [Thread-194619] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:06:49.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:06:49.720 [DEBUG] [Thread-194622] [transport.py] [_log()] starting thread (client mode): 0xd07001f0
2025-11-24T18:06:49.721 [DEBUG] [Thread-194622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:06:49.735 [DEBUG] [Thread-194622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:06:49.735 [INFO] [Thread-194622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] client lang: <none>
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] server lang: <none>
2025-11-24T18:06:49.744 [DEBUG] [Thread-194622] [transport.py] [_log()] kex follows: False
2025-11-24T18:06:49.745 [DEBUG] [Thread-194622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:06:49.745 [DEBUG] [Thread-194622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:06:49.745 [DEBUG] [Thread-194622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:06:49.745 [DEBUG] [Thread-194622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:06:49.745 [DEBUG] [Thread-194622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:06:49.745 [DEBUG] [Thread-194622] [transport.py] [_log()] Compression: none
2025-11-24T18:06:49.745 [DEBUG] [Thread-194622] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:06:49.804 [DEBUG] [Thread-194622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:06:49.804 [DEBUG] [Thread-194622] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:06:49.805 [DEBUG] [Thread-194622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:06:49.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:06:49.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:06:49.864 [DEBUG] [Thread-194622] [transport.py] [_log()] userauth is OK
2025-11-24T18:06:49.865 [DEBUG] [Thread-194622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:06:49.865 [DEBUG] [Thread-194622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:06:49.865 [DEBUG] [Thread-194622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:06:49.865 [DEBUG] [Thread-194622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:06:49.890 [INFO] [Thread-194622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:06:49.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:06:49.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:06:50.762 [DEBUG] [Thread-194622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:06:50.762 [DEBUG] [Thread-194622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:06:50.810 [DEBUG] [Thread-194622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:06:50.810 [DEBUG] [Thread-194622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:06:50.818 [DEBUG] [Thread-194622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:06:50.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:06:50.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-11-24T18:06:50.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-11-24T18:06:50.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:06:50.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:06:50.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:06:50.858 [DEBUG] [Thread-194622] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:06:50.985 [DEBUG] [Thread-194624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:07:06.059 [DEBUG] [Thread-194625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:07:08.723 [DEBUG] [Thread-194626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:07:20.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:07:20.882 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:07:20.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-11-24T18:07:21.097 [DEBUG] [Thread-194627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:07:22.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 6, 55), 23.49, 20.22, 0.0, 31.25, 20.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:07:22.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:06:55
2025-11-24T18:07:22.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:07:22.371 [DEBUG] [Thread-194628] [transport.py] [_log()] starting thread (client mode): 0xd0703910
2025-11-24T18:07:22.372 [DEBUG] [Thread-194628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:07:22.382 [DEBUG] [Thread-194628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:07:22.382 [INFO] [Thread-194628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:07:22.387 [DEBUG] [Thread-194628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:07:22.387 [DEBUG] [Thread-194628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] client lang: <none>
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] server lang: <none>
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] kex follows: False
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:07:22.388 [DEBUG] [Thread-194628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:07:22.389 [DEBUG] [Thread-194628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:07:22.389 [DEBUG] [Thread-194628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:07:22.389 [DEBUG] [Thread-194628] [transport.py] [_log()] Compression: none
2025-11-24T18:07:22.389 [DEBUG] [Thread-194628] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:07:22.417 [DEBUG] [Thread-194628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:07:22.422 [DEBUG] [Thread-194628] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:07:22.423 [DEBUG] [Thread-194628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:07:22.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:07:22.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:07:22.427 [DEBUG] [Thread-194628] [transport.py] [_log()] userauth is OK
2025-11-24T18:07:22.427 [DEBUG] [Thread-194628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:07:22.427 [DEBUG] [Thread-194628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:07:22.427 [DEBUG] [Thread-194628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:07:22.427 [DEBUG] [Thread-194628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:07:22.439 [INFO] [Thread-194628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:07:22.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:07:23.039 [DEBUG] [Thread-194628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:07:23.039 [DEBUG] [Thread-194628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:07:23.040 [DEBUG] [Thread-194628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:07:23.080 [DEBUG] [Thread-194628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:07:23.080 [DEBUG] [Thread-194628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:07:23.082 [DEBUG] [Thread-194628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:07:23.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:07:23.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:07:23.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:07:23.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:07:23.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:07:23.103 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:07:23.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:07:23.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:07:23.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:07:23.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.671579 -999.00  +20.40  18.60     26   +0.60 1 1 1 1 1   887    0 19.39 -21.81 ----- 15.7 18.6 168.8 38.1 23.0 -28.6 23.0 -30.3 24.2 -26.7 24.4 -28.6
2025-11-24T18:07:23.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:07:23.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:07:23.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.671579
2025-11-24T18:07:23.110 [DEBUG] [Thread-194628] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:07:23.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:07:23.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:07:23.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:07:23.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:07:23.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:07:23.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:06:55', tmtdew=23.49, humidity=20.22, cloud=0.0, wind=31.25, temperature=20.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:07:04.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:07:23.201 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:07:23.213 [DEBUG] [Thread-194631] [transport.py] [_log()] starting thread (client mode): 0xc9b80970
2025-11-24T18:07:23.213 [DEBUG] [Thread-194631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:07:23.227 [DEBUG] [Thread-194631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:07:23.228 [INFO] [Thread-194631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] client lang: <none>
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] server lang: <none>
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] kex follows: False
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:07:23.235 [DEBUG] [Thread-194631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:07:23.236 [DEBUG] [Thread-194631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:07:23.236 [DEBUG] [Thread-194631] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:07:23.236 [DEBUG] [Thread-194631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:07:23.236 [DEBUG] [Thread-194631] [transport.py] [_log()] Compression: none
2025-11-24T18:07:23.236 [DEBUG] [Thread-194631] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:07:23.290 [DEBUG] [Thread-194631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:07:23.290 [DEBUG] [Thread-194631] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:07:23.290 [DEBUG] [Thread-194631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:07:23.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:07:23.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:07:23.347 [DEBUG] [Thread-194631] [transport.py] [_log()] userauth is OK
2025-11-24T18:07:23.347 [DEBUG] [Thread-194631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:07:23.347 [DEBUG] [Thread-194631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:07:23.347 [DEBUG] [Thread-194631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:07:23.347 [DEBUG] [Thread-194631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:07:23.363 [INFO] [Thread-194631] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:07:23.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:07:23.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:07:24.187 [DEBUG] [Thread-194631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:07:24.187 [DEBUG] [Thread-194631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:07:24.235 [DEBUG] [Thread-194631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:07:24.235 [DEBUG] [Thread-194631] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:07:24.245 [DEBUG] [Thread-194631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:07:24.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:07:24.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-11-24T18:07:24.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-11-24T18:07:24.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:07:24.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:07:24.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:07:24.280 [DEBUG] [Thread-194631] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:07:36.131 [DEBUG] [Thread-194633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:07:51.215 [DEBUG] [Thread-194634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:07:54.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:07:54.300 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:07:54.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:07:55.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 7, 28), 23.45, 20.27, 0.0, 28.92, 20.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:07:55.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:07:28
2025-11-24T18:07:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:07:55.792 [DEBUG] [Thread-194635] [transport.py] [_log()] starting thread (client mode): 0xc9b81e40
2025-11-24T18:07:55.792 [DEBUG] [Thread-194635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:07:55.802 [DEBUG] [Thread-194635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:07:55.802 [INFO] [Thread-194635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] client lang: <none>
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] server lang: <none>
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] kex follows: False
2025-11-24T18:07:55.805 [DEBUG] [Thread-194635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:07:55.806 [DEBUG] [Thread-194635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:07:55.806 [DEBUG] [Thread-194635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:07:55.806 [DEBUG] [Thread-194635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:07:55.806 [DEBUG] [Thread-194635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:07:55.806 [DEBUG] [Thread-194635] [transport.py] [_log()] Compression: none
2025-11-24T18:07:55.806 [DEBUG] [Thread-194635] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:07:55.825 [DEBUG] [Thread-194635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:07:55.826 [DEBUG] [Thread-194635] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:07:55.826 [DEBUG] [Thread-194635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:07:55.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:07:55.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:07:55.828 [DEBUG] [Thread-194635] [transport.py] [_log()] userauth is OK
2025-11-24T18:07:55.828 [DEBUG] [Thread-194635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:07:55.828 [DEBUG] [Thread-194635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:07:55.828 [DEBUG] [Thread-194635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:07:55.828 [DEBUG] [Thread-194635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:07:55.844 [INFO] [Thread-194635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:07:55.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:07:56.456 [DEBUG] [Thread-194635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:07:56.456 [DEBUG] [Thread-194635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:07:56.457 [DEBUG] [Thread-194635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:07:56.497 [DEBUG] [Thread-194635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:07:56.497 [DEBUG] [Thread-194635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:07:56.499 [DEBUG] [Thread-194635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:07:56.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:07:56.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:07:56.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:07:56.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:07:56.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:07:56.524 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:07:56.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:07:56.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:07:56.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:07:56.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.671926 -999.00  +20.50  22.20     26   +0.60 1 1 1 1 1   887    0 19.55 -22.31 ----- 25.6 22.2 167.6 30.6 23.1 -28.6 23.1 -27.8 24.3 -26.9 24.4 -28.6
2025-11-24T18:07:56.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:07:56.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:07:56.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.671926
2025-11-24T18:07:56.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:07:56.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:07:56.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:07:56.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:07:56.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:07:56.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:07:28', tmtdew=23.45, humidity=20.27, cloud=0.0, wind=28.92, temperature=20.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:07:34.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:07:56.530 [DEBUG] [Thread-194635] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:07:56.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:07:56.620 [DEBUG] [Thread-194638] [transport.py] [_log()] starting thread (client mode): 0xc9b820e0
2025-11-24T18:07:56.620 [DEBUG] [Thread-194638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:07:56.636 [DEBUG] [Thread-194638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:07:56.637 [INFO] [Thread-194638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:07:56.645 [DEBUG] [Thread-194638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:07:56.645 [DEBUG] [Thread-194638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:07:56.645 [DEBUG] [Thread-194638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:07:56.645 [DEBUG] [Thread-194638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:07:56.645 [DEBUG] [Thread-194638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:07:56.646 [DEBUG] [Thread-194638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:07:56.646 [DEBUG] [Thread-194638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:07:56.646 [DEBUG] [Thread-194638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:07:56.646 [DEBUG] [Thread-194638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:07:56.646 [DEBUG] [Thread-194638] [transport.py] [_log()] client lang: <none>
2025-11-24T18:07:56.646 [DEBUG] [Thread-194638] [transport.py] [_log()] server lang: <none>
2025-11-24T18:07:56.646 [DEBUG] [Thread-194638] [transport.py] [_log()] kex follows: False
2025-11-24T18:07:56.646 [DEBUG] [Thread-194638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:07:56.647 [DEBUG] [Thread-194638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:07:56.647 [DEBUG] [Thread-194638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:07:56.647 [DEBUG] [Thread-194638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:07:56.647 [DEBUG] [Thread-194638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:07:56.647 [DEBUG] [Thread-194638] [transport.py] [_log()] Compression: none
2025-11-24T18:07:56.647 [DEBUG] [Thread-194638] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:07:56.705 [DEBUG] [Thread-194638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:07:56.706 [DEBUG] [Thread-194638] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:07:56.707 [DEBUG] [Thread-194638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:07:56.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:07:56.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:07:56.764 [DEBUG] [Thread-194638] [transport.py] [_log()] userauth is OK
2025-11-24T18:07:56.765 [DEBUG] [Thread-194638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:07:56.765 [DEBUG] [Thread-194638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:07:56.765 [DEBUG] [Thread-194638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:07:56.765 [DEBUG] [Thread-194638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:07:56.786 [INFO] [Thread-194638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:07:56.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:07:56.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:07:57.647 [DEBUG] [Thread-194638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:07:57.647 [DEBUG] [Thread-194638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:07:57.695 [DEBUG] [Thread-194638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:07:57.695 [DEBUG] [Thread-194638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:07:57.703 [DEBUG] [Thread-194638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:07:57.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:07:57.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-11-24T18:07:57.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:07:57.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:07:57.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:07:57.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:07:57.736 [DEBUG] [Thread-194638] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:08:06.249 [DEBUG] [Thread-194640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:08:09.010 [DEBUG] [Thread-194641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:08:21.317 [DEBUG] [Thread-194642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:08:27.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:08:27.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:08:27.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-11-24T18:08:29.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 8), 23.51, 20.27, 0.0, 29.94, 20.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:08:29.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:08:00
2025-11-24T18:08:29.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:08:29.495 [DEBUG] [Thread-194643] [transport.py] [_log()] starting thread (client mode): 0xc9b835e0
2025-11-24T18:08:29.496 [DEBUG] [Thread-194643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:08:29.509 [DEBUG] [Thread-194643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:08:29.509 [INFO] [Thread-194643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:08:29.515 [DEBUG] [Thread-194643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] client lang: <none>
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] server lang: <none>
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] kex follows: False
2025-11-24T18:08:29.516 [DEBUG] [Thread-194643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:08:29.517 [DEBUG] [Thread-194643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:08:29.517 [DEBUG] [Thread-194643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:08:29.517 [DEBUG] [Thread-194643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:08:29.517 [DEBUG] [Thread-194643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:08:29.517 [DEBUG] [Thread-194643] [transport.py] [_log()] Compression: none
2025-11-24T18:08:29.517 [DEBUG] [Thread-194643] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:08:29.555 [DEBUG] [Thread-194643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:08:29.560 [DEBUG] [Thread-194643] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:08:29.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:08:29.564 [DEBUG] [Thread-194643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:08:29.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:08:29.568 [DEBUG] [Thread-194643] [transport.py] [_log()] userauth is OK
2025-11-24T18:08:29.568 [DEBUG] [Thread-194643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:08:29.568 [DEBUG] [Thread-194643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:08:29.568 [DEBUG] [Thread-194643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:08:29.568 [DEBUG] [Thread-194643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:08:29.582 [INFO] [Thread-194643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:08:29.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:08:30.217 [DEBUG] [Thread-194643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:08:30.217 [DEBUG] [Thread-194643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:08:30.226 [DEBUG] [Thread-194643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:08:30.258 [DEBUG] [Thread-194643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:08:30.258 [DEBUG] [Thread-194643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:08:30.260 [DEBUG] [Thread-194643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:08:30.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:08:30.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:08:30.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:08:30.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:08:30.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:08:30.274 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:08:30.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:08:30.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:08:30.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:08:30.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.672273 -999.00  +20.50  23.38     26   +0.60 1 1 1 1 1   887    0 19.21 -21.04 ----- 25.3 23.4 171.8 31.6 23.1 -28.6 23.1 -29.6 24.3 -26.8 24.5 -29.2
2025-11-24T18:08:30.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:08:30.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:08:30.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.672273
2025-11-24T18:08:30.281 [DEBUG] [Thread-194643] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:08:30.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:08:30.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:08:30.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:08:30.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:08:30.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:08:30.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:08:00', tmtdew=23.51, humidity=20.27, cloud=0.0, wind=29.94, temperature=20.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:08:04.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:08:30.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:08:30.381 [DEBUG] [Thread-194646] [transport.py] [_log()] starting thread (client mode): 0xd0701480
2025-11-24T18:08:30.381 [DEBUG] [Thread-194646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:08:30.396 [DEBUG] [Thread-194646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:08:30.396 [INFO] [Thread-194646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] client lang: <none>
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] server lang: <none>
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] kex follows: False
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] Compression: none
2025-11-24T18:08:30.404 [DEBUG] [Thread-194646] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:08:30.462 [DEBUG] [Thread-194646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:08:30.462 [DEBUG] [Thread-194646] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:08:30.462 [DEBUG] [Thread-194646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:08:30.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:08:30.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:08:30.524 [DEBUG] [Thread-194646] [transport.py] [_log()] userauth is OK
2025-11-24T18:08:30.524 [DEBUG] [Thread-194646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:08:30.524 [DEBUG] [Thread-194646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:08:30.524 [DEBUG] [Thread-194646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:08:30.524 [DEBUG] [Thread-194646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:08:30.537 [INFO] [Thread-194646] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:08:30.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:08:30.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:08:31.388 [DEBUG] [Thread-194646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:08:31.388 [DEBUG] [Thread-194646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:08:31.436 [DEBUG] [Thread-194646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:08:31.436 [DEBUG] [Thread-194646] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:08:31.445 [DEBUG] [Thread-194646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:08:31.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:08:31.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:08:31.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-11-24T18:08:31.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:08:31.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:08:31.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:08:31.482 [DEBUG] [Thread-194646] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:08:36.383 [DEBUG] [Thread-194648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:08:51.519 [DEBUG] [Thread-194649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:09:01.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:09:01.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:09:01.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-11-24T18:09:02.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 8, 33), 24.16, 19.6, 0.0, 41.35, 21.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:09:02.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:08:33
2025-11-24T18:09:02.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:09:03.141 [DEBUG] [Thread-194650] [transport.py] [_log()] starting thread (client mode): 0xd3136ad0
2025-11-24T18:09:03.141 [DEBUG] [Thread-194650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:09:03.151 [DEBUG] [Thread-194650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:09:03.151 [INFO] [Thread-194650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] client lang: <none>
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] server lang: <none>
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] kex follows: False
2025-11-24T18:09:03.154 [DEBUG] [Thread-194650] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:09:03.155 [DEBUG] [Thread-194650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:09:03.155 [DEBUG] [Thread-194650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:09:03.155 [DEBUG] [Thread-194650] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:09:03.155 [DEBUG] [Thread-194650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:09:03.155 [DEBUG] [Thread-194650] [transport.py] [_log()] Compression: none
2025-11-24T18:09:03.155 [DEBUG] [Thread-194650] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:09:03.174 [DEBUG] [Thread-194650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:09:03.174 [DEBUG] [Thread-194650] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:09:03.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:09:03.177 [DEBUG] [Thread-194650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:09:03.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:09:03.217 [DEBUG] [Thread-194650] [transport.py] [_log()] userauth is OK
2025-11-24T18:09:03.217 [DEBUG] [Thread-194650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:09:03.217 [DEBUG] [Thread-194650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:09:03.218 [DEBUG] [Thread-194650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:09:03.218 [DEBUG] [Thread-194650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:09:03.242 [INFO] [Thread-194650] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:09:03.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:09:03.860 [DEBUG] [Thread-194650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:09:03.861 [DEBUG] [Thread-194650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:09:03.862 [DEBUG] [Thread-194650] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:09:03.901 [DEBUG] [Thread-194650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:09:03.902 [DEBUG] [Thread-194650] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:09:03.905 [DEBUG] [Thread-194650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:09:03.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:09:03.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:09:03.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:09:03.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:09:03.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:09:03.928 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:09:03.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:09:03.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:09:03.930 [DEBUG] [Thread-194650] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:09:03.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:09:03.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.672621 -999.00  +20.50  17.87     26   +0.60 1 1 1 1 1   887    0 19.51 -20.60 ----- 23.4 17.9 177.2 35.2 22.9 -29.5 22.9 -30.0 24.2 -27.6 24.4 -29.6
2025-11-24T18:09:03.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:09:03.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:09:03.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.672621
2025-11-24T18:09:03.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:09:03.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:09:03.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:09:03.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:09:03.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:09:03.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:08:33', tmtdew=24.16, humidity=19.6, cloud=0.0, wind=41.35, temperature=21.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:08:34.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:09:04.012 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:09:04.023 [DEBUG] [Thread-194653] [transport.py] [_log()] starting thread (client mode): 0xd0703310
2025-11-24T18:09:04.023 [DEBUG] [Thread-194653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:09:04.037 [DEBUG] [Thread-194653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:09:04.038 [INFO] [Thread-194653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] client lang: <none>
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] server lang: <none>
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] kex follows: False
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:09:04.045 [DEBUG] [Thread-194653] [transport.py] [_log()] Compression: none
2025-11-24T18:09:04.046 [DEBUG] [Thread-194653] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:09:04.104 [DEBUG] [Thread-194653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:09:04.104 [DEBUG] [Thread-194653] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:09:04.105 [DEBUG] [Thread-194653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:09:04.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:09:04.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:09:04.159 [DEBUG] [Thread-194653] [transport.py] [_log()] userauth is OK
2025-11-24T18:09:04.159 [DEBUG] [Thread-194653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:09:04.159 [DEBUG] [Thread-194653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:09:04.159 [DEBUG] [Thread-194653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:09:04.159 [DEBUG] [Thread-194653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:09:04.174 [INFO] [Thread-194653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:09:04.174 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:09:04.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:09:05.014 [DEBUG] [Thread-194653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:09:05.014 [DEBUG] [Thread-194653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:09:05.062 [DEBUG] [Thread-194653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:09:05.062 [DEBUG] [Thread-194653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:09:05.071 [DEBUG] [Thread-194653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:09:05.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:09:05.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-11-24T18:09:05.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-11-24T18:09:05.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:09:05.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:09:05.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:09:05.109 [DEBUG] [Thread-194653] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:09:06.572 [DEBUG] [Thread-194655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:09:09.318 [DEBUG] [Thread-194656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:09:21.669 [DEBUG] [Thread-194657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:09:35.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:09:35.115 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:09:35.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:09:35.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 9, 6), 23.41, 20.38, 0.0, 35.06, 20.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:09:35.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:09:06
2025-11-24T18:09:36.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:09:36.228 [DEBUG] [Thread-194658] [transport.py] [_log()] starting thread (client mode): 0xd0700b80
2025-11-24T18:09:36.229 [DEBUG] [Thread-194658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:09:36.240 [DEBUG] [Thread-194658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:09:36.240 [INFO] [Thread-194658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:09:36.245 [DEBUG] [Thread-194658] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] client lang: <none>
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] server lang: <none>
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] kex follows: False
2025-11-24T18:09:36.246 [DEBUG] [Thread-194658] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:09:36.247 [DEBUG] [Thread-194658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:09:36.247 [DEBUG] [Thread-194658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:09:36.247 [DEBUG] [Thread-194658] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:09:36.247 [DEBUG] [Thread-194658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:09:36.248 [DEBUG] [Thread-194658] [transport.py] [_log()] Compression: none
2025-11-24T18:09:36.248 [DEBUG] [Thread-194658] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:09:36.286 [DEBUG] [Thread-194658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:09:36.292 [DEBUG] [Thread-194658] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:09:36.294 [DEBUG] [Thread-194658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:09:36.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:09:36.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:09:36.299 [DEBUG] [Thread-194658] [transport.py] [_log()] userauth is OK
2025-11-24T18:09:36.300 [DEBUG] [Thread-194658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:09:36.300 [DEBUG] [Thread-194658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:09:36.300 [DEBUG] [Thread-194658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:09:36.300 [DEBUG] [Thread-194658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:09:36.327 [INFO] [Thread-194658] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:09:36.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:09:36.721 [DEBUG] [Thread-194660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:09:36.932 [DEBUG] [Thread-194658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:09:36.932 [DEBUG] [Thread-194658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:09:36.933 [DEBUG] [Thread-194658] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:09:36.973 [DEBUG] [Thread-194658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:09:36.973 [DEBUG] [Thread-194658] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:09:36.976 [DEBUG] [Thread-194658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:09:36.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:09:36.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:09:36.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:09:36.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:09:37.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:09:37.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:09:37.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:09:37.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:09:37.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:09:37.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.672968 -999.00  +20.50  15.88     26   +0.70 1 1 1 1 1   887    0 19.77 -21.02 ----- 23.2 15.9 197.2 29.2 22.9 -29.2 22.9 -30.2 24.2 -26.5 24.4 -28.3
2025-11-24T18:09:37.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:09:37.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:09:37.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.672968
2025-11-24T18:09:37.010 [DEBUG] [Thread-194658] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:09:37.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:09:37.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:09:37.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:09:37.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:09:37.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:09:37.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:09:06', tmtdew=23.41, humidity=20.38, cloud=0.0, wind=35.06, temperature=20.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:09:04.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:09:37.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:09:37.122 [DEBUG] [Thread-194662] [transport.py] [_log()] starting thread (client mode): 0xd0701870
2025-11-24T18:09:37.122 [DEBUG] [Thread-194662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:09:37.137 [DEBUG] [Thread-194662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:09:37.137 [INFO] [Thread-194662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:09:37.144 [DEBUG] [Thread-194662] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:09:37.144 [DEBUG] [Thread-194662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:09:37.144 [DEBUG] [Thread-194662] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] client lang: <none>
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] server lang: <none>
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] kex follows: False
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] Compression: none
2025-11-24T18:09:37.145 [DEBUG] [Thread-194662] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:09:37.204 [DEBUG] [Thread-194662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:09:37.205 [DEBUG] [Thread-194662] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:09:37.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:09:37.206 [DEBUG] [Thread-194662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:09:37.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:09:37.260 [DEBUG] [Thread-194662] [transport.py] [_log()] userauth is OK
2025-11-24T18:09:37.260 [DEBUG] [Thread-194662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:09:37.260 [DEBUG] [Thread-194662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:09:37.260 [DEBUG] [Thread-194662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:09:37.260 [DEBUG] [Thread-194662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:09:37.278 [INFO] [Thread-194662] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:09:37.279 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:09:37.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:09:38.145 [DEBUG] [Thread-194662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:09:38.145 [DEBUG] [Thread-194662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:09:38.193 [DEBUG] [Thread-194662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:09:38.193 [DEBUG] [Thread-194662] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:09:38.202 [DEBUG] [Thread-194662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:09:38.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:09:38.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-11-24T18:09:38.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-11-24T18:09:38.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:09:38.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:09:38.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:09:38.249 [DEBUG] [Thread-194662] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:09:51.757 [DEBUG] [Thread-194664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:10:06.843 [DEBUG] [Thread-194665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:10:08.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:10:08.246 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:10:08.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-11-24T18:10:09.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 9, 38), 23.18, 20.91, 0.0, 33.61, 20.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:10:09.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:09:38
2025-11-24T18:10:09.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:10:09.418 [DEBUG] [Thread-194666] [transport.py] [_log()] starting thread (client mode): 0xd073a1a0
2025-11-24T18:10:09.419 [DEBUG] [Thread-194666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:10:09.420 [DEBUG] [Thread-194666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:10:09.420 [INFO] [Thread-194666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:10:09.425 [DEBUG] [Thread-194666] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:10:09.425 [DEBUG] [Thread-194666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:10:09.425 [DEBUG] [Thread-194666] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:10:09.425 [DEBUG] [Thread-194666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:10:09.425 [DEBUG] [Thread-194666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:10:09.425 [DEBUG] [Thread-194666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:10:09.425 [DEBUG] [Thread-194666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:10:09.425 [DEBUG] [Thread-194666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] client lang: <none>
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] server lang: <none>
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] kex follows: False
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] Compression: none
2025-11-24T18:10:09.426 [DEBUG] [Thread-194666] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:10:09.462 [DEBUG] [Thread-194666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:10:09.467 [DEBUG] [Thread-194666] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:10:09.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:10:09.471 [DEBUG] [Thread-194666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:10:09.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:10:09.474 [DEBUG] [Thread-194666] [transport.py] [_log()] userauth is OK
2025-11-24T18:10:09.475 [DEBUG] [Thread-194666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:10:09.475 [DEBUG] [Thread-194666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:10:09.475 [DEBUG] [Thread-194666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:10:09.475 [DEBUG] [Thread-194666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:10:09.509 [INFO] [Thread-194666] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:10:09.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:10:09.577 [DEBUG] [Thread-194668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:10:10.147 [DEBUG] [Thread-194666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:10:10.147 [DEBUG] [Thread-194666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:10:10.149 [DEBUG] [Thread-194666] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:10:10.187 [DEBUG] [Thread-194666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:10:10.187 [DEBUG] [Thread-194666] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:10:10.190 [DEBUG] [Thread-194666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:10:10.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:10:10.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:10:10.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:10:10.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:10:10.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:10:10.217 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:10:10.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:10:10.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:10:10.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:10:10.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.673315 -999.00  +20.50  27.41     26   +0.70 1 1 1 1 1   887    0 19.60 -20.72 ----- 28.6 27.4 192.2 38.6 22.9 -28.6 22.9 -28.2 24.2 -27.2 24.3 -29.9
2025-11-24T18:10:10.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:10:10.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:10:10.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.673315
2025-11-24T18:10:10.225 [DEBUG] [Thread-194666] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:10:10.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:10:10.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:10:10.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:10:10.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:10:10.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:10:10.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:09:38', tmtdew=23.18, humidity=20.91, cloud=0.0, wind=33.61, temperature=20.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:09:34.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:10:10.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:10:10.348 [DEBUG] [Thread-194670] [transport.py] [_log()] starting thread (client mode): 0xd07393f0
2025-11-24T18:10:10.348 [DEBUG] [Thread-194670] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:10:10.370 [DEBUG] [Thread-194670] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:10:10.371 [INFO] [Thread-194670] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:10:10.378 [DEBUG] [Thread-194670] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] client lang: <none>
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] server lang: <none>
2025-11-24T18:10:10.379 [DEBUG] [Thread-194670] [transport.py] [_log()] kex follows: False
2025-11-24T18:10:10.380 [DEBUG] [Thread-194670] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:10:10.380 [DEBUG] [Thread-194670] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:10:10.380 [DEBUG] [Thread-194670] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:10:10.380 [DEBUG] [Thread-194670] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:10:10.380 [DEBUG] [Thread-194670] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:10:10.380 [DEBUG] [Thread-194670] [transport.py] [_log()] Compression: none
2025-11-24T18:10:10.380 [DEBUG] [Thread-194670] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:10:10.440 [DEBUG] [Thread-194670] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:10:10.441 [DEBUG] [Thread-194670] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:10:10.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:10:10.442 [DEBUG] [Thread-194670] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:10:10.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:10:10.496 [DEBUG] [Thread-194670] [transport.py] [_log()] userauth is OK
2025-11-24T18:10:10.496 [DEBUG] [Thread-194670] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:10:10.496 [DEBUG] [Thread-194670] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:10:10.496 [DEBUG] [Thread-194670] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:10:10.496 [DEBUG] [Thread-194670] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:10:10.513 [INFO] [Thread-194670] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:10:10.514 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:10:10.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:10:11.379 [DEBUG] [Thread-194670] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:10:11.379 [DEBUG] [Thread-194670] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:10:11.427 [DEBUG] [Thread-194670] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:10:11.427 [DEBUG] [Thread-194670] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:10:11.436 [DEBUG] [Thread-194670] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:10:11.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:10:11.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-11-24T18:10:11.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:10:11.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:10:11.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:10:11.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:10:11.473 [DEBUG] [Thread-194670] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:10:21.875 [DEBUG] [Thread-194672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:10:36.969 [DEBUG] [Thread-194673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:10:41.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:10:41.495 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:10:41.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-11-24T18:10:42.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 10, 11), 23.1, 21.05, 0.0, 31.51, 20.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:10:42.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:10:11
2025-11-24T18:10:42.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:10:42.708 [DEBUG] [Thread-194674] [transport.py] [_log()] starting thread (client mode): 0xd0738550
2025-11-24T18:10:42.708 [DEBUG] [Thread-194674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:10:42.717 [DEBUG] [Thread-194674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:10:42.717 [INFO] [Thread-194674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] client lang: <none>
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] server lang: <none>
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] kex follows: False
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] Compression: none
2025-11-24T18:10:42.719 [DEBUG] [Thread-194674] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:10:42.734 [DEBUG] [Thread-194674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:10:42.735 [DEBUG] [Thread-194674] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:10:42.735 [DEBUG] [Thread-194674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:10:42.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:10:42.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:10:42.736 [DEBUG] [Thread-194674] [transport.py] [_log()] userauth is OK
2025-11-24T18:10:42.736 [DEBUG] [Thread-194674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:10:42.736 [DEBUG] [Thread-194674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:10:42.736 [DEBUG] [Thread-194674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:10:42.736 [DEBUG] [Thread-194674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:10:42.745 [INFO] [Thread-194674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:10:42.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:10:43.370 [DEBUG] [Thread-194674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:10:43.370 [DEBUG] [Thread-194674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:10:43.370 [DEBUG] [Thread-194674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:10:43.411 [DEBUG] [Thread-194674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:10:43.411 [DEBUG] [Thread-194674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:10:43.414 [DEBUG] [Thread-194674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:10:43.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:10:43.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:10:43.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:10:43.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:10:43.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:10:43.434 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:10:43.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:10:43.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:10:43.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:10:43.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.674009 -999.00  +20.50  12.87     26   +0.80 1 1 1 1 1   887    0 19.28 -25.97 ----- 22.1 12.9 193.0 33.4 22.8 -29.0 22.9 -29.1 24.1 -26.4 24.3 -27.9
2025-11-24T18:10:43.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:10:43.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:10:43.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.674009
2025-11-24T18:10:43.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:10:43.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:10:43.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:10:43.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:10:43.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:10:43.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:10:11', tmtdew=23.1, humidity=21.05, cloud=0.0, wind=31.51, temperature=20.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:10:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:10:43.437 [DEBUG] [Thread-194674] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:10:43.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:10:43.525 [DEBUG] [Thread-194677] [transport.py] [_log()] starting thread (client mode): 0xd3163be0
2025-11-24T18:10:43.525 [DEBUG] [Thread-194677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:10:43.539 [DEBUG] [Thread-194677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:10:43.539 [INFO] [Thread-194677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:10:43.546 [DEBUG] [Thread-194677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] client lang: <none>
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] server lang: <none>
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] kex follows: False
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] Compression: none
2025-11-24T18:10:43.547 [DEBUG] [Thread-194677] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:10:43.604 [DEBUG] [Thread-194677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:10:43.604 [DEBUG] [Thread-194677] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:10:43.604 [DEBUG] [Thread-194677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:10:43.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:10:43.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:10:43.663 [DEBUG] [Thread-194677] [transport.py] [_log()] userauth is OK
2025-11-24T18:10:43.663 [DEBUG] [Thread-194677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:10:43.663 [DEBUG] [Thread-194677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:10:43.663 [DEBUG] [Thread-194677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:10:43.663 [DEBUG] [Thread-194677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:10:43.677 [INFO] [Thread-194677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:10:43.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:10:43.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:10:44.550 [DEBUG] [Thread-194677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:10:44.550 [DEBUG] [Thread-194677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:10:44.598 [DEBUG] [Thread-194677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:10:44.598 [DEBUG] [Thread-194677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:10:44.606 [DEBUG] [Thread-194677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:10:44.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:10:44.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-11-24T18:10:44.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:10:44.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:10:44.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:10:44.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:10:44.638 [DEBUG] [Thread-194677] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:10:52.008 [DEBUG] [Thread-194679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:11:07.090 [DEBUG] [Thread-194680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:11:09.876 [DEBUG] [Thread-194681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:11:14.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:11:14.659 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:11:14.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:11:15.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 10, 44), 23.14, 21.01, 0.0, 31.97, 20.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:11:15.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:10:44
2025-11-24T18:11:16.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:11:16.258 [DEBUG] [Thread-194682] [transport.py] [_log()] starting thread (client mode): 0xd07cc9d0
2025-11-24T18:11:16.258 [DEBUG] [Thread-194682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:11:16.272 [DEBUG] [Thread-194682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:11:16.272 [INFO] [Thread-194682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] client lang: <none>
2025-11-24T18:11:16.273 [DEBUG] [Thread-194682] [transport.py] [_log()] server lang: <none>
2025-11-24T18:11:16.274 [DEBUG] [Thread-194682] [transport.py] [_log()] kex follows: False
2025-11-24T18:11:16.274 [DEBUG] [Thread-194682] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:11:16.274 [DEBUG] [Thread-194682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:11:16.274 [DEBUG] [Thread-194682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:11:16.274 [DEBUG] [Thread-194682] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:11:16.274 [DEBUG] [Thread-194682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:11:16.274 [DEBUG] [Thread-194682] [transport.py] [_log()] Compression: none
2025-11-24T18:11:16.274 [DEBUG] [Thread-194682] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:11:16.284 [DEBUG] [Thread-194682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:11:16.284 [DEBUG] [Thread-194682] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:11:16.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:11:16.285 [DEBUG] [Thread-194682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:11:16.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:11:16.286 [DEBUG] [Thread-194682] [transport.py] [_log()] userauth is OK
2025-11-24T18:11:16.286 [DEBUG] [Thread-194682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:11:16.286 [DEBUG] [Thread-194682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:11:16.286 [DEBUG] [Thread-194682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:11:16.287 [DEBUG] [Thread-194682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:11:16.299 [INFO] [Thread-194682] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:11:16.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:11:16.854 [DEBUG] [Thread-194682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:11:16.855 [DEBUG] [Thread-194682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:11:16.856 [DEBUG] [Thread-194682] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:11:16.896 [DEBUG] [Thread-194682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:11:16.896 [DEBUG] [Thread-194682] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:11:16.900 [DEBUG] [Thread-194682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:11:16.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:11:16.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:11:16.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:11:16.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:11:16.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:11:16.924 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:11:16.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:11:16.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:11:16.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:11:16.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.674357 -999.00  +20.50  25.72     26   +0.80 1 1 1 1 1   887    0 19.33 -26.16 ----- 27.5 25.7 185.8 31.2 22.9 -28.7 22.9 -29.8 24.1 -26.7 24.2 -29.0
2025-11-24T18:11:16.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:11:16.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:11:16.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.674357
2025-11-24T18:11:16.931 [DEBUG] [Thread-194682] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:11:16.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:11:16.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:11:16.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:11:16.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:11:16.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:11:16.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:10:44', tmtdew=23.14, humidity=21.01, cloud=0.0, wind=31.97, temperature=20.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:11:04.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:11:17.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:11:17.033 [DEBUG] [Thread-194685] [transport.py] [_log()] starting thread (client mode): 0xc9b82a40
2025-11-24T18:11:17.033 [DEBUG] [Thread-194685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:11:17.048 [DEBUG] [Thread-194685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:11:17.048 [INFO] [Thread-194685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:11:17.055 [DEBUG] [Thread-194685] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:11:17.056 [DEBUG] [Thread-194685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:11:17.056 [DEBUG] [Thread-194685] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:11:17.056 [DEBUG] [Thread-194685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:11:17.056 [DEBUG] [Thread-194685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:11:17.056 [DEBUG] [Thread-194685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:11:17.056 [DEBUG] [Thread-194685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:11:17.056 [DEBUG] [Thread-194685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:11:17.056 [DEBUG] [Thread-194685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:11:17.056 [DEBUG] [Thread-194685] [transport.py] [_log()] client lang: <none>
2025-11-24T18:11:17.057 [DEBUG] [Thread-194685] [transport.py] [_log()] server lang: <none>
2025-11-24T18:11:17.057 [DEBUG] [Thread-194685] [transport.py] [_log()] kex follows: False
2025-11-24T18:11:17.057 [DEBUG] [Thread-194685] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:11:17.057 [DEBUG] [Thread-194685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:11:17.057 [DEBUG] [Thread-194685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:11:17.057 [DEBUG] [Thread-194685] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:11:17.057 [DEBUG] [Thread-194685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:11:17.057 [DEBUG] [Thread-194685] [transport.py] [_log()] Compression: none
2025-11-24T18:11:17.058 [DEBUG] [Thread-194685] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:11:17.114 [DEBUG] [Thread-194685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:11:17.115 [DEBUG] [Thread-194685] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:11:17.115 [DEBUG] [Thread-194685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:11:17.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:11:17.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:11:17.176 [DEBUG] [Thread-194685] [transport.py] [_log()] userauth is OK
2025-11-24T18:11:17.176 [DEBUG] [Thread-194685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:11:17.176 [DEBUG] [Thread-194685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:11:17.177 [DEBUG] [Thread-194685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:11:17.177 [DEBUG] [Thread-194685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:11:17.196 [INFO] [Thread-194685] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:11:17.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:11:17.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:11:18.052 [DEBUG] [Thread-194685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:11:18.052 [DEBUG] [Thread-194685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:11:18.100 [DEBUG] [Thread-194685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:11:18.100 [DEBUG] [Thread-194685] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:11:18.108 [DEBUG] [Thread-194685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:11:18.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:11:18.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-11-24T18:11:18.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:11:18.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:11:18.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:11:18.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:11:18.140 [DEBUG] [Thread-194685] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:11:22.151 [DEBUG] [Thread-194687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:11:37.276 [DEBUG] [Thread-194688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:11:48.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:11:48.144 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:11:48.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-11-24T18:11:49.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 11, 16), 23.12, 21.01, 0.0, 34.55, 20.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:11:49.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:11:16
2025-11-24T18:11:49.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:11:49.410 [DEBUG] [Thread-194689] [transport.py] [_log()] starting thread (client mode): 0xd07001f0
2025-11-24T18:11:49.411 [DEBUG] [Thread-194689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:11:49.424 [DEBUG] [Thread-194689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:11:49.425 [INFO] [Thread-194689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:11:49.429 [DEBUG] [Thread-194689] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] client lang: <none>
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] server lang: <none>
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] kex follows: False
2025-11-24T18:11:49.430 [DEBUG] [Thread-194689] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:11:49.431 [DEBUG] [Thread-194689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:11:49.431 [DEBUG] [Thread-194689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:11:49.431 [DEBUG] [Thread-194689] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:11:49.432 [DEBUG] [Thread-194689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:11:49.432 [DEBUG] [Thread-194689] [transport.py] [_log()] Compression: none
2025-11-24T18:11:49.432 [DEBUG] [Thread-194689] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:11:49.470 [DEBUG] [Thread-194689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:11:49.475 [DEBUG] [Thread-194689] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:11:49.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:11:49.479 [DEBUG] [Thread-194689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:11:49.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:11:49.483 [DEBUG] [Thread-194689] [transport.py] [_log()] userauth is OK
2025-11-24T18:11:49.484 [DEBUG] [Thread-194689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:11:49.484 [DEBUG] [Thread-194689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:11:49.484 [DEBUG] [Thread-194689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:11:49.484 [DEBUG] [Thread-194689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:11:49.512 [INFO] [Thread-194689] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:11:49.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:11:50.128 [DEBUG] [Thread-194689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:11:50.128 [DEBUG] [Thread-194689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:11:50.128 [DEBUG] [Thread-194689] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:11:50.169 [DEBUG] [Thread-194689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:11:50.169 [DEBUG] [Thread-194689] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:11:50.172 [DEBUG] [Thread-194689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:11:50.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:11:50.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:11:50.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:11:50.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:11:50.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:11:50.193 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:11:50.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:11:50.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:11:50.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:11:50.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.674704 -999.00  +20.40  23.16     26   +0.70 1 1 1 1 1   887    0 19.07 -29.03 ----- 24.1 23.2 185.0 35.3 22.8 -29.1 22.8 -29.2 24.1 -27.0 24.2 -29.3
2025-11-24T18:11:50.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:11:50.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:11:50.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.674704
2025-11-24T18:11:50.200 [DEBUG] [Thread-194689] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:11:50.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:11:50.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:11:50.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:11:50.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:11:50.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:11:50.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:11:16', tmtdew=23.12, humidity=21.01, cloud=0.0, wind=34.55, temperature=20.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:11:34.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:11:50.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:11:50.294 [DEBUG] [Thread-194692] [transport.py] [_log()] starting thread (client mode): 0xd0738220
2025-11-24T18:11:50.295 [DEBUG] [Thread-194692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:11:50.309 [DEBUG] [Thread-194692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:11:50.310 [INFO] [Thread-194692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:11:50.317 [DEBUG] [Thread-194692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:11:50.317 [DEBUG] [Thread-194692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:11:50.317 [DEBUG] [Thread-194692] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:11:50.317 [DEBUG] [Thread-194692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:11:50.317 [DEBUG] [Thread-194692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:11:50.317 [DEBUG] [Thread-194692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:11:50.317 [DEBUG] [Thread-194692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:11:50.317 [DEBUG] [Thread-194692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:11:50.317 [DEBUG] [Thread-194692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:11:50.317 [DEBUG] [Thread-194692] [transport.py] [_log()] client lang: <none>
2025-11-24T18:11:50.318 [DEBUG] [Thread-194692] [transport.py] [_log()] server lang: <none>
2025-11-24T18:11:50.318 [DEBUG] [Thread-194692] [transport.py] [_log()] kex follows: False
2025-11-24T18:11:50.318 [DEBUG] [Thread-194692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:11:50.318 [DEBUG] [Thread-194692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:11:50.318 [DEBUG] [Thread-194692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:11:50.318 [DEBUG] [Thread-194692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:11:50.318 [DEBUG] [Thread-194692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:11:50.318 [DEBUG] [Thread-194692] [transport.py] [_log()] Compression: none
2025-11-24T18:11:50.318 [DEBUG] [Thread-194692] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:11:50.374 [DEBUG] [Thread-194692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:11:50.375 [DEBUG] [Thread-194692] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:11:50.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:11:50.375 [DEBUG] [Thread-194692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:11:50.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:11:50.431 [DEBUG] [Thread-194692] [transport.py] [_log()] userauth is OK
2025-11-24T18:11:50.431 [DEBUG] [Thread-194692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:11:50.431 [DEBUG] [Thread-194692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:11:50.431 [DEBUG] [Thread-194692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:11:50.431 [DEBUG] [Thread-194692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:11:50.449 [INFO] [Thread-194692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:11:50.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:11:50.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:11:51.353 [DEBUG] [Thread-194692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:11:51.353 [DEBUG] [Thread-194692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:11:51.401 [DEBUG] [Thread-194692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:11:51.401 [DEBUG] [Thread-194692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:11:51.409 [DEBUG] [Thread-194692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:11:51.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:11:51.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-11-24T18:11:51.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-11-24T18:11:51.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:11:51.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:11:51.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:11:51.443 [DEBUG] [Thread-194692] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:11:52.309 [DEBUG] [Thread-194694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:12:07.373 [DEBUG] [Thread-194695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:12:10.094 [DEBUG] [Thread-194696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:12:21.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:12:21.457 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:12:21.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-11-24T18:12:22.416 [DEBUG] [Thread-194697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:12:22.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 11, 49), 23.12, 21.06, 0.0, 32.02, 20.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:12:22.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:11:49
2025-11-24T18:12:22.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:12:22.769 [DEBUG] [Thread-194698] [transport.py] [_log()] starting thread (client mode): 0xd0702ad0
2025-11-24T18:12:22.769 [DEBUG] [Thread-194698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:12:22.783 [DEBUG] [Thread-194698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:12:22.783 [INFO] [Thread-194698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] client lang: <none>
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] server lang: <none>
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] kex follows: False
2025-11-24T18:12:22.787 [DEBUG] [Thread-194698] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:12:22.788 [DEBUG] [Thread-194698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:12:22.788 [DEBUG] [Thread-194698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:12:22.788 [DEBUG] [Thread-194698] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:12:22.788 [DEBUG] [Thread-194698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:12:22.788 [DEBUG] [Thread-194698] [transport.py] [_log()] Compression: none
2025-11-24T18:12:22.788 [DEBUG] [Thread-194698] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:12:22.817 [DEBUG] [Thread-194698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:12:22.821 [DEBUG] [Thread-194698] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:12:22.822 [DEBUG] [Thread-194698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:12:22.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:12:22.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:12:22.825 [DEBUG] [Thread-194698] [transport.py] [_log()] userauth is OK
2025-11-24T18:12:22.825 [DEBUG] [Thread-194698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:12:22.825 [DEBUG] [Thread-194698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:12:22.825 [DEBUG] [Thread-194698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:12:22.825 [DEBUG] [Thread-194698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:12:22.843 [INFO] [Thread-194698] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:12:22.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:12:23.487 [DEBUG] [Thread-194698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:12:23.487 [DEBUG] [Thread-194698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:12:23.488 [DEBUG] [Thread-194698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:12:23.528 [DEBUG] [Thread-194698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:12:23.528 [DEBUG] [Thread-194698] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:12:23.531 [DEBUG] [Thread-194698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:12:23.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:12:23.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:12:23.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:12:23.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:12:23.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:12:23.550 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:12:23.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:12:23.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:12:23.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:12:23.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.675051 -999.00  +20.40  22.02     26   +0.60 1 1 1 1 1   887    0 19.27 -30.03 ----- 25.1 22.0 199.0 28.9 22.8 -28.7 22.8 -29.4 24.1 -26.5 24.2 -29.3
2025-11-24T18:12:23.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:12:23.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:12:23.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.675051
2025-11-24T18:12:23.557 [DEBUG] [Thread-194698] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:12:23.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:12:23.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:12:23.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:12:23.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:12:23.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:12:23.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:11:49', tmtdew=23.12, humidity=21.06, cloud=0.0, wind=32.02, temperature=20.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:12:04.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:12:23.646 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:12:23.657 [DEBUG] [Thread-194701] [transport.py] [_log()] starting thread (client mode): 0xd07bda80
2025-11-24T18:12:23.658 [DEBUG] [Thread-194701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:12:23.672 [DEBUG] [Thread-194701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:12:23.672 [INFO] [Thread-194701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] client lang: <none>
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] server lang: <none>
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] kex follows: False
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:12:23.679 [DEBUG] [Thread-194701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:12:23.680 [DEBUG] [Thread-194701] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:12:23.680 [DEBUG] [Thread-194701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:12:23.680 [DEBUG] [Thread-194701] [transport.py] [_log()] Compression: none
2025-11-24T18:12:23.680 [DEBUG] [Thread-194701] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:12:23.738 [DEBUG] [Thread-194701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:12:23.738 [DEBUG] [Thread-194701] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:12:23.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:12:23.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:12:23.738 [DEBUG] [Thread-194701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:12:23.795 [DEBUG] [Thread-194701] [transport.py] [_log()] userauth is OK
2025-11-24T18:12:23.795 [DEBUG] [Thread-194701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:12:23.795 [DEBUG] [Thread-194701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:12:23.795 [DEBUG] [Thread-194701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:12:23.795 [DEBUG] [Thread-194701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:12:23.809 [INFO] [Thread-194701] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:12:23.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:12:23.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:12:24.650 [DEBUG] [Thread-194701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:12:24.650 [DEBUG] [Thread-194701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:12:24.698 [DEBUG] [Thread-194701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:12:24.698 [DEBUG] [Thread-194701] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:12:24.706 [DEBUG] [Thread-194701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:12:24.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:12:24.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:12:24.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:12:24.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:12:24.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:12:24.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:12:24.740 [DEBUG] [Thread-194701] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:12:37.448 [DEBUG] [Thread-194703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:12:52.556 [DEBUG] [Thread-194704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:12:54.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:12:54.773 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:12:54.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-11-24T18:12:55.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 12, 22), 23.18, 21.0, 0.0, 32.96, 20.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:12:55.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:12:22
2025-11-24T18:12:55.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:12:55.884 [DEBUG] [Thread-194705] [transport.py] [_log()] starting thread (client mode): 0xd31620b0
2025-11-24T18:12:55.885 [DEBUG] [Thread-194705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:12:55.893 [DEBUG] [Thread-194705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:12:55.893 [INFO] [Thread-194705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] client lang: <none>
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] server lang: <none>
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] kex follows: False
2025-11-24T18:12:55.898 [DEBUG] [Thread-194705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:12:55.899 [DEBUG] [Thread-194705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:12:55.899 [DEBUG] [Thread-194705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:12:55.899 [DEBUG] [Thread-194705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:12:55.899 [DEBUG] [Thread-194705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:12:55.899 [DEBUG] [Thread-194705] [transport.py] [_log()] Compression: none
2025-11-24T18:12:55.899 [DEBUG] [Thread-194705] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:12:55.931 [DEBUG] [Thread-194705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:12:55.934 [DEBUG] [Thread-194705] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:12:55.936 [DEBUG] [Thread-194705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:12:55.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:12:55.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:12:55.938 [DEBUG] [Thread-194705] [transport.py] [_log()] userauth is OK
2025-11-24T18:12:55.939 [DEBUG] [Thread-194705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:12:55.939 [DEBUG] [Thread-194705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:12:55.939 [DEBUG] [Thread-194705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:12:55.939 [DEBUG] [Thread-194705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:12:55.956 [INFO] [Thread-194705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:12:55.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:12:56.590 [DEBUG] [Thread-194705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:12:56.591 [DEBUG] [Thread-194705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:12:56.591 [DEBUG] [Thread-194705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:12:56.631 [DEBUG] [Thread-194705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:12:56.631 [DEBUG] [Thread-194705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:12:56.634 [DEBUG] [Thread-194705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:12:56.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:12:56.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:12:56.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:12:56.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:12:56.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:12:56.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:12:56.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:12:56.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:12:56.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:12:56.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.675398 -999.00  +20.50  23.47     26   +0.70 1 1 1 1 1   887    0 19.13 -31.90 ----- 29.1 23.5 173.2 31.4 22.8 -28.8 22.9 -28.2 24.1 -26.6 24.2 -28.8
2025-11-24T18:12:56.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:12:56.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:12:56.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.675398
2025-11-24T18:12:56.663 [DEBUG] [Thread-194705] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:12:56.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:12:56.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:12:56.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:12:56.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:12:56.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:12:56.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:12:22', tmtdew=23.18, humidity=21.0, cloud=0.0, wind=32.96, temperature=20.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:12:34.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:12:56.757 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:12:56.768 [DEBUG] [Thread-194708] [transport.py] [_log()] starting thread (client mode): 0xd3160be0
2025-11-24T18:12:56.768 [DEBUG] [Thread-194708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:12:56.783 [DEBUG] [Thread-194708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:12:56.783 [INFO] [Thread-194708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:12:56.790 [DEBUG] [Thread-194708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] client lang: <none>
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] server lang: <none>
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] kex follows: False
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] Compression: none
2025-11-24T18:12:56.791 [DEBUG] [Thread-194708] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:12:56.846 [DEBUG] [Thread-194708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:12:56.846 [DEBUG] [Thread-194708] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:12:56.846 [DEBUG] [Thread-194708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:12:56.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:12:56.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:12:56.907 [DEBUG] [Thread-194708] [transport.py] [_log()] userauth is OK
2025-11-24T18:12:56.907 [DEBUG] [Thread-194708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:12:56.907 [DEBUG] [Thread-194708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:12:56.907 [DEBUG] [Thread-194708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:12:56.907 [DEBUG] [Thread-194708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:12:56.921 [INFO] [Thread-194708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:12:56.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:12:56.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:12:57.763 [DEBUG] [Thread-194708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:12:57.763 [DEBUG] [Thread-194708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:12:57.811 [DEBUG] [Thread-194708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:12:57.811 [DEBUG] [Thread-194708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:12:57.820 [DEBUG] [Thread-194708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:12:57.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:12:57.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:12:57.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-11-24T18:12:57.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:12:57.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:12:57.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:12:57.855 [DEBUG] [Thread-194708] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:13:07.602 [DEBUG] [Thread-194710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:13:10.385 [DEBUG] [Thread-194711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:13:22.706 [DEBUG] [Thread-194712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:13:27.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:13:27.879 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:13:27.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-11-24T18:13:28.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 12, 55), 23.22, 21.01, 0.0, 34.81, 20.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:13:28.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:12:55
2025-11-24T18:13:28.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:13:28.986 [DEBUG] [Thread-194713] [transport.py] [_log()] starting thread (client mode): 0xd3163a30
2025-11-24T18:13:28.987 [DEBUG] [Thread-194713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:13:28.988 [DEBUG] [Thread-194713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:13:28.988 [INFO] [Thread-194713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:13:28.992 [DEBUG] [Thread-194713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:13:28.992 [DEBUG] [Thread-194713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:13:28.992 [DEBUG] [Thread-194713] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:13:28.992 [DEBUG] [Thread-194713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:13:28.992 [DEBUG] [Thread-194713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:13:28.992 [DEBUG] [Thread-194713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] client lang: <none>
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] server lang: <none>
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] kex follows: False
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] Compression: none
2025-11-24T18:13:28.993 [DEBUG] [Thread-194713] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:13:29.014 [DEBUG] [Thread-194713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:13:29.018 [DEBUG] [Thread-194713] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:13:29.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:13:29.022 [DEBUG] [Thread-194713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:13:29.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:13:29.024 [DEBUG] [Thread-194713] [transport.py] [_log()] userauth is OK
2025-11-24T18:13:29.024 [DEBUG] [Thread-194713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:13:29.024 [DEBUG] [Thread-194713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:13:29.024 [DEBUG] [Thread-194713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:13:29.024 [DEBUG] [Thread-194713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:13:29.042 [INFO] [Thread-194713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:13:29.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:13:29.682 [DEBUG] [Thread-194713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:13:29.683 [DEBUG] [Thread-194713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:13:29.683 [DEBUG] [Thread-194713] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:13:29.723 [DEBUG] [Thread-194713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:13:29.723 [DEBUG] [Thread-194713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:13:29.726 [DEBUG] [Thread-194713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:13:29.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:13:29.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:13:29.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:13:29.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:13:29.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:13:29.746 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:13:29.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:13:29.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:13:29.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:13:29.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.675746 -999.00  +20.50  21.31     26   +0.60 1 1 1 1 1   887    0 19.54 -35.00 ----- 26.6 21.3 186.2 30.5 22.8 -28.9 22.8 -29.2 24.1 -26.9 24.2 -28.8
2025-11-24T18:13:29.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:13:29.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:13:29.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.675746
2025-11-24T18:13:29.752 [DEBUG] [Thread-194713] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:13:29.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:13:29.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:13:29.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:13:29.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:13:29.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:13:29.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:12:55', tmtdew=23.22, humidity=21.01, cloud=0.0, wind=34.81, temperature=20.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:13:04.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:13:29.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:13:29.853 [DEBUG] [Thread-194716] [transport.py] [_log()] starting thread (client mode): 0xd07f8250
2025-11-24T18:13:29.853 [DEBUG] [Thread-194716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:13:29.873 [DEBUG] [Thread-194716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:13:29.873 [INFO] [Thread-194716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:13:29.880 [DEBUG] [Thread-194716] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:13:29.880 [DEBUG] [Thread-194716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:13:29.880 [DEBUG] [Thread-194716] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:13:29.880 [DEBUG] [Thread-194716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:13:29.880 [DEBUG] [Thread-194716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:13:29.880 [DEBUG] [Thread-194716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] client lang: <none>
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] server lang: <none>
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] kex follows: False
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] Compression: none
2025-11-24T18:13:29.881 [DEBUG] [Thread-194716] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:13:29.941 [DEBUG] [Thread-194716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:13:29.942 [DEBUG] [Thread-194716] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:13:29.942 [DEBUG] [Thread-194716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:13:29.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:13:29.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:13:29.999 [DEBUG] [Thread-194716] [transport.py] [_log()] userauth is OK
2025-11-24T18:13:29.999 [DEBUG] [Thread-194716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:13:29.999 [DEBUG] [Thread-194716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:13:29.999 [DEBUG] [Thread-194716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:13:29.999 [DEBUG] [Thread-194716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:13:30.013 [INFO] [Thread-194716] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:13:30.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:13:30.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:13:30.881 [DEBUG] [Thread-194716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:13:30.881 [DEBUG] [Thread-194716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:13:30.930 [DEBUG] [Thread-194716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:13:30.930 [DEBUG] [Thread-194716] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:13:30.939 [DEBUG] [Thread-194716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:13:30.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:13:30.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-11-24T18:13:30.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-11-24T18:13:30.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:13:30.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:13:30.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:13:30.978 [DEBUG] [Thread-194716] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:13:37.751 [DEBUG] [Thread-194718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:13:52.851 [DEBUG] [Thread-194719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:14:01.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:14:01.001 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:14:01.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-11-24T18:14:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 13, 27), 23.19, 21.03, 0.0, 36.36, 20.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:14:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:13:27
2025-11-24T18:14:02.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:14:02.362 [DEBUG] [Thread-194720] [transport.py] [_log()] starting thread (client mode): 0xc9b817b0
2025-11-24T18:14:02.363 [DEBUG] [Thread-194720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:14:02.380 [DEBUG] [Thread-194720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:14:02.380 [INFO] [Thread-194720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:14:02.383 [DEBUG] [Thread-194720] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:14:02.383 [DEBUG] [Thread-194720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:14:02.383 [DEBUG] [Thread-194720] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:14:02.383 [DEBUG] [Thread-194720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:14:02.383 [DEBUG] [Thread-194720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:14:02.383 [DEBUG] [Thread-194720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:14:02.383 [DEBUG] [Thread-194720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:14:02.383 [DEBUG] [Thread-194720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:14:02.383 [DEBUG] [Thread-194720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:14:02.384 [DEBUG] [Thread-194720] [transport.py] [_log()] client lang: <none>
2025-11-24T18:14:02.384 [DEBUG] [Thread-194720] [transport.py] [_log()] server lang: <none>
2025-11-24T18:14:02.384 [DEBUG] [Thread-194720] [transport.py] [_log()] kex follows: False
2025-11-24T18:14:02.384 [DEBUG] [Thread-194720] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:14:02.384 [DEBUG] [Thread-194720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:14:02.384 [DEBUG] [Thread-194720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:14:02.384 [DEBUG] [Thread-194720] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:14:02.384 [DEBUG] [Thread-194720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:14:02.384 [DEBUG] [Thread-194720] [transport.py] [_log()] Compression: none
2025-11-24T18:14:02.384 [DEBUG] [Thread-194720] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:14:02.405 [DEBUG] [Thread-194720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:14:02.406 [DEBUG] [Thread-194720] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:14:02.407 [DEBUG] [Thread-194720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:14:02.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:14:02.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:14:02.409 [DEBUG] [Thread-194720] [transport.py] [_log()] userauth is OK
2025-11-24T18:14:02.409 [DEBUG] [Thread-194720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:14:02.409 [DEBUG] [Thread-194720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:14:02.409 [DEBUG] [Thread-194720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:14:02.409 [DEBUG] [Thread-194720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:14:02.419 [INFO] [Thread-194720] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:14:02.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:14:03.044 [DEBUG] [Thread-194720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:14:03.044 [DEBUG] [Thread-194720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:14:03.044 [DEBUG] [Thread-194720] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:14:03.085 [DEBUG] [Thread-194720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:14:03.085 [DEBUG] [Thread-194720] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:14:03.088 [DEBUG] [Thread-194720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:14:03.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:14:03.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:14:03.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:14:03.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:14:03.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:14:03.108 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:14:03.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:14:03.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:14:03.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:14:03.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.676093 -999.00  +20.30  30.86     26   +0.60 1 1 2 1 1   887    0 19.04 -32.74 ----- 30.7 30.9 183.0 39.3 22.8 -29.1 22.7 -30.1 23.9 -28.2 24.1 -29.6
2025-11-24T18:14:03.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:14:03.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:14:03.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.676093
2025-11-24T18:14:03.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:14:03.110 [DEBUG] [Thread-194720] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:14:03.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:14:03.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:14:03.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:14:03.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:14:03.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:13:27', tmtdew=23.19, humidity=21.03, cloud=0.0, wind=36.36, temperature=20.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:13:34.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:14:03.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:14:03.199 [DEBUG] [Thread-194723] [transport.py] [_log()] starting thread (client mode): 0xd3161c90
2025-11-24T18:14:03.199 [DEBUG] [Thread-194723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:14:03.213 [DEBUG] [Thread-194723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:14:03.213 [INFO] [Thread-194723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] client lang: <none>
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] server lang: <none>
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] kex follows: False
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] Compression: none
2025-11-24T18:14:03.221 [DEBUG] [Thread-194723] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:14:03.278 [DEBUG] [Thread-194723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:14:03.278 [DEBUG] [Thread-194723] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:14:03.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:14:03.278 [DEBUG] [Thread-194723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:14:03.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:14:03.335 [DEBUG] [Thread-194723] [transport.py] [_log()] userauth is OK
2025-11-24T18:14:03.335 [DEBUG] [Thread-194723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:14:03.335 [DEBUG] [Thread-194723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:14:03.335 [DEBUG] [Thread-194723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:14:03.335 [DEBUG] [Thread-194723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:14:03.349 [INFO] [Thread-194723] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:14:03.349 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:14:03.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:14:04.197 [DEBUG] [Thread-194723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:14:04.198 [DEBUG] [Thread-194723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:14:04.245 [DEBUG] [Thread-194723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:14:04.245 [DEBUG] [Thread-194723] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:14:04.253 [DEBUG] [Thread-194723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:14:04.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:14:04.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:14:04.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:14:04.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:14:04.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:14:04.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:14:04.285 [DEBUG] [Thread-194723] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:14:07.878 [DEBUG] [Thread-194725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:14:10.639 [DEBUG] [Thread-194726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:14:22.923 [DEBUG] [Thread-194727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:14:34.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:14:34.308 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:14:34.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-11-24T18:14:35.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 13, 27), 23.14, 21.03, 0.0, 36.36, 20.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:14:35.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:13:27
2025-11-24T18:14:35.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:14:35.647 [DEBUG] [Thread-194728] [transport.py] [_log()] starting thread (client mode): 0xd3162e90
2025-11-24T18:14:35.647 [DEBUG] [Thread-194728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:14:35.661 [DEBUG] [Thread-194728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:14:35.661 [INFO] [Thread-194728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:14:35.664 [DEBUG] [Thread-194728] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:14:35.664 [DEBUG] [Thread-194728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:14:35.664 [DEBUG] [Thread-194728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] client lang: <none>
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] server lang: <none>
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] kex follows: False
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] Compression: none
2025-11-24T18:14:35.665 [DEBUG] [Thread-194728] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:14:35.690 [DEBUG] [Thread-194728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:14:35.693 [DEBUG] [Thread-194728] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:14:35.693 [DEBUG] [Thread-194728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:14:35.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:14:35.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:14:35.696 [DEBUG] [Thread-194728] [transport.py] [_log()] userauth is OK
2025-11-24T18:14:35.696 [DEBUG] [Thread-194728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:14:35.696 [DEBUG] [Thread-194728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:14:35.696 [DEBUG] [Thread-194728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:14:35.696 [DEBUG] [Thread-194728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:14:35.706 [INFO] [Thread-194728] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:14:35.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:14:36.349 [DEBUG] [Thread-194728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:14:36.349 [DEBUG] [Thread-194728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:14:36.349 [DEBUG] [Thread-194728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:14:36.390 [DEBUG] [Thread-194728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:14:36.391 [DEBUG] [Thread-194728] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:14:36.393 [DEBUG] [Thread-194728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:14:36.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:14:36.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:14:36.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:14:36.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:14:36.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:14:36.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:14:36.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:14:36.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:14:36.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:14:36.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.676440 -999.00  +20.30  17.06     26   +0.70 1 1 1 1 1   887    0 19.44 -32.23 ----- 25.9 17.1 184.9 28.8 22.7 -28.7 22.8 -29.8 23.9 -26.8 24.1 -28.8
2025-11-24T18:14:36.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:14:36.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:14:36.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.676440
2025-11-24T18:14:36.429 [DEBUG] [Thread-194728] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:14:36.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:14:36.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:14:36.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:14:36.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:14:36.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:14:36.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:13:27', tmtdew=23.14, humidity=21.03, cloud=0.0, wind=36.36, temperature=20.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:14:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:14:36.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:14:36.532 [DEBUG] [Thread-194731] [transport.py] [_log()] starting thread (client mode): 0xd0700460
2025-11-24T18:14:36.532 [DEBUG] [Thread-194731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:14:36.548 [DEBUG] [Thread-194731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:14:36.548 [INFO] [Thread-194731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:14:36.556 [DEBUG] [Thread-194731] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:14:36.556 [DEBUG] [Thread-194731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] client lang: <none>
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] server lang: <none>
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] kex follows: False
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:14:36.557 [DEBUG] [Thread-194731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:14:36.558 [DEBUG] [Thread-194731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:14:36.558 [DEBUG] [Thread-194731] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:14:36.558 [DEBUG] [Thread-194731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:14:36.558 [DEBUG] [Thread-194731] [transport.py] [_log()] Compression: none
2025-11-24T18:14:36.558 [DEBUG] [Thread-194731] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:14:36.619 [DEBUG] [Thread-194731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:14:36.620 [DEBUG] [Thread-194731] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:14:36.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:14:36.621 [DEBUG] [Thread-194731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:14:36.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:14:36.675 [DEBUG] [Thread-194731] [transport.py] [_log()] userauth is OK
2025-11-24T18:14:36.675 [DEBUG] [Thread-194731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:14:36.676 [DEBUG] [Thread-194731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:14:36.676 [DEBUG] [Thread-194731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:14:36.676 [DEBUG] [Thread-194731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:14:36.700 [INFO] [Thread-194731] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:14:36.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:14:36.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:14:37.536 [DEBUG] [Thread-194731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:14:37.536 [DEBUG] [Thread-194731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:14:37.584 [DEBUG] [Thread-194731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:14:37.584 [DEBUG] [Thread-194731] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:14:37.593 [DEBUG] [Thread-194731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:14:37.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:14:37.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-11-24T18:14:37.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-11-24T18:14:37.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:14:37.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:14:37.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:14:37.628 [DEBUG] [Thread-194731] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:14:37.958 [DEBUG] [Thread-194733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:14:53.058 [DEBUG] [Thread-194734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:15:07.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:15:07.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:15:07.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-11-24T18:15:08.111 [DEBUG] [Thread-194735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:15:08.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 14, 33), 23.13, 21.06, 0.0, 34.86, 20.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:15:08.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:14:33
2025-11-24T18:15:08.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:15:08.969 [DEBUG] [Thread-194736] [transport.py] [_log()] starting thread (client mode): 0xd07003d0
2025-11-24T18:15:08.969 [DEBUG] [Thread-194736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:15:08.978 [DEBUG] [Thread-194736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:15:08.978 [INFO] [Thread-194736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] client lang: <none>
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] server lang: <none>
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] kex follows: False
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:15:08.982 [DEBUG] [Thread-194736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:15:08.983 [DEBUG] [Thread-194736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:15:08.983 [DEBUG] [Thread-194736] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:15:08.983 [DEBUG] [Thread-194736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:15:08.983 [DEBUG] [Thread-194736] [transport.py] [_log()] Compression: none
2025-11-24T18:15:08.983 [DEBUG] [Thread-194736] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:15:09.006 [DEBUG] [Thread-194736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:15:09.009 [DEBUG] [Thread-194736] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:15:09.010 [DEBUG] [Thread-194736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:15:09.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:15:09.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:15:09.012 [DEBUG] [Thread-194736] [transport.py] [_log()] userauth is OK
2025-11-24T18:15:09.013 [DEBUG] [Thread-194736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:15:09.013 [DEBUG] [Thread-194736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:15:09.013 [DEBUG] [Thread-194736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:15:09.013 [DEBUG] [Thread-194736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:15:09.024 [INFO] [Thread-194736] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:15:09.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:15:09.703 [DEBUG] [Thread-194736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:15:09.704 [DEBUG] [Thread-194736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:15:09.705 [DEBUG] [Thread-194736] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:15:09.744 [DEBUG] [Thread-194736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:15:09.745 [DEBUG] [Thread-194736] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:15:09.747 [DEBUG] [Thread-194736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:15:09.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:15:09.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:15:09.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:15:09.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:15:09.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:15:09.767 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:15:09.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:15:09.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:15:09.769 [DEBUG] [Thread-194736] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:15:09.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:15:09.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.676787 -999.00  +20.30  26.88     26   +0.60 1 1 1 1 1   887    0 19.02 -35.19 ----- 29.1 26.9 178.8 34.2 22.7 -29.2 22.6 -30.8 23.9 -28.1 24.1 -30.3
2025-11-24T18:15:09.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:15:09.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:15:09.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.676787
2025-11-24T18:15:09.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:15:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:15:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:15:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:15:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:15:09.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:14:33', tmtdew=23.13, humidity=21.06, cloud=0.0, wind=34.86, temperature=20.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:14:34.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:15:09.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:15:09.883 [DEBUG] [Thread-194739] [transport.py] [_log()] starting thread (client mode): 0xd3135f60
2025-11-24T18:15:09.883 [DEBUG] [Thread-194739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:15:09.899 [DEBUG] [Thread-194739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:15:09.899 [INFO] [Thread-194739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:15:09.906 [DEBUG] [Thread-194739] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:15:09.906 [DEBUG] [Thread-194739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:15:09.906 [DEBUG] [Thread-194739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:15:09.906 [DEBUG] [Thread-194739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:15:09.906 [DEBUG] [Thread-194739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:15:09.906 [DEBUG] [Thread-194739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] client lang: <none>
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] server lang: <none>
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] kex follows: False
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] Compression: none
2025-11-24T18:15:09.907 [DEBUG] [Thread-194739] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:15:09.962 [DEBUG] [Thread-194739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:15:09.962 [DEBUG] [Thread-194739] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:15:09.962 [DEBUG] [Thread-194739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:15:09.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:15:09.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:15:10.025 [DEBUG] [Thread-194739] [transport.py] [_log()] userauth is OK
2025-11-24T18:15:10.025 [DEBUG] [Thread-194739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:15:10.025 [DEBUG] [Thread-194739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:15:10.025 [DEBUG] [Thread-194739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:15:10.025 [DEBUG] [Thread-194739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:15:10.042 [INFO] [Thread-194739] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:15:10.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:15:10.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:15:10.890 [DEBUG] [Thread-194741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:15:10.904 [DEBUG] [Thread-194739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:15:10.904 [DEBUG] [Thread-194739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:15:10.952 [DEBUG] [Thread-194739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:15:10.952 [DEBUG] [Thread-194739] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:15:10.960 [DEBUG] [Thread-194739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:15:10.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:15:10.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-11-24T18:15:10.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-11-24T18:15:10.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:15:10.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:15:10.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:15:10.991 [DEBUG] [Thread-194739] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:15:23.158 [DEBUG] [Thread-194742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:15:38.248 [DEBUG] [Thread-194743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:15:41.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:15:41.012 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:15:41.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-11-24T18:15:41.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 15, 6), 23.13, 21.06, 0.0, 37.39, 20.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:15:41.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:15:06
2025-11-24T18:15:42.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:15:42.270 [DEBUG] [Thread-194744] [transport.py] [_log()] starting thread (client mode): 0xd3163be0
2025-11-24T18:15:42.271 [DEBUG] [Thread-194744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:15:42.283 [DEBUG] [Thread-194744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:15:42.283 [INFO] [Thread-194744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:15:42.289 [DEBUG] [Thread-194744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] client lang: <none>
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] server lang: <none>
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] kex follows: False
2025-11-24T18:15:42.290 [DEBUG] [Thread-194744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:15:42.291 [DEBUG] [Thread-194744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:15:42.291 [DEBUG] [Thread-194744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:15:42.292 [DEBUG] [Thread-194744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:15:42.292 [DEBUG] [Thread-194744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:15:42.292 [DEBUG] [Thread-194744] [transport.py] [_log()] Compression: none
2025-11-24T18:15:42.292 [DEBUG] [Thread-194744] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:15:42.328 [DEBUG] [Thread-194744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:15:42.332 [DEBUG] [Thread-194744] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:15:42.335 [DEBUG] [Thread-194744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:15:42.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:15:42.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:15:42.338 [DEBUG] [Thread-194744] [transport.py] [_log()] userauth is OK
2025-11-24T18:15:42.338 [DEBUG] [Thread-194744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:15:42.338 [DEBUG] [Thread-194744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:15:42.338 [DEBUG] [Thread-194744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:15:42.338 [DEBUG] [Thread-194744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:15:42.365 [INFO] [Thread-194744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:15:42.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:15:42.984 [DEBUG] [Thread-194744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:15:42.984 [DEBUG] [Thread-194744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:15:42.985 [DEBUG] [Thread-194744] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:15:43.024 [DEBUG] [Thread-194744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:15:43.024 [DEBUG] [Thread-194744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:15:43.027 [DEBUG] [Thread-194744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:15:43.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:15:43.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:15:43.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:15:43.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:15:43.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:15:43.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:15:43.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:15:43.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:15:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:15:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.677482 -999.00  +20.30  22.54     27   +0.70 1 1 1 1 1   887    0 18.88 -36.24 ----- 25.8 22.5 176.0 26.6 22.6 -28.5 22.7 -28.2 23.9 -27.1 24.0 -28.7
2025-11-24T18:15:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:15:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:15:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.677482
2025-11-24T18:15:43.067 [DEBUG] [Thread-194744] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:15:43.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:15:43.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:15:43.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:15:43.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:15:43.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:15:43.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:15:06', tmtdew=23.13, humidity=21.06, cloud=0.0, wind=37.39, temperature=20.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:15:34.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:15:43.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:15:43.177 [DEBUG] [Thread-194747] [transport.py] [_log()] starting thread (client mode): 0xd07840a0
2025-11-24T18:15:43.177 [DEBUG] [Thread-194747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:15:43.192 [DEBUG] [Thread-194747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:15:43.192 [INFO] [Thread-194747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:15:43.199 [DEBUG] [Thread-194747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:15:43.199 [DEBUG] [Thread-194747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:15:43.199 [DEBUG] [Thread-194747] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:15:43.199 [DEBUG] [Thread-194747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] client lang: <none>
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] server lang: <none>
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] kex follows: False
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] Compression: none
2025-11-24T18:15:43.200 [DEBUG] [Thread-194747] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:15:43.257 [DEBUG] [Thread-194747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:15:43.258 [DEBUG] [Thread-194747] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:15:43.258 [DEBUG] [Thread-194747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:15:43.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:15:43.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:15:43.315 [DEBUG] [Thread-194747] [transport.py] [_log()] userauth is OK
2025-11-24T18:15:43.315 [DEBUG] [Thread-194747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:15:43.316 [DEBUG] [Thread-194747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:15:43.316 [DEBUG] [Thread-194747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:15:43.316 [DEBUG] [Thread-194747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:15:43.335 [INFO] [Thread-194747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:15:43.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:15:43.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:15:44.204 [DEBUG] [Thread-194747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:15:44.204 [DEBUG] [Thread-194747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:15:44.251 [DEBUG] [Thread-194747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:15:44.252 [DEBUG] [Thread-194747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:15:44.261 [DEBUG] [Thread-194747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:15:44.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:15:44.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-11-24T18:15:44.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-11-24T18:15:44.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:15:44.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:15:44.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:15:44.307 [DEBUG] [Thread-194747] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:15:53.285 [DEBUG] [Thread-194749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:16:08.361 [DEBUG] [Thread-194750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:16:11.178 [DEBUG] [Thread-194751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:16:14.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:16:14.332 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:16:14.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-11-24T18:16:15.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 15, 39), 23.1, 21.11, 0.0, 31.9, 20.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:16:15.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:15:39
2025-11-24T18:16:15.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:16:15.560 [DEBUG] [Thread-194752] [transport.py] [_log()] starting thread (client mode): 0xd07856c0
2025-11-24T18:16:15.561 [DEBUG] [Thread-194752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:16:15.561 [DEBUG] [Thread-194752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:16:15.561 [INFO] [Thread-194752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:16:15.565 [DEBUG] [Thread-194752] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] client lang: <none>
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] server lang: <none>
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] kex follows: False
2025-11-24T18:16:15.566 [DEBUG] [Thread-194752] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:16:15.567 [DEBUG] [Thread-194752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:16:15.567 [DEBUG] [Thread-194752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:16:15.567 [DEBUG] [Thread-194752] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:16:15.567 [DEBUG] [Thread-194752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:16:15.567 [DEBUG] [Thread-194752] [transport.py] [_log()] Compression: none
2025-11-24T18:16:15.567 [DEBUG] [Thread-194752] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:16:15.593 [DEBUG] [Thread-194752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:16:15.598 [DEBUG] [Thread-194752] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:16:15.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:16:15.602 [DEBUG] [Thread-194752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:16:15.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:16:15.606 [DEBUG] [Thread-194752] [transport.py] [_log()] userauth is OK
2025-11-24T18:16:15.606 [DEBUG] [Thread-194752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:16:15.606 [DEBUG] [Thread-194752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:16:15.607 [DEBUG] [Thread-194752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:16:15.607 [DEBUG] [Thread-194752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:16:15.634 [INFO] [Thread-194752] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:16:15.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:16:16.201 [DEBUG] [Thread-194752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:16:16.201 [DEBUG] [Thread-194752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:16:16.203 [DEBUG] [Thread-194752] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:16:16.242 [DEBUG] [Thread-194752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:16:16.242 [DEBUG] [Thread-194752] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:16:16.245 [DEBUG] [Thread-194752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:16:16.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:16:16.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:16:16.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:16:16.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:16:16.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:16:16.269 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:16:16.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:16:16.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:16:16.271 [DEBUG] [Thread-194752] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:16:16.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:16:16.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.677829 -999.00  +20.40  15.32     26   +0.70 1 1 1 1 1   887    0 18.87 -35.73 ----- 18.7 15.3 186.6 29.6 22.6 -28.7 22.7 -29.7 23.9 -26.6 24.1 -28.7
2025-11-24T18:16:16.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:16:16.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:16:16.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.677829
2025-11-24T18:16:16.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:16:16.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:16:16.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:16:16.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:16:16.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:16:16.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:15:39', tmtdew=23.1, humidity=21.11, cloud=0.0, wind=31.9, temperature=20.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:16:04.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:16:16.380 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:16:16.392 [DEBUG] [Thread-194755] [transport.py] [_log()] starting thread (client mode): 0xd0784a30
2025-11-24T18:16:16.392 [DEBUG] [Thread-194755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:16:16.410 [DEBUG] [Thread-194755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:16:16.410 [INFO] [Thread-194755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:16:16.418 [DEBUG] [Thread-194755] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:16:16.418 [DEBUG] [Thread-194755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:16:16.418 [DEBUG] [Thread-194755] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:16:16.418 [DEBUG] [Thread-194755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:16:16.418 [DEBUG] [Thread-194755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:16:16.418 [DEBUG] [Thread-194755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:16:16.418 [DEBUG] [Thread-194755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:16:16.418 [DEBUG] [Thread-194755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:16:16.418 [DEBUG] [Thread-194755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:16:16.419 [DEBUG] [Thread-194755] [transport.py] [_log()] client lang: <none>
2025-11-24T18:16:16.419 [DEBUG] [Thread-194755] [transport.py] [_log()] server lang: <none>
2025-11-24T18:16:16.419 [DEBUG] [Thread-194755] [transport.py] [_log()] kex follows: False
2025-11-24T18:16:16.419 [DEBUG] [Thread-194755] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:16:16.419 [DEBUG] [Thread-194755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:16:16.419 [DEBUG] [Thread-194755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:16:16.419 [DEBUG] [Thread-194755] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:16:16.428 [DEBUG] [Thread-194755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:16:16.428 [DEBUG] [Thread-194755] [transport.py] [_log()] Compression: none
2025-11-24T18:16:16.428 [DEBUG] [Thread-194755] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:16:16.476 [DEBUG] [Thread-194755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:16:16.476 [DEBUG] [Thread-194755] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:16:16.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:16:16.477 [DEBUG] [Thread-194755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:16:16.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:16:16.532 [DEBUG] [Thread-194755] [transport.py] [_log()] userauth is OK
2025-11-24T18:16:16.532 [DEBUG] [Thread-194755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:16:16.532 [DEBUG] [Thread-194755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:16:16.532 [DEBUG] [Thread-194755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:16:16.532 [DEBUG] [Thread-194755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:16:16.552 [INFO] [Thread-194755] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:16:16.552 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:16:16.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:16:17.399 [DEBUG] [Thread-194755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:16:17.399 [DEBUG] [Thread-194755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:16:17.448 [DEBUG] [Thread-194755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:16:17.448 [DEBUG] [Thread-194755] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:16:17.457 [DEBUG] [Thread-194755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:16:17.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:16:17.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:16:17.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-11-24T18:16:17.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:16:17.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:16:17.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:16:17.503 [DEBUG] [Thread-194755] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:16:23.424 [DEBUG] [Thread-194757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:16:38.552 [DEBUG] [Thread-194758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:16:47.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:16:47.529 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:16:47.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-11-24T18:16:48.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 16, 45), 22.99, 21.26, 0.0, 31.32, 20.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:16:48.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:16:45
2025-11-24T18:16:48.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:16:48.674 [DEBUG] [Thread-194759] [transport.py] [_log()] starting thread (client mode): 0xd3162350
2025-11-24T18:16:48.674 [DEBUG] [Thread-194759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:16:48.687 [DEBUG] [Thread-194759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:16:48.688 [INFO] [Thread-194759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:16:48.690 [DEBUG] [Thread-194759] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] client lang: <none>
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] server lang: <none>
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] kex follows: False
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] Compression: none
2025-11-24T18:16:48.691 [DEBUG] [Thread-194759] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:16:48.718 [DEBUG] [Thread-194759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:16:48.719 [DEBUG] [Thread-194759] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:16:48.720 [DEBUG] [Thread-194759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:16:48.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:16:48.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:16:48.760 [DEBUG] [Thread-194759] [transport.py] [_log()] userauth is OK
2025-11-24T18:16:48.760 [DEBUG] [Thread-194759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:16:48.760 [DEBUG] [Thread-194759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:16:48.760 [DEBUG] [Thread-194759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:16:48.760 [DEBUG] [Thread-194759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:16:48.771 [INFO] [Thread-194759] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:16:48.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:16:49.335 [DEBUG] [Thread-194759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:16:49.335 [DEBUG] [Thread-194759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:16:49.337 [DEBUG] [Thread-194759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:16:49.376 [DEBUG] [Thread-194759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:16:49.376 [DEBUG] [Thread-194759] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:16:49.378 [DEBUG] [Thread-194759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:16:49.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:16:49.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:16:49.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:16:49.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:16:49.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:16:49.401 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:16:49.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:16:49.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:16:49.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:16:49.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.678176 -999.00  +20.30  26.80     27   +0.70 1 1 1 1 1   887    0 18.48 -38.05 ----- 21.8 26.8 199.2 32.8 22.6 -28.4 22.7 -28.8 23.9 -27.2 24.0 -29.5
2025-11-24T18:16:49.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:16:49.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:16:49.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.678176
2025-11-24T18:16:49.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:16:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:16:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:16:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:16:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:16:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:16:45', tmtdew=22.99, humidity=21.26, cloud=0.0, wind=31.32, temperature=20.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:16:34.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:16:49.406 [DEBUG] [Thread-194759] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:16:49.480 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:16:49.492 [DEBUG] [Thread-194762] [transport.py] [_log()] starting thread (client mode): 0xd31361d0
2025-11-24T18:16:49.492 [DEBUG] [Thread-194762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:16:49.509 [DEBUG] [Thread-194762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:16:49.509 [INFO] [Thread-194762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] client lang: <none>
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] server lang: <none>
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] kex follows: False
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:16:49.517 [DEBUG] [Thread-194762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:16:49.518 [DEBUG] [Thread-194762] [transport.py] [_log()] Compression: none
2025-11-24T18:16:49.518 [DEBUG] [Thread-194762] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:16:49.581 [DEBUG] [Thread-194762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:16:49.581 [DEBUG] [Thread-194762] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:16:49.582 [DEBUG] [Thread-194762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:16:49.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:16:49.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:16:49.640 [DEBUG] [Thread-194762] [transport.py] [_log()] userauth is OK
2025-11-24T18:16:49.640 [DEBUG] [Thread-194762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:16:49.640 [DEBUG] [Thread-194762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:16:49.640 [DEBUG] [Thread-194762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:16:49.640 [DEBUG] [Thread-194762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:16:49.660 [INFO] [Thread-194762] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:16:49.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:16:49.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:16:50.577 [DEBUG] [Thread-194762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:16:50.578 [DEBUG] [Thread-194762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:16:50.626 [DEBUG] [Thread-194762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:16:50.626 [DEBUG] [Thread-194762] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:16:50.636 [DEBUG] [Thread-194762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:16:50.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:16:50.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-11-24T18:16:50.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-11-24T18:16:50.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:16:50.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:16:50.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:16:50.671 [DEBUG] [Thread-194762] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:16:53.587 [DEBUG] [Thread-194764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:17:08.667 [DEBUG] [Thread-194765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:17:11.474 [DEBUG] [Thread-194766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:17:20.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:17:20.696 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:17:20.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-11-24T18:17:21.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 17, 17), 23.03, 21.2, 0.0, 35.09, 20.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:17:21.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:17:17
2025-11-24T18:17:21.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:17:21.897 [DEBUG] [Thread-194767] [transport.py] [_log()] starting thread (client mode): 0xd31625c0
2025-11-24T18:17:21.898 [DEBUG] [Thread-194767] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:17:21.902 [DEBUG] [Thread-194767] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:17:21.903 [INFO] [Thread-194767] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] client lang: <none>
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] server lang: <none>
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] kex follows: False
2025-11-24T18:17:21.907 [DEBUG] [Thread-194767] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:17:21.908 [DEBUG] [Thread-194767] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:17:21.908 [DEBUG] [Thread-194767] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:17:21.908 [DEBUG] [Thread-194767] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:17:21.908 [DEBUG] [Thread-194767] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:17:21.908 [DEBUG] [Thread-194767] [transport.py] [_log()] Compression: none
2025-11-24T18:17:21.908 [DEBUG] [Thread-194767] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:17:21.929 [DEBUG] [Thread-194767] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:17:21.933 [DEBUG] [Thread-194767] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:17:21.934 [DEBUG] [Thread-194767] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:17:21.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:17:21.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:17:21.937 [DEBUG] [Thread-194767] [transport.py] [_log()] userauth is OK
2025-11-24T18:17:21.937 [DEBUG] [Thread-194767] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:17:21.937 [DEBUG] [Thread-194767] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:17:21.937 [DEBUG] [Thread-194767] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:17:21.937 [DEBUG] [Thread-194767] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:17:21.949 [INFO] [Thread-194767] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:17:21.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:17:22.506 [DEBUG] [Thread-194767] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:17:22.506 [DEBUG] [Thread-194767] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:17:22.507 [DEBUG] [Thread-194767] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:17:22.547 [DEBUG] [Thread-194767] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:17:22.547 [DEBUG] [Thread-194767] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:17:22.549 [DEBUG] [Thread-194767] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:17:22.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:17:22.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:17:22.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:17:22.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:17:22.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:17:22.570 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:17:22.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:17:22.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:17:22.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:17:22.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.678523 -999.00  +20.30  21.62     27   +0.80 1 1 1 1 1   887    0 18.58 -37.60 ----- 23.0 21.6 196.2 30.8 22.6 -29.4 22.7 -28.8 23.8 -27.3 23.9 -29.4
2025-11-24T18:17:22.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:17:22.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:17:22.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.678523
2025-11-24T18:17:22.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:17:22.586 [DEBUG] [Thread-194767] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:17:22.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:17:22.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:17:22.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:17:22.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:17:22.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:17:17', tmtdew=23.03, humidity=21.2, cloud=0.0, wind=35.09, temperature=20.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:17:04.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:17:22.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:17:22.675 [DEBUG] [Thread-194770] [transport.py] [_log()] starting thread (client mode): 0xd0785d50
2025-11-24T18:17:22.676 [DEBUG] [Thread-194770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:17:22.695 [DEBUG] [Thread-194770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:17:22.695 [INFO] [Thread-194770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] client lang: <none>
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] server lang: <none>
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] kex follows: False
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] Compression: none
2025-11-24T18:17:22.703 [DEBUG] [Thread-194770] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:17:22.757 [DEBUG] [Thread-194770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:17:22.758 [DEBUG] [Thread-194770] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:17:22.758 [DEBUG] [Thread-194770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:17:22.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:17:22.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:17:22.815 [DEBUG] [Thread-194770] [transport.py] [_log()] userauth is OK
2025-11-24T18:17:22.815 [DEBUG] [Thread-194770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:17:22.815 [DEBUG] [Thread-194770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:17:22.815 [DEBUG] [Thread-194770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:17:22.815 [DEBUG] [Thread-194770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:17:22.829 [INFO] [Thread-194770] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:17:22.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:17:22.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:17:23.661 [DEBUG] [Thread-194770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:17:23.661 [DEBUG] [Thread-194770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:17:23.696 [DEBUG] [Thread-194772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:17:23.709 [DEBUG] [Thread-194770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:17:23.709 [DEBUG] [Thread-194770] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:17:23.717 [DEBUG] [Thread-194770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:17:23.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:17:23.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-11-24T18:17:23.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-11-24T18:17:23.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:17:23.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:17:23.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:17:23.749 [DEBUG] [Thread-194770] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:17:38.771 [DEBUG] [Thread-194773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:17:53.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:17:53.775 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:17:53.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-11-24T18:17:53.803 [DEBUG] [Thread-194774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:17:54.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 17, 50), 22.85, 21.25, 0.0, 32.96, 20.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:17:54.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:17:50
2025-11-24T18:17:54.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:17:54.981 [DEBUG] [Thread-194775] [transport.py] [_log()] starting thread (client mode): 0xd0785ae0
2025-11-24T18:17:54.982 [DEBUG] [Thread-194775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:17:54.992 [DEBUG] [Thread-194775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:17:54.993 [INFO] [Thread-194775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:17:54.995 [DEBUG] [Thread-194775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] client lang: <none>
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] server lang: <none>
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] kex follows: False
2025-11-24T18:17:54.996 [DEBUG] [Thread-194775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:17:54.997 [DEBUG] [Thread-194775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:17:54.997 [DEBUG] [Thread-194775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:17:54.997 [DEBUG] [Thread-194775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:17:54.997 [DEBUG] [Thread-194775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:17:54.997 [DEBUG] [Thread-194775] [transport.py] [_log()] Compression: none
2025-11-24T18:17:54.997 [DEBUG] [Thread-194775] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:17:55.034 [DEBUG] [Thread-194775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:17:55.037 [DEBUG] [Thread-194775] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:17:55.038 [DEBUG] [Thread-194775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:17:55.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:17:55.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:17:55.042 [DEBUG] [Thread-194775] [transport.py] [_log()] userauth is OK
2025-11-24T18:17:55.042 [DEBUG] [Thread-194775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:17:55.042 [DEBUG] [Thread-194775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:17:55.042 [DEBUG] [Thread-194775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:17:55.042 [DEBUG] [Thread-194775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:17:55.069 [INFO] [Thread-194775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:17:55.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:17:55.653 [DEBUG] [Thread-194775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:17:55.653 [DEBUG] [Thread-194775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:17:55.654 [DEBUG] [Thread-194775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:17:55.694 [DEBUG] [Thread-194775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:17:55.695 [DEBUG] [Thread-194775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:17:55.698 [DEBUG] [Thread-194775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:17:55.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:17:55.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:17:55.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:17:55.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:17:55.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:17:55.721 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:17:55.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:17:55.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:17:55.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:17:55.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.678871 -999.00  +20.30  24.60     27   +0.80 1 1 1 1 1   887    0 18.86 -38.48 ----- 21.4 24.6 181.2 27.7 22.6 -28.6 22.6 -28.9 23.9 -27.4 24.0 -29.2
2025-11-24T18:17:55.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:17:55.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:17:55.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.678871
2025-11-24T18:17:55.728 [DEBUG] [Thread-194775] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:17:55.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:17:55.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:17:55.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:17:55.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:17:55.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:17:55.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:17:50', tmtdew=22.85, humidity=21.25, cloud=0.0, wind=32.96, temperature=20.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:17:34.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:17:55.828 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:17:55.839 [DEBUG] [Thread-194778] [transport.py] [_log()] starting thread (client mode): 0xd07ce6b0
2025-11-24T18:17:55.839 [DEBUG] [Thread-194778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:17:55.854 [DEBUG] [Thread-194778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:17:55.854 [INFO] [Thread-194778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:17:55.862 [DEBUG] [Thread-194778] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:17:55.862 [DEBUG] [Thread-194778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:17:55.862 [DEBUG] [Thread-194778] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:17:55.862 [DEBUG] [Thread-194778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:17:55.862 [DEBUG] [Thread-194778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:17:55.862 [DEBUG] [Thread-194778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:17:55.862 [DEBUG] [Thread-194778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:17:55.862 [DEBUG] [Thread-194778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:17:55.862 [DEBUG] [Thread-194778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:17:55.862 [DEBUG] [Thread-194778] [transport.py] [_log()] client lang: <none>
2025-11-24T18:17:55.863 [DEBUG] [Thread-194778] [transport.py] [_log()] server lang: <none>
2025-11-24T18:17:55.863 [DEBUG] [Thread-194778] [transport.py] [_log()] kex follows: False
2025-11-24T18:17:55.863 [DEBUG] [Thread-194778] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:17:55.863 [DEBUG] [Thread-194778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:17:55.863 [DEBUG] [Thread-194778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:17:55.863 [DEBUG] [Thread-194778] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:17:55.863 [DEBUG] [Thread-194778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:17:55.863 [DEBUG] [Thread-194778] [transport.py] [_log()] Compression: none
2025-11-24T18:17:55.863 [DEBUG] [Thread-194778] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:17:55.923 [DEBUG] [Thread-194778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:17:55.923 [DEBUG] [Thread-194778] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:17:55.924 [DEBUG] [Thread-194778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:17:55.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:17:55.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:17:55.979 [DEBUG] [Thread-194778] [transport.py] [_log()] userauth is OK
2025-11-24T18:17:55.979 [DEBUG] [Thread-194778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:17:55.979 [DEBUG] [Thread-194778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:17:55.979 [DEBUG] [Thread-194778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:17:55.979 [DEBUG] [Thread-194778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:17:56.001 [INFO] [Thread-194778] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:17:56.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:17:56.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:17:56.829 [DEBUG] [Thread-194778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:17:56.829 [DEBUG] [Thread-194778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:17:56.877 [DEBUG] [Thread-194778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:17:56.877 [DEBUG] [Thread-194778] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:17:56.886 [DEBUG] [Thread-194778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:17:56.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:17:56.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:17: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-11-24T18:17:56.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:17:56.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:17:56.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:17:56.924 [DEBUG] [Thread-194778] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:18:08.836 [DEBUG] [Thread-194780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:18:11.739 [DEBUG] [Thread-194781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:18:23.943 [DEBUG] [Thread-194782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:18:26.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:18:26.950 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:18:26.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:18:27.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 18, 23), 22.8, 21.31, 0.0, 33.81, 20.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:18:27.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:18:23
2025-11-24T18:18:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:18:28.142 [DEBUG] [Thread-194783] [transport.py] [_log()] starting thread (client mode): 0xd07f96f0
2025-11-24T18:18:28.143 [DEBUG] [Thread-194783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:18:28.152 [DEBUG] [Thread-194783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:18:28.152 [INFO] [Thread-194783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] client lang: <none>
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] server lang: <none>
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] kex follows: False
2025-11-24T18:18:28.155 [DEBUG] [Thread-194783] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:18:28.156 [DEBUG] [Thread-194783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:18:28.156 [DEBUG] [Thread-194783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:18:28.156 [DEBUG] [Thread-194783] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:18:28.156 [DEBUG] [Thread-194783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:18:28.156 [DEBUG] [Thread-194783] [transport.py] [_log()] Compression: none
2025-11-24T18:18:28.156 [DEBUG] [Thread-194783] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:18:28.179 [DEBUG] [Thread-194783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:18:28.182 [DEBUG] [Thread-194783] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:18:28.184 [DEBUG] [Thread-194783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:18:28.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:18:28.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:18:28.188 [DEBUG] [Thread-194783] [transport.py] [_log()] userauth is OK
2025-11-24T18:18:28.188 [DEBUG] [Thread-194783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:18:28.188 [DEBUG] [Thread-194783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:18:28.188 [DEBUG] [Thread-194783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:18:28.188 [DEBUG] [Thread-194783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:18:28.215 [INFO] [Thread-194783] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:18:28.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:18:28.796 [DEBUG] [Thread-194783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:18:28.796 [DEBUG] [Thread-194783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:18:28.797 [DEBUG] [Thread-194783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:18:28.837 [DEBUG] [Thread-194783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:18:28.838 [DEBUG] [Thread-194783] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:18:28.840 [DEBUG] [Thread-194783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:18:28.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:18:28.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:18:28.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:18:28.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:18:28.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:18:28.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:18:28.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:18:28.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:18:28.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:18:28.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.679218 -999.00  +20.20  22.90     27   +0.80 1 1 1 1 1   887    0 18.78 -37.08 ----- 22.2 22.9 189.0 35.4 22.6 -28.7 22.6 -29.3 23.7 -27.3 23.9 -29.5
2025-11-24T18:18:28.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:18:28.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:18:28.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.679218
2025-11-24T18:18:28.871 [DEBUG] [Thread-194783] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:18:28.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:18:28.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:18:28.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:18:28.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:18:28.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:18:28.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:18:23', tmtdew=22.8, humidity=21.31, cloud=0.0, wind=33.81, temperature=20.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:18:04.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:18:28.961 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:18:28.974 [DEBUG] [Thread-194786] [transport.py] [_log()] starting thread (client mode): 0xd07f9120
2025-11-24T18:18:28.974 [DEBUG] [Thread-194786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:18:28.988 [DEBUG] [Thread-194786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:18:28.988 [INFO] [Thread-194786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:18:28.996 [DEBUG] [Thread-194786] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:18:28.996 [DEBUG] [Thread-194786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] client lang: <none>
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] server lang: <none>
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] kex follows: False
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:18:28.997 [DEBUG] [Thread-194786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:18:28.998 [DEBUG] [Thread-194786] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:18:28.998 [DEBUG] [Thread-194786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:18:28.998 [DEBUG] [Thread-194786] [transport.py] [_log()] Compression: none
2025-11-24T18:18:28.998 [DEBUG] [Thread-194786] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:18:29.056 [DEBUG] [Thread-194786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:18:29.056 [DEBUG] [Thread-194786] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:18:29.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:18:29.058 [DEBUG] [Thread-194786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:18:29.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:18:29.111 [DEBUG] [Thread-194786] [transport.py] [_log()] userauth is OK
2025-11-24T18:18:29.112 [DEBUG] [Thread-194786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:18:29.112 [DEBUG] [Thread-194786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:18:29.112 [DEBUG] [Thread-194786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:18:29.112 [DEBUG] [Thread-194786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:18:29.136 [INFO] [Thread-194786] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:18:29.136 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:18:29.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:18:29.988 [DEBUG] [Thread-194786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:18:29.988 [DEBUG] [Thread-194786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:18:30.035 [DEBUG] [Thread-194786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:18:30.035 [DEBUG] [Thread-194786] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:18:30.043 [DEBUG] [Thread-194786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:18:30.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:18:30.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-11-24T18:18:30.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-11-24T18:18:30.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:18:30.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:18:30.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:18:30.076 [DEBUG] [Thread-194786] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:18:38.980 [DEBUG] [Thread-194788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:18:54.060 [DEBUG] [Thread-194789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:19:00.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:19:00.100 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:19:00.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-11-24T18:19:00.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 18, 56), 22.8, 21.31, 0.0, 32.98, 20.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:19:00.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:18:56
2025-11-24T18:19:01.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:19:01.258 [DEBUG] [Thread-194790] [transport.py] [_log()] starting thread (client mode): 0xd07f99f0
2025-11-24T18:19:01.259 [DEBUG] [Thread-194790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:19:01.266 [DEBUG] [Thread-194790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:19:01.267 [INFO] [Thread-194790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] client lang: <none>
2025-11-24T18:19:01.269 [DEBUG] [Thread-194790] [transport.py] [_log()] server lang: <none>
2025-11-24T18:19:01.270 [DEBUG] [Thread-194790] [transport.py] [_log()] kex follows: False
2025-11-24T18:19:01.270 [DEBUG] [Thread-194790] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:19:01.270 [DEBUG] [Thread-194790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:19:01.270 [DEBUG] [Thread-194790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:19:01.270 [DEBUG] [Thread-194790] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:19:01.270 [DEBUG] [Thread-194790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:19:01.270 [DEBUG] [Thread-194790] [transport.py] [_log()] Compression: none
2025-11-24T18:19:01.270 [DEBUG] [Thread-194790] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:19:01.302 [DEBUG] [Thread-194790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:19:01.306 [DEBUG] [Thread-194790] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:19:01.309 [DEBUG] [Thread-194790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:19:01.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:19:01.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:19:01.313 [DEBUG] [Thread-194790] [transport.py] [_log()] userauth is OK
2025-11-24T18:19:01.313 [DEBUG] [Thread-194790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:19:01.314 [DEBUG] [Thread-194790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:19:01.314 [DEBUG] [Thread-194790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:19:01.314 [DEBUG] [Thread-194790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:19:01.341 [INFO] [Thread-194790] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:19:01.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:19:01.937 [DEBUG] [Thread-194790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:19:01.937 [DEBUG] [Thread-194790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:19:01.949 [DEBUG] [Thread-194790] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:19:01.978 [DEBUG] [Thread-194790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:19:01.978 [DEBUG] [Thread-194790] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:19:01.983 [DEBUG] [Thread-194790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:19:01.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:19:01.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:19:01.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:19:02.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:19:02.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:19:02.008 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:19:02.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:19:02.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:19:02.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:19:02.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.679565 -999.00  +20.20  24.27     27   +0.80 1 1 1 1 1   887    0 19.04 -39.23 ----- 23.6 24.3 199.4 30.1 22.5 -28.8 22.6 -29.8 23.7 -27.2 23.9 -29.1
2025-11-24T18:19:02.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:19:02.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:19:02.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.679565
2025-11-24T18:19:02.016 [DEBUG] [Thread-194790] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:19:02.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:19:02.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:19:02.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:19:02.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:19:02.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:19:02.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:18:56', tmtdew=22.8, humidity=21.31, cloud=0.0, wind=32.98, temperature=20.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:18:34.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:19:02.109 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:19:02.121 [DEBUG] [Thread-194793] [transport.py] [_log()] starting thread (client mode): 0xd0702e60
2025-11-24T18:19:02.121 [DEBUG] [Thread-194793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:19:02.135 [DEBUG] [Thread-194793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:19:02.135 [INFO] [Thread-194793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:19:02.142 [DEBUG] [Thread-194793] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] client lang: <none>
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] server lang: <none>
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] kex follows: False
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] Compression: none
2025-11-24T18:19:02.143 [DEBUG] [Thread-194793] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:19:02.208 [DEBUG] [Thread-194793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:19:02.208 [DEBUG] [Thread-194793] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:19:02.209 [DEBUG] [Thread-194793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:19:02.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:19:02.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:19:02.264 [DEBUG] [Thread-194793] [transport.py] [_log()] userauth is OK
2025-11-24T18:19:02.264 [DEBUG] [Thread-194793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:19:02.264 [DEBUG] [Thread-194793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:19:02.264 [DEBUG] [Thread-194793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:19:02.264 [DEBUG] [Thread-194793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:19:02.283 [INFO] [Thread-194793] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:19:02.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:19:02.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:19:03.153 [DEBUG] [Thread-194793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:19:03.153 [DEBUG] [Thread-194793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:19:03.200 [DEBUG] [Thread-194793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:19:03.201 [DEBUG] [Thread-194793] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:19:03.209 [DEBUG] [Thread-194793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:19:03.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:19:03.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:19:03.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:19:03.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:19:03.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:19:03.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:19:03.243 [DEBUG] [Thread-194793] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:19:09.100 [DEBUG] [Thread-194795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:19:11.968 [DEBUG] [Thread-194796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:19:24.196 [DEBUG] [Thread-194797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:19:33.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:19:33.251 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:19:33.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-11-24T18:19:34.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 19, 28), 22.8, 21.31, 0.0, 30.26, 20.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:19:34.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:19:28
2025-11-24T18:19:34.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:19:34.425 [DEBUG] [Thread-194798] [transport.py] [_log()] starting thread (client mode): 0xd07f8340
2025-11-24T18:19:34.426 [DEBUG] [Thread-194798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:19:34.437 [DEBUG] [Thread-194798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:19:34.438 [INFO] [Thread-194798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:19:34.441 [DEBUG] [Thread-194798] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] client lang: <none>
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] server lang: <none>
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] kex follows: False
2025-11-24T18:19:34.442 [DEBUG] [Thread-194798] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:19:34.443 [DEBUG] [Thread-194798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:19:34.443 [DEBUG] [Thread-194798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:19:34.443 [DEBUG] [Thread-194798] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:19:34.443 [DEBUG] [Thread-194798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:19:34.444 [DEBUG] [Thread-194798] [transport.py] [_log()] Compression: none
2025-11-24T18:19:34.444 [DEBUG] [Thread-194798] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:19:34.481 [DEBUG] [Thread-194798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:19:34.486 [DEBUG] [Thread-194798] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:19:34.488 [DEBUG] [Thread-194798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:19:34.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:19:34.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:19:34.493 [DEBUG] [Thread-194798] [transport.py] [_log()] userauth is OK
2025-11-24T18:19:34.494 [DEBUG] [Thread-194798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:19:34.494 [DEBUG] [Thread-194798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:19:34.494 [DEBUG] [Thread-194798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:19:34.494 [DEBUG] [Thread-194798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:19:34.522 [INFO] [Thread-194798] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:19:34.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:19:35.135 [DEBUG] [Thread-194798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:19:35.136 [DEBUG] [Thread-194798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:19:35.137 [DEBUG] [Thread-194798] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:19:35.168 [DEBUG] [Thread-194798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:19:35.168 [DEBUG] [Thread-194798] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:19:35.171 [DEBUG] [Thread-194798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:19:35.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:19:35.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:19:35.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:19:35.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:19:35.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:19:35.203 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:19:35.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:19:35.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:19:35.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:19:35.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.679912 -999.00  +20.20  25.74     27   +0.80 1 1 1 1 1   887    0 18.32 -37.53 ----- 30.8 25.7 191.0 35.8 22.5 -28.9 22.5 -29.7 23.7 -26.9 23.9 -30.0
2025-11-24T18:19:35.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:19:35.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:19:35.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.679912
2025-11-24T18:19:35.211 [DEBUG] [Thread-194798] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:19:35.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:19:35.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:19:35.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:19:35.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:19:35.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:19:35.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:19:28', tmtdew=22.8, humidity=21.31, cloud=0.0, wind=30.26, temperature=20.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:19:04.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:19:35.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:19:35.328 [DEBUG] [Thread-194801] [transport.py] [_log()] starting thread (client mode): 0xd07fbb50
2025-11-24T18:19:35.329 [DEBUG] [Thread-194801] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:19:35.343 [DEBUG] [Thread-194801] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:19:35.343 [INFO] [Thread-194801] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:19:35.351 [DEBUG] [Thread-194801] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:19:35.351 [DEBUG] [Thread-194801] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:19:35.351 [DEBUG] [Thread-194801] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:19:35.351 [DEBUG] [Thread-194801] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:19:35.351 [DEBUG] [Thread-194801] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:19:35.351 [DEBUG] [Thread-194801] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:19:35.351 [DEBUG] [Thread-194801] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:19:35.351 [DEBUG] [Thread-194801] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] client lang: <none>
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] server lang: <none>
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] kex follows: False
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] Compression: none
2025-11-24T18:19:35.352 [DEBUG] [Thread-194801] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:19:35.406 [DEBUG] [Thread-194801] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:19:35.406 [DEBUG] [Thread-194801] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:19:35.406 [DEBUG] [Thread-194801] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:19:35.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:19:35.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:19:35.463 [DEBUG] [Thread-194801] [transport.py] [_log()] userauth is OK
2025-11-24T18:19:35.463 [DEBUG] [Thread-194801] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:19:35.463 [DEBUG] [Thread-194801] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:19:35.463 [DEBUG] [Thread-194801] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:19:35.463 [DEBUG] [Thread-194801] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:19:35.477 [INFO] [Thread-194801] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:19:35.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:19:35.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:19:36.332 [DEBUG] [Thread-194801] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:19:36.332 [DEBUG] [Thread-194801] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:19:36.380 [DEBUG] [Thread-194801] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:19:36.381 [DEBUG] [Thread-194801] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:19:36.390 [DEBUG] [Thread-194801] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:19:36.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:19: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-11-24T18:19:36.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-11-24T18:19:36.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:19:36.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:19:36.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:19:36.437 [DEBUG] [Thread-194801] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:19:39.250 [DEBUG] [Thread-194803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:19:54.326 [DEBUG] [Thread-194804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:20:06.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:20:06.471 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:20:06.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-11-24T18:20:07.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 20, 1), 22.64, 21.33, 0.0, 29.29, 20.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:20:07.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:20:01
2025-11-24T18:20:07.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:20:07.601 [DEBUG] [Thread-194805] [transport.py] [_log()] starting thread (client mode): 0xd07bfe50
2025-11-24T18:20:07.602 [DEBUG] [Thread-194805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:20:07.617 [DEBUG] [Thread-194805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:20:07.618 [INFO] [Thread-194805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:20:07.624 [DEBUG] [Thread-194805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:20:07.624 [DEBUG] [Thread-194805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:20:07.625 [DEBUG] [Thread-194805] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:20:07.625 [DEBUG] [Thread-194805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:20:07.625 [DEBUG] [Thread-194805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:20:07.625 [DEBUG] [Thread-194805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:20:07.625 [DEBUG] [Thread-194805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:20:07.625 [DEBUG] [Thread-194805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:20:07.625 [DEBUG] [Thread-194805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:20:07.625 [DEBUG] [Thread-194805] [transport.py] [_log()] client lang: <none>
2025-11-24T18:20:07.625 [DEBUG] [Thread-194805] [transport.py] [_log()] server lang: <none>
2025-11-24T18:20:07.625 [DEBUG] [Thread-194805] [transport.py] [_log()] kex follows: False
2025-11-24T18:20:07.626 [DEBUG] [Thread-194805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:20:07.626 [DEBUG] [Thread-194805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:20:07.626 [DEBUG] [Thread-194805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:20:07.627 [DEBUG] [Thread-194805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:20:07.627 [DEBUG] [Thread-194805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:20:07.627 [DEBUG] [Thread-194805] [transport.py] [_log()] Compression: none
2025-11-24T18:20:07.627 [DEBUG] [Thread-194805] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:20:07.655 [DEBUG] [Thread-194805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:20:07.659 [DEBUG] [Thread-194805] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:20:07.661 [DEBUG] [Thread-194805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:20:07.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:20:07.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:20:07.666 [DEBUG] [Thread-194805] [transport.py] [_log()] userauth is OK
2025-11-24T18:20:07.667 [DEBUG] [Thread-194805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:20:07.667 [DEBUG] [Thread-194805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:20:07.667 [DEBUG] [Thread-194805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:20:07.667 [DEBUG] [Thread-194805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:20:07.691 [INFO] [Thread-194805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:20:07.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:20:09.342 [DEBUG] [Thread-194805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:20:09.342 [DEBUG] [Thread-194805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:20:09.352 [DEBUG] [Thread-194805] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:20:09.379 [DEBUG] [Thread-194807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:20:09.383 [DEBUG] [Thread-194805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:20:09.383 [DEBUG] [Thread-194805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:20:09.385 [DEBUG] [Thread-194805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:20:09.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:20:09.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:20:09.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:20:09.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:20:09.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:20:09.403 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:20:09.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:20:09.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:20:09.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:20:09.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.680259 -999.00  +20.10  25.07     27   +0.80 1 1 1 1 1   887    0 18.68 -36.24 ----- 19.2 25.1 200.8 30.6 22.4 -28.7 22.5 -29.0 23.6 -27.3 23.8 -29.3
2025-11-24T18:20:09.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:20:09.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:20:09.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.680259
2025-11-24T18:20:09.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:20:09.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:20:09.414 [DEBUG] [Thread-194805] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:20:09.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:20:09.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:20:09.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:20:09.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:20:01', tmtdew=22.64, humidity=21.33, cloud=0.0, wind=29.29, temperature=20.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:19:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:20:09.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:20:09.499 [DEBUG] [Thread-194809] [transport.py] [_log()] starting thread (client mode): 0xd31612a0
2025-11-24T18:20:09.499 [DEBUG] [Thread-194809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:20:09.513 [DEBUG] [Thread-194809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:20:09.513 [INFO] [Thread-194809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] client lang: <none>
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] server lang: <none>
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] kex follows: False
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] Compression: none
2025-11-24T18:20:09.521 [DEBUG] [Thread-194809] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:20:09.582 [DEBUG] [Thread-194809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:20:09.582 [DEBUG] [Thread-194809] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:20:09.582 [DEBUG] [Thread-194809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:20:09.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:20:09.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:20:09.639 [DEBUG] [Thread-194809] [transport.py] [_log()] userauth is OK
2025-11-24T18:20:09.639 [DEBUG] [Thread-194809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:20:09.639 [DEBUG] [Thread-194809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:20:09.639 [DEBUG] [Thread-194809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:20:09.639 [DEBUG] [Thread-194809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:20:09.653 [INFO] [Thread-194809] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:20:09.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:20:09.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:20:10.520 [DEBUG] [Thread-194809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:20:10.520 [DEBUG] [Thread-194809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:20:10.568 [DEBUG] [Thread-194809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:20:10.568 [DEBUG] [Thread-194809] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:20:10.577 [DEBUG] [Thread-194809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:20:10.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:20:10.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:20:10.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:20:10.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:20:10.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:20:10.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:20:10.622 [DEBUG] [Thread-194809] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:20:12.205 [DEBUG] [Thread-194811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:20:24.432 [DEBUG] [Thread-194812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:20:39.688 [DEBUG] [Thread-194813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:20:40.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:20:40.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:20:40.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-11-24T18:20:41.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 20, 33), 22.74, 21.33, 0.0, 24.35, 20.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:20:41.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:20:33
2025-11-24T18:20:41.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:20:41.756 [DEBUG] [Thread-194814] [transport.py] [_log()] starting thread (client mode): 0xd07012d0
2025-11-24T18:20:41.756 [DEBUG] [Thread-194814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:20:41.778 [DEBUG] [Thread-194814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:20:41.778 [INFO] [Thread-194814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] client lang: <none>
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] server lang: <none>
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] kex follows: False
2025-11-24T18:20:41.781 [DEBUG] [Thread-194814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:20:41.782 [DEBUG] [Thread-194814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:20:41.782 [DEBUG] [Thread-194814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:20:41.782 [DEBUG] [Thread-194814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:20:41.782 [DEBUG] [Thread-194814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:20:41.782 [DEBUG] [Thread-194814] [transport.py] [_log()] Compression: none
2025-11-24T18:20:41.782 [DEBUG] [Thread-194814] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:20:41.796 [DEBUG] [Thread-194814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:20:41.798 [DEBUG] [Thread-194814] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:20:41.799 [DEBUG] [Thread-194814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:20:41.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:20:41.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:20:41.801 [DEBUG] [Thread-194814] [transport.py] [_log()] userauth is OK
2025-11-24T18:20:41.801 [DEBUG] [Thread-194814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:20:41.802 [DEBUG] [Thread-194814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:20:41.802 [DEBUG] [Thread-194814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:20:41.802 [DEBUG] [Thread-194814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:20:41.830 [INFO] [Thread-194814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:20:41.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:20:42.379 [DEBUG] [Thread-194814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:20:42.380 [DEBUG] [Thread-194814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:20:42.381 [DEBUG] [Thread-194814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:20:42.420 [DEBUG] [Thread-194814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:20:42.420 [DEBUG] [Thread-194814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:20:42.424 [DEBUG] [Thread-194814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:20:42.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:20:42.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:20:42.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:20:42.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:20:42.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:20:42.445 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:20:42.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:20:42.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:20:42.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:20:42.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.680954 -999.00  +20.20  19.15     27   +0.80 1 1 1 1 1   887    0 18.50 -41.59 ----- 20.4 19.1 200.6 23.8 22.5 -28.3 22.6 -28.3 23.6 -26.9 23.8 -29.0
2025-11-24T18:20:42.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:20:42.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:20:42.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.680954
2025-11-24T18:20:42.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:20:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:20:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:20:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:20:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:20:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:20:33', tmtdew=22.74, humidity=21.33, cloud=0.0, wind=24.35, temperature=20.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:20:34.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:20:42.454 [DEBUG] [Thread-194814] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:20:42.527 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:20:54.729 [DEBUG] [Thread-194817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:21:09.819 [DEBUG] [Thread-194818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:21:12.411 [DEBUG] [Thread-194819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:21:24.881 [DEBUG] [Thread-194820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:21:39.918 [DEBUG] [Thread-194821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:21:54.951 [DEBUG] [Thread-194822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:22:10.036 [DEBUG] [Thread-194823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:22:12.621 [DEBUG] [Thread-194824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:22:25.089 [DEBUG] [Thread-194825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:22:40.119 [DEBUG] [Thread-194826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:22:54.911 [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-11-24T18:22:55.154 [DEBUG] [Thread-194827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:23:10.186 [DEBUG] [Thread-194828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:23:12.852 [DEBUG] [Thread-194829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:23:24.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:23:24.944 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:23:24.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-11-24T18:23:25.222 [DEBUG] [Thread-194830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:23:25.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 23, 17), 22.94, 21.26, 0.0, 26.09, 20.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:23:25.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:23:17
2025-11-24T18:23:25.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:23:26.057 [DEBUG] [Thread-194831] [transport.py] [_log()] starting thread (client mode): 0xd3136950
2025-11-24T18:23:26.058 [DEBUG] [Thread-194831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:23:26.070 [DEBUG] [Thread-194831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:23:26.070 [INFO] [Thread-194831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:23:26.075 [DEBUG] [Thread-194831] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:23:26.075 [DEBUG] [Thread-194831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] client lang: <none>
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] server lang: <none>
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] kex follows: False
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:23:26.076 [DEBUG] [Thread-194831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:23:26.077 [DEBUG] [Thread-194831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:23:26.077 [DEBUG] [Thread-194831] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:23:26.077 [DEBUG] [Thread-194831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:23:26.077 [DEBUG] [Thread-194831] [transport.py] [_log()] Compression: none
2025-11-24T18:23:26.077 [DEBUG] [Thread-194831] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:23:26.114 [DEBUG] [Thread-194831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:23:26.119 [DEBUG] [Thread-194831] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:23:26.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:23:26.123 [DEBUG] [Thread-194831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:23:26.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:23:26.127 [DEBUG] [Thread-194831] [transport.py] [_log()] userauth is OK
2025-11-24T18:23:26.127 [DEBUG] [Thread-194831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:23:26.128 [DEBUG] [Thread-194831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:23:26.128 [DEBUG] [Thread-194831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:23:26.128 [DEBUG] [Thread-194831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:23:26.156 [INFO] [Thread-194831] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:23:26.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:23:26.809 [DEBUG] [Thread-194831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:23:26.809 [DEBUG] [Thread-194831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:23:26.811 [DEBUG] [Thread-194831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:23:26.850 [DEBUG] [Thread-194831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:23:26.851 [DEBUG] [Thread-194831] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:23:26.855 [DEBUG] [Thread-194831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:23:26.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:23:26.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:23:26.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:23:26.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:23:26.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:23:26.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:23:26.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:23:26.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:23:26.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:23:26.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.682343 -999.00  +20.40  20.97     27   +0.80 1 1 1 1 1   887    0 18.25 -46.44 ----- 20.8 21.0 177.8 27.5 22.5 -28.5 22.5 -30.6 23.8 -27.9 23.9 -30.3
2025-11-24T18:23:26.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:23:26.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:23:26.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.682343
2025-11-24T18:23:26.889 [DEBUG] [Thread-194831] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:23:26.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:23:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:23:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:23:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:23:26.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:23:26.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:23:17', tmtdew=22.94, humidity=21.26, cloud=0.0, wind=26.09, temperature=20.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:22:34.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:23:26.993 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:23:27.008 [DEBUG] [Thread-194834] [transport.py] [_log()] starting thread (client mode): 0xd07857b0
2025-11-24T18:23:27.008 [DEBUG] [Thread-194834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:23:27.022 [DEBUG] [Thread-194834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:23:27.023 [INFO] [Thread-194834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:23:27.030 [DEBUG] [Thread-194834] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:23:27.030 [DEBUG] [Thread-194834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:23:27.030 [DEBUG] [Thread-194834] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:23:27.030 [DEBUG] [Thread-194834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:23:27.030 [DEBUG] [Thread-194834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:23:27.030 [DEBUG] [Thread-194834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:23:27.030 [DEBUG] [Thread-194834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:23:27.030 [DEBUG] [Thread-194834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:23:27.030 [DEBUG] [Thread-194834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:23:27.031 [DEBUG] [Thread-194834] [transport.py] [_log()] client lang: <none>
2025-11-24T18:23:27.031 [DEBUG] [Thread-194834] [transport.py] [_log()] server lang: <none>
2025-11-24T18:23:27.031 [DEBUG] [Thread-194834] [transport.py] [_log()] kex follows: False
2025-11-24T18:23:27.031 [DEBUG] [Thread-194834] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:23:27.031 [DEBUG] [Thread-194834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:23:27.031 [DEBUG] [Thread-194834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:23:27.031 [DEBUG] [Thread-194834] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:23:27.031 [DEBUG] [Thread-194834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:23:27.031 [DEBUG] [Thread-194834] [transport.py] [_log()] Compression: none
2025-11-24T18:23:27.031 [DEBUG] [Thread-194834] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:23:27.094 [DEBUG] [Thread-194834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:23:27.094 [DEBUG] [Thread-194834] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:23:27.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:23:27.095 [DEBUG] [Thread-194834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:23:27.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:23:27.149 [DEBUG] [Thread-194834] [transport.py] [_log()] userauth is OK
2025-11-24T18:23:27.150 [DEBUG] [Thread-194834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:23:27.150 [DEBUG] [Thread-194834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:23:27.150 [DEBUG] [Thread-194834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:23:27.150 [DEBUG] [Thread-194834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:23:27.170 [INFO] [Thread-194834] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:23:27.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:23:27.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:23:28.018 [DEBUG] [Thread-194834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:23:28.019 [DEBUG] [Thread-194834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:23:28.066 [DEBUG] [Thread-194834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:23:28.066 [DEBUG] [Thread-194834] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:23:28.074 [DEBUG] [Thread-194834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:23:28.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:23:28.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-11-24T18:23:28.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-11-24T18:23:28.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:23:28.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:23:28.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:23:28.116 [DEBUG] [Thread-194834] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:23:40.258 [DEBUG] [Thread-194836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:23:55.393 [DEBUG] [Thread-194837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:23:58.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:23:58.138 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:23:58.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-11-24T18:23:58.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 23, 50), 22.7, 21.36, 0.0, 25.9, 20.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:23:58.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:23:50
2025-11-24T18:23:59.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:23:59.295 [DEBUG] [Thread-194838] [transport.py] [_log()] starting thread (client mode): 0xd07f8d60
2025-11-24T18:23:59.295 [DEBUG] [Thread-194838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:23:59.314 [DEBUG] [Thread-194838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:23:59.314 [INFO] [Thread-194838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] client lang: <none>
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] server lang: <none>
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] kex follows: False
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] Compression: none
2025-11-24T18:23:59.318 [DEBUG] [Thread-194838] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:23:59.332 [DEBUG] [Thread-194838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:23:59.332 [DEBUG] [Thread-194838] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:23:59.332 [DEBUG] [Thread-194838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:23:59.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:23:59.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:23:59.334 [DEBUG] [Thread-194838] [transport.py] [_log()] userauth is OK
2025-11-24T18:23:59.334 [DEBUG] [Thread-194838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:23:59.334 [DEBUG] [Thread-194838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:23:59.334 [DEBUG] [Thread-194838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:23:59.334 [DEBUG] [Thread-194838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:23:59.350 [INFO] [Thread-194838] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:23:59.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:23:59.990 [DEBUG] [Thread-194838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:23:59.990 [DEBUG] [Thread-194838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:23:59.990 [DEBUG] [Thread-194838] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:24:00.031 [DEBUG] [Thread-194838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:24:00.031 [DEBUG] [Thread-194838] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:24:00.033 [DEBUG] [Thread-194838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:24:00.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:24:00.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:24:00.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:24:00.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:24:00.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:24:00.049 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:24:00.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:24:00.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:24:00.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:24:00.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.682690 -999.00  +20.30  21.56     27   +0.80 1 1 1 1 1   887    0 18.46 -43.84 ----- 27.8 21.6 156.4 24.4 22.5 -28.7 22.7 -28.7 23.7 -27.0 23.9 -28.7
2025-11-24T18:24:00.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:24:00.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:24:00.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.682690
2025-11-24T18:24:00.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:24:00.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:24:00.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:24:00.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:24:00.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:24:00.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:23:50', tmtdew=22.7, humidity=21.36, cloud=0.0, wind=25.9, temperature=20.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:23:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:24:00.050 [DEBUG] [Thread-194838] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:24:00.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:24:00.136 [DEBUG] [Thread-194841] [transport.py] [_log()] starting thread (client mode): 0xd073abc0
2025-11-24T18:24:00.136 [DEBUG] [Thread-194841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:24:00.150 [DEBUG] [Thread-194841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:24:00.151 [INFO] [Thread-194841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] client lang: <none>
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] server lang: <none>
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] kex follows: False
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:24:00.158 [DEBUG] [Thread-194841] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:24:00.159 [DEBUG] [Thread-194841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:24:00.159 [DEBUG] [Thread-194841] [transport.py] [_log()] Compression: none
2025-11-24T18:24:00.159 [DEBUG] [Thread-194841] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:24:00.215 [DEBUG] [Thread-194841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:24:00.215 [DEBUG] [Thread-194841] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:24:00.215 [DEBUG] [Thread-194841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:24:00.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:24:00.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:24:00.273 [DEBUG] [Thread-194841] [transport.py] [_log()] userauth is OK
2025-11-24T18:24:00.273 [DEBUG] [Thread-194841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:24:00.273 [DEBUG] [Thread-194841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:24:00.273 [DEBUG] [Thread-194841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:24:00.273 [DEBUG] [Thread-194841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:24:00.287 [INFO] [Thread-194841] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:24:00.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:24:00.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:24:01.171 [DEBUG] [Thread-194841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:24:01.171 [DEBUG] [Thread-194841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:24:01.220 [DEBUG] [Thread-194841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:24:01.220 [DEBUG] [Thread-194841] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:24:01.228 [DEBUG] [Thread-194841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:24:01.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:24:01.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:24:01.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-11-24T18:24:01.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:24:01.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:24:01.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:24:01.258 [DEBUG] [Thread-194841] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:24:10.435 [DEBUG] [Thread-194843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:24:13.156 [DEBUG] [Thread-194844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:24:25.520 [DEBUG] [Thread-194845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:24:31.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:24:31.268 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:24:31.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-11-24T18:24:32.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 24, 22), 22.65, 21.44, 0.0, 30.17, 20.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:24:32.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:24:22
2025-11-24T18:24:32.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:24:32.529 [DEBUG] [Thread-194846] [transport.py] [_log()] starting thread (client mode): 0xd073a4a0
2025-11-24T18:24:32.529 [DEBUG] [Thread-194846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:24:32.541 [DEBUG] [Thread-194846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:24:32.541 [INFO] [Thread-194846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] client lang: <none>
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] server lang: <none>
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] kex follows: False
2025-11-24T18:24:32.546 [DEBUG] [Thread-194846] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:24:32.547 [DEBUG] [Thread-194846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:24:32.547 [DEBUG] [Thread-194846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:24:32.547 [DEBUG] [Thread-194846] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:24:32.547 [DEBUG] [Thread-194846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:24:32.547 [DEBUG] [Thread-194846] [transport.py] [_log()] Compression: none
2025-11-24T18:24:32.547 [DEBUG] [Thread-194846] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:24:32.583 [DEBUG] [Thread-194846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:24:32.588 [DEBUG] [Thread-194846] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:24:32.591 [DEBUG] [Thread-194846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:24:32.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:24:32.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:24:32.595 [DEBUG] [Thread-194846] [transport.py] [_log()] userauth is OK
2025-11-24T18:24:32.596 [DEBUG] [Thread-194846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:24:32.596 [DEBUG] [Thread-194846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:24:32.596 [DEBUG] [Thread-194846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:24:32.596 [DEBUG] [Thread-194846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:24:32.623 [INFO] [Thread-194846] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:24:32.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:24:33.252 [DEBUG] [Thread-194846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:24:33.252 [DEBUG] [Thread-194846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:24:33.254 [DEBUG] [Thread-194846] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:24:33.293 [DEBUG] [Thread-194846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:24:33.293 [DEBUG] [Thread-194846] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:24:33.296 [DEBUG] [Thread-194846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:24:33.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:24:33.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:24:33.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:24:33.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:24:33.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:24:33.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:24:33.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:24:33.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:24:33.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:24:33.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.683038 -999.00  +20.10  23.54     27   +0.80 1 1 1 1 1   887    0 18.23 -45.36 ----- 26.4 23.5 177.6 40.5 22.4 -29.1 22.4 -29.0 23.6 -27.7 23.7 -29.4
2025-11-24T18:24:33.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:24:33.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:24:33.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.683038
2025-11-24T18:24:33.329 [DEBUG] [Thread-194846] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:24:33.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:24:33.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:24:33.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:24:33.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:24:33.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:24:33.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:24:22', tmtdew=22.65, humidity=21.44, cloud=0.0, wind=30.17, temperature=20.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:23:34.483', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:24:33.430 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:24:33.442 [DEBUG] [Thread-194849] [transport.py] [_log()] starting thread (client mode): 0xd07bd3f0
2025-11-24T18:24:33.442 [DEBUG] [Thread-194849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:24:33.459 [DEBUG] [Thread-194849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:24:33.459 [INFO] [Thread-194849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] client lang: <none>
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] server lang: <none>
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] kex follows: False
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:24:33.470 [DEBUG] [Thread-194849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:24:33.471 [DEBUG] [Thread-194849] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:24:33.471 [DEBUG] [Thread-194849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:24:33.471 [DEBUG] [Thread-194849] [transport.py] [_log()] Compression: none
2025-11-24T18:24:33.471 [DEBUG] [Thread-194849] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:24:33.525 [DEBUG] [Thread-194849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:24:33.525 [DEBUG] [Thread-194849] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:24:33.525 [DEBUG] [Thread-194849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:24:33.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:24:33.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:24:33.581 [DEBUG] [Thread-194849] [transport.py] [_log()] userauth is OK
2025-11-24T18:24:33.581 [DEBUG] [Thread-194849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:24:33.582 [DEBUG] [Thread-194849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:24:33.582 [DEBUG] [Thread-194849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:24:33.582 [DEBUG] [Thread-194849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:24:33.604 [INFO] [Thread-194849] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:24:33.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:24:33.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:24:34.462 [DEBUG] [Thread-194849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:24:34.462 [DEBUG] [Thread-194849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:24:34.510 [DEBUG] [Thread-194849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:24:34.510 [DEBUG] [Thread-194849] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:24:34.519 [DEBUG] [Thread-194849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:24:34.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:24:34.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-11-24T18:24:34.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-11-24T18:24:34.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:24:34.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:24:34.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:24:34.556 [DEBUG] [Thread-194849] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:24:40.555 [DEBUG] [Thread-194851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:24:55.604 [DEBUG] [Thread-194852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:25:04.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:25:04.564 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:25:04.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-11-24T18:25:05.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 24, 56), 22.6, 21.49, 0.0, 27.47, 20.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:25:05.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:24:56
2025-11-24T18:25:05.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:25:05.897 [DEBUG] [Thread-194853] [transport.py] [_log()] starting thread (client mode): 0xd07f8340
2025-11-24T18:25:05.898 [DEBUG] [Thread-194853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:25:05.910 [DEBUG] [Thread-194853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:25:05.910 [INFO] [Thread-194853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] client lang: <none>
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] server lang: <none>
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] kex follows: False
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:25:05.914 [DEBUG] [Thread-194853] [transport.py] [_log()] Compression: none
2025-11-24T18:25:05.915 [DEBUG] [Thread-194853] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:25:05.934 [DEBUG] [Thread-194853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:25:05.935 [DEBUG] [Thread-194853] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:25:05.935 [DEBUG] [Thread-194853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:25:05.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:25:05.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:25:05.940 [DEBUG] [Thread-194853] [transport.py] [_log()] userauth is OK
2025-11-24T18:25:05.940 [DEBUG] [Thread-194853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:25:05.940 [DEBUG] [Thread-194853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:25:05.940 [DEBUG] [Thread-194853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:25:05.941 [DEBUG] [Thread-194853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:25:05.977 [INFO] [Thread-194853] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:25:05.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:25:08.096 [DEBUG] [Thread-194853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:25:08.096 [DEBUG] [Thread-194853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:25:08.096 [DEBUG] [Thread-194853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:25:08.137 [DEBUG] [Thread-194853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:25:08.137 [DEBUG] [Thread-194853] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:25:08.148 [DEBUG] [Thread-194853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:25:08.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:25:08.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:25:08.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:25:08.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:25:08.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:25:08.170 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:25:08.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:25:08.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:25:08.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:25:08.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.683732 -999.00  +20.00  17.78     27   +0.70 1 1 1 1 1   887    0 18.59 -42.85 ----- 23.2 17.8 175.2 26.3 22.4 -28.5 22.5 -30.2 23.6 -26.9 23.7 -29.2
2025-11-24T18:25:08.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:25:08.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:25:08.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.683732
2025-11-24T18:25:08.175 [DEBUG] [Thread-194853] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:25:08.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:25:08.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:25:08.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:25:08.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:25:08.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:25:08.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:24:56', tmtdew=22.6, humidity=21.49, cloud=0.0, wind=27.47, temperature=20.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:24:34.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:25:08.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:25:08.266 [DEBUG] [Thread-194856] [transport.py] [_log()] starting thread (client mode): 0xd07bea10
2025-11-24T18:25:08.266 [DEBUG] [Thread-194856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:25:08.281 [DEBUG] [Thread-194856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:25:08.282 [INFO] [Thread-194856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:25:08.289 [DEBUG] [Thread-194856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:25:08.289 [DEBUG] [Thread-194856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:25:08.289 [DEBUG] [Thread-194856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:25:08.289 [DEBUG] [Thread-194856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:25:08.289 [DEBUG] [Thread-194856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:25:08.289 [DEBUG] [Thread-194856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] client lang: <none>
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] server lang: <none>
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] kex follows: False
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] Compression: none
2025-11-24T18:25:08.290 [DEBUG] [Thread-194856] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:25:08.350 [DEBUG] [Thread-194856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:25:08.350 [DEBUG] [Thread-194856] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:25:08.351 [DEBUG] [Thread-194856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:25:08.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:25:08.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:25:08.406 [DEBUG] [Thread-194856] [transport.py] [_log()] userauth is OK
2025-11-24T18:25:08.406 [DEBUG] [Thread-194856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:25:08.406 [DEBUG] [Thread-194856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:25:08.406 [DEBUG] [Thread-194856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:25:08.406 [DEBUG] [Thread-194856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:25:08.426 [INFO] [Thread-194856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:25:08.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:25:08.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:25:09.309 [DEBUG] [Thread-194856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:25:09.310 [DEBUG] [Thread-194856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:25:09.357 [DEBUG] [Thread-194856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:25:09.357 [DEBUG] [Thread-194856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:25:09.366 [DEBUG] [Thread-194856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:25:09.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:25:09.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-11-24T18:25:09.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-11-24T18:25:09.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:25:09.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:25:09.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:25:09.400 [DEBUG] [Thread-194856] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:25:10.640 [DEBUG] [Thread-194858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:25:13.374 [DEBUG] [Thread-194859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:25:25.714 [DEBUG] [Thread-194860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:25:39.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:25:39.427 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:25:39.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-11-24T18:25:40.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 25, 28), 22.58, 21.53, 0.0, 23.04, 20.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:25:40.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:25:28
2025-11-24T18:25:40.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:25:40.609 [DEBUG] [Thread-194861] [transport.py] [_log()] starting thread (client mode): 0xd0701e70
2025-11-24T18:25:40.609 [DEBUG] [Thread-194861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:25:40.624 [DEBUG] [Thread-194861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:25:40.624 [INFO] [Thread-194861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:25:40.628 [DEBUG] [Thread-194861] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:25:40.628 [DEBUG] [Thread-194861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:25:40.628 [DEBUG] [Thread-194861] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:25:40.628 [DEBUG] [Thread-194861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:25:40.628 [DEBUG] [Thread-194861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:25:40.628 [DEBUG] [Thread-194861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:25:40.628 [DEBUG] [Thread-194861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:25:40.628 [DEBUG] [Thread-194861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:25:40.629 [DEBUG] [Thread-194861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:25:40.629 [DEBUG] [Thread-194861] [transport.py] [_log()] client lang: <none>
2025-11-24T18:25:40.629 [DEBUG] [Thread-194861] [transport.py] [_log()] server lang: <none>
2025-11-24T18:25:40.629 [DEBUG] [Thread-194861] [transport.py] [_log()] kex follows: False
2025-11-24T18:25:40.629 [DEBUG] [Thread-194861] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:25:40.629 [DEBUG] [Thread-194861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:25:40.629 [DEBUG] [Thread-194861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:25:40.629 [DEBUG] [Thread-194861] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:25:40.630 [DEBUG] [Thread-194861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:25:40.630 [DEBUG] [Thread-194861] [transport.py] [_log()] Compression: none
2025-11-24T18:25:40.630 [DEBUG] [Thread-194861] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:25:40.664 [DEBUG] [Thread-194861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:25:40.669 [DEBUG] [Thread-194861] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:25:40.671 [DEBUG] [Thread-194861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:25:40.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:25:40.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:25:40.675 [DEBUG] [Thread-194861] [transport.py] [_log()] userauth is OK
2025-11-24T18:25:40.675 [DEBUG] [Thread-194861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:25:40.676 [DEBUG] [Thread-194861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:25:40.676 [DEBUG] [Thread-194861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:25:40.676 [DEBUG] [Thread-194861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:25:40.716 [INFO] [Thread-194861] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:25:40.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:25:40.745 [DEBUG] [Thread-194863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:25:41.278 [DEBUG] [Thread-194861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:25:41.279 [DEBUG] [Thread-194861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:25:41.288 [DEBUG] [Thread-194861] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:25:41.319 [DEBUG] [Thread-194861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:25:41.319 [DEBUG] [Thread-194861] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:25:41.324 [DEBUG] [Thread-194861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:25:41.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:25:41.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:25:41.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:25:41.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:25:41.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:25:41.344 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:25:41.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:25:41.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:25:41.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:25:41.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.683732 -999.00  +20.00  17.78     27   +0.70 1 1 1 1 1   887    0 18.59 -42.85 ----- 23.2 17.8 175.2 26.3 22.4 -28.5 22.5 -30.2 23.6 -26.9 23.7 -29.2
2025-11-24T18:25:41.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:25:41.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:25:41.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.683732
2025-11-24T18:25:41.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:25:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:25:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:25:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:25:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:25:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:25:28', tmtdew=22.58, humidity=21.53, cloud=0.0, wind=23.04, temperature=20.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:24:34.445', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:25:41.354 [DEBUG] [Thread-194861] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:25:41.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:25:41.439 [DEBUG] [Thread-194865] [transport.py] [_log()] starting thread (client mode): 0xd07385b0
2025-11-24T18:25:41.439 [DEBUG] [Thread-194865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:25:41.454 [DEBUG] [Thread-194865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:25:41.454 [INFO] [Thread-194865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:25:41.461 [DEBUG] [Thread-194865] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] client lang: <none>
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] server lang: <none>
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] kex follows: False
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] Compression: none
2025-11-24T18:25:41.462 [DEBUG] [Thread-194865] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:25:41.521 [DEBUG] [Thread-194865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:25:41.521 [DEBUG] [Thread-194865] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:25:41.522 [DEBUG] [Thread-194865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:25:41.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:25:41.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:25:41.578 [DEBUG] [Thread-194865] [transport.py] [_log()] userauth is OK
2025-11-24T18:25:41.578 [DEBUG] [Thread-194865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:25:41.578 [DEBUG] [Thread-194865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:25:41.578 [DEBUG] [Thread-194865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:25:41.578 [DEBUG] [Thread-194865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:25:41.597 [INFO] [Thread-194865] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:25:41.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:25:41.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:25:42.401 [DEBUG] [Thread-194865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:25:42.401 [DEBUG] [Thread-194865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:25:42.449 [DEBUG] [Thread-194865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:25:42.449 [DEBUG] [Thread-194865] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:25:42.458 [DEBUG] [Thread-194865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:25:42.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:25:42.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-11-24T18:25:42.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-11-24T18:25:42.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:25:42.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:25:42.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:25:42.505 [DEBUG] [Thread-194865] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:25:55.775 [DEBUG] [Thread-194867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:26:10.861 [DEBUG] [Thread-194868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:26:12.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:26:12.538 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:26:12.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-11-24T18:26:13.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 26, 1), 22.52, 21.96, 0.0, 23.59, 20.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:26:13.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:26:01
2025-11-24T18:26:13.613 [DEBUG] [Thread-194869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:26:13.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:26:13.838 [DEBUG] [Thread-194870] [transport.py] [_log()] starting thread (client mode): 0xd0701030
2025-11-24T18:26:13.839 [DEBUG] [Thread-194870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:26:13.853 [DEBUG] [Thread-194870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:26:13.853 [INFO] [Thread-194870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:26:13.858 [DEBUG] [Thread-194870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:26:13.858 [DEBUG] [Thread-194870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] client lang: <none>
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] server lang: <none>
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] kex follows: False
2025-11-24T18:26:13.859 [DEBUG] [Thread-194870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:26:13.860 [DEBUG] [Thread-194870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:26:13.860 [DEBUG] [Thread-194870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:26:13.860 [DEBUG] [Thread-194870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:26:13.860 [DEBUG] [Thread-194870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:26:13.861 [DEBUG] [Thread-194870] [transport.py] [_log()] Compression: none
2025-11-24T18:26:13.861 [DEBUG] [Thread-194870] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:26:13.894 [DEBUG] [Thread-194870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:26:13.898 [DEBUG] [Thread-194870] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:26:13.900 [DEBUG] [Thread-194870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:26:13.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:26:13.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:26:13.905 [DEBUG] [Thread-194870] [transport.py] [_log()] userauth is OK
2025-11-24T18:26:13.906 [DEBUG] [Thread-194870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:26:13.906 [DEBUG] [Thread-194870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:26:13.906 [DEBUG] [Thread-194870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:26:13.906 [DEBUG] [Thread-194870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:26:13.931 [INFO] [Thread-194870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:26:13.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:26:14.564 [DEBUG] [Thread-194870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:26:14.565 [DEBUG] [Thread-194870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:26:14.567 [DEBUG] [Thread-194870] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:26:14.605 [DEBUG] [Thread-194870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:26:14.606 [DEBUG] [Thread-194870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:26:14.609 [DEBUG] [Thread-194870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:26:14.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:26:14.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:26:14.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:26:14.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:26:14.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:26:14.634 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:26:14.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:26:14.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:26:14.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:26:14.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.684426 -999.00  +20.00  23.78     27   +0.80 1 1 1 1 1   887    0 18.66 -45.05 ----- 22.0 23.8 197.4 31.0 22.4 -28.8 22.4 -27.9 23.5 -27.0 23.6 -29.2
2025-11-24T18:26:14.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:26:14.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:26:14.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.684426
2025-11-24T18:26:14.643 [DEBUG] [Thread-194870] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:26:14.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:26:14.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:26:14.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:26:14.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:26:14.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:26:14.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:26:01', tmtdew=22.52, humidity=21.96, cloud=0.0, wind=23.59, temperature=20.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:25:34.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:26:14.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:26:14.754 [DEBUG] [Thread-194873] [transport.py] [_log()] starting thread (client mode): 0xd073aef0
2025-11-24T18:26:14.754 [DEBUG] [Thread-194873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:26:14.768 [DEBUG] [Thread-194873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:26:14.768 [INFO] [Thread-194873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] client lang: <none>
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] server lang: <none>
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] kex follows: False
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] Compression: none
2025-11-24T18:26:14.776 [DEBUG] [Thread-194873] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:26:14.834 [DEBUG] [Thread-194873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:26:14.834 [DEBUG] [Thread-194873] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:26:14.835 [DEBUG] [Thread-194873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:26:14.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:26:14.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:26:14.890 [DEBUG] [Thread-194873] [transport.py] [_log()] userauth is OK
2025-11-24T18:26:14.890 [DEBUG] [Thread-194873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:26:14.890 [DEBUG] [Thread-194873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:26:14.890 [DEBUG] [Thread-194873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:26:14.890 [DEBUG] [Thread-194873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:26:14.909 [INFO] [Thread-194873] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:26:14.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:26:14.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:26:15.735 [DEBUG] [Thread-194873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:26:15.735 [DEBUG] [Thread-194873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:26:15.783 [DEBUG] [Thread-194873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:26:15.783 [DEBUG] [Thread-194873] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:26:15.791 [DEBUG] [Thread-194873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:26:15.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:26:15.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-11-24T18:26:15.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-11-24T18:26:15.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:26:15.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:26:15.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:26:15.824 [DEBUG] [Thread-194873] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:26:25.909 [DEBUG] [Thread-194875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:26:41.009 [DEBUG] [Thread-194876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:26:45.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:26:45.848 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:26:45.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-11-24T18:26:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 26, 33), 22.53, 21.98, 0.0, 29.18, 20.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:26:46.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:26:33
2025-11-24T18:26:46.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:26:46.985 [DEBUG] [Thread-194877] [transport.py] [_log()] starting thread (client mode): 0xd07fbb20
2025-11-24T18:26:46.985 [DEBUG] [Thread-194877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:26:46.998 [DEBUG] [Thread-194877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:26:46.998 [INFO] [Thread-194877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] client lang: <none>
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] server lang: <none>
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] kex follows: False
2025-11-24T18:26:47.003 [DEBUG] [Thread-194877] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:26:47.004 [DEBUG] [Thread-194877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:26:47.004 [DEBUG] [Thread-194877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:26:47.004 [DEBUG] [Thread-194877] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:26:47.004 [DEBUG] [Thread-194877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:26:47.004 [DEBUG] [Thread-194877] [transport.py] [_log()] Compression: none
2025-11-24T18:26:47.004 [DEBUG] [Thread-194877] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:26:47.034 [DEBUG] [Thread-194877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:26:47.038 [DEBUG] [Thread-194877] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:26:47.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:26:47.041 [DEBUG] [Thread-194877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:26:47.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:26:47.044 [DEBUG] [Thread-194877] [transport.py] [_log()] userauth is OK
2025-11-24T18:26:47.044 [DEBUG] [Thread-194877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:26:47.044 [DEBUG] [Thread-194877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:26:47.044 [DEBUG] [Thread-194877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:26:47.044 [DEBUG] [Thread-194877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:26:47.065 [INFO] [Thread-194877] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:26:47.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:26:47.643 [DEBUG] [Thread-194877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:26:47.643 [DEBUG] [Thread-194877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:26:47.654 [DEBUG] [Thread-194877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:26:47.683 [DEBUG] [Thread-194877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:26:47.684 [DEBUG] [Thread-194877] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:26:47.687 [DEBUG] [Thread-194877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:26:47.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:26:47.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:26:47.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:26:47.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:26:47.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:26:47.717 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:26:47.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:26:47.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:26:47.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:26:47.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.684773 -999.00  +20.00  18.40     27   +0.80 1 1 1 1 1   887    0 18.37 -45.39 ----- 18.3 18.4 172.2 26.5 22.3 -28.2 22.4 -28.9 23.6 -27.6 23.7 -28.3
2025-11-24T18:26:47.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:26:47.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:26:47.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.684773
2025-11-24T18:26:47.725 [DEBUG] [Thread-194877] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:26:47.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:26:47.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:26:47.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:26:47.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:26:47.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:26:47.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:26:33', tmtdew=22.53, humidity=21.98, cloud=0.0, wind=29.18, temperature=20.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:26:04.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:26:47.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:26:47.837 [DEBUG] [Thread-194880] [transport.py] [_log()] starting thread (client mode): 0xd07bec20
2025-11-24T18:26:47.837 [DEBUG] [Thread-194880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:26:47.853 [DEBUG] [Thread-194880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:26:47.853 [INFO] [Thread-194880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:26:47.860 [DEBUG] [Thread-194880] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:26:47.860 [DEBUG] [Thread-194880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:26:47.860 [DEBUG] [Thread-194880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:26:47.861 [DEBUG] [Thread-194880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:26:47.861 [DEBUG] [Thread-194880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:26:47.861 [DEBUG] [Thread-194880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:26:47.861 [DEBUG] [Thread-194880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:26:47.861 [DEBUG] [Thread-194880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:26:47.861 [DEBUG] [Thread-194880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:26:47.861 [DEBUG] [Thread-194880] [transport.py] [_log()] client lang: <none>
2025-11-24T18:26:47.861 [DEBUG] [Thread-194880] [transport.py] [_log()] server lang: <none>
2025-11-24T18:26:47.862 [DEBUG] [Thread-194880] [transport.py] [_log()] kex follows: False
2025-11-24T18:26:47.862 [DEBUG] [Thread-194880] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:26:47.862 [DEBUG] [Thread-194880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:26:47.862 [DEBUG] [Thread-194880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:26:47.862 [DEBUG] [Thread-194880] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:26:47.862 [DEBUG] [Thread-194880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:26:47.862 [DEBUG] [Thread-194880] [transport.py] [_log()] Compression: none
2025-11-24T18:26:47.863 [DEBUG] [Thread-194880] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:26:47.916 [DEBUG] [Thread-194880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:26:47.917 [DEBUG] [Thread-194880] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:26:47.917 [DEBUG] [Thread-194880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:26:47.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:26:47.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:26:47.973 [DEBUG] [Thread-194880] [transport.py] [_log()] userauth is OK
2025-11-24T18:26:47.973 [DEBUG] [Thread-194880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:26:47.974 [DEBUG] [Thread-194880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:26:47.974 [DEBUG] [Thread-194880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:26:47.974 [DEBUG] [Thread-194880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:26:47.987 [INFO] [Thread-194880] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:26:47.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:26:47.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:26:48.833 [DEBUG] [Thread-194880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:26:48.833 [DEBUG] [Thread-194880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:26:48.882 [DEBUG] [Thread-194880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:26:48.882 [DEBUG] [Thread-194880] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:26:48.891 [DEBUG] [Thread-194880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:26:48.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:26:48.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')
2025-11-24T18:26:48.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') -> 00000000
2025-11-24T18:26:48.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:26:48.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:26:48.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:26:48.928 [DEBUG] [Thread-194880] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:26:56.047 [DEBUG] [Thread-194882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:27:11.109 [DEBUG] [Thread-194883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:27:13.854 [DEBUG] [Thread-194884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:27:18.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:27:18.929 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:27:18.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-11-24T18:27:19.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 27, 6), 22.56, 21.93, 0.0, 31.27, 20.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:27:19.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:27:06
2025-11-24T18:27:19.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:27:20.008 [DEBUG] [Thread-194885] [transport.py] [_log()] starting thread (client mode): 0xd073bd60
2025-11-24T18:27:20.008 [DEBUG] [Thread-194885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:27:20.021 [DEBUG] [Thread-194885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:27:20.021 [INFO] [Thread-194885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:27:20.027 [DEBUG] [Thread-194885] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:27:20.027 [DEBUG] [Thread-194885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] client lang: <none>
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] server lang: <none>
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] kex follows: False
2025-11-24T18:27:20.028 [DEBUG] [Thread-194885] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:27:20.029 [DEBUG] [Thread-194885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:27:20.029 [DEBUG] [Thread-194885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:27:20.029 [DEBUG] [Thread-194885] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:27:20.029 [DEBUG] [Thread-194885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:27:20.029 [DEBUG] [Thread-194885] [transport.py] [_log()] Compression: none
2025-11-24T18:27:20.029 [DEBUG] [Thread-194885] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:27:20.065 [DEBUG] [Thread-194885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:27:20.071 [DEBUG] [Thread-194885] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:27:20.073 [DEBUG] [Thread-194885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:27:20.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:27:20.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:27:20.080 [DEBUG] [Thread-194885] [transport.py] [_log()] userauth is OK
2025-11-24T18:27:20.081 [DEBUG] [Thread-194885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:27:20.081 [DEBUG] [Thread-194885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:27:20.081 [DEBUG] [Thread-194885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:27:20.081 [DEBUG] [Thread-194885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:27:20.109 [INFO] [Thread-194885] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:27:20.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:27:20.719 [DEBUG] [Thread-194885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:27:20.719 [DEBUG] [Thread-194885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:27:20.729 [DEBUG] [Thread-194885] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:27:20.760 [DEBUG] [Thread-194885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:27:20.761 [DEBUG] [Thread-194885] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:27:20.765 [DEBUG] [Thread-194885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:27:20.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:27:20.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:27:20.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:27:20.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:27:20.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:27:20.789 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:27:20.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:27:20.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:27:20.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:27:20.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.685121 -999.00  +20.10  17.19     27   +0.80 1 1 1 1 1   887    0 18.66 -46.03 ----- 17.6 17.2 177.4 19.9 22.4 -28.3 22.4 -29.0 23.5 -27.5 23.7 -28.8
2025-11-24T18:27:20.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:27:20.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:27:20.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.685121
2025-11-24T18:27:20.797 [DEBUG] [Thread-194885] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:27:20.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:27:20.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:27:20.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:27:20.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:27:20.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:27:20.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:27:06', tmtdew=22.56, humidity=21.93, cloud=0.0, wind=31.27, temperature=20.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:26:34.454', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:27:20.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:27:20.924 [DEBUG] [Thread-194888] [transport.py] [_log()] starting thread (client mode): 0xc9b835e0
2025-11-24T18:27:20.924 [DEBUG] [Thread-194888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:27:20.943 [DEBUG] [Thread-194888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:27:20.943 [INFO] [Thread-194888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:27:20.950 [DEBUG] [Thread-194888] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] client lang: <none>
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] server lang: <none>
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] kex follows: False
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:27:20.951 [DEBUG] [Thread-194888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:27:20.952 [DEBUG] [Thread-194888] [transport.py] [_log()] Compression: none
2025-11-24T18:27:20.952 [DEBUG] [Thread-194888] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:27:21.008 [DEBUG] [Thread-194888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:27:21.009 [DEBUG] [Thread-194888] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:27:21.009 [DEBUG] [Thread-194888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:27:21.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:27:21.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:27:21.066 [DEBUG] [Thread-194888] [transport.py] [_log()] userauth is OK
2025-11-24T18:27:21.066 [DEBUG] [Thread-194888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:27:21.066 [DEBUG] [Thread-194888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:27:21.066 [DEBUG] [Thread-194888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:27:21.066 [DEBUG] [Thread-194888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:27:21.079 [INFO] [Thread-194888] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:27:21.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:27:21.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:27:21.883 [DEBUG] [Thread-194888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:27:21.884 [DEBUG] [Thread-194888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:27:21.931 [DEBUG] [Thread-194888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:27:21.931 [DEBUG] [Thread-194888] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:27:21.939 [DEBUG] [Thread-194888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:27:21.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:27:21.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-11-24T18:27:21.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-11-24T18:27:21.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:27:21.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:27:21.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:27:21.973 [DEBUG] [Thread-194888] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:27:26.174 [DEBUG] [Thread-194890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:27:41.274 [DEBUG] [Thread-194891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:27:51.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:27:51.996 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:27:51.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-11-24T18:27:52.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 27, 39), 22.72, 21.35, 0.0, 30.15, 20.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:27:52.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:27:39
2025-11-24T18:27:53.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:27:53.188 [DEBUG] [Thread-194892] [transport.py] [_log()] starting thread (client mode): 0xd073a680
2025-11-24T18:27:53.188 [DEBUG] [Thread-194892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:27:53.207 [DEBUG] [Thread-194892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:27:53.207 [INFO] [Thread-194892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] client lang: <none>
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] server lang: <none>
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] kex follows: False
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] Compression: none
2025-11-24T18:27:53.210 [DEBUG] [Thread-194892] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:27:53.226 [DEBUG] [Thread-194892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:27:53.226 [DEBUG] [Thread-194892] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:27:53.226 [DEBUG] [Thread-194892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:27:53.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:27:53.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:27:53.227 [DEBUG] [Thread-194892] [transport.py] [_log()] userauth is OK
2025-11-24T18:27:53.227 [DEBUG] [Thread-194892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:27:53.227 [DEBUG] [Thread-194892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:27:53.227 [DEBUG] [Thread-194892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:27:53.227 [DEBUG] [Thread-194892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:27:53.242 [INFO] [Thread-194892] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:27:53.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:27:53.798 [DEBUG] [Thread-194892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:27:53.798 [DEBUG] [Thread-194892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:27:53.798 [DEBUG] [Thread-194892] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:27:53.839 [DEBUG] [Thread-194892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:27:53.839 [DEBUG] [Thread-194892] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:27:53.840 [DEBUG] [Thread-194892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:27:53.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:27:53.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:27:53.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:27:53.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:27:53.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:27:53.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:27:53.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:27:53.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:27:53.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:27:53.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.685468 -999.00  +20.20  17.82     27   +0.80 1 1 1 1 1   887    0 18.21 -44.72 ----- 11.9 17.8 175.7 26.9 22.3 -28.3 22.5 -29.1 23.6 -26.6 23.7 -28.1
2025-11-24T18:27:53.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:27:53.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:27:53.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.685468
2025-11-24T18:27:53.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:27:53.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:27:53.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:27:53.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:27:53.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:27:53.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:27:39', tmtdew=22.72, humidity=21.35, cloud=0.0, wind=30.15, temperature=20.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:27:04.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:27:53.859 [DEBUG] [Thread-194892] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:27:53.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:27:53.945 [DEBUG] [Thread-194895] [transport.py] [_log()] starting thread (client mode): 0xd07fa980
2025-11-24T18:27:53.945 [DEBUG] [Thread-194895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:27:53.961 [DEBUG] [Thread-194895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:27:53.961 [INFO] [Thread-194895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] client lang: <none>
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] server lang: <none>
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] kex follows: False
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] Compression: none
2025-11-24T18:27:53.972 [DEBUG] [Thread-194895] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:27:54.028 [DEBUG] [Thread-194895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:27:54.028 [DEBUG] [Thread-194895] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:27:54.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:27:54.028 [DEBUG] [Thread-194895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:27:54.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:27:54.086 [DEBUG] [Thread-194895] [transport.py] [_log()] userauth is OK
2025-11-24T18:27:54.086 [DEBUG] [Thread-194895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:27:54.086 [DEBUG] [Thread-194895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:27:54.086 [DEBUG] [Thread-194895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:27:54.086 [DEBUG] [Thread-194895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:27:54.102 [INFO] [Thread-194895] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:27:54.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:27:54.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:27:54.936 [DEBUG] [Thread-194895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:27:54.936 [DEBUG] [Thread-194895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:27:54.984 [DEBUG] [Thread-194895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:27:54.984 [DEBUG] [Thread-194895] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:27:54.992 [DEBUG] [Thread-194895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:27:55.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:27:55.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-11-24T18:27:55.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-11-24T18:27:55.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:27:55.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:27:55.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:27:55.024 [DEBUG] [Thread-194895] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:27:56.301 [DEBUG] [Thread-194897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:28:11.343 [DEBUG] [Thread-194898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:28:14.102 [DEBUG] [Thread-194899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:28:25.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:28:25.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:28:25.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-11-24T18:28:25.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 28, 11), 22.8, 21.25, 0.0, 27.12, 20.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:28:25.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:28:11
2025-11-24T18:28:26.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:28:26.266 [DEBUG] [Thread-194900] [transport.py] [_log()] starting thread (client mode): 0xc9b81b70
2025-11-24T18:28:26.266 [DEBUG] [Thread-194900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:28:26.278 [DEBUG] [Thread-194900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:28:26.278 [INFO] [Thread-194900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:28:26.283 [DEBUG] [Thread-194900] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:28:26.283 [DEBUG] [Thread-194900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] client lang: <none>
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] server lang: <none>
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] kex follows: False
2025-11-24T18:28:26.284 [DEBUG] [Thread-194900] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:28:26.285 [DEBUG] [Thread-194900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:28:26.285 [DEBUG] [Thread-194900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:28:26.286 [DEBUG] [Thread-194900] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:28:26.286 [DEBUG] [Thread-194900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:28:26.286 [DEBUG] [Thread-194900] [transport.py] [_log()] Compression: none
2025-11-24T18:28:26.286 [DEBUG] [Thread-194900] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:28:26.322 [DEBUG] [Thread-194900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:28:26.325 [DEBUG] [Thread-194900] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:28:26.327 [DEBUG] [Thread-194900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:28:26.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:28:26.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:28:26.331 [DEBUG] [Thread-194900] [transport.py] [_log()] userauth is OK
2025-11-24T18:28:26.331 [DEBUG] [Thread-194900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:28:26.331 [DEBUG] [Thread-194900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:28:26.331 [DEBUG] [Thread-194900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:28:26.331 [DEBUG] [Thread-194900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:28:26.357 [INFO] [Thread-194900] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:28:26.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:28:26.400 [DEBUG] [Thread-194902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:28:26.969 [DEBUG] [Thread-194900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:28:26.978 [DEBUG] [Thread-194900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:28:26.978 [DEBUG] [Thread-194900] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:28:27.010 [DEBUG] [Thread-194900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:28:27.010 [DEBUG] [Thread-194900] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:28:27.013 [DEBUG] [Thread-194900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:28:27.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:28:27.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:28:27.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:28:27.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:28:27.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:28:27.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:28:27.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:28:27.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:28:27.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:28:27.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.685815 -999.00  +20.20  16.37     27   +0.60 1 1 1 1 1   887    0 18.30 -42.02 ----- 23.2 16.4 170.6 30.3 22.4 -28.3 22.5 -27.9 23.5 -27.3 23.7 -29.0
2025-11-24T18:28:27.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:28:27.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:28:27.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.685815
2025-11-24T18:28:27.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:28:27.042 [DEBUG] [Thread-194900] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:28:27.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:28:27.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:28:27.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:28:27.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:28:27.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:28:11', tmtdew=22.8, humidity=21.25, cloud=0.0, wind=27.12, temperature=20.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:27:34.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:28:27.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:28:27.136 [DEBUG] [Thread-194904] [transport.py] [_log()] starting thread (client mode): 0xd07fa6e0
2025-11-24T18:28:27.136 [DEBUG] [Thread-194904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:28:27.151 [DEBUG] [Thread-194904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:28:27.151 [INFO] [Thread-194904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] client lang: <none>
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] server lang: <none>
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] kex follows: False
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] Compression: none
2025-11-24T18:28:27.159 [DEBUG] [Thread-194904] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:28:27.217 [DEBUG] [Thread-194904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:28:27.217 [DEBUG] [Thread-194904] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:28:27.217 [DEBUG] [Thread-194904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:28:27.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:28:27.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:28:27.274 [DEBUG] [Thread-194904] [transport.py] [_log()] userauth is OK
2025-11-24T18:28:27.274 [DEBUG] [Thread-194904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:28:27.274 [DEBUG] [Thread-194904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:28:27.274 [DEBUG] [Thread-194904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:28:27.274 [DEBUG] [Thread-194904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:28:27.288 [INFO] [Thread-194904] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:28:27.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:28:27.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:28:28.148 [DEBUG] [Thread-194904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:28:28.148 [DEBUG] [Thread-194904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:28:28.196 [DEBUG] [Thread-194904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:28:28.196 [DEBUG] [Thread-194904] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:28:28.205 [DEBUG] [Thread-194904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:28:28.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:28:28.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-11-24T18:28:28.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-11-24T18:28:28.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:28:28.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:28:28.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:28:28.242 [DEBUG] [Thread-194904] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:28:41.451 [DEBUG] [Thread-194906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:28:56.552 [DEBUG] [Thread-194907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:28:58.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:28:58.265 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:28:58.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:28:59.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 28, 45), 23.05, 21.11, 0.0, 30.67, 20.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:28:59.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:28:45
2025-11-24T18:28:59.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:28:59.487 [DEBUG] [Thread-194908] [transport.py] [_log()] starting thread (client mode): 0xd31612d0
2025-11-24T18:28:59.487 [DEBUG] [Thread-194908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:28:59.506 [DEBUG] [Thread-194908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:28:59.507 [INFO] [Thread-194908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:28:59.510 [DEBUG] [Thread-194908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:28:59.510 [DEBUG] [Thread-194908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:28:59.510 [DEBUG] [Thread-194908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:28:59.510 [DEBUG] [Thread-194908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:28:59.510 [DEBUG] [Thread-194908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:28:59.510 [DEBUG] [Thread-194908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:28:59.510 [DEBUG] [Thread-194908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:28:59.510 [DEBUG] [Thread-194908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] client lang: <none>
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] server lang: <none>
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] kex follows: False
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] Compression: none
2025-11-24T18:28:59.511 [DEBUG] [Thread-194908] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:28:59.534 [DEBUG] [Thread-194908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:28:59.536 [DEBUG] [Thread-194908] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:28:59.537 [DEBUG] [Thread-194908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:28:59.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:28:59.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:28:59.541 [DEBUG] [Thread-194908] [transport.py] [_log()] userauth is OK
2025-11-24T18:28:59.541 [DEBUG] [Thread-194908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:28:59.541 [DEBUG] [Thread-194908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:28:59.541 [DEBUG] [Thread-194908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:28:59.542 [DEBUG] [Thread-194908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:28:59.566 [INFO] [Thread-194908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:28:59.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:29:00.152 [DEBUG] [Thread-194908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:29:00.152 [DEBUG] [Thread-194908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:29:00.152 [DEBUG] [Thread-194908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:29:00.192 [DEBUG] [Thread-194908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:29:00.192 [DEBUG] [Thread-194908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:29:00.194 [DEBUG] [Thread-194908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:29:00.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:29:00.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:29:00.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:29:00.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:29:00.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:29:00.207 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:29:00.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:29:00.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:29:00.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:29:00.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.686162 -999.00  +20.20  24.71     27   +0.60 1 1 1 1 1   887    0 18.08 -38.28 ----- 25.3 24.7 170.0 32.3 22.3 -28.5 22.4 -30.4 23.5 -26.7 23.7 -29.1
2025-11-24T18:29:00.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:29:00.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:29:00.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.686162
2025-11-24T18:29:00.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:29:00.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:29:00.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:29:00.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:29:00.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:29:00.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:28:45', tmtdew=23.05, humidity=21.11, cloud=0.0, wind=30.67, temperature=20.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:28:04.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:29:00.210 [DEBUG] [Thread-194908] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:29:00.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:29:00.301 [DEBUG] [Thread-194911] [transport.py] [_log()] starting thread (client mode): 0xd0701180
2025-11-24T18:29:00.301 [DEBUG] [Thread-194911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:29:00.318 [DEBUG] [Thread-194911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:29:00.318 [INFO] [Thread-194911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] client lang: <none>
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] server lang: <none>
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] kex follows: False
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] Compression: none
2025-11-24T18:29:00.325 [DEBUG] [Thread-194911] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:29:00.382 [DEBUG] [Thread-194911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:29:00.382 [DEBUG] [Thread-194911] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:29:00.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:29:00.383 [DEBUG] [Thread-194911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:29:00.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:29:00.438 [DEBUG] [Thread-194911] [transport.py] [_log()] userauth is OK
2025-11-24T18:29:00.438 [DEBUG] [Thread-194911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:29:00.438 [DEBUG] [Thread-194911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:29:00.438 [DEBUG] [Thread-194911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:29:00.439 [DEBUG] [Thread-194911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:29:00.462 [INFO] [Thread-194911] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:29:00.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:29:00.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:29:01.343 [DEBUG] [Thread-194911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:29:01.344 [DEBUG] [Thread-194911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:29:01.392 [DEBUG] [Thread-194911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:29:01.392 [DEBUG] [Thread-194911] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:29:01.401 [DEBUG] [Thread-194911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:29:01.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:29:01.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-11-24T18:29:01.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-11-24T18:29:01.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:29:01.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:29:01.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:29:01.436 [DEBUG] [Thread-194911] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:29:11.601 [DEBUG] [Thread-194913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:29:14.287 [DEBUG] [Thread-194914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:29:26.676 [DEBUG] [Thread-194915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:29:31.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:29:31.472 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:29:31.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-11-24T18:29:32.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 29, 17), 23.08, 21.05, 0.0, 28.67, 20.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:29:32.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:29:17
2025-11-24T18:29:32.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:29:32.603 [DEBUG] [Thread-194916] [transport.py] [_log()] starting thread (client mode): 0xd07005b0
2025-11-24T18:29:32.604 [DEBUG] [Thread-194916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:29:32.618 [DEBUG] [Thread-194916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:29:32.618 [INFO] [Thread-194916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:29:32.621 [DEBUG] [Thread-194916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] client lang: <none>
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] server lang: <none>
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] kex follows: False
2025-11-24T18:29:32.622 [DEBUG] [Thread-194916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:29:32.623 [DEBUG] [Thread-194916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:29:32.623 [DEBUG] [Thread-194916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:29:32.623 [DEBUG] [Thread-194916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:29:32.623 [DEBUG] [Thread-194916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:29:32.624 [DEBUG] [Thread-194916] [transport.py] [_log()] Compression: none
2025-11-24T18:29:32.624 [DEBUG] [Thread-194916] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:29:32.649 [DEBUG] [Thread-194916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:29:32.653 [DEBUG] [Thread-194916] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:29:32.655 [DEBUG] [Thread-194916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:29:32.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:29:32.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:29:32.693 [DEBUG] [Thread-194916] [transport.py] [_log()] userauth is OK
2025-11-24T18:29:32.694 [DEBUG] [Thread-194916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:29:32.694 [DEBUG] [Thread-194916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:29:32.694 [DEBUG] [Thread-194916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:29:32.694 [DEBUG] [Thread-194916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:29:32.720 [INFO] [Thread-194916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:29:32.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:29:33.311 [DEBUG] [Thread-194916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:29:33.311 [DEBUG] [Thread-194916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:29:33.312 [DEBUG] [Thread-194916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:29:33.343 [DEBUG] [Thread-194916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:29:33.343 [DEBUG] [Thread-194916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:29:33.345 [DEBUG] [Thread-194916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:29:33.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:29:33.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:29:33.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:29:33.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:29:33.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:29:33.359 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:29:33.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:29:33.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:29:33.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:29:33.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.686509 -999.00  +20.10  27.53     26   +0.50 1 1 1 1 1   887    0 19.09 -34.78 ----- 28.2 27.5 172.8 34.5 22.3 -29.0 22.3 -29.3 23.4 -27.2 23.6 -29.2
2025-11-24T18:29:33.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:29:33.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:29:33.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.686509
2025-11-24T18:29:33.366 [DEBUG] [Thread-194916] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:29:33.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:29:33.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:29:33.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:29:33.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:29:33.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:29:33.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:29:17', tmtdew=23.08, humidity=21.05, cloud=0.0, wind=28.67, temperature=20.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:28:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:29:33.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:29:33.463 [DEBUG] [Thread-194919] [transport.py] [_log()] starting thread (client mode): 0xd3162a10
2025-11-24T18:29:33.463 [DEBUG] [Thread-194919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:29:33.480 [DEBUG] [Thread-194919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:29:33.480 [INFO] [Thread-194919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:29:33.487 [DEBUG] [Thread-194919] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] client lang: <none>
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] server lang: <none>
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] kex follows: False
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] Compression: none
2025-11-24T18:29:33.488 [DEBUG] [Thread-194919] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:29:33.545 [DEBUG] [Thread-194919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:29:33.545 [DEBUG] [Thread-194919] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:29:33.545 [DEBUG] [Thread-194919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:29:33.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:29:33.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:29:33.602 [DEBUG] [Thread-194919] [transport.py] [_log()] userauth is OK
2025-11-24T18:29:33.602 [DEBUG] [Thread-194919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:29:33.602 [DEBUG] [Thread-194919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:29:33.602 [DEBUG] [Thread-194919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:29:33.602 [DEBUG] [Thread-194919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:29:33.616 [INFO] [Thread-194919] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:29:33.616 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:29:33.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:29:34.477 [DEBUG] [Thread-194919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:29:34.478 [DEBUG] [Thread-194919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:29:34.524 [DEBUG] [Thread-194919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:29:34.525 [DEBUG] [Thread-194919] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:29:34.535 [DEBUG] [Thread-194919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:29:34.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:29:34.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:29:34.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:29:34.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:29:34.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:29:34.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:29:34.584 [DEBUG] [Thread-194919] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:29:41.723 [DEBUG] [Thread-194921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:29:56.788 [DEBUG] [Thread-194922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:30:04.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:30:04.592 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:30:04.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-11-24T18:30:05.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 29, 50), 22.99, 21.03, 0.0, 32.94, 20.32, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:30:05.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:29:50
2025-11-24T18:30:06.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:30:06.253 [DEBUG] [Thread-194923] [transport.py] [_log()] starting thread (client mode): 0xd31ed720
2025-11-24T18:30:06.253 [DEBUG] [Thread-194923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:30:06.272 [DEBUG] [Thread-194923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:30:06.272 [INFO] [Thread-194923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:30:06.275 [DEBUG] [Thread-194923] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:30:06.275 [DEBUG] [Thread-194923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:30:06.275 [DEBUG] [Thread-194923] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:30:06.275 [DEBUG] [Thread-194923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:30:06.275 [DEBUG] [Thread-194923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:30:06.275 [DEBUG] [Thread-194923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:30:06.275 [DEBUG] [Thread-194923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:30:06.275 [DEBUG] [Thread-194923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:30:06.275 [DEBUG] [Thread-194923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:30:06.276 [DEBUG] [Thread-194923] [transport.py] [_log()] client lang: <none>
2025-11-24T18:30:06.276 [DEBUG] [Thread-194923] [transport.py] [_log()] server lang: <none>
2025-11-24T18:30:06.276 [DEBUG] [Thread-194923] [transport.py] [_log()] kex follows: False
2025-11-24T18:30:06.276 [DEBUG] [Thread-194923] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:30:06.276 [DEBUG] [Thread-194923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:30:06.276 [DEBUG] [Thread-194923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:30:06.276 [DEBUG] [Thread-194923] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:30:06.276 [DEBUG] [Thread-194923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:30:06.276 [DEBUG] [Thread-194923] [transport.py] [_log()] Compression: none
2025-11-24T18:30:06.276 [DEBUG] [Thread-194923] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:30:06.291 [DEBUG] [Thread-194923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:30:06.292 [DEBUG] [Thread-194923] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:30:06.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:30:06.294 [DEBUG] [Thread-194923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:30:06.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:30:06.296 [DEBUG] [Thread-194923] [transport.py] [_log()] userauth is OK
2025-11-24T18:30:06.296 [DEBUG] [Thread-194923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:30:06.297 [DEBUG] [Thread-194923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:30:06.297 [DEBUG] [Thread-194923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:30:06.297 [DEBUG] [Thread-194923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:30:06.319 [INFO] [Thread-194923] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:30:06.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:30:08.958 [DEBUG] [Thread-194923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:30:08.958 [DEBUG] [Thread-194923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:30:08.959 [DEBUG] [Thread-194923] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:30:08.999 [DEBUG] [Thread-194923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:30:08.999 [DEBUG] [Thread-194923] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:30:09.003 [DEBUG] [Thread-194923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:30:09.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:30:09.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:30:09.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:30:09.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:30:09.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:30:09.022 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:30:09.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:30:09.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:30:09.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:30:09.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.687204 -999.00  +19.90  29.25     27   +0.60 1 1 1 1 1   887    0 18.51 -34.13 ----- 26.3 29.2 179.2 34.3 22.1 -29.1 22.2 -29.3 23.2 -27.6 23.4 -29.5
2025-11-24T18:30:09.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:30:09.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:30:09.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.687204
2025-11-24T18:30:09.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:30:09.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:30:09.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:30:09.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:30:09.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:30:09.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:29:50', tmtdew=22.99, humidity=21.03, cloud=0.0, wind=32.94, temperature=20.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:29:34.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:30:09.029 [DEBUG] [Thread-194923] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:30:09.112 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:30:09.124 [DEBUG] [Thread-194926] [transport.py] [_log()] starting thread (client mode): 0xd3163fd0
2025-11-24T18:30:09.125 [DEBUG] [Thread-194926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:30:09.140 [DEBUG] [Thread-194926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:30:09.140 [INFO] [Thread-194926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:30:09.147 [DEBUG] [Thread-194926] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:30:09.147 [DEBUG] [Thread-194926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:30:09.148 [DEBUG] [Thread-194926] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:30:09.148 [DEBUG] [Thread-194926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:30:09.148 [DEBUG] [Thread-194926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:30:09.148 [DEBUG] [Thread-194926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:30:09.148 [DEBUG] [Thread-194926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:30:09.148 [DEBUG] [Thread-194926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:30:09.148 [DEBUG] [Thread-194926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:30:09.148 [DEBUG] [Thread-194926] [transport.py] [_log()] client lang: <none>
2025-11-24T18:30:09.149 [DEBUG] [Thread-194926] [transport.py] [_log()] server lang: <none>
2025-11-24T18:30:09.149 [DEBUG] [Thread-194926] [transport.py] [_log()] kex follows: False
2025-11-24T18:30:09.149 [DEBUG] [Thread-194926] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:30:09.149 [DEBUG] [Thread-194926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:30:09.149 [DEBUG] [Thread-194926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:30:09.149 [DEBUG] [Thread-194926] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:30:09.149 [DEBUG] [Thread-194926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:30:09.149 [DEBUG] [Thread-194926] [transport.py] [_log()] Compression: none
2025-11-24T18:30:09.149 [DEBUG] [Thread-194926] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:30:09.207 [DEBUG] [Thread-194926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:30:09.207 [DEBUG] [Thread-194926] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:30:09.208 [DEBUG] [Thread-194926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:30:09.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:30:09.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:30:09.263 [DEBUG] [Thread-194926] [transport.py] [_log()] userauth is OK
2025-11-24T18:30:09.263 [DEBUG] [Thread-194926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:30:09.263 [DEBUG] [Thread-194926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:30:09.263 [DEBUG] [Thread-194926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:30:09.263 [DEBUG] [Thread-194926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:30:09.288 [INFO] [Thread-194926] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:30:09.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:30:09.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:30:10.129 [DEBUG] [Thread-194926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:30:10.129 [DEBUG] [Thread-194926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:30:10.177 [DEBUG] [Thread-194926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:30:10.177 [DEBUG] [Thread-194926] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:30:10.186 [DEBUG] [Thread-194926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:30:10.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:30:10.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-11-24T18:30:10.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-11-24T18:30:10.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:30:10.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:30:10.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:30:10.221 [DEBUG] [Thread-194926] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:30:11.853 [DEBUG] [Thread-194928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:30:14.578 [DEBUG] [Thread-194929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:30:26.949 [DEBUG] [Thread-194930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:30:40.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:30:40.268 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:30:40.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-11-24T18:30:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 30, 22), 22.9, 21.15, 0.0, 32.29, 20.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:30:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:30:22
2025-11-24T18:30:41.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:30:41.421 [DEBUG] [Thread-194931] [transport.py] [_log()] starting thread (client mode): 0xd07bf790
2025-11-24T18:30:41.422 [DEBUG] [Thread-194931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:30:41.423 [DEBUG] [Thread-194931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:30:41.423 [INFO] [Thread-194931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] client lang: <none>
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] server lang: <none>
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] kex follows: False
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:30:41.427 [DEBUG] [Thread-194931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:30:41.428 [DEBUG] [Thread-194931] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:30:41.428 [DEBUG] [Thread-194931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:30:41.428 [DEBUG] [Thread-194931] [transport.py] [_log()] Compression: none
2025-11-24T18:30:41.428 [DEBUG] [Thread-194931] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:30:41.458 [DEBUG] [Thread-194931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:30:41.461 [DEBUG] [Thread-194931] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:30:41.462 [DEBUG] [Thread-194931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:30:41.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:30:41.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:30:41.464 [DEBUG] [Thread-194931] [transport.py] [_log()] userauth is OK
2025-11-24T18:30:41.464 [DEBUG] [Thread-194931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:30:41.464 [DEBUG] [Thread-194931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:30:41.464 [DEBUG] [Thread-194931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:30:41.464 [DEBUG] [Thread-194931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:30:41.482 [INFO] [Thread-194931] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:30:41.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:30:41.997 [DEBUG] [Thread-194933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:30:42.071 [DEBUG] [Thread-194931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:30:42.071 [DEBUG] [Thread-194931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:30:42.072 [DEBUG] [Thread-194931] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:30:42.112 [DEBUG] [Thread-194931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:30:42.112 [DEBUG] [Thread-194931] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:30:42.115 [DEBUG] [Thread-194931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:30:42.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:30:42.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:30:42.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:30:42.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:30:42.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:30:42.133 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:30:42.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:30:42.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:30:42.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:30:42.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.687204 -999.00  +19.90  29.25     27   +0.60 1 1 1 1 1   887    0 18.51 -34.13 ----- 26.3 29.2 179.2 34.3 22.1 -29.1 22.2 -29.3 23.2 -27.6 23.4 -29.5
2025-11-24T18:30:42.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:30:42.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:30:42.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.687204
2025-11-24T18:30:42.140 [DEBUG] [Thread-194931] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:30:42.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:30:42.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:30:42.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:30:42.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:30:42.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:30:42.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:30:22', tmtdew=22.9, humidity=21.15, cloud=0.0, wind=32.29, temperature=20.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:29:34.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:30:42.229 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:30:42.239 [DEBUG] [Thread-194935] [transport.py] [_log()] starting thread (client mode): 0xd0701c00
2025-11-24T18:30:42.239 [DEBUG] [Thread-194935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:30:42.254 [DEBUG] [Thread-194935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:30:42.254 [INFO] [Thread-194935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:30:42.262 [DEBUG] [Thread-194935] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:30:42.262 [DEBUG] [Thread-194935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:30:42.262 [DEBUG] [Thread-194935] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:30:42.262 [DEBUG] [Thread-194935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:30:42.262 [DEBUG] [Thread-194935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:30:42.262 [DEBUG] [Thread-194935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:30:42.262 [DEBUG] [Thread-194935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:30:42.262 [DEBUG] [Thread-194935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:30:42.262 [DEBUG] [Thread-194935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:30:42.263 [DEBUG] [Thread-194935] [transport.py] [_log()] client lang: <none>
2025-11-24T18:30:42.263 [DEBUG] [Thread-194935] [transport.py] [_log()] server lang: <none>
2025-11-24T18:30:42.263 [DEBUG] [Thread-194935] [transport.py] [_log()] kex follows: False
2025-11-24T18:30:42.263 [DEBUG] [Thread-194935] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:30:42.263 [DEBUG] [Thread-194935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:30:42.263 [DEBUG] [Thread-194935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:30:42.263 [DEBUG] [Thread-194935] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:30:42.272 [DEBUG] [Thread-194935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:30:42.272 [DEBUG] [Thread-194935] [transport.py] [_log()] Compression: none
2025-11-24T18:30:42.272 [DEBUG] [Thread-194935] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:30:42.318 [DEBUG] [Thread-194935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:30:42.319 [DEBUG] [Thread-194935] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:30:42.319 [DEBUG] [Thread-194935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:30:42.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:30:42.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:30:42.375 [DEBUG] [Thread-194935] [transport.py] [_log()] userauth is OK
2025-11-24T18:30:42.375 [DEBUG] [Thread-194935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:30:42.375 [DEBUG] [Thread-194935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:30:42.375 [DEBUG] [Thread-194935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:30:42.375 [DEBUG] [Thread-194935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:30:42.394 [INFO] [Thread-194935] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:30:42.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:30:42.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:30:43.232 [DEBUG] [Thread-194935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:30:43.232 [DEBUG] [Thread-194935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:30:43.280 [DEBUG] [Thread-194935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:30:43.280 [DEBUG] [Thread-194935] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:30:43.289 [DEBUG] [Thread-194935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:30:43.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:30:43.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-11-24T18:30:43.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-11-24T18:30:43.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:30:43.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:30:43.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:30:43.328 [DEBUG] [Thread-194935] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:30:57.044 [DEBUG] [Thread-194937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:31:12.131 [DEBUG] [Thread-194938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:31:13.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:31:13.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:31:13.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-11-24T18:31:14.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 30, 56), 22.63, 21.31, 0.0, 32.55, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:31:14.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:30:56
2025-11-24T18:31:14.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:31:14.482 [DEBUG] [Thread-194939] [transport.py] [_log()] starting thread (client mode): 0xc9b80eb0
2025-11-24T18:31:14.482 [DEBUG] [Thread-194939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:31:14.499 [DEBUG] [Thread-194939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:31:14.499 [INFO] [Thread-194939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] client lang: <none>
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] server lang: <none>
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] kex follows: False
2025-11-24T18:31:14.502 [DEBUG] [Thread-194939] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:31:14.503 [DEBUG] [Thread-194939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:31:14.503 [DEBUG] [Thread-194939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:31:14.503 [DEBUG] [Thread-194939] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:31:14.503 [DEBUG] [Thread-194939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:31:14.503 [DEBUG] [Thread-194939] [transport.py] [_log()] Compression: none
2025-11-24T18:31:14.503 [DEBUG] [Thread-194939] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:31:14.523 [DEBUG] [Thread-194939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:31:14.525 [DEBUG] [Thread-194939] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:31:14.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:31:14.527 [DEBUG] [Thread-194939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:31:14.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:31:14.568 [DEBUG] [Thread-194939] [transport.py] [_log()] userauth is OK
2025-11-24T18:31:14.569 [DEBUG] [Thread-194939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:31:14.569 [DEBUG] [Thread-194939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:31:14.569 [DEBUG] [Thread-194939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:31:14.569 [DEBUG] [Thread-194939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:31:14.596 [INFO] [Thread-194939] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:31:14.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:31:14.806 [DEBUG] [Thread-194941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:31:15.248 [DEBUG] [Thread-194939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:31:15.249 [DEBUG] [Thread-194939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:31:15.250 [DEBUG] [Thread-194939] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:31:15.289 [DEBUG] [Thread-194939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:31:15.289 [DEBUG] [Thread-194939] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:31:15.292 [DEBUG] [Thread-194939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:31:15.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:31:15.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:31:15.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:31:15.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:31:15.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:31:15.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:31:15.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:31:15.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:31:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:31:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.687898 -999.00  +19.90  22.56     27   +0.70 1 1 1 1 1   887    0 18.66 -36.65 ----- 23.4 22.6 181.4 35.6 22.1 -28.9 22.1 -29.8 23.2 -27.3 23.3 -29.0
2025-11-24T18:31:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:31:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:31:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.687898
2025-11-24T18:31:15.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:31:15.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:31:15.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:31:15.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:31:15.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:31:15.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:30:56', tmtdew=22.63, humidity=21.31, cloud=0.0, wind=32.55, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:30:34.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:31:15.317 [DEBUG] [Thread-194939] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:31:15.391 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:31:15.403 [DEBUG] [Thread-194943] [transport.py] [_log()] starting thread (client mode): 0xd3162e90
2025-11-24T18:31:15.403 [DEBUG] [Thread-194943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:31:15.416 [DEBUG] [Thread-194943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:31:15.416 [INFO] [Thread-194943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:31:15.424 [DEBUG] [Thread-194943] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:31:15.424 [DEBUG] [Thread-194943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:31:15.424 [DEBUG] [Thread-194943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:31:15.424 [DEBUG] [Thread-194943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:31:15.424 [DEBUG] [Thread-194943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] client lang: <none>
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] server lang: <none>
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] kex follows: False
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] Compression: none
2025-11-24T18:31:15.425 [DEBUG] [Thread-194943] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:31:15.492 [DEBUG] [Thread-194943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:31:15.493 [DEBUG] [Thread-194943] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:31:15.493 [DEBUG] [Thread-194943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:31:15.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:31:15.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:31:15.551 [DEBUG] [Thread-194943] [transport.py] [_log()] userauth is OK
2025-11-24T18:31:15.551 [DEBUG] [Thread-194943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:31:15.552 [DEBUG] [Thread-194943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:31:15.552 [DEBUG] [Thread-194943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:31:15.552 [DEBUG] [Thread-194943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:31:15.571 [INFO] [Thread-194943] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:31:15.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:31:15.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:31:16.415 [DEBUG] [Thread-194943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:31:16.415 [DEBUG] [Thread-194943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:31:16.463 [DEBUG] [Thread-194943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:31:16.463 [DEBUG] [Thread-194943] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:31:16.471 [DEBUG] [Thread-194943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:31:16.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:31:16.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-11-24T18:31:16.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-11-24T18:31:16.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:31:16.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:31:16.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:31:16.511 [DEBUG] [Thread-194943] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:31:27.168 [DEBUG] [Thread-194945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:31:42.264 [DEBUG] [Thread-194946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:31:46.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:31:46.516 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:31:46.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:31:47.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 31, 28), 22.51, 21.48, 0.0, 31.81, 20.07, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:31:47.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:31:28
2025-11-24T18:31:47.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:31:47.712 [DEBUG] [Thread-194947] [transport.py] [_log()] starting thread (client mode): 0xd07bc190
2025-11-24T18:31:47.712 [DEBUG] [Thread-194947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:31:47.731 [DEBUG] [Thread-194947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:31:47.731 [INFO] [Thread-194947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:31:47.734 [DEBUG] [Thread-194947] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:31:47.734 [DEBUG] [Thread-194947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] client lang: <none>
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] server lang: <none>
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] kex follows: False
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] Compression: none
2025-11-24T18:31:47.735 [DEBUG] [Thread-194947] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:31:47.749 [DEBUG] [Thread-194947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:31:47.749 [DEBUG] [Thread-194947] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:31:47.750 [DEBUG] [Thread-194947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:31:47.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:31:47.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:31:47.792 [DEBUG] [Thread-194947] [transport.py] [_log()] userauth is OK
2025-11-24T18:31:47.793 [DEBUG] [Thread-194947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:31:47.793 [DEBUG] [Thread-194947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:31:47.793 [DEBUG] [Thread-194947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:31:47.793 [DEBUG] [Thread-194947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:31:47.808 [INFO] [Thread-194947] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:31:47.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:31:48.424 [DEBUG] [Thread-194947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:31:48.424 [DEBUG] [Thread-194947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:31:48.425 [DEBUG] [Thread-194947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:31:48.465 [DEBUG] [Thread-194947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:31:48.465 [DEBUG] [Thread-194947] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:31:48.467 [DEBUG] [Thread-194947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:31:48.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:31:48.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:31:48.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:31:48.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:31:48.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:31:48.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:31:48.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:31:48.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:31:48.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:31:48.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.688245 -999.00  +19.90  30.96     27   +0.80 1 1 2 1 1   887    0 18.19 -39.58 ----- 27.9 31.0 189.0 33.7 22.1 -28.6 22.1 -29.1 23.1 -27.5 23.3 -29.4
2025-11-24T18:31:48.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:31:48.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:31:48.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.688245
2025-11-24T18:31:48.494 [DEBUG] [Thread-194947] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:31:48.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:31:48.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:31:48.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:31:48.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:31:48.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:31:48.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:31:28', tmtdew=22.51, humidity=21.48, cloud=0.0, wind=31.81, temperature=20.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:31:04.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:31:48.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:31:48.595 [DEBUG] [Thread-194950] [transport.py] [_log()] starting thread (client mode): 0xc9b81570
2025-11-24T18:31:48.595 [DEBUG] [Thread-194950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:31:48.610 [DEBUG] [Thread-194950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:31:48.610 [INFO] [Thread-194950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] client lang: <none>
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] server lang: <none>
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] kex follows: False
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] Compression: none
2025-11-24T18:31:48.618 [DEBUG] [Thread-194950] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:31:48.673 [DEBUG] [Thread-194950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:31:48.673 [DEBUG] [Thread-194950] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:31:48.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:31:48.674 [DEBUG] [Thread-194950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:31:48.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:31:48.730 [DEBUG] [Thread-194950] [transport.py] [_log()] userauth is OK
2025-11-24T18:31:48.730 [DEBUG] [Thread-194950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:31:48.730 [DEBUG] [Thread-194950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:31:48.730 [DEBUG] [Thread-194950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:31:48.730 [DEBUG] [Thread-194950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:31:48.745 [INFO] [Thread-194950] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:31:48.745 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:31:48.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:31:49.656 [DEBUG] [Thread-194950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:31:49.656 [DEBUG] [Thread-194950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:31:49.704 [DEBUG] [Thread-194950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:31:49.704 [DEBUG] [Thread-194950] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:31:49.712 [DEBUG] [Thread-194950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:31:49.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:31:49.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-11-24T18:31:49.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-11-24T18:31:49.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:31:49.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:31:49.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:31:49.745 [DEBUG] [Thread-194950] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:31:57.295 [DEBUG] [Thread-194952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:32:12.371 [DEBUG] [Thread-194953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:32:15.052 [DEBUG] [Thread-194954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:32:19.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:32:19.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:32:19.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-11-24T18:32:20.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 32, 1), 22.56, 21.43, 0.0, 31.44, 20.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:32:20.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:32:01
2025-11-24T18:32:20.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:32:21.031 [DEBUG] [Thread-194955] [transport.py] [_log()] starting thread (client mode): 0xd07be290
2025-11-24T18:32:21.031 [DEBUG] [Thread-194955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:32:21.053 [DEBUG] [Thread-194955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:32:21.053 [INFO] [Thread-194955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:32:21.056 [DEBUG] [Thread-194955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:32:21.056 [DEBUG] [Thread-194955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] client lang: <none>
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] server lang: <none>
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] kex follows: False
2025-11-24T18:32:21.057 [DEBUG] [Thread-194955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:32:21.058 [DEBUG] [Thread-194955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:32:21.058 [DEBUG] [Thread-194955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:32:21.058 [DEBUG] [Thread-194955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:32:21.058 [DEBUG] [Thread-194955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:32:21.058 [DEBUG] [Thread-194955] [transport.py] [_log()] Compression: none
2025-11-24T18:32:21.058 [DEBUG] [Thread-194955] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:32:21.083 [DEBUG] [Thread-194955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:32:21.086 [DEBUG] [Thread-194955] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:32:21.088 [DEBUG] [Thread-194955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:32:21.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:32:21.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:32:21.093 [DEBUG] [Thread-194955] [transport.py] [_log()] userauth is OK
2025-11-24T18:32:21.093 [DEBUG] [Thread-194955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:32:21.093 [DEBUG] [Thread-194955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:32:21.094 [DEBUG] [Thread-194955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:32:21.094 [DEBUG] [Thread-194955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:32:21.122 [INFO] [Thread-194955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:32:21.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:32:21.687 [DEBUG] [Thread-194955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:32:21.687 [DEBUG] [Thread-194955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:32:21.697 [DEBUG] [Thread-194955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:32:21.727 [DEBUG] [Thread-194955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:32:21.728 [DEBUG] [Thread-194955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:32:21.731 [DEBUG] [Thread-194955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:32:21.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:32:21.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:32:21.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:32:21.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:32:21.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:32:21.757 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:32:21.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:32:21.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:32:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:32:21.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.688593 -999.00  +19.90  18.62     27   +0.80 1 1 1 1 1   887    0 18.78 -39.26 ----- 14.9 18.6 190.4 31.0 22.0 -28.7 22.1 -28.4 23.1 -26.7 23.2 -28.2
2025-11-24T18:32:21.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:32:21.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:32:21.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.688593
2025-11-24T18:32:21.765 [DEBUG] [Thread-194955] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:32:21.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:32:21.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:32:21.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:32:21.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:32:21.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:32:21.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:32:01', tmtdew=22.56, humidity=21.43, cloud=0.0, wind=31.44, temperature=20.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:31:34.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:32:21.864 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:32:21.877 [DEBUG] [Thread-194958] [transport.py] [_log()] starting thread (client mode): 0xd07032e0
2025-11-24T18:32:21.877 [DEBUG] [Thread-194958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:32:21.892 [DEBUG] [Thread-194958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:32:21.893 [INFO] [Thread-194958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:32:21.900 [DEBUG] [Thread-194958] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:32:21.900 [DEBUG] [Thread-194958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:32:21.900 [DEBUG] [Thread-194958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:32:21.900 [DEBUG] [Thread-194958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:32:21.900 [DEBUG] [Thread-194958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:32:21.900 [DEBUG] [Thread-194958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:32:21.900 [DEBUG] [Thread-194958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:32:21.900 [DEBUG] [Thread-194958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:32:21.900 [DEBUG] [Thread-194958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:32:21.900 [DEBUG] [Thread-194958] [transport.py] [_log()] client lang: <none>
2025-11-24T18:32:21.901 [DEBUG] [Thread-194958] [transport.py] [_log()] server lang: <none>
2025-11-24T18:32:21.901 [DEBUG] [Thread-194958] [transport.py] [_log()] kex follows: False
2025-11-24T18:32:21.901 [DEBUG] [Thread-194958] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:32:21.901 [DEBUG] [Thread-194958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:32:21.901 [DEBUG] [Thread-194958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:32:21.901 [DEBUG] [Thread-194958] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:32:21.901 [DEBUG] [Thread-194958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:32:21.901 [DEBUG] [Thread-194958] [transport.py] [_log()] Compression: none
2025-11-24T18:32:21.901 [DEBUG] [Thread-194958] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:32:21.958 [DEBUG] [Thread-194958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:32:21.959 [DEBUG] [Thread-194958] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:32:21.959 [DEBUG] [Thread-194958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:32:21.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:32:21.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:32:22.015 [DEBUG] [Thread-194958] [transport.py] [_log()] userauth is OK
2025-11-24T18:32:22.015 [DEBUG] [Thread-194958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:32:22.015 [DEBUG] [Thread-194958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:32:22.015 [DEBUG] [Thread-194958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:32:22.015 [DEBUG] [Thread-194958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:32:22.034 [INFO] [Thread-194958] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:32:22.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:32:22.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:32:22.852 [DEBUG] [Thread-194958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:32:22.853 [DEBUG] [Thread-194958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:32:22.900 [DEBUG] [Thread-194958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:32:22.901 [DEBUG] [Thread-194958] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:32:22.910 [DEBUG] [Thread-194958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:32:22.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:32:22.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-11-24T18:32: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') -> 00000000
2025-11-24T18:32:22.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:32:22.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:32:22.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:32:22.958 [DEBUG] [Thread-194958] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:32:27.406 [DEBUG] [Thread-194960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:32:42.492 [DEBUG] [Thread-194961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:32:52.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:32:52.984 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:32:53.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-11-24T18:32:54.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 32, 34), 22.5, 21.93, 0.0, 29.63, 20.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:32:54.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:32:34
2025-11-24T18:32:54.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:32:54.363 [DEBUG] [Thread-194962] [transport.py] [_log()] starting thread (client mode): 0xd0739c60
2025-11-24T18:32:54.364 [DEBUG] [Thread-194962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:32:54.377 [DEBUG] [Thread-194962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:32:54.377 [INFO] [Thread-194962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] client lang: <none>
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] server lang: <none>
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] kex follows: False
2025-11-24T18:32:54.382 [DEBUG] [Thread-194962] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:32:54.383 [DEBUG] [Thread-194962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:32:54.383 [DEBUG] [Thread-194962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:32:54.383 [DEBUG] [Thread-194962] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:32:54.383 [DEBUG] [Thread-194962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:32:54.384 [DEBUG] [Thread-194962] [transport.py] [_log()] Compression: none
2025-11-24T18:32:54.384 [DEBUG] [Thread-194962] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:32:54.418 [DEBUG] [Thread-194962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:32:54.424 [DEBUG] [Thread-194962] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:32:54.425 [DEBUG] [Thread-194962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:32:54.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:32:54.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:32:54.431 [DEBUG] [Thread-194962] [transport.py] [_log()] userauth is OK
2025-11-24T18:32:54.431 [DEBUG] [Thread-194962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:32:54.431 [DEBUG] [Thread-194962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:32:54.431 [DEBUG] [Thread-194962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:32:54.431 [DEBUG] [Thread-194962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:32:54.464 [INFO] [Thread-194962] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:32:54.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:32:55.059 [DEBUG] [Thread-194962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:32:55.059 [DEBUG] [Thread-194962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:32:55.061 [DEBUG] [Thread-194962] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:32:55.100 [DEBUG] [Thread-194962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:32:55.100 [DEBUG] [Thread-194962] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:32:55.104 [DEBUG] [Thread-194962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:32:55.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:32:55.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:32:55.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:32:55.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:32:55.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:32:55.122 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:32:55.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:32:55.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:32:55.124 [DEBUG] [Thread-194962] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:32:55.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:32:55.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.688940 -999.00  +19.90  19.97     27   +0.70 1 1 1 1 1   887    0 18.35 -39.60 ----- 21.6 20.0 182.6 27.2 22.0 -28.5 22.1 -29.4 23.1 -26.6 23.3 -29.4
2025-11-24T18:32:55.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:32:55.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:32:55.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.688940
2025-11-24T18:32:55.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:32:55.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:32:55.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:32:55.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:32:55.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:32:55.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:32:34', tmtdew=22.5, humidity=21.93, cloud=0.0, wind=29.63, temperature=20.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:32:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:32:55.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:32:55.264 [DEBUG] [Thread-194965] [transport.py] [_log()] starting thread (client mode): 0xd07385b0
2025-11-24T18:32:55.264 [DEBUG] [Thread-194965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:32:55.280 [DEBUG] [Thread-194965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:32:55.280 [INFO] [Thread-194965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:32:55.288 [DEBUG] [Thread-194965] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:32:55.288 [DEBUG] [Thread-194965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:32:55.288 [DEBUG] [Thread-194965] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:32:55.288 [DEBUG] [Thread-194965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:32:55.289 [DEBUG] [Thread-194965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:32:55.289 [DEBUG] [Thread-194965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:32:55.289 [DEBUG] [Thread-194965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:32:55.289 [DEBUG] [Thread-194965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:32:55.289 [DEBUG] [Thread-194965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:32:55.289 [DEBUG] [Thread-194965] [transport.py] [_log()] client lang: <none>
2025-11-24T18:32:55.289 [DEBUG] [Thread-194965] [transport.py] [_log()] server lang: <none>
2025-11-24T18:32:55.289 [DEBUG] [Thread-194965] [transport.py] [_log()] kex follows: False
2025-11-24T18:32:55.290 [DEBUG] [Thread-194965] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:32:55.290 [DEBUG] [Thread-194965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:32:55.290 [DEBUG] [Thread-194965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:32:55.290 [DEBUG] [Thread-194965] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:32:55.290 [DEBUG] [Thread-194965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:32:55.291 [DEBUG] [Thread-194965] [transport.py] [_log()] Compression: none
2025-11-24T18:32:55.291 [DEBUG] [Thread-194965] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:32:55.349 [DEBUG] [Thread-194965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:32:55.350 [DEBUG] [Thread-194965] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:32:55.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:32:55.351 [DEBUG] [Thread-194965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:32:55.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:32:55.408 [DEBUG] [Thread-194965] [transport.py] [_log()] userauth is OK
2025-11-24T18:32:55.408 [DEBUG] [Thread-194965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:32:55.408 [DEBUG] [Thread-194965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:32:55.408 [DEBUG] [Thread-194965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:32:55.408 [DEBUG] [Thread-194965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:32:55.428 [INFO] [Thread-194965] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:32:55.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:32:55.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:32:56.267 [DEBUG] [Thread-194965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:32:56.268 [DEBUG] [Thread-194965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:32:56.315 [DEBUG] [Thread-194965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:32:56.316 [DEBUG] [Thread-194965] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:32:56.324 [DEBUG] [Thread-194965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:32:56.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:32:56.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-11-24T18:32:56.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-11-24T18:32:56.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:32:56.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:32:56.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:32:56.360 [DEBUG] [Thread-194965] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:32:57.533 [DEBUG] [Thread-194967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:33:12.624 [DEBUG] [Thread-194968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:33:15.313 [DEBUG] [Thread-194969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:33:26.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:33:26.387 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:33:26.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-11-24T18:33:27.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 33, 6), 22.48, 21.98, 0.0, 33.01, 20.16, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:33:27.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:33:06
2025-11-24T18:33:27.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:33:27.574 [DEBUG] [Thread-194970] [transport.py] [_log()] starting thread (client mode): 0xd07cec50
2025-11-24T18:33:27.575 [DEBUG] [Thread-194970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:33:27.581 [DEBUG] [Thread-194970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:33:27.582 [INFO] [Thread-194970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:33:27.585 [DEBUG] [Thread-194970] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] client lang: <none>
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] server lang: <none>
2025-11-24T18:33:27.586 [DEBUG] [Thread-194970] [transport.py] [_log()] kex follows: False
2025-11-24T18:33:27.587 [DEBUG] [Thread-194970] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:33:27.587 [DEBUG] [Thread-194970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:33:27.587 [DEBUG] [Thread-194970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:33:27.587 [DEBUG] [Thread-194970] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:33:27.587 [DEBUG] [Thread-194970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:33:27.588 [DEBUG] [Thread-194970] [transport.py] [_log()] Compression: none
2025-11-24T18:33:27.588 [DEBUG] [Thread-194970] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:33:27.616 [DEBUG] [Thread-194970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:33:27.621 [DEBUG] [Thread-194970] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:33:27.623 [DEBUG] [Thread-194970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:33:27.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:33:27.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:33:27.628 [DEBUG] [Thread-194970] [transport.py] [_log()] userauth is OK
2025-11-24T18:33:27.628 [DEBUG] [Thread-194970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:33:27.628 [DEBUG] [Thread-194970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:33:27.628 [DEBUG] [Thread-194970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:33:27.628 [DEBUG] [Thread-194970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:33:27.655 [INFO] [Thread-194970] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:33:27.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:33:27.682 [DEBUG] [Thread-194972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:33:28.242 [DEBUG] [Thread-194970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:33:28.242 [DEBUG] [Thread-194970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:33:28.252 [DEBUG] [Thread-194970] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:33:28.283 [DEBUG] [Thread-194970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:33:28.283 [DEBUG] [Thread-194970] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:33:28.287 [DEBUG] [Thread-194970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:33:28.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:33:28.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:33:28.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:33:28.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:33:28.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:33:28.311 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:33:28.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:33:28.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:33:28.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:33:28.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.689287 -999.00  +20.00  26.02     27   +0.70 1 1 1 1 1   887    0 18.29 -37.29 ----- 28.1 26.0 178.8 29.5 21.9 -28.4 22.1 -29.1 23.1 -26.9 23.2 -29.2
2025-11-24T18:33:28.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:33:28.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:33:28.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.689287
2025-11-24T18:33:28.319 [DEBUG] [Thread-194970] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:33:28.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:33:28.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:33:28.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:33:28.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:33:28.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:33:28.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:33:06', tmtdew=22.48, humidity=21.98, cloud=0.0, wind=33.01, temperature=20.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:32:34.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:33:28.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:33:28.438 [DEBUG] [Thread-194974] [transport.py] [_log()] starting thread (client mode): 0xd3134460
2025-11-24T18:33:28.438 [DEBUG] [Thread-194974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:33:28.455 [DEBUG] [Thread-194974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:33:28.455 [INFO] [Thread-194974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:33:28.463 [DEBUG] [Thread-194974] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:33:28.463 [DEBUG] [Thread-194974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:33:28.463 [DEBUG] [Thread-194974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:33:28.463 [DEBUG] [Thread-194974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:33:28.463 [DEBUG] [Thread-194974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] client lang: <none>
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] server lang: <none>
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] kex follows: False
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] Compression: none
2025-11-24T18:33:28.464 [DEBUG] [Thread-194974] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:33:28.527 [DEBUG] [Thread-194974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:33:28.528 [DEBUG] [Thread-194974] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:33:28.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:33:28.529 [DEBUG] [Thread-194974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:33:28.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:33:28.584 [DEBUG] [Thread-194974] [transport.py] [_log()] userauth is OK
2025-11-24T18:33:28.584 [DEBUG] [Thread-194974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:33:28.584 [DEBUG] [Thread-194974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:33:28.584 [DEBUG] [Thread-194974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:33:28.584 [DEBUG] [Thread-194974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:33:28.604 [INFO] [Thread-194974] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:33:28.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:33:28.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:33:29.517 [DEBUG] [Thread-194974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:33:29.517 [DEBUG] [Thread-194974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:33:29.565 [DEBUG] [Thread-194974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:33:29.565 [DEBUG] [Thread-194974] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:33:29.573 [DEBUG] [Thread-194974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:33:29.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:33:29.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-11-24T18:33:29.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-11-24T18:33:29.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:33:29.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:33:29.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:33:29.606 [DEBUG] [Thread-194974] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:33:42.727 [DEBUG] [Thread-194976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:33:57.838 [DEBUG] [Thread-194977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:33:59.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:33:59.620 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:33:59.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-11-24T18:34:00.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 33, 39), 22.38, 22.03, 0.0, 31.81, 20.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:34:00.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:33:39
2025-11-24T18:34:00.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:34:00.723 [DEBUG] [Thread-194978] [transport.py] [_log()] starting thread (client mode): 0xd07cc640
2025-11-24T18:34:00.723 [DEBUG] [Thread-194978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:34:00.739 [DEBUG] [Thread-194978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:34:00.739 [INFO] [Thread-194978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] client lang: <none>
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] server lang: <none>
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] kex follows: False
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:34:00.743 [DEBUG] [Thread-194978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:34:00.744 [DEBUG] [Thread-194978] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:34:00.744 [DEBUG] [Thread-194978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:34:00.744 [DEBUG] [Thread-194978] [transport.py] [_log()] Compression: none
2025-11-24T18:34:00.744 [DEBUG] [Thread-194978] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:34:00.767 [DEBUG] [Thread-194978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:34:00.770 [DEBUG] [Thread-194978] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:34:00.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:34:00.772 [DEBUG] [Thread-194978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:34:00.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:34:00.809 [DEBUG] [Thread-194978] [transport.py] [_log()] userauth is OK
2025-11-24T18:34:00.810 [DEBUG] [Thread-194978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:34:00.810 [DEBUG] [Thread-194978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:34:00.810 [DEBUG] [Thread-194978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:34:00.810 [DEBUG] [Thread-194978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:34:00.838 [INFO] [Thread-194978] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:34:00.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:34:01.414 [DEBUG] [Thread-194978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:34:01.414 [DEBUG] [Thread-194978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:34:01.416 [DEBUG] [Thread-194978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:34:01.455 [DEBUG] [Thread-194978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:34:01.455 [DEBUG] [Thread-194978] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:34:01.458 [DEBUG] [Thread-194978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:34:01.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:34:01.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:34:01.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:34:01.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:34:01.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:34:01.483 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:34:01.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:34:01.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:34:01.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:34:01.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.689981 -999.00  +19.90  21.19     27   +0.80 1 1 1 1 1   887    0 18.57 -36.59 ----- 24.5 21.2 182.0 30.4 21.9 -28.6 22.0 -29.0 23.1 -26.8 23.1 -29.2
2025-11-24T18:34:01.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:34:01.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:34:01.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.689981
2025-11-24T18:34:01.491 [DEBUG] [Thread-194978] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:34:01.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:34:01.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:34:01.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:34:01.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:34:01.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:34:01.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:33:39', tmtdew=22.38, humidity=22.03, cloud=0.0, wind=31.81, temperature=20.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:33:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:34:01.585 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:34:01.597 [DEBUG] [Thread-194981] [transport.py] [_log()] starting thread (client mode): 0xc9b80ca0
2025-11-24T18:34:01.597 [DEBUG] [Thread-194981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:34:01.611 [DEBUG] [Thread-194981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:34:01.611 [INFO] [Thread-194981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:34:01.619 [DEBUG] [Thread-194981] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:34:01.619 [DEBUG] [Thread-194981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:34:01.620 [DEBUG] [Thread-194981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:34:01.620 [DEBUG] [Thread-194981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:34:01.620 [DEBUG] [Thread-194981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:34:01.620 [DEBUG] [Thread-194981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:34:01.620 [DEBUG] [Thread-194981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:34:01.620 [DEBUG] [Thread-194981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:34:01.620 [DEBUG] [Thread-194981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:34:01.621 [DEBUG] [Thread-194981] [transport.py] [_log()] client lang: <none>
2025-11-24T18:34:01.621 [DEBUG] [Thread-194981] [transport.py] [_log()] server lang: <none>
2025-11-24T18:34:01.621 [DEBUG] [Thread-194981] [transport.py] [_log()] kex follows: False
2025-11-24T18:34:01.621 [DEBUG] [Thread-194981] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:34:01.621 [DEBUG] [Thread-194981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:34:01.621 [DEBUG] [Thread-194981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:34:01.621 [DEBUG] [Thread-194981] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:34:01.621 [DEBUG] [Thread-194981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:34:01.621 [DEBUG] [Thread-194981] [transport.py] [_log()] Compression: none
2025-11-24T18:34:01.621 [DEBUG] [Thread-194981] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:34:01.679 [DEBUG] [Thread-194981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:34:01.680 [DEBUG] [Thread-194981] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:34:01.681 [DEBUG] [Thread-194981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:34:01.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:34:01.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:34:01.734 [DEBUG] [Thread-194981] [transport.py] [_log()] userauth is OK
2025-11-24T18:34:01.734 [DEBUG] [Thread-194981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:34:01.734 [DEBUG] [Thread-194981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:34:01.734 [DEBUG] [Thread-194981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:34:01.734 [DEBUG] [Thread-194981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:34:01.748 [INFO] [Thread-194981] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:34:01.748 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:34:01.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:34:02.625 [DEBUG] [Thread-194981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:34:02.625 [DEBUG] [Thread-194981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:34:02.673 [DEBUG] [Thread-194981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:34:02.673 [DEBUG] [Thread-194981] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:34:02.681 [DEBUG] [Thread-194981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:34:02.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:34:02.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-11-24T18:34:02.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-11-24T18:34:02.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:34:02.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:34:02.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:34:02.722 [DEBUG] [Thread-194981] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:34:12.871 [DEBUG] [Thread-194983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:34:15.604 [DEBUG] [Thread-194984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:34:27.924 [DEBUG] [Thread-194985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:34:32.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:34:32.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:34: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-11-24T18:34:33.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 34, 12), 22.38, 22.03, 0.0, 32.4, 19.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:34:33.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:34:12
2025-11-24T18:34:33.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:34:33.777 [DEBUG] [Thread-194986] [transport.py] [_log()] starting thread (client mode): 0xd07cca30
2025-11-24T18:34:33.778 [DEBUG] [Thread-194986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:34:33.790 [DEBUG] [Thread-194986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:34:33.790 [INFO] [Thread-194986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] client lang: <none>
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] server lang: <none>
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] kex follows: False
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:34:33.794 [DEBUG] [Thread-194986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:34:33.795 [DEBUG] [Thread-194986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:34:33.795 [DEBUG] [Thread-194986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:34:33.795 [DEBUG] [Thread-194986] [transport.py] [_log()] Compression: none
2025-11-24T18:34:33.795 [DEBUG] [Thread-194986] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:34:33.827 [DEBUG] [Thread-194986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:34:33.832 [DEBUG] [Thread-194986] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:34:33.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:34:33.836 [DEBUG] [Thread-194986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:34:33.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:34:33.839 [DEBUG] [Thread-194986] [transport.py] [_log()] userauth is OK
2025-11-24T18:34:33.840 [DEBUG] [Thread-194986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:34:33.840 [DEBUG] [Thread-194986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:34:33.840 [DEBUG] [Thread-194986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:34:33.840 [DEBUG] [Thread-194986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:34:33.879 [INFO] [Thread-194986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:34:33.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:34:34.459 [DEBUG] [Thread-194986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:34:34.459 [DEBUG] [Thread-194986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:34:34.461 [DEBUG] [Thread-194986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:34:34.500 [DEBUG] [Thread-194986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:34:34.500 [DEBUG] [Thread-194986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:34:34.503 [DEBUG] [Thread-194986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:34:34.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:34:34.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:34:34.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:34:34.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:34:34.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:34:34.526 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:34:34.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:34:34.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:34:34.528 [DEBUG] [Thread-194986] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:34:34.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:34:34.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.690329 -999.00  +19.90  27.14     27   +0.80 1 1 1 1 1   887    0 18.60 -34.28 ----- 26.2 27.1 179.8 32.8 21.9 -28.6 21.9 -30.2 22.9 -28.1 23.0 -29.6
2025-11-24T18:34:34.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:34:34.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:34:34.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.690329
2025-11-24T18:34:34.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:34:34.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:34:34.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:34:34.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:34:34.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:34:34.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:34:12', tmtdew=22.38, humidity=22.03, cloud=0.0, wind=32.4, temperature=19.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:34:04.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:34:34.637 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:34:34.648 [DEBUG] [Thread-194989] [transport.py] [_log()] starting thread (client mode): 0xd31620b0
2025-11-24T18:34:34.648 [DEBUG] [Thread-194989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:34:34.663 [DEBUG] [Thread-194989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:34:34.663 [INFO] [Thread-194989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:34:34.672 [DEBUG] [Thread-194989] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:34:34.672 [DEBUG] [Thread-194989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:34:34.672 [DEBUG] [Thread-194989] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] client lang: <none>
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] server lang: <none>
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] kex follows: False
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] Compression: none
2025-11-24T18:34:34.673 [DEBUG] [Thread-194989] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:34:34.731 [DEBUG] [Thread-194989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:34:34.732 [DEBUG] [Thread-194989] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:34:34.732 [DEBUG] [Thread-194989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:34:34.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:34:34.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:34:34.787 [DEBUG] [Thread-194989] [transport.py] [_log()] userauth is OK
2025-11-24T18:34:34.787 [DEBUG] [Thread-194989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:34:34.787 [DEBUG] [Thread-194989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:34:34.787 [DEBUG] [Thread-194989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:34:34.787 [DEBUG] [Thread-194989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:34:34.814 [INFO] [Thread-194989] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:34:34.814 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:34:34.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:34:35.633 [DEBUG] [Thread-194989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:34:35.633 [DEBUG] [Thread-194989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:34:35.681 [DEBUG] [Thread-194989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:34:35.681 [DEBUG] [Thread-194989] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:34:35.690 [DEBUG] [Thread-194989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:34:35.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:34:35.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:34:35.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-11-24T18:34:35.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:34:35.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:34:35.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:34:35.725 [DEBUG] [Thread-194989] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:34:42.950 [DEBUG] [Thread-194991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:34:58.038 [DEBUG] [Thread-194992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:35:05.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:35:05.748 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:35:05.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-11-24T18:35:06.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 34, 45), 22.41, 22.06, 0.0, 28.2, 20.07, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:35:06.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:34:45
2025-11-24T18:35:06.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:35:06.975 [DEBUG] [Thread-194993] [transport.py] [_log()] starting thread (client mode): 0xd3134910
2025-11-24T18:35:06.975 [DEBUG] [Thread-194993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:35:06.994 [DEBUG] [Thread-194993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:35:06.994 [INFO] [Thread-194993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] client lang: <none>
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] server lang: <none>
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] kex follows: False
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] Compression: none
2025-11-24T18:35:06.998 [DEBUG] [Thread-194993] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:35:07.014 [DEBUG] [Thread-194993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:35:07.014 [DEBUG] [Thread-194993] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:35:07.014 [DEBUG] [Thread-194993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:35:07.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:35:07.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:35:07.016 [DEBUG] [Thread-194993] [transport.py] [_log()] userauth is OK
2025-11-24T18:35:07.016 [DEBUG] [Thread-194993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:35:07.016 [DEBUG] [Thread-194993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:35:07.016 [DEBUG] [Thread-194993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:35:07.016 [DEBUG] [Thread-194993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:35:07.026 [INFO] [Thread-194993] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:35:07.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:35:10.634 [DEBUG] [Thread-194993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:35:10.634 [DEBUG] [Thread-194993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:35:10.635 [DEBUG] [Thread-194993] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:35:10.675 [DEBUG] [Thread-194993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:35:10.675 [DEBUG] [Thread-194993] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:35:10.679 [DEBUG] [Thread-194993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:35:10.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:35:10.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:35:10.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:35:10.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:35:10.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:35:10.775 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:35:10.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:35:10.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:35:10.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:35:10.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.690329 -999.00  +19.90  27.14     27   +0.80 1 1 1 1 1   887    0 18.60 -34.28 ----- 26.2 27.1 179.8 32.8 21.9 -28.6 21.9 -30.2 22.9 -28.1 23.0 -29.6
2025-11-24T18:35:10.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:35:10.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:35:10.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.690329
2025-11-24T18:35:10.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:35:10.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:35:10.783 [DEBUG] [Thread-194993] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:35:10.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:35:10.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:35:10.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:35:10.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:34:45', tmtdew=22.41, humidity=22.06, cloud=0.0, wind=28.2, temperature=20.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:34:04.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:35:10.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:35:10.869 [DEBUG] [Thread-194996] [transport.py] [_log()] starting thread (client mode): 0xd0786950
2025-11-24T18:35:10.870 [DEBUG] [Thread-194996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:35:10.884 [DEBUG] [Thread-194996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:35:10.884 [INFO] [Thread-194996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] client lang: <none>
2025-11-24T18:35:10.891 [DEBUG] [Thread-194996] [transport.py] [_log()] server lang: <none>
2025-11-24T18:35:10.892 [DEBUG] [Thread-194996] [transport.py] [_log()] kex follows: False
2025-11-24T18:35:10.892 [DEBUG] [Thread-194996] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:35:10.892 [DEBUG] [Thread-194996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:35:10.892 [DEBUG] [Thread-194996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:35:10.892 [DEBUG] [Thread-194996] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:35:10.892 [DEBUG] [Thread-194996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:35:10.892 [DEBUG] [Thread-194996] [transport.py] [_log()] Compression: none
2025-11-24T18:35:10.892 [DEBUG] [Thread-194996] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:35:10.954 [DEBUG] [Thread-194996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:35:10.955 [DEBUG] [Thread-194996] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:35:10.955 [DEBUG] [Thread-194996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:35:10.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:35:10.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:35:11.011 [DEBUG] [Thread-194996] [transport.py] [_log()] userauth is OK
2025-11-24T18:35:11.011 [DEBUG] [Thread-194996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:35:11.011 [DEBUG] [Thread-194996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:35:11.011 [DEBUG] [Thread-194996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:35:11.011 [DEBUG] [Thread-194996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:35:11.026 [INFO] [Thread-194996] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:35:11.027 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:35:11.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:35:11.872 [DEBUG] [Thread-194996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:35:11.872 [DEBUG] [Thread-194996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:35:11.920 [DEBUG] [Thread-194996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:35:11.920 [DEBUG] [Thread-194996] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:35:11.928 [DEBUG] [Thread-194996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:35:11.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:35:11.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-11-24T18:35:11.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-11-24T18:35:11.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:35:11.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:35:11.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:35:11.963 [DEBUG] [Thread-194996] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:35:13.095 [DEBUG] [Thread-194998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:35:15.853 [DEBUG] [Thread-194999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:35:28.194 [DEBUG] [Thread-195000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:35:41.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:35:41.995 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:35:42.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-11-24T18:35:42.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 35, 17), 22.41, 22.04, 0.0, 29.64, 20.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:35:42.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:35:17
2025-11-24T18:35:42.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:35:43.120 [DEBUG] [Thread-195001] [transport.py] [_log()] starting thread (client mode): 0xd07bcbe0
2025-11-24T18:35:43.121 [DEBUG] [Thread-195001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:35:43.138 [DEBUG] [Thread-195001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:35:43.138 [INFO] [Thread-195001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:35:43.141 [DEBUG] [Thread-195001] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:35:43.141 [DEBUG] [Thread-195001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:35:43.141 [DEBUG] [Thread-195001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:35:43.141 [DEBUG] [Thread-195001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:35:43.141 [DEBUG] [Thread-195001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:35:43.141 [DEBUG] [Thread-195001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:35:43.141 [DEBUG] [Thread-195001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] client lang: <none>
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] server lang: <none>
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] kex follows: False
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] Compression: none
2025-11-24T18:35:43.142 [DEBUG] [Thread-195001] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:35:43.163 [DEBUG] [Thread-195001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:35:43.163 [DEBUG] [Thread-195001] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:35:43.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:35:43.164 [DEBUG] [Thread-195001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:35:43.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:35:43.204 [DEBUG] [Thread-195001] [transport.py] [_log()] userauth is OK
2025-11-24T18:35:43.205 [DEBUG] [Thread-195001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:35:43.205 [DEBUG] [Thread-195001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:35:43.205 [DEBUG] [Thread-195001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:35:43.205 [DEBUG] [Thread-195001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:35:43.221 [INFO] [Thread-195001] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:35:43.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:35:43.228 [DEBUG] [Thread-195003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:35:43.848 [DEBUG] [Thread-195001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:35:43.848 [DEBUG] [Thread-195001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:35:43.850 [DEBUG] [Thread-195001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:35:43.888 [DEBUG] [Thread-195001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:35:43.888 [DEBUG] [Thread-195001] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:35:43.892 [DEBUG] [Thread-195001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:35:43.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:35:43.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:35:43.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:35:43.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:35:43.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:35:43.913 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:35:43.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:35:43.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:35:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:35:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.690676 -999.00  +19.80  25.10     28   +0.80 1 1 1 1 1   887    0 18.78 -35.80 ----- 21.5 25.1 182.8 34.2 21.8 -28.8 21.9 -28.1 22.8 -27.0 23.0 -28.9
2025-11-24T18:35:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:35:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:35:43.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.690676
2025-11-24T18:35:43.919 [DEBUG] [Thread-195001] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:35:43.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:35:43.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:35:43.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:35:43.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:35:43.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:35:43.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:35:17', tmtdew=22.41, humidity=22.04, cloud=0.0, wind=29.64, temperature=20.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:34:34.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:35:44.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:35:44.037 [DEBUG] [Thread-195005] [transport.py] [_log()] starting thread (client mode): 0xd3136b30
2025-11-24T18:35:44.037 [DEBUG] [Thread-195005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:35:44.052 [DEBUG] [Thread-195005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:35:44.052 [INFO] [Thread-195005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:35:44.059 [DEBUG] [Thread-195005] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:35:44.059 [DEBUG] [Thread-195005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:35:44.059 [DEBUG] [Thread-195005] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:35:44.060 [DEBUG] [Thread-195005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:35:44.060 [DEBUG] [Thread-195005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:35:44.060 [DEBUG] [Thread-195005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:35:44.060 [DEBUG] [Thread-195005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:35:44.060 [DEBUG] [Thread-195005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:35:44.060 [DEBUG] [Thread-195005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:35:44.060 [DEBUG] [Thread-195005] [transport.py] [_log()] client lang: <none>
2025-11-24T18:35:44.060 [DEBUG] [Thread-195005] [transport.py] [_log()] server lang: <none>
2025-11-24T18:35:44.060 [DEBUG] [Thread-195005] [transport.py] [_log()] kex follows: False
2025-11-24T18:35:44.060 [DEBUG] [Thread-195005] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:35:44.061 [DEBUG] [Thread-195005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:35:44.061 [DEBUG] [Thread-195005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:35:44.061 [DEBUG] [Thread-195005] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:35:44.061 [DEBUG] [Thread-195005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:35:44.061 [DEBUG] [Thread-195005] [transport.py] [_log()] Compression: none
2025-11-24T18:35:44.061 [DEBUG] [Thread-195005] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:35:44.119 [DEBUG] [Thread-195005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:35:44.120 [DEBUG] [Thread-195005] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:35:44.121 [DEBUG] [Thread-195005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:35:44.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:35:44.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:35:44.175 [DEBUG] [Thread-195005] [transport.py] [_log()] userauth is OK
2025-11-24T18:35:44.176 [DEBUG] [Thread-195005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:35:44.176 [DEBUG] [Thread-195005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:35:44.176 [DEBUG] [Thread-195005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:35:44.176 [DEBUG] [Thread-195005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:35:44.195 [INFO] [Thread-195005] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:35:44.196 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:35:44.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:35:45.039 [DEBUG] [Thread-195005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:35:45.039 [DEBUG] [Thread-195005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:35:45.087 [DEBUG] [Thread-195005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:35:45.087 [DEBUG] [Thread-195005] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:35:45.095 [DEBUG] [Thread-195005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:35:45.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:35:45.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-11-24T18:35:45.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-11-24T18:35:45.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:35:45.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:35:45.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:35:45.128 [DEBUG] [Thread-195005] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:35:58.257 [DEBUG] [Thread-195007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:36:13.355 [DEBUG] [Thread-195008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:36:15.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:36:15.152 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:36:15.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-11-24T18:36:16.072 [DEBUG] [Thread-195009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:36:16.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 35, 50), 22.41, 22.06, 0.0, 24.56, 20.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:36:16.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:35:50
2025-11-24T18:36:16.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:36:16.796 [DEBUG] [Thread-195010] [transport.py] [_log()] starting thread (client mode): 0xd31370a0
2025-11-24T18:36:16.797 [DEBUG] [Thread-195010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:36:16.809 [DEBUG] [Thread-195010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:36:16.809 [INFO] [Thread-195010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] client lang: <none>
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] server lang: <none>
2025-11-24T18:36:16.812 [DEBUG] [Thread-195010] [transport.py] [_log()] kex follows: False
2025-11-24T18:36:16.813 [DEBUG] [Thread-195010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:36:16.813 [DEBUG] [Thread-195010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:36:16.813 [DEBUG] [Thread-195010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:36:16.813 [DEBUG] [Thread-195010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:36:16.813 [DEBUG] [Thread-195010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:36:16.813 [DEBUG] [Thread-195010] [transport.py] [_log()] Compression: none
2025-11-24T18:36:16.813 [DEBUG] [Thread-195010] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:36:16.838 [DEBUG] [Thread-195010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:36:16.841 [DEBUG] [Thread-195010] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:36:16.842 [DEBUG] [Thread-195010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:36:16.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:36:16.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:36:16.845 [DEBUG] [Thread-195010] [transport.py] [_log()] userauth is OK
2025-11-24T18:36:16.845 [DEBUG] [Thread-195010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:36:16.845 [DEBUG] [Thread-195010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:36:16.845 [DEBUG] [Thread-195010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:36:16.845 [DEBUG] [Thread-195010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:36:16.868 [INFO] [Thread-195010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:36:16.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:36:17.488 [DEBUG] [Thread-195010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:36:17.488 [DEBUG] [Thread-195010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:36:17.491 [DEBUG] [Thread-195010] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:36:17.528 [DEBUG] [Thread-195010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:36:17.529 [DEBUG] [Thread-195010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:36:17.532 [DEBUG] [Thread-195010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:36:17.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:36:17.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:36:17.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:36:17.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:36:17.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:36:17.557 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:36:17.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:36:17.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:36:17.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:36:17.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.691718 -999.00  +19.90  25.94     27   +0.80 1 1 1 1 1   887    0 18.07 -40.48 ----- 22.9 25.9 188.2 31.0 21.8 -28.5 21.9 -29.2 22.8 -27.3 23.0 -28.5
2025-11-24T18:36:17.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:36:17.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:36:17.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.691718
2025-11-24T18:36:17.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:36:17.563 [DEBUG] [Thread-195010] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:36:17.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:36:17.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:36:17.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:36:17.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:36:17.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:35:50', tmtdew=22.41, humidity=22.06, cloud=0.0, wind=24.56, temperature=20.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:36:04.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:36:17.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:36:17.660 [DEBUG] [Thread-195013] [transport.py] [_log()] starting thread (client mode): 0xd3135690
2025-11-24T18:36:17.660 [DEBUG] [Thread-195013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:36:17.675 [DEBUG] [Thread-195013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:36:17.675 [INFO] [Thread-195013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] client lang: <none>
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] server lang: <none>
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] kex follows: False
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:36:17.683 [DEBUG] [Thread-195013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:36:17.684 [DEBUG] [Thread-195013] [transport.py] [_log()] Compression: none
2025-11-24T18:36:17.684 [DEBUG] [Thread-195013] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:36:17.740 [DEBUG] [Thread-195013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:36:17.741 [DEBUG] [Thread-195013] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:36:17.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:36:17.742 [DEBUG] [Thread-195013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:36:17.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:36:17.798 [DEBUG] [Thread-195013] [transport.py] [_log()] userauth is OK
2025-11-24T18:36:17.798 [DEBUG] [Thread-195013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:36:17.798 [DEBUG] [Thread-195013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:36:17.798 [DEBUG] [Thread-195013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:36:17.799 [DEBUG] [Thread-195013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:36:17.814 [INFO] [Thread-195013] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:36:17.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:36:17.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:36:18.634 [DEBUG] [Thread-195013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:36:18.634 [DEBUG] [Thread-195013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:36:18.682 [DEBUG] [Thread-195013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:36:18.682 [DEBUG] [Thread-195013] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:36:18.691 [DEBUG] [Thread-195013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:36:18.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:36:18.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-11-24T18:36:18.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-11-24T18:36:18.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:36:18.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:36:18.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:36:18.737 [DEBUG] [Thread-195013] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:36:28.384 [DEBUG] [Thread-195015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:36:43.458 [DEBUG] [Thread-195016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:36:48.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:36:48.733 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:36:48.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-11-24T18:36:49.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 36, 23), 22.41, 22.06, 0.0, 19.48, 20.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:36:49.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:36:23
2025-11-24T18:36:49.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:36:49.984 [DEBUG] [Thread-195017] [transport.py] [_log()] starting thread (client mode): 0xd07ce770
2025-11-24T18:36:49.985 [DEBUG] [Thread-195017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:36:49.999 [DEBUG] [Thread-195017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:36:50.000 [INFO] [Thread-195017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:36:50.005 [DEBUG] [Thread-195017] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:36:50.005 [DEBUG] [Thread-195017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:36:50.005 [DEBUG] [Thread-195017] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:36:50.005 [DEBUG] [Thread-195017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:36:50.005 [DEBUG] [Thread-195017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:36:50.005 [DEBUG] [Thread-195017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:36:50.005 [DEBUG] [Thread-195017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:36:50.006 [DEBUG] [Thread-195017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:36:50.006 [DEBUG] [Thread-195017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:36:50.006 [DEBUG] [Thread-195017] [transport.py] [_log()] client lang: <none>
2025-11-24T18:36:50.006 [DEBUG] [Thread-195017] [transport.py] [_log()] server lang: <none>
2025-11-24T18:36:50.006 [DEBUG] [Thread-195017] [transport.py] [_log()] kex follows: False
2025-11-24T18:36:50.006 [DEBUG] [Thread-195017] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:36:50.007 [DEBUG] [Thread-195017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:36:50.007 [DEBUG] [Thread-195017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:36:50.007 [DEBUG] [Thread-195017] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:36:50.007 [DEBUG] [Thread-195017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:36:50.007 [DEBUG] [Thread-195017] [transport.py] [_log()] Compression: none
2025-11-24T18:36:50.007 [DEBUG] [Thread-195017] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:36:50.043 [DEBUG] [Thread-195017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:36:50.047 [DEBUG] [Thread-195017] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:36:50.049 [DEBUG] [Thread-195017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:36:50.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:36:50.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:36:50.055 [DEBUG] [Thread-195017] [transport.py] [_log()] userauth is OK
2025-11-24T18:36:50.056 [DEBUG] [Thread-195017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:36:50.056 [DEBUG] [Thread-195017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:36:50.056 [DEBUG] [Thread-195017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:36:50.056 [DEBUG] [Thread-195017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:36:50.084 [INFO] [Thread-195017] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:36:50.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:36:50.702 [DEBUG] [Thread-195017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:36:50.703 [DEBUG] [Thread-195017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:36:50.704 [DEBUG] [Thread-195017] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:36:50.744 [DEBUG] [Thread-195017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:36:50.744 [DEBUG] [Thread-195017] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:36:50.748 [DEBUG] [Thread-195017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:36:50.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:36:50.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:36:50.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:36:50.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:36:50.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:36:50.776 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:36:50.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:36:50.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:36:50.778 [DEBUG] [Thread-195017] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:36:50.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:36:50.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.692065 -999.00  +19.90  14.95     27   +0.80 1 1 1 1 1   887    0 17.51 -44.57 ----- 19.8 14.9 172.0 25.7 21.8 -28.3 21.9 -29.2 22.8 -26.9 23.0 -28.4
2025-11-24T18:36:50.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:36:50.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:36:50.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.692065
2025-11-24T18:36:50.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:36:50.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:36:50.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:36:50.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:36:50.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:36:50.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:36:23', tmtdew=22.41, humidity=22.06, cloud=0.0, wind=19.48, temperature=20.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:36:34.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:36:50.889 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:36:58.486 [DEBUG] [Thread-195020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:37:13.551 [DEBUG] [Thread-195021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:37:16.291 [DEBUG] [Thread-195022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:37:28.593 [DEBUG] [Thread-195023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:37:43.628 [DEBUG] [Thread-195024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:37:58.658 [DEBUG] [Thread-195025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:38:13.689 [DEBUG] [Thread-195026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:38:16.590 [DEBUG] [Thread-195027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:38:28.775 [DEBUG] [Thread-195028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:38:43.844 [DEBUG] [Thread-195029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:38:58.888 [DEBUG] [Thread-195030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:39:05.662 [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-11-24T18:39:13.966 [DEBUG] [Thread-195031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:39:16.878 [DEBUG] [Thread-195032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:39:29.025 [DEBUG] [Thread-195033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:39:35.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:39:35.708 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:39: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-11-24T18:39:36.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 39, 6), 22.44, 22.01, 0.0, 24.23, 19.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:39:36.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:39:06
2025-11-24T18:39:37.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:39:37.273 [DEBUG] [Thread-195034] [transport.py] [_log()] starting thread (client mode): 0xd07cdfc0
2025-11-24T18:39:37.274 [DEBUG] [Thread-195034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:39:37.280 [DEBUG] [Thread-195034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:39:37.280 [INFO] [Thread-195034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:39:37.293 [DEBUG] [Thread-195034] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:39:37.293 [DEBUG] [Thread-195034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:39:37.293 [DEBUG] [Thread-195034] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:39:37.293 [DEBUG] [Thread-195034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:39:37.293 [DEBUG] [Thread-195034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:39:37.293 [DEBUG] [Thread-195034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:39:37.293 [DEBUG] [Thread-195034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:39:37.293 [DEBUG] [Thread-195034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:39:37.293 [DEBUG] [Thread-195034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:39:37.294 [DEBUG] [Thread-195034] [transport.py] [_log()] client lang: <none>
2025-11-24T18:39:37.294 [DEBUG] [Thread-195034] [transport.py] [_log()] server lang: <none>
2025-11-24T18:39:37.294 [DEBUG] [Thread-195034] [transport.py] [_log()] kex follows: False
2025-11-24T18:39:37.294 [DEBUG] [Thread-195034] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:39:37.294 [DEBUG] [Thread-195034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:39:37.294 [DEBUG] [Thread-195034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:39:37.295 [DEBUG] [Thread-195034] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:39:37.295 [DEBUG] [Thread-195034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:39:37.295 [DEBUG] [Thread-195034] [transport.py] [_log()] Compression: none
2025-11-24T18:39:37.295 [DEBUG] [Thread-195034] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:39:37.331 [DEBUG] [Thread-195034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:39:37.335 [DEBUG] [Thread-195034] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:39:37.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:39:37.339 [DEBUG] [Thread-195034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:39:37.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:39:37.342 [DEBUG] [Thread-195034] [transport.py] [_log()] userauth is OK
2025-11-24T18:39:37.342 [DEBUG] [Thread-195034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:39:37.342 [DEBUG] [Thread-195034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:39:37.343 [DEBUG] [Thread-195034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:39:37.343 [DEBUG] [Thread-195034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:39:37.382 [INFO] [Thread-195034] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:39:37.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:39:37.978 [DEBUG] [Thread-195034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:39:37.979 [DEBUG] [Thread-195034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:39:37.980 [DEBUG] [Thread-195034] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:39:38.010 [DEBUG] [Thread-195034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:39:38.010 [DEBUG] [Thread-195034] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:39:38.012 [DEBUG] [Thread-195034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:39:38.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:39:38.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:39:38.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:39:38.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:39:38.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:39:38.034 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:39:38.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:39:38.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:39:38.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:39:38.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.693801 -999.00  +19.80  31.22     27   +0.70 1 1 2 1 1   887    0 18.60 -29.45 ----- 26.9 31.2 179.4 40.7 21.7 -28.7 21.7 -29.5 22.6 -27.9 22.8 -29.0
2025-11-24T18:39:38.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:39:38.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:39:38.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.693801
2025-11-24T18:39:38.046 [DEBUG] [Thread-195034] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:39:38.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:39:38.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:39:38.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:39:38.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:39:38.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:39:38.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:39:06', tmtdew=22.44, humidity=22.01, cloud=0.0, wind=24.23, temperature=19.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:39:04.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:39:38.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:39:38.146 [DEBUG] [Thread-195037] [transport.py] [_log()] starting thread (client mode): 0xd07ce170
2025-11-24T18:39:38.146 [DEBUG] [Thread-195037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:39:38.161 [DEBUG] [Thread-195037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:39:38.162 [INFO] [Thread-195037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:39:38.169 [DEBUG] [Thread-195037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:39:38.169 [DEBUG] [Thread-195037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:39:38.169 [DEBUG] [Thread-195037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:39:38.169 [DEBUG] [Thread-195037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:39:38.169 [DEBUG] [Thread-195037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:39:38.169 [DEBUG] [Thread-195037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:39:38.169 [DEBUG] [Thread-195037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:39:38.169 [DEBUG] [Thread-195037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:39:38.169 [DEBUG] [Thread-195037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:39:38.170 [DEBUG] [Thread-195037] [transport.py] [_log()] client lang: <none>
2025-11-24T18:39:38.170 [DEBUG] [Thread-195037] [transport.py] [_log()] server lang: <none>
2025-11-24T18:39:38.170 [DEBUG] [Thread-195037] [transport.py] [_log()] kex follows: False
2025-11-24T18:39:38.170 [DEBUG] [Thread-195037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:39:38.170 [DEBUG] [Thread-195037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:39:38.170 [DEBUG] [Thread-195037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:39:38.170 [DEBUG] [Thread-195037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:39:38.170 [DEBUG] [Thread-195037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:39:38.170 [DEBUG] [Thread-195037] [transport.py] [_log()] Compression: none
2025-11-24T18:39:38.170 [DEBUG] [Thread-195037] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:39:38.228 [DEBUG] [Thread-195037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:39:38.229 [DEBUG] [Thread-195037] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:39:38.229 [DEBUG] [Thread-195037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:39:38.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:39:38.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:39:38.287 [DEBUG] [Thread-195037] [transport.py] [_log()] userauth is OK
2025-11-24T18:39:38.288 [DEBUG] [Thread-195037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:39:38.288 [DEBUG] [Thread-195037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:39:38.288 [DEBUG] [Thread-195037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:39:38.288 [DEBUG] [Thread-195037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:39:38.316 [INFO] [Thread-195037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:39:38.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:39:38.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:39:39.177 [DEBUG] [Thread-195037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:39:39.177 [DEBUG] [Thread-195037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:39:39.228 [DEBUG] [Thread-195037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:39:39.228 [DEBUG] [Thread-195037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:39:39.240 [DEBUG] [Thread-195037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:39:39.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:39:39.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-11-24T18:39:39.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-11-24T18:39:39.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:39:39.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:39:39.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:39:39.275 [DEBUG] [Thread-195037] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:39:44.056 [DEBUG] [Thread-195039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:39:59.147 [DEBUG] [Thread-195040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:40:09.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:40:09.303 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:40:09.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:40:10.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 39, 39), 22.52, 21.95, 0.0, 25.92, 20.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:40:10.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:39:39
2025-11-24T18:40:10.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:40:10.993 [DEBUG] [Thread-195041] [transport.py] [_log()] starting thread (client mode): 0xd0738b50
2025-11-24T18:40:10.993 [DEBUG] [Thread-195041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:40:11.002 [DEBUG] [Thread-195041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:40:11.003 [INFO] [Thread-195041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:40:11.010 [DEBUG] [Thread-195041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:40:11.011 [DEBUG] [Thread-195041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:40:11.011 [DEBUG] [Thread-195041] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:40:11.011 [DEBUG] [Thread-195041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:40:11.011 [DEBUG] [Thread-195041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:40:11.011 [DEBUG] [Thread-195041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:40:11.011 [DEBUG] [Thread-195041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:40:11.011 [DEBUG] [Thread-195041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:40:11.012 [DEBUG] [Thread-195041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:40:11.012 [DEBUG] [Thread-195041] [transport.py] [_log()] client lang: <none>
2025-11-24T18:40:11.012 [DEBUG] [Thread-195041] [transport.py] [_log()] server lang: <none>
2025-11-24T18:40:11.012 [DEBUG] [Thread-195041] [transport.py] [_log()] kex follows: False
2025-11-24T18:40:11.012 [DEBUG] [Thread-195041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:40:11.013 [DEBUG] [Thread-195041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:40:11.013 [DEBUG] [Thread-195041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:40:11.014 [DEBUG] [Thread-195041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:40:11.014 [DEBUG] [Thread-195041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:40:11.014 [DEBUG] [Thread-195041] [transport.py] [_log()] Compression: none
2025-11-24T18:40:11.014 [DEBUG] [Thread-195041] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:40:11.051 [DEBUG] [Thread-195041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:40:11.055 [DEBUG] [Thread-195041] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:40:11.057 [DEBUG] [Thread-195041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:40:11.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:40:11.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:40:11.060 [DEBUG] [Thread-195041] [transport.py] [_log()] userauth is OK
2025-11-24T18:40:11.060 [DEBUG] [Thread-195041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:40:11.060 [DEBUG] [Thread-195041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:40:11.060 [DEBUG] [Thread-195041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:40:11.060 [DEBUG] [Thread-195041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:40:11.078 [INFO] [Thread-195041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:40:11.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:40:11.714 [DEBUG] [Thread-195041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:40:11.714 [DEBUG] [Thread-195041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:40:11.716 [DEBUG] [Thread-195041] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:40:11.745 [DEBUG] [Thread-195041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:40:11.746 [DEBUG] [Thread-195041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:40:11.749 [DEBUG] [Thread-195041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:40:11.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:40:11.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:40:11.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:40:11.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:40:11.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:40:11.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:40:11.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:40:11.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:40:11.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:40:11.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.694148 -999.00  +19.80  20.19     27   +0.70 1 1 1 1 1   887    0 18.16 -28.78 ----- 22.6 20.2 190.2 36.4 21.7 -28.6 21.7 -29.5 22.6 -27.2 22.8 -29.1
2025-11-24T18:40:11.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:40:11.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:40:11.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.694148
2025-11-24T18:40:11.781 [DEBUG] [Thread-195041] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:40:11.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:40:11.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:40:11.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:40:11.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:40:11.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:40:11.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:39:39', tmtdew=22.52, humidity=21.95, cloud=0.0, wind=25.92, temperature=20.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:39:34.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:40:11.898 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:40:11.910 [DEBUG] [Thread-195044] [transport.py] [_log()] starting thread (client mode): 0xd07392d0
2025-11-24T18:40:11.910 [DEBUG] [Thread-195044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:40:11.924 [DEBUG] [Thread-195044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:40:11.924 [INFO] [Thread-195044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] client lang: <none>
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] server lang: <none>
2025-11-24T18:40:11.932 [DEBUG] [Thread-195044] [transport.py] [_log()] kex follows: False
2025-11-24T18:40:11.933 [DEBUG] [Thread-195044] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:40:11.933 [DEBUG] [Thread-195044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:40:11.933 [DEBUG] [Thread-195044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:40:11.933 [DEBUG] [Thread-195044] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:40:11.933 [DEBUG] [Thread-195044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:40:11.933 [DEBUG] [Thread-195044] [transport.py] [_log()] Compression: none
2025-11-24T18:40:11.933 [DEBUG] [Thread-195044] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:40:11.989 [DEBUG] [Thread-195044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:40:11.990 [DEBUG] [Thread-195044] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:40:11.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:40:11.990 [DEBUG] [Thread-195044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:40:11.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:40:12.050 [DEBUG] [Thread-195044] [transport.py] [_log()] userauth is OK
2025-11-24T18:40:12.050 [DEBUG] [Thread-195044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:40:12.050 [DEBUG] [Thread-195044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:40:12.050 [DEBUG] [Thread-195044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:40:12.050 [DEBUG] [Thread-195044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:40:12.064 [INFO] [Thread-195044] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:40:12.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:40:12.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:40:12.889 [DEBUG] [Thread-195044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:40:12.889 [DEBUG] [Thread-195044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:40:12.937 [DEBUG] [Thread-195044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:40:12.937 [DEBUG] [Thread-195044] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:40:12.950 [DEBUG] [Thread-195044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:40:12.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:40:12.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-11-24T18:40:12.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-11-24T18:40:12.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:40:12.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:40:12.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:40:12.985 [DEBUG] [Thread-195044] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:40:14.208 [DEBUG] [Thread-195046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:40:17.186 [DEBUG] [Thread-195047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:40:29.377 [DEBUG] [Thread-195048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:40:43.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:40:43.032 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:40:43.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-11-24T18:40:43.727 [DEBUG] [Thread-195049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:40:44.439 [DEBUG] [Thread-195050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:40:44.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 40, 11), 22.53, 21.96, 0.0, 26.64, 20.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:40:44.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:40:11
2025-11-24T18:40:44.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:40:44.903 [DEBUG] [Thread-195051] [transport.py] [_log()] starting thread (client mode): 0xd0701ae0
2025-11-24T18:40:44.903 [DEBUG] [Thread-195051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:40:44.912 [DEBUG] [Thread-195051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:40:44.913 [INFO] [Thread-195051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] client lang: <none>
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] server lang: <none>
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] kex follows: False
2025-11-24T18:40:44.918 [DEBUG] [Thread-195051] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:40:44.919 [DEBUG] [Thread-195051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:40:44.920 [DEBUG] [Thread-195051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:40:44.920 [DEBUG] [Thread-195051] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:40:44.920 [DEBUG] [Thread-195051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:40:44.920 [DEBUG] [Thread-195051] [transport.py] [_log()] Compression: none
2025-11-24T18:40:44.920 [DEBUG] [Thread-195051] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:40:44.942 [DEBUG] [Thread-195051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:40:44.945 [DEBUG] [Thread-195051] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:40:44.947 [DEBUG] [Thread-195051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:40:44.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:40:44.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:40:44.950 [DEBUG] [Thread-195051] [transport.py] [_log()] userauth is OK
2025-11-24T18:40:44.951 [DEBUG] [Thread-195051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:40:44.951 [DEBUG] [Thread-195051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:40:44.951 [DEBUG] [Thread-195051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:40:44.951 [DEBUG] [Thread-195051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:40:44.982 [INFO] [Thread-195051] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:40:44.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:40:45.573 [DEBUG] [Thread-195051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:40:45.574 [DEBUG] [Thread-195051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:40:45.574 [DEBUG] [Thread-195051] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:40:45.615 [DEBUG] [Thread-195051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:40:45.615 [DEBUG] [Thread-195051] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:40:45.617 [DEBUG] [Thread-195051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:40:45.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:40:45.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:40:45.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:40:45.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:40:45.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:40:45.639 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:40:45.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:40:45.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:40:45.640 [DEBUG] [Thread-195051] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:40:45.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:40:45.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.694843 -999.00  +19.80  27.35     27   +0.70 1 1 1 1 1   887    0 18.28 -29.84 ----- 22.6 27.4 182.8 35.4 21.6 -28.5 21.7 -29.0 22.6 -27.0 22.7 -28.4
2025-11-24T18:40:45.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:40:45.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:40:45.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.694843
2025-11-24T18:40:45.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:40:45.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:40:45.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:40:45.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:40:45.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:40:45.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:40:11', tmtdew=22.53, humidity=21.96, cloud=0.0, wind=26.64, temperature=20.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:40:34.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:40:45.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:40:45.746 [DEBUG] [Thread-195054] [transport.py] [_log()] starting thread (client mode): 0xd3136590
2025-11-24T18:40:45.746 [DEBUG] [Thread-195054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:40:45.761 [DEBUG] [Thread-195054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:40:45.761 [INFO] [Thread-195054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] client lang: <none>
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] server lang: <none>
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] kex follows: False
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] Compression: none
2025-11-24T18:40:45.768 [DEBUG] [Thread-195054] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:40:45.830 [DEBUG] [Thread-195054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:40:45.830 [DEBUG] [Thread-195054] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:40:45.830 [DEBUG] [Thread-195054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:40:45.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:40:45.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:40:45.887 [DEBUG] [Thread-195054] [transport.py] [_log()] userauth is OK
2025-11-24T18:40:45.887 [DEBUG] [Thread-195054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:40:45.887 [DEBUG] [Thread-195054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:40:45.887 [DEBUG] [Thread-195054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:40:45.887 [DEBUG] [Thread-195054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:40:45.902 [INFO] [Thread-195054] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:40:45.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:40:45.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:40:46.745 [DEBUG] [Thread-195054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:40:46.745 [DEBUG] [Thread-195054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:40:46.793 [DEBUG] [Thread-195054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:40:46.793 [DEBUG] [Thread-195054] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:40:46.801 [DEBUG] [Thread-195054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:40:46.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:40:46.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-11-24T18:40:46.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') -> 00000000
2025-11-24T18:40:46.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:40:46.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:40:46.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:40:46.834 [DEBUG] [Thread-195054] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:40:59.552 [DEBUG] [Thread-195056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:41:03.561 [DEBUG] [Thread-195049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:41:14.799 [DEBUG] [Thread-195057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:41:16.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:41:16.845 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:41:16.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:41:17.404 [DEBUG] [Thread-195058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:41:18.262 [DEBUG] [Thread-195049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:41:18.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 40, 44), 22.52, 21.48, 0.0, 25.73, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:41:18.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:40:44
2025-11-24T18:41:18.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:41:18.747 [DEBUG] [Thread-195059] [transport.py] [_log()] starting thread (client mode): 0xd07f8580
2025-11-24T18:41:18.748 [DEBUG] [Thread-195059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:41:18.760 [DEBUG] [Thread-195059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:41:18.760 [INFO] [Thread-195059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] client lang: <none>
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] server lang: <none>
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] kex follows: False
2025-11-24T18:41:18.765 [DEBUG] [Thread-195059] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:41:18.766 [DEBUG] [Thread-195059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:41:18.766 [DEBUG] [Thread-195059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:41:18.766 [DEBUG] [Thread-195059] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:41:18.766 [DEBUG] [Thread-195059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:41:18.766 [DEBUG] [Thread-195059] [transport.py] [_log()] Compression: none
2025-11-24T18:41:18.766 [DEBUG] [Thread-195059] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:41:18.787 [DEBUG] [Thread-195059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:41:18.791 [DEBUG] [Thread-195059] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:41:18.791 [DEBUG] [Thread-195059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:41:18.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:41:18.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:41:18.794 [DEBUG] [Thread-195059] [transport.py] [_log()] userauth is OK
2025-11-24T18:41:18.794 [DEBUG] [Thread-195059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:41:18.794 [DEBUG] [Thread-195059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:41:18.794 [DEBUG] [Thread-195059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:41:18.794 [DEBUG] [Thread-195059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:41:18.805 [INFO] [Thread-195059] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:41:18.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:41:19.393 [DEBUG] [Thread-195059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:41:19.393 [DEBUG] [Thread-195059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:41:19.394 [DEBUG] [Thread-195059] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:41:19.434 [DEBUG] [Thread-195059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:41:19.434 [DEBUG] [Thread-195059] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:41:19.437 [DEBUG] [Thread-195059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:41:19.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:41:19.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:41:19.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:41:19.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:41:19.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:41:19.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:41:19.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:41:19.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:41:19.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:41:19.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.695190 -999.00  +19.90  14.07     27   +0.80 1 1 1 1 1   887    0 18.42 -29.50 ----- 14.4 14.1 183.0 27.3 21.6 -28.3 21.8 -28.6 22.6 -26.5 22.7 -28.6
2025-11-24T18:41:19.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:41:19.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:41:19.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.695190
2025-11-24T18:41:19.466 [DEBUG] [Thread-195059] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:41:19.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:41:19.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:41:19.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:41:19.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:41:19.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:41:19.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:40:44', tmtdew=22.52, humidity=21.48, cloud=0.0, wind=25.73, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:41:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:41:19.558 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:41:19.570 [DEBUG] [Thread-195062] [transport.py] [_log()] starting thread (client mode): 0xd0787220
2025-11-24T18:41:19.570 [DEBUG] [Thread-195062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:41:19.585 [DEBUG] [Thread-195062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:41:19.586 [INFO] [Thread-195062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] client lang: <none>
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] server lang: <none>
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] kex follows: False
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:41:19.593 [DEBUG] [Thread-195062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:41:19.595 [DEBUG] [Thread-195062] [transport.py] [_log()] Compression: none
2025-11-24T18:41:19.595 [DEBUG] [Thread-195062] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:41:19.650 [DEBUG] [Thread-195062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:41:19.650 [DEBUG] [Thread-195062] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:41:19.651 [DEBUG] [Thread-195062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:41:19.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:41:19.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:41:19.707 [DEBUG] [Thread-195062] [transport.py] [_log()] userauth is OK
2025-11-24T18:41:19.707 [DEBUG] [Thread-195062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:41:19.707 [DEBUG] [Thread-195062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:41:19.707 [DEBUG] [Thread-195062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:41:19.707 [DEBUG] [Thread-195062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:41:19.721 [INFO] [Thread-195062] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:41:19.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:41:19.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:41:20.567 [DEBUG] [Thread-195062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:41:20.567 [DEBUG] [Thread-195062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:41:20.615 [DEBUG] [Thread-195062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:41:20.616 [DEBUG] [Thread-195062] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:41:20.625 [DEBUG] [Thread-195062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:41:20.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:41:20.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-11-24T18:41:20.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-11-24T18:41:20.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:41:20.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:41:20.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:41:20.665 [DEBUG] [Thread-195062] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:41:29.895 [DEBUG] [Thread-195064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:41:44.983 [DEBUG] [Thread-195065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:41:50.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:41:50.691 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:41:50.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-11-24T18:41:51.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 41, 17), 22.51, 21.5, 0.0, 27.23, 20.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:41:51.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:41:17
2025-11-24T18:41:51.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:41:51.926 [DEBUG] [Thread-195066] [transport.py] [_log()] starting thread (client mode): 0xd073a860
2025-11-24T18:41:51.926 [DEBUG] [Thread-195066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:41:51.939 [DEBUG] [Thread-195066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:41:51.939 [INFO] [Thread-195066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] client lang: <none>
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] server lang: <none>
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] kex follows: False
2025-11-24T18:41:51.943 [DEBUG] [Thread-195066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:41:51.944 [DEBUG] [Thread-195066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:41:51.944 [DEBUG] [Thread-195066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:41:51.944 [DEBUG] [Thread-195066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:41:51.944 [DEBUG] [Thread-195066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:41:51.944 [DEBUG] [Thread-195066] [transport.py] [_log()] Compression: none
2025-11-24T18:41:51.944 [DEBUG] [Thread-195066] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:41:51.973 [DEBUG] [Thread-195066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:41:51.977 [DEBUG] [Thread-195066] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:41:51.978 [DEBUG] [Thread-195066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:41:51.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:41:51.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:41:51.982 [DEBUG] [Thread-195066] [transport.py] [_log()] userauth is OK
2025-11-24T18:41:51.982 [DEBUG] [Thread-195066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:41:51.982 [DEBUG] [Thread-195066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:41:51.982 [DEBUG] [Thread-195066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:41:51.982 [DEBUG] [Thread-195066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:41:52.000 [INFO] [Thread-195066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:41:52.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:41:52.579 [DEBUG] [Thread-195066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:41:52.580 [DEBUG] [Thread-195066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:41:52.581 [DEBUG] [Thread-195066] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:41:52.621 [DEBUG] [Thread-195066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:41:52.621 [DEBUG] [Thread-195066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:41:52.624 [DEBUG] [Thread-195066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:41:52.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:41:52.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:41:52.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:41:52.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:41:52.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:41:52.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:41:52.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:41:52.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:41:52.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:41:52.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.695537 -999.00  +19.80  22.94     27   +0.70 1 1 1 1 1   887    0 18.35 -30.59 ----- 19.5 22.9 180.2 27.0 21.5 -28.7 21.6 -28.2 22.5 -27.3 22.6 -28.7
2025-11-24T18:41:52.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:41:52.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:41:52.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.695537
2025-11-24T18:41:52.651 [DEBUG] [Thread-195066] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:41:52.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:41:52.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:41:52.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:41:52.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:41:52.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:41:52.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:41:17', tmtdew=22.51, humidity=21.5, cloud=0.0, wind=27.23, temperature=20.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:41:34.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:41:52.744 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:41:52.755 [DEBUG] [Thread-195069] [transport.py] [_log()] starting thread (client mode): 0xc9b83400
2025-11-24T18:41:52.755 [DEBUG] [Thread-195069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:41:52.770 [DEBUG] [Thread-195069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:41:52.770 [INFO] [Thread-195069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] client lang: <none>
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] server lang: <none>
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] kex follows: False
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:41:52.778 [DEBUG] [Thread-195069] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:41:52.779 [DEBUG] [Thread-195069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:41:52.779 [DEBUG] [Thread-195069] [transport.py] [_log()] Compression: none
2025-11-24T18:41:52.779 [DEBUG] [Thread-195069] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:41:52.837 [DEBUG] [Thread-195069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:41:52.837 [DEBUG] [Thread-195069] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:41:52.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:41:52.838 [DEBUG] [Thread-195069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:41:52.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:41:52.895 [DEBUG] [Thread-195069] [transport.py] [_log()] userauth is OK
2025-11-24T18:41:52.895 [DEBUG] [Thread-195069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:41:52.895 [DEBUG] [Thread-195069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:41:52.895 [DEBUG] [Thread-195069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:41:52.895 [DEBUG] [Thread-195069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:41:52.910 [INFO] [Thread-195069] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:41:52.911 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:41:52.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:41:53.760 [DEBUG] [Thread-195069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:41:53.760 [DEBUG] [Thread-195069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:41:53.808 [DEBUG] [Thread-195069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:41:53.808 [DEBUG] [Thread-195069] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:41:53.816 [DEBUG] [Thread-195069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:41:53.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:41:53.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-11-24T18:41:53.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-11-24T18:41:53.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:41:53.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:41:53.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:41:53.859 [DEBUG] [Thread-195069] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:42:00.041 [DEBUG] [Thread-195071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:42:15.160 [DEBUG] [Thread-195072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:42:17.612 [DEBUG] [Thread-195073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:42:23.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:42:23.883 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:42:23.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-11-24T18:42:24.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 41, 50), 22.54, 21.45, 0.0, 19.85, 20.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:42:24.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:41:50
2025-11-24T18:42:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:42:25.242 [DEBUG] [Thread-195074] [transport.py] [_log()] starting thread (client mode): 0xd0786500
2025-11-24T18:42:25.243 [DEBUG] [Thread-195074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:42:25.246 [DEBUG] [Thread-195074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:42:25.246 [INFO] [Thread-195074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:42:25.249 [DEBUG] [Thread-195074] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] client lang: <none>
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] server lang: <none>
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] kex follows: False
2025-11-24T18:42:25.250 [DEBUG] [Thread-195074] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:42:25.251 [DEBUG] [Thread-195074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:42:25.251 [DEBUG] [Thread-195074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:42:25.251 [DEBUG] [Thread-195074] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:42:25.251 [DEBUG] [Thread-195074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:42:25.251 [DEBUG] [Thread-195074] [transport.py] [_log()] Compression: none
2025-11-24T18:42:25.251 [DEBUG] [Thread-195074] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:42:25.297 [DEBUG] [Thread-195074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:42:25.300 [DEBUG] [Thread-195074] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:42:25.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:42:25.302 [DEBUG] [Thread-195074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:42:25.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:42:25.304 [DEBUG] [Thread-195074] [transport.py] [_log()] userauth is OK
2025-11-24T18:42:25.304 [DEBUG] [Thread-195074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:42:25.304 [DEBUG] [Thread-195074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:42:25.304 [DEBUG] [Thread-195074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:42:25.304 [DEBUG] [Thread-195074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:42:25.321 [INFO] [Thread-195074] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:42:25.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:42:25.900 [DEBUG] [Thread-195074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:42:25.900 [DEBUG] [Thread-195074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:42:25.901 [DEBUG] [Thread-195074] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:42:25.941 [DEBUG] [Thread-195074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:42:25.941 [DEBUG] [Thread-195074] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:42:25.943 [DEBUG] [Thread-195074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:42:25.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:42:25.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:42:25.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:42:25.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:42:25.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:42:25.959 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:42:25.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:42:25.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:42:25.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:42:25.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.695884 -999.00  +19.80  25.91     28   +0.70 1 1 1 1 1   887    0 18.74 -31.71 ----- 26.4 25.9 181.0 29.3 21.6 -28.4 21.6 -28.4 22.5 -27.3 22.6 -28.5
2025-11-24T18:42:25.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:42:25.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:42:25.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.695884
2025-11-24T18:42:25.965 [DEBUG] [Thread-195074] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:42:25.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:42:25.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:42:25.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:42:25.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:42:25.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:42:25.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:41:50', tmtdew=22.54, humidity=21.45, cloud=0.0, wind=19.85, temperature=20.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:42:04.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:42:26.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:42:26.066 [DEBUG] [Thread-195077] [transport.py] [_log()] starting thread (client mode): 0xd07bc6d0
2025-11-24T18:42:26.066 [DEBUG] [Thread-195077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:42:26.080 [DEBUG] [Thread-195077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:42:26.080 [INFO] [Thread-195077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] client lang: <none>
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] server lang: <none>
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] kex follows: False
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] Compression: none
2025-11-24T18:42:26.088 [DEBUG] [Thread-195077] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:42:26.150 [DEBUG] [Thread-195077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:42:26.151 [DEBUG] [Thread-195077] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:42:26.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:42:26.151 [DEBUG] [Thread-195077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:42:26.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:42:26.207 [DEBUG] [Thread-195077] [transport.py] [_log()] userauth is OK
2025-11-24T18:42:26.208 [DEBUG] [Thread-195077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:42:26.208 [DEBUG] [Thread-195077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:42:26.208 [DEBUG] [Thread-195077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:42:26.208 [DEBUG] [Thread-195077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:42:26.225 [INFO] [Thread-195077] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:42:26.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:42:26.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:42:27.103 [DEBUG] [Thread-195077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:42:27.104 [DEBUG] [Thread-195077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:42:27.151 [DEBUG] [Thread-195077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:42:27.151 [DEBUG] [Thread-195077] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:42:27.163 [DEBUG] [Thread-195077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:42:27.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:42:27.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-11-24T18:42:27.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-11-24T18:42:27.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:42:27.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:42:27.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:42:27.199 [DEBUG] [Thread-195077] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:42:30.216 [DEBUG] [Thread-195079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:42:45.357 [DEBUG] [Thread-195080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:42:57.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:42:57.222 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:42: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-11-24T18:42:58.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 42, 22), 22.51, 21.48, 0.0, 20.38, 20.06, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:42:58.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:42:22
2025-11-24T18:42:58.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:42:58.595 [DEBUG] [Thread-195081] [transport.py] [_log()] starting thread (client mode): 0xd07f9ab0
2025-11-24T18:42:58.596 [DEBUG] [Thread-195081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:42:58.600 [DEBUG] [Thread-195081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:42:58.601 [INFO] [Thread-195081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] client lang: <none>
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] server lang: <none>
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] kex follows: False
2025-11-24T18:42:58.604 [DEBUG] [Thread-195081] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:42:58.605 [DEBUG] [Thread-195081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:42:58.605 [DEBUG] [Thread-195081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:42:58.605 [DEBUG] [Thread-195081] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:42:58.605 [DEBUG] [Thread-195081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:42:58.605 [DEBUG] [Thread-195081] [transport.py] [_log()] Compression: none
2025-11-24T18:42:58.605 [DEBUG] [Thread-195081] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:42:58.624 [DEBUG] [Thread-195081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:42:58.628 [DEBUG] [Thread-195081] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:42:58.629 [DEBUG] [Thread-195081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:42:58.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:42:58.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:42:58.632 [DEBUG] [Thread-195081] [transport.py] [_log()] userauth is OK
2025-11-24T18:42:58.632 [DEBUG] [Thread-195081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:42:58.632 [DEBUG] [Thread-195081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:42:58.632 [DEBUG] [Thread-195081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:42:58.632 [DEBUG] [Thread-195081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:42:58.644 [INFO] [Thread-195081] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:42:58.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:42:59.280 [DEBUG] [Thread-195081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:42:59.280 [DEBUG] [Thread-195081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:42:59.281 [DEBUG] [Thread-195081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:42:59.321 [DEBUG] [Thread-195081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:42:59.321 [DEBUG] [Thread-195081] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:42:59.324 [DEBUG] [Thread-195081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:42:59.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:42:59.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:42:59.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:42:59.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:42:59.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:42:59.345 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:42:59.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:42:59.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:42:59.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:42:59.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.696231 -999.00  +19.70  17.70     28   +0.70 1 1 1 1 1   887    0 18.40 -29.71 ----- 21.8 17.7 180.2 29.1 21.5 -28.4 21.6 -28.4 22.5 -26.8 22.6 -28.5
2025-11-24T18:42:59.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:42:59.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:42:59.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.696231
2025-11-24T18:42:59.352 [DEBUG] [Thread-195081] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:42:59.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:42:59.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:42:59.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:42:59.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:42:59.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:42:59.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:42:22', tmtdew=22.51, humidity=21.48, cloud=0.0, wind=20.38, temperature=20.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:42:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:42:59.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:42:59.449 [DEBUG] [Thread-195084] [transport.py] [_log()] starting thread (client mode): 0xd07f8340
2025-11-24T18:42:59.450 [DEBUG] [Thread-195084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:42:59.465 [DEBUG] [Thread-195084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:42:59.465 [INFO] [Thread-195084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] client lang: <none>
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] server lang: <none>
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] kex follows: False
2025-11-24T18:42:59.472 [DEBUG] [Thread-195084] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:42:59.473 [DEBUG] [Thread-195084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:42:59.473 [DEBUG] [Thread-195084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:42:59.473 [DEBUG] [Thread-195084] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:42:59.473 [DEBUG] [Thread-195084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:42:59.473 [DEBUG] [Thread-195084] [transport.py] [_log()] Compression: none
2025-11-24T18:42:59.473 [DEBUG] [Thread-195084] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:42:59.530 [DEBUG] [Thread-195084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:42:59.531 [DEBUG] [Thread-195084] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:42:59.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:42:59.531 [DEBUG] [Thread-195084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:42:59.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:42:59.587 [DEBUG] [Thread-195084] [transport.py] [_log()] userauth is OK
2025-11-24T18:42:59.587 [DEBUG] [Thread-195084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:42:59.587 [DEBUG] [Thread-195084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:42:59.587 [DEBUG] [Thread-195084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:42:59.587 [DEBUG] [Thread-195084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:42:59.602 [INFO] [Thread-195084] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:42:59.602 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:42:59.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:43:00.406 [DEBUG] [Thread-195086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:43:00.456 [DEBUG] [Thread-195084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:43:00.456 [DEBUG] [Thread-195084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:43:00.503 [DEBUG] [Thread-195084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:43:00.503 [DEBUG] [Thread-195084] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:43:00.512 [DEBUG] [Thread-195084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:43:00.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:43:00.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:43:00.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:43:00.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:43:00.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:43:00.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:43:00.545 [DEBUG] [Thread-195084] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:43:15.554 [DEBUG] [Thread-195087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:43:17.851 [DEBUG] [Thread-195088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:43:30.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:43:30.568 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:43:30.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-11-24T18:43:30.588 [DEBUG] [Thread-195089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:43:31.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 42, 56), 22.42, 22.04, 0.0, 27.37, 20.03, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:43:31.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:42:56
2025-11-24T18:43:31.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:43:31.924 [DEBUG] [Thread-195090] [transport.py] [_log()] starting thread (client mode): 0xd07f84c0
2025-11-24T18:43:31.924 [DEBUG] [Thread-195090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:43:31.925 [DEBUG] [Thread-195090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:43:31.925 [INFO] [Thread-195090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] client lang: <none>
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] server lang: <none>
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] kex follows: False
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:43:31.929 [DEBUG] [Thread-195090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:43:31.930 [DEBUG] [Thread-195090] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:43:31.930 [DEBUG] [Thread-195090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:43:31.930 [DEBUG] [Thread-195090] [transport.py] [_log()] Compression: none
2025-11-24T18:43:31.930 [DEBUG] [Thread-195090] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:43:31.953 [DEBUG] [Thread-195090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:43:31.956 [DEBUG] [Thread-195090] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:43:31.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:43:31.958 [DEBUG] [Thread-195090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:43:31.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:43:31.959 [DEBUG] [Thread-195090] [transport.py] [_log()] userauth is OK
2025-11-24T18:43:31.960 [DEBUG] [Thread-195090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:43:31.960 [DEBUG] [Thread-195090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:43:31.960 [DEBUG] [Thread-195090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:43:31.960 [DEBUG] [Thread-195090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:43:31.976 [INFO] [Thread-195090] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:43:31.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:43:32.563 [DEBUG] [Thread-195090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:43:32.563 [DEBUG] [Thread-195090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:43:32.564 [DEBUG] [Thread-195090] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:43:32.604 [DEBUG] [Thread-195090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:43:32.604 [DEBUG] [Thread-195090] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:43:32.607 [DEBUG] [Thread-195090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:43:32.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:43:32.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:43:32.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:43:32.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:43:32.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:43:32.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:43:32.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:43:32.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:43:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:43:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.696579 -999.00  +19.70  15.31     28   +0.70 1 1 1 1 1   887    0 18.55 -28.89 ----- 14.2 15.3 179.3 26.8 21.5 -28.3 21.6 -29.2 22.4 -26.4 22.6 -28.5
2025-11-24T18:43:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:43:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:43:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.696579
2025-11-24T18:43:32.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:43:32.650 [DEBUG] [Thread-195090] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:43:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:43:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:43:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:43:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:43:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:42:56', tmtdew=22.42, humidity=22.04, cloud=0.0, wind=27.37, temperature=20.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:43:04.426', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:43:32.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:43:45.621 [DEBUG] [Thread-195093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:44:00.740 [DEBUG] [Thread-195094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:44:04.280 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:44:04.281 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:44:14.997 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:44:15.004 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:44:15.849 [DEBUG] [Thread-195096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:44:18.110 [DEBUG] [Thread-195097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:44:25.573 [DEBUG] [Thread-195049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:44:30.959 [DEBUG] [Thread-195098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:44:46.055 [DEBUG] [Thread-195099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:45:01.115 [DEBUG] [Thread-195100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:45:15.171 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:45:15.186 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:45:16.161 [DEBUG] [Thread-195101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:45:18.325 [DEBUG] [Thread-195102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:45:31.212 [DEBUG] [Thread-195103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:45:46.249 [DEBUG] [Thread-195104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:45:47.071 [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-11-24T18:46:01.283 [DEBUG] [Thread-195105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:46:15.328 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:46:15.329 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:46:16.314 [DEBUG] [Thread-195106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:46:17.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:46:17.084 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:46:17.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:46:17.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 45, 41), 22.26, 22.24, 0.0, 29.33, 19.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:46:17.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:45:41
2025-11-24T18:46:18.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:46:18.276 [DEBUG] [Thread-195107] [transport.py] [_log()] starting thread (client mode): 0xd07fa530
2025-11-24T18:46:18.277 [DEBUG] [Thread-195107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:46:18.287 [DEBUG] [Thread-195107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:46:18.287 [INFO] [Thread-195107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:46:18.294 [DEBUG] [Thread-195107] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] client lang: <none>
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] server lang: <none>
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] kex follows: False
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:46:18.295 [DEBUG] [Thread-195107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:46:18.296 [DEBUG] [Thread-195107] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:46:18.296 [DEBUG] [Thread-195107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:46:18.296 [DEBUG] [Thread-195107] [transport.py] [_log()] Compression: none
2025-11-24T18:46:18.296 [DEBUG] [Thread-195107] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:46:18.331 [DEBUG] [Thread-195107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:46:18.335 [DEBUG] [Thread-195107] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:46:18.337 [DEBUG] [Thread-195107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:46:18.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:46:18.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:46:18.342 [DEBUG] [Thread-195107] [transport.py] [_log()] userauth is OK
2025-11-24T18:46:18.342 [DEBUG] [Thread-195107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:46:18.342 [DEBUG] [Thread-195107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:46:18.342 [DEBUG] [Thread-195107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:46:18.342 [DEBUG] [Thread-195107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:46:18.372 [INFO] [Thread-195107] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:46:18.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:46:18.648 [DEBUG] [Thread-195109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:46:19.024 [DEBUG] [Thread-195107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:46:19.024 [DEBUG] [Thread-195107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:46:19.025 [DEBUG] [Thread-195107] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:46:19.065 [DEBUG] [Thread-195107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:46:19.065 [DEBUG] [Thread-195107] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:46:19.068 [DEBUG] [Thread-195107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:46:19.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:46:19.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:46:19.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:46:19.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:46:19.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:46:19.088 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:46:19.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:46:19.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:46:19.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:46:19.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.698662 -999.00  +19.80  18.35     28   +0.70 1 1 1 1 1   887    0 18.23 -28.01 ----- 17.5 18.4 180.6 24.8 21.4 -28.2 21.6 -28.5 22.4 -26.4 22.5 -28.0
2025-11-24T18:46:19.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:46:19.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:46:19.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.698662
2025-11-24T18:46:19.100 [DEBUG] [Thread-195107] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:46:19.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:46:19.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:46:19.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:46:19.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:46:19.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:46:19.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:45:41', tmtdew=22.26, humidity=22.24, cloud=0.0, wind=29.33, temperature=19.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:46:04.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:46:19.182 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:46:19.194 [DEBUG] [Thread-195111] [transport.py] [_log()] starting thread (client mode): 0xd3137430
2025-11-24T18:46:19.195 [DEBUG] [Thread-195111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:46:19.208 [DEBUG] [Thread-195111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:46:19.208 [INFO] [Thread-195111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] client lang: <none>
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] server lang: <none>
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] kex follows: False
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:46:19.216 [DEBUG] [Thread-195111] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:46:19.217 [DEBUG] [Thread-195111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:46:19.217 [DEBUG] [Thread-195111] [transport.py] [_log()] Compression: none
2025-11-24T18:46:19.217 [DEBUG] [Thread-195111] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:46:19.277 [DEBUG] [Thread-195111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:46:19.278 [DEBUG] [Thread-195111] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:46:19.278 [DEBUG] [Thread-195111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:46:19.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:46:19.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:46:19.335 [DEBUG] [Thread-195111] [transport.py] [_log()] userauth is OK
2025-11-24T18:46:19.335 [DEBUG] [Thread-195111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:46:19.335 [DEBUG] [Thread-195111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:46:19.335 [DEBUG] [Thread-195111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:46:19.335 [DEBUG] [Thread-195111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:46:19.349 [INFO] [Thread-195111] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:46:19.349 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:46:19.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:46:20.177 [DEBUG] [Thread-195111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:46:20.177 [DEBUG] [Thread-195111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:46:20.225 [DEBUG] [Thread-195111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:46:20.225 [DEBUG] [Thread-195111] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:46:20.233 [DEBUG] [Thread-195111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:46:20.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:46:20.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-11-24T18:46:20.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:46:20.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:46:20.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:46:20.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:46:20.276 [DEBUG] [Thread-195111] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:46:31.348 [DEBUG] [Thread-195113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:46:46.441 [DEBUG] [Thread-195114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:46:50.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:46:50.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:46:50.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-11-24T18:46:51.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 46, 47), 22.25, 22.28, 0.0, 22.94, 19.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:46:51.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:46:47
2025-11-24T18:46:51.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:46:51.418 [DEBUG] [Thread-195115] [transport.py] [_log()] starting thread (client mode): 0xd07be320
2025-11-24T18:46:51.421 [DEBUG] [Thread-195115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:46:51.443 [DEBUG] [Thread-195115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:46:51.443 [INFO] [Thread-195115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:46:51.445 [DEBUG] [Thread-195115] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] client lang: <none>
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] server lang: <none>
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] kex follows: False
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:46:51.446 [DEBUG] [Thread-195115] [transport.py] [_log()] Compression: none
2025-11-24T18:46:51.447 [DEBUG] [Thread-195115] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:46:51.457 [DEBUG] [Thread-195115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:46:51.459 [DEBUG] [Thread-195115] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:46:51.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:46:51.460 [DEBUG] [Thread-195115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:46:51.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:46:51.462 [DEBUG] [Thread-195115] [transport.py] [_log()] userauth is OK
2025-11-24T18:46:51.462 [DEBUG] [Thread-195115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:46:51.462 [DEBUG] [Thread-195115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:46:51.463 [DEBUG] [Thread-195115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:46:51.463 [DEBUG] [Thread-195115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:46:51.477 [INFO] [Thread-195115] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:46:51.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:46:52.082 [DEBUG] [Thread-195115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:46:52.082 [DEBUG] [Thread-195115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:46:52.091 [DEBUG] [Thread-195115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:46:52.123 [DEBUG] [Thread-195115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:46:52.123 [DEBUG] [Thread-195115] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:46:52.125 [DEBUG] [Thread-195115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:46:52.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:46:52.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:46:52.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:46:52.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:46:52.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:46:52.143 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:46:52.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:46:52.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:46:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:46:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.699009 -999.00  +19.80  16.24     28   +0.70 1 1 1 1 1   887    0 18.13 -27.32 ----- 13.0 16.2 189.6 28.0 21.4 -28.1 21.6 -28.0 22.4 -26.4 22.5 -28.4
2025-11-24T18:46:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:46:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:46:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.699009
2025-11-24T18:46:52.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:46:52.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:46:52.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:46:52.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:46:52.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:46:52.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:46:47', tmtdew=22.25, humidity=22.28, cloud=0.0, wind=22.94, temperature=19.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:46:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:46:52.146 [DEBUG] [Thread-195115] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:46:52.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:46:52.229 [DEBUG] [Thread-195118] [transport.py] [_log()] starting thread (client mode): 0xd0787be0
2025-11-24T18:46:52.229 [DEBUG] [Thread-195118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:46:52.244 [DEBUG] [Thread-195118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:46:52.244 [INFO] [Thread-195118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:46:52.251 [DEBUG] [Thread-195118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:46:52.251 [DEBUG] [Thread-195118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:46:52.251 [DEBUG] [Thread-195118] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] client lang: <none>
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] server lang: <none>
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] kex follows: False
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] Compression: none
2025-11-24T18:46:52.252 [DEBUG] [Thread-195118] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:46:52.315 [DEBUG] [Thread-195118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:46:52.315 [DEBUG] [Thread-195118] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:46:52.315 [DEBUG] [Thread-195118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:46:52.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:46:52.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:46:52.371 [DEBUG] [Thread-195118] [transport.py] [_log()] userauth is OK
2025-11-24T18:46:52.371 [DEBUG] [Thread-195118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:46:52.371 [DEBUG] [Thread-195118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:46:52.371 [DEBUG] [Thread-195118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:46:52.371 [DEBUG] [Thread-195118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:46:52.385 [INFO] [Thread-195118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:46:52.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:46:52.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:46:53.213 [DEBUG] [Thread-195118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:46:53.213 [DEBUG] [Thread-195118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:46:53.261 [DEBUG] [Thread-195118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:46:53.261 [DEBUG] [Thread-195118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:46:53.270 [DEBUG] [Thread-195118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:46:53.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:46:53.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-11-24T18:46:53.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-11-24T18:46:53.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:46:53.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:46:53.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:46:53.316 [DEBUG] [Thread-195118] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:47:01.481 [DEBUG] [Thread-195120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:47:15.478 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:47:15.480 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:47:16.527 [DEBUG] [Thread-195121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:47:18.891 [DEBUG] [Thread-195122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:47:23.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:47:23.340 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:47:23.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:47:24.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 47, 19), 22.27, 22.24, 0.0, 25.11, 19.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:47:24.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:47:19
2025-11-24T18:47:24.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:47:24.462 [DEBUG] [Thread-195123] [transport.py] [_log()] starting thread (client mode): 0xd07849d0
2025-11-24T18:47:24.463 [DEBUG] [Thread-195123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:47:24.476 [DEBUG] [Thread-195123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:47:24.477 [INFO] [Thread-195123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] client lang: <none>
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] server lang: <none>
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] kex follows: False
2025-11-24T18:47:24.480 [DEBUG] [Thread-195123] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:47:24.481 [DEBUG] [Thread-195123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:47:24.481 [DEBUG] [Thread-195123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:47:24.481 [DEBUG] [Thread-195123] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:47:24.481 [DEBUG] [Thread-195123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:47:24.481 [DEBUG] [Thread-195123] [transport.py] [_log()] Compression: none
2025-11-24T18:47:24.481 [DEBUG] [Thread-195123] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:47:24.503 [DEBUG] [Thread-195123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:47:24.507 [DEBUG] [Thread-195123] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:47:24.508 [DEBUG] [Thread-195123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:47:24.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:47:24.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:47:24.512 [DEBUG] [Thread-195123] [transport.py] [_log()] userauth is OK
2025-11-24T18:47:24.513 [DEBUG] [Thread-195123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:47:24.513 [DEBUG] [Thread-195123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:47:24.513 [DEBUG] [Thread-195123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:47:24.513 [DEBUG] [Thread-195123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:47:24.539 [INFO] [Thread-195123] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:47:24.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:47:25.173 [DEBUG] [Thread-195123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:47:25.173 [DEBUG] [Thread-195123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:47:25.174 [DEBUG] [Thread-195123] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:47:25.205 [DEBUG] [Thread-195123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:47:25.205 [DEBUG] [Thread-195123] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:47:25.207 [DEBUG] [Thread-195123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:47:25.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:47:25.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:47:25.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:47:25.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:47:25.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:47:25.229 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:47:25.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:47:25.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:47:25.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:47:25.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.699356 -999.00  +19.80  18.93     28   +0.70 1 1 1 1 1   887    0 18.15 -24.55 ----- 12.6 18.9 195.2 22.4 21.4 -28.2 21.6 -27.6 22.4 -26.4 22.5 -28.5
2025-11-24T18:47:25.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:47:25.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:47:25.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.699356
2025-11-24T18:47:25.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:47:25.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:47:25.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:47:25.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:47:25.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:47:25.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:47:19', tmtdew=22.27, humidity=22.24, cloud=0.0, wind=25.11, temperature=19.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:47:04.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:47:25.234 [DEBUG] [Thread-195123] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:47:25.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:47:25.318 [DEBUG] [Thread-195126] [transport.py] [_log()] starting thread (client mode): 0xd07f9540
2025-11-24T18:47:25.318 [DEBUG] [Thread-195126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:47:25.333 [DEBUG] [Thread-195126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:47:25.333 [INFO] [Thread-195126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] client lang: <none>
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] server lang: <none>
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] kex follows: False
2025-11-24T18:47:25.340 [DEBUG] [Thread-195126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:47:25.341 [DEBUG] [Thread-195126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:47:25.341 [DEBUG] [Thread-195126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:47:25.341 [DEBUG] [Thread-195126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:47:25.341 [DEBUG] [Thread-195126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:47:25.341 [DEBUG] [Thread-195126] [transport.py] [_log()] Compression: none
2025-11-24T18:47:25.341 [DEBUG] [Thread-195126] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:47:25.399 [DEBUG] [Thread-195126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:47:25.399 [DEBUG] [Thread-195126] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:47:25.399 [DEBUG] [Thread-195126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:47:25.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:47:25.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:47:25.459 [DEBUG] [Thread-195126] [transport.py] [_log()] userauth is OK
2025-11-24T18:47:25.459 [DEBUG] [Thread-195126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:47:25.459 [DEBUG] [Thread-195126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:47:25.459 [DEBUG] [Thread-195126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:47:25.459 [DEBUG] [Thread-195126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:47:25.473 [INFO] [Thread-195126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:47:25.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:47:25.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:47:26.325 [DEBUG] [Thread-195126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:47:26.326 [DEBUG] [Thread-195126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:47:26.373 [DEBUG] [Thread-195126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:47:26.374 [DEBUG] [Thread-195126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:47:26.383 [DEBUG] [Thread-195126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:47:26.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:47:26.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-11-24T18:47:26.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-11-24T18:47:26.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:47:26.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:47:26.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:47:26.424 [DEBUG] [Thread-195126] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:47:31.563 [DEBUG] [Thread-195128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:47:46.626 [DEBUG] [Thread-195129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:47:56.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:47:56.450 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:47:56.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-11-24T18:47:57.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 47, 52), 22.25, 22.26, 0.0, 28.37, 19.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:47:57.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:47:52
2025-11-24T18:47:57.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:47:57.602 [DEBUG] [Thread-195130] [transport.py] [_log()] starting thread (client mode): 0xd0786aa0
2025-11-24T18:47:57.603 [DEBUG] [Thread-195130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:47:57.605 [DEBUG] [Thread-195130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:47:57.605 [INFO] [Thread-195130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:47:57.609 [DEBUG] [Thread-195130] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] client lang: <none>
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] server lang: <none>
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] kex follows: False
2025-11-24T18:47:57.610 [DEBUG] [Thread-195130] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:47:57.611 [DEBUG] [Thread-195130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:47:57.611 [DEBUG] [Thread-195130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:47:57.611 [DEBUG] [Thread-195130] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:47:57.611 [DEBUG] [Thread-195130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:47:57.611 [DEBUG] [Thread-195130] [transport.py] [_log()] Compression: none
2025-11-24T18:47:57.611 [DEBUG] [Thread-195130] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:47:57.648 [DEBUG] [Thread-195130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:47:57.652 [DEBUG] [Thread-195130] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:47:57.654 [DEBUG] [Thread-195130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:47:57.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:47:57.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:47:57.659 [DEBUG] [Thread-195130] [transport.py] [_log()] userauth is OK
2025-11-24T18:47:57.659 [DEBUG] [Thread-195130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:47:57.659 [DEBUG] [Thread-195130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:47:57.659 [DEBUG] [Thread-195130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:47:57.659 [DEBUG] [Thread-195130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:47:57.688 [INFO] [Thread-195130] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:47:57.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:47:58.344 [DEBUG] [Thread-195130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:47:58.344 [DEBUG] [Thread-195130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:47:58.355 [DEBUG] [Thread-195130] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:47:58.384 [DEBUG] [Thread-195130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:47:58.385 [DEBUG] [Thread-195130] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:47:58.389 [DEBUG] [Thread-195130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:47:58.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:47:58.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:47:58.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:47:58.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:47:58.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:47:58.415 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:47:58.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:47:58.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:47:58.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:47:58.417 [DEBUG] [Thread-195130] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:47:58.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.699703 -999.00  +19.80  16.03     28   +0.70 1 1 1 1 1   887    0 18.96 -24.28 ----- 15.2 16.0 180.0 23.4 21.4 -27.9 21.6 -27.7 22.4 -26.4 22.5 -28.1
2025-11-24T18:47:58.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:47:58.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:47:58.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.699703
2025-11-24T18:47:58.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:47:58.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:47:58.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:47:58.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:47:58.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:47:58.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:47:52', tmtdew=22.25, humidity=22.26, cloud=0.0, wind=28.37, temperature=19.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:47:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:47:58.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:47:58.524 [DEBUG] [Thread-195133] [transport.py] [_log()] starting thread (client mode): 0xd3163cd0
2025-11-24T18:47:58.524 [DEBUG] [Thread-195133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:47:58.538 [DEBUG] [Thread-195133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:47:58.538 [INFO] [Thread-195133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] client lang: <none>
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] server lang: <none>
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] kex follows: False
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] Compression: none
2025-11-24T18:47:58.546 [DEBUG] [Thread-195133] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:47:58.602 [DEBUG] [Thread-195133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:47:58.602 [DEBUG] [Thread-195133] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:47:58.602 [DEBUG] [Thread-195133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:47:58.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:47:58.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:47:58.659 [DEBUG] [Thread-195133] [transport.py] [_log()] userauth is OK
2025-11-24T18:47:58.659 [DEBUG] [Thread-195133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:47:58.660 [DEBUG] [Thread-195133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:47:58.660 [DEBUG] [Thread-195133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:47:58.660 [DEBUG] [Thread-195133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:47:58.673 [INFO] [Thread-195133] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:47:58.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:47:58.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:47:59.437 [DEBUG] [Thread-195133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:47:59.445 [DEBUG] [Thread-195133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:47:59.486 [DEBUG] [Thread-195133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:47:59.486 [DEBUG] [Thread-195133] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:47:59.495 [DEBUG] [Thread-195133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:47:59.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:47:59.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-11-24T18:47:59.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-11-24T18:47:59.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:47:59.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:47:59.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:47:59.529 [DEBUG] [Thread-195133] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:48:01.680 [DEBUG] [Thread-195135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:48:15.633 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:48:15.636 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:48:16.810 [DEBUG] [Thread-195136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:48:19.137 [DEBUG] [Thread-195137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:48:23.153 [DEBUG] [Thread-195049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:48:29.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:48:29.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:48:29.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-11-24T18:48:30.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 48, 25), 22.19, 22.34, 0.0, 27.23, 19.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:48:30.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:48:25
2025-11-24T18:48:30.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:48:30.635 [DEBUG] [Thread-195138] [transport.py] [_log()] starting thread (client mode): 0xd07fa050
2025-11-24T18:48:30.635 [DEBUG] [Thread-195138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:48:30.656 [DEBUG] [Thread-195138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:48:30.656 [INFO] [Thread-195138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:48:30.659 [DEBUG] [Thread-195138] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:48:30.659 [DEBUG] [Thread-195138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] client lang: <none>
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] server lang: <none>
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] kex follows: False
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] Compression: none
2025-11-24T18:48:30.660 [DEBUG] [Thread-195138] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:48:30.679 [DEBUG] [Thread-195138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:48:30.680 [DEBUG] [Thread-195138] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:48:30.680 [DEBUG] [Thread-195138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:48:30.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:48:30.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:48:30.682 [DEBUG] [Thread-195138] [transport.py] [_log()] userauth is OK
2025-11-24T18:48:30.683 [DEBUG] [Thread-195138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:48:30.683 [DEBUG] [Thread-195138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:48:30.683 [DEBUG] [Thread-195138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:48:30.683 [DEBUG] [Thread-195138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:48:30.718 [INFO] [Thread-195138] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:48:30.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:48:31.353 [DEBUG] [Thread-195138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:48:31.354 [DEBUG] [Thread-195138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:48:31.355 [DEBUG] [Thread-195138] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:48:31.394 [DEBUG] [Thread-195138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:48:31.394 [DEBUG] [Thread-195138] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:48:31.397 [DEBUG] [Thread-195138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:48:31.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:48:31.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:48:31.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:48:31.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:48:31.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:48:31.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:48:31.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:48:31.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:48:31.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:48:31.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.700051 -999.00  +19.70  21.25     28   +0.70 1 1 1 1 1   887    0 18.77 -23.86 ----- 19.7 21.2 166.6 29.6 21.4 -28.3 21.6 -28.8 22.4 -26.4 22.4 -28.3
2025-11-24T18:48:31.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:48:31.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:48:31.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.700051
2025-11-24T18:48:31.424 [DEBUG] [Thread-195138] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:48:31.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:48:31.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:48:31.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:48:31.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:48:31.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:48:31.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:48:25', tmtdew=22.19, humidity=22.34, cloud=0.0, wind=27.23, temperature=19.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:48:04.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:48:31.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:48:31.515 [DEBUG] [Thread-195141] [transport.py] [_log()] starting thread (client mode): 0xd07867a0
2025-11-24T18:48:31.515 [DEBUG] [Thread-195141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:48:31.529 [DEBUG] [Thread-195141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:48:31.529 [INFO] [Thread-195141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:48:31.537 [DEBUG] [Thread-195141] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] client lang: <none>
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] server lang: <none>
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] kex follows: False
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:48:31.538 [DEBUG] [Thread-195141] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:48:31.539 [DEBUG] [Thread-195141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:48:31.539 [DEBUG] [Thread-195141] [transport.py] [_log()] Compression: none
2025-11-24T18:48:31.539 [DEBUG] [Thread-195141] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:48:31.596 [DEBUG] [Thread-195141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:48:31.597 [DEBUG] [Thread-195141] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:48:31.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:48:31.598 [DEBUG] [Thread-195141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:48:31.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:48:31.652 [DEBUG] [Thread-195141] [transport.py] [_log()] userauth is OK
2025-11-24T18:48:31.653 [DEBUG] [Thread-195141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:48:31.653 [DEBUG] [Thread-195141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:48:31.653 [DEBUG] [Thread-195141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:48:31.653 [DEBUG] [Thread-195141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:48:31.671 [INFO] [Thread-195141] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:48:31.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:48:31.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:48:31.851 [DEBUG] [Thread-195143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:48:32.505 [DEBUG] [Thread-195141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:48:32.506 [DEBUG] [Thread-195141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:48:32.553 [DEBUG] [Thread-195141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:48:32.553 [DEBUG] [Thread-195141] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:48:32.561 [DEBUG] [Thread-195141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:48:32.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:48:32.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-11-24T18:48:32.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:48:32.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:48:32.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:48:32.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:48:32.604 [DEBUG] [Thread-195141] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:48:46.907 [DEBUG] [Thread-195144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:49:01.935 [DEBUG] [Thread-195145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:49:02.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:49:02.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:49:02.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-11-24T18:49:03.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 48, 57), 22.13, 22.38, 0.0, 23.06, 19.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:49:03.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:48:57
2025-11-24T18:49:03.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:49:03.809 [DEBUG] [Thread-195146] [transport.py] [_log()] starting thread (client mode): 0xd07bcbe0
2025-11-24T18:49:03.809 [DEBUG] [Thread-195146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:49:03.830 [DEBUG] [Thread-195146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:49:03.830 [INFO] [Thread-195146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] client lang: <none>
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] server lang: <none>
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] kex follows: False
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:49:03.833 [DEBUG] [Thread-195146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:49:03.834 [DEBUG] [Thread-195146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:49:03.834 [DEBUG] [Thread-195146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:49:03.834 [DEBUG] [Thread-195146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:49:03.834 [DEBUG] [Thread-195146] [transport.py] [_log()] Compression: none
2025-11-24T18:49:03.834 [DEBUG] [Thread-195146] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:49:03.848 [DEBUG] [Thread-195146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:49:03.849 [DEBUG] [Thread-195146] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:49:03.849 [DEBUG] [Thread-195146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:49:03.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:49:03.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:49:03.849 [DEBUG] [Thread-195146] [transport.py] [_log()] userauth is OK
2025-11-24T18:49:03.850 [DEBUG] [Thread-195146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:49:03.850 [DEBUG] [Thread-195146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:49:03.850 [DEBUG] [Thread-195146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:49:03.850 [DEBUG] [Thread-195146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:49:03.858 [INFO] [Thread-195146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:49:03.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:49:04.523 [DEBUG] [Thread-195146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:49:04.523 [DEBUG] [Thread-195146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:49:04.523 [DEBUG] [Thread-195146] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:49:04.564 [DEBUG] [Thread-195146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:49:04.564 [DEBUG] [Thread-195146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:49:04.567 [DEBUG] [Thread-195146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:49:04.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:49:04.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:49:04.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:49:04.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:49:04.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:49:04.584 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:49:04.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:49:04.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:49:04.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:49:04.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.700398 -999.00  +19.70  27.76     28   +0.60 1 1 1 1 1   887    0 18.44 -23.05 ----- 21.2 27.8 183.4 31.3 21.4 -28.3 21.6 -28.6 22.2 -27.0 22.4 -28.7
2025-11-24T18:49:04.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:49:04.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:49:04.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.700398
2025-11-24T18:49:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:49:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:49:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:49:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:49:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:49:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:48:57', tmtdew=22.13, humidity=22.38, cloud=0.0, wind=23.06, temperature=19.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:48:34.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:49:04.585 [DEBUG] [Thread-195146] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:49:04.660 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:49:04.672 [DEBUG] [Thread-195149] [transport.py] [_log()] starting thread (client mode): 0xd0786da0
2025-11-24T18:49:04.672 [DEBUG] [Thread-195149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:49:04.692 [DEBUG] [Thread-195149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:49:04.692 [INFO] [Thread-195149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] client lang: <none>
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] server lang: <none>
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] kex follows: False
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:49:04.699 [DEBUG] [Thread-195149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:49:04.700 [DEBUG] [Thread-195149] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:49:04.700 [DEBUG] [Thread-195149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:49:04.700 [DEBUG] [Thread-195149] [transport.py] [_log()] Compression: none
2025-11-24T18:49:04.700 [DEBUG] [Thread-195149] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:49:04.754 [DEBUG] [Thread-195149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:49:04.754 [DEBUG] [Thread-195149] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:49:04.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:49:04.754 [DEBUG] [Thread-195149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:49:04.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:49:04.811 [DEBUG] [Thread-195149] [transport.py] [_log()] userauth is OK
2025-11-24T18:49:04.812 [DEBUG] [Thread-195149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:49:04.812 [DEBUG] [Thread-195149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:49:04.812 [DEBUG] [Thread-195149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:49:04.812 [DEBUG] [Thread-195149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:49:04.826 [INFO] [Thread-195149] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:49:04.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:49:04.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:49:05.672 [DEBUG] [Thread-195149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:49:05.672 [DEBUG] [Thread-195149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:49:05.720 [DEBUG] [Thread-195149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:49:05.720 [DEBUG] [Thread-195149] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:49:05.728 [DEBUG] [Thread-195149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:49:05.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:49:05.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-11-24T18:49:05.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-11-24T18:49:05.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:49:05.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:49:05.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:49:05.761 [DEBUG] [Thread-195149] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:49:15.787 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:49:15.788 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:49:16.967 [DEBUG] [Thread-195151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:49:19.441 [DEBUG] [Thread-195152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:49:32.064 [DEBUG] [Thread-195153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:49:35.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:49:35.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:49:35.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-11-24T18:49:36.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 49, 30), 22.16, 22.33, 0.0, 22.55, 19.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:49:36.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:49:30
2025-11-24T18:49:36.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:49:36.998 [DEBUG] [Thread-195155] [transport.py] [_log()] starting thread (client mode): 0xd3161db0
2025-11-24T18:49:36.999 [DEBUG] [Thread-195155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:49:37.011 [DEBUG] [Thread-195155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:49:37.011 [INFO] [Thread-195155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] client lang: <none>
2025-11-24T18:49:37.016 [DEBUG] [Thread-195155] [transport.py] [_log()] server lang: <none>
2025-11-24T18:49:37.017 [DEBUG] [Thread-195155] [transport.py] [_log()] kex follows: False
2025-11-24T18:49:37.017 [DEBUG] [Thread-195155] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:49:37.017 [DEBUG] [Thread-195155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:49:37.017 [DEBUG] [Thread-195155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:49:37.018 [DEBUG] [Thread-195155] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:49:37.018 [DEBUG] [Thread-195155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:49:37.018 [DEBUG] [Thread-195155] [transport.py] [_log()] Compression: none
2025-11-24T18:49:37.018 [DEBUG] [Thread-195155] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:49:37.055 [DEBUG] [Thread-195155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:49:37.060 [DEBUG] [Thread-195155] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:49:37.062 [DEBUG] [Thread-195155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:49:37.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:49:37.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:49:37.068 [DEBUG] [Thread-195155] [transport.py] [_log()] userauth is OK
2025-11-24T18:49:37.068 [DEBUG] [Thread-195155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:49:37.069 [DEBUG] [Thread-195155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:49:37.069 [DEBUG] [Thread-195155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:49:37.069 [DEBUG] [Thread-195155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:49:37.111 [INFO] [Thread-195155] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:49:37.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:49:37.737 [DEBUG] [Thread-195155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:49:37.738 [DEBUG] [Thread-195155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:49:37.740 [DEBUG] [Thread-195155] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:49:37.778 [DEBUG] [Thread-195155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:49:37.778 [DEBUG] [Thread-195155] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:49:37.782 [DEBUG] [Thread-195155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:49:37.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:49:37.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:49:37.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:49:37.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:49:37.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:49:37.809 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:49:37.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:49:37.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:49:37.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:49:37.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.700745 -999.00  +19.60  17.75     28   +0.70 1 1 1 1 1   887    0 18.56 -22.64 ----- 14.2 17.8 186.2 27.6 21.4 -28.1 21.5 -29.0 22.2 -26.6 22.3 -27.9
2025-11-24T18:49:37.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:49:37.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:49:37.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.700745
2025-11-24T18:49:37.817 [DEBUG] [Thread-195155] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:49:37.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:49:37.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:49:37.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:49:37.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:49:37.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:49:37.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:49:30', tmtdew=22.16, humidity=22.33, cloud=0.0, wind=22.55, temperature=19.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:49:04.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:49:37.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:49:37.931 [DEBUG] [Thread-195158] [transport.py] [_log()] starting thread (client mode): 0xd3162b60
2025-11-24T18:49:37.931 [DEBUG] [Thread-195158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:49:37.946 [DEBUG] [Thread-195158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:49:37.946 [INFO] [Thread-195158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:49:37.954 [DEBUG] [Thread-195158] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:49:37.954 [DEBUG] [Thread-195158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:49:37.954 [DEBUG] [Thread-195158] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:49:37.954 [DEBUG] [Thread-195158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:49:37.954 [DEBUG] [Thread-195158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:49:37.954 [DEBUG] [Thread-195158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:49:37.955 [DEBUG] [Thread-195158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:49:37.955 [DEBUG] [Thread-195158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:49:37.955 [DEBUG] [Thread-195158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:49:37.955 [DEBUG] [Thread-195158] [transport.py] [_log()] client lang: <none>
2025-11-24T18:49:37.955 [DEBUG] [Thread-195158] [transport.py] [_log()] server lang: <none>
2025-11-24T18:49:37.955 [DEBUG] [Thread-195158] [transport.py] [_log()] kex follows: False
2025-11-24T18:49:37.955 [DEBUG] [Thread-195158] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:49:37.955 [DEBUG] [Thread-195158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:49:37.955 [DEBUG] [Thread-195158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:49:37.956 [DEBUG] [Thread-195158] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:49:37.956 [DEBUG] [Thread-195158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:49:37.956 [DEBUG] [Thread-195158] [transport.py] [_log()] Compression: none
2025-11-24T18:49:37.956 [DEBUG] [Thread-195158] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:49:38.012 [DEBUG] [Thread-195158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:49:38.013 [DEBUG] [Thread-195158] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:49:38.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:49:38.014 [DEBUG] [Thread-195158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:49:38.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:49:38.068 [DEBUG] [Thread-195158] [transport.py] [_log()] userauth is OK
2025-11-24T18:49:38.068 [DEBUG] [Thread-195158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:49:38.068 [DEBUG] [Thread-195158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:49:38.068 [DEBUG] [Thread-195158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:49:38.068 [DEBUG] [Thread-195158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:49:38.087 [INFO] [Thread-195158] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:49:38.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:49:38.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:49:38.882 [DEBUG] [Thread-195158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:49:38.882 [DEBUG] [Thread-195158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:49:38.929 [DEBUG] [Thread-195158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:49:38.930 [DEBUG] [Thread-195158] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:49:38.939 [DEBUG] [Thread-195158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:49:38.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:49:38.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-11-24T18:49:38.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-11-24T18:49:38.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:49:38.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:49:38.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:49:38.987 [DEBUG] [Thread-195158] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:49:47.113 [DEBUG] [Thread-195160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:49:54.093 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:50:02.242 [DEBUG] [Thread-195161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:50:09.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:50:09.018 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:50:09.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-11-24T18:50:09.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 50, 3), 22.21, 22.26, 0.0, 21.83, 19.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:50:09.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:50:03
2025-11-24T18:50:09.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:50:10.152 [DEBUG] [Thread-195162] [transport.py] [_log()] starting thread (client mode): 0xd3163580
2025-11-24T18:50:10.153 [DEBUG] [Thread-195162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:50:10.168 [DEBUG] [Thread-195162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:50:10.169 [INFO] [Thread-195162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:50:10.172 [DEBUG] [Thread-195162] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:50:10.172 [DEBUG] [Thread-195162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:50:10.172 [DEBUG] [Thread-195162] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:50:10.172 [DEBUG] [Thread-195162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:50:10.172 [DEBUG] [Thread-195162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:50:10.172 [DEBUG] [Thread-195162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:50:10.172 [DEBUG] [Thread-195162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:50:10.172 [DEBUG] [Thread-195162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] client lang: <none>
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] server lang: <none>
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] kex follows: False
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] Compression: none
2025-11-24T18:50:10.173 [DEBUG] [Thread-195162] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:50:10.190 [DEBUG] [Thread-195162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:50:10.193 [DEBUG] [Thread-195162] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:50:10.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:50:10.197 [DEBUG] [Thread-195162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:50:10.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:50:10.200 [DEBUG] [Thread-195162] [transport.py] [_log()] userauth is OK
2025-11-24T18:50:10.200 [DEBUG] [Thread-195162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:50:10.200 [DEBUG] [Thread-195162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:50:10.200 [DEBUG] [Thread-195162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:50:10.201 [DEBUG] [Thread-195162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:50:10.226 [INFO] [Thread-195162] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:50:10.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:50:12.861 [DEBUG] [Thread-195162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:50:12.861 [DEBUG] [Thread-195162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:50:12.862 [DEBUG] [Thread-195162] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:50:12.900 [DEBUG] [Thread-195162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:50:12.900 [DEBUG] [Thread-195162] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:50:12.902 [DEBUG] [Thread-195162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:50:12.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:50:12.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:50:12.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:50:12.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:50:12.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:50:12.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:50:12.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:50:12.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:50:12.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:50:12.981 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-11-24T18:50:12.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:50:03', tmtdew=22.21, humidity=22.26, cloud=0.0, wind=21.83, temperature=19.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:50:12.982 [DEBUG] [Thread-195162] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:50:13.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:50:13.072 [DEBUG] [Thread-195165] [transport.py] [_log()] starting thread (client mode): 0xd07394e0
2025-11-24T18:50:13.072 [DEBUG] [Thread-195165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:50:13.085 [DEBUG] [Thread-195165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:50:13.086 [INFO] [Thread-195165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:50:13.093 [DEBUG] [Thread-195165] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:50:13.094 [DEBUG] [Thread-195165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:50:13.094 [DEBUG] [Thread-195165] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:50:13.094 [DEBUG] [Thread-195165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:50:13.094 [DEBUG] [Thread-195165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:50:13.094 [DEBUG] [Thread-195165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:50:13.094 [DEBUG] [Thread-195165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:50:13.094 [DEBUG] [Thread-195165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:50:13.094 [DEBUG] [Thread-195165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:50:13.094 [DEBUG] [Thread-195165] [transport.py] [_log()] client lang: <none>
2025-11-24T18:50:13.094 [DEBUG] [Thread-195165] [transport.py] [_log()] server lang: <none>
2025-11-24T18:50:13.095 [DEBUG] [Thread-195165] [transport.py] [_log()] kex follows: False
2025-11-24T18:50:13.095 [DEBUG] [Thread-195165] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:50:13.095 [DEBUG] [Thread-195165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:50:13.095 [DEBUG] [Thread-195165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:50:13.095 [DEBUG] [Thread-195165] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:50:13.097 [DEBUG] [Thread-195165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:50:13.097 [DEBUG] [Thread-195165] [transport.py] [_log()] Compression: none
2025-11-24T18:50:13.097 [DEBUG] [Thread-195165] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:50:13.152 [DEBUG] [Thread-195165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:50:13.153 [DEBUG] [Thread-195165] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:50:13.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:50:13.154 [DEBUG] [Thread-195165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:50:13.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:50:13.208 [DEBUG] [Thread-195165] [transport.py] [_log()] userauth is OK
2025-11-24T18:50:13.208 [DEBUG] [Thread-195165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:50:13.209 [DEBUG] [Thread-195165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:50:13.209 [DEBUG] [Thread-195165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:50:13.209 [DEBUG] [Thread-195165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:50:13.233 [INFO] [Thread-195165] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:50:13.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:50:13.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:50:14.074 [DEBUG] [Thread-195165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:50:14.074 [DEBUG] [Thread-195165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:50:14.122 [DEBUG] [Thread-195165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:50:14.122 [DEBUG] [Thread-195165] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:50:14.131 [DEBUG] [Thread-195165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:50:14.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:50:14.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-11-24T18:50:14.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:50:14.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:50:14.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:50:14.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:50:14.171 [DEBUG] [Thread-195165] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:50:15.940 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:50:15.942 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:50:17.273 [DEBUG] [Thread-195167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:50:19.693 [DEBUG] [Thread-195168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:50:32.410 [DEBUG] [Thread-195169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:50:35.665 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:50:44.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:50:44.205 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:50:44.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:50:45.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 50, 35), 22.17, 22.24, 0.0, 20.45, 19.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:50:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:50:35
2025-11-24T18:50:45.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:50:45.355 [DEBUG] [Thread-195170] [transport.py] [_log()] starting thread (client mode): 0xd07025c0
2025-11-24T18:50:45.356 [DEBUG] [Thread-195170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:50:45.371 [DEBUG] [Thread-195170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:50:45.371 [INFO] [Thread-195170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:50:45.375 [DEBUG] [Thread-195170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:50:45.375 [DEBUG] [Thread-195170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:50:45.375 [DEBUG] [Thread-195170] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:50:45.376 [DEBUG] [Thread-195170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:50:45.376 [DEBUG] [Thread-195170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:50:45.376 [DEBUG] [Thread-195170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:50:45.376 [DEBUG] [Thread-195170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:50:45.376 [DEBUG] [Thread-195170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:50:45.376 [DEBUG] [Thread-195170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:50:45.376 [DEBUG] [Thread-195170] [transport.py] [_log()] client lang: <none>
2025-11-24T18:50:45.376 [DEBUG] [Thread-195170] [transport.py] [_log()] server lang: <none>
2025-11-24T18:50:45.376 [DEBUG] [Thread-195170] [transport.py] [_log()] kex follows: False
2025-11-24T18:50:45.376 [DEBUG] [Thread-195170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:50:45.377 [DEBUG] [Thread-195170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:50:45.377 [DEBUG] [Thread-195170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:50:45.377 [DEBUG] [Thread-195170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:50:45.378 [DEBUG] [Thread-195170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:50:45.378 [DEBUG] [Thread-195170] [transport.py] [_log()] Compression: none
2025-11-24T18:50:45.378 [DEBUG] [Thread-195170] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:50:45.415 [DEBUG] [Thread-195170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:50:45.419 [DEBUG] [Thread-195170] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:50:45.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:50:45.422 [DEBUG] [Thread-195170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:50:45.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:50:45.426 [DEBUG] [Thread-195170] [transport.py] [_log()] userauth is OK
2025-11-24T18:50:45.426 [DEBUG] [Thread-195170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:50:45.426 [DEBUG] [Thread-195170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:50:45.426 [DEBUG] [Thread-195170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:50:45.427 [DEBUG] [Thread-195170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:50:45.454 [INFO] [Thread-195170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:50:45.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:50:46.063 [DEBUG] [Thread-195170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:50:46.072 [DEBUG] [Thread-195170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:50:46.072 [DEBUG] [Thread-195170] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:50:46.104 [DEBUG] [Thread-195170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:50:46.104 [DEBUG] [Thread-195170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:50:46.106 [DEBUG] [Thread-195170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:50:46.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:50:46.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:50:46.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:50:46.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:50:46.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:50:46.119 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:50:46.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:50:46.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:50:46.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:50:46.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.701093 -999.00  +19.60  21.01     28   +0.60 1 1 1 1 1   887    0 18.55 -22.26 ----- 21.2 21.0 180.8 25.2 21.4 -27.9 21.5 -27.4 22.2 -26.7 22.3 -28.1
2025-11-24T18:50:46.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:50:46.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:50:46.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.701093
2025-11-24T18:50:46.126 [DEBUG] [Thread-195170] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:50:46.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:50:46.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:50:46.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:50:46.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:50:46.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:50:46.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:50:35', tmtdew=22.17, humidity=22.24, cloud=0.0, wind=20.45, temperature=19.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:49:34.435', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:50:46.212 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:50:46.224 [DEBUG] [Thread-195173] [transport.py] [_log()] starting thread (client mode): 0xd0787f40
2025-11-24T18:50:46.224 [DEBUG] [Thread-195173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:50:46.240 [DEBUG] [Thread-195173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:50:46.240 [INFO] [Thread-195173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] client lang: <none>
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] server lang: <none>
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] kex follows: False
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] Compression: none
2025-11-24T18:50:46.248 [DEBUG] [Thread-195173] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:50:46.307 [DEBUG] [Thread-195173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:50:46.307 [DEBUG] [Thread-195173] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:50:46.307 [DEBUG] [Thread-195173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:50:46.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:50:46.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:50:46.364 [DEBUG] [Thread-195173] [transport.py] [_log()] userauth is OK
2025-11-24T18:50:46.364 [DEBUG] [Thread-195173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:50:46.364 [DEBUG] [Thread-195173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:50:46.364 [DEBUG] [Thread-195173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:50:46.364 [DEBUG] [Thread-195173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:50:46.381 [INFO] [Thread-195173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:50:46.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:50:46.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:50:47.238 [DEBUG] [Thread-195173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:50:47.238 [DEBUG] [Thread-195173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:50:47.286 [DEBUG] [Thread-195173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:50:47.286 [DEBUG] [Thread-195173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:50:47.294 [DEBUG] [Thread-195173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:50:47.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:50:47.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-11-24T18:50:47.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-11-24T18:50:47.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:50:47.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:50:47.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:50:47.328 [DEBUG] [Thread-195173] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:50:47.452 [DEBUG] [Thread-195175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:51:02.528 [DEBUG] [Thread-195176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:51:16.095 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:51:16.098 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:51:17.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:51:17.361 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:51:17.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T18:51:17.555 [DEBUG] [Thread-195177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:51:18.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 51, 8), 22.18, 22.23, 0.0, 24.61, 19.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:51:18.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:51:08
2025-11-24T18:51:18.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:51:18.518 [DEBUG] [Thread-195178] [transport.py] [_log()] starting thread (client mode): 0xd0787730
2025-11-24T18:51:18.519 [DEBUG] [Thread-195178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:51:18.532 [DEBUG] [Thread-195178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:51:18.532 [INFO] [Thread-195178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:51:18.537 [DEBUG] [Thread-195178] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:51:18.537 [DEBUG] [Thread-195178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:51:18.537 [DEBUG] [Thread-195178] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:51:18.538 [DEBUG] [Thread-195178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:51:18.538 [DEBUG] [Thread-195178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:51:18.538 [DEBUG] [Thread-195178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:51:18.538 [DEBUG] [Thread-195178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:51:18.538 [DEBUG] [Thread-195178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:51:18.538 [DEBUG] [Thread-195178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:51:18.538 [DEBUG] [Thread-195178] [transport.py] [_log()] client lang: <none>
2025-11-24T18:51:18.538 [DEBUG] [Thread-195178] [transport.py] [_log()] server lang: <none>
2025-11-24T18:51:18.538 [DEBUG] [Thread-195178] [transport.py] [_log()] kex follows: False
2025-11-24T18:51:18.538 [DEBUG] [Thread-195178] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:51:18.539 [DEBUG] [Thread-195178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:51:18.539 [DEBUG] [Thread-195178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:51:18.539 [DEBUG] [Thread-195178] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:51:18.539 [DEBUG] [Thread-195178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:51:18.540 [DEBUG] [Thread-195178] [transport.py] [_log()] Compression: none
2025-11-24T18:51:18.540 [DEBUG] [Thread-195178] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:51:18.576 [DEBUG] [Thread-195178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:51:18.585 [DEBUG] [Thread-195178] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:51:18.586 [DEBUG] [Thread-195178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:51:18.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:51:18.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:51:18.591 [DEBUG] [Thread-195178] [transport.py] [_log()] userauth is OK
2025-11-24T18:51:18.592 [DEBUG] [Thread-195178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:51:18.592 [DEBUG] [Thread-195178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:51:18.592 [DEBUG] [Thread-195178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:51:18.592 [DEBUG] [Thread-195178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:51:18.630 [INFO] [Thread-195178] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:51:18.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:51:19.351 [DEBUG] [Thread-195178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:51:19.351 [DEBUG] [Thread-195178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:51:19.360 [DEBUG] [Thread-195178] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:51:19.391 [DEBUG] [Thread-195178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:51:19.391 [DEBUG] [Thread-195178] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:51:19.397 [DEBUG] [Thread-195178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:51:19.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:51:19.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:51:19.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:51:19.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:51:19.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:51:19.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:51:19.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:51:19.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:51:19.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:51:19.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.701787 -999.00  +19.60  23.99     28   +0.80 1 1 1 1 1   887    0 18.20 -26.70 ----- 22.6 24.0 173.8 33.5 21.4 -28.2 21.4 -28.7 22.1 -26.7 22.2 -28.2
2025-11-24T18:51:19.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:51:19.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:51:19.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.701787
2025-11-24T18:51:19.424 [DEBUG] [Thread-195178] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:51:19.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:51:19.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:51:19.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:51:19.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:51:19.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:51:19.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:51:08', tmtdew=22.18, humidity=22.23, cloud=0.0, wind=24.61, temperature=19.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:50:34.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:51:19.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:51:19.515 [DEBUG] [Thread-195181] [transport.py] [_log()] starting thread (client mode): 0xd3160f10
2025-11-24T18:51:19.516 [DEBUG] [Thread-195181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:51:19.530 [DEBUG] [Thread-195181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:51:19.530 [INFO] [Thread-195181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] client lang: <none>
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] server lang: <none>
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] kex follows: False
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] Compression: none
2025-11-24T18:51:19.538 [DEBUG] [Thread-195181] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:51:19.598 [DEBUG] [Thread-195181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:51:19.598 [DEBUG] [Thread-195181] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:51:19.598 [DEBUG] [Thread-195181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:51:19.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:51:19.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:51:19.656 [DEBUG] [Thread-195181] [transport.py] [_log()] userauth is OK
2025-11-24T18:51:19.656 [DEBUG] [Thread-195181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:51:19.656 [DEBUG] [Thread-195181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:51:19.656 [DEBUG] [Thread-195181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:51:19.656 [DEBUG] [Thread-195181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:51:19.675 [INFO] [Thread-195181] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:51:19.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:51:19.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:51:19.984 [DEBUG] [Thread-195183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:51:20.499 [DEBUG] [Thread-195181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:51:20.500 [DEBUG] [Thread-195181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:51:20.547 [DEBUG] [Thread-195181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:51:20.548 [DEBUG] [Thread-195181] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:51:20.557 [DEBUG] [Thread-195181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:51:20.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:51:20.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-11-24T18:51:20.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-11-24T18:51:20.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:51:20.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:51:20.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:51:20.603 [DEBUG] [Thread-195181] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:51:32.588 [DEBUG] [Thread-195184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:51:38.660 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:51:47.670 [DEBUG] [Thread-195185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:51:50.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:51:50.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:51:50.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-11-24T18:51:51.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 51, 40), 22.03, 22.31, 0.0, 28.94, 19.78, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:51:51.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:51:40
2025-11-24T18:51:51.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:51:51.846 [DEBUG] [Thread-195186] [transport.py] [_log()] starting thread (client mode): 0xd3163580
2025-11-24T18:51:51.847 [DEBUG] [Thread-195186] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:51:51.858 [DEBUG] [Thread-195186] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:51:51.859 [INFO] [Thread-195186] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:51:51.863 [DEBUG] [Thread-195186] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] client lang: <none>
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] server lang: <none>
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] kex follows: False
2025-11-24T18:51:51.864 [DEBUG] [Thread-195186] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:51:51.865 [DEBUG] [Thread-195186] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:51:51.865 [DEBUG] [Thread-195186] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:51:51.865 [DEBUG] [Thread-195186] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:51:51.865 [DEBUG] [Thread-195186] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:51:51.866 [DEBUG] [Thread-195186] [transport.py] [_log()] Compression: none
2025-11-24T18:51:51.866 [DEBUG] [Thread-195186] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:51:51.907 [DEBUG] [Thread-195186] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:51:51.910 [DEBUG] [Thread-195186] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:51:51.912 [DEBUG] [Thread-195186] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:51:51.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:51:51.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:51:51.916 [DEBUG] [Thread-195186] [transport.py] [_log()] userauth is OK
2025-11-24T18:51:51.916 [DEBUG] [Thread-195186] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:51:51.916 [DEBUG] [Thread-195186] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:51:51.916 [DEBUG] [Thread-195186] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:51:51.916 [DEBUG] [Thread-195186] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:51:51.934 [INFO] [Thread-195186] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:51:51.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:51:52.517 [DEBUG] [Thread-195186] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:51:52.517 [DEBUG] [Thread-195186] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:51:52.529 [DEBUG] [Thread-195186] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:51:52.557 [DEBUG] [Thread-195186] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:51:52.558 [DEBUG] [Thread-195186] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:51:52.561 [DEBUG] [Thread-195186] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:51:52.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:51:52.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:51:52.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:51:52.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:51:52.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:51:52.586 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:51:52.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:51:52.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:51:52.588 [DEBUG] [Thread-195186] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:51:52.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:51:52.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.702134 -999.00  +19.60  23.17     28   +0.80 1 1 1 1 1   887    0 18.64 -27.98 ----- 21.5 23.2 171.8 28.8 21.3 -27.9 21.4 -28.7 22.1 -26.8 22.2 -28.0
2025-11-24T18:51:52.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:51:52.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:51:52.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.702134
2025-11-24T18:51:52.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:51:52.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:51:52.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:51:52.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:51:52.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:51:52.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:51:40', tmtdew=22.03, humidity=22.31, cloud=0.0, wind=28.94, temperature=19.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:51:04.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:51: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-11-24T18:51:52.707 [DEBUG] [Thread-195189] [transport.py] [_log()] starting thread (client mode): 0xd073b9a0
2025-11-24T18:51:52.708 [DEBUG] [Thread-195189] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:51:52.723 [DEBUG] [Thread-195189] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:51:52.723 [INFO] [Thread-195189] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] client lang: <none>
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] server lang: <none>
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] kex follows: False
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] Compression: none
2025-11-24T18:51:52.730 [DEBUG] [Thread-195189] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:51:52.792 [DEBUG] [Thread-195189] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:51:52.792 [DEBUG] [Thread-195189] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:51:52.793 [DEBUG] [Thread-195189] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:51:52.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:51:52.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:51:52.847 [DEBUG] [Thread-195189] [transport.py] [_log()] userauth is OK
2025-11-24T18:51:52.847 [DEBUG] [Thread-195189] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:51:52.848 [DEBUG] [Thread-195189] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:51:52.848 [DEBUG] [Thread-195189] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:51:52.848 [DEBUG] [Thread-195189] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:51:52.862 [INFO] [Thread-195189] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:51:52.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:51:52.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:51:53.712 [DEBUG] [Thread-195189] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:51:53.713 [DEBUG] [Thread-195189] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:51:53.762 [DEBUG] [Thread-195189] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:51:53.762 [DEBUG] [Thread-195189] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:51:53.771 [DEBUG] [Thread-195189] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:51:53.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:51:53.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-11-24T18:51:53.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-11-24T18:51:53.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:51:53.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:51:53.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:51:53.818 [DEBUG] [Thread-195189] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:52:02.739 [DEBUG] [Thread-195191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:52:03.264 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:52:16.265 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:52:16.267 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:52:17.839 [DEBUG] [Thread-195192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:52:20.207 [DEBUG] [Thread-195193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:52:23.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:52:23.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:52:23.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-11-24T18:52:24.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 52, 13), 21.99, 22.34, 0.0, 30.74, 19.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:52:24.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:52:13
2025-11-24T18:52:24.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:52:24.917 [DEBUG] [Thread-195194] [transport.py] [_log()] starting thread (client mode): 0xd3136ce0
2025-11-24T18:52:24.917 [DEBUG] [Thread-195194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:52:24.935 [DEBUG] [Thread-195194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:52:24.935 [INFO] [Thread-195194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] client lang: <none>
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] server lang: <none>
2025-11-24T18:52:24.937 [DEBUG] [Thread-195194] [transport.py] [_log()] kex follows: False
2025-11-24T18:52:24.938 [DEBUG] [Thread-195194] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:52:24.938 [DEBUG] [Thread-195194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:52:24.938 [DEBUG] [Thread-195194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:52:24.938 [DEBUG] [Thread-195194] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:52:24.938 [DEBUG] [Thread-195194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:52:24.938 [DEBUG] [Thread-195194] [transport.py] [_log()] Compression: none
2025-11-24T18:52:24.938 [DEBUG] [Thread-195194] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:52:24.951 [DEBUG] [Thread-195194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:52:24.952 [DEBUG] [Thread-195194] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:52:24.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:52:24.952 [DEBUG] [Thread-195194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:52:24.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:52:24.954 [DEBUG] [Thread-195194] [transport.py] [_log()] userauth is OK
2025-11-24T18:52:24.954 [DEBUG] [Thread-195194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:52:24.954 [DEBUG] [Thread-195194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:52:24.954 [DEBUG] [Thread-195194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:52:24.954 [DEBUG] [Thread-195194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:52:24.969 [INFO] [Thread-195194] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:52:24.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:52:25.541 [DEBUG] [Thread-195194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:52:25.542 [DEBUG] [Thread-195194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:52:25.551 [DEBUG] [Thread-195194] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:52:25.582 [DEBUG] [Thread-195194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:52:25.583 [DEBUG] [Thread-195194] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:52:25.585 [DEBUG] [Thread-195194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:52:25.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:52:25.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:52:25.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:52:25.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:52:25.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:52:25.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:52:25.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:52:25.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:52:25.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:52:25.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.702481 -999.00  +19.60  19.93     28   +0.80 1 1 1 1 1   887    0 18.30 -25.88 ----- 23.6 19.9 156.4 29.4 21.3 -28.0 21.4 -27.7 22.1 -26.3 22.2 -27.8
2025-11-24T18:52:25.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:52:25.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:52:25.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.702481
2025-11-24T18:52:25.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:52:25.605 [DEBUG] [Thread-195194] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:52:25.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:52:25.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:52:25.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:52:25.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:52:25.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:52:13', tmtdew=21.99, humidity=22.34, cloud=0.0, wind=30.74, temperature=19.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:51:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:52:25.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:52:25.701 [DEBUG] [Thread-195197] [transport.py] [_log()] starting thread (client mode): 0xc9b82f80
2025-11-24T18:52:25.702 [DEBUG] [Thread-195197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:52:25.715 [DEBUG] [Thread-195197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:52:25.715 [INFO] [Thread-195197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] client lang: <none>
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] server lang: <none>
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] kex follows: False
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:52:25.723 [DEBUG] [Thread-195197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:52:25.724 [DEBUG] [Thread-195197] [transport.py] [_log()] Compression: none
2025-11-24T18:52:25.724 [DEBUG] [Thread-195197] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:52:25.764 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:52:25.779 [DEBUG] [Thread-195197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:52:25.780 [DEBUG] [Thread-195197] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:52:25.780 [DEBUG] [Thread-195197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:52:25.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:52:25.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:52:25.836 [DEBUG] [Thread-195197] [transport.py] [_log()] userauth is OK
2025-11-24T18:52:25.836 [DEBUG] [Thread-195197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:52:25.836 [DEBUG] [Thread-195197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:52:25.836 [DEBUG] [Thread-195197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:52:25.836 [DEBUG] [Thread-195197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:52:25.855 [INFO] [Thread-195197] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:52:25.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:52:25.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:52:26.685 [DEBUG] [Thread-195197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:52:26.686 [DEBUG] [Thread-195197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:52:26.734 [DEBUG] [Thread-195197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:52:26.734 [DEBUG] [Thread-195197] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:52:26.743 [DEBUG] [Thread-195197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:52:26.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:52:26.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-11-24T18:52:26.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-11-24T18:52:26.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:52:26.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:52:26.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:52:26.778 [DEBUG] [Thread-195197] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:52:32.877 [DEBUG] [Thread-195199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:52:47.924 [DEBUG] [Thread-195200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:52:48.243 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:52:56.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:52:56.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:52:56.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-11-24T18:52:57.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 52, 46), 21.92, 22.46, 0.0, 29.98, 19.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:52:57.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:52:46
2025-11-24T18:52:57.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:52:57.896 [DEBUG] [Thread-195201] [transport.py] [_log()] starting thread (client mode): 0xc9b83160
2025-11-24T18:52:57.897 [DEBUG] [Thread-195201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:52:57.912 [DEBUG] [Thread-195201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:52:57.912 [INFO] [Thread-195201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] client lang: <none>
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] server lang: <none>
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] kex follows: False
2025-11-24T18:52:57.915 [DEBUG] [Thread-195201] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:52:57.916 [DEBUG] [Thread-195201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:52:57.916 [DEBUG] [Thread-195201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:52:57.916 [DEBUG] [Thread-195201] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:52:57.916 [DEBUG] [Thread-195201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:52:57.916 [DEBUG] [Thread-195201] [transport.py] [_log()] Compression: none
2025-11-24T18:52:57.916 [DEBUG] [Thread-195201] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:52:57.942 [DEBUG] [Thread-195201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:52:57.945 [DEBUG] [Thread-195201] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:52:57.946 [DEBUG] [Thread-195201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:52:57.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:52:57.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:52:57.949 [DEBUG] [Thread-195201] [transport.py] [_log()] userauth is OK
2025-11-24T18:52:57.949 [DEBUG] [Thread-195201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:52:57.949 [DEBUG] [Thread-195201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:52:57.949 [DEBUG] [Thread-195201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:52:57.949 [DEBUG] [Thread-195201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:52:57.966 [INFO] [Thread-195201] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:52:57.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:52:58.563 [DEBUG] [Thread-195201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:52:58.564 [DEBUG] [Thread-195201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:52:58.564 [DEBUG] [Thread-195201] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:52:58.604 [DEBUG] [Thread-195201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:52:58.604 [DEBUG] [Thread-195201] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:52:58.606 [DEBUG] [Thread-195201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:52:58.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:52:58.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:52:58.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:52:58.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:52:58.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:52:58.617 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:52:58.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:52:58.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:52:58.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:52:58.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.702828 -999.00  +19.60  20.90     28   +0.80 1 1 1 1 1   887    0 18.07 -24.60 ----- 19.7 20.9 172.2 25.3 21.2 -28.2 21.4 -27.4 22.0 -26.9 22.1 -27.9
2025-11-24T18:52:58.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:52:58.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:52:58.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.702828
2025-11-24T18:52:58.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:52:58.624 [DEBUG] [Thread-195201] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:52:58.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:52:58.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:52:58.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:52:58.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:52:58.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:52:46', tmtdew=21.92, humidity=22.46, cloud=0.0, wind=29.98, temperature=19.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:52:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:52:58.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:52:58.715 [DEBUG] [Thread-195204] [transport.py] [_log()] starting thread (client mode): 0xc9b802b0
2025-11-24T18:52:58.715 [DEBUG] [Thread-195204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:52:58.731 [DEBUG] [Thread-195204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:52:58.731 [INFO] [Thread-195204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] client lang: <none>
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] server lang: <none>
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] kex follows: False
2025-11-24T18:52:58.739 [DEBUG] [Thread-195204] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:52:58.740 [DEBUG] [Thread-195204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:52:58.740 [DEBUG] [Thread-195204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:52:58.740 [DEBUG] [Thread-195204] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:52:58.740 [DEBUG] [Thread-195204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:52:58.740 [DEBUG] [Thread-195204] [transport.py] [_log()] Compression: none
2025-11-24T18:52:58.740 [DEBUG] [Thread-195204] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:52:58.793 [DEBUG] [Thread-195204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:52:58.794 [DEBUG] [Thread-195204] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:52:58.794 [DEBUG] [Thread-195204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:52:58.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:52:58.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:52:58.851 [DEBUG] [Thread-195204] [transport.py] [_log()] userauth is OK
2025-11-24T18:52:58.851 [DEBUG] [Thread-195204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:52:58.851 [DEBUG] [Thread-195204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:52:58.851 [DEBUG] [Thread-195204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:52:58.851 [DEBUG] [Thread-195204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:52:58.865 [INFO] [Thread-195204] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:52:58.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:52:58.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:52:59.712 [DEBUG] [Thread-195204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:52:59.712 [DEBUG] [Thread-195204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:52:59.759 [DEBUG] [Thread-195204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:52:59.759 [DEBUG] [Thread-195204] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:52:59.768 [DEBUG] [Thread-195204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:52:59.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:52:59.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-11-24T18:52:59.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-11-24T18:52:59.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:52:59.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:52:59.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:52:59.801 [DEBUG] [Thread-195204] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:53:02.952 [DEBUG] [Thread-195206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:53:10.791 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:53:16.416 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:53:16.418 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:53:18.021 [DEBUG] [Thread-195207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:53:20.444 [DEBUG] [Thread-195208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:53:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:53:29.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:53:29.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-11-24T18:53:30.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 53, 18), 21.94, 22.43, 0.0, 29.66, 19.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:53:30.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:53:18
2025-11-24T18:53:30.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:53:31.141 [DEBUG] [Thread-195209] [transport.py] [_log()] starting thread (client mode): 0xd3163a30
2025-11-24T18:53:31.142 [DEBUG] [Thread-195209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:53:31.148 [DEBUG] [Thread-195209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:53:31.149 [INFO] [Thread-195209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:53:31.152 [DEBUG] [Thread-195209] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:53:31.152 [DEBUG] [Thread-195209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] client lang: <none>
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] server lang: <none>
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] kex follows: False
2025-11-24T18:53:31.153 [DEBUG] [Thread-195209] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:53:31.154 [DEBUG] [Thread-195209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:53:31.154 [DEBUG] [Thread-195209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:53:31.154 [DEBUG] [Thread-195209] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:53:31.154 [DEBUG] [Thread-195209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:53:31.154 [DEBUG] [Thread-195209] [transport.py] [_log()] Compression: none
2025-11-24T18:53:31.154 [DEBUG] [Thread-195209] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:53:31.181 [DEBUG] [Thread-195209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:53:31.185 [DEBUG] [Thread-195209] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:53:31.187 [DEBUG] [Thread-195209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:53:31.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:53:31.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:53:31.192 [DEBUG] [Thread-195209] [transport.py] [_log()] userauth is OK
2025-11-24T18:53:31.193 [DEBUG] [Thread-195209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:53:31.193 [DEBUG] [Thread-195209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:53:31.193 [DEBUG] [Thread-195209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:53:31.193 [DEBUG] [Thread-195209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:53:31.220 [INFO] [Thread-195209] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:53:31.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:53:31.815 [DEBUG] [Thread-195209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:53:31.815 [DEBUG] [Thread-195209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:53:31.825 [DEBUG] [Thread-195209] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:53:31.856 [DEBUG] [Thread-195209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:53:31.856 [DEBUG] [Thread-195209] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:53:31.859 [DEBUG] [Thread-195209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:53:31.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:53:31.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:53:31.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:53:31.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:53:31.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:53:31.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:53:31.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:53:31.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:53:31.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:53:31.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.703523 -999.00  +19.60  12.76     28   +0.90 1 1 1 1 1   887    0 18.07 -24.17 ----- 11.9 12.8 154.9 24.9 21.2 -27.7 21.3 -28.2 22.0 -26.0 22.2 -28.0
2025-11-24T18:53:31.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:53:31.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:53:31.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.703523
2025-11-24T18:53:31.888 [DEBUG] [Thread-195209] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:53:31.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:53:31.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:53:31.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:53:31.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:53:31.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:53:31.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:53:18', tmtdew=21.94, humidity=22.43, cloud=0.0, wind=29.66, temperature=19.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:53:04.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:53:31.972 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:53:31.984 [DEBUG] [Thread-195212] [transport.py] [_log()] starting thread (client mode): 0xd07fa7a0
2025-11-24T18:53:31.984 [DEBUG] [Thread-195212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:53:31.999 [DEBUG] [Thread-195212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:53:31.999 [INFO] [Thread-195212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:53:32.006 [DEBUG] [Thread-195212] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] client lang: <none>
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] server lang: <none>
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] kex follows: False
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] Compression: none
2025-11-24T18:53:32.007 [DEBUG] [Thread-195212] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:53:32.062 [DEBUG] [Thread-195212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:53:32.062 [DEBUG] [Thread-195212] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:53:32.062 [DEBUG] [Thread-195212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:53:32.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:53:32.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:53:32.119 [DEBUG] [Thread-195212] [transport.py] [_log()] userauth is OK
2025-11-24T18:53:32.119 [DEBUG] [Thread-195212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:53:32.119 [DEBUG] [Thread-195212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:53:32.119 [DEBUG] [Thread-195212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:53:32.119 [DEBUG] [Thread-195212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:53:32.134 [INFO] [Thread-195212] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:53:32.135 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:53:32.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:53:32.952 [DEBUG] [Thread-195212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:53:32.952 [DEBUG] [Thread-195212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:53:33.001 [DEBUG] [Thread-195212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:53:33.001 [DEBUG] [Thread-195212] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:53:33.011 [DEBUG] [Thread-195212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:53:33.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:53:33.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-11-24T18:53:33.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-11-24T18:53:33.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:53:33.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:53:33.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:53:33.055 [DEBUG] [Thread-195214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:53:33.060 [DEBUG] [Thread-195212] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:53:33.372 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:53:48.164 [DEBUG] [Thread-195215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:53:55.881 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:54:03.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:54:03.086 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:54:03.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-11-24T18:54:03.196 [DEBUG] [Thread-195216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:54:04.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 53, 52), 21.88, 22.53, 0.0, 28.04, 19.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:54:04.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:53:52
2025-11-24T18:54:04.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:54:04.437 [DEBUG] [Thread-195217] [transport.py] [_log()] starting thread (client mode): 0xd07f8be0
2025-11-24T18:54:04.438 [DEBUG] [Thread-195217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:54:04.450 [DEBUG] [Thread-195217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:54:04.450 [INFO] [Thread-195217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:54:04.454 [DEBUG] [Thread-195217] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:54:04.454 [DEBUG] [Thread-195217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:54:04.454 [DEBUG] [Thread-195217] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:54:04.454 [DEBUG] [Thread-195217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:54:04.454 [DEBUG] [Thread-195217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:54:04.454 [DEBUG] [Thread-195217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:54:04.454 [DEBUG] [Thread-195217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:54:04.455 [DEBUG] [Thread-195217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:54:04.455 [DEBUG] [Thread-195217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:54:04.455 [DEBUG] [Thread-195217] [transport.py] [_log()] client lang: <none>
2025-11-24T18:54:04.455 [DEBUG] [Thread-195217] [transport.py] [_log()] server lang: <none>
2025-11-24T18:54:04.455 [DEBUG] [Thread-195217] [transport.py] [_log()] kex follows: False
2025-11-24T18:54:04.455 [DEBUG] [Thread-195217] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:54:04.455 [DEBUG] [Thread-195217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:54:04.455 [DEBUG] [Thread-195217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:54:04.456 [DEBUG] [Thread-195217] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:54:04.456 [DEBUG] [Thread-195217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:54:04.456 [DEBUG] [Thread-195217] [transport.py] [_log()] Compression: none
2025-11-24T18:54:04.456 [DEBUG] [Thread-195217] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:54:04.489 [DEBUG] [Thread-195217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:54:04.494 [DEBUG] [Thread-195217] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:54:04.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:54:04.498 [DEBUG] [Thread-195217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:54:04.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:54:04.502 [DEBUG] [Thread-195217] [transport.py] [_log()] userauth is OK
2025-11-24T18:54:04.502 [DEBUG] [Thread-195217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:54:04.502 [DEBUG] [Thread-195217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:54:04.502 [DEBUG] [Thread-195217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:54:04.502 [DEBUG] [Thread-195217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:54:04.528 [INFO] [Thread-195217] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:54:04.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:54:05.143 [DEBUG] [Thread-195217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:54:05.144 [DEBUG] [Thread-195217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:54:05.145 [DEBUG] [Thread-195217] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:54:05.185 [DEBUG] [Thread-195217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:54:05.185 [DEBUG] [Thread-195217] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:54:05.188 [DEBUG] [Thread-195217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:54:05.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:54:05.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:54:05.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:54:05.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:54:05.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:54:05.210 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:54:05.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:54:05.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:54:05.211 [DEBUG] [Thread-195217] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:54:05.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:54:05.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.703870 -999.00  +19.60  16.01     28   +0.90 1 1 1 1 1   887    0 18.48 -22.64 ----- 24.0 16.0 177.0 25.0 21.2 -27.8 21.4 -27.4 21.9 -26.3 22.2 -27.8
2025-11-24T18:54:05.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:54:05.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:54:05.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.703870
2025-11-24T18:54:05.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:54:05.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:54:05.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:54:05.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:54:05.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:54:05.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:53:52', tmtdew=21.88, humidity=22.53, cloud=0.0, wind=28.04, temperature=19.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:53:34.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:54:05.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:54:05.318 [DEBUG] [Thread-195220] [transport.py] [_log()] starting thread (client mode): 0xd31344f0
2025-11-24T18:54:05.318 [DEBUG] [Thread-195220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:54:05.333 [DEBUG] [Thread-195220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:54:05.333 [INFO] [Thread-195220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:54:05.341 [DEBUG] [Thread-195220] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:54:05.341 [DEBUG] [Thread-195220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:54:05.342 [DEBUG] [Thread-195220] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:54:05.342 [DEBUG] [Thread-195220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:54:05.342 [DEBUG] [Thread-195220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:54:05.342 [DEBUG] [Thread-195220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:54:05.342 [DEBUG] [Thread-195220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:54:05.342 [DEBUG] [Thread-195220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:54:05.342 [DEBUG] [Thread-195220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:54:05.342 [DEBUG] [Thread-195220] [transport.py] [_log()] client lang: <none>
2025-11-24T18:54:05.343 [DEBUG] [Thread-195220] [transport.py] [_log()] server lang: <none>
2025-11-24T18:54:05.343 [DEBUG] [Thread-195220] [transport.py] [_log()] kex follows: False
2025-11-24T18:54:05.343 [DEBUG] [Thread-195220] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:54:05.343 [DEBUG] [Thread-195220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:54:05.343 [DEBUG] [Thread-195220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:54:05.343 [DEBUG] [Thread-195220] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:54:05.343 [DEBUG] [Thread-195220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:54:05.343 [DEBUG] [Thread-195220] [transport.py] [_log()] Compression: none
2025-11-24T18:54:05.344 [DEBUG] [Thread-195220] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:54:05.405 [DEBUG] [Thread-195220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:54:05.406 [DEBUG] [Thread-195220] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:54:05.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:54:05.407 [DEBUG] [Thread-195220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:54:05.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:54:05.464 [DEBUG] [Thread-195220] [transport.py] [_log()] userauth is OK
2025-11-24T18:54:05.464 [DEBUG] [Thread-195220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:54:05.464 [DEBUG] [Thread-195220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:54:05.465 [DEBUG] [Thread-195220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:54:05.465 [DEBUG] [Thread-195220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:54:05.486 [INFO] [Thread-195220] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:54:05.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:54:05.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:54:06.302 [DEBUG] [Thread-195220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:54:06.302 [DEBUG] [Thread-195220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:54:06.351 [DEBUG] [Thread-195220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:54:06.352 [DEBUG] [Thread-195220] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:54:06.361 [DEBUG] [Thread-195220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:54:06.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:54:06.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-11-24T18:54:06.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:54:06.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:54:06.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:54:06.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:54:06.397 [DEBUG] [Thread-195220] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:54:16.559 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:54:16.560 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:54:18.224 [DEBUG] [Thread-195222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:54:18.394 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:54:20.678 [DEBUG] [Thread-195223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:54:33.310 [DEBUG] [Thread-195224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:54:36.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:54:36.422 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:54:36.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-11-24T18:54:37.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 54, 25), 21.83, 22.59, 0.0, 25.8, 19.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:54:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:54:25
2025-11-24T18:54:37.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:54:37.541 [DEBUG] [Thread-195225] [transport.py] [_log()] starting thread (client mode): 0xc9b82170
2025-11-24T18:54:37.541 [DEBUG] [Thread-195225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:54:37.556 [DEBUG] [Thread-195225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:54:37.557 [INFO] [Thread-195225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:54:37.558 [DEBUG] [Thread-195225] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:54:37.558 [DEBUG] [Thread-195225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:54:37.558 [DEBUG] [Thread-195225] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] client lang: <none>
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] server lang: <none>
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] kex follows: False
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:54:37.559 [DEBUG] [Thread-195225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:54:37.560 [DEBUG] [Thread-195225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:54:37.560 [DEBUG] [Thread-195225] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:54:37.560 [DEBUG] [Thread-195225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:54:37.560 [DEBUG] [Thread-195225] [transport.py] [_log()] Compression: none
2025-11-24T18:54:37.560 [DEBUG] [Thread-195225] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:54:37.578 [DEBUG] [Thread-195225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:54:37.580 [DEBUG] [Thread-195225] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:54:37.580 [DEBUG] [Thread-195225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:54:37.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:54:37.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:54:37.583 [DEBUG] [Thread-195225] [transport.py] [_log()] userauth is OK
2025-11-24T18:54:37.583 [DEBUG] [Thread-195225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:54:37.583 [DEBUG] [Thread-195225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:54:37.583 [DEBUG] [Thread-195225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:54:37.583 [DEBUG] [Thread-195225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:54:37.595 [INFO] [Thread-195225] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:54:37.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:54:38.168 [DEBUG] [Thread-195225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:54:38.168 [DEBUG] [Thread-195225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:54:38.168 [DEBUG] [Thread-195225] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:54:38.209 [DEBUG] [Thread-195225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:54:38.209 [DEBUG] [Thread-195225] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:54:38.211 [DEBUG] [Thread-195225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:54:38.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:54:38.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:54:38.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:54:38.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:54:38.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:54:38.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:54:38.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:54:38.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:54:38.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:54:38.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.704217 -999.00  +19.50  28.05     28   +0.90 1 1 1 1 1   887    0 18.57 -24.43 ----- 24.0 28.1 182.2 31.4 21.2 -28.0 21.3 -27.9 21.9 -26.5 22.1 -27.9
2025-11-24T18:54:38.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:54:38.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:54:38.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.704217
2025-11-24T18:54:38.236 [DEBUG] [Thread-195225] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:54:38.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:54:38.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:54:38.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:54:38.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:54:38.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:54:38.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:54:25', tmtdew=21.83, humidity=22.59, cloud=0.0, wind=25.8, temperature=19.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:54:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:54:38.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:54:38.326 [DEBUG] [Thread-195228] [transport.py] [_log()] starting thread (client mode): 0xc9b82c50
2025-11-24T18:54:38.326 [DEBUG] [Thread-195228] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:54:38.341 [DEBUG] [Thread-195228] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:54:38.341 [INFO] [Thread-195228] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] client lang: <none>
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] server lang: <none>
2025-11-24T18:54:38.348 [DEBUG] [Thread-195228] [transport.py] [_log()] kex follows: False
2025-11-24T18:54:38.349 [DEBUG] [Thread-195228] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:54:38.349 [DEBUG] [Thread-195228] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:54:38.349 [DEBUG] [Thread-195228] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:54:38.349 [DEBUG] [Thread-195228] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:54:38.349 [DEBUG] [Thread-195228] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:54:38.349 [DEBUG] [Thread-195228] [transport.py] [_log()] Compression: none
2025-11-24T18:54:38.349 [DEBUG] [Thread-195228] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:54:38.406 [DEBUG] [Thread-195228] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:54:38.406 [DEBUG] [Thread-195228] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:54:38.406 [DEBUG] [Thread-195228] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:54:38.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:54:38.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:54:38.463 [DEBUG] [Thread-195228] [transport.py] [_log()] userauth is OK
2025-11-24T18:54:38.463 [DEBUG] [Thread-195228] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:54:38.463 [DEBUG] [Thread-195228] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:54:38.463 [DEBUG] [Thread-195228] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:54:38.463 [DEBUG] [Thread-195228] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:54:38.476 [INFO] [Thread-195228] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:54:38.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:54:38.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:54:39.299 [DEBUG] [Thread-195228] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:54:39.309 [DEBUG] [Thread-195228] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:54:39.347 [DEBUG] [Thread-195228] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:54:39.347 [DEBUG] [Thread-195228] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:54:39.357 [DEBUG] [Thread-195228] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:54:39.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:54: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-11-24T18:54: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-11-24T18:54:39.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:54:39.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:54:39.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:54:39.393 [DEBUG] [Thread-195228] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:54:40.881 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:54:48.346 [DEBUG] [Thread-195230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:03.365 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:03.382 [DEBUG] [Thread-195231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:09.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:55:09.400 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:55:09.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-11-24T18:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 54, 57), 21.78, 22.59, 0.0, 29.01, 19.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:55:10.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:54:57
2025-11-24T18:55:10.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:55:10.567 [DEBUG] [Thread-195232] [transport.py] [_log()] starting thread (client mode): 0xc9b80310
2025-11-24T18:55:10.568 [DEBUG] [Thread-195232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:55:10.575 [DEBUG] [Thread-195232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:55:10.575 [INFO] [Thread-195232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] client lang: <none>
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] server lang: <none>
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] kex follows: False
2025-11-24T18:55:10.579 [DEBUG] [Thread-195232] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:55:10.580 [DEBUG] [Thread-195232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:55:10.580 [DEBUG] [Thread-195232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:55:10.580 [DEBUG] [Thread-195232] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:55:10.580 [DEBUG] [Thread-195232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:55:10.580 [DEBUG] [Thread-195232] [transport.py] [_log()] Compression: none
2025-11-24T18:55:10.580 [DEBUG] [Thread-195232] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:55:10.617 [DEBUG] [Thread-195232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:55:10.621 [DEBUG] [Thread-195232] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:55:10.622 [DEBUG] [Thread-195232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:55:10.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:55:10.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:55:10.661 [DEBUG] [Thread-195232] [transport.py] [_log()] userauth is OK
2025-11-24T18:55:10.661 [DEBUG] [Thread-195232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:55:10.662 [DEBUG] [Thread-195232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:55:10.662 [DEBUG] [Thread-195232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:55:10.662 [DEBUG] [Thread-195232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:55:10.693 [INFO] [Thread-195232] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:55:10.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:55:13.037 [DEBUG] [Thread-195232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:55:13.038 [DEBUG] [Thread-195232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:55:13.048 [DEBUG] [Thread-195232] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:55:13.079 [DEBUG] [Thread-195232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:55:13.079 [DEBUG] [Thread-195232] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:55:13.082 [DEBUG] [Thread-195232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:55:13.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:55:13.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:55:13.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:55:13.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:55:13.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:55:13.111 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:55:13.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:55:13.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:55:13.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:55:13.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.704217 -999.00  +19.50  28.05     28   +0.90 1 1 1 1 1   887    0 18.57 -24.43 ----- 24.0 28.1 182.2 31.4 21.2 -28.0 21.3 -27.9 21.9 -26.5 22.1 -27.9
2025-11-24T18:55:13.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:55:13.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:55:13.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.704217
2025-11-24T18:55:13.120 [DEBUG] [Thread-195232] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:55:13.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:55:13.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:55:13.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:55:13.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:55:13.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:55:13.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:54:57', tmtdew=21.78, humidity=22.59, cloud=0.0, wind=29.01, temperature=19.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:54:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:55: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-11-24T18:55:13.229 [DEBUG] [Thread-195235] [transport.py] [_log()] starting thread (client mode): 0xc9b83d00
2025-11-24T18:55:13.229 [DEBUG] [Thread-195235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:55:13.244 [DEBUG] [Thread-195235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:55:13.245 [INFO] [Thread-195235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:55:13.252 [DEBUG] [Thread-195235] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:55:13.252 [DEBUG] [Thread-195235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:55:13.252 [DEBUG] [Thread-195235] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:55:13.252 [DEBUG] [Thread-195235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:55:13.252 [DEBUG] [Thread-195235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:55:13.252 [DEBUG] [Thread-195235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:55:13.252 [DEBUG] [Thread-195235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] client lang: <none>
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] server lang: <none>
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] kex follows: False
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] Compression: none
2025-11-24T18:55:13.253 [DEBUG] [Thread-195235] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:55:13.311 [DEBUG] [Thread-195235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:55:13.312 [DEBUG] [Thread-195235] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:55:13.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:55:13.313 [DEBUG] [Thread-195235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:55:13.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:55:13.367 [DEBUG] [Thread-195235] [transport.py] [_log()] userauth is OK
2025-11-24T18:55:13.368 [DEBUG] [Thread-195235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:55:13.368 [DEBUG] [Thread-195235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:55:13.368 [DEBUG] [Thread-195235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:55:13.368 [DEBUG] [Thread-195235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:55:13.386 [INFO] [Thread-195235] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:55:13.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:55:13.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:55:14.233 [DEBUG] [Thread-195235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:55:14.234 [DEBUG] [Thread-195235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:55:14.282 [DEBUG] [Thread-195235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:55:14.282 [DEBUG] [Thread-195235] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:55:14.291 [DEBUG] [Thread-195235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:55:14.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:55:14.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:55:14.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:55:14.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:55:14.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:55:14.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:55:14.345 [DEBUG] [Thread-195235] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:55:16.754 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:16.756 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:18.421 [DEBUG] [Thread-195237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:20.973 [DEBUG] [Thread-195238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:25.832 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:26.524 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:28.934 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:29.324 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:29.734 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:31.105 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:32.520 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:33.467 [DEBUG] [Thread-195239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:33.925 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:35.341 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:35.751 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:37.147 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:38.577 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:39.017 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:44.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:55:44.374 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:55:44.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-11-24T18:55:45.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 55, 30), 21.78, 22.59, 0.0, 29.8, 19.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:55:45.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:55:30
2025-11-24T18:55:45.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:55:45.466 [DEBUG] [Thread-195240] [transport.py] [_log()] starting thread (client mode): 0xc9b81d50
2025-11-24T18:55:45.466 [DEBUG] [Thread-195240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:55:45.479 [DEBUG] [Thread-195240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:55:45.479 [INFO] [Thread-195240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] client lang: <none>
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] server lang: <none>
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] kex follows: False
2025-11-24T18:55:45.483 [DEBUG] [Thread-195240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:55:45.484 [DEBUG] [Thread-195240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:55:45.484 [DEBUG] [Thread-195240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:55:45.484 [DEBUG] [Thread-195240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:55:45.484 [DEBUG] [Thread-195240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:55:45.484 [DEBUG] [Thread-195240] [transport.py] [_log()] Compression: none
2025-11-24T18:55:45.484 [DEBUG] [Thread-195240] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:55:45.514 [DEBUG] [Thread-195240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:55:45.518 [DEBUG] [Thread-195240] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:55:45.519 [DEBUG] [Thread-195240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:55:45.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:55:45.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:55:45.524 [DEBUG] [Thread-195240] [transport.py] [_log()] userauth is OK
2025-11-24T18:55:45.524 [DEBUG] [Thread-195240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:55:45.524 [DEBUG] [Thread-195240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:55:45.524 [DEBUG] [Thread-195240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:55:45.524 [DEBUG] [Thread-195240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:55:45.548 [INFO] [Thread-195240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:55:45.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:55:46.139 [DEBUG] [Thread-195240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:55:46.139 [DEBUG] [Thread-195240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:55:46.149 [DEBUG] [Thread-195240] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:55:46.180 [DEBUG] [Thread-195240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:55:46.180 [DEBUG] [Thread-195240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:55:46.183 [DEBUG] [Thread-195240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:55:46.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:55:46.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:55:46.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:55:46.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:55:46.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:55:46.202 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:55:46.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:55:46.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:55:46.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:55:46.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.705259 -999.00  +19.50  20.00     28   +0.90 1 1 1 1 1   887    0 18.38 -33.60 ----- 16.8 20.0 196.6 34.9 21.1 -28.0 21.2 -28.3 21.8 -26.1 21.9 -28.1
2025-11-24T18:55:46.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:55:46.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:55:46.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.705259
2025-11-24T18:55:46.208 [DEBUG] [Thread-195240] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:55:46.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:55:46.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:55:46.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:55:46.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:55:46.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:55:46.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:55:30', tmtdew=21.78, humidity=22.59, cloud=0.0, wind=29.8, temperature=19.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:55:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:55: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-11-24T18:55:46.300 [DEBUG] [Thread-195243] [transport.py] [_log()] starting thread (client mode): 0xd07f8340
2025-11-24T18:55:46.300 [DEBUG] [Thread-195243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:55:46.315 [DEBUG] [Thread-195243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:55:46.315 [INFO] [Thread-195243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] client lang: <none>
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] server lang: <none>
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] kex follows: False
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] Compression: none
2025-11-24T18:55:46.323 [DEBUG] [Thread-195243] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:55:46.381 [DEBUG] [Thread-195243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:55:46.381 [DEBUG] [Thread-195243] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:55:46.381 [DEBUG] [Thread-195243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:55:46.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:55:46.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:55:46.438 [DEBUG] [Thread-195243] [transport.py] [_log()] userauth is OK
2025-11-24T18:55:46.438 [DEBUG] [Thread-195243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:55:46.447 [DEBUG] [Thread-195243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:55:46.447 [DEBUG] [Thread-195243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:55:46.447 [DEBUG] [Thread-195243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:55:46.460 [INFO] [Thread-195243] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:55: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-11-24T18:55:46.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:55:47.359 [DEBUG] [Thread-195243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:55:47.359 [DEBUG] [Thread-195243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:55:47.408 [DEBUG] [Thread-195243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:55:47.408 [DEBUG] [Thread-195243] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:55:47.416 [DEBUG] [Thread-195243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:55:47.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:55:47.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:55:47.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:55:47.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:55:47.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:55:47.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:55:47.442 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:47.449 [DEBUG] [Thread-195243] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:55:48.497 [DEBUG] [Thread-195245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:55:53.863 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:00.326 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:03.591 [DEBUG] [Thread-195246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:06.771 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:13.224 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:16.898 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:16.901 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:17.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:56:17.474 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:56:17.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-11-24T18:56:18.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 56, 3), 21.75, 22.64, 0.0, 26.56, 19.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:56:18.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:56:03
2025-11-24T18:56:18.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:56:18.654 [DEBUG] [Thread-195247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:18.680 [DEBUG] [Thread-195248] [transport.py] [_log()] starting thread (client mode): 0xd07bcbe0
2025-11-24T18:56:18.681 [DEBUG] [Thread-195248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:56:18.693 [DEBUG] [Thread-195248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:56:18.694 [INFO] [Thread-195248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:56:18.697 [DEBUG] [Thread-195248] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:56:18.697 [DEBUG] [Thread-195248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] client lang: <none>
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] server lang: <none>
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] kex follows: False
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:56:18.698 [DEBUG] [Thread-195248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:56:18.699 [DEBUG] [Thread-195248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:56:18.699 [DEBUG] [Thread-195248] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:56:18.699 [DEBUG] [Thread-195248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:56:18.699 [DEBUG] [Thread-195248] [transport.py] [_log()] Compression: none
2025-11-24T18:56:18.699 [DEBUG] [Thread-195248] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:56:18.728 [DEBUG] [Thread-195248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:56:18.732 [DEBUG] [Thread-195248] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:56:18.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:56:18.734 [DEBUG] [Thread-195248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:56:18.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:56:18.737 [DEBUG] [Thread-195248] [transport.py] [_log()] userauth is OK
2025-11-24T18:56:18.737 [DEBUG] [Thread-195248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:56:18.737 [DEBUG] [Thread-195248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:56:18.737 [DEBUG] [Thread-195248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:56:18.737 [DEBUG] [Thread-195248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:56:18.767 [INFO] [Thread-195248] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:56:18.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:56:19.375 [DEBUG] [Thread-195248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:56:19.376 [DEBUG] [Thread-195248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:56:19.376 [DEBUG] [Thread-195248] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:56:19.417 [DEBUG] [Thread-195248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:56:19.417 [DEBUG] [Thread-195248] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:56:19.420 [DEBUG] [Thread-195248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:56:19.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:56:19.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:56:19.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:56:19.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:56:19.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:56:19.434 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:56:19.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:56:19.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:56:19.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:56:19.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.705259 -999.00  +19.50  20.00     28   +0.90 1 1 1 1 1   887    0 18.38 -33.60 ----- 16.8 20.0 196.6 34.9 21.1 -28.0 21.2 -28.3 21.8 -26.1 21.9 -28.1
2025-11-24T18:56:19.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:56:19.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:56:19.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.705259
2025-11-24T18:56:19.441 [DEBUG] [Thread-195248] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:56:19.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:56:19.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:56:19.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:56:19.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:56:19.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:56:19.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:56:03', tmtdew=21.75, humidity=22.64, cloud=0.0, wind=26.56, temperature=19.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:55:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:56:19.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:56:19.538 [DEBUG] [Thread-195251] [transport.py] [_log()] starting thread (client mode): 0xd3162650
2025-11-24T18:56:19.538 [DEBUG] [Thread-195251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:56:19.551 [DEBUG] [Thread-195251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:56:19.551 [INFO] [Thread-195251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:56:19.558 [DEBUG] [Thread-195251] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:56:19.558 [DEBUG] [Thread-195251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:56:19.558 [DEBUG] [Thread-195251] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:56:19.558 [DEBUG] [Thread-195251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:56:19.558 [DEBUG] [Thread-195251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:56:19.558 [DEBUG] [Thread-195251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:56:19.558 [DEBUG] [Thread-195251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:56:19.558 [DEBUG] [Thread-195251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] client lang: <none>
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] server lang: <none>
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] kex follows: False
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] Compression: none
2025-11-24T18:56:19.559 [DEBUG] [Thread-195251] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:56:19.617 [DEBUG] [Thread-195251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:56:19.617 [DEBUG] [Thread-195251] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:56:19.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:56:19.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:56:19.618 [DEBUG] [Thread-195251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:56:19.638 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:19.674 [DEBUG] [Thread-195251] [transport.py] [_log()] userauth is OK
2025-11-24T18:56:19.674 [DEBUG] [Thread-195251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:56:19.674 [DEBUG] [Thread-195251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:56:19.674 [DEBUG] [Thread-195251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:56:19.674 [DEBUG] [Thread-195251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:56:19.688 [INFO] [Thread-195251] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:56:19.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:56:19.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:56:20.522 [DEBUG] [Thread-195251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:56:20.522 [DEBUG] [Thread-195251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:56:20.570 [DEBUG] [Thread-195251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:56:20.570 [DEBUG] [Thread-195251] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:56:20.578 [DEBUG] [Thread-195251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:56:20.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:56:20.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T18:56:20.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:56:20.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:56:20.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:56:20.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:56:20.618 [DEBUG] [Thread-195251] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:56:21.254 [DEBUG] [Thread-195253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:26.091 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:32.549 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:33.716 [DEBUG] [Thread-195254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:38.965 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:45.406 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:45.626 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:47.056 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:47.506 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:47.915 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:48.336 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:48.738 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:48.833 [DEBUG] [Thread-195255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:49.140 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:49.576 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:49.980 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:50.400 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:50.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:56:50.619 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:56:50.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-11-24T18:56:50.804 [DEBUG] [Thread-195154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:56:51.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 56, 35), 21.72, 23.11, 0.0, 25.69, 19.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:56:51.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:56:35
2025-11-24T18:56:51.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:56:51.775 [DEBUG] [Thread-195256] [transport.py] [_log()] starting thread (client mode): 0xc9b823b0
2025-11-24T18:56:51.776 [DEBUG] [Thread-195256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:56:51.787 [DEBUG] [Thread-195256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:56:51.788 [INFO] [Thread-195256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:56:51.789 [DEBUG] [Thread-195256] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:56:51.789 [DEBUG] [Thread-195256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] client lang: <none>
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] server lang: <none>
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] kex follows: False
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] Compression: none
2025-11-24T18:56:51.790 [DEBUG] [Thread-195256] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:56:51.813 [DEBUG] [Thread-195256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:56:51.814 [DEBUG] [Thread-195256] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:56:51.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:56:51.815 [DEBUG] [Thread-195256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:56:51.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:56:51.817 [DEBUG] [Thread-195256] [transport.py] [_log()] userauth is OK
2025-11-24T18:56:51.817 [DEBUG] [Thread-195256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:56:51.817 [DEBUG] [Thread-195256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:56:51.817 [DEBUG] [Thread-195256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:56:51.818 [DEBUG] [Thread-195256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:56:51.854 [INFO] [Thread-195256] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:56:51.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:56:52.400 [DEBUG] [Thread-195256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:56:52.400 [DEBUG] [Thread-195256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:56:52.400 [DEBUG] [Thread-195256] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:56:52.441 [DEBUG] [Thread-195256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:56:52.441 [DEBUG] [Thread-195256] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:56:52.443 [DEBUG] [Thread-195256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:56:52.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:56:52.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:56:52.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:56:52.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:56:52.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:56:52.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:56:52.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:56:52.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:56:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:56:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.705606 -999.00  +19.50  22.74     28   +0.90 1 1 1 1 1   887    0 18.25 -31.04 ----- 24.6 22.7 186.8 31.4 21.1 -27.8 21.2 -27.5 21.8 -26.3 22.0 -27.5
2025-11-24T18:56:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:56:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:56:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.705606
2025-11-24T18:56:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:56:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:56:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:56:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:56:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:56:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:56:35', tmtdew=21.72, humidity=23.11, cloud=0.0, wind=25.69, temperature=19.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:56:04.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:56:52.462 [DEBUG] [Thread-195256] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:56:52.535 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:56:52.546 [DEBUG] [Thread-195259] [transport.py] [_log()] starting thread (client mode): 0xd3160dc0
2025-11-24T18:56:52.547 [DEBUG] [Thread-195259] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:56:52.561 [DEBUG] [Thread-195259] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:56:52.561 [INFO] [Thread-195259] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] client lang: <none>
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] server lang: <none>
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] kex follows: False
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] Compression: none
2025-11-24T18:56:52.568 [DEBUG] [Thread-195259] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:56:52.629 [DEBUG] [Thread-195259] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:56:52.629 [DEBUG] [Thread-195259] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:56:52.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:56:52.629 [DEBUG] [Thread-195259] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:56:52.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:56:52.686 [DEBUG] [Thread-195259] [transport.py] [_log()] userauth is OK
2025-11-24T18:56:52.686 [DEBUG] [Thread-195259] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:56:52.686 [DEBUG] [Thread-195259] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:56:52.686 [DEBUG] [Thread-195259] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:56:52.686 [DEBUG] [Thread-195259] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:56:52.702 [INFO] [Thread-195259] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:56:52.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:56:52.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:56:53.510 [DEBUG] [Thread-195259] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:56:53.510 [DEBUG] [Thread-195259] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:56:53.558 [DEBUG] [Thread-195259] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:56:53.558 [DEBUG] [Thread-195259] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:56:53.566 [DEBUG] [Thread-195259] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:56:53.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:56:53.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-11-24T18:56:53.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T18:56:53.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:56:53.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:56:53.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:56:53.598 [DEBUG] [Thread-195259] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:57:03.925 [DEBUG] [Thread-195261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:57:17.053 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:57:17.056 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:57:19.085 [DEBUG] [Thread-195262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:57:21.583 [DEBUG] [Thread-195263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:57:23.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:57:23.612 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:57:23.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-11-24T18:57:24.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 57, 8), 21.68, 23.17, 0.0, 29.54, 19.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:57:24.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:57:08
2025-11-24T18:57:24.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:57:24.940 [DEBUG] [Thread-195264] [transport.py] [_log()] starting thread (client mode): 0xc9b820b0
2025-11-24T18:57:24.942 [DEBUG] [Thread-195264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:57:24.954 [DEBUG] [Thread-195264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:57:24.955 [INFO] [Thread-195264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] client lang: <none>
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] server lang: <none>
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] kex follows: False
2025-11-24T18:57:24.961 [DEBUG] [Thread-195264] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:57:24.962 [DEBUG] [Thread-195264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:57:24.962 [DEBUG] [Thread-195264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:57:24.962 [DEBUG] [Thread-195264] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:57:24.962 [DEBUG] [Thread-195264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:57:24.962 [DEBUG] [Thread-195264] [transport.py] [_log()] Compression: none
2025-11-24T18:57:24.962 [DEBUG] [Thread-195264] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:57:24.995 [DEBUG] [Thread-195264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:57:25.000 [DEBUG] [Thread-195264] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:57:25.002 [DEBUG] [Thread-195264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:57:25.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:57:25.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:57:25.008 [DEBUG] [Thread-195264] [transport.py] [_log()] userauth is OK
2025-11-24T18:57:25.009 [DEBUG] [Thread-195264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:57:25.009 [DEBUG] [Thread-195264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:57:25.009 [DEBUG] [Thread-195264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:57:25.009 [DEBUG] [Thread-195264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:57:25.037 [INFO] [Thread-195264] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:57:25.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:57:25.635 [DEBUG] [Thread-195264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:57:25.636 [DEBUG] [Thread-195264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:57:25.645 [DEBUG] [Thread-195264] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:57:25.676 [DEBUG] [Thread-195264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:57:25.676 [DEBUG] [Thread-195264] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:57:25.679 [DEBUG] [Thread-195264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:57:25.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:57:25.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:57:25.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:57:25.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:57:25.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:57:25.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:57:25.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:57:25.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:57:25.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:57:25.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.705953 -999.00  +19.50  16.80     28   +0.90 1 1 1 1 1   887    0 17.59 -31.44 ----- 19.4 16.8 186.3 24.5 21.0 -27.7 21.1 -28.1 21.7 -26.2 21.9 -27.9
2025-11-24T18:57:25.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:57:25.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:57:25.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.705953
2025-11-24T18:57:25.707 [DEBUG] [Thread-195264] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:57:25.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:57:25.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:57:25.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:57:25.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:57:25.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:57:25.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:57:08', tmtdew=21.68, humidity=23.17, cloud=0.0, wind=29.54, temperature=19.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:56:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:57:25.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:57:25.805 [DEBUG] [Thread-195267] [transport.py] [_log()] starting thread (client mode): 0xc9b81300
2025-11-24T18:57:25.805 [DEBUG] [Thread-195267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:57:25.819 [DEBUG] [Thread-195267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:57:25.819 [INFO] [Thread-195267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:57:25.826 [DEBUG] [Thread-195267] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] client lang: <none>
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] server lang: <none>
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] kex follows: False
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] Compression: none
2025-11-24T18:57:25.827 [DEBUG] [Thread-195267] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:57:25.889 [DEBUG] [Thread-195267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:57:25.889 [DEBUG] [Thread-195267] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:57:25.890 [DEBUG] [Thread-195267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:57:25.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:57:25.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:57:25.946 [DEBUG] [Thread-195267] [transport.py] [_log()] userauth is OK
2025-11-24T18:57:25.946 [DEBUG] [Thread-195267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:57:25.946 [DEBUG] [Thread-195267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:57:25.946 [DEBUG] [Thread-195267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:57:25.946 [DEBUG] [Thread-195267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:57:25.961 [INFO] [Thread-195267] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:57:25.961 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:57:25.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:57:26.824 [DEBUG] [Thread-195267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:57:26.825 [DEBUG] [Thread-195267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:57:26.873 [DEBUG] [Thread-195267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:57:26.873 [DEBUG] [Thread-195267] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:57:26.882 [DEBUG] [Thread-195267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:57:26.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:57:26.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-11-24T18:57:26.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-11-24T18:57:26.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:57:26.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:57:26.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:57:26.928 [DEBUG] [Thread-195267] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:57:34.117 [DEBUG] [Thread-195269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:57:49.163 [DEBUG] [Thread-195270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:57:56.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:57:56.951 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:57:56.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-11-24T18:57:58.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 57, 41), 21.75, 23.14, 0.0, 27.42, 19.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:57:58.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:57:41
2025-11-24T18:57:58.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:57:58.401 [DEBUG] [Thread-195271] [transport.py] [_log()] starting thread (client mode): 0xd31625c0
2025-11-24T18:57:58.401 [DEBUG] [Thread-195271] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:57:58.417 [DEBUG] [Thread-195271] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:57:58.417 [INFO] [Thread-195271] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:57:58.420 [DEBUG] [Thread-195271] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] client lang: <none>
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] server lang: <none>
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] kex follows: False
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:57:58.421 [DEBUG] [Thread-195271] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:57:58.422 [DEBUG] [Thread-195271] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:57:58.422 [DEBUG] [Thread-195271] [transport.py] [_log()] Compression: none
2025-11-24T18:57:58.422 [DEBUG] [Thread-195271] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:57:58.448 [DEBUG] [Thread-195271] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:57:58.450 [DEBUG] [Thread-195271] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:57:58.451 [DEBUG] [Thread-195271] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:57:58.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:57:58.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:57:58.454 [DEBUG] [Thread-195271] [transport.py] [_log()] userauth is OK
2025-11-24T18:57:58.454 [DEBUG] [Thread-195271] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:57:58.454 [DEBUG] [Thread-195271] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:57:58.454 [DEBUG] [Thread-195271] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:57:58.454 [DEBUG] [Thread-195271] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:57:58.477 [INFO] [Thread-195271] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:57:58.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:57:59.069 [DEBUG] [Thread-195271] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:57:59.070 [DEBUG] [Thread-195271] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:57:59.071 [DEBUG] [Thread-195271] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:57:59.110 [DEBUG] [Thread-195271] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:57:59.110 [DEBUG] [Thread-195271] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:57:59.113 [DEBUG] [Thread-195271] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:57:59.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:57:59.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:57:59.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:57:59.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:57:59.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:57:59.136 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:57:59.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:57:59.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:57:59.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:57:59.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.706648 -999.00  +19.40  20.15     28   +0.80 1 1 1 1 1   887    0 18.02 -29.98 ----- 17.7 20.1 194.8 34.9 21.0 -27.7 21.1 -28.8 21.6 -26.5 21.9 -28.2
2025-11-24T18:57:59.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:57:59.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:57:59.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.706648
2025-11-24T18:57:59.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:57:59.142 [DEBUG] [Thread-195271] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:57:59.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:57:59.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:57:59.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:57:59.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:57:59.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:57:41', tmtdew=21.75, humidity=23.14, cloud=0.0, wind=27.42, temperature=19.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:57:34.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:57:59.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:57:59.235 [DEBUG] [Thread-195274] [transport.py] [_log()] starting thread (client mode): 0xd073bd90
2025-11-24T18:57:59.235 [DEBUG] [Thread-195274] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:57:59.249 [DEBUG] [Thread-195274] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:57:59.249 [INFO] [Thread-195274] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] client lang: <none>
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] server lang: <none>
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] kex follows: False
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:57:59.257 [DEBUG] [Thread-195274] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:57:59.258 [DEBUG] [Thread-195274] [transport.py] [_log()] Compression: none
2025-11-24T18:57:59.258 [DEBUG] [Thread-195274] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:57:59.313 [DEBUG] [Thread-195274] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:57:59.313 [DEBUG] [Thread-195274] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:57:59.313 [DEBUG] [Thread-195274] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:57:59.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:57:59.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:57:59.370 [DEBUG] [Thread-195274] [transport.py] [_log()] userauth is OK
2025-11-24T18:57:59.370 [DEBUG] [Thread-195274] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:57:59.370 [DEBUG] [Thread-195274] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:57:59.370 [DEBUG] [Thread-195274] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:57:59.370 [DEBUG] [Thread-195274] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:57:59.388 [INFO] [Thread-195274] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:57:59.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:57:59.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:58:00.220 [DEBUG] [Thread-195274] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:58:00.220 [DEBUG] [Thread-195274] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:58:00.268 [DEBUG] [Thread-195274] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:58:00.268 [DEBUG] [Thread-195274] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:58:00.276 [DEBUG] [Thread-195274] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:58:00.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:58:00.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-11-24T18:58:00.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-11-24T18:58:00.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:58:00.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:58:00.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:58:00.318 [DEBUG] [Thread-195274] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:58:04.203 [DEBUG] [Thread-195276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:58:17.201 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:58:17.209 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:58:19.303 [DEBUG] [Thread-195277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:58:21.798 [DEBUG] [Thread-195278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:58:30.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:58:30.353 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:58:30.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-11-24T18:58:31.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 58, 13), 21.74, 23.14, 0.0, 27.01, 19.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:58:31.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:58:13
2025-11-24T18:58:31.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:58:31.432 [DEBUG] [Thread-195279] [transport.py] [_log()] starting thread (client mode): 0xd073b9d0
2025-11-24T18:58:31.433 [DEBUG] [Thread-195279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:58:31.446 [DEBUG] [Thread-195279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:58:31.447 [INFO] [Thread-195279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:58:31.452 [DEBUG] [Thread-195279] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:58:31.452 [DEBUG] [Thread-195279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:58:31.452 [DEBUG] [Thread-195279] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:58:31.452 [DEBUG] [Thread-195279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:58:31.452 [DEBUG] [Thread-195279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:58:31.452 [DEBUG] [Thread-195279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:58:31.452 [DEBUG] [Thread-195279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:58:31.452 [DEBUG] [Thread-195279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:58:31.452 [DEBUG] [Thread-195279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:58:31.453 [DEBUG] [Thread-195279] [transport.py] [_log()] client lang: <none>
2025-11-24T18:58:31.453 [DEBUG] [Thread-195279] [transport.py] [_log()] server lang: <none>
2025-11-24T18:58:31.453 [DEBUG] [Thread-195279] [transport.py] [_log()] kex follows: False
2025-11-24T18:58:31.453 [DEBUG] [Thread-195279] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:58:31.454 [DEBUG] [Thread-195279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:58:31.454 [DEBUG] [Thread-195279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:58:31.454 [DEBUG] [Thread-195279] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:58:31.454 [DEBUG] [Thread-195279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:58:31.454 [DEBUG] [Thread-195279] [transport.py] [_log()] Compression: none
2025-11-24T18:58:31.454 [DEBUG] [Thread-195279] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:58:31.493 [DEBUG] [Thread-195279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:58:31.498 [DEBUG] [Thread-195279] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:58:31.500 [DEBUG] [Thread-195279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:58:31.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:58:31.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:58:31.504 [DEBUG] [Thread-195279] [transport.py] [_log()] userauth is OK
2025-11-24T18:58:31.504 [DEBUG] [Thread-195279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:58:31.504 [DEBUG] [Thread-195279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:58:31.505 [DEBUG] [Thread-195279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:58:31.505 [DEBUG] [Thread-195279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:58:31.535 [INFO] [Thread-195279] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:58:31.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:58:32.068 [DEBUG] [Thread-195279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:58:32.069 [DEBUG] [Thread-195279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:58:32.071 [DEBUG] [Thread-195279] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:58:32.109 [DEBUG] [Thread-195279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:58:32.109 [DEBUG] [Thread-195279] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:58:32.112 [DEBUG] [Thread-195279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:58:32.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:58:32.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:58:32.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:58:32.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:58:32.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:58:32.133 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:58:32.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:58:32.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:58:32.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:58:32.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.706995 -999.00  +19.40  16.22     28   +0.80 1 1 1 1 1   887    0 18.17 -27.97 ----- 19.9 16.2 188.2 31.8 21.0 -27.7 21.0 -27.5 21.6 -26.0 21.8 -27.8
2025-11-24T18:58:32.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:58:32.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:58:32.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.706995
2025-11-24T18:58:32.140 [DEBUG] [Thread-195279] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:58:32.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:58:32.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:58:32.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:58:32.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:58:32.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:58:32.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:58:13', tmtdew=21.74, humidity=23.14, cloud=0.0, wind=27.01, temperature=19.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:58:04.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:58:32.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:58:32.236 [DEBUG] [Thread-195282] [transport.py] [_log()] starting thread (client mode): 0xd073a050
2025-11-24T18:58:32.236 [DEBUG] [Thread-195282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:58:32.251 [DEBUG] [Thread-195282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:58:32.251 [INFO] [Thread-195282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:58:32.258 [DEBUG] [Thread-195282] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:58:32.258 [DEBUG] [Thread-195282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:58:32.258 [DEBUG] [Thread-195282] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:58:32.258 [DEBUG] [Thread-195282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:58:32.258 [DEBUG] [Thread-195282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:58:32.258 [DEBUG] [Thread-195282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:58:32.258 [DEBUG] [Thread-195282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] client lang: <none>
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] server lang: <none>
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] kex follows: False
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] Compression: none
2025-11-24T18:58:32.259 [DEBUG] [Thread-195282] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:58:32.317 [DEBUG] [Thread-195282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:58:32.318 [DEBUG] [Thread-195282] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:58:32.318 [DEBUG] [Thread-195282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:58:32.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:58:32.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:58:32.374 [DEBUG] [Thread-195282] [transport.py] [_log()] userauth is OK
2025-11-24T18:58:32.374 [DEBUG] [Thread-195282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:58:32.374 [DEBUG] [Thread-195282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:58:32.374 [DEBUG] [Thread-195282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:58:32.374 [DEBUG] [Thread-195282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:58:32.390 [INFO] [Thread-195282] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:58:32.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:58:32.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:58:33.228 [DEBUG] [Thread-195282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:58:33.237 [DEBUG] [Thread-195282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:58:33.276 [DEBUG] [Thread-195282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:58:33.276 [DEBUG] [Thread-195282] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:58:33.284 [DEBUG] [Thread-195282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:58:33.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:58:33.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-11-24T18:58:33.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-11-24T18:58:33.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:58:33.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:58:33.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:58:33.318 [DEBUG] [Thread-195282] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:58:34.351 [DEBUG] [Thread-195284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:58:49.429 [DEBUG] [Thread-195285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:59:03.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:59:03.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:59:03.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-11-24T18:59:04.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 58, 46), 21.75, 23.14, 0.0, 27.49, 19.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:59:04.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:58:46
2025-11-24T18:59:04.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:59:04.455 [DEBUG] [Thread-195286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:59:04.479 [DEBUG] [Thread-195287] [transport.py] [_log()] starting thread (client mode): 0xd07bc6d0
2025-11-24T18:59:04.479 [DEBUG] [Thread-195287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:59:04.494 [DEBUG] [Thread-195287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:59:04.494 [INFO] [Thread-195287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:59:04.498 [DEBUG] [Thread-195287] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:59:04.498 [DEBUG] [Thread-195287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:59:04.498 [DEBUG] [Thread-195287] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:59:04.498 [DEBUG] [Thread-195287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:59:04.499 [DEBUG] [Thread-195287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:59:04.499 [DEBUG] [Thread-195287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:59:04.499 [DEBUG] [Thread-195287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:59:04.499 [DEBUG] [Thread-195287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:59:04.499 [DEBUG] [Thread-195287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:59:04.499 [DEBUG] [Thread-195287] [transport.py] [_log()] client lang: <none>
2025-11-24T18:59:04.499 [DEBUG] [Thread-195287] [transport.py] [_log()] server lang: <none>
2025-11-24T18:59:04.499 [DEBUG] [Thread-195287] [transport.py] [_log()] kex follows: False
2025-11-24T18:59:04.499 [DEBUG] [Thread-195287] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:59:04.500 [DEBUG] [Thread-195287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:59:04.500 [DEBUG] [Thread-195287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:59:04.500 [DEBUG] [Thread-195287] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:59:04.500 [DEBUG] [Thread-195287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:59:04.500 [DEBUG] [Thread-195287] [transport.py] [_log()] Compression: none
2025-11-24T18:59:04.500 [DEBUG] [Thread-195287] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:59:04.529 [DEBUG] [Thread-195287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:59:04.533 [DEBUG] [Thread-195287] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:59:04.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:59:04.536 [DEBUG] [Thread-195287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:59:04.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:59:04.538 [DEBUG] [Thread-195287] [transport.py] [_log()] userauth is OK
2025-11-24T18:59:04.539 [DEBUG] [Thread-195287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:59:04.539 [DEBUG] [Thread-195287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:59:04.539 [DEBUG] [Thread-195287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:59:04.539 [DEBUG] [Thread-195287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:59:04.563 [INFO] [Thread-195287] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:59:04.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:59:05.153 [DEBUG] [Thread-195287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:59:05.154 [DEBUG] [Thread-195287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:59:05.163 [DEBUG] [Thread-195287] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:59:05.194 [DEBUG] [Thread-195287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:59:05.195 [DEBUG] [Thread-195287] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:59:05.201 [DEBUG] [Thread-195287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:59:05.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:59:05.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:59:05.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:59:05.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:59:05.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:59:05.226 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:59:05.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:59:05.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:59:05.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:59:05.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.707342 -999.00  +19.40  19.29     28   +0.80 1 1 1 1 1   887    0 18.12 -28.15 ----- 15.6 19.3 179.6 26.1 20.9 -27.8 21.1 -27.9 21.6 -26.1 21.8 -27.6
2025-11-24T18:59:05.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:59:05.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:59:05.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.707342
2025-11-24T18:59:05.234 [DEBUG] [Thread-195287] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:59:05.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:59:05.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:59:05.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:59:05.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:59:05.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:59:05.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:58:46', tmtdew=21.75, humidity=23.14, cloud=0.0, wind=27.49, temperature=19.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:58:34.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:59:05.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:59:05.341 [DEBUG] [Thread-195290] [transport.py] [_log()] starting thread (client mode): 0xd0702ef0
2025-11-24T18:59:05.341 [DEBUG] [Thread-195290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:59:05.355 [DEBUG] [Thread-195290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:59:05.355 [INFO] [Thread-195290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] client lang: <none>
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] server lang: <none>
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] kex follows: False
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:59:05.363 [DEBUG] [Thread-195290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:59:05.364 [DEBUG] [Thread-195290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:59:05.364 [DEBUG] [Thread-195290] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:59:05.364 [DEBUG] [Thread-195290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:59:05.364 [DEBUG] [Thread-195290] [transport.py] [_log()] Compression: none
2025-11-24T18:59:05.364 [DEBUG] [Thread-195290] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:59:05.426 [DEBUG] [Thread-195290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:59:05.427 [DEBUG] [Thread-195290] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:59:05.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:59:05.428 [DEBUG] [Thread-195290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:59:05.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:59:05.482 [DEBUG] [Thread-195290] [transport.py] [_log()] userauth is OK
2025-11-24T18:59:05.483 [DEBUG] [Thread-195290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:59:05.483 [DEBUG] [Thread-195290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:59:05.483 [DEBUG] [Thread-195290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:59:05.483 [DEBUG] [Thread-195290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:59:05.502 [INFO] [Thread-195290] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:59:05.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:59:05.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:59:06.330 [DEBUG] [Thread-195290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:59:06.330 [DEBUG] [Thread-195290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:59:06.378 [DEBUG] [Thread-195290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:59:06.378 [DEBUG] [Thread-195290] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:59:06.386 [DEBUG] [Thread-195290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:59:06.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:59:06.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-11-24T18:59:06.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-11-24T18:59:06.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:59:06.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:59:06.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:59:06.419 [DEBUG] [Thread-195290] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:59:17.351 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:59:17.353 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:59:19.489 [DEBUG] [Thread-195292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:59:22.049 [DEBUG] [Thread-195293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:59:34.597 [DEBUG] [Thread-195294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T18:59:36.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T18:59:36.421 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T18:59:36.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-11-24T18:59:37.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 59, 18), 21.75, 23.13, 0.0, 28.21, 19.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T18:59:37.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:59:18
2025-11-24T18:59:37.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T18:59:37.541 [DEBUG] [Thread-195295] [transport.py] [_log()] starting thread (client mode): 0xc9b83b80
2025-11-24T18:59:37.542 [DEBUG] [Thread-195295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:59:37.556 [DEBUG] [Thread-195295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T18:59:37.556 [INFO] [Thread-195295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T18:59:37.558 [DEBUG] [Thread-195295] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:59:37.558 [DEBUG] [Thread-195295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] client lang: <none>
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] server lang: <none>
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] kex follows: False
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:59:37.559 [DEBUG] [Thread-195295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:59:37.560 [DEBUG] [Thread-195295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:59:37.560 [DEBUG] [Thread-195295] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:59:37.560 [DEBUG] [Thread-195295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:59:37.560 [DEBUG] [Thread-195295] [transport.py] [_log()] Compression: none
2025-11-24T18:59:37.560 [DEBUG] [Thread-195295] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:59:37.580 [DEBUG] [Thread-195295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:59:37.585 [DEBUG] [Thread-195295] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:59:37.587 [DEBUG] [Thread-195295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T18:59:37.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T18:59:37.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:59:37.590 [DEBUG] [Thread-195295] [transport.py] [_log()] userauth is OK
2025-11-24T18:59:37.591 [DEBUG] [Thread-195295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:59:37.591 [DEBUG] [Thread-195295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:59:37.591 [DEBUG] [Thread-195295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T18:59:37.591 [DEBUG] [Thread-195295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:59:37.617 [INFO] [Thread-195295] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:59:37.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:59:38.228 [DEBUG] [Thread-195295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:59:38.228 [DEBUG] [Thread-195295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:59:38.238 [DEBUG] [Thread-195295] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T18:59:38.268 [DEBUG] [Thread-195295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:59:38.269 [DEBUG] [Thread-195295] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:59:38.272 [DEBUG] [Thread-195295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:59:38.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:59:38.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T18:59:38.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T18:59:38.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T18:59:38.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:59:38.293 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T18:59:38.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:59:38.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:59:38.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T18:59:38.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.707690 -999.00  +19.40  21.66     28   +0.80 1 1 1 1 1   887    0 18.03 -27.48 ----- 16.4 21.7 172.4 28.6 20.9 -27.7 21.1 -27.7 21.6 -25.6 21.8 -27.6
2025-11-24T18:59:38.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T18:59:38.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T18:59:38.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.707690
2025-11-24T18:59:38.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T18:59:38.304 [DEBUG] [Thread-195295] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:59:38.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T18:59:38.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T18:59:38.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T18:59:38.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T18:59:38.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:59:18', tmtdew=21.75, humidity=23.13, cloud=0.0, wind=28.21, temperature=19.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:59:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T18:59:38.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T18:59:38.400 [DEBUG] [Thread-195298] [transport.py] [_log()] starting thread (client mode): 0xd073a0e0
2025-11-24T18:59:38.400 [DEBUG] [Thread-195298] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T18:59:38.414 [DEBUG] [Thread-195298] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T18:59:38.414 [INFO] [Thread-195298] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] client lang: <none>
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] server lang: <none>
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] kex follows: False
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T18:59:38.422 [DEBUG] [Thread-195298] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T18:59:38.424 [DEBUG] [Thread-195298] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T18:59:38.424 [DEBUG] [Thread-195298] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T18:59:38.425 [DEBUG] [Thread-195298] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T18:59:38.425 [DEBUG] [Thread-195298] [transport.py] [_log()] Compression: none
2025-11-24T18:59:38.425 [DEBUG] [Thread-195298] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T18:59:38.480 [DEBUG] [Thread-195298] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T18:59:38.480 [DEBUG] [Thread-195298] [transport.py] [_log()] Switch to new keys ...
2025-11-24T18:59:38.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T18:59:38.481 [DEBUG] [Thread-195298] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T18:59:38.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T18:59:38.537 [DEBUG] [Thread-195298] [transport.py] [_log()] userauth is OK
2025-11-24T18:59:38.537 [DEBUG] [Thread-195298] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T18:59:38.537 [DEBUG] [Thread-195298] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T18:59:38.537 [DEBUG] [Thread-195298] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T18:59:38.537 [DEBUG] [Thread-195298] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T18:59:38.551 [INFO] [Thread-195298] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T18:59:38.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T18:59:38.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T18:59:39.387 [DEBUG] [Thread-195298] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T18:59:39.387 [DEBUG] [Thread-195298] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T18:59:39.435 [DEBUG] [Thread-195298] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T18:59:39.436 [DEBUG] [Thread-195298] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T18:59:39.445 [DEBUG] [Thread-195298] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T18:59:39.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T18:59:39.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-11-24T18:59:39.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-11-24T18:59:39.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T18:59:39.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T18:59:39.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T18:59:39.491 [DEBUG] [Thread-195298] [transport.py] [_log()] EOF in transport thread
2025-11-24T18:59:49.637 [DEBUG] [Thread-195300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:00:04.684 [DEBUG] [Thread-195301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:00:09.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:00:09.524 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:00:09.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-11-24T19:00:10.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 18, 59, 51), 21.71, 23.19, 0.0, 24.88, 19.5, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:00:10.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 18:59:51
2025-11-24T19:00:10.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:00:11.039 [DEBUG] [Thread-195302] [transport.py] [_log()] starting thread (client mode): 0xd3135690
2025-11-24T19:00:11.040 [DEBUG] [Thread-195302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:00:11.051 [DEBUG] [Thread-195302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:00:11.051 [INFO] [Thread-195302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] client lang: <none>
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] server lang: <none>
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] kex follows: False
2025-11-24T19:00:11.055 [DEBUG] [Thread-195302] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:00:11.056 [DEBUG] [Thread-195302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:00:11.056 [DEBUG] [Thread-195302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:00:11.056 [DEBUG] [Thread-195302] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:00:11.056 [DEBUG] [Thread-195302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:00:11.056 [DEBUG] [Thread-195302] [transport.py] [_log()] Compression: none
2025-11-24T19:00:11.056 [DEBUG] [Thread-195302] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:00:11.086 [DEBUG] [Thread-195302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:00:11.091 [DEBUG] [Thread-195302] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:00:11.092 [DEBUG] [Thread-195302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:00:11.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:00:11.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:00:11.095 [DEBUG] [Thread-195302] [transport.py] [_log()] userauth is OK
2025-11-24T19:00:11.096 [DEBUG] [Thread-195302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:00:11.096 [DEBUG] [Thread-195302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:00:11.096 [DEBUG] [Thread-195302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:00:11.096 [DEBUG] [Thread-195302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:00:11.107 [INFO] [Thread-195302] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:00:11.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:00:17.504 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:00:17.505 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:00:17.697 [DEBUG] [Thread-195302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:00:17.697 [DEBUG] [Thread-195302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:00:17.707 [DEBUG] [Thread-195302] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:00:17.738 [DEBUG] [Thread-195302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:00:17.738 [DEBUG] [Thread-195302] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:00:17.741 [DEBUG] [Thread-195302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:00:17.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:00:17.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:00:17.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:00:17.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:00:17.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:00:17.823 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:00:17.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:00:17.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:00:17.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:00:17.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.707690 -999.00  +19.40  21.66     28   +0.80 1 1 1 1 1   887    0 18.03 -27.48 ----- 16.4 21.7 172.4 28.6 20.9 -27.7 21.1 -27.7 21.6 -25.6 21.8 -27.6
2025-11-24T19:00:17.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:00:17.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:00:17.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.707690
2025-11-24T19:00:17.830 [DEBUG] [Thread-195302] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:00:17.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:00:17.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:00:17.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:00:17.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:00:17.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:00:17.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T18:59:51', tmtdew=21.71, humidity=23.19, cloud=0.0, wind=24.88, temperature=19.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T16:59:04.416', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:00:17.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:00:17.929 [DEBUG] [Thread-195305] [transport.py] [_log()] starting thread (client mode): 0xd0701480
2025-11-24T19:00:17.929 [DEBUG] [Thread-195305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:00:17.944 [DEBUG] [Thread-195305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:00:17.944 [INFO] [Thread-195305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:00:17.951 [DEBUG] [Thread-195305] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:00:17.951 [DEBUG] [Thread-195305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] client lang: <none>
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] server lang: <none>
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] kex follows: False
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] Compression: none
2025-11-24T19:00:17.952 [DEBUG] [Thread-195305] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:00:18.008 [DEBUG] [Thread-195305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:00:18.008 [DEBUG] [Thread-195305] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:00:18.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:00:18.009 [DEBUG] [Thread-195305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:00:18.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:00:18.066 [DEBUG] [Thread-195305] [transport.py] [_log()] userauth is OK
2025-11-24T19:00:18.066 [DEBUG] [Thread-195305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:00:18.066 [DEBUG] [Thread-195305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:00:18.066 [DEBUG] [Thread-195305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:00:18.066 [DEBUG] [Thread-195305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:00:18.089 [INFO] [Thread-195305] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:00:18.089 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:00:18.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:00:18.915 [DEBUG] [Thread-195305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:00:18.915 [DEBUG] [Thread-195305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:00:18.962 [DEBUG] [Thread-195305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:00:18.962 [DEBUG] [Thread-195305] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:00:18.971 [DEBUG] [Thread-195305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:00:18.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:00:18.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-11-24T19:00:18.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-11-24T19:00:19.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:00:19.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:00:19.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:00:19.011 [DEBUG] [Thread-195305] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:00:19.752 [DEBUG] [Thread-195307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:00:22.357 [DEBUG] [Thread-195308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:00:34.886 [DEBUG] [Thread-195309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:00:49.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:00:49.034 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:00:49.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-11-24T19:00:49.919 [DEBUG] [Thread-195310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:00:49.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 0, 24), 21.69, 23.21, 0.0, 29.62, 19.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:00:49.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:00:24
2025-11-24T19:00:50.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:00:50.322 [DEBUG] [Thread-195311] [transport.py] [_log()] starting thread (client mode): 0xd0739300
2025-11-24T19:00:50.323 [DEBUG] [Thread-195311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:00:50.336 [DEBUG] [Thread-195311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:00:50.336 [INFO] [Thread-195311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:00:50.340 [DEBUG] [Thread-195311] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:00:50.340 [DEBUG] [Thread-195311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:00:50.340 [DEBUG] [Thread-195311] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:00:50.340 [DEBUG] [Thread-195311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:00:50.340 [DEBUG] [Thread-195311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:00:50.340 [DEBUG] [Thread-195311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:00:50.340 [DEBUG] [Thread-195311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:00:50.340 [DEBUG] [Thread-195311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] client lang: <none>
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] server lang: <none>
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] kex follows: False
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] Compression: none
2025-11-24T19:00:50.341 [DEBUG] [Thread-195311] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:00:50.371 [DEBUG] [Thread-195311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:00:50.373 [DEBUG] [Thread-195311] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:00:50.374 [DEBUG] [Thread-195311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:00:50.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:00:50.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:00:50.381 [DEBUG] [Thread-195311] [transport.py] [_log()] userauth is OK
2025-11-24T19:00:50.381 [DEBUG] [Thread-195311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:00:50.381 [DEBUG] [Thread-195311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:00:50.381 [DEBUG] [Thread-195311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:00:50.381 [DEBUG] [Thread-195311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:00:50.399 [INFO] [Thread-195311] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:00:50.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:00:50.979 [DEBUG] [Thread-195311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:00:50.980 [DEBUG] [Thread-195311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:00:50.980 [DEBUG] [Thread-195311] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:00:51.020 [DEBUG] [Thread-195311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:00:51.021 [DEBUG] [Thread-195311] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:00:51.026 [DEBUG] [Thread-195311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:00:51.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:00:51.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:00:51.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:00:51.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:00:51.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:00:51.046 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:00:51.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:00:51.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:00:51.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:00:51.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.708731 -999.00  +19.30  13.05     28   +0.80 1 1 1 1 1   887    0 18.59 -25.85 ----- 18.2 13.1 174.9 29.3 20.8 -27.5 20.9 -28.9 21.5 -26.0 21.6 -28.0
2025-11-24T19:00:51.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:00:51.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:00:51.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.708731
2025-11-24T19:00:51.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:00:51.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:00:51.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:00:51.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:00:51.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:00:51.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:00:24', tmtdew=21.69, humidity=23.21, cloud=0.0, wind=29.62, temperature=19.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:00:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:00:51.050 [DEBUG] [Thread-195311] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:00:51.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:00:51.136 [DEBUG] [Thread-195314] [transport.py] [_log()] starting thread (client mode): 0xd073bc10
2025-11-24T19:00:51.136 [DEBUG] [Thread-195314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:00:51.151 [DEBUG] [Thread-195314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:00:51.151 [INFO] [Thread-195314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] client lang: <none>
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] server lang: <none>
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] kex follows: False
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:00:51.158 [DEBUG] [Thread-195314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:00:51.159 [DEBUG] [Thread-195314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:00:51.159 [DEBUG] [Thread-195314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:00:51.159 [DEBUG] [Thread-195314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:00:51.159 [DEBUG] [Thread-195314] [transport.py] [_log()] Compression: none
2025-11-24T19:00:51.159 [DEBUG] [Thread-195314] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:00:51.218 [DEBUG] [Thread-195314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:00:51.219 [DEBUG] [Thread-195314] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:00:51.219 [DEBUG] [Thread-195314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:00:51.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:00:51.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:00:51.277 [DEBUG] [Thread-195314] [transport.py] [_log()] userauth is OK
2025-11-24T19:00:51.277 [DEBUG] [Thread-195314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:00:51.277 [DEBUG] [Thread-195314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:00:51.277 [DEBUG] [Thread-195314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:00:51.277 [DEBUG] [Thread-195314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:00:51.291 [INFO] [Thread-195314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:00:51.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:00:51.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:00:52.134 [DEBUG] [Thread-195314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:00:52.134 [DEBUG] [Thread-195314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:00:52.182 [DEBUG] [Thread-195314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:00:52.182 [DEBUG] [Thread-195314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:00:52.190 [DEBUG] [Thread-195314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:00:52.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:00:52.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-11-24T19:00:52.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-11-24T19:00:52.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:00:52.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:00:52.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:00:52.222 [DEBUG] [Thread-195314] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:01:04.952 [DEBUG] [Thread-195316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:01:17.658 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:01:17.660 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:01:20.038 [DEBUG] [Thread-195317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:01:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:01:22.255 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:01:22.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-11-24T19:01:22.579 [DEBUG] [Thread-195318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:01:23.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 0, 57), 21.69, 23.21, 0.0, 28.07, 19.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:01:23.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:00:57
2025-11-24T19:01:23.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:01:23.691 [DEBUG] [Thread-195319] [transport.py] [_log()] starting thread (client mode): 0xd07be320
2025-11-24T19:01:23.692 [DEBUG] [Thread-195319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:01:23.705 [DEBUG] [Thread-195319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:01:23.705 [INFO] [Thread-195319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:01:23.710 [DEBUG] [Thread-195319] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:01:23.710 [DEBUG] [Thread-195319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:01:23.710 [DEBUG] [Thread-195319] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:01:23.710 [DEBUG] [Thread-195319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:01:23.710 [DEBUG] [Thread-195319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:01:23.710 [DEBUG] [Thread-195319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:01:23.710 [DEBUG] [Thread-195319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:01:23.710 [DEBUG] [Thread-195319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:01:23.710 [DEBUG] [Thread-195319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:01:23.710 [DEBUG] [Thread-195319] [transport.py] [_log()] client lang: <none>
2025-11-24T19:01:23.711 [DEBUG] [Thread-195319] [transport.py] [_log()] server lang: <none>
2025-11-24T19:01:23.711 [DEBUG] [Thread-195319] [transport.py] [_log()] kex follows: False
2025-11-24T19:01:23.711 [DEBUG] [Thread-195319] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:01:23.711 [DEBUG] [Thread-195319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:01:23.712 [DEBUG] [Thread-195319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:01:23.712 [DEBUG] [Thread-195319] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:01:23.712 [DEBUG] [Thread-195319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:01:23.712 [DEBUG] [Thread-195319] [transport.py] [_log()] Compression: none
2025-11-24T19:01:23.712 [DEBUG] [Thread-195319] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:01:23.739 [DEBUG] [Thread-195319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:01:23.744 [DEBUG] [Thread-195319] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:01:23.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:01:23.748 [DEBUG] [Thread-195319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:01:23.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:01:23.752 [DEBUG] [Thread-195319] [transport.py] [_log()] userauth is OK
2025-11-24T19:01:23.752 [DEBUG] [Thread-195319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:01:23.753 [DEBUG] [Thread-195319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:01:23.753 [DEBUG] [Thread-195319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:01:23.753 [DEBUG] [Thread-195319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:01:23.780 [INFO] [Thread-195319] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:01:23.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:01:24.384 [DEBUG] [Thread-195319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:01:24.384 [DEBUG] [Thread-195319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:01:24.385 [DEBUG] [Thread-195319] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:01:24.416 [DEBUG] [Thread-195319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:01:24.416 [DEBUG] [Thread-195319] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:01:24.418 [DEBUG] [Thread-195319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:01:24.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:01:24.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:01:24.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:01:24.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:01:24.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:01:24.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:01:24.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:01:24.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:01:24.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:01:24.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.709078 -999.00  +19.30  15.18     28   +0.80 1 1 1 1 1   887    0 17.54 -25.77 ----- 14.9 15.2 169.4 27.9 20.9 -27.6 20.9 -27.1 21.5 -26.3 21.6 -27.7
2025-11-24T19:01:24.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:01:24.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:01:24.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.709078
2025-11-24T19:01:24.452 [DEBUG] [Thread-195319] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:01:24.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:01:24.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:01:24.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:01:24.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:01:24.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:01:24.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:00:57', tmtdew=21.69, humidity=23.21, cloud=0.0, wind=28.07, temperature=19.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:01:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:01:24.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:01:24.549 [DEBUG] [Thread-195322] [transport.py] [_log()] starting thread (client mode): 0xc9b82c50
2025-11-24T19:01:24.549 [DEBUG] [Thread-195322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:01:24.563 [DEBUG] [Thread-195322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:01:24.563 [INFO] [Thread-195322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] client lang: <none>
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] server lang: <none>
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] kex follows: False
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] Compression: none
2025-11-24T19:01:24.571 [DEBUG] [Thread-195322] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:01:24.628 [DEBUG] [Thread-195322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:01:24.628 [DEBUG] [Thread-195322] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:01:24.628 [DEBUG] [Thread-195322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:01:24.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:01:24.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:01:24.685 [DEBUG] [Thread-195322] [transport.py] [_log()] userauth is OK
2025-11-24T19:01:24.685 [DEBUG] [Thread-195322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:01:24.685 [DEBUG] [Thread-195322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:01:24.685 [DEBUG] [Thread-195322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:01:24.685 [DEBUG] [Thread-195322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:01:24.699 [INFO] [Thread-195322] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:01:24.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:01:24.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:01:25.555 [DEBUG] [Thread-195322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:01:25.555 [DEBUG] [Thread-195322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:01:25.602 [DEBUG] [Thread-195322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:01:25.602 [DEBUG] [Thread-195322] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:01:25.611 [DEBUG] [Thread-195322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:01:25.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:01:25.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-11-24T19:01:25.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-11-24T19:01:25.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:01:25.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:01:25.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:01:25.648 [DEBUG] [Thread-195322] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:01:35.076 [DEBUG] [Thread-195324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:01:50.185 [DEBUG] [Thread-195325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:01:55.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:01:55.662 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:01:55.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-11-24T19:01:56.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 1, 30), 21.64, 23.29, 0.0, 25.28, 19.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:01:56.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:01:30
2025-11-24T19:01:56.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:01:56.823 [DEBUG] [Thread-195326] [transport.py] [_log()] starting thread (client mode): 0xc9b834f0
2025-11-24T19:01:56.824 [DEBUG] [Thread-195326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:01:56.829 [DEBUG] [Thread-195326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:01:56.829 [INFO] [Thread-195326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] client lang: <none>
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] server lang: <none>
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] kex follows: False
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:01:56.832 [DEBUG] [Thread-195326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:01:56.833 [DEBUG] [Thread-195326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:01:56.833 [DEBUG] [Thread-195326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:01:56.833 [DEBUG] [Thread-195326] [transport.py] [_log()] Compression: none
2025-11-24T19:01:56.833 [DEBUG] [Thread-195326] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:01:56.858 [DEBUG] [Thread-195326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:01:56.861 [DEBUG] [Thread-195326] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:01:56.862 [DEBUG] [Thread-195326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:01:56.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:01:56.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:01:56.865 [DEBUG] [Thread-195326] [transport.py] [_log()] userauth is OK
2025-11-24T19:01:56.865 [DEBUG] [Thread-195326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:01:56.865 [DEBUG] [Thread-195326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:01:56.865 [DEBUG] [Thread-195326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:01:56.865 [DEBUG] [Thread-195326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:01:56.893 [INFO] [Thread-195326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:01:56.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:01:57.449 [DEBUG] [Thread-195326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:01:57.450 [DEBUG] [Thread-195326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:01:57.459 [DEBUG] [Thread-195326] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:01:57.491 [DEBUG] [Thread-195326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:01:57.491 [DEBUG] [Thread-195326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:01:57.494 [DEBUG] [Thread-195326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:01:57.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:01:57.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:01:57.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:01:57.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:01:57.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:01:57.508 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:01:57.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:01:57.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:01:57.510 [DEBUG] [Thread-195326] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:01:57.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:01:57.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.709426 -999.00  +19.30  18.86     29   +0.80 1 1 1 1 1   887    0 17.99 -27.93 ----- 19.8 18.9 161.8 27.3 20.9 -27.7 21.0 -27.3 21.4 -26.5 21.6 -27.5
2025-11-24T19:01:57.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:01:57.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:01:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.709426
2025-11-24T19:01:57.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:01:57.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:01:57.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:01:57.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:01:57.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:01:57.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:01:30', tmtdew=21.64, humidity=23.29, cloud=0.0, wind=25.28, temperature=19.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:01:34.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:01:57.609 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:01:57.620 [DEBUG] [Thread-195329] [transport.py] [_log()] starting thread (client mode): 0xd07ce650
2025-11-24T19:01:57.620 [DEBUG] [Thread-195329] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:01:57.636 [DEBUG] [Thread-195329] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:01:57.636 [INFO] [Thread-195329] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:01:57.643 [DEBUG] [Thread-195329] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] client lang: <none>
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] server lang: <none>
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] kex follows: False
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:01:57.644 [DEBUG] [Thread-195329] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:01:57.645 [DEBUG] [Thread-195329] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:01:57.645 [DEBUG] [Thread-195329] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:01:57.645 [DEBUG] [Thread-195329] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:01:57.645 [DEBUG] [Thread-195329] [transport.py] [_log()] Compression: none
2025-11-24T19:01:57.645 [DEBUG] [Thread-195329] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:01:57.701 [DEBUG] [Thread-195329] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:01:57.708 [DEBUG] [Thread-195329] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:01:57.709 [DEBUG] [Thread-195329] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:01:57.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:01:57.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:01:57.757 [DEBUG] [Thread-195329] [transport.py] [_log()] userauth is OK
2025-11-24T19:01:57.757 [DEBUG] [Thread-195329] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:01:57.757 [DEBUG] [Thread-195329] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:01:57.757 [DEBUG] [Thread-195329] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:01:57.757 [DEBUG] [Thread-195329] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:01:57.771 [INFO] [Thread-195329] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:01:57.771 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:01:57.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:01:58.636 [DEBUG] [Thread-195329] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:01:58.637 [DEBUG] [Thread-195329] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:01:58.685 [DEBUG] [Thread-195329] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:01:58.685 [DEBUG] [Thread-195329] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:01:58.694 [DEBUG] [Thread-195329] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:01:58.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:01:58.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:01:58.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-11-24T19:01:58.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:01:58.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:01:58.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:01:58.733 [DEBUG] [Thread-195329] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:02:05.219 [DEBUG] [Thread-195331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:02:17.820 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:02:17.830 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:02:20.282 [DEBUG] [Thread-195332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:02:22.888 [DEBUG] [Thread-195333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:02:28.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:02:28.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:02:28.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-11-24T19:02:29.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 2, 2), 21.66, 23.24, 0.0, 22.57, 19.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:02:29.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:02:02
2025-11-24T19:02:29.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:02:30.030 [DEBUG] [Thread-195334] [transport.py] [_log()] starting thread (client mode): 0xc9b81c60
2025-11-24T19:02:30.031 [DEBUG] [Thread-195334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:02:30.043 [DEBUG] [Thread-195334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:02:30.043 [INFO] [Thread-195334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:02:30.050 [DEBUG] [Thread-195334] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:02:30.050 [DEBUG] [Thread-195334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:02:30.050 [DEBUG] [Thread-195334] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:02:30.051 [DEBUG] [Thread-195334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:02:30.051 [DEBUG] [Thread-195334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:02:30.051 [DEBUG] [Thread-195334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:02:30.051 [DEBUG] [Thread-195334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:02:30.051 [DEBUG] [Thread-195334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:02:30.051 [DEBUG] [Thread-195334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:02:30.051 [DEBUG] [Thread-195334] [transport.py] [_log()] client lang: <none>
2025-11-24T19:02:30.051 [DEBUG] [Thread-195334] [transport.py] [_log()] server lang: <none>
2025-11-24T19:02:30.051 [DEBUG] [Thread-195334] [transport.py] [_log()] kex follows: False
2025-11-24T19:02:30.051 [DEBUG] [Thread-195334] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:02:30.052 [DEBUG] [Thread-195334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:02:30.052 [DEBUG] [Thread-195334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:02:30.052 [DEBUG] [Thread-195334] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:02:30.052 [DEBUG] [Thread-195334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:02:30.053 [DEBUG] [Thread-195334] [transport.py] [_log()] Compression: none
2025-11-24T19:02:30.053 [DEBUG] [Thread-195334] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:02:30.086 [DEBUG] [Thread-195334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:02:30.092 [DEBUG] [Thread-195334] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:02:30.094 [DEBUG] [Thread-195334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:02:30.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:02:30.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:02:30.100 [DEBUG] [Thread-195334] [transport.py] [_log()] userauth is OK
2025-11-24T19:02:30.100 [DEBUG] [Thread-195334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:02:30.100 [DEBUG] [Thread-195334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:02:30.100 [DEBUG] [Thread-195334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:02:30.101 [DEBUG] [Thread-195334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:02:30.127 [INFO] [Thread-195334] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:02:30.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:02:30.711 [DEBUG] [Thread-195334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:02:30.712 [DEBUG] [Thread-195334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:02:30.721 [DEBUG] [Thread-195334] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:02:30.752 [DEBUG] [Thread-195334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:02:30.752 [DEBUG] [Thread-195334] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:02:30.757 [DEBUG] [Thread-195334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:02:30.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:02:30.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:02:30.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:02:30.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:02:30.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:02:30.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:02:30.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:02:30.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:02:30.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:02:30.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.709773 -999.00  +19.30  23.00     29   +0.80 1 1 1 1 1   887    0 17.97 -27.88 ----- 18.9 23.0 166.0 26.5 20.8 -27.7 21.0 -27.3 21.4 -26.3 21.6 -27.6
2025-11-24T19:02:30.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:02:30.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:02:30.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.709773
2025-11-24T19:02:30.785 [DEBUG] [Thread-195334] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:02:30.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:02:30.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:02:30.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:02:30.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:02:30.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:02:30.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:02:02', tmtdew=21.66, humidity=23.24, cloud=0.0, wind=22.57, temperature=19.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:02:04.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:02: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-11-24T19:02:30.883 [DEBUG] [Thread-195337] [transport.py] [_log()] starting thread (client mode): 0xd073a6b0
2025-11-24T19:02:30.883 [DEBUG] [Thread-195337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:02:30.898 [DEBUG] [Thread-195337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:02:30.898 [INFO] [Thread-195337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:02:30.905 [DEBUG] [Thread-195337] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:02:30.905 [DEBUG] [Thread-195337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:02:30.905 [DEBUG] [Thread-195337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:02:30.905 [DEBUG] [Thread-195337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:02:30.905 [DEBUG] [Thread-195337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:02:30.905 [DEBUG] [Thread-195337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:02:30.905 [DEBUG] [Thread-195337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:02:30.905 [DEBUG] [Thread-195337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:02:30.905 [DEBUG] [Thread-195337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:02:30.906 [DEBUG] [Thread-195337] [transport.py] [_log()] client lang: <none>
2025-11-24T19:02:30.906 [DEBUG] [Thread-195337] [transport.py] [_log()] server lang: <none>
2025-11-24T19:02:30.906 [DEBUG] [Thread-195337] [transport.py] [_log()] kex follows: False
2025-11-24T19:02:30.906 [DEBUG] [Thread-195337] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:02:30.906 [DEBUG] [Thread-195337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:02:30.906 [DEBUG] [Thread-195337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:02:30.906 [DEBUG] [Thread-195337] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:02:30.906 [DEBUG] [Thread-195337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:02:30.906 [DEBUG] [Thread-195337] [transport.py] [_log()] Compression: none
2025-11-24T19:02:30.906 [DEBUG] [Thread-195337] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:02:30.969 [DEBUG] [Thread-195337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:02:30.969 [DEBUG] [Thread-195337] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:02:30.969 [DEBUG] [Thread-195337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:02:30.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:02:30.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:02:31.025 [DEBUG] [Thread-195337] [transport.py] [_log()] userauth is OK
2025-11-24T19:02:31.025 [DEBUG] [Thread-195337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:02:31.025 [DEBUG] [Thread-195337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:02:31.025 [DEBUG] [Thread-195337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:02:31.025 [DEBUG] [Thread-195337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:02:31.039 [INFO] [Thread-195337] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:02:31.039 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:02:31.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:02:31.948 [DEBUG] [Thread-195337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:02:31.948 [DEBUG] [Thread-195337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:02:31.995 [DEBUG] [Thread-195337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:02:31.996 [DEBUG] [Thread-195337] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:02:32.005 [DEBUG] [Thread-195337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:02:32.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:02:32.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-11-24T19:02:32.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-11-24T19:02:32.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:02:32.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:02:32.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:02:32.055 [DEBUG] [Thread-195337] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:02:35.338 [DEBUG] [Thread-195339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:02:50.395 [DEBUG] [Thread-195340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:03:02.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:03:02.070 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:03:02.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:03:03.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 2, 35), 21.59, 23.29, 0.0, 27.38, 19.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:03:03.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:02:35
2025-11-24T19:03:03.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:03:03.432 [DEBUG] [Thread-195341] [transport.py] [_log()] starting thread (client mode): 0xd07393f0
2025-11-24T19:03:03.432 [DEBUG] [Thread-195341] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:03:03.438 [DEBUG] [Thread-195341] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:03:03.438 [INFO] [Thread-195341] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] client lang: <none>
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] server lang: <none>
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] kex follows: False
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] Compression: none
2025-11-24T19:03:03.440 [DEBUG] [Thread-195341] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:03:03.455 [DEBUG] [Thread-195341] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:03:03.458 [DEBUG] [Thread-195341] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:03:03.458 [DEBUG] [Thread-195341] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:03:03.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:03:03.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:03:03.462 [DEBUG] [Thread-195341] [transport.py] [_log()] userauth is OK
2025-11-24T19:03:03.462 [DEBUG] [Thread-195341] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:03:03.463 [DEBUG] [Thread-195341] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:03:03.463 [DEBUG] [Thread-195341] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:03:03.463 [DEBUG] [Thread-195341] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:03:03.488 [INFO] [Thread-195341] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:03:03.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:03:04.093 [DEBUG] [Thread-195341] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:03:04.093 [DEBUG] [Thread-195341] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:03:04.094 [DEBUG] [Thread-195341] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:03:04.134 [DEBUG] [Thread-195341] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:03:04.134 [DEBUG] [Thread-195341] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:03:04.137 [DEBUG] [Thread-195341] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:03:04.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:03:04.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:03:04.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:03:04.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:03:04.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:03:04.159 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:03:04.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:03:04.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:03:04.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:03:04.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.710120 -999.00  +19.20  22.45     29   +0.80 1 1 1 1 1   887    0 18.06 -27.90 ----- 18.4 22.4 161.2 27.8 20.8 -27.7 20.9 -27.0 21.4 -26.0 21.5 -27.6
2025-11-24T19:03:04.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:03:04.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:03:04.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.710120
2025-11-24T19:03:04.167 [DEBUG] [Thread-195341] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:03:04.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:03:04.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:03:04.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:03:04.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:03:04.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:03:04.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:02:35', tmtdew=21.59, humidity=23.29, cloud=0.0, wind=27.38, temperature=19.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:02:34.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:03:04.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:03:04.270 [DEBUG] [Thread-195344] [transport.py] [_log()] starting thread (client mode): 0xd0738ee0
2025-11-24T19:03:04.271 [DEBUG] [Thread-195344] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:03:04.285 [DEBUG] [Thread-195344] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:03:04.285 [INFO] [Thread-195344] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:03:04.293 [DEBUG] [Thread-195344] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:03:04.293 [DEBUG] [Thread-195344] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:03:04.293 [DEBUG] [Thread-195344] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] client lang: <none>
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] server lang: <none>
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] kex follows: False
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:03:04.294 [DEBUG] [Thread-195344] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:03:04.295 [DEBUG] [Thread-195344] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:03:04.295 [DEBUG] [Thread-195344] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:03:04.295 [DEBUG] [Thread-195344] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:03:04.295 [DEBUG] [Thread-195344] [transport.py] [_log()] Compression: none
2025-11-24T19:03:04.295 [DEBUG] [Thread-195344] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:03:04.354 [DEBUG] [Thread-195344] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:03:04.355 [DEBUG] [Thread-195344] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:03:04.355 [DEBUG] [Thread-195344] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:03:04.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:03:04.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:03:04.413 [DEBUG] [Thread-195344] [transport.py] [_log()] userauth is OK
2025-11-24T19:03:04.414 [DEBUG] [Thread-195344] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:03:04.414 [DEBUG] [Thread-195344] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:03:04.414 [DEBUG] [Thread-195344] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:03:04.414 [DEBUG] [Thread-195344] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:03:04.433 [INFO] [Thread-195344] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:03:04.434 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:03:04.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:03:05.265 [DEBUG] [Thread-195344] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:03:05.266 [DEBUG] [Thread-195344] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:03:05.314 [DEBUG] [Thread-195344] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:03:05.314 [DEBUG] [Thread-195344] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:03:05.323 [DEBUG] [Thread-195344] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:03:05.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:03:05.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-11-24T19:03:05.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:03:05.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:03:05.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:03:05.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:03:05.370 [DEBUG] [Thread-195344] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:03:05.427 [DEBUG] [Thread-195346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:03:17.980 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:03:17.981 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:03:20.537 [DEBUG] [Thread-195347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:03:23.212 [DEBUG] [Thread-195348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:03:35.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:03:35.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:03:35.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-11-24T19:03:35.562 [DEBUG] [Thread-195349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:03:36.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 3, 8), 21.57, 23.31, 0.0, 28.37, 19.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:03:36.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:03:08
2025-11-24T19:03:36.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:03:36.465 [DEBUG] [Thread-195350] [transport.py] [_log()] starting thread (client mode): 0xd0703910
2025-11-24T19:03:36.466 [DEBUG] [Thread-195350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:03:36.479 [DEBUG] [Thread-195350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:03:36.480 [INFO] [Thread-195350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:03:36.485 [DEBUG] [Thread-195350] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] client lang: <none>
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] server lang: <none>
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] kex follows: False
2025-11-24T19:03:36.486 [DEBUG] [Thread-195350] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:03:36.487 [DEBUG] [Thread-195350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:03:36.487 [DEBUG] [Thread-195350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:03:36.487 [DEBUG] [Thread-195350] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:03:36.488 [DEBUG] [Thread-195350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:03:36.488 [DEBUG] [Thread-195350] [transport.py] [_log()] Compression: none
2025-11-24T19:03:36.488 [DEBUG] [Thread-195350] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:03:36.524 [DEBUG] [Thread-195350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:03:36.529 [DEBUG] [Thread-195350] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:03:36.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:03:36.532 [DEBUG] [Thread-195350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:03:36.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:03:36.538 [DEBUG] [Thread-195350] [transport.py] [_log()] userauth is OK
2025-11-24T19:03:36.538 [DEBUG] [Thread-195350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:03:36.538 [DEBUG] [Thread-195350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:03:36.539 [DEBUG] [Thread-195350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:03:36.539 [DEBUG] [Thread-195350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:03:36.559 [INFO] [Thread-195350] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:03:36.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:03:37.113 [DEBUG] [Thread-195350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:03:37.113 [DEBUG] [Thread-195350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:03:37.114 [DEBUG] [Thread-195350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:03:37.154 [DEBUG] [Thread-195350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:03:37.154 [DEBUG] [Thread-195350] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:03:37.156 [DEBUG] [Thread-195350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:03:37.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:03:37.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:03:37.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:03:37.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:03:37.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:03:37.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:03:37.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:03:37.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:03:37.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:03:37.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.710467 -999.00  +19.30  13.91     29   +0.80 1 1 1 1 1   887    0 17.77 -27.32 ----- 14.3 13.9 163.0 22.8 20.8 -27.6 20.9 -27.3 21.3 -26.2 21.5 -27.6
2025-11-24T19:03:37.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:03:37.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:03:37.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.710467
2025-11-24T19:03:37.186 [DEBUG] [Thread-195350] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:03:37.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:03:37.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:03:37.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:03:37.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:03:37.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:03:37.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:03:08', tmtdew=21.57, humidity=23.31, cloud=0.0, wind=28.37, temperature=19.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:03:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:03:37.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:03:37.277 [DEBUG] [Thread-195353] [transport.py] [_log()] starting thread (client mode): 0xd07cca30
2025-11-24T19:03:37.277 [DEBUG] [Thread-195353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:03:37.292 [DEBUG] [Thread-195353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:03:37.292 [INFO] [Thread-195353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] client lang: <none>
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] server lang: <none>
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] kex follows: False
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] Compression: none
2025-11-24T19:03:37.301 [DEBUG] [Thread-195353] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:03:37.359 [DEBUG] [Thread-195353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:03:37.359 [DEBUG] [Thread-195353] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:03:37.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:03:37.359 [DEBUG] [Thread-195353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:03:37.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:03:37.417 [DEBUG] [Thread-195353] [transport.py] [_log()] userauth is OK
2025-11-24T19:03:37.417 [DEBUG] [Thread-195353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:03:37.417 [DEBUG] [Thread-195353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:03:37.417 [DEBUG] [Thread-195353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:03:37.417 [DEBUG] [Thread-195353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:03:37.432 [INFO] [Thread-195353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:03:37.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:03:37.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:03:38.246 [DEBUG] [Thread-195353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:03:38.246 [DEBUG] [Thread-195353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:03:38.294 [DEBUG] [Thread-195353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:03:38.294 [DEBUG] [Thread-195353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:03:38.303 [DEBUG] [Thread-195353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:03:38.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:03:38.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-11-24T19:03:38.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-11-24T19:03:38.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:03:38.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:03:38.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:03:38.336 [DEBUG] [Thread-195353] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:03:50.605 [DEBUG] [Thread-195355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:04:05.710 [DEBUG] [Thread-195356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:04:08.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:04:08.359 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:04:08.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-11-24T19:04:09.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 3, 40), 21.55, 23.34, 0.0, 32.85, 19.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:04:09.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:03:40
2025-11-24T19:04:09.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:04:09.543 [DEBUG] [Thread-195357] [transport.py] [_log()] starting thread (client mode): 0xd07f90f0
2025-11-24T19:04:09.544 [DEBUG] [Thread-195357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:04:09.552 [DEBUG] [Thread-195357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:04:09.552 [INFO] [Thread-195357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:04:09.555 [DEBUG] [Thread-195357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:04:09.555 [DEBUG] [Thread-195357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:04:09.555 [DEBUG] [Thread-195357] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] client lang: <none>
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] server lang: <none>
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] kex follows: False
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] Compression: none
2025-11-24T19:04:09.556 [DEBUG] [Thread-195357] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:04:09.572 [DEBUG] [Thread-195357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:04:09.576 [DEBUG] [Thread-195357] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:04:09.577 [DEBUG] [Thread-195357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:04:09.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:04:09.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:04:09.580 [DEBUG] [Thread-195357] [transport.py] [_log()] userauth is OK
2025-11-24T19:04:09.580 [DEBUG] [Thread-195357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:04:09.580 [DEBUG] [Thread-195357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:04:09.580 [DEBUG] [Thread-195357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:04:09.580 [DEBUG] [Thread-195357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:04:09.600 [INFO] [Thread-195357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:04:09.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:04:10.241 [DEBUG] [Thread-195357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:04:10.241 [DEBUG] [Thread-195357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:04:10.241 [DEBUG] [Thread-195357] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:04:10.283 [DEBUG] [Thread-195357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:04:10.283 [DEBUG] [Thread-195357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:04:10.284 [DEBUG] [Thread-195357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:04:10.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:04:10.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:04:10.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:04:10.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:04:10.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:04:10.297 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:04:10.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:04:10.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:04:10.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:04:10.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.711162 -999.00  +19.20  21.31     29   +0.80 1 1 1 1 1   887    0 17.85 -28.52 ----- 18.6 21.3 181.0 27.0 20.7 -27.6 20.8 -28.1 21.2 -26.1 21.4 -28.1
2025-11-24T19:04:10.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:04:10.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:04:10.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.711162
2025-11-24T19:04:10.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:04:10.300 [DEBUG] [Thread-195357] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:04:10.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:04:10.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:04:10.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:04:10.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:04:10.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:03:40', tmtdew=21.55, humidity=23.34, cloud=0.0, wind=32.85, temperature=19.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:04:04.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:04:10.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:04:10.391 [DEBUG] [Thread-195360] [transport.py] [_log()] starting thread (client mode): 0xc9b818d0
2025-11-24T19:04:10.391 [DEBUG] [Thread-195360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:04:10.405 [DEBUG] [Thread-195360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:04:10.405 [INFO] [Thread-195360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:04:10.412 [DEBUG] [Thread-195360] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:04:10.412 [DEBUG] [Thread-195360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:04:10.412 [DEBUG] [Thread-195360] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:04:10.412 [DEBUG] [Thread-195360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] client lang: <none>
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] server lang: <none>
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] kex follows: False
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] Compression: none
2025-11-24T19:04:10.413 [DEBUG] [Thread-195360] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:04:10.468 [DEBUG] [Thread-195360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:04:10.468 [DEBUG] [Thread-195360] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:04:10.468 [DEBUG] [Thread-195360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:04:10.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:04:10.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:04:10.524 [DEBUG] [Thread-195360] [transport.py] [_log()] userauth is OK
2025-11-24T19:04:10.524 [DEBUG] [Thread-195360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:04:10.525 [DEBUG] [Thread-195360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:04:10.525 [DEBUG] [Thread-195360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:04:10.525 [DEBUG] [Thread-195360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:04:10.542 [INFO] [Thread-195360] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:04:10.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:04:10.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:04:11.368 [DEBUG] [Thread-195360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:04:11.368 [DEBUG] [Thread-195360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:04:11.416 [DEBUG] [Thread-195360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:04:11.416 [DEBUG] [Thread-195360] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:04:11.425 [DEBUG] [Thread-195360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:04:11.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:04:11.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-11-24T19:04:11.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-11-24T19:04:11.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:04:11.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:04:11.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:04:11.467 [DEBUG] [Thread-195360] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:04:18.131 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:04:18.132 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:04:20.744 [DEBUG] [Thread-195362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:04:23.505 [DEBUG] [Thread-195363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:04:35.847 [DEBUG] [Thread-195364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:04:41.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:04:41.490 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:04:41.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-11-24T19:04:42.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 4, 13), 21.53, 23.37, 0.0, 30.88, 19.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:04:42.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:04:13
2025-11-24T19:04:42.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:04:42.602 [DEBUG] [Thread-195365] [transport.py] [_log()] starting thread (client mode): 0xd07872b0
2025-11-24T19:04:42.602 [DEBUG] [Thread-195365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:04:42.616 [DEBUG] [Thread-195365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:04:42.616 [INFO] [Thread-195365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:04:42.619 [DEBUG] [Thread-195365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:04:42.619 [DEBUG] [Thread-195365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:04:42.619 [DEBUG] [Thread-195365] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:04:42.619 [DEBUG] [Thread-195365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:04:42.619 [DEBUG] [Thread-195365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:04:42.619 [DEBUG] [Thread-195365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:04:42.619 [DEBUG] [Thread-195365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:04:42.619 [DEBUG] [Thread-195365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:04:42.619 [DEBUG] [Thread-195365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:04:42.619 [DEBUG] [Thread-195365] [transport.py] [_log()] client lang: <none>
2025-11-24T19:04:42.620 [DEBUG] [Thread-195365] [transport.py] [_log()] server lang: <none>
2025-11-24T19:04:42.620 [DEBUG] [Thread-195365] [transport.py] [_log()] kex follows: False
2025-11-24T19:04:42.620 [DEBUG] [Thread-195365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:04:42.620 [DEBUG] [Thread-195365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:04:42.620 [DEBUG] [Thread-195365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:04:42.621 [DEBUG] [Thread-195365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:04:42.621 [DEBUG] [Thread-195365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:04:42.621 [DEBUG] [Thread-195365] [transport.py] [_log()] Compression: none
2025-11-24T19:04:42.621 [DEBUG] [Thread-195365] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:04:42.644 [DEBUG] [Thread-195365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:04:42.646 [DEBUG] [Thread-195365] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:04:42.646 [DEBUG] [Thread-195365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:04:42.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:04:42.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:04:42.689 [DEBUG] [Thread-195365] [transport.py] [_log()] userauth is OK
2025-11-24T19:04:42.689 [DEBUG] [Thread-195365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:04:42.690 [DEBUG] [Thread-195365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:04:42.690 [DEBUG] [Thread-195365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:04:42.690 [DEBUG] [Thread-195365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:04:42.711 [INFO] [Thread-195365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:04:42.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:04:43.311 [DEBUG] [Thread-195365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:04:43.311 [DEBUG] [Thread-195365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:04:43.312 [DEBUG] [Thread-195365] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:04:43.352 [DEBUG] [Thread-195365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:04:43.352 [DEBUG] [Thread-195365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:04:43.354 [DEBUG] [Thread-195365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:04:43.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:04:43.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:04:43.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:04:43.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:04:43.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:04:43.373 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:04:43.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:04:43.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:04:43.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:04:43.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.711509 -999.00  +19.20  16.72     29   +0.80 1 1 1 1 1   887    0 18.03 -30.75 ----- 11.4 16.7 174.6 21.4 20.6 -27.4 20.7 -27.6 21.2 -26.1 21.4 -27.5
2025-11-24T19:04:43.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:04:43.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:04:43.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.711509
2025-11-24T19:04:43.379 [DEBUG] [Thread-195365] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:04:43.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:04:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:04:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:04:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:04:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:04:43.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:04:13', tmtdew=21.53, humidity=23.37, cloud=0.0, wind=30.88, temperature=19.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:04:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:04:43.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:04:43.481 [DEBUG] [Thread-195368] [transport.py] [_log()] starting thread (client mode): 0xd0786e00
2025-11-24T19:04:43.481 [DEBUG] [Thread-195368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:04:43.495 [DEBUG] [Thread-195368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:04:43.495 [INFO] [Thread-195368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] client lang: <none>
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] server lang: <none>
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] kex follows: False
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:04:43.504 [DEBUG] [Thread-195368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:04:43.505 [DEBUG] [Thread-195368] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:04:43.505 [DEBUG] [Thread-195368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:04:43.505 [DEBUG] [Thread-195368] [transport.py] [_log()] Compression: none
2025-11-24T19:04:43.505 [DEBUG] [Thread-195368] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:04:43.559 [DEBUG] [Thread-195368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:04:43.559 [DEBUG] [Thread-195368] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:04:43.560 [DEBUG] [Thread-195368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:04:43.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:04:43.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:04:43.617 [DEBUG] [Thread-195368] [transport.py] [_log()] userauth is OK
2025-11-24T19:04:43.617 [DEBUG] [Thread-195368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:04:43.617 [DEBUG] [Thread-195368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:04:43.617 [DEBUG] [Thread-195368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:04:43.617 [DEBUG] [Thread-195368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:04:43.630 [INFO] [Thread-195368] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:04:43.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:04:43.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:04:44.445 [DEBUG] [Thread-195368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:04:44.445 [DEBUG] [Thread-195368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:04:44.493 [DEBUG] [Thread-195368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:04:44.493 [DEBUG] [Thread-195368] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:04:44.501 [DEBUG] [Thread-195368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:04:44.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:04:44.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:04:44.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:04:44.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:04:44.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:04:44.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:04:44.533 [DEBUG] [Thread-195368] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:04:50.875 [DEBUG] [Thread-195370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:05:05.929 [DEBUG] [Thread-195371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:05:14.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:05:14.535 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:05:14.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-11-24T19:05:15.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 4, 45), 21.47, 23.41, 0.0, 26.38, 19.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:05:15.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:04:45
2025-11-24T19:05:15.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:05:15.882 [DEBUG] [Thread-195372] [transport.py] [_log()] starting thread (client mode): 0xd07874f0
2025-11-24T19:05:15.882 [DEBUG] [Thread-195372] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:05:15.900 [DEBUG] [Thread-195372] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:05:15.901 [INFO] [Thread-195372] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] client lang: <none>
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] server lang: <none>
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] kex follows: False
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:05:15.904 [DEBUG] [Thread-195372] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:05:15.905 [DEBUG] [Thread-195372] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:05:15.905 [DEBUG] [Thread-195372] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:05:15.905 [DEBUG] [Thread-195372] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:05:15.905 [DEBUG] [Thread-195372] [transport.py] [_log()] Compression: none
2025-11-24T19:05:15.905 [DEBUG] [Thread-195372] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:05:15.922 [DEBUG] [Thread-195372] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:05:15.923 [DEBUG] [Thread-195372] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:05:15.923 [DEBUG] [Thread-195372] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:05:15.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:05:15.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:05:15.926 [DEBUG] [Thread-195372] [transport.py] [_log()] userauth is OK
2025-11-24T19:05:15.926 [DEBUG] [Thread-195372] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:05:15.926 [DEBUG] [Thread-195372] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:05:15.926 [DEBUG] [Thread-195372] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:05:15.926 [DEBUG] [Thread-195372] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:05:15.944 [INFO] [Thread-195372] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:05:15.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:05:16.520 [DEBUG] [Thread-195372] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:05:16.520 [DEBUG] [Thread-195372] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:05:16.520 [DEBUG] [Thread-195372] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:05:16.561 [DEBUG] [Thread-195372] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:05:16.561 [DEBUG] [Thread-195372] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:05:16.563 [DEBUG] [Thread-195372] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:05:16.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:05:16.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:05:16.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:05:16.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:05:16.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:05:16.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:05:16.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.711509 -999.00  +19.20  16.72     29   +0.80 1 1 1 1 1   887    0 18.03 -30.75 ----- 11.4 16.7 174.6 21.4 20.6 -27.4 20.7 -27.6 21.2 -26.1 21.4 -27.5
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.711509
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:05:16.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:04:45', tmtdew=21.47, humidity=23.41, cloud=0.0, wind=26.38, temperature=19.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:04:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:05:16.596 [DEBUG] [Thread-195372] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:05:16.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:05:16.680 [DEBUG] [Thread-195375] [transport.py] [_log()] starting thread (client mode): 0xd073b580
2025-11-24T19:05:16.680 [DEBUG] [Thread-195375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:05:16.694 [DEBUG] [Thread-195375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:05:16.695 [INFO] [Thread-195375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:05:16.702 [DEBUG] [Thread-195375] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] client lang: <none>
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] server lang: <none>
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] kex follows: False
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] Compression: none
2025-11-24T19:05:16.703 [DEBUG] [Thread-195375] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:05:16.761 [DEBUG] [Thread-195375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:05:16.762 [DEBUG] [Thread-195375] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:05:16.763 [DEBUG] [Thread-195375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:05:16.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:05:16.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:05:16.817 [DEBUG] [Thread-195375] [transport.py] [_log()] userauth is OK
2025-11-24T19:05:16.818 [DEBUG] [Thread-195375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:05:16.818 [DEBUG] [Thread-195375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:05:16.818 [DEBUG] [Thread-195375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:05:16.818 [DEBUG] [Thread-195375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:05:16.839 [INFO] [Thread-195375] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:05:16.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:05:16.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:05:17.668 [DEBUG] [Thread-195375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:05:17.669 [DEBUG] [Thread-195375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:05:17.716 [DEBUG] [Thread-195375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:05:17.717 [DEBUG] [Thread-195375] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:05:17.726 [DEBUG] [Thread-195375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:05:17.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:05:17.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-11-24T19:05:17.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-11-24T19:05:17.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:05:17.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:05:17.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:05:17.761 [DEBUG] [Thread-195375] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:05:18.290 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:05:18.292 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:05:20.965 [DEBUG] [Thread-195377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:05:23.741 [DEBUG] [Thread-195378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:05:36.029 [DEBUG] [Thread-195379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:05:47.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:05:47.796 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:05:47.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-11-24T19:05:48.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 5, 18), 21.47, 23.37, 0.0, 22.73, 19.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:05:48.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:05:18
2025-11-24T19:05:48.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:05:48.987 [DEBUG] [Thread-195380] [transport.py] [_log()] starting thread (client mode): 0xd07ccf40
2025-11-24T19:05:48.988 [DEBUG] [Thread-195380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:05:49.002 [DEBUG] [Thread-195380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:05:49.002 [INFO] [Thread-195380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:05:49.007 [DEBUG] [Thread-195380] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:05:49.007 [DEBUG] [Thread-195380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:05:49.007 [DEBUG] [Thread-195380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:05:49.007 [DEBUG] [Thread-195380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:05:49.007 [DEBUG] [Thread-195380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:05:49.008 [DEBUG] [Thread-195380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:05:49.008 [DEBUG] [Thread-195380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:05:49.008 [DEBUG] [Thread-195380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:05:49.008 [DEBUG] [Thread-195380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:05:49.008 [DEBUG] [Thread-195380] [transport.py] [_log()] client lang: <none>
2025-11-24T19:05:49.008 [DEBUG] [Thread-195380] [transport.py] [_log()] server lang: <none>
2025-11-24T19:05:49.008 [DEBUG] [Thread-195380] [transport.py] [_log()] kex follows: False
2025-11-24T19:05:49.008 [DEBUG] [Thread-195380] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:05:49.009 [DEBUG] [Thread-195380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:05:49.009 [DEBUG] [Thread-195380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:05:49.009 [DEBUG] [Thread-195380] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:05:49.009 [DEBUG] [Thread-195380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:05:49.009 [DEBUG] [Thread-195380] [transport.py] [_log()] Compression: none
2025-11-24T19:05:49.009 [DEBUG] [Thread-195380] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:05:49.045 [DEBUG] [Thread-195380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:05:49.051 [DEBUG] [Thread-195380] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:05:49.054 [DEBUG] [Thread-195380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:05:49.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:05:49.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:05:49.059 [DEBUG] [Thread-195380] [transport.py] [_log()] userauth is OK
2025-11-24T19:05:49.059 [DEBUG] [Thread-195380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:05:49.059 [DEBUG] [Thread-195380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:05:49.059 [DEBUG] [Thread-195380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:05:49.060 [DEBUG] [Thread-195380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:05:49.087 [INFO] [Thread-195380] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:05:49.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:05:49.683 [DEBUG] [Thread-195380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:05:49.683 [DEBUG] [Thread-195380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:05:49.693 [DEBUG] [Thread-195380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:05:49.724 [DEBUG] [Thread-195380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:05:49.724 [DEBUG] [Thread-195380] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:05:49.727 [DEBUG] [Thread-195380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:05:49.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:05:49.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:05:49.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:05:49.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:05:49.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:05:49.746 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:05:49.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:05:49.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:05:49.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:05:49.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.711856 -999.00  +19.20  16.78     29   +0.80 1 1 1 1 1   887    0 17.64 -32.92 ----- 17.5 16.8 179.2 21.7 20.6 -27.5 20.8 -27.5 21.2 -25.9 21.4 -27.9
2025-11-24T19:05:49.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:05:49.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:05:49.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.711856
2025-11-24T19:05:49.753 [DEBUG] [Thread-195380] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:05:49.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:05:49.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:05:49.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:05:49.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:05:49.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:05:49.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:05:18', tmtdew=21.47, humidity=23.37, cloud=0.0, wind=22.73, temperature=19.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:05:04.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:05:49.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:05:49.849 [DEBUG] [Thread-195383] [transport.py] [_log()] starting thread (client mode): 0xd07f9030
2025-11-24T19:05:49.849 [DEBUG] [Thread-195383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:05:49.863 [DEBUG] [Thread-195383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:05:49.863 [INFO] [Thread-195383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] client lang: <none>
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] server lang: <none>
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] kex follows: False
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] Compression: none
2025-11-24T19:05:49.871 [DEBUG] [Thread-195383] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:05:49.932 [DEBUG] [Thread-195383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:05:49.932 [DEBUG] [Thread-195383] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:05:49.932 [DEBUG] [Thread-195383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:05:49.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:05:49.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:05:49.989 [DEBUG] [Thread-195383] [transport.py] [_log()] userauth is OK
2025-11-24T19:05:49.989 [DEBUG] [Thread-195383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:05:49.989 [DEBUG] [Thread-195383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:05:49.989 [DEBUG] [Thread-195383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:05:49.989 [DEBUG] [Thread-195383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:05:50.003 [INFO] [Thread-195383] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:05:50.003 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:05:50.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:05:50.833 [DEBUG] [Thread-195383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:05:50.842 [DEBUG] [Thread-195383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:05:50.882 [DEBUG] [Thread-195383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:05:50.882 [DEBUG] [Thread-195383] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:05:50.891 [DEBUG] [Thread-195383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:05:50.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:05:50.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-11-24T19:05:50.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-11-24T19:05:50.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:05:50.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:05:50.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:05:50.931 [DEBUG] [Thread-195383] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:05:51.074 [DEBUG] [Thread-195385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:06:06.160 [DEBUG] [Thread-195386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:06:18.436 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:06:18.438 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:06:20.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:06:20.956 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:06:20.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-11-24T19:06:21.194 [DEBUG] [Thread-195387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:06:21.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 5, 51), 21.44, 23.44, 0.0, 28.27, 19.32, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:06:21.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:05:51
2025-11-24T19:06:21.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:06:22.110 [DEBUG] [Thread-195388] [transport.py] [_log()] starting thread (client mode): 0xd07f8940
2025-11-24T19:06:22.111 [DEBUG] [Thread-195388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:06:22.124 [DEBUG] [Thread-195388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:06:22.125 [INFO] [Thread-195388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:06:22.128 [DEBUG] [Thread-195388] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:06:22.128 [DEBUG] [Thread-195388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:06:22.128 [DEBUG] [Thread-195388] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:06:22.128 [DEBUG] [Thread-195388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:06:22.128 [DEBUG] [Thread-195388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:06:22.128 [DEBUG] [Thread-195388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:06:22.128 [DEBUG] [Thread-195388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:06:22.128 [DEBUG] [Thread-195388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:06:22.128 [DEBUG] [Thread-195388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:06:22.128 [DEBUG] [Thread-195388] [transport.py] [_log()] client lang: <none>
2025-11-24T19:06:22.129 [DEBUG] [Thread-195388] [transport.py] [_log()] server lang: <none>
2025-11-24T19:06:22.129 [DEBUG] [Thread-195388] [transport.py] [_log()] kex follows: False
2025-11-24T19:06:22.129 [DEBUG] [Thread-195388] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:06:22.129 [DEBUG] [Thread-195388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:06:22.129 [DEBUG] [Thread-195388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:06:22.129 [DEBUG] [Thread-195388] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:06:22.129 [DEBUG] [Thread-195388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:06:22.129 [DEBUG] [Thread-195388] [transport.py] [_log()] Compression: none
2025-11-24T19:06:22.129 [DEBUG] [Thread-195388] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:06:22.159 [DEBUG] [Thread-195388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:06:22.164 [DEBUG] [Thread-195388] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:06:22.166 [DEBUG] [Thread-195388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:06:22.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:06:22.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:06:22.171 [DEBUG] [Thread-195388] [transport.py] [_log()] userauth is OK
2025-11-24T19:06:22.171 [DEBUG] [Thread-195388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:06:22.172 [DEBUG] [Thread-195388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:06:22.172 [DEBUG] [Thread-195388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:06:22.172 [DEBUG] [Thread-195388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:06:22.199 [INFO] [Thread-195388] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:06:22.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:06:22.805 [DEBUG] [Thread-195388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:06:22.805 [DEBUG] [Thread-195388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:06:22.815 [DEBUG] [Thread-195388] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:06:22.847 [DEBUG] [Thread-195388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:06:22.847 [DEBUG] [Thread-195388] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:06:22.850 [DEBUG] [Thread-195388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:06:22.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:06:22.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:06:22.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:06:22.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:06:22.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:06:22.867 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:06:22.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:06:22.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:06:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:06:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.712203 -999.00  +19.20  14.39     29   +0.80 1 1 1 1 1   887    0 18.04 -33.19 ----- 22.2 14.4 168.9 22.4 20.7 -27.6 20.7 -27.3 21.1 -26.4 21.3 -27.3
2025-11-24T19:06:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:06:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:06:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.712203
2025-11-24T19:06:22.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:06:22.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:06:22.872 [DEBUG] [Thread-195388] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:06:22.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:06:22.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:06:22.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:06:22.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:05:51', tmtdew=21.44, humidity=23.44, cloud=0.0, wind=28.27, temperature=19.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:05:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:06:22.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:06:22.958 [DEBUG] [Thread-195391] [transport.py] [_log()] starting thread (client mode): 0xd0739540
2025-11-24T19:06:22.958 [DEBUG] [Thread-195391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:06:22.981 [DEBUG] [Thread-195391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:06:22.981 [INFO] [Thread-195391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] client lang: <none>
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] server lang: <none>
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] kex follows: False
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:06:22.991 [DEBUG] [Thread-195391] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:06:22.992 [DEBUG] [Thread-195391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:06:22.992 [DEBUG] [Thread-195391] [transport.py] [_log()] Compression: none
2025-11-24T19:06:22.992 [DEBUG] [Thread-195391] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:06:23.047 [DEBUG] [Thread-195391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:06:23.047 [DEBUG] [Thread-195391] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:06:23.047 [DEBUG] [Thread-195391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:06:23.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:06:23.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:06:23.104 [DEBUG] [Thread-195391] [transport.py] [_log()] userauth is OK
2025-11-24T19:06:23.104 [DEBUG] [Thread-195391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:06:23.105 [DEBUG] [Thread-195391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:06:23.105 [DEBUG] [Thread-195391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:06:23.105 [DEBUG] [Thread-195391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:06:23.119 [INFO] [Thread-195391] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:06:23.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:06:23.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:06:23.939 [DEBUG] [Thread-195391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:06:23.939 [DEBUG] [Thread-195391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:06:23.991 [DEBUG] [Thread-195391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:06:23.991 [DEBUG] [Thread-195391] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:06:23.999 [DEBUG] [Thread-195391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:06:24.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:06:24.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-11-24T19:06:24.014 [DEBUG] [Thread-195393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:06:24.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-11-24T19:06:24.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:06:24.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:06:24.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:06:24.040 [DEBUG] [Thread-195391] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:06:36.231 [DEBUG] [Thread-195394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:06:51.347 [DEBUG] [Thread-195395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:06:54.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:06:54.063 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:06:54.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-11-24T19:06:54.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 6, 24), 21.43, 23.46, 0.0, 26.08, 19.32, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:06:54.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:06:24
2025-11-24T19:06:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:06:55.196 [DEBUG] [Thread-195396] [transport.py] [_log()] starting thread (client mode): 0xd3153730
2025-11-24T19:06:55.197 [DEBUG] [Thread-195396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:06:55.210 [DEBUG] [Thread-195396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:06:55.211 [INFO] [Thread-195396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] client lang: <none>
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] server lang: <none>
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] kex follows: False
2025-11-24T19:06:55.216 [DEBUG] [Thread-195396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:06:55.217 [DEBUG] [Thread-195396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:06:55.217 [DEBUG] [Thread-195396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:06:55.217 [DEBUG] [Thread-195396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:06:55.217 [DEBUG] [Thread-195396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:06:55.217 [DEBUG] [Thread-195396] [transport.py] [_log()] Compression: none
2025-11-24T19:06:55.217 [DEBUG] [Thread-195396] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:06:55.248 [DEBUG] [Thread-195396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:06:55.252 [DEBUG] [Thread-195396] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:06:55.253 [DEBUG] [Thread-195396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:06:55.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:06:55.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:06:55.257 [DEBUG] [Thread-195396] [transport.py] [_log()] userauth is OK
2025-11-24T19:06:55.257 [DEBUG] [Thread-195396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:06:55.257 [DEBUG] [Thread-195396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:06:55.257 [DEBUG] [Thread-195396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:06:55.257 [DEBUG] [Thread-195396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:06:55.274 [INFO] [Thread-195396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:06:55.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:06:55.835 [DEBUG] [Thread-195396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:06:55.835 [DEBUG] [Thread-195396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:06:55.844 [DEBUG] [Thread-195396] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:06:55.876 [DEBUG] [Thread-195396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:06:55.876 [DEBUG] [Thread-195396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:06:55.879 [DEBUG] [Thread-195396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:06:55.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:06:55.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:06:55.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:06:55.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:06:55.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:06:55.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:06:55.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:06:55.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:06:55.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:06:55.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.712551 -999.00  +19.20  22.61     29   +0.70 1 1 1 1 1   887    0 17.98 -31.95 ----- 19.7 22.6 168.6 30.5 20.6 -27.8 20.7 -27.5 21.1 -26.3 21.3 -27.6
2025-11-24T19:06:55.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:06:55.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:06:55.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.712551
2025-11-24T19:06:55.908 [DEBUG] [Thread-195396] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:06:55.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:06:55.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:06:55.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:06:55.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:06:55.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:06:55.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:06:24', tmtdew=21.43, humidity=23.46, cloud=0.0, wind=26.08, temperature=19.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:06:04.406', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:06:55.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:06:56.002 [DEBUG] [Thread-195399] [transport.py] [_log()] starting thread (client mode): 0xd07fa200
2025-11-24T19:06:56.003 [DEBUG] [Thread-195399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:06:56.017 [DEBUG] [Thread-195399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:06:56.017 [INFO] [Thread-195399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] client lang: <none>
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] server lang: <none>
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] kex follows: False
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] Compression: none
2025-11-24T19:06:56.025 [DEBUG] [Thread-195399] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:06:56.083 [DEBUG] [Thread-195399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:06:56.083 [DEBUG] [Thread-195399] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:06:56.083 [DEBUG] [Thread-195399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:06:56.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:06:56.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:06:56.140 [DEBUG] [Thread-195399] [transport.py] [_log()] userauth is OK
2025-11-24T19:06:56.140 [DEBUG] [Thread-195399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:06:56.140 [DEBUG] [Thread-195399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:06:56.140 [DEBUG] [Thread-195399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:06:56.140 [DEBUG] [Thread-195399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:06:56.154 [INFO] [Thread-195399] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:06:56.163 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:06:56.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:06:57.012 [DEBUG] [Thread-195399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:06:57.012 [DEBUG] [Thread-195399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:06:57.060 [DEBUG] [Thread-195399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:06:57.060 [DEBUG] [Thread-195399] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:06:57.068 [DEBUG] [Thread-195399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:06:57.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:06:57.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-11-24T19:06:57.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-11-24T19:06:57.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:06:57.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:06:57.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:06:57.102 [DEBUG] [Thread-195399] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:07:06.394 [DEBUG] [Thread-195401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:07:18.585 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:07:18.586 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:07:21.465 [DEBUG] [Thread-195402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:07:24.229 [DEBUG] [Thread-195403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:07:27.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:07:27.124 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:07:27.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-11-24T19:07:27.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 6, 56), 21.43, 23.46, 0.0, 26.91, 19.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:07:27.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:06:56
2025-11-24T19:07:28.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:07:28.189 [DEBUG] [Thread-195404] [transport.py] [_log()] starting thread (client mode): 0xd07fa470
2025-11-24T19:07:28.189 [DEBUG] [Thread-195404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:07:28.202 [DEBUG] [Thread-195404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:07:28.202 [INFO] [Thread-195404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:07:28.205 [DEBUG] [Thread-195404] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:07:28.205 [DEBUG] [Thread-195404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:07:28.205 [DEBUG] [Thread-195404] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] client lang: <none>
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] server lang: <none>
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] kex follows: False
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] Compression: none
2025-11-24T19:07:28.206 [DEBUG] [Thread-195404] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:07:28.224 [DEBUG] [Thread-195404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:07:28.224 [DEBUG] [Thread-195404] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:07:28.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:07:28.225 [DEBUG] [Thread-195404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:07:28.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:07:28.229 [DEBUG] [Thread-195404] [transport.py] [_log()] userauth is OK
2025-11-24T19:07:28.229 [DEBUG] [Thread-195404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:07:28.229 [DEBUG] [Thread-195404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:07:28.229 [DEBUG] [Thread-195404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:07:28.229 [DEBUG] [Thread-195404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:07:28.253 [INFO] [Thread-195404] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:07:28.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:07:28.856 [DEBUG] [Thread-195404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:07:28.856 [DEBUG] [Thread-195404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:07:28.857 [DEBUG] [Thread-195404] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:07:28.897 [DEBUG] [Thread-195404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:07:28.897 [DEBUG] [Thread-195404] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:07:28.900 [DEBUG] [Thread-195404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:07:28.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:07:28.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:07:28.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:07:28.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:07:28.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:07:28.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:07:28.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:07:28.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.712898 -999.00  +19.10  13.26     29   +0.80 1 1 1 1 1   887    0 18.04 -33.21 ----- 16.8 13.3 180.2 25.9 20.6 -27.7 20.7 -27.1 21.0 -26.3 21.3 -27.5
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.712898
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:07:28.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:06:56', tmtdew=21.43, humidity=23.46, cloud=0.0, wind=26.91, temperature=19.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:06:34.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:07:28.927 [DEBUG] [Thread-195404] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:07:29.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:07:29.013 [DEBUG] [Thread-195407] [transport.py] [_log()] starting thread (client mode): 0xd3151a20
2025-11-24T19:07:29.013 [DEBUG] [Thread-195407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:07:29.027 [DEBUG] [Thread-195407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:07:29.028 [INFO] [Thread-195407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:07:29.035 [DEBUG] [Thread-195407] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:07:29.035 [DEBUG] [Thread-195407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:07:29.035 [DEBUG] [Thread-195407] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:07:29.035 [DEBUG] [Thread-195407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] client lang: <none>
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] server lang: <none>
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] kex follows: False
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] Compression: none
2025-11-24T19:07:29.036 [DEBUG] [Thread-195407] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:07:29.098 [DEBUG] [Thread-195407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:07:29.099 [DEBUG] [Thread-195407] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:07:29.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:07:29.100 [DEBUG] [Thread-195407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:07:29.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:07:29.157 [DEBUG] [Thread-195407] [transport.py] [_log()] userauth is OK
2025-11-24T19:07:29.158 [DEBUG] [Thread-195407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:07:29.158 [DEBUG] [Thread-195407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:07:29.158 [DEBUG] [Thread-195407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:07:29.158 [DEBUG] [Thread-195407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:07:29.179 [INFO] [Thread-195407] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:07:29.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:07:29.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:07:30.024 [DEBUG] [Thread-195407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:07:30.024 [DEBUG] [Thread-195407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:07:30.072 [DEBUG] [Thread-195407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:07:30.072 [DEBUG] [Thread-195407] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:07:30.080 [DEBUG] [Thread-195407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:07:30.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:07:30.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-11-24T19:07:30.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-11-24T19:07:30.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:07:30.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:07:30.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:07:30.113 [DEBUG] [Thread-195407] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:07:36.502 [DEBUG] [Thread-195409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:07:51.571 [DEBUG] [Thread-195410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:08:00.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:08:00.136 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:08:00.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-11-24T19:08:00.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 7, 29), 21.45, 23.41, 0.0, 26.26, 19.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:08:00.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:07:29
2025-11-24T19:08:01.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:08:01.283 [DEBUG] [Thread-195411] [transport.py] [_log()] starting thread (client mode): 0xd3152320
2025-11-24T19:08:01.283 [DEBUG] [Thread-195411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:08:01.302 [DEBUG] [Thread-195411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:08:01.302 [INFO] [Thread-195411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] client lang: <none>
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] server lang: <none>
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] kex follows: False
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] Compression: none
2025-11-24T19:08:01.305 [DEBUG] [Thread-195411] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:08:01.326 [DEBUG] [Thread-195411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:08:01.326 [DEBUG] [Thread-195411] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:08:01.327 [DEBUG] [Thread-195411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:08:01.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:08:01.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:08:01.330 [DEBUG] [Thread-195411] [transport.py] [_log()] userauth is OK
2025-11-24T19:08:01.330 [DEBUG] [Thread-195411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:08:01.330 [DEBUG] [Thread-195411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:08:01.330 [DEBUG] [Thread-195411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:08:01.330 [DEBUG] [Thread-195411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:08:01.342 [INFO] [Thread-195411] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:08:01.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:08:01.936 [DEBUG] [Thread-195411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:08:01.936 [DEBUG] [Thread-195411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:08:01.936 [DEBUG] [Thread-195411] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:08:01.977 [DEBUG] [Thread-195411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:08:01.977 [DEBUG] [Thread-195411] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:08:01.980 [DEBUG] [Thread-195411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:08:01.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:08:01.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:08:01.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:08:01.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:08:01.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:08:01.995 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:08:01.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:08:01.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:08:01.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:08:01.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.713245 -999.00  +19.10  18.35     29   +0.80 1 1 1 1 1   887    0 17.43 -33.95 ----- 20.6 18.4 174.8 23.5 20.6 -27.7 20.6 -27.6 21.0 -26.5 21.2 -27.5
2025-11-24T19:08:01.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:08:01.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:08:01.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.713245
2025-11-24T19:08:02.002 [DEBUG] [Thread-195411] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:08:02.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:08:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:08:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:08:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:08:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:08:02.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:07:29', tmtdew=21.45, humidity=23.41, cloud=0.0, wind=26.26, temperature=19.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:07:04.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:08:02.082 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:08:02.093 [DEBUG] [Thread-195414] [transport.py] [_log()] starting thread (client mode): 0xd0785c60
2025-11-24T19:08:02.094 [DEBUG] [Thread-195414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:08:02.108 [DEBUG] [Thread-195414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:08:02.108 [INFO] [Thread-195414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] client lang: <none>
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] server lang: <none>
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] kex follows: False
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] Compression: none
2025-11-24T19:08:02.116 [DEBUG] [Thread-195414] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:08:02.171 [DEBUG] [Thread-195414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:08:02.171 [DEBUG] [Thread-195414] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:08:02.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:08:02.172 [DEBUG] [Thread-195414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:08:02.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:08:02.228 [DEBUG] [Thread-195414] [transport.py] [_log()] userauth is OK
2025-11-24T19:08:02.229 [DEBUG] [Thread-195414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:08:02.229 [DEBUG] [Thread-195414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:08:02.229 [DEBUG] [Thread-195414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:08:02.229 [DEBUG] [Thread-195414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:08:02.244 [INFO] [Thread-195414] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:08:02.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:08:02.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:08:03.090 [DEBUG] [Thread-195414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:08:03.090 [DEBUG] [Thread-195414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:08:03.138 [DEBUG] [Thread-195414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:08:03.138 [DEBUG] [Thread-195414] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:08:03.146 [DEBUG] [Thread-195414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:08:03.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:08:03.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-11-24T19:08:03.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-11-24T19:08:03.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:08:03.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:08:03.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:08:03.180 [DEBUG] [Thread-195414] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:08:06.616 [DEBUG] [Thread-195416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:08:18.734 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:08:18.737 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:08:21.679 [DEBUG] [Thread-195417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:08:24.447 [DEBUG] [Thread-195418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:08:33.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:08:33.205 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:08:33.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-11-24T19:08:34.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 8, 1), 21.44, 23.42, 0.0, 24.58, 19.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:08:34.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:08:01
2025-11-24T19:08:34.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:08:34.474 [DEBUG] [Thread-195419] [transport.py] [_log()] starting thread (client mode): 0xd0787d30
2025-11-24T19:08:34.474 [DEBUG] [Thread-195419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:08:34.493 [DEBUG] [Thread-195419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:08:34.493 [INFO] [Thread-195419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:08:34.496 [DEBUG] [Thread-195419] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:08:34.496 [DEBUG] [Thread-195419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:08:34.496 [DEBUG] [Thread-195419] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:08:34.496 [DEBUG] [Thread-195419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:08:34.496 [DEBUG] [Thread-195419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:08:34.496 [DEBUG] [Thread-195419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:08:34.496 [DEBUG] [Thread-195419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:08:34.496 [DEBUG] [Thread-195419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:08:34.496 [DEBUG] [Thread-195419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:08:34.496 [DEBUG] [Thread-195419] [transport.py] [_log()] client lang: <none>
2025-11-24T19:08:34.497 [DEBUG] [Thread-195419] [transport.py] [_log()] server lang: <none>
2025-11-24T19:08:34.497 [DEBUG] [Thread-195419] [transport.py] [_log()] kex follows: False
2025-11-24T19:08:34.497 [DEBUG] [Thread-195419] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:08:34.497 [DEBUG] [Thread-195419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:08:34.497 [DEBUG] [Thread-195419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:08:34.497 [DEBUG] [Thread-195419] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:08:34.497 [DEBUG] [Thread-195419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:08:34.497 [DEBUG] [Thread-195419] [transport.py] [_log()] Compression: none
2025-11-24T19:08:34.497 [DEBUG] [Thread-195419] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:08:34.507 [DEBUG] [Thread-195419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:08:34.508 [DEBUG] [Thread-195419] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:08:34.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:08:34.508 [DEBUG] [Thread-195419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:08:34.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:08:34.509 [DEBUG] [Thread-195419] [transport.py] [_log()] userauth is OK
2025-11-24T19:08:34.509 [DEBUG] [Thread-195419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:08:34.509 [DEBUG] [Thread-195419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:08:34.509 [DEBUG] [Thread-195419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:08:34.509 [DEBUG] [Thread-195419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:08:34.522 [INFO] [Thread-195419] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:08:34.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:08:35.113 [DEBUG] [Thread-195419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:08:35.113 [DEBUG] [Thread-195419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:08:35.114 [DEBUG] [Thread-195419] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:08:35.154 [DEBUG] [Thread-195419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:08:35.154 [DEBUG] [Thread-195419] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:08:35.157 [DEBUG] [Thread-195419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:08:35.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:08:35.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:08:35.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:08:35.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:08:35.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:08:35.178 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:08:35.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:08:35.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:08:35.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:08:35.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.713592 -999.00  +19.10  20.74     29   +0.70 1 1 1 1 1   887    0 18.04 -36.59 ----- 18.9 20.7 175.0 28.7 20.5 -27.5 20.6 -27.5 20.9 -26.3 21.2 -27.5
2025-11-24T19:08:35.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:08:35.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:08:35.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.713592
2025-11-24T19:08:35.185 [DEBUG] [Thread-195419] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:08:35.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:08:35.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:08:35.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:08:35.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:08:35.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:08:35.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:08:01', tmtdew=21.44, humidity=23.42, cloud=0.0, wind=24.58, temperature=19.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:07:34.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:08:35.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:08:35.281 [DEBUG] [Thread-195422] [transport.py] [_log()] starting thread (client mode): 0xd0786830
2025-11-24T19:08:35.282 [DEBUG] [Thread-195422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:08:35.295 [DEBUG] [Thread-195422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:08:35.295 [INFO] [Thread-195422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] client lang: <none>
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] server lang: <none>
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] kex follows: False
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:08:35.303 [DEBUG] [Thread-195422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:08:35.304 [DEBUG] [Thread-195422] [transport.py] [_log()] Compression: none
2025-11-24T19:08:35.304 [DEBUG] [Thread-195422] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:08:35.359 [DEBUG] [Thread-195422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:08:35.359 [DEBUG] [Thread-195422] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:08:35.359 [DEBUG] [Thread-195422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:08:35.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:08:35.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:08:35.416 [DEBUG] [Thread-195422] [transport.py] [_log()] userauth is OK
2025-11-24T19:08:35.416 [DEBUG] [Thread-195422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:08:35.416 [DEBUG] [Thread-195422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:08:35.416 [DEBUG] [Thread-195422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:08:35.416 [DEBUG] [Thread-195422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:08:35.430 [INFO] [Thread-195422] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:08:35.431 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:08:35.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:08:36.224 [DEBUG] [Thread-195422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:08:36.224 [DEBUG] [Thread-195422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:08:36.272 [DEBUG] [Thread-195422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:08:36.272 [DEBUG] [Thread-195422] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:08:36.280 [DEBUG] [Thread-195422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:08:36.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:08: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-11-24T19:08: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-11-24T19:08:36.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:08:36.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:08:36.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:08:36.313 [DEBUG] [Thread-195422] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:08:36.710 [DEBUG] [Thread-195424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:08:51.759 [DEBUG] [Thread-195425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:09:06.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:09:06.336 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:09:06.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-11-24T19:09:06.796 [DEBUG] [Thread-195426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:09:07.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 8, 34), 21.41, 23.39, 0.0, 24.21, 19.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:09:07.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:08:34
2025-11-24T19:09:07.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:09:07.908 [DEBUG] [Thread-195427] [transport.py] [_log()] starting thread (client mode): 0xd0784730
2025-11-24T19:09:07.909 [DEBUG] [Thread-195427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:09:07.917 [DEBUG] [Thread-195427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:09:07.918 [INFO] [Thread-195427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:09:07.922 [DEBUG] [Thread-195427] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] client lang: <none>
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] server lang: <none>
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] kex follows: False
2025-11-24T19:09:07.923 [DEBUG] [Thread-195427] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:09:07.924 [DEBUG] [Thread-195427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:09:07.924 [DEBUG] [Thread-195427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:09:07.924 [DEBUG] [Thread-195427] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:09:07.924 [DEBUG] [Thread-195427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:09:07.924 [DEBUG] [Thread-195427] [transport.py] [_log()] Compression: none
2025-11-24T19:09:07.924 [DEBUG] [Thread-195427] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:09:07.945 [DEBUG] [Thread-195427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:09:07.947 [DEBUG] [Thread-195427] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:09:07.948 [DEBUG] [Thread-195427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:09:07.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:09:07.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:09:07.953 [DEBUG] [Thread-195427] [transport.py] [_log()] userauth is OK
2025-11-24T19:09:07.953 [DEBUG] [Thread-195427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:09:07.953 [DEBUG] [Thread-195427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:09:07.953 [DEBUG] [Thread-195427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:09:07.953 [DEBUG] [Thread-195427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:09:07.965 [INFO] [Thread-195427] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:09:07.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:09:08.556 [DEBUG] [Thread-195427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:09:08.556 [DEBUG] [Thread-195427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:09:08.556 [DEBUG] [Thread-195427] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:09:08.597 [DEBUG] [Thread-195427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:09:08.597 [DEBUG] [Thread-195427] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:09:08.600 [DEBUG] [Thread-195427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:09:08.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:09:08.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:09:08.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:09:08.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:09:08.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:09:08.619 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:09:08.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:09:08.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:09:08.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:09:08.621 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-11-24T19:09:08.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:08:34', tmtdew=21.41, humidity=23.39, cloud=0.0, wind=24.21, temperature=19.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:09:08.622 [DEBUG] [Thread-195427] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:09:08.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:09:08.712 [DEBUG] [Thread-195430] [transport.py] [_log()] starting thread (client mode): 0xd0786c50
2025-11-24T19:09:08.712 [DEBUG] [Thread-195430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:09:08.729 [DEBUG] [Thread-195430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:09:08.729 [INFO] [Thread-195430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] client lang: <none>
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] server lang: <none>
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] kex follows: False
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:09:08.739 [DEBUG] [Thread-195430] [transport.py] [_log()] Compression: none
2025-11-24T19:09:08.740 [DEBUG] [Thread-195430] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:09:08.803 [DEBUG] [Thread-195430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:09:08.803 [DEBUG] [Thread-195430] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:09:08.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:09:08.804 [DEBUG] [Thread-195430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:09:08.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:09:08.866 [DEBUG] [Thread-195430] [transport.py] [_log()] userauth is OK
2025-11-24T19:09:08.866 [DEBUG] [Thread-195430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:09:08.866 [DEBUG] [Thread-195430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:09:08.866 [DEBUG] [Thread-195430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:09:08.866 [DEBUG] [Thread-195430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:09:08.883 [INFO] [Thread-195430] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:09:08.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:09:08.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:09:09.667 [DEBUG] [Thread-195430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:09:09.667 [DEBUG] [Thread-195430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:09:09.718 [DEBUG] [Thread-195430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:09:09.718 [DEBUG] [Thread-195430] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:09:09.728 [DEBUG] [Thread-195430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:09:09.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:09:09.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:09:09.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-11-24T19:09:09.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:09:09.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:09:09.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:09:09.768 [DEBUG] [Thread-195430] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:09:18.877 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:09:18.879 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:09:21.841 [DEBUG] [Thread-195432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:09:24.747 [DEBUG] [Thread-195433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:09:37.108 [DEBUG] [Thread-195434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:09:39.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:09:39.802 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:09:39.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-11-24T19:09:40.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 9, 6), 21.37, 23.44, 0.0, 23.66, 19.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:09:40.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:09:06
2025-11-24T19:09:40.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:09:40.960 [DEBUG] [Thread-195435] [transport.py] [_log()] starting thread (client mode): 0xc9b81630
2025-11-24T19:09:40.960 [DEBUG] [Thread-195435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:09:40.968 [DEBUG] [Thread-195435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:09:40.968 [INFO] [Thread-195435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] client lang: <none>
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] server lang: <none>
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] kex follows: False
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:09:40.970 [DEBUG] [Thread-195435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:09:40.971 [DEBUG] [Thread-195435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:09:40.971 [DEBUG] [Thread-195435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:09:40.971 [DEBUG] [Thread-195435] [transport.py] [_log()] Compression: none
2025-11-24T19:09:40.971 [DEBUG] [Thread-195435] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:09:40.981 [DEBUG] [Thread-195435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:09:40.984 [DEBUG] [Thread-195435] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:09:40.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:09:40.985 [DEBUG] [Thread-195435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:09:40.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:09:40.986 [DEBUG] [Thread-195435] [transport.py] [_log()] userauth is OK
2025-11-24T19:09:40.986 [DEBUG] [Thread-195435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:09:40.986 [DEBUG] [Thread-195435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:09:40.986 [DEBUG] [Thread-195435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:09:40.986 [DEBUG] [Thread-195435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:09:41.002 [INFO] [Thread-195435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:09:41.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:09:41.590 [DEBUG] [Thread-195435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:09:41.591 [DEBUG] [Thread-195435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:09:41.591 [DEBUG] [Thread-195435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:09:41.631 [DEBUG] [Thread-195435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:09:41.631 [DEBUG] [Thread-195435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:09:41.633 [DEBUG] [Thread-195435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:09:41.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:09:41.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:09:41.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:09:41.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:09:41.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:09:41.649 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:09:41.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:09:41.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:09:41.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:09:41.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.714981 -999.00  +19.00  22.85     29   +0.80 1 1 1 1 1   887    0 17.66 -41.86 ----- 15.4 22.9 182.6 28.6 20.4 -27.6 20.4 -27.8 20.8 -26.1 21.0 -27.6
2025-11-24T19:09:41.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:09:41.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:09:41.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.714981
2025-11-24T19:09:41.655 [DEBUG] [Thread-195435] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:09:41.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:09:41.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:09:41.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:09:41.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:09:41.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:09:41.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:09:06', tmtdew=21.37, humidity=23.44, cloud=0.0, wind=23.66, temperature=19.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:09:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:09:41.741 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:09:41.752 [DEBUG] [Thread-195438] [transport.py] [_log()] starting thread (client mode): 0xd31503d0
2025-11-24T19:09:41.753 [DEBUG] [Thread-195438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:09:41.767 [DEBUG] [Thread-195438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:09:41.767 [INFO] [Thread-195438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] client lang: <none>
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] server lang: <none>
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] kex follows: False
2025-11-24T19:09:41.775 [DEBUG] [Thread-195438] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:09:41.776 [DEBUG] [Thread-195438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:09:41.776 [DEBUG] [Thread-195438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:09:41.776 [DEBUG] [Thread-195438] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:09:41.776 [DEBUG] [Thread-195438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:09:41.776 [DEBUG] [Thread-195438] [transport.py] [_log()] Compression: none
2025-11-24T19:09:41.776 [DEBUG] [Thread-195438] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:09:41.830 [DEBUG] [Thread-195438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:09:41.830 [DEBUG] [Thread-195438] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:09:41.831 [DEBUG] [Thread-195438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:09:41.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:09:41.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:09:41.892 [DEBUG] [Thread-195438] [transport.py] [_log()] userauth is OK
2025-11-24T19:09:41.892 [DEBUG] [Thread-195438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:09:41.892 [DEBUG] [Thread-195438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:09:41.892 [DEBUG] [Thread-195438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:09:41.892 [DEBUG] [Thread-195438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:09:41.906 [INFO] [Thread-195438] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:09:41.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:09:41.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:09:42.764 [DEBUG] [Thread-195438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:09:42.765 [DEBUG] [Thread-195438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:09:42.812 [DEBUG] [Thread-195438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:09:42.812 [DEBUG] [Thread-195438] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:09:42.820 [DEBUG] [Thread-195438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:09:42.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:09:42.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:09:42.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-11-24T19:09:42.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:09:42.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:09:42.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:09:42.855 [DEBUG] [Thread-195438] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:09:52.142 [DEBUG] [Thread-195440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:10:07.179 [DEBUG] [Thread-195441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:10:12.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:10:12.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:10:12.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-11-24T19:10:13.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 9, 39), 21.39, 23.42, 0.0, 22.16, 19.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:10:13.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:09:39
2025-11-24T19:10:13.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:10:14.091 [DEBUG] [Thread-195442] [transport.py] [_log()] starting thread (client mode): 0xc9b82770
2025-11-24T19:10:14.092 [DEBUG] [Thread-195442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:10:14.107 [DEBUG] [Thread-195442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:10:14.107 [INFO] [Thread-195442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] client lang: <none>
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] server lang: <none>
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] kex follows: False
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] Compression: none
2025-11-24T19:10:14.111 [DEBUG] [Thread-195442] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:10:14.130 [DEBUG] [Thread-195442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:10:14.131 [DEBUG] [Thread-195442] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:10:14.131 [DEBUG] [Thread-195442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:10:14.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:10:14.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:10:14.177 [DEBUG] [Thread-195442] [transport.py] [_log()] userauth is OK
2025-11-24T19:10:14.177 [DEBUG] [Thread-195442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:10:14.177 [DEBUG] [Thread-195442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:10:14.177 [DEBUG] [Thread-195442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:10:14.177 [DEBUG] [Thread-195442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:10:14.193 [INFO] [Thread-195442] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:10:14.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:10:14.782 [DEBUG] [Thread-195442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:10:14.782 [DEBUG] [Thread-195442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:10:14.782 [DEBUG] [Thread-195442] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:10:14.823 [DEBUG] [Thread-195442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:10:14.823 [DEBUG] [Thread-195442] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:10:14.824 [DEBUG] [Thread-195442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:10:14.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:10:14.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:10:14.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:10:14.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:10:14.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:10:14.854 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:10:14.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:10:14.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:10:14.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:10:14.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.715328 -999.00  +19.00  25.02     29   +0.80 1 1 1 1 1   886    0 16.82 -44.61 ----- 23.6 25.0 165.2 33.5 20.3 -27.5 20.4 -28.1 20.8 -26.2 21.0 -27.2
2025-11-24T19:10:14.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:10:14.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:10:14.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.715328
2025-11-24T19:10:14.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:10:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:10:14.858 [DEBUG] [Thread-195442] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:10:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:10:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:10:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:10:14.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:09:39', tmtdew=21.39, humidity=23.42, cloud=0.0, wind=22.16, temperature=19.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:10:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:10: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-11-24T19:10:14.946 [DEBUG] [Thread-195445] [transport.py] [_log()] starting thread (client mode): 0xc9b80370
2025-11-24T19:10:14.946 [DEBUG] [Thread-195445] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:10:14.961 [DEBUG] [Thread-195445] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:10:14.961 [INFO] [Thread-195445] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:10:14.971 [DEBUG] [Thread-195445] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:10:14.971 [DEBUG] [Thread-195445] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] client lang: <none>
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] server lang: <none>
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] kex follows: False
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:10:14.972 [DEBUG] [Thread-195445] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:10:14.973 [DEBUG] [Thread-195445] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:10:14.973 [DEBUG] [Thread-195445] [transport.py] [_log()] Compression: none
2025-11-24T19:10:14.973 [DEBUG] [Thread-195445] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:10:15.032 [DEBUG] [Thread-195445] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:10:15.033 [DEBUG] [Thread-195445] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:10:15.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:10:15.034 [DEBUG] [Thread-195445] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:10:15.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:10:15.092 [DEBUG] [Thread-195445] [transport.py] [_log()] userauth is OK
2025-11-24T19:10:15.092 [DEBUG] [Thread-195445] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:10:15.093 [DEBUG] [Thread-195445] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:10:15.093 [DEBUG] [Thread-195445] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:10:15.093 [DEBUG] [Thread-195445] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:10:15.112 [INFO] [Thread-195445] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:10:15.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:10:15.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:10:15.922 [DEBUG] [Thread-195445] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:10:15.922 [DEBUG] [Thread-195445] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:10:15.972 [DEBUG] [Thread-195445] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:10:15.972 [DEBUG] [Thread-195445] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:10:15.986 [DEBUG] [Thread-195445] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:10:15.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:10:15.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-11-24T19:10:16.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-11-24T19:10:16.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:10:16.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:10:16.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:10:16.031 [DEBUG] [Thread-195445] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:10:19.029 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:10:19.031 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:10:22.224 [DEBUG] [Thread-195447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:10:25.039 [DEBUG] [Thread-195448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:10:37.263 [DEBUG] [Thread-195449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:10:46.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:10:46.052 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:10:46.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-11-24T19:10:46.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 10, 12), 21.36, 23.47, 0.0, 26.25, 19.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:10:46.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:10:12
2025-11-24T19:10:47.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:10:47.260 [DEBUG] [Thread-195450] [transport.py] [_log()] starting thread (client mode): 0xd0784520
2025-11-24T19:10:47.260 [DEBUG] [Thread-195450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:10:47.269 [DEBUG] [Thread-195450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:10:47.269 [INFO] [Thread-195450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] client lang: <none>
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] server lang: <none>
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] kex follows: False
2025-11-24T19:10:47.271 [DEBUG] [Thread-195450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:10:47.272 [DEBUG] [Thread-195450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:10:47.272 [DEBUG] [Thread-195450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:10:47.272 [DEBUG] [Thread-195450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:10:47.272 [DEBUG] [Thread-195450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:10:47.272 [DEBUG] [Thread-195450] [transport.py] [_log()] Compression: none
2025-11-24T19:10:47.272 [DEBUG] [Thread-195450] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:10:47.293 [DEBUG] [Thread-195450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:10:47.296 [DEBUG] [Thread-195450] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:10:47.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:10:47.298 [DEBUG] [Thread-195450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:10:47.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:10:47.299 [DEBUG] [Thread-195450] [transport.py] [_log()] userauth is OK
2025-11-24T19:10:47.299 [DEBUG] [Thread-195450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:10:47.299 [DEBUG] [Thread-195450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:10:47.299 [DEBUG] [Thread-195450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:10:47.299 [DEBUG] [Thread-195450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:10:47.310 [INFO] [Thread-195450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:10:47.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:10:47.898 [DEBUG] [Thread-195450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:10:47.898 [DEBUG] [Thread-195450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:10:47.899 [DEBUG] [Thread-195450] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:10:47.939 [DEBUG] [Thread-195450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:10:47.939 [DEBUG] [Thread-195450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:10:47.941 [DEBUG] [Thread-195450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:10:47.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:10:47.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:10:47.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:10:47.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:10:47.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:10:47.958 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:10:47.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:10:47.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:10:47.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:10:47.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.715675 -999.00  +19.00  20.46     29   +0.80 1 1 1 1 1   886    0 16.87 -46.94 ----- 19.4 20.5 167.4 26.2 20.3 -27.5 20.4 -27.2 20.7 -26.0 20.9 -27.2
2025-11-24T19:10:47.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:10:47.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:10:47.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.715675
2025-11-24T19:10:47.966 [DEBUG] [Thread-195450] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:10:47.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:10:47.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:10:47.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:10:47.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:10:47.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:10:47.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:10:12', tmtdew=21.36, humidity=23.47, cloud=0.0, wind=26.25, temperature=19.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:10:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:10:48.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:10:48.073 [DEBUG] [Thread-195453] [transport.py] [_log()] starting thread (client mode): 0xd07fa140
2025-11-24T19:10:48.073 [DEBUG] [Thread-195453] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:10:48.087 [DEBUG] [Thread-195453] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:10:48.087 [INFO] [Thread-195453] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] client lang: <none>
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] server lang: <none>
2025-11-24T19:10:48.095 [DEBUG] [Thread-195453] [transport.py] [_log()] kex follows: False
2025-11-24T19:10:48.096 [DEBUG] [Thread-195453] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:10:48.096 [DEBUG] [Thread-195453] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:10:48.096 [DEBUG] [Thread-195453] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:10:48.096 [DEBUG] [Thread-195453] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:10:48.096 [DEBUG] [Thread-195453] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:10:48.096 [DEBUG] [Thread-195453] [transport.py] [_log()] Compression: none
2025-11-24T19:10:48.096 [DEBUG] [Thread-195453] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:10:48.152 [DEBUG] [Thread-195453] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:10:48.153 [DEBUG] [Thread-195453] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:10:48.154 [DEBUG] [Thread-195453] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:10:48.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:10:48.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:10:48.208 [DEBUG] [Thread-195453] [transport.py] [_log()] userauth is OK
2025-11-24T19:10:48.208 [DEBUG] [Thread-195453] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:10:48.208 [DEBUG] [Thread-195453] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:10:48.208 [DEBUG] [Thread-195453] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:10:48.208 [DEBUG] [Thread-195453] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:10:48.225 [INFO] [Thread-195453] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:10:48.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:10:48.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:10:49.073 [DEBUG] [Thread-195453] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:10:49.074 [DEBUG] [Thread-195453] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:10:49.121 [DEBUG] [Thread-195453] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:10:49.121 [DEBUG] [Thread-195453] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:10:49.129 [DEBUG] [Thread-195453] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:10:49.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:10:49.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-11-24T19:10:49.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-11-24T19:10:49.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:10:49.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:10:49.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:10:49.161 [DEBUG] [Thread-195453] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:10:52.302 [DEBUG] [Thread-195455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:11:07.395 [DEBUG] [Thread-195456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:11:19.171 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:11:19.175 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:11:19.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:11:19.185 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:11:19.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-11-24T19:11:19.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 10, 44), 21.26, 23.54, 0.0, 26.84, 19.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:11:19.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:10:44
2025-11-24T19:11:20.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:11:20.301 [DEBUG] [Thread-195457] [transport.py] [_log()] starting thread (client mode): 0xc9b81000
2025-11-24T19:11:20.301 [DEBUG] [Thread-195457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:11:20.313 [DEBUG] [Thread-195457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:11:20.313 [INFO] [Thread-195457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:11:20.317 [DEBUG] [Thread-195457] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:11:20.317 [DEBUG] [Thread-195457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:11:20.317 [DEBUG] [Thread-195457] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:11:20.317 [DEBUG] [Thread-195457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] client lang: <none>
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] server lang: <none>
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] kex follows: False
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:11:20.318 [DEBUG] [Thread-195457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:11:20.319 [DEBUG] [Thread-195457] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:11:20.319 [DEBUG] [Thread-195457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:11:20.319 [DEBUG] [Thread-195457] [transport.py] [_log()] Compression: none
2025-11-24T19:11:20.319 [DEBUG] [Thread-195457] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:11:20.347 [DEBUG] [Thread-195457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:11:20.351 [DEBUG] [Thread-195457] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:11:20.352 [DEBUG] [Thread-195457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:11:20.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:11:20.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:11:20.355 [DEBUG] [Thread-195457] [transport.py] [_log()] userauth is OK
2025-11-24T19:11:20.355 [DEBUG] [Thread-195457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:11:20.355 [DEBUG] [Thread-195457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:11:20.355 [DEBUG] [Thread-195457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:11:20.355 [DEBUG] [Thread-195457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:11:20.367 [INFO] [Thread-195457] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:11:20.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:11:20.961 [DEBUG] [Thread-195457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:11:20.961 [DEBUG] [Thread-195457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:11:20.962 [DEBUG] [Thread-195457] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:11:21.003 [DEBUG] [Thread-195457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:11:21.003 [DEBUG] [Thread-195457] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:11:21.007 [DEBUG] [Thread-195457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:11:21.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:11:21.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:11:21.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:11:21.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:11:21.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:11:21.037 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:11:21.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:11:21.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:11:21.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:11:21.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.715675 -999.00  +19.00  20.46     29   +0.80 1 1 1 1 1   886    0 16.87 -46.94 ----- 19.4 20.5 167.4 26.2 20.3 -27.5 20.4 -27.2 20.7 -26.0 20.9 -27.2
2025-11-24T19:11:21.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:11:21.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:11:21.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.715675
2025-11-24T19:11:21.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:11:21.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:11:21.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:11:21.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:11:21.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:11:21.046 [DEBUG] [Thread-195457] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:11:21.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:10:44', tmtdew=21.26, humidity=23.54, cloud=0.0, wind=26.84, temperature=19.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:10:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:11:21.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:11:21.133 [DEBUG] [Thread-195460] [transport.py] [_log()] starting thread (client mode): 0xc9b81f00
2025-11-24T19:11:21.133 [DEBUG] [Thread-195460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:11:21.148 [DEBUG] [Thread-195460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:11:21.148 [INFO] [Thread-195460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] client lang: <none>
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] server lang: <none>
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] kex follows: False
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] Compression: none
2025-11-24T19:11:21.155 [DEBUG] [Thread-195460] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:11:21.211 [DEBUG] [Thread-195460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:11:21.211 [DEBUG] [Thread-195460] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:11:21.211 [DEBUG] [Thread-195460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:11:21.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:11:21.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:11:21.268 [DEBUG] [Thread-195460] [transport.py] [_log()] userauth is OK
2025-11-24T19:11:21.268 [DEBUG] [Thread-195460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:11:21.268 [DEBUG] [Thread-195460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:11:21.268 [DEBUG] [Thread-195460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:11:21.268 [DEBUG] [Thread-195460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:11:21.282 [INFO] [Thread-195460] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:11:21.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:11:21.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:11:22.093 [DEBUG] [Thread-195460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:11:22.094 [DEBUG] [Thread-195460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:11:22.141 [DEBUG] [Thread-195460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:11:22.141 [DEBUG] [Thread-195460] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:11:22.149 [DEBUG] [Thread-195460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:11:22.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:11:22.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-11-24T19:11: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-11-24T19:11:22.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:11:22.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:11:22.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:11:22.185 [DEBUG] [Thread-195460] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:11:22.459 [DEBUG] [Thread-195462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:11:25.364 [DEBUG] [Thread-195463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:11:37.614 [DEBUG] [Thread-195464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:11:52.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:11:52.207 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:11:52.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-11-24T19:11:52.649 [DEBUG] [Thread-195465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:11:53.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 11, 17), 21.27, 23.52, 0.0, 29.11, 19.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:11:53.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:11:17
2025-11-24T19:11:53.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:11:53.338 [DEBUG] [Thread-195466] [transport.py] [_log()] starting thread (client mode): 0xc9b80310
2025-11-24T19:11:53.338 [DEBUG] [Thread-195466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:11:53.356 [DEBUG] [Thread-195466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:11:53.356 [INFO] [Thread-195466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] client lang: <none>
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] server lang: <none>
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] kex follows: False
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] Compression: none
2025-11-24T19:11:53.358 [DEBUG] [Thread-195466] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:11:53.370 [DEBUG] [Thread-195466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:11:53.370 [DEBUG] [Thread-195466] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:11:53.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:11:53.370 [DEBUG] [Thread-195466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:11:53.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:11:53.371 [DEBUG] [Thread-195466] [transport.py] [_log()] userauth is OK
2025-11-24T19:11:53.371 [DEBUG] [Thread-195466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:11:53.371 [DEBUG] [Thread-195466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:11:53.371 [DEBUG] [Thread-195466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:11:53.371 [DEBUG] [Thread-195466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:11:53.381 [INFO] [Thread-195466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:11:53.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:11:54.098 [DEBUG] [Thread-195466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:11:54.099 [DEBUG] [Thread-195466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:11:54.099 [DEBUG] [Thread-195466] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:11:54.139 [DEBUG] [Thread-195466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:11:54.139 [DEBUG] [Thread-195466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:11:54.141 [DEBUG] [Thread-195466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:11:54.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:11:54.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:11:54.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:11:54.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:11:54.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:11:54.156 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:11:54.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:11:54.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:11:54.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:11:54.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.716023 -999.00  +19.00  19.44     29   +0.80 1 1 1 1 1   886    0 17.64 -50.77 ----- 20.5 19.4 163.0 25.7 20.2 -27.6 20.4 -27.2 20.6 -26.1 20.9 -27.2
2025-11-24T19:11:54.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:11:54.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:11:54.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.716023
2025-11-24T19:11:54.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:11:54.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:11:54.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:11:54.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:11:54.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:11:54.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:11:17', tmtdew=21.27, humidity=23.52, cloud=0.0, wind=29.11, temperature=19.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:11:04.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:11:54.158 [DEBUG] [Thread-195466] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:11: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-11-24T19:11:54.250 [DEBUG] [Thread-195469] [transport.py] [_log()] starting thread (client mode): 0xd07cd960
2025-11-24T19:11:54.250 [DEBUG] [Thread-195469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:11:54.265 [DEBUG] [Thread-195469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:11:54.265 [INFO] [Thread-195469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] client lang: <none>
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] server lang: <none>
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] kex follows: False
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] Compression: none
2025-11-24T19:11:54.273 [DEBUG] [Thread-195469] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:11:54.332 [DEBUG] [Thread-195469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:11:54.332 [DEBUG] [Thread-195469] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:11:54.333 [DEBUG] [Thread-195469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:11:54.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:11:54.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:11:54.388 [DEBUG] [Thread-195469] [transport.py] [_log()] userauth is OK
2025-11-24T19:11:54.388 [DEBUG] [Thread-195469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:11:54.388 [DEBUG] [Thread-195469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:11:54.388 [DEBUG] [Thread-195469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:11:54.388 [DEBUG] [Thread-195469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:11:54.401 [INFO] [Thread-195469] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:11:54.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:11:54.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:11:55.237 [DEBUG] [Thread-195469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:11:55.237 [DEBUG] [Thread-195469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:11:55.285 [DEBUG] [Thread-195469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:11:55.285 [DEBUG] [Thread-195469] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:11:55.293 [DEBUG] [Thread-195469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:11:55.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:11:55.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:11:55.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:11:55.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:11:55.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:11:55.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:11:55.325 [DEBUG] [Thread-195469] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:12:07.685 [DEBUG] [Thread-195471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:12:19.326 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:12:19.328 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:12:22.746 [DEBUG] [Thread-195472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:12:25.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:12:25.348 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:12:25.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-11-24T19:12:25.611 [DEBUG] [Thread-195473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:12:26.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 11, 50), 21.28, 23.61, 0.0, 25.94, 19.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:12:26.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:11:50
2025-11-24T19:12:26.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:12:26.517 [DEBUG] [Thread-195474] [transport.py] [_log()] starting thread (client mode): 0xd0785690
2025-11-24T19:12:26.517 [DEBUG] [Thread-195474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:12:26.534 [DEBUG] [Thread-195474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:12:26.534 [INFO] [Thread-195474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:12:26.537 [DEBUG] [Thread-195474] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] client lang: <none>
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] server lang: <none>
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] kex follows: False
2025-11-24T19:12:26.538 [DEBUG] [Thread-195474] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:12:26.539 [DEBUG] [Thread-195474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:12:26.539 [DEBUG] [Thread-195474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:12:26.539 [DEBUG] [Thread-195474] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:12:26.539 [DEBUG] [Thread-195474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:12:26.539 [DEBUG] [Thread-195474] [transport.py] [_log()] Compression: none
2025-11-24T19:12:26.539 [DEBUG] [Thread-195474] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:12:26.570 [DEBUG] [Thread-195474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:12:26.573 [DEBUG] [Thread-195474] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:12:26.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:12:26.576 [DEBUG] [Thread-195474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:12:26.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:12:26.613 [DEBUG] [Thread-195474] [transport.py] [_log()] userauth is OK
2025-11-24T19:12:26.613 [DEBUG] [Thread-195474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:12:26.614 [DEBUG] [Thread-195474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:12:26.614 [DEBUG] [Thread-195474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:12:26.614 [DEBUG] [Thread-195474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:12:26.636 [INFO] [Thread-195474] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:12:26.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:12:27.215 [DEBUG] [Thread-195474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:12:27.216 [DEBUG] [Thread-195474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:12:27.218 [DEBUG] [Thread-195474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:12:27.256 [DEBUG] [Thread-195474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:12:27.257 [DEBUG] [Thread-195474] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:12:27.260 [DEBUG] [Thread-195474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:12:27.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:12:27.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:12:27.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:12:27.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:12:27.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:12:27.285 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:12:27.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:12:27.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:12:27.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:12:27.286 [DEBUG] [Thread-195474] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:12:27.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.716370 -999.00  +19.00  21.11     29   +0.80 1 1 1 1 1   886    0 17.02 -52.44 ----- 19.0 21.1 161.6 26.3 20.3 -27.5 20.3 -26.7 20.7 -25.8 20.8 -27.2
2025-11-24T19:12:27.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:12:27.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:12:27.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.716370
2025-11-24T19:12:27.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:12:27.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:12:27.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:12:27.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:12:27.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:12:27.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:11:50', tmtdew=21.28, humidity=23.61, cloud=0.0, wind=25.94, temperature=19.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:11:34.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:12:27.393 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:12:27.405 [DEBUG] [Thread-195477] [transport.py] [_log()] starting thread (client mode): 0xd07cd810
2025-11-24T19:12:27.405 [DEBUG] [Thread-195477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:12:27.419 [DEBUG] [Thread-195477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:12:27.420 [INFO] [Thread-195477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:12:27.427 [DEBUG] [Thread-195477] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:12:27.427 [DEBUG] [Thread-195477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:12:27.427 [DEBUG] [Thread-195477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:12:27.427 [DEBUG] [Thread-195477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:12:27.427 [DEBUG] [Thread-195477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:12:27.427 [DEBUG] [Thread-195477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] client lang: <none>
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] server lang: <none>
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] kex follows: False
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] Compression: none
2025-11-24T19:12:27.428 [DEBUG] [Thread-195477] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:12:27.483 [DEBUG] [Thread-195477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:12:27.483 [DEBUG] [Thread-195477] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:12:27.483 [DEBUG] [Thread-195477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:12:27.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:12:27.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:12:27.545 [DEBUG] [Thread-195477] [transport.py] [_log()] userauth is OK
2025-11-24T19:12:27.545 [DEBUG] [Thread-195477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:12:27.545 [DEBUG] [Thread-195477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:12:27.545 [DEBUG] [Thread-195477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:12:27.545 [DEBUG] [Thread-195477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:12:27.560 [INFO] [Thread-195477] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:12:27.560 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:12:27.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:12:28.396 [DEBUG] [Thread-195477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:12:28.396 [DEBUG] [Thread-195477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:12:28.446 [DEBUG] [Thread-195477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:12:28.446 [DEBUG] [Thread-195477] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:12:28.454 [DEBUG] [Thread-195477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:12:28.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:12:28.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-11-24T19:12:28.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-11-24T19:12:28.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:12:28.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:12:28.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:12:28.501 [DEBUG] [Thread-195477] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:12:37.773 [DEBUG] [Thread-195479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:12:52.840 [DEBUG] [Thread-195480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:12:58.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:12:58.535 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:12:58.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:12:59.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 12, 55), 21.14, 23.66, 0.0, 32.66, 19.03, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:12:59.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:12:55
2025-11-24T19:12:59.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:12:59.643 [DEBUG] [Thread-195481] [transport.py] [_log()] starting thread (client mode): 0xd07fa740
2025-11-24T19:12:59.643 [DEBUG] [Thread-195481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:12:59.649 [DEBUG] [Thread-195481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:12:59.649 [INFO] [Thread-195481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] client lang: <none>
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] server lang: <none>
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] kex follows: False
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:12:59.652 [DEBUG] [Thread-195481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:12:59.653 [DEBUG] [Thread-195481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:12:59.653 [DEBUG] [Thread-195481] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:12:59.653 [DEBUG] [Thread-195481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:12:59.653 [DEBUG] [Thread-195481] [transport.py] [_log()] Compression: none
2025-11-24T19:12:59.653 [DEBUG] [Thread-195481] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:12:59.679 [DEBUG] [Thread-195481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:12:59.684 [DEBUG] [Thread-195481] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:12:59.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:12:59.688 [DEBUG] [Thread-195481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:12:59.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:12:59.693 [DEBUG] [Thread-195481] [transport.py] [_log()] userauth is OK
2025-11-24T19:12:59.693 [DEBUG] [Thread-195481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:12:59.694 [DEBUG] [Thread-195481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:12:59.694 [DEBUG] [Thread-195481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:12:59.694 [DEBUG] [Thread-195481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:12:59.716 [INFO] [Thread-195481] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:12:59.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:13:00.373 [DEBUG] [Thread-195481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:13:00.373 [DEBUG] [Thread-195481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:13:00.374 [DEBUG] [Thread-195481] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:13:00.413 [DEBUG] [Thread-195481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:13:00.413 [DEBUG] [Thread-195481] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:13:00.417 [DEBUG] [Thread-195481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:13:00.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:13:00.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:13:00.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:13:00.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:13:00.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:13:00.449 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:13:00.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:13:00.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:13:00.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:13:00.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.717064 -999.00  +18.90  19.32     29   +0.80 1 1 1 1 1   886    0 16.88 -50.43 ----- 21.2 19.3 165.0 28.2 20.2 -27.4 20.3 -26.8 20.6 -26.1 20.8 -27.3
2025-11-24T19:13:00.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:13:00.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:13:00.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.717064
2025-11-24T19:13:00.456 [DEBUG] [Thread-195481] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:13:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:13:00.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:13:00.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:13:00.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:13:00.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:13:00.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:12:55', tmtdew=21.14, humidity=23.66, cloud=0.0, wind=32.66, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:12:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:13:00.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:13:00.561 [DEBUG] [Thread-195484] [transport.py] [_log()] starting thread (client mode): 0xd07fb790
2025-11-24T19:13:00.561 [DEBUG] [Thread-195484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:13:00.576 [DEBUG] [Thread-195484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:13:00.576 [INFO] [Thread-195484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:13:00.583 [DEBUG] [Thread-195484] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:13:00.583 [DEBUG] [Thread-195484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:13:00.583 [DEBUG] [Thread-195484] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:13:00.583 [DEBUG] [Thread-195484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:13:00.583 [DEBUG] [Thread-195484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:13:00.583 [DEBUG] [Thread-195484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] client lang: <none>
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] server lang: <none>
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] kex follows: False
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] Compression: none
2025-11-24T19:13:00.584 [DEBUG] [Thread-195484] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:13:00.638 [DEBUG] [Thread-195484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:13:00.639 [DEBUG] [Thread-195484] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:13:00.639 [DEBUG] [Thread-195484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:13:00.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:13:00.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:13:00.696 [DEBUG] [Thread-195484] [transport.py] [_log()] userauth is OK
2025-11-24T19:13:00.696 [DEBUG] [Thread-195484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:13:00.696 [DEBUG] [Thread-195484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:13:00.696 [DEBUG] [Thread-195484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:13:00.696 [DEBUG] [Thread-195484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:13:00.712 [INFO] [Thread-195484] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:13:00.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:13:00.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:13:01.543 [DEBUG] [Thread-195484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:13:01.552 [DEBUG] [Thread-195484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:13:01.590 [DEBUG] [Thread-195484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:13:01.590 [DEBUG] [Thread-195484] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:13:01.598 [DEBUG] [Thread-195484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:13:01.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:13:01.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:13:01.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-11-24T19:13:01.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:13:01.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:13:01.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:13:01.629 [DEBUG] [Thread-195484] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:13:07.869 [DEBUG] [Thread-195486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:13:19.491 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:13:19.504 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:13:22.967 [DEBUG] [Thread-195487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:13:25.939 [DEBUG] [Thread-195488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:13:31.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:13:31.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:13:31.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-11-24T19:13:32.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 13, 28), 21.11, 23.71, 0.0, 34.11, 19.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:13:32.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:13:28
2025-11-24T19:13:32.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:13:32.796 [DEBUG] [Thread-195489] [transport.py] [_log()] starting thread (client mode): 0xd3136950
2025-11-24T19:13:32.797 [DEBUG] [Thread-195489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:13:32.807 [DEBUG] [Thread-195489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:13:32.807 [INFO] [Thread-195489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:13:32.813 [DEBUG] [Thread-195489] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:13:32.814 [DEBUG] [Thread-195489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:13:32.814 [DEBUG] [Thread-195489] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:13:32.814 [DEBUG] [Thread-195489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:13:32.814 [DEBUG] [Thread-195489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:13:32.814 [DEBUG] [Thread-195489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:13:32.814 [DEBUG] [Thread-195489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:13:32.814 [DEBUG] [Thread-195489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:13:32.814 [DEBUG] [Thread-195489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:13:32.814 [DEBUG] [Thread-195489] [transport.py] [_log()] client lang: <none>
2025-11-24T19:13:32.814 [DEBUG] [Thread-195489] [transport.py] [_log()] server lang: <none>
2025-11-24T19:13:32.815 [DEBUG] [Thread-195489] [transport.py] [_log()] kex follows: False
2025-11-24T19:13:32.815 [DEBUG] [Thread-195489] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:13:32.815 [DEBUG] [Thread-195489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:13:32.815 [DEBUG] [Thread-195489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:13:32.816 [DEBUG] [Thread-195489] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:13:32.816 [DEBUG] [Thread-195489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:13:32.816 [DEBUG] [Thread-195489] [transport.py] [_log()] Compression: none
2025-11-24T19:13:32.816 [DEBUG] [Thread-195489] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:13:32.847 [DEBUG] [Thread-195489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:13:32.852 [DEBUG] [Thread-195489] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:13:32.854 [DEBUG] [Thread-195489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:13:32.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:13:32.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:13:32.859 [DEBUG] [Thread-195489] [transport.py] [_log()] userauth is OK
2025-11-24T19:13:32.859 [DEBUG] [Thread-195489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:13:32.860 [DEBUG] [Thread-195489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:13:32.860 [DEBUG] [Thread-195489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:13:32.860 [DEBUG] [Thread-195489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:13:32.897 [INFO] [Thread-195489] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:13:32.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:13:33.477 [DEBUG] [Thread-195489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:13:33.477 [DEBUG] [Thread-195489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:13:33.487 [DEBUG] [Thread-195489] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:13:33.518 [DEBUG] [Thread-195489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:13:33.518 [DEBUG] [Thread-195489] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:13:33.520 [DEBUG] [Thread-195489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:13:33.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:13:33.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:13:33.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:13:33.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:13:33.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:13:33.532 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:13:33.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:13:33.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:13:33.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:13:33.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.717412 -999.00  +18.90  18.55     29   +0.80 1 1 1 1 1   886    0 17.11 -51.21 ----- 21.0 18.6 185.2 25.7 20.2 -27.4 20.3 -27.2 20.5 -25.8 20.8 -27.3
2025-11-24T19:13:33.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:13:33.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:13:33.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.717412
2025-11-24T19:13:33.539 [DEBUG] [Thread-195489] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:13:33.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:13:33.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:13:33.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:13:33.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:13:33.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:13:33.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:13:28', tmtdew=21.11, humidity=23.71, cloud=0.0, wind=34.11, temperature=19.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:13:04.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:13:33.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:13:33.632 [DEBUG] [Thread-195492] [transport.py] [_log()] starting thread (client mode): 0xd0702c20
2025-11-24T19:13:33.632 [DEBUG] [Thread-195492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:13:33.647 [DEBUG] [Thread-195492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:13:33.647 [INFO] [Thread-195492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:13:33.654 [DEBUG] [Thread-195492] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:13:33.654 [DEBUG] [Thread-195492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:13:33.654 [DEBUG] [Thread-195492] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] client lang: <none>
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] server lang: <none>
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] kex follows: False
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] Compression: none
2025-11-24T19:13:33.655 [DEBUG] [Thread-195492] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:13:33.712 [DEBUG] [Thread-195492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:13:33.713 [DEBUG] [Thread-195492] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:13:33.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:13:33.714 [DEBUG] [Thread-195492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:13:33.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:13:33.768 [DEBUG] [Thread-195492] [transport.py] [_log()] userauth is OK
2025-11-24T19:13:33.769 [DEBUG] [Thread-195492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:13:33.769 [DEBUG] [Thread-195492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:13:33.769 [DEBUG] [Thread-195492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:13:33.769 [DEBUG] [Thread-195492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:13:33.787 [INFO] [Thread-195492] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:13:33.788 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:13:33.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:13:34.605 [DEBUG] [Thread-195492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:13:34.605 [DEBUG] [Thread-195492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:13:34.653 [DEBUG] [Thread-195492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:13:34.653 [DEBUG] [Thread-195492] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:13:34.661 [DEBUG] [Thread-195492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:13:34.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:13: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-11-24T19:13: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-11-24T19:13:34.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:13:34.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:13:34.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:13:34.703 [DEBUG] [Thread-195492] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:13:38.037 [DEBUG] [Thread-195494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:13:53.138 [DEBUG] [Thread-195495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:14:04.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:14:04.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:14:04.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-11-24T19:14:05.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 14), 21.09, 23.74, 0.0, 31.76, 19.0, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:14:05.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:14:00
2025-11-24T19:14:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:14:05.835 [DEBUG] [Thread-195496] [transport.py] [_log()] starting thread (client mode): 0xd07fb100
2025-11-24T19:14:05.835 [DEBUG] [Thread-195496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:14:05.845 [DEBUG] [Thread-195496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:14:05.845 [INFO] [Thread-195496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:14:05.845 [DEBUG] [Thread-195496] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] client lang: <none>
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] server lang: <none>
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] kex follows: False
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] Compression: none
2025-11-24T19:14:05.846 [DEBUG] [Thread-195496] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:14:05.858 [DEBUG] [Thread-195496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:14:05.858 [DEBUG] [Thread-195496] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:14:05.858 [DEBUG] [Thread-195496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:14:05.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:14:05.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:14:05.860 [DEBUG] [Thread-195496] [transport.py] [_log()] userauth is OK
2025-11-24T19:14:05.860 [DEBUG] [Thread-195496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:14:05.860 [DEBUG] [Thread-195496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:14:05.860 [DEBUG] [Thread-195496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:14:05.860 [DEBUG] [Thread-195496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:14:05.873 [INFO] [Thread-195496] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:14:05.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:14:06.512 [DEBUG] [Thread-195496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:14:06.521 [DEBUG] [Thread-195496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:14:06.522 [DEBUG] [Thread-195496] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:14:06.553 [DEBUG] [Thread-195496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:14:06.554 [DEBUG] [Thread-195496] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:14:06.557 [DEBUG] [Thread-195496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:14:06.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:14:06.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:14:06.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:14:06.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:14:06.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:14:06.580 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:14:06.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:14:06.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:14:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:14:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.717759 -999.00  +18.90  20.39     29   +0.80 1 1 1 1 1   885    0 16.86 -48.78 ----- 23.9 20.4 168.0 27.8 20.1 -27.3 20.2 -27.6 20.5 -26.0 20.6 -27.2
2025-11-24T19:14:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:14:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:14:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.717759
2025-11-24T19:14:06.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:14:06.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:14:06.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:14:06.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:14:06.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:14:06.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:14:00', tmtdew=21.09, humidity=23.74, cloud=0.0, wind=31.76, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:13:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:14:06.584 [DEBUG] [Thread-195496] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:14:06.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:14:06.675 [DEBUG] [Thread-195498] [transport.py] [_log()] starting thread (client mode): 0xd07f84f0
2025-11-24T19:14:06.675 [DEBUG] [Thread-195498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:14:06.690 [DEBUG] [Thread-195498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:14:06.690 [INFO] [Thread-195498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] client lang: <none>
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] server lang: <none>
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] kex follows: False
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:14:06.698 [DEBUG] [Thread-195498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:14:06.699 [DEBUG] [Thread-195498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:14:06.699 [DEBUG] [Thread-195498] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:14:06.699 [DEBUG] [Thread-195498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:14:06.699 [DEBUG] [Thread-195498] [transport.py] [_log()] Compression: none
2025-11-24T19:14:06.699 [DEBUG] [Thread-195498] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:14:06.760 [DEBUG] [Thread-195498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:14:06.761 [DEBUG] [Thread-195498] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:14:06.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:14:06.762 [DEBUG] [Thread-195498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:14:06.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:14:06.817 [DEBUG] [Thread-195498] [transport.py] [_log()] userauth is OK
2025-11-24T19:14:06.817 [DEBUG] [Thread-195498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:14:06.818 [DEBUG] [Thread-195498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:14:06.818 [DEBUG] [Thread-195498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:14:06.818 [DEBUG] [Thread-195498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:14:06.837 [INFO] [Thread-195498] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:14:06.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:14:06.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:14:07.648 [DEBUG] [Thread-195498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:14:07.648 [DEBUG] [Thread-195498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:14:07.696 [DEBUG] [Thread-195498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:14:07.696 [DEBUG] [Thread-195498] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:14:07.706 [DEBUG] [Thread-195498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:14:07.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:14:07.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-11-24T19:14:07.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-11-24T19:14:07.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:14:07.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:14:07.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:14:07.742 [DEBUG] [Thread-195498] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:14:08.174 [DEBUG] [Thread-195500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:14:19.644 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:14:19.646 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:14:23.223 [DEBUG] [Thread-195501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:14:26.246 [DEBUG] [Thread-195502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:14:37.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:14:37.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:14:37.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:14:38.287 [DEBUG] [Thread-195503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:14:38.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 14, 33), 21.07, 23.76, 0.0, 28.27, 18.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:14:38.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:14:33
2025-11-24T19:14:38.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:14:38.795 [DEBUG] [Thread-195504] [transport.py] [_log()] starting thread (client mode): 0xd07fa080
2025-11-24T19:14:38.796 [DEBUG] [Thread-195504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:14:38.814 [DEBUG] [Thread-195504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:14:38.814 [INFO] [Thread-195504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:14:38.817 [DEBUG] [Thread-195504] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:14:38.817 [DEBUG] [Thread-195504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:14:38.817 [DEBUG] [Thread-195504] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:14:38.817 [DEBUG] [Thread-195504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:14:38.817 [DEBUG] [Thread-195504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:14:38.817 [DEBUG] [Thread-195504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] client lang: <none>
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] server lang: <none>
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] kex follows: False
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] Compression: none
2025-11-24T19:14:38.818 [DEBUG] [Thread-195504] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:14:38.837 [DEBUG] [Thread-195504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:14:38.838 [DEBUG] [Thread-195504] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:14:38.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:14:38.839 [DEBUG] [Thread-195504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:14:38.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:14:38.841 [DEBUG] [Thread-195504] [transport.py] [_log()] userauth is OK
2025-11-24T19:14:38.841 [DEBUG] [Thread-195504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:14:38.842 [DEBUG] [Thread-195504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:14:38.842 [DEBUG] [Thread-195504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:14:38.842 [DEBUG] [Thread-195504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:14:38.866 [INFO] [Thread-195504] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:14:38.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:14:39.424 [DEBUG] [Thread-195504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:14:39.425 [DEBUG] [Thread-195504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:14:39.425 [DEBUG] [Thread-195504] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:14:39.465 [DEBUG] [Thread-195504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:14:39.465 [DEBUG] [Thread-195504] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:14:39.467 [DEBUG] [Thread-195504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:14:39.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:14:39.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:14:39.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:14:39.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:14:39.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:14:39.496 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:14:39.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:14:39.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:14:39.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:14:39.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.717759 -999.00  +18.90  20.39     29   +0.80 1 1 1 1 1   885    0 16.86 -48.78 ----- 23.9 20.4 168.0 27.8 20.1 -27.3 20.2 -27.6 20.5 -26.0 20.6 -27.2
2025-11-24T19:14:39.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:14:39.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:14:39.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.717759
2025-11-24T19:14:39.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:14:39.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:14:39.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:14:39.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:14:39.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:14:39.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:14:33', tmtdew=21.07, humidity=23.76, cloud=0.0, wind=28.27, temperature=18.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:13:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:14:39.497 [DEBUG] [Thread-195504] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:14:39.570 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:14:39.581 [DEBUG] [Thread-195507] [transport.py] [_log()] starting thread (client mode): 0xd07f9720
2025-11-24T19:14:39.581 [DEBUG] [Thread-195507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:14:39.596 [DEBUG] [Thread-195507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:14:39.596 [INFO] [Thread-195507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] client lang: <none>
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] server lang: <none>
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] kex follows: False
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:14:39.604 [DEBUG] [Thread-195507] [transport.py] [_log()] Compression: none
2025-11-24T19:14:39.605 [DEBUG] [Thread-195507] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:14:39.658 [DEBUG] [Thread-195507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:14:39.658 [DEBUG] [Thread-195507] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:14:39.658 [DEBUG] [Thread-195507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:14:39.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:14:39.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:14:39.716 [DEBUG] [Thread-195507] [transport.py] [_log()] userauth is OK
2025-11-24T19:14:39.716 [DEBUG] [Thread-195507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:14:39.716 [DEBUG] [Thread-195507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:14:39.716 [DEBUG] [Thread-195507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:14:39.716 [DEBUG] [Thread-195507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:14:39.730 [INFO] [Thread-195507] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:14:39.730 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:14:39.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:14:40.536 [DEBUG] [Thread-195507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:14:40.536 [DEBUG] [Thread-195507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:14:40.584 [DEBUG] [Thread-195507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:14:40.584 [DEBUG] [Thread-195507] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:14:40.592 [DEBUG] [Thread-195507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:14:40.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:14:40.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-11-24T19:14:40.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-11-24T19:14:40.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:14:40.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:14:40.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:14:40.624 [DEBUG] [Thread-195507] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:14:53.324 [DEBUG] [Thread-195509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:15:08.404 [DEBUG] [Thread-195510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:15:10.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:15:10.647 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:15:10.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-11-24T19:15:11.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 15, 5), 21.08, 23.72, 0.0, 29.2, 18.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:15:11.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:15:05
2025-11-24T19:15:11.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:15:11.862 [DEBUG] [Thread-195511] [transport.py] [_log()] starting thread (client mode): 0xd07cfaf0
2025-11-24T19:15:11.862 [DEBUG] [Thread-195511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:15:11.874 [DEBUG] [Thread-195511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:15:11.874 [INFO] [Thread-195511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:15:11.878 [DEBUG] [Thread-195511] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:15:11.878 [DEBUG] [Thread-195511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:15:11.878 [DEBUG] [Thread-195511] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:15:11.878 [DEBUG] [Thread-195511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:15:11.878 [DEBUG] [Thread-195511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:15:11.878 [DEBUG] [Thread-195511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:15:11.878 [DEBUG] [Thread-195511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:15:11.878 [DEBUG] [Thread-195511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:15:11.878 [DEBUG] [Thread-195511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:15:11.878 [DEBUG] [Thread-195511] [transport.py] [_log()] client lang: <none>
2025-11-24T19:15:11.879 [DEBUG] [Thread-195511] [transport.py] [_log()] server lang: <none>
2025-11-24T19:15:11.879 [DEBUG] [Thread-195511] [transport.py] [_log()] kex follows: False
2025-11-24T19:15:11.879 [DEBUG] [Thread-195511] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:15:11.879 [DEBUG] [Thread-195511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:15:11.879 [DEBUG] [Thread-195511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:15:11.879 [DEBUG] [Thread-195511] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:15:11.879 [DEBUG] [Thread-195511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:15:11.879 [DEBUG] [Thread-195511] [transport.py] [_log()] Compression: none
2025-11-24T19:15:11.879 [DEBUG] [Thread-195511] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:15:11.904 [DEBUG] [Thread-195511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:15:11.907 [DEBUG] [Thread-195511] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:15:11.909 [DEBUG] [Thread-195511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:15:11.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:15:11.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:15:11.912 [DEBUG] [Thread-195511] [transport.py] [_log()] userauth is OK
2025-11-24T19:15:11.912 [DEBUG] [Thread-195511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:15:11.913 [DEBUG] [Thread-195511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:15:11.913 [DEBUG] [Thread-195511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:15:11.913 [DEBUG] [Thread-195511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:15:11.941 [INFO] [Thread-195511] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:15:11.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:15:18.371 [DEBUG] [Thread-195511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:15:18.380 [DEBUG] [Thread-195511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:15:18.380 [DEBUG] [Thread-195511] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:15:18.412 [DEBUG] [Thread-195511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:15:18.412 [DEBUG] [Thread-195511] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:15:18.416 [DEBUG] [Thread-195511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:15:18.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:15:18.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:15:18.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:15:18.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:15:18.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:15:18.439 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:15:18.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:15:18.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:15:18.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:15:18.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.718453 -999.00  +18.80  16.07     29   +0.70 1 1 1 1 1   885    0 16.87 -49.14 ----- 23.1 16.1 171.6 29.8 20.1 -27.1 20.1 -27.3 20.4 -25.9 20.6 -27.2
2025-11-24T19:15:18.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:15:18.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:15:18.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.718453
2025-11-24T19:15:18.445 [DEBUG] [Thread-195511] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:15:18.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:15:18.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:15:18.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:15:18.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:15:18.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:15:18.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:15:05', tmtdew=21.08, humidity=23.72, cloud=0.0, wind=29.2, temperature=18.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:14:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:15:18.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:15:18.547 [DEBUG] [Thread-195514] [transport.py] [_log()] starting thread (client mode): 0xd07034c0
2025-11-24T19:15:18.547 [DEBUG] [Thread-195514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:15:18.562 [DEBUG] [Thread-195514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:15:18.562 [INFO] [Thread-195514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:15:18.569 [DEBUG] [Thread-195514] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:15:18.569 [DEBUG] [Thread-195514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:15:18.569 [DEBUG] [Thread-195514] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:15:18.569 [DEBUG] [Thread-195514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] client lang: <none>
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] server lang: <none>
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] kex follows: False
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] Compression: none
2025-11-24T19:15:18.570 [DEBUG] [Thread-195514] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:15:18.627 [DEBUG] [Thread-195514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:15:18.628 [DEBUG] [Thread-195514] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:15:18.628 [DEBUG] [Thread-195514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:15:18.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:15:18.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:15:18.684 [DEBUG] [Thread-195514] [transport.py] [_log()] userauth is OK
2025-11-24T19:15:18.685 [DEBUG] [Thread-195514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:15:18.685 [DEBUG] [Thread-195514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:15:18.685 [DEBUG] [Thread-195514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:15:18.685 [DEBUG] [Thread-195514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:15:18.704 [INFO] [Thread-195514] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:15:18.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:15:18.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:15:19.497 [DEBUG] [Thread-195514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:15:19.497 [DEBUG] [Thread-195514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:15:19.545 [DEBUG] [Thread-195514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:15:19.545 [DEBUG] [Thread-195514] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:15:19.553 [DEBUG] [Thread-195514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:15:19.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:15:19.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-11-24T19:15:19.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-11-24T19:15:19.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:15:19.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:15:19.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:15:19.587 [DEBUG] [Thread-195514] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:15:19.787 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:15:19.788 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:15:23.452 [DEBUG] [Thread-195516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:15:26.480 [DEBUG] [Thread-195517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:15:38.574 [DEBUG] [Thread-195518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:15:49.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:15:49.591 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:15:49.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-11-24T19:15:50.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 15, 38), 21.08, 23.74, 0.0, 26.8, 18.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:15:50.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:15:38
2025-11-24T19:15:50.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:15:50.631 [DEBUG] [Thread-195519] [transport.py] [_log()] starting thread (client mode): 0xd07cf490
2025-11-24T19:15:50.631 [DEBUG] [Thread-195519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:15:50.647 [DEBUG] [Thread-195519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:15:50.647 [INFO] [Thread-195519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] client lang: <none>
2025-11-24T19:15:50.650 [DEBUG] [Thread-195519] [transport.py] [_log()] server lang: <none>
2025-11-24T19:15:50.651 [DEBUG] [Thread-195519] [transport.py] [_log()] kex follows: False
2025-11-24T19:15:50.651 [DEBUG] [Thread-195519] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:15:50.651 [DEBUG] [Thread-195519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:15:50.651 [DEBUG] [Thread-195519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:15:50.651 [DEBUG] [Thread-195519] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:15:50.651 [DEBUG] [Thread-195519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:15:50.651 [DEBUG] [Thread-195519] [transport.py] [_log()] Compression: none
2025-11-24T19:15:50.651 [DEBUG] [Thread-195519] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:15:50.668 [DEBUG] [Thread-195519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:15:50.669 [DEBUG] [Thread-195519] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:15:50.669 [DEBUG] [Thread-195519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:15:50.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:15:50.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:15:50.713 [DEBUG] [Thread-195519] [transport.py] [_log()] userauth is OK
2025-11-24T19:15:50.713 [DEBUG] [Thread-195519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:15:50.713 [DEBUG] [Thread-195519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:15:50.713 [DEBUG] [Thread-195519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:15:50.713 [DEBUG] [Thread-195519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:15:50.740 [INFO] [Thread-195519] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:15:50.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:15:51.384 [DEBUG] [Thread-195519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:15:51.384 [DEBUG] [Thread-195519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:15:51.385 [DEBUG] [Thread-195519] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:15:51.425 [DEBUG] [Thread-195519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:15:51.425 [DEBUG] [Thread-195519] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:15:51.427 [DEBUG] [Thread-195519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:15:51.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:15:51.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:15:51.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:15:51.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:15:51.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:15:51.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:15:51.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:15:51.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:15:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:15:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.718800 -999.00  +18.80  16.73     29   +0.80 1 1 1 1 1   885    0 17.08 -45.89 ----- 17.0 16.7 160.3 26.3 20.0 -27.2 20.1 -26.8 20.4 -25.5 20.5 -27.2
2025-11-24T19:15:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:15:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:15:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.718800
2025-11-24T19:15:51.453 [DEBUG] [Thread-195519] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:15:51.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:15:51.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:15:51.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:15:51.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:15:51.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:15:51.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:15:38', tmtdew=21.08, humidity=23.74, cloud=0.0, wind=26.8, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:15:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:15:51.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:15:51.554 [DEBUG] [Thread-195522] [transport.py] [_log()] starting thread (client mode): 0xd0786bf0
2025-11-24T19:15:51.554 [DEBUG] [Thread-195522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:15:51.569 [DEBUG] [Thread-195522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:15:51.569 [INFO] [Thread-195522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:15:51.576 [DEBUG] [Thread-195522] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] client lang: <none>
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] server lang: <none>
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] kex follows: False
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] Compression: none
2025-11-24T19:15:51.577 [DEBUG] [Thread-195522] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:15:51.635 [DEBUG] [Thread-195522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:15:51.635 [DEBUG] [Thread-195522] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:15:51.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:15:51.635 [DEBUG] [Thread-195522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:15:51.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:15:51.692 [DEBUG] [Thread-195522] [transport.py] [_log()] userauth is OK
2025-11-24T19:15:51.692 [DEBUG] [Thread-195522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:15:51.692 [DEBUG] [Thread-195522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:15:51.692 [DEBUG] [Thread-195522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:15:51.692 [DEBUG] [Thread-195522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:15:51.706 [INFO] [Thread-195522] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:15:51.706 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:15:51.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:15:52.554 [DEBUG] [Thread-195522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:15:52.554 [DEBUG] [Thread-195522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:15:52.602 [DEBUG] [Thread-195522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:15:52.602 [DEBUG] [Thread-195522] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:15:52.610 [DEBUG] [Thread-195522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:15:52.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:15:52.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-11-24T19:15:52.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-11-24T19:15:52.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:15:52.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:15:52.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:15:52.652 [DEBUG] [Thread-195522] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:15:53.613 [DEBUG] [Thread-195524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:16:08.698 [DEBUG] [Thread-195525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:16:19.927 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:16:19.928 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:16:22.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:16:22.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:16:22.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:16:23.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 16, 11), 21.06, 23.76, 0.0, 26.04, 18.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:16:23.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:16:11
2025-11-24T19:16:23.727 [DEBUG] [Thread-195526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:16:23.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:16:23.993 [DEBUG] [Thread-195527] [transport.py] [_log()] starting thread (client mode): 0xd07018d0
2025-11-24T19:16:23.993 [DEBUG] [Thread-195527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:16:24.003 [DEBUG] [Thread-195527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:16:24.004 [INFO] [Thread-195527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] client lang: <none>
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] server lang: <none>
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] kex follows: False
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] Compression: none
2025-11-24T19:16:24.005 [DEBUG] [Thread-195527] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:16:24.017 [DEBUG] [Thread-195527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:16:24.018 [DEBUG] [Thread-195527] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:16:24.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:16:24.018 [DEBUG] [Thread-195527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:16:24.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:16:24.019 [DEBUG] [Thread-195527] [transport.py] [_log()] userauth is OK
2025-11-24T19:16:24.020 [DEBUG] [Thread-195527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:16:24.020 [DEBUG] [Thread-195527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:16:24.020 [DEBUG] [Thread-195527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:16:24.020 [DEBUG] [Thread-195527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:16:24.031 [INFO] [Thread-195527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:16:24.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:16:24.618 [DEBUG] [Thread-195527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:16:24.618 [DEBUG] [Thread-195527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:16:24.618 [DEBUG] [Thread-195527] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:16:24.658 [DEBUG] [Thread-195527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:16:24.658 [DEBUG] [Thread-195527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:16:24.660 [DEBUG] [Thread-195527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:16:24.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:16:24.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:16:24.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:16:24.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:16:24.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:16:24.677 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:16:24.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:16:24.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:16:24.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:16:24.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.719148 -999.00  +18.80  16.78     29   +0.80 1 1 1 1 1   884    0 17.23 -44.11 ----- 18.1 16.8 160.4 23.1 20.0 -27.1 20.1 -27.5 20.3 -25.7 20.5 -27.0
2025-11-24T19:16:24.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:16:24.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:16:24.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.719148
2025-11-24T19:16:24.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:16:24.683 [DEBUG] [Thread-195527] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:16:24.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:16:24.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:16:24.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:16:24.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:16:24.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:16:11', tmtdew=21.06, humidity=23.76, cloud=0.0, wind=26.04, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:15:34.387', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:16:24.769 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:16:24.781 [DEBUG] [Thread-195530] [transport.py] [_log()] starting thread (client mode): 0xd0701030
2025-11-24T19:16:24.781 [DEBUG] [Thread-195530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:16:24.796 [DEBUG] [Thread-195530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:16:24.796 [INFO] [Thread-195530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:16:24.803 [DEBUG] [Thread-195530] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:16:24.803 [DEBUG] [Thread-195530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] client lang: <none>
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] server lang: <none>
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] kex follows: False
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:16:24.804 [DEBUG] [Thread-195530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:16:24.805 [DEBUG] [Thread-195530] [transport.py] [_log()] Compression: none
2025-11-24T19:16:24.805 [DEBUG] [Thread-195530] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:16:24.863 [DEBUG] [Thread-195530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:16:24.864 [DEBUG] [Thread-195530] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:16:24.864 [DEBUG] [Thread-195530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:16:24.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:16:24.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:16:24.921 [DEBUG] [Thread-195530] [transport.py] [_log()] userauth is OK
2025-11-24T19:16:24.921 [DEBUG] [Thread-195530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:16:24.921 [DEBUG] [Thread-195530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:16:24.921 [DEBUG] [Thread-195530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:16:24.921 [DEBUG] [Thread-195530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:16:24.940 [INFO] [Thread-195530] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:16:24.940 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:16:24.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:16:25.748 [DEBUG] [Thread-195530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:16:25.749 [DEBUG] [Thread-195530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:16:25.796 [DEBUG] [Thread-195530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:16:25.797 [DEBUG] [Thread-195530] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:16:25.806 [DEBUG] [Thread-195530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:16:25.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:16:25.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-11-24T19:16:25.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-11-24T19:16:25.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:16:25.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:16:25.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:16:25.845 [DEBUG] [Thread-195530] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:16:26.715 [DEBUG] [Thread-195532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:16:38.765 [DEBUG] [Thread-195533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:16:53.863 [DEBUG] [Thread-195534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:16:55.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:16:55.867 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:16:55.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:16:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 16, 44), 21.0, 23.77, 0.0, 26.24, 18.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:16:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:16:44
2025-11-24T19:16:56.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:16:56.974 [DEBUG] [Thread-195535] [transport.py] [_log()] starting thread (client mode): 0xd07382b0
2025-11-24T19:16:56.974 [DEBUG] [Thread-195535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:16:56.987 [DEBUG] [Thread-195535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:16:56.988 [INFO] [Thread-195535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] client lang: <none>
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] server lang: <none>
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] kex follows: False
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] Compression: none
2025-11-24T19:16:56.991 [DEBUG] [Thread-195535] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:16:57.006 [DEBUG] [Thread-195535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:16:57.007 [DEBUG] [Thread-195535] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:16:57.007 [DEBUG] [Thread-195535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:16:57.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:16:57.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:16:57.009 [DEBUG] [Thread-195535] [transport.py] [_log()] userauth is OK
2025-11-24T19:16:57.009 [DEBUG] [Thread-195535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:16:57.009 [DEBUG] [Thread-195535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:16:57.009 [DEBUG] [Thread-195535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:16:57.009 [DEBUG] [Thread-195535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:16:57.051 [INFO] [Thread-195535] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:16:57.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:16:57.700 [DEBUG] [Thread-195535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:16:57.701 [DEBUG] [Thread-195535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:16:57.701 [DEBUG] [Thread-195535] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:16:57.742 [DEBUG] [Thread-195535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:16:57.742 [DEBUG] [Thread-195535] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:16:57.745 [DEBUG] [Thread-195535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:16:57.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:16:57.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:16:57.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:16:57.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:16:57.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:16:57.769 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:16:57.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:16:57.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:16:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:16:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.719495 -999.00  +18.80  14.89     29   +0.70 1 1 1 1 1   884    0 17.41 -45.13 ----- 17.2 14.9 156.8 24.8 20.0 -27.2 20.1 -27.0 20.3 -25.8 20.5 -27.0
2025-11-24T19:16:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:16:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:16:57.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.719495
2025-11-24T19:16:57.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:16:57.771 [DEBUG] [Thread-195535] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:16:57.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:16:57.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:16:57.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:16:57.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:16:57.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:16:44', tmtdew=21.0, humidity=23.77, cloud=0.0, wind=26.24, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:16:04.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:16:57.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:16:57.873 [DEBUG] [Thread-195538] [transport.py] [_log()] starting thread (client mode): 0xc9b839d0
2025-11-24T19:16:57.873 [DEBUG] [Thread-195538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:16:57.886 [DEBUG] [Thread-195538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:16:57.886 [INFO] [Thread-195538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:16:57.894 [DEBUG] [Thread-195538] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:16:57.894 [DEBUG] [Thread-195538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:16:57.894 [DEBUG] [Thread-195538] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:16:57.894 [DEBUG] [Thread-195538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] client lang: <none>
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] server lang: <none>
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] kex follows: False
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] Compression: none
2025-11-24T19:16:57.895 [DEBUG] [Thread-195538] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:16:57.951 [DEBUG] [Thread-195538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:16:57.952 [DEBUG] [Thread-195538] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:16:57.952 [DEBUG] [Thread-195538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:16:57.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:16:57.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:16:58.008 [DEBUG] [Thread-195538] [transport.py] [_log()] userauth is OK
2025-11-24T19:16:58.008 [DEBUG] [Thread-195538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:16:58.008 [DEBUG] [Thread-195538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:16:58.008 [DEBUG] [Thread-195538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:16:58.008 [DEBUG] [Thread-195538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:16:58.032 [INFO] [Thread-195538] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:16:58.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:16:58.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:16:58.874 [DEBUG] [Thread-195538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:16:58.874 [DEBUG] [Thread-195538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:16:58.922 [DEBUG] [Thread-195538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:16:58.922 [DEBUG] [Thread-195538] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:16:58.930 [DEBUG] [Thread-195538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:16:58.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:16:58.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-11-24T19:16:58.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-11-24T19:16:58.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:16:58.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:16:58.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:16:58.962 [DEBUG] [Thread-195538] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:17:08.893 [DEBUG] [Thread-195540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:17:20.069 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:17:20.071 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:17:23.970 [DEBUG] [Thread-195541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:17:27.060 [DEBUG] [Thread-195542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:17:28.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:17:28.991 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:17:29.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-11-24T19:17:29.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 17, 16), 21.01, 23.77, 0.0, 26.96, 18.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:17:29.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:17:16
2025-11-24T19:17:29.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:17:30.152 [DEBUG] [Thread-195543] [transport.py] [_log()] starting thread (client mode): 0xd0739f00
2025-11-24T19:17:30.152 [DEBUG] [Thread-195543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:17:30.158 [DEBUG] [Thread-195543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:17:30.158 [INFO] [Thread-195543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:17:30.161 [DEBUG] [Thread-195543] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:17:30.161 [DEBUG] [Thread-195543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:17:30.161 [DEBUG] [Thread-195543] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] client lang: <none>
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] server lang: <none>
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] kex follows: False
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:17:30.162 [DEBUG] [Thread-195543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:17:30.163 [DEBUG] [Thread-195543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:17:30.163 [DEBUG] [Thread-195543] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:17:30.163 [DEBUG] [Thread-195543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:17:30.163 [DEBUG] [Thread-195543] [transport.py] [_log()] Compression: none
2025-11-24T19:17:30.163 [DEBUG] [Thread-195543] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:17:30.192 [DEBUG] [Thread-195543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:17:30.195 [DEBUG] [Thread-195543] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:17:30.197 [DEBUG] [Thread-195543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:17:30.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:17:30.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:17:30.201 [DEBUG] [Thread-195543] [transport.py] [_log()] userauth is OK
2025-11-24T19:17:30.201 [DEBUG] [Thread-195543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:17:30.202 [DEBUG] [Thread-195543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:17:30.202 [DEBUG] [Thread-195543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:17:30.202 [DEBUG] [Thread-195543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:17:30.229 [INFO] [Thread-195543] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:17:30.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:17:30.832 [DEBUG] [Thread-195543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:17:30.832 [DEBUG] [Thread-195543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:17:30.843 [DEBUG] [Thread-195543] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:17:30.873 [DEBUG] [Thread-195543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:17:30.873 [DEBUG] [Thread-195543] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:17:30.876 [DEBUG] [Thread-195543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:17:30.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:17:30.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:17:30.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:17:30.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:17:30.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:17:30.896 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:17:30.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:17:30.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:17:30.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:17:30.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.719842 -999.00  +18.70  26.20     29   +0.70 1 1 1 1 1   884    0 17.27 -43.03 ----- 25.3 26.2 164.6 27.6 19.9 -27.2 20.0 -26.5 20.2 -25.7 20.5 -26.9
2025-11-24T19:17:30.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:17:30.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:17:30.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.719842
2025-11-24T19:17:30.903 [DEBUG] [Thread-195543] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:17:30.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:17:30.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:17:30.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:17:30.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:17:30.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:17:30.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:17:16', tmtdew=21.01, humidity=23.77, cloud=0.0, wind=26.96, temperature=18.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:16:34.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:17:30.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:17:31.000 [DEBUG] [Thread-195546] [transport.py] [_log()] starting thread (client mode): 0xd07005b0
2025-11-24T19:17:31.000 [DEBUG] [Thread-195546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:17:31.015 [DEBUG] [Thread-195546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:17:31.015 [INFO] [Thread-195546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:17:31.023 [DEBUG] [Thread-195546] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:17:31.023 [DEBUG] [Thread-195546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:17:31.023 [DEBUG] [Thread-195546] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:17:31.023 [DEBUG] [Thread-195546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:17:31.023 [DEBUG] [Thread-195546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] client lang: <none>
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] server lang: <none>
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] kex follows: False
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] Compression: none
2025-11-24T19:17:31.024 [DEBUG] [Thread-195546] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:17:31.085 [DEBUG] [Thread-195546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:17:31.085 [DEBUG] [Thread-195546] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:17:31.086 [DEBUG] [Thread-195546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:17:31.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:17:31.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:17:31.140 [DEBUG] [Thread-195546] [transport.py] [_log()] userauth is OK
2025-11-24T19:17:31.141 [DEBUG] [Thread-195546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:17:31.141 [DEBUG] [Thread-195546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:17:31.141 [DEBUG] [Thread-195546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:17:31.141 [DEBUG] [Thread-195546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:17:31.160 [INFO] [Thread-195546] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:17:31.161 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:17:31.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:17:31.993 [DEBUG] [Thread-195546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:17:31.993 [DEBUG] [Thread-195546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:17:32.041 [DEBUG] [Thread-195546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:17:32.041 [DEBUG] [Thread-195546] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:17:32.049 [DEBUG] [Thread-195546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:17:32.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:17:32.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-11-24T19:17:32.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-11-24T19:17:32.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:17:32.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:17:32.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:17:32.091 [DEBUG] [Thread-195546] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:17:39.005 [DEBUG] [Thread-195548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:17:54.072 [DEBUG] [Thread-195549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:18:02.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:18:02.102 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:18:02.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-11-24T19:18:02.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 17, 49), 20.93, 24.32, 0.0, 24.19, 18.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:18:02.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:17:49
2025-11-24T19:18:03.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:18:03.276 [DEBUG] [Thread-195550] [transport.py] [_log()] starting thread (client mode): 0xd0786ec0
2025-11-24T19:18:03.276 [DEBUG] [Thread-195550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:18:03.294 [DEBUG] [Thread-195550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:18:03.294 [INFO] [Thread-195550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:18:03.297 [DEBUG] [Thread-195550] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:18:03.297 [DEBUG] [Thread-195550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:18:03.297 [DEBUG] [Thread-195550] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:18:03.297 [DEBUG] [Thread-195550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:18:03.297 [DEBUG] [Thread-195550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:18:03.297 [DEBUG] [Thread-195550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:18:03.297 [DEBUG] [Thread-195550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:18:03.297 [DEBUG] [Thread-195550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] client lang: <none>
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] server lang: <none>
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] kex follows: False
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] Compression: none
2025-11-24T19:18:03.298 [DEBUG] [Thread-195550] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:18:03.321 [DEBUG] [Thread-195550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:18:03.322 [DEBUG] [Thread-195550] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:18:03.323 [DEBUG] [Thread-195550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:18:03.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:18:03.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:18:03.327 [DEBUG] [Thread-195550] [transport.py] [_log()] userauth is OK
2025-11-24T19:18:03.327 [DEBUG] [Thread-195550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:18:03.327 [DEBUG] [Thread-195550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:18:03.328 [DEBUG] [Thread-195550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:18:03.328 [DEBUG] [Thread-195550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:18:03.356 [INFO] [Thread-195550] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:18:03.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:18:03.952 [DEBUG] [Thread-195550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:18:03.952 [DEBUG] [Thread-195550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:18:03.952 [DEBUG] [Thread-195550] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:18:03.993 [DEBUG] [Thread-195550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:18:03.993 [DEBUG] [Thread-195550] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:18:03.995 [DEBUG] [Thread-195550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:18:04.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:18:04.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:18:04.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:18:04.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:18:04.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:18:04.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:18:04.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:18:04.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:18:04.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:18:04.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.720189 -999.00  +18.70  23.19     30   +0.80 1 1 1 1 1   883    0 16.79 -46.12 ----- 21.2 23.2 173.2 29.8 19.9 -27.0 20.0 -26.5 20.2 -26.0 20.4 -27.1
2025-11-24T19:18:04.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:18:04.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:18:04.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.720189
2025-11-24T19:18:04.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:18:04.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:18:04.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:18:04.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:18:04.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:18:04.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:17:49', tmtdew=20.93, humidity=24.32, cloud=0.0, wind=24.19, temperature=18.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:17:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:18:04.009 [DEBUG] [Thread-195550] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:18:04.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:18:04.094 [DEBUG] [Thread-195553] [transport.py] [_log()] starting thread (client mode): 0xd0784a30
2025-11-24T19:18:04.094 [DEBUG] [Thread-195553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:18:04.110 [DEBUG] [Thread-195553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:18:04.110 [INFO] [Thread-195553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] client lang: <none>
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] server lang: <none>
2025-11-24T19:18:04.117 [DEBUG] [Thread-195553] [transport.py] [_log()] kex follows: False
2025-11-24T19:18:04.118 [DEBUG] [Thread-195553] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:18:04.118 [DEBUG] [Thread-195553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:18:04.118 [DEBUG] [Thread-195553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:18:04.118 [DEBUG] [Thread-195553] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:18:04.118 [DEBUG] [Thread-195553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:18:04.118 [DEBUG] [Thread-195553] [transport.py] [_log()] Compression: none
2025-11-24T19:18:04.118 [DEBUG] [Thread-195553] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:18:04.174 [DEBUG] [Thread-195553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:18:04.174 [DEBUG] [Thread-195553] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:18:04.174 [DEBUG] [Thread-195553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:18:04.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:18:04.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:18:04.232 [DEBUG] [Thread-195553] [transport.py] [_log()] userauth is OK
2025-11-24T19:18:04.232 [DEBUG] [Thread-195553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:18:04.232 [DEBUG] [Thread-195553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:18:04.232 [DEBUG] [Thread-195553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:18:04.232 [DEBUG] [Thread-195553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:18:04.254 [INFO] [Thread-195553] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:18:04.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:18:04.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:18:05.154 [DEBUG] [Thread-195553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:18:05.154 [DEBUG] [Thread-195553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:18:05.202 [DEBUG] [Thread-195553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:18:05.202 [DEBUG] [Thread-195553] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:18:05.210 [DEBUG] [Thread-195553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:18:05.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:18:05.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-11-24T19:18:05.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-11-24T19:18:05.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:18:05.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:18:05.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:18:05.242 [DEBUG] [Thread-195553] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:18:09.115 [DEBUG] [Thread-195555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:18:20.211 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:18:20.213 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:18:24.212 [DEBUG] [Thread-195556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:18:27.296 [DEBUG] [Thread-195557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:18:35.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:18:35.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:18:35.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-11-24T19:18:36.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 18, 22), 20.88, 24.39, 0.0, 27.72, 18.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:18:36.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:18:22
2025-11-24T19:18:36.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:18:36.381 [DEBUG] [Thread-195558] [transport.py] [_log()] starting thread (client mode): 0xd0701a20
2025-11-24T19:18:36.382 [DEBUG] [Thread-195558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:18:36.390 [DEBUG] [Thread-195558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:18:36.390 [INFO] [Thread-195558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] client lang: <none>
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] server lang: <none>
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] kex follows: False
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:18:36.395 [DEBUG] [Thread-195558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:18:36.396 [DEBUG] [Thread-195558] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:18:36.396 [DEBUG] [Thread-195558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:18:36.396 [DEBUG] [Thread-195558] [transport.py] [_log()] Compression: none
2025-11-24T19:18:36.396 [DEBUG] [Thread-195558] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:18:36.418 [DEBUG] [Thread-195558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:18:36.423 [DEBUG] [Thread-195558] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:18:36.424 [DEBUG] [Thread-195558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:18:36.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:18:36.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:18:36.430 [DEBUG] [Thread-195558] [transport.py] [_log()] userauth is OK
2025-11-24T19:18:36.430 [DEBUG] [Thread-195558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:18:36.430 [DEBUG] [Thread-195558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:18:36.430 [DEBUG] [Thread-195558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:18:36.430 [DEBUG] [Thread-195558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:18:36.456 [INFO] [Thread-195558] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:18:36.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:18:37.035 [DEBUG] [Thread-195558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:18:37.035 [DEBUG] [Thread-195558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:18:37.044 [DEBUG] [Thread-195558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:18:37.076 [DEBUG] [Thread-195558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:18:37.076 [DEBUG] [Thread-195558] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:18:37.081 [DEBUG] [Thread-195558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:18:37.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:18:37.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:18:37.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:18:37.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:18:37.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:18:37.100 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:18:37.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:18:37.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:18:37.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:18:37.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.720536 -999.00  +18.70  17.19     30   +0.80 1 1 1 1 1   883    0 17.03 -45.89 ----- 21.7 17.2 166.4 25.9 19.9 -27.0 20.0 -26.8 20.1 -25.6 20.3 -26.8
2025-11-24T19:18:37.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:18:37.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:18:37.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.720536
2025-11-24T19:18:37.107 [DEBUG] [Thread-195558] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:18:37.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:18:37.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:18:37.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:18:37.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:18:37.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:18:37.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:18:22', tmtdew=20.88, humidity=24.39, cloud=0.0, wind=27.72, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:17:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:18:37.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:18:37.203 [DEBUG] [Thread-195561] [transport.py] [_log()] starting thread (client mode): 0xd07002b0
2025-11-24T19:18:37.203 [DEBUG] [Thread-195561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:18:37.218 [DEBUG] [Thread-195561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:18:37.219 [INFO] [Thread-195561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] client lang: <none>
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] server lang: <none>
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] kex follows: False
2025-11-24T19:18:37.226 [DEBUG] [Thread-195561] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:18:37.227 [DEBUG] [Thread-195561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:18:37.227 [DEBUG] [Thread-195561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:18:37.227 [DEBUG] [Thread-195561] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:18:37.227 [DEBUG] [Thread-195561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:18:37.227 [DEBUG] [Thread-195561] [transport.py] [_log()] Compression: none
2025-11-24T19:18:37.227 [DEBUG] [Thread-195561] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:18:37.283 [DEBUG] [Thread-195561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:18:37.283 [DEBUG] [Thread-195561] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:18:37.283 [DEBUG] [Thread-195561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:18:37.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:18:37.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:18:37.340 [DEBUG] [Thread-195561] [transport.py] [_log()] userauth is OK
2025-11-24T19:18:37.340 [DEBUG] [Thread-195561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:18:37.349 [DEBUG] [Thread-195561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:18:37.349 [DEBUG] [Thread-195561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:18:37.349 [DEBUG] [Thread-195561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:18:37.363 [INFO] [Thread-195561] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:18:37.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:18:37.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:18:38.171 [DEBUG] [Thread-195561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:18:38.171 [DEBUG] [Thread-195561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:18:38.219 [DEBUG] [Thread-195561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:18:38.219 [DEBUG] [Thread-195561] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:18:38.228 [DEBUG] [Thread-195561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:18:38.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:18:38.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:18:38.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-11-24T19:18:38.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:18:38.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:18:38.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:18:38.275 [DEBUG] [Thread-195561] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:18:39.249 [DEBUG] [Thread-195563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:18:54.301 [DEBUG] [Thread-195564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:19:08.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:19:08.309 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:19:08.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:19:09.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 18, 55), 20.87, 24.4, 0.0, 26.68, 18.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:19:09.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:18:55
2025-11-24T19:19:09.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:19:09.333 [DEBUG] [Thread-195565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:19:09.390 [DEBUG] [Thread-195566] [transport.py] [_log()] starting thread (client mode): 0xd073ae00
2025-11-24T19:19:09.391 [DEBUG] [Thread-195566] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:19:09.407 [DEBUG] [Thread-195566] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:19:09.407 [INFO] [Thread-195566] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:19:09.410 [DEBUG] [Thread-195566] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:19:09.410 [DEBUG] [Thread-195566] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] client lang: <none>
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] server lang: <none>
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] kex follows: False
2025-11-24T19:19:09.411 [DEBUG] [Thread-195566] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:19:09.412 [DEBUG] [Thread-195566] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:19:09.412 [DEBUG] [Thread-195566] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:19:09.412 [DEBUG] [Thread-195566] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:19:09.412 [DEBUG] [Thread-195566] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:19:09.412 [DEBUG] [Thread-195566] [transport.py] [_log()] Compression: none
2025-11-24T19:19:09.412 [DEBUG] [Thread-195566] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:19:09.437 [DEBUG] [Thread-195566] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:19:09.439 [DEBUG] [Thread-195566] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:19:09.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:19:09.441 [DEBUG] [Thread-195566] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:19:09.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:19:09.481 [DEBUG] [Thread-195566] [transport.py] [_log()] userauth is OK
2025-11-24T19:19:09.482 [DEBUG] [Thread-195566] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:19:09.482 [DEBUG] [Thread-195566] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:19:09.482 [DEBUG] [Thread-195566] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:19:09.482 [DEBUG] [Thread-195566] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:19:09.520 [INFO] [Thread-195566] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:19:09.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:19:10.103 [DEBUG] [Thread-195566] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:19:10.103 [DEBUG] [Thread-195566] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:19:10.113 [DEBUG] [Thread-195566] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:19:10.143 [DEBUG] [Thread-195566] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:19:10.144 [DEBUG] [Thread-195566] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:19:10.147 [DEBUG] [Thread-195566] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:19:10.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:19:10.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:19:10.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:19:10.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:19:10.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:19:10.180 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:19:10.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:19:10.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:19:10.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:19:10.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.720884 -999.00  +18.70  21.46     30   +0.80 1 1 1 1 1   883    0 16.98 -47.24 ----- 20.8 21.5 161.2 29.7 19.8 -27.0 19.9 -27.1 20.1 -25.7 20.3 -26.7
2025-11-24T19:19:10.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:19:10.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:19:10.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.720884
2025-11-24T19:19:10.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:19:10.185 [DEBUG] [Thread-195566] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:19:10.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:19:10.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:19:10.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:19:10.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:19:10.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:18:55', tmtdew=20.87, humidity=24.4, cloud=0.0, wind=26.68, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:18:04.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:19:10.274 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:19:10.286 [DEBUG] [Thread-195569] [transport.py] [_log()] starting thread (client mode): 0xd0701180
2025-11-24T19:19:10.286 [DEBUG] [Thread-195569] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:19:10.300 [DEBUG] [Thread-195569] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:19:10.300 [INFO] [Thread-195569] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] client lang: <none>
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] server lang: <none>
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] kex follows: False
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] Compression: none
2025-11-24T19:19:10.308 [DEBUG] [Thread-195569] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:19:10.363 [DEBUG] [Thread-195569] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:19:10.363 [DEBUG] [Thread-195569] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:19:10.363 [DEBUG] [Thread-195569] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:19:10.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:19:10.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:19:10.420 [DEBUG] [Thread-195569] [transport.py] [_log()] userauth is OK
2025-11-24T19:19:10.420 [DEBUG] [Thread-195569] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:19:10.420 [DEBUG] [Thread-195569] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:19:10.420 [DEBUG] [Thread-195569] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:19:10.420 [DEBUG] [Thread-195569] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:19:10.434 [INFO] [Thread-195569] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:19:10.434 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:19:10.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:19:11.254 [DEBUG] [Thread-195569] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:19:11.254 [DEBUG] [Thread-195569] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:19:11.303 [DEBUG] [Thread-195569] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:19:11.303 [DEBUG] [Thread-195569] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:19:11.312 [DEBUG] [Thread-195569] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:19:11.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:19: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')
2025-11-24T19:19:11.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-11-24T19:19:11.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:19:11.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:19:11.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:19:11.348 [DEBUG] [Thread-195569] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:19:20.354 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:19:20.355 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:19:24.361 [DEBUG] [Thread-195571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:19:27.579 [DEBUG] [Thread-195572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:19:39.412 [DEBUG] [Thread-195573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:19:41.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:19:41.351 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:19:41.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-11-24T19:19:42.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 19, 27), 20.86, 24.4, 0.0, 25.32, 18.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:19:42.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:19:27
2025-11-24T19:19:42.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:19:42.526 [DEBUG] [Thread-195574] [transport.py] [_log()] starting thread (client mode): 0xd31360b0
2025-11-24T19:19:42.526 [DEBUG] [Thread-195574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:19:42.541 [DEBUG] [Thread-195574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:19:42.541 [INFO] [Thread-195574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:19:42.544 [DEBUG] [Thread-195574] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:19:42.544 [DEBUG] [Thread-195574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:19:42.544 [DEBUG] [Thread-195574] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:19:42.544 [DEBUG] [Thread-195574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] client lang: <none>
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] server lang: <none>
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] kex follows: False
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:19:42.545 [DEBUG] [Thread-195574] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:19:42.546 [DEBUG] [Thread-195574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:19:42.546 [DEBUG] [Thread-195574] [transport.py] [_log()] Compression: none
2025-11-24T19:19:42.546 [DEBUG] [Thread-195574] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:19:42.572 [DEBUG] [Thread-195574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:19:42.576 [DEBUG] [Thread-195574] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:19:42.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:19:42.578 [DEBUG] [Thread-195574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:19:42.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:19:42.581 [DEBUG] [Thread-195574] [transport.py] [_log()] userauth is OK
2025-11-24T19:19:42.581 [DEBUG] [Thread-195574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:19:42.581 [DEBUG] [Thread-195574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:19:42.581 [DEBUG] [Thread-195574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:19:42.581 [DEBUG] [Thread-195574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:19:42.601 [INFO] [Thread-195574] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:19:42.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:19:43.163 [DEBUG] [Thread-195574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:19:43.163 [DEBUG] [Thread-195574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:19:43.163 [DEBUG] [Thread-195574] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:19:43.205 [DEBUG] [Thread-195574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:19:43.205 [DEBUG] [Thread-195574] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:19:43.207 [DEBUG] [Thread-195574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:19:43.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:19:43.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:19:43.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:19:43.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:19:43.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:19:43.224 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:19:43.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:19:43.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:19:43.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:19:43.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.721578 -999.00  +18.70  18.41     30   +0.80 1 1 1 1 1   881    0 17.23 -44.31 ----- 18.2 18.4 167.1 20.6 19.8 -26.8 19.8 -26.6 20.0 -25.4 20.2 -26.6
2025-11-24T19:19:43.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:19:43.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:19:43.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.721578
2025-11-24T19:19:43.232 [DEBUG] [Thread-195574] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:19:43.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:19:43.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:19:43.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:19:43.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:19:43.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:19:43.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:19:27', tmtdew=20.86, humidity=24.4, cloud=0.0, wind=25.32, temperature=18.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:19:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:19:43.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:19:43.332 [DEBUG] [Thread-195577] [transport.py] [_log()] starting thread (client mode): 0xd073ac50
2025-11-24T19:19:43.332 [DEBUG] [Thread-195577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:19:43.346 [DEBUG] [Thread-195577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:19:43.346 [INFO] [Thread-195577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] client lang: <none>
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] server lang: <none>
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] kex follows: False
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] Compression: none
2025-11-24T19:19:43.354 [DEBUG] [Thread-195577] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:19:43.411 [DEBUG] [Thread-195577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:19:43.411 [DEBUG] [Thread-195577] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:19:43.411 [DEBUG] [Thread-195577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:19:43.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:19:43.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:19:43.468 [DEBUG] [Thread-195577] [transport.py] [_log()] userauth is OK
2025-11-24T19:19:43.468 [DEBUG] [Thread-195577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:19:43.468 [DEBUG] [Thread-195577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:19:43.468 [DEBUG] [Thread-195577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:19:43.468 [DEBUG] [Thread-195577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:19:43.481 [INFO] [Thread-195577] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:19:43.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:19:43.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:19:44.296 [DEBUG] [Thread-195577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:19:44.296 [DEBUG] [Thread-195577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:19:44.344 [DEBUG] [Thread-195577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:19:44.344 [DEBUG] [Thread-195577] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:19:44.352 [DEBUG] [Thread-195577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:19:44.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:19:44.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-11-24T19:19:44.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-11-24T19:19:44.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:19:44.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:19:44.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:19:44.387 [DEBUG] [Thread-195577] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:19:54.439 [DEBUG] [Thread-195579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:20:09.499 [DEBUG] [Thread-195580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:20:14.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:20:14.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:20:14.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:20:15.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 20), 20.83, 24.47, 0.0, 23.59, 18.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:20:15.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:20:00
2025-11-24T19:20:15.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:20:15.510 [DEBUG] [Thread-195581] [transport.py] [_log()] starting thread (client mode): 0xd07cc3d0
2025-11-24T19:20:15.510 [DEBUG] [Thread-195581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:20:15.530 [DEBUG] [Thread-195581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:20:15.530 [INFO] [Thread-195581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:20:15.533 [DEBUG] [Thread-195581] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:20:15.533 [DEBUG] [Thread-195581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:20:15.533 [DEBUG] [Thread-195581] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:20:15.533 [DEBUG] [Thread-195581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:20:15.533 [DEBUG] [Thread-195581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:20:15.533 [DEBUG] [Thread-195581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:20:15.533 [DEBUG] [Thread-195581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:20:15.533 [DEBUG] [Thread-195581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:20:15.533 [DEBUG] [Thread-195581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:20:15.534 [DEBUG] [Thread-195581] [transport.py] [_log()] client lang: <none>
2025-11-24T19:20:15.534 [DEBUG] [Thread-195581] [transport.py] [_log()] server lang: <none>
2025-11-24T19:20:15.534 [DEBUG] [Thread-195581] [transport.py] [_log()] kex follows: False
2025-11-24T19:20:15.534 [DEBUG] [Thread-195581] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:20:15.534 [DEBUG] [Thread-195581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:20:15.534 [DEBUG] [Thread-195581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:20:15.534 [DEBUG] [Thread-195581] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:20:15.534 [DEBUG] [Thread-195581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:20:15.534 [DEBUG] [Thread-195581] [transport.py] [_log()] Compression: none
2025-11-24T19:20:15.534 [DEBUG] [Thread-195581] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:20:15.553 [DEBUG] [Thread-195581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:20:15.554 [DEBUG] [Thread-195581] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:20:15.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:20:15.555 [DEBUG] [Thread-195581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:20:15.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:20:15.557 [DEBUG] [Thread-195581] [transport.py] [_log()] userauth is OK
2025-11-24T19:20:15.557 [DEBUG] [Thread-195581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:20:15.557 [DEBUG] [Thread-195581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:20:15.557 [DEBUG] [Thread-195581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:20:15.557 [DEBUG] [Thread-195581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:20:15.579 [INFO] [Thread-195581] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:20:15.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:20:16.209 [DEBUG] [Thread-195581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:20:16.210 [DEBUG] [Thread-195581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:20:16.210 [DEBUG] [Thread-195581] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:20:16.250 [DEBUG] [Thread-195581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:20:16.250 [DEBUG] [Thread-195581] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:20:16.253 [DEBUG] [Thread-195581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:20:16.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:20:16.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:20:16.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:20:16.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:20:16.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:20:16.273 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:20:16.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:20:16.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:20:16.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:20:16.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.721925 -999.00  +18.70  20.08     30   +0.80 1 1 1 1 1   881    0 16.93 -45.45 ----- 19.3 20.1 168.9 30.0 19.8 -26.9 19.8 -26.5 20.0 -25.4 20.2 -26.7
2025-11-24T19:20:16.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:20:16.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:20:16.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.721925
2025-11-24T19:20:16.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:20:16.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:20:16.276 [DEBUG] [Thread-195581] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:20:16.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:20:16.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:20:16.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:20:16.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:20:00', tmtdew=20.83, humidity=24.47, cloud=0.0, wind=23.59, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:19:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:20:16.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:20:16.371 [DEBUG] [Thread-195584] [transport.py] [_log()] starting thread (client mode): 0xd07cc940
2025-11-24T19:20:16.372 [DEBUG] [Thread-195584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:20:16.386 [DEBUG] [Thread-195584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:20:16.386 [INFO] [Thread-195584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] client lang: <none>
2025-11-24T19:20:16.394 [DEBUG] [Thread-195584] [transport.py] [_log()] server lang: <none>
2025-11-24T19:20:16.395 [DEBUG] [Thread-195584] [transport.py] [_log()] kex follows: False
2025-11-24T19:20:16.395 [DEBUG] [Thread-195584] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:20:16.395 [DEBUG] [Thread-195584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:20:16.395 [DEBUG] [Thread-195584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:20:16.395 [DEBUG] [Thread-195584] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:20:16.395 [DEBUG] [Thread-195584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:20:16.395 [DEBUG] [Thread-195584] [transport.py] [_log()] Compression: none
2025-11-24T19:20:16.395 [DEBUG] [Thread-195584] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:20:16.452 [DEBUG] [Thread-195584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:20:16.452 [DEBUG] [Thread-195584] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:20:16.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:20:16.454 [DEBUG] [Thread-195584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:20:16.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:20:16.508 [DEBUG] [Thread-195584] [transport.py] [_log()] userauth is OK
2025-11-24T19:20:16.509 [DEBUG] [Thread-195584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:20:16.509 [DEBUG] [Thread-195584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:20:16.509 [DEBUG] [Thread-195584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:20:16.509 [DEBUG] [Thread-195584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:20:16.528 [INFO] [Thread-195584] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:20:16.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:20:16.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:20:17.365 [DEBUG] [Thread-195584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:20:17.365 [DEBUG] [Thread-195584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:20:17.413 [DEBUG] [Thread-195584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:20:17.413 [DEBUG] [Thread-195584] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:20:17.422 [DEBUG] [Thread-195584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:20:17.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:20:17.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-11-24T19:20:17.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-11-24T19:20:17.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:20:17.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:20:17.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:20:17.457 [DEBUG] [Thread-195584] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:20:24.525 [DEBUG] [Thread-195586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:20:27.929 [DEBUG] [Thread-195587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:20:38.406 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:20:38.409 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:20:39.585 [DEBUG] [Thread-195588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:20:47.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:20:47.480 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:20:47.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-11-24T19:20:48.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 20, 33), 20.82, 24.49, 0.0, 23.18, 18.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:20:48.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:20:33
2025-11-24T19:20:48.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:20:48.579 [DEBUG] [Thread-195589] [transport.py] [_log()] starting thread (client mode): 0xd0739570
2025-11-24T19:20:48.579 [DEBUG] [Thread-195589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:20:48.590 [DEBUG] [Thread-195589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:20:48.591 [INFO] [Thread-195589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:20:48.593 [DEBUG] [Thread-195589] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:20:48.593 [DEBUG] [Thread-195589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] client lang: <none>
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] server lang: <none>
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] kex follows: False
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] Compression: none
2025-11-24T19:20:48.594 [DEBUG] [Thread-195589] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:20:48.611 [DEBUG] [Thread-195589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:20:48.612 [DEBUG] [Thread-195589] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:20:48.613 [DEBUG] [Thread-195589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:20:48.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:20:48.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:20:48.615 [DEBUG] [Thread-195589] [transport.py] [_log()] userauth is OK
2025-11-24T19:20:48.616 [DEBUG] [Thread-195589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:20:48.616 [DEBUG] [Thread-195589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:20:48.616 [DEBUG] [Thread-195589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:20:48.616 [DEBUG] [Thread-195589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:20:48.641 [INFO] [Thread-195589] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:20:48.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:20:49.267 [DEBUG] [Thread-195589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:20:49.267 [DEBUG] [Thread-195589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:20:49.268 [DEBUG] [Thread-195589] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:20:49.308 [DEBUG] [Thread-195589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:20:49.308 [DEBUG] [Thread-195589] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:20:49.310 [DEBUG] [Thread-195589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:20:49.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:20:49.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:20:49.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:20:49.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:20:49.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:20:49.337 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:20:49.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:20:49.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:20:49.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:20:49.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.722272 -999.00  +18.70  20.07     30   +0.80 1 1 1 1 1   880    0 17.27 -48.28 ----- 22.4 20.1 173.1 29.0 19.8 -26.8 19.8 -26.3 19.9 -25.5 20.1 -26.9
2025-11-24T19:20:49.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:20:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:20:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.722272
2025-11-24T19:20:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:20:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:20:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:20:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:20:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:20:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:20:33', tmtdew=20.82, humidity=24.49, cloud=0.0, wind=23.18, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:20:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:20:49.339 [DEBUG] [Thread-195589] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:20:49.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:20:49.422 [DEBUG] [Thread-195592] [transport.py] [_log()] starting thread (client mode): 0xd073ace0
2025-11-24T19:20:49.422 [DEBUG] [Thread-195592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:20:49.436 [DEBUG] [Thread-195592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:20:49.436 [INFO] [Thread-195592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] client lang: <none>
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] server lang: <none>
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] kex follows: False
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:20:49.443 [DEBUG] [Thread-195592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:20:49.444 [DEBUG] [Thread-195592] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:20:49.444 [DEBUG] [Thread-195592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:20:49.444 [DEBUG] [Thread-195592] [transport.py] [_log()] Compression: none
2025-11-24T19:20:49.444 [DEBUG] [Thread-195592] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:20:49.498 [DEBUG] [Thread-195592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:20:49.498 [DEBUG] [Thread-195592] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:20:49.499 [DEBUG] [Thread-195592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:20:49.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:20:49.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:20:49.556 [DEBUG] [Thread-195592] [transport.py] [_log()] userauth is OK
2025-11-24T19:20:49.556 [DEBUG] [Thread-195592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:20:49.556 [DEBUG] [Thread-195592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:20:49.556 [DEBUG] [Thread-195592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:20:49.556 [DEBUG] [Thread-195592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:20:49.573 [INFO] [Thread-195592] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:20:49.573 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:20:49.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:20:50.427 [DEBUG] [Thread-195592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:20:50.427 [DEBUG] [Thread-195592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:20:50.474 [DEBUG] [Thread-195592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:20:50.474 [DEBUG] [Thread-195592] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:20:50.483 [DEBUG] [Thread-195592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:20:50.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:20:50.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-11-24T19:20:50.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:20:50.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:20:50.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:20:50.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:20:50.517 [DEBUG] [Thread-195592] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:20:54.620 [DEBUG] [Thread-195594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:21:09.723 [DEBUG] [Thread-195595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:21:20.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:21:20.541 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:21:20.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-11-24T19:21:21.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 21, 5), 20.79, 24.54, 0.0, 23.43, 18.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:21:21.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:21:05
2025-11-24T19:21:21.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:21:21.709 [DEBUG] [Thread-195596] [transport.py] [_log()] starting thread (client mode): 0xd3135ea0
2025-11-24T19:21:21.709 [DEBUG] [Thread-195596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:21:21.723 [DEBUG] [Thread-195596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:21:21.723 [INFO] [Thread-195596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:21:21.728 [DEBUG] [Thread-195596] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:21:21.729 [DEBUG] [Thread-195596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:21:21.729 [DEBUG] [Thread-195596] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:21:21.729 [DEBUG] [Thread-195596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:21:21.729 [DEBUG] [Thread-195596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:21:21.729 [DEBUG] [Thread-195596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:21:21.729 [DEBUG] [Thread-195596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:21:21.729 [DEBUG] [Thread-195596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:21:21.729 [DEBUG] [Thread-195596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:21:21.730 [DEBUG] [Thread-195596] [transport.py] [_log()] client lang: <none>
2025-11-24T19:21:21.730 [DEBUG] [Thread-195596] [transport.py] [_log()] server lang: <none>
2025-11-24T19:21:21.730 [DEBUG] [Thread-195596] [transport.py] [_log()] kex follows: False
2025-11-24T19:21:21.730 [DEBUG] [Thread-195596] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:21:21.730 [DEBUG] [Thread-195596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:21:21.730 [DEBUG] [Thread-195596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:21:21.731 [DEBUG] [Thread-195596] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:21:21.731 [DEBUG] [Thread-195596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:21:21.731 [DEBUG] [Thread-195596] [transport.py] [_log()] Compression: none
2025-11-24T19:21:21.731 [DEBUG] [Thread-195596] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:21:21.764 [DEBUG] [Thread-195596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:21:21.769 [DEBUG] [Thread-195596] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:21:21.770 [DEBUG] [Thread-195596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:21:21.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:21:21.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:21:21.775 [DEBUG] [Thread-195596] [transport.py] [_log()] userauth is OK
2025-11-24T19:21:21.775 [DEBUG] [Thread-195596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:21:21.775 [DEBUG] [Thread-195596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:21:21.775 [DEBUG] [Thread-195596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:21:21.775 [DEBUG] [Thread-195596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:21:21.801 [INFO] [Thread-195596] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:21:21.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:21:22.386 [DEBUG] [Thread-195596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:21:22.387 [DEBUG] [Thread-195596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:21:22.387 [DEBUG] [Thread-195596] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:21:22.427 [DEBUG] [Thread-195596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:21:22.427 [DEBUG] [Thread-195596] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:21:22.429 [DEBUG] [Thread-195596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:21:22.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:21:22.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:21:22.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:21:22.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:21:22.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:21:22.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:21:22.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:21:22.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:21:22.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:21:22.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.722620 -999.00  +18.70  15.06     30   +0.80 1 1 1 1 1   880    0 16.59 -49.09 ----- 16.2 15.1 173.0 26.7 19.7 -26.7 19.8 -26.4 19.9 -25.3 20.1 -26.4
2025-11-24T19:21:22.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:21:22.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:21:22.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.722620
2025-11-24T19:21:22.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:21:22.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:21:22.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:21:22.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:21:22.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:21:22.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:21:05', tmtdew=20.79, humidity=24.54, cloud=0.0, wind=23.43, temperature=18.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:20:34.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:21:22.460 [DEBUG] [Thread-195596] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:21:22.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:21:22.547 [DEBUG] [Thread-195599] [transport.py] [_log()] starting thread (client mode): 0xd0702e60
2025-11-24T19:21:22.547 [DEBUG] [Thread-195599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:21:22.560 [DEBUG] [Thread-195599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:21:22.561 [INFO] [Thread-195599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] client lang: <none>
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] server lang: <none>
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] kex follows: False
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:21:22.568 [DEBUG] [Thread-195599] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:21:22.569 [DEBUG] [Thread-195599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:21:22.569 [DEBUG] [Thread-195599] [transport.py] [_log()] Compression: none
2025-11-24T19:21:22.569 [DEBUG] [Thread-195599] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:21:22.626 [DEBUG] [Thread-195599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:21:22.626 [DEBUG] [Thread-195599] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:21:22.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:21:22.627 [DEBUG] [Thread-195599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:21:22.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:21:22.684 [DEBUG] [Thread-195599] [transport.py] [_log()] userauth is OK
2025-11-24T19:21:22.684 [DEBUG] [Thread-195599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:21:22.684 [DEBUG] [Thread-195599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:21:22.684 [DEBUG] [Thread-195599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:21:22.684 [DEBUG] [Thread-195599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:21:22.698 [INFO] [Thread-195599] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:21:22.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:21:22.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:21:23.509 [DEBUG] [Thread-195599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:21:23.509 [DEBUG] [Thread-195599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:21:23.557 [DEBUG] [Thread-195599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:21:23.557 [DEBUG] [Thread-195599] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:21:23.566 [DEBUG] [Thread-195599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:21:23.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:21:23.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-11-24T19:21:23.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-11-24T19:21:23.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:21:23.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:21:23.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:21:23.610 [DEBUG] [Thread-195599] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:21:24.797 [DEBUG] [Thread-195601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:21:28.154 [DEBUG] [Thread-195602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:21:39.896 [DEBUG] [Thread-195603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:21:42.664 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:21:42.665 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:21:53.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:21:53.644 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:21:53.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-11-24T19:21:54.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 21, 38), 20.71, 24.59, 0.0, 25.23, 18.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:21:54.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:21:38
2025-11-24T19:21:54.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:21:54.860 [DEBUG] [Thread-195604] [transport.py] [_log()] starting thread (client mode): 0xd073bb80
2025-11-24T19:21:54.861 [DEBUG] [Thread-195604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:21:54.878 [DEBUG] [Thread-195604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:21:54.878 [INFO] [Thread-195604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:21:54.881 [DEBUG] [Thread-195604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:21:54.881 [DEBUG] [Thread-195604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:21:54.881 [DEBUG] [Thread-195604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:21:54.881 [DEBUG] [Thread-195604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:21:54.881 [DEBUG] [Thread-195604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:21:54.881 [DEBUG] [Thread-195604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:21:54.881 [DEBUG] [Thread-195604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:21:54.881 [DEBUG] [Thread-195604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:21:54.881 [DEBUG] [Thread-195604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:21:54.881 [DEBUG] [Thread-195604] [transport.py] [_log()] client lang: <none>
2025-11-24T19:21:54.882 [DEBUG] [Thread-195604] [transport.py] [_log()] server lang: <none>
2025-11-24T19:21:54.882 [DEBUG] [Thread-195604] [transport.py] [_log()] kex follows: False
2025-11-24T19:21:54.882 [DEBUG] [Thread-195604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:21:54.882 [DEBUG] [Thread-195604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:21:54.882 [DEBUG] [Thread-195604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:21:54.882 [DEBUG] [Thread-195604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:21:54.882 [DEBUG] [Thread-195604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:21:54.882 [DEBUG] [Thread-195604] [transport.py] [_log()] Compression: none
2025-11-24T19:21:54.883 [DEBUG] [Thread-195604] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:21:54.906 [DEBUG] [Thread-195604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:21:54.908 [DEBUG] [Thread-195604] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:21:54.909 [DEBUG] [Thread-195604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:21:54.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:21:54.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:21:54.913 [DEBUG] [Thread-195604] [transport.py] [_log()] userauth is OK
2025-11-24T19:21:54.914 [DEBUG] [Thread-195604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:21:54.914 [DEBUG] [Thread-195604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:21:54.914 [DEBUG] [Thread-195604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:21:54.914 [DEBUG] [Thread-195604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:21:54.928 [DEBUG] [Thread-195606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:21:54.953 [INFO] [Thread-195604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:21:54.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:21:55.964 [DEBUG] [Thread-195604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:21:55.964 [DEBUG] [Thread-195604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:21:55.965 [DEBUG] [Thread-195604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:21:56.005 [DEBUG] [Thread-195604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:21:56.006 [DEBUG] [Thread-195604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:21:56.009 [DEBUG] [Thread-195604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:21:56.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:21:56.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:21:56.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:21:56.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:21:56.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:21:56.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:21:56.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:21:56.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:21:56.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:21:56.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.722967 -999.00  +18.60  19.07     30   +0.90 1 1 1 1 1   879    0 17.08 -47.51 ----- 17.9 19.1 166.2 24.1 19.7 -26.8 19.7 -26.2 19.8 -25.3 20.0 -26.4
2025-11-24T19:21:56.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:21:56.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:21:56.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.722967
2025-11-24T19:21:56.040 [DEBUG] [Thread-195604] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:21:56.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:21:56.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:21:56.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:21:56.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:21:56.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:21:56.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:21:38', tmtdew=20.71, humidity=24.59, cloud=0.0, wind=25.23, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:21:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:21:56.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:21:56.141 [DEBUG] [Thread-195608] [transport.py] [_log()] starting thread (client mode): 0xd07f9720
2025-11-24T19:21:56.141 [DEBUG] [Thread-195608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:21:56.156 [DEBUG] [Thread-195608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:21:56.156 [INFO] [Thread-195608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] client lang: <none>
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] server lang: <none>
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] kex follows: False
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:21:56.164 [DEBUG] [Thread-195608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:21:56.165 [DEBUG] [Thread-195608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:21:56.165 [DEBUG] [Thread-195608] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:21:56.165 [DEBUG] [Thread-195608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:21:56.165 [DEBUG] [Thread-195608] [transport.py] [_log()] Compression: none
2025-11-24T19:21:56.165 [DEBUG] [Thread-195608] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:21:56.225 [DEBUG] [Thread-195608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:21:56.226 [DEBUG] [Thread-195608] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:21:56.227 [DEBUG] [Thread-195608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:21:56.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:21:56.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:21:56.284 [DEBUG] [Thread-195608] [transport.py] [_log()] userauth is OK
2025-11-24T19:21:56.284 [DEBUG] [Thread-195608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:21:56.285 [DEBUG] [Thread-195608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:21:56.285 [DEBUG] [Thread-195608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:21:56.285 [DEBUG] [Thread-195608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:21:56.304 [INFO] [Thread-195608] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:21:56.305 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:21:56.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:21:57.148 [DEBUG] [Thread-195608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:21:57.148 [DEBUG] [Thread-195608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:21:57.196 [DEBUG] [Thread-195608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:21:57.196 [DEBUG] [Thread-195608] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:21:57.205 [DEBUG] [Thread-195608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:21:57.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:21:57.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-11-24T19:21:57.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-11-24T19:21:57.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:21:57.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:21:57.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:21:57.247 [DEBUG] [Thread-195608] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:22:09.968 [DEBUG] [Thread-195610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:22:25.041 [DEBUG] [Thread-195611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:22:27.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:22:27.279 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:22:27.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:22:28.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 22, 10), 20.74, 24.54, 0.0, 27.01, 18.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:22:28.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:22:10
2025-11-24T19:22:28.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:22:28.342 [DEBUG] [Thread-195612] [transport.py] [_log()] starting thread (client mode): 0xd07034c0
2025-11-24T19:22:28.343 [DEBUG] [Thread-195612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:22:28.360 [DEBUG] [Thread-195612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:22:28.361 [INFO] [Thread-195612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] client lang: <none>
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] server lang: <none>
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] kex follows: False
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:22:28.364 [DEBUG] [Thread-195612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:22:28.365 [DEBUG] [Thread-195612] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:22:28.365 [DEBUG] [Thread-195612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:22:28.365 [DEBUG] [Thread-195612] [transport.py] [_log()] Compression: none
2025-11-24T19:22:28.365 [DEBUG] [Thread-195612] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:22:28.384 [DEBUG] [Thread-195612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:22:28.386 [DEBUG] [Thread-195612] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:22:28.386 [DEBUG] [Thread-195612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:22:28.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:22:28.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:22:28.389 [DEBUG] [Thread-195612] [transport.py] [_log()] userauth is OK
2025-11-24T19:22:28.389 [DEBUG] [Thread-195612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:22:28.389 [DEBUG] [Thread-195612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:22:28.389 [DEBUG] [Thread-195612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:22:28.389 [DEBUG] [Thread-195612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:22:28.400 [INFO] [Thread-195612] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:22:28.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:22:28.413 [DEBUG] [Thread-195614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:22:29.025 [DEBUG] [Thread-195612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:22:29.025 [DEBUG] [Thread-195612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:22:29.035 [DEBUG] [Thread-195612] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:22:29.065 [DEBUG] [Thread-195612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:22:29.066 [DEBUG] [Thread-195612] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:22:29.069 [DEBUG] [Thread-195612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:22:29.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:22:29.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:22:29.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:22:29.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:22:29.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:22:29.098 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:22:29.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:22:29.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:22:29.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:22:29.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.723314 -999.00  +18.60  19.26     30   +0.80 1 1 1 1 1   878    0 16.89 -46.81 ----- 24.8 19.3 174.5 27.6 19.6 -26.7 19.7 -26.3 19.8 -25.4 20.0 -26.5
2025-11-24T19:22:29.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:22:29.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:22:29.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.723314
2025-11-24T19:22:29.101 [DEBUG] [Thread-195612] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:22:29.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:22:29.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:22:29.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:22:29.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:22:29.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:22:29.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:22:10', tmtdew=20.74, humidity=24.54, cloud=0.0, wind=27.01, temperature=18.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:21:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:22:29.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:22:29.210 [DEBUG] [Thread-195616] [transport.py] [_log()] starting thread (client mode): 0xd07cf0a0
2025-11-24T19:22:29.211 [DEBUG] [Thread-195616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:22:29.225 [DEBUG] [Thread-195616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:22:29.226 [INFO] [Thread-195616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:22:29.236 [DEBUG] [Thread-195616] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:22:29.236 [DEBUG] [Thread-195616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:22:29.236 [DEBUG] [Thread-195616] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:22:29.236 [DEBUG] [Thread-195616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:22:29.236 [DEBUG] [Thread-195616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:22:29.236 [DEBUG] [Thread-195616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:22:29.236 [DEBUG] [Thread-195616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:22:29.236 [DEBUG] [Thread-195616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:22:29.236 [DEBUG] [Thread-195616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:22:29.236 [DEBUG] [Thread-195616] [transport.py] [_log()] client lang: <none>
2025-11-24T19:22:29.237 [DEBUG] [Thread-195616] [transport.py] [_log()] server lang: <none>
2025-11-24T19:22:29.237 [DEBUG] [Thread-195616] [transport.py] [_log()] kex follows: False
2025-11-24T19:22:29.237 [DEBUG] [Thread-195616] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:22:29.237 [DEBUG] [Thread-195616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:22:29.237 [DEBUG] [Thread-195616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:22:29.237 [DEBUG] [Thread-195616] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:22:29.237 [DEBUG] [Thread-195616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:22:29.237 [DEBUG] [Thread-195616] [transport.py] [_log()] Compression: none
2025-11-24T19:22:29.237 [DEBUG] [Thread-195616] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:22:29.299 [DEBUG] [Thread-195616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:22:29.300 [DEBUG] [Thread-195616] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:22:29.300 [DEBUG] [Thread-195616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:22:29.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:22:29.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:22:29.356 [DEBUG] [Thread-195616] [transport.py] [_log()] userauth is OK
2025-11-24T19:22:29.356 [DEBUG] [Thread-195616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:22:29.356 [DEBUG] [Thread-195616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:22:29.357 [DEBUG] [Thread-195616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:22:29.357 [DEBUG] [Thread-195616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:22:29.376 [INFO] [Thread-195616] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:22:29.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:22:29.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:22:30.187 [DEBUG] [Thread-195616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:22:30.187 [DEBUG] [Thread-195616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:22:30.235 [DEBUG] [Thread-195616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:22:30.235 [DEBUG] [Thread-195616] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:22:30.243 [DEBUG] [Thread-195616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:22:30.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:22:30.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-11-24T19:22:30.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-11-24T19:22:30.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:22:30.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:22:30.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:22:30.277 [DEBUG] [Thread-195616] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:22:40.086 [DEBUG] [Thread-195618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:22:49.557 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:22:49.559 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:22:55.186 [DEBUG] [Thread-195619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:23:00.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:23:00.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:23:00.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-11-24T19:23:01.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 22, 43), 20.66, 24.59, 0.0, 23.77, 18.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:23:01.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:22:43
2025-11-24T19:23:01.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:23:01.442 [DEBUG] [Thread-195620] [transport.py] [_log()] starting thread (client mode): 0xd31535b0
2025-11-24T19:23:01.442 [DEBUG] [Thread-195620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:23:01.461 [DEBUG] [Thread-195620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:23:01.461 [INFO] [Thread-195620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:23:01.464 [DEBUG] [Thread-195620] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:23:01.464 [DEBUG] [Thread-195620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:23:01.464 [DEBUG] [Thread-195620] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:23:01.464 [DEBUG] [Thread-195620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:23:01.464 [DEBUG] [Thread-195620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] client lang: <none>
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] server lang: <none>
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] kex follows: False
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] Compression: none
2025-11-24T19:23:01.465 [DEBUG] [Thread-195620] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:23:01.479 [DEBUG] [Thread-195620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:23:01.480 [DEBUG] [Thread-195620] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:23:01.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:23:01.480 [DEBUG] [Thread-195620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:23:01.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:23:01.481 [DEBUG] [Thread-195620] [transport.py] [_log()] userauth is OK
2025-11-24T19:23:01.481 [DEBUG] [Thread-195620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:23:01.481 [DEBUG] [Thread-195620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:23:01.481 [DEBUG] [Thread-195620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:23:01.481 [DEBUG] [Thread-195620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:23:01.491 [INFO] [Thread-195620] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:23:01.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:23:02.089 [DEBUG] [Thread-195620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:23:02.089 [DEBUG] [Thread-195620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:23:02.089 [DEBUG] [Thread-195620] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:23:02.130 [DEBUG] [Thread-195620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:23:02.130 [DEBUG] [Thread-195620] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:23:02.133 [DEBUG] [Thread-195620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:23:02.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:23:02.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:23:02.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:23:02.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:23:02.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:23:02.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:23:02.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:23:02.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:23:02.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:23:02.145 [DEBUG] [Thread-195620] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:23:02.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.723662 -999.00  +18.60  23.40     30   +0.90 1 1 1 1 1   877    0 17.08 -47.40 ----- 18.4 23.4 170.8 28.4 19.6 -26.8 19.7 -26.4 19.7 -25.3 19.9 -26.3
2025-11-24T19:23:02.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:23:02.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:23:02.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.723662
2025-11-24T19:23:02.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:23:02.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:23:02.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:23:02.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:23:02.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:23:02.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:22:43', tmtdew=20.66, humidity=24.59, cloud=0.0, wind=23.77, temperature=18.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:22:04.397', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:23:02.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:23:02.229 [DEBUG] [Thread-195623] [transport.py] [_log()] starting thread (client mode): 0xd3151720
2025-11-24T19:23:02.230 [DEBUG] [Thread-195623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:23:02.245 [DEBUG] [Thread-195623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:23:02.245 [INFO] [Thread-195623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:23:02.252 [DEBUG] [Thread-195623] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:23:02.252 [DEBUG] [Thread-195623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:23:02.252 [DEBUG] [Thread-195623] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:23:02.252 [DEBUG] [Thread-195623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] client lang: <none>
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] server lang: <none>
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] kex follows: False
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] Compression: none
2025-11-24T19:23:02.253 [DEBUG] [Thread-195623] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:23:02.311 [DEBUG] [Thread-195623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:23:02.311 [DEBUG] [Thread-195623] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:23:02.311 [DEBUG] [Thread-195623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:23:02.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:23:02.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:23:02.367 [DEBUG] [Thread-195623] [transport.py] [_log()] userauth is OK
2025-11-24T19:23:02.367 [DEBUG] [Thread-195623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:23:02.367 [DEBUG] [Thread-195623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:23:02.367 [DEBUG] [Thread-195623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:23:02.367 [DEBUG] [Thread-195623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:23:02.381 [INFO] [Thread-195623] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:23:02.381 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:23:02.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:23:03.213 [DEBUG] [Thread-195623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:23:03.213 [DEBUG] [Thread-195623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:23:03.260 [DEBUG] [Thread-195623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:23:03.261 [DEBUG] [Thread-195623] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:23:03.270 [DEBUG] [Thread-195623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:23:03.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:23:03.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:23:03.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-11-24T19:23:03.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:23:03.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:23:03.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:23:03.316 [DEBUG] [Thread-195623] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:23:10.217 [DEBUG] [Thread-195625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:23:25.281 [DEBUG] [Thread-195626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:23:28.662 [DEBUG] [Thread-195627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:23:33.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:23:33.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:23:33.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-11-24T19:23:34.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 23, 16), 20.66, 24.59, 0.0, 24.81, 18.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:23:34.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:23:16
2025-11-24T19:23:34.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:23:34.638 [DEBUG] [Thread-195628] [transport.py] [_log()] starting thread (client mode): 0xd0738670
2025-11-24T19:23:34.638 [DEBUG] [Thread-195628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:23:34.649 [DEBUG] [Thread-195628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:23:34.649 [INFO] [Thread-195628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:23:34.652 [DEBUG] [Thread-195628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] client lang: <none>
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] server lang: <none>
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] kex follows: False
2025-11-24T19:23:34.653 [DEBUG] [Thread-195628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:23:34.654 [DEBUG] [Thread-195628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:23:34.654 [DEBUG] [Thread-195628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:23:34.654 [DEBUG] [Thread-195628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:23:34.654 [DEBUG] [Thread-195628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:23:34.654 [DEBUG] [Thread-195628] [transport.py] [_log()] Compression: none
2025-11-24T19:23:34.654 [DEBUG] [Thread-195628] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:23:34.681 [DEBUG] [Thread-195628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:23:34.684 [DEBUG] [Thread-195628] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:23:34.685 [DEBUG] [Thread-195628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:23:34.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:23:34.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:23:34.690 [DEBUG] [Thread-195628] [transport.py] [_log()] userauth is OK
2025-11-24T19:23:34.690 [DEBUG] [Thread-195628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:23:34.690 [DEBUG] [Thread-195628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:23:34.690 [DEBUG] [Thread-195628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:23:34.690 [DEBUG] [Thread-195628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:23:34.707 [INFO] [Thread-195628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:23:34.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:23:35.287 [DEBUG] [Thread-195628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:23:35.287 [DEBUG] [Thread-195628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:23:35.288 [DEBUG] [Thread-195628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:23:35.328 [DEBUG] [Thread-195628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:23:35.328 [DEBUG] [Thread-195628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:23:35.332 [DEBUG] [Thread-195628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:23:35.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:23:35.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:23:35.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:23:35.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:23:35.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:23:35.353 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:23:35.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:23:35.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:23:35.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:23:35.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.724009 -999.00  +18.60  19.92     30   +0.90 1 1 1 1 1   876    0 16.83 -50.61 ----- 16.6 19.9 168.6 29.4 19.6 -26.9 19.6 -26.2 19.7 -25.3 19.9 -26.3
2025-11-24T19:23:35.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:23:35.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:23:35.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.724009
2025-11-24T19:23:35.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:23:35.360 [DEBUG] [Thread-195628] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:23:35.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:23:35.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:23:35.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:23:35.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:23:35.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:23:16', tmtdew=20.66, humidity=24.59, cloud=0.0, wind=24.81, temperature=18.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:22:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:23:35.440 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:23:35.451 [DEBUG] [Thread-195631] [transport.py] [_log()] starting thread (client mode): 0xd07f8220
2025-11-24T19:23:35.451 [DEBUG] [Thread-195631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:23:35.465 [DEBUG] [Thread-195631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:23:35.465 [INFO] [Thread-195631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] client lang: <none>
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] server lang: <none>
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] kex follows: False
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] Compression: none
2025-11-24T19:23:35.473 [DEBUG] [Thread-195631] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:23:35.531 [DEBUG] [Thread-195631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:23:35.531 [DEBUG] [Thread-195631] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:23:35.531 [DEBUG] [Thread-195631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:23:35.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:23:35.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:23:35.587 [DEBUG] [Thread-195631] [transport.py] [_log()] userauth is OK
2025-11-24T19:23:35.588 [DEBUG] [Thread-195631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:23:35.588 [DEBUG] [Thread-195631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:23:35.588 [DEBUG] [Thread-195631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:23:35.588 [DEBUG] [Thread-195631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:23:35.602 [INFO] [Thread-195631] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:23: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-11-24T19:23:35.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:23:36.454 [DEBUG] [Thread-195631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:23:36.454 [DEBUG] [Thread-195631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:23:36.502 [DEBUG] [Thread-195631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:23:36.502 [DEBUG] [Thread-195631] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:23:36.510 [DEBUG] [Thread-195631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:23:36.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:23:36.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:23:36.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-11-24T19:23:36.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:23:36.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:23:36.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:23:36.542 [DEBUG] [Thread-195631] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:23:40.340 [DEBUG] [Thread-195633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:23:53.779 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:23:53.781 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:23:55.422 [DEBUG] [Thread-195634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:24:06.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:24:06.573 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:24:06.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-11-24T19:24:07.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 23, 48), 20.65, 24.6, 0.0, 24.63, 18.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:24:07.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:23:48
2025-11-24T19:24:07.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:24:07.810 [DEBUG] [Thread-195635] [transport.py] [_log()] starting thread (client mode): 0xd07fbbe0
2025-11-24T19:24:07.810 [DEBUG] [Thread-195635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:24:07.827 [DEBUG] [Thread-195635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:24:07.828 [INFO] [Thread-195635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:24:07.830 [DEBUG] [Thread-195635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:24:07.830 [DEBUG] [Thread-195635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:24:07.830 [DEBUG] [Thread-195635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:24:07.830 [DEBUG] [Thread-195635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:24:07.830 [DEBUG] [Thread-195635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:24:07.830 [DEBUG] [Thread-195635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:24:07.830 [DEBUG] [Thread-195635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:24:07.830 [DEBUG] [Thread-195635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:24:07.830 [DEBUG] [Thread-195635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:24:07.830 [DEBUG] [Thread-195635] [transport.py] [_log()] client lang: <none>
2025-11-24T19:24:07.831 [DEBUG] [Thread-195635] [transport.py] [_log()] server lang: <none>
2025-11-24T19:24:07.831 [DEBUG] [Thread-195635] [transport.py] [_log()] kex follows: False
2025-11-24T19:24:07.831 [DEBUG] [Thread-195635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:24:07.831 [DEBUG] [Thread-195635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:24:07.831 [DEBUG] [Thread-195635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:24:07.831 [DEBUG] [Thread-195635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:24:07.832 [DEBUG] [Thread-195635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:24:07.832 [DEBUG] [Thread-195635] [transport.py] [_log()] Compression: none
2025-11-24T19:24:07.832 [DEBUG] [Thread-195635] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:24:07.852 [DEBUG] [Thread-195635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:24:07.852 [DEBUG] [Thread-195635] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:24:07.852 [DEBUG] [Thread-195635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:24:07.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:24:07.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:24:07.854 [DEBUG] [Thread-195635] [transport.py] [_log()] userauth is OK
2025-11-24T19:24:07.854 [DEBUG] [Thread-195635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:24:07.854 [DEBUG] [Thread-195635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:24:07.854 [DEBUG] [Thread-195635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:24:07.854 [DEBUG] [Thread-195635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:24:07.863 [INFO] [Thread-195635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:24:07.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:24:08.508 [DEBUG] [Thread-195635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:24:08.508 [DEBUG] [Thread-195635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:24:08.517 [DEBUG] [Thread-195635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:24:08.549 [DEBUG] [Thread-195635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:24:08.549 [DEBUG] [Thread-195635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:24:08.552 [DEBUG] [Thread-195635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:24:08.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:24:08.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:24:08.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:24:08.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:24:08.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:24:08.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:24:08.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:24:08.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.724356 -999.00  +18.60  20.66     30   +0.80 1 1 1 1 1   875    0 16.78 -50.20 ----- 19.1 20.7 174.2 25.9 19.6 -26.8 19.6 -26.3 19.6 -25.3 19.9 -26.4
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.724356
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:24:08.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:23:48', tmtdew=20.65, humidity=24.6, cloud=0.0, wind=24.63, temperature=18.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:23:04.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:24:08.569 [DEBUG] [Thread-195635] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:24: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-11-24T19:24:08.653 [DEBUG] [Thread-195638] [transport.py] [_log()] starting thread (client mode): 0xd07fb790
2025-11-24T19:24:08.653 [DEBUG] [Thread-195638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:24:08.667 [DEBUG] [Thread-195638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:24:08.667 [INFO] [Thread-195638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:24:08.674 [DEBUG] [Thread-195638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:24:08.674 [DEBUG] [Thread-195638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] client lang: <none>
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] server lang: <none>
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] kex follows: False
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] Compression: none
2025-11-24T19:24:08.675 [DEBUG] [Thread-195638] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:24:08.730 [DEBUG] [Thread-195638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:24:08.730 [DEBUG] [Thread-195638] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:24:08.730 [DEBUG] [Thread-195638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:24:08.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:24:08.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:24:08.788 [DEBUG] [Thread-195638] [transport.py] [_log()] userauth is OK
2025-11-24T19:24:08.788 [DEBUG] [Thread-195638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:24:08.788 [DEBUG] [Thread-195638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:24:08.788 [DEBUG] [Thread-195638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:24:08.788 [DEBUG] [Thread-195638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:24:08.802 [INFO] [Thread-195638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:24:08.802 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:24:08.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:24:09.679 [DEBUG] [Thread-195638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:24:09.679 [DEBUG] [Thread-195638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:24:09.727 [DEBUG] [Thread-195638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:24:09.727 [DEBUG] [Thread-195638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:24:09.736 [DEBUG] [Thread-195638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:24:09.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:24:09.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-11-24T19:24:09.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-11-24T19:24:09.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:24:09.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:24:09.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:24:09.771 [DEBUG] [Thread-195638] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:24:10.449 [DEBUG] [Thread-195640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:24:25.495 [DEBUG] [Thread-195641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:24:28.924 [DEBUG] [Thread-195642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:24:39.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:24:39.784 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:24:39.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-11-24T19:24:40.536 [DEBUG] [Thread-195643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:24:40.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 24, 21), 20.64, 24.6, 0.0, 25.13, 18.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:24:40.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:24:21
2025-11-24T19:24:40.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:24:40.914 [DEBUG] [Thread-195644] [transport.py] [_log()] starting thread (client mode): 0xd07cc4c0
2025-11-24T19:24:40.914 [DEBUG] [Thread-195644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:24:40.930 [DEBUG] [Thread-195644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:24:40.930 [INFO] [Thread-195644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] client lang: <none>
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] server lang: <none>
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] kex follows: False
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] Compression: none
2025-11-24T19:24:40.934 [DEBUG] [Thread-195644] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:24:40.965 [DEBUG] [Thread-195644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:24:40.968 [DEBUG] [Thread-195644] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:24:40.969 [DEBUG] [Thread-195644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:24:40.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:24:40.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:24:41.009 [DEBUG] [Thread-195644] [transport.py] [_log()] userauth is OK
2025-11-24T19:24:41.009 [DEBUG] [Thread-195644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:24:41.009 [DEBUG] [Thread-195644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:24:41.009 [DEBUG] [Thread-195644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:24:41.009 [DEBUG] [Thread-195644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:24:41.028 [INFO] [Thread-195644] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:24:41.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:24:41.632 [DEBUG] [Thread-195644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:24:41.632 [DEBUG] [Thread-195644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:24:41.644 [DEBUG] [Thread-195644] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:24:41.673 [DEBUG] [Thread-195644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:24:41.673 [DEBUG] [Thread-195644] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:24:41.676 [DEBUG] [Thread-195644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:24:41.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:24:41.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:24:41.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:24:41.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:24:41.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:24:41.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:24:41.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:24:41.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:24:41.698 [DEBUG] [Thread-195644] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:24:41.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:24:41.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.724703 -999.00  +18.60  13.53     30   +0.80 1 1 1 1 1   873    0 16.50 -50.07 ----- 22.6 13.5 161.2 24.2 19.6 -26.7 19.6 -26.5 19.6 -25.3 19.9 -26.4
2025-11-24T19:24:41.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:24:41.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:24:41.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.724703
2025-11-24T19:24:41.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:24:41.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:24:41.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:24:41.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:24:41.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:24:41.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:24:21', tmtdew=20.64, humidity=24.6, cloud=0.0, wind=25.13, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:23:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:24:41.801 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:24:41.814 [DEBUG] [Thread-195647] [transport.py] [_log()] starting thread (client mode): 0xd0702260
2025-11-24T19:24:41.814 [DEBUG] [Thread-195647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:24:41.828 [DEBUG] [Thread-195647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:24:41.828 [INFO] [Thread-195647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] client lang: <none>
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] server lang: <none>
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] kex follows: False
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:24:41.836 [DEBUG] [Thread-195647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:24:41.837 [DEBUG] [Thread-195647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:24:41.837 [DEBUG] [Thread-195647] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:24:41.837 [DEBUG] [Thread-195647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:24:41.837 [DEBUG] [Thread-195647] [transport.py] [_log()] Compression: none
2025-11-24T19:24:41.837 [DEBUG] [Thread-195647] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:24:41.896 [DEBUG] [Thread-195647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:24:41.896 [DEBUG] [Thread-195647] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:24:41.897 [DEBUG] [Thread-195647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:24:41.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:24:41.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:24:41.952 [DEBUG] [Thread-195647] [transport.py] [_log()] userauth is OK
2025-11-24T19:24:41.953 [DEBUG] [Thread-195647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:24:41.953 [DEBUG] [Thread-195647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:24:41.953 [DEBUG] [Thread-195647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:24:41.953 [DEBUG] [Thread-195647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:24:41.972 [INFO] [Thread-195647] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:24:41.973 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:24:41.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:24:42.809 [DEBUG] [Thread-195647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:24:42.810 [DEBUG] [Thread-195647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:24:42.857 [DEBUG] [Thread-195647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:24:42.858 [DEBUG] [Thread-195647] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:24:42.867 [DEBUG] [Thread-195647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:24:42.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:24:42.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:24:42.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:24:42.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:24:42.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:24:42.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:24:42.905 [DEBUG] [Thread-195647] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:24:55.570 [DEBUG] [Thread-195649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:24:58.746 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:24:58.747 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:25:10.661 [DEBUG] [Thread-195650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:25:12.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:25:12.928 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:25:12.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-11-24T19:25:13.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 24, 53), 20.56, 24.67, 0.0, 29.91, 18.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:25:13.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:24:53
2025-11-24T19:25:14.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:25:14.292 [DEBUG] [Thread-195651] [transport.py] [_log()] starting thread (client mode): 0xc9b83490
2025-11-24T19:25:14.292 [DEBUG] [Thread-195651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:25:14.304 [DEBUG] [Thread-195651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:25:14.304 [INFO] [Thread-195651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:25:14.309 [DEBUG] [Thread-195651] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:25:14.309 [DEBUG] [Thread-195651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:25:14.309 [DEBUG] [Thread-195651] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:25:14.309 [DEBUG] [Thread-195651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:25:14.309 [DEBUG] [Thread-195651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:25:14.309 [DEBUG] [Thread-195651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:25:14.309 [DEBUG] [Thread-195651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:25:14.310 [DEBUG] [Thread-195651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:25:14.310 [DEBUG] [Thread-195651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:25:14.310 [DEBUG] [Thread-195651] [transport.py] [_log()] client lang: <none>
2025-11-24T19:25:14.310 [DEBUG] [Thread-195651] [transport.py] [_log()] server lang: <none>
2025-11-24T19:25:14.310 [DEBUG] [Thread-195651] [transport.py] [_log()] kex follows: False
2025-11-24T19:25:14.310 [DEBUG] [Thread-195651] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:25:14.310 [DEBUG] [Thread-195651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:25:14.310 [DEBUG] [Thread-195651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:25:14.311 [DEBUG] [Thread-195651] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:25:14.311 [DEBUG] [Thread-195651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:25:14.311 [DEBUG] [Thread-195651] [transport.py] [_log()] Compression: none
2025-11-24T19:25:14.311 [DEBUG] [Thread-195651] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:25:14.339 [DEBUG] [Thread-195651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:25:14.343 [DEBUG] [Thread-195651] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:25:14.345 [DEBUG] [Thread-195651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:25:14.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:25:14.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:25:14.350 [DEBUG] [Thread-195651] [transport.py] [_log()] userauth is OK
2025-11-24T19:25:14.351 [DEBUG] [Thread-195651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:25:14.351 [DEBUG] [Thread-195651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:25:14.351 [DEBUG] [Thread-195651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:25:14.351 [DEBUG] [Thread-195651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:25:14.390 [INFO] [Thread-195651] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:25:14.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:25:15.026 [DEBUG] [Thread-195651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:25:15.027 [DEBUG] [Thread-195651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:25:15.029 [DEBUG] [Thread-195651] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:25:15.067 [DEBUG] [Thread-195651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:25:15.067 [DEBUG] [Thread-195651] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:25:15.071 [DEBUG] [Thread-195651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:25:15.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:25:15.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:25:15.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:25:15.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:25:15.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:25:15.100 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:25:15.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:25:15.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:25:15.102 [DEBUG] [Thread-195651] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:25:15.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:25:15.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.725744 -999.00  +18.50  18.93     30   +0.90 1 1 1 1 1   869    0 16.76 -54.23 ----- 16.9 18.9 171.8 24.0 19.4 -26.7 19.5 -26.3 19.4 -25.1 19.7 -26.3
2025-11-24T19:25:15.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:25:15.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:25:15.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.725744
2025-11-24T19:25:15.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:25:15.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:25:15.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:25:15.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:25:15.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:25:15.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:24:53', tmtdew=20.56, humidity=24.67, cloud=0.0, wind=29.91, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:25:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:25:15.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:25:15.213 [DEBUG] [Thread-195654] [transport.py] [_log()] starting thread (client mode): 0xd07f8940
2025-11-24T19:25:15.214 [DEBUG] [Thread-195654] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:25:15.231 [DEBUG] [Thread-195654] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:25:15.231 [INFO] [Thread-195654] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:25:15.239 [DEBUG] [Thread-195654] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:25:15.239 [DEBUG] [Thread-195654] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:25:15.239 [DEBUG] [Thread-195654] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:25:15.239 [DEBUG] [Thread-195654] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:25:15.239 [DEBUG] [Thread-195654] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:25:15.239 [DEBUG] [Thread-195654] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:25:15.239 [DEBUG] [Thread-195654] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:25:15.239 [DEBUG] [Thread-195654] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:25:15.239 [DEBUG] [Thread-195654] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:25:15.240 [DEBUG] [Thread-195654] [transport.py] [_log()] client lang: <none>
2025-11-24T19:25:15.240 [DEBUG] [Thread-195654] [transport.py] [_log()] server lang: <none>
2025-11-24T19:25:15.240 [DEBUG] [Thread-195654] [transport.py] [_log()] kex follows: False
2025-11-24T19:25:15.240 [DEBUG] [Thread-195654] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:25:15.240 [DEBUG] [Thread-195654] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:25:15.240 [DEBUG] [Thread-195654] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:25:15.240 [DEBUG] [Thread-195654] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:25:15.240 [DEBUG] [Thread-195654] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:25:15.240 [DEBUG] [Thread-195654] [transport.py] [_log()] Compression: none
2025-11-24T19:25:15.240 [DEBUG] [Thread-195654] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:25:15.296 [DEBUG] [Thread-195654] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:25:15.297 [DEBUG] [Thread-195654] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:25:15.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:25:15.298 [DEBUG] [Thread-195654] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:25:15.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:25:15.356 [DEBUG] [Thread-195654] [transport.py] [_log()] userauth is OK
2025-11-24T19:25:15.356 [DEBUG] [Thread-195654] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:25:15.357 [DEBUG] [Thread-195654] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:25:15.357 [DEBUG] [Thread-195654] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:25:15.357 [DEBUG] [Thread-195654] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:25:15.375 [INFO] [Thread-195654] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:25:15.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:25:15.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:25:16.197 [DEBUG] [Thread-195654] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:25:16.198 [DEBUG] [Thread-195654] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:25:16.245 [DEBUG] [Thread-195654] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:25:16.246 [DEBUG] [Thread-195654] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:25:16.254 [DEBUG] [Thread-195654] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:25:16.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:25:16.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-11-24T19:25:16.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-11-24T19:25:16.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:25:16.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:25:16.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:25:16.291 [DEBUG] [Thread-195654] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:25:25.701 [DEBUG] [Thread-195656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:25:29.213 [DEBUG] [Thread-195657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:25:40.763 [DEBUG] [Thread-195658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:25:46.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:25:46.304 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:25:46.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-11-24T19:25:47.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 25, 26), 20.5, 24.77, 0.0, 32.31, 18.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:25:47.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:25:26
2025-11-24T19:25:47.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:25:47.584 [DEBUG] [Thread-195659] [transport.py] [_log()] starting thread (client mode): 0xd0785930
2025-11-24T19:25:47.585 [DEBUG] [Thread-195659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:25:47.590 [DEBUG] [Thread-195659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:25:47.590 [INFO] [Thread-195659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:25:47.594 [DEBUG] [Thread-195659] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:25:47.594 [DEBUG] [Thread-195659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] client lang: <none>
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] server lang: <none>
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] kex follows: False
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:25:47.595 [DEBUG] [Thread-195659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:25:47.596 [DEBUG] [Thread-195659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:25:47.596 [DEBUG] [Thread-195659] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:25:47.596 [DEBUG] [Thread-195659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:25:47.596 [DEBUG] [Thread-195659] [transport.py] [_log()] Compression: none
2025-11-24T19:25:47.596 [DEBUG] [Thread-195659] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:25:47.624 [DEBUG] [Thread-195659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:25:47.629 [DEBUG] [Thread-195659] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:25:47.631 [DEBUG] [Thread-195659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:25:47.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:25:47.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:25:47.636 [DEBUG] [Thread-195659] [transport.py] [_log()] userauth is OK
2025-11-24T19:25:47.637 [DEBUG] [Thread-195659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:25:47.637 [DEBUG] [Thread-195659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:25:47.637 [DEBUG] [Thread-195659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:25:47.637 [DEBUG] [Thread-195659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:25:47.675 [INFO] [Thread-195659] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:25:47.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:25:48.214 [DEBUG] [Thread-195659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:25:48.214 [DEBUG] [Thread-195659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:25:48.224 [DEBUG] [Thread-195659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:25:48.255 [DEBUG] [Thread-195659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:25:48.256 [DEBUG] [Thread-195659] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:25:48.259 [DEBUG] [Thread-195659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:25:48.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:25:48.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:25:48.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:25:48.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:25:48.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:25:48.280 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:25:48.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:25:48.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:25:48.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:25:48.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.726092 -999.00  +18.50  17.81     30   +0.90 1 1 1 1 1   867    0 16.33 -57.60 ----- 17.6 17.8 165.8 23.8 19.4 -26.7 19.4 -26.1 19.4 -25.4 19.6 -26.4
2025-11-24T19:25:48.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:25:48.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:25:48.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.726092
2025-11-24T19:25:48.287 [DEBUG] [Thread-195659] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:25:48.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:25:48.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:25:48.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:25:48.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:25:48.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:25:48.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:25:26', tmtdew=20.5, humidity=24.77, cloud=0.0, wind=32.31, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:25:34.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:25:48.371 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:25:48.382 [DEBUG] [Thread-195662] [transport.py] [_log()] starting thread (client mode): 0xd0784520
2025-11-24T19:25:48.383 [DEBUG] [Thread-195662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:25:48.398 [DEBUG] [Thread-195662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:25:48.398 [INFO] [Thread-195662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:25:48.405 [DEBUG] [Thread-195662] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] client lang: <none>
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] server lang: <none>
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] kex follows: False
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:25:48.406 [DEBUG] [Thread-195662] [transport.py] [_log()] Compression: none
2025-11-24T19:25:48.407 [DEBUG] [Thread-195662] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:25:48.463 [DEBUG] [Thread-195662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:25:48.463 [DEBUG] [Thread-195662] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:25:48.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:25:48.465 [DEBUG] [Thread-195662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:25:48.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:25:48.520 [DEBUG] [Thread-195662] [transport.py] [_log()] userauth is OK
2025-11-24T19:25:48.520 [DEBUG] [Thread-195662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:25:48.520 [DEBUG] [Thread-195662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:25:48.520 [DEBUG] [Thread-195662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:25:48.520 [DEBUG] [Thread-195662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:25:48.544 [INFO] [Thread-195662] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:25:48.545 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:25:48.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:25:49.387 [DEBUG] [Thread-195662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:25:49.387 [DEBUG] [Thread-195662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:25:49.435 [DEBUG] [Thread-195662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:25:49.435 [DEBUG] [Thread-195662] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:25:49.443 [DEBUG] [Thread-195662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:25:49.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:25: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')
2025-11-24T19:25:49.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-11-24T19:25:49.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:25:49.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:25:49.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:25:49.485 [DEBUG] [Thread-195662] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:25:55.800 [DEBUG] [Thread-195664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:26:05.993 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:26:05.996 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:26:10.869 [DEBUG] [Thread-195665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:26:19.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:26:19.519 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:26:19.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-11-24T19:26:20.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 25, 59), 20.48, 24.8, 0.0, 29.31, 18.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:26:20.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:25:59
2025-11-24T19:26:20.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:26:20.690 [DEBUG] [Thread-195666] [transport.py] [_log()] starting thread (client mode): 0xd0739ed0
2025-11-24T19:26:20.691 [DEBUG] [Thread-195666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:26:20.705 [DEBUG] [Thread-195666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:26:20.705 [INFO] [Thread-195666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:26:20.709 [DEBUG] [Thread-195666] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] client lang: <none>
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] server lang: <none>
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] kex follows: False
2025-11-24T19:26:20.710 [DEBUG] [Thread-195666] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:26:20.711 [DEBUG] [Thread-195666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:26:20.711 [DEBUG] [Thread-195666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:26:20.711 [DEBUG] [Thread-195666] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:26:20.711 [DEBUG] [Thread-195666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:26:20.711 [DEBUG] [Thread-195666] [transport.py] [_log()] Compression: none
2025-11-24T19:26:20.711 [DEBUG] [Thread-195666] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:26:20.747 [DEBUG] [Thread-195666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:26:20.751 [DEBUG] [Thread-195666] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:26:20.753 [DEBUG] [Thread-195666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:26:20.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:26:20.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:26:20.758 [DEBUG] [Thread-195666] [transport.py] [_log()] userauth is OK
2025-11-24T19:26:20.758 [DEBUG] [Thread-195666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:26:20.759 [DEBUG] [Thread-195666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:26:20.759 [DEBUG] [Thread-195666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:26:20.759 [DEBUG] [Thread-195666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:26:20.785 [INFO] [Thread-195666] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:26:20.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:26:21.390 [DEBUG] [Thread-195666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:26:21.391 [DEBUG] [Thread-195666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:26:21.400 [DEBUG] [Thread-195666] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:26:21.431 [DEBUG] [Thread-195666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:26:21.431 [DEBUG] [Thread-195666] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:26:21.433 [DEBUG] [Thread-195666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:26:21.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:26:21.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:26:21.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:26:21.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:26:21.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:26:21.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:26:21.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:26:21.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:26:21.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:26:21.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.726092 -999.00  +18.50  17.81     30   +0.90 1 1 1 1 1   867    0 16.33 -57.60 ----- 17.6 17.8 165.8 23.8 19.4 -26.7 19.4 -26.1 19.4 -25.4 19.6 -26.4
2025-11-24T19:26:21.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:26:21.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:26:21.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.726092
2025-11-24T19:26:21.458 [DEBUG] [Thread-195666] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:26:21.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:26:21.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:26:21.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:26:21.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:26:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:26:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:25:59', tmtdew=20.48, humidity=24.8, cloud=0.0, wind=29.31, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:25:34.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:26:21.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:26:21.557 [DEBUG] [Thread-195669] [transport.py] [_log()] starting thread (client mode): 0xd0739210
2025-11-24T19:26:21.557 [DEBUG] [Thread-195669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:26:21.573 [DEBUG] [Thread-195669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:26:21.573 [INFO] [Thread-195669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:26:21.580 [DEBUG] [Thread-195669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:26:21.580 [DEBUG] [Thread-195669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:26:21.580 [DEBUG] [Thread-195669] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:26:21.580 [DEBUG] [Thread-195669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:26:21.580 [DEBUG] [Thread-195669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:26:21.580 [DEBUG] [Thread-195669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] client lang: <none>
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] server lang: <none>
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] kex follows: False
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] Compression: none
2025-11-24T19:26:21.581 [DEBUG] [Thread-195669] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:26:21.642 [DEBUG] [Thread-195669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:26:21.642 [DEBUG] [Thread-195669] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:26:21.642 [DEBUG] [Thread-195669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:26:21.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:26:21.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:26:21.707 [DEBUG] [Thread-195669] [transport.py] [_log()] userauth is OK
2025-11-24T19:26:21.707 [DEBUG] [Thread-195669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:26:21.707 [DEBUG] [Thread-195669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:26:21.707 [DEBUG] [Thread-195669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:26:21.707 [DEBUG] [Thread-195669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:26:21.725 [INFO] [Thread-195669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:26:21.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:26:21.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:26:22.603 [DEBUG] [Thread-195669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:26:22.604 [DEBUG] [Thread-195669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:26:22.651 [DEBUG] [Thread-195669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:26:22.651 [DEBUG] [Thread-195669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:26:22.660 [DEBUG] [Thread-195669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:26:22.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:26:22.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-11-24T19:26:22.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-11-24T19:26:22.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:26:22.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:26:22.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:26:22.704 [DEBUG] [Thread-195669] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:26:25.897 [DEBUG] [Thread-195671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:26:29.559 [DEBUG] [Thread-195672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:26:40.964 [DEBUG] [Thread-195673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:26:52.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:26:52.727 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:26:52.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-11-24T19:26:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 26, 31), 20.48, 24.79, 0.0, 29.08, 18.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:26:53.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:26:31
2025-11-24T19:26:53.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:26:53.795 [DEBUG] [Thread-195674] [transport.py] [_log()] starting thread (client mode): 0xc9b83ac0
2025-11-24T19:26:53.795 [DEBUG] [Thread-195674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:26:53.816 [DEBUG] [Thread-195674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:26:53.817 [INFO] [Thread-195674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] client lang: <none>
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] server lang: <none>
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] kex follows: False
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] Compression: none
2025-11-24T19:26:53.820 [DEBUG] [Thread-195674] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:26:53.835 [DEBUG] [Thread-195674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:26:53.835 [DEBUG] [Thread-195674] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:26:53.836 [DEBUG] [Thread-195674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:26:53.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:26:53.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:26:53.836 [DEBUG] [Thread-195674] [transport.py] [_log()] userauth is OK
2025-11-24T19:26:53.836 [DEBUG] [Thread-195674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:26:53.836 [DEBUG] [Thread-195674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:26:53.836 [DEBUG] [Thread-195674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:26:53.836 [DEBUG] [Thread-195674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:26:53.851 [INFO] [Thread-195674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:26:53.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:26:54.420 [DEBUG] [Thread-195674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:26:54.420 [DEBUG] [Thread-195674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:26:54.420 [DEBUG] [Thread-195674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:26:54.461 [DEBUG] [Thread-195674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:26:54.461 [DEBUG] [Thread-195674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:26:54.463 [DEBUG] [Thread-195674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:26:54.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:26:54.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:26:54.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:26:54.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:26:54.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:26:54.480 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:26:54.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.726439 -999.00  +18.40  23.75     30   +1.00 1 1 1 1 1   865    0 16.78 -58.08 ----- 23.2 23.8 170.2 32.4 19.4 -26.5 19.4 -26.6 19.3 -25.2 19.6 -26.3
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.726439
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:26:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:26:31', tmtdew=20.48, humidity=24.79, cloud=0.0, wind=29.08, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:26:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:26:54.481 [DEBUG] [Thread-195674] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:26:54.555 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:26:54.567 [DEBUG] [Thread-195677] [transport.py] [_log()] starting thread (client mode): 0xc9b81ed0
2025-11-24T19:26:54.567 [DEBUG] [Thread-195677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:26:54.583 [DEBUG] [Thread-195677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:26:54.583 [INFO] [Thread-195677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:26:54.590 [DEBUG] [Thread-195677] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] client lang: <none>
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] server lang: <none>
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] kex follows: False
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] Compression: none
2025-11-24T19:26:54.591 [DEBUG] [Thread-195677] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:26:54.647 [DEBUG] [Thread-195677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:26:54.647 [DEBUG] [Thread-195677] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:26:54.647 [DEBUG] [Thread-195677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:26:54.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:26:54.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:26:54.704 [DEBUG] [Thread-195677] [transport.py] [_log()] userauth is OK
2025-11-24T19:26:54.704 [DEBUG] [Thread-195677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:26:54.704 [DEBUG] [Thread-195677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:26:54.704 [DEBUG] [Thread-195677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:26:54.704 [DEBUG] [Thread-195677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:26:54.720 [INFO] [Thread-195677] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:26:54.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:26:54.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:26:55.538 [DEBUG] [Thread-195677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:26:55.538 [DEBUG] [Thread-195677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:26:55.586 [DEBUG] [Thread-195677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:26:55.586 [DEBUG] [Thread-195677] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:26:55.594 [DEBUG] [Thread-195677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:26:55.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:26:55.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')
2025-11-24T19:26:55.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-11-24T19:26:55.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:26:55.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:26:55.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:26:55.626 [DEBUG] [Thread-195677] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:26:55.992 [DEBUG] [Thread-195679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:27:11.083 [DEBUG] [Thread-195680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:27:11.230 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:27:11.232 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:27:25.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:27:25.646 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:27:25.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-11-24T19:27:26.117 [DEBUG] [Thread-195681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:27:26.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 27, 4), 20.44, 24.87, 0.0, 27.65, 18.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:27:26.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:27:04
2025-11-24T19:27:26.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:27:26.864 [DEBUG] [Thread-195682] [transport.py] [_log()] starting thread (client mode): 0xd0787280
2025-11-24T19:27:26.864 [DEBUG] [Thread-195682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:27:26.884 [DEBUG] [Thread-195682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:27:26.884 [INFO] [Thread-195682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:27:26.888 [DEBUG] [Thread-195682] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:27:26.888 [DEBUG] [Thread-195682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:27:26.888 [DEBUG] [Thread-195682] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:27:26.888 [DEBUG] [Thread-195682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:27:26.888 [DEBUG] [Thread-195682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:27:26.888 [DEBUG] [Thread-195682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:27:26.889 [DEBUG] [Thread-195682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:27:26.889 [DEBUG] [Thread-195682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:27:26.889 [DEBUG] [Thread-195682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:27:26.889 [DEBUG] [Thread-195682] [transport.py] [_log()] client lang: <none>
2025-11-24T19:27:26.889 [DEBUG] [Thread-195682] [transport.py] [_log()] server lang: <none>
2025-11-24T19:27:26.889 [DEBUG] [Thread-195682] [transport.py] [_log()] kex follows: False
2025-11-24T19:27:26.889 [DEBUG] [Thread-195682] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:27:26.889 [DEBUG] [Thread-195682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:27:26.889 [DEBUG] [Thread-195682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:27:26.889 [DEBUG] [Thread-195682] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:27:26.890 [DEBUG] [Thread-195682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:27:26.890 [DEBUG] [Thread-195682] [transport.py] [_log()] Compression: none
2025-11-24T19:27:26.890 [DEBUG] [Thread-195682] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:27:26.909 [DEBUG] [Thread-195682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:27:26.911 [DEBUG] [Thread-195682] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:27:26.911 [DEBUG] [Thread-195682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:27:26.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:27:26.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:27:26.914 [DEBUG] [Thread-195682] [transport.py] [_log()] userauth is OK
2025-11-24T19:27:26.914 [DEBUG] [Thread-195682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:27:26.914 [DEBUG] [Thread-195682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:27:26.914 [DEBUG] [Thread-195682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:27:26.914 [DEBUG] [Thread-195682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:27:26.939 [INFO] [Thread-195682] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:27:26.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:27:27.539 [DEBUG] [Thread-195682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:27:27.539 [DEBUG] [Thread-195682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:27:27.539 [DEBUG] [Thread-195682] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:27:27.580 [DEBUG] [Thread-195682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:27:27.580 [DEBUG] [Thread-195682] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:27:27.582 [DEBUG] [Thread-195682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:27:27.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:27:27.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:27:27.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:27:27.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:27:27.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:27:27.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:27:27.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:27:27.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:27:27.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:27:27.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.726786 -999.00  +18.40  16.45     31   +1.00 1 1 1 1 1   863    0 16.28 -56.45 ----- 23.4 16.4 163.8 28.5 19.4 -26.6 19.3 -26.1 19.3 -25.3 19.5 -26.3
2025-11-24T19:27:27.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:27:27.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:27:27.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.726786
2025-11-24T19:27:27.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:27:27.614 [DEBUG] [Thread-195682] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:27:27.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:27:27.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:27:27.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:27:27.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:27:27.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:27:04', tmtdew=20.44, humidity=24.87, cloud=0.0, wind=27.65, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:26:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:27:27.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:27:27.709 [DEBUG] [Thread-195685] [transport.py] [_log()] starting thread (client mode): 0xd073af80
2025-11-24T19:27:27.709 [DEBUG] [Thread-195685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:27:27.723 [DEBUG] [Thread-195685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:27:27.724 [INFO] [Thread-195685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] client lang: <none>
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] server lang: <none>
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] kex follows: False
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:27:27.731 [DEBUG] [Thread-195685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:27:27.732 [DEBUG] [Thread-195685] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:27:27.732 [DEBUG] [Thread-195685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:27:27.732 [DEBUG] [Thread-195685] [transport.py] [_log()] Compression: none
2025-11-24T19:27:27.732 [DEBUG] [Thread-195685] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:27:27.786 [DEBUG] [Thread-195685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:27:27.786 [DEBUG] [Thread-195685] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:27:27.786 [DEBUG] [Thread-195685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:27:27.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:27:27.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:27:27.844 [DEBUG] [Thread-195685] [transport.py] [_log()] userauth is OK
2025-11-24T19:27:27.845 [DEBUG] [Thread-195685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:27:27.845 [DEBUG] [Thread-195685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:27:27.845 [DEBUG] [Thread-195685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:27:27.845 [DEBUG] [Thread-195685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:27:27.864 [INFO] [Thread-195685] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:27:27.864 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:27:27.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:27:28.665 [DEBUG] [Thread-195685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:27:28.665 [DEBUG] [Thread-195685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:27:28.713 [DEBUG] [Thread-195685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:27:28.713 [DEBUG] [Thread-195685] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:27:28.722 [DEBUG] [Thread-195685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:27:28.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:27:28.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-11-24T19:27:28.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-11-24T19:27:28.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:27:28.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:27:28.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:27:28.754 [DEBUG] [Thread-195685] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:27:29.827 [DEBUG] [Thread-195687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:27:41.155 [DEBUG] [Thread-195688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:27:56.270 [DEBUG] [Thread-195689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:27:58.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:27:58.779 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:27: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-11-24T19:27:59.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 27, 36), 20.31, 25.44, 0.0, 27.15, 18.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:27:59.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:27:36
2025-11-24T19:27:59.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:28:00.051 [DEBUG] [Thread-195690] [transport.py] [_log()] starting thread (client mode): 0xc9b83d00
2025-11-24T19:28:00.051 [DEBUG] [Thread-195690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:28:00.066 [DEBUG] [Thread-195690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:28:00.067 [INFO] [Thread-195690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:28:00.071 [DEBUG] [Thread-195690] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:28:00.071 [DEBUG] [Thread-195690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:28:00.071 [DEBUG] [Thread-195690] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:28:00.071 [DEBUG] [Thread-195690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:28:00.071 [DEBUG] [Thread-195690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:28:00.071 [DEBUG] [Thread-195690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:28:00.071 [DEBUG] [Thread-195690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:28:00.071 [DEBUG] [Thread-195690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:28:00.071 [DEBUG] [Thread-195690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:28:00.072 [DEBUG] [Thread-195690] [transport.py] [_log()] client lang: <none>
2025-11-24T19:28:00.072 [DEBUG] [Thread-195690] [transport.py] [_log()] server lang: <none>
2025-11-24T19:28:00.072 [DEBUG] [Thread-195690] [transport.py] [_log()] kex follows: False
2025-11-24T19:28:00.072 [DEBUG] [Thread-195690] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:28:00.072 [DEBUG] [Thread-195690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:28:00.072 [DEBUG] [Thread-195690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:28:00.072 [DEBUG] [Thread-195690] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:28:00.072 [DEBUG] [Thread-195690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:28:00.072 [DEBUG] [Thread-195690] [transport.py] [_log()] Compression: none
2025-11-24T19:28:00.072 [DEBUG] [Thread-195690] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:28:00.096 [DEBUG] [Thread-195690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:28:00.099 [DEBUG] [Thread-195690] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:28:00.100 [DEBUG] [Thread-195690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:28:00.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:28:00.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:28:00.106 [DEBUG] [Thread-195690] [transport.py] [_log()] userauth is OK
2025-11-24T19:28:00.106 [DEBUG] [Thread-195690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:28:00.106 [DEBUG] [Thread-195690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:28:00.106 [DEBUG] [Thread-195690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:28:00.106 [DEBUG] [Thread-195690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:28:00.125 [INFO] [Thread-195690] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:28:00.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:28:00.745 [DEBUG] [Thread-195690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:28:00.746 [DEBUG] [Thread-195690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:28:00.747 [DEBUG] [Thread-195690] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:28:00.786 [DEBUG] [Thread-195690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:28:00.787 [DEBUG] [Thread-195690] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:28:00.790 [DEBUG] [Thread-195690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:28:00.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:28:00.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:28:00.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:28:00.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:28:00.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:28:00.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:28:00.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:28:00.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:28:00.813 [DEBUG] [Thread-195690] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:28:00.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:28:00.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.727481 -999.00  +18.40  25.62     31   +1.00 1 1 1 1 1   858    0 16.30 -57.31 ----- 27.8 25.6 167.1 29.6 19.2 -26.6 19.2 -26.3 19.1 -24.9 19.4 -26.2
2025-11-24T19:28:00.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:28:00.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:28:00.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.727481
2025-11-24T19:28:00.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:28:00.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:28:00.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:28:00.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:28:00.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:28:00.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:27:36', tmtdew=20.31, humidity=25.44, cloud=0.0, wind=27.15, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:27:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:28:00.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:28:00.915 [DEBUG] [Thread-195693] [transport.py] [_log()] starting thread (client mode): 0xd07876d0
2025-11-24T19:28:00.915 [DEBUG] [Thread-195693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:28:00.930 [DEBUG] [Thread-195693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:28:00.931 [INFO] [Thread-195693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:28:00.938 [DEBUG] [Thread-195693] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:28:00.938 [DEBUG] [Thread-195693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:28:00.938 [DEBUG] [Thread-195693] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:28:00.938 [DEBUG] [Thread-195693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:28:00.938 [DEBUG] [Thread-195693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] client lang: <none>
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] server lang: <none>
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] kex follows: False
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] Compression: none
2025-11-24T19:28:00.939 [DEBUG] [Thread-195693] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:28:00.996 [DEBUG] [Thread-195693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:28:00.996 [DEBUG] [Thread-195693] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:28:00.997 [DEBUG] [Thread-195693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:28:00.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:28:00.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:28:01.052 [DEBUG] [Thread-195693] [transport.py] [_log()] userauth is OK
2025-11-24T19:28:01.052 [DEBUG] [Thread-195693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:28:01.053 [DEBUG] [Thread-195693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:28:01.053 [DEBUG] [Thread-195693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:28:01.053 [DEBUG] [Thread-195693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:28:01.073 [INFO] [Thread-195693] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:28:01.082 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:28:01.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:28:01.928 [DEBUG] [Thread-195693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:28:01.928 [DEBUG] [Thread-195693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:28:01.976 [DEBUG] [Thread-195693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:28:01.976 [DEBUG] [Thread-195693] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:28:01.984 [DEBUG] [Thread-195693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:28:01.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:28:01.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-11-24T19:28:02.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-11-24T19:28:02.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:28:02.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:28:02.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:28:02.017 [DEBUG] [Thread-195693] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:28:11.300 [DEBUG] [Thread-195695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:28:17.262 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:28:17.264 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:28:26.368 [DEBUG] [Thread-195696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:28:30.091 [DEBUG] [Thread-195697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:28:32.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:28:32.046 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:28:32.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-11-24T19:28:32.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 28, 9), 20.3, 25.42, 0.0, 27.21, 18.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:28:32.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:28:09
2025-11-24T19:28:33.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:28:33.168 [DEBUG] [Thread-195698] [transport.py] [_log()] starting thread (client mode): 0xd31503d0
2025-11-24T19:28:33.168 [DEBUG] [Thread-195698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:28:33.179 [DEBUG] [Thread-195698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:28:33.179 [INFO] [Thread-195698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] client lang: <none>
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] server lang: <none>
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] kex follows: False
2025-11-24T19:28:33.182 [DEBUG] [Thread-195698] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:28:33.183 [DEBUG] [Thread-195698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:28:33.183 [DEBUG] [Thread-195698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:28:33.183 [DEBUG] [Thread-195698] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:28:33.183 [DEBUG] [Thread-195698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:28:33.183 [DEBUG] [Thread-195698] [transport.py] [_log()] Compression: none
2025-11-24T19:28:33.183 [DEBUG] [Thread-195698] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:28:33.202 [DEBUG] [Thread-195698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:28:33.203 [DEBUG] [Thread-195698] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:28:33.204 [DEBUG] [Thread-195698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:28:33.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:28:33.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:28:33.245 [DEBUG] [Thread-195698] [transport.py] [_log()] userauth is OK
2025-11-24T19:28:33.246 [DEBUG] [Thread-195698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:28:33.246 [DEBUG] [Thread-195698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:28:33.246 [DEBUG] [Thread-195698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:28:33.246 [DEBUG] [Thread-195698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:28:33.273 [INFO] [Thread-195698] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:28:33.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:28:33.910 [DEBUG] [Thread-195698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:28:33.910 [DEBUG] [Thread-195698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:28:33.919 [DEBUG] [Thread-195698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:28:33.951 [DEBUG] [Thread-195698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:28:33.951 [DEBUG] [Thread-195698] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:28:33.953 [DEBUG] [Thread-195698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:28:33.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:28:33.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:28:33.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:28:33.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:28:33.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:28:33.975 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:28:33.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:28:33.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:28:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:28:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.727828 -999.00  +18.40  20.04     31   +1.00 1 1 1 1 1   855    0 16.15 -59.84 ----- 22.4 20.0 168.3 28.4 19.2 -26.5 19.2 -26.1 19.1 -25.0 19.3 -25.9
2025-11-24T19:28:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:28:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:28:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.727828
2025-11-24T19:28:33.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:28:33.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:28:33.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:28:33.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:28:33.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:28:33.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:28:09', tmtdew=20.3, humidity=25.42, cloud=0.0, wind=27.21, temperature=18.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:28:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:28:33.978 [DEBUG] [Thread-195698] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:28:34.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:28:34.063 [DEBUG] [Thread-195701] [transport.py] [_log()] starting thread (client mode): 0xd0785630
2025-11-24T19:28:34.063 [DEBUG] [Thread-195701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:28:34.077 [DEBUG] [Thread-195701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:28:34.077 [INFO] [Thread-195701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] client lang: <none>
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] server lang: <none>
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] kex follows: False
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] Compression: none
2025-11-24T19:28:34.085 [DEBUG] [Thread-195701] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:28:34.142 [DEBUG] [Thread-195701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:28:34.142 [DEBUG] [Thread-195701] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:28:34.142 [DEBUG] [Thread-195701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:28:34.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:28:34.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:28:34.200 [DEBUG] [Thread-195701] [transport.py] [_log()] userauth is OK
2025-11-24T19:28:34.200 [DEBUG] [Thread-195701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:28:34.200 [DEBUG] [Thread-195701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:28:34.200 [DEBUG] [Thread-195701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:28:34.200 [DEBUG] [Thread-195701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:28:34.217 [INFO] [Thread-195701] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:28:34.217 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:28:34.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:28:35.022 [DEBUG] [Thread-195701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:28:35.023 [DEBUG] [Thread-195701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:28:35.071 [DEBUG] [Thread-195701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:28:35.071 [DEBUG] [Thread-195701] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:28:35.080 [DEBUG] [Thread-195701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:28:35.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:28:35.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-11-24T19:28:35.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-11-24T19:28:35.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:28:35.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:28:35.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:28:35.115 [DEBUG] [Thread-195701] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:28:41.396 [DEBUG] [Thread-195703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:28:56.510 [DEBUG] [Thread-195704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:29:05.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:29:05.130 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:29:05.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:29:06.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 28, 41), 20.25, 25.44, 0.0, 26.93, 18.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:29:06.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:28:41
2025-11-24T19:29:06.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:29:06.364 [DEBUG] [Thread-195705] [transport.py] [_log()] starting thread (client mode): 0xd07398d0
2025-11-24T19:29:06.364 [DEBUG] [Thread-195705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:29:06.371 [DEBUG] [Thread-195705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:29:06.371 [INFO] [Thread-195705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:29:06.375 [DEBUG] [Thread-195705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:29:06.375 [DEBUG] [Thread-195705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:29:06.375 [DEBUG] [Thread-195705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:29:06.375 [DEBUG] [Thread-195705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:29:06.375 [DEBUG] [Thread-195705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:29:06.375 [DEBUG] [Thread-195705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:29:06.375 [DEBUG] [Thread-195705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:29:06.375 [DEBUG] [Thread-195705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:29:06.376 [DEBUG] [Thread-195705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:29:06.376 [DEBUG] [Thread-195705] [transport.py] [_log()] client lang: <none>
2025-11-24T19:29:06.376 [DEBUG] [Thread-195705] [transport.py] [_log()] server lang: <none>
2025-11-24T19:29:06.376 [DEBUG] [Thread-195705] [transport.py] [_log()] kex follows: False
2025-11-24T19:29:06.376 [DEBUG] [Thread-195705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:29:06.376 [DEBUG] [Thread-195705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:29:06.376 [DEBUG] [Thread-195705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:29:06.376 [DEBUG] [Thread-195705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:29:06.377 [DEBUG] [Thread-195705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:29:06.377 [DEBUG] [Thread-195705] [transport.py] [_log()] Compression: none
2025-11-24T19:29:06.377 [DEBUG] [Thread-195705] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:29:06.410 [DEBUG] [Thread-195705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:29:06.416 [DEBUG] [Thread-195705] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:29:06.418 [DEBUG] [Thread-195705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:29:06.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:29:06.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:29:06.423 [DEBUG] [Thread-195705] [transport.py] [_log()] userauth is OK
2025-11-24T19:29:06.423 [DEBUG] [Thread-195705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:29:06.423 [DEBUG] [Thread-195705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:29:06.424 [DEBUG] [Thread-195705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:29:06.424 [DEBUG] [Thread-195705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:29:06.449 [INFO] [Thread-195705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:29:06.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:29:07.107 [DEBUG] [Thread-195705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:29:07.108 [DEBUG] [Thread-195705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:29:07.108 [DEBUG] [Thread-195705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:29:07.148 [DEBUG] [Thread-195705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:29:07.149 [DEBUG] [Thread-195705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:29:07.152 [DEBUG] [Thread-195705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:29:07.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:29:07.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:29:07.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:29:07.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:29:07.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:29:07.178 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:29:07.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:29:07.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:29:07.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:29:07.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.728175 -999.00  +18.40  22.44     31   +1.00 1 1 1 1 1   852    0 16.14 -66.09 ----- 22.0 22.4 176.8 28.2 19.2 -26.5 19.2 -25.9 19.1 -24.9 19.3 -25.8
2025-11-24T19:29:07.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:29:07.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:29:07.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.728175
2025-11-24T19:29:07.185 [DEBUG] [Thread-195705] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:29:07.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:29:07.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:29:07.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:29:07.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:29:07.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:29:07.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:28:41', tmtdew=20.25, humidity=25.44, cloud=0.0, wind=26.93, temperature=18.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:28:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:29:07.277 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:29:07.288 [DEBUG] [Thread-195708] [transport.py] [_log()] starting thread (client mode): 0xd0786590
2025-11-24T19:29:07.288 [DEBUG] [Thread-195708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:29:07.303 [DEBUG] [Thread-195708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:29:07.303 [INFO] [Thread-195708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:29:07.310 [DEBUG] [Thread-195708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] client lang: <none>
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] server lang: <none>
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] kex follows: False
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:29:07.311 [DEBUG] [Thread-195708] [transport.py] [_log()] Compression: none
2025-11-24T19:29:07.312 [DEBUG] [Thread-195708] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:29:07.368 [DEBUG] [Thread-195708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:29:07.368 [DEBUG] [Thread-195708] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:29:07.369 [DEBUG] [Thread-195708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:29:07.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:29:07.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:29:07.424 [DEBUG] [Thread-195708] [transport.py] [_log()] userauth is OK
2025-11-24T19:29:07.424 [DEBUG] [Thread-195708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:29:07.424 [DEBUG] [Thread-195708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:29:07.424 [DEBUG] [Thread-195708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:29:07.424 [DEBUG] [Thread-195708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:29:07.437 [INFO] [Thread-195708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:29:07.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:29:07.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:29:08.269 [DEBUG] [Thread-195708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:29:08.269 [DEBUG] [Thread-195708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:29:08.317 [DEBUG] [Thread-195708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:29:08.317 [DEBUG] [Thread-195708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:29:08.325 [DEBUG] [Thread-195708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:29:08.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:29:08.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-11-24T19:29:08.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-11-24T19:29:08.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:29:08.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:29:08.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:29:08.361 [DEBUG] [Thread-195708] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:29:11.575 [DEBUG] [Thread-195710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:29:24.592 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:29:24.594 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:29:26.678 [DEBUG] [Thread-195711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:29:30.355 [DEBUG] [Thread-195712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:29:38.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:29:38.392 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:29:38.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-11-24T19:29:39.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 29, 14), 20.23, 25.47, 0.0, 29.01, 18.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:29:39.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:29:14
2025-11-24T19:29:39.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:29:39.417 [DEBUG] [Thread-195713] [transport.py] [_log()] starting thread (client mode): 0xd07036d0
2025-11-24T19:29:39.417 [DEBUG] [Thread-195713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:29:39.437 [DEBUG] [Thread-195713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:29:39.437 [INFO] [Thread-195713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:29:39.441 [DEBUG] [Thread-195713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:29:39.441 [DEBUG] [Thread-195713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:29:39.441 [DEBUG] [Thread-195713] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:29:39.441 [DEBUG] [Thread-195713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:29:39.441 [DEBUG] [Thread-195713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:29:39.441 [DEBUG] [Thread-195713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:29:39.441 [DEBUG] [Thread-195713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:29:39.441 [DEBUG] [Thread-195713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] client lang: <none>
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] server lang: <none>
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] kex follows: False
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] Compression: none
2025-11-24T19:29:39.442 [DEBUG] [Thread-195713] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:29:39.456 [DEBUG] [Thread-195713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:29:39.458 [DEBUG] [Thread-195713] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:29:39.458 [DEBUG] [Thread-195713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:29:39.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:29:39.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:29:39.461 [DEBUG] [Thread-195713] [transport.py] [_log()] userauth is OK
2025-11-24T19:29:39.462 [DEBUG] [Thread-195713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:29:39.462 [DEBUG] [Thread-195713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:29:39.462 [DEBUG] [Thread-195713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:29:39.462 [DEBUG] [Thread-195713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:29:39.489 [INFO] [Thread-195713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:29:39.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:29:40.069 [DEBUG] [Thread-195713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:29:40.069 [DEBUG] [Thread-195713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:29:40.078 [DEBUG] [Thread-195713] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:29:40.110 [DEBUG] [Thread-195713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:29:40.110 [DEBUG] [Thread-195713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:29:40.113 [DEBUG] [Thread-195713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:29:40.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:29:40.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:29:40.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:29:40.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:29:40.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:29:40.134 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:29:40.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:29:40.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:29:40.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:29:40.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.728870 -999.00  +18.40  15.00     31   +1.00 1 1 1 1 1   845    0 15.68 -66.04 ----- 19.0 15.0 169.2 23.6 19.1 -26.4 19.1 -26.1 19.0 -24.9 19.2 -25.8
2025-11-24T19:29:40.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:29:40.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:29:40.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.728870
2025-11-24T19:29:40.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:29:40.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:29:40.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:29:40.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:29:40.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:29:40.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:29:14', tmtdew=20.23, humidity=25.47, cloud=0.0, wind=29.01, temperature=18.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:29:34.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:29:40.142 [DEBUG] [Thread-195713] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:29:40.214 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:29:40.227 [DEBUG] [Thread-195716] [transport.py] [_log()] starting thread (client mode): 0xd0703910
2025-11-24T19:29:40.227 [DEBUG] [Thread-195716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:29:40.245 [DEBUG] [Thread-195716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:29:40.245 [INFO] [Thread-195716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] client lang: <none>
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] server lang: <none>
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] kex follows: False
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] Compression: none
2025-11-24T19:29:40.253 [DEBUG] [Thread-195716] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:29:40.312 [DEBUG] [Thread-195716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:29:40.312 [DEBUG] [Thread-195716] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:29:40.313 [DEBUG] [Thread-195716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:29:40.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:29:40.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:29:40.368 [DEBUG] [Thread-195716] [transport.py] [_log()] userauth is OK
2025-11-24T19:29:40.368 [DEBUG] [Thread-195716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:29:40.368 [DEBUG] [Thread-195716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:29:40.369 [DEBUG] [Thread-195716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:29:40.369 [DEBUG] [Thread-195716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:29:40.387 [INFO] [Thread-195716] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:29:40.388 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:29:40.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:29:41.255 [DEBUG] [Thread-195716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:29:41.256 [DEBUG] [Thread-195716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:29:41.304 [DEBUG] [Thread-195716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:29:41.304 [DEBUG] [Thread-195716] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:29:41.313 [DEBUG] [Thread-195716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:29:41.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:29:41.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-11-24T19:29:41.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-11-24T19:29:41.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:29:41.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:29:41.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:29:41.358 [DEBUG] [Thread-195716] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:29:41.715 [DEBUG] [Thread-195718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:29:56.754 [DEBUG] [Thread-195719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:30:11.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:30:11.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:30:11.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-11-24T19:30:11.827 [DEBUG] [Thread-195720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:30:12.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 29, 47), 20.18, 25.45, 0.0, 26.04, 18.39, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:30:12.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:29:47
2025-11-24T19:30:12.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:30:12.607 [DEBUG] [Thread-195721] [transport.py] [_log()] starting thread (client mode): 0xd07001f0
2025-11-24T19:30:12.607 [DEBUG] [Thread-195721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:30:12.621 [DEBUG] [Thread-195721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:30:12.621 [INFO] [Thread-195721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:30:12.626 [DEBUG] [Thread-195721] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] client lang: <none>
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] server lang: <none>
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] kex follows: False
2025-11-24T19:30:12.627 [DEBUG] [Thread-195721] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:30:12.628 [DEBUG] [Thread-195721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:30:12.628 [DEBUG] [Thread-195721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:30:12.628 [DEBUG] [Thread-195721] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:30:12.628 [DEBUG] [Thread-195721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:30:12.628 [DEBUG] [Thread-195721] [transport.py] [_log()] Compression: none
2025-11-24T19:30:12.628 [DEBUG] [Thread-195721] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:30:12.663 [DEBUG] [Thread-195721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:30:12.666 [DEBUG] [Thread-195721] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:30:12.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:30:12.668 [DEBUG] [Thread-195721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:30:12.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:30:12.670 [DEBUG] [Thread-195721] [transport.py] [_log()] userauth is OK
2025-11-24T19:30:12.670 [DEBUG] [Thread-195721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:30:12.671 [DEBUG] [Thread-195721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:30:12.671 [DEBUG] [Thread-195721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:30:12.671 [DEBUG] [Thread-195721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:30:12.688 [INFO] [Thread-195721] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:30:12.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:30:13.271 [DEBUG] [Thread-195721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:30:13.271 [DEBUG] [Thread-195721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:30:13.274 [DEBUG] [Thread-195721] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:30:13.311 [DEBUG] [Thread-195721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:30:13.312 [DEBUG] [Thread-195721] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:30:13.314 [DEBUG] [Thread-195721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:30:13.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:30:13.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:30:13.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:30:13.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:30:13.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:30:13.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:30:13.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:30:13.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:30:13.338 [DEBUG] [Thread-195721] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:30:13.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:30:13.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.729217 -999.00  +18.30  21.46     31   +1.00 1 1 1 1 1   841    0 16.07 -64.78 ----- 23.0 21.5 176.4 29.7 19.1 -26.4 19.1 -25.8 18.9 -24.9 19.2 -25.7
2025-11-24T19:30:13.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:30:13.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:30:13.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.729217
2025-11-24T19:30:13.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:30:13.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:30:13.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:30:13.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:30:13.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:30:13.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:29:47', tmtdew=20.18, humidity=25.45, cloud=0.0, wind=26.04, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:30:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:30:13.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:30:13.456 [DEBUG] [Thread-195724] [transport.py] [_log()] starting thread (client mode): 0xd0702260
2025-11-24T19:30:13.456 [DEBUG] [Thread-195724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:30:13.471 [DEBUG] [Thread-195724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:30:13.471 [INFO] [Thread-195724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:30:13.478 [DEBUG] [Thread-195724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:30:13.478 [DEBUG] [Thread-195724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:30:13.478 [DEBUG] [Thread-195724] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:30:13.478 [DEBUG] [Thread-195724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:30:13.478 [DEBUG] [Thread-195724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:30:13.478 [DEBUG] [Thread-195724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] client lang: <none>
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] server lang: <none>
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] kex follows: False
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] Compression: none
2025-11-24T19:30:13.479 [DEBUG] [Thread-195724] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:30:13.540 [DEBUG] [Thread-195724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:30:13.540 [DEBUG] [Thread-195724] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:30:13.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:30:13.541 [DEBUG] [Thread-195724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:30:13.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:30:13.596 [DEBUG] [Thread-195724] [transport.py] [_log()] userauth is OK
2025-11-24T19:30:13.596 [DEBUG] [Thread-195724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:30:13.596 [DEBUG] [Thread-195724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:30:13.596 [DEBUG] [Thread-195724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:30:13.596 [DEBUG] [Thread-195724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:30:13.615 [INFO] [Thread-195724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:30: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-11-24T19:30:13.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:30:14.449 [DEBUG] [Thread-195724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:30:14.449 [DEBUG] [Thread-195724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:30:14.496 [DEBUG] [Thread-195724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:30:14.497 [DEBUG] [Thread-195724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:30:14.505 [DEBUG] [Thread-195724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:30:14.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:30:14.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:30:14.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:30:14.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:30:14.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:30:14.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:30:14.558 [DEBUG] [Thread-195724] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:30:26.895 [DEBUG] [Thread-195726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:30:30.524 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:30:30.526 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:30:30.714 [DEBUG] [Thread-195727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:30:42.006 [DEBUG] [Thread-195728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:30:44.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:30:44.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:30:44.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:30:45.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 30, 19), 20.15, 25.52, 0.0, 25.34, 18.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:30:45.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:30:19
2025-11-24T19:30:45.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:30:45.777 [DEBUG] [Thread-195729] [transport.py] [_log()] starting thread (client mode): 0xc9b838e0
2025-11-24T19:30:45.778 [DEBUG] [Thread-195729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:30:45.790 [DEBUG] [Thread-195729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:30:45.790 [INFO] [Thread-195729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] client lang: <none>
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] server lang: <none>
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] kex follows: False
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:30:45.794 [DEBUG] [Thread-195729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:30:45.795 [DEBUG] [Thread-195729] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:30:45.795 [DEBUG] [Thread-195729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:30:45.795 [DEBUG] [Thread-195729] [transport.py] [_log()] Compression: none
2025-11-24T19:30:45.795 [DEBUG] [Thread-195729] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:30:45.815 [DEBUG] [Thread-195729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:30:45.817 [DEBUG] [Thread-195729] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:30:45.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:30:45.819 [DEBUG] [Thread-195729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:30:45.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:30:45.821 [DEBUG] [Thread-195729] [transport.py] [_log()] userauth is OK
2025-11-24T19:30:45.821 [DEBUG] [Thread-195729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:30:45.821 [DEBUG] [Thread-195729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:30:45.821 [DEBUG] [Thread-195729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:30:45.821 [DEBUG] [Thread-195729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:30:45.831 [INFO] [Thread-195729] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:30:45.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:30:46.429 [DEBUG] [Thread-195729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:30:46.429 [DEBUG] [Thread-195729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:30:46.430 [DEBUG] [Thread-195729] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:30:46.470 [DEBUG] [Thread-195729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:30:46.470 [DEBUG] [Thread-195729] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:30:46.473 [DEBUG] [Thread-195729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:30:46.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:30:46.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:30:46.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:30:46.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:30:46.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:30:46.491 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:30:46.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:30:46.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:30:46.492 [DEBUG] [Thread-195729] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:30:46.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:30:46.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.729564 -999.00  +18.30  20.16     31   +1.10 1 1 1 1 1   837    0 16.13 -63.01 ----- 23.6 20.2 166.8 25.5 19.1 -26.4 19.0 -25.9 18.9 -24.9 19.1 -25.7
2025-11-24T19:30:46.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:30:46.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:30:46.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.729564
2025-11-24T19:30:46.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:30:46.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:30:46.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:30:46.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:30:46.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:30:46.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:30:19', tmtdew=20.15, humidity=25.52, cloud=0.0, wind=25.34, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:30:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:30:46.592 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:30:46.604 [DEBUG] [Thread-195732] [transport.py] [_log()] starting thread (client mode): 0xc9b82860
2025-11-24T19:30:46.604 [DEBUG] [Thread-195732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:30:46.619 [DEBUG] [Thread-195732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:30:46.619 [INFO] [Thread-195732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] client lang: <none>
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] server lang: <none>
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] kex follows: False
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] Compression: none
2025-11-24T19:30:46.626 [DEBUG] [Thread-195732] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:30:46.687 [DEBUG] [Thread-195732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:30:46.687 [DEBUG] [Thread-195732] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:30:46.687 [DEBUG] [Thread-195732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:30:46.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:30:46.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:30:46.744 [DEBUG] [Thread-195732] [transport.py] [_log()] userauth is OK
2025-11-24T19:30:46.744 [DEBUG] [Thread-195732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:30:46.744 [DEBUG] [Thread-195732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:30:46.744 [DEBUG] [Thread-195732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:30:46.744 [DEBUG] [Thread-195732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:30:46.757 [INFO] [Thread-195732] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:30:46.757 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:30:46.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:30:47.641 [DEBUG] [Thread-195732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:30:47.641 [DEBUG] [Thread-195732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:30:47.689 [DEBUG] [Thread-195732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:30:47.689 [DEBUG] [Thread-195732] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:30:47.697 [DEBUG] [Thread-195732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:30:47.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:30:47.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-11-24T19:30:47.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-11-24T19:30:47.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:30:47.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:30:47.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:30:47.731 [DEBUG] [Thread-195732] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:30:57.044 [DEBUG] [Thread-195734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:31:12.132 [DEBUG] [Thread-195735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:31:17.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:31:17.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:31:17.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-11-24T19:31:18.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 30, 52), 20.21, 25.5, 0.0, 29.15, 18.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:31:18.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:30:52
2025-11-24T19:31:19.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:31:19.249 [DEBUG] [Thread-195736] [transport.py] [_log()] starting thread (client mode): 0xd07879a0
2025-11-24T19:31:19.249 [DEBUG] [Thread-195736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:31:19.263 [DEBUG] [Thread-195736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:31:19.263 [INFO] [Thread-195736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:31:19.266 [DEBUG] [Thread-195736] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] client lang: <none>
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] server lang: <none>
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] kex follows: False
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] Compression: none
2025-11-24T19:31:19.267 [DEBUG] [Thread-195736] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:31:19.281 [DEBUG] [Thread-195736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:31:19.281 [DEBUG] [Thread-195736] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:31:19.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:31:19.283 [DEBUG] [Thread-195736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:31:19.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:31:19.284 [DEBUG] [Thread-195736] [transport.py] [_log()] userauth is OK
2025-11-24T19:31:19.285 [DEBUG] [Thread-195736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:31:19.285 [DEBUG] [Thread-195736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:31:19.285 [DEBUG] [Thread-195736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:31:19.285 [DEBUG] [Thread-195736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:31:19.303 [INFO] [Thread-195736] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:31:19.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:31:19.861 [DEBUG] [Thread-195736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:31:19.861 [DEBUG] [Thread-195736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:31:19.861 [DEBUG] [Thread-195736] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:31:19.902 [DEBUG] [Thread-195736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:31:19.902 [DEBUG] [Thread-195736] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:31:19.912 [DEBUG] [Thread-195736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:31:19.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:31:19.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:31:19.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:31:19.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:31:19.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:31:19.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:31:19.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:31:19.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:31:19.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:31:19.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.729911 -999.00  +18.30  18.55     31   +1.00 1 1 1 1 1   832    0 16.15 -59.05 ----- 20.1 18.6 160.2 25.5 19.1 -26.2 19.0 -25.9 18.9 -24.6 19.1 -25.7
2025-11-24T19:31:19.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:31:19.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:31:19.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.729911
2025-11-24T19:31:19.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:31:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:31:19.929 [DEBUG] [Thread-195736] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:31:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:31:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:31:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:31:19.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:30:52', tmtdew=20.21, humidity=25.5, cloud=0.0, wind=29.15, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:31:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:31:20.012 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:31:20.024 [DEBUG] [Thread-195739] [transport.py] [_log()] starting thread (client mode): 0xd31505b0
2025-11-24T19:31:20.024 [DEBUG] [Thread-195739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:31:20.039 [DEBUG] [Thread-195739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:31:20.039 [INFO] [Thread-195739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] client lang: <none>
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] server lang: <none>
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] kex follows: False
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:31:20.047 [DEBUG] [Thread-195739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:31:20.048 [DEBUG] [Thread-195739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:31:20.048 [DEBUG] [Thread-195739] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:31:20.048 [DEBUG] [Thread-195739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:31:20.048 [DEBUG] [Thread-195739] [transport.py] [_log()] Compression: none
2025-11-24T19:31:20.048 [DEBUG] [Thread-195739] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:31:20.104 [DEBUG] [Thread-195739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:31:20.105 [DEBUG] [Thread-195739] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:31:20.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:31:20.106 [DEBUG] [Thread-195739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:31:20.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:31:20.160 [DEBUG] [Thread-195739] [transport.py] [_log()] userauth is OK
2025-11-24T19:31:20.161 [DEBUG] [Thread-195739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:31:20.161 [DEBUG] [Thread-195739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:31:20.161 [DEBUG] [Thread-195739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:31:20.161 [DEBUG] [Thread-195739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:31:20.179 [INFO] [Thread-195739] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:31:20.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:31:20.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:31:20.987 [DEBUG] [Thread-195739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:31:20.987 [DEBUG] [Thread-195739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:31:21.035 [DEBUG] [Thread-195739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:31:21.035 [DEBUG] [Thread-195739] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:31:21.044 [DEBUG] [Thread-195739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:31:21.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:31:21.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-11-24T19:31:21.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-11-24T19:31:21.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:31:21.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:31:21.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:31:21.078 [DEBUG] [Thread-195739] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:31:27.161 [DEBUG] [Thread-195741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:31:30.975 [DEBUG] [Thread-195742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:31:35.659 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:31:35.661 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:31:42.222 [DEBUG] [Thread-195743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:31:51.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:31:51.072 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:31:51.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-11-24T19:31:51.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 31, 24), 20.2, 25.5, 0.0, 27.95, 18.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:31:51.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:31:24
2025-11-24T19:31:52.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:31:52.256 [DEBUG] [Thread-195744] [transport.py] [_log()] starting thread (client mode): 0xd0786710
2025-11-24T19:31:52.256 [DEBUG] [Thread-195744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:31:52.276 [DEBUG] [Thread-195744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:31:52.276 [INFO] [Thread-195744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:31:52.279 [DEBUG] [Thread-195744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] client lang: <none>
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] server lang: <none>
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] kex follows: False
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:31:52.280 [DEBUG] [Thread-195744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:31:52.281 [DEBUG] [Thread-195744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:31:52.281 [DEBUG] [Thread-195744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:31:52.281 [DEBUG] [Thread-195744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:31:52.281 [DEBUG] [Thread-195744] [transport.py] [_log()] Compression: none
2025-11-24T19:31:52.281 [DEBUG] [Thread-195744] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:31:52.304 [DEBUG] [Thread-195744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:31:52.305 [DEBUG] [Thread-195744] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:31:52.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:31:52.308 [DEBUG] [Thread-195744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:31:52.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:31:52.349 [DEBUG] [Thread-195744] [transport.py] [_log()] userauth is OK
2025-11-24T19:31:52.349 [DEBUG] [Thread-195744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:31:52.349 [DEBUG] [Thread-195744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:31:52.349 [DEBUG] [Thread-195744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:31:52.349 [DEBUG] [Thread-195744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:31:52.371 [INFO] [Thread-195744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:31:52.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:31:52.928 [DEBUG] [Thread-195744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:31:52.928 [DEBUG] [Thread-195744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:31:52.928 [DEBUG] [Thread-195744] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:31:52.969 [DEBUG] [Thread-195744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:31:52.969 [DEBUG] [Thread-195744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:31:52.971 [DEBUG] [Thread-195744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:31:52.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:31:52.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:31:52.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:31:52.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:31:52.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:31:52.991 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:31:52.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:31:52.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:31:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:31:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.730259 -999.00  +18.30  20.75     31   +1.10 1 1 1 1 1   827    0 15.98 -63.92 ----- 17.5 20.8 166.8 30.1 19.1 -26.4 19.0 -25.9 18.9 -24.7 19.1 -25.9
2025-11-24T19:31:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:31:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:31:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.730259
2025-11-24T19:31:52.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:31:52.993 [DEBUG] [Thread-195744] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:31:52.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:31:52.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:31:52.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:31:52.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:31:52.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:31:24', tmtdew=20.2, humidity=25.5, cloud=0.0, wind=27.95, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:31:34.378', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:31: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-11-24T19:31:53.081 [DEBUG] [Thread-195747] [transport.py] [_log()] starting thread (client mode): 0xc9b825f0
2025-11-24T19:31:53.081 [DEBUG] [Thread-195747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:31:53.095 [DEBUG] [Thread-195747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:31:53.095 [INFO] [Thread-195747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:31:53.102 [DEBUG] [Thread-195747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:31:53.102 [DEBUG] [Thread-195747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:31:53.102 [DEBUG] [Thread-195747] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:31:53.102 [DEBUG] [Thread-195747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:31:53.102 [DEBUG] [Thread-195747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:31:53.102 [DEBUG] [Thread-195747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] client lang: <none>
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] server lang: <none>
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] kex follows: False
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] Compression: none
2025-11-24T19:31:53.103 [DEBUG] [Thread-195747] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:31:53.158 [DEBUG] [Thread-195747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:31:53.159 [DEBUG] [Thread-195747] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:31:53.159 [DEBUG] [Thread-195747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:31:53.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:31:53.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:31:53.216 [DEBUG] [Thread-195747] [transport.py] [_log()] userauth is OK
2025-11-24T19:31:53.216 [DEBUG] [Thread-195747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:31:53.216 [DEBUG] [Thread-195747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:31:53.216 [DEBUG] [Thread-195747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:31:53.216 [DEBUG] [Thread-195747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:31:53.234 [INFO] [Thread-195747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:31:53.234 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:31:53.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:31:54.053 [DEBUG] [Thread-195747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:31:54.053 [DEBUG] [Thread-195747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:31:54.100 [DEBUG] [Thread-195747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:31:54.100 [DEBUG] [Thread-195747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:31:54.109 [DEBUG] [Thread-195747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:31:54.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:31:54.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:31:54.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:31:54.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:31:54.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:31:54.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:31:54.155 [DEBUG] [Thread-195747] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:31:57.257 [DEBUG] [Thread-195749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:32:12.345 [DEBUG] [Thread-195750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:32:24.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:32:24.190 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:32:24.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-11-24T19:32:24.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 31, 57), 20.13, 25.55, 0.0, 25.04, 18.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:32:24.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:31:57
2025-11-24T19:32:25.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:32:25.323 [DEBUG] [Thread-195751] [transport.py] [_log()] starting thread (client mode): 0xd07018d0
2025-11-24T19:32:25.324 [DEBUG] [Thread-195751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:32:25.326 [DEBUG] [Thread-195751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:32:25.327 [INFO] [Thread-195751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:32:25.331 [DEBUG] [Thread-195751] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:32:25.331 [DEBUG] [Thread-195751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] client lang: <none>
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] server lang: <none>
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] kex follows: False
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:32:25.332 [DEBUG] [Thread-195751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:32:25.333 [DEBUG] [Thread-195751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:32:25.333 [DEBUG] [Thread-195751] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:32:25.333 [DEBUG] [Thread-195751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:32:25.333 [DEBUG] [Thread-195751] [transport.py] [_log()] Compression: none
2025-11-24T19:32:25.333 [DEBUG] [Thread-195751] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:32:25.358 [DEBUG] [Thread-195751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:32:25.363 [DEBUG] [Thread-195751] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:32:25.365 [DEBUG] [Thread-195751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:32:25.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:32:25.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:32:25.370 [DEBUG] [Thread-195751] [transport.py] [_log()] userauth is OK
2025-11-24T19:32:25.370 [DEBUG] [Thread-195751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:32:25.370 [DEBUG] [Thread-195751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:32:25.370 [DEBUG] [Thread-195751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:32:25.370 [DEBUG] [Thread-195751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:32:25.396 [INFO] [Thread-195751] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:32:25.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:32:25.994 [DEBUG] [Thread-195751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:32:25.994 [DEBUG] [Thread-195751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:32:26.003 [DEBUG] [Thread-195751] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:32:26.035 [DEBUG] [Thread-195751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:32:26.035 [DEBUG] [Thread-195751] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:32:26.041 [DEBUG] [Thread-195751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:32:26.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:32:26.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:32:26.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:32:26.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:32:26.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:32:26.062 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:32:26.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:32:26.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:32:26.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:32:26.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.730606 -999.00  +18.30  14.85     31   +1.00 1 1 1 1 1   821    0 15.96 -65.11 ----- 11.4 14.8 163.6 26.3 19.0 -26.4 18.9 -25.9 18.8 -24.7 19.0 -25.8
2025-11-24T19:32:26.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:32:26.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:32:26.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.730606
2025-11-24T19:32:26.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:32:26.079 [DEBUG] [Thread-195751] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:32:26.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:32:26.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:32:26.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:32:26.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:32:26.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:31:57', tmtdew=20.13, humidity=25.55, cloud=0.0, wind=25.04, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:32:04.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:32:26.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:32:26.166 [DEBUG] [Thread-195754] [transport.py] [_log()] starting thread (client mode): 0xd0702f80
2025-11-24T19:32:26.166 [DEBUG] [Thread-195754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:32:26.180 [DEBUG] [Thread-195754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:32:26.180 [INFO] [Thread-195754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] client lang: <none>
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] server lang: <none>
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] kex follows: False
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] Compression: none
2025-11-24T19:32:26.188 [DEBUG] [Thread-195754] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:32:26.248 [DEBUG] [Thread-195754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:32:26.249 [DEBUG] [Thread-195754] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:32:26.249 [DEBUG] [Thread-195754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:32:26.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:32:26.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:32:26.304 [DEBUG] [Thread-195754] [transport.py] [_log()] userauth is OK
2025-11-24T19:32:26.304 [DEBUG] [Thread-195754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:32:26.305 [DEBUG] [Thread-195754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:32:26.305 [DEBUG] [Thread-195754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:32:26.305 [DEBUG] [Thread-195754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:32:26.330 [INFO] [Thread-195754] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:32: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-11-24T19:32:26.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:32:27.190 [DEBUG] [Thread-195754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:32:27.190 [DEBUG] [Thread-195754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:32:27.238 [DEBUG] [Thread-195754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:32:27.238 [DEBUG] [Thread-195754] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:32:27.246 [DEBUG] [Thread-195754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:32:27.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:32:27.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-11-24T19:32:27.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-11-24T19:32:27.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:32:27.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:32:27.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:32:27.289 [DEBUG] [Thread-195754] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:32:27.397 [DEBUG] [Thread-195756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:32:31.185 [DEBUG] [Thread-195757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:32:41.987 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:32:41.988 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:32:42.433 [DEBUG] [Thread-195758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:32:57.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:32:57.321 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:32:57.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-11-24T19:32:57.458 [DEBUG] [Thread-195759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:32:58.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 32, 29), 20.1, 25.6, 0.0, 25.09, 18.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:32:58.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:32:29
2025-11-24T19:32:58.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:32:58.435 [DEBUG] [Thread-195760] [transport.py] [_log()] starting thread (client mode): 0xd31519c0
2025-11-24T19:32:58.436 [DEBUG] [Thread-195760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:32:58.455 [DEBUG] [Thread-195760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:32:58.455 [INFO] [Thread-195760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:32:58.458 [DEBUG] [Thread-195760] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:32:58.458 [DEBUG] [Thread-195760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:32:58.458 [DEBUG] [Thread-195760] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:32:58.458 [DEBUG] [Thread-195760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] client lang: <none>
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] server lang: <none>
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] kex follows: False
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] Compression: none
2025-11-24T19:32:58.459 [DEBUG] [Thread-195760] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:32:58.475 [DEBUG] [Thread-195760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:32:58.475 [DEBUG] [Thread-195760] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:32:58.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:32:58.476 [DEBUG] [Thread-195760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:32:58.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:32:58.517 [DEBUG] [Thread-195760] [transport.py] [_log()] userauth is OK
2025-11-24T19:32:58.517 [DEBUG] [Thread-195760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:32:58.517 [DEBUG] [Thread-195760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:32:58.518 [DEBUG] [Thread-195760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:32:58.518 [DEBUG] [Thread-195760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:32:58.538 [INFO] [Thread-195760] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:32:58.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:32:59.208 [DEBUG] [Thread-195760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:32:59.208 [DEBUG] [Thread-195760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:32:59.208 [DEBUG] [Thread-195760] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:32:59.249 [DEBUG] [Thread-195760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:32:59.249 [DEBUG] [Thread-195760] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:32:59.251 [DEBUG] [Thread-195760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:32:59.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:32:59.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:32:59.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:32:59.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:32:59.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:32:59.269 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:32:59.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:32:59.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:32:59.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:32:59.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.730953 -999.00  +18.30  24.26     31   +1.00 1 1 1 1 1   815    0 16.25 -65.21 ----- 21.3 24.3 174.8 27.2 18.9 -26.3 18.9 -25.9 18.8 -24.7 19.0 -25.8
2025-11-24T19:32:59.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:32:59.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:32:59.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.730953
2025-11-24T19:32:59.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:32:59.278 [DEBUG] [Thread-195760] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:32:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:32:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:32:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:32:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:32:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:32:29', tmtdew=20.1, humidity=25.6, cloud=0.0, wind=25.09, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:32:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:32:59.350 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:32:59.361 [DEBUG] [Thread-195763] [transport.py] [_log()] starting thread (client mode): 0xc9b80730
2025-11-24T19:32:59.361 [DEBUG] [Thread-195763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:32:59.375 [DEBUG] [Thread-195763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:32:59.375 [INFO] [Thread-195763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] client lang: <none>
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] server lang: <none>
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] kex follows: False
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] Compression: none
2025-11-24T19:32:59.383 [DEBUG] [Thread-195763] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:32:59.439 [DEBUG] [Thread-195763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:32:59.439 [DEBUG] [Thread-195763] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:32:59.448 [DEBUG] [Thread-195763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:32:59.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:32:59.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:32:59.495 [DEBUG] [Thread-195763] [transport.py] [_log()] userauth is OK
2025-11-24T19:32:59.496 [DEBUG] [Thread-195763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:32:59.496 [DEBUG] [Thread-195763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:32:59.496 [DEBUG] [Thread-195763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:32:59.496 [DEBUG] [Thread-195763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:32:59.509 [INFO] [Thread-195763] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:32:59.509 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:32:59.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:33:00.325 [DEBUG] [Thread-195763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:33:00.325 [DEBUG] [Thread-195763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:33:00.373 [DEBUG] [Thread-195763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:33:00.373 [DEBUG] [Thread-195763] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:33:00.382 [DEBUG] [Thread-195763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:33:00.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:33:00.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-11-24T19:33: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-11-24T19:33:00.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:33:00.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:33:00.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:33:00.417 [DEBUG] [Thread-195763] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:33:12.500 [DEBUG] [Thread-195765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:33:27.566 [DEBUG] [Thread-195766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:33:30.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:33:30.439 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:33:30.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-11-24T19:33:31.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 33, 2), 20.13, 25.55, 0.0, 27.21, 18.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:33:31.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:33:02
2025-11-24T19:33:31.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:33:31.408 [DEBUG] [Thread-195767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:33:31.513 [DEBUG] [Thread-195768] [transport.py] [_log()] starting thread (client mode): 0xd3152a40
2025-11-24T19:33:31.514 [DEBUG] [Thread-195768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:33:31.534 [DEBUG] [Thread-195768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:33:31.534 [INFO] [Thread-195768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:33:31.535 [DEBUG] [Thread-195768] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:33:31.535 [DEBUG] [Thread-195768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] client lang: <none>
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] server lang: <none>
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] kex follows: False
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] Compression: none
2025-11-24T19:33:31.536 [DEBUG] [Thread-195768] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:33:31.544 [DEBUG] [Thread-195768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:33:31.544 [DEBUG] [Thread-195768] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:33:31.545 [DEBUG] [Thread-195768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:33:31.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:33:31.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:33:31.546 [DEBUG] [Thread-195768] [transport.py] [_log()] userauth is OK
2025-11-24T19:33:31.546 [DEBUG] [Thread-195768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:33:31.546 [DEBUG] [Thread-195768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:33:31.547 [DEBUG] [Thread-195768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:33:31.547 [DEBUG] [Thread-195768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:33:31.564 [INFO] [Thread-195768] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:33:31.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:33:32.172 [DEBUG] [Thread-195768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:33:32.172 [DEBUG] [Thread-195768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:33:32.173 [DEBUG] [Thread-195768] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:33:32.213 [DEBUG] [Thread-195768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:33:32.214 [DEBUG] [Thread-195768] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:33:32.217 [DEBUG] [Thread-195768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:33:32.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:33:32.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:33:32.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:33:32.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:33:32.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:33:32.241 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:33:32.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:33:32.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:33:32.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:33:32.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.731300 -999.00  +18.30  24.61     31   +1.00 1 1 1 1 1   809    0 15.92 -65.45 ----- 30.4 24.6 170.2 28.1 18.9 -26.2 18.9 -25.8 18.7 -24.7 19.0 -25.8
2025-11-24T19:33:32.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:33:32.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:33:32.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.731300
2025-11-24T19:33:32.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:33:32.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:33:32.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:33:32.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:33:32.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:33:32.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:33:02', tmtdew=20.13, humidity=25.55, cloud=0.0, wind=27.21, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:33:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:33:32.245 [DEBUG] [Thread-195768] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:33:32.341 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:33:32.353 [DEBUG] [Thread-195771] [transport.py] [_log()] starting thread (client mode): 0xd3150520
2025-11-24T19:33:32.353 [DEBUG] [Thread-195771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:33:32.367 [DEBUG] [Thread-195771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:33:32.367 [INFO] [Thread-195771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:33:32.387 [DEBUG] [Thread-195771] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:33:32.387 [DEBUG] [Thread-195771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:33:32.387 [DEBUG] [Thread-195771] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:33:32.387 [DEBUG] [Thread-195771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:33:32.387 [DEBUG] [Thread-195771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] client lang: <none>
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] server lang: <none>
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] kex follows: False
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:33:32.388 [DEBUG] [Thread-195771] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:33:32.389 [DEBUG] [Thread-195771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:33:32.389 [DEBUG] [Thread-195771] [transport.py] [_log()] Compression: none
2025-11-24T19:33:32.389 [DEBUG] [Thread-195771] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:33:32.436 [DEBUG] [Thread-195771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:33:32.437 [DEBUG] [Thread-195771] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:33:32.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:33:32.438 [DEBUG] [Thread-195771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:33:32.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:33:32.492 [DEBUG] [Thread-195771] [transport.py] [_log()] userauth is OK
2025-11-24T19:33:32.492 [DEBUG] [Thread-195771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:33:32.492 [DEBUG] [Thread-195771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:33:32.492 [DEBUG] [Thread-195771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:33:32.493 [DEBUG] [Thread-195771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:33:32.511 [INFO] [Thread-195771] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:33:32.511 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:33:32.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:33:33.320 [DEBUG] [Thread-195771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:33:33.320 [DEBUG] [Thread-195771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:33:33.368 [DEBUG] [Thread-195771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:33:33.368 [DEBUG] [Thread-195771] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:33:33.376 [DEBUG] [Thread-195771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:33:33.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:33:33.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')
2025-11-24T19:33:33.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') -> 00000000
2025-11-24T19:33:33.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:33:33.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:33:33.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:33:33.416 [DEBUG] [Thread-195771] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:33:42.596 [DEBUG] [Thread-195773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:33:49.182 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:33:49.185 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:33:57.670 [DEBUG] [Thread-195774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:34:03.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:34:03.439 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:34:03.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-11-24T19:34:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 33, 34), 20.13, 25.54, 0.0, 24.98, 18.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:34:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:33:34
2025-11-24T19:34:04.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:34:04.493 [DEBUG] [Thread-195775] [transport.py] [_log()] starting thread (client mode): 0xd3152650
2025-11-24T19:34:04.494 [DEBUG] [Thread-195775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:34:04.507 [DEBUG] [Thread-195775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:34:04.507 [INFO] [Thread-195775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] client lang: <none>
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] server lang: <none>
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] kex follows: False
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] Compression: none
2025-11-24T19:34:04.511 [DEBUG] [Thread-195775] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:34:04.535 [DEBUG] [Thread-195775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:34:04.535 [DEBUG] [Thread-195775] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:34:04.535 [DEBUG] [Thread-195775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:34:04.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:34:04.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:34:04.576 [DEBUG] [Thread-195775] [transport.py] [_log()] userauth is OK
2025-11-24T19:34:04.576 [DEBUG] [Thread-195775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:34:04.576 [DEBUG] [Thread-195775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:34:04.576 [DEBUG] [Thread-195775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:34:04.576 [DEBUG] [Thread-195775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:34:04.603 [INFO] [Thread-195775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:34:04.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:34:05.189 [DEBUG] [Thread-195775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:34:05.189 [DEBUG] [Thread-195775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:34:05.190 [DEBUG] [Thread-195775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:34:05.230 [DEBUG] [Thread-195775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:34:05.230 [DEBUG] [Thread-195775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:34:05.232 [DEBUG] [Thread-195775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:34:05.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:34:05.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:34:05.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:34:05.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:34:05.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:34:05.252 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:34:05.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:34:05.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:34:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:34:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.731647 -999.00  +18.30  25.47     31   +1.00 1 1 1 1 1   802    0 15.98 -63.39 ----- 23.4 25.5 164.4 30.8 18.9 -26.2 18.9 -25.8 18.7 -24.6 19.0 -25.5
2025-11-24T19:34:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:34:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:34:05.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.731647
2025-11-24T19:34:05.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:34:05.256 [DEBUG] [Thread-195775] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:34:05.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:34:05.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:34:05.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:34:05.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:34:05.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:33:34', tmtdew=20.13, humidity=25.54, cloud=0.0, wind=24.98, temperature=18.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:33:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:34:05.333 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:34:05.345 [DEBUG] [Thread-195778] [transport.py] [_log()] starting thread (client mode): 0xd31536a0
2025-11-24T19:34:05.345 [DEBUG] [Thread-195778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:34:05.362 [DEBUG] [Thread-195778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:34:05.362 [INFO] [Thread-195778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:34:05.369 [DEBUG] [Thread-195778] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] client lang: <none>
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] server lang: <none>
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] kex follows: False
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] Compression: none
2025-11-24T19:34:05.370 [DEBUG] [Thread-195778] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:34:05.431 [DEBUG] [Thread-195778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:34:05.431 [DEBUG] [Thread-195778] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:34:05.431 [DEBUG] [Thread-195778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:34:05.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:34:05.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:34:05.488 [DEBUG] [Thread-195778] [transport.py] [_log()] userauth is OK
2025-11-24T19:34:05.488 [DEBUG] [Thread-195778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:34:05.488 [DEBUG] [Thread-195778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:34:05.488 [DEBUG] [Thread-195778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:34:05.488 [DEBUG] [Thread-195778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:34:05.506 [INFO] [Thread-195778] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:34:05.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:34:05.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:34:06.383 [DEBUG] [Thread-195778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:34:06.383 [DEBUG] [Thread-195778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:34:06.431 [DEBUG] [Thread-195778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:34:06.431 [DEBUG] [Thread-195778] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:34:06.439 [DEBUG] [Thread-195778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:34:06.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:34:06.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:34:06.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:34:06.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:34:06.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:34:06.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:34:06.472 [DEBUG] [Thread-195778] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:34:12.695 [DEBUG] [Thread-195780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:34:27.785 [DEBUG] [Thread-195781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:34:31.775 [DEBUG] [Thread-195782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:34:36.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:34:36.495 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:34:36.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-11-24T19:34:37.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 34, 7), 20.11, 25.58, 0.0, 24.95, 18.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:34:37.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:34:07
2025-11-24T19:34:37.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:34:37.624 [DEBUG] [Thread-195783] [transport.py] [_log()] starting thread (client mode): 0xd0739750
2025-11-24T19:34:37.624 [DEBUG] [Thread-195783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:34:37.632 [DEBUG] [Thread-195783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:34:37.633 [INFO] [Thread-195783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] client lang: <none>
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] server lang: <none>
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] kex follows: False
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:34:37.634 [DEBUG] [Thread-195783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:34:37.635 [DEBUG] [Thread-195783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:34:37.635 [DEBUG] [Thread-195783] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:34:37.635 [DEBUG] [Thread-195783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:34:37.635 [DEBUG] [Thread-195783] [transport.py] [_log()] Compression: none
2025-11-24T19:34:37.635 [DEBUG] [Thread-195783] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:34:37.644 [DEBUG] [Thread-195783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:34:37.647 [DEBUG] [Thread-195783] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:34:37.648 [DEBUG] [Thread-195783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:34:37.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:34:37.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:34:37.650 [DEBUG] [Thread-195783] [transport.py] [_log()] userauth is OK
2025-11-24T19:34:37.650 [DEBUG] [Thread-195783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:34:37.650 [DEBUG] [Thread-195783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:34:37.650 [DEBUG] [Thread-195783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:34:37.650 [DEBUG] [Thread-195783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:34:37.666 [INFO] [Thread-195783] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:34:37.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:34:38.249 [DEBUG] [Thread-195783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:34:38.249 [DEBUG] [Thread-195783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:34:38.253 [DEBUG] [Thread-195783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:34:38.290 [DEBUG] [Thread-195783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:34:38.290 [DEBUG] [Thread-195783] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:34:38.294 [DEBUG] [Thread-195783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:34:38.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:34:38.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:34:38.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:34:38.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:34:38.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:34:38.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:34:38.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:34:38.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:34:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:34:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.731995 -999.00  +18.30  17.58     31   +1.00 1 1 1 1 1   794    0 15.85 -58.65 ----- 22.0 17.6 174.4 27.1 18.9 -26.3 18.9 -25.8 18.7 -24.7 18.9 -25.7
2025-11-24T19:34:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:34:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:34:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.731995
2025-11-24T19:34:38.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:34:38.313 [DEBUG] [Thread-195783] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:34:38.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:34:38.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:34:38.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:34:38.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:34:38.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:34:07', tmtdew=20.11, humidity=25.58, cloud=0.0, wind=24.95, temperature=18.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:34:04.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:34:38.390 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:34:38.402 [DEBUG] [Thread-195786] [transport.py] [_log()] starting thread (client mode): 0xd0786cb0
2025-11-24T19:34:38.402 [DEBUG] [Thread-195786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:34:38.417 [DEBUG] [Thread-195786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:34:38.417 [INFO] [Thread-195786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] client lang: <none>
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] server lang: <none>
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] kex follows: False
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:34:38.424 [DEBUG] [Thread-195786] [transport.py] [_log()] Compression: none
2025-11-24T19:34:38.425 [DEBUG] [Thread-195786] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:34:38.483 [DEBUG] [Thread-195786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:34:38.484 [DEBUG] [Thread-195786] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:34:38.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:34:38.484 [DEBUG] [Thread-195786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:34:38.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:34:38.540 [DEBUG] [Thread-195786] [transport.py] [_log()] userauth is OK
2025-11-24T19:34:38.540 [DEBUG] [Thread-195786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:34:38.540 [DEBUG] [Thread-195786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:34:38.540 [DEBUG] [Thread-195786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:34:38.540 [DEBUG] [Thread-195786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:34:38.563 [INFO] [Thread-195786] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:34:38.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:34:38.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:34:39.370 [DEBUG] [Thread-195786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:34:39.370 [DEBUG] [Thread-195786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:34:39.418 [DEBUG] [Thread-195786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:34:39.418 [DEBUG] [Thread-195786] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:34:39.426 [DEBUG] [Thread-195786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:34:39.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:34:39.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-11-24T19:34:39.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:34:39.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:34:39.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:34:39.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:34:39.466 [DEBUG] [Thread-195786] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:34:42.814 [DEBUG] [Thread-195788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:34:54.289 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:34:54.290 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:34:57.851 [DEBUG] [Thread-195789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:35:09.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:35:09.491 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:35:09.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-11-24T19:35:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 34, 39), 20.1, 25.6, 0.0, 29.34, 18.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:35:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:34:39
2025-11-24T19:35:10.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:35:10.696 [DEBUG] [Thread-195790] [transport.py] [_log()] starting thread (client mode): 0xc9b83460
2025-11-24T19:35:10.696 [DEBUG] [Thread-195790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:35:10.715 [DEBUG] [Thread-195790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:35:10.715 [INFO] [Thread-195790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:35:10.717 [DEBUG] [Thread-195790] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:35:10.717 [DEBUG] [Thread-195790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:35:10.717 [DEBUG] [Thread-195790] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:35:10.717 [DEBUG] [Thread-195790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:35:10.717 [DEBUG] [Thread-195790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:35:10.717 [DEBUG] [Thread-195790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:35:10.717 [DEBUG] [Thread-195790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:35:10.717 [DEBUG] [Thread-195790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:35:10.717 [DEBUG] [Thread-195790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:35:10.717 [DEBUG] [Thread-195790] [transport.py] [_log()] client lang: <none>
2025-11-24T19:35:10.718 [DEBUG] [Thread-195790] [transport.py] [_log()] server lang: <none>
2025-11-24T19:35:10.718 [DEBUG] [Thread-195790] [transport.py] [_log()] kex follows: False
2025-11-24T19:35:10.718 [DEBUG] [Thread-195790] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:35:10.718 [DEBUG] [Thread-195790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:35:10.718 [DEBUG] [Thread-195790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:35:10.718 [DEBUG] [Thread-195790] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:35:10.718 [DEBUG] [Thread-195790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:35:10.718 [DEBUG] [Thread-195790] [transport.py] [_log()] Compression: none
2025-11-24T19:35:10.718 [DEBUG] [Thread-195790] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:35:10.731 [DEBUG] [Thread-195790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:35:10.731 [DEBUG] [Thread-195790] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:35:10.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:35:10.732 [DEBUG] [Thread-195790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:35:10.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:35:10.733 [DEBUG] [Thread-195790] [transport.py] [_log()] userauth is OK
2025-11-24T19:35:10.733 [DEBUG] [Thread-195790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:35:10.733 [DEBUG] [Thread-195790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:35:10.733 [DEBUG] [Thread-195790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:35:10.733 [DEBUG] [Thread-195790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:35:10.745 [INFO] [Thread-195790] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:35:10.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:35:12.884 [DEBUG] [Thread-195792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:35:13.252 [DEBUG] [Thread-195790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:35:13.253 [DEBUG] [Thread-195790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:35:13.253 [DEBUG] [Thread-195790] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:35:13.294 [DEBUG] [Thread-195790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:35:13.294 [DEBUG] [Thread-195790] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:35:13.296 [DEBUG] [Thread-195790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:35:13.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:35:13.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:35:13.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:35:13.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:35:13.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:35:13.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:35:13.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:35:13.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:35:13.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:35:13.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.732689 -999.00  +18.30  27.74     31   +1.10 1 1 1 1 1   777    0 15.45 -62.34 ----- 23.8 27.7 174.0 34.6 18.9 -26.2 18.8 -25.8 18.6 -24.6 18.9 -25.6
2025-11-24T19:35:13.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:35:13.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:35:13.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.732689
2025-11-24T19:35:13.370 [DEBUG] [Thread-195790] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:35:13.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:35:13.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:35:13.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:35:13.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:35:13.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:35:13.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:34:39', tmtdew=20.1, humidity=25.6, cloud=0.0, wind=29.34, temperature=18.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:35:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:35:13.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:35:13.468 [DEBUG] [Thread-195794] [transport.py] [_log()] starting thread (client mode): 0xd0739960
2025-11-24T19:35:13.468 [DEBUG] [Thread-195794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:35:13.483 [DEBUG] [Thread-195794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:35:13.483 [INFO] [Thread-195794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] client lang: <none>
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] server lang: <none>
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] kex follows: False
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] Compression: none
2025-11-24T19:35:13.490 [DEBUG] [Thread-195794] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:35:13.546 [DEBUG] [Thread-195794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:35:13.547 [DEBUG] [Thread-195794] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:35:13.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:35:13.547 [DEBUG] [Thread-195794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:35:13.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:35:13.604 [DEBUG] [Thread-195794] [transport.py] [_log()] userauth is OK
2025-11-24T19:35:13.604 [DEBUG] [Thread-195794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:35:13.604 [DEBUG] [Thread-195794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:35:13.604 [DEBUG] [Thread-195794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:35:13.604 [DEBUG] [Thread-195794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:35:13.623 [INFO] [Thread-195794] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:35:13.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:35:13.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:35:14.442 [DEBUG] [Thread-195794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:35:14.442 [DEBUG] [Thread-195794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:35:14.490 [DEBUG] [Thread-195794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:35:14.490 [DEBUG] [Thread-195794] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:35:14.499 [DEBUG] [Thread-195794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:35:14.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:35:14.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:35:14.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:35:14.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:35:14.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:35:14.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:35:14.532 [DEBUG] [Thread-195794] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:35:27.920 [DEBUG] [Thread-195796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:35:32.035 [DEBUG] [Thread-195797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:35:42.970 [DEBUG] [Thread-195798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:35:44.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:35:44.535 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:35:44.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-11-24T19:35:45.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 35, 12), 20.12, 25.55, 0.0, 26.94, 18.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:35:45.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:35:12
2025-11-24T19:35:45.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:35:45.716 [DEBUG] [Thread-195799] [transport.py] [_log()] starting thread (client mode): 0xd07f8df0
2025-11-24T19:35:45.717 [DEBUG] [Thread-195799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:35:45.733 [DEBUG] [Thread-195799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:35:45.733 [INFO] [Thread-195799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] client lang: <none>
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] server lang: <none>
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] kex follows: False
2025-11-24T19:35:45.735 [DEBUG] [Thread-195799] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:35:45.736 [DEBUG] [Thread-195799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:35:45.736 [DEBUG] [Thread-195799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:35:45.736 [DEBUG] [Thread-195799] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:35:45.736 [DEBUG] [Thread-195799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:35:45.736 [DEBUG] [Thread-195799] [transport.py] [_log()] Compression: none
2025-11-24T19:35:45.736 [DEBUG] [Thread-195799] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:35:45.756 [DEBUG] [Thread-195799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:35:45.758 [DEBUG] [Thread-195799] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:35:45.758 [DEBUG] [Thread-195799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:35:45.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:35:45.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:35:45.761 [DEBUG] [Thread-195799] [transport.py] [_log()] userauth is OK
2025-11-24T19:35:45.761 [DEBUG] [Thread-195799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:35:45.761 [DEBUG] [Thread-195799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:35:45.761 [DEBUG] [Thread-195799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:35:45.761 [DEBUG] [Thread-195799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:35:45.777 [INFO] [Thread-195799] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:35:45.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:35:46.355 [DEBUG] [Thread-195799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:35:46.355 [DEBUG] [Thread-195799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:35:46.356 [DEBUG] [Thread-195799] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:35:46.396 [DEBUG] [Thread-195799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:35:46.396 [DEBUG] [Thread-195799] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:35:46.397 [DEBUG] [Thread-195799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:35:46.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:35:46.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:35:46.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:35:46.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:35:46.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:35:46.416 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:35:46.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:35:46.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:35:46.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:35:46.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.733036 -999.00  +18.30  20.99     31   +1.10 1 1 1 1 1   768    0 15.84 -63.09 ----- 20.5 21.0 169.8 26.7 18.8 -26.3 18.8 -25.7 18.6 -24.6 18.8 -25.6
2025-11-24T19:35:46.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:35:46.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:35:46.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.733036
2025-11-24T19:35:46.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:35:46.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:35:46.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:35:46.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:35:46.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:35:46.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:35:12', tmtdew=20.12, humidity=25.55, cloud=0.0, wind=26.94, temperature=18.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:35:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:35:46.425 [DEBUG] [Thread-195799] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:35:46.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:35:46.510 [DEBUG] [Thread-195802] [transport.py] [_log()] starting thread (client mode): 0xd07f86a0
2025-11-24T19:35:46.511 [DEBUG] [Thread-195802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:35:46.526 [DEBUG] [Thread-195802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:35:46.526 [INFO] [Thread-195802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] client lang: <none>
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] server lang: <none>
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] kex follows: False
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:35:46.533 [DEBUG] [Thread-195802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:35:46.534 [DEBUG] [Thread-195802] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:35:46.534 [DEBUG] [Thread-195802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:35:46.534 [DEBUG] [Thread-195802] [transport.py] [_log()] Compression: none
2025-11-24T19:35:46.534 [DEBUG] [Thread-195802] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:35:46.591 [DEBUG] [Thread-195802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:35:46.591 [DEBUG] [Thread-195802] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:35:46.591 [DEBUG] [Thread-195802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:35:46.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:35:46.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:35:46.648 [DEBUG] [Thread-195802] [transport.py] [_log()] userauth is OK
2025-11-24T19:35:46.648 [DEBUG] [Thread-195802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:35:46.648 [DEBUG] [Thread-195802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:35:46.648 [DEBUG] [Thread-195802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:35:46.648 [DEBUG] [Thread-195802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:35:46.662 [INFO] [Thread-195802] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:35:46.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:35:46.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:35:47.493 [DEBUG] [Thread-195802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:35:47.494 [DEBUG] [Thread-195802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:35:47.542 [DEBUG] [Thread-195802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:35:47.542 [DEBUG] [Thread-195802] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:35:47.553 [DEBUG] [Thread-195802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:35:47.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:35:47.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')
2025-11-24T19:35:47.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:35:47.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:35:47.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:35:47.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:35:47.596 [DEBUG] [Thread-195802] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:35:57.998 [DEBUG] [Thread-195804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:36:00.243 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:36:00.244 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:36:13.043 [DEBUG] [Thread-195805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:36:17.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:36:17.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:36:17.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-11-24T19:36:18.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 35, 44), 20.07, 25.55, 0.0, 25.46, 18.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:36:18.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:35:44
2025-11-24T19:36:18.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:36:19.026 [DEBUG] [Thread-195806] [transport.py] [_log()] starting thread (client mode): 0xc9b83f70
2025-11-24T19:36:19.027 [DEBUG] [Thread-195806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:36:19.039 [DEBUG] [Thread-195806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:36:19.039 [INFO] [Thread-195806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] client lang: <none>
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] server lang: <none>
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] kex follows: False
2025-11-24T19:36:19.043 [DEBUG] [Thread-195806] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:36:19.044 [DEBUG] [Thread-195806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:36:19.044 [DEBUG] [Thread-195806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:36:19.044 [DEBUG] [Thread-195806] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:36:19.044 [DEBUG] [Thread-195806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:36:19.044 [DEBUG] [Thread-195806] [transport.py] [_log()] Compression: none
2025-11-24T19:36:19.044 [DEBUG] [Thread-195806] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:36:19.066 [DEBUG] [Thread-195806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:36:19.070 [DEBUG] [Thread-195806] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:36:19.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:36:19.074 [DEBUG] [Thread-195806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:36:19.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:36:19.075 [DEBUG] [Thread-195806] [transport.py] [_log()] userauth is OK
2025-11-24T19:36:19.076 [DEBUG] [Thread-195806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:36:19.076 [DEBUG] [Thread-195806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:36:19.076 [DEBUG] [Thread-195806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:36:19.076 [DEBUG] [Thread-195806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:36:19.095 [INFO] [Thread-195806] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:36:19.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:36:19.706 [DEBUG] [Thread-195806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:36:19.706 [DEBUG] [Thread-195806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:36:19.707 [DEBUG] [Thread-195806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:36:19.747 [DEBUG] [Thread-195806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:36:19.747 [DEBUG] [Thread-195806] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:36:19.748 [DEBUG] [Thread-195806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:36:19.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:36:19.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:36:19.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:36:19.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:36:19.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:36:19.769 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:36:19.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:36:19.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:36:19.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:36:19.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.733036 -999.00  +18.30  20.99     31   +1.10 1 1 1 1 1   768    0 15.84 -63.09 ----- 20.5 21.0 169.8 26.7 18.8 -26.3 18.8 -25.7 18.6 -24.6 18.8 -25.6
2025-11-24T19:36:19.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:36:19.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:36:19.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.733036
2025-11-24T19:36:19.776 [DEBUG] [Thread-195806] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:36:19.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:36:19.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:36:19.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:36:19.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:36:19.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:36:19.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:35:44', tmtdew=20.07, humidity=25.55, cloud=0.0, wind=25.46, temperature=18.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:35:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:36:19.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:36:19.871 [DEBUG] [Thread-195809] [transport.py] [_log()] starting thread (client mode): 0xc9b807c0
2025-11-24T19:36:19.871 [DEBUG] [Thread-195809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:36:19.885 [DEBUG] [Thread-195809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:36:19.886 [INFO] [Thread-195809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:36:19.893 [DEBUG] [Thread-195809] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:36:19.893 [DEBUG] [Thread-195809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] client lang: <none>
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] server lang: <none>
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] kex follows: False
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] Compression: none
2025-11-24T19:36:19.894 [DEBUG] [Thread-195809] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:36:19.951 [DEBUG] [Thread-195809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:36:19.951 [DEBUG] [Thread-195809] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:36:19.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:36:19.952 [DEBUG] [Thread-195809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:36:19.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:36:20.008 [DEBUG] [Thread-195809] [transport.py] [_log()] userauth is OK
2025-11-24T19:36:20.008 [DEBUG] [Thread-195809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:36:20.008 [DEBUG] [Thread-195809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:36:20.008 [DEBUG] [Thread-195809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:36:20.008 [DEBUG] [Thread-195809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:36:20.022 [INFO] [Thread-195809] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:36:20.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:36:20.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:36:20.849 [DEBUG] [Thread-195809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:36:20.850 [DEBUG] [Thread-195809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:36:20.897 [DEBUG] [Thread-195809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:36:20.898 [DEBUG] [Thread-195809] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:36:20.907 [DEBUG] [Thread-195809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:36:20.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:36:20.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:36:20.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-11-24T19:36:20.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:36:20.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:36:20.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:36:20.944 [DEBUG] [Thread-195809] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:36:28.081 [DEBUG] [Thread-195811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:36:32.399 [DEBUG] [Thread-195812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:36:43.123 [DEBUG] [Thread-195813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:36:50.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:36:50.967 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:36:50.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-11-24T19:36:51.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 36, 17), 20.03, 25.63, 0.0, 26.18, 18.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:36:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:36:17
2025-11-24T19:36:51.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:36:52.154 [DEBUG] [Thread-195814] [transport.py] [_log()] starting thread (client mode): 0xd07855a0
2025-11-24T19:36:52.155 [DEBUG] [Thread-195814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:36:52.161 [DEBUG] [Thread-195814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:36:52.161 [INFO] [Thread-195814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] client lang: <none>
2025-11-24T19:36:52.164 [DEBUG] [Thread-195814] [transport.py] [_log()] server lang: <none>
2025-11-24T19:36:52.165 [DEBUG] [Thread-195814] [transport.py] [_log()] kex follows: False
2025-11-24T19:36:52.165 [DEBUG] [Thread-195814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:36:52.165 [DEBUG] [Thread-195814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:36:52.165 [DEBUG] [Thread-195814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:36:52.165 [DEBUG] [Thread-195814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:36:52.165 [DEBUG] [Thread-195814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:36:52.165 [DEBUG] [Thread-195814] [transport.py] [_log()] Compression: none
2025-11-24T19:36:52.165 [DEBUG] [Thread-195814] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:36:52.193 [DEBUG] [Thread-195814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:36:52.195 [DEBUG] [Thread-195814] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:36:52.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:36:52.197 [DEBUG] [Thread-195814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:36:52.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:36:52.199 [DEBUG] [Thread-195814] [transport.py] [_log()] userauth is OK
2025-11-24T19:36:52.199 [DEBUG] [Thread-195814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:36:52.199 [DEBUG] [Thread-195814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:36:52.199 [DEBUG] [Thread-195814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:36:52.199 [DEBUG] [Thread-195814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:36:52.209 [INFO] [Thread-195814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:36:52.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:36:52.792 [DEBUG] [Thread-195814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:36:52.792 [DEBUG] [Thread-195814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:36:52.793 [DEBUG] [Thread-195814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:36:52.833 [DEBUG] [Thread-195814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:36:52.833 [DEBUG] [Thread-195814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:36:52.836 [DEBUG] [Thread-195814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:36:52.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:36:52.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:36:52.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:36:52.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:36:52.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:36:52.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:36:52.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:36:52.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:36:52.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:36:52.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.733731 -999.00  +18.20  19.98     31   +1.00 1 1 1 1 1   747    0 15.81 -57.88 ----- 19.5 20.0 167.0 26.4 18.8 -26.1 18.7 -25.6 18.6 -24.5 18.8 -25.6
2025-11-24T19:36:52.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:36:52.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:36:52.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.733731
2025-11-24T19:36:52.865 [DEBUG] [Thread-195814] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:36:52.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:36:52.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:36:52.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:36:52.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:36:52.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:36:52.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:36:17', tmtdew=20.03, humidity=25.63, cloud=0.0, wind=26.18, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:36:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:36:52.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:36:52.962 [DEBUG] [Thread-195817] [transport.py] [_log()] starting thread (client mode): 0xd3136ad0
2025-11-24T19:36:52.962 [DEBUG] [Thread-195817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:36:52.977 [DEBUG] [Thread-195817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:36:52.978 [INFO] [Thread-195817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:36:52.985 [DEBUG] [Thread-195817] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:36:52.985 [DEBUG] [Thread-195817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:36:52.985 [DEBUG] [Thread-195817] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] client lang: <none>
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] server lang: <none>
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] kex follows: False
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] Compression: none
2025-11-24T19:36:52.986 [DEBUG] [Thread-195817] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:36:53.044 [DEBUG] [Thread-195817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:36:53.044 [DEBUG] [Thread-195817] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:36:53.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:36:53.045 [DEBUG] [Thread-195817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:36:53.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:36:53.100 [DEBUG] [Thread-195817] [transport.py] [_log()] userauth is OK
2025-11-24T19:36:53.100 [DEBUG] [Thread-195817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:36:53.100 [DEBUG] [Thread-195817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:36:53.100 [DEBUG] [Thread-195817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:36:53.101 [DEBUG] [Thread-195817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:36:53.119 [INFO] [Thread-195817] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:36:53.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:36:53.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:36:53.944 [DEBUG] [Thread-195817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:36:53.944 [DEBUG] [Thread-195817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:36:53.992 [DEBUG] [Thread-195817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:36:53.992 [DEBUG] [Thread-195817] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:36:54.000 [DEBUG] [Thread-195817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:36:54.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:36:54.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-11-24T19:36:54.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-11-24T19:36:54.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:36:54.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:36:54.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:36:54.042 [DEBUG] [Thread-195817] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:36:58.149 [DEBUG] [Thread-195819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:37:05.037 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:37:05.039 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:37:13.239 [DEBUG] [Thread-195820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:37:24.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:37:24.067 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:37:24.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-11-24T19:37:24.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 36, 50), 20.03, 25.62, 0.0, 25.66, 18.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:37:24.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:36:50
2025-11-24T19:37:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:37:25.247 [DEBUG] [Thread-195821] [transport.py] [_log()] starting thread (client mode): 0xd3137130
2025-11-24T19:37:25.247 [DEBUG] [Thread-195821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:37:25.252 [DEBUG] [Thread-195821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:37:25.252 [INFO] [Thread-195821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] client lang: <none>
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] server lang: <none>
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] kex follows: False
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] Compression: none
2025-11-24T19:37:25.256 [DEBUG] [Thread-195821] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:37:25.273 [DEBUG] [Thread-195821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:37:25.276 [DEBUG] [Thread-195821] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:37:25.277 [DEBUG] [Thread-195821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:37:25.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:37:25.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:37:25.280 [DEBUG] [Thread-195821] [transport.py] [_log()] userauth is OK
2025-11-24T19:37:25.280 [DEBUG] [Thread-195821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:37:25.281 [DEBUG] [Thread-195821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:37:25.281 [DEBUG] [Thread-195821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:37:25.281 [DEBUG] [Thread-195821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:37:25.291 [INFO] [Thread-195821] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:37:25.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:37:25.878 [DEBUG] [Thread-195821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:37:25.878 [DEBUG] [Thread-195821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:37:25.880 [DEBUG] [Thread-195821] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:37:25.919 [DEBUG] [Thread-195821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:37:25.919 [DEBUG] [Thread-195821] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:37:25.922 [DEBUG] [Thread-195821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:37:25.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:37:25.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:37:25.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:37:25.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:37:25.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:37:25.943 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:37:25.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:37:25.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:37:25.945 [DEBUG] [Thread-195821] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:37:25.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:37:25.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.734078 -999.00  +18.20  20.20     31   +1.10 1 1 1 1 1   735    0 16.04 -58.90 ----- 21.6 20.2 164.0 26.9 18.8 -26.1 18.7 -25.6 18.5 -24.5 18.8 -25.5
2025-11-24T19:37:25.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:37:25.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:37:25.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.734078
2025-11-24T19:37:25.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:37:25.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:37:25.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:37:25.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:37:25.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:37:25.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:36:50', tmtdew=20.03, humidity=25.62, cloud=0.0, wind=25.66, temperature=18.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:37:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:37:26.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:37:26.046 [DEBUG] [Thread-195824] [transport.py] [_log()] starting thread (client mode): 0xd073b9d0
2025-11-24T19:37:26.046 [DEBUG] [Thread-195824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:37:26.061 [DEBUG] [Thread-195824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:37:26.061 [INFO] [Thread-195824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:37:26.068 [DEBUG] [Thread-195824] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] client lang: <none>
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] server lang: <none>
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] kex follows: False
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] Compression: none
2025-11-24T19:37:26.069 [DEBUG] [Thread-195824] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:37:26.129 [DEBUG] [Thread-195824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:37:26.129 [DEBUG] [Thread-195824] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:37:26.130 [DEBUG] [Thread-195824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:37:26.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:37:26.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:37:26.184 [DEBUG] [Thread-195824] [transport.py] [_log()] userauth is OK
2025-11-24T19:37:26.184 [DEBUG] [Thread-195824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:37:26.184 [DEBUG] [Thread-195824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:37:26.184 [DEBUG] [Thread-195824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:37:26.184 [DEBUG] [Thread-195824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:37:26.207 [INFO] [Thread-195824] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:37:26.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:37:26.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:37:27.039 [DEBUG] [Thread-195824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:37:27.052 [DEBUG] [Thread-195824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:37:27.089 [DEBUG] [Thread-195824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:37:27.089 [DEBUG] [Thread-195824] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:37:27.099 [DEBUG] [Thread-195824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:37:27.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:37:27.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-11-24T19:37:27.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-11-24T19:37:27.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:37:27.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:37:27.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:37:27.137 [DEBUG] [Thread-195824] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:37:28.273 [DEBUG] [Thread-195826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:37:32.753 [DEBUG] [Thread-195827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:37:43.370 [DEBUG] [Thread-195828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:37:57.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:37:57.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:37:57.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-11-24T19:37:58.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 37, 22), 19.99, 25.7, 0.0, 27.7, 18.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:37:58.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:37:22
2025-11-24T19:37:58.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:37:58.337 [DEBUG] [Thread-195829] [transport.py] [_log()] starting thread (client mode): 0xd07cc8e0
2025-11-24T19:37:58.337 [DEBUG] [Thread-195829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:37:58.350 [DEBUG] [Thread-195829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:37:58.350 [INFO] [Thread-195829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] client lang: <none>
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] server lang: <none>
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] kex follows: False
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:37:58.353 [DEBUG] [Thread-195829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:37:58.354 [DEBUG] [Thread-195829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:37:58.354 [DEBUG] [Thread-195829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:37:58.354 [DEBUG] [Thread-195829] [transport.py] [_log()] Compression: none
2025-11-24T19:37:58.354 [DEBUG] [Thread-195829] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:37:58.367 [DEBUG] [Thread-195829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:37:58.367 [DEBUG] [Thread-195829] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:37:58.368 [DEBUG] [Thread-195829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:37:58.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:37:58.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:37:58.369 [DEBUG] [Thread-195829] [transport.py] [_log()] userauth is OK
2025-11-24T19:37:58.369 [DEBUG] [Thread-195829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:37:58.369 [DEBUG] [Thread-195829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:37:58.369 [DEBUG] [Thread-195829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:37:58.369 [DEBUG] [Thread-195829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:37:58.380 [INFO] [Thread-195829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:37:58.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:37:58.400 [DEBUG] [Thread-195831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:37:58.995 [DEBUG] [Thread-195829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:37:58.995 [DEBUG] [Thread-195829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:37:58.995 [DEBUG] [Thread-195829] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:37:59.036 [DEBUG] [Thread-195829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:37:59.036 [DEBUG] [Thread-195829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:37:59.038 [DEBUG] [Thread-195829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:37:59.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:37:59.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:37:59.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:37:59.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:37:59.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:37:59.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:37:59.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:37:59.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:37:59.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:37:59.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.734425 -999.00  +18.20  18.25     31   +1.00 1 1 1 1 1   723    0 15.98 -58.33 ----- 17.5 18.2 163.6 22.7 18.7 -26.1 18.7 -25.6 18.5 -24.5 18.8 -25.6
2025-11-24T19:37:59.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:37:59.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:37:59.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.734425
2025-11-24T19:37:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:37:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:37:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:37:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:37:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:37:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:37:22', tmtdew=19.99, humidity=25.7, cloud=0.0, wind=27.7, temperature=18.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:37:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:37:59.054 [DEBUG] [Thread-195829] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:37:59.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:37:59.140 [DEBUG] [Thread-195833] [transport.py] [_log()] starting thread (client mode): 0xd07f8220
2025-11-24T19:37:59.140 [DEBUG] [Thread-195833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:37:59.157 [DEBUG] [Thread-195833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:37:59.157 [INFO] [Thread-195833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:37:59.164 [DEBUG] [Thread-195833] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:37:59.164 [DEBUG] [Thread-195833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:37:59.164 [DEBUG] [Thread-195833] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:37:59.164 [DEBUG] [Thread-195833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:37:59.164 [DEBUG] [Thread-195833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:37:59.164 [DEBUG] [Thread-195833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:37:59.164 [DEBUG] [Thread-195833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] client lang: <none>
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] server lang: <none>
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] kex follows: False
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] Compression: none
2025-11-24T19:37:59.165 [DEBUG] [Thread-195833] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:37:59.223 [DEBUG] [Thread-195833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:37:59.224 [DEBUG] [Thread-195833] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:37:59.224 [DEBUG] [Thread-195833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:37:59.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:37:59.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:37:59.280 [DEBUG] [Thread-195833] [transport.py] [_log()] userauth is OK
2025-11-24T19:37:59.280 [DEBUG] [Thread-195833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:37:59.280 [DEBUG] [Thread-195833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:37:59.280 [DEBUG] [Thread-195833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:37:59.280 [DEBUG] [Thread-195833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:37:59.295 [INFO] [Thread-195833] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:37:59.295 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:37:59.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:38:00.129 [DEBUG] [Thread-195833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:38:00.129 [DEBUG] [Thread-195833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:38:00.177 [DEBUG] [Thread-195833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:38:00.177 [DEBUG] [Thread-195833] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:38:00.185 [DEBUG] [Thread-195833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:38:00.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:38:00.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-11-24T19:38:00.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-11-24T19:38:00.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:38:00.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:38:00.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:38:00.216 [DEBUG] [Thread-195833] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:38:10.370 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:38:10.372 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:38:13.438 [DEBUG] [Thread-195835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:38:28.513 [DEBUG] [Thread-195836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:38:30.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:38:30.240 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:38:30.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:38:31.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 37, 55), 19.97, 25.73, 0.0, 27.07, 18.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:38:31.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:37:55
2025-11-24T19:38:31.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:38:31.440 [DEBUG] [Thread-195837] [transport.py] [_log()] starting thread (client mode): 0xd07f8f10
2025-11-24T19:38:31.440 [DEBUG] [Thread-195837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:38:31.455 [DEBUG] [Thread-195837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:38:31.455 [INFO] [Thread-195837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:38:31.460 [DEBUG] [Thread-195837] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:38:31.460 [DEBUG] [Thread-195837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:38:31.460 [DEBUG] [Thread-195837] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:38:31.460 [DEBUG] [Thread-195837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:38:31.460 [DEBUG] [Thread-195837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:38:31.460 [DEBUG] [Thread-195837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:38:31.461 [DEBUG] [Thread-195837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:38:31.461 [DEBUG] [Thread-195837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:38:31.461 [DEBUG] [Thread-195837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:38:31.461 [DEBUG] [Thread-195837] [transport.py] [_log()] client lang: <none>
2025-11-24T19:38:31.461 [DEBUG] [Thread-195837] [transport.py] [_log()] server lang: <none>
2025-11-24T19:38:31.461 [DEBUG] [Thread-195837] [transport.py] [_log()] kex follows: False
2025-11-24T19:38:31.461 [DEBUG] [Thread-195837] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:38:31.461 [DEBUG] [Thread-195837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:38:31.462 [DEBUG] [Thread-195837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:38:31.462 [DEBUG] [Thread-195837] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:38:31.462 [DEBUG] [Thread-195837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:38:31.462 [DEBUG] [Thread-195837] [transport.py] [_log()] Compression: none
2025-11-24T19:38:31.462 [DEBUG] [Thread-195837] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:38:31.493 [DEBUG] [Thread-195837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:38:31.498 [DEBUG] [Thread-195837] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:38:31.499 [DEBUG] [Thread-195837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:38:31.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:38:31.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:38:31.504 [DEBUG] [Thread-195837] [transport.py] [_log()] userauth is OK
2025-11-24T19:38:31.504 [DEBUG] [Thread-195837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:38:31.504 [DEBUG] [Thread-195837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:38:31.504 [DEBUG] [Thread-195837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:38:31.504 [DEBUG] [Thread-195837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:38:31.529 [INFO] [Thread-195837] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:38:31.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:38:32.112 [DEBUG] [Thread-195837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:38:32.112 [DEBUG] [Thread-195837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:38:32.122 [DEBUG] [Thread-195837] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:38:32.153 [DEBUG] [Thread-195837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:38:32.153 [DEBUG] [Thread-195837] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:38:32.155 [DEBUG] [Thread-195837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:38:32.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:38:32.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:38:32.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:38:32.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:38:32.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:38:32.176 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:38:32.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:38:32.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:38:32.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:38:32.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.734772 -999.00  +18.20  16.03     31   +1.00 1 1 1 1 1   710    0 15.41 -59.98 ----- 15.2 16.0 163.9 22.2 18.8 -26.2 18.7 -25.6 18.5 -24.6 18.7 -25.7
2025-11-24T19:38:32.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:38:32.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:38:32.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.734772
2025-11-24T19:38:32.183 [DEBUG] [Thread-195837] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:38:32.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:38:32.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:38:32.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:38:32.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:38:32.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:38:32.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:37:55', tmtdew=19.97, humidity=25.73, cloud=0.0, wind=27.07, temperature=18.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:38:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:38:32.264 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:38:32.279 [DEBUG] [Thread-195840] [transport.py] [_log()] starting thread (client mode): 0xd3135f30
2025-11-24T19:38:32.279 [DEBUG] [Thread-195840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:38:32.297 [DEBUG] [Thread-195840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:38:32.297 [INFO] [Thread-195840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:38:32.311 [DEBUG] [Thread-195840] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:38:32.311 [DEBUG] [Thread-195840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:38:32.311 [DEBUG] [Thread-195840] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] client lang: <none>
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] server lang: <none>
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] kex follows: False
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] Compression: none
2025-11-24T19:38:32.312 [DEBUG] [Thread-195840] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:38:32.367 [DEBUG] [Thread-195840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:38:32.367 [DEBUG] [Thread-195840] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:38:32.368 [DEBUG] [Thread-195840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:38:32.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:38:32.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:38:32.424 [DEBUG] [Thread-195840] [transport.py] [_log()] userauth is OK
2025-11-24T19:38:32.424 [DEBUG] [Thread-195840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:38:32.424 [DEBUG] [Thread-195840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:38:32.424 [DEBUG] [Thread-195840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:38:32.424 [DEBUG] [Thread-195840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:38:32.438 [INFO] [Thread-195840] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:38:32.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:38:32.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:38:33.118 [DEBUG] [Thread-195842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:38:33.250 [DEBUG] [Thread-195840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:38:33.250 [DEBUG] [Thread-195840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:38:33.298 [DEBUG] [Thread-195840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:38:33.298 [DEBUG] [Thread-195840] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:38:33.307 [DEBUG] [Thread-195840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:38:33.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:38:33.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-11-24T19:38:33.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-11-24T19:38:33.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:38:33.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:38:33.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:38:33.340 [DEBUG] [Thread-195840] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:38:43.536 [DEBUG] [Thread-195843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:38:58.580 [DEBUG] [Thread-195844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:39:03.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:39:03.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:39:03.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-11-24T19:39:04.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 38, 27), 19.98, 25.72, 0.0, 26.64, 18.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:39:04.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:38:27
2025-11-24T19:39:04.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:39:04.548 [DEBUG] [Thread-195845] [transport.py] [_log()] starting thread (client mode): 0xd3136500
2025-11-24T19:39:04.548 [DEBUG] [Thread-195845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:39:04.563 [DEBUG] [Thread-195845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:39:04.563 [INFO] [Thread-195845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:39:04.567 [DEBUG] [Thread-195845] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:39:04.568 [DEBUG] [Thread-195845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:39:04.568 [DEBUG] [Thread-195845] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:39:04.568 [DEBUG] [Thread-195845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:39:04.568 [DEBUG] [Thread-195845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:39:04.568 [DEBUG] [Thread-195845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:39:04.568 [DEBUG] [Thread-195845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:39:04.568 [DEBUG] [Thread-195845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:39:04.568 [DEBUG] [Thread-195845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:39:04.568 [DEBUG] [Thread-195845] [transport.py] [_log()] client lang: <none>
2025-11-24T19:39:04.569 [DEBUG] [Thread-195845] [transport.py] [_log()] server lang: <none>
2025-11-24T19:39:04.569 [DEBUG] [Thread-195845] [transport.py] [_log()] kex follows: False
2025-11-24T19:39:04.569 [DEBUG] [Thread-195845] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:39:04.569 [DEBUG] [Thread-195845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:39:04.570 [DEBUG] [Thread-195845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:39:04.570 [DEBUG] [Thread-195845] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:39:04.570 [DEBUG] [Thread-195845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:39:04.570 [DEBUG] [Thread-195845] [transport.py] [_log()] Compression: none
2025-11-24T19:39:04.570 [DEBUG] [Thread-195845] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:39:04.595 [DEBUG] [Thread-195845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:39:04.598 [DEBUG] [Thread-195845] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:39:04.599 [DEBUG] [Thread-195845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:39:04.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:39:04.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:39:04.604 [DEBUG] [Thread-195845] [transport.py] [_log()] userauth is OK
2025-11-24T19:39:04.605 [DEBUG] [Thread-195845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:39:04.605 [DEBUG] [Thread-195845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:39:04.605 [DEBUG] [Thread-195845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:39:04.605 [DEBUG] [Thread-195845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:39:04.630 [INFO] [Thread-195845] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:39:04.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:39:05.237 [DEBUG] [Thread-195845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:39:05.237 [DEBUG] [Thread-195845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:39:05.239 [DEBUG] [Thread-195845] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:39:05.278 [DEBUG] [Thread-195845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:39:05.279 [DEBUG] [Thread-195845] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:39:05.283 [DEBUG] [Thread-195845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:39:05.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:39:05.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:39:05.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:39:05.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:39:05.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:39:05.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:39:05.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:39:05.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:39:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:39:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.735120 -999.00  +18.10  18.47     31   +1.00 1 1 1 1 1   696    0 15.61 -59.66 ----- 17.9 18.5 174.8 23.4 18.7 -26.2 18.6 -25.8 18.4 -24.5 18.7 -25.5
2025-11-24T19:39:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:39:05.309 [DEBUG] [Thread-195845] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:39:05.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:39:05.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.735120
2025-11-24T19:39:05.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:39:05.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:39:05.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:39:05.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:39:05.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:39:05.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:38:27', tmtdew=19.98, humidity=25.72, cloud=0.0, wind=26.64, temperature=18.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:38:34.368', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:39:05.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:39:05.413 [DEBUG] [Thread-195848] [transport.py] [_log()] starting thread (client mode): 0xd31365f0
2025-11-24T19:39:05.413 [DEBUG] [Thread-195848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:39:05.428 [DEBUG] [Thread-195848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:39:05.428 [INFO] [Thread-195848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:39:05.436 [DEBUG] [Thread-195848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:39:05.436 [DEBUG] [Thread-195848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:39:05.436 [DEBUG] [Thread-195848] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:39:05.436 [DEBUG] [Thread-195848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:39:05.437 [DEBUG] [Thread-195848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:39:05.437 [DEBUG] [Thread-195848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:39:05.437 [DEBUG] [Thread-195848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:39:05.437 [DEBUG] [Thread-195848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:39:05.437 [DEBUG] [Thread-195848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:39:05.437 [DEBUG] [Thread-195848] [transport.py] [_log()] client lang: <none>
2025-11-24T19:39:05.437 [DEBUG] [Thread-195848] [transport.py] [_log()] server lang: <none>
2025-11-24T19:39:05.437 [DEBUG] [Thread-195848] [transport.py] [_log()] kex follows: False
2025-11-24T19:39:05.437 [DEBUG] [Thread-195848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:39:05.438 [DEBUG] [Thread-195848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:39:05.438 [DEBUG] [Thread-195848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:39:05.438 [DEBUG] [Thread-195848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:39:05.438 [DEBUG] [Thread-195848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:39:05.438 [DEBUG] [Thread-195848] [transport.py] [_log()] Compression: none
2025-11-24T19:39:05.438 [DEBUG] [Thread-195848] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:39:05.497 [DEBUG] [Thread-195848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:39:05.498 [DEBUG] [Thread-195848] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:39:05.498 [DEBUG] [Thread-195848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:39:05.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:39:05.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:39:05.556 [DEBUG] [Thread-195848] [transport.py] [_log()] userauth is OK
2025-11-24T19:39:05.557 [DEBUG] [Thread-195848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:39:05.557 [DEBUG] [Thread-195848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:39:05.557 [DEBUG] [Thread-195848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:39:05.557 [DEBUG] [Thread-195848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:39:05.576 [INFO] [Thread-195848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:39:05.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:39:05.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:39:06.423 [DEBUG] [Thread-195848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:39:06.424 [DEBUG] [Thread-195848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:39:06.471 [DEBUG] [Thread-195848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:39:06.471 [DEBUG] [Thread-195848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:39:06.481 [DEBUG] [Thread-195848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:39:06.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:39:06.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:39:06.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-11-24T19:39:06.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:39:06.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:39:06.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:39:06.517 [DEBUG] [Thread-195848] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:39:13.638 [DEBUG] [Thread-195850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:39:16.272 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:39:16.273 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:39:28.750 [DEBUG] [Thread-195851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:39:33.435 [DEBUG] [Thread-195852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:39:36.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:39:36.540 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:39:36.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-11-24T19:39:37.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 39, 1), 19.99, 25.7, 0.0, 24.24, 18.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:39:37.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:39:01
2025-11-24T19:39:37.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:39:37.671 [DEBUG] [Thread-195853] [transport.py] [_log()] starting thread (client mode): 0xd3136950
2025-11-24T19:39:37.672 [DEBUG] [Thread-195853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:39:37.672 [DEBUG] [Thread-195853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:39:37.672 [INFO] [Thread-195853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] client lang: <none>
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] server lang: <none>
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] kex follows: False
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] Compression: none
2025-11-24T19:39:37.676 [DEBUG] [Thread-195853] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:39:37.699 [DEBUG] [Thread-195853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:39:37.703 [DEBUG] [Thread-195853] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:39:37.704 [DEBUG] [Thread-195853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:39:37.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:39:37.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:39:37.709 [DEBUG] [Thread-195853] [transport.py] [_log()] userauth is OK
2025-11-24T19:39:37.710 [DEBUG] [Thread-195853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:39:37.710 [DEBUG] [Thread-195853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:39:37.710 [DEBUG] [Thread-195853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:39:37.710 [DEBUG] [Thread-195853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:39:37.737 [INFO] [Thread-195853] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:39:37.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:39:38.375 [DEBUG] [Thread-195853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:39:38.375 [DEBUG] [Thread-195853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:39:38.375 [DEBUG] [Thread-195853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:39:38.416 [DEBUG] [Thread-195853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:39:38.416 [DEBUG] [Thread-195853] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:39:38.418 [DEBUG] [Thread-195853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:39:38.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:39:38.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:39:38.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:39:38.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:39:38.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:39:38.441 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:39:38.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:39:38.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:39:38.444 [DEBUG] [Thread-195853] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:39:38.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:39:38.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.735467 -999.00  +18.10  16.58     31   +1.00 1 1 1 1 1   682    0 15.45 -63.34 ----- 19.6 16.6 165.4 21.4 18.7 -26.2 18.6 -25.6 18.4 -24.4 18.7 -25.5
2025-11-24T19:39:38.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:39:38.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:39:38.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.735467
2025-11-24T19:39:38.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:39:38.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:39:38.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:39:38.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:39:38.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:39:38.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:39:01', tmtdew=19.99, humidity=25.7, cloud=0.0, wind=24.24, temperature=18.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:39:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:39:38.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:39:38.552 [DEBUG] [Thread-195856] [transport.py] [_log()] starting thread (client mode): 0xd0713370
2025-11-24T19:39:38.553 [DEBUG] [Thread-195856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:39:38.567 [DEBUG] [Thread-195856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:39:38.567 [INFO] [Thread-195856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:39:38.574 [DEBUG] [Thread-195856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:39:38.574 [DEBUG] [Thread-195856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:39:38.574 [DEBUG] [Thread-195856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] client lang: <none>
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] server lang: <none>
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] kex follows: False
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] Compression: none
2025-11-24T19:39:38.575 [DEBUG] [Thread-195856] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:39:38.632 [DEBUG] [Thread-195856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:39:38.632 [DEBUG] [Thread-195856] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:39:38.633 [DEBUG] [Thread-195856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:39:38.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:39:38.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:39:38.688 [DEBUG] [Thread-195856] [transport.py] [_log()] userauth is OK
2025-11-24T19:39:38.689 [DEBUG] [Thread-195856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:39:38.689 [DEBUG] [Thread-195856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:39:38.689 [DEBUG] [Thread-195856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:39:38.689 [DEBUG] [Thread-195856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:39:38.708 [INFO] [Thread-195856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:39:38.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:39:38.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:39:39.522 [DEBUG] [Thread-195856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:39:39.523 [DEBUG] [Thread-195856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:39:39.571 [DEBUG] [Thread-195856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:39:39.571 [DEBUG] [Thread-195856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:39:39.580 [DEBUG] [Thread-195856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:39:39.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:39:39.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:39:39.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:39:39.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:39:39.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:39:39.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:39:39.625 [DEBUG] [Thread-195856] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:39:43.780 [DEBUG] [Thread-195858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:39:58.824 [DEBUG] [Thread-195859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:40:09.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:40:09.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:40:09.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:40:10.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 40, 6), 19.91, 25.75, 0.0, 25.43, 18.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:40:10.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:40:06
2025-11-24T19:40:10.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:40:10.793 [DEBUG] [Thread-195860] [transport.py] [_log()] starting thread (client mode): 0xc9b80880
2025-11-24T19:40:10.793 [DEBUG] [Thread-195860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:40:10.803 [DEBUG] [Thread-195860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:40:10.804 [INFO] [Thread-195860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] client lang: <none>
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] server lang: <none>
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] kex follows: False
2025-11-24T19:40:10.808 [DEBUG] [Thread-195860] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:40:10.809 [DEBUG] [Thread-195860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:40:10.809 [DEBUG] [Thread-195860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:40:10.809 [DEBUG] [Thread-195860] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:40:10.809 [DEBUG] [Thread-195860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:40:10.809 [DEBUG] [Thread-195860] [transport.py] [_log()] Compression: none
2025-11-24T19:40:10.810 [DEBUG] [Thread-195860] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:40:10.839 [DEBUG] [Thread-195860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:40:10.843 [DEBUG] [Thread-195860] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:40:10.844 [DEBUG] [Thread-195860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:40:10.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:40:10.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:40:10.847 [DEBUG] [Thread-195860] [transport.py] [_log()] userauth is OK
2025-11-24T19:40:10.847 [DEBUG] [Thread-195860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:40:10.847 [DEBUG] [Thread-195860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:40:10.847 [DEBUG] [Thread-195860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:40:10.847 [DEBUG] [Thread-195860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:40:10.864 [INFO] [Thread-195860] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:40:10.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:40:12.180 [DEBUG] [Thread-195860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:40:12.180 [DEBUG] [Thread-195860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:40:12.180 [DEBUG] [Thread-195860] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:40:12.221 [DEBUG] [Thread-195860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:40:12.221 [DEBUG] [Thread-195860] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:40:12.224 [DEBUG] [Thread-195860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:40:12.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:40:12.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:40:12.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:40:12.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:40:12.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:40:12.247 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:40:12.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:40:12.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:40:12.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:40:12.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.736161 -999.00  +18.10  15.47     31   +1.00 1 1 1 1 1   651    0 15.50 -66.89 ----- 13.3 15.5 159.1 21.3 18.6 -26.1 18.6 -25.7 18.4 -24.3 18.6 -25.5
2025-11-24T19:40:12.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:40:12.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:40:12.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.736161
2025-11-24T19:40:12.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:40:12.265 [DEBUG] [Thread-195860] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:40:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:40:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:40:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:40:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:40:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:40:06', tmtdew=19.91, humidity=25.75, cloud=0.0, wind=25.43, temperature=18.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:40:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:40:12.340 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:40:12.352 [DEBUG] [Thread-195863] [transport.py] [_log()] starting thread (client mode): 0xd07f9ea0
2025-11-24T19:40:12.352 [DEBUG] [Thread-195863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:40:12.367 [DEBUG] [Thread-195863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:40:12.367 [INFO] [Thread-195863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:40:12.374 [DEBUG] [Thread-195863] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:40:12.374 [DEBUG] [Thread-195863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:40:12.374 [DEBUG] [Thread-195863] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:40:12.374 [DEBUG] [Thread-195863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] client lang: <none>
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] server lang: <none>
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] kex follows: False
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] Compression: none
2025-11-24T19:40:12.375 [DEBUG] [Thread-195863] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:40:12.431 [DEBUG] [Thread-195863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:40:12.431 [DEBUG] [Thread-195863] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:40:12.431 [DEBUG] [Thread-195863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:40:12.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:40:12.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:40:12.489 [DEBUG] [Thread-195863] [transport.py] [_log()] userauth is OK
2025-11-24T19:40:12.489 [DEBUG] [Thread-195863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:40:12.489 [DEBUG] [Thread-195863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:40:12.489 [DEBUG] [Thread-195863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:40:12.489 [DEBUG] [Thread-195863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:40:12.503 [INFO] [Thread-195863] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:40:12.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:40:12.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:40:13.340 [DEBUG] [Thread-195863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:40:13.341 [DEBUG] [Thread-195863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:40:13.389 [DEBUG] [Thread-195863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:40:13.389 [DEBUG] [Thread-195863] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:40:13.398 [DEBUG] [Thread-195863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:40:13.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:40:13.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-11-24T19:40:13.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:40:13.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:40:13.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:40:13.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:40:13.444 [DEBUG] [Thread-195863] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:40:13.854 [DEBUG] [Thread-195865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:40:22.640 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:40:22.642 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:40:28.911 [DEBUG] [Thread-195866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:40:33.667 [DEBUG] [Thread-195867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:40:43.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:40:43.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:40:43.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:40:43.938 [DEBUG] [Thread-195868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:40:44.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 40, 39), 19.91, 25.75, 0.0, 26.73, 18.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:40:44.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:40:39
2025-11-24T19:40:44.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:40:44.568 [DEBUG] [Thread-195869] [transport.py] [_log()] starting thread (client mode): 0xd0700700
2025-11-24T19:40:44.568 [DEBUG] [Thread-195869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:40:44.586 [DEBUG] [Thread-195869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:40:44.586 [INFO] [Thread-195869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:40:44.589 [DEBUG] [Thread-195869] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:40:44.589 [DEBUG] [Thread-195869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:40:44.589 [DEBUG] [Thread-195869] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:40:44.589 [DEBUG] [Thread-195869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:40:44.589 [DEBUG] [Thread-195869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:40:44.589 [DEBUG] [Thread-195869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] client lang: <none>
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] server lang: <none>
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] kex follows: False
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] Compression: none
2025-11-24T19:40:44.590 [DEBUG] [Thread-195869] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:40:44.618 [DEBUG] [Thread-195869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:40:44.623 [DEBUG] [Thread-195869] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:40:44.624 [DEBUG] [Thread-195869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:40:44.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:40:44.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:40:44.661 [DEBUG] [Thread-195869] [transport.py] [_log()] userauth is OK
2025-11-24T19:40:44.662 [DEBUG] [Thread-195869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:40:44.662 [DEBUG] [Thread-195869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:40:44.662 [DEBUG] [Thread-195869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:40:44.662 [DEBUG] [Thread-195869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:40:44.700 [INFO] [Thread-195869] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:40:44.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:40:45.296 [DEBUG] [Thread-195869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:40:45.296 [DEBUG] [Thread-195869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:40:45.305 [DEBUG] [Thread-195869] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:40:45.337 [DEBUG] [Thread-195869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:40:45.337 [DEBUG] [Thread-195869] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:40:45.339 [DEBUG] [Thread-195869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:40:45.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:40:45.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:40:45.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:40:45.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:40:45.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:40:45.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:40:45.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:40:45.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:40:45.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:40:45.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.736508 -999.00  +18.00  16.60     31   +1.00 1 1 1 1 1   634    0 15.80 -66.48 ----- 17.4 16.6 165.2 22.9 18.6 -26.1 18.5 -25.7 18.3 -24.5 18.6 -25.5
2025-11-24T19:40:45.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:40:45.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:40:45.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.736508
2025-11-24T19:40:45.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:40:45.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:40:45.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:40:45.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:40:45.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:40:45.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:40:39', tmtdew=19.91, humidity=25.75, cloud=0.0, wind=26.73, temperature=18.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:40:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:40:45.357 [DEBUG] [Thread-195869] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:40:45.430 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:40:45.442 [DEBUG] [Thread-195872] [transport.py] [_log()] starting thread (client mode): 0xd3134460
2025-11-24T19:40:45.442 [DEBUG] [Thread-195872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:40:45.456 [DEBUG] [Thread-195872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:40:45.456 [INFO] [Thread-195872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:40:45.463 [DEBUG] [Thread-195872] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:40:45.463 [DEBUG] [Thread-195872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:40:45.463 [DEBUG] [Thread-195872] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:40:45.463 [DEBUG] [Thread-195872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] client lang: <none>
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] server lang: <none>
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] kex follows: False
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] Compression: none
2025-11-24T19:40:45.464 [DEBUG] [Thread-195872] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:40:45.521 [DEBUG] [Thread-195872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:40:45.522 [DEBUG] [Thread-195872] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:40:45.523 [DEBUG] [Thread-195872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:40:45.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:40:45.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:40:45.576 [DEBUG] [Thread-195872] [transport.py] [_log()] userauth is OK
2025-11-24T19:40:45.577 [DEBUG] [Thread-195872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:40:45.577 [DEBUG] [Thread-195872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:40:45.577 [DEBUG] [Thread-195872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:40:45.577 [DEBUG] [Thread-195872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:40:45.596 [INFO] [Thread-195872] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:40:45.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:40:45.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:40:46.432 [DEBUG] [Thread-195872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:40:46.432 [DEBUG] [Thread-195872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:40:46.479 [DEBUG] [Thread-195872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:40:46.480 [DEBUG] [Thread-195872] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:40:46.489 [DEBUG] [Thread-195872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:40:46.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:40: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')
2025-11-24T19:40:46.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-11-24T19:40:46.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:40:46.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:40:46.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:40:46.535 [DEBUG] [Thread-195872] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:40:58.971 [DEBUG] [Thread-195874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:41:14.080 [DEBUG] [Thread-195875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:41:16.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:41:16.559 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:41:16.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-11-24T19:41:17.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 41, 11), 19.88, 25.78, 0.0, 28.55, 18.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:41:17.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:41:11
2025-11-24T19:41:17.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:41:17.623 [DEBUG] [Thread-195876] [transport.py] [_log()] starting thread (client mode): 0xd3135de0
2025-11-24T19:41:17.624 [DEBUG] [Thread-195876] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:41:17.636 [DEBUG] [Thread-195876] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:41:17.637 [INFO] [Thread-195876] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] client lang: <none>
2025-11-24T19:41:17.641 [DEBUG] [Thread-195876] [transport.py] [_log()] server lang: <none>
2025-11-24T19:41:17.642 [DEBUG] [Thread-195876] [transport.py] [_log()] kex follows: False
2025-11-24T19:41:17.642 [DEBUG] [Thread-195876] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:41:17.642 [DEBUG] [Thread-195876] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:41:17.642 [DEBUG] [Thread-195876] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:41:17.642 [DEBUG] [Thread-195876] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:41:17.642 [DEBUG] [Thread-195876] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:41:17.643 [DEBUG] [Thread-195876] [transport.py] [_log()] Compression: none
2025-11-24T19:41:17.643 [DEBUG] [Thread-195876] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:41:17.664 [DEBUG] [Thread-195876] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:41:17.667 [DEBUG] [Thread-195876] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:41:17.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:41:17.669 [DEBUG] [Thread-195876] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:41:17.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:41:17.673 [DEBUG] [Thread-195876] [transport.py] [_log()] userauth is OK
2025-11-24T19:41:17.673 [DEBUG] [Thread-195876] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:41:17.673 [DEBUG] [Thread-195876] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:41:17.673 [DEBUG] [Thread-195876] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:41:17.673 [DEBUG] [Thread-195876] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:41:17.693 [INFO] [Thread-195876] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:41:17.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:41:18.436 [DEBUG] [Thread-195876] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:41:18.436 [DEBUG] [Thread-195876] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:41:18.437 [DEBUG] [Thread-195876] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:41:18.477 [DEBUG] [Thread-195876] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:41:18.477 [DEBUG] [Thread-195876] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:41:18.486 [DEBUG] [Thread-195876] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:41:18.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:41:18.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:41:18.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:41:18.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:41:18.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:41:18.498 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:41:18.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:41:18.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:41:18.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:41:18.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.736508 -999.00  +18.00  16.60     31   +1.00 1 1 1 1 1   634    0 15.80 -66.48 ----- 17.4 16.6 165.2 22.9 18.6 -26.1 18.5 -25.7 18.3 -24.5 18.6 -25.5
2025-11-24T19:41:18.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:41:18.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:41:18.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.736508
2025-11-24T19:41:18.505 [DEBUG] [Thread-195876] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:41:18.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:41:18.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:41:18.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:41:18.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:41:18.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:41:18.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:41:11', tmtdew=19.88, humidity=25.78, cloud=0.0, wind=28.55, temperature=18.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:40:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:41:18.591 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:41:18.602 [DEBUG] [Thread-195879] [transport.py] [_log()] starting thread (client mode): 0xd07025c0
2025-11-24T19:41:18.602 [DEBUG] [Thread-195879] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:41:18.617 [DEBUG] [Thread-195879] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:41:18.617 [INFO] [Thread-195879] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:41:18.624 [DEBUG] [Thread-195879] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] client lang: <none>
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] server lang: <none>
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] kex follows: False
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] Compression: none
2025-11-24T19:41:18.625 [DEBUG] [Thread-195879] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:41:18.682 [DEBUG] [Thread-195879] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:41:18.683 [DEBUG] [Thread-195879] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:41:18.683 [DEBUG] [Thread-195879] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:41:18.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:41:18.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:41:18.740 [DEBUG] [Thread-195879] [transport.py] [_log()] userauth is OK
2025-11-24T19:41:18.740 [DEBUG] [Thread-195879] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:41:18.740 [DEBUG] [Thread-195879] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:41:18.740 [DEBUG] [Thread-195879] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:41:18.740 [DEBUG] [Thread-195879] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:41:18.754 [INFO] [Thread-195879] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:41:18.754 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:41:18.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:41:19.637 [DEBUG] [Thread-195879] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:41:19.637 [DEBUG] [Thread-195879] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:41:19.685 [DEBUG] [Thread-195879] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:41:19.685 [DEBUG] [Thread-195879] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:41:19.694 [DEBUG] [Thread-195879] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:41:19.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:41: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')
2025-11-24T19:41:19.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-11-24T19:41:19.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:41:19.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:41:19.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:41:19.729 [DEBUG] [Thread-195879] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:41:29.140 [DEBUG] [Thread-195881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:41:30.740 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:41:30.741 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:41:33.985 [DEBUG] [Thread-195882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:41:44.252 [DEBUG] [Thread-195883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:41:49.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:41:49.752 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:41:49.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-11-24T19:41:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 41, 44), 19.83, 25.88, 0.0, 24.72, 18.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:41:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:41:44
2025-11-24T19:41:50.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:41:50.840 [DEBUG] [Thread-195884] [transport.py] [_log()] starting thread (client mode): 0xd07cf820
2025-11-24T19:41:50.840 [DEBUG] [Thread-195884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:41:50.860 [DEBUG] [Thread-195884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:41:50.860 [INFO] [Thread-195884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] client lang: <none>
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] server lang: <none>
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] kex follows: False
2025-11-24T19:41:50.863 [DEBUG] [Thread-195884] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:41:50.864 [DEBUG] [Thread-195884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:41:50.864 [DEBUG] [Thread-195884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:41:50.864 [DEBUG] [Thread-195884] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:41:50.864 [DEBUG] [Thread-195884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:41:50.864 [DEBUG] [Thread-195884] [transport.py] [_log()] Compression: none
2025-11-24T19:41:50.864 [DEBUG] [Thread-195884] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:41:50.882 [DEBUG] [Thread-195884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:41:50.883 [DEBUG] [Thread-195884] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:41:50.883 [DEBUG] [Thread-195884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:41:50.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:41:50.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:41:50.929 [DEBUG] [Thread-195884] [transport.py] [_log()] userauth is OK
2025-11-24T19:41:50.929 [DEBUG] [Thread-195884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:41:50.929 [DEBUG] [Thread-195884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:41:50.929 [DEBUG] [Thread-195884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:41:50.930 [DEBUG] [Thread-195884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:41:50.965 [INFO] [Thread-195884] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:41:50.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:41:51.519 [DEBUG] [Thread-195884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:41:51.519 [DEBUG] [Thread-195884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:41:51.519 [DEBUG] [Thread-195884] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:41:51.560 [DEBUG] [Thread-195884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:41:51.560 [DEBUG] [Thread-195884] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:41:51.563 [DEBUG] [Thread-195884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:41:51.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:41:51.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:41:51.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:41:51.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:41:51.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:41:51.578 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:41:51.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.737203 -999.00  +18.00  20.06     31   +1.00 1 1 1 1 1   599    0 15.63 -60.36 ----- 14.6 20.1 158.6 25.7 18.5 -26.1 18.4 -25.5 18.3 -24.4 18.6 -25.5
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.737203
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:41:51.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:41:44', tmtdew=19.83, humidity=25.88, cloud=0.0, wind=24.72, temperature=18.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:41:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:41:51.579 [DEBUG] [Thread-195884] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:41:51.653 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:41:51.665 [DEBUG] [Thread-195887] [transport.py] [_log()] starting thread (client mode): 0xd0701c00
2025-11-24T19:41:51.665 [DEBUG] [Thread-195887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:41:51.684 [DEBUG] [Thread-195887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:41:51.684 [INFO] [Thread-195887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] client lang: <none>
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] server lang: <none>
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] kex follows: False
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:41:51.692 [DEBUG] [Thread-195887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:41:51.693 [DEBUG] [Thread-195887] [transport.py] [_log()] Compression: none
2025-11-24T19:41:51.693 [DEBUG] [Thread-195887] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:41:51.747 [DEBUG] [Thread-195887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:41:51.747 [DEBUG] [Thread-195887] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:41:51.747 [DEBUG] [Thread-195887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:41:51.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:41:51.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:41:51.805 [DEBUG] [Thread-195887] [transport.py] [_log()] userauth is OK
2025-11-24T19:41:51.805 [DEBUG] [Thread-195887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:41:51.805 [DEBUG] [Thread-195887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:41:51.805 [DEBUG] [Thread-195887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:41:51.805 [DEBUG] [Thread-195887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:41:51.819 [INFO] [Thread-195887] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:41:51.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:41:51.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:41:52.682 [DEBUG] [Thread-195887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:41:52.682 [DEBUG] [Thread-195887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:41:52.730 [DEBUG] [Thread-195887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:41:52.730 [DEBUG] [Thread-195887] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:41:52.738 [DEBUG] [Thread-195887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:41:52.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:41:52.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-11-24T19:41:52.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-11-24T19:41:52.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:41:52.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:41:52.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:41:52.769 [DEBUG] [Thread-195887] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:41:59.287 [DEBUG] [Thread-195889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:42:14.337 [DEBUG] [Thread-195890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:42:22.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:42:22.795 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:42:22.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:42:23.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 42, 17), 19.82, 25.9, 0.0, 24.42, 18.08, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:42:23.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:42:17
2025-11-24T19:42:23.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:42:24.055 [DEBUG] [Thread-195891] [transport.py] [_log()] starting thread (client mode): 0xd0711990
2025-11-24T19:42:24.056 [DEBUG] [Thread-195891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:42:24.059 [DEBUG] [Thread-195891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:42:24.059 [INFO] [Thread-195891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] client lang: <none>
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] server lang: <none>
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] kex follows: False
2025-11-24T19:42:24.063 [DEBUG] [Thread-195891] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:42:24.064 [DEBUG] [Thread-195891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:42:24.064 [DEBUG] [Thread-195891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:42:24.064 [DEBUG] [Thread-195891] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:42:24.064 [DEBUG] [Thread-195891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:42:24.064 [DEBUG] [Thread-195891] [transport.py] [_log()] Compression: none
2025-11-24T19:42:24.064 [DEBUG] [Thread-195891] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:42:24.098 [DEBUG] [Thread-195891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:42:24.102 [DEBUG] [Thread-195891] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:42:24.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:42:24.108 [DEBUG] [Thread-195891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:42:24.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:42:24.111 [DEBUG] [Thread-195891] [transport.py] [_log()] userauth is OK
2025-11-24T19:42:24.111 [DEBUG] [Thread-195891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:42:24.111 [DEBUG] [Thread-195891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:42:24.112 [DEBUG] [Thread-195891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:42:24.112 [DEBUG] [Thread-195891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:42:24.144 [INFO] [Thread-195891] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:42:24.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:42:24.693 [DEBUG] [Thread-195891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:42:24.693 [DEBUG] [Thread-195891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:42:24.693 [DEBUG] [Thread-195891] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:42:24.734 [DEBUG] [Thread-195891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:42:24.734 [DEBUG] [Thread-195891] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:42:24.735 [DEBUG] [Thread-195891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:42:24.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:42:24.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:42:24.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:42:24.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:42:24.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:42:24.751 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:42:24.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:42:24.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:42:24.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:42:24.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.737550 -999.00  +18.00  24.92     32   +1.00 1 1 1 1 1   581    0 15.46 -60.56 ----- 23.8 24.9 154.4 28.2 18.5 -26.1 18.4 -25.5 18.2 -24.4 18.5 -25.4
2025-11-24T19:42:24.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:42:24.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:42:24.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.737550
2025-11-24T19:42:24.758 [DEBUG] [Thread-195891] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:42:24.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:42:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:42:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:42:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:42:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:42:24.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:42:17', tmtdew=19.82, humidity=25.9, cloud=0.0, wind=24.42, temperature=18.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:42:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:42:24.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:42:29.384 [DEBUG] [Thread-195894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:42:34.254 [DEBUG] [Thread-195895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:42:39.233 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:42:39.235 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:42:44.458 [DEBUG] [Thread-195896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:42:59.502 [DEBUG] [Thread-195897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:43:14.530 [DEBUG] [Thread-195898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:43:29.560 [DEBUG] [Thread-195899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:43:34.614 [DEBUG] [Thread-195900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:43:44.607 [DEBUG] [Thread-195901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:43:45.752 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:43:45.754 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:43:59.644 [DEBUG] [Thread-195902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:44:14.684 [DEBUG] [Thread-195903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:44:29.719 [DEBUG] [Thread-195904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:44:34.860 [DEBUG] [Thread-195905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:44:37.832 [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-11-24T19:44:44.744 [DEBUG] [Thread-195906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:44:52.673 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:44:52.677 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:44:59.780 [DEBUG] [Thread-195907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:45:07.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:45:07.869 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:45:07.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:45:08.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 44, 27), 19.63, 26.45, 0.0, 26.52, 17.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:45:08.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:44:27
2025-11-24T19:45:08.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:45:09.099 [DEBUG] [Thread-195908] [transport.py] [_log()] starting thread (client mode): 0xd07f8df0
2025-11-24T19:45:09.099 [DEBUG] [Thread-195908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:45:09.113 [DEBUG] [Thread-195908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:45:09.113 [INFO] [Thread-195908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] client lang: <none>
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] server lang: <none>
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] kex follows: False
2025-11-24T19:45:09.118 [DEBUG] [Thread-195908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:45:09.119 [DEBUG] [Thread-195908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:45:09.119 [DEBUG] [Thread-195908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:45:09.119 [DEBUG] [Thread-195908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:45:09.119 [DEBUG] [Thread-195908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:45:09.119 [DEBUG] [Thread-195908] [transport.py] [_log()] Compression: none
2025-11-24T19:45:09.119 [DEBUG] [Thread-195908] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:45:09.149 [DEBUG] [Thread-195908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:45:09.153 [DEBUG] [Thread-195908] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:45:09.154 [DEBUG] [Thread-195908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:45:09.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:45:09.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:45:09.158 [DEBUG] [Thread-195908] [transport.py] [_log()] userauth is OK
2025-11-24T19:45:09.158 [DEBUG] [Thread-195908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:45:09.158 [DEBUG] [Thread-195908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:45:09.158 [DEBUG] [Thread-195908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:45:09.158 [DEBUG] [Thread-195908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:45:09.176 [INFO] [Thread-195908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:45:09.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:45:10.225 [DEBUG] [Thread-195908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:45:10.225 [DEBUG] [Thread-195908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:45:10.225 [DEBUG] [Thread-195908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:45:10.266 [DEBUG] [Thread-195908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:45:10.266 [DEBUG] [Thread-195908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:45:10.268 [DEBUG] [Thread-195908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:45:10.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:45:10.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:45:10.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:45:10.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:45:10.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:45:10.291 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:45:10.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:45:10.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:45:10.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:45:10.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.739633 -999.00  +17.90  24.49     32   +1.10 1 1 1 1 1   461    0 15.69 -51.64 ----- 24.1 24.5 168.0 36.1 18.4 -26.2 18.3 -25.6 18.1 -24.4 18.4 -25.4
2025-11-24T19:45:10.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:45:10.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:45:10.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.739633
2025-11-24T19:45:10.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:45:10.310 [DEBUG] [Thread-195908] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:45:10.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:45:10.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:45:10.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:45:10.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:45:10.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:44:27', tmtdew=19.63, humidity=26.45, cloud=0.0, wind=26.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-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:45:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:45:10.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:45:10.399 [DEBUG] [Thread-195911] [transport.py] [_log()] starting thread (client mode): 0xd3136ad0
2025-11-24T19:45:10.399 [DEBUG] [Thread-195911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:45:10.414 [DEBUG] [Thread-195911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:45:10.414 [INFO] [Thread-195911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] client lang: <none>
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] server lang: <none>
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] kex follows: False
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] Compression: none
2025-11-24T19:45:10.422 [DEBUG] [Thread-195911] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:45:10.478 [DEBUG] [Thread-195911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:45:10.478 [DEBUG] [Thread-195911] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:45:10.478 [DEBUG] [Thread-195911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:45:10.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:45:10.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:45:10.536 [DEBUG] [Thread-195911] [transport.py] [_log()] userauth is OK
2025-11-24T19:45:10.536 [DEBUG] [Thread-195911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:45:10.536 [DEBUG] [Thread-195911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:45:10.536 [DEBUG] [Thread-195911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:45:10.536 [DEBUG] [Thread-195911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:45:10.550 [INFO] [Thread-195911] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:45:10.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:45:10.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:45:11.369 [DEBUG] [Thread-195911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:45:11.369 [DEBUG] [Thread-195911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:45:11.423 [DEBUG] [Thread-195911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:45:11.423 [DEBUG] [Thread-195911] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:45:11.431 [DEBUG] [Thread-195911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:45:11.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:45:11.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-11-24T19:45:11.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-11-24T19:45:11.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:45:11.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:45:11.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:45:11.464 [DEBUG] [Thread-195911] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:45:14.825 [DEBUG] [Thread-195913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:45:29.945 [DEBUG] [Thread-195914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:45:35.104 [DEBUG] [Thread-195915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:45:41.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:45:41.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:45:41.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-11-24T19:45:42.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 45, 33), 19.81, 26.0, 0.0, 29.85, 18.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:45:42.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:45:33
2025-11-24T19:45:42.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:45:42.548 [DEBUG] [Thread-195916] [transport.py] [_log()] starting thread (client mode): 0xd3136590
2025-11-24T19:45:42.548 [DEBUG] [Thread-195916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:45:42.569 [DEBUG] [Thread-195916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:45:42.569 [INFO] [Thread-195916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:45:42.572 [DEBUG] [Thread-195916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] client lang: <none>
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] server lang: <none>
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] kex follows: False
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] Compression: none
2025-11-24T19:45:42.573 [DEBUG] [Thread-195916] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:45:42.581 [DEBUG] [Thread-195916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:45:42.582 [DEBUG] [Thread-195916] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:45:42.582 [DEBUG] [Thread-195916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:45:42.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:45:42.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:45:42.585 [DEBUG] [Thread-195916] [transport.py] [_log()] userauth is OK
2025-11-24T19:45:42.585 [DEBUG] [Thread-195916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:45:42.585 [DEBUG] [Thread-195916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:45:42.585 [DEBUG] [Thread-195916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:45:42.585 [DEBUG] [Thread-195916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:45:42.603 [INFO] [Thread-195916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:45:42.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:45:43.337 [DEBUG] [Thread-195916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:45:43.337 [DEBUG] [Thread-195916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:45:43.337 [DEBUG] [Thread-195916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:45:43.378 [DEBUG] [Thread-195916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:45:43.378 [DEBUG] [Thread-195916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:45:43.380 [DEBUG] [Thread-195916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:45:43.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:45:43.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:45:43.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:45:43.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:45:43.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:45:43.391 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:45:43.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.739633 -999.00  +17.90  24.49     32   +1.10 1 1 1 1 1   461    0 15.69 -51.64 ----- 24.1 24.5 168.0 36.1 18.4 -26.2 18.3 -25.6 18.1 -24.4 18.4 -25.4
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.739633
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:45:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:45:33', tmtdew=19.81, humidity=26.0, cloud=0.0, wind=29.85, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:45:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:45:43.392 [DEBUG] [Thread-195916] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:45:43.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:45:43.478 [DEBUG] [Thread-195919] [transport.py] [_log()] starting thread (client mode): 0xd0701180
2025-11-24T19:45:43.478 [DEBUG] [Thread-195919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:45:43.492 [DEBUG] [Thread-195919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:45:43.493 [INFO] [Thread-195919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:45:43.500 [DEBUG] [Thread-195919] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:45:43.500 [DEBUG] [Thread-195919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:45:43.500 [DEBUG] [Thread-195919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] client lang: <none>
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] server lang: <none>
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] kex follows: False
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] Compression: none
2025-11-24T19:45:43.501 [DEBUG] [Thread-195919] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:45:43.560 [DEBUG] [Thread-195919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:45:43.560 [DEBUG] [Thread-195919] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:45:43.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:45:43.561 [DEBUG] [Thread-195919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:45:43.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:45:43.616 [DEBUG] [Thread-195919] [transport.py] [_log()] userauth is OK
2025-11-24T19:45:43.617 [DEBUG] [Thread-195919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:45:43.617 [DEBUG] [Thread-195919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:45:43.617 [DEBUG] [Thread-195919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:45:43.617 [DEBUG] [Thread-195919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:45:43.636 [INFO] [Thread-195919] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:45:43.636 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:45:43.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:45:44.495 [DEBUG] [Thread-195919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:45:44.495 [DEBUG] [Thread-195919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:45:44.543 [DEBUG] [Thread-195919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:45:44.543 [DEBUG] [Thread-195919] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:45:44.551 [DEBUG] [Thread-195919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:45:44.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:45:44.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')
2025-11-24T19:45:44.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-11-24T19:45:44.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:45:44.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:45:44.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:45:44.583 [DEBUG] [Thread-195919] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:45:44.980 [DEBUG] [Thread-195921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:45:59.324 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:45:59.326 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:46:00.025 [DEBUG] [Thread-195922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:46:14.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:46:14.593 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:46:14.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-11-24T19:46:15.076 [DEBUG] [Thread-195923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:46:15.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 46, 6), 19.59, 26.53, 0.0, 26.34, 17.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:46:15.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:46:06
2025-11-24T19:46:15.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:46:15.832 [DEBUG] [Thread-195924] [transport.py] [_log()] starting thread (client mode): 0xd07f84f0
2025-11-24T19:46:15.833 [DEBUG] [Thread-195924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:46:15.846 [DEBUG] [Thread-195924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:46:15.846 [INFO] [Thread-195924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:46:15.852 [DEBUG] [Thread-195924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:46:15.853 [DEBUG] [Thread-195924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:46:15.853 [DEBUG] [Thread-195924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:46:15.853 [DEBUG] [Thread-195924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:46:15.853 [DEBUG] [Thread-195924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:46:15.853 [DEBUG] [Thread-195924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:46:15.853 [DEBUG] [Thread-195924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:46:15.853 [DEBUG] [Thread-195924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:46:15.854 [DEBUG] [Thread-195924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:46:15.854 [DEBUG] [Thread-195924] [transport.py] [_log()] client lang: <none>
2025-11-24T19:46:15.854 [DEBUG] [Thread-195924] [transport.py] [_log()] server lang: <none>
2025-11-24T19:46:15.854 [DEBUG] [Thread-195924] [transport.py] [_log()] kex follows: False
2025-11-24T19:46:15.854 [DEBUG] [Thread-195924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:46:15.855 [DEBUG] [Thread-195924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:46:15.855 [DEBUG] [Thread-195924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:46:15.855 [DEBUG] [Thread-195924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:46:15.855 [DEBUG] [Thread-195924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:46:15.855 [DEBUG] [Thread-195924] [transport.py] [_log()] Compression: none
2025-11-24T19:46:15.855 [DEBUG] [Thread-195924] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:46:15.892 [DEBUG] [Thread-195924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:46:15.896 [DEBUG] [Thread-195924] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:46:15.898 [DEBUG] [Thread-195924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:46:15.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:46:15.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:46:15.904 [DEBUG] [Thread-195924] [transport.py] [_log()] userauth is OK
2025-11-24T19:46:15.905 [DEBUG] [Thread-195924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:46:15.905 [DEBUG] [Thread-195924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:46:15.905 [DEBUG] [Thread-195924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:46:15.905 [DEBUG] [Thread-195924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:46:15.932 [INFO] [Thread-195924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:46:15.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:46:16.550 [DEBUG] [Thread-195924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:46:16.550 [DEBUG] [Thread-195924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:46:16.560 [DEBUG] [Thread-195924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:46:16.590 [DEBUG] [Thread-195924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:46:16.591 [DEBUG] [Thread-195924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:46:16.594 [DEBUG] [Thread-195924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:46:16.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:46:16.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:46:16.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:46:16.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:46:16.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:46:16.617 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:46:16.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:46:16.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:46:16.619 [DEBUG] [Thread-195924] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:46:16.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:46:16.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.739981 -999.00  +17.90  26.52     32   +1.20 1 1 1 1 1   441    0 15.78 -51.08 ----- 22.8 26.5 166.4 29.2 18.4 -26.1 18.3 -25.6 18.1 -24.4 18.4 -25.4
2025-11-24T19:46:16.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:46:16.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:46:16.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.739981
2025-11-24T19:46:16.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:46:16.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:46:16.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:46:16.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:46:16.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:46:16.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:46:06', tmtdew=19.59, humidity=26.53, cloud=0.0, wind=26.34, temperature=17.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:45:34.358', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:46:16.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:46:16.730 [DEBUG] [Thread-195927] [transport.py] [_log()] starting thread (client mode): 0xd07f9e70
2025-11-24T19:46:16.730 [DEBUG] [Thread-195927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:46:16.745 [DEBUG] [Thread-195927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:46:16.745 [INFO] [Thread-195927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:46:16.752 [DEBUG] [Thread-195927] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] client lang: <none>
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] server lang: <none>
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] kex follows: False
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] Compression: none
2025-11-24T19:46:16.753 [DEBUG] [Thread-195927] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:46:16.812 [DEBUG] [Thread-195927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:46:16.813 [DEBUG] [Thread-195927] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:46:16.813 [DEBUG] [Thread-195927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:46:16.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:46:16.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:46:16.868 [DEBUG] [Thread-195927] [transport.py] [_log()] userauth is OK
2025-11-24T19:46:16.868 [DEBUG] [Thread-195927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:46:16.868 [DEBUG] [Thread-195927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:46:16.868 [DEBUG] [Thread-195927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:46:16.868 [DEBUG] [Thread-195927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:46:16.883 [INFO] [Thread-195927] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:46:16.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:46:16.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:46:17.740 [DEBUG] [Thread-195927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:46:17.741 [DEBUG] [Thread-195927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:46:17.789 [DEBUG] [Thread-195927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:46:17.789 [DEBUG] [Thread-195927] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:46:17.798 [DEBUG] [Thread-195927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:46:17.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:46:17.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-11-24T19:46:17.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') -> 00000000
2025-11-24T19:46:17.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:46:17.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:46:17.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:46:17.836 [DEBUG] [Thread-195927] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:46:30.120 [DEBUG] [Thread-195929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:46:35.344 [DEBUG] [Thread-195930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:46:45.206 [DEBUG] [Thread-195931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:46:47.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:46:47.845 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:46:47.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-11-24T19:46:48.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 46, 39), 19.59, 26.53, 0.0, 24.74, 17.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:46:48.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:46:39
2025-11-24T19:46:48.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:46:48.953 [DEBUG] [Thread-195932] [transport.py] [_log()] starting thread (client mode): 0xd0786230
2025-11-24T19:46:48.953 [DEBUG] [Thread-195932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:46:48.971 [DEBUG] [Thread-195932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:46:48.971 [INFO] [Thread-195932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:46:48.974 [DEBUG] [Thread-195932] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:46:48.974 [DEBUG] [Thread-195932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] client lang: <none>
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] server lang: <none>
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] kex follows: False
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:46:48.975 [DEBUG] [Thread-195932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:46:48.976 [DEBUG] [Thread-195932] [transport.py] [_log()] Compression: none
2025-11-24T19:46:48.976 [DEBUG] [Thread-195932] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:46:48.996 [DEBUG] [Thread-195932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:46:48.997 [DEBUG] [Thread-195932] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:46:48.997 [DEBUG] [Thread-195932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:46:48.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:46:48.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:46:49.041 [DEBUG] [Thread-195932] [transport.py] [_log()] userauth is OK
2025-11-24T19:46:49.041 [DEBUG] [Thread-195932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:46:49.041 [DEBUG] [Thread-195932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:46:49.041 [DEBUG] [Thread-195932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:46:49.041 [DEBUG] [Thread-195932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:46:49.062 [INFO] [Thread-195932] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:46:49.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:46:49.633 [DEBUG] [Thread-195932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:46:49.633 [DEBUG] [Thread-195932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:46:49.634 [DEBUG] [Thread-195932] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:46:49.674 [DEBUG] [Thread-195932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:46:49.675 [DEBUG] [Thread-195932] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:46:49.677 [DEBUG] [Thread-195932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:46:49.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:46:49.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:46:49.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:46:49.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:46:49.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:46:49.698 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:46:49.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:46:49.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:46:49.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:46:49.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.740328 -999.00  +17.90  20.04     32   +1.10 1 1 1 1 1   420    0 15.81 -47.92 ----- 19.9 20.0 165.6 28.5 18.4 -26.1 18.3 -25.5 18.1 -24.4 18.4 -25.4
2025-11-24T19:46:49.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:46:49.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:46:49.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.740328
2025-11-24T19:46:49.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:46:49.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:46:49.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:46:49.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:46:49.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:46:49.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:46:39', tmtdew=19.59, humidity=26.53, cloud=0.0, wind=24.74, temperature=17.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:46:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:46:49.701 [DEBUG] [Thread-195932] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:46:49.780 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:46:49.791 [DEBUG] [Thread-195935] [transport.py] [_log()] starting thread (client mode): 0xd0785780
2025-11-24T19:46:49.791 [DEBUG] [Thread-195935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:46:49.808 [DEBUG] [Thread-195935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:46:49.808 [INFO] [Thread-195935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:46:49.816 [DEBUG] [Thread-195935] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:46:49.816 [DEBUG] [Thread-195935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:46:49.816 [DEBUG] [Thread-195935] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:46:49.816 [DEBUG] [Thread-195935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:46:49.816 [DEBUG] [Thread-195935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:46:49.816 [DEBUG] [Thread-195935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:46:49.817 [DEBUG] [Thread-195935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:46:49.817 [DEBUG] [Thread-195935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:46:49.817 [DEBUG] [Thread-195935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:46:49.817 [DEBUG] [Thread-195935] [transport.py] [_log()] client lang: <none>
2025-11-24T19:46:49.817 [DEBUG] [Thread-195935] [transport.py] [_log()] server lang: <none>
2025-11-24T19:46:49.817 [DEBUG] [Thread-195935] [transport.py] [_log()] kex follows: False
2025-11-24T19:46:49.817 [DEBUG] [Thread-195935] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:46:49.817 [DEBUG] [Thread-195935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:46:49.817 [DEBUG] [Thread-195935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:46:49.818 [DEBUG] [Thread-195935] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:46:49.818 [DEBUG] [Thread-195935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:46:49.818 [DEBUG] [Thread-195935] [transport.py] [_log()] Compression: none
2025-11-24T19:46:49.818 [DEBUG] [Thread-195935] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:46:49.878 [DEBUG] [Thread-195935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:46:49.878 [DEBUG] [Thread-195935] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:46:49.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:46:49.890 [DEBUG] [Thread-195935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:46:49.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:46:49.936 [DEBUG] [Thread-195935] [transport.py] [_log()] userauth is OK
2025-11-24T19:46:49.936 [DEBUG] [Thread-195935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:46:49.936 [DEBUG] [Thread-195935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:46:49.936 [DEBUG] [Thread-195935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:46:49.936 [DEBUG] [Thread-195935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:46:49.950 [INFO] [Thread-195935] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:46:49.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:46:49.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:46:50.783 [DEBUG] [Thread-195935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:46:50.783 [DEBUG] [Thread-195935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:46:50.831 [DEBUG] [Thread-195935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:46:50.831 [DEBUG] [Thread-195935] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:46:50.840 [DEBUG] [Thread-195935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:46:50.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:46: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')
2025-11-24T19:46:50.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-11-24T19:46:50.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:46:50.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:46:50.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:46:50.873 [DEBUG] [Thread-195935] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:46:57.075 [DEBUG] [Thread-195937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:00.234 [DEBUG] [Thread-195938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:09.602 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:09.901 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:09.903 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:15.333 [DEBUG] [Thread-195939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:15.750 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:20.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:47:20.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:47:20.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-11-24T19:47:21.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 47, 11), 19.55, 26.58, 0.0, 25.97, 17.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:47:21.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:47:11
2025-11-24T19:47:21.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:47:22.100 [DEBUG] [Thread-195940] [transport.py] [_log()] starting thread (client mode): 0xd07137f0
2025-11-24T19:47:22.101 [DEBUG] [Thread-195940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:47:22.115 [DEBUG] [Thread-195940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:47:22.115 [INFO] [Thread-195940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] client lang: <none>
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] server lang: <none>
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] kex follows: False
2025-11-24T19:47:22.121 [DEBUG] [Thread-195940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:47:22.122 [DEBUG] [Thread-195940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:47:22.122 [DEBUG] [Thread-195940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:47:22.122 [DEBUG] [Thread-195940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:47:22.122 [DEBUG] [Thread-195940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:47:22.122 [DEBUG] [Thread-195940] [transport.py] [_log()] Compression: none
2025-11-24T19:47:22.122 [DEBUG] [Thread-195940] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:47:22.152 [DEBUG] [Thread-195940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:47:22.157 [DEBUG] [Thread-195940] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:47:22.159 [DEBUG] [Thread-195940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:47:22.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:47:22.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:47:22.165 [DEBUG] [Thread-195940] [transport.py] [_log()] userauth is OK
2025-11-24T19:47:22.165 [DEBUG] [Thread-195940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:47:22.166 [DEBUG] [Thread-195940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:47:22.166 [DEBUG] [Thread-195940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:47:22.166 [DEBUG] [Thread-195940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:47:22.206 [INFO] [Thread-195940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:47:22.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:47:22.754 [DEBUG] [Thread-195940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:47:22.754 [DEBUG] [Thread-195940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:47:22.765 [DEBUG] [Thread-195940] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:47:22.796 [DEBUG] [Thread-195940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:47:22.796 [DEBUG] [Thread-195940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:47:22.800 [DEBUG] [Thread-195940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:47:22.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:47:22.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:47:22.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:47:22.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:47:22.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:47:22.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:47:22.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:47:22.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:47:22.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:47:22.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.741022 -999.00  +17.90  20.85     32   +1.10 1 1 1 1 1   380    0 15.46 -51.01 ----- 22.0 20.9 171.2 28.9 18.3 -26.1 18.2 -25.6 18.1 -24.4 18.4 -25.5
2025-11-24T19:47:22.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:47:22.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:47:22.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.741022
2025-11-24T19:47:22.843 [DEBUG] [Thread-195940] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:47:22.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:47:22.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:47:22.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:47:22.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:47:22.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:47:22.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:47:11', tmtdew=19.55, humidity=26.58, cloud=0.0, wind=25.97, temperature=17.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:47:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:47:22.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:47:22.958 [DEBUG] [Thread-195943] [transport.py] [_log()] starting thread (client mode): 0xd0711b40
2025-11-24T19:47:22.958 [DEBUG] [Thread-195943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:47:22.972 [DEBUG] [Thread-195943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:47:22.972 [INFO] [Thread-195943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] client lang: <none>
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] server lang: <none>
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] kex follows: False
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] Compression: none
2025-11-24T19:47:22.980 [DEBUG] [Thread-195943] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:47:23.034 [DEBUG] [Thread-195943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:47:23.034 [DEBUG] [Thread-195943] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:47:23.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:47:23.035 [DEBUG] [Thread-195943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:47:23.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:47:23.097 [DEBUG] [Thread-195943] [transport.py] [_log()] userauth is OK
2025-11-24T19:47:23.097 [DEBUG] [Thread-195943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:47:23.097 [DEBUG] [Thread-195943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:47:23.098 [DEBUG] [Thread-195943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:47:23.098 [DEBUG] [Thread-195943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:47:23.111 [INFO] [Thread-195943] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:47:23.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:47:23.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:47:23.947 [DEBUG] [Thread-195943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:47:23.947 [DEBUG] [Thread-195943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:47:23.995 [DEBUG] [Thread-195943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:47:23.995 [DEBUG] [Thread-195943] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:47:24.006 [DEBUG] [Thread-195943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:47:24.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:47:24.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-11-24T19:47: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') -> 00000000
2025-11-24T19:47:24.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:47:24.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:47:24.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:47:24.045 [DEBUG] [Thread-195943] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:47:30.374 [DEBUG] [Thread-195945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:35.635 [DEBUG] [Thread-195946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:43.240 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:45.438 [DEBUG] [Thread-195947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:47:54.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:47:54.068 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:47: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-11-24T19:47:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 47, 44), 19.49, 26.72, 0.0, 27.26, 17.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:47:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:47:44
2025-11-24T19:47:54.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:47:55.130 [DEBUG] [Thread-195948] [transport.py] [_log()] starting thread (client mode): 0xd0713bb0
2025-11-24T19:47:55.130 [DEBUG] [Thread-195948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:47:55.151 [DEBUG] [Thread-195948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:47:55.151 [INFO] [Thread-195948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] client lang: <none>
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] server lang: <none>
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] kex follows: False
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:47:55.154 [DEBUG] [Thread-195948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:47:55.155 [DEBUG] [Thread-195948] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:47:55.155 [DEBUG] [Thread-195948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:47:55.155 [DEBUG] [Thread-195948] [transport.py] [_log()] Compression: none
2025-11-24T19:47:55.155 [DEBUG] [Thread-195948] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:47:55.165 [DEBUG] [Thread-195948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:47:55.166 [DEBUG] [Thread-195948] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:47:55.167 [DEBUG] [Thread-195948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:47:55.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:47:55.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:47:55.170 [DEBUG] [Thread-195948] [transport.py] [_log()] userauth is OK
2025-11-24T19:47:55.170 [DEBUG] [Thread-195948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:47:55.170 [DEBUG] [Thread-195948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:47:55.170 [DEBUG] [Thread-195948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:47:55.170 [DEBUG] [Thread-195948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:47:55.185 [INFO] [Thread-195948] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:47:55.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:47:55.815 [DEBUG] [Thread-195948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:47:55.816 [DEBUG] [Thread-195948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:47:55.826 [DEBUG] [Thread-195948] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:47:55.856 [DEBUG] [Thread-195948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:47:55.857 [DEBUG] [Thread-195948] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:47:55.860 [DEBUG] [Thread-195948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:47:55.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:47:55.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:47:55.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:47:55.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:47:55.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:47:55.888 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:47:55.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:47:55.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:47:55.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:47:55.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.741369 -999.00  +17.90  17.33     32   +1.10 1 1 1 1 1   360    0 15.68 -50.12 ----- 18.7 17.3 157.4 28.2 18.3 -26.2 18.2 -25.6 18.1 -24.5 18.3 -25.4
2025-11-24T19:47:55.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:47:55.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:47:55.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.741369
2025-11-24T19:47:55.895 [DEBUG] [Thread-195948] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:47:55.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:47:55.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:47:55.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:47:55.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:47:55.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:47:55.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:47:44', tmtdew=19.49, humidity=26.72, cloud=0.0, wind=27.26, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:47:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:47:55.985 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:47:55.997 [DEBUG] [Thread-195951] [transport.py] [_log()] starting thread (client mode): 0xd0712470
2025-11-24T19:47:55.997 [DEBUG] [Thread-195951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:47:56.011 [DEBUG] [Thread-195951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:47:56.011 [INFO] [Thread-195951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] client lang: <none>
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] server lang: <none>
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] kex follows: False
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:47:56.019 [DEBUG] [Thread-195951] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:47:56.020 [DEBUG] [Thread-195951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:47:56.020 [DEBUG] [Thread-195951] [transport.py] [_log()] Compression: none
2025-11-24T19:47:56.020 [DEBUG] [Thread-195951] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:47:56.075 [DEBUG] [Thread-195951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:47:56.075 [DEBUG] [Thread-195951] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:47:56.075 [DEBUG] [Thread-195951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:47:56.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:47:56.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:47:56.132 [DEBUG] [Thread-195951] [transport.py] [_log()] userauth is OK
2025-11-24T19:47:56.132 [DEBUG] [Thread-195951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:47:56.132 [DEBUG] [Thread-195951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:47:56.132 [DEBUG] [Thread-195951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:47:56.132 [DEBUG] [Thread-195951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:47:56.146 [INFO] [Thread-195951] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:47:56.146 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:47:56.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:47:56.978 [DEBUG] [Thread-195951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:47:56.978 [DEBUG] [Thread-195951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:47:57.026 [DEBUG] [Thread-195951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:47:57.026 [DEBUG] [Thread-195951] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:47:57.035 [DEBUG] [Thread-195951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:47:57.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:47:57.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-11-24T19:47: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-11-24T19:47:57.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:47:57.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:47:57.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:47:57.079 [DEBUG] [Thread-195951] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:48:00.465 [DEBUG] [Thread-195953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:08.682 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:15.579 [DEBUG] [Thread-195954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:17.486 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:17.488 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:19.399 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:25.148 [DEBUG] [Thread-195937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:25.578 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:27.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:48:27.104 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:48:27.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-11-24T19:48:27.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 48, 17), 19.51, 26.67, 0.0, 25.94, 17.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:48:27.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:48:17
2025-11-24T19:48:27.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:48:28.151 [DEBUG] [Thread-195955] [transport.py] [_log()] starting thread (client mode): 0xd07102e0
2025-11-24T19:48:28.152 [DEBUG] [Thread-195955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:48:28.167 [DEBUG] [Thread-195955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:48:28.168 [INFO] [Thread-195955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:48:28.173 [DEBUG] [Thread-195955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:48:28.173 [DEBUG] [Thread-195955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:48:28.173 [DEBUG] [Thread-195955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:48:28.173 [DEBUG] [Thread-195955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:48:28.173 [DEBUG] [Thread-195955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:48:28.173 [DEBUG] [Thread-195955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:48:28.173 [DEBUG] [Thread-195955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:48:28.173 [DEBUG] [Thread-195955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:48:28.173 [DEBUG] [Thread-195955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:48:28.174 [DEBUG] [Thread-195955] [transport.py] [_log()] client lang: <none>
2025-11-24T19:48:28.174 [DEBUG] [Thread-195955] [transport.py] [_log()] server lang: <none>
2025-11-24T19:48:28.174 [DEBUG] [Thread-195955] [transport.py] [_log()] kex follows: False
2025-11-24T19:48:28.174 [DEBUG] [Thread-195955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:48:28.174 [DEBUG] [Thread-195955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:48:28.174 [DEBUG] [Thread-195955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:48:28.174 [DEBUG] [Thread-195955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:48:28.174 [DEBUG] [Thread-195955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:48:28.174 [DEBUG] [Thread-195955] [transport.py] [_log()] Compression: none
2025-11-24T19:48:28.175 [DEBUG] [Thread-195955] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:48:28.199 [DEBUG] [Thread-195955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:48:28.204 [DEBUG] [Thread-195955] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:48:28.205 [DEBUG] [Thread-195955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:48:28.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:48:28.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:48:28.242 [DEBUG] [Thread-195955] [transport.py] [_log()] userauth is OK
2025-11-24T19:48:28.242 [DEBUG] [Thread-195955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:48:28.242 [DEBUG] [Thread-195955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:48:28.242 [DEBUG] [Thread-195955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:48:28.242 [DEBUG] [Thread-195955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:48:28.260 [INFO] [Thread-195955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:48:28.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:48:28.859 [DEBUG] [Thread-195955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:48:28.859 [DEBUG] [Thread-195955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:48:28.859 [DEBUG] [Thread-195955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:48:28.900 [DEBUG] [Thread-195955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:48:28.900 [DEBUG] [Thread-195955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:48:28.902 [DEBUG] [Thread-195955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:48:28.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:48:28.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:48:28.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:48:28.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:48:28.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:48:28.924 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:48:28.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:48:28.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:48:28.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:48:28.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.741717 -999.00  +17.90  25.16     32   +1.20 1 1 1 1 1   340    0 16.03 -48.04 ----- 20.9 25.2 173.2 27.6 18.3 -26.0 18.2 -25.7 18.0 -24.4 18.3 -25.5
2025-11-24T19:48:28.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:48:28.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:48:28.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.741717
2025-11-24T19:48:28.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:48:28.939 [DEBUG] [Thread-195955] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:48:28.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:48:28.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:48:28.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:48:28.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:48:28.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:48:17', tmtdew=19.51, humidity=26.67, cloud=0.0, wind=25.94, temperature=17.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:48:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:48:29.016 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:48:29.028 [DEBUG] [Thread-195958] [transport.py] [_log()] starting thread (client mode): 0xd07397e0
2025-11-24T19:48:29.028 [DEBUG] [Thread-195958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:48:29.046 [DEBUG] [Thread-195958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:48:29.046 [INFO] [Thread-195958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] client lang: <none>
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] server lang: <none>
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] kex follows: False
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] Compression: none
2025-11-24T19:48:29.054 [DEBUG] [Thread-195958] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:48:29.119 [DEBUG] [Thread-195958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:48:29.119 [DEBUG] [Thread-195958] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:48:29.119 [DEBUG] [Thread-195958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:48:29.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:48:29.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:48:29.177 [DEBUG] [Thread-195958] [transport.py] [_log()] userauth is OK
2025-11-24T19:48:29.177 [DEBUG] [Thread-195958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:48:29.177 [DEBUG] [Thread-195958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:48:29.177 [DEBUG] [Thread-195958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:48:29.177 [DEBUG] [Thread-195958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:48:29.191 [INFO] [Thread-195958] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:48:29.191 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:48:29.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:48:30.116 [DEBUG] [Thread-195958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:48:30.116 [DEBUG] [Thread-195958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:48:30.168 [DEBUG] [Thread-195958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:48:30.168 [DEBUG] [Thread-195958] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:48:30.180 [DEBUG] [Thread-195958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:48:30.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:48:30.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-11-24T19:48:30.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-11-24T19:48:30.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:48:30.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:48:30.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:48:30.220 [DEBUG] [Thread-195958] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:48:30.605 [DEBUG] [Thread-195960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:35.880 [DEBUG] [Thread-195961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:45.675 [DEBUG] [Thread-195962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:48:50.027 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:00.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:49:00.245 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:49:00.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:49:00.705 [DEBUG] [Thread-195963 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:01.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 48, 50), 19.45, 26.7, 0.0, 26.63, 17.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:49:01.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:48:50
2025-11-24T19:49:01.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:49:01.558 [DEBUG] [Thread-195964] [transport.py] [_log()] starting thread (client mode): 0xd073b280
2025-11-24T19:49:01.559 [DEBUG] [Thread-195964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:49:01.563 [DEBUG] [Thread-195964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:49:01.563 [INFO] [Thread-195964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] client lang: <none>
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] server lang: <none>
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] kex follows: False
2025-11-24T19:49:01.566 [DEBUG] [Thread-195964] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:49:01.567 [DEBUG] [Thread-195964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:49:01.567 [DEBUG] [Thread-195964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:49:01.567 [DEBUG] [Thread-195964] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:49:01.567 [DEBUG] [Thread-195964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:49:01.567 [DEBUG] [Thread-195964] [transport.py] [_log()] Compression: none
2025-11-24T19:49:01.567 [DEBUG] [Thread-195964] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:49:01.590 [DEBUG] [Thread-195964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:49:01.593 [DEBUG] [Thread-195964] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:49:01.595 [DEBUG] [Thread-195964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:49:01.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:49:01.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:49:01.633 [DEBUG] [Thread-195964] [transport.py] [_log()] userauth is OK
2025-11-24T19:49:01.633 [DEBUG] [Thread-195964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:49:01.634 [DEBUG] [Thread-195964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:49:01.634 [DEBUG] [Thread-195964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:49:01.634 [DEBUG] [Thread-195964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:49:01.654 [INFO] [Thread-195964] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:49:01.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:49:02.277 [DEBUG] [Thread-195964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:49:02.277 [DEBUG] [Thread-195964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:49:02.286 [DEBUG] [Thread-195964] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:49:02.317 [DEBUG] [Thread-195964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:49:02.317 [DEBUG] [Thread-195964] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:49:02.321 [DEBUG] [Thread-195964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:49:02.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:49:02.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:49:02.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:49:02.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:49:02.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:49:02.340 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:49:02.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:49:02.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:49:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:49:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.742064 -999.00  +17.90  17.63     32   +1.20 1 1 1 1 1   321    0 15.83 -48.42 ----- 14.8 17.6 165.0 27.9 18.3 -26.0 18.2 -25.6 18.0 -24.5 18.3 -25.5
2025-11-24T19:49:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:49:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:49:02.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.742064
2025-11-24T19:49:02.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:49:02.347 [DEBUG] [Thread-195964] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:49:02.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:49:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:49:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:49:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:49:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:48:50', tmtdew=19.45, humidity=26.7, cloud=0.0, wind=26.63, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:48:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:49:02.439 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:49:02.451 [DEBUG] [Thread-195967] [transport.py] [_log()] starting thread (client mode): 0xd07862f0
2025-11-24T19:49:02.451 [DEBUG] [Thread-195967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:49:02.465 [DEBUG] [Thread-195967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:49:02.465 [INFO] [Thread-195967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:49:02.473 [DEBUG] [Thread-195967] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:49:02.473 [DEBUG] [Thread-195967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:49:02.473 [DEBUG] [Thread-195967] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:49:02.473 [DEBUG] [Thread-195967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:49:02.473 [DEBUG] [Thread-195967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] client lang: <none>
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] server lang: <none>
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] kex follows: False
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] Compression: none
2025-11-24T19:49:02.474 [DEBUG] [Thread-195967] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:49:02.532 [DEBUG] [Thread-195967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:49:02.532 [DEBUG] [Thread-195967] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:49:02.533 [DEBUG] [Thread-195967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:49:02.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:49:02.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:49:02.588 [DEBUG] [Thread-195967] [transport.py] [_log()] userauth is OK
2025-11-24T19:49:02.589 [DEBUG] [Thread-195967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:49:02.589 [DEBUG] [Thread-195967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:49:02.589 [DEBUG] [Thread-195967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:49:02.589 [DEBUG] [Thread-195967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:49:02.608 [INFO] [Thread-195967] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:49:02.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:49:02.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:49:03.508 [DEBUG] [Thread-195967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:49:03.509 [DEBUG] [Thread-195967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:49:03.556 [DEBUG] [Thread-195967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:49:03.556 [DEBUG] [Thread-195967] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:49:03.565 [DEBUG] [Thread-195967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:49:03.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:49:03.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-11-24T19:49:03.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-11-24T19:49:03.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:49:03.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:49:03.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:49:03.601 [DEBUG] [Thread-195967] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:49:13.446 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:15.759 [DEBUG] [Thread-195969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:22.430 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:22.431 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:24.219 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:30.359 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:30.870 [DEBUG] [Thread-195970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:33.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:49:33.627 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:49:33.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-11-24T19:49:34.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 49, 22), 19.47, 26.65, 0.0, 26.36, 17.9, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:49:34.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:49:22
2025-11-24T19:49:34.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:49:34.739 [DEBUG] [Thread-195971] [transport.py] [_log()] starting thread (client mode): 0xd073ba30
2025-11-24T19:49:34.740 [DEBUG] [Thread-195971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:49:34.751 [DEBUG] [Thread-195971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:49:34.752 [INFO] [Thread-195971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] client lang: <none>
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] server lang: <none>
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] kex follows: False
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] Compression: none
2025-11-24T19:49:34.754 [DEBUG] [Thread-195971] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:49:34.777 [DEBUG] [Thread-195971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:49:34.780 [DEBUG] [Thread-195971] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:49:34.782 [DEBUG] [Thread-195971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:49:34.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:49:34.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:49:34.787 [DEBUG] [Thread-195971] [transport.py] [_log()] userauth is OK
2025-11-24T19:49:34.787 [DEBUG] [Thread-195971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:49:34.787 [DEBUG] [Thread-195971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:49:34.787 [DEBUG] [Thread-195971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:49:34.787 [DEBUG] [Thread-195971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:49:34.813 [INFO] [Thread-195971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:49:34.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:49:35.391 [DEBUG] [Thread-195971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:49:35.391 [DEBUG] [Thread-195971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:49:35.402 [DEBUG] [Thread-195971] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:49:35.432 [DEBUG] [Thread-195971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:49:35.433 [DEBUG] [Thread-195971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:49:35.436 [DEBUG] [Thread-195971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:49:35.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:49:35.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:49:35.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:49:35.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:49:35.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:49:35.452 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:49:35.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:49:35.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:49:35.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:49:35.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.742411 -999.00  +17.90  17.54     32   +1.20 1 1 1 1 1   302    0 15.54 -43.53 ----- 17.1 17.5 163.6 27.8 18.3 -26.1 18.2 -25.6 18.0 -24.4 18.2 -25.5
2025-11-24T19:49:35.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:49:35.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:49:35.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.742411
2025-11-24T19:49:35.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:49:35.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:49:35.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:49:35.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:49:35.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:49:35.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:49:22', tmtdew=19.47, humidity=26.65, cloud=0.0, wind=26.36, temperature=17.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:49:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:49:35.459 [DEBUG] [Thread-195971] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:49:35.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:49:35.551 [DEBUG] [Thread-195974] [transport.py] [_log()] starting thread (client mode): 0xd3153700
2025-11-24T19:49:35.552 [DEBUG] [Thread-195974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:49:35.567 [DEBUG] [Thread-195974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:49:35.567 [INFO] [Thread-195974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] client lang: <none>
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] server lang: <none>
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] kex follows: False
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] Compression: none
2025-11-24T19:49:35.575 [DEBUG] [Thread-195974] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:49:35.632 [DEBUG] [Thread-195974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:49:35.633 [DEBUG] [Thread-195974] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:49:35.642 [DEBUG] [Thread-195974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:49:35.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:49:35.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:49:35.689 [DEBUG] [Thread-195974] [transport.py] [_log()] userauth is OK
2025-11-24T19:49:35.689 [DEBUG] [Thread-195974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:49:35.689 [DEBUG] [Thread-195974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:49:35.690 [DEBUG] [Thread-195974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:49:35.690 [DEBUG] [Thread-195974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:49:35.709 [INFO] [Thread-195974] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:49:35.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:49:35.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:49:36.237 [DEBUG] [Thread-195976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:36.535 [DEBUG] [Thread-195974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:49:36.536 [DEBUG] [Thread-195974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:49:36.583 [DEBUG] [Thread-195974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:49:36.583 [DEBUG] [Thread-195974] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:49:36.592 [DEBUG] [Thread-195974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:49:36.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:49:36.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:49:36.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:49:36.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:49:36.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:49:36.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:49:36.637 [DEBUG] [Thread-195974] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:49:45.899 [DEBUG] [Thread-195977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:49:53.807 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:00.938 [DEBUG] [Thread-195978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:06.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:50:06.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:50:06.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-11-24T19:50:07.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 49, 55), 19.46, 26.67, 0.0, 23.03, 17.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:50:07.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:49:55
2025-11-24T19:50:07.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:50:07.771 [DEBUG] [Thread-195979] [transport.py] [_log()] starting thread (client mode): 0xd07119f0
2025-11-24T19:50:07.771 [DEBUG] [Thread-195979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:50:07.788 [DEBUG] [Thread-195979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:50:07.788 [INFO] [Thread-195979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:50:07.790 [DEBUG] [Thread-195979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] client lang: <none>
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] server lang: <none>
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] kex follows: False
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] Compression: none
2025-11-24T19:50:07.791 [DEBUG] [Thread-195979] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:50:07.811 [DEBUG] [Thread-195979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:50:07.813 [DEBUG] [Thread-195979] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:50:07.813 [DEBUG] [Thread-195979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:50:07.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:50:07.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:50:07.853 [DEBUG] [Thread-195979] [transport.py] [_log()] userauth is OK
2025-11-24T19:50:07.853 [DEBUG] [Thread-195979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:50:07.853 [DEBUG] [Thread-195979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:50:07.853 [DEBUG] [Thread-195979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:50:07.853 [DEBUG] [Thread-195979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:50:07.874 [INFO] [Thread-195979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:50:07.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:50:09.380 [DEBUG] [Thread-195979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:50:09.389 [DEBUG] [Thread-195979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:50:09.390 [DEBUG] [Thread-195979] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:50:09.421 [DEBUG] [Thread-195979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:50:09.422 [DEBUG] [Thread-195979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:50:09.426 [DEBUG] [Thread-195979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:50:09.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:50:09.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:50:09.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:50:09.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:50:09.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:50:09.550 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:50:09.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:50:09.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:50:09.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:50:09.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.742411 -999.00  +17.90  17.54     32   +1.20 1 1 1 1 1   302    0 15.54 -43.53 ----- 17.1 17.5 163.6 27.8 18.3 -26.1 18.2 -25.6 18.0 -24.4 18.2 -25.5
2025-11-24T19:50:09.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:50:09.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:50:09.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.742411
2025-11-24T19:50:09.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:50:09.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:50:09.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:50:09.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:50:09.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:50:09.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:49:55', tmtdew=19.46, humidity=26.67, cloud=0.0, wind=23.03, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:49:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:50:09.557 [DEBUG] [Thread-195979] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:50:09.641 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:50:09.653 [DEBUG] [Thread-195982] [transport.py] [_log()] starting thread (client mode): 0xd07110c0
2025-11-24T19:50:09.653 [DEBUG] [Thread-195982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:50:09.667 [DEBUG] [Thread-195982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:50:09.667 [INFO] [Thread-195982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:50:09.675 [DEBUG] [Thread-195982] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:50:09.676 [DEBUG] [Thread-195982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:50:09.676 [DEBUG] [Thread-195982] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:50:09.676 [DEBUG] [Thread-195982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:50:09.676 [DEBUG] [Thread-195982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:50:09.676 [DEBUG] [Thread-195982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:50:09.676 [DEBUG] [Thread-195982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:50:09.676 [DEBUG] [Thread-195982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:50:09.676 [DEBUG] [Thread-195982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:50:09.676 [DEBUG] [Thread-195982] [transport.py] [_log()] client lang: <none>
2025-11-24T19:50:09.677 [DEBUG] [Thread-195982] [transport.py] [_log()] server lang: <none>
2025-11-24T19:50:09.677 [DEBUG] [Thread-195982] [transport.py] [_log()] kex follows: False
2025-11-24T19:50:09.677 [DEBUG] [Thread-195982] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:50:09.677 [DEBUG] [Thread-195982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:50:09.677 [DEBUG] [Thread-195982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:50:09.678 [DEBUG] [Thread-195982] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:50:09.678 [DEBUG] [Thread-195982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:50:09.678 [DEBUG] [Thread-195982] [transport.py] [_log()] Compression: none
2025-11-24T19:50:09.678 [DEBUG] [Thread-195982] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:50:09.733 [DEBUG] [Thread-195982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:50:09.734 [DEBUG] [Thread-195982] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:50:09.734 [DEBUG] [Thread-195982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:50:09.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:50:09.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:50:09.789 [DEBUG] [Thread-195982] [transport.py] [_log()] userauth is OK
2025-11-24T19:50:09.789 [DEBUG] [Thread-195982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:50:09.790 [DEBUG] [Thread-195982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:50:09.790 [DEBUG] [Thread-195982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:50:09.790 [DEBUG] [Thread-195982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:50:09.808 [INFO] [Thread-195982] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:50:09.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:50:09.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:50:10.686 [DEBUG] [Thread-195982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:50:10.687 [DEBUG] [Thread-195982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:50:10.734 [DEBUG] [Thread-195982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:50:10.734 [DEBUG] [Thread-195982] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:50:10.742 [DEBUG] [Thread-195982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:50:10.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:50:10.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-11-24T19:50:10.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-11-24T19:50:10.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:50:10.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:50:10.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:50:10.775 [DEBUG] [Thread-195982] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:50:15.980 [DEBUG] [Thread-195984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:17.216 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:26.019 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:30.779 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:30.780 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:31.031 [DEBUG] [Thread-195985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:32.108 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:36.574 [DEBUG] [Thread-195986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:37.942 [DEBUG] [Thread-195937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:40.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:50:40.792 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:50:40.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-11-24T19:50:41.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 50, 28), 19.44, 26.7, 0.0, 22.44, 17.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:50:41.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:50:28
2025-11-24T19:50:41.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:50:42.030 [DEBUG] [Thread-195987] [transport.py] [_log()] starting thread (client mode): 0xd07121d0
2025-11-24T19:50:42.031 [DEBUG] [Thread-195987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:50:42.047 [DEBUG] [Thread-195987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:50:42.047 [INFO] [Thread-195987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] client lang: <none>
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] server lang: <none>
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] kex follows: False
2025-11-24T19:50:42.051 [DEBUG] [Thread-195987] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:50:42.052 [DEBUG] [Thread-195987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:50:42.052 [DEBUG] [Thread-195987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:50:42.052 [DEBUG] [Thread-195987] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:50:42.052 [DEBUG] [Thread-195987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:50:42.052 [DEBUG] [Thread-195987] [transport.py] [_log()] Compression: none
2025-11-24T19:50:42.052 [DEBUG] [Thread-195987] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:50:42.071 [DEBUG] [Thread-195987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:50:42.073 [DEBUG] [Thread-195987] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:50:42.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:50:42.074 [DEBUG] [Thread-195987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:50:42.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:50:42.113 [DEBUG] [Thread-195987] [transport.py] [_log()] userauth is OK
2025-11-24T19:50:42.113 [DEBUG] [Thread-195987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:50:42.113 [DEBUG] [Thread-195987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:50:42.114 [DEBUG] [Thread-195987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:50:42.114 [DEBUG] [Thread-195987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:50:42.138 [INFO] [Thread-195987] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:50:42.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:50:42.727 [DEBUG] [Thread-195987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:50:42.727 [DEBUG] [Thread-195987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:50:42.736 [DEBUG] [Thread-195987] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:50:42.768 [DEBUG] [Thread-195987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:50:42.768 [DEBUG] [Thread-195987] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:50:42.770 [DEBUG] [Thread-195987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:50:42.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:50:42.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:50:42.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:50:42.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:50:42.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:50:42.783 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:50:42.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:50:42.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:50:42.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:50:42.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.742758 -999.00  +17.80  21.05     32   +1.20 1 1 1 1 1   284    0 15.92 -43.13 ----- 21.3 21.1 167.8 26.4 18.2 -26.2 18.2 -25.7 17.9 -24.5 18.2 -25.5
2025-11-24T19:50:42.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:50:42.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:50:42.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.742758
2025-11-24T19:50:42.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:50:42.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:50:42.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:50:42.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:50:42.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:50:42.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:50:28', tmtdew=19.44, humidity=26.7, cloud=0.0, wind=22.44, temperature=17.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:49:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:50:42.787 [DEBUG] [Thread-195987] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:50:42.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:50:42.875 [DEBUG] [Thread-195990] [transport.py] [_log()] starting thread (client mode): 0xd0711030
2025-11-24T19:50:42.876 [DEBUG] [Thread-195990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:50:42.894 [DEBUG] [Thread-195990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:50:42.894 [INFO] [Thread-195990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] client lang: <none>
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] server lang: <none>
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] kex follows: False
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] Compression: none
2025-11-24T19:50:42.906 [DEBUG] [Thread-195990] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:50:42.962 [DEBUG] [Thread-195990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:50:42.963 [DEBUG] [Thread-195990] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:50:42.963 [DEBUG] [Thread-195990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:50:42.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:50:42.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:50:43.023 [DEBUG] [Thread-195990] [transport.py] [_log()] userauth is OK
2025-11-24T19:50:43.023 [DEBUG] [Thread-195990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:50:43.023 [DEBUG] [Thread-195990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:50:43.023 [DEBUG] [Thread-195990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:50:43.023 [DEBUG] [Thread-195990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:50:43.045 [INFO] [Thread-195990] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:50:43.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:50:43.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:50:43.885 [DEBUG] [Thread-195990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:50:43.885 [DEBUG] [Thread-195990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:50:43.932 [DEBUG] [Thread-195990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:50:43.932 [DEBUG] [Thread-195990] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:50:43.942 [DEBUG] [Thread-195990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:50:43.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:50:43.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-11-24T19:50:43.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-11-24T19:50:43.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:50:43.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:50:43.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:50:43.981 [DEBUG] [Thread-195990] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:50:46.067 [DEBUG] [Thread-195992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:50:55.591 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:01.142 [DEBUG] [Thread-195993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:14.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:51:14.004 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:51:14.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-11-24T19:51:15.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 51), 19.42, 26.73, 0.0, 26.7, 17.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:51:15.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:51:00
2025-11-24T19:51:15.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:51:15.704 [DEBUG] [Thread-195994] [transport.py] [_log()] starting thread (client mode): 0xd3150070
2025-11-24T19:51:15.704 [DEBUG] [Thread-195994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:51:15.710 [DEBUG] [Thread-195994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:51:15.710 [INFO] [Thread-195994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] client lang: <none>
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] server lang: <none>
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] kex follows: False
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:51:15.714 [DEBUG] [Thread-195994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:51:15.715 [DEBUG] [Thread-195994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:51:15.715 [DEBUG] [Thread-195994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:51:15.715 [DEBUG] [Thread-195994] [transport.py] [_log()] Compression: none
2025-11-24T19:51:15.715 [DEBUG] [Thread-195994] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:51:15.746 [DEBUG] [Thread-195994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:51:15.750 [DEBUG] [Thread-195994] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:51:15.752 [DEBUG] [Thread-195994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:51:15.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:51:15.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:51:15.757 [DEBUG] [Thread-195994] [transport.py] [_log()] userauth is OK
2025-11-24T19:51:15.757 [DEBUG] [Thread-195994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:51:15.757 [DEBUG] [Thread-195994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:51:15.758 [DEBUG] [Thread-195994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:51:15.758 [DEBUG] [Thread-195994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:51:15.796 [INFO] [Thread-195994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:51:15.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:51:16.193 [DEBUG] [Thread-195996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:16.402 [DEBUG] [Thread-195994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:51:16.402 [DEBUG] [Thread-195994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:51:16.403 [DEBUG] [Thread-195994] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:51:16.443 [DEBUG] [Thread-195994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:51:16.443 [DEBUG] [Thread-195994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:51:16.446 [DEBUG] [Thread-195994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:51:16.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:51:16.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:51:16.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:51:16.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:51:16.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:51:16.464 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:51:16.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:51:16.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:51:16.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:51:16.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.743453 -999.00  +17.80  15.20     32   +1.20 1 1 1 1 1   250    0 15.67 -43.85 ----- 22.1 15.2 158.7 27.4 18.2 -26.1 18.1 -25.6 17.9 -24.5 18.2 -25.5
2025-11-24T19:51:16.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:51:16.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:51:16.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.743453
2025-11-24T19:51:16.477 [DEBUG] [Thread-195994] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:51:16.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:51:16.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:51:16.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:51:16.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:51:16.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:51:16.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:51:00', tmtdew=19.42, humidity=26.73, cloud=0.0, wind=26.7, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:50:34.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:51:16.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:51:16.575 [DEBUG] [Thread-195998] [transport.py] [_log()] starting thread (client mode): 0xd0710ee0
2025-11-24T19:51:16.575 [DEBUG] [Thread-195998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:51:16.592 [DEBUG] [Thread-195998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:51:16.592 [INFO] [Thread-195998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] client lang: <none>
2025-11-24T19:51:16.599 [DEBUG] [Thread-195998] [transport.py] [_log()] server lang: <none>
2025-11-24T19:51:16.600 [DEBUG] [Thread-195998] [transport.py] [_log()] kex follows: False
2025-11-24T19:51:16.600 [DEBUG] [Thread-195998] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:51:16.600 [DEBUG] [Thread-195998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:51:16.600 [DEBUG] [Thread-195998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:51:16.600 [DEBUG] [Thread-195998] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:51:16.600 [DEBUG] [Thread-195998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:51:16.600 [DEBUG] [Thread-195998] [transport.py] [_log()] Compression: none
2025-11-24T19:51:16.600 [DEBUG] [Thread-195998] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:51:16.655 [DEBUG] [Thread-195998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:51:16.656 [DEBUG] [Thread-195998] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:51:16.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:51:16.656 [DEBUG] [Thread-195998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:51:16.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:51:16.712 [DEBUG] [Thread-195998] [transport.py] [_log()] userauth is OK
2025-11-24T19:51:16.712 [DEBUG] [Thread-195998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:51:16.712 [DEBUG] [Thread-195998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:51:16.712 [DEBUG] [Thread-195998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:51:16.712 [DEBUG] [Thread-195998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:51:16.727 [INFO] [Thread-195998] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:51:16.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:51:16.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:51:17.574 [DEBUG] [Thread-195998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:51:17.574 [DEBUG] [Thread-195998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:51:17.622 [DEBUG] [Thread-195998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:51:17.622 [DEBUG] [Thread-195998] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:51:17.630 [DEBUG] [Thread-195998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:51:17.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:51:17.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-11-24T19:51:17.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-11-24T19:51:17.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:51:17.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:51:17.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:51:17.676 [DEBUG] [Thread-195998] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:51:19.009 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:26.605 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:31.251 [DEBUG] [Thread-196000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:32.748 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:35.010 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:35.011 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:36.911 [DEBUG] [Thread-196001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:46.335 [DEBUG] [Thread-196002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:51:47.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:51:47.689 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:51:47.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:51:48.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 51, 33), 19.35, 26.77, 0.0, 28.55, 17.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:51:48.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:51:33
2025-11-24T19:51:48.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:51:48.807 [DEBUG] [Thread-196003] [transport.py] [_log()] starting thread (client mode): 0xd3153b50
2025-11-24T19:51:48.808 [DEBUG] [Thread-196003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:51:48.821 [DEBUG] [Thread-196003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:51:48.821 [INFO] [Thread-196003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:51:48.825 [DEBUG] [Thread-196003] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] client lang: <none>
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] server lang: <none>
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] kex follows: False
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:51:48.826 [DEBUG] [Thread-196003] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:51:48.827 [DEBUG] [Thread-196003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:51:48.827 [DEBUG] [Thread-196003] [transport.py] [_log()] Compression: none
2025-11-24T19:51:48.827 [DEBUG] [Thread-196003] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:51:48.846 [DEBUG] [Thread-196003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:51:48.848 [DEBUG] [Thread-196003] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:51:48.849 [DEBUG] [Thread-196003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:51:48.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:51:48.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:51:48.889 [DEBUG] [Thread-196003] [transport.py] [_log()] userauth is OK
2025-11-24T19:51:48.890 [DEBUG] [Thread-196003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:51:48.890 [DEBUG] [Thread-196003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:51:48.890 [DEBUG] [Thread-196003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:51:48.890 [DEBUG] [Thread-196003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:51:48.916 [INFO] [Thread-196003] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:51:48.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:51:49.512 [DEBUG] [Thread-196003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:51:49.513 [DEBUG] [Thread-196003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:51:49.514 [DEBUG] [Thread-196003] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:51:49.553 [DEBUG] [Thread-196003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:51:49.554 [DEBUG] [Thread-196003] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:51:49.557 [DEBUG] [Thread-196003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:51:49.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:51:49.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:51:49.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:51:49.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:51:49.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:51:49.580 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:51:49.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:51:49.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:51:49.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:51:49.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.743800 -999.00  +17.80  14.18     32   +1.10 1 1 1 1 1   233    0 15.87 -44.18 ----- 16.5 14.2 163.2 26.0 18.2 -26.3 18.1 -25.6 17.9 -24.3 18.1 -25.6
2025-11-24T19:51:49.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:51:49.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:51:49.583 [DEBUG] [Thread-196003] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:51:49.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.743800
2025-11-24T19:51:49.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:51:49.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:51:49.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:51:49.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:51:49.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:51:49.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:51:33', tmtdew=19.35, humidity=26.77, cloud=0.0, wind=28.55, temperature=17.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:51:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:51:49.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:51:49.701 [DEBUG] [Thread-196006] [transport.py] [_log()] starting thread (client mode): 0xd07844c0
2025-11-24T19:51:49.702 [DEBUG] [Thread-196006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:51:49.715 [DEBUG] [Thread-196006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:51:49.715 [INFO] [Thread-196006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:51:49.722 [DEBUG] [Thread-196006] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] client lang: <none>
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] server lang: <none>
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] kex follows: False
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:51:49.723 [DEBUG] [Thread-196006] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:51:49.724 [DEBUG] [Thread-196006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:51:49.724 [DEBUG] [Thread-196006] [transport.py] [_log()] Compression: none
2025-11-24T19:51:49.724 [DEBUG] [Thread-196006] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:51:49.780 [DEBUG] [Thread-196006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:51:49.781 [DEBUG] [Thread-196006] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:51:49.781 [DEBUG] [Thread-196006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:51:49.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:51:49.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:51:49.841 [DEBUG] [Thread-196006] [transport.py] [_log()] userauth is OK
2025-11-24T19:51:49.841 [DEBUG] [Thread-196006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:51:49.841 [DEBUG] [Thread-196006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:51:49.841 [DEBUG] [Thread-196006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:51:49.841 [DEBUG] [Thread-196006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:51:49.860 [INFO] [Thread-196006] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:51:49.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:51:49.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:51:50.671 [DEBUG] [Thread-196006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:51:50.671 [DEBUG] [Thread-196006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:51:50.720 [DEBUG] [Thread-196006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:51:50.720 [DEBUG] [Thread-196006] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:51:50.730 [DEBUG] [Thread-196006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:51:50.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:51:50.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-11-24T19:51:50.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:51:50.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:51:50.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:51:50.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:51:50.768 [DEBUG] [Thread-196006] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:51:56.185 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:01.381 [DEBUG] [Thread-196008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:16.454 [DEBUG] [Thread-196009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:19.595 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:20.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:52:20.791 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:52:20.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-11-24T19:52:21.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 52, 6), 19.31, 26.85, 0.0, 29.66, 17.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:52:21.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:52:06
2025-11-24T19:52:21.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:52:21.814 [DEBUG] [Thread-196010] [transport.py] [_log()] starting thread (client mode): 0xd073ab30
2025-11-24T19:52:21.815 [DEBUG] [Thread-196010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:52:21.829 [DEBUG] [Thread-196010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:52:21.829 [INFO] [Thread-196010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] client lang: <none>
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] server lang: <none>
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] kex follows: False
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] Compression: none
2025-11-24T19:52:21.832 [DEBUG] [Thread-196010] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:52:21.844 [DEBUG] [Thread-196010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:52:21.844 [DEBUG] [Thread-196010] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:52:21.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:52:21.844 [DEBUG] [Thread-196010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:52:21.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:52:21.845 [DEBUG] [Thread-196010] [transport.py] [_log()] userauth is OK
2025-11-24T19:52:21.845 [DEBUG] [Thread-196010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:52:21.845 [DEBUG] [Thread-196010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:52:21.845 [DEBUG] [Thread-196010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:52:21.845 [DEBUG] [Thread-196010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:52:21.854 [INFO] [Thread-196010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:52:21.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:52:22.476 [DEBUG] [Thread-196010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:52:22.476 [DEBUG] [Thread-196010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:52:22.476 [DEBUG] [Thread-196010] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:52:22.517 [DEBUG] [Thread-196010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:52:22.517 [DEBUG] [Thread-196010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:52:22.518 [DEBUG] [Thread-196010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:52:22.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:52:22.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:52:22.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:52:22.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:52:22.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:52:22.530 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:52:22.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:52:22.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:52:22.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:52:22.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.744147 -999.00  +17.70  18.83     32   +1.10 1 1 1 1 1   218    0 15.42 -46.20 ----- 20.0 18.8 156.0 26.2 18.2 -26.2 18.1 -25.6 17.9 -24.5 18.1 -25.5
2025-11-24T19:52:22.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:52:22.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:52:22.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.744147
2025-11-24T19:52:22.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:52:22.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:52:22.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:52:22.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:52:22.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:52:22.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:52:06', tmtdew=19.31, humidity=26.85, cloud=0.0, wind=29.66, temperature=17.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:51:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:52:22.532 [DEBUG] [Thread-196010] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:52:22.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:52:22.619 [DEBUG] [Thread-196013] [transport.py] [_log()] starting thread (client mode): 0xc9b83160
2025-11-24T19:52:22.619 [DEBUG] [Thread-196013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:52:22.634 [DEBUG] [Thread-196013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:52:22.634 [INFO] [Thread-196013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:52:22.641 [DEBUG] [Thread-196013] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:52:22.641 [DEBUG] [Thread-196013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:52:22.641 [DEBUG] [Thread-196013] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:52:22.641 [DEBUG] [Thread-196013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:52:22.641 [DEBUG] [Thread-196013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:52:22.641 [DEBUG] [Thread-196013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] client lang: <none>
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] server lang: <none>
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] kex follows: False
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] Compression: none
2025-11-24T19:52:22.642 [DEBUG] [Thread-196013] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:52:22.699 [DEBUG] [Thread-196013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:52:22.699 [DEBUG] [Thread-196013] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:52:22.699 [DEBUG] [Thread-196013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:52:22.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:52:22.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:52:22.756 [DEBUG] [Thread-196013] [transport.py] [_log()] userauth is OK
2025-11-24T19:52:22.756 [DEBUG] [Thread-196013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:52:22.756 [DEBUG] [Thread-196013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:52:22.756 [DEBUG] [Thread-196013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:52:22.756 [DEBUG] [Thread-196013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:52:22.774 [INFO] [Thread-196013] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:52:22.774 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:52:22.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:52:23.597 [DEBUG] [Thread-196013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:52:23.597 [DEBUG] [Thread-196013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:52:23.645 [DEBUG] [Thread-196013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:52:23.645 [DEBUG] [Thread-196013] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:52:23.654 [DEBUG] [Thread-196013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:52:23.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:52:23.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-11-24T19:52:23.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-11-24T19:52:23.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:52:23.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:52:23.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:52:23.686 [DEBUG] [Thread-196013] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:52:31.497 [DEBUG] [Thread-196015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:33.550 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:37.173 [DEBUG] [Thread-196016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:38.625 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:43.036 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:43.037 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:46.626 [DEBUG] [Thread-196017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:52:53.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:52:53.719 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:52:53.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-11-24T19:52:54.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 52, 39), 19.25, 26.86, 0.0, 25.67, 17.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:52:54.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:52:39
2025-11-24T19:52:54.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:52:54.949 [DEBUG] [Thread-196018] [transport.py] [_log()] starting thread (client mode): 0xd31506d0
2025-11-24T19:52:54.950 [DEBUG] [Thread-196018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:52:54.965 [DEBUG] [Thread-196018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:52:54.966 [INFO] [Thread-196018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] client lang: <none>
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] server lang: <none>
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] kex follows: False
2025-11-24T19:52:54.970 [DEBUG] [Thread-196018] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:52:54.971 [DEBUG] [Thread-196018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:52:54.971 [DEBUG] [Thread-196018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:52:54.971 [DEBUG] [Thread-196018] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:52:54.971 [DEBUG] [Thread-196018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:52:54.971 [DEBUG] [Thread-196018] [transport.py] [_log()] Compression: none
2025-11-24T19:52:54.971 [DEBUG] [Thread-196018] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:52:55.007 [DEBUG] [Thread-196018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:52:55.012 [DEBUG] [Thread-196018] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:52:55.013 [DEBUG] [Thread-196018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:52:55.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:52:55.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:52:55.020 [DEBUG] [Thread-196018] [transport.py] [_log()] userauth is OK
2025-11-24T19:52:55.020 [DEBUG] [Thread-196018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:52:55.021 [DEBUG] [Thread-196018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:52:55.021 [DEBUG] [Thread-196018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:52:55.021 [DEBUG] [Thread-196018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:52:55.047 [INFO] [Thread-196018] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:52:55.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:52:55.624 [DEBUG] [Thread-196018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:52:55.633 [DEBUG] [Thread-196018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:52:55.635 [DEBUG] [Thread-196018] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:52:55.664 [DEBUG] [Thread-196018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:52:55.665 [DEBUG] [Thread-196018] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:52:55.669 [DEBUG] [Thread-196018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:52:55.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:52:55.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:52:55.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:52:55.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:52:55.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:52:55.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:52:55.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:52:55.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:52:55.701 [DEBUG] [Thread-196018] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:52:55.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:52:55.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.744842 -999.00  +17.70  21.90     32   +1.20 1 1 1 1 1   189    0 15.41 -53.91 ----- 17.9 21.9 161.6 27.4 18.1 -26.1 18.0 -25.5 17.8 -24.3 18.1 -25.5
2025-11-24T19:52:55.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:52:55.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:52:55.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.744842
2025-11-24T19:52:55.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:52:55.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:52:55.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:52:55.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:52:55.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:52:55.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:52:39', tmtdew=19.25, humidity=26.86, cloud=0.0, wind=25.67, temperature=17.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:52:34.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:52:55.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:52:55.811 [DEBUG] [Thread-196021] [transport.py] [_log()] starting thread (client mode): 0xd3152650
2025-11-24T19:52:55.811 [DEBUG] [Thread-196021] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:52:55.826 [DEBUG] [Thread-196021] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:52:55.826 [INFO] [Thread-196021] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:52:55.842 [DEBUG] [Thread-196021] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:52:55.842 [DEBUG] [Thread-196021] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:52:55.842 [DEBUG] [Thread-196021] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:52:55.842 [DEBUG] [Thread-196021] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:52:55.842 [DEBUG] [Thread-196021] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] client lang: <none>
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] server lang: <none>
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] kex follows: False
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] Compression: none
2025-11-24T19:52:55.843 [DEBUG] [Thread-196021] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:52:55.890 [DEBUG] [Thread-196021] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:52:55.890 [DEBUG] [Thread-196021] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:52:55.891 [DEBUG] [Thread-196021] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:52:55.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:52:55.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:52:55.948 [DEBUG] [Thread-196021] [transport.py] [_log()] userauth is OK
2025-11-24T19:52:55.948 [DEBUG] [Thread-196021] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:52:55.948 [DEBUG] [Thread-196021] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:52:55.948 [DEBUG] [Thread-196021] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:52:55.948 [DEBUG] [Thread-196021] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:52:55.962 [INFO] [Thread-196021] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:52:55.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:52:55.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:52:56.750 [DEBUG] [Thread-196021] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:52:56.750 [DEBUG] [Thread-196021] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:52:56.799 [DEBUG] [Thread-196021] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:52:56.799 [DEBUG] [Thread-196021] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:52:56.809 [DEBUG] [Thread-196021] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:52:56.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:52:56.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-11-24T19:52:56.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-11-24T19:52:56.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:52:56.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:52:56.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:52:56.855 [DEBUG] [Thread-196021] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:53:01.662 [DEBUG] [Thread-196023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:02.085 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:16.699 [DEBUG] [Thread-196024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:25.476 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:26.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:53:26.868 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:53:26.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-11-24T19:53:27.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 53, 11), 19.23, 26.9, 0.0, 25.95, 17.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:53:27.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:53:11
2025-11-24T19:53:27.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:53:28.054 [DEBUG] [Thread-196025] [transport.py] [_log()] starting thread (client mode): 0xd0713070
2025-11-24T19:53:28.055 [DEBUG] [Thread-196025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:53:28.061 [DEBUG] [Thread-196025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:53:28.061 [INFO] [Thread-196025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:53:28.065 [DEBUG] [Thread-196025] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:53:28.065 [DEBUG] [Thread-196025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:53:28.065 [DEBUG] [Thread-196025] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:53:28.065 [DEBUG] [Thread-196025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] client lang: <none>
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] server lang: <none>
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] kex follows: False
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:53:28.066 [DEBUG] [Thread-196025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:53:28.067 [DEBUG] [Thread-196025] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:53:28.067 [DEBUG] [Thread-196025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:53:28.067 [DEBUG] [Thread-196025] [transport.py] [_log()] Compression: none
2025-11-24T19:53:28.067 [DEBUG] [Thread-196025] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:53:28.089 [DEBUG] [Thread-196025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:53:28.093 [DEBUG] [Thread-196025] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:53:28.095 [DEBUG] [Thread-196025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:53:28.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:53:28.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:53:28.133 [DEBUG] [Thread-196025] [transport.py] [_log()] userauth is OK
2025-11-24T19:53:28.134 [DEBUG] [Thread-196025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:53:28.134 [DEBUG] [Thread-196025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:53:28.134 [DEBUG] [Thread-196025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:53:28.134 [DEBUG] [Thread-196025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:53:28.171 [INFO] [Thread-196025] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:53:28.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:53:28.787 [DEBUG] [Thread-196025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:53:28.787 [DEBUG] [Thread-196025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:53:28.798 [DEBUG] [Thread-196025] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:53:28.827 [DEBUG] [Thread-196025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:53:28.827 [DEBUG] [Thread-196025] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:53:28.833 [DEBUG] [Thread-196025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:53:28.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:53:28.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:53:28.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:53:28.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:53:28.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:53:28.860 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:53:28.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:53:28.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:53:28.863 [DEBUG] [Thread-196025] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:53:28.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:53:28.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.745189 -999.00  +17.70  20.02     33   +1.20 1 1 1 1 1   176    0 15.42 -47.71 ----- 22.2 20.0 165.8 28.4 18.1 -26.1 18.0 -25.8 17.8 -24.3 18.1 -25.5
2025-11-24T19:53:28.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:53:28.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:53:28.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.745189
2025-11-24T19:53:28.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:53:28.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:53:28.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:53:28.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:53:28.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:53:28.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:53:11', tmtdew=19.23, humidity=26.9, cloud=0.0, wind=25.95, temperature=17.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:53:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:53:28.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:53:28.987 [DEBUG] [Thread-196028] [transport.py] [_log()] starting thread (client mode): 0xc9b82c80
2025-11-24T19:53:28.987 [DEBUG] [Thread-196028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:53:29.001 [DEBUG] [Thread-196028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:53:29.001 [INFO] [Thread-196028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:53:29.009 [DEBUG] [Thread-196028] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:53:29.009 [DEBUG] [Thread-196028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:53:29.009 [DEBUG] [Thread-196028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:53:29.009 [DEBUG] [Thread-196028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:53:29.010 [DEBUG] [Thread-196028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:53:29.010 [DEBUG] [Thread-196028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:53:29.010 [DEBUG] [Thread-196028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:53:29.010 [DEBUG] [Thread-196028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:53:29.010 [DEBUG] [Thread-196028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:53:29.010 [DEBUG] [Thread-196028] [transport.py] [_log()] client lang: <none>
2025-11-24T19:53:29.010 [DEBUG] [Thread-196028] [transport.py] [_log()] server lang: <none>
2025-11-24T19:53:29.010 [DEBUG] [Thread-196028] [transport.py] [_log()] kex follows: False
2025-11-24T19:53:29.010 [DEBUG] [Thread-196028] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:53:29.010 [DEBUG] [Thread-196028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:53:29.011 [DEBUG] [Thread-196028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:53:29.011 [DEBUG] [Thread-196028] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:53:29.011 [DEBUG] [Thread-196028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:53:29.011 [DEBUG] [Thread-196028] [transport.py] [_log()] Compression: none
2025-11-24T19:53:29.011 [DEBUG] [Thread-196028] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:53:29.068 [DEBUG] [Thread-196028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:53:29.069 [DEBUG] [Thread-196028] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:53:29.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:53:29.070 [DEBUG] [Thread-196028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:53:29.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:53:29.124 [DEBUG] [Thread-196028] [transport.py] [_log()] userauth is OK
2025-11-24T19:53:29.125 [DEBUG] [Thread-196028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:53:29.125 [DEBUG] [Thread-196028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:53:29.125 [DEBUG] [Thread-196028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:53:29.125 [DEBUG] [Thread-196028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:53:29.149 [INFO] [Thread-196028] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:53:29.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:53:29.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:53:29.982 [DEBUG] [Thread-196028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:53:29.982 [DEBUG] [Thread-196028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:53:30.029 [DEBUG] [Thread-196028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:53:30.029 [DEBUG] [Thread-196028] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:53:30.038 [DEBUG] [Thread-196028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:53:30.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:53:30.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-11-24T19:53:30.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-11-24T19:53:30.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:53:30.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:53:30.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:53:30.074 [DEBUG] [Thread-196028] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:53:31.080 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:31.733 [DEBUG] [Thread-196030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:36.145 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:37.459 [DEBUG] [Thread-196031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:46.807 [DEBUG] [Thread-196032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:49.168 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:49.169 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:53:59.602 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:54:00.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:54:00.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:54:00.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-11-24T19:54:00.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 53, 44), 19.18, 26.91, 0.0, 25.35, 17.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:54:00.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:53:44
2025-11-24T19:54:01.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:54:01.210 [DEBUG] [Thread-196033] [transport.py] [_log()] starting thread (client mode): 0xd31528f0
2025-11-24T19:54:01.210 [DEBUG] [Thread-196033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:54:01.222 [DEBUG] [Thread-196033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:54:01.222 [INFO] [Thread-196033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] client lang: <none>
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] server lang: <none>
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] kex follows: False
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:54:01.224 [DEBUG] [Thread-196033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:54:01.225 [DEBUG] [Thread-196033] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:54:01.225 [DEBUG] [Thread-196033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:54:01.225 [DEBUG] [Thread-196033] [transport.py] [_log()] Compression: none
2025-11-24T19:54:01.225 [DEBUG] [Thread-196033] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:54:01.242 [DEBUG] [Thread-196033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:54:01.246 [DEBUG] [Thread-196033] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:54:01.247 [DEBUG] [Thread-196033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:54:01.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:54:01.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:54:01.250 [DEBUG] [Thread-196033] [transport.py] [_log()] userauth is OK
2025-11-24T19:54:01.251 [DEBUG] [Thread-196033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:54:01.251 [DEBUG] [Thread-196033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:54:01.251 [DEBUG] [Thread-196033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:54:01.251 [DEBUG] [Thread-196033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:54:01.273 [INFO] [Thread-196033] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:54:01.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:54:01.844 [DEBUG] [Thread-196035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:54:01.877 [DEBUG] [Thread-196033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:54:01.878 [DEBUG] [Thread-196033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:54:01.878 [DEBUG] [Thread-196033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:54:01.919 [DEBUG] [Thread-196033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:54:01.919 [DEBUG] [Thread-196033] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:54:01.922 [DEBUG] [Thread-196033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:54:01.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:54:01.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:54:01.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:54:01.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:54:01.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:54:01.945 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:54:01.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:54:01.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:54:01.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:54:01.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.745536 -999.00  +17.60  18.48     33   +1.20 1 1 1 1 1   163    0 15.49 -47.46 ----- 18.1 18.5 164.7 29.2 18.1 -26.2 18.0 -25.5 17.8 -24.4 18.1 -25.3
2025-11-24T19:54:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:54:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:54:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.745536
2025-11-24T19:54:01.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:54:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:54:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:54:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:54:01.948 [DEBUG] [Thread-196033] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:54:01.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:54:01.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:53:44', tmtdew=19.18, humidity=26.91, cloud=0.0, wind=25.35, temperature=17.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:53:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:54:02.030 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:54:02.042 [DEBUG] [Thread-196037] [transport.py] [_log()] starting thread (client mode): 0xd31361d0
2025-11-24T19:54:02.042 [DEBUG] [Thread-196037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:54:02.057 [DEBUG] [Thread-196037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:54:02.057 [INFO] [Thread-196037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:54:02.064 [DEBUG] [Thread-196037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:54:02.064 [DEBUG] [Thread-196037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:54:02.064 [DEBUG] [Thread-196037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:54:02.064 [DEBUG] [Thread-196037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] client lang: <none>
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] server lang: <none>
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] kex follows: False
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] Compression: none
2025-11-24T19:54:02.065 [DEBUG] [Thread-196037] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:54:02.125 [DEBUG] [Thread-196037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:54:02.125 [DEBUG] [Thread-196037] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:54:02.126 [DEBUG] [Thread-196037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:54:02.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:54:02.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:54:02.186 [DEBUG] [Thread-196037] [transport.py] [_log()] userauth is OK
2025-11-24T19:54:02.187 [DEBUG] [Thread-196037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:54:02.187 [DEBUG] [Thread-196037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:54:02.187 [DEBUG] [Thread-196037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:54:02.187 [DEBUG] [Thread-196037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:54:02.206 [INFO] [Thread-196037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:54:02.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:54:02.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:54:03.046 [DEBUG] [Thread-196037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:54:03.046 [DEBUG] [Thread-196037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:54:03.094 [DEBUG] [Thread-196037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:54:03.094 [DEBUG] [Thread-196037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:54:03.102 [DEBUG] [Thread-196037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:54:03.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:54:03.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-11-24T19:54:03.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-11-24T19:54:03.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:54:03.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:54:03.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:54:03.134 [DEBUG] [Thread-196037] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:54:16.875 [DEBUG] [Thread-196039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:54:23.111 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:54:31.952 [DEBUG] [Thread-196040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:54:33.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:54:33.152 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:54:33.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-11-24T19:54:33.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 54, 16), 19.17, 26.93, 0.0, 27.86, 17.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:54:33.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:54:16
2025-11-24T19:54:34.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:54:34.260 [DEBUG] [Thread-196041] [transport.py] [_log()] starting thread (client mode): 0xc9b81a80
2025-11-24T19:54:34.261 [DEBUG] [Thread-196041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:54:34.276 [DEBUG] [Thread-196041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:54:34.276 [INFO] [Thread-196041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:54:34.279 [DEBUG] [Thread-196041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] client lang: <none>
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] server lang: <none>
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] kex follows: False
2025-11-24T19:54:34.280 [DEBUG] [Thread-196041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:54:34.281 [DEBUG] [Thread-196041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:54:34.281 [DEBUG] [Thread-196041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:54:34.281 [DEBUG] [Thread-196041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:54:34.281 [DEBUG] [Thread-196041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:54:34.281 [DEBUG] [Thread-196041] [transport.py] [_log()] Compression: none
2025-11-24T19:54:34.281 [DEBUG] [Thread-196041] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:54:34.306 [DEBUG] [Thread-196041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:54:34.308 [DEBUG] [Thread-196041] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:54:34.310 [DEBUG] [Thread-196041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:54:34.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:54:34.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:54:34.313 [DEBUG] [Thread-196041] [transport.py] [_log()] userauth is OK
2025-11-24T19:54:34.313 [DEBUG] [Thread-196041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:54:34.313 [DEBUG] [Thread-196041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:54:34.313 [DEBUG] [Thread-196041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:54:34.313 [DEBUG] [Thread-196041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:54:34.332 [INFO] [Thread-196041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:54:34.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:54:34.962 [DEBUG] [Thread-196041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:54:34.962 [DEBUG] [Thread-196041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:54:34.962 [DEBUG] [Thread-196041] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:54:35.003 [DEBUG] [Thread-196041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:54:35.003 [DEBUG] [Thread-196041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:54:35.005 [DEBUG] [Thread-196041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:54:35.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:54:35.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:54:35.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:54:35.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:54:35.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:54:35.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:54:35.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:54:35.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:54:35.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:54:35.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.745883 -999.00  +17.60  18.73     33   +1.20 1 1 1 1 1   151    0 15.49 -46.39 ----- 21.2 18.7 171.8 26.4 18.1 -26.1 18.0 -25.5 17.8 -24.3 18.1 -25.4
2025-11-24T19:54:35.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:54:35.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:54:35.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.745883
2025-11-24T19:54:35.032 [DEBUG] [Thread-196041] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:54:35.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:54:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:54:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:54:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:54:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:54:35.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:54:16', tmtdew=19.17, humidity=26.93, cloud=0.0, wind=27.86, temperature=17.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:54:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:54: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-11-24T19:54:35.133 [DEBUG] [Thread-196044] [transport.py] [_log()] starting thread (client mode): 0xc9b81b10
2025-11-24T19:54:35.133 [DEBUG] [Thread-196044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:54:35.147 [DEBUG] [Thread-196044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:54:35.148 [INFO] [Thread-196044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] client lang: <none>
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] server lang: <none>
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] kex follows: False
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:54:35.155 [DEBUG] [Thread-196044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:54:35.156 [DEBUG] [Thread-196044] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:54:35.156 [DEBUG] [Thread-196044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:54:35.156 [DEBUG] [Thread-196044] [transport.py] [_log()] Compression: none
2025-11-24T19:54:35.156 [DEBUG] [Thread-196044] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:54:35.212 [DEBUG] [Thread-196044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:54:35.213 [DEBUG] [Thread-196044] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:54:35.213 [DEBUG] [Thread-196044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:54:35.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:54:35.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:54:35.269 [DEBUG] [Thread-196044] [transport.py] [_log()] userauth is OK
2025-11-24T19:54:35.269 [DEBUG] [Thread-196044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:54:35.269 [DEBUG] [Thread-196044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:54:35.269 [DEBUG] [Thread-196044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:54:35.269 [DEBUG] [Thread-196044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:54:35.288 [INFO] [Thread-196044] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:54:35.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:54:35.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:54:36.100 [DEBUG] [Thread-196044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:54:36.100 [DEBUG] [Thread-196044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:54:36.148 [DEBUG] [Thread-196044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:54:36.148 [DEBUG] [Thread-196044] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:54:36.158 [DEBUG] [Thread-196044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:54:36.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:54:36.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:54:36.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-11-24T19:54:36.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:54:36.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:54:36.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:54:36.205 [DEBUG] [Thread-196044] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:54:37.747 [DEBUG] [Thread-196046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:54:46.983 [DEBUG] [Thread-196047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:54:55.183 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:54:55.184 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:55:02.089 [DEBUG] [Thread-196048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:55:06.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:55:06.229 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:55:06.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-11-24T19:55:07.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 54, 49), 19.15, 26.96, 0.0, 27.68, 17.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:55:07.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:54:49
2025-11-24T19:55:07.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:55:07.396 [DEBUG] [Thread-196049] [transport.py] [_log()] starting thread (client mode): 0xd31527a0
2025-11-24T19:55:07.397 [DEBUG] [Thread-196049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:55:07.403 [DEBUG] [Thread-196049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:55:07.403 [INFO] [Thread-196049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:55:07.406 [DEBUG] [Thread-196049] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:55:07.406 [DEBUG] [Thread-196049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:55:07.406 [DEBUG] [Thread-196049] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:55:07.406 [DEBUG] [Thread-196049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:55:07.406 [DEBUG] [Thread-196049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:55:07.406 [DEBUG] [Thread-196049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] client lang: <none>
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] server lang: <none>
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] kex follows: False
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] Compression: none
2025-11-24T19:55:07.407 [DEBUG] [Thread-196049] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:55:07.434 [DEBUG] [Thread-196049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:55:07.438 [DEBUG] [Thread-196049] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:55:07.440 [DEBUG] [Thread-196049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:55:07.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:55:07.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:55:07.444 [DEBUG] [Thread-196049] [transport.py] [_log()] userauth is OK
2025-11-24T19:55:07.445 [DEBUG] [Thread-196049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:55:07.445 [DEBUG] [Thread-196049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:55:07.445 [DEBUG] [Thread-196049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:55:07.446 [DEBUG] [Thread-196049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:55:07.469 [INFO] [Thread-196049] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:55:07.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:55:11.921 [DEBUG] [Thread-196049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:55:11.922 [DEBUG] [Thread-196049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:55:11.924 [DEBUG] [Thread-196049] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:55:11.962 [DEBUG] [Thread-196049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:55:11.963 [DEBUG] [Thread-196049] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:55:11.966 [DEBUG] [Thread-196049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:55:11.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:55:11.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:55:11.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:55:11.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:55:11.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:55:11.994 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:55:11.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:55:11.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:55:11.997 [DEBUG] [Thread-196049] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:55:11.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:55:11.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.746230 -999.00  +17.60  19.17     33   +1.20 1 1 1 1 1   140    0 15.52 -50.22 ----- 20.4 19.2 172.0 26.7 18.1 -26.0 18.0 -25.5 17.8 -24.3 18.0 -25.4
2025-11-24T19:55:11.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:55:11.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:55:11.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.746230
2025-11-24T19:55:12.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:55:12.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:55:12.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:55:12.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:55:12.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:55:12.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:54:49', tmtdew=19.15, humidity=26.96, cloud=0.0, wind=27.68, temperature=17.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:54:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:55:12.105 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:55:12.118 [DEBUG] [Thread-196052] [transport.py] [_log()] starting thread (client mode): 0xd3150520
2025-11-24T19:55:12.118 [DEBUG] [Thread-196052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:55:12.132 [DEBUG] [Thread-196052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:55:12.133 [INFO] [Thread-196052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:55:12.140 [DEBUG] [Thread-196052] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:55:12.141 [DEBUG] [Thread-196052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:55:12.141 [DEBUG] [Thread-196052] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:55:12.141 [DEBUG] [Thread-196052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:55:12.141 [DEBUG] [Thread-196052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:55:12.141 [DEBUG] [Thread-196052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:55:12.142 [DEBUG] [Thread-196052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:55:12.142 [DEBUG] [Thread-196052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:55:12.142 [DEBUG] [Thread-196052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:55:12.142 [DEBUG] [Thread-196052] [transport.py] [_log()] client lang: <none>
2025-11-24T19:55:12.142 [DEBUG] [Thread-196052] [transport.py] [_log()] server lang: <none>
2025-11-24T19:55:12.143 [DEBUG] [Thread-196052] [transport.py] [_log()] kex follows: False
2025-11-24T19:55:12.143 [DEBUG] [Thread-196052] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:55:12.143 [DEBUG] [Thread-196052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:55:12.143 [DEBUG] [Thread-196052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:55:12.143 [DEBUG] [Thread-196052] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:55:12.143 [DEBUG] [Thread-196052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:55:12.143 [DEBUG] [Thread-196052] [transport.py] [_log()] Compression: none
2025-11-24T19:55:12.143 [DEBUG] [Thread-196052] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:55:12.201 [DEBUG] [Thread-196052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:55:12.201 [DEBUG] [Thread-196052] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:55:12.202 [DEBUG] [Thread-196052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:55:12.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:55:12.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:55:12.257 [DEBUG] [Thread-196052] [transport.py] [_log()] userauth is OK
2025-11-24T19:55:12.257 [DEBUG] [Thread-196052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:55:12.257 [DEBUG] [Thread-196052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:55:12.257 [DEBUG] [Thread-196052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:55:12.257 [DEBUG] [Thread-196052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:55:12.280 [INFO] [Thread-196052] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:55:12.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:55:12.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:55:13.170 [DEBUG] [Thread-196052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:55:13.170 [DEBUG] [Thread-196052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:55:13.219 [DEBUG] [Thread-196052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:55:13.219 [DEBUG] [Thread-196052] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:55:13.227 [DEBUG] [Thread-196052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:55:13.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:55:13.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-11-24T19:55:13.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-11-24T19:55:13.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:55:13.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:55:13.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:55:13.260 [DEBUG] [Thread-196052] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:55:17.146 [DEBUG] [Thread-196054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:55:32.220 [DEBUG] [Thread-196055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:55:38.003 [DEBUG] [Thread-196056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:55:43.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:55:43.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:55:43.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:55:43.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 55, 22), 19.14, 26.98, 0.0, 27.98, 17.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:55:43.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:55:22
2025-11-24T19:55:44.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:55:44.309 [DEBUG] [Thread-196057] [transport.py] [_log()] starting thread (client mode): 0xc9b800a0
2025-11-24T19:55:44.309 [DEBUG] [Thread-196057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:55:44.324 [DEBUG] [Thread-196057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:55:44.324 [INFO] [Thread-196057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:55:44.328 [DEBUG] [Thread-196057] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] client lang: <none>
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] server lang: <none>
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] kex follows: False
2025-11-24T19:55:44.329 [DEBUG] [Thread-196057] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:55:44.330 [DEBUG] [Thread-196057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:55:44.330 [DEBUG] [Thread-196057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:55:44.330 [DEBUG] [Thread-196057] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:55:44.330 [DEBUG] [Thread-196057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:55:44.330 [DEBUG] [Thread-196057] [transport.py] [_log()] Compression: none
2025-11-24T19:55:44.331 [DEBUG] [Thread-196057] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:55:44.358 [DEBUG] [Thread-196057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:55:44.361 [DEBUG] [Thread-196057] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:55:44.363 [DEBUG] [Thread-196057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:55:44.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:55:44.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:55:44.366 [DEBUG] [Thread-196057] [transport.py] [_log()] userauth is OK
2025-11-24T19:55:44.367 [DEBUG] [Thread-196057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:55:44.367 [DEBUG] [Thread-196057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:55:44.367 [DEBUG] [Thread-196057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:55:44.367 [DEBUG] [Thread-196057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:55:44.392 [INFO] [Thread-196057] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:55:44.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:55:44.953 [DEBUG] [Thread-196057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:55:44.953 [DEBUG] [Thread-196057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:55:44.954 [DEBUG] [Thread-196057] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:55:44.994 [DEBUG] [Thread-196057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:55:44.994 [DEBUG] [Thread-196057] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:55:44.997 [DEBUG] [Thread-196057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:55:45.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:55:45.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:55:45.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:55:45.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:55:45.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:55:45.027 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:55:45.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:55:45.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:55:45.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:55:45.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.746925 -999.00  +17.60  16.96     33   +1.20 1 1 1 1 1   120    0 15.65 -50.33 ----- 19.5 17.0 164.6 27.6 18.0 -26.0 17.9 -25.6 17.7 -24.3 17.9 -25.3
2025-11-24T19:55:45.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:55:45.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:55:45.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.746925
2025-11-24T19:55:45.034 [DEBUG] [Thread-196057] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:55:45.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:55:45.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:55:45.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:55:45.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:55:45.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:55:45.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:55:22', tmtdew=19.14, humidity=26.98, cloud=0.0, wind=27.98, temperature=17.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:55:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:55:45.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:55:45.137 [DEBUG] [Thread-196060] [transport.py] [_log()] starting thread (client mode): 0xc9b80d30
2025-11-24T19:55:45.137 [DEBUG] [Thread-196060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:55:45.155 [DEBUG] [Thread-196060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:55:45.155 [INFO] [Thread-196060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] client lang: <none>
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] server lang: <none>
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] kex follows: False
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:55:45.164 [DEBUG] [Thread-196060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:55:45.165 [DEBUG] [Thread-196060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:55:45.165 [DEBUG] [Thread-196060] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:55:45.165 [DEBUG] [Thread-196060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:55:45.165 [DEBUG] [Thread-196060] [transport.py] [_log()] Compression: none
2025-11-24T19:55:45.165 [DEBUG] [Thread-196060] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:55:45.221 [DEBUG] [Thread-196060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:55:45.222 [DEBUG] [Thread-196060] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:55:45.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:55:45.223 [DEBUG] [Thread-196060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:55:45.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:55:45.281 [DEBUG] [Thread-196060] [transport.py] [_log()] userauth is OK
2025-11-24T19:55:45.281 [DEBUG] [Thread-196060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:55:45.281 [DEBUG] [Thread-196060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:55:45.281 [DEBUG] [Thread-196060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:55:45.282 [DEBUG] [Thread-196060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:55:45.300 [INFO] [Thread-196060] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:55:45.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:55:45.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:55:46.208 [DEBUG] [Thread-196060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:55:46.208 [DEBUG] [Thread-196060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:55:46.256 [DEBUG] [Thread-196060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:55:46.256 [DEBUG] [Thread-196060] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:55:46.264 [DEBUG] [Thread-196060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:55:46.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:55:46.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-11-24T19:55:46.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-11-24T19:55:46.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:55:46.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:55:46.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:55:46.300 [DEBUG] [Thread-196060] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:55:47.254 [DEBUG] [Thread-196062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:55:58.945 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:00.167 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:00.169 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:02.371 [DEBUG] [Thread-196063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:05.074 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:15.441 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:16.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:56:16.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:56:16.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-11-24T19:56:17.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 55, 54), 19.17, 27.42, 0.0, 23.66, 17.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:56:17.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:55:54
2025-11-24T19:56:17.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:56:17.405 [DEBUG] [Thread-196064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:17.463 [DEBUG] [Thread-196065] [transport.py] [_log()] starting thread (client mode): 0xd3136b30
2025-11-24T19:56:17.463 [DEBUG] [Thread-196065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:56:17.484 [DEBUG] [Thread-196065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:56:17.484 [INFO] [Thread-196065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:56:17.487 [DEBUG] [Thread-196065] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:56:17.487 [DEBUG] [Thread-196065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:56:17.487 [DEBUG] [Thread-196065] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] client lang: <none>
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] server lang: <none>
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] kex follows: False
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] Compression: none
2025-11-24T19:56:17.488 [DEBUG] [Thread-196065] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:56:17.505 [DEBUG] [Thread-196065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:56:17.505 [DEBUG] [Thread-196065] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:56:17.505 [DEBUG] [Thread-196065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:56:17.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:56:17.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:56:17.505 [DEBUG] [Thread-196065] [transport.py] [_log()] userauth is OK
2025-11-24T19:56:17.505 [DEBUG] [Thread-196065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:56:17.505 [DEBUG] [Thread-196065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:56:17.505 [DEBUG] [Thread-196065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:56:17.505 [DEBUG] [Thread-196065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:56:17.514 [INFO] [Thread-196065] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:56:17.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:56:18.278 [DEBUG] [Thread-196065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:56:18.278 [DEBUG] [Thread-196065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:56:18.278 [DEBUG] [Thread-196065] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:56:18.320 [DEBUG] [Thread-196065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:56:18.320 [DEBUG] [Thread-196065] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:56:18.322 [DEBUG] [Thread-196065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:56:18.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:56:18.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:56:18.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:56:18.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:56:18.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:56:18.341 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:56:18.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:56:18.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:56:18.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:56:18.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.747272 -999.00  +17.60  20.78     33   +1.20 1 1 1 1 1   110    0 15.42 -52.44 ----- 19.5 20.8 167.4 26.7 18.0 -26.0 17.9 -25.5 17.8 -24.3 17.9 -25.3
2025-11-24T19:56:18.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:56:18.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:56:18.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.747272
2025-11-24T19:56:18.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:56:18.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:56:18.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:56:18.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:56:18.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:56:18.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:55:54', tmtdew=19.17, humidity=27.42, cloud=0.0, wind=23.66, temperature=17.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:56:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:56:18.343 [DEBUG] [Thread-196065] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:56:18.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:56:18.429 [DEBUG] [Thread-196068] [transport.py] [_log()] starting thread (client mode): 0xc9b83be0
2025-11-24T19:56:18.429 [DEBUG] [Thread-196068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:56:18.444 [DEBUG] [Thread-196068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:56:18.444 [INFO] [Thread-196068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] client lang: <none>
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] server lang: <none>
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] kex follows: False
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:56:18.451 [DEBUG] [Thread-196068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:56:18.452 [DEBUG] [Thread-196068] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:56:18.452 [DEBUG] [Thread-196068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:56:18.452 [DEBUG] [Thread-196068] [transport.py] [_log()] Compression: none
2025-11-24T19:56:18.452 [DEBUG] [Thread-196068] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:56:18.507 [DEBUG] [Thread-196068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:56:18.507 [DEBUG] [Thread-196068] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:56:18.507 [DEBUG] [Thread-196068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:56:18.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:56:18.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:56:18.564 [DEBUG] [Thread-196068] [transport.py] [_log()] userauth is OK
2025-11-24T19:56:18.564 [DEBUG] [Thread-196068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:56:18.564 [DEBUG] [Thread-196068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:56:18.564 [DEBUG] [Thread-196068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:56:18.564 [DEBUG] [Thread-196068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:56:18.578 [INFO] [Thread-196068] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:56:18.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:56:18.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:56:19.436 [DEBUG] [Thread-196068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:56:19.436 [DEBUG] [Thread-196068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:56:19.484 [DEBUG] [Thread-196068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:56:19.484 [DEBUG] [Thread-196068] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:56:19.492 [DEBUG] [Thread-196068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:56:19.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:56:19.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T19:56:19.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T19:56:19.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:56:19.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:56:19.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:56:19.528 [DEBUG] [Thread-196068] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:56:24.815 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:32.446 [DEBUG] [Thread-196070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:35.362 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:38.250 [DEBUG] [Thread-196071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:41.460 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:47.567 [DEBUG] [Thread-196072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:49.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:56:49.525 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:56:49.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-11-24T19:56:49.845 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:56:50.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 56, 27), 19.13, 27.48, 0.0, 26.38, 17.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:56:50.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:56:27
2025-11-24T19:56:50.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:56:50.641 [DEBUG] [Thread-196073] [transport.py] [_log()] starting thread (client mode): 0xc9b83a30
2025-11-24T19:56:50.642 [DEBUG] [Thread-196073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:56:50.650 [DEBUG] [Thread-196073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:56:50.650 [INFO] [Thread-196073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] client lang: <none>
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] server lang: <none>
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] kex follows: False
2025-11-24T19:56:50.652 [DEBUG] [Thread-196073] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:56:50.653 [DEBUG] [Thread-196073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:56:50.653 [DEBUG] [Thread-196073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:56:50.653 [DEBUG] [Thread-196073] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:56:50.653 [DEBUG] [Thread-196073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:56:50.653 [DEBUG] [Thread-196073] [transport.py] [_log()] Compression: none
2025-11-24T19:56:50.653 [DEBUG] [Thread-196073] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:56:50.683 [DEBUG] [Thread-196073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:56:50.688 [DEBUG] [Thread-196073] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:56:50.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:56:50.692 [DEBUG] [Thread-196073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:56:50.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:56:50.695 [DEBUG] [Thread-196073] [transport.py] [_log()] userauth is OK
2025-11-24T19:56:50.695 [DEBUG] [Thread-196073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:56:50.695 [DEBUG] [Thread-196073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:56:50.696 [DEBUG] [Thread-196073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:56:50.696 [DEBUG] [Thread-196073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:56:50.715 [INFO] [Thread-196073] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:56:50.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:56:51.267 [DEBUG] [Thread-196073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:56:51.267 [DEBUG] [Thread-196073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:56:51.277 [DEBUG] [Thread-196073] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:56:51.308 [DEBUG] [Thread-196073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:56:51.308 [DEBUG] [Thread-196073] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:56:51.310 [DEBUG] [Thread-196073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:56:51.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:56:51.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:56:51.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:56:51.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:56:51.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:56:51.322 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:56:51.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:56:51.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:56:51.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:56:51.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.747619 -999.00  +17.60  18.61     33   +1.20 1 1 1 1 1   102    0 15.35 -49.70 ----- 20.8 18.6 168.8 29.7 17.9 -26.0 17.9 -25.5 17.7 -24.3 18.0 -25.3
2025-11-24T19:56:51.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:56:51.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:56:51.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.747619
2025-11-24T19:56:51.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:56:51.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:56:51.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:56:51.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:56:51.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:56:51.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:56:27', tmtdew=19.13, humidity=27.48, cloud=0.0, wind=26.38, temperature=17.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:56:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:56:51.328 [DEBUG] [Thread-196073] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:56:51.402 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:56:51.414 [DEBUG] [Thread-196076] [transport.py] [_log()] starting thread (client mode): 0xd073baf0
2025-11-24T19:56:51.415 [DEBUG] [Thread-196076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:56:51.429 [DEBUG] [Thread-196076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:56:51.429 [INFO] [Thread-196076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] client lang: <none>
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] server lang: <none>
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] kex follows: False
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] Compression: none
2025-11-24T19:56:51.437 [DEBUG] [Thread-196076] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:56:51.495 [DEBUG] [Thread-196076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:56:51.495 [DEBUG] [Thread-196076] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:56:51.495 [DEBUG] [Thread-196076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:56:51.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:56:51.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:56:51.552 [DEBUG] [Thread-196076] [transport.py] [_log()] userauth is OK
2025-11-24T19:56:51.553 [DEBUG] [Thread-196076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:56:51.553 [DEBUG] [Thread-196076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:56:51.553 [DEBUG] [Thread-196076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:56:51.553 [DEBUG] [Thread-196076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:56:51.571 [INFO] [Thread-196076] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:56:51.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:56:51.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:56:52.415 [DEBUG] [Thread-196076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:56:52.415 [DEBUG] [Thread-196076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:56:52.463 [DEBUG] [Thread-196076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:56:52.463 [DEBUG] [Thread-196076] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:56:52.472 [DEBUG] [Thread-196076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:56:52.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:56:52.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-11-24T19:56:52.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-11-24T19:56:52.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:56:52.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:56:52.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:56:52.509 [DEBUG] [Thread-196076] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:56:57.265 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:02.631 [DEBUG] [Thread-196078 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:07.564 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:07.889 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:07.890 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:13.625 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:17.727 [DEBUG] [Thread-196079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:21.005 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:22.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:57:22.533 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:57:22.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-11-24T19:57:23.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 56, 27), 19.13, 27.48, 0.0, 26.38, 17.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:57:23.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:56:27
2025-11-24T19:57:23.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:57:24.128 [DEBUG] [Thread-196080] [transport.py] [_log()] starting thread (client mode): 0xd3135690
2025-11-24T19:57:24.129 [DEBUG] [Thread-196080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:57:24.141 [DEBUG] [Thread-196080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:57:24.141 [INFO] [Thread-196080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:57:24.146 [DEBUG] [Thread-196080] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:57:24.146 [DEBUG] [Thread-196080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:57:24.146 [DEBUG] [Thread-196080] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:57:24.146 [DEBUG] [Thread-196080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:57:24.146 [DEBUG] [Thread-196080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:57:24.146 [DEBUG] [Thread-196080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:57:24.146 [DEBUG] [Thread-196080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:57:24.146 [DEBUG] [Thread-196080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:57:24.147 [DEBUG] [Thread-196080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:57:24.147 [DEBUG] [Thread-196080] [transport.py] [_log()] client lang: <none>
2025-11-24T19:57:24.147 [DEBUG] [Thread-196080] [transport.py] [_log()] server lang: <none>
2025-11-24T19:57:24.147 [DEBUG] [Thread-196080] [transport.py] [_log()] kex follows: False
2025-11-24T19:57:24.147 [DEBUG] [Thread-196080] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:57:24.148 [DEBUG] [Thread-196080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:57:24.148 [DEBUG] [Thread-196080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:57:24.148 [DEBUG] [Thread-196080] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:57:24.149 [DEBUG] [Thread-196080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:57:24.149 [DEBUG] [Thread-196080] [transport.py] [_log()] Compression: none
2025-11-24T19:57:24.149 [DEBUG] [Thread-196080] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:57:24.186 [DEBUG] [Thread-196080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:57:24.191 [DEBUG] [Thread-196080] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:57:24.193 [DEBUG] [Thread-196080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:57:24.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:57:24.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:57:24.199 [DEBUG] [Thread-196080] [transport.py] [_log()] userauth is OK
2025-11-24T19:57:24.199 [DEBUG] [Thread-196080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:57:24.199 [DEBUG] [Thread-196080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:57:24.199 [DEBUG] [Thread-196080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:57:24.199 [DEBUG] [Thread-196080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:57:24.226 [INFO] [Thread-196080] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:57:24.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:57:24.818 [DEBUG] [Thread-196080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:57:24.818 [DEBUG] [Thread-196080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:57:24.820 [DEBUG] [Thread-196080] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:57:24.859 [DEBUG] [Thread-196080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:57:24.859 [DEBUG] [Thread-196080] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:57:24.863 [DEBUG] [Thread-196080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:57:24.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:57:24.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:57:24.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:57:24.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:57:24.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:57:24.882 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:57:24.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:57:24.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:57:24.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:57:24.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.747967 -999.00  +17.60  20.45     33   +1.20 1 1 1 1 1    94    0 15.53 -49.47 ----- 18.7 20.4 172.4 25.5 17.9 -26.0 17.9 -25.6 17.7 -24.4 17.9 -25.5
2025-11-24T19:57:24.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:57:24.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:57:24.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.747967
2025-11-24T19:57:24.890 [DEBUG] [Thread-196080] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:57:24.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:57:24.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:57:24.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:57:24.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:57:24.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:57:24.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:56:27', tmtdew=19.13, humidity=27.48, cloud=0.0, wind=26.38, temperature=17.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:57:04.349', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:57:24.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:57:24.986 [DEBUG] [Thread-196083] [transport.py] [_log()] starting thread (client mode): 0xd3153c40
2025-11-24T19:57:24.986 [DEBUG] [Thread-196083] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:57:25.001 [DEBUG] [Thread-196083] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:57:25.001 [INFO] [Thread-196083] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:57:25.008 [DEBUG] [Thread-196083] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] client lang: <none>
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] server lang: <none>
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] kex follows: False
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] Compression: none
2025-11-24T19:57:25.009 [DEBUG] [Thread-196083] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:57:25.071 [DEBUG] [Thread-196083] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:57:25.071 [DEBUG] [Thread-196083] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:57:25.071 [DEBUG] [Thread-196083] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:57:25.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:57:25.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:57:25.128 [DEBUG] [Thread-196083] [transport.py] [_log()] userauth is OK
2025-11-24T19:57:25.128 [DEBUG] [Thread-196083] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:57:25.128 [DEBUG] [Thread-196083] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:57:25.128 [DEBUG] [Thread-196083] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:57:25.128 [DEBUG] [Thread-196083] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:57:25.142 [INFO] [Thread-196083] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:57:25.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:57:25.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:57:25.975 [DEBUG] [Thread-196083] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:57:25.975 [DEBUG] [Thread-196083] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:57:26.023 [DEBUG] [Thread-196083] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:57:26.024 [DEBUG] [Thread-196083] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:57:26.033 [DEBUG] [Thread-196083] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:57:26.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:57:26.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-11-24T19:57:26.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-11-24T19:57:26.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:57:26.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:57:26.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:57:26.071 [DEBUG] [Thread-196083] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:57:28.368 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:32.786 [DEBUG] [Thread-196085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:35.978 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:38.512 [DEBUG] [Thread-196086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:42.080 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:47.903 [DEBUG] [Thread-196087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:49.480 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:56.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:57:56.096 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:57:56.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T19:57:56.844 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:57:57.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 57, 32), 19.04, 27.56, 0.0, 22.73, 17.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:57:57.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:57:32
2025-11-24T19:57:57.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:57:57.511 [DEBUG] [Thread-196088] [transport.py] [_log()] starting thread (client mode): 0xd31526e0
2025-11-24T19:57:57.512 [DEBUG] [Thread-196088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:57:57.513 [DEBUG] [Thread-196088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:57:57.513 [INFO] [Thread-196088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:57:57.516 [DEBUG] [Thread-196088] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:57:57.516 [DEBUG] [Thread-196088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:57:57.516 [DEBUG] [Thread-196088] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] client lang: <none>
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] server lang: <none>
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] kex follows: False
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:57:57.517 [DEBUG] [Thread-196088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:57:57.518 [DEBUG] [Thread-196088] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:57:57.518 [DEBUG] [Thread-196088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:57:57.518 [DEBUG] [Thread-196088] [transport.py] [_log()] Compression: none
2025-11-24T19:57:57.518 [DEBUG] [Thread-196088] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:57:57.543 [DEBUG] [Thread-196088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:57:57.547 [DEBUG] [Thread-196088] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:57:57.550 [DEBUG] [Thread-196088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:57:57.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:57:57.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:57:57.556 [DEBUG] [Thread-196088] [transport.py] [_log()] userauth is OK
2025-11-24T19:57:57.556 [DEBUG] [Thread-196088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:57:57.556 [DEBUG] [Thread-196088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:57:57.556 [DEBUG] [Thread-196088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:57:57.557 [DEBUG] [Thread-196088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:57:57.586 [INFO] [Thread-196088] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:57:57.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:57:58.186 [DEBUG] [Thread-196088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:57:58.186 [DEBUG] [Thread-196088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:57:58.187 [DEBUG] [Thread-196088] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:57:58.227 [DEBUG] [Thread-196088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:57:58.227 [DEBUG] [Thread-196088] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:57:58.229 [DEBUG] [Thread-196088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:57:58.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:57:58.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:57:58.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:57:58.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:57:58.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:57:58.245 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:57:58.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:57:58.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:57:58.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:57:58.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.748314 -999.00  +17.60  16.65     33   +1.20 1 1 1 1 1    86    0 15.64 -50.96 ----- 16.8 16.6 168.7 26.5 17.9 -25.8 17.9 -25.6 17.7 -24.3 17.9 -25.3
2025-11-24T19:57:58.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:57:58.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:57:58.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.748314
2025-11-24T19:57:58.252 [DEBUG] [Thread-196088] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:57:58.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:57:58.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:57:58.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:57:58.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:57:58.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:57:58.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:57:32', tmtdew=19.04, humidity=27.56, cloud=0.0, wind=22.73, temperature=17.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:57:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:57:58.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:57:58.347 [DEBUG] [Thread-196091] [transport.py] [_log()] starting thread (client mode): 0xd07f8640
2025-11-24T19:57:58.347 [DEBUG] [Thread-196091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:57:58.362 [DEBUG] [Thread-196091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:57:58.362 [INFO] [Thread-196091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] client lang: <none>
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] server lang: <none>
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] kex follows: False
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:57:58.369 [DEBUG] [Thread-196091] [transport.py] [_log()] Compression: none
2025-11-24T19:57:58.370 [DEBUG] [Thread-196091] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:57:58.427 [DEBUG] [Thread-196091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:57:58.427 [DEBUG] [Thread-196091] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:57:58.428 [DEBUG] [Thread-196091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:57:58.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:57:58.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:57:58.484 [DEBUG] [Thread-196091] [transport.py] [_log()] userauth is OK
2025-11-24T19:57:58.484 [DEBUG] [Thread-196091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:57:58.485 [DEBUG] [Thread-196091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:57:58.485 [DEBUG] [Thread-196091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:57:58.485 [DEBUG] [Thread-196091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:57:58.498 [INFO] [Thread-196091] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:57:58.498 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:57:58.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:57:59.311 [DEBUG] [Thread-196091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:57:59.311 [DEBUG] [Thread-196091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:57:59.360 [DEBUG] [Thread-196091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:57:59.360 [DEBUG] [Thread-196091] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:57:59.369 [DEBUG] [Thread-196091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:57:59.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:57:59.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-11-24T19:57:59.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-11-24T19:57:59.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:57:59.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:57:59.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:57:59.418 [DEBUG] [Thread-196091] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:58:02.953 [DEBUG] [Thread-196093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:04.347 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:10.416 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:15.001 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:15.003 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:17.835 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:18.033 [DEBUG] [Thread-196094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:25.219 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:29.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:58:29.423 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:58:29.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-11-24T19:58:30.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 58, 5), 19.02, 27.6, 0.0, 22.6, 17.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:58:30.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:58:05
2025-11-24T19:58:30.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:58:30.558 [DEBUG] [Thread-196095] [transport.py] [_log()] starting thread (client mode): 0xc9b82a10
2025-11-24T19:58:30.559 [DEBUG] [Thread-196095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:58:30.567 [DEBUG] [Thread-196095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:58:30.567 [INFO] [Thread-196095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] client lang: <none>
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] server lang: <none>
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] kex follows: False
2025-11-24T19:58:30.571 [DEBUG] [Thread-196095] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:58:30.572 [DEBUG] [Thread-196095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:58:30.572 [DEBUG] [Thread-196095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:58:30.572 [DEBUG] [Thread-196095] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:58:30.572 [DEBUG] [Thread-196095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:58:30.572 [DEBUG] [Thread-196095] [transport.py] [_log()] Compression: none
2025-11-24T19:58:30.572 [DEBUG] [Thread-196095] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:58:30.596 [DEBUG] [Thread-196095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:58:30.599 [DEBUG] [Thread-196095] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:58:30.600 [DEBUG] [Thread-196095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:58:30.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:58:30.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:58:30.603 [DEBUG] [Thread-196095] [transport.py] [_log()] userauth is OK
2025-11-24T19:58:30.603 [DEBUG] [Thread-196095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:58:30.603 [DEBUG] [Thread-196095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:58:30.603 [DEBUG] [Thread-196095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:58:30.603 [DEBUG] [Thread-196095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:58:30.621 [INFO] [Thread-196095] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:58:30.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:58:31.189 [DEBUG] [Thread-196095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:58:31.189 [DEBUG] [Thread-196095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:58:31.199 [DEBUG] [Thread-196095] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:58:31.230 [DEBUG] [Thread-196095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:58:31.230 [DEBUG] [Thread-196095] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:58:31.232 [DEBUG] [Thread-196095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:58:31.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:58:31.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:58:31.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:58:31.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:58:31.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:58:31.245 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:58:31.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:58:31.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:58:31.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:58:31.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.748661 -999.00  +17.50  16.78     33   +1.20 1 1 1 1 1    80    0 15.54 -48.22 ----- 17.1 16.8 165.8 29.0 17.9 -25.9 17.9 -25.5 17.6 -24.3 17.9 -25.2
2025-11-24T19:58:31.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:58:31.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:58:31.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.748661
2025-11-24T19:58:31.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:58:31.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:58:31.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:58:31.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:58:31.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:58:31.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:58:05', tmtdew=19.02, humidity=27.6, cloud=0.0, wind=22.6, temperature=17.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:58:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:58:31.254 [DEBUG] [Thread-196095] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:58:31.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:58:31.338 [DEBUG] [Thread-196098] [transport.py] [_log()] starting thread (client mode): 0xc9b81ea0
2025-11-24T19:58:31.338 [DEBUG] [Thread-196098] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:58:31.353 [DEBUG] [Thread-196098] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:58:31.353 [INFO] [Thread-196098] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:58:31.360 [DEBUG] [Thread-196098] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:58:31.360 [DEBUG] [Thread-196098] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:58:31.360 [DEBUG] [Thread-196098] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:58:31.360 [DEBUG] [Thread-196098] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:58:31.360 [DEBUG] [Thread-196098] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:58:31.360 [DEBUG] [Thread-196098] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:58:31.360 [DEBUG] [Thread-196098] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:58:31.360 [DEBUG] [Thread-196098] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:58:31.360 [DEBUG] [Thread-196098] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:58:31.360 [DEBUG] [Thread-196098] [transport.py] [_log()] client lang: <none>
2025-11-24T19:58:31.361 [DEBUG] [Thread-196098] [transport.py] [_log()] server lang: <none>
2025-11-24T19:58:31.361 [DEBUG] [Thread-196098] [transport.py] [_log()] kex follows: False
2025-11-24T19:58:31.361 [DEBUG] [Thread-196098] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:58:31.361 [DEBUG] [Thread-196098] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:58:31.361 [DEBUG] [Thread-196098] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:58:31.361 [DEBUG] [Thread-196098] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:58:31.361 [DEBUG] [Thread-196098] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:58:31.361 [DEBUG] [Thread-196098] [transport.py] [_log()] Compression: none
2025-11-24T19:58:31.361 [DEBUG] [Thread-196098] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:58:31.424 [DEBUG] [Thread-196098] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:58:31.424 [DEBUG] [Thread-196098] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:58:31.424 [DEBUG] [Thread-196098] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:58:31.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:58:31.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:58:31.481 [DEBUG] [Thread-196098] [transport.py] [_log()] userauth is OK
2025-11-24T19:58:31.481 [DEBUG] [Thread-196098] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:58:31.481 [DEBUG] [Thread-196098] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:58:31.481 [DEBUG] [Thread-196098] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:58:31.481 [DEBUG] [Thread-196098] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:58:31.507 [INFO] [Thread-196098] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:58:31.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:58:31.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:58:32.336 [DEBUG] [Thread-196098] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:58:32.336 [DEBUG] [Thread-196098] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:58:32.384 [DEBUG] [Thread-196098] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:58:32.384 [DEBUG] [Thread-196098] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:58:32.392 [DEBUG] [Thread-196098] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:58:32.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:58: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')
2025-11-24T19:58:32.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-11-24T19:58:32.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:58:32.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:58:32.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:58:32.433 [DEBUG] [Thread-196098] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:58:33.084 [DEBUG] [Thread-196100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:36.890 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:38.785 [DEBUG] [Thread-196101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:41.995 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:48.154 [DEBUG] [Thread-196102 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:49.384 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:58:56.794 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:01.220 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:02.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:59:02.459 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:59:02.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-11-24T19:59:03.183 [DEBUG] [Thread-196103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:03.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 58, 37), 19.01, 27.63, 0.0, 29.06, 17.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:59:03.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:58:37
2025-11-24T19:59:03.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:59:03.603 [DEBUG] [Thread-196104] [transport.py] [_log()] starting thread (client mode): 0xd3152a40
2025-11-24T19:59:03.604 [DEBUG] [Thread-196104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:59:03.607 [DEBUG] [Thread-196104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:59:03.607 [INFO] [Thread-196104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:59:03.611 [DEBUG] [Thread-196104] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] client lang: <none>
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] server lang: <none>
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] kex follows: False
2025-11-24T19:59:03.612 [DEBUG] [Thread-196104] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:59:03.613 [DEBUG] [Thread-196104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:59:03.613 [DEBUG] [Thread-196104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:59:03.613 [DEBUG] [Thread-196104] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:59:03.613 [DEBUG] [Thread-196104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:59:03.613 [DEBUG] [Thread-196104] [transport.py] [_log()] Compression: none
2025-11-24T19:59:03.613 [DEBUG] [Thread-196104] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:59:03.641 [DEBUG] [Thread-196104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:59:03.646 [DEBUG] [Thread-196104] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:59:03.648 [DEBUG] [Thread-196104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:59:03.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:59:03.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:59:03.653 [DEBUG] [Thread-196104] [transport.py] [_log()] userauth is OK
2025-11-24T19:59:03.654 [DEBUG] [Thread-196104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:59:03.654 [DEBUG] [Thread-196104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:59:03.654 [DEBUG] [Thread-196104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:59:03.654 [DEBUG] [Thread-196104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:59:03.680 [INFO] [Thread-196104] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:59:03.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:59:04.254 [DEBUG] [Thread-196104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:59:04.255 [DEBUG] [Thread-196104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:59:04.256 [DEBUG] [Thread-196104] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:59:04.295 [DEBUG] [Thread-196104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:59:04.296 [DEBUG] [Thread-196104] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:59:04.299 [DEBUG] [Thread-196104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:59:04.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:59:04.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:59:04.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:59:04.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:59:04.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:59:04.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:59:04.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:59:04.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:59:04.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:59:04.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.749008 -999.00  +17.60  16.92     33   +1.20 1 1 1 1 1    73    0 15.18 -52.09 ----- 20.3 16.9 176.8 25.2 17.9 -26.0 17.9 -25.6 17.6 -24.4 17.9 -25.3
2025-11-24T19:59:04.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:59:04.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:59:04.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.749008
2025-11-24T19:59:04.323 [DEBUG] [Thread-196104] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:59:04.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:59:04.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:59:04.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:59:04.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:59:04.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:59:04.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:58:37', tmtdew=19.01, humidity=27.63, cloud=0.0, wind=29.06, temperature=17.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:58:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:59:04.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:59:04.438 [DEBUG] [Thread-196107] [transport.py] [_log()] starting thread (client mode): 0xd0739b40
2025-11-24T19:59:04.438 [DEBUG] [Thread-196107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:59:04.452 [DEBUG] [Thread-196107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:59:04.453 [INFO] [Thread-196107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:59:04.460 [DEBUG] [Thread-196107] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:59:04.460 [DEBUG] [Thread-196107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:59:04.460 [DEBUG] [Thread-196107] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:59:04.460 [DEBUG] [Thread-196107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:59:04.461 [DEBUG] [Thread-196107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:59:04.461 [DEBUG] [Thread-196107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:59:04.461 [DEBUG] [Thread-196107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:59:04.461 [DEBUG] [Thread-196107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:59:04.461 [DEBUG] [Thread-196107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:59:04.461 [DEBUG] [Thread-196107] [transport.py] [_log()] client lang: <none>
2025-11-24T19:59:04.461 [DEBUG] [Thread-196107] [transport.py] [_log()] server lang: <none>
2025-11-24T19:59:04.461 [DEBUG] [Thread-196107] [transport.py] [_log()] kex follows: False
2025-11-24T19:59:04.461 [DEBUG] [Thread-196107] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:59:04.462 [DEBUG] [Thread-196107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:59:04.462 [DEBUG] [Thread-196107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:59:04.462 [DEBUG] [Thread-196107] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:59:04.462 [DEBUG] [Thread-196107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:59:04.462 [DEBUG] [Thread-196107] [transport.py] [_log()] Compression: none
2025-11-24T19:59:04.462 [DEBUG] [Thread-196107] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:59:04.521 [DEBUG] [Thread-196107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:59:04.522 [DEBUG] [Thread-196107] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:59:04.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:59:04.523 [DEBUG] [Thread-196107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:59:04.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:59:04.581 [DEBUG] [Thread-196107] [transport.py] [_log()] userauth is OK
2025-11-24T19:59:04.581 [DEBUG] [Thread-196107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:59:04.581 [DEBUG] [Thread-196107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:59:04.581 [DEBUG] [Thread-196107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:59:04.581 [DEBUG] [Thread-196107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:59:04.600 [INFO] [Thread-196107] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:59:04.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:59:04.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:59:05.437 [DEBUG] [Thread-196107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:59:05.437 [DEBUG] [Thread-196107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:59:05.485 [DEBUG] [Thread-196107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:59:05.485 [DEBUG] [Thread-196107] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:59:05.494 [DEBUG] [Thread-196107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:59:05.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:59:05.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-11-24T19:59:05.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-11-24T19:59:05.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:59:05.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:59:05.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:59:05.542 [DEBUG] [Thread-196107] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:59:06.297 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:13.820 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:18.216 [DEBUG] [Thread-196109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:21.284 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:22.154 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:22.156 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:33.287 [DEBUG] [Thread-196110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:35.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T19:59:35.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T19:59:35.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-11-24T19:59:36.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 59, 10), 19.01, 27.61, 0.0, 27.19, 17.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T19:59:36.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:59:10
2025-11-24T19:59:36.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T19:59:36.722 [DEBUG] [Thread-196111] [transport.py] [_log()] starting thread (client mode): 0xd07f8eb0
2025-11-24T19:59:36.722 [DEBUG] [Thread-196111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:59:36.732 [DEBUG] [Thread-196111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T19:59:36.732 [INFO] [Thread-196111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] client lang: <none>
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] server lang: <none>
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] kex follows: False
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:59:36.734 [DEBUG] [Thread-196111] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:59:36.735 [DEBUG] [Thread-196111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:59:36.735 [DEBUG] [Thread-196111] [transport.py] [_log()] Compression: none
2025-11-24T19:59:36.735 [DEBUG] [Thread-196111] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:59:36.746 [DEBUG] [Thread-196111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:59:36.746 [DEBUG] [Thread-196111] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:59:36.746 [DEBUG] [Thread-196111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T19:59:36.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T19:59:36.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:59:36.746 [DEBUG] [Thread-196111] [transport.py] [_log()] userauth is OK
2025-11-24T19:59:36.746 [DEBUG] [Thread-196111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:59:36.747 [DEBUG] [Thread-196111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:59:36.747 [DEBUG] [Thread-196111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T19:59:36.747 [DEBUG] [Thread-196111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:59:36.755 [INFO] [Thread-196111] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:59:36.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:59:37.368 [DEBUG] [Thread-196111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:59:37.368 [DEBUG] [Thread-196111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:59:37.368 [DEBUG] [Thread-196111] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T19:59:37.409 [DEBUG] [Thread-196111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:59:37.409 [DEBUG] [Thread-196111] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:59:37.411 [DEBUG] [Thread-196111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:59:37.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:59:37.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T19:59:37.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T19:59:37.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T19:59:37.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:59:37.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T19:59:37.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.749355 -999.00  +17.50  16.98     33   +1.20 1 1 1 1 1    67    0 15.24 -49.54 ----- 18.2 17.0 165.0 27.6 17.9 -25.9 17.8 -25.5 17.6 -24.3 17.9 -25.2
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.749355
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T19:59:37.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:59:10', tmtdew=19.01, humidity=27.61, cloud=0.0, wind=27.19, temperature=17.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T17:59:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T19:59:37.422 [DEBUG] [Thread-196111] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:59:37.496 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T19:59:37.509 [DEBUG] [Thread-196114] [transport.py] [_log()] starting thread (client mode): 0xd31365f0
2025-11-24T19:59:37.509 [DEBUG] [Thread-196114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T19:59:37.524 [DEBUG] [Thread-196114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T19:59:37.524 [INFO] [Thread-196114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] client lang: <none>
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] server lang: <none>
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] kex follows: False
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T19:59:37.532 [DEBUG] [Thread-196114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T19:59:37.533 [DEBUG] [Thread-196114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T19:59:37.533 [DEBUG] [Thread-196114] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T19:59:37.533 [DEBUG] [Thread-196114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T19:59:37.533 [DEBUG] [Thread-196114] [transport.py] [_log()] Compression: none
2025-11-24T19:59:37.533 [DEBUG] [Thread-196114] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T19:59:37.593 [DEBUG] [Thread-196114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T19:59:37.593 [DEBUG] [Thread-196114] [transport.py] [_log()] Switch to new keys ...
2025-11-24T19:59:37.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T19:59:37.594 [DEBUG] [Thread-196114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T19:59:37.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T19:59:37.648 [DEBUG] [Thread-196114] [transport.py] [_log()] userauth is OK
2025-11-24T19:59:37.648 [DEBUG] [Thread-196114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T19:59:37.648 [DEBUG] [Thread-196114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T19:59:37.648 [DEBUG] [Thread-196114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T19:59:37.648 [DEBUG] [Thread-196114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T19:59:37.662 [INFO] [Thread-196114] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T19:59:37.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T19:59:37.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T19:59:38.555 [DEBUG] [Thread-196114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T19:59:38.556 [DEBUG] [Thread-196114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T19:59:38.603 [DEBUG] [Thread-196114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T19:59:38.604 [DEBUG] [Thread-196114] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T19:59:38.612 [DEBUG] [Thread-196114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T19:59:38.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T19:59:38.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-11-24T19:59:38.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-11-24T19:59:38.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T19:59:38.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T19:59:38.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T19:59:38.647 [DEBUG] [Thread-196114] [transport.py] [_log()] EOF in transport thread
2025-11-24T19:59:39.041 [DEBUG] [Thread-196116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T19:59:48.368 [DEBUG] [Thread-196117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:00:03.461 [DEBUG] [Thread-196118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:00:08.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:00:08.659 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:00:08.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-11-24T20:00:09.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 19, 59, 42), 18.97, 27.7, 0.0, 24.21, 17.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:00:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 19:59:42
2025-11-24T20:00:10.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:00:10.211 [DEBUG] [Thread-196119] [transport.py] [_log()] starting thread (client mode): 0xc9b83370
2025-11-24T20:00:10.212 [DEBUG] [Thread-196119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:00:10.223 [DEBUG] [Thread-196119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:00:10.223 [INFO] [Thread-196119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] client lang: <none>
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] server lang: <none>
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] kex follows: False
2025-11-24T20:00:10.227 [DEBUG] [Thread-196119] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:00:10.228 [DEBUG] [Thread-196119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:00:10.228 [DEBUG] [Thread-196119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:00:10.228 [DEBUG] [Thread-196119] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:00:10.228 [DEBUG] [Thread-196119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:00:10.228 [DEBUG] [Thread-196119] [transport.py] [_log()] Compression: none
2025-11-24T20:00:10.228 [DEBUG] [Thread-196119] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:00:10.251 [DEBUG] [Thread-196119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:00:10.255 [DEBUG] [Thread-196119] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:00:10.256 [DEBUG] [Thread-196119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:00:10.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:00:10.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:00:10.260 [DEBUG] [Thread-196119] [transport.py] [_log()] userauth is OK
2025-11-24T20:00:10.260 [DEBUG] [Thread-196119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:00:10.260 [DEBUG] [Thread-196119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:00:10.260 [DEBUG] [Thread-196119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:00:10.260 [DEBUG] [Thread-196119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:00:10.277 [INFO] [Thread-196119] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:00:10.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:00:10.873 [DEBUG] [Thread-196119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:00:10.873 [DEBUG] [Thread-196119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:00:10.874 [DEBUG] [Thread-196119] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:00:10.913 [DEBUG] [Thread-196119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:00:10.913 [DEBUG] [Thread-196119] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:00:10.916 [DEBUG] [Thread-196119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:00:10.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:00:10.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:00:10.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:00:10.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:00:10.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:00:10.929 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:00:10.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:00:10.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:00:10.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:00:10.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.750050 -999.00  +17.50  15.82     33   +1.20 1 1 1 1 1    57    0 15.26 -51.25 ----- 15.2 15.8 167.6 24.4 17.9 -25.9 17.8 -25.4 17.6 -24.3 17.9 -25.3
2025-11-24T20:00:10.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:00:10.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:00:10.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.750050
2025-11-24T20:00:10.937 [DEBUG] [Thread-196119] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:00:10.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:00:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:00:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:00:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:00:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:00:10.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T19:59:42', tmtdew=18.97, humidity=27.7, cloud=0.0, wind=24.21, temperature=17.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:00:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:00:11.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:00:11.036 [DEBUG] [Thread-196122] [transport.py] [_log()] starting thread (client mode): 0xd07f8a30
2025-11-24T20:00:11.036 [DEBUG] [Thread-196122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:00:11.051 [DEBUG] [Thread-196122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:00:11.051 [INFO] [Thread-196122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] client lang: <none>
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] server lang: <none>
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] kex follows: False
2025-11-24T20:00:11.058 [DEBUG] [Thread-196122] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:00:11.059 [DEBUG] [Thread-196122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:00:11.059 [DEBUG] [Thread-196122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:00:11.059 [DEBUG] [Thread-196122] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:00:11.059 [DEBUG] [Thread-196122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:00:11.059 [DEBUG] [Thread-196122] [transport.py] [_log()] Compression: none
2025-11-24T20:00:11.059 [DEBUG] [Thread-196122] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:00:11.114 [DEBUG] [Thread-196122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:00:11.115 [DEBUG] [Thread-196122] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:00:11.115 [DEBUG] [Thread-196122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:00:11.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:00:11.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:00:11.172 [DEBUG] [Thread-196122] [transport.py] [_log()] userauth is OK
2025-11-24T20:00:11.172 [DEBUG] [Thread-196122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:00:11.172 [DEBUG] [Thread-196122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:00:11.172 [DEBUG] [Thread-196122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:00:11.172 [DEBUG] [Thread-196122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:00:11.190 [INFO] [Thread-196122] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:00:11.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:00:11.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:00:12.015 [DEBUG] [Thread-196122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:00:12.015 [DEBUG] [Thread-196122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:00:12.063 [DEBUG] [Thread-196122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:00:12.063 [DEBUG] [Thread-196122] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:00:12.071 [DEBUG] [Thread-196122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:00:12.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:00:12.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-11-24T20:00:12.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-11-24T20:00:12.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:00:12.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:00:12.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:00:12.106 [DEBUG] [Thread-196122] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:00:18.494 [DEBUG] [Thread-196124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:00:30.217 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:00:30.219 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:00:33.534 [DEBUG] [Thread-196125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:00:39.377 [DEBUG] [Thread-196126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:00:42.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:00:42.129 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:00:42.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-11-24T20:00:42.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 0, 15), 18.96, 27.7, 0.0, 22.78, 17.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:00:42.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:00:15
2025-11-24T20:00:43.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:00:43.271 [DEBUG] [Thread-196127] [transport.py] [_log()] starting thread (client mode): 0xd0787730
2025-11-24T20:00:43.271 [DEBUG] [Thread-196127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:00:43.288 [DEBUG] [Thread-196127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:00:43.289 [INFO] [Thread-196127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:00:43.290 [DEBUG] [Thread-196127] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:00:43.290 [DEBUG] [Thread-196127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:00:43.290 [DEBUG] [Thread-196127] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] client lang: <none>
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] server lang: <none>
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] kex follows: False
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] Compression: none
2025-11-24T20:00:43.291 [DEBUG] [Thread-196127] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:00:43.302 [DEBUG] [Thread-196127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:00:43.303 [DEBUG] [Thread-196127] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:00:43.303 [DEBUG] [Thread-196127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:00:43.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:00:43.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:00:43.305 [DEBUG] [Thread-196127] [transport.py] [_log()] userauth is OK
2025-11-24T20:00:43.305 [DEBUG] [Thread-196127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:00:43.305 [DEBUG] [Thread-196127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:00:43.305 [DEBUG] [Thread-196127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:00:43.305 [DEBUG] [Thread-196127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:00:43.327 [INFO] [Thread-196127] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:00:43.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:00:43.961 [DEBUG] [Thread-196127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:00:43.961 [DEBUG] [Thread-196127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:00:43.961 [DEBUG] [Thread-196127] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:00:44.002 [DEBUG] [Thread-196127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:00:44.002 [DEBUG] [Thread-196127] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:00:44.004 [DEBUG] [Thread-196127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:00:44.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:00:44.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:00:44.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:00:44.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:00:44.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:00:44.028 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:00:44.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:00:44.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:00:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:00:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.750397 -999.00  +17.50  13.97     33   +1.20 1 1 1 1 1    52    0 15.24 -50.67 ----- 14.0 14.0 172.8 21.4 17.8 -25.9 17.8 -25.4 17.6 -24.3 17.8 -25.3
2025-11-24T20:00:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:00:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:00:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.750397
2025-11-24T20:00:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:00:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:00:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:00:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:00:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:00:44.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:00:15', tmtdew=18.96, humidity=27.7, cloud=0.0, wind=22.78, temperature=17.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:00:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:00:44.031 [DEBUG] [Thread-196127] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:00:44.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:00:44.133 [DEBUG] [Thread-196130] [transport.py] [_log()] starting thread (client mode): 0xd07cef20
2025-11-24T20:00:44.133 [DEBUG] [Thread-196130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:00:44.147 [DEBUG] [Thread-196130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:00:44.148 [INFO] [Thread-196130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:00:44.155 [DEBUG] [Thread-196130] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:00:44.155 [DEBUG] [Thread-196130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:00:44.155 [DEBUG] [Thread-196130] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:00:44.155 [DEBUG] [Thread-196130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] client lang: <none>
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] server lang: <none>
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] kex follows: False
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] Compression: none
2025-11-24T20:00:44.156 [DEBUG] [Thread-196130] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:00:44.212 [DEBUG] [Thread-196130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:00:44.213 [DEBUG] [Thread-196130] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:00:44.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:00:44.214 [DEBUG] [Thread-196130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:00:44.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:00:44.269 [DEBUG] [Thread-196130] [transport.py] [_log()] userauth is OK
2025-11-24T20:00:44.269 [DEBUG] [Thread-196130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:00:44.270 [DEBUG] [Thread-196130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:00:44.270 [DEBUG] [Thread-196130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:00:44.270 [DEBUG] [Thread-196130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:00:44.290 [INFO] [Thread-196130] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:00:44.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:00:44.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:00:45.150 [DEBUG] [Thread-196130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:00:45.150 [DEBUG] [Thread-196130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:00:45.198 [DEBUG] [Thread-196130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:00:45.198 [DEBUG] [Thread-196130] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:00:45.206 [DEBUG] [Thread-196130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:00:45.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:00:45.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:00:45.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-11-24T20:00:45.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:00:45.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:00:45.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:00:45.237 [DEBUG] [Thread-196130] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:00:48.567 [DEBUG] [Thread-196132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:00:53.810 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:00:56.870 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:01:03.648 [DEBUG] [Thread-196133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:01:15.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:01:15.265 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:01:15.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-11-24T20:01:16.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 0, 47), 18.9, 27.75, 0.0, 22.69, 17.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:01:16.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:00:47
2025-11-24T20:01:16.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:01:16.524 [DEBUG] [Thread-196134] [transport.py] [_log()] starting thread (client mode): 0xd073be50
2025-11-24T20:01:16.524 [DEBUG] [Thread-196134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:01:16.534 [DEBUG] [Thread-196134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:01:16.534 [INFO] [Thread-196134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:01:16.537 [DEBUG] [Thread-196134] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] client lang: <none>
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] server lang: <none>
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] kex follows: False
2025-11-24T20:01:16.538 [DEBUG] [Thread-196134] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:01:16.539 [DEBUG] [Thread-196134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:01:16.539 [DEBUG] [Thread-196134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:01:16.539 [DEBUG] [Thread-196134] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:01:16.539 [DEBUG] [Thread-196134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:01:16.539 [DEBUG] [Thread-196134] [transport.py] [_log()] Compression: none
2025-11-24T20:01:16.539 [DEBUG] [Thread-196134] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:01:16.577 [DEBUG] [Thread-196134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:01:16.580 [DEBUG] [Thread-196134] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:01:16.581 [DEBUG] [Thread-196134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:01:16.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:01:16.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:01:16.586 [DEBUG] [Thread-196134] [transport.py] [_log()] userauth is OK
2025-11-24T20:01:16.586 [DEBUG] [Thread-196134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:01:16.586 [DEBUG] [Thread-196134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:01:16.586 [DEBUG] [Thread-196134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:01:16.587 [DEBUG] [Thread-196134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:01:16.613 [INFO] [Thread-196134] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:01:16.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:01:17.241 [DEBUG] [Thread-196134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:01:17.241 [DEBUG] [Thread-196134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:01:17.251 [DEBUG] [Thread-196134] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:01:17.283 [DEBUG] [Thread-196134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:01:17.283 [DEBUG] [Thread-196134] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:01:17.285 [DEBUG] [Thread-196134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:01:17.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:01:17.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:01:17.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:01:17.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:01:17.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:01:17.305 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:01:17.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:01:17.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:01:17.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:01:17.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.750744 -999.00  +17.50  15.06     33   +1.20 1 1 1 1 1    48    0 15.25 -49.79 ----- 17.2 15.1 171.2 22.9 17.9 -26.0 17.8 -25.4 17.5 -24.1 17.8 -25.2
2025-11-24T20:01:17.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:01:17.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:01:17.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.750744
2025-11-24T20:01:17.312 [DEBUG] [Thread-196134] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:01:17.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:01:17.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:01:17.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:01:17.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:01:17.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:01:17.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:00:47', tmtdew=18.9, humidity=27.75, cloud=0.0, wind=22.69, temperature=17.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:01:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:01:17.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:01:17.408 [DEBUG] [Thread-196137] [transport.py] [_log()] starting thread (client mode): 0xd07f9630
2025-11-24T20:01:17.409 [DEBUG] [Thread-196137] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:01:17.423 [DEBUG] [Thread-196137] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:01:17.423 [INFO] [Thread-196137] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] client lang: <none>
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] server lang: <none>
2025-11-24T20:01:17.431 [DEBUG] [Thread-196137] [transport.py] [_log()] kex follows: False
2025-11-24T20:01:17.432 [DEBUG] [Thread-196137] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:01:17.432 [DEBUG] [Thread-196137] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:01:17.432 [DEBUG] [Thread-196137] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:01:17.432 [DEBUG] [Thread-196137] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:01:17.432 [DEBUG] [Thread-196137] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:01:17.432 [DEBUG] [Thread-196137] [transport.py] [_log()] Compression: none
2025-11-24T20:01:17.432 [DEBUG] [Thread-196137] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:01:17.489 [DEBUG] [Thread-196137] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:01:17.489 [DEBUG] [Thread-196137] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:01:17.490 [DEBUG] [Thread-196137] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:01:17.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:01:17.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:01:17.545 [DEBUG] [Thread-196137] [transport.py] [_log()] userauth is OK
2025-11-24T20:01:17.545 [DEBUG] [Thread-196137] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:01:17.546 [DEBUG] [Thread-196137] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:01:17.546 [DEBUG] [Thread-196137] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:01:17.546 [DEBUG] [Thread-196137] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:01:17.565 [INFO] [Thread-196137] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:01:17.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:01:17.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:01:18.398 [DEBUG] [Thread-196137] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:01:18.398 [DEBUG] [Thread-196137] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:01:18.447 [DEBUG] [Thread-196137] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:01:18.447 [DEBUG] [Thread-196137] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:01:18.455 [DEBUG] [Thread-196137] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:01:18.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:01:18.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-11-24T20:01: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-11-24T20:01:18.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:01:18.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:01:18.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:01:18.497 [DEBUG] [Thread-196137] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:01:18.690 [DEBUG] [Thread-196139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:01:25.380 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:01:33.777 [DEBUG] [Thread-196140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:01:35.332 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:01:35.335 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:01:39.618 [DEBUG] [Thread-196141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:01:48.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:01:48.520 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:01:48.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:01:48.808 [DEBUG] [Thread-196142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:01:49.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 1, 20), 18.91, 27.73, 0.0, 21.7, 17.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:01:49.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:01:20
2025-11-24T20:01:49.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:01:49.667 [DEBUG] [Thread-196143] [transport.py] [_log()] starting thread (client mode): 0xc9b82980
2025-11-24T20:01:49.667 [DEBUG] [Thread-196143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:01:49.679 [DEBUG] [Thread-196143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:01:49.679 [INFO] [Thread-196143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:01:49.684 [DEBUG] [Thread-196143] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:01:49.684 [DEBUG] [Thread-196143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:01:49.684 [DEBUG] [Thread-196143] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:01:49.685 [DEBUG] [Thread-196143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:01:49.685 [DEBUG] [Thread-196143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:01:49.685 [DEBUG] [Thread-196143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:01:49.685 [DEBUG] [Thread-196143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:01:49.685 [DEBUG] [Thread-196143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:01:49.685 [DEBUG] [Thread-196143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:01:49.685 [DEBUG] [Thread-196143] [transport.py] [_log()] client lang: <none>
2025-11-24T20:01:49.685 [DEBUG] [Thread-196143] [transport.py] [_log()] server lang: <none>
2025-11-24T20:01:49.685 [DEBUG] [Thread-196143] [transport.py] [_log()] kex follows: False
2025-11-24T20:01:49.685 [DEBUG] [Thread-196143] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:01:49.686 [DEBUG] [Thread-196143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:01:49.686 [DEBUG] [Thread-196143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:01:49.686 [DEBUG] [Thread-196143] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:01:49.686 [DEBUG] [Thread-196143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:01:49.686 [DEBUG] [Thread-196143] [transport.py] [_log()] Compression: none
2025-11-24T20:01:49.686 [DEBUG] [Thread-196143] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:01:49.707 [DEBUG] [Thread-196143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:01:49.711 [DEBUG] [Thread-196143] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:01:49.713 [DEBUG] [Thread-196143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:01:49.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:01:49.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:01:49.718 [DEBUG] [Thread-196143] [transport.py] [_log()] userauth is OK
2025-11-24T20:01:49.719 [DEBUG] [Thread-196143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:01:49.719 [DEBUG] [Thread-196143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:01:49.719 [DEBUG] [Thread-196143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:01:49.720 [DEBUG] [Thread-196143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:01:49.761 [INFO] [Thread-196143] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:01:49.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:01:50.383 [DEBUG] [Thread-196143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:01:50.383 [DEBUG] [Thread-196143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:01:50.392 [DEBUG] [Thread-196143] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:01:50.423 [DEBUG] [Thread-196143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:01:50.423 [DEBUG] [Thread-196143] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:01:50.426 [DEBUG] [Thread-196143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:01:50.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:01:50.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:01:50.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:01:50.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:01:50.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:01:50.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:01:50.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:01:50.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:01:50.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:01:50.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.751091 -999.00  +17.50  20.01     33   +1.30 1 1 1 1 1    44    0 15.29 -51.87 ----- 28.6 20.0 165.8 27.0 17.8 -25.9 17.8 -25.4 17.5 -24.2 17.8 -25.3
2025-11-24T20:01:50.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:01:50.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:01:50.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.751091
2025-11-24T20:01:50.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:01:50.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:01:50.453 [DEBUG] [Thread-196143] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:01:50.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:01:50.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:01:50.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:01:50.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:01:20', tmtdew=18.91, humidity=27.73, cloud=0.0, wind=21.7, temperature=17.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:01:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:01:50.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:01:50.547 [DEBUG] [Thread-196146] [transport.py] [_log()] starting thread (client mode): 0xd07f8f10
2025-11-24T20:01:50.547 [DEBUG] [Thread-196146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:01:50.561 [DEBUG] [Thread-196146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:01:50.562 [INFO] [Thread-196146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:01:50.569 [DEBUG] [Thread-196146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:01:50.569 [DEBUG] [Thread-196146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:01:50.569 [DEBUG] [Thread-196146] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:01:50.569 [DEBUG] [Thread-196146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:01:50.570 [DEBUG] [Thread-196146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:01:50.570 [DEBUG] [Thread-196146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:01:50.570 [DEBUG] [Thread-196146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:01:50.570 [DEBUG] [Thread-196146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:01:50.570 [DEBUG] [Thread-196146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:01:50.570 [DEBUG] [Thread-196146] [transport.py] [_log()] client lang: <none>
2025-11-24T20:01:50.570 [DEBUG] [Thread-196146] [transport.py] [_log()] server lang: <none>
2025-11-24T20:01:50.570 [DEBUG] [Thread-196146] [transport.py] [_log()] kex follows: False
2025-11-24T20:01:50.570 [DEBUG] [Thread-196146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:01:50.570 [DEBUG] [Thread-196146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:01:50.571 [DEBUG] [Thread-196146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:01:50.571 [DEBUG] [Thread-196146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:01:50.571 [DEBUG] [Thread-196146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:01:50.571 [DEBUG] [Thread-196146] [transport.py] [_log()] Compression: none
2025-11-24T20:01:50.571 [DEBUG] [Thread-196146] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:01:50.629 [DEBUG] [Thread-196146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:01:50.630 [DEBUG] [Thread-196146] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:01:50.631 [DEBUG] [Thread-196146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:01:50.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:01:50.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:01:50.685 [DEBUG] [Thread-196146] [transport.py] [_log()] userauth is OK
2025-11-24T20:01:50.685 [DEBUG] [Thread-196146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:01:50.685 [DEBUG] [Thread-196146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:01:50.685 [DEBUG] [Thread-196146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:01:50.685 [DEBUG] [Thread-196146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:01:50.707 [INFO] [Thread-196146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:01: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-11-24T20:01:50.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:01:51.572 [DEBUG] [Thread-196146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:01:51.573 [DEBUG] [Thread-196146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:01:51.620 [DEBUG] [Thread-196146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:01:51.621 [DEBUG] [Thread-196146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:01:51.630 [DEBUG] [Thread-196146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:01:51.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:01:51.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:01:51.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-11-24T20:01:51.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:01:51.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:01:51.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:01:51.667 [DEBUG] [Thread-196146] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:01:52.975 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:02:03.842 [DEBUG] [Thread-196148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:02:19.007 [DEBUG] [Thread-196149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:02:21.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:02:21.693 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:02:21.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-11-24T20:02:22.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 1, 53), 18.86, 27.71, 0.0, 24.86, 17.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:02:22.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:01:53
2025-11-24T20:02:22.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:02:22.823 [DEBUG] [Thread-196150] [transport.py] [_log()] starting thread (client mode): 0xd0785c60
2025-11-24T20:02:22.824 [DEBUG] [Thread-196150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:02:22.828 [DEBUG] [Thread-196150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:02:22.828 [INFO] [Thread-196150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:02:22.832 [DEBUG] [Thread-196150] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:02:22.832 [DEBUG] [Thread-196150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:02:22.832 [DEBUG] [Thread-196150] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:02:22.832 [DEBUG] [Thread-196150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:02:22.833 [DEBUG] [Thread-196150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:02:22.833 [DEBUG] [Thread-196150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:02:22.833 [DEBUG] [Thread-196150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:02:22.833 [DEBUG] [Thread-196150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:02:22.833 [DEBUG] [Thread-196150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:02:22.833 [DEBUG] [Thread-196150] [transport.py] [_log()] client lang: <none>
2025-11-24T20:02:22.833 [DEBUG] [Thread-196150] [transport.py] [_log()] server lang: <none>
2025-11-24T20:02:22.833 [DEBUG] [Thread-196150] [transport.py] [_log()] kex follows: False
2025-11-24T20:02:22.833 [DEBUG] [Thread-196150] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:02:22.833 [DEBUG] [Thread-196150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:02:22.834 [DEBUG] [Thread-196150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:02:22.834 [DEBUG] [Thread-196150] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:02:22.834 [DEBUG] [Thread-196150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:02:22.834 [DEBUG] [Thread-196150] [transport.py] [_log()] Compression: none
2025-11-24T20:02:22.834 [DEBUG] [Thread-196150] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:02:22.877 [DEBUG] [Thread-196150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:02:22.883 [DEBUG] [Thread-196150] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:02:22.886 [DEBUG] [Thread-196150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:02:22.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:02:22.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:02:22.892 [DEBUG] [Thread-196150] [transport.py] [_log()] userauth is OK
2025-11-24T20:02:22.892 [DEBUG] [Thread-196150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:02:22.893 [DEBUG] [Thread-196150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:02:22.893 [DEBUG] [Thread-196150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:02:22.893 [DEBUG] [Thread-196150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:02:22.926 [INFO] [Thread-196150] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:02:22.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:02:23.535 [DEBUG] [Thread-196150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:02:23.535 [DEBUG] [Thread-196150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:02:23.545 [DEBUG] [Thread-196150] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:02:23.576 [DEBUG] [Thread-196150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:02:23.576 [DEBUG] [Thread-196150] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:02:23.579 [DEBUG] [Thread-196150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:02:23.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:02:23.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:02:23.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:02:23.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:02:23.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:02:23.598 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:02:23.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:02:23.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:02:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:02:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.751497 -999.00  +17.50  23.38     33   +1.30 1 1 1 1 1    40    0 15.26 -51.62 ----- 22.8 23.4 171.8 31.9 17.8 -25.9 17.8 -25.4 17.5 -24.3 17.8 -25.2
2025-11-24T20:02:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:02:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:02:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.751497
2025-11-24T20:02:23.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:02:23.616 [DEBUG] [Thread-196150] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:02:23.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:02:23.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:02:23.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:02:23.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:02:23.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:01:53', tmtdew=18.86, humidity=27.71, cloud=0.0, wind=24.86, temperature=17.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:02:09.341', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:02:23.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:02:23.703 [DEBUG] [Thread-196153] [transport.py] [_log()] starting thread (client mode): 0xc9b80d00
2025-11-24T20:02:23.703 [DEBUG] [Thread-196153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:02:23.719 [DEBUG] [Thread-196153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:02:23.719 [INFO] [Thread-196153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] client lang: <none>
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] server lang: <none>
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] kex follows: False
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] Compression: none
2025-11-24T20:02:23.727 [DEBUG] [Thread-196153] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:02:23.783 [DEBUG] [Thread-196153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:02:23.783 [DEBUG] [Thread-196153] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:02:23.783 [DEBUG] [Thread-196153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:02:23.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:02:23.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:02:23.841 [DEBUG] [Thread-196153] [transport.py] [_log()] userauth is OK
2025-11-24T20:02:23.841 [DEBUG] [Thread-196153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:02:23.841 [DEBUG] [Thread-196153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:02:23.841 [DEBUG] [Thread-196153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:02:23.841 [DEBUG] [Thread-196153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:02:23.856 [INFO] [Thread-196153] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:02:23.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:02:23.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:02:24.680 [DEBUG] [Thread-196153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:02:24.680 [DEBUG] [Thread-196153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:02:24.729 [DEBUG] [Thread-196153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:02:24.729 [DEBUG] [Thread-196153] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:02:24.739 [DEBUG] [Thread-196153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:02:24.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:02:24.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-11-24T20:02:24.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-11-24T20:02:24.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:02:24.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:02:24.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:02:24.779 [DEBUG] [Thread-196153] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:02:34.071 [DEBUG] [Thread-196155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:02:39.866 [DEBUG] [Thread-196156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:02:45.050 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:02:45.051 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:02:49.159 [DEBUG] [Thread-196157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:02:54.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:02:54.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:02:54.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-11-24T20:02:55.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 2, 25), 18.87, 27.7, 0.0, 22.99, 17.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:02:55.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:02:25
2025-11-24T20:02:55.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:02:55.927 [DEBUG] [Thread-196158] [transport.py] [_log()] starting thread (client mode): 0xd07ce650
2025-11-24T20:02:55.928 [DEBUG] [Thread-196158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:02:55.943 [DEBUG] [Thread-196158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:02:55.943 [INFO] [Thread-196158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] client lang: <none>
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] server lang: <none>
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] kex follows: False
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:02:55.946 [DEBUG] [Thread-196158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:02:55.947 [DEBUG] [Thread-196158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:02:55.947 [DEBUG] [Thread-196158] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:02:55.947 [DEBUG] [Thread-196158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:02:55.947 [DEBUG] [Thread-196158] [transport.py] [_log()] Compression: none
2025-11-24T20:02:55.947 [DEBUG] [Thread-196158] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:02:55.967 [DEBUG] [Thread-196158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:02:55.969 [DEBUG] [Thread-196158] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:02:55.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:02:55.970 [DEBUG] [Thread-196158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:02:55.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:02:56.009 [DEBUG] [Thread-196158] [transport.py] [_log()] userauth is OK
2025-11-24T20:02:56.010 [DEBUG] [Thread-196158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:02:56.010 [DEBUG] [Thread-196158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:02:56.010 [DEBUG] [Thread-196158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:02:56.010 [DEBUG] [Thread-196158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:02:56.036 [INFO] [Thread-196158] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:02:56.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:02:56.669 [DEBUG] [Thread-196158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:02:56.669 [DEBUG] [Thread-196158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:02:56.669 [DEBUG] [Thread-196158] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:02:56.710 [DEBUG] [Thread-196158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:02:56.710 [DEBUG] [Thread-196158] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:02:56.711 [DEBUG] [Thread-196158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:02:56.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:02:56.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:02:56.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:02:56.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:02:56.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:02:56.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:02:56.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:02:56.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:02:56.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:02:56.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.751786 -999.00  +17.50  24.77     33   +1.30 1 1 1 1 1    37    0 14.98 -55.68 ----- 20.4 24.8 163.6 31.1 17.8 -25.8 17.8 -25.4 17.5 -24.3 17.8 -25.4
2025-11-24T20:02:56.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:02:56.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:02:56.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.751786
2025-11-24T20:02:56.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:02:56.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:02:56.732 [DEBUG] [Thread-196158] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:02:56.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:02:56.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:02:56.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:02:56.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:02:25', tmtdew=18.87, humidity=27.7, cloud=0.0, wind=22.99, temperature=17.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:02:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:02:56.806 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:02:56.817 [DEBUG] [Thread-196161] [transport.py] [_log()] starting thread (client mode): 0xd07cca90
2025-11-24T20:02:56.817 [DEBUG] [Thread-196161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:02:56.832 [DEBUG] [Thread-196161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:02:56.832 [INFO] [Thread-196161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:02:56.839 [DEBUG] [Thread-196161] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:02:56.839 [DEBUG] [Thread-196161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] client lang: <none>
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] server lang: <none>
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] kex follows: False
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] Compression: none
2025-11-24T20:02:56.840 [DEBUG] [Thread-196161] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:02:56.896 [DEBUG] [Thread-196161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:02:56.896 [DEBUG] [Thread-196161] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:02:56.896 [DEBUG] [Thread-196161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:02:56.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:02:56.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:02:56.953 [DEBUG] [Thread-196161] [transport.py] [_log()] userauth is OK
2025-11-24T20:02:56.953 [DEBUG] [Thread-196161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:02:56.953 [DEBUG] [Thread-196161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:02:56.953 [DEBUG] [Thread-196161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:02:56.954 [DEBUG] [Thread-196161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:02:56.967 [INFO] [Thread-196161] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:02:56.968 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:02:56.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:02:57.809 [DEBUG] [Thread-196161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:02:57.810 [DEBUG] [Thread-196161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:02:57.858 [DEBUG] [Thread-196161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:02:57.858 [DEBUG] [Thread-196161] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:02:57.867 [DEBUG] [Thread-196161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:02:57.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:02:57.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-11-24T20:02:57.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:02:57.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:02:57.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:02:57.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:02:57.913 [DEBUG] [Thread-196161] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:03:04.206 [DEBUG] [Thread-196163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:03:19.292 [DEBUG] [Thread-196164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:03:27.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:03:27.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:03:27.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-11-24T20:03:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 2, 58), 18.8, 27.73, 0.0, 26.77, 17.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:03:28.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:02:58
2025-11-24T20:03:28.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:03:29.133 [DEBUG] [Thread-196165] [transport.py] [_log()] starting thread (client mode): 0xd07ceaa0
2025-11-24T20:03:29.133 [DEBUG] [Thread-196165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:03:29.144 [DEBUG] [Thread-196165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:03:29.144 [INFO] [Thread-196165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:03:29.146 [DEBUG] [Thread-196165] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:03:29.146 [DEBUG] [Thread-196165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:03:29.146 [DEBUG] [Thread-196165] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:03:29.146 [DEBUG] [Thread-196165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:03:29.146 [DEBUG] [Thread-196165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:03:29.146 [DEBUG] [Thread-196165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:03:29.146 [DEBUG] [Thread-196165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:03:29.146 [DEBUG] [Thread-196165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:03:29.146 [DEBUG] [Thread-196165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:03:29.147 [DEBUG] [Thread-196165] [transport.py] [_log()] client lang: <none>
2025-11-24T20:03:29.147 [DEBUG] [Thread-196165] [transport.py] [_log()] server lang: <none>
2025-11-24T20:03:29.147 [DEBUG] [Thread-196165] [transport.py] [_log()] kex follows: False
2025-11-24T20:03:29.147 [DEBUG] [Thread-196165] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:03:29.147 [DEBUG] [Thread-196165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:03:29.147 [DEBUG] [Thread-196165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:03:29.147 [DEBUG] [Thread-196165] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:03:29.147 [DEBUG] [Thread-196165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:03:29.147 [DEBUG] [Thread-196165] [transport.py] [_log()] Compression: none
2025-11-24T20:03:29.147 [DEBUG] [Thread-196165] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:03:29.165 [DEBUG] [Thread-196165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:03:29.167 [DEBUG] [Thread-196165] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:03:29.168 [DEBUG] [Thread-196165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:03:29.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:03:29.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:03:29.169 [DEBUG] [Thread-196165] [transport.py] [_log()] userauth is OK
2025-11-24T20:03:29.169 [DEBUG] [Thread-196165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:03:29.169 [DEBUG] [Thread-196165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:03:29.169 [DEBUG] [Thread-196165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:03:29.169 [DEBUG] [Thread-196165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:03:29.179 [INFO] [Thread-196165] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:03:29.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:03:29.771 [DEBUG] [Thread-196165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:03:29.771 [DEBUG] [Thread-196165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:03:29.771 [DEBUG] [Thread-196165] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:03:29.812 [DEBUG] [Thread-196165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:03:29.812 [DEBUG] [Thread-196165] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:03:29.814 [DEBUG] [Thread-196165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:03:29.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:03:29.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:03:29.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:03:29.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:03:29.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:03:29.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:03:29.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:03:29.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:03:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:03:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.752133 -999.00  +17.50  24.86     33   +1.40 1 1 1 1 1    34    0 14.96 -54.18 ----- 19.3 24.9 170.2 29.1 17.8 -25.9 17.7 -25.5 17.5 -24.2 17.8 -25.2
2025-11-24T20:03:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:03:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:03:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.752133
2025-11-24T20:03:29.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:03:29.839 [DEBUG] [Thread-196165] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:03:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:03:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:03:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:03:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:03:29.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:02:58', tmtdew=18.8, humidity=27.73, cloud=0.0, wind=26.77, temperature=17.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:03:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:03:29.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:03:29.933 [DEBUG] [Thread-196168] [transport.py] [_log()] starting thread (client mode): 0xd0711360
2025-11-24T20:03:29.933 [DEBUG] [Thread-196168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:03:29.948 [DEBUG] [Thread-196168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:03:29.948 [INFO] [Thread-196168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] client lang: <none>
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] server lang: <none>
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] kex follows: False
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] Compression: none
2025-11-24T20:03:29.956 [DEBUG] [Thread-196168] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:03:30.013 [DEBUG] [Thread-196168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:03:30.013 [DEBUG] [Thread-196168] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:03:30.014 [DEBUG] [Thread-196168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:03:30.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:03:30.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:03:30.069 [DEBUG] [Thread-196168] [transport.py] [_log()] userauth is OK
2025-11-24T20:03:30.069 [DEBUG] [Thread-196168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:03:30.069 [DEBUG] [Thread-196168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:03:30.069 [DEBUG] [Thread-196168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:03:30.069 [DEBUG] [Thread-196168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:03:30.083 [INFO] [Thread-196168] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:03:30.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:03:30.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:03:30.933 [DEBUG] [Thread-196168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:03:30.933 [DEBUG] [Thread-196168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:03:30.981 [DEBUG] [Thread-196168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:03:30.981 [DEBUG] [Thread-196168] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:03:30.989 [DEBUG] [Thread-196168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:03:30.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:03:30.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-11-24T20:03: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') -> 00000000
2025-11-24T20:03:31.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:03:31.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:03:31.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:03:31.021 [DEBUG] [Thread-196168] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:03:34.323 [DEBUG] [Thread-196170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:03:40.110 [DEBUG] [Thread-196171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:03:49.401 [DEBUG] [Thread-196172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:03:52.464 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:03:52.467 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:04:01.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:04:01.047 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:04:01.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-11-24T20:04:02.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 3, 31), 18.81, 27.71, 0.0, 25.09, 17.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:04:02.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:03:31
2025-11-24T20:04:02.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:04:02.771 [DEBUG] [Thread-196173] [transport.py] [_log()] starting thread (client mode): 0xd07031c0
2025-11-24T20:04:02.772 [DEBUG] [Thread-196173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:04:02.779 [DEBUG] [Thread-196173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:04:02.779 [INFO] [Thread-196173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] client lang: <none>
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] server lang: <none>
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] kex follows: False
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:04:02.784 [DEBUG] [Thread-196173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:04:02.785 [DEBUG] [Thread-196173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:04:02.785 [DEBUG] [Thread-196173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:04:02.785 [DEBUG] [Thread-196173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:04:02.785 [DEBUG] [Thread-196173] [transport.py] [_log()] Compression: none
2025-11-24T20:04:02.785 [DEBUG] [Thread-196173] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:04:02.817 [DEBUG] [Thread-196173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:04:02.822 [DEBUG] [Thread-196173] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:04:02.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:04:02.825 [DEBUG] [Thread-196173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:04:02.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:04:02.828 [DEBUG] [Thread-196173] [transport.py] [_log()] userauth is OK
2025-11-24T20:04:02.828 [DEBUG] [Thread-196173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:04:02.829 [DEBUG] [Thread-196173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:04:02.829 [DEBUG] [Thread-196173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:04:02.829 [DEBUG] [Thread-196173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:04:02.864 [INFO] [Thread-196173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:04:02.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:04:03.449 [DEBUG] [Thread-196173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:04:03.449 [DEBUG] [Thread-196173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:04:03.450 [DEBUG] [Thread-196173] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:04:03.491 [DEBUG] [Thread-196173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:04:03.491 [DEBUG] [Thread-196173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:04:03.494 [DEBUG] [Thread-196173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:04:03.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:04:03.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:04:03.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:04:03.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:04:03.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:04:03.524 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:04:03.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:04:03.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:04:03.525 [DEBUG] [Thread-196173] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:04:03.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:04:03.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.752480 -999.00  +17.50  23.32     34   +1.50 1 1 1 1 1    31    0 14.71 -55.87 ----- 21.6 23.3 162.6 30.9 17.8 -25.8 17.7 -25.3 17.5 -24.3 17.8 -25.3
2025-11-24T20:04:03.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:04:03.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:04:03.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.752480
2025-11-24T20:04:03.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:04:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:04:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:04:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:04:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:04:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:03:31', tmtdew=18.81, humidity=27.71, cloud=0.0, wind=25.09, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:03:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:04:03.630 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:04:03.642 [DEBUG] [Thread-196176] [transport.py] [_log()] starting thread (client mode): 0xd0739c60
2025-11-24T20:04:03.642 [DEBUG] [Thread-196176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:04:03.656 [DEBUG] [Thread-196176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:04:03.657 [INFO] [Thread-196176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:04:03.664 [DEBUG] [Thread-196176] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] client lang: <none>
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] server lang: <none>
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] kex follows: False
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:04:03.665 [DEBUG] [Thread-196176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:04:03.666 [DEBUG] [Thread-196176] [transport.py] [_log()] Compression: none
2025-11-24T20:04:03.666 [DEBUG] [Thread-196176] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:04:03.722 [DEBUG] [Thread-196176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:04:03.722 [DEBUG] [Thread-196176] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:04:03.723 [DEBUG] [Thread-196176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:04:03.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:04:03.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:04:03.777 [DEBUG] [Thread-196176] [transport.py] [_log()] userauth is OK
2025-11-24T20:04:03.777 [DEBUG] [Thread-196176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:04:03.778 [DEBUG] [Thread-196176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:04:03.778 [DEBUG] [Thread-196176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:04:03.778 [DEBUG] [Thread-196176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:04:03.791 [INFO] [Thread-196176] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:04:03.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:04:03.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:04:04.446 [DEBUG] [Thread-196178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:04:04.655 [DEBUG] [Thread-196176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:04:04.656 [DEBUG] [Thread-196176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:04:04.704 [DEBUG] [Thread-196176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:04:04.704 [DEBUG] [Thread-196176] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:04:04.712 [DEBUG] [Thread-196176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:04:04.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:04: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-11-24T20:04: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-11-24T20:04:04.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:04:04.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:04:04.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:04:04.746 [DEBUG] [Thread-196176] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:04:19.588 [DEBUG] [Thread-196179 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:04:34.651 [DEBUG] [Thread-196180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:04:34.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:04:34.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:04:34.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-11-24T20:04:36.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 4, 3), 18.78, 27.78, 0.0, 24.4, 17.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:04:36.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:04:03
2025-11-24T20:04:36.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:04:36.432 [DEBUG] [Thread-196181] [transport.py] [_log()] starting thread (client mode): 0xd07875e0
2025-11-24T20:04:36.433 [DEBUG] [Thread-196181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:04:36.444 [DEBUG] [Thread-196181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:04:36.444 [INFO] [Thread-196181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] client lang: <none>
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] server lang: <none>
2025-11-24T20:04:36.448 [DEBUG] [Thread-196181] [transport.py] [_log()] kex follows: False
2025-11-24T20:04:36.449 [DEBUG] [Thread-196181] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:04:36.449 [DEBUG] [Thread-196181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:04:36.449 [DEBUG] [Thread-196181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:04:36.449 [DEBUG] [Thread-196181] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:04:36.449 [DEBUG] [Thread-196181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:04:36.450 [DEBUG] [Thread-196181] [transport.py] [_log()] Compression: none
2025-11-24T20:04:36.450 [DEBUG] [Thread-196181] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:04:36.475 [DEBUG] [Thread-196181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:04:36.481 [DEBUG] [Thread-196181] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:04:36.482 [DEBUG] [Thread-196181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:04:36.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:04:36.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:04:36.489 [DEBUG] [Thread-196181] [transport.py] [_log()] userauth is OK
2025-11-24T20:04:36.489 [DEBUG] [Thread-196181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:04:36.489 [DEBUG] [Thread-196181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:04:36.489 [DEBUG] [Thread-196181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:04:36.490 [DEBUG] [Thread-196181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:04:36.515 [INFO] [Thread-196181] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:04:36.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:04:37.116 [DEBUG] [Thread-196181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:04:37.116 [DEBUG] [Thread-196181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:04:37.117 [DEBUG] [Thread-196181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:04:37.157 [DEBUG] [Thread-196181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:04:37.157 [DEBUG] [Thread-196181] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:04:37.161 [DEBUG] [Thread-196181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:04:37.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:04:37.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:04:37.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:04:37.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:04:37.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:04:37.181 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:04:37.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:04:37.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:04:37.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:04:37.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.752828 -999.00  +17.50  25.93     34   +1.40 1 1 1 1 1    28    0 15.05 -56.60 ----- 20.0 25.9 169.4 35.5 17.8 -25.9 17.7 -25.5 17.5 -24.2 17.8 -25.2
2025-11-24T20:04:37.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:04:37.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:04:37.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.752828
2025-11-24T20:04:37.188 [DEBUG] [Thread-196181] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:04:37.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:04:37.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:04:37.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:04:37.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:04:37.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:04:37.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:04:03', tmtdew=18.78, humidity=27.78, cloud=0.0, wind=24.4, temperature=17.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:04:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:04:37.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:04:37.285 [DEBUG] [Thread-196184] [transport.py] [_log()] starting thread (client mode): 0xc9b82e60
2025-11-24T20:04:37.286 [DEBUG] [Thread-196184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:04:37.301 [DEBUG] [Thread-196184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:04:37.301 [INFO] [Thread-196184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] client lang: <none>
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] server lang: <none>
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] kex follows: False
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] Compression: none
2025-11-24T20:04:37.309 [DEBUG] [Thread-196184] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:04:37.368 [DEBUG] [Thread-196184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:04:37.369 [DEBUG] [Thread-196184] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:04:37.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:04:37.369 [DEBUG] [Thread-196184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:04:37.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:04:37.425 [DEBUG] [Thread-196184] [transport.py] [_log()] userauth is OK
2025-11-24T20:04:37.425 [DEBUG] [Thread-196184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:04:37.425 [DEBUG] [Thread-196184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:04:37.425 [DEBUG] [Thread-196184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:04:37.425 [DEBUG] [Thread-196184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:04:37.440 [INFO] [Thread-196184] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:04:37.440 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:04:37.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:04:38.258 [DEBUG] [Thread-196184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:04:38.258 [DEBUG] [Thread-196184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:04:38.309 [DEBUG] [Thread-196184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:04:38.309 [DEBUG] [Thread-196184] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:04:38.318 [DEBUG] [Thread-196184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:04:38.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:04:38.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-11-24T20:04:38.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-11-24T20:04:38.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:04:38.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:04:38.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:04:38.351 [DEBUG] [Thread-196184] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:04:40.424 [DEBUG] [Thread-196186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:04:49.683 [DEBUG] [Thread-196187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:05:03.045 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:05:03.046 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:05:04.794 [DEBUG] [Thread-196188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:05:08.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:05:08.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:05:08.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-11-24T20:05:09.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 4, 36), 18.65, 28.35, 0.0, 34.41, 17.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:05:09.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:04:36
2025-11-24T20:05:09.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:05:09.798 [DEBUG] [Thread-196189] [transport.py] [_log()] starting thread (client mode): 0xc9b813c0
2025-11-24T20:05:09.798 [DEBUG] [Thread-196189] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:05:09.813 [DEBUG] [Thread-196189] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:05:09.813 [INFO] [Thread-196189] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] client lang: <none>
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] server lang: <none>
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] kex follows: False
2025-11-24T20:05:09.817 [DEBUG] [Thread-196189] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:05:09.818 [DEBUG] [Thread-196189] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:05:09.818 [DEBUG] [Thread-196189] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:05:09.818 [DEBUG] [Thread-196189] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:05:09.818 [DEBUG] [Thread-196189] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:05:09.818 [DEBUG] [Thread-196189] [transport.py] [_log()] Compression: none
2025-11-24T20:05:09.818 [DEBUG] [Thread-196189] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:05:09.847 [DEBUG] [Thread-196189] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:05:09.851 [DEBUG] [Thread-196189] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:05:09.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:05:09.853 [DEBUG] [Thread-196189] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:05:09.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:05:09.854 [DEBUG] [Thread-196189] [transport.py] [_log()] userauth is OK
2025-11-24T20:05:09.854 [DEBUG] [Thread-196189] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:05:09.855 [DEBUG] [Thread-196189] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:05:09.855 [DEBUG] [Thread-196189] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:05:09.855 [DEBUG] [Thread-196189] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:05:09.866 [INFO] [Thread-196189] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:05:09.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:05:16.271 [DEBUG] [Thread-196189] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:05:16.271 [DEBUG] [Thread-196189] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:05:16.273 [DEBUG] [Thread-196189] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:05:16.311 [DEBUG] [Thread-196189] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:05:16.312 [DEBUG] [Thread-196189] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:05:16.315 [DEBUG] [Thread-196189] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:05:16.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:05:16.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:05:16.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:05:16.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:05:16.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:05:16.497 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:05:16.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:05:16.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:05:16.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:05:16.501 [DEBUG] [Thread-196189] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:05:16.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.752828 -999.00  +17.50  25.93     34   +1.40 1 1 1 1 1    28    0 15.05 -56.60 ----- 20.0 25.9 169.4 35.5 17.8 -25.9 17.7 -25.5 17.5 -24.2 17.8 -25.2
2025-11-24T20:05:16.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:05:16.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:05:16.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.752828
2025-11-24T20:05:16.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:05:16.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:05:16.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:05:16.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:05:16.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:05:16.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:04:36', tmtdew=18.65, humidity=28.35, cloud=0.0, wind=34.41, temperature=17.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:04:04.339', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:05:16.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:05:16.619 [DEBUG] [Thread-196192] [transport.py] [_log()] starting thread (client mode): 0xd31360b0
2025-11-24T20:05:16.619 [DEBUG] [Thread-196192] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:05:16.638 [DEBUG] [Thread-196192] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:05:16.639 [INFO] [Thread-196192] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] client lang: <none>
2025-11-24T20:05:16.646 [DEBUG] [Thread-196192] [transport.py] [_log()] server lang: <none>
2025-11-24T20:05:16.647 [DEBUG] [Thread-196192] [transport.py] [_log()] kex follows: False
2025-11-24T20:05:16.647 [DEBUG] [Thread-196192] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:05:16.647 [DEBUG] [Thread-196192] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:05:16.647 [DEBUG] [Thread-196192] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:05:16.647 [DEBUG] [Thread-196192] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:05:16.647 [DEBUG] [Thread-196192] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:05:16.647 [DEBUG] [Thread-196192] [transport.py] [_log()] Compression: none
2025-11-24T20:05:16.647 [DEBUG] [Thread-196192] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:05:16.706 [DEBUG] [Thread-196192] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:05:16.707 [DEBUG] [Thread-196192] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:05:16.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:05:16.708 [DEBUG] [Thread-196192] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:05:16.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:05:16.762 [DEBUG] [Thread-196192] [transport.py] [_log()] userauth is OK
2025-11-24T20:05:16.763 [DEBUG] [Thread-196192] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:05:16.763 [DEBUG] [Thread-196192] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:05:16.763 [DEBUG] [Thread-196192] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:05:16.763 [DEBUG] [Thread-196192] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:05:16.782 [INFO] [Thread-196192] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:05:16.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:05:16.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:05:17.623 [DEBUG] [Thread-196192] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:05:17.624 [DEBUG] [Thread-196192] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:05:17.673 [DEBUG] [Thread-196192] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:05:17.673 [DEBUG] [Thread-196192] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:05:17.686 [DEBUG] [Thread-196192] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:05:17.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:05:17.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-11-24T20:05:17.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-11-24T20:05:17.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:05:17.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:05:17.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:05:17.728 [DEBUG] [Thread-196192] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:05:19.827 [DEBUG] [Thread-196194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:05:34.877 [DEBUG] [Thread-196195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:05:40.717 [DEBUG] [Thread-196196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:05:47.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:05:47.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:05:47.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-11-24T20:05:48.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 5, 42), 18.57, 28.51, 0.0, 28.55, 17.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:05:48.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:05:42
2025-11-24T20:05:48.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:05:48.902 [DEBUG] [Thread-196197] [transport.py] [_log()] starting thread (client mode): 0xd317cac0
2025-11-24T20:05:48.902 [DEBUG] [Thread-196197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:05:48.920 [DEBUG] [Thread-196197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:05:48.920 [INFO] [Thread-196197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] client lang: <none>
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] server lang: <none>
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] kex follows: False
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] Compression: none
2025-11-24T20:05:48.923 [DEBUG] [Thread-196197] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:05:48.946 [DEBUG] [Thread-196197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:05:48.947 [DEBUG] [Thread-196197] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:05:48.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:05:48.948 [DEBUG] [Thread-196197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:05:48.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:05:48.951 [DEBUG] [Thread-196197] [transport.py] [_log()] userauth is OK
2025-11-24T20:05:48.951 [DEBUG] [Thread-196197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:05:48.951 [DEBUG] [Thread-196197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:05:48.952 [DEBUG] [Thread-196197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:05:48.952 [DEBUG] [Thread-196197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:05:48.988 [INFO] [Thread-196197] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:05:48.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:05:49.597 [DEBUG] [Thread-196197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:05:49.597 [DEBUG] [Thread-196197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:05:49.598 [DEBUG] [Thread-196197] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:05:49.638 [DEBUG] [Thread-196197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:05:49.638 [DEBUG] [Thread-196197] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:05:49.640 [DEBUG] [Thread-196197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:05:49.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:05:49.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:05:49.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:05:49.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:05:49.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:05:49.662 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:05:49.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:05:49.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:05:49.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:05:49.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.753175 -999.00  +17.50  21.41     34   +1.50 1 1 1 1 1    26    0 14.81 -57.89 ----- 26.0 21.4 178.2 30.7 17.8 -25.8 17.7 -25.4 17.5 -24.3 17.8 -25.1
2025-11-24T20:05:49.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:05:49.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:05:49.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.753175
2025-11-24T20:05:49.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:05:49.667 [DEBUG] [Thread-196197] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:05:49.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:05:49.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:05:49.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:05:49.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:05:49.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:05:42', tmtdew=18.57, humidity=28.51, cloud=0.0, wind=28.55, temperature=17.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:04:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:05:49.746 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:05:49.758 [DEBUG] [Thread-196200] [transport.py] [_log()] starting thread (client mode): 0xd317d240
2025-11-24T20:05:49.758 [DEBUG] [Thread-196200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:05:49.772 [DEBUG] [Thread-196200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:05:49.772 [INFO] [Thread-196200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:05:49.779 [DEBUG] [Thread-196200] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] client lang: <none>
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] server lang: <none>
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] kex follows: False
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] Compression: none
2025-11-24T20:05:49.780 [DEBUG] [Thread-196200] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:05:49.837 [DEBUG] [Thread-196200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:05:49.837 [DEBUG] [Thread-196200] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:05:49.837 [DEBUG] [Thread-196200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:05:49.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:05:49.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:05:49.894 [DEBUG] [Thread-196200] [transport.py] [_log()] userauth is OK
2025-11-24T20:05:49.894 [DEBUG] [Thread-196200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:05:49.894 [DEBUG] [Thread-196200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:05:49.894 [DEBUG] [Thread-196200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:05:49.894 [DEBUG] [Thread-196200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:05:49.908 [INFO] [Thread-196200] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:05:49.908 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:05:49.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:05:49.918 [DEBUG] [Thread-196202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:05:50.737 [DEBUG] [Thread-196200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:05:50.738 [DEBUG] [Thread-196200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:05:50.786 [DEBUG] [Thread-196200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:05:50.786 [DEBUG] [Thread-196200] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:05:50.795 [DEBUG] [Thread-196200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:05:50.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:05:50.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:05:50.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-11-24T20:05:50.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:05:50.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:05:50.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:05:50.843 [DEBUG] [Thread-196200] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:06:04.971 [DEBUG] [Thread-196203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:06:08.769 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:06:08.771 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:06:20.000 [DEBUG] [Thread-196204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:06:20.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:06:20.869 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:06:20.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:06:21.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 6, 14), 18.54, 28.55, 0.0, 31.62, 17.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:06:21.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:06:14
2025-11-24T20:06:21.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:06:22.033 [DEBUG] [Thread-196205] [transport.py] [_log()] starting thread (client mode): 0xd07f8640
2025-11-24T20:06:22.034 [DEBUG] [Thread-196205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:06:22.034 [DEBUG] [Thread-196205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:06:22.035 [INFO] [Thread-196205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:06:22.039 [DEBUG] [Thread-196205] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:06:22.039 [DEBUG] [Thread-196205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:06:22.039 [DEBUG] [Thread-196205] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:06:22.039 [DEBUG] [Thread-196205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:06:22.039 [DEBUG] [Thread-196205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:06:22.039 [DEBUG] [Thread-196205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:06:22.039 [DEBUG] [Thread-196205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:06:22.039 [DEBUG] [Thread-196205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] client lang: <none>
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] server lang: <none>
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] kex follows: False
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] Compression: none
2025-11-24T20:06:22.040 [DEBUG] [Thread-196205] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:06:22.069 [DEBUG] [Thread-196205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:06:22.073 [DEBUG] [Thread-196205] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:06:22.074 [DEBUG] [Thread-196205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:06:22.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:06:22.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:06:22.078 [DEBUG] [Thread-196205] [transport.py] [_log()] userauth is OK
2025-11-24T20:06:22.078 [DEBUG] [Thread-196205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:06:22.078 [DEBUG] [Thread-196205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:06:22.078 [DEBUG] [Thread-196205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:06:22.078 [DEBUG] [Thread-196205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:06:22.099 [INFO] [Thread-196205] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:06:22.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:06:22.671 [DEBUG] [Thread-196205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:06:22.672 [DEBUG] [Thread-196205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:06:22.682 [DEBUG] [Thread-196205] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:06:22.713 [DEBUG] [Thread-196205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:06:22.713 [DEBUG] [Thread-196205] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:06:22.716 [DEBUG] [Thread-196205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:06:22.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:06:22.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:06:22.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:06:22.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:06:22.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:06:22.743 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:06:22.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:06:22.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:06:22.746 [DEBUG] [Thread-196205] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:06:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:06:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.753869 -999.00  +17.50  17.85     34   +1.50 1 1 1 1 1    22    0 15.32 -49.61 ----- 23.8 17.9 180.0 26.5 17.8 -26.0 17.7 -25.5 17.5 -24.3 17.7 -25.4
2025-11-24T20:06:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:06:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:06:22.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.753869
2025-11-24T20:06:22.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:06:22.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:06:22.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:06:22.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:06:22.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:06:22.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:06:14', tmtdew=18.54, humidity=28.55, cloud=0.0, wind=31.62, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:05:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:06:22.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:06:22.867 [DEBUG] [Thread-196208] [transport.py] [_log()] starting thread (client mode): 0xd07fa230
2025-11-24T20:06:22.867 [DEBUG] [Thread-196208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:06:22.882 [DEBUG] [Thread-196208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:06:22.882 [INFO] [Thread-196208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] client lang: <none>
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] server lang: <none>
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] kex follows: False
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] Compression: none
2025-11-24T20:06:22.890 [DEBUG] [Thread-196208] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:06:22.951 [DEBUG] [Thread-196208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:06:22.952 [DEBUG] [Thread-196208] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:06:22.952 [DEBUG] [Thread-196208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:06:22.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:06:22.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:06:23.011 [DEBUG] [Thread-196208] [transport.py] [_log()] userauth is OK
2025-11-24T20:06:23.011 [DEBUG] [Thread-196208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:06:23.011 [DEBUG] [Thread-196208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:06:23.011 [DEBUG] [Thread-196208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:06:23.011 [DEBUG] [Thread-196208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:06:23.031 [INFO] [Thread-196208] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:06:23.032 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:06:23.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:06:23.877 [DEBUG] [Thread-196208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:06:23.878 [DEBUG] [Thread-196208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:06:23.925 [DEBUG] [Thread-196208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:06:23.926 [DEBUG] [Thread-196208] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:06:23.935 [DEBUG] [Thread-196208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:06:23.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:06:23.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-11-24T20:06:23.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:06:23.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:06:23.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:06:23.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:06:23.972 [DEBUG] [Thread-196208] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:06:35.042 [DEBUG] [Thread-196210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:06:40.982 [DEBUG] [Thread-196211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:06:50.133 [DEBUG] [Thread-196212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:06:53.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:06:54.004 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:06:54.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-11-24T20:06:54.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 6, 46), 18.5, 28.55, 0.0, 25.64, 17.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:06:54.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:06:46
2025-11-24T20:06:54.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:06:55.116 [DEBUG] [Thread-196213] [transport.py] [_log()] starting thread (client mode): 0xd317da50
2025-11-24T20:06:55.116 [DEBUG] [Thread-196213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:06:55.131 [DEBUG] [Thread-196213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:06:55.132 [INFO] [Thread-196213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:06:55.135 [DEBUG] [Thread-196213] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:06:55.135 [DEBUG] [Thread-196213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:06:55.135 [DEBUG] [Thread-196213] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:06:55.135 [DEBUG] [Thread-196213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] client lang: <none>
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] server lang: <none>
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] kex follows: False
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] Compression: none
2025-11-24T20:06:55.136 [DEBUG] [Thread-196213] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:06:55.163 [DEBUG] [Thread-196213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:06:55.167 [DEBUG] [Thread-196213] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:06:55.168 [DEBUG] [Thread-196213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:06:55.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:06:55.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:06:55.173 [DEBUG] [Thread-196213] [transport.py] [_log()] userauth is OK
2025-11-24T20:06:55.173 [DEBUG] [Thread-196213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:06:55.173 [DEBUG] [Thread-196213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:06:55.173 [DEBUG] [Thread-196213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:06:55.173 [DEBUG] [Thread-196213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:06:55.199 [INFO] [Thread-196213] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:06:55.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:06:55.777 [DEBUG] [Thread-196213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:06:55.777 [DEBUG] [Thread-196213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:06:55.786 [DEBUG] [Thread-196213] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:06:55.818 [DEBUG] [Thread-196213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:06:55.818 [DEBUG] [Thread-196213] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:06:55.821 [DEBUG] [Thread-196213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:06:55.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:06:55.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:06:55.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:06:55.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:06:55.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:06:55.845 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:06:55.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:06:55.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:06:55.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:06:55.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.754216 -999.00  +17.50  23.13     34   +1.50 1 1 1 1 1    20    0 15.08 -49.29 ----- 20.4 23.1 179.6 25.9 17.8 -26.0 17.7 -25.5 17.4 -24.3 17.8 -25.2
2025-11-24T20:06:55.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:06:55.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:06:55.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.754216
2025-11-24T20:06:55.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:06:55.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:06:55.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:06:55.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:06:55.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:06:55.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:06:46', tmtdew=18.5, humidity=28.55, cloud=0.0, wind=25.64, temperature=17.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:06:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:06:55.854 [DEBUG] [Thread-196213] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:06:55.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:06:55.941 [DEBUG] [Thread-196216] [transport.py] [_log()] starting thread (client mode): 0xd3135f30
2025-11-24T20:06:55.941 [DEBUG] [Thread-196216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:06:55.955 [DEBUG] [Thread-196216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:06:55.955 [INFO] [Thread-196216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:06:55.963 [DEBUG] [Thread-196216] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:06:55.963 [DEBUG] [Thread-196216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:06:55.963 [DEBUG] [Thread-196216] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:06:55.963 [DEBUG] [Thread-196216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:06:55.963 [DEBUG] [Thread-196216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:06:55.963 [DEBUG] [Thread-196216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:06:55.963 [DEBUG] [Thread-196216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:06:55.963 [DEBUG] [Thread-196216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] client lang: <none>
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] server lang: <none>
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] kex follows: False
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] Compression: none
2025-11-24T20:06:55.964 [DEBUG] [Thread-196216] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:06:56.021 [DEBUG] [Thread-196216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:06:56.022 [DEBUG] [Thread-196216] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:06:56.022 [DEBUG] [Thread-196216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:06:56.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:06:56.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:06:56.079 [DEBUG] [Thread-196216] [transport.py] [_log()] userauth is OK
2025-11-24T20:06:56.079 [DEBUG] [Thread-196216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:06:56.079 [DEBUG] [Thread-196216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:06:56.079 [DEBUG] [Thread-196216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:06:56.079 [DEBUG] [Thread-196216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:06:56.099 [INFO] [Thread-196216] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:06:56.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:06:56.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:06:56.941 [DEBUG] [Thread-196216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:06:56.941 [DEBUG] [Thread-196216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:06:56.989 [DEBUG] [Thread-196216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:06:56.989 [DEBUG] [Thread-196216] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:06:56.997 [DEBUG] [Thread-196216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:06:57.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:06:57.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-11-24T20:06:57.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:06:57.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:06:57.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:06:57.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:06:57.032 [DEBUG] [Thread-196216] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:07:05.184 [DEBUG] [Thread-196218 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:07:15.170 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:07:15.172 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:07:20.262 [DEBUG] [Thread-196219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:07:27.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:07:27.055 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:07:27.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-11-24T20:07:27.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 7, 19), 18.51, 28.53, 0.0, 25.02, 17.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:07:27.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:07:19
2025-11-24T20:07:27.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:07:28.051 [DEBUG] [Thread-196220] [transport.py] [_log()] starting thread (client mode): 0xd07f92d0
2025-11-24T20:07:28.052 [DEBUG] [Thread-196220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:07:28.062 [DEBUG] [Thread-196220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:07:28.062 [INFO] [Thread-196220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] client lang: <none>
2025-11-24T20:07:28.065 [DEBUG] [Thread-196220] [transport.py] [_log()] server lang: <none>
2025-11-24T20:07:28.066 [DEBUG] [Thread-196220] [transport.py] [_log()] kex follows: False
2025-11-24T20:07:28.066 [DEBUG] [Thread-196220] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:07:28.066 [DEBUG] [Thread-196220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:07:28.066 [DEBUG] [Thread-196220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:07:28.066 [DEBUG] [Thread-196220] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:07:28.066 [DEBUG] [Thread-196220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:07:28.067 [DEBUG] [Thread-196220] [transport.py] [_log()] Compression: none
2025-11-24T20:07:28.067 [DEBUG] [Thread-196220] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:07:28.087 [DEBUG] [Thread-196220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:07:28.090 [DEBUG] [Thread-196220] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:07:28.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:07:28.092 [DEBUG] [Thread-196220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:07:28.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:07:28.094 [DEBUG] [Thread-196220] [transport.py] [_log()] userauth is OK
2025-11-24T20:07:28.094 [DEBUG] [Thread-196220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:07:28.095 [DEBUG] [Thread-196220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:07:28.095 [DEBUG] [Thread-196220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:07:28.095 [DEBUG] [Thread-196220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:07:28.115 [INFO] [Thread-196220] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:07:28.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:07:28.705 [DEBUG] [Thread-196220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:07:28.705 [DEBUG] [Thread-196220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:07:28.715 [DEBUG] [Thread-196220] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:07:28.745 [DEBUG] [Thread-196220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:07:28.746 [DEBUG] [Thread-196220] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:07:28.749 [DEBUG] [Thread-196220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:07:28.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:07:28.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:07:28.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:07:28.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:07:28.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:07:28.765 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:07:28.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:07:28.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:07:28.767 [DEBUG] [Thread-196220] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:07:28.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:07:28.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.754564 -999.00  +17.50  20.30     34   +1.50 1 1 1 1 1    18    0 14.77 -51.62 ----- 24.0 20.3 177.4 25.4 17.8 -26.0 17.7 -25.5 17.5 -24.2 17.7 -25.4
2025-11-24T20:07:28.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:07:28.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:07:28.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.754564
2025-11-24T20:07:28.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:07:28.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:07:28.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:07:28.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:07:28.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:07:28.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:07:19', tmtdew=18.51, humidity=28.53, cloud=0.0, wind=25.02, temperature=17.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:06:34.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:07:28.863 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:07:28.875 [DEBUG] [Thread-196223] [transport.py] [_log()] starting thread (client mode): 0xd07fb130
2025-11-24T20:07:28.875 [DEBUG] [Thread-196223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:07:28.891 [DEBUG] [Thread-196223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:07:28.891 [INFO] [Thread-196223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:07:28.898 [DEBUG] [Thread-196223] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:07:28.899 [DEBUG] [Thread-196223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:07:28.899 [DEBUG] [Thread-196223] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:07:28.899 [DEBUG] [Thread-196223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:07:28.899 [DEBUG] [Thread-196223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:07:28.899 [DEBUG] [Thread-196223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:07:28.899 [DEBUG] [Thread-196223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:07:28.900 [DEBUG] [Thread-196223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:07:28.900 [DEBUG] [Thread-196223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:07:28.900 [DEBUG] [Thread-196223] [transport.py] [_log()] client lang: <none>
2025-11-24T20:07:28.900 [DEBUG] [Thread-196223] [transport.py] [_log()] server lang: <none>
2025-11-24T20:07:28.900 [DEBUG] [Thread-196223] [transport.py] [_log()] kex follows: False
2025-11-24T20:07:28.900 [DEBUG] [Thread-196223] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:07:28.900 [DEBUG] [Thread-196223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:07:28.900 [DEBUG] [Thread-196223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:07:28.901 [DEBUG] [Thread-196223] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:07:28.901 [DEBUG] [Thread-196223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:07:28.901 [DEBUG] [Thread-196223] [transport.py] [_log()] Compression: none
2025-11-24T20:07:28.901 [DEBUG] [Thread-196223] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:07:28.958 [DEBUG] [Thread-196223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:07:28.958 [DEBUG] [Thread-196223] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:07:28.958 [DEBUG] [Thread-196223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:07:28.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:07:28.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:07:29.014 [DEBUG] [Thread-196223] [transport.py] [_log()] userauth is OK
2025-11-24T20:07:29.015 [DEBUG] [Thread-196223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:07:29.015 [DEBUG] [Thread-196223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:07:29.015 [DEBUG] [Thread-196223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:07:29.015 [DEBUG] [Thread-196223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:07:29.029 [INFO] [Thread-196223] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:07:29.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:07:29.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:07:29.883 [DEBUG] [Thread-196223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:07:29.883 [DEBUG] [Thread-196223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:07:29.931 [DEBUG] [Thread-196223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:07:29.932 [DEBUG] [Thread-196223] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:07:29.940 [DEBUG] [Thread-196223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:07:29.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:07:29.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:07:29.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-11-24T20:07:29.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:07:29.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:07:29.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:07:29.984 [DEBUG] [Thread-196223] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:07:35.307 [DEBUG] [Thread-196225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:07:41.307 [DEBUG] [Thread-196226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:07:50.397 [DEBUG] [Thread-196227 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:08:00.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:08:00.002 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:08:00.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-11-24T20:08:00.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 7, 52), 18.5, 28.53, 0.0, 28.51, 17.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:08:00.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:07:52
2025-11-24T20:08:00.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:08:01.146 [DEBUG] [Thread-196228] [transport.py] [_log()] starting thread (client mode): 0xd3135ae0
2025-11-24T20:08:01.146 [DEBUG] [Thread-196228] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:08:01.166 [DEBUG] [Thread-196228] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:08:01.166 [INFO] [Thread-196228] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:08:01.169 [DEBUG] [Thread-196228] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:08:01.169 [DEBUG] [Thread-196228] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:08:01.169 [DEBUG] [Thread-196228] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:08:01.169 [DEBUG] [Thread-196228] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:08:01.169 [DEBUG] [Thread-196228] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:08:01.169 [DEBUG] [Thread-196228] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] client lang: <none>
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] server lang: <none>
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] kex follows: False
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] Compression: none
2025-11-24T20:08:01.170 [DEBUG] [Thread-196228] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:08:01.185 [DEBUG] [Thread-196228] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:08:01.185 [DEBUG] [Thread-196228] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:08:01.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:08:01.186 [DEBUG] [Thread-196228] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:08:01.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:08:01.186 [DEBUG] [Thread-196228] [transport.py] [_log()] userauth is OK
2025-11-24T20:08:01.186 [DEBUG] [Thread-196228] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:08:01.186 [DEBUG] [Thread-196228] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:08:01.187 [DEBUG] [Thread-196228] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:08:01.187 [DEBUG] [Thread-196228] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:08:01.196 [INFO] [Thread-196228] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:08:01.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:08:01.827 [DEBUG] [Thread-196228] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:08:01.827 [DEBUG] [Thread-196228] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:08:01.827 [DEBUG] [Thread-196228] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:08:01.868 [DEBUG] [Thread-196228] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:08:01.868 [DEBUG] [Thread-196228] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:08:01.870 [DEBUG] [Thread-196228] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:08:01.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:08:01.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:08:01.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:08:01.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:08:01.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:08:01.889 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:08:01.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:08:01.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:08:01.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:08:01.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.754911 -999.00  +17.40  18.32     34   +1.50 1 1 1 1 1    16    0 15.11 -54.61 ----- 17.6 18.3 169.6 25.5 17.8 -26.0 17.7 -25.4 17.5 -24.3 17.7 -25.4
2025-11-24T20:08:01.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:08:01.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:08:01.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.754911
2025-11-24T20:08:01.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:08:01.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:08:01.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:08:01.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:08:01.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:08:01.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:07:52', tmtdew=18.5, humidity=28.53, cloud=0.0, wind=28.51, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:07:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:08:01.890 [DEBUG] [Thread-196228] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:08:01.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:08:01.976 [DEBUG] [Thread-196231] [transport.py] [_log()] starting thread (client mode): 0xd07f92d0
2025-11-24T20:08:01.976 [DEBUG] [Thread-196231] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:08:01.994 [DEBUG] [Thread-196231] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:08:01.994 [INFO] [Thread-196231] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] client lang: <none>
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] server lang: <none>
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] kex follows: False
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] Compression: none
2025-11-24T20:08:02.002 [DEBUG] [Thread-196231] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:08:02.058 [DEBUG] [Thread-196231] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:08:02.058 [DEBUG] [Thread-196231] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:08:02.058 [DEBUG] [Thread-196231] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:08:02.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:08:02.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:08:02.114 [DEBUG] [Thread-196231] [transport.py] [_log()] userauth is OK
2025-11-24T20:08:02.114 [DEBUG] [Thread-196231] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:08:02.114 [DEBUG] [Thread-196231] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:08:02.114 [DEBUG] [Thread-196231] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:08:02.114 [DEBUG] [Thread-196231] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:08:02.129 [INFO] [Thread-196231] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:08:02.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:08:02.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:08:02.997 [DEBUG] [Thread-196231] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:08:02.997 [DEBUG] [Thread-196231] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:08:03.045 [DEBUG] [Thread-196231] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:08:03.045 [DEBUG] [Thread-196231] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:08:03.055 [DEBUG] [Thread-196231] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:08:03.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:08:03.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-11-24T20:08:03.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:08:03.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:08:03.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:08:03.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:08:03.088 [DEBUG] [Thread-196231] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:08:05.424 [DEBUG] [Thread-196233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:08:20.465 [DEBUG] [Thread-196234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:08:23.687 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:08:23.688 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:08:33.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:08:33.122 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:08:33.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:08:33.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 8, 25), 18.47, 28.6, 0.0, 25.53, 17.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:08:33.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:08:25
2025-11-24T20:08:34.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:08:34.242 [DEBUG] [Thread-196235] [transport.py] [_log()] starting thread (client mode): 0xd0711270
2025-11-24T20:08:34.242 [DEBUG] [Thread-196235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:08:34.255 [DEBUG] [Thread-196235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:08:34.256 [INFO] [Thread-196235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:08:34.260 [DEBUG] [Thread-196235] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:08:34.260 [DEBUG] [Thread-196235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:08:34.260 [DEBUG] [Thread-196235] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:08:34.260 [DEBUG] [Thread-196235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:08:34.260 [DEBUG] [Thread-196235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:08:34.260 [DEBUG] [Thread-196235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:08:34.260 [DEBUG] [Thread-196235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:08:34.260 [DEBUG] [Thread-196235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:08:34.260 [DEBUG] [Thread-196235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:08:34.261 [DEBUG] [Thread-196235] [transport.py] [_log()] client lang: <none>
2025-11-24T20:08:34.261 [DEBUG] [Thread-196235] [transport.py] [_log()] server lang: <none>
2025-11-24T20:08:34.261 [DEBUG] [Thread-196235] [transport.py] [_log()] kex follows: False
2025-11-24T20:08:34.261 [DEBUG] [Thread-196235] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:08:34.261 [DEBUG] [Thread-196235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:08:34.261 [DEBUG] [Thread-196235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:08:34.261 [DEBUG] [Thread-196235] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:08:34.261 [DEBUG] [Thread-196235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:08:34.261 [DEBUG] [Thread-196235] [transport.py] [_log()] Compression: none
2025-11-24T20:08:34.261 [DEBUG] [Thread-196235] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:08:34.294 [DEBUG] [Thread-196235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:08:34.300 [DEBUG] [Thread-196235] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:08:34.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:08:34.303 [DEBUG] [Thread-196235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:08:34.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:08:34.307 [DEBUG] [Thread-196235] [transport.py] [_log()] userauth is OK
2025-11-24T20:08:34.307 [DEBUG] [Thread-196235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:08:34.308 [DEBUG] [Thread-196235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:08:34.308 [DEBUG] [Thread-196235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:08:34.308 [DEBUG] [Thread-196235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:08:34.336 [INFO] [Thread-196235] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:08:34.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:08:34.902 [DEBUG] [Thread-196235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:08:34.902 [DEBUG] [Thread-196235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:08:34.912 [DEBUG] [Thread-196235] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:08:34.943 [DEBUG] [Thread-196235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:08:34.943 [DEBUG] [Thread-196235] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:08:34.946 [DEBUG] [Thread-196235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:08:34.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:08:34.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:08:34.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:08:34.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:08:34.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:08:34.966 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:08:34.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:08:34.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:08:34.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:08:34.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.755258 -999.00  +17.40  20.86     34   +1.50 1 1 1 1 1    15    0 14.71 -53.51 ----- 21.6 20.9 173.0 30.4 17.8 -26.1 17.6 -25.5 17.4 -24.2 17.7 -25.3
2025-11-24T20:08:34.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:08:34.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:08:34.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.755258
2025-11-24T20:08:34.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:08:34.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:08:34.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:08:34.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:08:34.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:08:34.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:08:25', tmtdew=18.47, humidity=28.6, cloud=0.0, wind=25.53, temperature=17.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:07:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:08:34.978 [DEBUG] [Thread-196235] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:08:35.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:08:35.064 [DEBUG] [Thread-196238] [transport.py] [_log()] starting thread (client mode): 0xd07101c0
2025-11-24T20:08:35.064 [DEBUG] [Thread-196238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:08:35.079 [DEBUG] [Thread-196238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:08:35.079 [INFO] [Thread-196238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:08:35.086 [DEBUG] [Thread-196238] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:08:35.086 [DEBUG] [Thread-196238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:08:35.086 [DEBUG] [Thread-196238] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:08:35.086 [DEBUG] [Thread-196238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] client lang: <none>
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] server lang: <none>
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] kex follows: False
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] Compression: none
2025-11-24T20:08:35.087 [DEBUG] [Thread-196238] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:08:35.146 [DEBUG] [Thread-196238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:08:35.146 [DEBUG] [Thread-196238] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:08:35.146 [DEBUG] [Thread-196238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:08:35.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:08:35.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:08:35.203 [DEBUG] [Thread-196238] [transport.py] [_log()] userauth is OK
2025-11-24T20:08:35.203 [DEBUG] [Thread-196238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:08:35.203 [DEBUG] [Thread-196238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:08:35.203 [DEBUG] [Thread-196238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:08:35.203 [DEBUG] [Thread-196238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:08:35.217 [INFO] [Thread-196238] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:08:35.217 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:08:35.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:08:35.507 [DEBUG] [Thread-196240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:08:36.065 [DEBUG] [Thread-196238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:08:36.065 [DEBUG] [Thread-196238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:08:36.114 [DEBUG] [Thread-196238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:08:36.114 [DEBUG] [Thread-196238] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:08:36.123 [DEBUG] [Thread-196238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:08:36.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:08:36.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-11-24T20:08:36.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-11-24T20:08:36.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:08:36.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:08:36.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:08:36.158 [DEBUG] [Thread-196238] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:08:41.561 [DEBUG] [Thread-196241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:08:50.593 [DEBUG] [Thread-196242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:09:05.635 [DEBUG] [Thread-196243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:09:06.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:09:06.158 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:09: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-11-24T20:09:06.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 8, 58), 18.48, 28.58, 0.0, 25.76, 17.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:09:06.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:08:58
2025-11-24T20:09:07.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:09:07.316 [DEBUG] [Thread-196244] [transport.py] [_log()] starting thread (client mode): 0xd3135f60
2025-11-24T20:09:07.317 [DEBUG] [Thread-196244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:09:07.322 [DEBUG] [Thread-196244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:09:07.322 [INFO] [Thread-196244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:09:07.325 [DEBUG] [Thread-196244] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:09:07.325 [DEBUG] [Thread-196244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:09:07.325 [DEBUG] [Thread-196244] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:09:07.325 [DEBUG] [Thread-196244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:09:07.325 [DEBUG] [Thread-196244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:09:07.326 [DEBUG] [Thread-196244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:09:07.326 [DEBUG] [Thread-196244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:09:07.326 [DEBUG] [Thread-196244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:09:07.326 [DEBUG] [Thread-196244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:09:07.326 [DEBUG] [Thread-196244] [transport.py] [_log()] client lang: <none>
2025-11-24T20:09:07.326 [DEBUG] [Thread-196244] [transport.py] [_log()] server lang: <none>
2025-11-24T20:09:07.326 [DEBUG] [Thread-196244] [transport.py] [_log()] kex follows: False
2025-11-24T20:09:07.326 [DEBUG] [Thread-196244] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:09:07.326 [DEBUG] [Thread-196244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:09:07.326 [DEBUG] [Thread-196244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:09:07.327 [DEBUG] [Thread-196244] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:09:07.327 [DEBUG] [Thread-196244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:09:07.327 [DEBUG] [Thread-196244] [transport.py] [_log()] Compression: none
2025-11-24T20:09:07.327 [DEBUG] [Thread-196244] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:09:07.361 [DEBUG] [Thread-196244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:09:07.365 [DEBUG] [Thread-196244] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:09:07.367 [DEBUG] [Thread-196244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:09:07.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:09:07.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:09:07.405 [DEBUG] [Thread-196244] [transport.py] [_log()] userauth is OK
2025-11-24T20:09:07.405 [DEBUG] [Thread-196244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:09:07.406 [DEBUG] [Thread-196244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:09:07.406 [DEBUG] [Thread-196244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:09:07.406 [DEBUG] [Thread-196244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:09:07.444 [INFO] [Thread-196244] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:09:07.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:09:08.004 [DEBUG] [Thread-196244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:09:08.004 [DEBUG] [Thread-196244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:09:08.005 [DEBUG] [Thread-196244] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:09:08.045 [DEBUG] [Thread-196244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:09:08.045 [DEBUG] [Thread-196244] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:09:08.047 [DEBUG] [Thread-196244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:09:08.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:09:08.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:09:08.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:09:08.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:09:08.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:09:08.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:09:08.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:09:08.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:09:08.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:09:08.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.755605 -999.00  +17.40  20.06     34   +1.50 1 1 1 1 1    14    0 14.88 -50.32 ----- 20.0 20.1 178.2 32.6 17.7 -26.1 17.7 -25.6 17.4 -24.3 17.7 -25.3
2025-11-24T20:09:08.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:09:08.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:09:08.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.755605
2025-11-24T20:09:08.073 [DEBUG] [Thread-196244] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:09:08.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:09:08.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:09:08.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:09:08.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:09:08.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:09:08.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:08:58', tmtdew=18.48, humidity=28.58, cloud=0.0, wind=25.76, temperature=17.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:08:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:09:08.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:09:08.169 [DEBUG] [Thread-196247] [transport.py] [_log()] starting thread (client mode): 0xd317d450
2025-11-24T20:09:08.169 [DEBUG] [Thread-196247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:09:08.184 [DEBUG] [Thread-196247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:09:08.184 [INFO] [Thread-196247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:09:08.191 [DEBUG] [Thread-196247] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] client lang: <none>
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] server lang: <none>
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] kex follows: False
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] Compression: none
2025-11-24T20:09:08.192 [DEBUG] [Thread-196247] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:09:08.250 [DEBUG] [Thread-196247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:09:08.250 [DEBUG] [Thread-196247] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:09:08.250 [DEBUG] [Thread-196247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:09:08.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:09:08.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:09:08.306 [DEBUG] [Thread-196247] [transport.py] [_log()] userauth is OK
2025-11-24T20:09:08.306 [DEBUG] [Thread-196247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:09:08.306 [DEBUG] [Thread-196247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:09:08.306 [DEBUG] [Thread-196247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:09:08.306 [DEBUG] [Thread-196247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:09:08.320 [INFO] [Thread-196247] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:09:08.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:09:08.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:09:09.180 [DEBUG] [Thread-196247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:09:09.180 [DEBUG] [Thread-196247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:09:09.228 [DEBUG] [Thread-196247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:09:09.228 [DEBUG] [Thread-196247] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:09:09.237 [DEBUG] [Thread-196247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:09:09.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:09:09.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-11-24T20:09:09.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-11-24T20:09:09.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:09:09.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:09:09.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:09:09.286 [DEBUG] [Thread-196247] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:09:20.666 [DEBUG] [Thread-196249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:09:27.528 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:09:27.531 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:09:35.764 [DEBUG] [Thread-196250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:09:39.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:09:39.319 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:09:39.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-11-24T20:09:40.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 9, 32), 18.48, 28.56, 0.0, 26.27, 17.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:09:40.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:09:32
2025-11-24T20:09:40.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:09:40.481 [DEBUG] [Thread-196251] [transport.py] [_log()] starting thread (client mode): 0xd31375b0
2025-11-24T20:09:40.481 [DEBUG] [Thread-196251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:09:40.486 [DEBUG] [Thread-196251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:09:40.487 [INFO] [Thread-196251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] client lang: <none>
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] server lang: <none>
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] kex follows: False
2025-11-24T20:09:40.490 [DEBUG] [Thread-196251] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:09:40.491 [DEBUG] [Thread-196251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:09:40.491 [DEBUG] [Thread-196251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:09:40.491 [DEBUG] [Thread-196251] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:09:40.491 [DEBUG] [Thread-196251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:09:40.491 [DEBUG] [Thread-196251] [transport.py] [_log()] Compression: none
2025-11-24T20:09:40.491 [DEBUG] [Thread-196251] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:09:40.513 [DEBUG] [Thread-196251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:09:40.518 [DEBUG] [Thread-196251] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:09:40.519 [DEBUG] [Thread-196251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:09:40.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:09:40.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:09:40.524 [DEBUG] [Thread-196251] [transport.py] [_log()] userauth is OK
2025-11-24T20:09:40.524 [DEBUG] [Thread-196251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:09:40.524 [DEBUG] [Thread-196251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:09:40.525 [DEBUG] [Thread-196251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:09:40.525 [DEBUG] [Thread-196251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:09:40.551 [INFO] [Thread-196251] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:09:40.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:09:41.152 [DEBUG] [Thread-196251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:09:41.152 [DEBUG] [Thread-196251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:09:41.153 [DEBUG] [Thread-196251] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:09:41.193 [DEBUG] [Thread-196251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:09:41.193 [DEBUG] [Thread-196251] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:09:41.196 [DEBUG] [Thread-196251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:09:41.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:09:41.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:09:41.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:09:41.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:09:41.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:09:41.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:09:41.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:09:41.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:09:41.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:09:41.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.755952 -999.00  +17.40  15.65     34   +1.50 1 1 1 1 1    12    0 14.74 -52.11 ----- 13.9 15.7 166.7 24.2 17.7 -26.1 17.6 -25.7 17.4 -24.3 17.7 -25.3
2025-11-24T20:09:41.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:09:41.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:09:41.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.755952
2025-11-24T20:09:41.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:09:41.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:09:41.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:09:41.227 [DEBUG] [Thread-196251] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:09:41.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:09:41.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:09:41.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:09:32', tmtdew=18.48, humidity=28.56, cloud=0.0, wind=26.27, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:08:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:09:41.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:09:41.312 [DEBUG] [Thread-196254] [transport.py] [_log()] starting thread (client mode): 0xd0712e30
2025-11-24T20:09:41.313 [DEBUG] [Thread-196254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:09:41.327 [DEBUG] [Thread-196254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:09:41.327 [INFO] [Thread-196254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:09:41.334 [DEBUG] [Thread-196254] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:09:41.334 [DEBUG] [Thread-196254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:09:41.334 [DEBUG] [Thread-196254] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] client lang: <none>
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] server lang: <none>
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] kex follows: False
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] Compression: none
2025-11-24T20:09:41.335 [DEBUG] [Thread-196254] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:09:41.389 [DEBUG] [Thread-196254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:09:41.390 [DEBUG] [Thread-196254] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:09:41.390 [DEBUG] [Thread-196254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:09:41.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:09:41.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:09:41.451 [DEBUG] [Thread-196254] [transport.py] [_log()] userauth is OK
2025-11-24T20:09:41.451 [DEBUG] [Thread-196254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:09:41.451 [DEBUG] [Thread-196254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:09:41.451 [DEBUG] [Thread-196254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:09:41.451 [DEBUG] [Thread-196254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:09:41.465 [INFO] [Thread-196254] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:09:41.465 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:09:41.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:09:41.796 [DEBUG] [Thread-196256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:09:42.313 [DEBUG] [Thread-196254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:09:42.313 [DEBUG] [Thread-196254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:09:42.360 [DEBUG] [Thread-196254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:09:42.361 [DEBUG] [Thread-196254] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:09:42.370 [DEBUG] [Thread-196254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:09:42.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:09:42.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-11-24T20:09:42.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-11-24T20:09:42.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:09:42.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:09:42.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:09:42.408 [DEBUG] [Thread-196254] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:09:50.798 [DEBUG] [Thread-196257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:10:05.873 [DEBUG] [Thread-196258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:10:12.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:10:12.407 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:10:12.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-11-24T20:10:13.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 10, 5), 18.42, 28.7, 0.0, 27.21, 17.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:10:13.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:10:05
2025-11-24T20:10:13.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:10:13.552 [DEBUG] [Thread-196259] [transport.py] [_log()] starting thread (client mode): 0xd07ce050
2025-11-24T20:10:13.552 [DEBUG] [Thread-196259] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:10:13.565 [DEBUG] [Thread-196259] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:10:13.565 [INFO] [Thread-196259] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] client lang: <none>
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] server lang: <none>
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] kex follows: False
2025-11-24T20:10:13.570 [DEBUG] [Thread-196259] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:10:13.571 [DEBUG] [Thread-196259] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:10:13.571 [DEBUG] [Thread-196259] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:10:13.571 [DEBUG] [Thread-196259] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:10:13.572 [DEBUG] [Thread-196259] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:10:13.572 [DEBUG] [Thread-196259] [transport.py] [_log()] Compression: none
2025-11-24T20:10:13.572 [DEBUG] [Thread-196259] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:10:13.608 [DEBUG] [Thread-196259] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:10:13.613 [DEBUG] [Thread-196259] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:10:13.617 [DEBUG] [Thread-196259] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:10:13.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:10:13.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:10:13.623 [DEBUG] [Thread-196259] [transport.py] [_log()] userauth is OK
2025-11-24T20:10:13.623 [DEBUG] [Thread-196259] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:10:13.623 [DEBUG] [Thread-196259] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:10:13.624 [DEBUG] [Thread-196259] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:10:13.624 [DEBUG] [Thread-196259] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:10:13.651 [INFO] [Thread-196259] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:10:13.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:10:14.494 [DEBUG] [Thread-196259] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:10:14.495 [DEBUG] [Thread-196259] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:10:14.495 [DEBUG] [Thread-196259] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:10:14.535 [DEBUG] [Thread-196259] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:10:14.535 [DEBUG] [Thread-196259] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:10:14.537 [DEBUG] [Thread-196259] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:10:14.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:10:14.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:10:14.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:10:14.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:10:14.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:10:14.557 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:10:14.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:10:14.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:10:14.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:10:14.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.756647 -999.00  +17.40  23.68     34   +1.50 1 1 1 1 1    10    0 14.70 -57.33 ----- 21.9 23.7 182.6 28.4 17.7 -26.1 17.6 -25.6 17.4 -24.3 17.6 -25.3
2025-11-24T20:10:14.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:10:14.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:10:14.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.756647
2025-11-24T20:10:14.565 [DEBUG] [Thread-196259] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:10:14.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:10:14.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:10:14.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:10:14.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:10:14.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:10:14.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:10:05', tmtdew=18.42, humidity=28.7, cloud=0.0, wind=27.21, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:09:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:10:14.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:10:14.661 [DEBUG] [Thread-196262] [transport.py] [_log()] starting thread (client mode): 0xd0710220
2025-11-24T20:10:14.661 [DEBUG] [Thread-196262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:10:14.675 [DEBUG] [Thread-196262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:10:14.675 [INFO] [Thread-196262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:10:14.682 [DEBUG] [Thread-196262] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:10:14.682 [DEBUG] [Thread-196262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:10:14.682 [DEBUG] [Thread-196262] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:10:14.682 [DEBUG] [Thread-196262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:10:14.682 [DEBUG] [Thread-196262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:10:14.682 [DEBUG] [Thread-196262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:10:14.682 [DEBUG] [Thread-196262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:10:14.682 [DEBUG] [Thread-196262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:10:14.682 [DEBUG] [Thread-196262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:10:14.682 [DEBUG] [Thread-196262] [transport.py] [_log()] client lang: <none>
2025-11-24T20:10:14.683 [DEBUG] [Thread-196262] [transport.py] [_log()] server lang: <none>
2025-11-24T20:10:14.683 [DEBUG] [Thread-196262] [transport.py] [_log()] kex follows: False
2025-11-24T20:10:14.683 [DEBUG] [Thread-196262] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:10:14.683 [DEBUG] [Thread-196262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:10:14.683 [DEBUG] [Thread-196262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:10:14.683 [DEBUG] [Thread-196262] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:10:14.683 [DEBUG] [Thread-196262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:10:14.683 [DEBUG] [Thread-196262] [transport.py] [_log()] Compression: none
2025-11-24T20:10:14.683 [DEBUG] [Thread-196262] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:10:14.739 [DEBUG] [Thread-196262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:10:14.739 [DEBUG] [Thread-196262] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:10:14.739 [DEBUG] [Thread-196262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:10:14.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:10:14.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:10:14.795 [DEBUG] [Thread-196262] [transport.py] [_log()] userauth is OK
2025-11-24T20:10:14.795 [DEBUG] [Thread-196262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:10:14.795 [DEBUG] [Thread-196262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:10:14.795 [DEBUG] [Thread-196262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:10:14.795 [DEBUG] [Thread-196262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:10:14.809 [INFO] [Thread-196262] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:10:14.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:10:14.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:10:15.624 [DEBUG] [Thread-196262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:10:15.624 [DEBUG] [Thread-196262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:10:15.672 [DEBUG] [Thread-196262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:10:15.672 [DEBUG] [Thread-196262] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:10:15.681 [DEBUG] [Thread-196262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:10:15.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:10:15.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-11-24T20:10:15.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-11-24T20:10:15.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:10:15.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:10:15.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:10:15.718 [DEBUG] [Thread-196262] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:10:20.902 [DEBUG] [Thread-196264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:10:31.752 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:10:31.754 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:10:36.014 [DEBUG] [Thread-196265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:10:42.050 [DEBUG] [Thread-196266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:10:45.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:10:45.727 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:10:45.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-11-24T20:10:46.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 10, 38), 18.31, 28.73, 0.0, 30.7, 17.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:10:46.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:10:38
2025-11-24T20:10:46.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:10:46.950 [DEBUG] [Thread-196267] [transport.py] [_log()] starting thread (client mode): 0xd07134c0
2025-11-24T20:10:46.951 [DEBUG] [Thread-196267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:10:46.964 [DEBUG] [Thread-196267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:10:46.964 [INFO] [Thread-196267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] client lang: <none>
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] server lang: <none>
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] kex follows: False
2025-11-24T20:10:46.968 [DEBUG] [Thread-196267] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:10:46.969 [DEBUG] [Thread-196267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:10:46.969 [DEBUG] [Thread-196267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:10:46.969 [DEBUG] [Thread-196267] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:10:46.969 [DEBUG] [Thread-196267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:10:46.969 [DEBUG] [Thread-196267] [transport.py] [_log()] Compression: none
2025-11-24T20:10:46.969 [DEBUG] [Thread-196267] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:10:46.998 [DEBUG] [Thread-196267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:10:47.001 [DEBUG] [Thread-196267] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:10:47.003 [DEBUG] [Thread-196267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:10:47.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:10:47.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:10:47.007 [DEBUG] [Thread-196267] [transport.py] [_log()] userauth is OK
2025-11-24T20:10:47.007 [DEBUG] [Thread-196267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:10:47.008 [DEBUG] [Thread-196267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:10:47.008 [DEBUG] [Thread-196267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:10:47.008 [DEBUG] [Thread-196267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:10:47.026 [INFO] [Thread-196267] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:10:47.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:10:47.796 [DEBUG] [Thread-196267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:10:47.805 [DEBUG] [Thread-196267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:10:47.805 [DEBUG] [Thread-196267] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:10:47.837 [DEBUG] [Thread-196267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:10:47.837 [DEBUG] [Thread-196267] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:10:47.841 [DEBUG] [Thread-196267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:10:47.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:10:47.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:10:47.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:10:47.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:10:47.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:10:47.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:10:47.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:10:47.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:10:47.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:10:47.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.757341 -999.00  +17.40  22.28     34   +1.50 1 1 1 1 1     9    0 14.78 -57.84 ----- 18.4 22.3 177.8 30.9 17.7 -26.0 17.6 -25.5 17.4 -24.4 17.6 -25.4
2025-11-24T20:10:47.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:10:47.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:10:47.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.757341
2025-11-24T20:10:47.877 [DEBUG] [Thread-196267] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:10:47.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:10:47.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:10:47.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:10:47.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:10:47.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:10:47.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:10:38', tmtdew=18.31, humidity=28.73, cloud=0.0, wind=30.7, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:10:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:10:47.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:10:47.971 [DEBUG] [Thread-196270] [transport.py] [_log()] starting thread (client mode): 0xd07031c0
2025-11-24T20:10:47.971 [DEBUG] [Thread-196270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:10:47.986 [DEBUG] [Thread-196270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:10:47.986 [INFO] [Thread-196270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:10:47.993 [DEBUG] [Thread-196270] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] client lang: <none>
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] server lang: <none>
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] kex follows: False
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] Compression: none
2025-11-24T20:10:47.994 [DEBUG] [Thread-196270] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:10:48.052 [DEBUG] [Thread-196270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:10:48.053 [DEBUG] [Thread-196270] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:10:48.053 [DEBUG] [Thread-196270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:10:48.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:10:48.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:10:48.112 [DEBUG] [Thread-196270] [transport.py] [_log()] userauth is OK
2025-11-24T20:10:48.112 [DEBUG] [Thread-196270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:10:48.112 [DEBUG] [Thread-196270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:10:48.112 [DEBUG] [Thread-196270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:10:48.112 [DEBUG] [Thread-196270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:10:48.131 [INFO] [Thread-196270] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:10:48.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:10:48.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:10:49.045 [DEBUG] [Thread-196270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:10:49.045 [DEBUG] [Thread-196270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:10:49.093 [DEBUG] [Thread-196270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:10:49.093 [DEBUG] [Thread-196270] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:10:49.101 [DEBUG] [Thread-196270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:10:49.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:10:49.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-11-24T20:10:49.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-11-24T20:10:49.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:10:49.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:10:49.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:10:49.143 [DEBUG] [Thread-196270] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:10:51.060 [DEBUG] [Thread-196272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:11:06.170 [DEBUG] [Thread-196273 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:11:19.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:11:19.167 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:11:19.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-11-24T20:11:19.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 11, 10), 18.32, 28.68, 0.0, 30.63, 17.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:11:19.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:11:10
2025-11-24T20:11:20.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:11:20.330 [DEBUG] [Thread-196274] [transport.py] [_log()] starting thread (client mode): 0xd0701e70
2025-11-24T20:11:20.331 [DEBUG] [Thread-196274] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:11:20.342 [DEBUG] [Thread-196274] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:11:20.342 [INFO] [Thread-196274] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:11:20.346 [DEBUG] [Thread-196274] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:11:20.346 [DEBUG] [Thread-196274] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:11:20.346 [DEBUG] [Thread-196274] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:11:20.346 [DEBUG] [Thread-196274] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:11:20.346 [DEBUG] [Thread-196274] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:11:20.346 [DEBUG] [Thread-196274] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:11:20.346 [DEBUG] [Thread-196274] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:11:20.346 [DEBUG] [Thread-196274] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:11:20.347 [DEBUG] [Thread-196274] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:11:20.347 [DEBUG] [Thread-196274] [transport.py] [_log()] client lang: <none>
2025-11-24T20:11:20.347 [DEBUG] [Thread-196274] [transport.py] [_log()] server lang: <none>
2025-11-24T20:11:20.347 [DEBUG] [Thread-196274] [transport.py] [_log()] kex follows: False
2025-11-24T20:11:20.347 [DEBUG] [Thread-196274] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:11:20.347 [DEBUG] [Thread-196274] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:11:20.347 [DEBUG] [Thread-196274] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:11:20.347 [DEBUG] [Thread-196274] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:11:20.347 [DEBUG] [Thread-196274] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:11:20.348 [DEBUG] [Thread-196274] [transport.py] [_log()] Compression: none
2025-11-24T20:11:20.348 [DEBUG] [Thread-196274] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:11:20.370 [DEBUG] [Thread-196274] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:11:20.374 [DEBUG] [Thread-196274] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:11:20.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:11:20.376 [DEBUG] [Thread-196274] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:11:20.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:11:20.377 [DEBUG] [Thread-196274] [transport.py] [_log()] userauth is OK
2025-11-24T20:11:20.378 [DEBUG] [Thread-196274] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:11:20.378 [DEBUG] [Thread-196274] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:11:20.378 [DEBUG] [Thread-196274] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:11:20.378 [DEBUG] [Thread-196274] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:11:20.393 [INFO] [Thread-196274] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:11:20.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:11:20.962 [DEBUG] [Thread-196274] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:11:20.962 [DEBUG] [Thread-196274] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:11:20.963 [DEBUG] [Thread-196274] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:11:21.003 [DEBUG] [Thread-196274] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:11:21.003 [DEBUG] [Thread-196274] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:11:21.005 [DEBUG] [Thread-196274] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:11:21.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:11:21.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:11:21.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:11:21.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:11:21.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:11:21.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:11:21.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:11:21.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:11:21.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:11:21.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.757689 -999.00  +17.40  16.45     34   +1.50 1 1 1 1 1     8    0 14.80 -52.59 NA 17.2 16.4 173.4 30.2 17.7 -26.1 17.6 -25.5 17.4 -24.4 17.6 -25.4
2025-11-24T20:11:21.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:11:21.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:11:21.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.757689
2025-11-24T20:11:21.032 [DEBUG] [Thread-196274] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:11:21.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:11:21.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:11:21.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:11:21.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:11:21.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:11:21.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:11:10', tmtdew=18.32, humidity=28.68, cloud=0.0, wind=30.63, temperature=17.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:11:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:11:21.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:11:21.130 [DEBUG] [Thread-196277] [transport.py] [_log()] starting thread (client mode): 0xd0784430
2025-11-24T20:11:21.130 [DEBUG] [Thread-196277] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:11:21.145 [DEBUG] [Thread-196277] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:11:21.145 [INFO] [Thread-196277] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:11:21.152 [DEBUG] [Thread-196277] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:11:21.152 [DEBUG] [Thread-196277] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] client lang: <none>
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] server lang: <none>
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] kex follows: False
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] Compression: none
2025-11-24T20:11:21.153 [DEBUG] [Thread-196277] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:11:21.198 [DEBUG] [Thread-196279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:11:21.210 [DEBUG] [Thread-196277] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:11:21.210 [DEBUG] [Thread-196277] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:11:21.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:11:21.211 [DEBUG] [Thread-196277] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:11:21.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:11:21.267 [DEBUG] [Thread-196277] [transport.py] [_log()] userauth is OK
2025-11-24T20:11:21.267 [DEBUG] [Thread-196277] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:11:21.267 [DEBUG] [Thread-196277] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:11:21.267 [DEBUG] [Thread-196277] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:11:21.267 [DEBUG] [Thread-196277] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:11:21.283 [INFO] [Thread-196277] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:11:21.283 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:11:21.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:11:22.121 [DEBUG] [Thread-196277] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:11:22.121 [DEBUG] [Thread-196277] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:11:22.169 [DEBUG] [Thread-196277] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:11:22.169 [DEBUG] [Thread-196277] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:11:22.177 [DEBUG] [Thread-196277] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:11:22.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:11:22.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-11-24T20:11:22.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:11:22.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:11:22.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:11:22.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:11:22.211 [DEBUG] [Thread-196277] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:11:36.288 [DEBUG] [Thread-196280 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:11:36.622 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:11:36.623 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:11:42.403 [DEBUG] [Thread-196281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:11:51.323 [DEBUG] [Thread-196282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:11:52.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:11:52.237 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:11:52.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-11-24T20:11:53.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 11, 43), 18.26, 28.83, 0.0, 33.72, 17.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:11:53.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:11:43
2025-11-24T20:11:53.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:11:53.518 [DEBUG] [Thread-196283] [transport.py] [_log()] starting thread (client mode): 0xd07844f0
2025-11-24T20:11:53.519 [DEBUG] [Thread-196283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:11:53.526 [DEBUG] [Thread-196283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:11:53.526 [INFO] [Thread-196283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:11:53.530 [DEBUG] [Thread-196283] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:11:53.530 [DEBUG] [Thread-196283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:11:53.530 [DEBUG] [Thread-196283] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:11:53.531 [DEBUG] [Thread-196283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:11:53.531 [DEBUG] [Thread-196283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:11:53.531 [DEBUG] [Thread-196283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:11:53.531 [DEBUG] [Thread-196283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:11:53.531 [DEBUG] [Thread-196283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:11:53.531 [DEBUG] [Thread-196283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:11:53.531 [DEBUG] [Thread-196283] [transport.py] [_log()] client lang: <none>
2025-11-24T20:11:53.531 [DEBUG] [Thread-196283] [transport.py] [_log()] server lang: <none>
2025-11-24T20:11:53.531 [DEBUG] [Thread-196283] [transport.py] [_log()] kex follows: False
2025-11-24T20:11:53.531 [DEBUG] [Thread-196283] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:11:53.532 [DEBUG] [Thread-196283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:11:53.532 [DEBUG] [Thread-196283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:11:53.532 [DEBUG] [Thread-196283] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:11:53.532 [DEBUG] [Thread-196283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:11:53.532 [DEBUG] [Thread-196283] [transport.py] [_log()] Compression: none
2025-11-24T20:11:53.532 [DEBUG] [Thread-196283] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:11:53.565 [DEBUG] [Thread-196283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:11:53.569 [DEBUG] [Thread-196283] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:11:53.570 [DEBUG] [Thread-196283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:11:53.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:11:53.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:11:53.576 [DEBUG] [Thread-196283] [transport.py] [_log()] userauth is OK
2025-11-24T20:11:53.576 [DEBUG] [Thread-196283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:11:53.576 [DEBUG] [Thread-196283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:11:53.576 [DEBUG] [Thread-196283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:11:53.576 [DEBUG] [Thread-196283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:11:53.602 [INFO] [Thread-196283] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:11:53.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:11:54.332 [DEBUG] [Thread-196283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:11:54.332 [DEBUG] [Thread-196283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:11:54.333 [DEBUG] [Thread-196283] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:11:54.373 [DEBUG] [Thread-196283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:11:54.373 [DEBUG] [Thread-196283] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:11:54.376 [DEBUG] [Thread-196283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:11:54.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:11:54.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:11:54.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:11:54.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:11:54.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:11:54.397 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:11:54.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:11:54.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:11:54.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:11:54.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.757689 -999.00  +17.40  16.45     34   +1.50 1 1 1 1 1     8    0 14.80 -52.59 NA 17.2 16.4 173.4 30.2 17.7 -26.1 17.6 -25.5 17.4 -24.4 17.6 -25.4
2025-11-24T20:11:54.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:11:54.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:11:54.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.757689
2025-11-24T20:11:54.405 [DEBUG] [Thread-196283] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:11:54.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:11:54.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:11:54.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:11:54.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:11:54.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:11:54.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:11:43', tmtdew=18.26, humidity=28.83, cloud=0.0, wind=33.72, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:11:04.330', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:11:54.492 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:11:54.504 [DEBUG] [Thread-196286] [transport.py] [_log()] starting thread (client mode): 0xd0787d00
2025-11-24T20:11:54.504 [DEBUG] [Thread-196286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:11:54.519 [DEBUG] [Thread-196286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:11:54.520 [INFO] [Thread-196286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] client lang: <none>
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] server lang: <none>
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] kex follows: False
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] Compression: none
2025-11-24T20:11:54.532 [DEBUG] [Thread-196286] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:11:54.589 [DEBUG] [Thread-196286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:11:54.590 [DEBUG] [Thread-196286] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:11:54.590 [DEBUG] [Thread-196286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:11:54.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:11:54.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:11:54.647 [DEBUG] [Thread-196286] [transport.py] [_log()] userauth is OK
2025-11-24T20:11:54.647 [DEBUG] [Thread-196286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:11:54.647 [DEBUG] [Thread-196286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:11:54.647 [DEBUG] [Thread-196286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:11:54.647 [DEBUG] [Thread-196286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:11:54.661 [INFO] [Thread-196286] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:11:54.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:11:54.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:11:55.491 [DEBUG] [Thread-196286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:11:55.491 [DEBUG] [Thread-196286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:11:55.539 [DEBUG] [Thread-196286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:11:55.539 [DEBUG] [Thread-196286] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:11:55.548 [DEBUG] [Thread-196286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:11:55.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:11:55.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-11-24T20:11:55.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-11-24T20:11:55.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:11:55.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:11:55.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:11:55.583 [DEBUG] [Thread-196286] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:12:06.362 [DEBUG] [Thread-196288 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:12:21.441 [DEBUG] [Thread-196289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:12:25.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:12:25.588 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:12:25.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-11-24T20:12:26.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 12, 16), 18.26, 28.83, 0.0, 27.47, 17.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:12:26.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:12:16
2025-11-24T20:12:26.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:12:26.874 [DEBUG] [Thread-196290] [transport.py] [_log()] starting thread (client mode): 0xd0710ca0
2025-11-24T20:12:26.875 [DEBUG] [Thread-196290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:12:26.890 [DEBUG] [Thread-196290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:12:26.890 [INFO] [Thread-196290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:12:26.895 [DEBUG] [Thread-196290] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:12:26.895 [DEBUG] [Thread-196290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:12:26.895 [DEBUG] [Thread-196290] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:12:26.895 [DEBUG] [Thread-196290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:12:26.895 [DEBUG] [Thread-196290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:12:26.895 [DEBUG] [Thread-196290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:12:26.895 [DEBUG] [Thread-196290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:12:26.896 [DEBUG] [Thread-196290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:12:26.896 [DEBUG] [Thread-196290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:12:26.896 [DEBUG] [Thread-196290] [transport.py] [_log()] client lang: <none>
2025-11-24T20:12:26.896 [DEBUG] [Thread-196290] [transport.py] [_log()] server lang: <none>
2025-11-24T20:12:26.896 [DEBUG] [Thread-196290] [transport.py] [_log()] kex follows: False
2025-11-24T20:12:26.896 [DEBUG] [Thread-196290] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:12:26.897 [DEBUG] [Thread-196290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:12:26.897 [DEBUG] [Thread-196290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:12:26.897 [DEBUG] [Thread-196290] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:12:26.897 [DEBUG] [Thread-196290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:12:26.897 [DEBUG] [Thread-196290] [transport.py] [_log()] Compression: none
2025-11-24T20:12:26.897 [DEBUG] [Thread-196290] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:12:26.936 [DEBUG] [Thread-196290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:12:26.940 [DEBUG] [Thread-196290] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:12:26.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:12:26.946 [DEBUG] [Thread-196290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:12:26.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:12:26.950 [DEBUG] [Thread-196290] [transport.py] [_log()] userauth is OK
2025-11-24T20:12:26.951 [DEBUG] [Thread-196290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:12:26.952 [DEBUG] [Thread-196290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:12:26.952 [DEBUG] [Thread-196290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:12:26.952 [DEBUG] [Thread-196290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:12:26.976 [INFO] [Thread-196290] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:12:26.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:12:27.550 [DEBUG] [Thread-196290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:12:27.550 [DEBUG] [Thread-196290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:12:27.551 [DEBUG] [Thread-196290] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:12:27.591 [DEBUG] [Thread-196290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:12:27.591 [DEBUG] [Thread-196290] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:12:27.594 [DEBUG] [Thread-196290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:12:27.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:12:27.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:12:27.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:12:27.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:12:27.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:12:27.608 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:12:27.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:12:27.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:12:27.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:12:27.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.758036 -999.00  +17.40  23.77     34   +1.70 1 1 1 1 1     7    0 14.85 -52.20 ----- 18.5 23.8 176.0 36.1 17.7 -26.0 17.6 -25.6 17.3 -24.3 17.6 -25.4
2025-11-24T20:12:27.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:12:27.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:12:27.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.758036
2025-11-24T20:12:27.615 [DEBUG] [Thread-196290] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:12:27.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:12:27.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:12:27.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:12:27.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:12:27.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:12:27.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:12:16', tmtdew=18.26, humidity=28.83, cloud=0.0, wind=27.47, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:11:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:12:27.697 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:12:27.709 [DEBUG] [Thread-196293] [transport.py] [_log()] starting thread (client mode): 0xd317f820
2025-11-24T20:12:27.709 [DEBUG] [Thread-196293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:12:27.724 [DEBUG] [Thread-196293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:12:27.724 [INFO] [Thread-196293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] client lang: <none>
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] server lang: <none>
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] kex follows: False
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] Compression: none
2025-11-24T20:12:27.732 [DEBUG] [Thread-196293] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:12:27.785 [DEBUG] [Thread-196293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:12:27.785 [DEBUG] [Thread-196293] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:12:27.786 [DEBUG] [Thread-196293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:12:27.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:12:27.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:12:27.843 [DEBUG] [Thread-196293] [transport.py] [_log()] userauth is OK
2025-11-24T20:12:27.843 [DEBUG] [Thread-196293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:12:27.843 [DEBUG] [Thread-196293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:12:27.843 [DEBUG] [Thread-196293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:12:27.843 [DEBUG] [Thread-196293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:12:27.857 [INFO] [Thread-196293] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:12: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-11-24T20:12:27.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:12:28.751 [DEBUG] [Thread-196293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:12:28.751 [DEBUG] [Thread-196293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:12:28.798 [DEBUG] [Thread-196293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:12:28.799 [DEBUG] [Thread-196293] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:12:28.808 [DEBUG] [Thread-196293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:12:28.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:12:28.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-11-24T20:12:28.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-11-24T20:12:28.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:12:28.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:12:28.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:12:28.848 [DEBUG] [Thread-196293] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:12:36.469 [DEBUG] [Thread-196295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:12:40.888 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:12:40.889 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:12:42.669 [DEBUG] [Thread-196296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:12:51.541 [DEBUG] [Thread-196297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:12:58.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:12:58.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:12:58.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-11-24T20:12:59.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 12, 49), 18.15, 28.94, 0.0, 27.56, 17.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:12:59.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:12:49
2025-11-24T20:12:59.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:13:00.077 [DEBUG] [Thread-196298] [transport.py] [_log()] starting thread (client mode): 0xc9b81210
2025-11-24T20:13:00.078 [DEBUG] [Thread-196298] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:13:00.093 [DEBUG] [Thread-196298] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:13:00.093 [INFO] [Thread-196298] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:13:00.099 [DEBUG] [Thread-196298] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:13:00.099 [DEBUG] [Thread-196298] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:13:00.099 [DEBUG] [Thread-196298] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:13:00.100 [DEBUG] [Thread-196298] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:13:00.100 [DEBUG] [Thread-196298] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:13:00.100 [DEBUG] [Thread-196298] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:13:00.100 [DEBUG] [Thread-196298] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:13:00.100 [DEBUG] [Thread-196298] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:13:00.100 [DEBUG] [Thread-196298] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:13:00.100 [DEBUG] [Thread-196298] [transport.py] [_log()] client lang: <none>
2025-11-24T20:13:00.100 [DEBUG] [Thread-196298] [transport.py] [_log()] server lang: <none>
2025-11-24T20:13:00.100 [DEBUG] [Thread-196298] [transport.py] [_log()] kex follows: False
2025-11-24T20:13:00.100 [DEBUG] [Thread-196298] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:13:00.101 [DEBUG] [Thread-196298] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:13:00.101 [DEBUG] [Thread-196298] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:13:00.101 [DEBUG] [Thread-196298] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:13:00.101 [DEBUG] [Thread-196298] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:13:00.101 [DEBUG] [Thread-196298] [transport.py] [_log()] Compression: none
2025-11-24T20:13:00.101 [DEBUG] [Thread-196298] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:13:00.133 [DEBUG] [Thread-196298] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:13:00.138 [DEBUG] [Thread-196298] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:13:00.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:13:00.141 [DEBUG] [Thread-196298] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:13:00.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:13:00.145 [DEBUG] [Thread-196298] [transport.py] [_log()] userauth is OK
2025-11-24T20:13:00.145 [DEBUG] [Thread-196298] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:13:00.145 [DEBUG] [Thread-196298] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:13:00.145 [DEBUG] [Thread-196298] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:13:00.145 [DEBUG] [Thread-196298] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:13:00.169 [INFO] [Thread-196298] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:13:00.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:13:00.790 [DEBUG] [Thread-196298] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:13:00.790 [DEBUG] [Thread-196298] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:13:00.792 [DEBUG] [Thread-196298] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:13:00.831 [DEBUG] [Thread-196298] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:13:00.832 [DEBUG] [Thread-196298] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:13:00.834 [DEBUG] [Thread-196298] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:13:00.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:13:00.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:13:00.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:13:00.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:13:00.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:13:00.857 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:13:00.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:13:00.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:13:00.861 [DEBUG] [Thread-196298] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:13:00.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:13:00.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.758730 -999.00  +17.30  17.71     34   +1.60 1 1 1 1 1     6    0 14.77 -59.05 ----- 20.2 17.7 170.8 31.8 17.7 -26.2 17.5 -25.7 17.3 -24.4 17.6 -25.6
2025-11-24T20:13:00.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:13:00.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:13:00.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.758730
2025-11-24T20:13:00.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:13:00.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:13:00.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:13:00.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:13:00.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:13:00.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:12:49', tmtdew=18.15, humidity=28.94, cloud=0.0, wind=27.56, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:12:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:13:00.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:13:00.986 [DEBUG] [Thread-196301] [transport.py] [_log()] starting thread (client mode): 0xc9b805b0
2025-11-24T20:13:00.987 [DEBUG] [Thread-196301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:13:01.001 [DEBUG] [Thread-196301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:13:01.001 [INFO] [Thread-196301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:13:01.008 [DEBUG] [Thread-196301] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] client lang: <none>
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] server lang: <none>
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] kex follows: False
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:13:01.009 [DEBUG] [Thread-196301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:13:01.010 [DEBUG] [Thread-196301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:13:01.010 [DEBUG] [Thread-196301] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:13:01.010 [DEBUG] [Thread-196301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:13:01.010 [DEBUG] [Thread-196301] [transport.py] [_log()] Compression: none
2025-11-24T20:13:01.010 [DEBUG] [Thread-196301] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:13:01.068 [DEBUG] [Thread-196301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:13:01.068 [DEBUG] [Thread-196301] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:13:01.069 [DEBUG] [Thread-196301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:13:01.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:13:01.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:13:01.128 [DEBUG] [Thread-196301] [transport.py] [_log()] userauth is OK
2025-11-24T20:13:01.128 [DEBUG] [Thread-196301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:13:01.128 [DEBUG] [Thread-196301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:13:01.128 [DEBUG] [Thread-196301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:13:01.128 [DEBUG] [Thread-196301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:13:01.148 [INFO] [Thread-196301] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:13:01.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:13:01.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:13:02.027 [DEBUG] [Thread-196301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:13:02.028 [DEBUG] [Thread-196301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:13:02.075 [DEBUG] [Thread-196301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:13:02.075 [DEBUG] [Thread-196301] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:13:02.083 [DEBUG] [Thread-196301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:13:02.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:13:02.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:13: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') -> 00000000
2025-11-24T20:13:02.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:13:02.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:13:02.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:13:02.121 [DEBUG] [Thread-196301] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:13:06.607 [DEBUG] [Thread-196303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:13:21.719 [DEBUG] [Thread-196304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:13:32.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:13:32.147 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:13:32.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-11-24T20:13:32.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 13, 22), 18.15, 28.94, 0.0, 29.7, 17.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:13:32.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:13:22
2025-11-24T20:13:33.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:13:33.254 [DEBUG] [Thread-196305] [transport.py] [_log()] starting thread (client mode): 0xd07866e0
2025-11-24T20:13:33.254 [DEBUG] [Thread-196305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:13:33.270 [DEBUG] [Thread-196305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:13:33.270 [INFO] [Thread-196305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:13:33.274 [DEBUG] [Thread-196305] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:13:33.274 [DEBUG] [Thread-196305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:13:33.274 [DEBUG] [Thread-196305] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:13:33.274 [DEBUG] [Thread-196305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:13:33.274 [DEBUG] [Thread-196305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:13:33.274 [DEBUG] [Thread-196305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:13:33.274 [DEBUG] [Thread-196305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:13:33.274 [DEBUG] [Thread-196305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:13:33.275 [DEBUG] [Thread-196305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:13:33.275 [DEBUG] [Thread-196305] [transport.py] [_log()] client lang: <none>
2025-11-24T20:13:33.275 [DEBUG] [Thread-196305] [transport.py] [_log()] server lang: <none>
2025-11-24T20:13:33.275 [DEBUG] [Thread-196305] [transport.py] [_log()] kex follows: False
2025-11-24T20:13:33.275 [DEBUG] [Thread-196305] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:13:33.276 [DEBUG] [Thread-196305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:13:33.276 [DEBUG] [Thread-196305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:13:33.276 [DEBUG] [Thread-196305] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:13:33.276 [DEBUG] [Thread-196305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:13:33.276 [DEBUG] [Thread-196305] [transport.py] [_log()] Compression: none
2025-11-24T20:13:33.276 [DEBUG] [Thread-196305] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:13:33.305 [DEBUG] [Thread-196305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:13:33.308 [DEBUG] [Thread-196305] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:13:33.310 [DEBUG] [Thread-196305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:13:33.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:13:33.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:13:33.350 [DEBUG] [Thread-196305] [transport.py] [_log()] userauth is OK
2025-11-24T20:13:33.350 [DEBUG] [Thread-196305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:13:33.350 [DEBUG] [Thread-196305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:13:33.351 [DEBUG] [Thread-196305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:13:33.351 [DEBUG] [Thread-196305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:13:33.391 [INFO] [Thread-196305] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:13:33.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:13:33.978 [DEBUG] [Thread-196305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:13:33.978 [DEBUG] [Thread-196305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:13:33.987 [DEBUG] [Thread-196305] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:13:34.019 [DEBUG] [Thread-196305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:13:34.019 [DEBUG] [Thread-196305] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:13:34.021 [DEBUG] [Thread-196305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:13:34.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:13:34.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:13:34.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:13:34.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:13:34.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:13:34.042 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:13:34.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:13:34.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:13:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:13:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.758730 -999.00  +17.30  17.71     34   +1.60 1 1 1 1 1     6    0 14.77 -59.05 ----- 20.2 17.7 170.8 31.8 17.7 -26.2 17.5 -25.7 17.3 -24.4 17.6 -25.6
2025-11-24T20:13:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:13:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:13:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.758730
2025-11-24T20:13:34.050 [DEBUG] [Thread-196305] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:13:34.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:13:34.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:13:34.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:13:34.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:13:34.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:13:34.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:13:22', tmtdew=18.15, humidity=28.94, cloud=0.0, wind=29.7, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:12:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:13:34.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:13:34.163 [DEBUG] [Thread-196308] [transport.py] [_log()] starting thread (client mode): 0xd3153e50
2025-11-24T20:13:34.163 [DEBUG] [Thread-196308] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:13:34.178 [DEBUG] [Thread-196308] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:13:34.178 [INFO] [Thread-196308] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:13:34.186 [DEBUG] [Thread-196308] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:13:34.186 [DEBUG] [Thread-196308] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:13:34.186 [DEBUG] [Thread-196308] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:13:34.187 [DEBUG] [Thread-196308] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:13:34.187 [DEBUG] [Thread-196308] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:13:34.187 [DEBUG] [Thread-196308] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:13:34.187 [DEBUG] [Thread-196308] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:13:34.187 [DEBUG] [Thread-196308] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:13:34.187 [DEBUG] [Thread-196308] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:13:34.187 [DEBUG] [Thread-196308] [transport.py] [_log()] client lang: <none>
2025-11-24T20:13:34.187 [DEBUG] [Thread-196308] [transport.py] [_log()] server lang: <none>
2025-11-24T20:13:34.188 [DEBUG] [Thread-196308] [transport.py] [_log()] kex follows: False
2025-11-24T20:13:34.188 [DEBUG] [Thread-196308] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:13:34.188 [DEBUG] [Thread-196308] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:13:34.188 [DEBUG] [Thread-196308] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:13:34.188 [DEBUG] [Thread-196308] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:13:34.188 [DEBUG] [Thread-196308] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:13:34.188 [DEBUG] [Thread-196308] [transport.py] [_log()] Compression: none
2025-11-24T20:13:34.188 [DEBUG] [Thread-196308] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:13:34.244 [DEBUG] [Thread-196308] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:13:34.245 [DEBUG] [Thread-196308] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:13:34.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:13:34.246 [DEBUG] [Thread-196308] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:13:34.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:13:34.300 [DEBUG] [Thread-196308] [transport.py] [_log()] userauth is OK
2025-11-24T20:13:34.301 [DEBUG] [Thread-196308] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:13:34.301 [DEBUG] [Thread-196308] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:13:34.301 [DEBUG] [Thread-196308] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:13:34.301 [DEBUG] [Thread-196308] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:13:34.325 [INFO] [Thread-196308] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:13:34.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:13:34.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:13:35.211 [DEBUG] [Thread-196308] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:13:35.211 [DEBUG] [Thread-196308] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:13:35.258 [DEBUG] [Thread-196308] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:13:35.259 [DEBUG] [Thread-196308] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:13:35.268 [DEBUG] [Thread-196308] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:13:35.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:13:35.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-11-24T20:13:35.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-11-24T20:13:35.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:13:35.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:13:35.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:13:35.313 [DEBUG] [Thread-196308] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:13:36.752 [DEBUG] [Thread-196310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:13:42.907 [DEBUG] [Thread-196311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:13:46.856 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:13:46.858 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:13:51.847 [DEBUG] [Thread-196312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:14:05.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:14:05.309 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:14:05.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-11-24T20:14:06.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 13, 55), 18.13, 28.99, 0.0, 31.51, 17.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:14:06.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:13:55
2025-11-24T20:14:06.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:14:06.830 [DEBUG] [Thread-196313] [transport.py] [_log()] starting thread (client mode): 0xd317d870
2025-11-24T20:14:06.831 [DEBUG] [Thread-196313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:14:06.837 [DEBUG] [Thread-196313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:14:06.837 [INFO] [Thread-196313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] client lang: <none>
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] server lang: <none>
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] kex follows: False
2025-11-24T20:14:06.841 [DEBUG] [Thread-196313] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:14:06.842 [DEBUG] [Thread-196313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:14:06.842 [DEBUG] [Thread-196313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:14:06.842 [DEBUG] [Thread-196313] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:14:06.842 [DEBUG] [Thread-196313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:14:06.842 [DEBUG] [Thread-196313] [transport.py] [_log()] Compression: none
2025-11-24T20:14:06.842 [DEBUG] [Thread-196313] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:14:06.870 [DEBUG] [Thread-196313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:14:06.874 [DEBUG] [Thread-196313] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:14:06.876 [DEBUG] [Thread-196313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:14:06.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:14:06.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:14:06.880 [DEBUG] [Thread-196313] [transport.py] [_log()] userauth is OK
2025-11-24T20:14:06.881 [DEBUG] [Thread-196313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:14:06.881 [DEBUG] [Thread-196313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:14:06.882 [DEBUG] [Thread-196313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:14:06.882 [DEBUG] [Thread-196313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:14:06.890 [DEBUG] [Thread-196315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:14:06.908 [INFO] [Thread-196313] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:14:06.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:14:07.515 [DEBUG] [Thread-196313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:14:07.515 [DEBUG] [Thread-196313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:14:07.517 [DEBUG] [Thread-196313] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:14:07.556 [DEBUG] [Thread-196313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:14:07.556 [DEBUG] [Thread-196313] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:14:07.562 [DEBUG] [Thread-196313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:14:07.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:14:07.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:14:07.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:14:07.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:14:07.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:14:07.586 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:14:07.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:14:07.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:14:07.588 [DEBUG] [Thread-196313] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:14:07.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:14:07.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.759425 -999.00  +17.30  21.74     35   +1.70 1 1 1 1 1     5    0 14.54 -59.14 ZnES. 20.8 21.7 169.0 29.3 17.6 -26.1 17.5 -25.6 17.3 -24.3 17.6 -25.5
2025-11-24T20:14:07.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:14:07.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:14:07.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.759425
2025-11-24T20:14:07.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:14:07.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:14:07.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:14:07.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:14:07.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:14:07.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:13:55', tmtdew=18.13, humidity=28.99, cloud=0.0, wind=31.51, temperature=17.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:13:34.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:14:07.695 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:14:07.708 [DEBUG] [Thread-196317] [transport.py] [_log()] starting thread (client mode): 0xc9b82cb0
2025-11-24T20:14:07.708 [DEBUG] [Thread-196317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:14:07.722 [DEBUG] [Thread-196317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:14:07.722 [INFO] [Thread-196317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:14:07.730 [DEBUG] [Thread-196317] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:14:07.730 [DEBUG] [Thread-196317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] client lang: <none>
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] server lang: <none>
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] kex follows: False
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] Compression: none
2025-11-24T20:14:07.731 [DEBUG] [Thread-196317] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:14:07.788 [DEBUG] [Thread-196317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:14:07.789 [DEBUG] [Thread-196317] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:14:07.789 [DEBUG] [Thread-196317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:14:07.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:14:07.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:14:07.845 [DEBUG] [Thread-196317] [transport.py] [_log()] userauth is OK
2025-11-24T20:14:07.846 [DEBUG] [Thread-196317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:14:07.846 [DEBUG] [Thread-196317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:14:07.846 [DEBUG] [Thread-196317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:14:07.846 [DEBUG] [Thread-196317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:14:07.867 [INFO] [Thread-196317] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:14:07.868 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:14:07.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:14:08.695 [DEBUG] [Thread-196317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:14:08.696 [DEBUG] [Thread-196317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:14:08.744 [DEBUG] [Thread-196317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:14:08.744 [DEBUG] [Thread-196317] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:14:08.753 [DEBUG] [Thread-196317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:14:08.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:14:08.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-11-24T20:14:08.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-11-24T20:14:08.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:14:08.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:14:08.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:14:08.792 [DEBUG] [Thread-196317] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:14:21.950 [DEBUG] [Thread-196319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:14:37.059 [DEBUG] [Thread-196320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:14:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:14:38.816 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:14:38.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-11-24T20:14:39.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 14, 27), 18.13, 28.98, 0.0, 29.66, 17.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:14:39.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:14:27
2025-11-24T20:14:39.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:14:39.861 [DEBUG] [Thread-196321] [transport.py] [_log()] starting thread (client mode): 0xc9b817e0
2025-11-24T20:14:39.862 [DEBUG] [Thread-196321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:14:39.863 [DEBUG] [Thread-196321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:14:39.863 [INFO] [Thread-196321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:14:39.865 [DEBUG] [Thread-196321] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:14:39.865 [DEBUG] [Thread-196321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:14:39.865 [DEBUG] [Thread-196321] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:14:39.865 [DEBUG] [Thread-196321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:14:39.865 [DEBUG] [Thread-196321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:14:39.865 [DEBUG] [Thread-196321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:14:39.865 [DEBUG] [Thread-196321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] client lang: <none>
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] server lang: <none>
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] kex follows: False
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] Compression: none
2025-11-24T20:14:39.866 [DEBUG] [Thread-196321] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:14:39.891 [DEBUG] [Thread-196321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:14:39.894 [DEBUG] [Thread-196321] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:14:39.896 [DEBUG] [Thread-196321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:14:39.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:14:39.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:14:39.901 [DEBUG] [Thread-196321] [transport.py] [_log()] userauth is OK
2025-11-24T20:14:39.902 [DEBUG] [Thread-196321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:14:39.902 [DEBUG] [Thread-196321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:14:39.902 [DEBUG] [Thread-196321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:14:39.902 [DEBUG] [Thread-196321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:14:39.930 [INFO] [Thread-196321] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:14:39.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:14:40.481 [DEBUG] [Thread-196321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:14:40.481 [DEBUG] [Thread-196321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:14:40.492 [DEBUG] [Thread-196321] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:14:40.522 [DEBUG] [Thread-196321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:14:40.523 [DEBUG] [Thread-196321] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:14:40.526 [DEBUG] [Thread-196321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:14:40.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:14:40.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:14:40.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:14:40.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:14:40.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:14:40.551 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:14:40.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:14:40.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:14:40.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:14:40.554 [DEBUG] [Thread-196321] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:14:40.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.760119 -999.00  +17.30  16.75     34   +1.70 1 1 1 1 1     4    0 14.44 -60.68 zNES. 19.7 16.8 161.0 25.3 17.6 -26.2 17.5 -25.7 17.3 -24.5 17.6 -25.6
2025-11-24T20:14:40.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:14:40.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:14:40.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.760119
2025-11-24T20:14:40.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:14:40.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:14:40.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:14:40.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:14:40.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:14:40.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:14:27', tmtdew=18.13, humidity=28.98, cloud=0.0, wind=29.66, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:14:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:14:40.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:14:40.667 [DEBUG] [Thread-196324] [transport.py] [_log()] starting thread (client mode): 0xc9b82650
2025-11-24T20:14:40.667 [DEBUG] [Thread-196324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:14:40.682 [DEBUG] [Thread-196324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:14:40.682 [INFO] [Thread-196324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] client lang: <none>
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] server lang: <none>
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] kex follows: False
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] Compression: none
2025-11-24T20:14:40.690 [DEBUG] [Thread-196324] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:14:40.746 [DEBUG] [Thread-196324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:14:40.746 [DEBUG] [Thread-196324] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:14:40.747 [DEBUG] [Thread-196324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:14:40.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:14:40.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:14:40.803 [DEBUG] [Thread-196324] [transport.py] [_log()] userauth is OK
2025-11-24T20:14:40.803 [DEBUG] [Thread-196324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:14:40.804 [DEBUG] [Thread-196324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:14:40.804 [DEBUG] [Thread-196324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:14:40.804 [DEBUG] [Thread-196324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:14:40.818 [INFO] [Thread-196324] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:14:40.818 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:14:40.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:14:41.726 [DEBUG] [Thread-196324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:14:41.727 [DEBUG] [Thread-196324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:14:41.775 [DEBUG] [Thread-196324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:14:41.775 [DEBUG] [Thread-196324] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:14:41.784 [DEBUG] [Thread-196324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:14:41.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:14:41.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-11-24T20:14:41.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-11-24T20:14:41.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:14:41.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:14:41.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:14:41.822 [DEBUG] [Thread-196324] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:14:43.159 [DEBUG] [Thread-196326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:14:51.967 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:14:51.969 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:14:52.090 [DEBUG] [Thread-196327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:15:07.220 [DEBUG] [Thread-196328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:15:11.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:15:11.837 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:15:11.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-11-24T20:15:12.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 15), 18.12, 28.99, 0.0, 28.55, 17.44, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:15:12.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:15:00
2025-11-24T20:15:12.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:15:13.079 [DEBUG] [Thread-196329] [transport.py] [_log()] starting thread (client mode): 0xd07875e0
2025-11-24T20:15:13.079 [DEBUG] [Thread-196329] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:15:13.085 [DEBUG] [Thread-196329] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:15:13.085 [INFO] [Thread-196329] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:15:13.089 [DEBUG] [Thread-196329] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:15:13.089 [DEBUG] [Thread-196329] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:15:13.089 [DEBUG] [Thread-196329] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:15:13.089 [DEBUG] [Thread-196329] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:15:13.089 [DEBUG] [Thread-196329] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:15:13.089 [DEBUG] [Thread-196329] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:15:13.089 [DEBUG] [Thread-196329] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] client lang: <none>
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] server lang: <none>
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] kex follows: False
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] Compression: none
2025-11-24T20:15:13.090 [DEBUG] [Thread-196329] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:15:13.119 [DEBUG] [Thread-196329] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:15:13.123 [DEBUG] [Thread-196329] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:15:13.124 [DEBUG] [Thread-196329] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:15:13.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:15:13.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:15:13.127 [DEBUG] [Thread-196329] [transport.py] [_log()] userauth is OK
2025-11-24T20:15:13.127 [DEBUG] [Thread-196329] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:15:13.127 [DEBUG] [Thread-196329] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:15:13.127 [DEBUG] [Thread-196329] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:15:13.127 [DEBUG] [Thread-196329] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:15:13.157 [INFO] [Thread-196329] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:15:13.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:15:13.771 [DEBUG] [Thread-196329] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:15:13.771 [DEBUG] [Thread-196329] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:15:13.771 [DEBUG] [Thread-196329] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:15:13.812 [DEBUG] [Thread-196329] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:15:13.812 [DEBUG] [Thread-196329] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:15:13.814 [DEBUG] [Thread-196329] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:15:13.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:15:13.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:15:13.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:15:13.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:15:13.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:15:13.833 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:15:13.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:15:13.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:15:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:15:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.760119 -999.00  +17.30  16.75     34   +1.70 1 1 1 1 1     4    0 14.44 -60.68 zNES. 19.7 16.8 161.0 25.3 17.6 -26.2 17.5 -25.7 17.3 -24.5 17.6 -25.6
2025-11-24T20:15:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:15:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:15:13.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.760119
2025-11-24T20:15:13.840 [DEBUG] [Thread-196329] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:15:13.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:15:13.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:15:13.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:15:13.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:15:13.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:15:13.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:15:00', tmtdew=18.12, humidity=28.99, cloud=0.0, wind=28.55, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:14:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:15:13.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:15:13.954 [DEBUG] [Thread-196332] [transport.py] [_log()] starting thread (client mode): 0xd0701870
2025-11-24T20:15:13.954 [DEBUG] [Thread-196332] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:15:13.970 [DEBUG] [Thread-196332] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:15:13.970 [INFO] [Thread-196332] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] client lang: <none>
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] server lang: <none>
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] kex follows: False
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] Compression: none
2025-11-24T20:15:13.978 [DEBUG] [Thread-196332] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:15:14.035 [DEBUG] [Thread-196332] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:15:14.035 [DEBUG] [Thread-196332] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:15:14.035 [DEBUG] [Thread-196332] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:15:14.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:15:14.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:15:14.092 [DEBUG] [Thread-196332] [transport.py] [_log()] userauth is OK
2025-11-24T20:15:14.092 [DEBUG] [Thread-196332] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:15:14.092 [DEBUG] [Thread-196332] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:15:14.092 [DEBUG] [Thread-196332] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:15:14.092 [DEBUG] [Thread-196332] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:15:14.107 [INFO] [Thread-196332] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:15:14.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:15:14.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:15:15.004 [DEBUG] [Thread-196332] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:15:15.004 [DEBUG] [Thread-196332] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:15:15.052 [DEBUG] [Thread-196332] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:15:15.052 [DEBUG] [Thread-196332] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:15:15.060 [DEBUG] [Thread-196332] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:15:15.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:15:15.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:15:15.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-11-24T20:15:15.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:15:15.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:15:15.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:15:15.094 [DEBUG] [Thread-196332] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:15:22.281 [DEBUG] [Thread-196334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:15:37.372 [DEBUG] [Thread-196335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:15:43.439 [DEBUG] [Thread-196336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:15:45.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:15:45.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:15:45.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:15:46.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 15, 35), 18.09, 29.46, 0.0, 26.03, 17.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:15:46.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:15:35
2025-11-24T20:15:46.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:15:46.403 [DEBUG] [Thread-196337] [transport.py] [_log()] starting thread (client mode): 0xd3152b90
2025-11-24T20:15:46.403 [DEBUG] [Thread-196337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:15:46.416 [DEBUG] [Thread-196337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:15:46.416 [INFO] [Thread-196337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:15:46.421 [DEBUG] [Thread-196337] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:15:46.422 [DEBUG] [Thread-196337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:15:46.422 [DEBUG] [Thread-196337] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:15:46.422 [DEBUG] [Thread-196337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:15:46.422 [DEBUG] [Thread-196337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:15:46.422 [DEBUG] [Thread-196337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:15:46.422 [DEBUG] [Thread-196337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:15:46.422 [DEBUG] [Thread-196337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:15:46.422 [DEBUG] [Thread-196337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:15:46.422 [DEBUG] [Thread-196337] [transport.py] [_log()] client lang: <none>
2025-11-24T20:15:46.423 [DEBUG] [Thread-196337] [transport.py] [_log()] server lang: <none>
2025-11-24T20:15:46.423 [DEBUG] [Thread-196337] [transport.py] [_log()] kex follows: False
2025-11-24T20:15:46.423 [DEBUG] [Thread-196337] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:15:46.423 [DEBUG] [Thread-196337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:15:46.424 [DEBUG] [Thread-196337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:15:46.424 [DEBUG] [Thread-196337] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:15:46.424 [DEBUG] [Thread-196337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:15:46.424 [DEBUG] [Thread-196337] [transport.py] [_log()] Compression: none
2025-11-24T20:15:46.424 [DEBUG] [Thread-196337] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:15:46.457 [DEBUG] [Thread-196337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:15:46.460 [DEBUG] [Thread-196337] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:15:46.462 [DEBUG] [Thread-196337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:15:46.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:15:46.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:15:46.467 [DEBUG] [Thread-196337] [transport.py] [_log()] userauth is OK
2025-11-24T20:15:46.467 [DEBUG] [Thread-196337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:15:46.468 [DEBUG] [Thread-196337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:15:46.468 [DEBUG] [Thread-196337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:15:46.468 [DEBUG] [Thread-196337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:15:46.492 [INFO] [Thread-196337] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:15:46.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:15:47.097 [DEBUG] [Thread-196337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:15:47.097 [DEBUG] [Thread-196337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:15:47.099 [DEBUG] [Thread-196337] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:15:47.138 [DEBUG] [Thread-196337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:15:47.138 [DEBUG] [Thread-196337] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:15:47.141 [DEBUG] [Thread-196337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:15:47.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:15:47.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:15:47.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:15:47.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:15:47.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:15:47.164 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:15:47.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:15:47.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:15:47.166 [DEBUG] [Thread-196337] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:15:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:15:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.760813 -999.00  +17.30  19.81     35   +1.70 1 1 1 1 1     3    0 14.31 -57.56 zNES. 19.5 19.8 182.6 28.2 17.6 -26.3 17.4 -25.7 17.2 -24.6 17.5 -25.5
2025-11-24T20:15:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:15:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:15:47.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.760813
2025-11-24T20:15:47.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:15:47.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:15:47.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:15:47.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:15:47.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:15:47.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:15:35', tmtdew=18.09, humidity=29.46, cloud=0.0, wind=26.03, temperature=17.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:15:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:15:47.262 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:15:47.276 [DEBUG] [Thread-196340] [transport.py] [_log()] starting thread (client mode): 0xd31527a0
2025-11-24T20:15:47.276 [DEBUG] [Thread-196340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:15:47.291 [DEBUG] [Thread-196340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:15:47.291 [INFO] [Thread-196340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:15:47.299 [DEBUG] [Thread-196340] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:15:47.299 [DEBUG] [Thread-196340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] client lang: <none>
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] server lang: <none>
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] kex follows: False
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:15:47.300 [DEBUG] [Thread-196340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:15:47.301 [DEBUG] [Thread-196340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:15:47.301 [DEBUG] [Thread-196340] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:15:47.301 [DEBUG] [Thread-196340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:15:47.301 [DEBUG] [Thread-196340] [transport.py] [_log()] Compression: none
2025-11-24T20:15:47.301 [DEBUG] [Thread-196340] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:15:47.356 [DEBUG] [Thread-196340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:15:47.357 [DEBUG] [Thread-196340] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:15:47.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:15:47.358 [DEBUG] [Thread-196340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:15:47.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:15:47.412 [DEBUG] [Thread-196340] [transport.py] [_log()] userauth is OK
2025-11-24T20:15:47.413 [DEBUG] [Thread-196340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:15:47.413 [DEBUG] [Thread-196340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:15:47.413 [DEBUG] [Thread-196340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:15:47.413 [DEBUG] [Thread-196340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:15:47.446 [INFO] [Thread-196340] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:15:47.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:15:47.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:15:48.314 [DEBUG] [Thread-196340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:15:48.314 [DEBUG] [Thread-196340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:15:48.362 [DEBUG] [Thread-196340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:15:48.362 [DEBUG] [Thread-196340] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:15:48.370 [DEBUG] [Thread-196340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:15:48.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:15:48.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-11-24T20:15:48.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-11-24T20:15:48.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:15:48.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:15:48.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:15:48.405 [DEBUG] [Thread-196340] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:15:52.402 [DEBUG] [Thread-196342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:15:59.294 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:15:59.296 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:16:07.478 [DEBUG] [Thread-196343 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:16:18.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:16:18.431 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:16:18.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-11-24T20:16:19.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 16, 7), 18.08, 29.48, 0.0, 26.52, 17.32, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:16:19.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:16:07
2025-11-24T20:16:19.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:16:19.720 [DEBUG] [Thread-196344] [transport.py] [_log()] starting thread (client mode): 0xd0710880
2025-11-24T20:16:19.721 [DEBUG] [Thread-196344] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:16:19.733 [DEBUG] [Thread-196344] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:16:19.733 [INFO] [Thread-196344] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] client lang: <none>
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] server lang: <none>
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] kex follows: False
2025-11-24T20:16:19.737 [DEBUG] [Thread-196344] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:16:19.738 [DEBUG] [Thread-196344] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:16:19.738 [DEBUG] [Thread-196344] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:16:19.738 [DEBUG] [Thread-196344] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:16:19.738 [DEBUG] [Thread-196344] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:16:19.738 [DEBUG] [Thread-196344] [transport.py] [_log()] Compression: none
2025-11-24T20:16:19.738 [DEBUG] [Thread-196344] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:16:19.765 [DEBUG] [Thread-196344] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:16:19.768 [DEBUG] [Thread-196344] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:16:19.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:16:19.770 [DEBUG] [Thread-196344] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:16:19.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:16:19.772 [DEBUG] [Thread-196344] [transport.py] [_log()] userauth is OK
2025-11-24T20:16:19.772 [DEBUG] [Thread-196344] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:16:19.772 [DEBUG] [Thread-196344] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:16:19.772 [DEBUG] [Thread-196344] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:16:19.772 [DEBUG] [Thread-196344] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:16:19.794 [INFO] [Thread-196344] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:16:19.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:16:20.403 [DEBUG] [Thread-196344] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:16:20.403 [DEBUG] [Thread-196344] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:16:20.404 [DEBUG] [Thread-196344] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:16:20.443 [DEBUG] [Thread-196344] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:16:20.443 [DEBUG] [Thread-196344] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:16:20.445 [DEBUG] [Thread-196344] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:16:20.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:16:20.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:16:20.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:16:20.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:16:20.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:16:20.460 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:16:20.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:16:20.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:16:20.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:16:20.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.761161 -999.00  +17.30  30.14     35   +1.70 1 1 2 1 1     3    0 14.42 -60.00 zNES. 25.2 30.1 177.8 33.8 17.6 -26.2 17.4 -25.7 17.2 -24.5 17.6 -25.5
2025-11-24T20:16:20.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:16:20.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:16:20.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.761161
2025-11-24T20:16:20.472 [DEBUG] [Thread-196344] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:16:20.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:16:20.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:16:20.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:16:20.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:16:20.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:16:20.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:16:07', tmtdew=18.08, humidity=29.48, cloud=0.0, wind=26.52, temperature=17.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:16:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:16:20.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:16:20.567 [DEBUG] [Thread-196347] [transport.py] [_log()] starting thread (client mode): 0xd0738760
2025-11-24T20:16:20.567 [DEBUG] [Thread-196347] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:16:20.583 [DEBUG] [Thread-196347] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:16:20.583 [INFO] [Thread-196347] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] client lang: <none>
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] server lang: <none>
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] kex follows: False
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] Compression: none
2025-11-24T20:16:20.591 [DEBUG] [Thread-196347] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:16:20.653 [DEBUG] [Thread-196347] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:16:20.654 [DEBUG] [Thread-196347] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:16:20.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:16:20.655 [DEBUG] [Thread-196347] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:16:20.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:16:20.712 [DEBUG] [Thread-196347] [transport.py] [_log()] userauth is OK
2025-11-24T20:16:20.712 [DEBUG] [Thread-196347] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:16:20.712 [DEBUG] [Thread-196347] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:16:20.712 [DEBUG] [Thread-196347] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:16:20.712 [DEBUG] [Thread-196347] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:16:20.726 [INFO] [Thread-196347] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:16:20.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:16:20.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:16:21.587 [DEBUG] [Thread-196347] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:16:21.587 [DEBUG] [Thread-196347] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:16:21.635 [DEBUG] [Thread-196347] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:16:21.635 [DEBUG] [Thread-196347] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:16:21.644 [DEBUG] [Thread-196347] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:16:21.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:16:21.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-11-24T20:16:21.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-11-24T20:16:21.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:16:21.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:16:21.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:16:21.687 [DEBUG] [Thread-196347] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:16:22.536 [DEBUG] [Thread-196349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:16:37.682 [DEBUG] [Thread-196350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:16:43.772 [DEBUG] [Thread-196351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:16:51.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:16:51.712 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:16:51.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-11-24T20:16:52.713 [DEBUG] [Thread-196352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:16:52.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 16, 40), 18.0, 29.54, 0.0, 29.96, 17.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:16:52.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:16:40
2025-11-24T20:16:52.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:16:53.098 [DEBUG] [Thread-196353] [transport.py] [_log()] starting thread (client mode): 0xd073a440
2025-11-24T20:16:53.099 [DEBUG] [Thread-196353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:16:53.113 [DEBUG] [Thread-196353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:16:53.114 [INFO] [Thread-196353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:16:53.120 [DEBUG] [Thread-196353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:16:53.120 [DEBUG] [Thread-196353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:16:53.120 [DEBUG] [Thread-196353] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:16:53.120 [DEBUG] [Thread-196353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:16:53.121 [DEBUG] [Thread-196353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:16:53.121 [DEBUG] [Thread-196353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:16:53.121 [DEBUG] [Thread-196353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:16:53.121 [DEBUG] [Thread-196353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:16:53.121 [DEBUG] [Thread-196353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:16:53.121 [DEBUG] [Thread-196353] [transport.py] [_log()] client lang: <none>
2025-11-24T20:16:53.121 [DEBUG] [Thread-196353] [transport.py] [_log()] server lang: <none>
2025-11-24T20:16:53.121 [DEBUG] [Thread-196353] [transport.py] [_log()] kex follows: False
2025-11-24T20:16:53.121 [DEBUG] [Thread-196353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:16:53.122 [DEBUG] [Thread-196353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:16:53.122 [DEBUG] [Thread-196353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:16:53.123 [DEBUG] [Thread-196353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:16:53.123 [DEBUG] [Thread-196353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:16:53.123 [DEBUG] [Thread-196353] [transport.py] [_log()] Compression: none
2025-11-24T20:16:53.124 [DEBUG] [Thread-196353] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:16:53.164 [DEBUG] [Thread-196353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:16:53.169 [DEBUG] [Thread-196353] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:16:53.171 [DEBUG] [Thread-196353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:16:53.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:16:53.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:16:53.177 [DEBUG] [Thread-196353] [transport.py] [_log()] userauth is OK
2025-11-24T20:16:53.177 [DEBUG] [Thread-196353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:16:53.177 [DEBUG] [Thread-196353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:16:53.177 [DEBUG] [Thread-196353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:16:53.177 [DEBUG] [Thread-196353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:16:53.216 [INFO] [Thread-196353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:16:53.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:16:53.864 [DEBUG] [Thread-196353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:16:53.865 [DEBUG] [Thread-196353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:16:53.876 [DEBUG] [Thread-196353] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:16:53.906 [DEBUG] [Thread-196353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:16:53.906 [DEBUG] [Thread-196353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:16:53.910 [DEBUG] [Thread-196353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:16:53.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:16:53.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:16:53.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:16:53.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:16:53.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:16:53.942 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:16:53.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:16:53.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:16:53.944 [DEBUG] [Thread-196353] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:16:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:16:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.761161 -999.00  +17.30  30.14     35   +1.70 1 1 2 1 1     3    0 14.42 -60.00 zNES. 25.2 30.1 177.8 33.8 17.6 -26.2 17.4 -25.7 17.2 -24.5 17.6 -25.5
2025-11-24T20:16:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:16:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:16:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.761161
2025-11-24T20:16:53.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:16:53.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:16:53.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:16:53.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:16:53.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:16:53.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:16:40', tmtdew=18.0, humidity=29.54, cloud=0.0, wind=29.96, temperature=17.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:16:04.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:16:54.053 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:16:54.067 [DEBUG] [Thread-196356] [transport.py] [_log()] starting thread (client mode): 0xd0738310
2025-11-24T20:16:54.067 [DEBUG] [Thread-196356] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:16:54.081 [DEBUG] [Thread-196356] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:16:54.081 [INFO] [Thread-196356] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:16:54.089 [DEBUG] [Thread-196356] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:16:54.090 [DEBUG] [Thread-196356] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:16:54.090 [DEBUG] [Thread-196356] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:16:54.090 [DEBUG] [Thread-196356] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:16:54.090 [DEBUG] [Thread-196356] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:16:54.090 [DEBUG] [Thread-196356] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:16:54.090 [DEBUG] [Thread-196356] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:16:54.090 [DEBUG] [Thread-196356] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:16:54.091 [DEBUG] [Thread-196356] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:16:54.091 [DEBUG] [Thread-196356] [transport.py] [_log()] client lang: <none>
2025-11-24T20:16:54.091 [DEBUG] [Thread-196356] [transport.py] [_log()] server lang: <none>
2025-11-24T20:16:54.091 [DEBUG] [Thread-196356] [transport.py] [_log()] kex follows: False
2025-11-24T20:16:54.091 [DEBUG] [Thread-196356] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:16:54.091 [DEBUG] [Thread-196356] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:16:54.091 [DEBUG] [Thread-196356] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:16:54.091 [DEBUG] [Thread-196356] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:16:54.092 [DEBUG] [Thread-196356] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:16:54.092 [DEBUG] [Thread-196356] [transport.py] [_log()] Compression: none
2025-11-24T20:16:54.092 [DEBUG] [Thread-196356] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:16:54.150 [DEBUG] [Thread-196356] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:16:54.151 [DEBUG] [Thread-196356] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:16:54.151 [DEBUG] [Thread-196356] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:16:54.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:16:54.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:16:54.213 [DEBUG] [Thread-196356] [transport.py] [_log()] userauth is OK
2025-11-24T20:16:54.213 [DEBUG] [Thread-196356] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:16:54.213 [DEBUG] [Thread-196356] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:16:54.213 [DEBUG] [Thread-196356] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:16:54.213 [DEBUG] [Thread-196356] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:16:54.232 [INFO] [Thread-196356] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:16:54.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:16:54.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:16:55.102 [DEBUG] [Thread-196356] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:16:55.102 [DEBUG] [Thread-196356] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:16:55.150 [DEBUG] [Thread-196356] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:16:55.151 [DEBUG] [Thread-196356] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:16:55.160 [DEBUG] [Thread-196356] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:16:55.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:16:55.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:16:55.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:16:55.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:16:55.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:16:55.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:16:55.199 [DEBUG] [Thread-196356] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:17:05.400 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:17:05.402 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:17:07.749 [DEBUG] [Thread-196358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:17:22.873 [DEBUG] [Thread-196359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:17:25.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:17:25.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:17:25.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-11-24T20:17:26.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 17, 13), 18.0, 29.53, 0.0, 30.44, 17.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:17:26.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:17:13
2025-11-24T20:17:26.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:17:26.358 [DEBUG] [Thread-196360] [transport.py] [_log()] starting thread (client mode): 0xd31519c0
2025-11-24T20:17:26.359 [DEBUG] [Thread-196360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:17:26.368 [DEBUG] [Thread-196360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:17:26.368 [INFO] [Thread-196360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:17:26.371 [DEBUG] [Thread-196360] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] client lang: <none>
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] server lang: <none>
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] kex follows: False
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:17:26.372 [DEBUG] [Thread-196360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:17:26.373 [DEBUG] [Thread-196360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:17:26.373 [DEBUG] [Thread-196360] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:17:26.373 [DEBUG] [Thread-196360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:17:26.373 [DEBUG] [Thread-196360] [transport.py] [_log()] Compression: none
2025-11-24T20:17:26.373 [DEBUG] [Thread-196360] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:17:26.397 [DEBUG] [Thread-196360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:17:26.399 [DEBUG] [Thread-196360] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:17:26.400 [DEBUG] [Thread-196360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:17:26.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:17:26.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:17:26.404 [DEBUG] [Thread-196360] [transport.py] [_log()] userauth is OK
2025-11-24T20:17:26.404 [DEBUG] [Thread-196360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:17:26.404 [DEBUG] [Thread-196360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:17:26.404 [DEBUG] [Thread-196360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:17:26.404 [DEBUG] [Thread-196360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:17:26.429 [INFO] [Thread-196360] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:17:26.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:17:27.051 [DEBUG] [Thread-196360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:17:27.052 [DEBUG] [Thread-196360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:17:27.062 [DEBUG] [Thread-196360] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:17:27.093 [DEBUG] [Thread-196360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:17:27.093 [DEBUG] [Thread-196360] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:17:27.096 [DEBUG] [Thread-196360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:17:27.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:17:27.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:17:27.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:17:27.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:17:27.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:17:27.115 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:17:27.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:17:27.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:17:27.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:17:27.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.761508 -999.00  +17.30  23.34     35   +1.70 1 1 1 1 1     3    0 14.45 -54.85 ZNESW 26.3 23.3 182.0 31.8 17.6 -26.3 17.4 -25.7 17.2 -24.4 17.5 -25.6
2025-11-24T20:17:27.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:17:27.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:17:27.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.761508
2025-11-24T20:17:27.121 [DEBUG] [Thread-196360] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:17:27.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:17:27.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:17:27.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:17:27.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:17:27.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:17:27.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:17:13', tmtdew=18.0, humidity=29.53, cloud=0.0, wind=30.44, temperature=17.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T01:50:24', seeing=0.88, atlas_timestamp='2025-11-24T18:16:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:17:27.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:17:27.216 [DEBUG] [Thread-196363] [transport.py] [_log()] starting thread (client mode): 0xd31532b0
2025-11-24T20:17:27.217 [DEBUG] [Thread-196363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:17:27.235 [DEBUG] [Thread-196363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:17:27.235 [INFO] [Thread-196363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] client lang: <none>
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] server lang: <none>
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] kex follows: False
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] Compression: none
2025-11-24T20:17:27.243 [DEBUG] [Thread-196363] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:17:27.299 [DEBUG] [Thread-196363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:17:27.299 [DEBUG] [Thread-196363] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:17:27.299 [DEBUG] [Thread-196363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:17:27.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:17:27.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:17:27.356 [DEBUG] [Thread-196363] [transport.py] [_log()] userauth is OK
2025-11-24T20:17:27.356 [DEBUG] [Thread-196363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:17:27.356 [DEBUG] [Thread-196363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:17:27.356 [DEBUG] [Thread-196363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:17:27.356 [DEBUG] [Thread-196363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:17:27.370 [INFO] [Thread-196363] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:17:27.371 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:17:27.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:17:28.237 [DEBUG] [Thread-196363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:17:28.237 [DEBUG] [Thread-196363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:17:28.285 [DEBUG] [Thread-196363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:17:28.285 [DEBUG] [Thread-196363] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:17:28.294 [DEBUG] [Thread-196363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:17:28.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:17:28.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-11-24T20:17:28.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-11-24T20:17:28.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:17:28.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:17:28.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:17:28.341 [DEBUG] [Thread-196363] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:17:37.904 [DEBUG] [Thread-196365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:17:44.093 [DEBUG] [Thread-196366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:17:53.005 [DEBUG] [Thread-196367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:17:58.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:17:58.364 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:17:58.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-11-24T20:17:59.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 17, 45), 18.02, 29.59, 0.0, 25.44, 17.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:17:59.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:17:45
2025-11-24T20:17:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:17:59.507 [DEBUG] [Thread-196368] [transport.py] [_log()] starting thread (client mode): 0xd0738d90
2025-11-24T20:17:59.507 [DEBUG] [Thread-196368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:17:59.519 [DEBUG] [Thread-196368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:17:59.519 [INFO] [Thread-196368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] client lang: <none>
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] server lang: <none>
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] kex follows: False
2025-11-24T20:17:59.524 [DEBUG] [Thread-196368] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:17:59.525 [DEBUG] [Thread-196368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:17:59.525 [DEBUG] [Thread-196368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:17:59.525 [DEBUG] [Thread-196368] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:17:59.525 [DEBUG] [Thread-196368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:17:59.526 [DEBUG] [Thread-196368] [transport.py] [_log()] Compression: none
2025-11-24T20:17:59.526 [DEBUG] [Thread-196368] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:17:59.553 [DEBUG] [Thread-196368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:17:59.557 [DEBUG] [Thread-196368] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:17:59.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:17:59.560 [DEBUG] [Thread-196368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:17:59.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:17:59.562 [DEBUG] [Thread-196368] [transport.py] [_log()] userauth is OK
2025-11-24T20:17:59.563 [DEBUG] [Thread-196368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:17:59.563 [DEBUG] [Thread-196368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:17:59.563 [DEBUG] [Thread-196368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:17:59.563 [DEBUG] [Thread-196368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:17:59.595 [INFO] [Thread-196368] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:17:59.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:18:00.200 [DEBUG] [Thread-196368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:18:00.200 [DEBUG] [Thread-196368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:18:00.201 [DEBUG] [Thread-196368] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:18:00.241 [DEBUG] [Thread-196368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:18:00.241 [DEBUG] [Thread-196368] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:18:00.243 [DEBUG] [Thread-196368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:18:00.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:18:00.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:18:00.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:18:00.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:18:00.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:18:00.263 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:18:00.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:18:00.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:18:00.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:18:00.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.761855 -999.00  +17.30  23.15     35   +1.70 1 1 1 1 1     2    0 14.52 -52.09 ZNESW 24.4 23.1 178.0 36.7 17.6 -26.1 17.4 -25.5 17.2 -24.4 17.5 -25.7
2025-11-24T20:18:00.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:18:00.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:18:00.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.761855
2025-11-24T20:18:00.270 [DEBUG] [Thread-196368] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:18:00.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:18:00.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:18:00.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:18:00.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:18:00.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:18:00.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:17:45', tmtdew=18.02, humidity=29.59, cloud=0.0, wind=25.44, temperature=17.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:17:45', seeing=0.64, atlas_timestamp='2025-11-24T18:17:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T02:26:00')
2025-11-24T20:18:00.351 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:18:00.362 [DEBUG] [Thread-196371] [transport.py] [_log()] starting thread (client mode): 0xd0739db0
2025-11-24T20:18:00.362 [DEBUG] [Thread-196371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:18:00.377 [DEBUG] [Thread-196371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:18:00.377 [INFO] [Thread-196371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:18:00.384 [DEBUG] [Thread-196371] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] client lang: <none>
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] server lang: <none>
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] kex follows: False
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] Compression: none
2025-11-24T20:18:00.385 [DEBUG] [Thread-196371] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:18:00.443 [DEBUG] [Thread-196371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:18:00.444 [DEBUG] [Thread-196371] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:18:00.444 [DEBUG] [Thread-196371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:18:00.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:18:00.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:18:00.500 [DEBUG] [Thread-196371] [transport.py] [_log()] userauth is OK
2025-11-24T20:18:00.501 [DEBUG] [Thread-196371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:18:00.501 [DEBUG] [Thread-196371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:18:00.501 [DEBUG] [Thread-196371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:18:00.501 [DEBUG] [Thread-196371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:18:00.516 [INFO] [Thread-196371] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:18:00.516 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:18:00.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:18:01.378 [DEBUG] [Thread-196371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:18:01.378 [DEBUG] [Thread-196371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:18:01.426 [DEBUG] [Thread-196371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:18:01.426 [DEBUG] [Thread-196371] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:18:01.434 [DEBUG] [Thread-196371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:18:01.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:18:01.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-11-24T20:18:01.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-11-24T20:18:01.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:18:01.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:18:01.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:18:01.467 [DEBUG] [Thread-196371] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:18:08.042 [DEBUG] [Thread-196373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:18:09.610 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:18:09.612 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:18:23.294 [DEBUG] [Thread-196374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:18:31.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:18:31.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:18:31.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:18:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 18, 18), 18.05, 29.54, 0.0, 24.83, 17.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:18:32.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:18:18
2025-11-24T20:18:33.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:18:33.304 [DEBUG] [Thread-196375] [transport.py] [_log()] starting thread (client mode): 0xd073a830
2025-11-24T20:18:33.306 [DEBUG] [Thread-196375] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:18:33.311 [DEBUG] [Thread-196375] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:18:33.311 [INFO] [Thread-196375] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:18:33.315 [DEBUG] [Thread-196375] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:18:33.315 [DEBUG] [Thread-196375] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:18:33.315 [DEBUG] [Thread-196375] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] client lang: <none>
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] server lang: <none>
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] kex follows: False
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] Compression: none
2025-11-24T20:18:33.316 [DEBUG] [Thread-196375] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:18:33.349 [DEBUG] [Thread-196375] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:18:33.354 [DEBUG] [Thread-196375] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:18:33.355 [DEBUG] [Thread-196375] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:18:33.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:18:33.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:18:33.359 [DEBUG] [Thread-196375] [transport.py] [_log()] userauth is OK
2025-11-24T20:18:33.359 [DEBUG] [Thread-196375] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:18:33.359 [DEBUG] [Thread-196375] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:18:33.360 [DEBUG] [Thread-196375] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:18:33.360 [DEBUG] [Thread-196375] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:18:33.393 [INFO] [Thread-196375] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:18:33.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:18:33.986 [DEBUG] [Thread-196375] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:18:33.986 [DEBUG] [Thread-196375] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:18:33.987 [DEBUG] [Thread-196375] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:18:34.028 [DEBUG] [Thread-196375] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:18:34.028 [DEBUG] [Thread-196375] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:18:34.031 [DEBUG] [Thread-196375] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:18:34.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:18:34.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:18:34.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:18:34.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:18:34.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:18:34.054 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:18:34.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:18:34.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:18:34.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:18:34.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.762202 -999.00  +17.30  21.38     35   +1.70 1 1 1 1 1     2    0 14.62 -50.51 ZNESW 20.8 21.4 175.4 35.8 17.5 -26.2 17.4 -25.5 17.2 -24.5 17.4 -25.6
2025-11-24T20:18:34.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:18:34.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:18:34.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.762202
2025-11-24T20:18:34.061 [DEBUG] [Thread-196375] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:18:34.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:18:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:18:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:18:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:18:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:18:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:18:18', tmtdew=18.05, humidity=29.54, cloud=0.0, wind=24.83, temperature=17.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:18:18', seeing=0.54, atlas_timestamp='2025-11-24T18:17:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:18:34.150 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:18:34.162 [DEBUG] [Thread-196378] [transport.py] [_log()] starting thread (client mode): 0xd073bcd0
2025-11-24T20:18:34.163 [DEBUG] [Thread-196378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:18:34.178 [DEBUG] [Thread-196378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:18:34.178 [INFO] [Thread-196378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:18:34.185 [DEBUG] [Thread-196378] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] client lang: <none>
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] server lang: <none>
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] kex follows: False
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] Compression: none
2025-11-24T20:18:34.186 [DEBUG] [Thread-196378] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:18:34.243 [DEBUG] [Thread-196378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:18:34.243 [DEBUG] [Thread-196378] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:18:34.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:18:34.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:18:34.244 [DEBUG] [Thread-196378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:18:34.300 [DEBUG] [Thread-196378] [transport.py] [_log()] userauth is OK
2025-11-24T20:18:34.300 [DEBUG] [Thread-196378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:18:34.300 [DEBUG] [Thread-196378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:18:34.300 [DEBUG] [Thread-196378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:18:34.300 [DEBUG] [Thread-196378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:18:34.315 [INFO] [Thread-196378] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:18:34.315 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:18:34.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:18:35.150 [DEBUG] [Thread-196378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:18:35.150 [DEBUG] [Thread-196378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:18:35.198 [DEBUG] [Thread-196378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:18:35.198 [DEBUG] [Thread-196378] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:18:35.206 [DEBUG] [Thread-196378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:18:35.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:18:35.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:18:35.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:18:35.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:18:35.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:18:35.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:18:35.240 [DEBUG] [Thread-196378] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:18:38.398 [DEBUG] [Thread-196380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:18:44.410 [DEBUG] [Thread-196381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:18:53.664 [DEBUG] [Thread-196382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:19:05.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:19:05.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:19:05.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:19:06.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 18, 51), 17.97, 29.58, 0.0, 26.43, 17.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:19:06.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:18:51
2025-11-24T20:19:06.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:19:07.146 [DEBUG] [Thread-196383] [transport.py] [_log()] starting thread (client mode): 0xd3151480
2025-11-24T20:19:07.148 [DEBUG] [Thread-196383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:19:07.158 [DEBUG] [Thread-196383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:19:07.158 [INFO] [Thread-196383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:19:07.161 [DEBUG] [Thread-196383] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:19:07.161 [DEBUG] [Thread-196383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:19:07.161 [DEBUG] [Thread-196383] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:19:07.161 [DEBUG] [Thread-196383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:19:07.161 [DEBUG] [Thread-196383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:19:07.161 [DEBUG] [Thread-196383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:19:07.161 [DEBUG] [Thread-196383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:19:07.161 [DEBUG] [Thread-196383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:19:07.161 [DEBUG] [Thread-196383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:19:07.161 [DEBUG] [Thread-196383] [transport.py] [_log()] client lang: <none>
2025-11-24T20:19:07.162 [DEBUG] [Thread-196383] [transport.py] [_log()] server lang: <none>
2025-11-24T20:19:07.162 [DEBUG] [Thread-196383] [transport.py] [_log()] kex follows: False
2025-11-24T20:19:07.162 [DEBUG] [Thread-196383] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:19:07.162 [DEBUG] [Thread-196383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:19:07.162 [DEBUG] [Thread-196383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:19:07.162 [DEBUG] [Thread-196383] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:19:07.162 [DEBUG] [Thread-196383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:19:07.162 [DEBUG] [Thread-196383] [transport.py] [_log()] Compression: none
2025-11-24T20:19:07.162 [DEBUG] [Thread-196383] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:19:07.194 [DEBUG] [Thread-196383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:19:07.198 [DEBUG] [Thread-196383] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:19:07.199 [DEBUG] [Thread-196383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:19:07.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:19:07.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:19:07.203 [DEBUG] [Thread-196383] [transport.py] [_log()] userauth is OK
2025-11-24T20:19:07.203 [DEBUG] [Thread-196383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:19:07.203 [DEBUG] [Thread-196383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:19:07.203 [DEBUG] [Thread-196383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:19:07.203 [DEBUG] [Thread-196383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:19:07.233 [INFO] [Thread-196383] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:19:07.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:19:07.850 [DEBUG] [Thread-196383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:19:07.851 [DEBUG] [Thread-196383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:19:07.852 [DEBUG] [Thread-196383] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:19:07.892 [DEBUG] [Thread-196383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:19:07.892 [DEBUG] [Thread-196383] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:19:07.895 [DEBUG] [Thread-196383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:19:07.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:19:07.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:19:07.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:19:07.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:19:07.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:19:07.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:19:07.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:19:07.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:19:07.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:19:07.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.762550 -999.00  +17.30  22.21     35   +1.70 1 1 1 1 1     2    0 14.43 -51.68 ZNESW 23.1 22.2 179.6 33.0 17.6 -26.3 17.5 -25.7 17.1 -24.5 17.5 -25.7
2025-11-24T20:19:07.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:19:07.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:19:07.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.762550
2025-11-24T20:19:07.930 [DEBUG] [Thread-196383] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:19:07.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:19:07.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:19:07.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:19:07.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:19:07.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:19:07.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:18:51', tmtdew=17.97, humidity=29.58, cloud=0.0, wind=26.43, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:18:52', seeing=0.54, atlas_timestamp='2025-11-24T18:18:04.320', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:19:08.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:19:08.033 [DEBUG] [Thread-196386] [transport.py] [_log()] starting thread (client mode): 0xc9b827a0
2025-11-24T20:19:08.033 [DEBUG] [Thread-196386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:19:08.047 [DEBUG] [Thread-196386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:19:08.048 [INFO] [Thread-196386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] client lang: <none>
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] server lang: <none>
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] kex follows: False
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] Compression: none
2025-11-24T20:19:08.056 [DEBUG] [Thread-196386] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:19:08.117 [DEBUG] [Thread-196386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:19:08.118 [DEBUG] [Thread-196386] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:19:08.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:19:08.119 [DEBUG] [Thread-196386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:19:08.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:19:08.173 [DEBUG] [Thread-196386] [transport.py] [_log()] userauth is OK
2025-11-24T20:19:08.173 [DEBUG] [Thread-196386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:19:08.173 [DEBUG] [Thread-196386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:19:08.173 [DEBUG] [Thread-196386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:19:08.173 [DEBUG] [Thread-196386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:19:08.194 [INFO] [Thread-196386] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:19:08.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:19:08.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:19:08.777 [DEBUG] [Thread-196388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:19:09.019 [DEBUG] [Thread-196386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:19:09.019 [DEBUG] [Thread-196386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:19:09.067 [DEBUG] [Thread-196386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:19:09.067 [DEBUG] [Thread-196386] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:19:09.075 [DEBUG] [Thread-196386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:19:09.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:19:09.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-11-24T20:19:09.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:19:09.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:19:09.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:19:09.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:19:09.111 [DEBUG] [Thread-196386] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:19:15.324 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:19:15.337 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:19:23.995 [DEBUG] [Thread-196389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:19:39.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:19:39.146 [DEBUG] [Thread-196390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:19:39.154 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:19:39.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:19:40.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 19, 24), 17.96, 29.59, 0.0, 28.87, 17.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:19:40.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:19:24
2025-11-24T20:19:40.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:19:41.039 [DEBUG] [Thread-196391] [transport.py] [_log()] starting thread (client mode): 0xc9b83f10
2025-11-24T20:19:41.040 [DEBUG] [Thread-196391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:19:41.049 [DEBUG] [Thread-196391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:19:41.049 [INFO] [Thread-196391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] client lang: <none>
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] server lang: <none>
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] kex follows: False
2025-11-24T20:19:41.053 [DEBUG] [Thread-196391] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:19:41.054 [DEBUG] [Thread-196391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:19:41.054 [DEBUG] [Thread-196391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:19:41.054 [DEBUG] [Thread-196391] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:19:41.054 [DEBUG] [Thread-196391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:19:41.054 [DEBUG] [Thread-196391] [transport.py] [_log()] Compression: none
2025-11-24T20:19:41.054 [DEBUG] [Thread-196391] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:19:41.086 [DEBUG] [Thread-196391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:19:41.090 [DEBUG] [Thread-196391] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:19:41.091 [DEBUG] [Thread-196391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:19:41.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:19:41.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:19:41.095 [DEBUG] [Thread-196391] [transport.py] [_log()] userauth is OK
2025-11-24T20:19:41.095 [DEBUG] [Thread-196391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:19:41.096 [DEBUG] [Thread-196391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:19:41.096 [DEBUG] [Thread-196391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:19:41.096 [DEBUG] [Thread-196391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:19:41.129 [INFO] [Thread-196391] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:19:41.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:19:41.766 [DEBUG] [Thread-196391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:19:41.766 [DEBUG] [Thread-196391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:19:41.767 [DEBUG] [Thread-196391] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:19:41.807 [DEBUG] [Thread-196391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:19:41.807 [DEBUG] [Thread-196391] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:19:41.810 [DEBUG] [Thread-196391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:19:41.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:19:41.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:19:41.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:19:41.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:19:41.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:19:41.833 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:19:41.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:19:41.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:19:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:19:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.763244 -999.00  +17.20  17.53     35   +1.70 1 1 1 1 1     2    0 14.23 -57.96 ZNESW 15.7 17.5 173.4 33.0 17.5 -26.4 17.4 -25.8 17.2 -24.6 17.5 -25.6
2025-11-24T20:19:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:19:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:19:41.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.763244
2025-11-24T20:19:41.840 [DEBUG] [Thread-196391] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:19:41.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:19:41.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:19:41.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:19:41.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:19:41.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:19:41.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:19:24', tmtdew=17.96, humidity=29.59, cloud=0.0, wind=28.87, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:19:25', seeing=0.58, atlas_timestamp='2025-11-24T18:19:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:19:41.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:19:41.942 [DEBUG] [Thread-196394] [transport.py] [_log()] starting thread (client mode): 0xd3150c40
2025-11-24T20:19:41.942 [DEBUG] [Thread-196394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:19:41.957 [DEBUG] [Thread-196394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:19:41.957 [INFO] [Thread-196394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] client lang: <none>
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] server lang: <none>
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] kex follows: False
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:19:41.964 [DEBUG] [Thread-196394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:19:41.965 [DEBUG] [Thread-196394] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:19:41.965 [DEBUG] [Thread-196394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:19:41.965 [DEBUG] [Thread-196394] [transport.py] [_log()] Compression: none
2025-11-24T20:19:41.965 [DEBUG] [Thread-196394] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:19:42.025 [DEBUG] [Thread-196394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:19:42.025 [DEBUG] [Thread-196394] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:19:42.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:19:42.026 [DEBUG] [Thread-196394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:19:42.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:19:42.081 [DEBUG] [Thread-196394] [transport.py] [_log()] userauth is OK
2025-11-24T20:19:42.081 [DEBUG] [Thread-196394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:19:42.081 [DEBUG] [Thread-196394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:19:42.081 [DEBUG] [Thread-196394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:19:42.081 [DEBUG] [Thread-196394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:19:42.102 [INFO] [Thread-196394] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:19:42.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:19:42.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:19:42.935 [DEBUG] [Thread-196394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:19:42.935 [DEBUG] [Thread-196394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:19:42.983 [DEBUG] [Thread-196394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:19:42.983 [DEBUG] [Thread-196394] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:19:42.993 [DEBUG] [Thread-196394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:19:43.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:19:43.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-11-24T20:19:43.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-11-24T20:19:43.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:19:43.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:19:43.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:19:43.028 [DEBUG] [Thread-196394] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:19:44.730 [DEBUG] [Thread-196396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:19:54.352 [DEBUG] [Thread-196397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:20:09.637 [DEBUG] [Thread-196398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:20:13.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:20:13.076 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:20:13.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-11-24T20:20:15.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 19, 58), 17.93, 29.68, 0.0, 25.95, 17.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:20:15.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:19:58
2025-11-24T20:20:15.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:20:15.556 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:20:15.560 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:20:15.574 [DEBUG] [Thread-196399] [transport.py] [_log()] starting thread (client mode): 0xd3152650
2025-11-24T20:20:15.575 [DEBUG] [Thread-196399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:20:15.577 [DEBUG] [Thread-196399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:20:15.577 [INFO] [Thread-196399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:20:15.582 [DEBUG] [Thread-196399] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] client lang: <none>
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] server lang: <none>
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] kex follows: False
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:20:15.583 [DEBUG] [Thread-196399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:20:15.584 [DEBUG] [Thread-196399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:20:15.584 [DEBUG] [Thread-196399] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:20:15.584 [DEBUG] [Thread-196399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:20:15.584 [DEBUG] [Thread-196399] [transport.py] [_log()] Compression: none
2025-11-24T20:20:15.584 [DEBUG] [Thread-196399] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:20:15.618 [DEBUG] [Thread-196399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:20:15.623 [DEBUG] [Thread-196399] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:20:15.624 [DEBUG] [Thread-196399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:20:15.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:20:15.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:20:15.628 [DEBUG] [Thread-196399] [transport.py] [_log()] userauth is OK
2025-11-24T20:20:15.628 [DEBUG] [Thread-196399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:20:15.629 [DEBUG] [Thread-196399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:20:15.629 [DEBUG] [Thread-196399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:20:15.629 [DEBUG] [Thread-196399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:20:15.659 [INFO] [Thread-196399] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:20:15.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:20:18.657 [DEBUG] [Thread-196399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:20:18.657 [DEBUG] [Thread-196399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:20:18.658 [DEBUG] [Thread-196399] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:20:18.698 [DEBUG] [Thread-196399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:20:18.698 [DEBUG] [Thread-196399] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:20:18.700 [DEBUG] [Thread-196399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:20:18.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:20:18.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:20:18.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:20:18.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:20:18.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:20:18.722 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:20:18.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:20:18.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:20:18.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:20:18.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.763591 -999.00  +17.20  23.62     35   +1.70 1 1 1 1 1     1    0 14.28 -59.25 ZNESW 23.1 23.6 174.8 30.0 17.6 -26.2 17.4 -25.6 17.2 -24.6 17.5 -25.5
2025-11-24T20:20:18.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:20:18.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:20:18.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.763591
2025-11-24T20:20:18.728 [DEBUG] [Thread-196399] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:20:18.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:20:18.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:20:18.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:20:18.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:20:18.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:20:18.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:19:58', tmtdew=17.93, humidity=29.68, cloud=0.0, wind=25.95, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:19:58', seeing=0.6, atlas_timestamp='2025-11-24T18:19:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:20:18.818 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:20:18.830 [DEBUG] [Thread-196402] [transport.py] [_log()] starting thread (client mode): 0xd0739750
2025-11-24T20:20:18.830 [DEBUG] [Thread-196402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:20:18.845 [DEBUG] [Thread-196402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:20:18.845 [INFO] [Thread-196402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:20:18.852 [DEBUG] [Thread-196402] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:20:18.852 [DEBUG] [Thread-196402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:20:18.852 [DEBUG] [Thread-196402] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:20:18.852 [DEBUG] [Thread-196402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:20:18.852 [DEBUG] [Thread-196402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:20:18.852 [DEBUG] [Thread-196402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:20:18.852 [DEBUG] [Thread-196402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:20:18.852 [DEBUG] [Thread-196402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:20:18.852 [DEBUG] [Thread-196402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:20:18.852 [DEBUG] [Thread-196402] [transport.py] [_log()] client lang: <none>
2025-11-24T20:20:18.853 [DEBUG] [Thread-196402] [transport.py] [_log()] server lang: <none>
2025-11-24T20:20:18.853 [DEBUG] [Thread-196402] [transport.py] [_log()] kex follows: False
2025-11-24T20:20:18.853 [DEBUG] [Thread-196402] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:20:18.853 [DEBUG] [Thread-196402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:20:18.853 [DEBUG] [Thread-196402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:20:18.853 [DEBUG] [Thread-196402] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:20:18.853 [DEBUG] [Thread-196402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:20:18.853 [DEBUG] [Thread-196402] [transport.py] [_log()] Compression: none
2025-11-24T20:20:18.853 [DEBUG] [Thread-196402] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:20:18.911 [DEBUG] [Thread-196402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:20:18.911 [DEBUG] [Thread-196402] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:20:18.911 [DEBUG] [Thread-196402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:20:18.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:20:18.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:20:18.968 [DEBUG] [Thread-196402] [transport.py] [_log()] userauth is OK
2025-11-24T20:20:18.968 [DEBUG] [Thread-196402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:20:18.968 [DEBUG] [Thread-196402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:20:18.968 [DEBUG] [Thread-196402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:20:18.968 [DEBUG] [Thread-196402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:20:18.982 [INFO] [Thread-196402] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:20:18.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:20:18.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:20:19.841 [DEBUG] [Thread-196402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:20:19.841 [DEBUG] [Thread-196402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:20:19.889 [DEBUG] [Thread-196402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:20:19.889 [DEBUG] [Thread-196402] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:20:19.897 [DEBUG] [Thread-196402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:20:19.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:20:19.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-11-24T20:20:19.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-11-24T20:20:19.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:20:19.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:20:19.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:20:19.934 [DEBUG] [Thread-196402] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:20:24.805 [DEBUG] [Thread-196404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:20:40.060 [DEBUG] [Thread-196405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:20:45.226 [DEBUG] [Thread-196406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:20:49.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:20:49.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:20:50.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-11-24T20:20:52.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 20, 32), 17.92, 29.69, 0.0, 26.91, 17.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:20:52.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:20:32
2025-11-24T20:20:52.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:20:52.766 [DEBUG] [Thread-196407] [transport.py] [_log()] starting thread (client mode): 0xd07392d0
2025-11-24T20:20:52.769 [DEBUG] [Thread-196407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:20:52.770 [DEBUG] [Thread-196407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:20:52.770 [INFO] [Thread-196407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:20:52.779 [DEBUG] [Thread-196407] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] client lang: <none>
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] server lang: <none>
2025-11-24T20:20:52.780 [DEBUG] [Thread-196407] [transport.py] [_log()] kex follows: False
2025-11-24T20:20:52.781 [DEBUG] [Thread-196407] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:20:52.781 [DEBUG] [Thread-196407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:20:52.782 [DEBUG] [Thread-196407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:20:52.782 [DEBUG] [Thread-196407] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:20:52.782 [DEBUG] [Thread-196407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:20:52.782 [DEBUG] [Thread-196407] [transport.py] [_log()] Compression: none
2025-11-24T20:20:52.782 [DEBUG] [Thread-196407] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:20:52.832 [DEBUG] [Thread-196407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:20:52.839 [DEBUG] [Thread-196407] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:20:52.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:20:52.843 [DEBUG] [Thread-196407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:20:52.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:20:52.849 [DEBUG] [Thread-196407] [transport.py] [_log()] userauth is OK
2025-11-24T20:20:52.849 [DEBUG] [Thread-196407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:20:52.850 [DEBUG] [Thread-196407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:20:52.850 [DEBUG] [Thread-196407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:20:52.850 [DEBUG] [Thread-196407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:20:52.890 [INFO] [Thread-196407] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:20:52.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:20:53.525 [DEBUG] [Thread-196407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:20:53.526 [DEBUG] [Thread-196407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:20:53.531 [DEBUG] [Thread-196407] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:20:53.566 [DEBUG] [Thread-196407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:20:53.566 [DEBUG] [Thread-196407] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:20:53.568 [DEBUG] [Thread-196407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:20:53.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:20:53.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:20:53.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:20:53.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:20:53.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:20:53.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:20:53.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:20:53.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:20:53.593 [DEBUG] [Thread-196407] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:20:53.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:20:53.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.763938 -999.00  +17.20  19.02     35   +1.60 1 1 1 1 1     1    0 14.04 -61.27 ZNESW 21.8 19.0 172.0 32.5 17.5 -26.3 17.4 -25.7 17.2 -24.6 17.4 -25.7
2025-11-24T20:20:53.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:20:53.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:20:53.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.763938
2025-11-24T20:20:53.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:20:53.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:20:53.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:20:53.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:20:53.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:20:53.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:20:32', tmtdew=17.92, humidity=29.69, cloud=0.0, wind=26.91, temperature=17.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:20:33', seeing=0.68, atlas_timestamp='2025-11-24T18:20:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:20:53.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:20:53.720 [DEBUG] [Thread-196410] [transport.py] [_log()] starting thread (client mode): 0xc9b80100
2025-11-24T20:20:53.721 [DEBUG] [Thread-196410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:20:53.736 [DEBUG] [Thread-196410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:20:53.736 [INFO] [Thread-196410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:20:53.743 [DEBUG] [Thread-196410] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:20:53.743 [DEBUG] [Thread-196410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:20:53.743 [DEBUG] [Thread-196410] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:20:53.743 [DEBUG] [Thread-196410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:20:53.743 [DEBUG] [Thread-196410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:20:53.743 [DEBUG] [Thread-196410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:20:53.743 [DEBUG] [Thread-196410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:20:53.743 [DEBUG] [Thread-196410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] client lang: <none>
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] server lang: <none>
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] kex follows: False
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] Compression: none
2025-11-24T20:20:53.744 [DEBUG] [Thread-196410] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:20:53.800 [DEBUG] [Thread-196410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:20:53.800 [DEBUG] [Thread-196410] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:20:53.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:20:53.801 [DEBUG] [Thread-196410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:20:53.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:20:53.858 [DEBUG] [Thread-196410] [transport.py] [_log()] userauth is OK
2025-11-24T20:20:53.858 [DEBUG] [Thread-196410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:20:53.858 [DEBUG] [Thread-196410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:20:53.858 [DEBUG] [Thread-196410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:20:53.858 [DEBUG] [Thread-196410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:20:53.872 [INFO] [Thread-196410] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:20:53.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:20:53.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:20:54.695 [DEBUG] [Thread-196410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:20:54.695 [DEBUG] [Thread-196410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:20:54.743 [DEBUG] [Thread-196410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:20:54.743 [DEBUG] [Thread-196410] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:20:54.751 [DEBUG] [Thread-196410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:20:54.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:20:54.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:20:54.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-11-24T20:20:54.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:20:54.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:20:54.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:20:54.785 [DEBUG] [Thread-196410] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:20:55.191 [DEBUG] [Thread-196412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:21:10.761 [DEBUG] [Thread-196413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:21:15.783 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:21:15.804 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:21:24.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:21:24.868 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:21:24.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-11-24T20:21:25.989 [DEBUG] [Thread-196414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:21:27.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 21, 7), 17.94, 29.66, 0.0, 27.79, 17.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:21:27.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:21:07
2025-11-24T20:21:27.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:21:27.569 [DEBUG] [Thread-196415] [transport.py] [_log()] starting thread (client mode): 0xd3152410
2025-11-24T20:21:27.570 [DEBUG] [Thread-196415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:21:27.579 [DEBUG] [Thread-196415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:21:27.579 [INFO] [Thread-196415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] client lang: <none>
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] server lang: <none>
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] kex follows: False
2025-11-24T20:21:27.596 [DEBUG] [Thread-196415] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:21:27.597 [DEBUG] [Thread-196415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:21:27.597 [DEBUG] [Thread-196415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:21:27.598 [DEBUG] [Thread-196415] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:21:27.598 [DEBUG] [Thread-196415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:21:27.598 [DEBUG] [Thread-196415] [transport.py] [_log()] Compression: none
2025-11-24T20:21:27.598 [DEBUG] [Thread-196415] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:21:27.652 [DEBUG] [Thread-196415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:21:27.658 [DEBUG] [Thread-196415] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:21:27.670 [DEBUG] [Thread-196415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:21:27.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:21:27.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:21:27.676 [DEBUG] [Thread-196415] [transport.py] [_log()] userauth is OK
2025-11-24T20:21:27.677 [DEBUG] [Thread-196415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:21:27.677 [DEBUG] [Thread-196415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:21:27.677 [DEBUG] [Thread-196415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:21:27.677 [DEBUG] [Thread-196415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:21:27.698 [INFO] [Thread-196415] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:21:27.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:21:28.336 [DEBUG] [Thread-196415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:21:28.336 [DEBUG] [Thread-196415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:21:28.337 [DEBUG] [Thread-196415] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:21:28.377 [DEBUG] [Thread-196415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:21:28.377 [DEBUG] [Thread-196415] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:21:28.380 [DEBUG] [Thread-196415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:21:28.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:21:28.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:21:28.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:21:28.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:21:28.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:21:28.403 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:21:28.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:21:28.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:21:28.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:21:28.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.764286 -999.00  +17.20  15.78     35   +1.70 1 1 1 1 1     1    0 14.02 -59.10 ZNESW 16.7 15.8 182.4 29.4 17.5 -26.4 17.4 -25.7 17.1 -24.7 17.4 -25.7
2025-11-24T20:21:28.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:21:28.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:21:28.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.764286
2025-11-24T20:21:28.412 [DEBUG] [Thread-196415] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:21:28.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:21:28.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:21:28.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:21:28.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:21:28.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:21:28.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:21:07', tmtdew=17.94, humidity=29.66, cloud=0.0, wind=27.79, temperature=17.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:21:07', seeing=0.6, atlas_timestamp='2025-11-24T18:20:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:21:28.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:21:28.551 [DEBUG] [Thread-196418] [transport.py] [_log()] starting thread (client mode): 0xc9b83af0
2025-11-24T20:21:28.551 [DEBUG] [Thread-196418] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:21:28.566 [DEBUG] [Thread-196418] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:21:28.566 [INFO] [Thread-196418] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:21:28.574 [DEBUG] [Thread-196418] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:21:28.574 [DEBUG] [Thread-196418] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:21:28.574 [DEBUG] [Thread-196418] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:21:28.574 [DEBUG] [Thread-196418] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:21:28.574 [DEBUG] [Thread-196418] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:21:28.574 [DEBUG] [Thread-196418] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:21:28.574 [DEBUG] [Thread-196418] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:21:28.574 [DEBUG] [Thread-196418] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:21:28.574 [DEBUG] [Thread-196418] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:21:28.575 [DEBUG] [Thread-196418] [transport.py] [_log()] client lang: <none>
2025-11-24T20:21:28.575 [DEBUG] [Thread-196418] [transport.py] [_log()] server lang: <none>
2025-11-24T20:21:28.575 [DEBUG] [Thread-196418] [transport.py] [_log()] kex follows: False
2025-11-24T20:21:28.575 [DEBUG] [Thread-196418] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:21:28.575 [DEBUG] [Thread-196418] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:21:28.575 [DEBUG] [Thread-196418] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:21:28.575 [DEBUG] [Thread-196418] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:21:28.575 [DEBUG] [Thread-196418] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:21:28.575 [DEBUG] [Thread-196418] [transport.py] [_log()] Compression: none
2025-11-24T20:21:28.576 [DEBUG] [Thread-196418] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:21:28.632 [DEBUG] [Thread-196418] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:21:28.633 [DEBUG] [Thread-196418] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:21:28.633 [DEBUG] [Thread-196418] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:21:28.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:21:28.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:21:28.695 [DEBUG] [Thread-196418] [transport.py] [_log()] userauth is OK
2025-11-24T20:21:28.695 [DEBUG] [Thread-196418] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:21:28.695 [DEBUG] [Thread-196418] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:21:28.695 [DEBUG] [Thread-196418] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:21:28.695 [DEBUG] [Thread-196418] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:21:28.717 [INFO] [Thread-196418] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:21:28.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:21:28.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:21:29.615 [DEBUG] [Thread-196418] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:21:29.615 [DEBUG] [Thread-196418] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:21:29.664 [DEBUG] [Thread-196418] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:21:29.664 [DEBUG] [Thread-196418] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:21:29.675 [DEBUG] [Thread-196418] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:21:29.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:21:29.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:21: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-11-24T20:21:29.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:21:29.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:21:29.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:21:29.724 [DEBUG] [Thread-196418] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:21:41.195 [DEBUG] [Thread-196420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:21:45.776 [DEBUG] [Thread-196421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:21:56.545 [DEBUG] [Thread-196422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:21:59.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:21:59.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:21:59.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-11-24T20:22:02.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 21, 42), 17.92, 29.69, 0.0, 28.2, 17.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:22:02.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:21:42
2025-11-24T20:22:02.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:22:02.565 [DEBUG] [Thread-196423] [transport.py] [_log()] starting thread (client mode): 0xd07868c0
2025-11-24T20:22:02.565 [DEBUG] [Thread-196423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:22:02.572 [DEBUG] [Thread-196423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:22:02.572 [INFO] [Thread-196423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:22:02.579 [DEBUG] [Thread-196423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:22:02.579 [DEBUG] [Thread-196423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:22:02.579 [DEBUG] [Thread-196423] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:22:02.579 [DEBUG] [Thread-196423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:22:02.579 [DEBUG] [Thread-196423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:22:02.579 [DEBUG] [Thread-196423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:22:02.580 [DEBUG] [Thread-196423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:22:02.580 [DEBUG] [Thread-196423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:22:02.580 [DEBUG] [Thread-196423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:22:02.580 [DEBUG] [Thread-196423] [transport.py] [_log()] client lang: <none>
2025-11-24T20:22:02.580 [DEBUG] [Thread-196423] [transport.py] [_log()] server lang: <none>
2025-11-24T20:22:02.580 [DEBUG] [Thread-196423] [transport.py] [_log()] kex follows: False
2025-11-24T20:22:02.580 [DEBUG] [Thread-196423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:22:02.580 [DEBUG] [Thread-196423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:22:02.580 [DEBUG] [Thread-196423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:22:02.581 [DEBUG] [Thread-196423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:22:02.581 [DEBUG] [Thread-196423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:22:02.581 [DEBUG] [Thread-196423] [transport.py] [_log()] Compression: none
2025-11-24T20:22:02.581 [DEBUG] [Thread-196423] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:22:02.622 [DEBUG] [Thread-196423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:22:02.627 [DEBUG] [Thread-196423] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:22:02.629 [DEBUG] [Thread-196423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:22:02.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:22:02.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:22:02.633 [DEBUG] [Thread-196423] [transport.py] [_log()] userauth is OK
2025-11-24T20:22:02.634 [DEBUG] [Thread-196423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:22:02.634 [DEBUG] [Thread-196423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:22:02.634 [DEBUG] [Thread-196423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:22:02.634 [DEBUG] [Thread-196423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:22:02.656 [INFO] [Thread-196423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:22:02.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:22:03.644 [DEBUG] [Thread-196423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:22:03.644 [DEBUG] [Thread-196423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:22:03.647 [DEBUG] [Thread-196423] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:22:03.684 [DEBUG] [Thread-196423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:22:03.685 [DEBUG] [Thread-196423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:22:03.688 [DEBUG] [Thread-196423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:22:03.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:22:03.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:22:03.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:22:03.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:22:03.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:22:03.713 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:22:03.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:22:03.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:22:03.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:22:03.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.764633 -999.00  +17.20  23.11     35   +1.70 1 1 1 1 1     1    0 14.04 -65.70 ZNESW 24.0 23.1 178.6 29.1 17.5 -26.4 17.3 -25.7 17.1 -24.6 17.4 -25.6
2025-11-24T20:22:03.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:22:03.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:22:03.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.764633
2025-11-24T20:22:03.721 [DEBUG] [Thread-196423] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:22:03.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:22:03.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:22:03.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:22:03.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:22:03.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:22:03.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:21:42', tmtdew=17.92, humidity=29.69, cloud=0.0, wind=28.2, temperature=17.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:21:42', seeing=0.55, atlas_timestamp='2025-11-24T18:21:04.291', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:22:03.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:22:03.849 [DEBUG] [Thread-196426] [transport.py] [_log()] starting thread (client mode): 0xd07cca60
2025-11-24T20:22:03.849 [DEBUG] [Thread-196426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:22:03.865 [DEBUG] [Thread-196426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:22:03.866 [INFO] [Thread-196426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] client lang: <none>
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] server lang: <none>
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] kex follows: False
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] Compression: none
2025-11-24T20:22:03.873 [DEBUG] [Thread-196426] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:22:03.932 [DEBUG] [Thread-196426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:22:03.932 [DEBUG] [Thread-196426] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:22:03.932 [DEBUG] [Thread-196426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:22:03.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:22:03.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:22:03.988 [DEBUG] [Thread-196426] [transport.py] [_log()] userauth is OK
2025-11-24T20:22:03.988 [DEBUG] [Thread-196426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:22:03.988 [DEBUG] [Thread-196426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:22:03.988 [DEBUG] [Thread-196426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:22:03.988 [DEBUG] [Thread-196426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:22:04.004 [INFO] [Thread-196426] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:22:04.004 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:22:04.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:22:04.911 [DEBUG] [Thread-196426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:22:04.912 [DEBUG] [Thread-196426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:22:04.960 [DEBUG] [Thread-196426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:22:04.960 [DEBUG] [Thread-196426] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:22:04.968 [DEBUG] [Thread-196426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:22:04.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:22:04.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-11-24T20:22:04.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-11-24T20:22:05.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:22:05.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:22:05.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:22:05.018 [DEBUG] [Thread-196426] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:22:11.721 [DEBUG] [Thread-196428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:22:16.009 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:22:16.011 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:22:26.984 [DEBUG] [Thread-196429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:22:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:22:35.058 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:22:35.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:22:37.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 22, 16), 17.96, 29.61, 0.0, 27.7, 17.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:22:37.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:22:16
2025-11-24T20:22:37.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:22:37.549 [DEBUG] [Thread-196430] [transport.py] [_log()] starting thread (client mode): 0xc9b83280
2025-11-24T20:22:37.550 [DEBUG] [Thread-196430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:22:37.554 [DEBUG] [Thread-196430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:22:37.554 [INFO] [Thread-196430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:22:37.561 [DEBUG] [Thread-196430] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:22:37.561 [DEBUG] [Thread-196430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:22:37.561 [DEBUG] [Thread-196430] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:22:37.561 [DEBUG] [Thread-196430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:22:37.561 [DEBUG] [Thread-196430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:22:37.561 [DEBUG] [Thread-196430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:22:37.561 [DEBUG] [Thread-196430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:22:37.562 [DEBUG] [Thread-196430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:22:37.562 [DEBUG] [Thread-196430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:22:37.562 [DEBUG] [Thread-196430] [transport.py] [_log()] client lang: <none>
2025-11-24T20:22:37.562 [DEBUG] [Thread-196430] [transport.py] [_log()] server lang: <none>
2025-11-24T20:22:37.562 [DEBUG] [Thread-196430] [transport.py] [_log()] kex follows: False
2025-11-24T20:22:37.562 [DEBUG] [Thread-196430] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:22:37.563 [DEBUG] [Thread-196430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:22:37.563 [DEBUG] [Thread-196430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:22:37.563 [DEBUG] [Thread-196430] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:22:37.563 [DEBUG] [Thread-196430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:22:37.563 [DEBUG] [Thread-196430] [transport.py] [_log()] Compression: none
2025-11-24T20:22:37.563 [DEBUG] [Thread-196430] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:22:37.656 [DEBUG] [Thread-196430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:22:37.665 [DEBUG] [Thread-196430] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:22:37.667 [DEBUG] [Thread-196430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:22:37.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:22:37.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:22:37.673 [DEBUG] [Thread-196430] [transport.py] [_log()] userauth is OK
2025-11-24T20:22:37.674 [DEBUG] [Thread-196430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:22:37.674 [DEBUG] [Thread-196430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:22:37.674 [DEBUG] [Thread-196430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:22:37.674 [DEBUG] [Thread-196430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:22:37.714 [INFO] [Thread-196430] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:22:37.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:22:38.351 [DEBUG] [Thread-196430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:22:38.351 [DEBUG] [Thread-196430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:22:38.352 [DEBUG] [Thread-196430] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:22:38.390 [DEBUG] [Thread-196430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:22:38.390 [DEBUG] [Thread-196430] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:22:38.393 [DEBUG] [Thread-196430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:22:38.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:22:38.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:22:38.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:22:38.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:22:38.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:22:38.415 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:22:38.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:22:38.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:22:38.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:22:38.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.764980 -999.00  +17.20  19.84     35   +1.70 1 1 1 1 1     1    0 13.98 -60.36 ZNESW 18.8 19.8 182.6 25.9 17.5 -26.3 17.4 -25.8 17.1 -24.7 17.4 -25.7
2025-11-24T20:22:38.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:22:38.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:22:38.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.764980
2025-11-24T20:22:38.426 [DEBUG] [Thread-196430] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:22:38.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:22:38.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:22:38.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:22:38.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:22:38.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:22:38.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:22:16', tmtdew=17.96, humidity=29.61, cloud=0.0, wind=27.7, temperature=17.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:22:17', seeing=0.67, atlas_timestamp='2025-11-24T18:21:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:22:38.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:22:38.552 [DEBUG] [Thread-196433] [transport.py] [_log()] starting thread (client mode): 0xd07cca00
2025-11-24T20:22:38.553 [DEBUG] [Thread-196433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:22:38.567 [DEBUG] [Thread-196433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:22:38.567 [INFO] [Thread-196433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:22:38.574 [DEBUG] [Thread-196433] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:22:38.574 [DEBUG] [Thread-196433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:22:38.574 [DEBUG] [Thread-196433] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:22:38.574 [DEBUG] [Thread-196433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:22:38.574 [DEBUG] [Thread-196433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:22:38.574 [DEBUG] [Thread-196433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] client lang: <none>
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] server lang: <none>
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] kex follows: False
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] Compression: none
2025-11-24T20:22:38.575 [DEBUG] [Thread-196433] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:22:38.636 [DEBUG] [Thread-196433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:22:38.636 [DEBUG] [Thread-196433] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:22:38.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:22:38.636 [DEBUG] [Thread-196433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:22:38.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:22:38.692 [DEBUG] [Thread-196433] [transport.py] [_log()] userauth is OK
2025-11-24T20:22:38.692 [DEBUG] [Thread-196433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:22:38.692 [DEBUG] [Thread-196433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:22:38.692 [DEBUG] [Thread-196433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:22:38.692 [DEBUG] [Thread-196433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:22:38.706 [INFO] [Thread-196433] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:22:38.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:22:38.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:22:39.561 [DEBUG] [Thread-196433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:22:39.562 [DEBUG] [Thread-196433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:22:39.609 [DEBUG] [Thread-196433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:22:39.609 [DEBUG] [Thread-196433] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:22:39.618 [DEBUG] [Thread-196433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:22:39.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:22:39.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-11-24T20:22:39.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-11-24T20:22:39.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:22:39.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:22:39.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:22:39.656 [DEBUG] [Thread-196433] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:22:42.153 [DEBUG] [Thread-196435 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:22:46.215 [DEBUG] [Thread-196436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:22:57.555 [DEBUG] [Thread-196437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:23:09.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:23:09.722 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:23:09.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-11-24T20:23:11.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 22, 51), 17.91, 29.61, 0.0, 23.89, 17.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:23:11.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:22:51
2025-11-24T20:23:12.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:23:12.224 [DEBUG] [Thread-196438] [transport.py] [_log()] starting thread (client mode): 0xc9b82bf0
2025-11-24T20:23:12.225 [DEBUG] [Thread-196438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:23:12.226 [DEBUG] [Thread-196438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:23:12.226 [INFO] [Thread-196438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] client lang: <none>
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] server lang: <none>
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] kex follows: False
2025-11-24T20:23:12.231 [DEBUG] [Thread-196438] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:23:12.232 [DEBUG] [Thread-196438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:23:12.232 [DEBUG] [Thread-196438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:23:12.232 [DEBUG] [Thread-196438] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:23:12.232 [DEBUG] [Thread-196438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:23:12.232 [DEBUG] [Thread-196438] [transport.py] [_log()] Compression: none
2025-11-24T20:23:12.232 [DEBUG] [Thread-196438] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:23:12.276 [DEBUG] [Thread-196438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:23:12.279 [DEBUG] [Thread-196438] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:23:12.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:23:12.281 [DEBUG] [Thread-196438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:23:12.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:23:12.288 [DEBUG] [Thread-196438] [transport.py] [_log()] userauth is OK
2025-11-24T20:23:12.288 [DEBUG] [Thread-196438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:23:12.288 [DEBUG] [Thread-196438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:23:12.288 [DEBUG] [Thread-196438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:23:12.288 [DEBUG] [Thread-196438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:23:12.308 [INFO] [Thread-196438] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:23:12.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:23:12.695 [DEBUG] [Thread-196440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:23:13.030 [DEBUG] [Thread-196438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:23:13.030 [DEBUG] [Thread-196438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:23:13.031 [DEBUG] [Thread-196438] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:23:13.071 [DEBUG] [Thread-196438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:23:13.071 [DEBUG] [Thread-196438] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:23:13.073 [DEBUG] [Thread-196438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:23:13.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:23:13.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:23:13.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:23:13.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:23:13.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:23:13.097 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:23:13.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:23:13.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:23:13.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:23:13.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.765674 -999.00  +17.10  14.21     35   +1.60 1 1 1 1 1     1    0 14.13 -63.83 ZNESW 17.6 14.2 176.4 25.7 17.4 -26.6 17.3 -26.0 17.1 -24.7 17.4 -25.9
2025-11-24T20:23:13.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:23:13.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:23:13.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.765674
2025-11-24T20:23:13.104 [DEBUG] [Thread-196438] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:23:13.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:23:13.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:23:13.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:23:13.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:23:13.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:23:13.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:22:51', tmtdew=17.91, humidity=29.61, cloud=0.0, wind=23.89, temperature=17.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:22:52', seeing=0.6, atlas_timestamp='2025-11-24T18:22:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:23:13.205 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:23:13.216 [DEBUG] [Thread-196442] [transport.py] [_log()] starting thread (client mode): 0xd0784c70
2025-11-24T20:23:13.216 [DEBUG] [Thread-196442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:23:13.232 [DEBUG] [Thread-196442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:23:13.232 [INFO] [Thread-196442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:23:13.239 [DEBUG] [Thread-196442] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] client lang: <none>
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] server lang: <none>
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] kex follows: False
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] Compression: none
2025-11-24T20:23:13.240 [DEBUG] [Thread-196442] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:23:13.295 [DEBUG] [Thread-196442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:23:13.295 [DEBUG] [Thread-196442] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:23:13.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:23:13.297 [DEBUG] [Thread-196442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:23:13.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:23:13.352 [DEBUG] [Thread-196442] [transport.py] [_log()] userauth is OK
2025-11-24T20:23:13.352 [DEBUG] [Thread-196442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:23:13.352 [DEBUG] [Thread-196442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:23:13.352 [DEBUG] [Thread-196442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:23:13.352 [DEBUG] [Thread-196442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:23:13.369 [INFO] [Thread-196442] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:23:13.369 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:23:13.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:23:14.199 [DEBUG] [Thread-196442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:23:14.199 [DEBUG] [Thread-196442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:23:14.247 [DEBUG] [Thread-196442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:23:14.247 [DEBUG] [Thread-196442] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:23:14.255 [DEBUG] [Thread-196442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:23:14.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:23:14.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:23:14.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-11-24T20:23:14.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:23:14.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:23:14.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:23:14.289 [DEBUG] [Thread-196442] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:23:16.212 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:23:16.213 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:23:27.963 [DEBUG] [Thread-196444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:23:43.318 [DEBUG] [Thread-196445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:23:44.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:23:44.295 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:23:44.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-11-24T20:23:46.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 23, 26), 17.87, 29.69, 0.0, 24.77, 17.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:23:46.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:23:26
2025-11-24T20:23:46.643 [DEBUG] [Thread-196446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:23:46.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:23:46.959 [DEBUG] [Thread-196447] [transport.py] [_log()] starting thread (client mode): 0xd0702ad0
2025-11-24T20:23:46.960 [DEBUG] [Thread-196447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:23:46.970 [DEBUG] [Thread-196447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:23:46.970 [INFO] [Thread-196447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] client lang: <none>
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] server lang: <none>
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] kex follows: False
2025-11-24T20:23:46.978 [DEBUG] [Thread-196447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:23:46.979 [DEBUG] [Thread-196447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:23:46.979 [DEBUG] [Thread-196447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:23:46.980 [DEBUG] [Thread-196447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:23:46.980 [DEBUG] [Thread-196447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:23:46.980 [DEBUG] [Thread-196447] [transport.py] [_log()] Compression: none
2025-11-24T20:23:46.980 [DEBUG] [Thread-196447] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:23:47.019 [DEBUG] [Thread-196447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:23:47.026 [DEBUG] [Thread-196447] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:23:47.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:23:47.030 [DEBUG] [Thread-196447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:23:47.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:23:47.034 [DEBUG] [Thread-196447] [transport.py] [_log()] userauth is OK
2025-11-24T20:23:47.035 [DEBUG] [Thread-196447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:23:47.035 [DEBUG] [Thread-196447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:23:47.035 [DEBUG] [Thread-196447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:23:47.035 [DEBUG] [Thread-196447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:23:47.066 [INFO] [Thread-196447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:23:47.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:23:47.701 [DEBUG] [Thread-196447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:23:47.701 [DEBUG] [Thread-196447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:23:47.705 [DEBUG] [Thread-196447] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:23:47.741 [DEBUG] [Thread-196447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:23:47.741 [DEBUG] [Thread-196447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:23:47.753 [DEBUG] [Thread-196447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:23:47.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:23:47.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:23:47.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:23:47.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:23:47.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:23:47.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:23:47.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:23:47.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:23:47.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:23:47.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.766022 -999.00  +17.10  20.83     35   +1.60 1 1 1 1 1     1    0 13.64 -64.18 ZNESW 18.8 20.8 185.6 29.5 17.4 -26.5 17.3 -26.0 17.0 -24.7 17.4 -25.9
2025-11-24T20:23:47.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:23:47.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:23:47.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.766022
2025-11-24T20:23:47.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:23:47.792 [DEBUG] [Thread-196447] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:23:47.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:23:47.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:23:47.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:23:47.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:23:47.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:23:26', tmtdew=17.87, humidity=29.69, cloud=0.0, wind=24.77, temperature=17.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:23:26', seeing=0.65, atlas_timestamp='2025-11-24T18:23:04.301', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:23:47.878 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:23:47.890 [DEBUG] [Thread-196450] [transport.py] [_log()] starting thread (client mode): 0xc9b83c40
2025-11-24T20:23:47.890 [DEBUG] [Thread-196450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:23:47.905 [DEBUG] [Thread-196450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:23:47.905 [INFO] [Thread-196450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] client lang: <none>
2025-11-24T20:23:47.913 [DEBUG] [Thread-196450] [transport.py] [_log()] server lang: <none>
2025-11-24T20:23:47.914 [DEBUG] [Thread-196450] [transport.py] [_log()] kex follows: False
2025-11-24T20:23:47.914 [DEBUG] [Thread-196450] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:23:47.914 [DEBUG] [Thread-196450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:23:47.914 [DEBUG] [Thread-196450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:23:47.914 [DEBUG] [Thread-196450] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:23:47.914 [DEBUG] [Thread-196450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:23:47.914 [DEBUG] [Thread-196450] [transport.py] [_log()] Compression: none
2025-11-24T20:23:47.914 [DEBUG] [Thread-196450] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:23:47.974 [DEBUG] [Thread-196450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:23:47.974 [DEBUG] [Thread-196450] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:23:47.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:23:47.976 [DEBUG] [Thread-196450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:23:47.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:23:48.032 [DEBUG] [Thread-196450] [transport.py] [_log()] userauth is OK
2025-11-24T20:23:48.032 [DEBUG] [Thread-196450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:23:48.032 [DEBUG] [Thread-196450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:23:48.033 [DEBUG] [Thread-196450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:23:48.033 [DEBUG] [Thread-196450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:23:48.048 [INFO] [Thread-196450] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:23:48.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:23:48.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:23:48.907 [DEBUG] [Thread-196450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:23:48.910 [DEBUG] [Thread-196450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:23:48.953 [DEBUG] [Thread-196450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:23:48.954 [DEBUG] [Thread-196450] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:23:48.963 [DEBUG] [Thread-196450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:23:48.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:23:48.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-11-24T20:23:48.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-11-24T20:23:48.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:23:48.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:23:48.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:23:49.001 [DEBUG] [Thread-196450] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:23:58.676 [DEBUG] [Thread-196452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:24:14.076 [DEBUG] [Thread-196453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:24:16.422 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:24:16.424 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:24:19.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:24:19.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:24:19.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-11-24T20:24:21.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 24, 1), 17.81, 29.81, 0.0, 30.7, 17.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:24:21.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:24:01
2025-11-24T20:24:21.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:24:21.704 [DEBUG] [Thread-196454] [transport.py] [_log()] starting thread (client mode): 0xc9b81690
2025-11-24T20:24:21.706 [DEBUG] [Thread-196454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:24:21.707 [DEBUG] [Thread-196454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:24:21.707 [INFO] [Thread-196454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:24:21.718 [DEBUG] [Thread-196454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:24:21.719 [DEBUG] [Thread-196454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:24:21.719 [DEBUG] [Thread-196454] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:24:21.719 [DEBUG] [Thread-196454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:24:21.719 [DEBUG] [Thread-196454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:24:21.719 [DEBUG] [Thread-196454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:24:21.719 [DEBUG] [Thread-196454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:24:21.719 [DEBUG] [Thread-196454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:24:21.719 [DEBUG] [Thread-196454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:24:21.720 [DEBUG] [Thread-196454] [transport.py] [_log()] client lang: <none>
2025-11-24T20:24:21.720 [DEBUG] [Thread-196454] [transport.py] [_log()] server lang: <none>
2025-11-24T20:24:21.720 [DEBUG] [Thread-196454] [transport.py] [_log()] kex follows: False
2025-11-24T20:24:21.720 [DEBUG] [Thread-196454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:24:21.721 [DEBUG] [Thread-196454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:24:21.721 [DEBUG] [Thread-196454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:24:21.721 [DEBUG] [Thread-196454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:24:21.722 [DEBUG] [Thread-196454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:24:21.722 [DEBUG] [Thread-196454] [transport.py] [_log()] Compression: none
2025-11-24T20:24:21.722 [DEBUG] [Thread-196454] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:24:21.761 [DEBUG] [Thread-196454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:24:21.768 [DEBUG] [Thread-196454] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:24:21.769 [DEBUG] [Thread-196454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:24:21.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:24:21.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:24:21.775 [DEBUG] [Thread-196454] [transport.py] [_log()] userauth is OK
2025-11-24T20:24:21.775 [DEBUG] [Thread-196454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:24:21.776 [DEBUG] [Thread-196454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:24:21.776 [DEBUG] [Thread-196454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:24:21.776 [DEBUG] [Thread-196454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:24:21.804 [INFO] [Thread-196454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:24:21.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:24:22.431 [DEBUG] [Thread-196454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:24:22.431 [DEBUG] [Thread-196454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:24:22.433 [DEBUG] [Thread-196454] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:24:22.472 [DEBUG] [Thread-196454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:24:22.472 [DEBUG] [Thread-196454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:24:22.475 [DEBUG] [Thread-196454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:24:22.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:24:22.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:24:22.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:24:22.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:24:22.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:24:22.502 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:24:22.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:24:22.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:24:22.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:24:22.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.766369 -999.00  +17.00  20.94     35   +1.60 1 1 1 1 1     0    0 13.89 -64.92 ZNESW 23.8 20.9 180.4 28.6 17.4 -26.5 17.2 -26.0 17.1 -24.7 17.4 -25.7
2025-11-24T20:24:22.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:24:22.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:24:22.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.766369
2025-11-24T20:24:22.510 [DEBUG] [Thread-196454] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:24:22.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:24:22.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:24:22.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:24:22.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:24:22.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:24:22.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:24:01', tmtdew=17.81, humidity=29.81, cloud=0.0, wind=30.7, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:24:01', seeing=0.72, atlas_timestamp='2025-11-24T18:23:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[1.9102499999999996, nan, nan, nan, 2.1375, nan, nan, nan, nan, nan, nan, nan, nan, 2.3142499999999995, nan, nan, nan, nan, nan, nan, nan, 1.029749999999999, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], zp_timestamp='2025-11-24T18:16:00')
2025-11-24T20:24:22.622 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:24:22.634 [DEBUG] [Thread-196457] [transport.py] [_log()] starting thread (client mode): 0xd317dff0
2025-11-24T20:24:22.634 [DEBUG] [Thread-196457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:24:22.649 [DEBUG] [Thread-196457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:24:22.649 [INFO] [Thread-196457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] client lang: <none>
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] server lang: <none>
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] kex follows: False
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] Compression: none
2025-11-24T20:24:22.657 [DEBUG] [Thread-196457] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:24:22.715 [DEBUG] [Thread-196457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:24:22.715 [DEBUG] [Thread-196457] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:24:22.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:24:22.716 [DEBUG] [Thread-196457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:24:22.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:24:22.772 [DEBUG] [Thread-196457] [transport.py] [_log()] userauth is OK
2025-11-24T20:24:22.772 [DEBUG] [Thread-196457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:24:22.772 [DEBUG] [Thread-196457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:24:22.772 [DEBUG] [Thread-196457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:24:22.772 [DEBUG] [Thread-196457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:24:22.786 [INFO] [Thread-196457] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:24:22.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:24:22.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:24:23.630 [DEBUG] [Thread-196457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:24:23.631 [DEBUG] [Thread-196457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:24:23.678 [DEBUG] [Thread-196457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:24:23.678 [DEBUG] [Thread-196457] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:24:23.686 [DEBUG] [Thread-196457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:24:23.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:24:23.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-11-24T20:24:23.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-11-24T20:24:23.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:24:23.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:24:23.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:24:23.732 [DEBUG] [Thread-196457] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:24:29.240 [DEBUG] [Thread-196459 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:24:44.510 [DEBUG] [Thread-196460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:24:47.326 [DEBUG] [Thread-196461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:24:53.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:24:53.774 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:24:53.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-11-24T20:24:56.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 24, 35), 17.78, 29.78, 0.0, 29.17, 17.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:24:56.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:24:35
2025-11-24T20:24:56.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:24:56.627 [DEBUG] [Thread-196462] [transport.py] [_log()] starting thread (client mode): 0xd0784b80
2025-11-24T20:24:56.628 [DEBUG] [Thread-196462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:24:56.638 [DEBUG] [Thread-196462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:24:56.638 [INFO] [Thread-196462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:24:56.649 [DEBUG] [Thread-196462] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:24:56.649 [DEBUG] [Thread-196462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] client lang: <none>
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] server lang: <none>
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] kex follows: False
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:24:56.650 [DEBUG] [Thread-196462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:24:56.651 [DEBUG] [Thread-196462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:24:56.651 [DEBUG] [Thread-196462] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:24:56.651 [DEBUG] [Thread-196462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:24:56.651 [DEBUG] [Thread-196462] [transport.py] [_log()] Compression: none
2025-11-24T20:24:56.651 [DEBUG] [Thread-196462] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:24:56.683 [DEBUG] [Thread-196462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:24:56.689 [DEBUG] [Thread-196462] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:24:56.692 [DEBUG] [Thread-196462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:24:56.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:24:56.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:24:56.697 [DEBUG] [Thread-196462] [transport.py] [_log()] userauth is OK
2025-11-24T20:24:56.697 [DEBUG] [Thread-196462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:24:56.697 [DEBUG] [Thread-196462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:24:56.697 [DEBUG] [Thread-196462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:24:56.697 [DEBUG] [Thread-196462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:24:56.711 [INFO] [Thread-196462] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:24:56.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:24:57.517 [DEBUG] [Thread-196462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:24:57.517 [DEBUG] [Thread-196462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:24:57.519 [DEBUG] [Thread-196462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:24:57.559 [DEBUG] [Thread-196462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:24:57.559 [DEBUG] [Thread-196462] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:24:57.563 [DEBUG] [Thread-196462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:24:57.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:24:57.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:24:57.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:24:57.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:24:57.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:24:57.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:24:57.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:24:57.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:24:57.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:24:57.594 [DEBUG] [Thread-196462] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:24:57.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.766716 -999.00  +17.10  26.19     35   +1.70 1 1 1 1 1     0    0 13.90 -65.12 ZNESW 26.8 26.2 188.0 32.8 17.4 -26.3 17.3 -25.8 17.1 -24.7 17.4 -25.9
2025-11-24T20:24:57.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:24:57.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:24:57.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.766716
2025-11-24T20:24:57.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:24:57.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:24:57.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:24:57.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:24:57.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:24:57.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:24:35', tmtdew=17.78, humidity=29.78, cloud=0.0, wind=29.17, temperature=17.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:24:35', seeing=0.75, atlas_timestamp='2025-11-24T18:24:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.03125, 0.04124999999999979, 0.006499999999999062, -0.03049999999999997, 0.11674999999999969, 0.03999999999999915, 0.06925000000000026, -0.06400000000000006, 0.04550000000000054, -0.011750000000001037, 0.061500000000000554, 0.09799999999999898, 0.14724999999999966, 0.07449999999999868, 0.0, 0.08174999999999955, 0.002000000000000668, 0.054999999999999716, -0.06375000000000064, 0.11599999999999966, 0.09324999999999761, 0.11075000000000124, 0.013249999999999318, 0.0600000000000005, 0.09149999999999991, 0.07424999999999926, 0.061500000000000554, 0.018000000000000682, 0.307500000000001, 0.15399999999999991, 0.034000000000000696, 0.10224999999999795], zp_timestamp='2025-11-24T18:21:00')
2025-11-24T20:24:57.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:24:57.730 [DEBUG] [Thread-196465] [transport.py] [_log()] starting thread (client mode): 0xd3136d40
2025-11-24T20:24:57.730 [DEBUG] [Thread-196465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:24:57.746 [DEBUG] [Thread-196465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:24:57.746 [INFO] [Thread-196465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:24:57.753 [DEBUG] [Thread-196465] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:24:57.753 [DEBUG] [Thread-196465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] client lang: <none>
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] server lang: <none>
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] kex follows: False
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:24:57.754 [DEBUG] [Thread-196465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:24:57.755 [DEBUG] [Thread-196465] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:24:57.755 [DEBUG] [Thread-196465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:24:57.755 [DEBUG] [Thread-196465] [transport.py] [_log()] Compression: none
2025-11-24T20:24:57.755 [DEBUG] [Thread-196465] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:24:57.817 [DEBUG] [Thread-196465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:24:57.817 [DEBUG] [Thread-196465] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:24:57.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:24:57.818 [DEBUG] [Thread-196465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:24:57.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:24:57.873 [DEBUG] [Thread-196465] [transport.py] [_log()] userauth is OK
2025-11-24T20:24:57.873 [DEBUG] [Thread-196465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:24:57.873 [DEBUG] [Thread-196465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:24:57.873 [DEBUG] [Thread-196465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:24:57.873 [DEBUG] [Thread-196465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:24:57.895 [INFO] [Thread-196465] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:24:57.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:24:57.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:24:58.743 [DEBUG] [Thread-196465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:24:58.743 [DEBUG] [Thread-196465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:24:58.790 [DEBUG] [Thread-196465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:24:58.790 [DEBUG] [Thread-196465] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:24:58.798 [DEBUG] [Thread-196465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:24:58.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:24:58.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-11-24T20:24:58.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:24:58.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:24:58.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:24:58.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:24:58.833 [DEBUG] [Thread-196465] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:24:59.032 [DEBUG] [Thread-195937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:24:59.670 [DEBUG] [Thread-196467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:25:06.372 [DEBUG] [Thread-195937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:25:15.095 [DEBUG] [Thread-196468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:25:16.627 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:25:16.629 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:25:28.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:25:28.886 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:25:29.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-11-24T20:25:30.277 [DEBUG] [Thread-196469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:25:31.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 25, 10), 17.79, 29.74, 0.0, 26.75, 17.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:25:31.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:25:10
2025-11-24T20:25:31.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:25:31.496 [DEBUG] [Thread-196470] [transport.py] [_log()] starting thread (client mode): 0xd3135690
2025-11-24T20:25:31.497 [DEBUG] [Thread-196470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:25:31.505 [DEBUG] [Thread-196470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:25:31.505 [INFO] [Thread-196470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:25:31.512 [DEBUG] [Thread-196470] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:25:31.512 [DEBUG] [Thread-196470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:25:31.512 [DEBUG] [Thread-196470] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:25:31.512 [DEBUG] [Thread-196470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:25:31.512 [DEBUG] [Thread-196470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:25:31.512 [DEBUG] [Thread-196470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:25:31.512 [DEBUG] [Thread-196470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:25:31.513 [DEBUG] [Thread-196470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:25:31.513 [DEBUG] [Thread-196470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:25:31.513 [DEBUG] [Thread-196470] [transport.py] [_log()] client lang: <none>
2025-11-24T20:25:31.513 [DEBUG] [Thread-196470] [transport.py] [_log()] server lang: <none>
2025-11-24T20:25:31.513 [DEBUG] [Thread-196470] [transport.py] [_log()] kex follows: False
2025-11-24T20:25:31.513 [DEBUG] [Thread-196470] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:25:31.513 [DEBUG] [Thread-196470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:25:31.514 [DEBUG] [Thread-196470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:25:31.514 [DEBUG] [Thread-196470] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:25:31.514 [DEBUG] [Thread-196470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:25:31.514 [DEBUG] [Thread-196470] [transport.py] [_log()] Compression: none
2025-11-24T20:25:31.514 [DEBUG] [Thread-196470] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:25:31.557 [DEBUG] [Thread-196470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:25:31.565 [DEBUG] [Thread-196470] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:25:31.567 [DEBUG] [Thread-196470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:25:31.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:25:31.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:25:31.574 [DEBUG] [Thread-196470] [transport.py] [_log()] userauth is OK
2025-11-24T20:25:31.574 [DEBUG] [Thread-196470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:25:31.574 [DEBUG] [Thread-196470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:25:31.574 [DEBUG] [Thread-196470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:25:31.575 [DEBUG] [Thread-196470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:25:31.600 [INFO] [Thread-196470] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:25:31.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:25:32.240 [DEBUG] [Thread-196470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:25:32.240 [DEBUG] [Thread-196470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:25:32.243 [DEBUG] [Thread-196470] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:25:32.281 [DEBUG] [Thread-196470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:25:32.281 [DEBUG] [Thread-196470] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:25:32.285 [DEBUG] [Thread-196470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:25:32.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:25:32.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:25:32.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:25:32.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:25:32.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:25:32.312 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:25:32.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:25:32.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:25:32.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:25:32.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.767063 -999.00  +17.10  22.28     35   +1.60 1 1 1 1 1     0    0 14.00 -61.80 ZNESW 21.1 22.3 176.6 29.5 17.4 -26.5 17.3 -25.9 17.0 -24.7 17.3 -25.7
2025-11-24T20:25:32.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:25:32.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:25:32.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.767063
2025-11-24T20:25:32.323 [DEBUG] [Thread-196470] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:25:32.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:25:32.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:25:32.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:25:32.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:25:32.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:25:32.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:25:10', tmtdew=17.79, humidity=29.74, cloud=0.0, wind=26.75, temperature=17.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:25:10', seeing=0.75, atlas_timestamp='2025-11-24T18:24:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.03125, 0.04124999999999979, 0.006499999999999062, -0.03049999999999997, 0.11674999999999969, 0.03999999999999915, 0.06925000000000026, -0.06400000000000006, 0.04550000000000054, -0.011750000000001037, 0.061500000000000554, 0.09799999999999898, 0.14724999999999966, 0.07449999999999868, 0.0, 0.08174999999999955, 0.002000000000000668, 0.054999999999999716, -0.06375000000000064, 0.11599999999999966, 0.09324999999999761, 0.11075000000000124, 0.013249999999999318, 0.0600000000000005, 0.09149999999999991, 0.07424999999999926, 0.061500000000000554, 0.018000000000000682, 0.307500000000001, 0.15399999999999991, 0.034000000000000696, 0.10224999999999795], zp_timestamp='2025-11-24T18:21:00')
2025-11-24T20:25:32.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:25:32.438 [DEBUG] [Thread-196473] [transport.py] [_log()] starting thread (client mode): 0xd0739960
2025-11-24T20:25:32.438 [DEBUG] [Thread-196473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:25:32.453 [DEBUG] [Thread-196473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:25:32.453 [INFO] [Thread-196473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:25:32.464 [DEBUG] [Thread-196473] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:25:32.464 [DEBUG] [Thread-196473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:25:32.464 [DEBUG] [Thread-196473] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:25:32.464 [DEBUG] [Thread-196473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:25:32.464 [DEBUG] [Thread-196473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:25:32.464 [DEBUG] [Thread-196473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] client lang: <none>
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] server lang: <none>
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] kex follows: False
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] Compression: none
2025-11-24T20:25:32.465 [DEBUG] [Thread-196473] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:25:32.524 [DEBUG] [Thread-196473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:25:32.524 [DEBUG] [Thread-196473] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:25:32.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:25:32.524 [DEBUG] [Thread-196473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:25:32.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:25:32.581 [DEBUG] [Thread-196473] [transport.py] [_log()] userauth is OK
2025-11-24T20:25:32.581 [DEBUG] [Thread-196473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:25:32.581 [DEBUG] [Thread-196473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:25:32.581 [DEBUG] [Thread-196473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:25:32.581 [DEBUG] [Thread-196473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:25:32.596 [INFO] [Thread-196473] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:25:32.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:25:32.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:25:33.415 [DEBUG] [Thread-196473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:25:33.415 [DEBUG] [Thread-196473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:25:33.463 [DEBUG] [Thread-196473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:25:33.463 [DEBUG] [Thread-196473] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:25:33.472 [DEBUG] [Thread-196473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:25:33.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:25:33.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-11-24T20:25:33.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-11-24T20:25:33.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:25:33.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:25:33.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:25:33.509 [DEBUG] [Thread-196473] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:25:45.470 [DEBUG] [Thread-196475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:25:47.905 [DEBUG] [Thread-196476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:25:57.887 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:00.904 [DEBUG] [Thread-196477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:01.055 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:03.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:26:03.534 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:26:03.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-11-24T20:26:05.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 25, 44), 17.8, 29.74, 0.0, 28.99, 17.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:26:05.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:25:44
2025-11-24T20:26:06.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:26:06.136 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:06.274 [DEBUG] [Thread-196478] [transport.py] [_log()] starting thread (client mode): 0xd07398a0
2025-11-24T20:26:06.275 [DEBUG] [Thread-196478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:26:06.276 [DEBUG] [Thread-196478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:26:06.276 [INFO] [Thread-196478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] client lang: <none>
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] server lang: <none>
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] kex follows: False
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:26:06.282 [DEBUG] [Thread-196478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:26:06.283 [DEBUG] [Thread-196478] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:26:06.283 [DEBUG] [Thread-196478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:26:06.283 [DEBUG] [Thread-196478] [transport.py] [_log()] Compression: none
2025-11-24T20:26:06.283 [DEBUG] [Thread-196478] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:26:06.318 [DEBUG] [Thread-196478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:26:06.325 [DEBUG] [Thread-196478] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:26:06.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:26:06.328 [DEBUG] [Thread-196478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:26:06.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:26:06.331 [DEBUG] [Thread-196478] [transport.py] [_log()] userauth is OK
2025-11-24T20:26:06.331 [DEBUG] [Thread-196478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:26:06.331 [DEBUG] [Thread-196478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:26:06.331 [DEBUG] [Thread-196478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:26:06.331 [DEBUG] [Thread-196478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:26:06.361 [INFO] [Thread-196478] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:26:06.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:26:06.992 [DEBUG] [Thread-196478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:26:06.992 [DEBUG] [Thread-196478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:26:06.993 [DEBUG] [Thread-196478] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:26:07.033 [DEBUG] [Thread-196478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:26:07.033 [DEBUG] [Thread-196478] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:26:07.035 [DEBUG] [Thread-196478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:26:07.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:26:07.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:26:07.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:26:07.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:26:07.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:26:07.057 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:26:07.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:26:07.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:26:07.058 [DEBUG] [Thread-196478] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:26:07.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:26:07.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.767410 -999.00  +17.10  23.36     35   +1.70 1 1 1 1 1     0    0 14.11 -56.25 ZNESW 28.5 23.4 181.0 32.5 17.3 -26.4 17.2 -25.8 17.0 -24.7 17.3 -25.6
2025-11-24T20:26:07.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:26:07.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:26:07.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.767410
2025-11-24T20:26:07.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:26:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:26:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:26:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:26:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:26:07.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:25:44', tmtdew=17.8, humidity=29.74, cloud=0.0, wind=28.99, temperature=17.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:25:45', seeing=0.73, atlas_timestamp='2025-11-24T18:25:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.03125, 0.04124999999999979, 0.006499999999999062, -0.03049999999999997, 0.11674999999999969, 0.03999999999999915, 0.06925000000000026, -0.06400000000000006, 0.04550000000000054, -0.011750000000001037, 0.061500000000000554, 0.09799999999999898, 0.14724999999999966, 0.07449999999999868, 0.0, 0.08174999999999955, 0.002000000000000668, 0.054999999999999716, -0.06375000000000064, 0.11599999999999966, 0.09324999999999761, 0.11075000000000124, 0.013249999999999318, 0.0600000000000005, 0.09149999999999991, 0.07424999999999926, 0.061500000000000554, 0.018000000000000682, 0.307500000000001, 0.15399999999999991, 0.034000000000000696, 0.10224999999999795], zp_timestamp='2025-11-24T18:21:00')
2025-11-24T20:26:07.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:26:07.181 [DEBUG] [Thread-196481] [transport.py] [_log()] starting thread (client mode): 0xd073b0d0
2025-11-24T20:26:07.182 [DEBUG] [Thread-196481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:26:07.196 [DEBUG] [Thread-196481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:26:07.196 [INFO] [Thread-196481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] client lang: <none>
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] server lang: <none>
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] kex follows: False
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:26:07.204 [DEBUG] [Thread-196481] [transport.py] [_log()] Compression: none
2025-11-24T20:26:07.205 [DEBUG] [Thread-196481] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:26:07.261 [DEBUG] [Thread-196481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:26:07.262 [DEBUG] [Thread-196481] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:26:07.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:26:07.263 [DEBUG] [Thread-196481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:26:07.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:26:07.323 [DEBUG] [Thread-196481] [transport.py] [_log()] userauth is OK
2025-11-24T20:26:07.323 [DEBUG] [Thread-196481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:26:07.323 [DEBUG] [Thread-196481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:26:07.323 [DEBUG] [Thread-196481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:26:07.323 [DEBUG] [Thread-196481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:26:07.342 [INFO] [Thread-196481] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:26:07.342 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:26:07.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:26:08.210 [DEBUG] [Thread-196481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:26:08.210 [DEBUG] [Thread-196481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:26:08.256 [DEBUG] [Thread-196481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:26:08.256 [DEBUG] [Thread-196481] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:26:08.265 [DEBUG] [Thread-196481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:26:08.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:26:08.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-11-24T20:26:08.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-11-24T20:26:08.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:26:08.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:26:08.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:26:08.299 [DEBUG] [Thread-196481] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:26:12.603 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:16.061 [DEBUG] [Thread-196483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:16.832 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:16.834 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:31.348 [DEBUG] [Thread-196484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:32.069 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:36.573 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:38.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:26:38.326 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:26:38.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-11-24T20:26:40.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 26, 19), 17.78, 29.78, 0.0, 29.29, 17.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:26:40.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:26:19
2025-11-24T20:26:40.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:26:41.078 [DEBUG] [Thread-196485] [transport.py] [_log()] starting thread (client mode): 0xd07cc8b0
2025-11-24T20:26:41.079 [DEBUG] [Thread-196485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:26:41.080 [DEBUG] [Thread-196485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:26:41.080 [INFO] [Thread-196485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] client lang: <none>
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] server lang: <none>
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] kex follows: False
2025-11-24T20:26:41.088 [DEBUG] [Thread-196485] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:26:41.089 [DEBUG] [Thread-196485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:26:41.089 [DEBUG] [Thread-196485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:26:41.089 [DEBUG] [Thread-196485] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:26:41.089 [DEBUG] [Thread-196485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:26:41.089 [DEBUG] [Thread-196485] [transport.py] [_log()] Compression: none
2025-11-24T20:26:41.089 [DEBUG] [Thread-196485] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:26:41.130 [DEBUG] [Thread-196485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:26:41.138 [DEBUG] [Thread-196485] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:26:41.140 [DEBUG] [Thread-196485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:26:41.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:26:41.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:26:41.145 [DEBUG] [Thread-196485] [transport.py] [_log()] userauth is OK
2025-11-24T20:26:41.145 [DEBUG] [Thread-196485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:26:41.145 [DEBUG] [Thread-196485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:26:41.145 [DEBUG] [Thread-196485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:26:41.146 [DEBUG] [Thread-196485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:26:41.167 [INFO] [Thread-196485] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:26:41.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:26:41.842 [DEBUG] [Thread-196485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:26:41.843 [DEBUG] [Thread-196485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:26:41.844 [DEBUG] [Thread-196485] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:26:41.883 [DEBUG] [Thread-196485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:26:41.883 [DEBUG] [Thread-196485] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:26:41.885 [DEBUG] [Thread-196485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:26:41.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:26:41.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:26:41.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:26:41.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:26:41.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:26:41.908 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:26:41.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:26:41.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:26:41.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:26:41.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.767758 -999.00  +17.10  25.08     35   +1.70 1 1 1 1 1     0    0 14.15 -54.34 ZNESW 22.8 25.1 181.2 34.2 17.4 -26.3 17.2 -25.7 17.0 -24.6 17.4 -25.5
2025-11-24T20:26:41.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:26:41.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:26:41.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.767758
2025-11-24T20:26:41.918 [DEBUG] [Thread-196485] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:26:41.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:26:41.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:26:41.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:26:41.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:26:41.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:26:41.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:26:19', tmtdew=17.78, humidity=29.78, cloud=0.0, wind=29.29, temperature=17.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:26:20', seeing=0.77, atlas_timestamp='2025-11-24T18:25:34.291', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.03125, 0.04124999999999979, 0.006499999999999062, -0.03049999999999997, 0.11674999999999969, 0.03999999999999915, 0.06925000000000026, -0.06400000000000006, 0.04550000000000054, -0.011750000000001037, 0.061500000000000554, 0.09799999999999898, 0.14724999999999966, 0.07449999999999868, 0.0, 0.08174999999999955, 0.002000000000000668, 0.054999999999999716, -0.06375000000000064, 0.11599999999999966, 0.09324999999999761, 0.11075000000000124, 0.013249999999999318, 0.0600000000000005, 0.09149999999999991, 0.07424999999999926, 0.061500000000000554, 0.018000000000000682, 0.307500000000001, 0.15399999999999991, 0.034000000000000696, 0.10224999999999795], zp_timestamp='2025-11-24T18:21:00')
2025-11-24T20:26:42.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:26:42.030 [DEBUG] [Thread-196488] [transport.py] [_log()] starting thread (client mode): 0xd0785a20
2025-11-24T20:26:42.031 [DEBUG] [Thread-196488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:26:42.045 [DEBUG] [Thread-196488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:26:42.045 [INFO] [Thread-196488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:26:42.053 [DEBUG] [Thread-196488] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:26:42.053 [DEBUG] [Thread-196488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:26:42.053 [DEBUG] [Thread-196488] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:26:42.053 [DEBUG] [Thread-196488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:26:42.053 [DEBUG] [Thread-196488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] client lang: <none>
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] server lang: <none>
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] kex follows: False
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] Compression: none
2025-11-24T20:26:42.054 [DEBUG] [Thread-196488] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:26:42.116 [DEBUG] [Thread-196488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:26:42.116 [DEBUG] [Thread-196488] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:26:42.116 [DEBUG] [Thread-196488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:26:42.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:26:42.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:26:42.173 [DEBUG] [Thread-196488] [transport.py] [_log()] userauth is OK
2025-11-24T20:26:42.173 [DEBUG] [Thread-196488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:26:42.173 [DEBUG] [Thread-196488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:26:42.173 [DEBUG] [Thread-196488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:26:42.173 [DEBUG] [Thread-196488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:26:42.191 [INFO] [Thread-196488] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:26:42.192 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:26:42.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:26:43.028 [DEBUG] [Thread-196488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:26:43.029 [DEBUG] [Thread-196488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:26:43.076 [DEBUG] [Thread-196488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:26:43.076 [DEBUG] [Thread-196488] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:26:43.084 [DEBUG] [Thread-196488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:26:43.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:26:43.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:26:43.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-11-24T20:26:43.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:26:43.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:26:43.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:26:43.121 [DEBUG] [Thread-196488] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:26:46.519 [DEBUG] [Thread-196490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:48.355 [DEBUG] [Thread-196491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:26:55.863 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:00.361 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:01.807 [DEBUG] [Thread-196492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:06.991 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:11.562 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:13.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:27:13.148 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:27:13.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-11-24T20:27:15.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 26, 54), 17.77, 29.79, 0.0, 30.45, 17.18, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:27:15.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:26:54
2025-11-24T20:27:15.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:27:15.863 [DEBUG] [Thread-196493] [transport.py] [_log()] starting thread (client mode): 0xd0785420
2025-11-24T20:27:15.865 [DEBUG] [Thread-196493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:27:15.872 [DEBUG] [Thread-196493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:27:15.872 [INFO] [Thread-196493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:27:15.879 [DEBUG] [Thread-196493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:27:15.879 [DEBUG] [Thread-196493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:27:15.879 [DEBUG] [Thread-196493] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:27:15.879 [DEBUG] [Thread-196493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:27:15.879 [DEBUG] [Thread-196493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:27:15.879 [DEBUG] [Thread-196493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:27:15.879 [DEBUG] [Thread-196493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:27:15.880 [DEBUG] [Thread-196493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:27:15.880 [DEBUG] [Thread-196493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:27:15.880 [DEBUG] [Thread-196493] [transport.py] [_log()] client lang: <none>
2025-11-24T20:27:15.880 [DEBUG] [Thread-196493] [transport.py] [_log()] server lang: <none>
2025-11-24T20:27:15.880 [DEBUG] [Thread-196493] [transport.py] [_log()] kex follows: False
2025-11-24T20:27:15.880 [DEBUG] [Thread-196493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:27:15.880 [DEBUG] [Thread-196493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:27:15.881 [DEBUG] [Thread-196493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:27:15.881 [DEBUG] [Thread-196493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:27:15.881 [DEBUG] [Thread-196493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:27:15.881 [DEBUG] [Thread-196493] [transport.py] [_log()] Compression: none
2025-11-24T20:27:15.881 [DEBUG] [Thread-196493] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:27:15.915 [DEBUG] [Thread-196493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:27:15.922 [DEBUG] [Thread-196493] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:27:15.925 [DEBUG] [Thread-196493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:27:15.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:27:15.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:27:15.931 [DEBUG] [Thread-196493] [transport.py] [_log()] userauth is OK
2025-11-24T20:27:15.931 [DEBUG] [Thread-196493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:27:15.932 [DEBUG] [Thread-196493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:27:15.932 [DEBUG] [Thread-196493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:27:15.932 [DEBUG] [Thread-196493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:27:15.962 [INFO] [Thread-196493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:27:15.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:27:16.565 [DEBUG] [Thread-196493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:27:16.565 [DEBUG] [Thread-196493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:27:16.567 [DEBUG] [Thread-196493] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:27:16.606 [DEBUG] [Thread-196493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:27:16.606 [DEBUG] [Thread-196493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:27:16.612 [DEBUG] [Thread-196493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:27:16.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:27:16.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:27:16.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:27:16.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:27:16.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:27:16.634 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:27:16.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:27:16.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:27:16.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:27:16.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.768452 -999.00  +17.10  21.52     35   +1.70 1 1 1 1 1     0    0 14.12 -53.08 ZNESW 17.7 21.5 178.4 26.6 17.3 -26.4 17.2 -25.8 17.0 -24.7 17.3 -25.6
2025-11-24T20:27:16.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:27:16.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:27:16.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.768452
2025-11-24T20:27:16.641 [DEBUG] [Thread-196493] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:27:16.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:27:16.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:27:16.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:27:16.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:27:16.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:27:16.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:26:54', tmtdew=17.77, humidity=29.79, cloud=0.0, wind=30.45, temperature=17.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:26:54', seeing=0.64, atlas_timestamp='2025-11-24T18:26:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, 0.03125, 0.04124999999999979, 0.006499999999999062, -0.03049999999999997, 0.11674999999999969, 0.03999999999999915, 0.06925000000000026, -0.06400000000000006, 0.04550000000000054, -0.011750000000001037, 0.061500000000000554, 0.09799999999999898, 0.14724999999999966, 0.07449999999999868, 0.0, 0.08174999999999955, 0.002000000000000668, 0.054999999999999716, -0.06375000000000064, 0.11599999999999966, 0.09324999999999761, 0.11075000000000124, 0.013249999999999318, 0.0600000000000005, 0.09149999999999991, 0.07424999999999926, 0.061500000000000554, 0.018000000000000682, 0.307500000000001, 0.15399999999999991, 0.034000000000000696, 0.10224999999999795], zp_timestamp='2025-11-24T18:21:00')
2025-11-24T20:27:16.746 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:27:16.760 [DEBUG] [Thread-196496] [transport.py] [_log()] starting thread (client mode): 0xd07866e0
2025-11-24T20:27:16.760 [DEBUG] [Thread-196496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:27:16.775 [DEBUG] [Thread-196496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:27:16.775 [INFO] [Thread-196496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] client lang: <none>
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] server lang: <none>
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] kex follows: False
2025-11-24T20:27:16.783 [DEBUG] [Thread-196496] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:27:16.784 [DEBUG] [Thread-196496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:27:16.784 [DEBUG] [Thread-196496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:27:16.784 [DEBUG] [Thread-196496] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:27:16.784 [DEBUG] [Thread-196496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:27:16.784 [DEBUG] [Thread-196496] [transport.py] [_log()] Compression: none
2025-11-24T20:27:16.784 [DEBUG] [Thread-196496] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:27:16.839 [DEBUG] [Thread-196496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:27:16.839 [DEBUG] [Thread-196496] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:27:16.839 [DEBUG] [Thread-196496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:27:16.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:27:16.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:27:16.896 [DEBUG] [Thread-196496] [transport.py] [_log()] userauth is OK
2025-11-24T20:27:16.897 [DEBUG] [Thread-196496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:27:16.897 [DEBUG] [Thread-196496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:27:16.897 [DEBUG] [Thread-196496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:27:16.897 [DEBUG] [Thread-196496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:27:16.911 [INFO] [Thread-196496] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:27:16.912 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:27:16.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:27:16.936 [DEBUG] [Thread-196498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:17.037 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:17.038 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:17.775 [DEBUG] [Thread-196496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:27:17.775 [DEBUG] [Thread-196496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:27:17.824 [DEBUG] [Thread-196496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:27:17.824 [DEBUG] [Thread-196496] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:27:17.832 [DEBUG] [Thread-196496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:27:17.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:27:17.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:27:17.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:27:17.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:27:17.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:27:17.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:27:17.867 [DEBUG] [Thread-196496] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:27:32.369 [DEBUG] [Thread-196499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:47.576 [DEBUG] [Thread-196500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:47.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:27:47.879 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:27:47.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-11-24T20:27:48.796 [DEBUG] [Thread-196501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:27:49.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 27, 28), 17.77, 29.79, 0.0, 28.62, 17.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:27:49.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:27:28
2025-11-24T20:27:49.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:27:50.108 [DEBUG] [Thread-196502] [transport.py] [_log()] starting thread (client mode): 0xd0711b70
2025-11-24T20:27:50.109 [DEBUG] [Thread-196502] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:27:50.117 [DEBUG] [Thread-196502] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:27:50.117 [INFO] [Thread-196502] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:27:50.123 [DEBUG] [Thread-196502] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] client lang: <none>
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] server lang: <none>
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] kex follows: False
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:27:50.124 [DEBUG] [Thread-196502] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:27:50.125 [DEBUG] [Thread-196502] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:27:50.125 [DEBUG] [Thread-196502] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:27:50.125 [DEBUG] [Thread-196502] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:27:50.125 [DEBUG] [Thread-196502] [transport.py] [_log()] Compression: none
2025-11-24T20:27:50.125 [DEBUG] [Thread-196502] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:27:50.162 [DEBUG] [Thread-196502] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:27:50.167 [DEBUG] [Thread-196502] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:27:50.168 [DEBUG] [Thread-196502] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:27:50.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:27:50.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:27:50.172 [DEBUG] [Thread-196502] [transport.py] [_log()] userauth is OK
2025-11-24T20:27:50.172 [DEBUG] [Thread-196502] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:27:50.173 [DEBUG] [Thread-196502] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:27:50.173 [DEBUG] [Thread-196502] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:27:50.173 [DEBUG] [Thread-196502] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:27:50.191 [INFO] [Thread-196502] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:27:50.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:27:50.828 [DEBUG] [Thread-196502] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:27:50.828 [DEBUG] [Thread-196502] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:27:50.829 [DEBUG] [Thread-196502] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:27:50.869 [DEBUG] [Thread-196502] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:27:50.869 [DEBUG] [Thread-196502] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:27:50.872 [DEBUG] [Thread-196502] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:27:50.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:27:50.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:27:50.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:27:50.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:27:50.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:27:50.890 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:27:50.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:27:50.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:27:50.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:27:50.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.768799 -999.00  +17.10  22.94     35   +1.70 1 1 1 1 1     0    0 14.28 -50.17 ZNESW 23.9 22.9 181.2 29.1 17.3 -26.4 17.2 -25.9 17.0 -24.6 17.2 -25.7
2025-11-24T20:27:50.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:27:50.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:27:50.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.768799
2025-11-24T20:27:50.897 [DEBUG] [Thread-196502] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:27:50.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:27:50.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:27:50.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:27:50.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:27:50.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:27:50.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:27:28', tmtdew=17.77, humidity=29.79, cloud=0.0, wind=28.62, temperature=17.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:27:29', seeing=0.8, atlas_timestamp='2025-11-24T18:27:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.011749999999999261, 0.015249999999999986, -0.05250000000000021, -0.12300000000000111, 0.06325000000000003, -0.027000000000001023, 0.03125, -0.016500000000000625, 0.028999999999999915, -0.024750000000000938, 0.04100000000000037, 0.054999999999999716, 0.14724999999999966, 0.010999999999999233, 0.0030000000000001137, 0.006750000000000256, -0.05550000000000033, 0.04899999999999949, -0.003750000000000142, 0.09899999999999842, 0.0857499999999991, -0.020749999999999602, 0.004250000000000753, 0.01699999999999946, 0.07699999999999996, 0.0547500000000003, 0.0625, 0.0030000000000001137, 0.27000000000000135, 0.11350000000000193, 0.013500000000000512, 0.04374999999999929], zp_timestamp='2025-11-24T18:26:00')
2025-11-24T20:27:50.994 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:27:51.005 [DEBUG] [Thread-196505] [transport.py] [_log()] starting thread (client mode): 0xd0711ed0
2025-11-24T20:27:51.005 [DEBUG] [Thread-196505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:27:51.021 [DEBUG] [Thread-196505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:27:51.021 [INFO] [Thread-196505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] client lang: <none>
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] server lang: <none>
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] kex follows: False
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:27:51.028 [DEBUG] [Thread-196505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:27:51.029 [DEBUG] [Thread-196505] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:27:51.029 [DEBUG] [Thread-196505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:27:51.029 [DEBUG] [Thread-196505] [transport.py] [_log()] Compression: none
2025-11-24T20:27:51.029 [DEBUG] [Thread-196505] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:27:51.084 [DEBUG] [Thread-196505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:27:51.084 [DEBUG] [Thread-196505] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:27:51.084 [DEBUG] [Thread-196505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:27:51.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:27:51.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:27:51.141 [DEBUG] [Thread-196505] [transport.py] [_log()] userauth is OK
2025-11-24T20:27:51.141 [DEBUG] [Thread-196505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:27:51.141 [DEBUG] [Thread-196505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:27:51.141 [DEBUG] [Thread-196505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:27:51.141 [DEBUG] [Thread-196505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:27:51.155 [INFO] [Thread-196505] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:27:51.155 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:27:51.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:27:52.022 [DEBUG] [Thread-196505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:27:52.022 [DEBUG] [Thread-196505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:27:52.070 [DEBUG] [Thread-196505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:27:52.070 [DEBUG] [Thread-196505] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:27:52.078 [DEBUG] [Thread-196505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:27:52.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:27:52.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-11-24T20:27:52.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-11-24T20:27:52.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:27:52.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:27:52.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:27:52.112 [DEBUG] [Thread-196505] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:28:02.741 [DEBUG] [Thread-196507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:28:17.272 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:28:17.298 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:28:17.477 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:28:17.972 [DEBUG] [Thread-196508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:28:21.614 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:28:22.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:28:22.169 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:28:22.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-11-24T20:28:24.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 28, 3), 17.78, 29.76, 0.0, 28.41, 17.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:28:24.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:28:03
2025-11-24T20:28:24.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:28:24.519 [DEBUG] [Thread-196509] [transport.py] [_log()] starting thread (client mode): 0xd0712770
2025-11-24T20:28:24.520 [DEBUG] [Thread-196509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:28:24.522 [DEBUG] [Thread-196509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:28:24.522 [INFO] [Thread-196509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:28:24.529 [DEBUG] [Thread-196509] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] client lang: <none>
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] server lang: <none>
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] kex follows: False
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:28:24.530 [DEBUG] [Thread-196509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:28:24.531 [DEBUG] [Thread-196509] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:28:24.531 [DEBUG] [Thread-196509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:28:24.531 [DEBUG] [Thread-196509] [transport.py] [_log()] Compression: none
2025-11-24T20:28:24.531 [DEBUG] [Thread-196509] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:28:24.576 [DEBUG] [Thread-196509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:28:24.582 [DEBUG] [Thread-196509] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:28:24.583 [DEBUG] [Thread-196509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:28:24.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:28:24.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:28:24.587 [DEBUG] [Thread-196509] [transport.py] [_log()] userauth is OK
2025-11-24T20:28:24.589 [DEBUG] [Thread-196509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:28:24.590 [DEBUG] [Thread-196509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:28:24.590 [DEBUG] [Thread-196509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:28:24.590 [DEBUG] [Thread-196509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:28:24.622 [INFO] [Thread-196509] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:28:24.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:28:25.234 [DEBUG] [Thread-196509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:28:25.234 [DEBUG] [Thread-196509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:28:25.235 [DEBUG] [Thread-196509] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:28:25.275 [DEBUG] [Thread-196509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:28:25.275 [DEBUG] [Thread-196509] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:28:25.278 [DEBUG] [Thread-196509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:28:25.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:28:25.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:28:25.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:28:25.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:28:25.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:28:25.301 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:28:25.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:28:25.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:28:25.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:28:25.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.769147 -999.00  +17.10  15.57     35   +1.70 1 1 1 1 1     0    0 14.15 -52.59 ZNESW 16.4 15.6 167.7 23.0 17.3 -26.3 17.2 -25.9 17.0 -24.7 17.2 -25.8
2025-11-24T20:28:25.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:28:25.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:28:25.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.769147
2025-11-24T20:28:25.308 [DEBUG] [Thread-196509] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:28:25.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:28:25.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:28:25.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:28:25.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:28:25.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:28:25.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:28:03', tmtdew=17.78, humidity=29.76, cloud=0.0, wind=28.41, temperature=17.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:28:04', seeing=0.78, atlas_timestamp='2025-11-24T18:27:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.011749999999999261, 0.015249999999999986, -0.05250000000000021, -0.12300000000000111, 0.06325000000000003, -0.027000000000001023, 0.03125, -0.016500000000000625, 0.028999999999999915, -0.024750000000000938, 0.04100000000000037, 0.054999999999999716, 0.14724999999999966, 0.010999999999999233, 0.0030000000000001137, 0.006750000000000256, -0.05550000000000033, 0.04899999999999949, -0.003750000000000142, 0.09899999999999842, 0.0857499999999991, -0.020749999999999602, 0.004250000000000753, 0.01699999999999946, 0.07699999999999996, 0.0547500000000003, 0.0625, 0.0030000000000001137, 0.27000000000000135, 0.11350000000000193, 0.013500000000000512, 0.04374999999999929], zp_timestamp='2025-11-24T18:26:00')
2025-11-24T20:28:25.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:28:25.434 [DEBUG] [Thread-196512] [transport.py] [_log()] starting thread (client mode): 0xd0711540
2025-11-24T20:28:25.434 [DEBUG] [Thread-196512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:28:25.448 [DEBUG] [Thread-196512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:28:25.449 [INFO] [Thread-196512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] client lang: <none>
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] server lang: <none>
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] kex follows: False
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:28:25.456 [DEBUG] [Thread-196512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:28:25.457 [DEBUG] [Thread-196512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:28:25.457 [DEBUG] [Thread-196512] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:28:25.457 [DEBUG] [Thread-196512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:28:25.457 [DEBUG] [Thread-196512] [transport.py] [_log()] Compression: none
2025-11-24T20:28:25.457 [DEBUG] [Thread-196512] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:28:25.512 [DEBUG] [Thread-196512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:28:25.513 [DEBUG] [Thread-196512] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:28:25.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:28:25.513 [DEBUG] [Thread-196512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:28:25.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:28:25.569 [DEBUG] [Thread-196512] [transport.py] [_log()] userauth is OK
2025-11-24T20:28:25.569 [DEBUG] [Thread-196512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:28:25.569 [DEBUG] [Thread-196512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:28:25.569 [DEBUG] [Thread-196512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:28:25.569 [DEBUG] [Thread-196512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:28:25.587 [INFO] [Thread-196512] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:28:25.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:28:25.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:28:26.409 [DEBUG] [Thread-196512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:28:26.410 [DEBUG] [Thread-196512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:28:26.457 [DEBUG] [Thread-196512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:28:26.457 [DEBUG] [Thread-196512] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:28:26.466 [DEBUG] [Thread-196512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:28:26.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:28:26.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-11-24T20:28:26.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-11-24T20:28:26.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:28:26.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:28:26.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:28:26.502 [DEBUG] [Thread-196512] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:28:33.118 [DEBUG] [Thread-196514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:28:48.416 [DEBUG] [Thread-196515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:28:49.227 [DEBUG] [Thread-196516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:28:56.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:28:56.560 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:28:56.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:28:59.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 28, 37), 17.7, 29.81, 0.0, 26.13, 17.06, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:28:59.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:28:37
2025-11-24T20:28:59.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:28:59.458 [DEBUG] [Thread-196517] [transport.py] [_log()] starting thread (client mode): 0xd3134910
2025-11-24T20:28:59.459 [DEBUG] [Thread-196517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:28:59.459 [DEBUG] [Thread-196517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:28:59.460 [INFO] [Thread-196517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] client lang: <none>
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] server lang: <none>
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] kex follows: False
2025-11-24T20:28:59.465 [DEBUG] [Thread-196517] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:28:59.466 [DEBUG] [Thread-196517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:28:59.466 [DEBUG] [Thread-196517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:28:59.466 [DEBUG] [Thread-196517] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:28:59.466 [DEBUG] [Thread-196517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:28:59.466 [DEBUG] [Thread-196517] [transport.py] [_log()] Compression: none
2025-11-24T20:28:59.466 [DEBUG] [Thread-196517] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:28:59.504 [DEBUG] [Thread-196517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:28:59.510 [DEBUG] [Thread-196517] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:28:59.511 [DEBUG] [Thread-196517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:28:59.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:28:59.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:28:59.516 [DEBUG] [Thread-196517] [transport.py] [_log()] userauth is OK
2025-11-24T20:28:59.516 [DEBUG] [Thread-196517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:28:59.516 [DEBUG] [Thread-196517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:28:59.516 [DEBUG] [Thread-196517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:28:59.516 [DEBUG] [Thread-196517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:28:59.539 [INFO] [Thread-196517] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:28:59.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:29:00.143 [DEBUG] [Thread-196517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:29:00.143 [DEBUG] [Thread-196517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:29:00.146 [DEBUG] [Thread-196517] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:29:00.184 [DEBUG] [Thread-196517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:29:00.184 [DEBUG] [Thread-196517] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:29:00.187 [DEBUG] [Thread-196517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:29:00.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:29:00.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:29:00.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:29:00.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:29:00.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:29:00.204 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:29:00.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:29:00.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:29:00.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:29:00.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.769494 -999.00  +17.00  18.30     35   +1.70 1 1 1 1 1     0    0 13.61 -55.72 ZNESW 19.1 18.3 175.2 27.1 17.3 -26.4 17.2 -25.9 17.0 -24.6 17.2 -25.8
2025-11-24T20:29:00.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:29:00.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:29:00.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.769494
2025-11-24T20:29:00.212 [DEBUG] [Thread-196517] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:29:00.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:29:00.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:29:00.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:29:00.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:29:00.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:29:00.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:28:37', tmtdew=17.7, humidity=29.81, cloud=0.0, wind=26.13, temperature=17.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:28:38', seeing=0.65, atlas_timestamp='2025-11-24T18:28:04.282', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.011749999999999261, 0.015249999999999986, -0.05250000000000021, -0.12300000000000111, 0.06325000000000003, -0.027000000000001023, 0.03125, -0.016500000000000625, 0.028999999999999915, -0.024750000000000938, 0.04100000000000037, 0.054999999999999716, 0.14724999999999966, 0.010999999999999233, 0.0030000000000001137, 0.006750000000000256, -0.05550000000000033, 0.04899999999999949, -0.003750000000000142, 0.09899999999999842, 0.0857499999999991, -0.020749999999999602, 0.004250000000000753, 0.01699999999999946, 0.07699999999999996, 0.0547500000000003, 0.0625, 0.0030000000000001137, 0.27000000000000135, 0.11350000000000193, 0.013500000000000512, 0.04374999999999929], zp_timestamp='2025-11-24T18:26:00')
2025-11-24T20:29:00.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:29:00.347 [DEBUG] [Thread-196520] [transport.py] [_log()] starting thread (client mode): 0xd3136b30
2025-11-24T20:29:00.347 [DEBUG] [Thread-196520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:29:00.359 [DEBUG] [Thread-196520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:29:00.359 [INFO] [Thread-196520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] client lang: <none>
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] server lang: <none>
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] kex follows: False
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:29:00.367 [DEBUG] [Thread-196520] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:29:00.381 [DEBUG] [Thread-196520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:29:00.381 [DEBUG] [Thread-196520] [transport.py] [_log()] Compression: none
2025-11-24T20:29:00.381 [DEBUG] [Thread-196520] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:29:00.424 [DEBUG] [Thread-196520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:29:00.424 [DEBUG] [Thread-196520] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:29:00.424 [DEBUG] [Thread-196520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:29:00.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:29:00.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:29:00.481 [DEBUG] [Thread-196520] [transport.py] [_log()] userauth is OK
2025-11-24T20:29:00.481 [DEBUG] [Thread-196520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:29:00.481 [DEBUG] [Thread-196520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:29:00.481 [DEBUG] [Thread-196520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:29:00.481 [DEBUG] [Thread-196520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:29:00.496 [INFO] [Thread-196520] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:29:00.497 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:29:00.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:29:01.329 [DEBUG] [Thread-196520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:29:01.329 [DEBUG] [Thread-196520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:29:01.377 [DEBUG] [Thread-196520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:29:01.377 [DEBUG] [Thread-196520] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:29:01.386 [DEBUG] [Thread-196520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:29:01.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:29:01.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-11-24T20:29:01.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-11-24T20:29:01.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:29:01.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:29:01.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:29:01.422 [DEBUG] [Thread-196520] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:29:03.683 [DEBUG] [Thread-196522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:29:17.530 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:29:17.554 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:29:19.017 [DEBUG] [Thread-196523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:29:31.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:29:31.482 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:29:31.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-11-24T20:29:33.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 29, 12), 17.68, 29.86, 0.0, 24.7, 17.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:29:33.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:29:12
2025-11-24T20:29:34.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:29:34.166 [DEBUG] [Thread-196524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:29:34.354 [DEBUG] [Thread-196525] [transport.py] [_log()] starting thread (client mode): 0xd0711ab0
2025-11-24T20:29:34.355 [DEBUG] [Thread-196525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:29:34.363 [DEBUG] [Thread-196525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:29:34.363 [INFO] [Thread-196525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:29:34.372 [DEBUG] [Thread-196525] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:29:34.372 [DEBUG] [Thread-196525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] client lang: <none>
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] server lang: <none>
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] kex follows: False
2025-11-24T20:29:34.373 [DEBUG] [Thread-196525] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:29:34.374 [DEBUG] [Thread-196525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:29:34.374 [DEBUG] [Thread-196525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:29:34.375 [DEBUG] [Thread-196525] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:29:34.375 [DEBUG] [Thread-196525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:29:34.375 [DEBUG] [Thread-196525] [transport.py] [_log()] Compression: none
2025-11-24T20:29:34.375 [DEBUG] [Thread-196525] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:29:34.419 [DEBUG] [Thread-196525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:29:34.426 [DEBUG] [Thread-196525] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:29:34.428 [DEBUG] [Thread-196525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:29:34.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:29:34.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:29:34.435 [DEBUG] [Thread-196525] [transport.py] [_log()] userauth is OK
2025-11-24T20:29:34.436 [DEBUG] [Thread-196525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:29:34.436 [DEBUG] [Thread-196525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:29:34.436 [DEBUG] [Thread-196525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:29:34.436 [DEBUG] [Thread-196525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:29:34.465 [INFO] [Thread-196525] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:29:34.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:29:35.109 [DEBUG] [Thread-196525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:29:35.109 [DEBUG] [Thread-196525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:29:35.110 [DEBUG] [Thread-196525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:29:35.150 [DEBUG] [Thread-196525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:29:35.150 [DEBUG] [Thread-196525] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:29:35.153 [DEBUG] [Thread-196525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:29:35.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:29:35.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:29:35.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:29:35.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:29:35.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:29:35.175 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:29:35.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:29:35.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:29:35.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:29:35.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.769841 -999.00  +17.00  23.15     35   +1.70 1 1 1 1 1     0    0 14.07 -59.46 ZNESW 22.8 23.1 180.0 29.9 17.3 -26.2 17.2 -25.7 16.9 -24.6 17.2 -25.6
2025-11-24T20:29:35.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:29:35.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:29:35.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.769841
2025-11-24T20:29:35.182 [DEBUG] [Thread-196525] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:29:35.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:29:35.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:29:35.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:29:35.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:29:35.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:29:35.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:29:12', tmtdew=17.68, humidity=29.86, cloud=0.0, wind=24.7, temperature=17.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:29:12', seeing=0.67, atlas_timestamp='2025-11-24T18:28:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.011749999999999261, 0.015249999999999986, -0.05250000000000021, -0.12300000000000111, 0.06325000000000003, -0.027000000000001023, 0.03125, -0.016500000000000625, 0.028999999999999915, -0.024750000000000938, 0.04100000000000037, 0.054999999999999716, 0.14724999999999966, 0.010999999999999233, 0.0030000000000001137, 0.006750000000000256, -0.05550000000000033, 0.04899999999999949, -0.003750000000000142, 0.09899999999999842, 0.0857499999999991, -0.020749999999999602, 0.004250000000000753, 0.01699999999999946, 0.07699999999999996, 0.0547500000000003, 0.0625, 0.0030000000000001137, 0.27000000000000135, 0.11350000000000193, 0.013500000000000512, 0.04374999999999929], zp_timestamp='2025-11-24T18:26:00')
2025-11-24T20:29:35.285 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:29:35.298 [DEBUG] [Thread-196528] [transport.py] [_log()] starting thread (client mode): 0xd07106a0
2025-11-24T20:29:35.298 [DEBUG] [Thread-196528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:29:35.313 [DEBUG] [Thread-196528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:29:35.313 [INFO] [Thread-196528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] client lang: <none>
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] server lang: <none>
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] kex follows: False
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] Compression: none
2025-11-24T20:29:35.321 [DEBUG] [Thread-196528] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:29:35.380 [DEBUG] [Thread-196528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:29:35.381 [DEBUG] [Thread-196528] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:29:35.381 [DEBUG] [Thread-196528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:29:35.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:29:35.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:29:35.437 [DEBUG] [Thread-196528] [transport.py] [_log()] userauth is OK
2025-11-24T20:29:35.437 [DEBUG] [Thread-196528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:29:35.437 [DEBUG] [Thread-196528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:29:35.438 [DEBUG] [Thread-196528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:29:35.438 [DEBUG] [Thread-196528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:29:35.456 [INFO] [Thread-196528] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:29:35.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:29:35.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:29:36.313 [DEBUG] [Thread-196528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:29:36.313 [DEBUG] [Thread-196528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:29:36.360 [DEBUG] [Thread-196528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:29:36.360 [DEBUG] [Thread-196528] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:29:36.368 [DEBUG] [Thread-196528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:29:36.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:29:36.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-11-24T20:29:36.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-11-24T20:29:36.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:29:36.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:29:36.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:29:36.405 [DEBUG] [Thread-196528] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:29:49.689 [DEBUG] [Thread-196530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:29:50.214 [DEBUG] [Thread-196531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:30:05.234 [DEBUG] [Thread-196532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:30:06.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:30:06.431 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:30:06.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-11-24T20:30:08.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 29, 47), 17.65, 29.91, 0.0, 27.1, 17.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:30:08.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:29:47
2025-11-24T20:30:08.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:30:08.839 [DEBUG] [Thread-196533] [transport.py] [_log()] starting thread (client mode): 0xd0713250
2025-11-24T20:30:08.843 [DEBUG] [Thread-196533] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:30:08.846 [DEBUG] [Thread-196533] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:30:08.846 [INFO] [Thread-196533] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] client lang: <none>
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] server lang: <none>
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] kex follows: False
2025-11-24T20:30:08.852 [DEBUG] [Thread-196533] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:30:08.853 [DEBUG] [Thread-196533] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:30:08.853 [DEBUG] [Thread-196533] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:30:08.853 [DEBUG] [Thread-196533] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:30:08.853 [DEBUG] [Thread-196533] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:30:08.854 [DEBUG] [Thread-196533] [transport.py] [_log()] Compression: none
2025-11-24T20:30:08.854 [DEBUG] [Thread-196533] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:30:08.894 [DEBUG] [Thread-196533] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:30:08.900 [DEBUG] [Thread-196533] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:30:08.902 [DEBUG] [Thread-196533] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:30:08.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:30:08.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:30:08.909 [DEBUG] [Thread-196533] [transport.py] [_log()] userauth is OK
2025-11-24T20:30:08.909 [DEBUG] [Thread-196533] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:30:08.909 [DEBUG] [Thread-196533] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:30:08.909 [DEBUG] [Thread-196533] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:30:08.910 [DEBUG] [Thread-196533] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:30:08.925 [INFO] [Thread-196533] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:30:08.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:30:11.137 [DEBUG] [Thread-196533] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:30:11.137 [DEBUG] [Thread-196533] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:30:11.138 [DEBUG] [Thread-196533] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:30:11.138 [DEBUG] [Thread-196533] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:30:11.138 [DEBUG] [Thread-196533] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:30:11.140 [DEBUG] [Thread-196533] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:30:11.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:30:11.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:30:11.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:30:11.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:30:11.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:30:11.159 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:30:11.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:30:11.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:30:11.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:30:11.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.770188 -999.00  +17.00  18.42     35   +1.70 1 1 1 1 1     0    0 13.82 -56.57 ZNESW 21.1 18.4 177.4 27.2 17.3 -26.3 17.2 -25.7 16.9 -24.6 17.2 -25.6
2025-11-24T20:30:11.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:30:11.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:30:11.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.770188
2025-11-24T20:30:11.166 [DEBUG] [Thread-196533] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:30:11.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:30:11.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:30:11.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:30:11.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:30:11.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:30:11.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:29:47', tmtdew=17.65, humidity=29.91, cloud=0.0, wind=27.1, temperature=17.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:29:48', seeing=0.69, atlas_timestamp='2025-11-24T18:29:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.011749999999999261, 0.015249999999999986, -0.05250000000000021, -0.12300000000000111, 0.06325000000000003, -0.027000000000001023, 0.03125, -0.016500000000000625, 0.028999999999999915, -0.024750000000000938, 0.04100000000000037, 0.054999999999999716, 0.14724999999999966, 0.010999999999999233, 0.0030000000000001137, 0.006750000000000256, -0.05550000000000033, 0.04899999999999949, -0.003750000000000142, 0.09899999999999842, 0.0857499999999991, -0.020749999999999602, 0.004250000000000753, 0.01699999999999946, 0.07699999999999996, 0.0547500000000003, 0.0625, 0.0030000000000001137, 0.27000000000000135, 0.11350000000000193, 0.013500000000000512, 0.04374999999999929], zp_timestamp='2025-11-24T18:26:00')
2025-11-24T20:30:11.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:30:11.280 [DEBUG] [Thread-196536] [transport.py] [_log()] starting thread (client mode): 0xd0712f80
2025-11-24T20:30:11.280 [DEBUG] [Thread-196536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:30:11.293 [DEBUG] [Thread-196536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:30:11.294 [INFO] [Thread-196536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] client lang: <none>
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] server lang: <none>
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] kex follows: False
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:30:11.301 [DEBUG] [Thread-196536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:30:11.302 [DEBUG] [Thread-196536] [transport.py] [_log()] Compression: none
2025-11-24T20:30:11.302 [DEBUG] [Thread-196536] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:30:11.360 [DEBUG] [Thread-196536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:30:11.360 [DEBUG] [Thread-196536] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:30:11.361 [DEBUG] [Thread-196536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:30:11.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:30:11.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:30:11.417 [DEBUG] [Thread-196536] [transport.py] [_log()] userauth is OK
2025-11-24T20:30:11.417 [DEBUG] [Thread-196536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:30:11.417 [DEBUG] [Thread-196536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:30:11.417 [DEBUG] [Thread-196536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:30:11.417 [DEBUG] [Thread-196536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:30:11.434 [INFO] [Thread-196536] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:30:11.434 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:30:11.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:30:12.292 [DEBUG] [Thread-196536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:30:12.292 [DEBUG] [Thread-196536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:30:12.339 [DEBUG] [Thread-196536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:30:12.340 [DEBUG] [Thread-196536] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:30:12.349 [DEBUG] [Thread-196536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:30:12.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:30:12.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-11-24T20:30:12.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-11-24T20:30:12.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:30:12.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:30:12.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:30:12.387 [DEBUG] [Thread-196536] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:30:17.765 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:30:17.770 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:30:20.466 [DEBUG] [Thread-196538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:30:35.756 [DEBUG] [Thread-196539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:30:42.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:30:42.386 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:30:42.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-11-24T20:30:44.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 30, 23), 17.66, 29.91, 0.0, 26.03, 17.11, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:30:44.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:30:23
2025-11-24T20:30:44.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:30:45.143 [DEBUG] [Thread-196540] [transport.py] [_log()] starting thread (client mode): 0xd07117b0
2025-11-24T20:30:45.145 [DEBUG] [Thread-196540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:30:45.146 [DEBUG] [Thread-196540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:30:45.146 [INFO] [Thread-196540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:30:45.155 [DEBUG] [Thread-196540] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:30:45.155 [DEBUG] [Thread-196540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:30:45.156 [DEBUG] [Thread-196540] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:30:45.156 [DEBUG] [Thread-196540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:30:45.156 [DEBUG] [Thread-196540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:30:45.156 [DEBUG] [Thread-196540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:30:45.156 [DEBUG] [Thread-196540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:30:45.156 [DEBUG] [Thread-196540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:30:45.156 [DEBUG] [Thread-196540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:30:45.156 [DEBUG] [Thread-196540] [transport.py] [_log()] client lang: <none>
2025-11-24T20:30:45.156 [DEBUG] [Thread-196540] [transport.py] [_log()] server lang: <none>
2025-11-24T20:30:45.156 [DEBUG] [Thread-196540] [transport.py] [_log()] kex follows: False
2025-11-24T20:30:45.157 [DEBUG] [Thread-196540] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:30:45.158 [DEBUG] [Thread-196540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:30:45.158 [DEBUG] [Thread-196540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:30:45.158 [DEBUG] [Thread-196540] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:30:45.158 [DEBUG] [Thread-196540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:30:45.159 [DEBUG] [Thread-196540] [transport.py] [_log()] Compression: none
2025-11-24T20:30:45.159 [DEBUG] [Thread-196540] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:30:45.202 [DEBUG] [Thread-196540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:30:45.208 [DEBUG] [Thread-196540] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:30:45.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:30:45.212 [DEBUG] [Thread-196540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:30:45.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:30:45.216 [DEBUG] [Thread-196540] [transport.py] [_log()] userauth is OK
2025-11-24T20:30:45.216 [DEBUG] [Thread-196540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:30:45.216 [DEBUG] [Thread-196540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:30:45.216 [DEBUG] [Thread-196540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:30:45.216 [DEBUG] [Thread-196540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:30:45.242 [INFO] [Thread-196540] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:30:45.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:30:45.830 [DEBUG] [Thread-196540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:30:45.830 [DEBUG] [Thread-196540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:30:45.832 [DEBUG] [Thread-196540] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:30:45.870 [DEBUG] [Thread-196540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:30:45.871 [DEBUG] [Thread-196540] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:30:45.873 [DEBUG] [Thread-196540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:30:45.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:30:45.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:30:45.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:30:45.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:30:45.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:30:45.894 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:30:45.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:30:45.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:30:45.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:30:45.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.771230 -999.00  +17.00  24.60     35   +1.70 1 1 1 1 1     0    0 14.11 -51.61 ZNESW 21.2 24.6 177.4 34.2 17.2 -26.1 17.2 -25.5 16.9 -24.3 17.2 -25.5
2025-11-24T20:30:45.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:30:45.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:30:45.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.771230
2025-11-24T20:30:45.903 [DEBUG] [Thread-196540] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:30:45.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:30:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:30:45.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:30:45.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:30:45.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:30:45.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:30:23', tmtdew=17.66, humidity=29.91, cloud=0.0, wind=26.03, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:30:24', seeing=0.74, atlas_timestamp='2025-11-24T18:30:34.272', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.011749999999999261, 0.015249999999999986, -0.05250000000000021, -0.12300000000000111, 0.06325000000000003, -0.027000000000001023, 0.03125, -0.016500000000000625, 0.028999999999999915, -0.024750000000000938, 0.04100000000000037, 0.054999999999999716, 0.14724999999999966, 0.010999999999999233, 0.0030000000000001137, 0.006750000000000256, -0.05550000000000033, 0.04899999999999949, -0.003750000000000142, 0.09899999999999842, 0.0857499999999991, -0.020749999999999602, 0.004250000000000753, 0.01699999999999946, 0.07699999999999996, 0.0547500000000003, 0.0625, 0.0030000000000001137, 0.27000000000000135, 0.11350000000000193, 0.013500000000000512, 0.04374999999999929], zp_timestamp='2025-11-24T18:26:00')
2025-11-24T20:30:46.022 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:30:46.035 [DEBUG] [Thread-196543] [transport.py] [_log()] starting thread (client mode): 0xd317ea70
2025-11-24T20:30:46.036 [DEBUG] [Thread-196543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:30:46.051 [DEBUG] [Thread-196543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:30:46.051 [INFO] [Thread-196543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:30:46.058 [DEBUG] [Thread-196543] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:30:46.058 [DEBUG] [Thread-196543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] client lang: <none>
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] server lang: <none>
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] kex follows: False
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] Compression: none
2025-11-24T20:30:46.059 [DEBUG] [Thread-196543] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:30:46.116 [DEBUG] [Thread-196543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:30:46.116 [DEBUG] [Thread-196543] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:30:46.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:30:46.116 [DEBUG] [Thread-196543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:30:46.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:30:46.174 [DEBUG] [Thread-196543] [transport.py] [_log()] userauth is OK
2025-11-24T20:30:46.174 [DEBUG] [Thread-196543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:30:46.174 [DEBUG] [Thread-196543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:30:46.174 [DEBUG] [Thread-196543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:30:46.174 [DEBUG] [Thread-196543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:30:46.193 [INFO] [Thread-196543] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:30:46.193 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:30:46.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:30:47.038 [DEBUG] [Thread-196543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:30:47.039 [DEBUG] [Thread-196543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:30:47.084 [DEBUG] [Thread-196543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:30:47.084 [DEBUG] [Thread-196543] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:30:47.093 [DEBUG] [Thread-196543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:30:47.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:30:47.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:30:47.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-11-24T20:30:47.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:30:47.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:30:47.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:30:47.131 [DEBUG] [Thread-196543] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:30:50.766 [DEBUG] [Thread-196545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:30:50.990 [DEBUG] [Thread-196546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:31:06.202 [DEBUG] [Thread-196547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:31:17.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:31:17.178 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:31:17.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-11-24T20:31:17.982 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:31:17.988 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:31:19.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 30, 58), 17.65, 29.91, 0.0, 26.22, 17.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:31:19.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:30:58
2025-11-24T20:31:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:31:19.791 [DEBUG] [Thread-196548] [transport.py] [_log()] starting thread (client mode): 0xd31375b0
2025-11-24T20:31:19.793 [DEBUG] [Thread-196548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:31:19.794 [DEBUG] [Thread-196548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:31:19.794 [INFO] [Thread-196548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:31:19.803 [DEBUG] [Thread-196548] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] client lang: <none>
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] server lang: <none>
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] kex follows: False
2025-11-24T20:31:19.804 [DEBUG] [Thread-196548] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:31:19.805 [DEBUG] [Thread-196548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:31:19.805 [DEBUG] [Thread-196548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:31:19.805 [DEBUG] [Thread-196548] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:31:19.805 [DEBUG] [Thread-196548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:31:19.805 [DEBUG] [Thread-196548] [transport.py] [_log()] Compression: none
2025-11-24T20:31:19.805 [DEBUG] [Thread-196548] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:31:19.843 [DEBUG] [Thread-196548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:31:19.851 [DEBUG] [Thread-196548] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:31:19.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:31:19.855 [DEBUG] [Thread-196548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:31:19.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:31:19.859 [DEBUG] [Thread-196548] [transport.py] [_log()] userauth is OK
2025-11-24T20:31:19.860 [DEBUG] [Thread-196548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:31:19.860 [DEBUG] [Thread-196548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:31:19.860 [DEBUG] [Thread-196548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:31:19.860 [DEBUG] [Thread-196548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:31:19.885 [INFO] [Thread-196548] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:31:19.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:31:20.473 [DEBUG] [Thread-196548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:31:20.473 [DEBUG] [Thread-196548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:31:20.475 [DEBUG] [Thread-196548] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:31:20.514 [DEBUG] [Thread-196548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:31:20.515 [DEBUG] [Thread-196548] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:31:20.518 [DEBUG] [Thread-196548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:31:20.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:31:20.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:31:20.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:31:20.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:31:20.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:31:20.546 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:31:20.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:31:20.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:31:20.548 [DEBUG] [Thread-196548] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:31:20.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:31:20.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.771577 -999.00  +17.00  22.63     35   +1.70 1 1 1 1 1     0    0 13.83 -48.79 ZNESW 19.4 22.6 188.4 24.6 17.2 -26.3 17.2 -25.7 16.9 -24.4 17.2 -25.6
2025-11-24T20:31:20.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:31:20.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:31:20.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.771577
2025-11-24T20:31:20.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:31:20.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:31:20.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:31:20.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:31:20.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:31:20.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:30:58', tmtdew=17.65, humidity=29.91, cloud=0.0, wind=26.22, temperature=17.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:30:59', seeing=0.7, atlas_timestamp='2025-11-24T18:31:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.011749999999999261, 0.015249999999999986, -0.05250000000000021, -0.12300000000000111, 0.06325000000000003, -0.027000000000001023, 0.03125, -0.016500000000000625, 0.028999999999999915, -0.024750000000000938, 0.04100000000000037, 0.054999999999999716, 0.14724999999999966, 0.010999999999999233, 0.0030000000000001137, 0.006750000000000256, -0.05550000000000033, 0.04899999999999949, -0.003750000000000142, 0.09899999999999842, 0.0857499999999991, -0.020749999999999602, 0.004250000000000753, 0.01699999999999946, 0.07699999999999996, 0.0547500000000003, 0.0625, 0.0030000000000001137, 0.27000000000000135, 0.11350000000000193, 0.013500000000000512, 0.04374999999999929], zp_timestamp='2025-11-24T18:26:00')
2025-11-24T20:31:20.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:31:20.689 [DEBUG] [Thread-196551] [transport.py] [_log()] starting thread (client mode): 0xd07fa0e0
2025-11-24T20:31:20.689 [DEBUG] [Thread-196551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:31:20.704 [DEBUG] [Thread-196551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:31:20.705 [INFO] [Thread-196551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] client lang: <none>
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] server lang: <none>
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] kex follows: False
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:31:20.712 [DEBUG] [Thread-196551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:31:20.713 [DEBUG] [Thread-196551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:31:20.713 [DEBUG] [Thread-196551] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:31:20.713 [DEBUG] [Thread-196551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:31:20.713 [DEBUG] [Thread-196551] [transport.py] [_log()] Compression: none
2025-11-24T20:31:20.713 [DEBUG] [Thread-196551] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:31:20.774 [DEBUG] [Thread-196551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:31:20.774 [DEBUG] [Thread-196551] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:31:20.774 [DEBUG] [Thread-196551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:31:20.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:31:20.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:31:20.829 [DEBUG] [Thread-196551] [transport.py] [_log()] userauth is OK
2025-11-24T20:31:20.830 [DEBUG] [Thread-196551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:31:20.830 [DEBUG] [Thread-196551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:31:20.830 [DEBUG] [Thread-196551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:31:20.830 [DEBUG] [Thread-196551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:31:20.849 [INFO] [Thread-196551] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:31:20.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:31:20.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:31:21.385 [DEBUG] [Thread-196553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:31:21.775 [DEBUG] [Thread-196551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:31:21.775 [DEBUG] [Thread-196551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:31:21.822 [DEBUG] [Thread-196551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:31:21.822 [DEBUG] [Thread-196551] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:31:21.833 [DEBUG] [Thread-196551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:31:21.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:31:21.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-11-24T20:31:21.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-11-24T20:31:21.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:31:21.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:31:21.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:31:21.883 [DEBUG] [Thread-196551] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:31:36.889 [DEBUG] [Thread-196554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:31:45.527 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:31:51.334 [DEBUG] [Thread-196555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:31:51.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:31:51.910 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:31:51.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-11-24T20:31:52.403 [DEBUG] [Thread-196556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:31:54.005 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:31:54.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 31, 34), 17.63, 29.96, 0.0, 24.3, 17.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:31:54.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:31:34
2025-11-24T20:31:54.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:31:54.562 [DEBUG] [Thread-196557] [transport.py] [_log()] starting thread (client mode): 0xd317da80
2025-11-24T20:31:54.563 [DEBUG] [Thread-196557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:31:54.563 [DEBUG] [Thread-196557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:31:54.563 [INFO] [Thread-196557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] client lang: <none>
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] server lang: <none>
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] kex follows: False
2025-11-24T20:31:54.569 [DEBUG] [Thread-196557] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:31:54.570 [DEBUG] [Thread-196557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:31:54.570 [DEBUG] [Thread-196557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:31:54.571 [DEBUG] [Thread-196557] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:31:54.571 [DEBUG] [Thread-196557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:31:54.571 [DEBUG] [Thread-196557] [transport.py] [_log()] Compression: none
2025-11-24T20:31:54.571 [DEBUG] [Thread-196557] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:31:54.611 [DEBUG] [Thread-196557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:31:54.617 [DEBUG] [Thread-196557] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:31:54.620 [DEBUG] [Thread-196557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:31:54.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:31:54.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:31:54.625 [DEBUG] [Thread-196557] [transport.py] [_log()] userauth is OK
2025-11-24T20:31:54.625 [DEBUG] [Thread-196557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:31:54.625 [DEBUG] [Thread-196557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:31:54.625 [DEBUG] [Thread-196557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:31:54.625 [DEBUG] [Thread-196557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:31:54.647 [INFO] [Thread-196557] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:31:54.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:31:55.252 [DEBUG] [Thread-196557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:31:55.252 [DEBUG] [Thread-196557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:31:55.258 [DEBUG] [Thread-196557] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:31:55.293 [DEBUG] [Thread-196557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:31:55.293 [DEBUG] [Thread-196557] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:31:55.296 [DEBUG] [Thread-196557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:31:55.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:31:55.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:31:55.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:31:55.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:31:55.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:31:55.319 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:31:55.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:31:55.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:31:55.322 [DEBUG] [Thread-196557] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:31:55.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:31:55.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.771924 -999.00  +17.00  24.31     35   +1.70 1 1 1 1 1     0    0 13.97 -46.62 ZNESW 24.2 24.3 179.4 31.3 17.2 -26.1 17.1 -25.5 16.9 -24.5 17.2 -25.5
2025-11-24T20:31:55.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:31:55.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:31:55.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.771924
2025-11-24T20:31:55.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:31:55.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:31:55.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:31:55.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:31:55.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:31:55.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:31:34', tmtdew=17.63, humidity=29.96, cloud=0.0, wind=24.3, temperature=17.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:31:34', seeing=0.62, atlas_timestamp='2025-11-24T18:31:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.011749999999999261, 0.015249999999999986, -0.05250000000000021, -0.12300000000000111, 0.06325000000000003, -0.027000000000001023, 0.03125, -0.016500000000000625, 0.028999999999999915, -0.024750000000000938, 0.04100000000000037, 0.054999999999999716, 0.14724999999999966, 0.010999999999999233, 0.0030000000000001137, 0.006750000000000256, -0.05550000000000033, 0.04899999999999949, -0.003750000000000142, 0.09899999999999842, 0.0857499999999991, -0.020749999999999602, 0.004250000000000753, 0.01699999999999946, 0.07699999999999996, 0.0547500000000003, 0.0625, 0.0030000000000001137, 0.27000000000000135, 0.11350000000000193, 0.013500000000000512, 0.04374999999999929], zp_timestamp='2025-11-24T18:26:00')
2025-11-24T20:31:55.440 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:31:55.452 [DEBUG] [Thread-196560] [transport.py] [_log()] starting thread (client mode): 0xd07107f0
2025-11-24T20:31:55.452 [DEBUG] [Thread-196560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:31:55.466 [DEBUG] [Thread-196560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:31:55.466 [INFO] [Thread-196560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:31:55.474 [DEBUG] [Thread-196560] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:31:55.474 [DEBUG] [Thread-196560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:31:55.474 [DEBUG] [Thread-196560] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:31:55.474 [DEBUG] [Thread-196560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:31:55.474 [DEBUG] [Thread-196560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] client lang: <none>
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] server lang: <none>
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] kex follows: False
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] Compression: none
2025-11-24T20:31:55.475 [DEBUG] [Thread-196560] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:31:55.537 [DEBUG] [Thread-196560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:31:55.538 [DEBUG] [Thread-196560] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:31:55.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:31:55.539 [DEBUG] [Thread-196560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:31:55.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:31:55.594 [DEBUG] [Thread-196560] [transport.py] [_log()] userauth is OK
2025-11-24T20:31:55.594 [DEBUG] [Thread-196560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:31:55.594 [DEBUG] [Thread-196560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:31:55.594 [DEBUG] [Thread-196560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:31:55.594 [DEBUG] [Thread-196560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:31:55.613 [INFO] [Thread-196560] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:31:55.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:31:55.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:31:56.430 [DEBUG] [Thread-196560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:31:56.430 [DEBUG] [Thread-196560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:31:56.480 [DEBUG] [Thread-196560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:31:56.480 [DEBUG] [Thread-196560] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:31:56.498 [DEBUG] [Thread-196560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:31:56.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:31:56.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-11-24T20:31: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-11-24T20:31:56.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:31:56.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:31:56.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:31:56.563 [DEBUG] [Thread-196560] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:31:58.285 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:32:07.568 [DEBUG] [Thread-196562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:32:18.219 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:32:18.242 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:32:22.804 [DEBUG] [Thread-196563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:32:26.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:32:26.589 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:32:26.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-11-24T20:32:28.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 32, 15), 17.61, 29.99, 0.0, 23.55, 17.03, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:32:28.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:32:15
2025-11-24T20:32:28.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:32:29.016 [DEBUG] [Thread-196564] [transport.py] [_log()] starting thread (client mode): 0xd0712bf0
2025-11-24T20:32:29.018 [DEBUG] [Thread-196564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:32:29.023 [DEBUG] [Thread-196564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:32:29.024 [INFO] [Thread-196564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:32:29.030 [DEBUG] [Thread-196564] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:32:29.030 [DEBUG] [Thread-196564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:32:29.030 [DEBUG] [Thread-196564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:32:29.030 [DEBUG] [Thread-196564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:32:29.030 [DEBUG] [Thread-196564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:32:29.030 [DEBUG] [Thread-196564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:32:29.030 [DEBUG] [Thread-196564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:32:29.030 [DEBUG] [Thread-196564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:32:29.031 [DEBUG] [Thread-196564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:32:29.031 [DEBUG] [Thread-196564] [transport.py] [_log()] client lang: <none>
2025-11-24T20:32:29.031 [DEBUG] [Thread-196564] [transport.py] [_log()] server lang: <none>
2025-11-24T20:32:29.031 [DEBUG] [Thread-196564] [transport.py] [_log()] kex follows: False
2025-11-24T20:32:29.031 [DEBUG] [Thread-196564] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:32:29.031 [DEBUG] [Thread-196564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:32:29.031 [DEBUG] [Thread-196564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:32:29.032 [DEBUG] [Thread-196564] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:32:29.032 [DEBUG] [Thread-196564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:32:29.032 [DEBUG] [Thread-196564] [transport.py] [_log()] Compression: none
2025-11-24T20:32:29.032 [DEBUG] [Thread-196564] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:32:29.072 [DEBUG] [Thread-196564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:32:29.080 [DEBUG] [Thread-196564] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:32:29.082 [DEBUG] [Thread-196564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:32:29.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:32:29.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:32:29.089 [DEBUG] [Thread-196564] [transport.py] [_log()] userauth is OK
2025-11-24T20:32:29.090 [DEBUG] [Thread-196564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:32:29.090 [DEBUG] [Thread-196564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:32:29.090 [DEBUG] [Thread-196564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:32:29.090 [DEBUG] [Thread-196564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:32:29.130 [INFO] [Thread-196564] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:32:29.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:32:29.744 [DEBUG] [Thread-196564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:32:29.744 [DEBUG] [Thread-196564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:32:29.745 [DEBUG] [Thread-196564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:32:29.785 [DEBUG] [Thread-196564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:32:29.786 [DEBUG] [Thread-196564] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:32:29.789 [DEBUG] [Thread-196564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:32:29.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:32:29.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:32:29.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:32:29.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:32:29.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:32:29.811 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:32:29.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:32:29.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:32:29.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:32:29.813 [DEBUG] [Thread-196564] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:32:29.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.771924 -999.00  +17.00  24.31     35   +1.70 1 1 1 1 1     0    0 13.97 -46.62 ZNESW 24.2 24.3 179.4 31.3 17.2 -26.1 17.1 -25.5 16.9 -24.5 17.2 -25.5
2025-11-24T20:32:29.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:32:29.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:32:29.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.771924
2025-11-24T20:32:29.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:32:29.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:32:29.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:32:29.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:32:29.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:32:29.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:32:15', tmtdew=17.61, humidity=29.99, cloud=0.0, wind=23.55, temperature=17.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:32:15', seeing=0.76, atlas_timestamp='2025-11-24T18:31:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.011749999999999261, 0.015249999999999986, -0.05250000000000021, -0.12300000000000111, 0.06325000000000003, -0.027000000000001023, 0.03125, -0.016500000000000625, 0.028999999999999915, -0.024750000000000938, 0.04100000000000037, 0.054999999999999716, 0.14724999999999966, 0.010999999999999233, 0.0030000000000001137, 0.006750000000000256, -0.05550000000000033, 0.04899999999999949, -0.003750000000000142, 0.09899999999999842, 0.0857499999999991, -0.020749999999999602, 0.004250000000000753, 0.01699999999999946, 0.07699999999999996, 0.0547500000000003, 0.0625, 0.0030000000000001137, 0.27000000000000135, 0.11350000000000193, 0.013500000000000512, 0.04374999999999929], zp_timestamp='2025-11-24T18:26:00')
2025-11-24T20:32:29.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:32:29.926 [DEBUG] [Thread-196567] [transport.py] [_log()] starting thread (client mode): 0xd317c700
2025-11-24T20:32:29.927 [DEBUG] [Thread-196567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:32:29.942 [DEBUG] [Thread-196567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:32:29.942 [INFO] [Thread-196567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:32:29.949 [DEBUG] [Thread-196567] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:32:29.949 [DEBUG] [Thread-196567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] client lang: <none>
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] server lang: <none>
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] kex follows: False
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:32:29.950 [DEBUG] [Thread-196567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:32:29.951 [DEBUG] [Thread-196567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:32:29.951 [DEBUG] [Thread-196567] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:32:29.951 [DEBUG] [Thread-196567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:32:29.951 [DEBUG] [Thread-196567] [transport.py] [_log()] Compression: none
2025-11-24T20:32:29.951 [DEBUG] [Thread-196567] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:32:30.011 [DEBUG] [Thread-196567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:32:30.012 [DEBUG] [Thread-196567] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:32:30.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:32:30.013 [DEBUG] [Thread-196567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:32:30.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:32:30.069 [DEBUG] [Thread-196567] [transport.py] [_log()] userauth is OK
2025-11-24T20:32:30.070 [DEBUG] [Thread-196567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:32:30.070 [DEBUG] [Thread-196567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:32:30.070 [DEBUG] [Thread-196567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:32:30.070 [DEBUG] [Thread-196567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:32:30.093 [INFO] [Thread-196567] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:32:30.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:32:30.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:32:30.922 [DEBUG] [Thread-196567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:32:30.922 [DEBUG] [Thread-196567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:32:30.970 [DEBUG] [Thread-196567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:32:30.970 [DEBUG] [Thread-196567] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:32:30.979 [DEBUG] [Thread-196567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:32:30.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:32: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')
2025-11-24T20:32:30.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:32:31.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:32:31.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:32:31.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:32:31.014 [DEBUG] [Thread-196567] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:32:37.964 [DEBUG] [Thread-196569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:32:51.760 [DEBUG] [Thread-196570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:32:53.206 [DEBUG] [Thread-196571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:33:01.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:33:01.061 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:33:01.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-11-24T20:33:06.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 32, 49), 17.5, 30.62, 0.0, 29.85, 17.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:33:06.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:32:49
2025-11-24T20:33:07.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:33:07.761 [DEBUG] [Thread-196572] [transport.py] [_log()] starting thread (client mode): 0xd317e5f0
2025-11-24T20:33:07.771 [DEBUG] [Thread-196572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:33:07.777 [DEBUG] [Thread-196572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:33:07.777 [INFO] [Thread-196572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:33:07.813 [DEBUG] [Thread-196572] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:33:07.815 [DEBUG] [Thread-196572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:33:07.815 [DEBUG] [Thread-196572] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:33:07.815 [DEBUG] [Thread-196572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:33:07.815 [DEBUG] [Thread-196572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:33:07.815 [DEBUG] [Thread-196572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:33:07.815 [DEBUG] [Thread-196572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:33:07.815 [DEBUG] [Thread-196572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:33:07.816 [DEBUG] [Thread-196572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:33:07.816 [DEBUG] [Thread-196572] [transport.py] [_log()] client lang: <none>
2025-11-24T20:33:07.816 [DEBUG] [Thread-196572] [transport.py] [_log()] server lang: <none>
2025-11-24T20:33:07.816 [DEBUG] [Thread-196572] [transport.py] [_log()] kex follows: False
2025-11-24T20:33:07.817 [DEBUG] [Thread-196572] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:33:07.823 [DEBUG] [Thread-196572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:33:07.824 [DEBUG] [Thread-196572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:33:07.825 [DEBUG] [Thread-196572] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:33:07.826 [DEBUG] [Thread-196572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:33:07.826 [DEBUG] [Thread-196572] [transport.py] [_log()] Compression: none
2025-11-24T20:33:07.826 [DEBUG] [Thread-196572] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:33:07.953 [DEBUG] [Thread-196572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:33:07.981 [DEBUG] [Thread-196572] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:33:07.988 [DEBUG] [Thread-196572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:33:07.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:33:07.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:33:08.007 [DEBUG] [Thread-196572] [transport.py] [_log()] userauth is OK
2025-11-24T20:33:08.009 [DEBUG] [Thread-196572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:33:08.009 [DEBUG] [Thread-196572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:33:08.009 [DEBUG] [Thread-196572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:33:08.009 [DEBUG] [Thread-196572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:33:08.054 [INFO] [Thread-196572] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:33:08.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:33:08.387 [DEBUG] [Thread-196574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:33:08.669 [DEBUG] [Thread-196572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:33:08.669 [DEBUG] [Thread-196572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:33:08.671 [DEBUG] [Thread-196572] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:33:08.709 [DEBUG] [Thread-196572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:33:08.709 [DEBUG] [Thread-196572] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:33:08.714 [DEBUG] [Thread-196572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:33:08.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:33:08.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:33:08.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:33:08.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:33:08.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:33:08.749 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:33:08.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:33:08.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:33:08.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:33:08.756 [DEBUG] [Thread-196572] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:33:08.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.772619 -999.00  +17.00  25.34     35   +1.70 1 1 1 1 1     0    0 14.11 -44.86 ZNESW 22.1 25.3 177.6 34.3 17.2 -26.1 17.1 -25.5 16.9 -24.5 17.2 -25.7
2025-11-24T20:33:08.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:33:08.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:33:08.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.772619
2025-11-24T20:33:08.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:33:08.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:33:08.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:33:08.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:33:08.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:33:08.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:32:49', tmtdew=17.5, humidity=30.62, cloud=0.0, wind=29.85, temperature=17.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:32:50', seeing=0.6, atlas_timestamp='2025-11-24T18:32:34.282', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.011749999999999261, 0.015249999999999986, -0.05250000000000021, -0.12300000000000111, 0.06325000000000003, -0.027000000000001023, 0.03125, -0.016500000000000625, 0.028999999999999915, -0.024750000000000938, 0.04100000000000037, 0.054999999999999716, 0.14724999999999966, 0.010999999999999233, 0.0030000000000001137, 0.006750000000000256, -0.05550000000000033, 0.04899999999999949, -0.003750000000000142, 0.09899999999999842, 0.0857499999999991, -0.020749999999999602, 0.004250000000000753, 0.01699999999999946, 0.07699999999999996, 0.0547500000000003, 0.0625, 0.0030000000000001137, 0.27000000000000135, 0.11350000000000193, 0.013500000000000512, 0.04374999999999929], zp_timestamp='2025-11-24T18:26:00')
2025-11-24T20:33:08.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:33:09.003 [DEBUG] [Thread-196576] [transport.py] [_log()] starting thread (client mode): 0xd317dff0
2025-11-24T20:33:09.003 [DEBUG] [Thread-196576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:33:09.017 [DEBUG] [Thread-196576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:33:09.017 [INFO] [Thread-196576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] client lang: <none>
2025-11-24T20:33:09.025 [DEBUG] [Thread-196576] [transport.py] [_log()] server lang: <none>
2025-11-24T20:33:09.026 [DEBUG] [Thread-196576] [transport.py] [_log()] kex follows: False
2025-11-24T20:33:09.026 [DEBUG] [Thread-196576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:33:09.026 [DEBUG] [Thread-196576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:33:09.026 [DEBUG] [Thread-196576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:33:09.026 [DEBUG] [Thread-196576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:33:09.026 [DEBUG] [Thread-196576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:33:09.026 [DEBUG] [Thread-196576] [transport.py] [_log()] Compression: none
2025-11-24T20:33:09.026 [DEBUG] [Thread-196576] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:33:09.086 [DEBUG] [Thread-196576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:33:09.087 [DEBUG] [Thread-196576] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:33:09.087 [DEBUG] [Thread-196576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:33:09.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:33:09.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:33:09.144 [DEBUG] [Thread-196576] [transport.py] [_log()] userauth is OK
2025-11-24T20:33:09.144 [DEBUG] [Thread-196576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:33:09.144 [DEBUG] [Thread-196576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:33:09.144 [DEBUG] [Thread-196576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:33:09.144 [DEBUG] [Thread-196576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:33:09.170 [INFO] [Thread-196576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:33:09.170 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:33:09.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:33:10.053 [DEBUG] [Thread-196576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:33:10.053 [DEBUG] [Thread-196576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:33:10.100 [DEBUG] [Thread-196576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:33:10.100 [DEBUG] [Thread-196576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:33:10.108 [DEBUG] [Thread-196576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:33:10.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:33:10.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-11-24T20:33:10.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:33:10.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:33:10.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:33:10.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:33:10.156 [DEBUG] [Thread-196576] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:33:18.490 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:33:18.511 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:33:23.650 [DEBUG] [Thread-196578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:33:38.884 [DEBUG] [Thread-196579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:33:40.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:33:40.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:33:40.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-11-24T20:33:42.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 33, 24), 17.52, 30.59, 0.0, 28.14, 17.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:33:42.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:33:24
2025-11-24T20:33:42.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:33:42.580 [DEBUG] [Thread-196580] [transport.py] [_log()] starting thread (client mode): 0xd0787700
2025-11-24T20:33:42.581 [DEBUG] [Thread-196580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:33:42.586 [DEBUG] [Thread-196580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:33:42.586 [INFO] [Thread-196580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:33:42.593 [DEBUG] [Thread-196580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:33:42.593 [DEBUG] [Thread-196580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:33:42.593 [DEBUG] [Thread-196580] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:33:42.593 [DEBUG] [Thread-196580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:33:42.593 [DEBUG] [Thread-196580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:33:42.593 [DEBUG] [Thread-196580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:33:42.593 [DEBUG] [Thread-196580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:33:42.594 [DEBUG] [Thread-196580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:33:42.594 [DEBUG] [Thread-196580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:33:42.594 [DEBUG] [Thread-196580] [transport.py] [_log()] client lang: <none>
2025-11-24T20:33:42.594 [DEBUG] [Thread-196580] [transport.py] [_log()] server lang: <none>
2025-11-24T20:33:42.594 [DEBUG] [Thread-196580] [transport.py] [_log()] kex follows: False
2025-11-24T20:33:42.594 [DEBUG] [Thread-196580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:33:42.594 [DEBUG] [Thread-196580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:33:42.594 [DEBUG] [Thread-196580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:33:42.595 [DEBUG] [Thread-196580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:33:42.595 [DEBUG] [Thread-196580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:33:42.595 [DEBUG] [Thread-196580] [transport.py] [_log()] Compression: none
2025-11-24T20:33:42.595 [DEBUG] [Thread-196580] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:33:42.647 [DEBUG] [Thread-196580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:33:42.654 [DEBUG] [Thread-196580] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:33:42.656 [DEBUG] [Thread-196580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:33:42.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:33:42.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:33:42.661 [DEBUG] [Thread-196580] [transport.py] [_log()] userauth is OK
2025-11-24T20:33:42.661 [DEBUG] [Thread-196580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:33:42.661 [DEBUG] [Thread-196580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:33:42.661 [DEBUG] [Thread-196580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:33:42.661 [DEBUG] [Thread-196580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:33:42.689 [INFO] [Thread-196580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:33:42.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:33:43.332 [DEBUG] [Thread-196580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:33:43.332 [DEBUG] [Thread-196580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:33:43.333 [DEBUG] [Thread-196580] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:33:43.373 [DEBUG] [Thread-196580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:33:43.373 [DEBUG] [Thread-196580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:33:43.376 [DEBUG] [Thread-196580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:33:43.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:33:43.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:33:43.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:33:43.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:33:43.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:33:43.398 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:33:43.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:33:43.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:33:43.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:33:43.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.772966 -999.00  +17.00  14.41     35   +1.70 1 1 1 1 1     0    0 14.29 -43.41 ZNESW 14.8 14.4 169.8 22.1 17.2 -26.4 17.1 -25.8 16.8 -24.5 17.2 -25.8
2025-11-24T20:33:43.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:33:43.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:33:43.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.772966
2025-11-24T20:33:43.405 [DEBUG] [Thread-196580] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:33:43.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:33:43.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:33:43.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:33:43.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:33:43.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:33:43.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:33:24', tmtdew=17.52, humidity=30.59, cloud=0.0, wind=28.14, temperature=17.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:33:24', seeing=0.73, atlas_timestamp='2025-11-24T18:33:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, 0.03325000000000067, 0.04925000000000068, -0.04550000000000054, 0.08249999999999957, 0.09025000000000105, 0.0039999999999995595, 0.05375000000000085, -0.022500000000000853, 0.0470000000000006, 0.025749999999998607, 0.04899999999999949, 0.14700000000000024, 0.1272499999999983, 0.022999999999999687, 0.010999999999999233, 0.07324999999999982, 0.03049999999999997, 0.06599999999999895, 0.022749999999998494, 0.10199999999999854, 0.01774999999999949, 0.05125000000000135, 0.023749999999999716, 0.010999999999999233, 0.0365000000000002, 0.07075000000000031, 0.12850000000000072, 0.1039999999999992, 0.10200000000000031, 0.07800000000000118, 0.08800000000000097, 0.0467499999999994], zp_timestamp='2025-11-24T18:31:00')
2025-11-24T20:33:43.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:33:43.521 [DEBUG] [Thread-196583] [transport.py] [_log()] starting thread (client mode): 0xd0702ef0
2025-11-24T20:33:43.521 [DEBUG] [Thread-196583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:33:43.535 [DEBUG] [Thread-196583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:33:43.535 [INFO] [Thread-196583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] client lang: <none>
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] server lang: <none>
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] kex follows: False
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] Compression: none
2025-11-24T20:33:43.544 [DEBUG] [Thread-196583] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:33:43.600 [DEBUG] [Thread-196583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:33:43.601 [DEBUG] [Thread-196583] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:33:43.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:33:43.602 [DEBUG] [Thread-196583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:33:43.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:33:43.657 [DEBUG] [Thread-196583] [transport.py] [_log()] userauth is OK
2025-11-24T20:33:43.657 [DEBUG] [Thread-196583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:33:43.657 [DEBUG] [Thread-196583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:33:43.657 [DEBUG] [Thread-196583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:33:43.657 [DEBUG] [Thread-196583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:33:43.672 [INFO] [Thread-196583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:33:43.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:33:43.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:33:44.571 [DEBUG] [Thread-196583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:33:44.571 [DEBUG] [Thread-196583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:33:44.619 [DEBUG] [Thread-196583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:33:44.619 [DEBUG] [Thread-196583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:33:44.629 [DEBUG] [Thread-196583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:33:44.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:33:44.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-11-24T20:33:44.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-11-24T20:33:44.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:33:44.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:33:44.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:33:44.665 [DEBUG] [Thread-196583] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:33:52.287 [DEBUG] [Thread-196585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:33:54.003 [DEBUG] [Thread-196586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:34:09.450 [DEBUG] [Thread-196587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:34:14.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:34:14.872 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:34:15.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-11-24T20:34:18.742 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:34:18.764 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:34:22.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 33, 59), 17.5, 30.13, 0.0, 26.18, 16.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:34:22.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:33:59
2025-11-24T20:34:22.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:34:23.056 [DEBUG] [Thread-196588] [transport.py] [_log()] starting thread (client mode): 0xd07873a0
2025-11-24T20:34:23.057 [DEBUG] [Thread-196588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:34:23.062 [DEBUG] [Thread-196588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:34:23.063 [INFO] [Thread-196588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] client lang: <none>
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] server lang: <none>
2025-11-24T20:34:23.069 [DEBUG] [Thread-196588] [transport.py] [_log()] kex follows: False
2025-11-24T20:34:23.070 [DEBUG] [Thread-196588] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:34:23.070 [DEBUG] [Thread-196588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:34:23.070 [DEBUG] [Thread-196588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:34:23.070 [DEBUG] [Thread-196588] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:34:23.071 [DEBUG] [Thread-196588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:34:23.071 [DEBUG] [Thread-196588] [transport.py] [_log()] Compression: none
2025-11-24T20:34:23.071 [DEBUG] [Thread-196588] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:34:23.104 [DEBUG] [Thread-196588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:34:23.108 [DEBUG] [Thread-196588] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:34:23.110 [DEBUG] [Thread-196588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:34:23.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:34:23.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:34:23.113 [DEBUG] [Thread-196588] [transport.py] [_log()] userauth is OK
2025-11-24T20:34:23.113 [DEBUG] [Thread-196588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:34:23.113 [DEBUG] [Thread-196588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:34:23.113 [DEBUG] [Thread-196588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:34:23.113 [DEBUG] [Thread-196588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:34:23.131 [INFO] [Thread-196588] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:34:23.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:34:23.759 [DEBUG] [Thread-196588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:34:23.759 [DEBUG] [Thread-196588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:34:23.760 [DEBUG] [Thread-196588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:34:23.801 [DEBUG] [Thread-196588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:34:23.801 [DEBUG] [Thread-196588] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:34:23.805 [DEBUG] [Thread-196588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:34:23.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:34:23.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:34:23.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:34:23.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:34:23.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:34:23.829 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:34:23.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:34:23.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:34:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:34:23.832 [DEBUG] [Thread-196588] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:34:23.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.773660 -999.00  +16.90  17.72     36   +1.70 1 1 1 1 1     0    0 14.20 -40.00 ZNESW 20.1 17.7 178.6 28.0 17.2 -26.3 17.1 -25.7 16.8 -24.6 17.1 -25.7
2025-11-24T20:34:23.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:34:23.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:34:23.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.773660
2025-11-24T20:34:23.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:34:23.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:34:23.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:34:23.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:34:23.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:34:23.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:33:59', tmtdew=17.5, humidity=30.13, cloud=0.0, wind=26.18, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:34:00', seeing=0.76, atlas_timestamp='2025-11-24T18:34:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, 0.03325000000000067, 0.04925000000000068, -0.04550000000000054, 0.08249999999999957, 0.09025000000000105, 0.0039999999999995595, 0.05375000000000085, -0.022500000000000853, 0.0470000000000006, 0.025749999999998607, 0.04899999999999949, 0.14700000000000024, 0.1272499999999983, 0.022999999999999687, 0.010999999999999233, 0.07324999999999982, 0.03049999999999997, 0.06599999999999895, 0.022749999999998494, 0.10199999999999854, 0.01774999999999949, 0.05125000000000135, 0.023749999999999716, 0.010999999999999233, 0.0365000000000002, 0.07075000000000031, 0.12850000000000072, 0.1039999999999992, 0.10200000000000031, 0.07800000000000118, 0.08800000000000097, 0.0467499999999994], zp_timestamp='2025-11-24T18:31:00')
2025-11-24T20:34:23.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:34:23.958 [DEBUG] [Thread-196591] [transport.py] [_log()] starting thread (client mode): 0xd0786d70
2025-11-24T20:34:23.958 [DEBUG] [Thread-196591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:34:23.972 [DEBUG] [Thread-196591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:34:23.972 [INFO] [Thread-196591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:34:23.980 [DEBUG] [Thread-196591] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:34:23.980 [DEBUG] [Thread-196591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:34:23.980 [DEBUG] [Thread-196591] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:34:23.980 [DEBUG] [Thread-196591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:34:23.980 [DEBUG] [Thread-196591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:34:23.980 [DEBUG] [Thread-196591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:34:23.980 [DEBUG] [Thread-196591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:34:23.980 [DEBUG] [Thread-196591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:34:23.980 [DEBUG] [Thread-196591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:34:23.981 [DEBUG] [Thread-196591] [transport.py] [_log()] client lang: <none>
2025-11-24T20:34:23.981 [DEBUG] [Thread-196591] [transport.py] [_log()] server lang: <none>
2025-11-24T20:34:23.981 [DEBUG] [Thread-196591] [transport.py] [_log()] kex follows: False
2025-11-24T20:34:23.981 [DEBUG] [Thread-196591] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:34:23.981 [DEBUG] [Thread-196591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:34:23.981 [DEBUG] [Thread-196591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:34:23.981 [DEBUG] [Thread-196591] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:34:23.981 [DEBUG] [Thread-196591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:34:23.981 [DEBUG] [Thread-196591] [transport.py] [_log()] Compression: none
2025-11-24T20:34:23.981 [DEBUG] [Thread-196591] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:34:24.037 [DEBUG] [Thread-196591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:34:24.038 [DEBUG] [Thread-196591] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:34:24.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:34:24.039 [DEBUG] [Thread-196591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:34:24.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:34:24.093 [DEBUG] [Thread-196591] [transport.py] [_log()] userauth is OK
2025-11-24T20:34:24.093 [DEBUG] [Thread-196591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:34:24.093 [DEBUG] [Thread-196591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:34:24.093 [DEBUG] [Thread-196591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:34:24.093 [DEBUG] [Thread-196591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:34:24.110 [INFO] [Thread-196591] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:34:24.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:34:24.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:34:24.609 [DEBUG] [Thread-196593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:34:25.008 [DEBUG] [Thread-196591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:34:25.008 [DEBUG] [Thread-196591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:34:25.055 [DEBUG] [Thread-196591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:34:25.055 [DEBUG] [Thread-196591] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:34:25.064 [DEBUG] [Thread-196591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:34:25.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:34:25.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-11-24T20:34:25.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-11-24T20:34:25.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:34:25.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:34:25.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:34:25.101 [DEBUG] [Thread-196591] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:34:40.172 [DEBUG] [Thread-196594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:34:52.753 [DEBUG] [Thread-196595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:34:55.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:34:55.127 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:34:55.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-11-24T20:34:55.542 [DEBUG] [Thread-196596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:34:57.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 34, 34), 17.45, 30.64, 0.0, 31.21, 16.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:34:57.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:34:34
2025-11-24T20:34:57.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:34:57.455 [DEBUG] [Thread-196597] [transport.py] [_log()] starting thread (client mode): 0xd07005b0
2025-11-24T20:34:57.457 [DEBUG] [Thread-196597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:34:57.457 [DEBUG] [Thread-196597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:34:57.457 [INFO] [Thread-196597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] client lang: <none>
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] server lang: <none>
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] kex follows: False
2025-11-24T20:34:57.462 [DEBUG] [Thread-196597] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:34:57.463 [DEBUG] [Thread-196597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:34:57.463 [DEBUG] [Thread-196597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:34:57.463 [DEBUG] [Thread-196597] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:34:57.463 [DEBUG] [Thread-196597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:34:57.463 [DEBUG] [Thread-196597] [transport.py] [_log()] Compression: none
2025-11-24T20:34:57.463 [DEBUG] [Thread-196597] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:34:57.496 [DEBUG] [Thread-196597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:34:57.498 [DEBUG] [Thread-196597] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:34:57.500 [DEBUG] [Thread-196597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:34:57.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:34:57.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:34:57.503 [DEBUG] [Thread-196597] [transport.py] [_log()] userauth is OK
2025-11-24T20:34:57.503 [DEBUG] [Thread-196597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:34:57.504 [DEBUG] [Thread-196597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:34:57.504 [DEBUG] [Thread-196597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:34:57.504 [DEBUG] [Thread-196597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:34:57.527 [INFO] [Thread-196597] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:34:57.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:34:58.182 [DEBUG] [Thread-196597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:34:58.182 [DEBUG] [Thread-196597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:34:58.183 [DEBUG] [Thread-196597] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:34:58.223 [DEBUG] [Thread-196597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:34:58.223 [DEBUG] [Thread-196597] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:34:58.226 [DEBUG] [Thread-196597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:34:58.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:34:58.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:34:58.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:34:58.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:34:58.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:34:58.246 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:34:58.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:34:58.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:34:58.252 [DEBUG] [Thread-196597] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:34:58.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:34:58.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.774007 -999.00  +16.90  22.16     35   +1.70 1 1 1 1 1     0    0 14.25 -39.06 ZNESW 17.1 22.2 172.4 24.1 17.1 -26.3 17.1 -25.8 16.8 -24.7 17.0 -25.8
2025-11-24T20:34:58.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:34:58.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:34:58.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.774007
2025-11-24T20:34:58.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:34:58.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:34:58.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:34:58.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:34:58.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:34:58.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:34:34', tmtdew=17.45, humidity=30.64, cloud=0.0, wind=31.21, temperature=16.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:34:34', seeing=0.74, atlas_timestamp='2025-11-24T18:34:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, 0.03325000000000067, 0.04925000000000068, -0.04550000000000054, 0.08249999999999957, 0.09025000000000105, 0.0039999999999995595, 0.05375000000000085, -0.022500000000000853, 0.0470000000000006, 0.025749999999998607, 0.04899999999999949, 0.14700000000000024, 0.1272499999999983, 0.022999999999999687, 0.010999999999999233, 0.07324999999999982, 0.03049999999999997, 0.06599999999999895, 0.022749999999998494, 0.10199999999999854, 0.01774999999999949, 0.05125000000000135, 0.023749999999999716, 0.010999999999999233, 0.0365000000000002, 0.07075000000000031, 0.12850000000000072, 0.1039999999999992, 0.10200000000000031, 0.07800000000000118, 0.08800000000000097, 0.0467499999999994], zp_timestamp='2025-11-24T18:31:00')
2025-11-24T20:34:58.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:34:58.366 [DEBUG] [Thread-196600] [transport.py] [_log()] starting thread (client mode): 0xd0784670
2025-11-24T20:34:58.366 [DEBUG] [Thread-196600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:34:58.382 [DEBUG] [Thread-196600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:34:58.382 [INFO] [Thread-196600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] client lang: <none>
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] server lang: <none>
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] kex follows: False
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] Compression: none
2025-11-24T20:34:58.390 [DEBUG] [Thread-196600] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:34:58.448 [DEBUG] [Thread-196600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:34:58.448 [DEBUG] [Thread-196600] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:34:58.448 [DEBUG] [Thread-196600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:34:58.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:34:58.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:34:58.505 [DEBUG] [Thread-196600] [transport.py] [_log()] userauth is OK
2025-11-24T20:34:58.505 [DEBUG] [Thread-196600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:34:58.505 [DEBUG] [Thread-196600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:34:58.505 [DEBUG] [Thread-196600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:34:58.505 [DEBUG] [Thread-196600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:34:58.523 [INFO] [Thread-196600] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:34:58.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:34:58.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:34:59.408 [DEBUG] [Thread-196600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:34:59.408 [DEBUG] [Thread-196600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:34:59.456 [DEBUG] [Thread-196600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:34:59.456 [DEBUG] [Thread-196600] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:34:59.465 [DEBUG] [Thread-196600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:34:59.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:34:59.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:34:59.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-11-24T20:34:59.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:34:59.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:34:59.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:34:59.499 [DEBUG] [Thread-196600] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:35:10.666 [DEBUG] [Thread-196602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:35:18.984 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:35:18.999 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:35:21.034 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:35:26.203 [DEBUG] [Thread-196603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:35:27.755 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:35:29.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:35:29.537 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:35:29.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:35:31.846 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:35:32.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 35, 9), 17.44, 30.66, 0.0, 30.44, 16.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:35:32.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:35:09
2025-11-24T20:35:33.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:35:33.271 [DEBUG] [Thread-196604] [transport.py] [_log()] starting thread (client mode): 0xd0711d50
2025-11-24T20:35:33.272 [DEBUG] [Thread-196604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:35:33.273 [DEBUG] [Thread-196604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:35:33.273 [INFO] [Thread-196604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] client lang: <none>
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] server lang: <none>
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] kex follows: False
2025-11-24T20:35:33.279 [DEBUG] [Thread-196604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:35:33.280 [DEBUG] [Thread-196604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:35:33.280 [DEBUG] [Thread-196604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:35:33.280 [DEBUG] [Thread-196604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:35:33.280 [DEBUG] [Thread-196604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:35:33.280 [DEBUG] [Thread-196604] [transport.py] [_log()] Compression: none
2025-11-24T20:35:33.280 [DEBUG] [Thread-196604] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:35:33.312 [DEBUG] [Thread-196604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:35:33.318 [DEBUG] [Thread-196604] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:35:33.319 [DEBUG] [Thread-196604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:35:33.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:35:33.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:35:33.324 [DEBUG] [Thread-196604] [transport.py] [_log()] userauth is OK
2025-11-24T20:35:33.324 [DEBUG] [Thread-196604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:35:33.324 [DEBUG] [Thread-196604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:35:33.324 [DEBUG] [Thread-196604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:35:33.324 [DEBUG] [Thread-196604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:35:33.344 [INFO] [Thread-196604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:35:33.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:35:33.992 [DEBUG] [Thread-196604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:35:33.993 [DEBUG] [Thread-196604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:35:33.993 [DEBUG] [Thread-196604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:35:34.033 [DEBUG] [Thread-196604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:35:34.033 [DEBUG] [Thread-196604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:35:34.036 [DEBUG] [Thread-196604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:35:34.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:35:34.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:35:34.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:35:34.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:35:34.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:35:34.061 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:35:34.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:35:34.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:35:34.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:35:34.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.774354 -999.00  +16.90  20.65     36   +1.70 1 1 1 1 1     0    0 14.34 -32.10 ZNESW 21.6 20.6 166.8 29.7 17.1 -26.3 17.0 -25.8 16.8 -24.7 17.1 -25.6
2025-11-24T20:35:34.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:35:34.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:35:34.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.774354
2025-11-24T20:35:34.068 [DEBUG] [Thread-196604] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:35:34.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:35:34.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:35:34.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:35:34.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:35:34.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:35:34.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:35:09', tmtdew=17.44, humidity=30.66, cloud=0.0, wind=30.44, temperature=16.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:35:09', seeing=0.74, atlas_timestamp='2025-11-24T18:35:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, 0.03325000000000067, 0.04925000000000068, -0.04550000000000054, 0.08249999999999957, 0.09025000000000105, 0.0039999999999995595, 0.05375000000000085, -0.022500000000000853, 0.0470000000000006, 0.025749999999998607, 0.04899999999999949, 0.14700000000000024, 0.1272499999999983, 0.022999999999999687, 0.010999999999999233, 0.07324999999999982, 0.03049999999999997, 0.06599999999999895, 0.022749999999998494, 0.10199999999999854, 0.01774999999999949, 0.05125000000000135, 0.023749999999999716, 0.010999999999999233, 0.0365000000000002, 0.07075000000000031, 0.12850000000000072, 0.1039999999999992, 0.10200000000000031, 0.07800000000000118, 0.08800000000000097, 0.0467499999999994], zp_timestamp='2025-11-24T18:31:00')
2025-11-24T20:35:34.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:35:34.174 [DEBUG] [Thread-196607] [transport.py] [_log()] starting thread (client mode): 0xd317ea70
2025-11-24T20:35:34.174 [DEBUG] [Thread-196607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:35:34.190 [DEBUG] [Thread-196607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:35:34.190 [INFO] [Thread-196607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:35:34.197 [DEBUG] [Thread-196607] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:35:34.197 [DEBUG] [Thread-196607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:35:34.197 [DEBUG] [Thread-196607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:35:34.197 [DEBUG] [Thread-196607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:35:34.197 [DEBUG] [Thread-196607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:35:34.197 [DEBUG] [Thread-196607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:35:34.197 [DEBUG] [Thread-196607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] client lang: <none>
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] server lang: <none>
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] kex follows: False
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] Compression: none
2025-11-24T20:35:34.198 [DEBUG] [Thread-196607] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:35:34.257 [DEBUG] [Thread-196607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:35:34.257 [DEBUG] [Thread-196607] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:35:34.257 [DEBUG] [Thread-196607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:35:34.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:35:34.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:35:34.313 [DEBUG] [Thread-196607] [transport.py] [_log()] userauth is OK
2025-11-24T20:35:34.313 [DEBUG] [Thread-196607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:35:34.313 [DEBUG] [Thread-196607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:35:34.313 [DEBUG] [Thread-196607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:35:34.313 [DEBUG] [Thread-196607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:35:34.327 [INFO] [Thread-196607] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:35: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-11-24T20:35:34.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:35:35.162 [DEBUG] [Thread-196607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:35:35.162 [DEBUG] [Thread-196607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:35:35.210 [DEBUG] [Thread-196607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:35:35.210 [DEBUG] [Thread-196607] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:35:35.218 [DEBUG] [Thread-196607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:35:35.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:35:35.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-11-24T20:35:35.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:35:35.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:35:35.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:35:35.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:35:35.254 [DEBUG] [Thread-196607] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:35:41.579 [DEBUG] [Thread-196609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:35:53.330 [DEBUG] [Thread-196610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:35:56.760 [DEBUG] [Thread-196611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:36:05.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:36:05.280 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:36:05.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:36:07.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 35, 43), 17.44, 30.64, 0.0, 28.46, 16.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:36:07.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:35:43
2025-11-24T20:36:07.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:36:07.557 [DEBUG] [Thread-196612] [transport.py] [_log()] starting thread (client mode): 0xd0700460
2025-11-24T20:36:07.558 [DEBUG] [Thread-196612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:36:07.563 [DEBUG] [Thread-196612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:36:07.563 [INFO] [Thread-196612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] client lang: <none>
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] server lang: <none>
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] kex follows: False
2025-11-24T20:36:07.569 [DEBUG] [Thread-196612] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:36:07.570 [DEBUG] [Thread-196612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:36:07.570 [DEBUG] [Thread-196612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:36:07.570 [DEBUG] [Thread-196612] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:36:07.570 [DEBUG] [Thread-196612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:36:07.570 [DEBUG] [Thread-196612] [transport.py] [_log()] Compression: none
2025-11-24T20:36:07.570 [DEBUG] [Thread-196612] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:36:07.600 [DEBUG] [Thread-196612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:36:07.606 [DEBUG] [Thread-196612] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:36:07.609 [DEBUG] [Thread-196612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:36:07.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:36:07.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:36:07.619 [DEBUG] [Thread-196612] [transport.py] [_log()] userauth is OK
2025-11-24T20:36:07.620 [DEBUG] [Thread-196612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:36:07.620 [DEBUG] [Thread-196612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:36:07.620 [DEBUG] [Thread-196612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:36:07.620 [DEBUG] [Thread-196612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:36:07.639 [INFO] [Thread-196612] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:36:07.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:36:08.273 [DEBUG] [Thread-196612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:36:08.274 [DEBUG] [Thread-196612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:36:08.274 [DEBUG] [Thread-196612] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:36:08.315 [DEBUG] [Thread-196612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:36:08.315 [DEBUG] [Thread-196612] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:36:08.318 [DEBUG] [Thread-196612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:36:08.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:36:08.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:36:08.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:36:08.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:36:08.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:36:08.339 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:36:08.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:36:08.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:36:08.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:36:08.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.774702 -999.00  +16.80  19.91     36   +1.70 1 1 1 1 1     0    0 14.57 -34.11 ZNESW 17.5 19.9 176.6 24.0 17.1 -26.3 17.0 -25.7 16.8 -24.6 17.1 -25.6
2025-11-24T20:36:08.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:36:08.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:36:08.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.774702
2025-11-24T20:36:08.346 [DEBUG] [Thread-196612] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:36:08.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:36:08.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:36:08.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:36:08.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:36:08.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:36:08.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:35:43', tmtdew=17.44, humidity=30.64, cloud=0.0, wind=28.46, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:35:44', seeing=0.78, atlas_timestamp='2025-11-24T18:35:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, 0.03325000000000067, 0.04925000000000068, -0.04550000000000054, 0.08249999999999957, 0.09025000000000105, 0.0039999999999995595, 0.05375000000000085, -0.022500000000000853, 0.0470000000000006, 0.025749999999998607, 0.04899999999999949, 0.14700000000000024, 0.1272499999999983, 0.022999999999999687, 0.010999999999999233, 0.07324999999999982, 0.03049999999999997, 0.06599999999999895, 0.022749999999998494, 0.10199999999999854, 0.01774999999999949, 0.05125000000000135, 0.023749999999999716, 0.010999999999999233, 0.0365000000000002, 0.07075000000000031, 0.12850000000000072, 0.1039999999999992, 0.10200000000000031, 0.07800000000000118, 0.08800000000000097, 0.0467499999999994], zp_timestamp='2025-11-24T18:31:00')
2025-11-24T20:36:08.436 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:36:08.449 [DEBUG] [Thread-196615] [transport.py] [_log()] starting thread (client mode): 0xd0713b20
2025-11-24T20:36:08.449 [DEBUG] [Thread-196615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:36:08.463 [DEBUG] [Thread-196615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:36:08.463 [INFO] [Thread-196615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:36:08.470 [DEBUG] [Thread-196615] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] client lang: <none>
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] server lang: <none>
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] kex follows: False
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] Compression: none
2025-11-24T20:36:08.471 [DEBUG] [Thread-196615] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:36:08.528 [DEBUG] [Thread-196615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:36:08.528 [DEBUG] [Thread-196615] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:36:08.529 [DEBUG] [Thread-196615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:36:08.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:36:08.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:36:08.585 [DEBUG] [Thread-196615] [transport.py] [_log()] userauth is OK
2025-11-24T20:36:08.585 [DEBUG] [Thread-196615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:36:08.585 [DEBUG] [Thread-196615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:36:08.585 [DEBUG] [Thread-196615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:36:08.585 [DEBUG] [Thread-196615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:36:08.599 [INFO] [Thread-196615] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:36:08.599 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:36:08.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:36:09.469 [DEBUG] [Thread-196615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:36:09.469 [DEBUG] [Thread-196615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:36:09.517 [DEBUG] [Thread-196615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:36:09.518 [DEBUG] [Thread-196615] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:36:09.526 [DEBUG] [Thread-196615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:36:09.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:36:09.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:36:09.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-11-24T20:36:09.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:36:09.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:36:09.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:36:09.561 [DEBUG] [Thread-196615] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:36:11.878 [DEBUG] [Thread-196617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:36:19.228 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:36:19.251 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:36:27.106 [DEBUG] [Thread-196618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:36:39.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:36:39.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:36:39.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-11-24T20:36:41.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 36, 19), 17.47, 30.59, 0.0, 30.45, 17.0, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:36:41.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:36:19
2025-11-24T20:36:41.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:36:41.793 [DEBUG] [Thread-196619] [transport.py] [_log()] starting thread (client mode): 0xd07103d0
2025-11-24T20:36:41.794 [DEBUG] [Thread-196619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:36:41.797 [DEBUG] [Thread-196619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:36:41.801 [INFO] [Thread-196619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] client lang: <none>
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] server lang: <none>
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] kex follows: False
2025-11-24T20:36:41.832 [DEBUG] [Thread-196619] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:36:41.833 [DEBUG] [Thread-196619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:36:41.833 [DEBUG] [Thread-196619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:36:41.833 [DEBUG] [Thread-196619] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:36:41.833 [DEBUG] [Thread-196619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:36:41.833 [DEBUG] [Thread-196619] [transport.py] [_log()] Compression: none
2025-11-24T20:36:41.833 [DEBUG] [Thread-196619] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:36:41.895 [DEBUG] [Thread-196619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:36:41.901 [DEBUG] [Thread-196619] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:36:41.903 [DEBUG] [Thread-196619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:36:41.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:36:41.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:36:41.909 [DEBUG] [Thread-196619] [transport.py] [_log()] userauth is OK
2025-11-24T20:36:41.909 [DEBUG] [Thread-196619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:36:41.910 [DEBUG] [Thread-196619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:36:41.910 [DEBUG] [Thread-196619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:36:41.910 [DEBUG] [Thread-196619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:36:41.941 [INFO] [Thread-196619] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:36:41.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:36:42.203 [DEBUG] [Thread-196621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:36:42.581 [DEBUG] [Thread-196619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:36:42.581 [DEBUG] [Thread-196619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:36:42.582 [DEBUG] [Thread-196619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:36:42.622 [DEBUG] [Thread-196619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:36:42.622 [DEBUG] [Thread-196619] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:36:42.625 [DEBUG] [Thread-196619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:36:42.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:36:42.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:36:42.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:36:42.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:36:42.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:36:42.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:36:42.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:36:42.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:36:42.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:36:42.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.775049 -999.00  +16.80  16.64     36   +1.70 1 1 1 1 1     0    0 14.25 -33.49 ZNESW 16.0 16.6 176.0 24.3 17.1 -26.3 17.0 -25.7 16.8 -24.6 17.1 -25.5
2025-11-24T20:36:42.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:36:42.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:36:42.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.775049
2025-11-24T20:36:42.654 [DEBUG] [Thread-196619] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:36:42.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:36:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:36:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:36:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:36:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:36:42.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:36:19', tmtdew=17.47, humidity=30.59, cloud=0.0, wind=30.45, temperature=17.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:36:19', seeing=0.71, atlas_timestamp='2025-11-24T18:36:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.029749999999999943, 0.024250000000000327, 0.011999999999998678, 0.03950000000000031, 0.07175000000000153, 0.0030000000000001137, 0.09525000000000006, 0.048500000000000654, 0.0365000000000002, 0.0442499999999999, 0.03700000000000081, 0.11250000000000071, 0.13824999999999932, 0.023499999999998522, 0.03599999999999959, 0.052250000000000796, 0.053500000000001435, 0.07899999999999885, 0.03224999999999767, 0.1169999999999991, 0.0727499999999992, 0.056750000000000966, 0.0012500000000006395, 0.013999999999999346, 0.059499999999999886, 0.09074999999999989, 0.11450000000000138, 0.06300000000000061, 0.02650000000000219, 0.06800000000000139, 0.06900000000000084, 0.07174999999999976], zp_timestamp='2025-11-24T18:36:00')
2025-11-24T20:36:42.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:36:42.763 [DEBUG] [Thread-196623] [transport.py] [_log()] starting thread (client mode): 0xd3150910
2025-11-24T20:36:42.763 [DEBUG] [Thread-196623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:36:42.778 [DEBUG] [Thread-196623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:36:42.778 [INFO] [Thread-196623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] client lang: <none>
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] server lang: <none>
2025-11-24T20:36:42.785 [DEBUG] [Thread-196623] [transport.py] [_log()] kex follows: False
2025-11-24T20:36:42.786 [DEBUG] [Thread-196623] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:36:42.786 [DEBUG] [Thread-196623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:36:42.786 [DEBUG] [Thread-196623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:36:42.786 [DEBUG] [Thread-196623] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:36:42.786 [DEBUG] [Thread-196623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:36:42.786 [DEBUG] [Thread-196623] [transport.py] [_log()] Compression: none
2025-11-24T20:36:42.786 [DEBUG] [Thread-196623] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:36:42.843 [DEBUG] [Thread-196623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:36:42.843 [DEBUG] [Thread-196623] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:36:42.843 [DEBUG] [Thread-196623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:36:42.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:36:42.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:36:42.904 [DEBUG] [Thread-196623] [transport.py] [_log()] userauth is OK
2025-11-24T20:36:42.904 [DEBUG] [Thread-196623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:36:42.904 [DEBUG] [Thread-196623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:36:42.904 [DEBUG] [Thread-196623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:36:42.904 [DEBUG] [Thread-196623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:36:42.918 [INFO] [Thread-196623] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:36:42.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:36:42.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:36:43.786 [DEBUG] [Thread-196623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:36:43.786 [DEBUG] [Thread-196623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:36:43.834 [DEBUG] [Thread-196623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:36:43.834 [DEBUG] [Thread-196623] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:36:43.842 [DEBUG] [Thread-196623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:36:43.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:36:43.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-11-24T20:36:43.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-11-24T20:36:43.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:36:43.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:36:43.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:36:43.876 [DEBUG] [Thread-196623] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:36:54.351 [DEBUG] [Thread-196625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:36:57.380 [DEBUG] [Thread-196626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:37:13.224 [DEBUG] [Thread-196627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:37:13.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:37:13.902 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:37:13.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-11-24T20:37:15.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 36, 53), 17.44, 30.66, 0.0, 28.74, 16.96, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:37:15.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:36:53
2025-11-24T20:37:16.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:37:16.278 [DEBUG] [Thread-196628] [transport.py] [_log()] starting thread (client mode): 0xd07859f0
2025-11-24T20:37:16.279 [DEBUG] [Thread-196628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:37:16.284 [DEBUG] [Thread-196628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:37:16.285 [INFO] [Thread-196628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:37:16.292 [DEBUG] [Thread-196628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] client lang: <none>
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] server lang: <none>
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] kex follows: False
2025-11-24T20:37:16.293 [DEBUG] [Thread-196628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:37:16.294 [DEBUG] [Thread-196628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:37:16.294 [DEBUG] [Thread-196628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:37:16.295 [DEBUG] [Thread-196628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:37:16.295 [DEBUG] [Thread-196628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:37:16.295 [DEBUG] [Thread-196628] [transport.py] [_log()] Compression: none
2025-11-24T20:37:16.295 [DEBUG] [Thread-196628] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:37:16.339 [DEBUG] [Thread-196628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:37:16.346 [DEBUG] [Thread-196628] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:37:16.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:37:16.350 [DEBUG] [Thread-196628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:37:16.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:37:16.355 [DEBUG] [Thread-196628] [transport.py] [_log()] userauth is OK
2025-11-24T20:37:16.355 [DEBUG] [Thread-196628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:37:16.356 [DEBUG] [Thread-196628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:37:16.356 [DEBUG] [Thread-196628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:37:16.356 [DEBUG] [Thread-196628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:37:16.385 [INFO] [Thread-196628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:37:16.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:37:17.021 [DEBUG] [Thread-196628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:37:17.021 [DEBUG] [Thread-196628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:37:17.022 [DEBUG] [Thread-196628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:37:17.062 [DEBUG] [Thread-196628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:37:17.062 [DEBUG] [Thread-196628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:37:17.065 [DEBUG] [Thread-196628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:37:17.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:37:17.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:37:17.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:37:17.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:37:17.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:37:17.084 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:37:17.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:37:17.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:37:17.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:37:17.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.775396 -999.00  +16.80  14.69     36   +1.70 1 1 1 1 1     0    0 14.57 -33.55 ZNESW 17.1 14.7 174.5 29.3 17.1 -26.3 17.0 -25.8 16.8 -24.6 17.0 -25.5
2025-11-24T20:37:17.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:37:17.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:37:17.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.775396
2025-11-24T20:37:17.092 [DEBUG] [Thread-196628] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:37:17.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:37:17.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:37:17.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:37:17.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:37:17.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:37:17.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:36:53', tmtdew=17.44, humidity=30.66, cloud=0.0, wind=28.74, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:36:53', seeing=0.67, atlas_timestamp='2025-11-24T18:36:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.029749999999999943, 0.024250000000000327, 0.011999999999998678, 0.03950000000000031, 0.07175000000000153, 0.0030000000000001137, 0.09525000000000006, 0.048500000000000654, 0.0365000000000002, 0.0442499999999999, 0.03700000000000081, 0.11250000000000071, 0.13824999999999932, 0.023499999999998522, 0.03599999999999959, 0.052250000000000796, 0.053500000000001435, 0.07899999999999885, 0.03224999999999767, 0.1169999999999991, 0.0727499999999992, 0.056750000000000966, 0.0012500000000006395, 0.013999999999999346, 0.059499999999999886, 0.09074999999999989, 0.11450000000000138, 0.06300000000000061, 0.02650000000000219, 0.06800000000000139, 0.06900000000000084, 0.07174999999999976], zp_timestamp='2025-11-24T18:36:00')
2025-11-24T20:37:17.181 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:37:17.193 [DEBUG] [Thread-196631] [transport.py] [_log()] starting thread (client mode): 0xd073b670
2025-11-24T20:37:17.193 [DEBUG] [Thread-196631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:37:17.208 [DEBUG] [Thread-196631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:37:17.208 [INFO] [Thread-196631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:37:17.215 [DEBUG] [Thread-196631] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:37:17.215 [DEBUG] [Thread-196631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:37:17.215 [DEBUG] [Thread-196631] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:37:17.215 [DEBUG] [Thread-196631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:37:17.215 [DEBUG] [Thread-196631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:37:17.215 [DEBUG] [Thread-196631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] client lang: <none>
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] server lang: <none>
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] kex follows: False
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] Compression: none
2025-11-24T20:37:17.216 [DEBUG] [Thread-196631] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:37:17.271 [DEBUG] [Thread-196631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:37:17.272 [DEBUG] [Thread-196631] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:37:17.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:37:17.272 [DEBUG] [Thread-196631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:37:17.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:37:17.328 [DEBUG] [Thread-196631] [transport.py] [_log()] userauth is OK
2025-11-24T20:37:17.329 [DEBUG] [Thread-196631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:37:17.329 [DEBUG] [Thread-196631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:37:17.329 [DEBUG] [Thread-196631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:37:17.329 [DEBUG] [Thread-196631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:37:17.352 [INFO] [Thread-196631] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:37:17.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:37:17.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:37:18.191 [DEBUG] [Thread-196631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:37:18.191 [DEBUG] [Thread-196631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:37:18.238 [DEBUG] [Thread-196631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:37:18.238 [DEBUG] [Thread-196631] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:37:18.246 [DEBUG] [Thread-196631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:37:18.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:37:18.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-11-24T20:37: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') -> 00000000
2025-11-24T20:37:18.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:37:18.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:37:18.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:37:18.279 [DEBUG] [Thread-196631] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:37:19.457 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:37:19.462 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:37:28.533 [DEBUG] [Thread-196633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:37:44.401 [DEBUG] [Thread-196634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:37:48.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:37:48.306 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:37:48.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-11-24T20:37:52.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 37, 30), 17.4, 30.76, 0.0, 25.14, 17.0, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:37:52.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:37:30
2025-11-24T20:37:53.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:37:53.760 [DEBUG] [Thread-196635] [transport.py] [_log()] starting thread (client mode): 0xd073a1a0
2025-11-24T20:37:53.769 [DEBUG] [Thread-196635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:37:53.773 [DEBUG] [Thread-196635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:37:53.773 [INFO] [Thread-196635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:37:53.793 [DEBUG] [Thread-196635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:37:53.793 [DEBUG] [Thread-196635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:37:53.793 [DEBUG] [Thread-196635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:37:53.793 [DEBUG] [Thread-196635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:37:53.793 [DEBUG] [Thread-196635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:37:53.793 [DEBUG] [Thread-196635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:37:53.793 [DEBUG] [Thread-196635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:37:53.793 [DEBUG] [Thread-196635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:37:53.794 [DEBUG] [Thread-196635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:37:53.794 [DEBUG] [Thread-196635] [transport.py] [_log()] client lang: <none>
2025-11-24T20:37:53.794 [DEBUG] [Thread-196635] [transport.py] [_log()] server lang: <none>
2025-11-24T20:37:53.794 [DEBUG] [Thread-196635] [transport.py] [_log()] kex follows: False
2025-11-24T20:37:53.794 [DEBUG] [Thread-196635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:37:53.797 [DEBUG] [Thread-196635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:37:53.797 [DEBUG] [Thread-196635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:37:53.798 [DEBUG] [Thread-196635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:37:53.798 [DEBUG] [Thread-196635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:37:53.798 [DEBUG] [Thread-196635] [transport.py] [_log()] Compression: none
2025-11-24T20:37:53.798 [DEBUG] [Thread-196635] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:37:53.906 [DEBUG] [Thread-196635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:37:53.924 [DEBUG] [Thread-196635] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:37:53.932 [DEBUG] [Thread-196635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:37:53.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:37:53.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:37:53.957 [DEBUG] [Thread-196635] [transport.py] [_log()] userauth is OK
2025-11-24T20:37:53.957 [DEBUG] [Thread-196635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:37:53.959 [DEBUG] [Thread-196635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:37:53.959 [DEBUG] [Thread-196635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:37:53.959 [DEBUG] [Thread-196635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:37:54.068 [INFO] [Thread-196635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:37:54.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:37:54.664 [DEBUG] [Thread-196635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:37:54.665 [DEBUG] [Thread-196635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:37:54.670 [DEBUG] [Thread-196635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:37:54.670 [DEBUG] [Thread-196635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:37:54.671 [DEBUG] [Thread-196635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:37:54.675 [DEBUG] [Thread-196635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:37:54.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:37:54.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:37:54.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:37:54.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:37:54.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:37:54.717 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:37:54.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:37:54.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:37:54.727 [DEBUG] [Thread-196635] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:37:54.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:37:54.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.776091 -999.00  +16.80  18.06     36   +1.70 1 1 1 1 1     0    0 14.38 -31.67 ZNESW 13.7 18.1 179.0 24.9 17.1 -26.3 17.0 -25.8 16.8 -24.7 17.0 -25.6
2025-11-24T20:37:54.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:37:54.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:37:54.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.776091
2025-11-24T20:37:54.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:37:54.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:37:54.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:37:54.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:37:54.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:37:54.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:37:30', tmtdew=17.4, humidity=30.76, cloud=0.0, wind=25.14, temperature=17.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:37:32', seeing=0.64, atlas_timestamp='2025-11-24T18:37:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.029749999999999943, 0.024250000000000327, 0.011999999999998678, 0.03950000000000031, 0.07175000000000153, 0.0030000000000001137, 0.09525000000000006, 0.048500000000000654, 0.0365000000000002, 0.0442499999999999, 0.03700000000000081, 0.11250000000000071, 0.13824999999999932, 0.023499999999998522, 0.03599999999999959, 0.052250000000000796, 0.053500000000001435, 0.07899999999999885, 0.03224999999999767, 0.1169999999999991, 0.0727499999999992, 0.056750000000000966, 0.0012500000000006395, 0.013999999999999346, 0.059499999999999886, 0.09074999999999989, 0.11450000000000138, 0.06300000000000061, 0.02650000000000219, 0.06800000000000139, 0.06900000000000084, 0.07174999999999976], zp_timestamp='2025-11-24T18:36:00')
2025-11-24T20:37:54.945 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:37:54.960 [DEBUG] [Thread-196638] [transport.py] [_log()] starting thread (client mode): 0xd07123b0
2025-11-24T20:37:54.960 [DEBUG] [Thread-196638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:37:54.974 [DEBUG] [Thread-196638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:37:54.974 [INFO] [Thread-196638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:37:54.981 [DEBUG] [Thread-196638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:37:54.981 [DEBUG] [Thread-196638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:37:54.982 [DEBUG] [Thread-196638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:37:54.982 [DEBUG] [Thread-196638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:37:54.982 [DEBUG] [Thread-196638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:37:54.982 [DEBUG] [Thread-196638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:37:54.982 [DEBUG] [Thread-196638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:37:54.982 [DEBUG] [Thread-196638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:37:54.982 [DEBUG] [Thread-196638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:37:54.982 [DEBUG] [Thread-196638] [transport.py] [_log()] client lang: <none>
2025-11-24T20:37:54.983 [DEBUG] [Thread-196638] [transport.py] [_log()] server lang: <none>
2025-11-24T20:37:54.983 [DEBUG] [Thread-196638] [transport.py] [_log()] kex follows: False
2025-11-24T20:37:54.983 [DEBUG] [Thread-196638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:37:54.983 [DEBUG] [Thread-196638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:37:54.983 [DEBUG] [Thread-196638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:37:54.983 [DEBUG] [Thread-196638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:37:54.983 [DEBUG] [Thread-196638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:37:54.983 [DEBUG] [Thread-196638] [transport.py] [_log()] Compression: none
2025-11-24T20:37:54.984 [DEBUG] [Thread-196638] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:37:55.040 [DEBUG] [Thread-196638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:37:55.040 [DEBUG] [Thread-196638] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:37:55.041 [DEBUG] [Thread-196638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:37:55.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:37:55.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:37:55.096 [DEBUG] [Thread-196638] [transport.py] [_log()] userauth is OK
2025-11-24T20:37:55.096 [DEBUG] [Thread-196638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:37:55.096 [DEBUG] [Thread-196638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:37:55.096 [DEBUG] [Thread-196638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:37:55.097 [DEBUG] [Thread-196638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:37:55.120 [INFO] [Thread-196638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:37:55.120 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:37:55.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:37:55.976 [DEBUG] [Thread-196638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:37:55.976 [DEBUG] [Thread-196638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:37:56.023 [DEBUG] [Thread-196638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:37:56.023 [DEBUG] [Thread-196638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:37:56.034 [DEBUG] [Thread-196638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:37:56.039 [DEBUG] [Thread-196640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:37:56.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:37:56.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-11-24T20:37:56.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-11-24T20:37:56.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:37:56.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:37:56.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:37:56.071 [DEBUG] [Thread-196638] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:37:59.548 [DEBUG] [Thread-196641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:38:14.774 [DEBUG] [Thread-196642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:38:19.666 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:38:19.668 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:38:26.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:38:26.149 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:38:26.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:38:30.072 [DEBUG] [Thread-196643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:38:31.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 38, 8), 17.43, 30.66, 0.0, 25.51, 16.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:38:31.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:38:08
2025-11-24T20:38:31.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:38:31.802 [DEBUG] [Thread-196644] [transport.py] [_log()] starting thread (client mode): 0xd0786c80
2025-11-24T20:38:31.802 [DEBUG] [Thread-196644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:38:31.813 [DEBUG] [Thread-196644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:38:31.813 [INFO] [Thread-196644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:38:31.819 [DEBUG] [Thread-196644] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:38:31.820 [DEBUG] [Thread-196644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:38:31.820 [DEBUG] [Thread-196644] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:38:31.820 [DEBUG] [Thread-196644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:38:31.820 [DEBUG] [Thread-196644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:38:31.820 [DEBUG] [Thread-196644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:38:31.820 [DEBUG] [Thread-196644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:38:31.820 [DEBUG] [Thread-196644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:38:31.820 [DEBUG] [Thread-196644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:38:31.821 [DEBUG] [Thread-196644] [transport.py] [_log()] client lang: <none>
2025-11-24T20:38:31.821 [DEBUG] [Thread-196644] [transport.py] [_log()] server lang: <none>
2025-11-24T20:38:31.821 [DEBUG] [Thread-196644] [transport.py] [_log()] kex follows: False
2025-11-24T20:38:31.821 [DEBUG] [Thread-196644] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:38:31.822 [DEBUG] [Thread-196644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:38:31.822 [DEBUG] [Thread-196644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:38:31.822 [DEBUG] [Thread-196644] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:38:31.822 [DEBUG] [Thread-196644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:38:31.822 [DEBUG] [Thread-196644] [transport.py] [_log()] Compression: none
2025-11-24T20:38:31.823 [DEBUG] [Thread-196644] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:38:31.865 [DEBUG] [Thread-196644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:38:31.870 [DEBUG] [Thread-196644] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:38:31.871 [DEBUG] [Thread-196644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:38:31.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:38:31.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:38:31.874 [DEBUG] [Thread-196644] [transport.py] [_log()] userauth is OK
2025-11-24T20:38:31.874 [DEBUG] [Thread-196644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:38:31.875 [DEBUG] [Thread-196644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:38:31.875 [DEBUG] [Thread-196644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:38:31.875 [DEBUG] [Thread-196644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:38:31.893 [INFO] [Thread-196644] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:38:31.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:38:32.541 [DEBUG] [Thread-196644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:38:32.541 [DEBUG] [Thread-196644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:38:32.551 [DEBUG] [Thread-196644] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:38:32.582 [DEBUG] [Thread-196644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:38:32.582 [DEBUG] [Thread-196644] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:38:32.588 [DEBUG] [Thread-196644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:38:32.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:38:32.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:38:32.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:38:32.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:38:32.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:38:32.611 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:38:32.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:38:32.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:38:32.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:38:32.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.776438 -999.00  +16.80  18.67     36   +1.70 1 1 1 1 1     0    0 14.61 -31.05 ZNESW 15.2 18.7 174.0 29.9 17.1 -26.3 17.0 -25.7 16.8 -24.6 17.0 -25.6
2025-11-24T20:38:32.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:38:32.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:38:32.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.776438
2025-11-24T20:38:32.619 [DEBUG] [Thread-196644] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:38:32.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:38:32.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:38:32.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:38:32.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:38:32.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:38:32.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:38:08', tmtdew=17.43, humidity=30.66, cloud=0.0, wind=25.51, temperature=16.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:38:08', seeing=0.58, atlas_timestamp='2025-11-24T18:38:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.029749999999999943, 0.024250000000000327, 0.011999999999998678, 0.03950000000000031, 0.07175000000000153, 0.0030000000000001137, 0.09525000000000006, 0.048500000000000654, 0.0365000000000002, 0.0442499999999999, 0.03700000000000081, 0.11250000000000071, 0.13824999999999932, 0.023499999999998522, 0.03599999999999959, 0.052250000000000796, 0.053500000000001435, 0.07899999999999885, 0.03224999999999767, 0.1169999999999991, 0.0727499999999992, 0.056750000000000966, 0.0012500000000006395, 0.013999999999999346, 0.059499999999999886, 0.09074999999999989, 0.11450000000000138, 0.06300000000000061, 0.02650000000000219, 0.06800000000000139, 0.06900000000000084, 0.07174999999999976], zp_timestamp='2025-11-24T18:36:00')
2025-11-24T20:38: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-11-24T20:38:32.749 [DEBUG] [Thread-196647] [transport.py] [_log()] starting thread (client mode): 0xd07032b0
2025-11-24T20:38:32.749 [DEBUG] [Thread-196647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:38:32.765 [DEBUG] [Thread-196647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:38:32.765 [INFO] [Thread-196647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:38:32.773 [DEBUG] [Thread-196647] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:38:32.773 [DEBUG] [Thread-196647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:38:32.773 [DEBUG] [Thread-196647] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:38:32.773 [DEBUG] [Thread-196647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:38:32.773 [DEBUG] [Thread-196647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] client lang: <none>
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] server lang: <none>
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] kex follows: False
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] Compression: none
2025-11-24T20:38:32.774 [DEBUG] [Thread-196647] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:38:32.830 [DEBUG] [Thread-196647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:38:32.831 [DEBUG] [Thread-196647] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:38:32.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:38:32.831 [DEBUG] [Thread-196647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:38:32.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:38:32.888 [DEBUG] [Thread-196647] [transport.py] [_log()] userauth is OK
2025-11-24T20:38:32.888 [DEBUG] [Thread-196647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:38:32.888 [DEBUG] [Thread-196647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:38:32.888 [DEBUG] [Thread-196647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:38:32.888 [DEBUG] [Thread-196647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:38:32.902 [INFO] [Thread-196647] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:38:32.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:38:32.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:38:33.745 [DEBUG] [Thread-196647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:38:33.745 [DEBUG] [Thread-196647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:38:33.793 [DEBUG] [Thread-196647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:38:33.793 [DEBUG] [Thread-196647] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:38:33.801 [DEBUG] [Thread-196647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:38:33.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:38:33.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-11-24T20:38: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-11-24T20:38:33.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:38:33.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:38:33.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:38:33.834 [DEBUG] [Thread-196647] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:38:45.510 [DEBUG] [Thread-196649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:38:54.637 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:38:56.529 [DEBUG] [Thread-196650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:39:01.321 [DEBUG] [Thread-196651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:39:03.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:39:03.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:39:04.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-11-24T20:39:10.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 38, 46), 17.41, 30.71, 0.0, 25.43, 16.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:39:10.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:38:46
2025-11-24T20:39:11.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:39:11.294 [DEBUG] [Thread-196652] [transport.py] [_log()] starting thread (client mode): 0xd3150400
2025-11-24T20:39:11.297 [DEBUG] [Thread-196652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:39:11.298 [DEBUG] [Thread-196652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:39:11.299 [INFO] [Thread-196652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:39:11.311 [DEBUG] [Thread-196652] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:39:11.313 [DEBUG] [Thread-196652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:39:11.313 [DEBUG] [Thread-196652] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:39:11.313 [DEBUG] [Thread-196652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:39:11.313 [DEBUG] [Thread-196652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:39:11.313 [DEBUG] [Thread-196652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:39:11.314 [DEBUG] [Thread-196652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:39:11.314 [DEBUG] [Thread-196652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:39:11.314 [DEBUG] [Thread-196652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:39:11.314 [DEBUG] [Thread-196652] [transport.py] [_log()] client lang: <none>
2025-11-24T20:39:11.314 [DEBUG] [Thread-196652] [transport.py] [_log()] server lang: <none>
2025-11-24T20:39:11.314 [DEBUG] [Thread-196652] [transport.py] [_log()] kex follows: False
2025-11-24T20:39:11.314 [DEBUG] [Thread-196652] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:39:11.316 [DEBUG] [Thread-196652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:39:11.316 [DEBUG] [Thread-196652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:39:11.316 [DEBUG] [Thread-196652] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:39:11.317 [DEBUG] [Thread-196652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:39:11.317 [DEBUG] [Thread-196652] [transport.py] [_log()] Compression: none
2025-11-24T20:39:11.317 [DEBUG] [Thread-196652] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:39:11.370 [DEBUG] [Thread-196652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:39:11.376 [DEBUG] [Thread-196652] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:39:11.378 [DEBUG] [Thread-196652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:39:11.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:39:11.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:39:11.383 [DEBUG] [Thread-196652] [transport.py] [_log()] userauth is OK
2025-11-24T20:39:11.383 [DEBUG] [Thread-196652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:39:11.383 [DEBUG] [Thread-196652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:39:11.383 [DEBUG] [Thread-196652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:39:11.383 [DEBUG] [Thread-196652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:39:11.408 [INFO] [Thread-196652] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:39:11.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:39:12.051 [DEBUG] [Thread-196652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:39:12.051 [DEBUG] [Thread-196652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:39:12.052 [DEBUG] [Thread-196652] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:39:12.092 [DEBUG] [Thread-196652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:39:12.092 [DEBUG] [Thread-196652] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:39:12.096 [DEBUG] [Thread-196652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:39:12.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:39:12.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:39:12.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:39:12.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:39:12.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:39:12.122 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:39:12.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:39:12.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:39:12.126 [DEBUG] [Thread-196652] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:39:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:39:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.776785 -999.00  +16.80  19.07     36   +1.70 1 1 1 1 1     0    0 14.52 -31.75 ZNESW 16.7 19.1 172.2 27.3 17.1 -26.3 17.0 -25.7 16.7 -24.6 17.0 -25.5
2025-11-24T20:39:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:39:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:39:12.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.776785
2025-11-24T20:39:12.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:39:12.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:39:12.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:39:12.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:39:12.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:39:12.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:38:46', tmtdew=17.41, humidity=30.71, cloud=0.0, wind=25.43, temperature=16.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:38:47', seeing=0.72, atlas_timestamp='2025-11-24T18:38:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.029749999999999943, 0.024250000000000327, 0.011999999999998678, 0.03950000000000031, 0.07175000000000153, 0.0030000000000001137, 0.09525000000000006, 0.048500000000000654, 0.0365000000000002, 0.0442499999999999, 0.03700000000000081, 0.11250000000000071, 0.13824999999999932, 0.023499999999998522, 0.03599999999999959, 0.052250000000000796, 0.053500000000001435, 0.07899999999999885, 0.03224999999999767, 0.1169999999999991, 0.0727499999999992, 0.056750000000000966, 0.0012500000000006395, 0.013999999999999346, 0.059499999999999886, 0.09074999999999989, 0.11450000000000138, 0.06300000000000061, 0.02650000000000219, 0.06800000000000139, 0.06900000000000084, 0.07174999999999976], zp_timestamp='2025-11-24T18:36:00')
2025-11-24T20:39:12.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:39:12.257 [DEBUG] [Thread-196655] [transport.py] [_log()] starting thread (client mode): 0xd07380d0
2025-11-24T20:39:12.257 [DEBUG] [Thread-196655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:39:12.279 [DEBUG] [Thread-196655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:39:12.279 [INFO] [Thread-196655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] client lang: <none>
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] server lang: <none>
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] kex follows: False
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] Compression: none
2025-11-24T20:39:12.287 [DEBUG] [Thread-196655] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:39:12.344 [DEBUG] [Thread-196655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:39:12.344 [DEBUG] [Thread-196655] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:39:12.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:39:12.344 [DEBUG] [Thread-196655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:39:12.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:39:12.407 [DEBUG] [Thread-196655] [transport.py] [_log()] userauth is OK
2025-11-24T20:39:12.407 [DEBUG] [Thread-196655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:39:12.407 [DEBUG] [Thread-196655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:39:12.408 [DEBUG] [Thread-196655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:39:12.408 [DEBUG] [Thread-196655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:39:12.422 [INFO] [Thread-196655] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:39:12.422 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:39:12.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:39:13.302 [DEBUG] [Thread-196655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:39:13.303 [DEBUG] [Thread-196655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:39:13.350 [DEBUG] [Thread-196655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:39:13.350 [DEBUG] [Thread-196655] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:39:13.358 [DEBUG] [Thread-196655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:39:13.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:39: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')
2025-11-24T20:39:13.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-11-24T20:39:13.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:39:13.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:39:13.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:39:13.392 [DEBUG] [Thread-196655] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:39:16.461 [DEBUG] [Thread-196657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:39:19.870 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:39:19.873 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:39:31.692 [DEBUG] [Thread-196658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:39:43.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:39:43.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:39:43.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-11-24T20:39:45.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 39, 22), 17.34, 30.87, 0.0, 26.38, 16.88, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:39:45.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:39:22
2025-11-24T20:39:46.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:39:46.219 [DEBUG] [Thread-196659] [transport.py] [_log()] starting thread (client mode): 0xd3150640
2025-11-24T20:39:46.220 [DEBUG] [Thread-196659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:39:46.221 [DEBUG] [Thread-196659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:39:46.221 [INFO] [Thread-196659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:39:46.229 [DEBUG] [Thread-196659] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:39:46.229 [DEBUG] [Thread-196659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:39:46.229 [DEBUG] [Thread-196659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:39:46.230 [DEBUG] [Thread-196659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:39:46.230 [DEBUG] [Thread-196659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:39:46.230 [DEBUG] [Thread-196659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:39:46.230 [DEBUG] [Thread-196659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:39:46.230 [DEBUG] [Thread-196659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:39:46.230 [DEBUG] [Thread-196659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:39:46.230 [DEBUG] [Thread-196659] [transport.py] [_log()] client lang: <none>
2025-11-24T20:39:46.230 [DEBUG] [Thread-196659] [transport.py] [_log()] server lang: <none>
2025-11-24T20:39:46.230 [DEBUG] [Thread-196659] [transport.py] [_log()] kex follows: False
2025-11-24T20:39:46.230 [DEBUG] [Thread-196659] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:39:46.231 [DEBUG] [Thread-196659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:39:46.232 [DEBUG] [Thread-196659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:39:46.232 [DEBUG] [Thread-196659] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:39:46.232 [DEBUG] [Thread-196659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:39:46.232 [DEBUG] [Thread-196659] [transport.py] [_log()] Compression: none
2025-11-24T20:39:46.232 [DEBUG] [Thread-196659] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:39:46.277 [DEBUG] [Thread-196659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:39:46.288 [DEBUG] [Thread-196659] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:39:46.293 [DEBUG] [Thread-196659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:39:46.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:39:46.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:39:46.305 [DEBUG] [Thread-196659] [transport.py] [_log()] userauth is OK
2025-11-24T20:39:46.305 [DEBUG] [Thread-196659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:39:46.306 [DEBUG] [Thread-196659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:39:46.306 [DEBUG] [Thread-196659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:39:46.306 [DEBUG] [Thread-196659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:39:46.346 [INFO] [Thread-196659] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:39:46.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:39:46.818 [DEBUG] [Thread-196661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:39:46.958 [DEBUG] [Thread-196659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:39:46.958 [DEBUG] [Thread-196659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:39:46.959 [DEBUG] [Thread-196659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:39:46.999 [DEBUG] [Thread-196659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:39:47.000 [DEBUG] [Thread-196659] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:39:47.003 [DEBUG] [Thread-196659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:39:47.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:39:47.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:39:47.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:39:47.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:39:47.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:39:47.027 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:39:47.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:39:47.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:39:47.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:39:47.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.777132 -999.00  +16.70  17.56     36   +1.70 1 1 1 1 1     0    0 14.59 -35.11 ZNESW 16.1 17.6 169.2 23.0 17.0 -26.4 16.9 -25.8 16.6 -24.7 16.9 -25.6
2025-11-24T20:39:47.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:39:47.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:39:47.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.777132
2025-11-24T20:39:47.035 [DEBUG] [Thread-196659] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:39:47.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:39:47.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:39:47.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:39:47.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:39:47.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:39:47.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:39:22', tmtdew=17.34, humidity=30.87, cloud=0.0, wind=26.38, temperature=16.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:39:24', seeing=0.78, atlas_timestamp='2025-11-24T18:39:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.029749999999999943, 0.024250000000000327, 0.011999999999998678, 0.03950000000000031, 0.07175000000000153, 0.0030000000000001137, 0.09525000000000006, 0.048500000000000654, 0.0365000000000002, 0.0442499999999999, 0.03700000000000081, 0.11250000000000071, 0.13824999999999932, 0.023499999999998522, 0.03599999999999959, 0.052250000000000796, 0.053500000000001435, 0.07899999999999885, 0.03224999999999767, 0.1169999999999991, 0.0727499999999992, 0.056750000000000966, 0.0012500000000006395, 0.013999999999999346, 0.059499999999999886, 0.09074999999999989, 0.11450000000000138, 0.06300000000000061, 0.02650000000000219, 0.06800000000000139, 0.06900000000000084, 0.07174999999999976], zp_timestamp='2025-11-24T18:36:00')
2025-11-24T20:39:47.147 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:39:57.031 [DEBUG] [Thread-196663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:02.243 [DEBUG] [Thread-196664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:18.051 [DEBUG] [Thread-196665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:20.080 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:20.090 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:20.606 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:23.829 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:28.910 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:33.548 [DEBUG] [Thread-196666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:35.312 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:49.016 [DEBUG] [Thread-196667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:54.700 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:57.636 [DEBUG] [Thread-196668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:40:59.120 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:04.362 [DEBUG] [Thread-196669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:18.463 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:19.665 [DEBUG] [Thread-196670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:20.294 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:20.296 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:22.957 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:29.633 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:34.084 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:34.817 [DEBUG] [Thread-196671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:49.984 [DEBUG] [Thread-196672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:41:58.113 [DEBUG] [Thread-196673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:42:02.569 [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-11-24T20:42:05.139 [DEBUG] [Thread-196674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:42:20.298 [DEBUG] [Thread-196675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:42:20.500 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:42:20.502 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:42:32.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:42:32.712 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:42:32.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:42:33.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 41, 55), 17.18, 30.97, 0.0, 28.21, 16.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:42:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:41:55
2025-11-24T20:42:34.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:42:34.431 [DEBUG] [Thread-196676] [transport.py] [_log()] starting thread (client mode): 0xd3136680
2025-11-24T20:42:34.434 [DEBUG] [Thread-196676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:42:34.435 [DEBUG] [Thread-196676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:42:34.435 [INFO] [Thread-196676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:42:34.443 [DEBUG] [Thread-196676] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] client lang: <none>
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] server lang: <none>
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] kex follows: False
2025-11-24T20:42:34.444 [DEBUG] [Thread-196676] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:42:34.447 [DEBUG] [Thread-196676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:42:34.447 [DEBUG] [Thread-196676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:42:34.447 [DEBUG] [Thread-196676] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:42:34.447 [DEBUG] [Thread-196676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:42:34.447 [DEBUG] [Thread-196676] [transport.py] [_log()] Compression: none
2025-11-24T20:42:34.447 [DEBUG] [Thread-196676] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:42:34.501 [DEBUG] [Thread-196676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:42:34.508 [DEBUG] [Thread-196676] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:42:34.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:42:34.514 [DEBUG] [Thread-196676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:42:34.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:42:34.518 [DEBUG] [Thread-196676] [transport.py] [_log()] userauth is OK
2025-11-24T20:42:34.518 [DEBUG] [Thread-196676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:42:34.518 [DEBUG] [Thread-196676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:42:34.518 [DEBUG] [Thread-196676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:42:34.518 [DEBUG] [Thread-196676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:42:34.539 [INFO] [Thread-196676] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:42:34.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:42:35.178 [DEBUG] [Thread-196676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:42:35.178 [DEBUG] [Thread-196676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:42:35.179 [DEBUG] [Thread-196676] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:42:35.220 [DEBUG] [Thread-196676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:42:35.220 [DEBUG] [Thread-196676] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:42:35.222 [DEBUG] [Thread-196676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:42:35.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:42:35.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:42:35.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:42:35.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:42:35.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:42:35.245 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:42:35.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:42:35.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:42:35.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:42:35.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.779216 -999.00  +16.60  17.49     36   +1.70 1 1 1 1 1     0    0 14.44 -35.35 ZNESW 15.8 17.5 169.0 23.9 16.9 -26.2 16.8 -25.7 16.6 -24.6 16.9 -25.5
2025-11-24T20:42:35.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:42:35.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:42:35.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.779216
2025-11-24T20:42:35.253 [DEBUG] [Thread-196676] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:42:35.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:42:35.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:42:35.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:42:35.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:42:35.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:42:35.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:41:55', tmtdew=17.18, humidity=30.97, cloud=0.0, wind=28.21, temperature=16.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:42:31', seeing=0.66, atlas_timestamp='2025-11-24T18:42:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.029749999999999943, 0.024250000000000327, 0.011999999999998678, 0.03950000000000031, 0.07175000000000153, 0.0030000000000001137, 0.09525000000000006, 0.048500000000000654, 0.0365000000000002, 0.0442499999999999, 0.03700000000000081, 0.11250000000000071, 0.13824999999999932, 0.023499999999998522, 0.03599999999999959, 0.052250000000000796, 0.053500000000001435, 0.07899999999999885, 0.03224999999999767, 0.1169999999999991, 0.0727499999999992, 0.056750000000000966, 0.0012500000000006395, 0.013999999999999346, 0.059499999999999886, 0.09074999999999989, 0.11450000000000138, 0.06300000000000061, 0.02650000000000219, 0.06800000000000139, 0.06900000000000084, 0.07174999999999976], zp_timestamp='2025-11-24T18:36:00')
2025-11-24T20:42:35.363 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:42:35.376 [DEBUG] [Thread-196679] [transport.py] [_log()] starting thread (client mode): 0xd0700460
2025-11-24T20:42:35.376 [DEBUG] [Thread-196679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:42:35.391 [DEBUG] [Thread-196679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:42:35.391 [INFO] [Thread-196679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:42:35.399 [DEBUG] [Thread-196679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:42:35.399 [DEBUG] [Thread-196679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:42:35.399 [DEBUG] [Thread-196679] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:42:35.399 [DEBUG] [Thread-196679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:42:35.399 [DEBUG] [Thread-196679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] client lang: <none>
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] server lang: <none>
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] kex follows: False
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] Compression: none
2025-11-24T20:42:35.400 [DEBUG] [Thread-196679] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:42:35.426 [DEBUG] [Thread-196681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:42:35.459 [DEBUG] [Thread-196679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:42:35.459 [DEBUG] [Thread-196679] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:42:35.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:42:35.459 [DEBUG] [Thread-196679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:42:35.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:42:35.515 [DEBUG] [Thread-196679] [transport.py] [_log()] userauth is OK
2025-11-24T20:42:35.515 [DEBUG] [Thread-196679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:42:35.515 [DEBUG] [Thread-196679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:42:35.515 [DEBUG] [Thread-196679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:42:35.515 [DEBUG] [Thread-196679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:42:35.534 [INFO] [Thread-196679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:42:35.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:42:35.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:42:36.389 [DEBUG] [Thread-196679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:42:36.390 [DEBUG] [Thread-196679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:42:36.438 [DEBUG] [Thread-196679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:42:36.438 [DEBUG] [Thread-196679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:42:36.448 [DEBUG] [Thread-196679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:42:36.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:42:36.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-11-24T20:42:36.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') -> 00000000
2025-11-24T20:42:36.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:42:36.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:42:36.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:42:36.490 [DEBUG] [Thread-196679] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:42:41.704 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:42:45.844 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:42:50.884 [DEBUG] [Thread-196682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:42:58.533 [DEBUG] [Thread-196683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:43:06.397 [DEBUG] [Thread-196684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:43:06.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:43:06.516 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:43:06.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-11-24T20:43:07.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 42, 31), 17.21, 30.92, 0.0, 26.68, 16.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:43:07.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:42:31
2025-11-24T20:43:08.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:43:08.391 [DEBUG] [Thread-196685] [transport.py] [_log()] starting thread (client mode): 0xc9b825f0
2025-11-24T20:43:08.392 [DEBUG] [Thread-196685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:43:08.399 [DEBUG] [Thread-196685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:43:08.399 [INFO] [Thread-196685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] client lang: <none>
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] server lang: <none>
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] kex follows: False
2025-11-24T20:43:08.408 [DEBUG] [Thread-196685] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:43:08.409 [DEBUG] [Thread-196685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:43:08.409 [DEBUG] [Thread-196685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:43:08.410 [DEBUG] [Thread-196685] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:43:08.410 [DEBUG] [Thread-196685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:43:08.410 [DEBUG] [Thread-196685] [transport.py] [_log()] Compression: none
2025-11-24T20:43:08.410 [DEBUG] [Thread-196685] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:43:08.453 [DEBUG] [Thread-196685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:43:08.458 [DEBUG] [Thread-196685] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:43:08.459 [DEBUG] [Thread-196685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:43:08.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:43:08.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:43:08.468 [DEBUG] [Thread-196685] [transport.py] [_log()] userauth is OK
2025-11-24T20:43:08.469 [DEBUG] [Thread-196685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:43:08.469 [DEBUG] [Thread-196685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:43:08.469 [DEBUG] [Thread-196685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:43:08.469 [DEBUG] [Thread-196685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:43:08.507 [INFO] [Thread-196685] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:43:08.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:43:09.110 [DEBUG] [Thread-196685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:43:09.110 [DEBUG] [Thread-196685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:43:09.111 [DEBUG] [Thread-196685] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:43:09.152 [DEBUG] [Thread-196685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:43:09.152 [DEBUG] [Thread-196685] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:43:09.156 [DEBUG] [Thread-196685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:43:09.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:43:09.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:43:09.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:43:09.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:43:09.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:43:09.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:43:09.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:43:09.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:43:09.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:43:09.275 [DEBUG] [Thread-196685] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:43:09.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.779563 -999.00  +16.60  15.77     36   +1.70 1 1 1 1 1     0    0 14.03 -38.71 ZNESW 17.2 15.8 166.2 18.2 16.9 -26.3 16.8 -25.7 16.6 -24.5 16.9 -25.6
2025-11-24T20:43:09.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:43:09.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:43:09.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.779563
2025-11-24T20:43:09.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:43:09.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:43:09.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:43:09.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:43:09.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:43:09.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:42:31', tmtdew=17.21, humidity=30.92, cloud=0.0, wind=26.68, temperature=16.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:43:05', seeing=0.73, atlas_timestamp='2025-11-24T18:42:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, 0.0182500000000001, -0.008750000000000924, -0.0625, 0.010500000000000398, 0.07874999999999943, -0.05450000000000088, 0.00975000000000037, 0.008499999999997954, 0.03700000000000081, -0.029749999999999943, 0.01699999999999946, 0.0625, 0.09424999999999883, -0.016500000000000625, -0.05400000000000027, 0.03725000000000023, 0.01950000000000074, 0.037499999999999645, 0.01774999999999949, 0.05099999999999838, 0.03274999999999828, -0.023749999999999716, -0.03275000000000006, 0.013999999999999346, 0.04499999999999993, 0.05274999999999963, 0.061500000000000554, 0.041999999999999815, -0.07349999999999923, 1.7763568394002505e-15, 0.0015000000000000568, 0.016750000000000043], zp_timestamp='2025-11-24T18:41:00')
2025-11-24T20:43:09.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:43:09.433 [DEBUG] [Thread-196688] [transport.py] [_log()] starting thread (client mode): 0xd3150d30
2025-11-24T20:43:09.433 [DEBUG] [Thread-196688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:43:09.448 [DEBUG] [Thread-196688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:43:09.448 [INFO] [Thread-196688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] client lang: <none>
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] server lang: <none>
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] kex follows: False
2025-11-24T20:43:09.455 [DEBUG] [Thread-196688] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:43:09.456 [DEBUG] [Thread-196688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:43:09.456 [DEBUG] [Thread-196688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:43:09.456 [DEBUG] [Thread-196688] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:43:09.456 [DEBUG] [Thread-196688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:43:09.456 [DEBUG] [Thread-196688] [transport.py] [_log()] Compression: none
2025-11-24T20:43:09.456 [DEBUG] [Thread-196688] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:43:09.513 [DEBUG] [Thread-196688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:43:09.513 [DEBUG] [Thread-196688] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:43:09.513 [DEBUG] [Thread-196688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:43:09.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:43:09.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:43:09.570 [DEBUG] [Thread-196688] [transport.py] [_log()] userauth is OK
2025-11-24T20:43:09.570 [DEBUG] [Thread-196688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:43:09.570 [DEBUG] [Thread-196688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:43:09.570 [DEBUG] [Thread-196688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:43:09.570 [DEBUG] [Thread-196688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:43:09.588 [INFO] [Thread-196688] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:43:09.589 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:43:09.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:43:10.476 [DEBUG] [Thread-196688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:43:10.476 [DEBUG] [Thread-196688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:43:10.524 [DEBUG] [Thread-196688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:43:10.524 [DEBUG] [Thread-196688] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:43:10.533 [DEBUG] [Thread-196688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:43:10.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:43:10.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-11-24T20:43:10.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-11-24T20:43:10.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:43:10.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:43:10.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:43:10.569 [DEBUG] [Thread-196688] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:43:20.721 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:43:20.736 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:43:21.536 [DEBUG] [Thread-196690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:43:36.799 [DEBUG] [Thread-196691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:43:40.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:43:40.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:43:40.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-11-24T20:43:42.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 43, 5), 17.23, 30.89, 0.0, 26.1, 16.83, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:43:42.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:43:05
2025-11-24T20:43:42.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:43:42.939 [DEBUG] [Thread-196692] [transport.py] [_log()] starting thread (client mode): 0xd31359c0
2025-11-24T20:43:42.941 [DEBUG] [Thread-196692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:43:42.941 [DEBUG] [Thread-196692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:43:42.942 [INFO] [Thread-196692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:43:42.950 [DEBUG] [Thread-196692] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] client lang: <none>
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] server lang: <none>
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] kex follows: False
2025-11-24T20:43:42.951 [DEBUG] [Thread-196692] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:43:42.952 [DEBUG] [Thread-196692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:43:42.952 [DEBUG] [Thread-196692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:43:42.952 [DEBUG] [Thread-196692] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:43:42.952 [DEBUG] [Thread-196692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:43:42.952 [DEBUG] [Thread-196692] [transport.py] [_log()] Compression: none
2025-11-24T20:43:42.952 [DEBUG] [Thread-196692] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:43:42.991 [DEBUG] [Thread-196692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:43:42.997 [DEBUG] [Thread-196692] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:43:42.999 [DEBUG] [Thread-196692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:43:43.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:43:43.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:43:43.004 [DEBUG] [Thread-196692] [transport.py] [_log()] userauth is OK
2025-11-24T20:43:43.004 [DEBUG] [Thread-196692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:43:43.004 [DEBUG] [Thread-196692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:43:43.004 [DEBUG] [Thread-196692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:43:43.004 [DEBUG] [Thread-196692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:43:43.038 [INFO] [Thread-196692] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:43:43.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:43:43.674 [DEBUG] [Thread-196692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:43:43.674 [DEBUG] [Thread-196692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:43:43.693 [DEBUG] [Thread-196692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:43:43.713 [DEBUG] [Thread-196692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:43:43.713 [DEBUG] [Thread-196692] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:43:43.716 [DEBUG] [Thread-196692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:43:43.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:43:43.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:43:43.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:43:43.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:43:43.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:43:43.737 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:43:43.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:43:43.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:43:43.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:43:43.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.779910 -999.00  +16.60  22.38     36   +1.70 1 1 1 1 1     0    0 14.13 -39.08 ZNESW 18.6 22.4 164.2 25.6 16.9 -26.0 16.8 -25.5 16.6 -24.5 16.8 -25.5
2025-11-24T20:43:43.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:43:43.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:43:43.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.779910
2025-11-24T20:43:43.750 [DEBUG] [Thread-196692] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:43:43.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:43:43.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:43:43.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:43:43.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:43:43.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:43:43.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:43:05', tmtdew=17.23, humidity=30.89, cloud=0.0, wind=26.1, temperature=16.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:43:05', seeing=0.73, atlas_timestamp='2025-11-24T18:43:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, 0.0182500000000001, -0.008750000000000924, -0.0625, 0.010500000000000398, 0.07874999999999943, -0.05450000000000088, 0.00975000000000037, 0.008499999999997954, 0.03700000000000081, -0.029749999999999943, 0.01699999999999946, 0.0625, 0.09424999999999883, -0.016500000000000625, -0.05400000000000027, 0.03725000000000023, 0.01950000000000074, 0.037499999999999645, 0.01774999999999949, 0.05099999999999838, 0.03274999999999828, -0.023749999999999716, -0.03275000000000006, 0.013999999999999346, 0.04499999999999993, 0.05274999999999963, 0.061500000000000554, 0.041999999999999815, -0.07349999999999923, 1.7763568394002505e-15, 0.0015000000000000568, 0.016750000000000043], zp_timestamp='2025-11-24T18:41:00')
2025-11-24T20:43:43.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:43:43.864 [DEBUG] [Thread-196695] [transport.py] [_log()] starting thread (client mode): 0xd07025c0
2025-11-24T20:43:43.864 [DEBUG] [Thread-196695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:43:43.879 [DEBUG] [Thread-196695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:43:43.879 [INFO] [Thread-196695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] client lang: <none>
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] server lang: <none>
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] kex follows: False
2025-11-24T20:43:43.886 [DEBUG] [Thread-196695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:43:43.887 [DEBUG] [Thread-196695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:43:43.887 [DEBUG] [Thread-196695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:43:43.887 [DEBUG] [Thread-196695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:43:43.887 [DEBUG] [Thread-196695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:43:43.887 [DEBUG] [Thread-196695] [transport.py] [_log()] Compression: none
2025-11-24T20:43:43.887 [DEBUG] [Thread-196695] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:43:43.954 [DEBUG] [Thread-196695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:43:43.954 [DEBUG] [Thread-196695] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:43:43.954 [DEBUG] [Thread-196695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:43:43.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:43:43.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:43:44.015 [DEBUG] [Thread-196695] [transport.py] [_log()] userauth is OK
2025-11-24T20:43:44.015 [DEBUG] [Thread-196695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:43:44.015 [DEBUG] [Thread-196695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:43:44.015 [DEBUG] [Thread-196695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:43:44.015 [DEBUG] [Thread-196695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:43:44.033 [INFO] [Thread-196695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:43:44.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:43:44.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:43:44.883 [DEBUG] [Thread-196695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:43:44.883 [DEBUG] [Thread-196695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:43:44.937 [DEBUG] [Thread-196695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:43:44.937 [DEBUG] [Thread-196695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:43:44.946 [DEBUG] [Thread-196695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:43:44.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:43:44.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-11-24T20:43:44.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:43:44.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:43:44.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:43:44.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:43:44.993 [DEBUG] [Thread-196695] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:43:51.953 [DEBUG] [Thread-196697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:43:58.896 [DEBUG] [Thread-196698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:44:07.243 [DEBUG] [Thread-196699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:44:15.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:44:15.026 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:44:15.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-11-24T20:44:18.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 43, 40), 17.13, 31.37, 0.0, 31.07, 16.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:44:18.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:43:40
2025-11-24T20:44:18.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:44:18.920 [DEBUG] [Thread-196700] [transport.py] [_log()] starting thread (client mode): 0xd07001f0
2025-11-24T20:44:18.921 [DEBUG] [Thread-196700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:44:18.923 [DEBUG] [Thread-196700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:44:18.924 [INFO] [Thread-196700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] client lang: <none>
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] server lang: <none>
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] kex follows: False
2025-11-24T20:44:18.929 [DEBUG] [Thread-196700] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:44:18.931 [DEBUG] [Thread-196700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:44:18.931 [DEBUG] [Thread-196700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:44:18.932 [DEBUG] [Thread-196700] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:44:18.932 [DEBUG] [Thread-196700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:44:18.932 [DEBUG] [Thread-196700] [transport.py] [_log()] Compression: none
2025-11-24T20:44:18.932 [DEBUG] [Thread-196700] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:44:18.968 [DEBUG] [Thread-196700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:44:18.973 [DEBUG] [Thread-196700] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:44:18.975 [DEBUG] [Thread-196700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:44:18.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:44:18.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:44:18.979 [DEBUG] [Thread-196700] [transport.py] [_log()] userauth is OK
2025-11-24T20:44:18.979 [DEBUG] [Thread-196700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:44:18.979 [DEBUG] [Thread-196700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:44:18.979 [DEBUG] [Thread-196700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:44:18.979 [DEBUG] [Thread-196700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:44:18.998 [INFO] [Thread-196700] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:44:19.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:44:19.664 [DEBUG] [Thread-196700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:44:19.664 [DEBUG] [Thread-196700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:44:19.666 [DEBUG] [Thread-196700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:44:19.706 [DEBUG] [Thread-196700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:44:19.706 [DEBUG] [Thread-196700] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:44:19.709 [DEBUG] [Thread-196700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:44:19.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:44:19.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:44:19.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:44:19.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:44:19.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:44:19.736 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:44:19.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:44:19.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:44:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:44:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.780257 -999.00  +16.60  20.15     36   +1.70 1 1 1 1 1     0    0 13.88 -40.15 ZNESW 19.6 20.1 172.0 23.6 16.9 -26.1 16.8 -25.6 16.5 -24.4 16.8 -25.4
2025-11-24T20:44:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:44:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:44:19.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.780257
2025-11-24T20:44:19.743 [DEBUG] [Thread-196700] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:44:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:44:19.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:44:19.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:44:19.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:44:19.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:44:19.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:43:40', tmtdew=17.13, humidity=31.37, cloud=0.0, wind=31.07, temperature=16.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:43:40', seeing=0.65, atlas_timestamp='2025-11-24T18:43:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, 0.0182500000000001, -0.008750000000000924, -0.0625, 0.010500000000000398, 0.07874999999999943, -0.05450000000000088, 0.00975000000000037, 0.008499999999997954, 0.03700000000000081, -0.029749999999999943, 0.01699999999999946, 0.0625, 0.09424999999999883, -0.016500000000000625, -0.05400000000000027, 0.03725000000000023, 0.01950000000000074, 0.037499999999999645, 0.01774999999999949, 0.05099999999999838, 0.03274999999999828, -0.023749999999999716, -0.03275000000000006, 0.013999999999999346, 0.04499999999999993, 0.05274999999999963, 0.061500000000000554, 0.041999999999999815, -0.07349999999999923, 1.7763568394002505e-15, 0.0015000000000000568, 0.016750000000000043], zp_timestamp='2025-11-24T18:41:00')
2025-11-24T20:44:19.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:44:19.924 [DEBUG] [Thread-196703] [transport.py] [_log()] starting thread (client mode): 0xc9b82e90
2025-11-24T20:44:19.924 [DEBUG] [Thread-196703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:44:19.939 [DEBUG] [Thread-196703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:44:19.939 [INFO] [Thread-196703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] client lang: <none>
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] server lang: <none>
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] kex follows: False
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] Compression: none
2025-11-24T20:44:19.947 [DEBUG] [Thread-196703] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:44:20.005 [DEBUG] [Thread-196703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:44:20.006 [DEBUG] [Thread-196703] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:44:20.006 [DEBUG] [Thread-196703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:44:20.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:44:20.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:44:20.062 [DEBUG] [Thread-196703] [transport.py] [_log()] userauth is OK
2025-11-24T20:44:20.062 [DEBUG] [Thread-196703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:44:20.062 [DEBUG] [Thread-196703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:44:20.062 [DEBUG] [Thread-196703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:44:20.062 [DEBUG] [Thread-196703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:44:20.076 [INFO] [Thread-196703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:44:20.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:44:20.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:44:20.900 [DEBUG] [Thread-196703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:44:20.901 [DEBUG] [Thread-196703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:44:20.941 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:44:20.943 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:44:20.948 [DEBUG] [Thread-196703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:44:20.948 [DEBUG] [Thread-196703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:44:20.956 [DEBUG] [Thread-196703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:44:20.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:44:20.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:44:20.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-11-24T20:44:20.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:44:20.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:44:20.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:44:20.990 [DEBUG] [Thread-196703] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:44:22.415 [DEBUG] [Thread-196705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:44:37.740 [DEBUG] [Thread-196706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:44:51.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:44:51.040 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:44:51.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-11-24T20:44:52.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 44, 14), 17.09, 31.46, 0.0, 30.51, 16.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:44:52.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:44:14
2025-11-24T20:44:52.902 [DEBUG] [Thread-196707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:44:52.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:44:53.115 [DEBUG] [Thread-196708] [transport.py] [_log()] starting thread (client mode): 0xc9b80eb0
2025-11-24T20:44:53.117 [DEBUG] [Thread-196708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:44:53.120 [DEBUG] [Thread-196708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:44:53.120 [INFO] [Thread-196708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] client lang: <none>
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] server lang: <none>
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] kex follows: False
2025-11-24T20:44:53.126 [DEBUG] [Thread-196708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:44:53.127 [DEBUG] [Thread-196708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:44:53.127 [DEBUG] [Thread-196708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:44:53.127 [DEBUG] [Thread-196708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:44:53.127 [DEBUG] [Thread-196708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:44:53.127 [DEBUG] [Thread-196708] [transport.py] [_log()] Compression: none
2025-11-24T20:44:53.127 [DEBUG] [Thread-196708] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:44:53.156 [DEBUG] [Thread-196708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:44:53.161 [DEBUG] [Thread-196708] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:44:53.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:44:53.164 [DEBUG] [Thread-196708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:44:53.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:44:53.167 [DEBUG] [Thread-196708] [transport.py] [_log()] userauth is OK
2025-11-24T20:44:53.168 [DEBUG] [Thread-196708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:44:53.168 [DEBUG] [Thread-196708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:44:53.168 [DEBUG] [Thread-196708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:44:53.168 [DEBUG] [Thread-196708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:44:53.180 [INFO] [Thread-196708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:44:53.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:44:53.813 [DEBUG] [Thread-196708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:44:53.813 [DEBUG] [Thread-196708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:44:53.814 [DEBUG] [Thread-196708] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:44:53.855 [DEBUG] [Thread-196708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:44:53.855 [DEBUG] [Thread-196708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:44:53.858 [DEBUG] [Thread-196708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:44:53.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:44:53.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:44:53.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:44:53.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:44:53.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:44:53.879 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:44:53.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:44:53.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:44:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:44:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.780605 -999.00  +16.60  26.11     36   +1.70 1 1 1 1 1     0    0 14.06 -40.70 ZNESW 19.0 26.1 181.4 29.9 16.9 -25.8 16.8 -25.4 16.6 -24.5 16.8 -25.4
2025-11-24T20:44:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:44:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:44:53.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.780605
2025-11-24T20:44:53.886 [DEBUG] [Thread-196708] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:44:53.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:44:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:44:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:44:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:44:53.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:44:53.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:44:14', tmtdew=17.09, humidity=31.46, cloud=0.0, wind=30.51, temperature=16.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:44:50', seeing=0.73, atlas_timestamp='2025-11-24T18:44:04.272', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, 0.0182500000000001, -0.008750000000000924, -0.0625, 0.010500000000000398, 0.07874999999999943, -0.05450000000000088, 0.00975000000000037, 0.008499999999997954, 0.03700000000000081, -0.029749999999999943, 0.01699999999999946, 0.0625, 0.09424999999999883, -0.016500000000000625, -0.05400000000000027, 0.03725000000000023, 0.01950000000000074, 0.037499999999999645, 0.01774999999999949, 0.05099999999999838, 0.03274999999999828, -0.023749999999999716, -0.03275000000000006, 0.013999999999999346, 0.04499999999999993, 0.05274999999999963, 0.061500000000000554, 0.041999999999999815, -0.07349999999999923, 1.7763568394002505e-15, 0.0015000000000000568, 0.016750000000000043], zp_timestamp='2025-11-24T18:41:00')
2025-11-24T20:44:53.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:44:53.999 [DEBUG] [Thread-196711] [transport.py] [_log()] starting thread (client mode): 0xd07012d0
2025-11-24T20:44:53.999 [DEBUG] [Thread-196711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:44:54.014 [DEBUG] [Thread-196711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:44:54.014 [INFO] [Thread-196711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] client lang: <none>
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] server lang: <none>
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] kex follows: False
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] Compression: none
2025-11-24T20:44:54.022 [DEBUG] [Thread-196711] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:44:54.078 [DEBUG] [Thread-196711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:44:54.079 [DEBUG] [Thread-196711] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:44:54.079 [DEBUG] [Thread-196711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:44:54.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:44:54.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:44:54.134 [DEBUG] [Thread-196711] [transport.py] [_log()] userauth is OK
2025-11-24T20:44:54.134 [DEBUG] [Thread-196711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:44:54.134 [DEBUG] [Thread-196711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:44:54.134 [DEBUG] [Thread-196711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:44:54.134 [DEBUG] [Thread-196711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:44:54.148 [INFO] [Thread-196711] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:44:54.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:44:54.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:44:55.031 [DEBUG] [Thread-196711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:44:55.031 [DEBUG] [Thread-196711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:44:55.078 [DEBUG] [Thread-196711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:44:55.078 [DEBUG] [Thread-196711] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:44:55.087 [DEBUG] [Thread-196711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:44:55.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:44:55.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-11-24T20:44:55.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-11-24T20:44:55.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:44:55.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:44:55.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:44:55.124 [DEBUG] [Thread-196711] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:44:59.327 [DEBUG] [Thread-196713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:45:08.108 [DEBUG] [Thread-196714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:45:21.180 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:45:21.208 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:45:23.375 [DEBUG] [Thread-196715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:45:25.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:45:25.149 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:45:25.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-11-24T20:45:26.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 44, 50), 17.15, 31.44, 0.0, 30.4, 16.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:45:26.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:44:50
2025-11-24T20:45:27.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:45:27.440 [DEBUG] [Thread-196716] [transport.py] [_log()] starting thread (client mode): 0xd07032b0
2025-11-24T20:45:27.441 [DEBUG] [Thread-196716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:45:27.447 [DEBUG] [Thread-196716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:45:27.449 [INFO] [Thread-196716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:45:27.454 [DEBUG] [Thread-196716] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] client lang: <none>
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] server lang: <none>
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] kex follows: False
2025-11-24T20:45:27.455 [DEBUG] [Thread-196716] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:45:27.456 [DEBUG] [Thread-196716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:45:27.456 [DEBUG] [Thread-196716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:45:27.456 [DEBUG] [Thread-196716] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:45:27.456 [DEBUG] [Thread-196716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:45:27.456 [DEBUG] [Thread-196716] [transport.py] [_log()] Compression: none
2025-11-24T20:45:27.456 [DEBUG] [Thread-196716] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:45:27.492 [DEBUG] [Thread-196716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:45:27.498 [DEBUG] [Thread-196716] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:45:27.499 [DEBUG] [Thread-196716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:45:27.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:45:27.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:45:27.504 [DEBUG] [Thread-196716] [transport.py] [_log()] userauth is OK
2025-11-24T20:45:27.505 [DEBUG] [Thread-196716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:45:27.505 [DEBUG] [Thread-196716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:45:27.505 [DEBUG] [Thread-196716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:45:27.505 [DEBUG] [Thread-196716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:45:27.535 [INFO] [Thread-196716] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:45:27.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:45:28.166 [DEBUG] [Thread-196716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:45:28.167 [DEBUG] [Thread-196716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:45:28.168 [DEBUG] [Thread-196716] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:45:28.207 [DEBUG] [Thread-196716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:45:28.207 [DEBUG] [Thread-196716] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:45:28.210 [DEBUG] [Thread-196716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:45:28.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:45:28.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:45:28.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:45:28.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:45:28.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:45:28.234 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:45:28.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:45:28.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:45:28.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:45:28.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.781299 -999.00  +16.60  22.77     36   +1.80 1 1 1 1 1     0    0 13.93 -41.17 ZNESW 22.6 22.8 171.9 28.6 16.9 -26.0 16.8 -25.4 16.6 -24.5 16.8 -25.3
2025-11-24T20:45:28.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:45:28.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:45:28.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.781299
2025-11-24T20:45:28.241 [DEBUG] [Thread-196716] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:45:28.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:45:28.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:45:28.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:45:28.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:45:28.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:45:28.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:44:50', tmtdew=17.15, humidity=31.44, cloud=0.0, wind=30.4, temperature=16.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:45:24', seeing=0.58, atlas_timestamp='2025-11-24T18:45:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, 0.0182500000000001, -0.008750000000000924, -0.0625, 0.010500000000000398, 0.07874999999999943, -0.05450000000000088, 0.00975000000000037, 0.008499999999997954, 0.03700000000000081, -0.029749999999999943, 0.01699999999999946, 0.0625, 0.09424999999999883, -0.016500000000000625, -0.05400000000000027, 0.03725000000000023, 0.01950000000000074, 0.037499999999999645, 0.01774999999999949, 0.05099999999999838, 0.03274999999999828, -0.023749999999999716, -0.03275000000000006, 0.013999999999999346, 0.04499999999999993, 0.05274999999999963, 0.061500000000000554, 0.041999999999999815, -0.07349999999999923, 1.7763568394002505e-15, 0.0015000000000000568, 0.016750000000000043], zp_timestamp='2025-11-24T18:41:00')
2025-11-24T20:45:28.342 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:45:28.354 [DEBUG] [Thread-196719] [transport.py] [_log()] starting thread (client mode): 0xd31528c0
2025-11-24T20:45:28.354 [DEBUG] [Thread-196719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:45:28.369 [DEBUG] [Thread-196719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:45:28.369 [INFO] [Thread-196719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:45:28.376 [DEBUG] [Thread-196719] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:45:28.376 [DEBUG] [Thread-196719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] client lang: <none>
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] server lang: <none>
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] kex follows: False
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] Compression: none
2025-11-24T20:45:28.377 [DEBUG] [Thread-196719] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:45:28.437 [DEBUG] [Thread-196719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:45:28.437 [DEBUG] [Thread-196719] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:45:28.438 [DEBUG] [Thread-196719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:45:28.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:45:28.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:45:28.494 [DEBUG] [Thread-196719] [transport.py] [_log()] userauth is OK
2025-11-24T20:45:28.494 [DEBUG] [Thread-196719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:45:28.495 [DEBUG] [Thread-196719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:45:28.495 [DEBUG] [Thread-196719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:45:28.495 [DEBUG] [Thread-196719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:45:28.523 [INFO] [Thread-196719] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:45:28.523 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:45:28.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:45:29.377 [DEBUG] [Thread-196719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:45:29.377 [DEBUG] [Thread-196719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:45:29.424 [DEBUG] [Thread-196719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:45:29.424 [DEBUG] [Thread-196719] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:45:29.433 [DEBUG] [Thread-196719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:45:29.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:45:29.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-11-24T20:45:29.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:45:29.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:45:29.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:45:29.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:45:29.488 [DEBUG] [Thread-196719] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:45:38.882 [DEBUG] [Thread-196721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:45:55.031 [DEBUG] [Thread-196722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:45:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:45:59.519 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:45:59.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-11-24T20:46:00.848 [DEBUG] [Thread-196723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:46:03.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 45, 24), 17.17, 31.37, 0.0, 29.34, 16.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:46:03.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:45:24
2025-11-24T20:46:04.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:46:04.234 [DEBUG] [Thread-196724] [transport.py] [_log()] starting thread (client mode): 0xd0703910
2025-11-24T20:46:04.235 [DEBUG] [Thread-196724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:46:04.302 [DEBUG] [Thread-196724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:46:04.304 [INFO] [Thread-196724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:46:04.313 [DEBUG] [Thread-196724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:46:04.313 [DEBUG] [Thread-196724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] client lang: <none>
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] server lang: <none>
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] kex follows: False
2025-11-24T20:46:04.314 [DEBUG] [Thread-196724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:46:04.315 [DEBUG] [Thread-196724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:46:04.315 [DEBUG] [Thread-196724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:46:04.315 [DEBUG] [Thread-196724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:46:04.315 [DEBUG] [Thread-196724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:46:04.315 [DEBUG] [Thread-196724] [transport.py] [_log()] Compression: none
2025-11-24T20:46:04.315 [DEBUG] [Thread-196724] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:46:04.389 [DEBUG] [Thread-196724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:46:04.397 [DEBUG] [Thread-196724] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:46:04.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:46:04.403 [DEBUG] [Thread-196724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:46:04.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:46:04.411 [DEBUG] [Thread-196724] [transport.py] [_log()] userauth is OK
2025-11-24T20:46:04.411 [DEBUG] [Thread-196724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:46:04.411 [DEBUG] [Thread-196724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:46:04.411 [DEBUG] [Thread-196724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:46:04.411 [DEBUG] [Thread-196724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:46:04.444 [INFO] [Thread-196724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:46:04.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:46:05.054 [DEBUG] [Thread-196724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:46:05.054 [DEBUG] [Thread-196724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:46:05.055 [DEBUG] [Thread-196724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:46:05.095 [DEBUG] [Thread-196724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:46:05.095 [DEBUG] [Thread-196724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:46:05.097 [DEBUG] [Thread-196724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:46:05.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:46:05.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:46:05.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:46:05.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:46:05.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:46:05.118 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:46:05.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:46:05.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:46:05.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:46:05.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.781646 -999.00  +16.60  20.29     36   +1.80 1 1 1 1 1     0    0 13.87 -39.88 ZNESW 22.5 20.3 164.0 28.8 16.8 -26.1 16.8 -25.5 16.5 -24.5 16.8 -25.5
2025-11-24T20:46:05.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:46:05.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:46:05.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.781646
2025-11-24T20:46:05.126 [DEBUG] [Thread-196724] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:46:05.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:46:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:46:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:46:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:46:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:46:05.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:45:24', tmtdew=17.17, humidity=31.37, cloud=0.0, wind=29.34, temperature=16.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:45:24', seeing=0.58, atlas_timestamp='2025-11-24T18:45:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:41:00')
2025-11-24T20:46:05.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:46:05.236 [DEBUG] [Thread-196727] [transport.py] [_log()] starting thread (client mode): 0xd0700940
2025-11-24T20:46:05.236 [DEBUG] [Thread-196727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:46:05.251 [DEBUG] [Thread-196727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:46:05.251 [INFO] [Thread-196727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] client lang: <none>
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] server lang: <none>
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] kex follows: False
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] Compression: none
2025-11-24T20:46:05.259 [DEBUG] [Thread-196727] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:46:05.317 [DEBUG] [Thread-196727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:46:05.317 [DEBUG] [Thread-196727] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:46:05.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:46:05.318 [DEBUG] [Thread-196727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:46:05.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:46:05.378 [DEBUG] [Thread-196727] [transport.py] [_log()] userauth is OK
2025-11-24T20:46:05.378 [DEBUG] [Thread-196727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:46:05.378 [DEBUG] [Thread-196727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:46:05.378 [DEBUG] [Thread-196727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:46:05.378 [DEBUG] [Thread-196727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:46:05.394 [INFO] [Thread-196727] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:46:05.394 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:46:05.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:46:06.250 [DEBUG] [Thread-196727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:46:06.250 [DEBUG] [Thread-196727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:46:06.291 [DEBUG] [Thread-196727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:46:06.291 [DEBUG] [Thread-196727] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:46:06.300 [DEBUG] [Thread-196727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:46:06.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:46:06.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-11-24T20:46:06.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-11-24T20:46:06.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:46:06.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:46:06.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:46:06.339 [DEBUG] [Thread-196727] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:46:09.589 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:46:10.550 [DEBUG] [Thread-196729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:46:17.986 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:46:21.414 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:46:21.418 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:46:22.107 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:46:25.921 [DEBUG] [Thread-196730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:46:36.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:46:36.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:46:36.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-11-24T20:46:38.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 45, 58), 17.17, 30.99, 0.0, 30.95, 16.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:46:38.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:45:58
2025-11-24T20:46:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:46:38.529 [DEBUG] [Thread-196731] [transport.py] [_log()] starting thread (client mode): 0xd0739780
2025-11-24T20:46:38.531 [DEBUG] [Thread-196731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:46:38.533 [DEBUG] [Thread-196731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:46:38.534 [INFO] [Thread-196731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] client lang: <none>
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] server lang: <none>
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] kex follows: False
2025-11-24T20:46:38.541 [DEBUG] [Thread-196731] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:46:38.542 [DEBUG] [Thread-196731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:46:38.542 [DEBUG] [Thread-196731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:46:38.542 [DEBUG] [Thread-196731] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:46:38.542 [DEBUG] [Thread-196731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:46:38.542 [DEBUG] [Thread-196731] [transport.py] [_log()] Compression: none
2025-11-24T20:46:38.542 [DEBUG] [Thread-196731] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:46:38.582 [DEBUG] [Thread-196731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:46:38.588 [DEBUG] [Thread-196731] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:46:38.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:46:38.591 [DEBUG] [Thread-196731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:46:38.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:46:38.595 [DEBUG] [Thread-196731] [transport.py] [_log()] userauth is OK
2025-11-24T20:46:38.595 [DEBUG] [Thread-196731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:46:38.596 [DEBUG] [Thread-196731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:46:38.596 [DEBUG] [Thread-196731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:46:38.596 [DEBUG] [Thread-196731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:46:38.620 [INFO] [Thread-196731] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:46:38.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:46:39.277 [DEBUG] [Thread-196731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:46:39.277 [DEBUG] [Thread-196731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:46:39.278 [DEBUG] [Thread-196731] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:46:39.318 [DEBUG] [Thread-196731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:46:39.318 [DEBUG] [Thread-196731] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:46:39.320 [DEBUG] [Thread-196731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:46:39.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:46:39.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:46:39.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:46:39.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:46:39.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:46:39.342 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:46:39.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:46:39.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:46:39.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:46:39.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.781993 -999.00  +16.60  15.06     36   +1.70 1 1 1 1 1     0    0 13.74 -46.87 ZNESW 17.4 15.1 172.4 22.5 16.8 -26.1 16.8 -25.7 16.5 -24.5 16.8 -25.4
2025-11-24T20:46:39.344 [DEBUG] [Thread-196731] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:46:39.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:46:39.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:46:39.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.781993
2025-11-24T20:46:39.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:46:39.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:46:39.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:46:39.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:46:39.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:46:39.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:45:58', tmtdew=17.17, humidity=30.99, cloud=0.0, wind=30.95, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:46:36', seeing=0.65, atlas_timestamp='2025-11-24T18:46:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:41:00')
2025-11-24T20:46:39.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:46:39.468 [DEBUG] [Thread-196734] [transport.py] [_log()] starting thread (client mode): 0xd073a7d0
2025-11-24T20:46:39.468 [DEBUG] [Thread-196734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:46:39.482 [DEBUG] [Thread-196734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:46:39.482 [INFO] [Thread-196734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] client lang: <none>
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] server lang: <none>
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] kex follows: False
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:46:39.490 [DEBUG] [Thread-196734] [transport.py] [_log()] Compression: none
2025-11-24T20:46:39.491 [DEBUG] [Thread-196734] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:46:39.552 [DEBUG] [Thread-196734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:46:39.552 [DEBUG] [Thread-196734] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:46:39.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:46:39.553 [DEBUG] [Thread-196734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:46:39.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:46:39.611 [DEBUG] [Thread-196734] [transport.py] [_log()] userauth is OK
2025-11-24T20:46:39.611 [DEBUG] [Thread-196734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:46:39.611 [DEBUG] [Thread-196734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:46:39.611 [DEBUG] [Thread-196734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:46:39.611 [DEBUG] [Thread-196734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:46:39.634 [INFO] [Thread-196734] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:46:39.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:46:39.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:46:40.510 [DEBUG] [Thread-196734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:46:40.510 [DEBUG] [Thread-196734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:46:40.558 [DEBUG] [Thread-196734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:46:40.558 [DEBUG] [Thread-196734] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:46:40.566 [DEBUG] [Thread-196734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:46:40.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:46: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-11-24T20:46:40.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-11-24T20:46:40.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:46:40.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:46:40.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:46:40.602 [DEBUG] [Thread-196734] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:46:41.251 [DEBUG] [Thread-196736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:46:56.520 [DEBUG] [Thread-196737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:47:01.216 [DEBUG] [Thread-196738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:47:10.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:47:10.650 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:47:10.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-11-24T20:47:11.642 [DEBUG] [Thread-196739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:47:12.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 46, 35), 17.09, 31.04, 0.0, 29.91, 16.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:47:12.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:46:35
2025-11-24T20:47:12.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:47:12.765 [DEBUG] [Thread-196740] [transport.py] [_log()] starting thread (client mode): 0xd31365f0
2025-11-24T20:47:12.766 [DEBUG] [Thread-196740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:47:12.767 [DEBUG] [Thread-196740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:47:12.767 [INFO] [Thread-196740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] client lang: <none>
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] server lang: <none>
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] kex follows: False
2025-11-24T20:47:12.772 [DEBUG] [Thread-196740] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:47:12.773 [DEBUG] [Thread-196740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:47:12.773 [DEBUG] [Thread-196740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:47:12.773 [DEBUG] [Thread-196740] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:47:12.773 [DEBUG] [Thread-196740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:47:12.773 [DEBUG] [Thread-196740] [transport.py] [_log()] Compression: none
2025-11-24T20:47:12.773 [DEBUG] [Thread-196740] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:47:12.808 [DEBUG] [Thread-196740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:47:12.813 [DEBUG] [Thread-196740] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:47:12.815 [DEBUG] [Thread-196740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:47:12.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:47:12.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:47:12.820 [DEBUG] [Thread-196740] [transport.py] [_log()] userauth is OK
2025-11-24T20:47:12.820 [DEBUG] [Thread-196740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:47:12.820 [DEBUG] [Thread-196740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:47:12.820 [DEBUG] [Thread-196740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:47:12.820 [DEBUG] [Thread-196740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:47:12.839 [INFO] [Thread-196740] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:47:12.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:47:13.470 [DEBUG] [Thread-196740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:47:13.470 [DEBUG] [Thread-196740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:47:13.471 [DEBUG] [Thread-196740] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:47:13.511 [DEBUG] [Thread-196740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:47:13.511 [DEBUG] [Thread-196740] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:47:13.513 [DEBUG] [Thread-196740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:47:13.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:47:13.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:47:13.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:47:13.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:47:13.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:47:13.534 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:47:13.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:47:13.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:47:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:47:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.782341 -999.00  +16.50  17.97     36   +1.70 1 1 1 1 1     0    0 13.71 -44.81 ZNESW 15.8 18.0 167.0 23.2 16.8 -26.2 16.7 -25.7 16.4 -24.5 16.8 -25.4
2025-11-24T20:47:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:47:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:47:13.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.782341
2025-11-24T20:47:13.554 [DEBUG] [Thread-196740] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:47:13.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:47:13.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:47:13.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:47:13.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:47:13.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:47:13.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:46:35', tmtdew=17.09, humidity=31.04, cloud=0.0, wind=29.91, temperature=16.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:47:09', seeing=0.59, atlas_timestamp='2025-11-24T18:46:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:41:00')
2025-11-24T20:47:13.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:47:13.654 [DEBUG] [Thread-196743] [transport.py] [_log()] starting thread (client mode): 0xd0784820
2025-11-24T20:47:13.655 [DEBUG] [Thread-196743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:47:13.670 [DEBUG] [Thread-196743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:47:13.670 [INFO] [Thread-196743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:47:13.677 [DEBUG] [Thread-196743] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:47:13.677 [DEBUG] [Thread-196743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:47:13.677 [DEBUG] [Thread-196743] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:47:13.677 [DEBUG] [Thread-196743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] client lang: <none>
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] server lang: <none>
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] kex follows: False
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] Compression: none
2025-11-24T20:47:13.678 [DEBUG] [Thread-196743] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:47:13.746 [DEBUG] [Thread-196743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:47:13.747 [DEBUG] [Thread-196743] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:47:13.747 [DEBUG] [Thread-196743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:47:13.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:47:13.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:47:13.802 [DEBUG] [Thread-196743] [transport.py] [_log()] userauth is OK
2025-11-24T20:47:13.802 [DEBUG] [Thread-196743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:47:13.802 [DEBUG] [Thread-196743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:47:13.802 [DEBUG] [Thread-196743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:47:13.802 [DEBUG] [Thread-196743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:47:13.820 [INFO] [Thread-196743] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:47:13.820 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:47:13.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:47:14.619 [DEBUG] [Thread-196743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:47:14.620 [DEBUG] [Thread-196743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:47:14.667 [DEBUG] [Thread-196743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:47:14.667 [DEBUG] [Thread-196743] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:47:14.678 [DEBUG] [Thread-196743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:47:14.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:47:14.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:47:14.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-11-24T20:47:14.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:47:14.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:47:14.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:47:14.712 [DEBUG] [Thread-196743] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:47:21.624 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:47:21.628 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:47:26.759 [DEBUG] [Thread-196745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:47:41.994 [DEBUG] [Thread-196746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:47:44.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:47:44.712 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:47:44.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-11-24T20:47:46.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 47, 9), 17.07, 31.11, 0.0, 32.11, 16.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:47:46.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:47:09
2025-11-24T20:47:46.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:47:46.591 [DEBUG] [Thread-196747] [transport.py] [_log()] starting thread (client mode): 0xc9b80c70
2025-11-24T20:47:46.592 [DEBUG] [Thread-196747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:47:46.598 [DEBUG] [Thread-196747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:47:46.598 [INFO] [Thread-196747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:47:46.605 [DEBUG] [Thread-196747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] client lang: <none>
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] server lang: <none>
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] kex follows: False
2025-11-24T20:47:46.606 [DEBUG] [Thread-196747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:47:46.607 [DEBUG] [Thread-196747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:47:46.607 [DEBUG] [Thread-196747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:47:46.608 [DEBUG] [Thread-196747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:47:46.608 [DEBUG] [Thread-196747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:47:46.608 [DEBUG] [Thread-196747] [transport.py] [_log()] Compression: none
2025-11-24T20:47:46.608 [DEBUG] [Thread-196747] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:47:46.651 [DEBUG] [Thread-196747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:47:46.657 [DEBUG] [Thread-196747] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:47:46.659 [DEBUG] [Thread-196747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:47:46.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:47:46.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:47:46.667 [DEBUG] [Thread-196747] [transport.py] [_log()] userauth is OK
2025-11-24T20:47:46.667 [DEBUG] [Thread-196747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:47:46.667 [DEBUG] [Thread-196747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:47:46.667 [DEBUG] [Thread-196747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:47:46.667 [DEBUG] [Thread-196747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:47:46.686 [INFO] [Thread-196747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:47:46.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:47:47.454 [DEBUG] [Thread-196747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:47:47.454 [DEBUG] [Thread-196747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:47:47.455 [DEBUG] [Thread-196747] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:47:47.495 [DEBUG] [Thread-196747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:47:47.495 [DEBUG] [Thread-196747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:47:47.497 [DEBUG] [Thread-196747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:47:47.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:47:47.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:47:47.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:47:47.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:47:47.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:47:47.517 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:47:47.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:47:47.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:47:47.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:47:47.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.782688 -999.00  +16.50  19.99     36   +1.70 1 1 1 1 1     0    0 14.17 -40.78 ZNESW 19.0 20.0 170.4 23.2 16.8 -26.2 16.7 -25.6 16.4 -24.4 16.8 -25.4
2025-11-24T20:47:47.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:47:47.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:47:47.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.782688
2025-11-24T20:47:47.524 [DEBUG] [Thread-196747] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:47:47.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:47:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:47:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:47:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:47:47.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:47:47.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:47:09', tmtdew=17.07, humidity=31.11, cloud=0.0, wind=32.11, temperature=16.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:47:44', seeing=0.59, atlas_timestamp='2025-11-24T18:47:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:41:00')
2025-11-24T20:47:47.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:47:47.638 [DEBUG] [Thread-196750] [transport.py] [_log()] starting thread (client mode): 0xd3151720
2025-11-24T20:47:47.638 [DEBUG] [Thread-196750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:47:47.654 [DEBUG] [Thread-196750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:47:47.654 [INFO] [Thread-196750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:47:47.661 [DEBUG] [Thread-196750] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:47:47.661 [DEBUG] [Thread-196750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] client lang: <none>
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] server lang: <none>
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] kex follows: False
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] Compression: none
2025-11-24T20:47:47.662 [DEBUG] [Thread-196750] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:47:47.716 [DEBUG] [Thread-196750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:47:47.718 [DEBUG] [Thread-196750] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:47:47.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:47:47.721 [DEBUG] [Thread-196750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:47:47.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:47:47.774 [DEBUG] [Thread-196750] [transport.py] [_log()] userauth is OK
2025-11-24T20:47:47.774 [DEBUG] [Thread-196750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:47:47.774 [DEBUG] [Thread-196750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:47:47.775 [DEBUG] [Thread-196750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:47:47.775 [DEBUG] [Thread-196750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:47:47.793 [INFO] [Thread-196750] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:47:47.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:47:47.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:47:48.659 [DEBUG] [Thread-196750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:47:48.659 [DEBUG] [Thread-196750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:47:48.707 [DEBUG] [Thread-196750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:47:48.707 [DEBUG] [Thread-196750] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:47:48.715 [DEBUG] [Thread-196750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:47:48.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:47:48.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-11-24T20:47:48.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-11-24T20:47:48.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:47:48.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:47:48.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:47:48.751 [DEBUG] [Thread-196750] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:47:57.244 [DEBUG] [Thread-196752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:48:01.736 [DEBUG] [Thread-196753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:48:12.494 [DEBUG] [Thread-196754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:48:18.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:48:18.779 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:48:18.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-11-24T20:48:20.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 47, 43), 17.06, 31.12, 0.0, 26.66, 16.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:48:20.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:47:43
2025-11-24T20:48:20.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:48:20.779 [DEBUG] [Thread-196755] [transport.py] [_log()] starting thread (client mode): 0xd07011e0
2025-11-24T20:48:20.781 [DEBUG] [Thread-196755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:48:20.785 [DEBUG] [Thread-196755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:48:20.785 [INFO] [Thread-196755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:48:20.792 [DEBUG] [Thread-196755] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:48:20.792 [DEBUG] [Thread-196755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:48:20.792 [DEBUG] [Thread-196755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:48:20.792 [DEBUG] [Thread-196755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:48:20.792 [DEBUG] [Thread-196755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:48:20.792 [DEBUG] [Thread-196755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:48:20.792 [DEBUG] [Thread-196755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:48:20.792 [DEBUG] [Thread-196755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:48:20.792 [DEBUG] [Thread-196755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:48:20.793 [DEBUG] [Thread-196755] [transport.py] [_log()] client lang: <none>
2025-11-24T20:48:20.793 [DEBUG] [Thread-196755] [transport.py] [_log()] server lang: <none>
2025-11-24T20:48:20.793 [DEBUG] [Thread-196755] [transport.py] [_log()] kex follows: False
2025-11-24T20:48:20.793 [DEBUG] [Thread-196755] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:48:20.793 [DEBUG] [Thread-196755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:48:20.794 [DEBUG] [Thread-196755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:48:20.794 [DEBUG] [Thread-196755] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:48:20.794 [DEBUG] [Thread-196755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:48:20.794 [DEBUG] [Thread-196755] [transport.py] [_log()] Compression: none
2025-11-24T20:48:20.794 [DEBUG] [Thread-196755] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:48:20.837 [DEBUG] [Thread-196755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:48:20.842 [DEBUG] [Thread-196755] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:48:20.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:48:20.845 [DEBUG] [Thread-196755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:48:20.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:48:20.848 [DEBUG] [Thread-196755] [transport.py] [_log()] userauth is OK
2025-11-24T20:48:20.848 [DEBUG] [Thread-196755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:48:20.849 [DEBUG] [Thread-196755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:48:20.849 [DEBUG] [Thread-196755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:48:20.849 [DEBUG] [Thread-196755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:48:20.868 [INFO] [Thread-196755] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:48:20.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:48:21.499 [DEBUG] [Thread-196755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:48:21.499 [DEBUG] [Thread-196755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:48:21.500 [DEBUG] [Thread-196755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:48:21.540 [DEBUG] [Thread-196755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:48:21.540 [DEBUG] [Thread-196755] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:48:21.542 [DEBUG] [Thread-196755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:48:21.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:48:21.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:48:21.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:48:21.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:48:21.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:48:21.565 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:48:21.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:48:21.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:48:21.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:48:21.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.783036 -999.00  +16.50  15.34     36   +1.70 1 1 1 1 1     0    0 13.89 -44.10 ZNESW 17.8 15.3 159.8 23.8 16.8 -26.1 16.7 -25.7 16.4 -24.3 16.8 -25.4
2025-11-24T20:48:21.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:48:21.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:48:21.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.783036
2025-11-24T20:48:21.572 [DEBUG] [Thread-196755] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:48:21.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:48:21.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:48:21.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:48:21.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:48:21.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:48:21.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:47:43', tmtdew=17.06, humidity=31.12, cloud=0.0, wind=26.66, temperature=16.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:48:18', seeing=0.7, atlas_timestamp='2025-11-24T18:47:34.310', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:41:00')
2025-11-24T20:48:21.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:48:21.686 [DEBUG] [Thread-196758] [transport.py] [_log()] starting thread (client mode): 0xc9b80730
2025-11-24T20:48:21.686 [DEBUG] [Thread-196758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:48:21.701 [DEBUG] [Thread-196758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:48:21.701 [INFO] [Thread-196758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] client lang: <none>
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] server lang: <none>
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] kex follows: False
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] Compression: none
2025-11-24T20:48:21.709 [DEBUG] [Thread-196758] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:48:21.765 [DEBUG] [Thread-196758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:48:21.765 [DEBUG] [Thread-196758] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:48:21.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:48:21.765 [DEBUG] [Thread-196758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:48:21.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:48:21.821 [DEBUG] [Thread-196758] [transport.py] [_log()] userauth is OK
2025-11-24T20:48:21.821 [DEBUG] [Thread-196758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:48:21.822 [DEBUG] [Thread-196758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:48:21.822 [DEBUG] [Thread-196758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:48:21.822 [DEBUG] [Thread-196758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:48:21.837 [INFO] [Thread-196758] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:48:21.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:48:21.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:48:21.893 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:48:21.896 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:48:22.698 [DEBUG] [Thread-196758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:48:22.698 [DEBUG] [Thread-196758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:48:22.746 [DEBUG] [Thread-196758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:48:22.746 [DEBUG] [Thread-196758] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:48:22.754 [DEBUG] [Thread-196758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:48:22.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:48:22.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-11-24T20:48:22.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-11-24T20:48:22.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:48:22.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:48:22.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:48:22.789 [DEBUG] [Thread-196758] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:48:27.650 [DEBUG] [Thread-196760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:48:42.909 [DEBUG] [Thread-196761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:48:52.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:48:52.851 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:48:52.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-11-24T20:48:54.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 48, 17), 17.02, 31.21, 0.0, 28.53, 16.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:48:54.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:48:17
2025-11-24T20:48:54.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:48:55.037 [DEBUG] [Thread-196762] [transport.py] [_log()] starting thread (client mode): 0xc9b80eb0
2025-11-24T20:48:55.039 [DEBUG] [Thread-196762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:48:55.041 [DEBUG] [Thread-196762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:48:55.041 [INFO] [Thread-196762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:48:55.050 [DEBUG] [Thread-196762] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] client lang: <none>
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] server lang: <none>
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] kex follows: False
2025-11-24T20:48:55.051 [DEBUG] [Thread-196762] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:48:55.052 [DEBUG] [Thread-196762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:48:55.052 [DEBUG] [Thread-196762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:48:55.052 [DEBUG] [Thread-196762] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:48:55.052 [DEBUG] [Thread-196762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:48:55.053 [DEBUG] [Thread-196762] [transport.py] [_log()] Compression: none
2025-11-24T20:48:55.053 [DEBUG] [Thread-196762] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:48:55.090 [DEBUG] [Thread-196762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:48:55.095 [DEBUG] [Thread-196762] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:48:55.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:48:55.107 [DEBUG] [Thread-196762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:48:55.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:48:55.110 [DEBUG] [Thread-196762] [transport.py] [_log()] userauth is OK
2025-11-24T20:48:55.111 [DEBUG] [Thread-196762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:48:55.111 [DEBUG] [Thread-196762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:48:55.111 [DEBUG] [Thread-196762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:48:55.111 [DEBUG] [Thread-196762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:48:55.143 [INFO] [Thread-196762] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:48:55.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:48:55.800 [DEBUG] [Thread-196762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:48:55.800 [DEBUG] [Thread-196762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:48:55.801 [DEBUG] [Thread-196762] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:48:55.841 [DEBUG] [Thread-196762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:48:55.841 [DEBUG] [Thread-196762] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:48:55.844 [DEBUG] [Thread-196762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:48:55.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:48:55.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:48:55.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:48:55.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:48:55.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:48:55.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:48:55.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:48:55.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:48:55.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:48:55.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.783729 -999.00  +16.50  19.63     37   +1.80 1 1 1 1 1     0    0 13.69 -40.56 ZNESW 15.9 19.6 168.8 27.5 16.8 -26.1 16.7 -25.3 16.4 -24.3 16.7 -25.3
2025-11-24T20:48:55.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:48:55.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:48:55.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.783729
2025-11-24T20:48:55.871 [DEBUG] [Thread-196762] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:48:55.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:48:55.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:48:55.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:48:55.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:48:55.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:48:55.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:48:17', tmtdew=17.02, humidity=31.21, cloud=0.0, wind=28.53, temperature=16.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:48:52', seeing=0.66, atlas_timestamp='2025-11-24T18:48:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:46:00')
2025-11-24T20:48:55.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:48:55.978 [DEBUG] [Thread-196765] [transport.py] [_log()] starting thread (client mode): 0xd0702ef0
2025-11-24T20:48:55.978 [DEBUG] [Thread-196765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:48:55.993 [DEBUG] [Thread-196765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:48:55.993 [INFO] [Thread-196765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] client lang: <none>
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] server lang: <none>
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] kex follows: False
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] Compression: none
2025-11-24T20:48:56.001 [DEBUG] [Thread-196765] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:48:56.056 [DEBUG] [Thread-196765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:48:56.056 [DEBUG] [Thread-196765] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:48:56.056 [DEBUG] [Thread-196765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:48:56.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:48:56.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:48:56.113 [DEBUG] [Thread-196765] [transport.py] [_log()] userauth is OK
2025-11-24T20:48:56.113 [DEBUG] [Thread-196765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:48:56.113 [DEBUG] [Thread-196765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:48:56.113 [DEBUG] [Thread-196765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:48:56.113 [DEBUG] [Thread-196765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:48:56.127 [INFO] [Thread-196765] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:48:56.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:48:56.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:48:56.932 [DEBUG] [Thread-196765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:48:56.933 [DEBUG] [Thread-196765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:48:56.980 [DEBUG] [Thread-196765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:48:56.980 [DEBUG] [Thread-196765] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:48:56.988 [DEBUG] [Thread-196765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:48:56.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:48:56.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-11-24T20:48:57.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-11-24T20:48:57.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:48:57.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:48:57.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:48:57.021 [DEBUG] [Thread-196765] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:48:58.115 [DEBUG] [Thread-196767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:49:03.822 [DEBUG] [Thread-196768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:49:13.479 [DEBUG] [Thread-196769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:49:22.108 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:49:22.117 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:49:27.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:49:27.058 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:49:27.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-11-24T20:49:28.882 [DEBUG] [Thread-196770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:49:32.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 48, 51), 16.96, 31.62, 0.0, 27.95, 16.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:49:32.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:48:51
2025-11-24T20:49:33.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:49:33.564 [DEBUG] [Thread-196771] [transport.py] [_log()] starting thread (client mode): 0xd07cce20
2025-11-24T20:49:33.573 [DEBUG] [Thread-196771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:49:33.579 [DEBUG] [Thread-196771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:49:33.581 [INFO] [Thread-196771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:49:33.619 [DEBUG] [Thread-196771] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:49:33.620 [DEBUG] [Thread-196771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:49:33.620 [DEBUG] [Thread-196771] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:49:33.620 [DEBUG] [Thread-196771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:49:33.621 [DEBUG] [Thread-196771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:49:33.621 [DEBUG] [Thread-196771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:49:33.621 [DEBUG] [Thread-196771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:49:33.621 [DEBUG] [Thread-196771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:49:33.621 [DEBUG] [Thread-196771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:49:33.621 [DEBUG] [Thread-196771] [transport.py] [_log()] client lang: <none>
2025-11-24T20:49:33.621 [DEBUG] [Thread-196771] [transport.py] [_log()] server lang: <none>
2025-11-24T20:49:33.621 [DEBUG] [Thread-196771] [transport.py] [_log()] kex follows: False
2025-11-24T20:49:33.621 [DEBUG] [Thread-196771] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:49:33.626 [DEBUG] [Thread-196771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:49:33.626 [DEBUG] [Thread-196771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:49:33.626 [DEBUG] [Thread-196771] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:49:33.626 [DEBUG] [Thread-196771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:49:33.626 [DEBUG] [Thread-196771] [transport.py] [_log()] Compression: none
2025-11-24T20:49:33.626 [DEBUG] [Thread-196771] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:49:33.754 [DEBUG] [Thread-196771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:49:33.778 [DEBUG] [Thread-196771] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:49:33.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:49:33.792 [DEBUG] [Thread-196771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:49:33.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:49:33.809 [DEBUG] [Thread-196771] [transport.py] [_log()] userauth is OK
2025-11-24T20:49:33.812 [DEBUG] [Thread-196771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:49:33.813 [DEBUG] [Thread-196771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:49:33.813 [DEBUG] [Thread-196771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:49:33.813 [DEBUG] [Thread-196771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:49:33.862 [INFO] [Thread-196771] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:49:33.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:49:34.573 [DEBUG] [Thread-196771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:49:34.573 [DEBUG] [Thread-196771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:49:34.579 [DEBUG] [Thread-196771] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:49:34.614 [DEBUG] [Thread-196771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:49:34.614 [DEBUG] [Thread-196771] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:49:34.618 [DEBUG] [Thread-196771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:49:34.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:49:34.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:49:34.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:49:34.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:49:34.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:49:34.662 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:49:34.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:49:34.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:49:34.666 [DEBUG] [Thread-196771] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:49:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:49:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.784077 -999.00  +16.50  24.05     37   +1.80 1 1 1 1 1     0    0 14.00 -39.49 ZNESW 25.5 24.1 168.8 36.1 16.8 -25.9 16.7 -25.4 16.4 -24.2 16.7 -25.3
2025-11-24T20:49:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:49:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:49:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.784077
2025-11-24T20:49:34.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:49:34.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:49:34.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:49:34.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:49:34.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:49:34.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:48:51', tmtdew=16.96, humidity=31.62, cloud=0.0, wind=27.95, temperature=16.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:49:26', seeing=0.57, atlas_timestamp='2025-11-24T18:49:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:46:00')
2025-11-24T20:49:34.882 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:49:34.895 [DEBUG] [Thread-196774] [transport.py] [_log()] starting thread (client mode): 0xd31366b0
2025-11-24T20:49:34.895 [DEBUG] [Thread-196774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:49:34.910 [DEBUG] [Thread-196774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:49:34.910 [INFO] [Thread-196774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] client lang: <none>
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] server lang: <none>
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] kex follows: False
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] Compression: none
2025-11-24T20:49:34.918 [DEBUG] [Thread-196774] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:49:34.979 [DEBUG] [Thread-196774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:49:34.981 [DEBUG] [Thread-196774] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:49:34.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:49:34.982 [DEBUG] [Thread-196774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:49:34.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:49:35.037 [DEBUG] [Thread-196774] [transport.py] [_log()] userauth is OK
2025-11-24T20:49:35.037 [DEBUG] [Thread-196774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:49:35.037 [DEBUG] [Thread-196774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:49:35.037 [DEBUG] [Thread-196774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:49:35.037 [DEBUG] [Thread-196774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:49:35.056 [INFO] [Thread-196774] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:49:35.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:49:35.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:49:35.911 [DEBUG] [Thread-196774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:49:35.912 [DEBUG] [Thread-196774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:49:35.963 [DEBUG] [Thread-196774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:49:35.963 [DEBUG] [Thread-196774] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:49:35.976 [DEBUG] [Thread-196774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:49:35.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:49:35.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-11-24T20:49:35.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-11-24T20:49:36.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:49:36.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:49:36.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:49:36.010 [DEBUG] [Thread-196774] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:49:44.116 [DEBUG] [Thread-196776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:49:44.953 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:49:53.243 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:49:57.343 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:49:59.806 [DEBUG] [Thread-196777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:50:04.135 [DEBUG] [Thread-196778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:50:06.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:50:06.034 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:50:06.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-11-24T20:50:07.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 49, 26), 16.94, 31.64, 0.0, 28.09, 16.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:50:07.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:49:26
2025-11-24T20:50:07.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:50:07.788 [DEBUG] [Thread-196779] [transport.py] [_log()] starting thread (client mode): 0xd0713220
2025-11-24T20:50:07.789 [DEBUG] [Thread-196779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:50:07.789 [DEBUG] [Thread-196779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:50:07.790 [INFO] [Thread-196779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:50:07.793 [DEBUG] [Thread-196779] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] client lang: <none>
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] server lang: <none>
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] kex follows: False
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:50:07.794 [DEBUG] [Thread-196779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:50:07.795 [DEBUG] [Thread-196779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:50:07.795 [DEBUG] [Thread-196779] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:50:07.795 [DEBUG] [Thread-196779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:50:07.795 [DEBUG] [Thread-196779] [transport.py] [_log()] Compression: none
2025-11-24T20:50:07.795 [DEBUG] [Thread-196779] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:50:07.833 [DEBUG] [Thread-196779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:50:07.840 [DEBUG] [Thread-196779] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:50:07.842 [DEBUG] [Thread-196779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:50:07.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:50:07.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:50:07.846 [DEBUG] [Thread-196779] [transport.py] [_log()] userauth is OK
2025-11-24T20:50:07.846 [DEBUG] [Thread-196779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:50:07.847 [DEBUG] [Thread-196779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:50:07.847 [DEBUG] [Thread-196779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:50:07.847 [DEBUG] [Thread-196779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:50:07.865 [INFO] [Thread-196779] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:50:07.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:50:10.436 [DEBUG] [Thread-196779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:50:10.436 [DEBUG] [Thread-196779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:50:10.437 [DEBUG] [Thread-196779] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:50:10.477 [DEBUG] [Thread-196779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:50:10.477 [DEBUG] [Thread-196779] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:50:10.479 [DEBUG] [Thread-196779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:50:10.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:50:10.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:50:10.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:50:10.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:50:10.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:50:10.509 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:50:10.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:50:10.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:50:10.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:50:10.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.784424 -999.00  +16.50  16.41     37   +1.80 1 1 1 1 1     0    0 13.97 -41.19 ZNESW 20.7 16.4 171.6 33.5 16.8 -26.1 16.6 -25.5 16.4 -24.3 16.7 -25.3
2025-11-24T20:50:10.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:50:10.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:50:10.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.784424
2025-11-24T20:50:10.521 [DEBUG] [Thread-196779] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:50:10.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:50:10.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:50:10.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:50:10.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:50:10.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:50:10.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:49:26', tmtdew=16.94, humidity=31.64, cloud=0.0, wind=28.09, temperature=16.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:50:05', seeing=0.59, atlas_timestamp='2025-11-24T18:49:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:46:00')
2025-11-24T20:50:10.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:50:10.634 [DEBUG] [Thread-196782] [transport.py] [_log()] starting thread (client mode): 0xd07849d0
2025-11-24T20:50:10.634 [DEBUG] [Thread-196782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:50:10.652 [DEBUG] [Thread-196782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:50:10.652 [INFO] [Thread-196782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] client lang: <none>
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] server lang: <none>
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] kex follows: False
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] Compression: none
2025-11-24T20:50:10.665 [DEBUG] [Thread-196782] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:50:10.721 [DEBUG] [Thread-196782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:50:10.722 [DEBUG] [Thread-196782] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:50:10.722 [DEBUG] [Thread-196782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:50:10.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:50:10.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:50:10.777 [DEBUG] [Thread-196782] [transport.py] [_log()] userauth is OK
2025-11-24T20:50:10.777 [DEBUG] [Thread-196782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:50:10.777 [DEBUG] [Thread-196782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:50:10.777 [DEBUG] [Thread-196782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:50:10.777 [DEBUG] [Thread-196782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:50:10.794 [INFO] [Thread-196782] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:50:10.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:50:10.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:50:11.664 [DEBUG] [Thread-196782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:50:11.664 [DEBUG] [Thread-196782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:50:11.711 [DEBUG] [Thread-196782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:50:11.711 [DEBUG] [Thread-196782] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:50:11.721 [DEBUG] [Thread-196782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:50:11.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:50:11.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-11-24T20:50:11.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-11-24T20:50:11.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:50:11.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:50:11.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:50:11.754 [DEBUG] [Thread-196782] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:50:14.904 [DEBUG] [Thread-196784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:50:22.331 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:50:22.343 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:50:30.079 [DEBUG] [Thread-196785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:50:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:50:41.954 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:50:42.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:50:44.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 50, 5), 16.93, 31.67, 0.0, 29.91, 16.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:50:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:50:05
2025-11-24T20:50:44.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:50:45.422 [DEBUG] [Thread-196786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:50:45.450 [DEBUG] [Thread-196787] [transport.py] [_log()] starting thread (client mode): 0xd3150d00
2025-11-24T20:50:45.457 [DEBUG] [Thread-196787] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:50:45.462 [DEBUG] [Thread-196787] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:50:45.463 [INFO] [Thread-196787] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:50:45.500 [DEBUG] [Thread-196787] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] client lang: <none>
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] server lang: <none>
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] kex follows: False
2025-11-24T20:50:45.501 [DEBUG] [Thread-196787] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:50:45.504 [DEBUG] [Thread-196787] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:50:45.505 [DEBUG] [Thread-196787] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:50:45.507 [DEBUG] [Thread-196787] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:50:45.508 [DEBUG] [Thread-196787] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:50:45.508 [DEBUG] [Thread-196787] [transport.py] [_log()] Compression: none
2025-11-24T20:50:45.508 [DEBUG] [Thread-196787] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:50:45.649 [DEBUG] [Thread-196787] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:50:45.677 [DEBUG] [Thread-196787] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:50:45.692 [DEBUG] [Thread-196787] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:50:45.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:50:45.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:50:45.708 [DEBUG] [Thread-196787] [transport.py] [_log()] userauth is OK
2025-11-24T20:50:45.710 [DEBUG] [Thread-196787] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:50:45.712 [DEBUG] [Thread-196787] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:50:45.712 [DEBUG] [Thread-196787] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:50:45.712 [DEBUG] [Thread-196787] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:50:45.767 [INFO] [Thread-196787] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:50:45.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:50:46.397 [DEBUG] [Thread-196787] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:50:46.397 [DEBUG] [Thread-196787] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:50:46.402 [DEBUG] [Thread-196787] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:50:46.438 [DEBUG] [Thread-196787] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:50:46.438 [DEBUG] [Thread-196787] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:50:46.443 [DEBUG] [Thread-196787] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:50:46.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:50:46.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:50:46.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:50:46.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:50:46.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:50:46.492 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:50:46.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:50:46.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:50:46.500 [DEBUG] [Thread-196787] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:50:46.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:50:46.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.784771 -999.00  +16.50  20.55     37   +1.80 1 1 1 1 1     0    0 13.92 -40.01 ZNESW 18.0 20.6 165.4 26.9 16.8 -26.1 16.7 -25.5 16.4 -24.5 16.7 -25.4
2025-11-24T20:50:46.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:50:46.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:50:46.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.784771
2025-11-24T20:50:46.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:50:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:50:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:50:46.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:50:46.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:50:46.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:50:05', tmtdew=16.93, humidity=31.67, cloud=0.0, wind=29.91, temperature=16.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:50:39', seeing=0.54, atlas_timestamp='2025-11-24T18:50:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:46:00')
2025-11-24T20:50:46.724 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:50:46.738 [DEBUG] [Thread-196790] [transport.py] [_log()] starting thread (client mode): 0xd07384c0
2025-11-24T20:50:46.738 [DEBUG] [Thread-196790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:50:46.755 [DEBUG] [Thread-196790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:50:46.755 [INFO] [Thread-196790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:50:46.764 [DEBUG] [Thread-196790] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:50:46.764 [DEBUG] [Thread-196790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:50:46.764 [DEBUG] [Thread-196790] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:50:46.764 [DEBUG] [Thread-196790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:50:46.764 [DEBUG] [Thread-196790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:50:46.764 [DEBUG] [Thread-196790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:50:46.765 [DEBUG] [Thread-196790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:50:46.765 [DEBUG] [Thread-196790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:50:46.765 [DEBUG] [Thread-196790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:50:46.765 [DEBUG] [Thread-196790] [transport.py] [_log()] client lang: <none>
2025-11-24T20:50:46.765 [DEBUG] [Thread-196790] [transport.py] [_log()] server lang: <none>
2025-11-24T20:50:46.765 [DEBUG] [Thread-196790] [transport.py] [_log()] kex follows: False
2025-11-24T20:50:46.765 [DEBUG] [Thread-196790] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:50:46.765 [DEBUG] [Thread-196790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:50:46.765 [DEBUG] [Thread-196790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:50:46.766 [DEBUG] [Thread-196790] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:50:46.766 [DEBUG] [Thread-196790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:50:46.766 [DEBUG] [Thread-196790] [transport.py] [_log()] Compression: none
2025-11-24T20:50:46.766 [DEBUG] [Thread-196790] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:50:46.823 [DEBUG] [Thread-196790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:50:46.824 [DEBUG] [Thread-196790] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:50:46.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:50:46.826 [DEBUG] [Thread-196790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:50:46.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:50:46.882 [DEBUG] [Thread-196790] [transport.py] [_log()] userauth is OK
2025-11-24T20:50:46.882 [DEBUG] [Thread-196790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:50:46.882 [DEBUG] [Thread-196790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:50:46.882 [DEBUG] [Thread-196790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:50:46.882 [DEBUG] [Thread-196790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:50:46.901 [INFO] [Thread-196790] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:50:46.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:50:46.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:50:47.789 [DEBUG] [Thread-196790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:50:47.789 [DEBUG] [Thread-196790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:50:47.837 [DEBUG] [Thread-196790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:50:47.837 [DEBUG] [Thread-196790] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:50:47.846 [DEBUG] [Thread-196790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:50:47.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:50:47.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-11-24T20:50:47.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-11-24T20:50:47.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:50:47.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:50:47.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:50:47.881 [DEBUG] [Thread-196790] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:51:00.842 [DEBUG] [Thread-196792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:51:04.398 [DEBUG] [Thread-196793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:51:16.057 [DEBUG] [Thread-196794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:51:17.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:51:17.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:51:17.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-11-24T20:51:18.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 51, 14), 16.9, 31.76, 0.0, 27.3, 16.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:51:18.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:51:14
2025-11-24T20:51:19.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:51:19.196 [DEBUG] [Thread-196795] [transport.py] [_log()] starting thread (client mode): 0xd0738a00
2025-11-24T20:51:19.196 [DEBUG] [Thread-196795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:51:19.210 [DEBUG] [Thread-196795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:51:19.210 [INFO] [Thread-196795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] client lang: <none>
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] server lang: <none>
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] kex follows: False
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:51:19.214 [DEBUG] [Thread-196795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:51:19.215 [DEBUG] [Thread-196795] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:51:19.215 [DEBUG] [Thread-196795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:51:19.215 [DEBUG] [Thread-196795] [transport.py] [_log()] Compression: none
2025-11-24T20:51:19.215 [DEBUG] [Thread-196795] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:51:19.241 [DEBUG] [Thread-196795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:51:19.245 [DEBUG] [Thread-196795] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:51:19.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:51:19.248 [DEBUG] [Thread-196795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:51:19.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:51:19.251 [DEBUG] [Thread-196795] [transport.py] [_log()] userauth is OK
2025-11-24T20:51:19.251 [DEBUG] [Thread-196795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:51:19.251 [DEBUG] [Thread-196795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:51:19.251 [DEBUG] [Thread-196795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:51:19.252 [DEBUG] [Thread-196795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:51:19.275 [INFO] [Thread-196795] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:51:19.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:51:20.085 [DEBUG] [Thread-196795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:51:20.086 [DEBUG] [Thread-196795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:51:20.087 [DEBUG] [Thread-196795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:51:20.125 [DEBUG] [Thread-196795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:51:20.125 [DEBUG] [Thread-196795] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:51:20.129 [DEBUG] [Thread-196795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:51:20.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:51:20.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:51:20.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:51:20.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:51:20.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:51:20.152 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:51:20.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:51:20.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:51:20.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:51:20.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.785118 -999.00  +16.50  22.18     37   +1.80 1 1 1 1 1     0    0 13.86 -42.22 ZNESW 20.9 22.2 168.2 30.3 16.8 -26.1 16.6 -25.5 16.4 -24.5 16.7 -25.4
2025-11-24T20:51:20.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:51:20.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:51:20.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.785118
2025-11-24T20:51:20.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:51:20.169 [DEBUG] [Thread-196795] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:51:20.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:51:20.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:51:20.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:51:20.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:51:20.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:51:14', tmtdew=16.9, humidity=31.76, cloud=0.0, wind=27.3, temperature=16.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:51:14', seeing=0.59, atlas_timestamp='2025-11-24T18:50:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:46:00')
2025-11-24T20:51:20.252 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:51:20.264 [DEBUG] [Thread-196798] [transport.py] [_log()] starting thread (client mode): 0xd07cca90
2025-11-24T20:51:20.264 [DEBUG] [Thread-196798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:51:20.278 [DEBUG] [Thread-196798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:51:20.278 [INFO] [Thread-196798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] client lang: <none>
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] server lang: <none>
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] kex follows: False
2025-11-24T20:51:20.286 [DEBUG] [Thread-196798] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:51:20.287 [DEBUG] [Thread-196798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:51:20.287 [DEBUG] [Thread-196798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:51:20.287 [DEBUG] [Thread-196798] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:51:20.287 [DEBUG] [Thread-196798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:51:20.287 [DEBUG] [Thread-196798] [transport.py] [_log()] Compression: none
2025-11-24T20:51:20.287 [DEBUG] [Thread-196798] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:51:20.344 [DEBUG] [Thread-196798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:51:20.345 [DEBUG] [Thread-196798] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:51:20.345 [DEBUG] [Thread-196798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:51:20.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:51:20.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:51:20.401 [DEBUG] [Thread-196798] [transport.py] [_log()] userauth is OK
2025-11-24T20:51:20.401 [DEBUG] [Thread-196798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:51:20.401 [DEBUG] [Thread-196798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:51:20.401 [DEBUG] [Thread-196798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:51:20.401 [DEBUG] [Thread-196798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:51:20.415 [INFO] [Thread-196798] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:51:20.415 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:51:20.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:51:21.250 [DEBUG] [Thread-196798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:51:21.250 [DEBUG] [Thread-196798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:51:21.297 [DEBUG] [Thread-196798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:51:21.297 [DEBUG] [Thread-196798] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:51:21.306 [DEBUG] [Thread-196798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:51:21.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:51:21.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-11-24T20:51:21.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:51:21.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:51:21.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:51:21.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:51:21.356 [DEBUG] [Thread-196798] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:51:22.561 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:51:22.570 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:51:31.163 [DEBUG] [Thread-196800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:51:46.332 [DEBUG] [Thread-196801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:51:51.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:51:51.398 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:51:51.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-11-24T20:51:52.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 51, 14), 16.9, 31.76, 0.0, 27.3, 16.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:51:52.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:51:14
2025-11-24T20:51:52.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:51:53.005 [DEBUG] [Thread-196802] [transport.py] [_log()] starting thread (client mode): 0xd07cfd60
2025-11-24T20:51:53.005 [DEBUG] [Thread-196802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:51:53.015 [DEBUG] [Thread-196802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:51:53.015 [INFO] [Thread-196802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:51:53.019 [DEBUG] [Thread-196802] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] client lang: <none>
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] server lang: <none>
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] kex follows: False
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] Compression: none
2025-11-24T20:51:53.020 [DEBUG] [Thread-196802] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:51:53.051 [DEBUG] [Thread-196802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:51:53.053 [DEBUG] [Thread-196802] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:51:53.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:51:53.055 [DEBUG] [Thread-196802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:51:53.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:51:53.058 [DEBUG] [Thread-196802] [transport.py] [_log()] userauth is OK
2025-11-24T20:51:53.058 [DEBUG] [Thread-196802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:51:53.058 [DEBUG] [Thread-196802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:51:53.058 [DEBUG] [Thread-196802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:51:53.058 [DEBUG] [Thread-196802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:51:53.089 [INFO] [Thread-196802] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:51:53.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:51:53.734 [DEBUG] [Thread-196802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:51:53.735 [DEBUG] [Thread-196802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:51:53.736 [DEBUG] [Thread-196802] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:51:53.776 [DEBUG] [Thread-196802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:51:53.776 [DEBUG] [Thread-196802] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:51:53.779 [DEBUG] [Thread-196802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:51:53.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:51:53.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:51:53.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:51:53.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:51:53.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:51:53.800 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:51:53.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:51:53.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:51:53.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:51:53.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.785466 -999.00  +16.50  23.86     37   +1.80 1 1 1 1 1     0    0 13.60 -42.92 ZNESW 18.0 23.9 171.6 29.8 16.8 -26.1 16.6 -25.5 16.4 -24.3 16.7 -25.4
2025-11-24T20:51:53.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:51:53.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:51:53.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.785466
2025-11-24T20:51:53.807 [DEBUG] [Thread-196802] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:51:53.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:51:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:51:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:51:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:51:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:51:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:51:14', tmtdew=16.9, humidity=31.76, cloud=0.0, wind=27.3, temperature=16.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:51:48', seeing=0.68, atlas_timestamp='2025-11-24T18:51:04.262', atlas_cloud=1, atlas_rain=1, zp_data=[0.01574999999999882, 0.06125000000000114, 0.021250000000000213, -0.01750000000000007, 0.0365000000000002, 0.07775000000000176, 0.02999999999999936, 0.039250000000000895, 0.04199999999999804, 0.05150000000000077, 0.030249999999998778, 0.03200000000000003, 0.11700000000000088, 0.09024999999999928, 0.04499999999999993, 0.041999999999999815, 0.04475000000000051, 0.04099999999999859, 0.08199999999999896, 0.021749999999999048, 0.10299999999999798, 0.06574999999999775, 0.024250000000002103, 0.027749999999999275, 0.04299999999999926, 0.06550000000000011, 0.08474999999999966, 0.0730000000000004, 0.10299999999999976, 0.015000000000000568, 0.07650000000000112, 0.002500000000001279, 0.0727499999999992], zp_timestamp='2025-11-24T18:46:00')
2025-11-24T20:51:53.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:51:53.907 [DEBUG] [Thread-196805] [transport.py] [_log()] starting thread (client mode): 0xd07fb850
2025-11-24T20:51:53.908 [DEBUG] [Thread-196805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:51:53.923 [DEBUG] [Thread-196805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:51:53.923 [INFO] [Thread-196805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] client lang: <none>
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] server lang: <none>
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] kex follows: False
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] Compression: none
2025-11-24T20:51:53.930 [DEBUG] [Thread-196805] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:51:53.988 [DEBUG] [Thread-196805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:51:53.988 [DEBUG] [Thread-196805] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:51:53.988 [DEBUG] [Thread-196805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:51:53.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:51:53.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:51:54.045 [DEBUG] [Thread-196805] [transport.py] [_log()] userauth is OK
2025-11-24T20:51:54.045 [DEBUG] [Thread-196805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:51:54.045 [DEBUG] [Thread-196805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:51:54.045 [DEBUG] [Thread-196805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:51:54.045 [DEBUG] [Thread-196805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:51:54.059 [INFO] [Thread-196805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:51:54.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:51:54.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:51:54.911 [DEBUG] [Thread-196805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:51:54.911 [DEBUG] [Thread-196805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:51:54.959 [DEBUG] [Thread-196805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:51:54.959 [DEBUG] [Thread-196805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:51:54.967 [DEBUG] [Thread-196805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:51:54.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:51:54.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-11-24T20:51:54.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-11-24T20:51:54.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:51:54.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:51:54.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:51:55.000 [DEBUG] [Thread-196805] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:52:01.450 [DEBUG] [Thread-196807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:52:06.107 [DEBUG] [Thread-196808 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:52:16.640 [DEBUG] [Thread-196809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:52:22.786 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:52:22.796 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:52:25.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:52:25.021 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:52:25.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-11-24T20:52:25.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 52, 21), 16.84, 31.87, 0.0, 28.57, 16.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:52:25.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:52:21
2025-11-24T20:52:26.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:52:26.243 [DEBUG] [Thread-196810] [transport.py] [_log()] starting thread (client mode): 0xd073ae60
2025-11-24T20:52:26.244 [DEBUG] [Thread-196810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:52:26.257 [DEBUG] [Thread-196810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:52:26.257 [INFO] [Thread-196810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:52:26.261 [DEBUG] [Thread-196810] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:52:26.261 [DEBUG] [Thread-196810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:52:26.261 [DEBUG] [Thread-196810] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:52:26.261 [DEBUG] [Thread-196810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:52:26.261 [DEBUG] [Thread-196810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:52:26.261 [DEBUG] [Thread-196810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:52:26.261 [DEBUG] [Thread-196810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:52:26.261 [DEBUG] [Thread-196810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:52:26.261 [DEBUG] [Thread-196810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:52:26.261 [DEBUG] [Thread-196810] [transport.py] [_log()] client lang: <none>
2025-11-24T20:52:26.262 [DEBUG] [Thread-196810] [transport.py] [_log()] server lang: <none>
2025-11-24T20:52:26.262 [DEBUG] [Thread-196810] [transport.py] [_log()] kex follows: False
2025-11-24T20:52:26.262 [DEBUG] [Thread-196810] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:52:26.262 [DEBUG] [Thread-196810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:52:26.262 [DEBUG] [Thread-196810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:52:26.263 [DEBUG] [Thread-196810] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:52:26.263 [DEBUG] [Thread-196810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:52:26.263 [DEBUG] [Thread-196810] [transport.py] [_log()] Compression: none
2025-11-24T20:52:26.263 [DEBUG] [Thread-196810] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:52:26.297 [DEBUG] [Thread-196810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:52:26.302 [DEBUG] [Thread-196810] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:52:26.304 [DEBUG] [Thread-196810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:52:26.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:52:26.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:52:26.311 [DEBUG] [Thread-196810] [transport.py] [_log()] userauth is OK
2025-11-24T20:52:26.311 [DEBUG] [Thread-196810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:52:26.311 [DEBUG] [Thread-196810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:52:26.312 [DEBUG] [Thread-196810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:52:26.312 [DEBUG] [Thread-196810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:52:26.337 [INFO] [Thread-196810] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:52:26.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:52:27.111 [DEBUG] [Thread-196810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:52:27.111 [DEBUG] [Thread-196810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:52:27.112 [DEBUG] [Thread-196810] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:52:27.152 [DEBUG] [Thread-196810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:52:27.152 [DEBUG] [Thread-196810] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:52:27.157 [DEBUG] [Thread-196810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:52:27.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:52:27.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:52:27.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:52:27.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:52:27.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:52:27.172 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:52:27.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:52:27.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:52:27.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:52:27.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.786160 -999.00  +16.50  21.45     37   +1.80 1 1 1 1 1     0    0 13.87 -45.86 ZNESW 25.7 21.4 174.6 29.7 16.7 -26.2 16.6 -25.5 -999.0 -999.0 16.7 -25.3
2025-11-24T20:52:27.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:52:27.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:52:27.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.786160
2025-11-24T20:52:27.179 [DEBUG] [Thread-196810] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:52:27.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:52:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:52:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:52:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:52:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:52:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:52:21', tmtdew=16.84, humidity=31.87, cloud=0.0, wind=28.57, temperature=16.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:52:21', seeing=0.58, atlas_timestamp='2025-11-24T18:52:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, 0.06425000000000125, 0.012249999999999872, -0.0065000000000008384, 0.06049999999999933, 0.07325000000000159, 0.06799999999999962, 0.00575000000000081, 0.05249999999999844, 0.053000000000000824, 0.025249999999999773, 0.04449999999999932, 0.11149999999999949, 0.1377499999999987, 0.03799999999999848, 0.016000000000000014, 0.057749999999998636, 0.0495000000000001, 0.04399999999999871, 0.012249999999998096, 0.06399999999999828, 0.10774999999999935, 0.07925000000000004, 0.03575000000000017, 0.05099999999999838, 0.04400000000000048, 0.10875000000000057, 0.06049999999999933, 0.09200000000000053, -0.023999999999999133, 0.027500000000001634, 0.038000000000000256, 0.01574999999999882], zp_timestamp='2025-11-24T18:51:00')
2025-11-24T20:52:27.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:52:27.276 [DEBUG] [Thread-196813] [transport.py] [_log()] starting thread (client mode): 0xd07cdf30
2025-11-24T20:52:27.276 [DEBUG] [Thread-196813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:52:27.290 [DEBUG] [Thread-196813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:52:27.290 [INFO] [Thread-196813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:52:27.298 [DEBUG] [Thread-196813] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:52:27.298 [DEBUG] [Thread-196813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] client lang: <none>
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] server lang: <none>
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] kex follows: False
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] Compression: none
2025-11-24T20:52:27.299 [DEBUG] [Thread-196813] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:52:27.360 [DEBUG] [Thread-196813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:52:27.360 [DEBUG] [Thread-196813] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:52:27.361 [DEBUG] [Thread-196813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:52:27.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:52:27.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:52:27.417 [DEBUG] [Thread-196813] [transport.py] [_log()] userauth is OK
2025-11-24T20:52:27.417 [DEBUG] [Thread-196813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:52:27.417 [DEBUG] [Thread-196813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:52:27.417 [DEBUG] [Thread-196813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:52:27.417 [DEBUG] [Thread-196813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:52:27.431 [INFO] [Thread-196813] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:52:27.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:52:27.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:52:28.291 [DEBUG] [Thread-196813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:52:28.291 [DEBUG] [Thread-196813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:52:28.338 [DEBUG] [Thread-196813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:52:28.339 [DEBUG] [Thread-196813] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:52:28.347 [DEBUG] [Thread-196813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:52:28.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:52:28.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-11-24T20:52:28.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:52:28.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:52:28.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:52:28.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:52:28.385 [DEBUG] [Thread-196813] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:52:31.755 [DEBUG] [Thread-196815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:52:46.960 [DEBUG] [Thread-196816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:52:58.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:52:58.436 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:52:58.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-11-24T20:52:59.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 52, 21), 16.84, 31.87, 0.0, 28.57, 16.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:52:59.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:52:21
2025-11-24T20:52:59.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:52:59.768 [DEBUG] [Thread-196817] [transport.py] [_log()] starting thread (client mode): 0xd0712230
2025-11-24T20:52:59.769 [DEBUG] [Thread-196817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:52:59.769 [DEBUG] [Thread-196817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:52:59.770 [INFO] [Thread-196817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:52:59.773 [DEBUG] [Thread-196817] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] client lang: <none>
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] server lang: <none>
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] kex follows: False
2025-11-24T20:52:59.774 [DEBUG] [Thread-196817] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:52:59.775 [DEBUG] [Thread-196817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:52:59.775 [DEBUG] [Thread-196817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:52:59.775 [DEBUG] [Thread-196817] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:52:59.775 [DEBUG] [Thread-196817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:52:59.775 [DEBUG] [Thread-196817] [transport.py] [_log()] Compression: none
2025-11-24T20:52:59.775 [DEBUG] [Thread-196817] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:52:59.811 [DEBUG] [Thread-196817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:52:59.814 [DEBUG] [Thread-196817] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:52:59.815 [DEBUG] [Thread-196817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:52:59.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:52:59.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:52:59.818 [DEBUG] [Thread-196817] [transport.py] [_log()] userauth is OK
2025-11-24T20:52:59.818 [DEBUG] [Thread-196817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:52:59.818 [DEBUG] [Thread-196817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:52:59.818 [DEBUG] [Thread-196817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:52:59.818 [DEBUG] [Thread-196817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:52:59.836 [INFO] [Thread-196817] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:52:59.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:53:00.483 [DEBUG] [Thread-196817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:53:00.483 [DEBUG] [Thread-196817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:53:00.483 [DEBUG] [Thread-196817] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:53:00.524 [DEBUG] [Thread-196817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:53:00.524 [DEBUG] [Thread-196817] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:53:00.558 [DEBUG] [Thread-196817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:53:00.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:53:00.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:53:00.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:53:00.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:53:00.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:53:00.583 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:53:00.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:53:00.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:53:00.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:53:00.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.786507 -999.00  +16.50  17.83     37   +1.80 1 1 1 1 1     0    0 13.80 -41.52 ZNESW 17.5 17.8 175.6 27.5 16.7 -26.1 16.6 -25.4 16.3 -24.4 16.7 -25.4
2025-11-24T20:53:00.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:53:00.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:53:00.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.786507
2025-11-24T20:53:00.596 [DEBUG] [Thread-196817] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:53:00.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:53:00.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:53:00.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:53:00.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:53:00.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:53:00.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:52:21', tmtdew=16.84, humidity=31.87, cloud=0.0, wind=28.57, temperature=16.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:52:55', seeing=0.7, atlas_timestamp='2025-11-24T18:52:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, 0.06425000000000125, 0.012249999999999872, -0.0065000000000008384, 0.06049999999999933, 0.07325000000000159, 0.06799999999999962, 0.00575000000000081, 0.05249999999999844, 0.053000000000000824, 0.025249999999999773, 0.04449999999999932, 0.11149999999999949, 0.1377499999999987, 0.03799999999999848, 0.016000000000000014, 0.057749999999998636, 0.0495000000000001, 0.04399999999999871, 0.012249999999998096, 0.06399999999999828, 0.10774999999999935, 0.07925000000000004, 0.03575000000000017, 0.05099999999999838, 0.04400000000000048, 0.10875000000000057, 0.06049999999999933, 0.09200000000000053, -0.023999999999999133, 0.027500000000001634, 0.038000000000000256, 0.01574999999999882], zp_timestamp='2025-11-24T18:51:00')
2025-11-24T20:53:00.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:53:00.740 [DEBUG] [Thread-196820] [transport.py] [_log()] starting thread (client mode): 0xd317dcf0
2025-11-24T20:53:00.740 [DEBUG] [Thread-196820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:53:00.756 [DEBUG] [Thread-196820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:53:00.756 [INFO] [Thread-196820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] client lang: <none>
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] server lang: <none>
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] kex follows: False
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] Compression: none
2025-11-24T20:53:00.764 [DEBUG] [Thread-196820] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:53:00.820 [DEBUG] [Thread-196820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:53:00.820 [DEBUG] [Thread-196820] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:53:00.820 [DEBUG] [Thread-196820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:53:00.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:53:00.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:53:00.877 [DEBUG] [Thread-196820] [transport.py] [_log()] userauth is OK
2025-11-24T20:53:00.877 [DEBUG] [Thread-196820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:53:00.877 [DEBUG] [Thread-196820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:53:00.877 [DEBUG] [Thread-196820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:53:00.877 [DEBUG] [Thread-196820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:53:00.893 [INFO] [Thread-196820] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:53: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-11-24T20:53:00.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:53:01.766 [DEBUG] [Thread-196820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:53:01.767 [DEBUG] [Thread-196820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:53:01.814 [DEBUG] [Thread-196820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:53:01.814 [DEBUG] [Thread-196820] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:53:01.822 [DEBUG] [Thread-196820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:53:01.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:53:01.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-11-24T20:53:01.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-11-24T20:53:01.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:53:01.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:53:01.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:53:01.856 [DEBUG] [Thread-196820] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:53:02.122 [DEBUG] [Thread-196822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:53:06.456 [DEBUG] [Thread-196823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:53:17.374 [DEBUG] [Thread-196824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:53:20.173 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:53:23.007 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:53:23.036 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:53:31.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:53:31.886 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:53:31.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:53:32.520 [DEBUG] [Thread-196825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:53:32.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 52, 54), 16.81, 31.94, 0.0, 29.93, 16.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:53:32.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:52:54
2025-11-24T20:53:33.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:53:33.226 [DEBUG] [Thread-196826] [transport.py] [_log()] starting thread (client mode): 0xd317e8c0
2025-11-24T20:53:33.227 [DEBUG] [Thread-196826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:53:33.233 [DEBUG] [Thread-196826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:53:33.234 [INFO] [Thread-196826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] client lang: <none>
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] server lang: <none>
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] kex follows: False
2025-11-24T20:53:33.240 [DEBUG] [Thread-196826] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:53:33.241 [DEBUG] [Thread-196826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:53:33.241 [DEBUG] [Thread-196826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:53:33.241 [DEBUG] [Thread-196826] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:53:33.242 [DEBUG] [Thread-196826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:53:33.242 [DEBUG] [Thread-196826] [transport.py] [_log()] Compression: none
2025-11-24T20:53:33.242 [DEBUG] [Thread-196826] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:53:33.274 [DEBUG] [Thread-196826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:53:33.280 [DEBUG] [Thread-196826] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:53:33.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:53:33.283 [DEBUG] [Thread-196826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:53:33.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:53:33.286 [DEBUG] [Thread-196826] [transport.py] [_log()] userauth is OK
2025-11-24T20:53:33.286 [DEBUG] [Thread-196826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:53:33.286 [DEBUG] [Thread-196826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:53:33.286 [DEBUG] [Thread-196826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:53:33.286 [DEBUG] [Thread-196826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:53:33.307 [INFO] [Thread-196826] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:53:33.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:53:33.967 [DEBUG] [Thread-196826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:53:33.968 [DEBUG] [Thread-196826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:53:33.969 [DEBUG] [Thread-196826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:53:34.009 [DEBUG] [Thread-196826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:53:34.009 [DEBUG] [Thread-196826] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:53:34.012 [DEBUG] [Thread-196826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:53:34.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:53:34.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:53:34.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:53:34.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:53:34.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:53:34.040 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:53:34.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:53:34.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:53:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:53:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.786854 -999.00  +16.50  22.54     37   +1.80 1 1 1 1 1     0    0 13.66 -41.31 ZNESW 21.5 22.5 168.3 31.4 16.7 -26.1 16.6 -25.5 16.4 -24.3 16.6 -25.5
2025-11-24T20:53:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:53:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:53:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.786854
2025-11-24T20:53:34.047 [DEBUG] [Thread-196826] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:53:34.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:53:34.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:53:34.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:53:34.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:53:34.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:53:34.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:52:54', tmtdew=16.81, humidity=31.94, cloud=0.0, wind=29.93, temperature=16.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:53:29', seeing=0.56, atlas_timestamp='2025-11-24T18:53:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, 0.06425000000000125, 0.012249999999999872, -0.0065000000000008384, 0.06049999999999933, 0.07325000000000159, 0.06799999999999962, 0.00575000000000081, 0.05249999999999844, 0.053000000000000824, 0.025249999999999773, 0.04449999999999932, 0.11149999999999949, 0.1377499999999987, 0.03799999999999848, 0.016000000000000014, 0.057749999999998636, 0.0495000000000001, 0.04399999999999871, 0.012249999999998096, 0.06399999999999828, 0.10774999999999935, 0.07925000000000004, 0.03575000000000017, 0.05099999999999838, 0.04400000000000048, 0.10875000000000057, 0.06049999999999933, 0.09200000000000053, -0.023999999999999133, 0.027500000000001634, 0.038000000000000256, 0.01574999999999882], zp_timestamp='2025-11-24T18:51:00')
2025-11-24T20:53:34.154 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:53:34.166 [DEBUG] [Thread-196829] [transport.py] [_log()] starting thread (client mode): 0xd3150d00
2025-11-24T20:53:34.166 [DEBUG] [Thread-196829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:53:34.181 [DEBUG] [Thread-196829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:53:34.181 [INFO] [Thread-196829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:53:34.189 [DEBUG] [Thread-196829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:53:34.189 [DEBUG] [Thread-196829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:53:34.189 [DEBUG] [Thread-196829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:53:34.189 [DEBUG] [Thread-196829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:53:34.189 [DEBUG] [Thread-196829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:53:34.190 [DEBUG] [Thread-196829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:53:34.190 [DEBUG] [Thread-196829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:53:34.190 [DEBUG] [Thread-196829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:53:34.190 [DEBUG] [Thread-196829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:53:34.190 [DEBUG] [Thread-196829] [transport.py] [_log()] client lang: <none>
2025-11-24T20:53:34.190 [DEBUG] [Thread-196829] [transport.py] [_log()] server lang: <none>
2025-11-24T20:53:34.190 [DEBUG] [Thread-196829] [transport.py] [_log()] kex follows: False
2025-11-24T20:53:34.190 [DEBUG] [Thread-196829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:53:34.190 [DEBUG] [Thread-196829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:53:34.191 [DEBUG] [Thread-196829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:53:34.191 [DEBUG] [Thread-196829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:53:34.191 [DEBUG] [Thread-196829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:53:34.191 [DEBUG] [Thread-196829] [transport.py] [_log()] Compression: none
2025-11-24T20:53:34.191 [DEBUG] [Thread-196829] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:53:34.251 [DEBUG] [Thread-196829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:53:34.251 [DEBUG] [Thread-196829] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:53:34.252 [DEBUG] [Thread-196829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:53:34.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:53:34.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:53:34.310 [DEBUG] [Thread-196829] [transport.py] [_log()] userauth is OK
2025-11-24T20:53:34.310 [DEBUG] [Thread-196829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:53:34.310 [DEBUG] [Thread-196829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:53:34.310 [DEBUG] [Thread-196829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:53:34.310 [DEBUG] [Thread-196829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:53:34.324 [INFO] [Thread-196829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:53:34.324 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:53:34.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:53:35.174 [DEBUG] [Thread-196829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:53:35.174 [DEBUG] [Thread-196829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:53:35.222 [DEBUG] [Thread-196829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:53:35.222 [DEBUG] [Thread-196829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:53:35.230 [DEBUG] [Thread-196829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:53:35.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:53:35.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:53:35.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-11-24T20:53:35.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:53:35.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:53:35.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:53:35.263 [DEBUG] [Thread-196829] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:53:47.696 [DEBUG] [Thread-196831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:54:03.150 [DEBUG] [Thread-196832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:54:05.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:54:05.261 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:54:05.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:54:06.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 53, 29), 16.85, 31.86, 0.0, 30.07, 16.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:54:06.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:53:29
2025-11-24T20:54:06.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:54:06.631 [DEBUG] [Thread-196833] [transport.py] [_log()] starting thread (client mode): 0xd3136950
2025-11-24T20:54:06.633 [DEBUG] [Thread-196833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:54:06.640 [DEBUG] [Thread-196833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:54:06.640 [INFO] [Thread-196833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] client lang: <none>
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] server lang: <none>
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] kex follows: False
2025-11-24T20:54:06.646 [DEBUG] [Thread-196833] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:54:06.647 [DEBUG] [Thread-196833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:54:06.647 [DEBUG] [Thread-196833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:54:06.647 [DEBUG] [Thread-196833] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:54:06.647 [DEBUG] [Thread-196833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:54:06.648 [DEBUG] [Thread-196833] [transport.py] [_log()] Compression: none
2025-11-24T20:54:06.648 [DEBUG] [Thread-196833] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:54:06.686 [DEBUG] [Thread-196833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:54:06.692 [DEBUG] [Thread-196833] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:54:06.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:54:06.696 [DEBUG] [Thread-196833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:54:06.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:54:06.699 [DEBUG] [Thread-196833] [transport.py] [_log()] userauth is OK
2025-11-24T20:54:06.700 [DEBUG] [Thread-196833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:54:06.700 [DEBUG] [Thread-196833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:54:06.700 [DEBUG] [Thread-196833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:54:06.700 [DEBUG] [Thread-196833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:54:06.739 [INFO] [Thread-196833] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:54:06.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:54:06.851 [DEBUG] [Thread-196835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:54:07.381 [DEBUG] [Thread-196833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:54:07.382 [DEBUG] [Thread-196833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:54:07.383 [DEBUG] [Thread-196833] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:54:07.422 [DEBUG] [Thread-196833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:54:07.422 [DEBUG] [Thread-196833] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:54:07.425 [DEBUG] [Thread-196833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:54:07.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:54:07.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:54:07.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:54:07.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:54:07.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:54:07.449 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:54:07.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:54:07.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:54:07.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:54:07.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.787201 -999.00  +16.40  15.83     37   +1.80 1 1 1 1 1     0    0 13.69 -40.98 ZNESW 20.2 15.8 167.0 30.1 16.7 -26.1 16.6 -25.4 16.3 -24.4 16.6 -25.4
2025-11-24T20:54:07.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:54:07.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:54:07.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.787201
2025-11-24T20:54:07.456 [DEBUG] [Thread-196833] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:54:07.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:54:07.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:54:07.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:54:07.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:54:07.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:54:07.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:53:29', tmtdew=16.85, humidity=31.86, cloud=0.0, wind=30.07, temperature=16.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:54:03', seeing=0.56, atlas_timestamp='2025-11-24T18:53:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, 0.06425000000000125, 0.012249999999999872, -0.0065000000000008384, 0.06049999999999933, 0.07325000000000159, 0.06799999999999962, 0.00575000000000081, 0.05249999999999844, 0.053000000000000824, 0.025249999999999773, 0.04449999999999932, 0.11149999999999949, 0.1377499999999987, 0.03799999999999848, 0.016000000000000014, 0.057749999999998636, 0.0495000000000001, 0.04399999999999871, 0.012249999999998096, 0.06399999999999828, 0.10774999999999935, 0.07925000000000004, 0.03575000000000017, 0.05099999999999838, 0.04400000000000048, 0.10875000000000057, 0.06049999999999933, 0.09200000000000053, -0.023999999999999133, 0.027500000000001634, 0.038000000000000256, 0.01574999999999882], zp_timestamp='2025-11-24T18:51:00')
2025-11-24T20:54:07.555 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:54:07.566 [DEBUG] [Thread-196837] [transport.py] [_log()] starting thread (client mode): 0xd317d1e0
2025-11-24T20:54:07.566 [DEBUG] [Thread-196837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:54:07.582 [DEBUG] [Thread-196837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:54:07.582 [INFO] [Thread-196837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] client lang: <none>
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] server lang: <none>
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] kex follows: False
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:54:07.589 [DEBUG] [Thread-196837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:54:07.590 [DEBUG] [Thread-196837] [transport.py] [_log()] Compression: none
2025-11-24T20:54:07.590 [DEBUG] [Thread-196837] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:54:07.648 [DEBUG] [Thread-196837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:54:07.648 [DEBUG] [Thread-196837] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:54:07.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:54:07.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:54:07.649 [DEBUG] [Thread-196837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:54:07.705 [DEBUG] [Thread-196837] [transport.py] [_log()] userauth is OK
2025-11-24T20:54:07.705 [DEBUG] [Thread-196837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:54:07.705 [DEBUG] [Thread-196837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:54:07.705 [DEBUG] [Thread-196837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:54:07.705 [DEBUG] [Thread-196837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:54:07.719 [INFO] [Thread-196837] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:54:07.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:54:07.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:54:08.563 [DEBUG] [Thread-196837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:54:08.564 [DEBUG] [Thread-196837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:54:08.611 [DEBUG] [Thread-196837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:54:08.611 [DEBUG] [Thread-196837] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:54:08.619 [DEBUG] [Thread-196837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:54:08.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:54:08.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-11-24T20:54:08.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-11-24T20:54:08.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:54:08.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:54:08.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:54:08.653 [DEBUG] [Thread-196837] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:54:18.303 [DEBUG] [Thread-196839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:54:23.238 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:54:23.240 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:54:33.593 [DEBUG] [Thread-196840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:54:38.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:54:38.663 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:54: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-11-24T20:54:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 54, 3), 16.85, 31.86, 0.0, 28.32, 16.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:54:40.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:54:03
2025-11-24T20:54:40.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:54:40.664 [DEBUG] [Thread-196841] [transport.py] [_log()] starting thread (client mode): 0xd07fb790
2025-11-24T20:54:40.664 [DEBUG] [Thread-196841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:54:40.676 [DEBUG] [Thread-196841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:54:40.677 [INFO] [Thread-196841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] client lang: <none>
2025-11-24T20:54:40.681 [DEBUG] [Thread-196841] [transport.py] [_log()] server lang: <none>
2025-11-24T20:54:40.682 [DEBUG] [Thread-196841] [transport.py] [_log()] kex follows: False
2025-11-24T20:54:40.682 [DEBUG] [Thread-196841] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:54:40.682 [DEBUG] [Thread-196841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:54:40.682 [DEBUG] [Thread-196841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:54:40.682 [DEBUG] [Thread-196841] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:54:40.682 [DEBUG] [Thread-196841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:54:40.682 [DEBUG] [Thread-196841] [transport.py] [_log()] Compression: none
2025-11-24T20:54:40.682 [DEBUG] [Thread-196841] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:54:40.712 [DEBUG] [Thread-196841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:54:40.715 [DEBUG] [Thread-196841] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:54:40.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:54:40.717 [DEBUG] [Thread-196841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:54:40.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:54:40.720 [DEBUG] [Thread-196841] [transport.py] [_log()] userauth is OK
2025-11-24T20:54:40.720 [DEBUG] [Thread-196841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:54:40.720 [DEBUG] [Thread-196841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:54:40.720 [DEBUG] [Thread-196841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:54:40.720 [DEBUG] [Thread-196841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:54:40.740 [INFO] [Thread-196841] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:54:40.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:54:41.397 [DEBUG] [Thread-196841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:54:41.397 [DEBUG] [Thread-196841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:54:41.398 [DEBUG] [Thread-196841] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:54:41.438 [DEBUG] [Thread-196841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:54:41.438 [DEBUG] [Thread-196841] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:54:41.440 [DEBUG] [Thread-196841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:54:41.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:54:41.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:54:41.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:54:41.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:54:41.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:54:41.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:54:41.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:54:41.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:54:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:54:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.787549 -999.00  +16.40  17.96     37   +1.80 1 1 1 1 1     0    0 13.78 -40.86 ZNESW 19.6 18.0 170.8 23.9 16.6 -26.1 16.6 -25.5 16.4 -24.5 16.6 -25.3
2025-11-24T20:54:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:54:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:54:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.787549
2025-11-24T20:54:41.468 [DEBUG] [Thread-196841] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:54:41.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:54:41.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:54:41.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:54:41.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:54:41.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:54:41.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:54:03', tmtdew=16.85, humidity=31.86, cloud=0.0, wind=28.32, temperature=16.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:54:38', seeing=0.68, atlas_timestamp='2025-11-24T18:54:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, 0.06425000000000125, 0.012249999999999872, -0.0065000000000008384, 0.06049999999999933, 0.07325000000000159, 0.06799999999999962, 0.00575000000000081, 0.05249999999999844, 0.053000000000000824, 0.025249999999999773, 0.04449999999999932, 0.11149999999999949, 0.1377499999999987, 0.03799999999999848, 0.016000000000000014, 0.057749999999998636, 0.0495000000000001, 0.04399999999999871, 0.012249999999998096, 0.06399999999999828, 0.10774999999999935, 0.07925000000000004, 0.03575000000000017, 0.05099999999999838, 0.04400000000000048, 0.10875000000000057, 0.06049999999999933, 0.09200000000000053, -0.023999999999999133, 0.027500000000001634, 0.038000000000000256, 0.01574999999999882], zp_timestamp='2025-11-24T18:51:00')
2025-11-24T20:54:41.567 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:54:41.579 [DEBUG] [Thread-196844] [transport.py] [_log()] starting thread (client mode): 0xd07f98d0
2025-11-24T20:54:41.579 [DEBUG] [Thread-196844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:54:41.593 [DEBUG] [Thread-196844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:54:41.593 [INFO] [Thread-196844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] client lang: <none>
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] server lang: <none>
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] kex follows: False
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] Compression: none
2025-11-24T20:54:41.601 [DEBUG] [Thread-196844] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:54:41.656 [DEBUG] [Thread-196844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:54:41.656 [DEBUG] [Thread-196844] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:54:41.656 [DEBUG] [Thread-196844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:54:41.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:54:41.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:54:41.713 [DEBUG] [Thread-196844] [transport.py] [_log()] userauth is OK
2025-11-24T20:54:41.713 [DEBUG] [Thread-196844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:54:41.713 [DEBUG] [Thread-196844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:54:41.713 [DEBUG] [Thread-196844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:54:41.713 [DEBUG] [Thread-196844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:54:41.727 [INFO] [Thread-196844] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:54:41.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:54:41.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:54:42.595 [DEBUG] [Thread-196844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:54:42.595 [DEBUG] [Thread-196844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:54:42.643 [DEBUG] [Thread-196844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:54:42.643 [DEBUG] [Thread-196844] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:54:42.651 [DEBUG] [Thread-196844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:54:42.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:54:42.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-11-24T20:54:42.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-11-24T20:54:42.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:54:42.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:54:42.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:54:42.685 [DEBUG] [Thread-196844] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:54:48.679 [DEBUG] [Thread-196846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:54:57.720 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:00.953 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:03.850 [DEBUG] [Thread-196847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:05.997 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:07.472 [DEBUG] [Thread-196848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:12.373 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:12.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:55:12.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:55:12.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-11-24T20:55:14.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 54, 37), 16.78, 31.89, 0.0, 28.42, 16.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:55:14.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:54:37
2025-11-24T20:55:14.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:55:14.752 [DEBUG] [Thread-196849] [transport.py] [_log()] starting thread (client mode): 0xd07f8a30
2025-11-24T20:55:14.753 [DEBUG] [Thread-196849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:55:14.754 [DEBUG] [Thread-196849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:55:14.754 [INFO] [Thread-196849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] client lang: <none>
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] server lang: <none>
2025-11-24T20:55:14.763 [DEBUG] [Thread-196849] [transport.py] [_log()] kex follows: False
2025-11-24T20:55:14.764 [DEBUG] [Thread-196849] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:55:14.764 [DEBUG] [Thread-196849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:55:14.765 [DEBUG] [Thread-196849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:55:14.765 [DEBUG] [Thread-196849] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:55:14.765 [DEBUG] [Thread-196849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:55:14.765 [DEBUG] [Thread-196849] [transport.py] [_log()] Compression: none
2025-11-24T20:55:14.765 [DEBUG] [Thread-196849] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:55:14.803 [DEBUG] [Thread-196849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:55:14.808 [DEBUG] [Thread-196849] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:55:14.810 [DEBUG] [Thread-196849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:55:14.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:55:14.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:55:14.814 [DEBUG] [Thread-196849] [transport.py] [_log()] userauth is OK
2025-11-24T20:55:14.815 [DEBUG] [Thread-196849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:55:14.815 [DEBUG] [Thread-196849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:55:14.815 [DEBUG] [Thread-196849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:55:14.815 [DEBUG] [Thread-196849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:55:14.846 [INFO] [Thread-196849] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:55:14.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:55:15.872 [DEBUG] [Thread-196849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:55:15.872 [DEBUG] [Thread-196849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:55:15.873 [DEBUG] [Thread-196849] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:55:15.913 [DEBUG] [Thread-196849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:55:15.913 [DEBUG] [Thread-196849] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:55:15.915 [DEBUG] [Thread-196849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:55:15.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:55:15.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:55:15.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:55:15.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:55:15.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:55:15.936 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:55:15.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:55:15.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:55:15.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:55:15.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.787896 -999.00  +16.40  18.29     37   +1.80 1 1 1 1 1     0    0 13.75 -38.91 ZNESW 22.5 18.3 158.6 26.3 16.6 -26.2 16.6 -25.6 16.3 -24.5 16.6 -25.3
2025-11-24T20:55:15.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:55:15.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:55:15.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.787896
2025-11-24T20:55:15.949 [DEBUG] [Thread-196849] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:55:15.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:55:15.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:55:15.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:55:15.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:55:15.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:55:15.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:54:37', tmtdew=16.78, humidity=31.89, cloud=0.0, wind=28.42, temperature=16.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:55:12', seeing=0.66, atlas_timestamp='2025-11-24T18:54:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, 0.06425000000000125, 0.012249999999999872, -0.0065000000000008384, 0.06049999999999933, 0.07325000000000159, 0.06799999999999962, 0.00575000000000081, 0.05249999999999844, 0.053000000000000824, 0.025249999999999773, 0.04449999999999932, 0.11149999999999949, 0.1377499999999987, 0.03799999999999848, 0.016000000000000014, 0.057749999999998636, 0.0495000000000001, 0.04399999999999871, 0.012249999999998096, 0.06399999999999828, 0.10774999999999935, 0.07925000000000004, 0.03575000000000017, 0.05099999999999838, 0.04400000000000048, 0.10875000000000057, 0.06049999999999933, 0.09200000000000053, -0.023999999999999133, 0.027500000000001634, 0.038000000000000256, 0.01574999999999882], zp_timestamp='2025-11-24T18:51:00')
2025-11-24T20:55:16.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:55:16.058 [DEBUG] [Thread-196852] [transport.py] [_log()] starting thread (client mode): 0xd317e7d0
2025-11-24T20:55:16.058 [DEBUG] [Thread-196852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:55:16.072 [DEBUG] [Thread-196852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:55:16.072 [INFO] [Thread-196852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:55:16.079 [DEBUG] [Thread-196852] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:55:16.079 [DEBUG] [Thread-196852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:55:16.079 [DEBUG] [Thread-196852] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:55:16.079 [DEBUG] [Thread-196852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:55:16.079 [DEBUG] [Thread-196852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] client lang: <none>
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] server lang: <none>
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] kex follows: False
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] Compression: none
2025-11-24T20:55:16.080 [DEBUG] [Thread-196852] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:55:16.140 [DEBUG] [Thread-196852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:55:16.140 [DEBUG] [Thread-196852] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:55:16.140 [DEBUG] [Thread-196852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:55:16.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:55:16.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:55:16.196 [DEBUG] [Thread-196852] [transport.py] [_log()] userauth is OK
2025-11-24T20:55:16.197 [DEBUG] [Thread-196852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:55:16.197 [DEBUG] [Thread-196852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:55:16.197 [DEBUG] [Thread-196852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:55:16.197 [DEBUG] [Thread-196852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:55:16.210 [INFO] [Thread-196852] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:55:16.211 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:55:16.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:55:17.144 [DEBUG] [Thread-196852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:55:17.144 [DEBUG] [Thread-196852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:55:17.189 [DEBUG] [Thread-196852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:55:17.189 [DEBUG] [Thread-196852] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:55:17.197 [DEBUG] [Thread-196852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:55:17.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:55:17.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-11-24T20:55:17.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-11-24T20:55:17.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:55:17.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:55:17.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:55:17.229 [DEBUG] [Thread-196852] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:55:18.914 [DEBUG] [Thread-196854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:23.443 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:23.444 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:30.763 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:34.115 [DEBUG] [Thread-196855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:35.128 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:47.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:55:47.279 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:55:47.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-11-24T20:55:48.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 55, 11), 16.75, 31.95, 0.0, 28.25, 16.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:55:48.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:55:11
2025-11-24T20:55:48.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:55:49.082 [DEBUG] [Thread-196856] [transport.py] [_log()] starting thread (client mode): 0xd317da50
2025-11-24T20:55:49.084 [DEBUG] [Thread-196856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:55:49.084 [DEBUG] [Thread-196856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:55:49.085 [INFO] [Thread-196856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] client lang: <none>
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] server lang: <none>
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] kex follows: False
2025-11-24T20:55:49.090 [DEBUG] [Thread-196856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:55:49.091 [DEBUG] [Thread-196856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:55:49.091 [DEBUG] [Thread-196856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:55:49.091 [DEBUG] [Thread-196856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:55:49.091 [DEBUG] [Thread-196856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:55:49.091 [DEBUG] [Thread-196856] [transport.py] [_log()] Compression: none
2025-11-24T20:55:49.092 [DEBUG] [Thread-196856] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:55:49.123 [DEBUG] [Thread-196856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:55:49.126 [DEBUG] [Thread-196856] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:55:49.128 [DEBUG] [Thread-196856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:55:49.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:55:49.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:55:49.132 [DEBUG] [Thread-196856] [transport.py] [_log()] userauth is OK
2025-11-24T20:55:49.132 [DEBUG] [Thread-196856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:55:49.132 [DEBUG] [Thread-196856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:55:49.132 [DEBUG] [Thread-196856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:55:49.132 [DEBUG] [Thread-196856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:55:49.146 [INFO] [Thread-196856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:55:49.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:55:49.237 [DEBUG] [Thread-196858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:49.788 [DEBUG] [Thread-196856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:55:49.788 [DEBUG] [Thread-196856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:55:49.789 [DEBUG] [Thread-196856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:55:49.829 [DEBUG] [Thread-196856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:55:49.829 [DEBUG] [Thread-196856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:55:49.832 [DEBUG] [Thread-196856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:55:49.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:55:49.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:55:49.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:55:49.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:55:49.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:55:49.853 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:55:49.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:55:49.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:55:49.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:55:49.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.788591 -999.00  +16.30  17.94     37   +1.80 1 1 1 1 1     0    0 13.81 -42.97 ZNESW 20.8 17.9 184.8 23.8 16.6 -26.1 16.5 -25.6 16.2 -24.3 16.6 -25.3
2025-11-24T20:55:49.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:55:49.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:55:49.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.788591
2025-11-24T20:55:49.866 [DEBUG] [Thread-196856] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:55:49.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:55:49.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:55:49.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:55:49.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:55:49.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:55:49.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:55:11', tmtdew=16.75, humidity=31.95, cloud=0.0, wind=28.25, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:55:46', seeing=0.66, atlas_timestamp='2025-11-24T18:55:34.262', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, 0.06425000000000125, 0.012249999999999872, -0.0065000000000008384, 0.06049999999999933, 0.07325000000000159, 0.06799999999999962, 0.00575000000000081, 0.05249999999999844, 0.053000000000000824, 0.025249999999999773, 0.04449999999999932, 0.11149999999999949, 0.1377499999999987, 0.03799999999999848, 0.016000000000000014, 0.057749999999998636, 0.0495000000000001, 0.04399999999999871, 0.012249999999998096, 0.06399999999999828, 0.10774999999999935, 0.07925000000000004, 0.03575000000000017, 0.05099999999999838, 0.04400000000000048, 0.10875000000000057, 0.06049999999999933, 0.09200000000000053, -0.023999999999999133, 0.027500000000001634, 0.038000000000000256, 0.01574999999999882], zp_timestamp='2025-11-24T18:51:00')
2025-11-24T20:55:49.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:55:49.971 [DEBUG] [Thread-196860] [transport.py] [_log()] starting thread (client mode): 0xd0710ee0
2025-11-24T20:55:49.972 [DEBUG] [Thread-196860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:55:49.986 [DEBUG] [Thread-196860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:55:49.986 [INFO] [Thread-196860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] client lang: <none>
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] server lang: <none>
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] kex follows: False
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:55:49.993 [DEBUG] [Thread-196860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:55:49.994 [DEBUG] [Thread-196860] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:55:49.994 [DEBUG] [Thread-196860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:55:49.994 [DEBUG] [Thread-196860] [transport.py] [_log()] Compression: none
2025-11-24T20:55:49.994 [DEBUG] [Thread-196860] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:55:50.056 [DEBUG] [Thread-196860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:55:50.056 [DEBUG] [Thread-196860] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:55:50.056 [DEBUG] [Thread-196860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:55:50.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:55:50.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:55:50.113 [DEBUG] [Thread-196860] [transport.py] [_log()] userauth is OK
2025-11-24T20:55:50.113 [DEBUG] [Thread-196860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:55:50.113 [DEBUG] [Thread-196860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:55:50.113 [DEBUG] [Thread-196860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:55:50.113 [DEBUG] [Thread-196860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:55:50.127 [INFO] [Thread-196860] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:55:50.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:55:50.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:55:50.976 [DEBUG] [Thread-196860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:55:50.976 [DEBUG] [Thread-196860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:55:51.023 [DEBUG] [Thread-196860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:55:51.023 [DEBUG] [Thread-196860] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:55:51.031 [DEBUG] [Thread-196860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:55:51.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:55:51.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-11-24T20:55:51.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-11-24T20:55:51.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:55:51.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:55:51.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:55:51.066 [DEBUG] [Thread-196860] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:55:54.541 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:55:58.931 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:56:04.353 [DEBUG] [Thread-196862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:56:05.678 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:56:07.849 [DEBUG] [Thread-196863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:56:10.077 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:56:19.574 [DEBUG] [Thread-196864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:56:21.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:56:21.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:56:21.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-11-24T20:56:22.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 55, 45), 16.66, 31.95, 0.0, 29.61, 16.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:56:22.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:55:45
2025-11-24T20:56:22.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:56:22.876 [DEBUG] [Thread-196865] [transport.py] [_log()] starting thread (client mode): 0xd317e500
2025-11-24T20:56:22.877 [DEBUG] [Thread-196865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:56:22.883 [DEBUG] [Thread-196865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:56:22.883 [INFO] [Thread-196865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:56:22.889 [DEBUG] [Thread-196865] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] client lang: <none>
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] server lang: <none>
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] kex follows: False
2025-11-24T20:56:22.890 [DEBUG] [Thread-196865] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:56:22.891 [DEBUG] [Thread-196865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:56:22.891 [DEBUG] [Thread-196865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:56:22.891 [DEBUG] [Thread-196865] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:56:22.891 [DEBUG] [Thread-196865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:56:22.891 [DEBUG] [Thread-196865] [transport.py] [_log()] Compression: none
2025-11-24T20:56:22.891 [DEBUG] [Thread-196865] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:56:22.923 [DEBUG] [Thread-196865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:56:22.929 [DEBUG] [Thread-196865] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:56:22.931 [DEBUG] [Thread-196865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:56:22.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:56:22.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:56:22.936 [DEBUG] [Thread-196865] [transport.py] [_log()] userauth is OK
2025-11-24T20:56:22.936 [DEBUG] [Thread-196865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:56:22.936 [DEBUG] [Thread-196865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:56:22.936 [DEBUG] [Thread-196865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:56:22.936 [DEBUG] [Thread-196865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:56:22.967 [INFO] [Thread-196865] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:56:22.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:56:23.603 [DEBUG] [Thread-196865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:56:23.603 [DEBUG] [Thread-196865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:56:23.604 [DEBUG] [Thread-196865] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:56:23.644 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:56:23.645 [DEBUG] [Thread-196865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:56:23.646 [DEBUG] [Thread-196865] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:56:23.646 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:56:23.649 [DEBUG] [Thread-196865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:56:23.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:56:23.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:56:23.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:56:23.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:56:23.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:56:23.671 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:56:23.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:56:23.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:56:23.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:56:23.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.788938 -999.00  +16.30  17.38     37   +1.90 1 1 1 1 1     0    0 13.23 -49.71 ZNESW 14.4 17.4 170.6 24.0 16.6 -26.1 16.5 -25.5 16.2 -24.3 16.5 -25.2
2025-11-24T20:56:23.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:56:23.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:56:23.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.788938
2025-11-24T20:56:23.687 [DEBUG] [Thread-196865] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:56:23.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:56:23.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:56:23.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:56:23.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:56:23.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:56:23.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:55:45', tmtdew=16.66, humidity=31.95, cloud=0.0, wind=29.61, temperature=16.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:56:20', seeing=0.68, atlas_timestamp='2025-11-24T18:56:04.243', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, 0.06425000000000125, 0.012249999999999872, -0.0065000000000008384, 0.06049999999999933, 0.07325000000000159, 0.06799999999999962, 0.00575000000000081, 0.05249999999999844, 0.053000000000000824, 0.025249999999999773, 0.04449999999999932, 0.11149999999999949, 0.1377499999999987, 0.03799999999999848, 0.016000000000000014, 0.057749999999998636, 0.0495000000000001, 0.04399999999999871, 0.012249999999998096, 0.06399999999999828, 0.10774999999999935, 0.07925000000000004, 0.03575000000000017, 0.05099999999999838, 0.04400000000000048, 0.10875000000000057, 0.06049999999999933, 0.09200000000000053, -0.023999999999999133, 0.027500000000001634, 0.038000000000000256, 0.01574999999999882], zp_timestamp='2025-11-24T18:51:00')
2025-11-24T20:56:23.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:56:23.812 [DEBUG] [Thread-196868] [transport.py] [_log()] starting thread (client mode): 0xd3136d40
2025-11-24T20:56:23.812 [DEBUG] [Thread-196868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:56:23.826 [DEBUG] [Thread-196868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:56:23.826 [INFO] [Thread-196868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] client lang: <none>
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] server lang: <none>
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] kex follows: False
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] Compression: none
2025-11-24T20:56:23.834 [DEBUG] [Thread-196868] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:56:23.893 [DEBUG] [Thread-196868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:56:23.893 [DEBUG] [Thread-196868] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:56:23.893 [DEBUG] [Thread-196868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:56:23.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:56:23.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:56:23.949 [DEBUG] [Thread-196868] [transport.py] [_log()] userauth is OK
2025-11-24T20:56:23.949 [DEBUG] [Thread-196868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:56:23.949 [DEBUG] [Thread-196868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:56:23.949 [DEBUG] [Thread-196868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:56:23.949 [DEBUG] [Thread-196868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:56:23.962 [INFO] [Thread-196868] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:56:23.962 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:56:23.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:56:24.824 [DEBUG] [Thread-196868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:56:24.824 [DEBUG] [Thread-196868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:56:24.871 [DEBUG] [Thread-196868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:56:24.871 [DEBUG] [Thread-196868] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:56:24.881 [DEBUG] [Thread-196868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:56:24.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:56:24.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T20:56:24.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-11-24T20:56:24.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:56:24.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:56:24.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:56:24.919 [DEBUG] [Thread-196868] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:56:34.733 [DEBUG] [Thread-196870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:56:50.030 [DEBUG] [Thread-196871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:56:54.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:56:54.965 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:56:54.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:56:56.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 56, 20), 16.65, 31.97, 0.0, 29.03, 16.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:56:56.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:56:20
2025-11-24T20:56:56.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:56:56.960 [DEBUG] [Thread-196872] [transport.py] [_log()] starting thread (client mode): 0xd07f94e0
2025-11-24T20:56:56.961 [DEBUG] [Thread-196872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:56:56.967 [DEBUG] [Thread-196872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:56:56.967 [INFO] [Thread-196872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:56:56.974 [DEBUG] [Thread-196872] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:56:56.974 [DEBUG] [Thread-196872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:56:56.974 [DEBUG] [Thread-196872] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:56:56.974 [DEBUG] [Thread-196872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:56:56.974 [DEBUG] [Thread-196872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:56:56.974 [DEBUG] [Thread-196872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:56:56.974 [DEBUG] [Thread-196872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:56:56.974 [DEBUG] [Thread-196872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:56:56.974 [DEBUG] [Thread-196872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:56:56.975 [DEBUG] [Thread-196872] [transport.py] [_log()] client lang: <none>
2025-11-24T20:56:56.975 [DEBUG] [Thread-196872] [transport.py] [_log()] server lang: <none>
2025-11-24T20:56:56.975 [DEBUG] [Thread-196872] [transport.py] [_log()] kex follows: False
2025-11-24T20:56:56.975 [DEBUG] [Thread-196872] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:56:56.976 [DEBUG] [Thread-196872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:56:56.976 [DEBUG] [Thread-196872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:56:56.976 [DEBUG] [Thread-196872] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:56:56.976 [DEBUG] [Thread-196872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:56:56.976 [DEBUG] [Thread-196872] [transport.py] [_log()] Compression: none
2025-11-24T20:56:56.976 [DEBUG] [Thread-196872] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:56:57.018 [DEBUG] [Thread-196872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:56:57.024 [DEBUG] [Thread-196872] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:56:57.024 [DEBUG] [Thread-196872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:56:57.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:56:57.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:56:57.029 [DEBUG] [Thread-196872] [transport.py] [_log()] userauth is OK
2025-11-24T20:56:57.029 [DEBUG] [Thread-196872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:56:57.029 [DEBUG] [Thread-196872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:56:57.029 [DEBUG] [Thread-196872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:56:57.029 [DEBUG] [Thread-196872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:56:57.050 [INFO] [Thread-196872] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:56:57.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:56:57.695 [DEBUG] [Thread-196872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:56:57.695 [DEBUG] [Thread-196872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:56:57.696 [DEBUG] [Thread-196872] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:56:57.737 [DEBUG] [Thread-196872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:56:57.737 [DEBUG] [Thread-196872] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:56:57.740 [DEBUG] [Thread-196872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:56:57.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:56:57.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:56:57.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:56:57.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:56:57.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:56:57.762 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:56:57.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:56:57.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:56:57.764 [DEBUG] [Thread-196872] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:56:57.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:56:57.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.789284 -999.00  +16.40  19.17     37   +1.90 1 1 1 1 1     0    0 13.27 -52.55 ZNESW 16.8 19.2 168.2 27.5 16.6 -26.1 16.5 -25.5 16.3 -24.3 16.6 -25.1
2025-11-24T20:56:57.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:56:57.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:56:57.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.789284
2025-11-24T20:56:57.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:56:57.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:56:57.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:56:57.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:56:57.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:56:57.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:56:20', tmtdew=16.65, humidity=31.97, cloud=0.0, wind=29.03, temperature=16.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:56:54', seeing=0.57, atlas_timestamp='2025-11-24T18:56:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, 0.06425000000000125, 0.012249999999999872, -0.0065000000000008384, 0.06049999999999933, 0.07325000000000159, 0.06799999999999962, 0.00575000000000081, 0.05249999999999844, 0.053000000000000824, 0.025249999999999773, 0.04449999999999932, 0.11149999999999949, 0.1377499999999987, 0.03799999999999848, 0.016000000000000014, 0.057749999999998636, 0.0495000000000001, 0.04399999999999871, 0.012249999999998096, 0.06399999999999828, 0.10774999999999935, 0.07925000000000004, 0.03575000000000017, 0.05099999999999838, 0.04400000000000048, 0.10875000000000057, 0.06049999999999933, 0.09200000000000053, -0.023999999999999133, 0.027500000000001634, 0.038000000000000256, 0.01574999999999882], zp_timestamp='2025-11-24T18:51:00')
2025-11-24T20:56:57.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:56:57.908 [DEBUG] [Thread-196875] [transport.py] [_log()] starting thread (client mode): 0xd07fb850
2025-11-24T20:56:57.908 [DEBUG] [Thread-196875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:56:57.920 [DEBUG] [Thread-196875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:56:57.920 [INFO] [Thread-196875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] client lang: <none>
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] server lang: <none>
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] kex follows: False
2025-11-24T20:56:57.927 [DEBUG] [Thread-196875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:56:57.928 [DEBUG] [Thread-196875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:56:57.928 [DEBUG] [Thread-196875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:56:57.928 [DEBUG] [Thread-196875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:56:57.928 [DEBUG] [Thread-196875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:56:57.928 [DEBUG] [Thread-196875] [transport.py] [_log()] Compression: none
2025-11-24T20:56:57.928 [DEBUG] [Thread-196875] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:56:57.991 [DEBUG] [Thread-196875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:56:57.991 [DEBUG] [Thread-196875] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:56:57.991 [DEBUG] [Thread-196875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:56:57.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:56:57.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:56:58.049 [DEBUG] [Thread-196875] [transport.py] [_log()] userauth is OK
2025-11-24T20:56:58.049 [DEBUG] [Thread-196875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:56:58.049 [DEBUG] [Thread-196875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:56:58.049 [DEBUG] [Thread-196875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:56:58.049 [DEBUG] [Thread-196875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:56:58.066 [INFO] [Thread-196875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:56:58.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:56:58.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:56:58.898 [DEBUG] [Thread-196875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:56:58.898 [DEBUG] [Thread-196875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:56:58.945 [DEBUG] [Thread-196875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:56:58.945 [DEBUG] [Thread-196875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:56:58.954 [DEBUG] [Thread-196875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:56:58.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:56:58.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-11-24T20:56:58.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-11-24T20:56:58.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:56:58.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:56:58.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:56:58.989 [DEBUG] [Thread-196875] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:57:05.217 [DEBUG] [Thread-196877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:57:08.265 [DEBUG] [Thread-196878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:57:18.779 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:57:20.423 [DEBUG] [Thread-196879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:57:22.865 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:57:23.850 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:57:23.853 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:57:29.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:57:29.019 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:57:29.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T20:57:30.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 56, 54), 16.65, 31.97, 0.0, 30.79, 16.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:57:30.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:56:54
2025-11-24T20:57:30.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:57:31.133 [DEBUG] [Thread-196880] [transport.py] [_log()] starting thread (client mode): 0xd07ceb00
2025-11-24T20:57:31.135 [DEBUG] [Thread-196880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:57:31.135 [DEBUG] [Thread-196880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:57:31.135 [INFO] [Thread-196880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:57:31.142 [DEBUG] [Thread-196880] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] client lang: <none>
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] server lang: <none>
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] kex follows: False
2025-11-24T20:57:31.143 [DEBUG] [Thread-196880] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:57:31.144 [DEBUG] [Thread-196880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:57:31.144 [DEBUG] [Thread-196880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:57:31.144 [DEBUG] [Thread-196880] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:57:31.144 [DEBUG] [Thread-196880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:57:31.144 [DEBUG] [Thread-196880] [transport.py] [_log()] Compression: none
2025-11-24T20:57:31.144 [DEBUG] [Thread-196880] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:57:31.176 [DEBUG] [Thread-196880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:57:31.182 [DEBUG] [Thread-196880] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:57:31.184 [DEBUG] [Thread-196880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:57:31.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:57:31.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:57:31.190 [DEBUG] [Thread-196880] [transport.py] [_log()] userauth is OK
2025-11-24T20:57:31.190 [DEBUG] [Thread-196880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:57:31.190 [DEBUG] [Thread-196880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:57:31.190 [DEBUG] [Thread-196880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:57:31.190 [DEBUG] [Thread-196880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:57:31.221 [INFO] [Thread-196880] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:57:31.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:57:31.866 [DEBUG] [Thread-196880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:57:31.866 [DEBUG] [Thread-196880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:57:31.866 [DEBUG] [Thread-196880] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:57:31.907 [DEBUG] [Thread-196880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:57:31.907 [DEBUG] [Thread-196880] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:57:31.909 [DEBUG] [Thread-196880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:57:31.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:57:31.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:57:31.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:57:31.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:57:31.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:57:31.930 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:57:31.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:57:31.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:57:31.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:57:31.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.789632 -999.00  +16.30  19.84     37   +1.90 1 1 1 1 1     0    0 13.44 -45.72 ZNESW 20.5 19.8 163.6 26.5 16.6 -26.1 16.5 -25.5 16.2 -24.5 16.6 -25.4
2025-11-24T20:57:31.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:57:31.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:57:31.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.789632
2025-11-24T20:57:31.937 [DEBUG] [Thread-196880] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:57:31.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:57:31.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:57:31.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:57:31.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:57:31.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:57:31.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:56:54', tmtdew=16.65, humidity=31.97, cloud=0.0, wind=30.79, temperature=16.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:57:28', seeing=0.62, atlas_timestamp='2025-11-24T18:57:04.205', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, 0.06425000000000125, 0.012249999999999872, -0.0065000000000008384, 0.06049999999999933, 0.07325000000000159, 0.06799999999999962, 0.00575000000000081, 0.05249999999999844, 0.053000000000000824, 0.025249999999999773, 0.04449999999999932, 0.11149999999999949, 0.1377499999999987, 0.03799999999999848, 0.016000000000000014, 0.057749999999998636, 0.0495000000000001, 0.04399999999999871, 0.012249999999998096, 0.06399999999999828, 0.10774999999999935, 0.07925000000000004, 0.03575000000000017, 0.05099999999999838, 0.04400000000000048, 0.10875000000000057, 0.06049999999999933, 0.09200000000000053, -0.023999999999999133, 0.027500000000001634, 0.038000000000000256, 0.01574999999999882], zp_timestamp='2025-11-24T18:51:00')
2025-11-24T20:57:32.034 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:57:32.046 [DEBUG] [Thread-196883] [transport.py] [_log()] starting thread (client mode): 0xd07860e0
2025-11-24T20:57:32.046 [DEBUG] [Thread-196883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:57:32.062 [DEBUG] [Thread-196883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:57:32.062 [INFO] [Thread-196883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] client lang: <none>
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] server lang: <none>
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] kex follows: False
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:57:32.069 [DEBUG] [Thread-196883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:57:32.070 [DEBUG] [Thread-196883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:57:32.070 [DEBUG] [Thread-196883] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:57:32.070 [DEBUG] [Thread-196883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:57:32.070 [DEBUG] [Thread-196883] [transport.py] [_log()] Compression: none
2025-11-24T20:57:32.070 [DEBUG] [Thread-196883] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:57:32.128 [DEBUG] [Thread-196883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:57:32.128 [DEBUG] [Thread-196883] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:57:32.128 [DEBUG] [Thread-196883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:57:32.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:57:32.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:57:32.185 [DEBUG] [Thread-196883] [transport.py] [_log()] userauth is OK
2025-11-24T20:57:32.185 [DEBUG] [Thread-196883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:57:32.185 [DEBUG] [Thread-196883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:57:32.186 [DEBUG] [Thread-196883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:57:32.186 [DEBUG] [Thread-196883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:57:32.200 [INFO] [Thread-196883] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:57:32.200 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:57:32.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:57:33.082 [DEBUG] [Thread-196883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:57:33.082 [DEBUG] [Thread-196883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:57:33.129 [DEBUG] [Thread-196883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:57:33.129 [DEBUG] [Thread-196883] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:57:33.138 [DEBUG] [Thread-196883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:57:33.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:57:33.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-11-24T20:57:33.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-11-24T20:57:33.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:57:33.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:57:33.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:57:33.175 [DEBUG] [Thread-196883] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:57:35.534 [DEBUG] [Thread-196885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:57:50.817 [DEBUG] [Thread-196886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:58:03.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:58:03.227 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:58:03.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-11-24T20:58:04.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 57, 28), 16.63, 32.02, 0.0, 27.95, 16.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:58:04.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:57:28
2025-11-24T20:58:04.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:58:05.040 [DEBUG] [Thread-196887] [transport.py] [_log()] starting thread (client mode): 0xd07f8370
2025-11-24T20:58:05.042 [DEBUG] [Thread-196887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:58:05.042 [DEBUG] [Thread-196887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:58:05.043 [INFO] [Thread-196887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:58:05.050 [DEBUG] [Thread-196887] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:58:05.050 [DEBUG] [Thread-196887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:58:05.050 [DEBUG] [Thread-196887] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:58:05.050 [DEBUG] [Thread-196887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:58:05.050 [DEBUG] [Thread-196887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:58:05.051 [DEBUG] [Thread-196887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:58:05.051 [DEBUG] [Thread-196887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:58:05.051 [DEBUG] [Thread-196887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:58:05.051 [DEBUG] [Thread-196887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:58:05.051 [DEBUG] [Thread-196887] [transport.py] [_log()] client lang: <none>
2025-11-24T20:58:05.051 [DEBUG] [Thread-196887] [transport.py] [_log()] server lang: <none>
2025-11-24T20:58:05.051 [DEBUG] [Thread-196887] [transport.py] [_log()] kex follows: False
2025-11-24T20:58:05.051 [DEBUG] [Thread-196887] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:58:05.052 [DEBUG] [Thread-196887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:58:05.052 [DEBUG] [Thread-196887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:58:05.052 [DEBUG] [Thread-196887] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:58:05.052 [DEBUG] [Thread-196887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:58:05.052 [DEBUG] [Thread-196887] [transport.py] [_log()] Compression: none
2025-11-24T20:58:05.052 [DEBUG] [Thread-196887] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:58:05.086 [DEBUG] [Thread-196887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:58:05.094 [DEBUG] [Thread-196887] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:58:05.096 [DEBUG] [Thread-196887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:58:05.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:58:05.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:58:05.101 [DEBUG] [Thread-196887] [transport.py] [_log()] userauth is OK
2025-11-24T20:58:05.101 [DEBUG] [Thread-196887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:58:05.102 [DEBUG] [Thread-196887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:58:05.102 [DEBUG] [Thread-196887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:58:05.102 [DEBUG] [Thread-196887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:58:05.123 [INFO] [Thread-196887] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:58:05.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:58:05.758 [DEBUG] [Thread-196887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:58:05.758 [DEBUG] [Thread-196887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:58:05.759 [DEBUG] [Thread-196887] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:58:05.799 [DEBUG] [Thread-196887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:58:05.799 [DEBUG] [Thread-196887] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:58:05.801 [DEBUG] [Thread-196887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:58:05.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:58:05.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:58:05.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:58:05.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:58:05.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:58:05.823 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:58:05.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:58:05.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:58:05.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:58:05.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.789979 -999.00  +16.30  17.31     37   +1.90 1 1 1 1 1     0    0 13.71 -46.02 ZNESW 18.4 17.3 168.6 25.5 16.6 -26.0 16.4 -25.5 16.2 -24.3 16.5 -25.4
2025-11-24T20:58:05.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:58:05.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:58:05.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.789979
2025-11-24T20:58:05.831 [DEBUG] [Thread-196887] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:58:05.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:58:05.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:58:05.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:58:05.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:58:05.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:58:05.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:57:28', tmtdew=16.63, humidity=32.02, cloud=0.0, wind=27.95, temperature=16.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:58:02', seeing=0.57, atlas_timestamp='2025-11-24T18:57:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T20:58:05.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:58:05.947 [DEBUG] [Thread-196890] [transport.py] [_log()] starting thread (client mode): 0xd07fa260
2025-11-24T20:58:05.947 [DEBUG] [Thread-196890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:58:05.964 [DEBUG] [Thread-196891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:58:05.964 [DEBUG] [Thread-196890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:58:05.965 [INFO] [Thread-196890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] client lang: <none>
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] server lang: <none>
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] kex follows: False
2025-11-24T20:58:05.968 [DEBUG] [Thread-196890] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:58:05.969 [DEBUG] [Thread-196890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:58:05.969 [DEBUG] [Thread-196890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:58:05.969 [DEBUG] [Thread-196890] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:58:05.969 [DEBUG] [Thread-196890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:58:05.969 [DEBUG] [Thread-196890] [transport.py] [_log()] Compression: none
2025-11-24T20:58:05.969 [DEBUG] [Thread-196890] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:58:06.032 [DEBUG] [Thread-196890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:58:06.032 [DEBUG] [Thread-196890] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:58:06.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:58:06.032 [DEBUG] [Thread-196890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:58:06.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:58:06.089 [DEBUG] [Thread-196890] [transport.py] [_log()] userauth is OK
2025-11-24T20:58:06.089 [DEBUG] [Thread-196890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:58:06.089 [DEBUG] [Thread-196890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:58:06.089 [DEBUG] [Thread-196890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:58:06.089 [DEBUG] [Thread-196890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:58:06.106 [INFO] [Thread-196890] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:58:06.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:58:06.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:58:06.967 [DEBUG] [Thread-196890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:58:06.968 [DEBUG] [Thread-196890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:58:07.015 [DEBUG] [Thread-196890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:58:07.015 [DEBUG] [Thread-196890] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:58:07.024 [DEBUG] [Thread-196890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:58:07.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:58:07.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-11-24T20:58:07.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T20:58:07.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:58:07.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:58:07.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:58:07.062 [DEBUG] [Thread-196890] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:58:08.803 [DEBUG] [Thread-196893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:58:21.211 [DEBUG] [Thread-196894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:58:24.059 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:58:24.062 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:58:36.387 [DEBUG] [Thread-196895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:58:37.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:58:37.059 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:58:37.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-11-24T20:58:38.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 58, 2), 16.63, 31.99, 0.0, 30.81, 16.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:58:38.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:58:02
2025-11-24T20:58:39.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:58:39.220 [DEBUG] [Thread-196896] [transport.py] [_log()] starting thread (client mode): 0xd07fa740
2025-11-24T20:58:39.221 [DEBUG] [Thread-196896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:58:39.222 [DEBUG] [Thread-196896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:58:39.222 [INFO] [Thread-196896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] client lang: <none>
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] server lang: <none>
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] kex follows: False
2025-11-24T20:58:39.227 [DEBUG] [Thread-196896] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:58:39.228 [DEBUG] [Thread-196896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:58:39.228 [DEBUG] [Thread-196896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:58:39.228 [DEBUG] [Thread-196896] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:58:39.228 [DEBUG] [Thread-196896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:58:39.228 [DEBUG] [Thread-196896] [transport.py] [_log()] Compression: none
2025-11-24T20:58:39.228 [DEBUG] [Thread-196896] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:58:39.263 [DEBUG] [Thread-196896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:58:39.267 [DEBUG] [Thread-196896] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:58:39.268 [DEBUG] [Thread-196896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:58:39.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:58:39.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:58:39.272 [DEBUG] [Thread-196896] [transport.py] [_log()] userauth is OK
2025-11-24T20:58:39.272 [DEBUG] [Thread-196896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:58:39.272 [DEBUG] [Thread-196896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:58:39.272 [DEBUG] [Thread-196896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:58:39.272 [DEBUG] [Thread-196896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:58:39.290 [INFO] [Thread-196896] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:58:39.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:58:39.943 [DEBUG] [Thread-196896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:58:39.943 [DEBUG] [Thread-196896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:58:39.944 [DEBUG] [Thread-196896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:58:39.984 [DEBUG] [Thread-196896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:58:39.984 [DEBUG] [Thread-196896] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:58:39.986 [DEBUG] [Thread-196896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:58:39.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:58:39.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:58:40.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:58:40.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:58:40.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:58:40.006 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:58:40.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:58:40.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:58:40.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:58:40.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.790327 -999.00  +16.30  23.37     37   +1.90 1 1 1 1 1     0    0 13.64 -45.15 ZNESW 17.2 23.4 175.4 29.8 16.6 -26.0 16.4 -25.4 16.2 -24.1 16.5 -25.3
2025-11-24T20:58:40.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:58:40.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:58:40.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.790327
2025-11-24T20:58:40.019 [DEBUG] [Thread-196896] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:58:40.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:58:40.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:58:40.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:58:40.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:58:40.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:58:40.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:58:02', tmtdew=16.63, humidity=31.99, cloud=0.0, wind=30.81, temperature=16.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:58:36', seeing=0.51, atlas_timestamp='2025-11-24T18:58:04.253', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T20:58:40.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:58:40.135 [DEBUG] [Thread-196899] [transport.py] [_log()] starting thread (client mode): 0xd07f8df0
2025-11-24T20:58:40.136 [DEBUG] [Thread-196899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:58:40.151 [DEBUG] [Thread-196899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:58:40.151 [INFO] [Thread-196899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] client lang: <none>
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] server lang: <none>
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] kex follows: False
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] Compression: none
2025-11-24T20:58:40.158 [DEBUG] [Thread-196899] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:58:40.216 [DEBUG] [Thread-196899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:58:40.216 [DEBUG] [Thread-196899] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:58:40.216 [DEBUG] [Thread-196899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:58:40.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:58:40.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:58:40.273 [DEBUG] [Thread-196899] [transport.py] [_log()] userauth is OK
2025-11-24T20:58:40.273 [DEBUG] [Thread-196899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:58:40.273 [DEBUG] [Thread-196899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:58:40.273 [DEBUG] [Thread-196899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:58:40.273 [DEBUG] [Thread-196899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:58:40.287 [INFO] [Thread-196899] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:58:40.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:58:40.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:58:41.124 [DEBUG] [Thread-196899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:58:41.124 [DEBUG] [Thread-196899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:58:41.171 [DEBUG] [Thread-196899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:58:41.171 [DEBUG] [Thread-196899] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:58:41.180 [DEBUG] [Thread-196899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:58:41.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:58:41.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-11-24T20:58:41.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-11-24T20:58:41.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:58:41.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:58:41.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:58:41.219 [DEBUG] [Thread-196899] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:58:51.553 [DEBUG] [Thread-196901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:59:06.846 [DEBUG] [Thread-196902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:59:09.263 [DEBUG] [Thread-196903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:59:11.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:59:11.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:59:11.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-11-24T20:59:12.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 58, 36), 16.48, 32.6, 0.0, 28.16, 16.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:59:12.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:58:36
2025-11-24T20:59:13.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:59:13.210 [DEBUG] [Thread-196904] [transport.py] [_log()] starting thread (client mode): 0xd0711210
2025-11-24T20:59:13.211 [DEBUG] [Thread-196904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:59:13.212 [DEBUG] [Thread-196904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:59:13.212 [INFO] [Thread-196904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:59:13.218 [DEBUG] [Thread-196904] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:59:13.218 [DEBUG] [Thread-196904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] client lang: <none>
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] server lang: <none>
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] kex follows: False
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:59:13.219 [DEBUG] [Thread-196904] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:59:13.220 [DEBUG] [Thread-196904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:59:13.220 [DEBUG] [Thread-196904] [transport.py] [_log()] Compression: none
2025-11-24T20:59:13.220 [DEBUG] [Thread-196904] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:59:13.264 [DEBUG] [Thread-196904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:59:13.324 [DEBUG] [Thread-196904] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:59:13.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:59:13.340 [DEBUG] [Thread-196904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:59:13.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:59:13.342 [DEBUG] [Thread-196904] [transport.py] [_log()] userauth is OK
2025-11-24T20:59:13.343 [DEBUG] [Thread-196904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:59:13.343 [DEBUG] [Thread-196904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:59:13.343 [DEBUG] [Thread-196904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:59:13.343 [DEBUG] [Thread-196904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:59:13.372 [INFO] [Thread-196904] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:59:13.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:59:13.993 [DEBUG] [Thread-196904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:59:13.993 [DEBUG] [Thread-196904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:59:13.994 [DEBUG] [Thread-196904] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:59:14.034 [DEBUG] [Thread-196904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:59:14.034 [DEBUG] [Thread-196904] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:59:14.036 [DEBUG] [Thread-196904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:59:14.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:59:14.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:59:14.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:59:14.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:59:14.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:59:14.057 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:59:14.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:59:14.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:59:14.058 [DEBUG] [Thread-196904] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:59:14.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:59:14.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.791021 -999.00  +16.30  18.89     38   +2.00 1 1 1 1 1     0    0 13.49 -48.63 ZNESW 18.4 18.9 182.8 28.0 16.6 -25.9 16.4 -25.5 16.2 -24.1 16.4 -25.2
2025-11-24T20:59:14.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:59:14.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:59:14.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.791021
2025-11-24T20:59:14.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:59:14.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:59:14.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:59:14.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:59:14.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:59:14.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:58:36', tmtdew=16.48, humidity=32.6, cloud=0.0, wind=28.16, temperature=16.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:59:10', seeing=0.56, atlas_timestamp='2025-11-24T18:59:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T20:59:14.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:59:14.174 [DEBUG] [Thread-196907] [transport.py] [_log()] starting thread (client mode): 0xd07cccd0
2025-11-24T20:59:14.174 [DEBUG] [Thread-196907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:59:14.189 [DEBUG] [Thread-196907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:59:14.189 [INFO] [Thread-196907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] client lang: <none>
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] server lang: <none>
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] kex follows: False
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] Compression: none
2025-11-24T20:59:14.197 [DEBUG] [Thread-196907] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:59:14.255 [DEBUG] [Thread-196907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:59:14.255 [DEBUG] [Thread-196907] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:59:14.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:59:14.256 [DEBUG] [Thread-196907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:59:14.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:59:14.313 [DEBUG] [Thread-196907] [transport.py] [_log()] userauth is OK
2025-11-24T20:59:14.313 [DEBUG] [Thread-196907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:59:14.313 [DEBUG] [Thread-196907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:59:14.313 [DEBUG] [Thread-196907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:59:14.313 [DEBUG] [Thread-196907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:59:14.326 [INFO] [Thread-196907] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:59:14.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:59:14.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:59:15.193 [DEBUG] [Thread-196907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:59:15.193 [DEBUG] [Thread-196907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:59:15.241 [DEBUG] [Thread-196907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:59:15.241 [DEBUG] [Thread-196907] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:59:15.249 [DEBUG] [Thread-196907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:59:15.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:59:15.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-11-24T20:59:15.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-11-24T20:59:15.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:59:15.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:59:15.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:59:15.284 [DEBUG] [Thread-196907] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:59:21.986 [DEBUG] [Thread-196909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:59:24.264 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:59:24.266 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:59:37.298 [DEBUG] [Thread-196910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T20:59:45.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T20:59:45.337 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T20:59:45.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-11-24T20:59:46.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 59, 10), 16.45, 32.7, 0.0, 29.93, 16.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T20:59:46.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:59:10
2025-11-24T20:59:47.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T20:59:47.342 [DEBUG] [Thread-196911] [transport.py] [_log()] starting thread (client mode): 0xd07860e0
2025-11-24T20:59:47.343 [DEBUG] [Thread-196911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:59:47.344 [DEBUG] [Thread-196911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T20:59:47.344 [INFO] [Thread-196911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T20:59:47.352 [DEBUG] [Thread-196911] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:59:47.352 [DEBUG] [Thread-196911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T20:59:47.352 [DEBUG] [Thread-196911] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:59:47.352 [DEBUG] [Thread-196911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:59:47.352 [DEBUG] [Thread-196911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:59:47.352 [DEBUG] [Thread-196911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:59:47.352 [DEBUG] [Thread-196911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:59:47.353 [DEBUG] [Thread-196911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:59:47.353 [DEBUG] [Thread-196911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:59:47.353 [DEBUG] [Thread-196911] [transport.py] [_log()] client lang: <none>
2025-11-24T20:59:47.353 [DEBUG] [Thread-196911] [transport.py] [_log()] server lang: <none>
2025-11-24T20:59:47.353 [DEBUG] [Thread-196911] [transport.py] [_log()] kex follows: False
2025-11-24T20:59:47.353 [DEBUG] [Thread-196911] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:59:47.354 [DEBUG] [Thread-196911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:59:47.354 [DEBUG] [Thread-196911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:59:47.354 [DEBUG] [Thread-196911] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:59:47.354 [DEBUG] [Thread-196911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:59:47.354 [DEBUG] [Thread-196911] [transport.py] [_log()] Compression: none
2025-11-24T20:59:47.354 [DEBUG] [Thread-196911] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:59:47.392 [DEBUG] [Thread-196911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:59:47.398 [DEBUG] [Thread-196911] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:59:47.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T20:59:47.402 [DEBUG] [Thread-196911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T20:59:47.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:59:47.405 [DEBUG] [Thread-196911] [transport.py] [_log()] userauth is OK
2025-11-24T20:59:47.405 [DEBUG] [Thread-196911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:59:47.406 [DEBUG] [Thread-196911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:59:47.406 [DEBUG] [Thread-196911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T20:59:47.406 [DEBUG] [Thread-196911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:59:47.437 [INFO] [Thread-196911] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:59:47.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:59:48.090 [DEBUG] [Thread-196911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:59:48.090 [DEBUG] [Thread-196911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:59:48.092 [DEBUG] [Thread-196911] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T20:59:48.131 [DEBUG] [Thread-196911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:59:48.131 [DEBUG] [Thread-196911] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:59:48.135 [DEBUG] [Thread-196911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:59:48.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:59:48.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T20:59:48.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T20:59:48.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T20:59:48.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:59:48.161 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T20:59:48.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:59:48.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:59:48.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T20:59:48.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.791368 -999.00  +16.30  19.63     38   +2.00 1 1 1 1 1     0    0 13.32 -49.99 ZNESW 17.4 19.6 164.8 26.5 16.6 -26.1 16.4 -25.4 16.2 -24.5 16.5 -25.2
2025-11-24T20:59:48.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T20:59:48.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T20:59:48.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.791368
2025-11-24T20:59:48.173 [DEBUG] [Thread-196911] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:59:48.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T20:59:48.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T20:59:48.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T20:59:48.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T20:59:48.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T20:59:48.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:59:10', tmtdew=16.45, humidity=32.7, cloud=0.0, wind=29.93, temperature=16.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T20:59:44', seeing=0.55, atlas_timestamp='2025-11-24T18:59:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T20:59:48.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T20:59:48.293 [DEBUG] [Thread-196914] [transport.py] [_log()] starting thread (client mode): 0xd0787220
2025-11-24T20:59:48.294 [DEBUG] [Thread-196914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T20:59:48.308 [DEBUG] [Thread-196914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T20:59:48.308 [INFO] [Thread-196914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] client lang: <none>
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] server lang: <none>
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] kex follows: False
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] Compression: none
2025-11-24T20:59:48.318 [DEBUG] [Thread-196914] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T20:59:48.379 [DEBUG] [Thread-196914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T20:59:48.380 [DEBUG] [Thread-196914] [transport.py] [_log()] Switch to new keys ...
2025-11-24T20:59:48.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T20:59:48.380 [DEBUG] [Thread-196914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T20:59:48.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T20:59:48.436 [DEBUG] [Thread-196914] [transport.py] [_log()] userauth is OK
2025-11-24T20:59:48.437 [DEBUG] [Thread-196914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T20:59:48.437 [DEBUG] [Thread-196914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T20:59:48.437 [DEBUG] [Thread-196914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T20:59:48.437 [DEBUG] [Thread-196914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T20:59:48.454 [INFO] [Thread-196914] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T20:59:48.454 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T20:59:48.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T20:59:49.325 [DEBUG] [Thread-196914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T20:59:49.325 [DEBUG] [Thread-196914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T20:59:49.372 [DEBUG] [Thread-196914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T20:59:49.373 [DEBUG] [Thread-196914] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T20:59:49.381 [DEBUG] [Thread-196914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T20:59:49.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T20:59:49.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-11-24T20:59:49.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-11-24T20:59:49.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T20:59:49.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T20:59:49.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T20:59:49.420 [DEBUG] [Thread-196914] [transport.py] [_log()] EOF in transport thread
2025-11-24T20:59:52.445 [DEBUG] [Thread-196916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:00:07.755 [DEBUG] [Thread-196917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:00:09.684 [DEBUG] [Thread-196918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:00:19.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:00:19.489 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:00:19.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-11-24T21:00:21.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 20, 59, 44), 16.43, 32.72, 0.0, 31.58, 16.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:00:21.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 20:59:44
2025-11-24T21:00:21.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:00:21.569 [DEBUG] [Thread-196919] [transport.py] [_log()] starting thread (client mode): 0xd07866e0
2025-11-24T21:00:21.570 [DEBUG] [Thread-196919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:00:21.571 [DEBUG] [Thread-196919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:00:21.571 [INFO] [Thread-196919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:00:21.577 [DEBUG] [Thread-196919] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] client lang: <none>
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] server lang: <none>
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] kex follows: False
2025-11-24T21:00:21.578 [DEBUG] [Thread-196919] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:00:21.579 [DEBUG] [Thread-196919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:00:21.579 [DEBUG] [Thread-196919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:00:21.579 [DEBUG] [Thread-196919] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:00:21.579 [DEBUG] [Thread-196919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:00:21.579 [DEBUG] [Thread-196919] [transport.py] [_log()] Compression: none
2025-11-24T21:00:21.579 [DEBUG] [Thread-196919] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:00:21.622 [DEBUG] [Thread-196919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:00:21.629 [DEBUG] [Thread-196919] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:00:21.631 [DEBUG] [Thread-196919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:00:21.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:00:21.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:00:21.636 [DEBUG] [Thread-196919] [transport.py] [_log()] userauth is OK
2025-11-24T21:00:21.636 [DEBUG] [Thread-196919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:00:21.636 [DEBUG] [Thread-196919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:00:21.636 [DEBUG] [Thread-196919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:00:21.636 [DEBUG] [Thread-196919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:00:21.655 [INFO] [Thread-196919] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:00:21.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:00:22.256 [DEBUG] [Thread-196919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:00:22.256 [DEBUG] [Thread-196919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:00:22.257 [DEBUG] [Thread-196919] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:00:22.297 [DEBUG] [Thread-196919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:00:22.297 [DEBUG] [Thread-196919] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:00:22.299 [DEBUG] [Thread-196919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:00:22.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:00:22.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:00:22.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:00:22.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:00:22.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:00:22.321 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:00:22.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:00:22.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:00:22.323 [DEBUG] [Thread-196919] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:00:22.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:00:22.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.791715 -999.00  +16.30  16.57     37   +1.90 1 1 1 1 1     0    0 12.99 -49.36 ZNESW 14.4 16.6 166.8 24.3 16.6 -26.2 16.4 -25.5 16.1 -24.4 16.5 -25.4
2025-11-24T21:00:22.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:00:22.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:00:22.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.791715
2025-11-24T21:00:22.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:00:22.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:00:22.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:00:22.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:00:22.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:00:22.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T20:59:44', tmtdew=16.43, humidity=32.72, cloud=0.0, wind=31.58, temperature=16.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:00:19', seeing=0.5, atlas_timestamp='2025-11-24T19:00:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T21:00:22.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:00:22.445 [DEBUG] [Thread-196922] [transport.py] [_log()] starting thread (client mode): 0xd0710eb0
2025-11-24T21:00:22.445 [DEBUG] [Thread-196922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:00:22.461 [DEBUG] [Thread-196922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:00:22.461 [INFO] [Thread-196922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] client lang: <none>
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] server lang: <none>
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] kex follows: False
2025-11-24T21:00:22.468 [DEBUG] [Thread-196922] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:00:22.469 [DEBUG] [Thread-196922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:00:22.469 [DEBUG] [Thread-196922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:00:22.469 [DEBUG] [Thread-196922] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:00:22.469 [DEBUG] [Thread-196922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:00:22.469 [DEBUG] [Thread-196922] [transport.py] [_log()] Compression: none
2025-11-24T21:00:22.469 [DEBUG] [Thread-196922] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:00:22.523 [DEBUG] [Thread-196922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:00:22.524 [DEBUG] [Thread-196922] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:00:22.524 [DEBUG] [Thread-196922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:00:22.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:00:22.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:00:22.581 [DEBUG] [Thread-196922] [transport.py] [_log()] userauth is OK
2025-11-24T21:00:22.581 [DEBUG] [Thread-196922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:00:22.581 [DEBUG] [Thread-196922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:00:22.581 [DEBUG] [Thread-196922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:00:22.581 [DEBUG] [Thread-196922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:00:22.594 [INFO] [Thread-196922] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:00:22.595 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:00:22.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:00:22.869 [DEBUG] [Thread-196924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:00:23.422 [DEBUG] [Thread-196922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:00:23.422 [DEBUG] [Thread-196922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:00:23.471 [DEBUG] [Thread-196922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:00:23.471 [DEBUG] [Thread-196922] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:00:23.479 [DEBUG] [Thread-196922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:00:23.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:00:23.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-11-24T21:00:23.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-11-24T21:00:23.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:00:23.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:00:23.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:00:23.512 [DEBUG] [Thread-196922] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:00:24.468 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:00:24.470 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:00:38.125 [DEBUG] [Thread-196925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:00:53.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:00:53.650 [DEBUG] [Thread-196926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:00:53.672 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:00:53.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-11-24T21:00:59.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 0, 18), 16.43, 32.7, 0.0, 31.73, 16.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:00:59.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:00:18
2025-11-24T21:00:59.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:00:59.501 [DEBUG] [Thread-196927] [transport.py] [_log()] starting thread (client mode): 0xd07133d0
2025-11-24T21:00:59.503 [DEBUG] [Thread-196927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:00:59.504 [DEBUG] [Thread-196927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:00:59.504 [INFO] [Thread-196927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:00:59.515 [DEBUG] [Thread-196927] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] client lang: <none>
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] server lang: <none>
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] kex follows: False
2025-11-24T21:00:59.516 [DEBUG] [Thread-196927] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:00:59.517 [DEBUG] [Thread-196927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:00:59.517 [DEBUG] [Thread-196927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:00:59.517 [DEBUG] [Thread-196927] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:00:59.517 [DEBUG] [Thread-196927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:00:59.517 [DEBUG] [Thread-196927] [transport.py] [_log()] Compression: none
2025-11-24T21:00:59.517 [DEBUG] [Thread-196927] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:00:59.550 [DEBUG] [Thread-196927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:00:59.556 [DEBUG] [Thread-196927] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:00:59.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:00:59.560 [DEBUG] [Thread-196927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:00:59.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:00:59.563 [DEBUG] [Thread-196927] [transport.py] [_log()] userauth is OK
2025-11-24T21:00:59.563 [DEBUG] [Thread-196927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:00:59.563 [DEBUG] [Thread-196927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:00:59.564 [DEBUG] [Thread-196927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:00:59.564 [DEBUG] [Thread-196927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:00:59.587 [INFO] [Thread-196927] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:00:59.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:01:00.227 [DEBUG] [Thread-196927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:01:00.227 [DEBUG] [Thread-196927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:01:00.229 [DEBUG] [Thread-196927] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:01:00.269 [DEBUG] [Thread-196927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:01:00.269 [DEBUG] [Thread-196927] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:01:00.271 [DEBUG] [Thread-196927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:01:00.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:01:00.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:01:00.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:01:00.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:01:00.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:01:00.293 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:01:00.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:01:00.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:01:00.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:01:00.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.792063 -999.00  +16.20  17.40     38   +1.90 1 1 1 1 1     0    0 13.36 -53.21 ZNESW 19.6 17.4 171.8 22.6 16.5 -26.1 16.4 -25.6 16.1 -24.4 16.4 -25.4
2025-11-24T21:01:00.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:01:00.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:01:00.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.792063
2025-11-24T21:01:00.300 [DEBUG] [Thread-196927] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:01:00.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:01:00.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:01:00.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:01:00.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:01:00.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:01:00.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:00:18', tmtdew=16.43, humidity=32.7, cloud=0.0, wind=31.73, temperature=16.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:00:19', seeing=0.5, atlas_timestamp='2025-11-24T19:00:34.243', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T21:01:00.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:01:00.420 [DEBUG] [Thread-196930] [transport.py] [_log()] starting thread (client mode): 0xd0713d30
2025-11-24T21:01:00.420 [DEBUG] [Thread-196930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:01:00.428 [DEBUG] [Thread-196930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:01:00.428 [INFO] [Thread-196930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] client lang: <none>
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] server lang: <none>
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] kex follows: False
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] Compression: none
2025-11-24T21:01:00.436 [DEBUG] [Thread-196930] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:01:00.492 [DEBUG] [Thread-196930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:01:00.493 [DEBUG] [Thread-196930] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:01:00.493 [DEBUG] [Thread-196930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:01:00.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:01:00.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:01:00.549 [DEBUG] [Thread-196930] [transport.py] [_log()] userauth is OK
2025-11-24T21:01:00.549 [DEBUG] [Thread-196930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:01:00.549 [DEBUG] [Thread-196930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:01:00.549 [DEBUG] [Thread-196930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:01:00.549 [DEBUG] [Thread-196930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:01:00.564 [INFO] [Thread-196930] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:01:00.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:01:00.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:01:01.413 [DEBUG] [Thread-196930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:01:01.413 [DEBUG] [Thread-196930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:01:01.460 [DEBUG] [Thread-196930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:01:01.460 [DEBUG] [Thread-196930] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:01:01.468 [DEBUG] [Thread-196930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:01:01.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:01:01.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-11-24T21:01:01.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-11-24T21:01:01.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:01:01.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:01:01.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:01:01.504 [DEBUG] [Thread-196930] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:01:09.075 [DEBUG] [Thread-196932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:01:10.091 [DEBUG] [Thread-196933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:01:24.386 [DEBUG] [Thread-196934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:01:24.672 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:01:24.675 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:01:31.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:01:31.551 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:01:31.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-11-24T21:01:33.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 0, 52), 16.41, 32.87, 0.0, 27.21, 16.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:01:33.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:00:52
2025-11-24T21:01:33.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:01:33.715 [DEBUG] [Thread-196935] [transport.py] [_log()] starting thread (client mode): 0xd07860e0
2025-11-24T21:01:33.716 [DEBUG] [Thread-196935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:01:33.716 [DEBUG] [Thread-196935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:01:33.717 [INFO] [Thread-196935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] client lang: <none>
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] server lang: <none>
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] kex follows: False
2025-11-24T21:01:33.722 [DEBUG] [Thread-196935] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:01:33.723 [DEBUG] [Thread-196935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:01:33.723 [DEBUG] [Thread-196935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:01:33.723 [DEBUG] [Thread-196935] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:01:33.723 [DEBUG] [Thread-196935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:01:33.723 [DEBUG] [Thread-196935] [transport.py] [_log()] Compression: none
2025-11-24T21:01:33.723 [DEBUG] [Thread-196935] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:01:33.753 [DEBUG] [Thread-196935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:01:33.758 [DEBUG] [Thread-196935] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:01:33.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:01:33.761 [DEBUG] [Thread-196935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:01:33.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:01:33.763 [DEBUG] [Thread-196935] [transport.py] [_log()] userauth is OK
2025-11-24T21:01:33.763 [DEBUG] [Thread-196935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:01:33.763 [DEBUG] [Thread-196935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:01:33.763 [DEBUG] [Thread-196935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:01:33.763 [DEBUG] [Thread-196935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:01:33.781 [INFO] [Thread-196935] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:01:33.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:01:34.399 [DEBUG] [Thread-196935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:01:34.399 [DEBUG] [Thread-196935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:01:34.400 [DEBUG] [Thread-196935] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:01:34.440 [DEBUG] [Thread-196935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:01:34.440 [DEBUG] [Thread-196935] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:01:34.442 [DEBUG] [Thread-196935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:01:34.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:01:34.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:01:34.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:01:34.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:01:34.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:01:34.464 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:01:34.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:01:34.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:01:34.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:01:34.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.792410 -999.00  +16.20  23.57     38   +2.00 1 1 1 1 1     0    0 13.10 -57.90 ZNESW 27.5 23.6 170.0 29.4 16.5 -25.9 16.4 -25.5 16.1 -24.3 16.4 -25.3
2025-11-24T21:01:34.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:01:34.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:01:34.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.792410
2025-11-24T21:01:34.472 [DEBUG] [Thread-196935] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:01:34.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:01:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:01:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:01:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:01:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:01:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:00:52', tmtdew=16.41, humidity=32.87, cloud=0.0, wind=27.21, temperature=16.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:01:31', seeing=0.65, atlas_timestamp='2025-11-24T19:01:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T21:01: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-11-24T21:01:34.590 [DEBUG] [Thread-196938] [transport.py] [_log()] starting thread (client mode): 0xd317e050
2025-11-24T21:01:34.590 [DEBUG] [Thread-196938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:01:34.605 [DEBUG] [Thread-196938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:01:34.605 [INFO] [Thread-196938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] client lang: <none>
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] server lang: <none>
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] kex follows: False
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] Compression: none
2025-11-24T21:01:34.613 [DEBUG] [Thread-196938] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:01:34.671 [DEBUG] [Thread-196938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:01:34.672 [DEBUG] [Thread-196938] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:01:34.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:01:34.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:01:34.672 [DEBUG] [Thread-196938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:01:34.729 [DEBUG] [Thread-196938] [transport.py] [_log()] userauth is OK
2025-11-24T21:01:34.729 [DEBUG] [Thread-196938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:01:34.729 [DEBUG] [Thread-196938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:01:34.729 [DEBUG] [Thread-196938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:01:34.729 [DEBUG] [Thread-196938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:01:34.743 [INFO] [Thread-196938] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:01:34.743 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:01:34.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:01:35.590 [DEBUG] [Thread-196938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:01:35.590 [DEBUG] [Thread-196938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:01:35.638 [DEBUG] [Thread-196938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:01:35.638 [DEBUG] [Thread-196938] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:01:35.647 [DEBUG] [Thread-196938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:01:35.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:01:35.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-11-24T21:01:35.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-11-24T21:01:35.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:01:35.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:01:35.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:01:35.683 [DEBUG] [Thread-196938] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:01:39.537 [DEBUG] [Thread-196940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:01:54.865 [DEBUG] [Thread-196941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:02:05.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:02:05.718 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:02:05.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-11-24T21:02:07.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 1, 30), 16.35, 33.04, 0.0, 26.71, 16.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:02:07.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:01:30
2025-11-24T21:02:07.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:02:07.636 [DEBUG] [Thread-196942] [transport.py] [_log()] starting thread (client mode): 0xc9b82590
2025-11-24T21:02:07.637 [DEBUG] [Thread-196942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:02:07.638 [DEBUG] [Thread-196942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:02:07.638 [INFO] [Thread-196942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:02:07.644 [DEBUG] [Thread-196942] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] client lang: <none>
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] server lang: <none>
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] kex follows: False
2025-11-24T21:02:07.645 [DEBUG] [Thread-196942] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:02:07.646 [DEBUG] [Thread-196942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:02:07.646 [DEBUG] [Thread-196942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:02:07.646 [DEBUG] [Thread-196942] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:02:07.646 [DEBUG] [Thread-196942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:02:07.646 [DEBUG] [Thread-196942] [transport.py] [_log()] Compression: none
2025-11-24T21:02:07.646 [DEBUG] [Thread-196942] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:02:07.677 [DEBUG] [Thread-196942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:02:07.683 [DEBUG] [Thread-196942] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:02:07.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:02:07.686 [DEBUG] [Thread-196942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:02:07.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:02:07.690 [DEBUG] [Thread-196942] [transport.py] [_log()] userauth is OK
2025-11-24T21:02:07.691 [DEBUG] [Thread-196942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:02:07.691 [DEBUG] [Thread-196942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:02:07.691 [DEBUG] [Thread-196942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:02:07.691 [DEBUG] [Thread-196942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:02:07.710 [INFO] [Thread-196942] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:02:07.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:02:08.311 [DEBUG] [Thread-196942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:02:08.311 [DEBUG] [Thread-196942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:02:08.312 [DEBUG] [Thread-196942] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:02:08.352 [DEBUG] [Thread-196942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:02:08.352 [DEBUG] [Thread-196942] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:02:08.354 [DEBUG] [Thread-196942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:02:08.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:02:08.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:02:08.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:02:08.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:02:08.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:02:08.386 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:02:08.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:02:08.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:02:08.387 [DEBUG] [Thread-196942] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:02:08.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:02:08.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.792757 -999.00  +16.20  25.85     38   +2.10 1 1 1 1 1     0    0 12.97 -58.11 ZNESW 23.4 25.9 168.8 31.7 16.5 -26.1 16.4 -25.5 16.1 -24.3 16.4 -25.2
2025-11-24T21:02:08.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:02:08.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:02:08.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.792757
2025-11-24T21:02:08.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:02:08.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:02:08.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:02:08.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:02:08.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:02:08.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:01:30', tmtdew=16.35, humidity=33.04, cloud=0.0, wind=26.71, temperature=16.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:02:05', seeing=0.61, atlas_timestamp='2025-11-24T19:01:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T21:02:08.496 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:02:08.510 [DEBUG] [Thread-196945] [transport.py] [_log()] starting thread (client mode): 0xd07f94b0
2025-11-24T21:02:08.510 [DEBUG] [Thread-196945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:02:08.526 [DEBUG] [Thread-196945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:02:08.526 [INFO] [Thread-196945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] client lang: <none>
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] server lang: <none>
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] kex follows: False
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] Compression: none
2025-11-24T21:02:08.541 [DEBUG] [Thread-196945] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:02:08.596 [DEBUG] [Thread-196945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:02:08.596 [DEBUG] [Thread-196945] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:02:08.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:02:08.596 [DEBUG] [Thread-196945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:02:08.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:02:08.653 [DEBUG] [Thread-196945] [transport.py] [_log()] userauth is OK
2025-11-24T21:02:08.653 [DEBUG] [Thread-196945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:02:08.653 [DEBUG] [Thread-196945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:02:08.653 [DEBUG] [Thread-196945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:02:08.653 [DEBUG] [Thread-196945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:02:08.671 [INFO] [Thread-196945] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:02:08.671 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:02:08.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:02:09.621 [DEBUG] [Thread-196945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:02:09.622 [DEBUG] [Thread-196945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:02:09.668 [DEBUG] [Thread-196945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:02:09.668 [DEBUG] [Thread-196945] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:02:09.676 [DEBUG] [Thread-196945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:02:09.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:02:09.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-11-24T21:02:09.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-11-24T21:02:09.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:02:09.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:02:09.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:02:09.711 [DEBUG] [Thread-196945] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:02:10.006 [DEBUG] [Thread-196947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:02:10.458 [DEBUG] [Thread-196948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:02:24.904 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:02:24.923 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:02:25.267 [DEBUG] [Thread-196949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:02:39.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:02:39.846 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:02:39.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-11-24T21:02:40.403 [DEBUG] [Thread-196950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:02:41.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 2, 4), 16.38, 32.97, 0.0, 24.6, 16.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:02:41.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:02:04
2025-11-24T21:02:41.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:02:41.876 [DEBUG] [Thread-196951] [transport.py] [_log()] starting thread (client mode): 0xd07113c0
2025-11-24T21:02:41.877 [DEBUG] [Thread-196951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:02:41.882 [DEBUG] [Thread-196951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:02:41.883 [INFO] [Thread-196951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] client lang: <none>
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] server lang: <none>
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] kex follows: False
2025-11-24T21:02:41.895 [DEBUG] [Thread-196951] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:02:41.896 [DEBUG] [Thread-196951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:02:41.896 [DEBUG] [Thread-196951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:02:41.897 [DEBUG] [Thread-196951] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:02:41.897 [DEBUG] [Thread-196951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:02:41.897 [DEBUG] [Thread-196951] [transport.py] [_log()] Compression: none
2025-11-24T21:02:41.897 [DEBUG] [Thread-196951] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:02:41.924 [DEBUG] [Thread-196951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:02:41.929 [DEBUG] [Thread-196951] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:02:41.931 [DEBUG] [Thread-196951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:02:41.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:02:41.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:02:41.936 [DEBUG] [Thread-196951] [transport.py] [_log()] userauth is OK
2025-11-24T21:02:41.936 [DEBUG] [Thread-196951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:02:41.936 [DEBUG] [Thread-196951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:02:41.937 [DEBUG] [Thread-196951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:02:41.937 [DEBUG] [Thread-196951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:02:41.955 [INFO] [Thread-196951] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:02:41.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:02:42.543 [DEBUG] [Thread-196951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:02:42.543 [DEBUG] [Thread-196951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:02:42.544 [DEBUG] [Thread-196951] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:02:42.584 [DEBUG] [Thread-196951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:02:42.584 [DEBUG] [Thread-196951] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:02:42.586 [DEBUG] [Thread-196951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:02:42.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:02:42.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:02:42.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:02:42.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:02:42.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:02:42.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:02:42.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:02:42.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:02:42.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:02:42.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.793452 -999.00  +16.20  21.21     38   +2.20 1 1 1 1 1     0    0 13.02 -54.85 ZNESW 24.8 21.2 163.2 28.7 16.4 -25.9 16.4 -25.4 16.1 -24.3 16.4 -25.2
2025-11-24T21:02:42.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:02:42.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:02:42.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.793452
2025-11-24T21:02:42.623 [DEBUG] [Thread-196951] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:02:42.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:02:42.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:02:42.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:02:42.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:02:42.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:02:42.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:02:04', tmtdew=16.38, humidity=32.97, cloud=0.0, wind=24.6, temperature=16.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:02:39', seeing=0.68, atlas_timestamp='2025-11-24T19:02:34.253', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T21:02:42.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:02:42.727 [DEBUG] [Thread-196954] [transport.py] [_log()] starting thread (client mode): 0xd0711bd0
2025-11-24T21:02:42.727 [DEBUG] [Thread-196954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:02:42.741 [DEBUG] [Thread-196954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:02:42.741 [INFO] [Thread-196954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:02:42.756 [DEBUG] [Thread-196954] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:02:42.756 [DEBUG] [Thread-196954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:02:42.756 [DEBUG] [Thread-196954] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:02:42.756 [DEBUG] [Thread-196954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:02:42.756 [DEBUG] [Thread-196954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:02:42.756 [DEBUG] [Thread-196954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:02:42.756 [DEBUG] [Thread-196954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:02:42.756 [DEBUG] [Thread-196954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:02:42.756 [DEBUG] [Thread-196954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:02:42.756 [DEBUG] [Thread-196954] [transport.py] [_log()] client lang: <none>
2025-11-24T21:02:42.757 [DEBUG] [Thread-196954] [transport.py] [_log()] server lang: <none>
2025-11-24T21:02:42.757 [DEBUG] [Thread-196954] [transport.py] [_log()] kex follows: False
2025-11-24T21:02:42.757 [DEBUG] [Thread-196954] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:02:42.757 [DEBUG] [Thread-196954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:02:42.757 [DEBUG] [Thread-196954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:02:42.757 [DEBUG] [Thread-196954] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:02:42.757 [DEBUG] [Thread-196954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:02:42.757 [DEBUG] [Thread-196954] [transport.py] [_log()] Compression: none
2025-11-24T21:02:42.757 [DEBUG] [Thread-196954] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:02:42.807 [DEBUG] [Thread-196954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:02:42.808 [DEBUG] [Thread-196954] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:02:42.808 [DEBUG] [Thread-196954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:02:42.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:02:42.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:02:42.864 [DEBUG] [Thread-196954] [transport.py] [_log()] userauth is OK
2025-11-24T21:02:42.865 [DEBUG] [Thread-196954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:02:42.865 [DEBUG] [Thread-196954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:02:42.865 [DEBUG] [Thread-196954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:02:42.865 [DEBUG] [Thread-196954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:02:42.883 [INFO] [Thread-196954] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:02:42.883 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:02:42.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:02:43.780 [DEBUG] [Thread-196954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:02:43.780 [DEBUG] [Thread-196954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:02:43.826 [DEBUG] [Thread-196954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:02:43.827 [DEBUG] [Thread-196954] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:02:43.836 [DEBUG] [Thread-196954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:02:43.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:02:43.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-11-24T21:02: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') -> 00000000
2025-11-24T21:02:43.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:02:43.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:02:43.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:02:43.887 [DEBUG] [Thread-196954] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:02:55.940 [DEBUG] [Thread-196956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:03:10.860 [DEBUG] [Thread-196957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:03:11.886 [DEBUG] [Thread-196958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:03:13.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:03:13.906 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:03:13.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-11-24T21:03:15.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 2, 38), 16.21, 33.0, 0.0, 27.79, 16.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:03:15.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:02:38
2025-11-24T21:03:15.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:03:15.626 [DEBUG] [Thread-196959] [transport.py] [_log()] starting thread (client mode): 0xd0787e50
2025-11-24T21:03:15.627 [DEBUG] [Thread-196959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:03:15.637 [DEBUG] [Thread-196959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:03:15.638 [INFO] [Thread-196959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:03:15.643 [DEBUG] [Thread-196959] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:03:15.643 [DEBUG] [Thread-196959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:03:15.643 [DEBUG] [Thread-196959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:03:15.643 [DEBUG] [Thread-196959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:03:15.643 [DEBUG] [Thread-196959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:03:15.643 [DEBUG] [Thread-196959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:03:15.643 [DEBUG] [Thread-196959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:03:15.643 [DEBUG] [Thread-196959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:03:15.643 [DEBUG] [Thread-196959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:03:15.644 [DEBUG] [Thread-196959] [transport.py] [_log()] client lang: <none>
2025-11-24T21:03:15.644 [DEBUG] [Thread-196959] [transport.py] [_log()] server lang: <none>
2025-11-24T21:03:15.644 [DEBUG] [Thread-196959] [transport.py] [_log()] kex follows: False
2025-11-24T21:03:15.644 [DEBUG] [Thread-196959] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:03:15.644 [DEBUG] [Thread-196959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:03:15.644 [DEBUG] [Thread-196959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:03:15.644 [DEBUG] [Thread-196959] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:03:15.644 [DEBUG] [Thread-196959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:03:15.644 [DEBUG] [Thread-196959] [transport.py] [_log()] Compression: none
2025-11-24T21:03:15.645 [DEBUG] [Thread-196959] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:03:15.680 [DEBUG] [Thread-196959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:03:15.684 [DEBUG] [Thread-196959] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:03:15.685 [DEBUG] [Thread-196959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:03:15.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:03:15.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:03:15.689 [DEBUG] [Thread-196959] [transport.py] [_log()] userauth is OK
2025-11-24T21:03:15.689 [DEBUG] [Thread-196959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:03:15.689 [DEBUG] [Thread-196959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:03:15.689 [DEBUG] [Thread-196959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:03:15.689 [DEBUG] [Thread-196959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:03:15.706 [INFO] [Thread-196959] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:03:15.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:03:16.281 [DEBUG] [Thread-196959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:03:16.281 [DEBUG] [Thread-196959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:03:16.282 [DEBUG] [Thread-196959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:03:16.322 [DEBUG] [Thread-196959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:03:16.322 [DEBUG] [Thread-196959] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:03:16.324 [DEBUG] [Thread-196959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:03:16.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:03:16.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:03:16.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:03:16.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:03:16.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:03:16.347 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:03:16.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:03:16.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:03:16.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:03:16.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.793799 -999.00  +16.20  23.53     38   +2.10 1 1 1 1 1     0    0 13.06 -52.31 ZNESW 16.2 23.5 166.2 28.9 16.4 -25.9 16.3 -25.4 16.1 -24.3 16.4 -25.2
2025-11-24T21:03:16.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:03:16.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:03:16.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.793799
2025-11-24T21:03:16.360 [DEBUG] [Thread-196959] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:03:16.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:03:16.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:03:16.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:03:16.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:03:16.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:03:16.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:02:38', tmtdew=16.21, humidity=33.0, cloud=0.0, wind=27.79, temperature=16.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:03:13', seeing=0.58, atlas_timestamp='2025-11-24T19:03:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T21:03:16.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:03:16.461 [DEBUG] [Thread-196962] [transport.py] [_log()] starting thread (client mode): 0xd0713a30
2025-11-24T21:03:16.461 [DEBUG] [Thread-196962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:03:16.477 [DEBUG] [Thread-196962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:03:16.477 [INFO] [Thread-196962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] client lang: <none>
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] server lang: <none>
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] kex follows: False
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:03:16.484 [DEBUG] [Thread-196962] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:03:16.485 [DEBUG] [Thread-196962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:03:16.485 [DEBUG] [Thread-196962] [transport.py] [_log()] Compression: none
2025-11-24T21:03:16.485 [DEBUG] [Thread-196962] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:03:16.541 [DEBUG] [Thread-196962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:03:16.541 [DEBUG] [Thread-196962] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:03:16.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:03:16.541 [DEBUG] [Thread-196962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:03:16.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:03:16.597 [DEBUG] [Thread-196962] [transport.py] [_log()] userauth is OK
2025-11-24T21:03:16.597 [DEBUG] [Thread-196962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:03:16.597 [DEBUG] [Thread-196962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:03:16.597 [DEBUG] [Thread-196962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:03:16.597 [DEBUG] [Thread-196962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:03:16.611 [INFO] [Thread-196962] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:03:16.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:03:16.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:03:17.492 [DEBUG] [Thread-196962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:03:17.493 [DEBUG] [Thread-196962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:03:17.540 [DEBUG] [Thread-196962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:03:17.540 [DEBUG] [Thread-196962] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:03:17.550 [DEBUG] [Thread-196962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:03:17.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:03:17.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-11-24T21:03:17.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-11-24T21:03:17.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:03:17.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:03:17.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:03:17.587 [DEBUG] [Thread-196962] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:03:25.255 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:03:25.358 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:03:27.150 [DEBUG] [Thread-196964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:03:42.794 [DEBUG] [Thread-196965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:03:47.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:03:47.587 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:03:47.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:03:49.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 3, 13), 16.27, 32.87, 0.0, 24.0, 16.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:03:49.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:03:13
2025-11-24T21:03:49.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:03:49.567 [DEBUG] [Thread-196966] [transport.py] [_log()] starting thread (client mode): 0xd317ed70
2025-11-24T21:03:49.568 [DEBUG] [Thread-196966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:03:49.579 [DEBUG] [Thread-196966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:03:49.579 [INFO] [Thread-196966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:03:49.584 [DEBUG] [Thread-196966] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] client lang: <none>
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] server lang: <none>
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] kex follows: False
2025-11-24T21:03:49.585 [DEBUG] [Thread-196966] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:03:49.586 [DEBUG] [Thread-196966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:03:49.586 [DEBUG] [Thread-196966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:03:49.586 [DEBUG] [Thread-196966] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:03:49.586 [DEBUG] [Thread-196966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:03:49.586 [DEBUG] [Thread-196966] [transport.py] [_log()] Compression: none
2025-11-24T21:03:49.586 [DEBUG] [Thread-196966] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:03:49.623 [DEBUG] [Thread-196966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:03:49.627 [DEBUG] [Thread-196966] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:03:49.629 [DEBUG] [Thread-196966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:03:49.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:03:49.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:03:49.633 [DEBUG] [Thread-196966] [transport.py] [_log()] userauth is OK
2025-11-24T21:03:49.633 [DEBUG] [Thread-196966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:03:49.633 [DEBUG] [Thread-196966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:03:49.633 [DEBUG] [Thread-196966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:03:49.633 [DEBUG] [Thread-196966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:03:49.662 [INFO] [Thread-196966] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:03:49.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:03:50.259 [DEBUG] [Thread-196966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:03:50.259 [DEBUG] [Thread-196966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:03:50.260 [DEBUG] [Thread-196966] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:03:50.300 [DEBUG] [Thread-196966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:03:50.300 [DEBUG] [Thread-196966] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:03:50.304 [DEBUG] [Thread-196966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:03:50.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:03:50.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:03:50.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:03:50.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:03:50.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:03:50.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:03:50.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:03:50.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:03:50.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:03:50.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.793799 -999.00  +16.20  23.53     38   +2.10 1 1 1 1 1     0    0 13.06 -52.31 ZNESW 16.2 23.5 166.2 28.9 16.4 -25.9 16.3 -25.4 16.1 -24.3 16.4 -25.2
2025-11-24T21:03:50.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:03:50.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:03:50.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.793799
2025-11-24T21:03:50.336 [DEBUG] [Thread-196966] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:03:50.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:03:50.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:03:50.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:03:50.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:03:50.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:03:50.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:03:13', tmtdew=16.27, humidity=32.87, cloud=0.0, wind=24.0, temperature=16.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:03:47', seeing=0.56, atlas_timestamp='2025-11-24T19:03:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[0.011250000000000426, 0.045750000000001734, 0.04525000000000112, -0.006000000000000227, 0.036999999999999034, 0.06675000000000075, 0.028999999999999915, 0.007750000000001478, 0.05599999999999916, 0.041499999999999204, 0.045249999999999346, 0.032999999999999474, 0.12400000000000055, 0.12025000000000041, 0.028999999999999915, 0.022499999999999076, 0.05224999999999902, 0.0625, 0.09699999999999953, -0.0002500000000011937, 0.08449999999999847, 0.0962499999999995, 0.07675000000000054, 0.014750000000001151, 0.02099999999999902, 0.05850000000000044, 0.09875000000000078, 0.07750000000000057, 0.10500000000000043, 0.05150000000000077, 0.06900000000000084, 0.04499999999999993, 0.06574999999999953], zp_timestamp='2025-11-24T18:56:00')
2025-11-24T21:03:50.434 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:03:50.445 [DEBUG] [Thread-196969] [transport.py] [_log()] starting thread (client mode): 0xd0738c10
2025-11-24T21:03:50.446 [DEBUG] [Thread-196969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:03:50.460 [DEBUG] [Thread-196969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:03:50.460 [INFO] [Thread-196969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:03:50.467 [DEBUG] [Thread-196969] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:03:50.467 [DEBUG] [Thread-196969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] client lang: <none>
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] server lang: <none>
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] kex follows: False
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] Compression: none
2025-11-24T21:03:50.468 [DEBUG] [Thread-196969] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:03:50.524 [DEBUG] [Thread-196969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:03:50.524 [DEBUG] [Thread-196969] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:03:50.524 [DEBUG] [Thread-196969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:03:50.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:03:50.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:03:50.583 [DEBUG] [Thread-196969] [transport.py] [_log()] userauth is OK
2025-11-24T21:03:50.583 [DEBUG] [Thread-196969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:03:50.583 [DEBUG] [Thread-196969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:03:50.583 [DEBUG] [Thread-196969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:03:50.583 [DEBUG] [Thread-196969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:03:50.598 [INFO] [Thread-196969] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:03:50.598 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:03:50.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:03:51.497 [DEBUG] [Thread-196969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:03:51.497 [DEBUG] [Thread-196969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:03:51.549 [DEBUG] [Thread-196969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:03:51.549 [DEBUG] [Thread-196969] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:03:51.561 [DEBUG] [Thread-196969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:03:51.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:03:51.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:03:51.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:03:51.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:03:51.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:03:51.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:03:51.595 [DEBUG] [Thread-196969] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:03:57.937 [DEBUG] [Thread-196971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:04:11.473 [DEBUG] [Thread-196972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:04:13.153 [DEBUG] [Thread-196973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:04:21.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:04:21.664 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:04:21.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-11-24T21:04:23.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 3, 46), 16.13, 33.45, 0.0, 26.73, 16.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:04:23.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:03:46
2025-11-24T21:04:23.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:04:23.810 [DEBUG] [Thread-196974] [transport.py] [_log()] starting thread (client mode): 0xd0784730
2025-11-24T21:04:23.811 [DEBUG] [Thread-196974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:04:23.812 [DEBUG] [Thread-196974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:04:23.812 [INFO] [Thread-196974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] client lang: <none>
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] server lang: <none>
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] kex follows: False
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:04:23.818 [DEBUG] [Thread-196974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:04:23.819 [DEBUG] [Thread-196974] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:04:23.819 [DEBUG] [Thread-196974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:04:23.819 [DEBUG] [Thread-196974] [transport.py] [_log()] Compression: none
2025-11-24T21:04:23.819 [DEBUG] [Thread-196974] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:04:23.853 [DEBUG] [Thread-196974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:04:23.857 [DEBUG] [Thread-196974] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:04:23.859 [DEBUG] [Thread-196974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:04:23.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:04:23.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:04:23.863 [DEBUG] [Thread-196974] [transport.py] [_log()] userauth is OK
2025-11-24T21:04:23.863 [DEBUG] [Thread-196974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:04:23.863 [DEBUG] [Thread-196974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:04:23.863 [DEBUG] [Thread-196974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:04:23.863 [DEBUG] [Thread-196974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:04:23.893 [INFO] [Thread-196974] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:04:23.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:04:24.568 [DEBUG] [Thread-196974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:04:24.569 [DEBUG] [Thread-196974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:04:24.570 [DEBUG] [Thread-196974] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:04:24.609 [DEBUG] [Thread-196974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:04:24.609 [DEBUG] [Thread-196974] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:04:24.612 [DEBUG] [Thread-196974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:04:24.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:04:24.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:04:24.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:04:24.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:04:24.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:04:24.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:04:24.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:04:24.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:04:24.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:04:24.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.794146 -999.00  +16.20  27.19     38   +2.20 1 1 1 1 1     0    0 13.07 -50.15 ZNESW 23.8 27.2 168.2 33.0 16.4 -25.9 16.4 -25.4 16.1 -24.1 16.3 -25.0
2025-11-24T21:04:24.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:04:24.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:04:24.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.794146
2025-11-24T21:04:24.652 [DEBUG] [Thread-196974] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:04:24.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:04:24.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:04:24.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:04:24.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:04:24.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:04:24.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:03:46', tmtdew=16.13, humidity=33.45, cloud=0.0, wind=26.73, temperature=16.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:04:21', seeing=0.51, atlas_timestamp='2025-11-24T19:03:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.04925000000000068, 0.04124999999999979, 0.005499999999999616, 0.02800000000000047, 0.09325000000000117, 0.028499999999999304, 0.030250000000000554, 0.06949999999999967, 0.07450000000000045, 0.0572499999999998, 0.07000000000000028, 0.14700000000000024, 0.13324999999999854, 0.041999999999999815, 0.07450000000000045, 0.09475000000000122, 0.06649999999999956, 0.09499999999999886, 0.0277499999999975, 0.11599999999999788, 0.10174999999999912, 0.027250000000002217, 0.04975000000000129, 0.036999999999999034, 0.08050000000000068, 0.12424999999999997, 0.09849999999999959, 0.1664999999999992, 0.03900000000000148, 0.06700000000000017, 0.05600000000000094, 0.05174999999999841], zp_timestamp='2025-11-24T19:01:00')
2025-11-24T21:04:24.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:04:24.778 [DEBUG] [Thread-196977] [transport.py] [_log()] starting thread (client mode): 0xd318b700
2025-11-24T21:04:24.778 [DEBUG] [Thread-196977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:04:24.791 [DEBUG] [Thread-196977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:04:24.791 [INFO] [Thread-196977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:04:24.798 [DEBUG] [Thread-196977] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:04:24.798 [DEBUG] [Thread-196977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:04:24.798 [DEBUG] [Thread-196977] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:04:24.798 [DEBUG] [Thread-196977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:04:24.798 [DEBUG] [Thread-196977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:04:24.798 [DEBUG] [Thread-196977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:04:24.798 [DEBUG] [Thread-196977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:04:24.798 [DEBUG] [Thread-196977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:04:24.798 [DEBUG] [Thread-196977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:04:24.799 [DEBUG] [Thread-196977] [transport.py] [_log()] client lang: <none>
2025-11-24T21:04:24.799 [DEBUG] [Thread-196977] [transport.py] [_log()] server lang: <none>
2025-11-24T21:04:24.799 [DEBUG] [Thread-196977] [transport.py] [_log()] kex follows: False
2025-11-24T21:04:24.799 [DEBUG] [Thread-196977] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:04:24.799 [DEBUG] [Thread-196977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:04:24.799 [DEBUG] [Thread-196977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:04:24.799 [DEBUG] [Thread-196977] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:04:24.799 [DEBUG] [Thread-196977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:04:24.799 [DEBUG] [Thread-196977] [transport.py] [_log()] Compression: none
2025-11-24T21:04:24.799 [DEBUG] [Thread-196977] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:04:24.861 [DEBUG] [Thread-196977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:04:24.861 [DEBUG] [Thread-196977] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:04:24.862 [DEBUG] [Thread-196977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:04:24.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:04:24.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:04:24.916 [DEBUG] [Thread-196977] [transport.py] [_log()] userauth is OK
2025-11-24T21:04:24.916 [DEBUG] [Thread-196977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:04:24.916 [DEBUG] [Thread-196977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:04:24.916 [DEBUG] [Thread-196977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:04:24.916 [DEBUG] [Thread-196977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:04:24.930 [INFO] [Thread-196977] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:04:24.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:04:24.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:04:25.570 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:04:25.579 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:04:25.736 [DEBUG] [Thread-196977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:04:25.736 [DEBUG] [Thread-196977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:04:25.784 [DEBUG] [Thread-196977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:04:25.784 [DEBUG] [Thread-196977] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:04:25.792 [DEBUG] [Thread-196977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:04:25.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:04:25.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:04:25.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:04:25.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:04:25.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:04:25.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:04:25.830 [DEBUG] [Thread-196977] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:04:28.273 [DEBUG] [Thread-196979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:04:43.550 [DEBUG] [Thread-196980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:04:55.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:04:55.860 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:04:55.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-11-24T21:04:57.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 4, 20), 16.09, 33.54, 0.0, 24.74, 16.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:04:57.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:04:20
2025-11-24T21:04:57.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:04:58.106 [DEBUG] [Thread-196981] [transport.py] [_log()] starting thread (client mode): 0xc9b82440
2025-11-24T21:04:58.107 [DEBUG] [Thread-196981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:04:58.109 [DEBUG] [Thread-196981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:04:58.110 [INFO] [Thread-196981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] client lang: <none>
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] server lang: <none>
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] kex follows: False
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:04:58.115 [DEBUG] [Thread-196981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:04:58.116 [DEBUG] [Thread-196981] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:04:58.116 [DEBUG] [Thread-196981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:04:58.116 [DEBUG] [Thread-196981] [transport.py] [_log()] Compression: none
2025-11-24T21:04:58.116 [DEBUG] [Thread-196981] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:04:58.145 [DEBUG] [Thread-196981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:04:58.149 [DEBUG] [Thread-196981] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:04:58.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:04:58.151 [DEBUG] [Thread-196981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:04:58.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:04:58.154 [DEBUG] [Thread-196981] [transport.py] [_log()] userauth is OK
2025-11-24T21:04:58.154 [DEBUG] [Thread-196981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:04:58.154 [DEBUG] [Thread-196981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:04:58.154 [DEBUG] [Thread-196981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:04:58.154 [DEBUG] [Thread-196981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:04:58.167 [INFO] [Thread-196981] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:04:58.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:04:58.691 [DEBUG] [Thread-196983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:04:58.933 [DEBUG] [Thread-196981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:04:58.933 [DEBUG] [Thread-196981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:04:58.934 [DEBUG] [Thread-196981] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:04:58.974 [DEBUG] [Thread-196981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:04:58.974 [DEBUG] [Thread-196981] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:04:58.977 [DEBUG] [Thread-196981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:04:58.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:04:58.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:04:58.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:04:58.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:04:58.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:04:59.000 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:04:59.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:04:59.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:04:59.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:04:59.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.794493 -999.00  +16.20  31.56     39   +2.30 1 1 2 1 1     0    0 13.04 -52.21 ZNESW 24.1 31.6 172.0 38.0 16.4 -25.9 16.4 -25.3 16.1 -24.2 16.4 -25.0
2025-11-24T21:04:59.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:04:59.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:04:59.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.794493
2025-11-24T21:04:59.009 [DEBUG] [Thread-196981] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:04:59.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:04:59.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:04:59.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:04:59.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:04:59.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:04:59.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:04:20', tmtdew=16.09, humidity=33.54, cloud=0.0, wind=24.74, temperature=16.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:04:55', seeing=0.57, atlas_timestamp='2025-11-24T19:04:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.04925000000000068, 0.04124999999999979, 0.005499999999999616, 0.02800000000000047, 0.09325000000000117, 0.028499999999999304, 0.030250000000000554, 0.06949999999999967, 0.07450000000000045, 0.0572499999999998, 0.07000000000000028, 0.14700000000000024, 0.13324999999999854, 0.041999999999999815, 0.07450000000000045, 0.09475000000000122, 0.06649999999999956, 0.09499999999999886, 0.0277499999999975, 0.11599999999999788, 0.10174999999999912, 0.027250000000002217, 0.04975000000000129, 0.036999999999999034, 0.08050000000000068, 0.12424999999999997, 0.09849999999999959, 0.1664999999999992, 0.03900000000000148, 0.06700000000000017, 0.05600000000000094, 0.05174999999999841], zp_timestamp='2025-11-24T19:01:00')
2025-11-24T21:04: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-11-24T21:04:59.149 [DEBUG] [Thread-196985] [transport.py] [_log()] starting thread (client mode): 0xd3150e80
2025-11-24T21:04:59.149 [DEBUG] [Thread-196985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:04:59.164 [DEBUG] [Thread-196985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:04:59.164 [INFO] [Thread-196985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] client lang: <none>
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] server lang: <none>
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] kex follows: False
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:04:59.171 [DEBUG] [Thread-196985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:04:59.172 [DEBUG] [Thread-196985] [transport.py] [_log()] Compression: none
2025-11-24T21:04:59.172 [DEBUG] [Thread-196985] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:04:59.235 [DEBUG] [Thread-196985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:04:59.236 [DEBUG] [Thread-196985] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:04:59.236 [DEBUG] [Thread-196985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:04:59.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:04:59.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:04:59.292 [DEBUG] [Thread-196985] [transport.py] [_log()] userauth is OK
2025-11-24T21:04:59.293 [DEBUG] [Thread-196985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:04:59.293 [DEBUG] [Thread-196985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:04:59.293 [DEBUG] [Thread-196985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:04:59.293 [DEBUG] [Thread-196985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:04:59.309 [INFO] [Thread-196985] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:04:59.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:04:59.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:05:00.167 [DEBUG] [Thread-196985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:05:00.168 [DEBUG] [Thread-196985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:05:00.215 [DEBUG] [Thread-196985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:05:00.215 [DEBUG] [Thread-196985] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:05:00.223 [DEBUG] [Thread-196985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:05:00.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:05:00.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-11-24T21:05:00.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-11-24T21:05:00.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:05:00.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:05:00.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:05:00.265 [DEBUG] [Thread-196985] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:05:12.017 [DEBUG] [Thread-196987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:05:13.803 [DEBUG] [Thread-196988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:05:25.809 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:05:25.836 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:05:29.063 [DEBUG] [Thread-196989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:05:30.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:05:30.259 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:05: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-11-24T21:05:31.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 4, 54), 15.97, 33.7, 0.0, 30.12, 16.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:05:31.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:04:54
2025-11-24T21:05:32.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:05:32.379 [DEBUG] [Thread-196990] [transport.py] [_log()] starting thread (client mode): 0xd318ba30
2025-11-24T21:05:32.380 [DEBUG] [Thread-196990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:05:32.388 [DEBUG] [Thread-196990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:05:32.388 [INFO] [Thread-196990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:05:32.395 [DEBUG] [Thread-196990] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] client lang: <none>
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] server lang: <none>
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] kex follows: False
2025-11-24T21:05:32.396 [DEBUG] [Thread-196990] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:05:32.397 [DEBUG] [Thread-196990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:05:32.397 [DEBUG] [Thread-196990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:05:32.397 [DEBUG] [Thread-196990] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:05:32.397 [DEBUG] [Thread-196990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:05:32.397 [DEBUG] [Thread-196990] [transport.py] [_log()] Compression: none
2025-11-24T21:05:32.397 [DEBUG] [Thread-196990] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:05:32.437 [DEBUG] [Thread-196990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:05:32.442 [DEBUG] [Thread-196990] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:05:32.444 [DEBUG] [Thread-196990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:05:32.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:05:32.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:05:32.449 [DEBUG] [Thread-196990] [transport.py] [_log()] userauth is OK
2025-11-24T21:05:32.449 [DEBUG] [Thread-196990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:05:32.449 [DEBUG] [Thread-196990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:05:32.449 [DEBUG] [Thread-196990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:05:32.449 [DEBUG] [Thread-196990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:05:32.479 [INFO] [Thread-196990] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:05:32.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:05:33.098 [DEBUG] [Thread-196990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:05:33.098 [DEBUG] [Thread-196990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:05:33.099 [DEBUG] [Thread-196990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:05:33.139 [DEBUG] [Thread-196990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:05:33.139 [DEBUG] [Thread-196990] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:05:33.141 [DEBUG] [Thread-196990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:05:33.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:05:33.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:05:33.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:05:33.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:05:33.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:05:33.164 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:05:33.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:05:33.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:05:33.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:05:33.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.794840 -999.00  +16.20  27.31     39   +2.20 1 1 1 1 1     0    0 12.93 -53.75 ZNESW 30.7 27.3 169.4 35.9 16.4 -25.8 16.3 -25.4 16.1 -24.1 16.4 -25.1
2025-11-24T21:05:33.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:05:33.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:05:33.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.794840
2025-11-24T21:05:33.175 [DEBUG] [Thread-196990] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:05:33.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:05:33.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:05:33.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:05:33.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:05:33.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:05:33.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:04:54', tmtdew=15.97, humidity=33.7, cloud=0.0, wind=30.12, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:05:29', seeing=0.6, atlas_timestamp='2025-11-24T19:04:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.04925000000000068, 0.04124999999999979, 0.005499999999999616, 0.02800000000000047, 0.09325000000000117, 0.028499999999999304, 0.030250000000000554, 0.06949999999999967, 0.07450000000000045, 0.0572499999999998, 0.07000000000000028, 0.14700000000000024, 0.13324999999999854, 0.041999999999999815, 0.07450000000000045, 0.09475000000000122, 0.06649999999999956, 0.09499999999999886, 0.0277499999999975, 0.11599999999999788, 0.10174999999999912, 0.027250000000002217, 0.04975000000000129, 0.036999999999999034, 0.08050000000000068, 0.12424999999999997, 0.09849999999999959, 0.1664999999999992, 0.03900000000000148, 0.06700000000000017, 0.05600000000000094, 0.05174999999999841], zp_timestamp='2025-11-24T19:01:00')
2025-11-24T21:05:33.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:05:33.282 [DEBUG] [Thread-196993] [transport.py] [_log()] starting thread (client mode): 0xd3150d30
2025-11-24T21:05:33.282 [DEBUG] [Thread-196993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:05:33.298 [DEBUG] [Thread-196993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:05:33.298 [INFO] [Thread-196993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:05:33.305 [DEBUG] [Thread-196993] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:05:33.305 [DEBUG] [Thread-196993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:05:33.305 [DEBUG] [Thread-196993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:05:33.305 [DEBUG] [Thread-196993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] client lang: <none>
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] server lang: <none>
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] kex follows: False
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] Compression: none
2025-11-24T21:05:33.306 [DEBUG] [Thread-196993] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:05:33.367 [DEBUG] [Thread-196993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:05:33.368 [DEBUG] [Thread-196993] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:05:33.368 [DEBUG] [Thread-196993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:05:33.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:05:33.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:05:33.431 [DEBUG] [Thread-196993] [transport.py] [_log()] userauth is OK
2025-11-24T21:05:33.431 [DEBUG] [Thread-196993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:05:33.431 [DEBUG] [Thread-196993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:05:33.431 [DEBUG] [Thread-196993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:05:33.431 [DEBUG] [Thread-196993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:05:33.444 [INFO] [Thread-196993] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:05:33.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:05:33.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:05:34.295 [DEBUG] [Thread-196993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:05:34.295 [DEBUG] [Thread-196993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:05:34.343 [DEBUG] [Thread-196993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:05:34.343 [DEBUG] [Thread-196993] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:05:34.352 [DEBUG] [Thread-196993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:05:34.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:05:34.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-11-24T21:05: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') -> 00000000
2025-11-24T21:05:34.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:05:34.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:05:34.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:05:34.385 [DEBUG] [Thread-196993] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:05:44.242 [DEBUG] [Thread-196995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:05:59.805 [DEBUG] [Thread-196996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:06:04.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:06:04.443 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:06:04.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-11-24T21:06:06.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 5, 29), 15.96, 33.72, 0.0, 30.44, 16.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:06:06.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:05:29
2025-11-24T21:06:06.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:06:06.448 [DEBUG] [Thread-196997] [transport.py] [_log()] starting thread (client mode): 0xd3153b50
2025-11-24T21:06:06.449 [DEBUG] [Thread-196997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:06:06.452 [DEBUG] [Thread-196997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:06:06.452 [INFO] [Thread-196997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] client lang: <none>
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] server lang: <none>
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] kex follows: False
2025-11-24T21:06:06.458 [DEBUG] [Thread-196997] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:06:06.463 [DEBUG] [Thread-196997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:06:06.463 [DEBUG] [Thread-196997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:06:06.463 [DEBUG] [Thread-196997] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:06:06.463 [DEBUG] [Thread-196997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:06:06.463 [DEBUG] [Thread-196997] [transport.py] [_log()] Compression: none
2025-11-24T21:06:06.463 [DEBUG] [Thread-196997] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:06:06.502 [DEBUG] [Thread-196997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:06:06.509 [DEBUG] [Thread-196997] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:06:06.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:06:06.511 [DEBUG] [Thread-196997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:06:06.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:06:06.515 [DEBUG] [Thread-196997] [transport.py] [_log()] userauth is OK
2025-11-24T21:06:06.515 [DEBUG] [Thread-196997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:06:06.515 [DEBUG] [Thread-196997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:06:06.515 [DEBUG] [Thread-196997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:06:06.515 [DEBUG] [Thread-196997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:06:06.539 [INFO] [Thread-196997] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:06:06.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:06:07.329 [DEBUG] [Thread-196997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:06:07.330 [DEBUG] [Thread-196997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:06:07.331 [DEBUG] [Thread-196997] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:06:07.370 [DEBUG] [Thread-196997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:06:07.370 [DEBUG] [Thread-196997] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:06:07.373 [DEBUG] [Thread-196997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:06:07.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:06:07.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:06:07.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:06:07.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:06:07.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:06:07.394 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:06:07.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:06:07.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:06:07.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:06:07.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.795187 -999.00  +16.20  23.67     38   +2.20 1 1 1 1 1     0    0 13.00 -49.08 ZNESW 25.8 23.7 170.2 32.7 16.4 -25.9 16.3 -25.4 16.1 -24.2 16.4 -25.2
2025-11-24T21:06:07.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:06:07.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:06:07.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.795187
2025-11-24T21:06:07.403 [DEBUG] [Thread-196997] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:06:07.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:06:07.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:06:07.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:06:07.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:06:07.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:06:07.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:05:29', tmtdew=15.96, humidity=33.72, cloud=0.0, wind=30.44, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:06:03', seeing=0.53, atlas_timestamp='2025-11-24T19:05:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.04925000000000068, 0.04124999999999979, 0.005499999999999616, 0.02800000000000047, 0.09325000000000117, 0.028499999999999304, 0.030250000000000554, 0.06949999999999967, 0.07450000000000045, 0.0572499999999998, 0.07000000000000028, 0.14700000000000024, 0.13324999999999854, 0.041999999999999815, 0.07450000000000045, 0.09475000000000122, 0.06649999999999956, 0.09499999999999886, 0.0277499999999975, 0.11599999999999788, 0.10174999999999912, 0.027250000000002217, 0.04975000000000129, 0.036999999999999034, 0.08050000000000068, 0.12424999999999997, 0.09849999999999959, 0.1664999999999992, 0.03900000000000148, 0.06700000000000017, 0.05600000000000094, 0.05174999999999841], zp_timestamp='2025-11-24T19:01:00')
2025-11-24T21:06:07.497 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:06:07.512 [DEBUG] [Thread-197000] [transport.py] [_log()] starting thread (client mode): 0xd318bdc0
2025-11-24T21:06:07.512 [DEBUG] [Thread-197000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:06:07.522 [DEBUG] [Thread-197000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:06:07.522 [INFO] [Thread-197000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] client lang: <none>
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] server lang: <none>
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] kex follows: False
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:06:07.562 [DEBUG] [Thread-197000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:06:07.566 [DEBUG] [Thread-197000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:06:07.566 [DEBUG] [Thread-197000] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:06:07.566 [DEBUG] [Thread-197000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:06:07.566 [DEBUG] [Thread-197000] [transport.py] [_log()] Compression: none
2025-11-24T21:06:07.566 [DEBUG] [Thread-197000] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:06:07.624 [DEBUG] [Thread-197000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:06:07.624 [DEBUG] [Thread-197000] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:06:07.624 [DEBUG] [Thread-197000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:06:07.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:06:07.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:06:07.685 [DEBUG] [Thread-197000] [transport.py] [_log()] userauth is OK
2025-11-24T21:06:07.685 [DEBUG] [Thread-197000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:06:07.685 [DEBUG] [Thread-197000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:06:07.685 [DEBUG] [Thread-197000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:06:07.685 [DEBUG] [Thread-197000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:06:07.707 [INFO] [Thread-197000] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:06:07.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:06:07.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:06:08.594 [DEBUG] [Thread-197000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:06:08.594 [DEBUG] [Thread-197000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:06:08.641 [DEBUG] [Thread-197000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:06:08.641 [DEBUG] [Thread-197000] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:06:08.649 [DEBUG] [Thread-197000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:06:08.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:06:08.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:06:08.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:06:08.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:06:08.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:06:08.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:06:08.682 [DEBUG] [Thread-197000] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:06:12.460 [DEBUG] [Thread-197002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:06:15.290 [DEBUG] [Thread-197003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:06:26.060 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:06:26.087 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:06:30.565 [DEBUG] [Thread-197004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:06:38.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:06:38.727 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:06:38.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-11-24T21:06:40.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 6, 3), 15.96, 33.72, 0.0, 31.0, 16.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:06:40.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:06:03
2025-11-24T21:06:40.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:06:40.409 [DEBUG] [Thread-197005] [transport.py] [_log()] starting thread (client mode): 0xd318bdf0
2025-11-24T21:06:40.410 [DEBUG] [Thread-197005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:06:40.413 [DEBUG] [Thread-197005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:06:40.413 [INFO] [Thread-197005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:06:40.419 [DEBUG] [Thread-197005] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] client lang: <none>
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] server lang: <none>
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] kex follows: False
2025-11-24T21:06:40.420 [DEBUG] [Thread-197005] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:06:40.421 [DEBUG] [Thread-197005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:06:40.421 [DEBUG] [Thread-197005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:06:40.421 [DEBUG] [Thread-197005] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:06:40.421 [DEBUG] [Thread-197005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:06:40.421 [DEBUG] [Thread-197005] [transport.py] [_log()] Compression: none
2025-11-24T21:06:40.421 [DEBUG] [Thread-197005] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:06:40.464 [DEBUG] [Thread-197005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:06:40.470 [DEBUG] [Thread-197005] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:06:40.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:06:40.474 [DEBUG] [Thread-197005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:06:40.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:06:40.477 [DEBUG] [Thread-197005] [transport.py] [_log()] userauth is OK
2025-11-24T21:06:40.477 [DEBUG] [Thread-197005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:06:40.478 [DEBUG] [Thread-197005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:06:40.478 [DEBUG] [Thread-197005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:06:40.478 [DEBUG] [Thread-197005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:06:40.497 [INFO] [Thread-197005] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:06:40.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:06:41.116 [DEBUG] [Thread-197005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:06:41.117 [DEBUG] [Thread-197005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:06:41.117 [DEBUG] [Thread-197005] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:06:41.158 [DEBUG] [Thread-197005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:06:41.158 [DEBUG] [Thread-197005] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:06:41.161 [DEBUG] [Thread-197005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:06:41.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:06:41.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:06:41.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:06:41.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:06:41.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:06:41.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:06:41.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:06:41.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:06:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:06:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.795534 -999.00  +16.20  26.47     39   +2.20 1 1 1 1 1     0    0 13.15 -51.42 ZNESW 21.5 26.5 172.4 29.8 16.4 -25.9 16.3 -25.4 16.1 -24.3 16.4 -25.1
2025-11-24T21:06:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:06:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:06:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.795534
2025-11-24T21:06:41.194 [DEBUG] [Thread-197005] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:06:41.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:06:41.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:06:41.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:06:41.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:06:41.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:06:41.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:06:03', tmtdew=15.96, humidity=33.72, cloud=0.0, wind=31.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-11-24T21:06:37', seeing=0.48, atlas_timestamp='2025-11-24T19:05:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[0.0417500000000004, 0.04925000000000068, 0.04124999999999979, 0.005499999999999616, 0.02800000000000047, 0.09325000000000117, 0.028499999999999304, 0.030250000000000554, 0.06949999999999967, 0.07450000000000045, 0.0572499999999998, 0.07000000000000028, 0.14700000000000024, 0.13324999999999854, 0.041999999999999815, 0.07450000000000045, 0.09475000000000122, 0.06649999999999956, 0.09499999999999886, 0.0277499999999975, 0.11599999999999788, 0.10174999999999912, 0.027250000000002217, 0.04975000000000129, 0.036999999999999034, 0.08050000000000068, 0.12424999999999997, 0.09849999999999959, 0.1664999999999992, 0.03900000000000148, 0.06700000000000017, 0.05600000000000094, 0.05174999999999841], zp_timestamp='2025-11-24T19:01:00')
2025-11-24T21:06:41.297 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:06:41.310 [DEBUG] [Thread-197008] [transport.py] [_log()] starting thread (client mode): 0xd073ad40
2025-11-24T21:06:41.310 [DEBUG] [Thread-197008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:06:41.326 [DEBUG] [Thread-197008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:06:41.326 [INFO] [Thread-197008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] client lang: <none>
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] server lang: <none>
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] kex follows: False
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:06:41.333 [DEBUG] [Thread-197008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:06:41.334 [DEBUG] [Thread-197008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:06:41.334 [DEBUG] [Thread-197008] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:06:41.334 [DEBUG] [Thread-197008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:06:41.334 [DEBUG] [Thread-197008] [transport.py] [_log()] Compression: none
2025-11-24T21:06:41.334 [DEBUG] [Thread-197008] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:06:41.393 [DEBUG] [Thread-197008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:06:41.393 [DEBUG] [Thread-197008] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:06:41.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:06:41.394 [DEBUG] [Thread-197008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:06:41.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:06:41.452 [DEBUG] [Thread-197008] [transport.py] [_log()] userauth is OK
2025-11-24T21:06:41.452 [DEBUG] [Thread-197008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:06:41.452 [DEBUG] [Thread-197008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:06:41.452 [DEBUG] [Thread-197008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:06:41.452 [DEBUG] [Thread-197008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:06:41.467 [INFO] [Thread-197008] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:06:41.467 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:06:41.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:06:42.363 [DEBUG] [Thread-197008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:06:42.363 [DEBUG] [Thread-197008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:06:42.410 [DEBUG] [Thread-197008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:06:42.411 [DEBUG] [Thread-197008] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:06:42.419 [DEBUG] [Thread-197008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:06:42.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:06:42.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-11-24T21:06:42.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-11-24T21:06:42.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:06:42.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:06:42.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:06:42.454 [DEBUG] [Thread-197008] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:06:45.704 [DEBUG] [Thread-197010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:07:00.935 [DEBUG] [Thread-197011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:07:12.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:07:12.518 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:07:12.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-11-24T21:07:12.860 [DEBUG] [Thread-197012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:07:13.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 6, 37), 15.99, 33.77, 0.0, 28.92, 16.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:07:13.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:06:37
2025-11-24T21:07:13.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:07:14.124 [DEBUG] [Thread-197013] [transport.py] [_log()] starting thread (client mode): 0xd318b970
2025-11-24T21:07:14.125 [DEBUG] [Thread-197013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:07:14.125 [DEBUG] [Thread-197013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:07:14.125 [INFO] [Thread-197013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] client lang: <none>
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] server lang: <none>
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] kex follows: False
2025-11-24T21:07:14.131 [DEBUG] [Thread-197013] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:07:14.132 [DEBUG] [Thread-197013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:07:14.132 [DEBUG] [Thread-197013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:07:14.132 [DEBUG] [Thread-197013] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:07:14.132 [DEBUG] [Thread-197013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:07:14.132 [DEBUG] [Thread-197013] [transport.py] [_log()] Compression: none
2025-11-24T21:07:14.132 [DEBUG] [Thread-197013] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:07:14.165 [DEBUG] [Thread-197013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:07:14.170 [DEBUG] [Thread-197013] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:07:14.171 [DEBUG] [Thread-197013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:07:14.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:07:14.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:07:14.175 [DEBUG] [Thread-197013] [transport.py] [_log()] userauth is OK
2025-11-24T21:07:14.175 [DEBUG] [Thread-197013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:07:14.175 [DEBUG] [Thread-197013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:07:14.175 [DEBUG] [Thread-197013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:07:14.175 [DEBUG] [Thread-197013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:07:14.193 [INFO] [Thread-197013] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:07:14.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:07:15.013 [DEBUG] [Thread-197013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:07:15.013 [DEBUG] [Thread-197013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:07:15.014 [DEBUG] [Thread-197013] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:07:15.055 [DEBUG] [Thread-197013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:07:15.055 [DEBUG] [Thread-197013] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:07:15.057 [DEBUG] [Thread-197013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:07:15.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:07:15.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:07:15.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:07:15.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:07:15.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:07:15.082 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:07:15.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:07:15.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:07:15.084 [DEBUG] [Thread-197013] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:07:15.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:07:15.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.796229 -999.00  +16.20  20.80     39   +2.20 1 1 1 1 1     0    0 12.91 -54.56 ZNESW 20.6 20.8 163.9 29.4 16.4 -26.0 16.3 -25.4 16.1 -24.4 16.3 -25.1
2025-11-24T21:07:15.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:07:15.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:07:15.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.796229
2025-11-24T21:07:15.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:07:15.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:07:15.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:07:15.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:07:15.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:07:15.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:06:37', tmtdew=15.99, humidity=33.77, cloud=0.0, wind=28.92, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:07:11', seeing=0.58, atlas_timestamp='2025-11-24T19:06:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:07:15.186 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:07:15.197 [DEBUG] [Thread-197016] [transport.py] [_log()] starting thread (client mode): 0xd31536a0
2025-11-24T21:07:15.197 [DEBUG] [Thread-197016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:07:15.213 [DEBUG] [Thread-197016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:07:15.213 [INFO] [Thread-197016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] client lang: <none>
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] server lang: <none>
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] kex follows: False
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:07:15.220 [DEBUG] [Thread-197016] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:07:15.221 [DEBUG] [Thread-197016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:07:15.221 [DEBUG] [Thread-197016] [transport.py] [_log()] Compression: none
2025-11-24T21:07:15.221 [DEBUG] [Thread-197016] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:07:15.276 [DEBUG] [Thread-197016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:07:15.276 [DEBUG] [Thread-197016] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:07:15.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:07:15.277 [DEBUG] [Thread-197016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:07:15.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:07:15.332 [DEBUG] [Thread-197016] [transport.py] [_log()] userauth is OK
2025-11-24T21:07:15.332 [DEBUG] [Thread-197016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:07:15.333 [DEBUG] [Thread-197016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:07:15.333 [DEBUG] [Thread-197016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:07:15.333 [DEBUG] [Thread-197016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:07:15.346 [INFO] [Thread-197016] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:07:15.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:07:15.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:07:16.056 [DEBUG] [Thread-197018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:07:16.179 [DEBUG] [Thread-197016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:07:16.179 [DEBUG] [Thread-197016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:07:16.227 [DEBUG] [Thread-197016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:07:16.227 [DEBUG] [Thread-197016] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:07:16.235 [DEBUG] [Thread-197016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:07:16.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:07: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')
2025-11-24T21:07: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') -> 00000000
2025-11-24T21:07:16.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:07:16.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:07:16.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:07:16.270 [DEBUG] [Thread-197016] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:07:24.487 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:07:26.291 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:07:26.292 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:07:31.284 [DEBUG] [Thread-197019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:07:46.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:07:46.319 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:07:46.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-11-24T21:07:46.437 [DEBUG] [Thread-197020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:07:47.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 7, 10), 15.97, 33.82, 0.0, 28.44, 16.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:07:47.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:07:10
2025-11-24T21:07:47.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:07:48.022 [DEBUG] [Thread-197021] [transport.py] [_log()] starting thread (client mode): 0xd07fb400
2025-11-24T21:07:48.022 [DEBUG] [Thread-197021] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:07:48.029 [DEBUG] [Thread-197021] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:07:48.029 [INFO] [Thread-197021] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] client lang: <none>
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] server lang: <none>
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] kex follows: False
2025-11-24T21:07:48.035 [DEBUG] [Thread-197021] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:07:48.036 [DEBUG] [Thread-197021] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:07:48.036 [DEBUG] [Thread-197021] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:07:48.036 [DEBUG] [Thread-197021] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:07:48.036 [DEBUG] [Thread-197021] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:07:48.036 [DEBUG] [Thread-197021] [transport.py] [_log()] Compression: none
2025-11-24T21:07:48.036 [DEBUG] [Thread-197021] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:07:48.073 [DEBUG] [Thread-197021] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:07:48.080 [DEBUG] [Thread-197021] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:07:48.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:07:48.082 [DEBUG] [Thread-197021] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:07:48.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:07:48.086 [DEBUG] [Thread-197021] [transport.py] [_log()] userauth is OK
2025-11-24T21:07:48.086 [DEBUG] [Thread-197021] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:07:48.086 [DEBUG] [Thread-197021] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:07:48.086 [DEBUG] [Thread-197021] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:07:48.086 [DEBUG] [Thread-197021] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:07:48.107 [INFO] [Thread-197021] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:07:48.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:07:48.744 [DEBUG] [Thread-197021] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:07:48.744 [DEBUG] [Thread-197021] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:07:48.745 [DEBUG] [Thread-197021] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:07:48.786 [DEBUG] [Thread-197021] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:07:48.786 [DEBUG] [Thread-197021] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:07:48.794 [DEBUG] [Thread-197021] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:07:48.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:07:48.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:07:48.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:07:48.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:07:48.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:07:48.818 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:07:48.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:07:48.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:07:48.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:07:48.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.796576 -999.00  +16.10  25.98     39   +2.20 1 1 1 1 1     0    0 13.14 -52.11 ZNESW 23.0 26.0 166.4 35.6 16.4 -25.9 16.3 -25.4 16.0 -24.3 16.3 -25.3
2025-11-24T21:07:48.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:07:48.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:07:48.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.796576
2025-11-24T21:07:48.830 [DEBUG] [Thread-197021] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:07:48.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:07:48.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:07:48.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:07:48.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:07:48.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:07:48.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:07:10', tmtdew=15.97, humidity=33.82, cloud=0.0, wind=28.44, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:07:45', seeing=0.58, atlas_timestamp='2025-11-24T19:07:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:07:48.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:07:48.938 [DEBUG] [Thread-197024] [transport.py] [_log()] starting thread (client mode): 0xd073ac50
2025-11-24T21:07:48.939 [DEBUG] [Thread-197024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:07:48.953 [DEBUG] [Thread-197024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:07:48.953 [INFO] [Thread-197024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] client lang: <none>
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] server lang: <none>
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] kex follows: False
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:07:48.960 [DEBUG] [Thread-197024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:07:48.961 [DEBUG] [Thread-197024] [transport.py] [_log()] Compression: none
2025-11-24T21:07:48.961 [DEBUG] [Thread-197024] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:07:49.015 [DEBUG] [Thread-197024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:07:49.016 [DEBUG] [Thread-197024] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:07:49.016 [DEBUG] [Thread-197024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:07:49.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:07:49.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:07:49.072 [DEBUG] [Thread-197024] [transport.py] [_log()] userauth is OK
2025-11-24T21:07:49.073 [DEBUG] [Thread-197024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:07:49.073 [DEBUG] [Thread-197024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:07:49.073 [DEBUG] [Thread-197024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:07:49.073 [DEBUG] [Thread-197024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:07:49.086 [INFO] [Thread-197024] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:07:49.087 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:07:49.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:07:49.963 [DEBUG] [Thread-197024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:07:49.963 [DEBUG] [Thread-197024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:07:50.011 [DEBUG] [Thread-197024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:07:50.011 [DEBUG] [Thread-197024] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:07:50.020 [DEBUG] [Thread-197024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:07:50.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:07:50.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-11-24T21:07:50.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-11-24T21:07:50.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:07:50.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:07:50.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:07:50.055 [DEBUG] [Thread-197024] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:08:01.600 [DEBUG] [Thread-197026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:08:13.406 [DEBUG] [Thread-197027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:08:16.798 [DEBUG] [Thread-197028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:08:20.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:08:20.052 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:08:20.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-11-24T21:08:21.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 7, 44), 15.99, 33.78, 0.0, 33.22, 16.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:08:21.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:07:44
2025-11-24T21:08:21.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:08:22.106 [DEBUG] [Thread-197029] [transport.py] [_log()] starting thread (client mode): 0xd0738be0
2025-11-24T21:08:22.107 [DEBUG] [Thread-197029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:08:22.108 [DEBUG] [Thread-197029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:08:22.108 [INFO] [Thread-197029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:08:22.117 [DEBUG] [Thread-197029] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:08:22.117 [DEBUG] [Thread-197029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:08:22.117 [DEBUG] [Thread-197029] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:08:22.117 [DEBUG] [Thread-197029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:08:22.117 [DEBUG] [Thread-197029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:08:22.117 [DEBUG] [Thread-197029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:08:22.117 [DEBUG] [Thread-197029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:08:22.117 [DEBUG] [Thread-197029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:08:22.118 [DEBUG] [Thread-197029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:08:22.118 [DEBUG] [Thread-197029] [transport.py] [_log()] client lang: <none>
2025-11-24T21:08:22.118 [DEBUG] [Thread-197029] [transport.py] [_log()] server lang: <none>
2025-11-24T21:08:22.118 [DEBUG] [Thread-197029] [transport.py] [_log()] kex follows: False
2025-11-24T21:08:22.118 [DEBUG] [Thread-197029] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:08:22.119 [DEBUG] [Thread-197029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:08:22.119 [DEBUG] [Thread-197029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:08:22.119 [DEBUG] [Thread-197029] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:08:22.119 [DEBUG] [Thread-197029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:08:22.119 [DEBUG] [Thread-197029] [transport.py] [_log()] Compression: none
2025-11-24T21:08:22.119 [DEBUG] [Thread-197029] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:08:22.159 [DEBUG] [Thread-197029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:08:22.166 [DEBUG] [Thread-197029] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:08:22.168 [DEBUG] [Thread-197029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:08:22.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:08:22.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:08:22.172 [DEBUG] [Thread-197029] [transport.py] [_log()] userauth is OK
2025-11-24T21:08:22.172 [DEBUG] [Thread-197029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:08:22.172 [DEBUG] [Thread-197029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:08:22.173 [DEBUG] [Thread-197029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:08:22.173 [DEBUG] [Thread-197029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:08:22.195 [INFO] [Thread-197029] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:08:22.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:08:22.824 [DEBUG] [Thread-197029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:08:22.824 [DEBUG] [Thread-197029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:08:22.825 [DEBUG] [Thread-197029] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:08:22.865 [DEBUG] [Thread-197029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:08:22.865 [DEBUG] [Thread-197029] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:08:22.869 [DEBUG] [Thread-197029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:08:22.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:08:22.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:08:22.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:08:22.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:08:22.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:08:22.894 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:08:22.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:08:22.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:08:22.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:08:22.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.796924 -999.00  +16.10  19.17     39   +2.10 1 1 1 1 1     0    0 13.21 -49.88 ZNESW 23.6 19.2 166.5 29.8 16.4 -25.9 16.3 -25.5 16.0 -24.3 16.3 -25.2
2025-11-24T21:08:22.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:08:22.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:08:22.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.796924
2025-11-24T21:08:22.907 [DEBUG] [Thread-197029] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:08:22.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:08:22.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:08:22.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:08:22.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:08:22.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:08:22.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:07:44', tmtdew=15.99, humidity=33.78, cloud=0.0, wind=33.22, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:08:19', seeing=0.7, atlas_timestamp='2025-11-24T19:07:34.234', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:08:23.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:08:23.013 [DEBUG] [Thread-197032] [transport.py] [_log()] starting thread (client mode): 0xd07381c0
2025-11-24T21:08:23.013 [DEBUG] [Thread-197032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:08:23.028 [DEBUG] [Thread-197032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:08:23.029 [INFO] [Thread-197032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] client lang: <none>
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] server lang: <none>
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] kex follows: False
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] Compression: none
2025-11-24T21:08:23.036 [DEBUG] [Thread-197032] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:08:23.091 [DEBUG] [Thread-197032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:08:23.092 [DEBUG] [Thread-197032] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:08:23.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:08:23.092 [DEBUG] [Thread-197032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:08:23.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:08:23.148 [DEBUG] [Thread-197032] [transport.py] [_log()] userauth is OK
2025-11-24T21:08:23.148 [DEBUG] [Thread-197032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:08:23.149 [DEBUG] [Thread-197032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:08:23.149 [DEBUG] [Thread-197032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:08:23.149 [DEBUG] [Thread-197032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:08:23.164 [INFO] [Thread-197032] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:08:23.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:08:23.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:08:24.025 [DEBUG] [Thread-197032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:08:24.025 [DEBUG] [Thread-197032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:08:24.072 [DEBUG] [Thread-197032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:08:24.072 [DEBUG] [Thread-197032] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:08:24.080 [DEBUG] [Thread-197032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:08:24.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:08:24.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-11-24T21:08:24.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-11-24T21:08:24.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:08:24.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:08:24.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:08:24.114 [DEBUG] [Thread-197032] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:08:26.501 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:08:26.504 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:08:31.908 [DEBUG] [Thread-197034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:08:47.279 [DEBUG] [Thread-197035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:08:54.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:08:54.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:08:54.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:08:57.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 8, 19), 15.99, 33.77, 0.0, 31.27, 16.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:08:57.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:08:19
2025-11-24T21:08:57.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:08:57.740 [DEBUG] [Thread-197036] [transport.py] [_log()] starting thread (client mode): 0xd073a170
2025-11-24T21:08:57.741 [DEBUG] [Thread-197036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:08:57.743 [DEBUG] [Thread-197036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:08:57.743 [INFO] [Thread-197036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] client lang: <none>
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] server lang: <none>
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] kex follows: False
2025-11-24T21:08:57.750 [DEBUG] [Thread-197036] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:08:57.751 [DEBUG] [Thread-197036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:08:57.751 [DEBUG] [Thread-197036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:08:57.751 [DEBUG] [Thread-197036] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:08:57.751 [DEBUG] [Thread-197036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:08:57.751 [DEBUG] [Thread-197036] [transport.py] [_log()] Compression: none
2025-11-24T21:08:57.751 [DEBUG] [Thread-197036] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:08:57.785 [DEBUG] [Thread-197036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:08:57.790 [DEBUG] [Thread-197036] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:08:57.791 [DEBUG] [Thread-197036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:08:57.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:08:57.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:08:57.795 [DEBUG] [Thread-197036] [transport.py] [_log()] userauth is OK
2025-11-24T21:08:57.796 [DEBUG] [Thread-197036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:08:57.796 [DEBUG] [Thread-197036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:08:57.796 [DEBUG] [Thread-197036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:08:57.796 [DEBUG] [Thread-197036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:08:57.813 [INFO] [Thread-197036] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:08:57.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:08:58.459 [DEBUG] [Thread-197036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:08:58.459 [DEBUG] [Thread-197036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:08:58.461 [DEBUG] [Thread-197036] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:08:58.501 [DEBUG] [Thread-197036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:08:58.501 [DEBUG] [Thread-197036] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:08:58.503 [DEBUG] [Thread-197036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:08:58.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:08:58.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:08:58.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:08:58.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:08:58.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:08:58.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:08:58.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:08:58.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:08:58.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:08:58.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.797271 -999.00  +16.00  20.18     39   +2.10 1 1 1 1 1     0    0 13.13 -50.56 ZNESW 20.9 20.2 173.6 28.1 16.4 -26.1 16.3 -25.4 16.0 -24.4 16.2 -25.3
2025-11-24T21:08:58.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:08:58.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:08:58.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.797271
2025-11-24T21:08:58.538 [DEBUG] [Thread-197036] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:08:58.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:08:58.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:08:58.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:08:58.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:08:58.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:08:58.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:08:19', tmtdew=15.99, humidity=33.77, cloud=0.0, wind=31.27, temperature=16.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:08:19', seeing=0.7, atlas_timestamp='2025-11-24T19:08:04.214', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:08:58.635 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:08:58.647 [DEBUG] [Thread-197039] [transport.py] [_log()] starting thread (client mode): 0xd0700430
2025-11-24T21:08:58.647 [DEBUG] [Thread-197039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:08:58.661 [DEBUG] [Thread-197039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:08:58.661 [INFO] [Thread-197039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] client lang: <none>
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] server lang: <none>
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] kex follows: False
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:08:58.669 [DEBUG] [Thread-197039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:08:58.670 [DEBUG] [Thread-197039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:08:58.670 [DEBUG] [Thread-197039] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:08:58.670 [DEBUG] [Thread-197039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:08:58.670 [DEBUG] [Thread-197039] [transport.py] [_log()] Compression: none
2025-11-24T21:08:58.670 [DEBUG] [Thread-197039] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:08:58.727 [DEBUG] [Thread-197039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:08:58.728 [DEBUG] [Thread-197039] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:08:58.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:08:58.728 [DEBUG] [Thread-197039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:08:58.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:08:58.785 [DEBUG] [Thread-197039] [transport.py] [_log()] userauth is OK
2025-11-24T21:08:58.785 [DEBUG] [Thread-197039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:08:58.785 [DEBUG] [Thread-197039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:08:58.785 [DEBUG] [Thread-197039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:08:58.785 [DEBUG] [Thread-197039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:08:58.802 [INFO] [Thread-197039] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:08:58.802 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:08:58.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:08:59.640 [DEBUG] [Thread-197039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:08:59.640 [DEBUG] [Thread-197039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:08:59.688 [DEBUG] [Thread-197039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:08:59.688 [DEBUG] [Thread-197039] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:08:59.698 [DEBUG] [Thread-197039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:08:59.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:08:59.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-11-24T21:08:59.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-11-24T21:08:59.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:08:59.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:08:59.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:08:59.733 [DEBUG] [Thread-197039] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:09:02.705 [DEBUG] [Thread-197041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:09:13.900 [DEBUG] [Thread-197042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:09:17.885 [DEBUG] [Thread-197043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:09:26.724 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:09:26.738 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:09:29.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:09:29.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:09:29.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-11-24T21:09:31.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 8, 53), 15.99, 33.78, 0.0, 31.44, 16.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:09:31.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:08:53
2025-11-24T21:09:31.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:09:31.767 [DEBUG] [Thread-197044] [transport.py] [_log()] starting thread (client mode): 0xc9b837c0
2025-11-24T21:09:31.768 [DEBUG] [Thread-197044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:09:31.775 [DEBUG] [Thread-197044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:09:31.775 [INFO] [Thread-197044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:09:31.780 [DEBUG] [Thread-197044] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] client lang: <none>
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] server lang: <none>
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] kex follows: False
2025-11-24T21:09:31.781 [DEBUG] [Thread-197044] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:09:31.782 [DEBUG] [Thread-197044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:09:31.782 [DEBUG] [Thread-197044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:09:31.782 [DEBUG] [Thread-197044] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:09:31.782 [DEBUG] [Thread-197044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:09:31.782 [DEBUG] [Thread-197044] [transport.py] [_log()] Compression: none
2025-11-24T21:09:31.782 [DEBUG] [Thread-197044] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:09:31.816 [DEBUG] [Thread-197044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:09:31.821 [DEBUG] [Thread-197044] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:09:31.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:09:31.825 [DEBUG] [Thread-197044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:09:31.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:09:31.828 [DEBUG] [Thread-197044] [transport.py] [_log()] userauth is OK
2025-11-24T21:09:31.828 [DEBUG] [Thread-197044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:09:31.828 [DEBUG] [Thread-197044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:09:31.828 [DEBUG] [Thread-197044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:09:31.828 [DEBUG] [Thread-197044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:09:31.848 [INFO] [Thread-197044] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:09:31.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:09:32.502 [DEBUG] [Thread-197044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:09:32.502 [DEBUG] [Thread-197044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:09:32.503 [DEBUG] [Thread-197044] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:09:32.544 [DEBUG] [Thread-197044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:09:32.544 [DEBUG] [Thread-197044] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:09:32.546 [DEBUG] [Thread-197044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:09:32.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:09:32.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:09:32.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:09:32.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:09:32.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:09:32.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:09:32.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:09:32.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:09:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:09:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.797618 -999.00  +16.00  20.38     39   +2.10 1 1 1 1 1     0    0 13.05 -50.78 ZNESW 19.9 20.4 166.8 29.9 16.3 -26.0 16.2 -25.5 15.9 -24.2 16.3 -25.3
2025-11-24T21:09:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:09:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:09:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.797618
2025-11-24T21:09:32.580 [DEBUG] [Thread-197044] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:09:32.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:09:32.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:09:32.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:09:32.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:09:32.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:09:32.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:08:53', tmtdew=15.99, humidity=33.78, cloud=0.0, wind=31.44, temperature=16.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:09:29', seeing=0.54, atlas_timestamp='2025-11-24T19:08:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:09:32.684 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:09:32.696 [DEBUG] [Thread-197047] [transport.py] [_log()] starting thread (client mode): 0xc9b82590
2025-11-24T21:09:32.697 [DEBUG] [Thread-197047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:09:32.712 [DEBUG] [Thread-197047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:09:32.712 [INFO] [Thread-197047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] client lang: <none>
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] server lang: <none>
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] kex follows: False
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] Compression: none
2025-11-24T21:09:32.720 [DEBUG] [Thread-197047] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:09:32.776 [DEBUG] [Thread-197047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:09:32.776 [DEBUG] [Thread-197047] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:09:32.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:09:32.777 [DEBUG] [Thread-197047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:09:32.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:09:32.833 [DEBUG] [Thread-197047] [transport.py] [_log()] userauth is OK
2025-11-24T21:09:32.833 [DEBUG] [Thread-197047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:09:32.833 [DEBUG] [Thread-197047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:09:32.833 [DEBUG] [Thread-197047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:09:32.833 [DEBUG] [Thread-197047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:09:32.847 [INFO] [Thread-197047] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:09:32.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:09:32.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:09:32.955 [DEBUG] [Thread-197049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:09:33.731 [DEBUG] [Thread-197047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:09:33.732 [DEBUG] [Thread-197047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:09:33.779 [DEBUG] [Thread-197047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:09:33.779 [DEBUG] [Thread-197047] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:09:33.787 [DEBUG] [Thread-197047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:09:33.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:09:33.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-11-24T21:09:33.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-11-24T21:09:33.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:09:33.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:09:33.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:09:33.821 [DEBUG] [Thread-197047] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:09:48.142 [DEBUG] [Thread-197050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:10:03.428 [DEBUG] [Thread-197051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:10:03.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:10:03.852 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:10:03.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-11-24T21:10:05.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 9, 28), 16.0, 33.75, 0.0, 32.69, 16.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:10:05.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:09:28
2025-11-24T21:10:05.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:10:05.787 [DEBUG] [Thread-197052] [transport.py] [_log()] starting thread (client mode): 0xc9b839a0
2025-11-24T21:10:05.788 [DEBUG] [Thread-197052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:10:05.789 [DEBUG] [Thread-197052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:10:05.789 [INFO] [Thread-197052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] client lang: <none>
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] server lang: <none>
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] kex follows: False
2025-11-24T21:10:05.794 [DEBUG] [Thread-197052] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:10:05.795 [DEBUG] [Thread-197052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:10:05.795 [DEBUG] [Thread-197052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:10:05.795 [DEBUG] [Thread-197052] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:10:05.795 [DEBUG] [Thread-197052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:10:05.795 [DEBUG] [Thread-197052] [transport.py] [_log()] Compression: none
2025-11-24T21:10:05.795 [DEBUG] [Thread-197052] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:10:05.826 [DEBUG] [Thread-197052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:10:05.830 [DEBUG] [Thread-197052] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:10:05.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:10:05.833 [DEBUG] [Thread-197052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:10:05.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:10:05.835 [DEBUG] [Thread-197052] [transport.py] [_log()] userauth is OK
2025-11-24T21:10:05.835 [DEBUG] [Thread-197052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:10:05.835 [DEBUG] [Thread-197052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:10:05.835 [DEBUG] [Thread-197052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:10:05.835 [DEBUG] [Thread-197052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:10:05.853 [INFO] [Thread-197052] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:10:05.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:10:06.893 [DEBUG] [Thread-197052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:10:06.893 [DEBUG] [Thread-197052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:10:06.894 [DEBUG] [Thread-197052] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:10:06.934 [DEBUG] [Thread-197052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:10:06.934 [DEBUG] [Thread-197052] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:10:06.936 [DEBUG] [Thread-197052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:10:06.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:10:06.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:10:06.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:10:06.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:10:06.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:10:06.959 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:10:06.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:10:06.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:10:06.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:10:06.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.797965 -999.00  +16.00  23.51     39   +2.20 1 1 1 1 1     0    0 12.94 -53.49 ZNESW 23.1 23.5 170.2 31.9 16.3 -25.8 16.2 -25.5 15.9 -24.1 16.2 -25.2
2025-11-24T21:10:06.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:10:06.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:10:06.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.797965
2025-11-24T21:10:06.966 [DEBUG] [Thread-197052] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:10:06.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:10:06.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:10:06.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:10:06.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:10:06.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:10:06.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:09:28', tmtdew=16.0, humidity=33.75, cloud=0.0, wind=32.69, temperature=16.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:10:03', seeing=0.47, atlas_timestamp='2025-11-24T19:09:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:10:07.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:10:07.072 [DEBUG] [Thread-197055] [transport.py] [_log()] starting thread (client mode): 0xd0785600
2025-11-24T21:10:07.072 [DEBUG] [Thread-197055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:10:07.087 [DEBUG] [Thread-197055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:10:07.087 [INFO] [Thread-197055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] client lang: <none>
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] server lang: <none>
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] kex follows: False
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:10:07.098 [DEBUG] [Thread-197055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:10:07.099 [DEBUG] [Thread-197055] [transport.py] [_log()] Compression: none
2025-11-24T21:10:07.099 [DEBUG] [Thread-197055] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:10:07.156 [DEBUG] [Thread-197055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:10:07.156 [DEBUG] [Thread-197055] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:10:07.156 [DEBUG] [Thread-197055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:10:07.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:10:07.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:10:07.213 [DEBUG] [Thread-197055] [transport.py] [_log()] userauth is OK
2025-11-24T21:10:07.213 [DEBUG] [Thread-197055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:10:07.213 [DEBUG] [Thread-197055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:10:07.213 [DEBUG] [Thread-197055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:10:07.213 [DEBUG] [Thread-197055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:10:07.227 [INFO] [Thread-197055] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:10:07.227 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:10:07.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:10:08.101 [DEBUG] [Thread-197055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:10:08.101 [DEBUG] [Thread-197055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:10:08.149 [DEBUG] [Thread-197055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:10:08.149 [DEBUG] [Thread-197055] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:10:08.157 [DEBUG] [Thread-197055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:10:08.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:10:08.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-11-24T21:10:08.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-11-24T21:10:08.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:10:08.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:10:08.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:10:08.190 [DEBUG] [Thread-197055] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:10:14.279 [DEBUG] [Thread-197057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:10:18.551 [DEBUG] [Thread-197058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:10:26.956 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:10:26.968 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:10:33.759 [DEBUG] [Thread-197059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:10:38.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:10:38.189 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:10:38.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-11-24T21:10:39.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 10, 2), 15.99, 33.77, 0.0, 31.18, 16.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:10:39.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:10:02
2025-11-24T21:10:39.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:10:39.939 [DEBUG] [Thread-197060] [transport.py] [_log()] starting thread (client mode): 0xd07382b0
2025-11-24T21:10:39.940 [DEBUG] [Thread-197060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:10:39.941 [DEBUG] [Thread-197060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:10:39.941 [INFO] [Thread-197060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:10:39.948 [DEBUG] [Thread-197060] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:10:39.948 [DEBUG] [Thread-197060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:10:39.948 [DEBUG] [Thread-197060] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:10:39.948 [DEBUG] [Thread-197060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:10:39.948 [DEBUG] [Thread-197060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:10:39.949 [DEBUG] [Thread-197060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:10:39.949 [DEBUG] [Thread-197060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:10:39.949 [DEBUG] [Thread-197060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:10:39.949 [DEBUG] [Thread-197060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:10:39.949 [DEBUG] [Thread-197060] [transport.py] [_log()] client lang: <none>
2025-11-24T21:10:39.949 [DEBUG] [Thread-197060] [transport.py] [_log()] server lang: <none>
2025-11-24T21:10:39.949 [DEBUG] [Thread-197060] [transport.py] [_log()] kex follows: False
2025-11-24T21:10:39.949 [DEBUG] [Thread-197060] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:10:39.950 [DEBUG] [Thread-197060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:10:39.950 [DEBUG] [Thread-197060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:10:39.950 [DEBUG] [Thread-197060] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:10:39.950 [DEBUG] [Thread-197060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:10:39.950 [DEBUG] [Thread-197060] [transport.py] [_log()] Compression: none
2025-11-24T21:10:39.950 [DEBUG] [Thread-197060] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:10:39.991 [DEBUG] [Thread-197060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:10:40.000 [DEBUG] [Thread-197060] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:10:40.002 [DEBUG] [Thread-197060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:10:40.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:10:40.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:10:40.007 [DEBUG] [Thread-197060] [transport.py] [_log()] userauth is OK
2025-11-24T21:10:40.007 [DEBUG] [Thread-197060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:10:40.007 [DEBUG] [Thread-197060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:10:40.007 [DEBUG] [Thread-197060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:10:40.007 [DEBUG] [Thread-197060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:10:40.027 [INFO] [Thread-197060] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:10:40.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:10:40.655 [DEBUG] [Thread-197060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:10:40.656 [DEBUG] [Thread-197060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:10:40.657 [DEBUG] [Thread-197060] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:10:40.696 [DEBUG] [Thread-197060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:10:40.696 [DEBUG] [Thread-197060] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:10:40.699 [DEBUG] [Thread-197060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:10:40.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:10:40.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:10:40.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:10:40.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:10:40.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:10:40.722 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:10:40.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:10:40.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:10:40.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:10:40.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.798660 -999.00  +16.10  25.28     39   +2.20 1 1 1 1 1     0    0 12.68 -57.92 ZNESW 24.6 25.3 163.4 36.6 16.3 -25.9 16.2 -25.4 15.9 -24.3 16.3 -25.1
2025-11-24T21:10:40.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:10:40.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:10:40.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.798660
2025-11-24T21:10:40.730 [DEBUG] [Thread-197060] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:10:40.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:10:40.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:10:40.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:10:40.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:10:40.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:10:40.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:10:02', tmtdew=15.99, humidity=33.77, cloud=0.0, wind=31.18, temperature=16.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:10:37', seeing=0.55, atlas_timestamp='2025-11-24T19:10:04.224', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:10:40.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:10:40.841 [DEBUG] [Thread-197063] [transport.py] [_log()] starting thread (client mode): 0xd0738a60
2025-11-24T21:10:40.841 [DEBUG] [Thread-197063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:10:40.856 [DEBUG] [Thread-197063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:10:40.856 [INFO] [Thread-197063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] client lang: <none>
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] server lang: <none>
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] kex follows: False
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] Compression: none
2025-11-24T21:10:40.864 [DEBUG] [Thread-197063] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:10:40.921 [DEBUG] [Thread-197063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:10:40.921 [DEBUG] [Thread-197063] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:10:40.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:10:40.921 [DEBUG] [Thread-197063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:10:40.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:10:40.977 [DEBUG] [Thread-197063] [transport.py] [_log()] userauth is OK
2025-11-24T21:10:40.978 [DEBUG] [Thread-197063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:10:40.978 [DEBUG] [Thread-197063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:10:40.978 [DEBUG] [Thread-197063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:10:40.978 [DEBUG] [Thread-197063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:10:40.993 [INFO] [Thread-197063] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:10:40.993 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:10:40.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:10:41.830 [DEBUG] [Thread-197063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:10:41.830 [DEBUG] [Thread-197063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:10:41.878 [DEBUG] [Thread-197063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:10:41.878 [DEBUG] [Thread-197063] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:10:41.886 [DEBUG] [Thread-197063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:10:41.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:10:41.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-11-24T21:10:41.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-11-24T21:10:41.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:10:41.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:10:41.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:10:41.920 [DEBUG] [Thread-197063] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:10:48.941 [DEBUG] [Thread-197065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:11:04.188 [DEBUG] [Thread-197066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:11:11.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:11:11.977 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:11:12.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-11-24T21:11:13.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 10, 36), 15.9, 33.73, 0.0, 33.93, 16.07, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:11:13.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:10:36
2025-11-24T21:11:13.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:11:13.901 [DEBUG] [Thread-197067] [transport.py] [_log()] starting thread (client mode): 0xd3137f10
2025-11-24T21:11:13.903 [DEBUG] [Thread-197067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:11:13.904 [DEBUG] [Thread-197067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:11:13.904 [INFO] [Thread-197067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:11:13.911 [DEBUG] [Thread-197067] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:11:13.911 [DEBUG] [Thread-197067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:11:13.911 [DEBUG] [Thread-197067] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:11:13.911 [DEBUG] [Thread-197067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:11:13.911 [DEBUG] [Thread-197067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:11:13.911 [DEBUG] [Thread-197067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:11:13.912 [DEBUG] [Thread-197067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:11:13.912 [DEBUG] [Thread-197067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:11:13.912 [DEBUG] [Thread-197067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:11:13.912 [DEBUG] [Thread-197067] [transport.py] [_log()] client lang: <none>
2025-11-24T21:11:13.912 [DEBUG] [Thread-197067] [transport.py] [_log()] server lang: <none>
2025-11-24T21:11:13.912 [DEBUG] [Thread-197067] [transport.py] [_log()] kex follows: False
2025-11-24T21:11:13.912 [DEBUG] [Thread-197067] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:11:13.913 [DEBUG] [Thread-197067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:11:13.913 [DEBUG] [Thread-197067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:11:13.913 [DEBUG] [Thread-197067] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:11:13.913 [DEBUG] [Thread-197067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:11:13.913 [DEBUG] [Thread-197067] [transport.py] [_log()] Compression: none
2025-11-24T21:11:13.913 [DEBUG] [Thread-197067] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:11:13.956 [DEBUG] [Thread-197067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:11:13.962 [DEBUG] [Thread-197067] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:11:13.964 [DEBUG] [Thread-197067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:11:13.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:11:13.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:11:13.969 [DEBUG] [Thread-197067] [transport.py] [_log()] userauth is OK
2025-11-24T21:11:13.969 [DEBUG] [Thread-197067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:11:13.970 [DEBUG] [Thread-197067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:11:13.970 [DEBUG] [Thread-197067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:11:13.970 [DEBUG] [Thread-197067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:11:14.000 [INFO] [Thread-197067] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:11:14.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:11:14.698 [DEBUG] [Thread-197067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:11:14.698 [DEBUG] [Thread-197067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:11:14.700 [DEBUG] [Thread-197067] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:11:14.739 [DEBUG] [Thread-197067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:11:14.739 [DEBUG] [Thread-197067] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:11:14.741 [DEBUG] [Thread-197067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:11:14.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:11:14.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:11:14.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:11:14.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:11:14.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:11:14.767 [DEBUG] [Thread-197070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:11:14.768 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:11:14.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:11:14.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:11:14.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:11:14.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.799007 -999.00  +16.00  26.12     39   +2.10 1 1 1 1 1     0    0 12.46 -55.71 ZNESW 24.8 26.1 172.6 36.8 16.3 -25.9 16.2 -25.3 15.9 -24.3 16.2 -25.2
2025-11-24T21:11:14.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:11:14.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:11:14.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.799007
2025-11-24T21:11:14.782 [DEBUG] [Thread-197067] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:11:14.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:11:14.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:11:14.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:11:14.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:11:14.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:11:14.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:10:36', tmtdew=15.9, humidity=33.73, cloud=0.0, wind=33.93, temperature=16.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:11:11', seeing=0.52, atlas_timestamp='2025-11-24T19:10:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:11:14.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:11:14.884 [DEBUG] [Thread-197071] [transport.py] [_log()] starting thread (client mode): 0xc9b807f0
2025-11-24T21:11:14.884 [DEBUG] [Thread-197071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:11:14.898 [DEBUG] [Thread-197071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:11:14.898 [INFO] [Thread-197071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:11:14.905 [DEBUG] [Thread-197071] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] client lang: <none>
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] server lang: <none>
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] kex follows: False
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] Compression: none
2025-11-24T21:11:14.906 [DEBUG] [Thread-197071] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:11:14.964 [DEBUG] [Thread-197071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:11:14.964 [DEBUG] [Thread-197071] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:11:14.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:11:14.964 [DEBUG] [Thread-197071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:11:14.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:11:15.021 [DEBUG] [Thread-197071] [transport.py] [_log()] userauth is OK
2025-11-24T21:11:15.021 [DEBUG] [Thread-197071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:11:15.021 [DEBUG] [Thread-197071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:11:15.021 [DEBUG] [Thread-197071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:11:15.021 [DEBUG] [Thread-197071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:11:15.035 [INFO] [Thread-197071] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:11:15.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:11:15.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:11:15.909 [DEBUG] [Thread-197071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:11:15.910 [DEBUG] [Thread-197071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:11:15.957 [DEBUG] [Thread-197071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:11:15.957 [DEBUG] [Thread-197071] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:11:15.965 [DEBUG] [Thread-197071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:11:15.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:11:15.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:11:15.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-11-24T21:11:15.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:11:15.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:11:15.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:11:16.001 [DEBUG] [Thread-197071] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:11:19.302 [DEBUG] [Thread-197073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:11:27.178 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:11:27.185 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:11:34.575 [DEBUG] [Thread-197074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:11:46.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:11:46.034 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:11:46.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-11-24T21:11:47.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 11, 10), 15.9, 33.73, 0.0, 31.42, 16.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:11:47.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:11:10
2025-11-24T21:11:47.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:11:47.923 [DEBUG] [Thread-197075] [transport.py] [_log()] starting thread (client mode): 0xd0784eb0
2025-11-24T21:11:47.924 [DEBUG] [Thread-197075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:11:47.925 [DEBUG] [Thread-197075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:11:47.925 [INFO] [Thread-197075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] client lang: <none>
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] server lang: <none>
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] kex follows: False
2025-11-24T21:11:47.932 [DEBUG] [Thread-197075] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:11:47.933 [DEBUG] [Thread-197075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:11:47.933 [DEBUG] [Thread-197075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:11:47.933 [DEBUG] [Thread-197075] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:11:47.934 [DEBUG] [Thread-197075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:11:47.934 [DEBUG] [Thread-197075] [transport.py] [_log()] Compression: none
2025-11-24T21:11:47.934 [DEBUG] [Thread-197075] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:11:47.965 [DEBUG] [Thread-197075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:11:47.970 [DEBUG] [Thread-197075] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:11:47.971 [DEBUG] [Thread-197075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:11:47.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:11:47.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:11:47.978 [DEBUG] [Thread-197075] [transport.py] [_log()] userauth is OK
2025-11-24T21:11:47.978 [DEBUG] [Thread-197075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:11:47.978 [DEBUG] [Thread-197075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:11:47.978 [DEBUG] [Thread-197075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:11:47.978 [DEBUG] [Thread-197075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:11:47.999 [INFO] [Thread-197075] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:11:48.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:11:48.650 [DEBUG] [Thread-197075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:11:48.651 [DEBUG] [Thread-197075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:11:48.652 [DEBUG] [Thread-197075] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:11:48.691 [DEBUG] [Thread-197075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:11:48.691 [DEBUG] [Thread-197075] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:11:48.694 [DEBUG] [Thread-197075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:11:48.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:11:48.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:11:48.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:11:48.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:11:48.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:11:48.714 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:11:48.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:11:48.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:11:48.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:11:48.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.799354 -999.00  +16.00  27.06     38   +2.00 1 1 1 1 1     0    0 12.58 -59.70 ZNESW 24.0 27.1 177.8 33.5 16.3 -25.8 16.2 -25.2 15.9 -24.2 16.2 -25.1
2025-11-24T21:11:48.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:11:48.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:11:48.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.799354
2025-11-24T21:11:48.721 [DEBUG] [Thread-197075] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:11:48.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:11:48.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:11:48.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:11:48.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:11:48.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:11:48.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:11:10', tmtdew=15.9, humidity=33.73, cloud=0.0, wind=31.42, temperature=16.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:11:45', seeing=0.54, atlas_timestamp='2025-11-24T19:11:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:11:48.819 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:11:48.830 [DEBUG] [Thread-197078] [transport.py] [_log()] starting thread (client mode): 0xd317fa30
2025-11-24T21:11:48.830 [DEBUG] [Thread-197078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:11:48.845 [DEBUG] [Thread-197078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:11:48.845 [INFO] [Thread-197078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] client lang: <none>
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] server lang: <none>
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] kex follows: False
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] Compression: none
2025-11-24T21:11:48.853 [DEBUG] [Thread-197078] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:11:48.908 [DEBUG] [Thread-197078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:11:48.908 [DEBUG] [Thread-197078] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:11:48.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:11:48.909 [DEBUG] [Thread-197078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:11:48.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:11:48.970 [DEBUG] [Thread-197078] [transport.py] [_log()] userauth is OK
2025-11-24T21:11:48.970 [DEBUG] [Thread-197078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:11:48.970 [DEBUG] [Thread-197078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:11:48.970 [DEBUG] [Thread-197078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:11:48.970 [DEBUG] [Thread-197078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:11:48.984 [INFO] [Thread-197078] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:11:48.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:11:48.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:11:49.689 [DEBUG] [Thread-197080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:11:49.863 [DEBUG] [Thread-197078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:11:49.863 [DEBUG] [Thread-197078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:11:49.910 [DEBUG] [Thread-197078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:11:49.910 [DEBUG] [Thread-197078] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:11:49.919 [DEBUG] [Thread-197078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:11:49.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:11:49.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-11-24T21:11:49.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-11-24T21:11:49.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:11:49.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:11:49.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:11:49.956 [DEBUG] [Thread-197078] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:12:04.943 [DEBUG] [Thread-197081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:12:15.217 [DEBUG] [Thread-197082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:12:19.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:12:19.986 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:12:20.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:12:20.126 [DEBUG] [Thread-197083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:12:21.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 11, 44), 16.01, 33.73, 0.0, 32.71, 16.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:12:21.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:11:44
2025-11-24T21:12:21.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:12:22.032 [DEBUG] [Thread-197084] [transport.py] [_log()] starting thread (client mode): 0xd0787eb0
2025-11-24T21:12:22.034 [DEBUG] [Thread-197084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:12:22.038 [DEBUG] [Thread-197084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:12:22.038 [INFO] [Thread-197084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] client lang: <none>
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] server lang: <none>
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] kex follows: False
2025-11-24T21:12:22.046 [DEBUG] [Thread-197084] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:12:22.047 [DEBUG] [Thread-197084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:12:22.047 [DEBUG] [Thread-197084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:12:22.048 [DEBUG] [Thread-197084] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:12:22.048 [DEBUG] [Thread-197084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:12:22.048 [DEBUG] [Thread-197084] [transport.py] [_log()] Compression: none
2025-11-24T21:12:22.048 [DEBUG] [Thread-197084] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:12:22.095 [DEBUG] [Thread-197084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:12:22.102 [DEBUG] [Thread-197084] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:12:22.107 [DEBUG] [Thread-197084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:12:22.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:12:22.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:12:22.116 [DEBUG] [Thread-197084] [transport.py] [_log()] userauth is OK
2025-11-24T21:12:22.118 [DEBUG] [Thread-197084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:12:22.119 [DEBUG] [Thread-197084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:12:22.119 [DEBUG] [Thread-197084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:12:22.119 [DEBUG] [Thread-197084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:12:22.145 [INFO] [Thread-197084] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:12:22.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:12:22.801 [DEBUG] [Thread-197084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:12:22.801 [DEBUG] [Thread-197084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:12:22.802 [DEBUG] [Thread-197084] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:12:22.842 [DEBUG] [Thread-197084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:12:22.842 [DEBUG] [Thread-197084] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:12:22.844 [DEBUG] [Thread-197084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:12:22.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:12:22.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:12:22.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:12:22.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:12:22.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:12:22.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:12:22.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:12:22.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:12:22.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:12:22.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.799701 -999.00  +16.00  21.76     39   +2.10 1 1 1 1 1     0    0 12.82 -56.47 ZNESW 19.4 21.8 171.6 31.6 16.3 -25.9 16.2 -25.4 15.9 -24.2 16.2 -25.4
2025-11-24T21:12:22.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:12:22.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:12:22.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.799701
2025-11-24T21:12:22.894 [DEBUG] [Thread-197084] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:12:22.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:12:22.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:12:22.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:12:22.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:12:22.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:12:22.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:11:44', tmtdew=16.01, humidity=33.73, cloud=0.0, wind=32.71, temperature=16.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:12:19', seeing=0.57, atlas_timestamp='2025-11-24T19:11:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:12:22.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:12:23.000 [DEBUG] [Thread-197087] [transport.py] [_log()] starting thread (client mode): 0xd3134910
2025-11-24T21:12:23.000 [DEBUG] [Thread-197087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:12:23.015 [DEBUG] [Thread-197087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:12:23.015 [INFO] [Thread-197087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:12:23.022 [DEBUG] [Thread-197087] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:12:23.022 [DEBUG] [Thread-197087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:12:23.022 [DEBUG] [Thread-197087] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:12:23.022 [DEBUG] [Thread-197087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] client lang: <none>
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] server lang: <none>
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] kex follows: False
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] Compression: none
2025-11-24T21:12:23.023 [DEBUG] [Thread-197087] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:12:23.081 [DEBUG] [Thread-197087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:12:23.081 [DEBUG] [Thread-197087] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:12:23.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:12:23.081 [DEBUG] [Thread-197087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:12:23.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:12:23.137 [DEBUG] [Thread-197087] [transport.py] [_log()] userauth is OK
2025-11-24T21:12:23.137 [DEBUG] [Thread-197087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:12:23.137 [DEBUG] [Thread-197087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:12:23.137 [DEBUG] [Thread-197087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:12:23.137 [DEBUG] [Thread-197087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:12:23.151 [INFO] [Thread-197087] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:12:23.151 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:12:23.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:12:24.037 [DEBUG] [Thread-197087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:12:24.038 [DEBUG] [Thread-197087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:12:24.084 [DEBUG] [Thread-197087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:12:24.084 [DEBUG] [Thread-197087] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:12:24.093 [DEBUG] [Thread-197087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:12:24.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:12:24.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-11-24T21:12:24.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-11-24T21:12:24.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:12:24.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:12:24.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:12:24.129 [DEBUG] [Thread-197087] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:12:27.397 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:12:27.404 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:12:35.277 [DEBUG] [Thread-197089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:12:50.568 [DEBUG] [Thread-197090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:12:54.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:12:54.158 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:12:54.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-11-24T21:12:55.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 12, 18), 16.02, 33.67, 0.0, 32.43, 16.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:12:55.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:12:18
2025-11-24T21:12:56.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:12:56.254 [DEBUG] [Thread-197091] [transport.py] [_log()] starting thread (client mode): 0xd318ba00
2025-11-24T21:12:56.255 [DEBUG] [Thread-197091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:12:56.255 [DEBUG] [Thread-197091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:12:56.256 [INFO] [Thread-197091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:12:56.260 [DEBUG] [Thread-197091] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] client lang: <none>
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] server lang: <none>
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] kex follows: False
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:12:56.261 [DEBUG] [Thread-197091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:12:56.262 [DEBUG] [Thread-197091] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:12:56.262 [DEBUG] [Thread-197091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:12:56.262 [DEBUG] [Thread-197091] [transport.py] [_log()] Compression: none
2025-11-24T21:12:56.262 [DEBUG] [Thread-197091] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:12:56.331 [DEBUG] [Thread-197091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:12:56.335 [DEBUG] [Thread-197091] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:12:56.337 [DEBUG] [Thread-197091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:12:56.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:12:56.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:12:56.341 [DEBUG] [Thread-197091] [transport.py] [_log()] userauth is OK
2025-11-24T21:12:56.341 [DEBUG] [Thread-197091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:12:56.342 [DEBUG] [Thread-197091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:12:56.342 [DEBUG] [Thread-197091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:12:56.342 [DEBUG] [Thread-197091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:12:56.360 [INFO] [Thread-197091] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:12:56.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:12:57.029 [DEBUG] [Thread-197091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:12:57.029 [DEBUG] [Thread-197091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:12:57.030 [DEBUG] [Thread-197091] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:12:57.070 [DEBUG] [Thread-197091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:12:57.070 [DEBUG] [Thread-197091] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:12:57.073 [DEBUG] [Thread-197091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:12:57.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:12:57.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:12:57.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:12:57.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:12:57.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:12:57.093 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:12:57.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:12:57.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:12:57.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:12:57.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.800049 -999.00  +16.00  22.03     39   +2.10 1 1 1 1 1     0    0 12.28 -57.04 ZNESW 26.0 22.0 174.7 25.5 16.2 -25.8 16.1 -25.4 15.9 -24.3 16.2 -25.2
2025-11-24T21:12:57.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:12:57.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:12:57.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.800049
2025-11-24T21:12:57.100 [DEBUG] [Thread-197091] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:12:57.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:12:57.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:12:57.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:12:57.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:12:57.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:12:57.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:12:18', tmtdew=16.02, humidity=33.67, cloud=0.0, wind=32.43, temperature=16.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:12:53', seeing=0.65, atlas_timestamp='2025-11-24T19:12:04.234', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03375000000000128, 0.030250000000000554, -0.02674999999999983, -0.040500000000001535, -0.010999999999999233, 0.05575000000000152, 0.037499999999999645, 0.006250000000001421, 0.043499999999998096, -0.0024999999999995026, 0.007749999999999702, 0.0030000000000001137, 0.07399999999999984, 0.04624999999999879, 0.0039999999999995595, -0.023000000000001464, 0.011250000000000426, 0.009999999999999787, 0.06400000000000006, -0.02275000000000027, 0.027999999999998693, 0.02624999999999922, -0.008250000000000313, -0.0022500000000000853, -0.004000000000001336, 0.0365000000000002, 0.05075000000000074, 0.0600000000000005, 0.08200000000000074, -0.011499999999998067, 0.013000000000001677, -0.02499999999999858, 0.007749999999999702], zp_timestamp='2025-11-24T19:06:00')
2025-11-24T21:12:57.199 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:12:57.210 [DEBUG] [Thread-197094] [transport.py] [_log()] starting thread (client mode): 0xd07cf370
2025-11-24T21:12:57.211 [DEBUG] [Thread-197094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:12:57.225 [DEBUG] [Thread-197094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:12:57.225 [INFO] [Thread-197094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] client lang: <none>
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] server lang: <none>
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] kex follows: False
2025-11-24T21:12:57.232 [DEBUG] [Thread-197094] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:12:57.233 [DEBUG] [Thread-197094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:12:57.233 [DEBUG] [Thread-197094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:12:57.233 [DEBUG] [Thread-197094] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:12:57.233 [DEBUG] [Thread-197094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:12:57.233 [DEBUG] [Thread-197094] [transport.py] [_log()] Compression: none
2025-11-24T21:12:57.233 [DEBUG] [Thread-197094] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:12:57.288 [DEBUG] [Thread-197094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:12:57.288 [DEBUG] [Thread-197094] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:12:57.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:12:57.288 [DEBUG] [Thread-197094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:12:57.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:12:57.345 [DEBUG] [Thread-197094] [transport.py] [_log()] userauth is OK
2025-11-24T21:12:57.345 [DEBUG] [Thread-197094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:12:57.345 [DEBUG] [Thread-197094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:12:57.345 [DEBUG] [Thread-197094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:12:57.345 [DEBUG] [Thread-197094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:12:57.364 [INFO] [Thread-197094] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:12:57.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:12:57.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:12:58.179 [DEBUG] [Thread-197094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:12:58.179 [DEBUG] [Thread-197094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:12:58.227 [DEBUG] [Thread-197094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:12:58.227 [DEBUG] [Thread-197094] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:12:58.236 [DEBUG] [Thread-197094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:12:58.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:12:58.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-11-24T21:12:58.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-11-24T21:12:58.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:12:58.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:12:58.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:12:58.277 [DEBUG] [Thread-197094] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:13:05.772 [DEBUG] [Thread-197096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:13:15.690 [DEBUG] [Thread-197097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:13:20.996 [DEBUG] [Thread-197098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:13:27.609 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:13:27.613 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:13:28.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:13:28.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:13:28.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:13:30.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 12, 53), 16.0, 33.73, 0.0, 36.17, 16.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:13:30.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:12:53
2025-11-24T21:13:30.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:13:31.368 [DEBUG] [Thread-197099] [transport.py] [_log()] starting thread (client mode): 0xc9b828f0
2025-11-24T21:13:31.371 [DEBUG] [Thread-197099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:13:31.373 [DEBUG] [Thread-197099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:13:31.375 [INFO] [Thread-197099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:13:31.405 [DEBUG] [Thread-197099] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] client lang: <none>
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] server lang: <none>
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] kex follows: False
2025-11-24T21:13:31.408 [DEBUG] [Thread-197099] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:13:31.413 [DEBUG] [Thread-197099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:13:31.413 [DEBUG] [Thread-197099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:13:31.414 [DEBUG] [Thread-197099] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:13:31.414 [DEBUG] [Thread-197099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:13:31.414 [DEBUG] [Thread-197099] [transport.py] [_log()] Compression: none
2025-11-24T21:13:31.414 [DEBUG] [Thread-197099] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:13:31.553 [DEBUG] [Thread-197099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:13:31.602 [DEBUG] [Thread-197099] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:13:31.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:13:31.618 [DEBUG] [Thread-197099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:13:31.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:13:31.630 [DEBUG] [Thread-197099] [transport.py] [_log()] userauth is OK
2025-11-24T21:13:31.631 [DEBUG] [Thread-197099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:13:31.633 [DEBUG] [Thread-197099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:13:31.633 [DEBUG] [Thread-197099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:13:31.633 [DEBUG] [Thread-197099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:13:31.678 [INFO] [Thread-197099] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:13:31.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:13:32.318 [DEBUG] [Thread-197099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:13:32.320 [DEBUG] [Thread-197099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:13:32.328 [DEBUG] [Thread-197099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:13:32.359 [DEBUG] [Thread-197099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:13:32.359 [DEBUG] [Thread-197099] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:13:32.363 [DEBUG] [Thread-197099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:13:32.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:13:32.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:13:32.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:13:32.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:13:32.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:13:32.407 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:13:32.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:13:32.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:13:32.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:13:32.410 [DEBUG] [Thread-197099] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:13:32.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.800397 -999.00  +16.00  23.07     39   +2.10 1 1 1 1 1     0    0 12.61 -56.30 ZNESW 23.6 23.1 170.4 29.9 16.3 -26.0 16.1 -25.4 15.9 -24.2 16.2 -25.2
2025-11-24T21:13:32.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:13:32.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:13:32.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.800397
2025-11-24T21:13:32.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:13:32.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:13:32.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:13:32.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:13:32.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:13:32.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:12:53', tmtdew=16.0, humidity=33.73, cloud=0.0, wind=36.17, temperature=16.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:13:27', seeing=0.63, atlas_timestamp='2025-11-24T19:12:34.301', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.05325000000000024, 0.02325000000000088, -0.010500000000000398, 0.04299999999999926, 0.1152500000000014, 0.057000000000000384, 0.016250000000001208, 0.08349999999999902, 0.05450000000000088, 0.06274999999999942, 0.034000000000000696, 0.11599999999999966, 0.11524999999999963, 0.05799999999999983, 0.030999999999998806, 0.056750000000000966, 0.08949999999999925, 0.09299999999999997, 0.04124999999999979, 0.1479999999999997, 0.1197499999999998, 0.07725000000000115, 0.06574999999999953, 0.04049999999999976, 0.07249999999999979, 0.11175000000000068, 0.11650000000000027, 0.0990000000000002, 0.051000000000000156, 0.04300000000000104, 0.038000000000000256, 0.040749999999999176], zp_timestamp='2025-11-24T19:11:00')
2025-11-24T21:13:32.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:13:32.642 [DEBUG] [Thread-197102] [transport.py] [_log()] starting thread (client mode): 0xc9b81960
2025-11-24T21:13:32.642 [DEBUG] [Thread-197102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:13:32.656 [DEBUG] [Thread-197102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:13:32.656 [INFO] [Thread-197102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] client lang: <none>
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] server lang: <none>
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] kex follows: False
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] Compression: none
2025-11-24T21:13:32.665 [DEBUG] [Thread-197102] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:13:32.722 [DEBUG] [Thread-197102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:13:32.722 [DEBUG] [Thread-197102] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:13:32.722 [DEBUG] [Thread-197102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:13:32.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:13:32.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:13:32.778 [DEBUG] [Thread-197102] [transport.py] [_log()] userauth is OK
2025-11-24T21:13:32.778 [DEBUG] [Thread-197102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:13:32.778 [DEBUG] [Thread-197102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:13:32.778 [DEBUG] [Thread-197102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:13:32.778 [DEBUG] [Thread-197102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:13:32.792 [INFO] [Thread-197102] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:13: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-11-24T21:13:32.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:13:33.647 [DEBUG] [Thread-197102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:13:33.648 [DEBUG] [Thread-197102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:13:33.695 [DEBUG] [Thread-197102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:13:33.695 [DEBUG] [Thread-197102] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:13:33.704 [DEBUG] [Thread-197102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:13:33.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:13:33.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:13:33.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-11-24T21:13:33.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:13:33.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:13:33.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:13:33.747 [DEBUG] [Thread-197102] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:13:36.251 [DEBUG] [Thread-197104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:13:51.977 [DEBUG] [Thread-197105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:14:03.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:14:03.819 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:14:03.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:14:05.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 13, 27), 16.06, 33.6, 0.0, 35.78, 16.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:14:05.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:13:27
2025-11-24T21:14:05.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:14:05.894 [DEBUG] [Thread-197106] [transport.py] [_log()] starting thread (client mode): 0xd317ff10
2025-11-24T21:14:05.896 [DEBUG] [Thread-197106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:14:05.899 [DEBUG] [Thread-197106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:14:05.899 [INFO] [Thread-197106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] client lang: <none>
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] server lang: <none>
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] kex follows: False
2025-11-24T21:14:05.910 [DEBUG] [Thread-197106] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:14:05.911 [DEBUG] [Thread-197106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:14:05.911 [DEBUG] [Thread-197106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:14:05.912 [DEBUG] [Thread-197106] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:14:05.912 [DEBUG] [Thread-197106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:14:05.912 [DEBUG] [Thread-197106] [transport.py] [_log()] Compression: none
2025-11-24T21:14:05.912 [DEBUG] [Thread-197106] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:14:05.952 [DEBUG] [Thread-197106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:14:05.956 [DEBUG] [Thread-197106] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:14:05.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:14:05.959 [DEBUG] [Thread-197106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:14:05.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:14:05.962 [DEBUG] [Thread-197106] [transport.py] [_log()] userauth is OK
2025-11-24T21:14:05.963 [DEBUG] [Thread-197106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:14:05.963 [DEBUG] [Thread-197106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:14:05.963 [DEBUG] [Thread-197106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:14:05.963 [DEBUG] [Thread-197106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:14:05.983 [INFO] [Thread-197106] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:14:05.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:14:06.739 [DEBUG] [Thread-197106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:14:06.739 [DEBUG] [Thread-197106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:14:06.740 [DEBUG] [Thread-197106] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:14:06.780 [DEBUG] [Thread-197106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:14:06.780 [DEBUG] [Thread-197106] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:14:06.781 [DEBUG] [Thread-197106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:14:06.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:14:06.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:14:06.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:14:06.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:14:06.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:14:06.798 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:14:06.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:14:06.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:14:06.799 [DEBUG] [Thread-197106] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:14:06.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:14:06.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.801090 -999.00  +15.90  23.85     39   +2.00 1 1 1 1 1     0    0 12.63 -58.59 ZNESW 22.4 23.9 165.0 27.8 16.2 -25.9 16.1 -25.5 15.9 -24.4 16.2 -25.4
2025-11-24T21:14:06.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:14:06.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:14:06.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.801090
2025-11-24T21:14:06.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:14:06.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:14:06.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:14:06.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:14:06.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:14:06.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:13:27', tmtdew=16.06, humidity=33.6, cloud=0.0, wind=35.78, temperature=16.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:14:03', seeing=0.69, atlas_timestamp='2025-11-24T19:13:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.05325000000000024, 0.02325000000000088, -0.010500000000000398, 0.04299999999999926, 0.1152500000000014, 0.057000000000000384, 0.016250000000001208, 0.08349999999999902, 0.05450000000000088, 0.06274999999999942, 0.034000000000000696, 0.11599999999999966, 0.11524999999999963, 0.05799999999999983, 0.030999999999998806, 0.056750000000000966, 0.08949999999999925, 0.09299999999999997, 0.04124999999999979, 0.1479999999999997, 0.1197499999999998, 0.07725000000000115, 0.06574999999999953, 0.04049999999999976, 0.07249999999999979, 0.11175000000000068, 0.11650000000000027, 0.0990000000000002, 0.051000000000000156, 0.04300000000000104, 0.038000000000000256, 0.040749999999999176], zp_timestamp='2025-11-24T19:11:00')
2025-11-24T21:14:06.909 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:14:06.921 [DEBUG] [Thread-197109] [transport.py] [_log()] starting thread (client mode): 0xd317ea70
2025-11-24T21:14:06.921 [DEBUG] [Thread-197109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:14:06.936 [DEBUG] [Thread-197109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:14:06.936 [INFO] [Thread-197109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] client lang: <none>
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] server lang: <none>
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] kex follows: False
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:14:06.944 [DEBUG] [Thread-197109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:14:06.945 [DEBUG] [Thread-197109] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:14:06.945 [DEBUG] [Thread-197109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:14:06.945 [DEBUG] [Thread-197109] [transport.py] [_log()] Compression: none
2025-11-24T21:14:06.945 [DEBUG] [Thread-197109] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:14:07.005 [DEBUG] [Thread-197109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:14:07.005 [DEBUG] [Thread-197109] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:14:07.006 [DEBUG] [Thread-197109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:14:07.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:14:07.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:14:07.062 [DEBUG] [Thread-197109] [transport.py] [_log()] userauth is OK
2025-11-24T21:14:07.063 [DEBUG] [Thread-197109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:14:07.063 [DEBUG] [Thread-197109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:14:07.063 [DEBUG] [Thread-197109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:14:07.063 [DEBUG] [Thread-197109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:14:07.083 [INFO] [Thread-197109] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:14:07.084 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:14:07.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:14:07.119 [DEBUG] [Thread-197111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:14:08.058 [DEBUG] [Thread-197109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:14:08.059 [DEBUG] [Thread-197109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:14:08.105 [DEBUG] [Thread-197109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:14:08.106 [DEBUG] [Thread-197109] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:14:08.115 [DEBUG] [Thread-197109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:14:08.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:14:08.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-11-24T21:14:08.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-11-24T21:14:08.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:14:08.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:14:08.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:14:08.152 [DEBUG] [Thread-197109] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:14:16.124 [DEBUG] [Thread-197112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:14:22.413 [DEBUG] [Thread-197113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:14:27.829 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:14:27.840 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:14:37.648 [DEBUG] [Thread-197114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:14:38.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:14:38.174 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:14:38.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-11-24T21:14:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 14, 3), 16.07, 33.57, 0.0, 35.08, 16.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:14:39.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:14:03
2025-11-24T21:14:39.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:14:40.092 [DEBUG] [Thread-197115] [transport.py] [_log()] starting thread (client mode): 0xd3151210
2025-11-24T21:14:40.094 [DEBUG] [Thread-197115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:14:40.098 [DEBUG] [Thread-197115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:14:40.098 [INFO] [Thread-197115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:14:40.137 [DEBUG] [Thread-197115] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] client lang: <none>
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] server lang: <none>
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] kex follows: False
2025-11-24T21:14:40.142 [DEBUG] [Thread-197115] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:14:40.144 [DEBUG] [Thread-197115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:14:40.144 [DEBUG] [Thread-197115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:14:40.144 [DEBUG] [Thread-197115] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:14:40.144 [DEBUG] [Thread-197115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:14:40.144 [DEBUG] [Thread-197115] [transport.py] [_log()] Compression: none
2025-11-24T21:14:40.144 [DEBUG] [Thread-197115] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:14:40.183 [DEBUG] [Thread-197115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:14:40.189 [DEBUG] [Thread-197115] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:14:40.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:14:40.193 [DEBUG] [Thread-197115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:14:40.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:14:40.197 [DEBUG] [Thread-197115] [transport.py] [_log()] userauth is OK
2025-11-24T21:14:40.198 [DEBUG] [Thread-197115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:14:40.198 [DEBUG] [Thread-197115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:14:40.198 [DEBUG] [Thread-197115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:14:40.198 [DEBUG] [Thread-197115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:14:40.218 [INFO] [Thread-197115] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:14:40.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:14:40.859 [DEBUG] [Thread-197115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:14:40.859 [DEBUG] [Thread-197115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:14:40.860 [DEBUG] [Thread-197115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:14:40.901 [DEBUG] [Thread-197115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:14:40.901 [DEBUG] [Thread-197115] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:14:40.904 [DEBUG] [Thread-197115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:14:40.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:14:40.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:14:40.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:14:40.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:14:40.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:14:40.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:14:40.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:14:40.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:14:40.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:14:40.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.801437 -999.00  +15.90  18.93     39   +2.00 1 1 1 1 1     0    0 12.43 -58.71 ZNESW 19.3 18.9 168.7 27.4 16.2 -25.9 16.1 -25.5 15.9 -24.3 16.2 -25.5
2025-11-24T21:14:40.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:14:40.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:14:40.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.801437
2025-11-24T21:14:40.939 [DEBUG] [Thread-197115] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:14:40.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:14:40.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:14:40.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:14:40.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:14:40.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:14:40.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:14:03', tmtdew=16.07, humidity=33.57, cloud=0.0, wind=35.08, temperature=16.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:14:37', seeing=0.69, atlas_timestamp='2025-11-24T19:14:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.05325000000000024, 0.02325000000000088, -0.010500000000000398, 0.04299999999999926, 0.1152500000000014, 0.057000000000000384, 0.016250000000001208, 0.08349999999999902, 0.05450000000000088, 0.06274999999999942, 0.034000000000000696, 0.11599999999999966, 0.11524999999999963, 0.05799999999999983, 0.030999999999998806, 0.056750000000000966, 0.08949999999999925, 0.09299999999999997, 0.04124999999999979, 0.1479999999999997, 0.1197499999999998, 0.07725000000000115, 0.06574999999999953, 0.04049999999999976, 0.07249999999999979, 0.11175000000000068, 0.11650000000000027, 0.0990000000000002, 0.051000000000000156, 0.04300000000000104, 0.038000000000000256, 0.040749999999999176], zp_timestamp='2025-11-24T19:11:00')
2025-11-24T21:14:41.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:14:41.041 [DEBUG] [Thread-197118] [transport.py] [_log()] starting thread (client mode): 0xd0713220
2025-11-24T21:14:41.041 [DEBUG] [Thread-197118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:14:41.060 [DEBUG] [Thread-197118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:14:41.060 [INFO] [Thread-197118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] client lang: <none>
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] server lang: <none>
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] kex follows: False
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:14:41.067 [DEBUG] [Thread-197118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:14:41.068 [DEBUG] [Thread-197118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:14:41.068 [DEBUG] [Thread-197118] [transport.py] [_log()] Compression: none
2025-11-24T21:14:41.068 [DEBUG] [Thread-197118] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:14:41.126 [DEBUG] [Thread-197118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:14:41.127 [DEBUG] [Thread-197118] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:14:41.127 [DEBUG] [Thread-197118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:14:41.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:14:41.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:14:41.182 [DEBUG] [Thread-197118] [transport.py] [_log()] userauth is OK
2025-11-24T21:14:41.182 [DEBUG] [Thread-197118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:14:41.183 [DEBUG] [Thread-197118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:14:41.183 [DEBUG] [Thread-197118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:14:41.183 [DEBUG] [Thread-197118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:14:41.206 [INFO] [Thread-197118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:14:41.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:14:41.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:14:42.048 [DEBUG] [Thread-197118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:14:42.048 [DEBUG] [Thread-197118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:14:42.096 [DEBUG] [Thread-197118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:14:42.096 [DEBUG] [Thread-197118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:14:42.104 [DEBUG] [Thread-197118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:14:42.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:14:42.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')
2025-11-24T21:14: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') -> 00000000
2025-11-24T21:14:42.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:14:42.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:14:42.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:14:42.137 [DEBUG] [Thread-197118] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:14:52.840 [DEBUG] [Thread-197120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:15:08.134 [DEBUG] [Thread-197121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:15:12.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:15:12.166 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:15:12.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:15:13.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 14, 36), 16.08, 33.52, 0.0, 33.22, 16.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:15:13.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:14:36
2025-11-24T21:15:14.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:15:14.237 [DEBUG] [Thread-197122] [transport.py] [_log()] starting thread (client mode): 0xd3152200
2025-11-24T21:15:14.239 [DEBUG] [Thread-197122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:15:14.240 [DEBUG] [Thread-197122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:15:14.241 [INFO] [Thread-197122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:15:14.258 [DEBUG] [Thread-197122] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] client lang: <none>
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] server lang: <none>
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] kex follows: False
2025-11-24T21:15:14.259 [DEBUG] [Thread-197122] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:15:14.260 [DEBUG] [Thread-197122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:15:14.260 [DEBUG] [Thread-197122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:15:14.260 [DEBUG] [Thread-197122] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:15:14.260 [DEBUG] [Thread-197122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:15:14.260 [DEBUG] [Thread-197122] [transport.py] [_log()] Compression: none
2025-11-24T21:15:14.260 [DEBUG] [Thread-197122] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:15:14.299 [DEBUG] [Thread-197122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:15:14.305 [DEBUG] [Thread-197122] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:15:14.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:15:14.309 [DEBUG] [Thread-197122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:15:14.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:15:14.312 [DEBUG] [Thread-197122] [transport.py] [_log()] userauth is OK
2025-11-24T21:15:14.313 [DEBUG] [Thread-197122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:15:14.313 [DEBUG] [Thread-197122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:15:14.313 [DEBUG] [Thread-197122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:15:14.313 [DEBUG] [Thread-197122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:15:14.333 [INFO] [Thread-197122] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:15:14.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:15:15.530 [DEBUG] [Thread-197122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:15:15.530 [DEBUG] [Thread-197122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:15:15.531 [DEBUG] [Thread-197122] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:15:15.571 [DEBUG] [Thread-197122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:15:15.571 [DEBUG] [Thread-197122] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:15:15.575 [DEBUG] [Thread-197122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:15:15.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:15:15.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:15:15.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:15:15.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:15:15.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:15:15.667 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:15:15.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:15:15.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:15:15.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:15:15.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.801785 -999.00  +15.80  20.00     39   +2.00 1 1 1 1 1     0    0 12.33 -57.67 ZNESW 18.2 20.0 177.4 24.7 16.2 -26.0 16.1 -25.5 15.8 -24.3 16.1 -25.4
2025-11-24T21:15:15.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:15:15.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:15:15.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.801785
2025-11-24T21:15:15.675 [DEBUG] [Thread-197122] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:15:15.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:15:15.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:15:15.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:15:15.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:15:15.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:15:15.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:14:36', tmtdew=16.08, humidity=33.52, cloud=0.0, wind=33.22, temperature=16.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:15:11', seeing=0.57, atlas_timestamp='2025-11-24T19:14:34.224', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.05325000000000024, 0.02325000000000088, -0.010500000000000398, 0.04299999999999926, 0.1152500000000014, 0.057000000000000384, 0.016250000000001208, 0.08349999999999902, 0.05450000000000088, 0.06274999999999942, 0.034000000000000696, 0.11599999999999966, 0.11524999999999963, 0.05799999999999983, 0.030999999999998806, 0.056750000000000966, 0.08949999999999925, 0.09299999999999997, 0.04124999999999979, 0.1479999999999997, 0.1197499999999998, 0.07725000000000115, 0.06574999999999953, 0.04049999999999976, 0.07249999999999979, 0.11175000000000068, 0.11650000000000027, 0.0990000000000002, 0.051000000000000156, 0.04300000000000104, 0.038000000000000256, 0.040749999999999176], zp_timestamp='2025-11-24T19:11:00')
2025-11-24T21:15:15.778 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:15:15.789 [DEBUG] [Thread-197125] [transport.py] [_log()] starting thread (client mode): 0xd317dcf0
2025-11-24T21:15:15.789 [DEBUG] [Thread-197125] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:15:15.805 [DEBUG] [Thread-197125] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:15:15.805 [INFO] [Thread-197125] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:15:15.812 [DEBUG] [Thread-197125] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:15:15.812 [DEBUG] [Thread-197125] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:15:15.812 [DEBUG] [Thread-197125] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:15:15.812 [DEBUG] [Thread-197125] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:15:15.812 [DEBUG] [Thread-197125] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:15:15.812 [DEBUG] [Thread-197125] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:15:15.812 [DEBUG] [Thread-197125] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:15:15.812 [DEBUG] [Thread-197125] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:15:15.812 [DEBUG] [Thread-197125] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:15:15.813 [DEBUG] [Thread-197125] [transport.py] [_log()] client lang: <none>
2025-11-24T21:15:15.813 [DEBUG] [Thread-197125] [transport.py] [_log()] server lang: <none>
2025-11-24T21:15:15.813 [DEBUG] [Thread-197125] [transport.py] [_log()] kex follows: False
2025-11-24T21:15:15.813 [DEBUG] [Thread-197125] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:15:15.813 [DEBUG] [Thread-197125] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:15:15.813 [DEBUG] [Thread-197125] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:15:15.813 [DEBUG] [Thread-197125] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:15:15.813 [DEBUG] [Thread-197125] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:15:15.813 [DEBUG] [Thread-197125] [transport.py] [_log()] Compression: none
2025-11-24T21:15:15.813 [DEBUG] [Thread-197125] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:15:15.869 [DEBUG] [Thread-197125] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:15:15.869 [DEBUG] [Thread-197125] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:15:15.869 [DEBUG] [Thread-197125] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:15:15.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:15:15.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:15:15.926 [DEBUG] [Thread-197125] [transport.py] [_log()] userauth is OK
2025-11-24T21:15:15.926 [DEBUG] [Thread-197125] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:15:15.927 [DEBUG] [Thread-197125] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:15:15.927 [DEBUG] [Thread-197125] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:15:15.927 [DEBUG] [Thread-197125] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:15:15.947 [INFO] [Thread-197125] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:15:15.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:15:15.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:15:16.562 [DEBUG] [Thread-197127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:15:16.804 [DEBUG] [Thread-197125] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:15:16.804 [DEBUG] [Thread-197125] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:15:16.851 [DEBUG] [Thread-197125] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:15:16.851 [DEBUG] [Thread-197125] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:15:16.859 [DEBUG] [Thread-197125] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:15:16.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:15:16.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-11-24T21:15:16.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-11-24T21:15:16.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:15:16.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:15:16.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:15:16.894 [DEBUG] [Thread-197125] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:15:23.278 [DEBUG] [Thread-197128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:15:28.044 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:15:28.046 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:15:38.564 [DEBUG] [Thread-197129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:15:46.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:15:46.913 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:15:46.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-11-24T21:15:48.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 15, 11), 16.06, 33.57, 0.0, 32.52, 16.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:15:48.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:15:11
2025-11-24T21:15:48.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:15:48.708 [DEBUG] [Thread-197130] [transport.py] [_log()] starting thread (client mode): 0xd318bcd0
2025-11-24T21:15:48.709 [DEBUG] [Thread-197130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:15:48.710 [DEBUG] [Thread-197130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:15:48.710 [INFO] [Thread-197130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] client lang: <none>
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] server lang: <none>
2025-11-24T21:15:48.714 [DEBUG] [Thread-197130] [transport.py] [_log()] kex follows: False
2025-11-24T21:15:48.715 [DEBUG] [Thread-197130] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:15:48.715 [DEBUG] [Thread-197130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:15:48.715 [DEBUG] [Thread-197130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:15:48.715 [DEBUG] [Thread-197130] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:15:48.715 [DEBUG] [Thread-197130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:15:48.715 [DEBUG] [Thread-197130] [transport.py] [_log()] Compression: none
2025-11-24T21:15:48.715 [DEBUG] [Thread-197130] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:15:48.749 [DEBUG] [Thread-197130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:15:48.756 [DEBUG] [Thread-197130] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:15:48.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:15:48.759 [DEBUG] [Thread-197130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:15:48.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:15:48.761 [DEBUG] [Thread-197130] [transport.py] [_log()] userauth is OK
2025-11-24T21:15:48.762 [DEBUG] [Thread-197130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:15:48.762 [DEBUG] [Thread-197130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:15:48.762 [DEBUG] [Thread-197130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:15:48.762 [DEBUG] [Thread-197130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:15:48.792 [INFO] [Thread-197130] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:15:48.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:15:49.415 [DEBUG] [Thread-197130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:15:49.415 [DEBUG] [Thread-197130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:15:49.416 [DEBUG] [Thread-197130] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:15:49.457 [DEBUG] [Thread-197130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:15:49.457 [DEBUG] [Thread-197130] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:15:49.460 [DEBUG] [Thread-197130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:15:49.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:15:49.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:15:49.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:15:49.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:15:49.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:15:49.480 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:15:49.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:15:49.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:15:49.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:15:49.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.802131 -999.00  +15.80  20.86     39   +1.90 1 1 1 1 1     0    0 12.69 -53.71 ZNESW 21.5 20.9 171.0 31.1 16.1 -25.7 16.1 -25.6 15.8 -24.3 16.1 -25.4
2025-11-24T21:15:49.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:15:49.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:15:49.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.802131
2025-11-24T21:15:49.492 [DEBUG] [Thread-197130] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:15:49.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:15:49.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:15:49.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:15:49.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:15:49.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:15:49.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:15:11', tmtdew=16.06, humidity=33.57, cloud=0.0, wind=32.52, temperature=16.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:15:45', seeing=0.56, atlas_timestamp='2025-11-24T19:15:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.05325000000000024, 0.02325000000000088, -0.010500000000000398, 0.04299999999999926, 0.1152500000000014, 0.057000000000000384, 0.016250000000001208, 0.08349999999999902, 0.05450000000000088, 0.06274999999999942, 0.034000000000000696, 0.11599999999999966, 0.11524999999999963, 0.05799999999999983, 0.030999999999998806, 0.056750000000000966, 0.08949999999999925, 0.09299999999999997, 0.04124999999999979, 0.1479999999999997, 0.1197499999999998, 0.07725000000000115, 0.06574999999999953, 0.04049999999999976, 0.07249999999999979, 0.11175000000000068, 0.11650000000000027, 0.0990000000000002, 0.051000000000000156, 0.04300000000000104, 0.038000000000000256, 0.040749999999999176], zp_timestamp='2025-11-24T19:11:00')
2025-11-24T21:15:49.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:15:49.589 [DEBUG] [Thread-197133] [transport.py] [_log()] starting thread (client mode): 0xd317e800
2025-11-24T21:15:49.589 [DEBUG] [Thread-197133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:15:49.607 [DEBUG] [Thread-197133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:15:49.607 [INFO] [Thread-197133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] client lang: <none>
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] server lang: <none>
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] kex follows: False
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] Compression: none
2025-11-24T21:15:49.615 [DEBUG] [Thread-197133] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:15:49.673 [DEBUG] [Thread-197133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:15:49.673 [DEBUG] [Thread-197133] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:15:49.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:15:49.673 [DEBUG] [Thread-197133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:15:49.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:15:49.732 [DEBUG] [Thread-197133] [transport.py] [_log()] userauth is OK
2025-11-24T21:15:49.732 [DEBUG] [Thread-197133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:15:49.732 [DEBUG] [Thread-197133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:15:49.732 [DEBUG] [Thread-197133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:15:49.732 [DEBUG] [Thread-197133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:15:49.749 [INFO] [Thread-197133] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:15:49.749 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:15:49.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:15:50.605 [DEBUG] [Thread-197133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:15:50.605 [DEBUG] [Thread-197133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:15:50.653 [DEBUG] [Thread-197133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:15:50.653 [DEBUG] [Thread-197133] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:15:50.662 [DEBUG] [Thread-197133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:15:50.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:15:50.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-11-24T21:15:50.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:15:50.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:15:50.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:15:50.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:15:50.702 [DEBUG] [Thread-197133] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:15:53.706 [DEBUG] [Thread-197135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:16:08.990 [DEBUG] [Thread-197136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:16:16.988 [DEBUG] [Thread-197137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:16:20.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:16:20.730 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:16:20.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:16:22.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 15, 45), 16.05, 33.62, 0.0, 27.82, 16.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:16:22.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:15:45
2025-11-24T21:16:22.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:16:22.699 [DEBUG] [Thread-197138] [transport.py] [_log()] starting thread (client mode): 0xd07ceb00
2025-11-24T21:16:22.700 [DEBUG] [Thread-197138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:16:22.709 [DEBUG] [Thread-197138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:16:22.709 [INFO] [Thread-197138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:16:22.714 [DEBUG] [Thread-197138] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] client lang: <none>
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] server lang: <none>
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] kex follows: False
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] Compression: none
2025-11-24T21:16:22.715 [DEBUG] [Thread-197138] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:16:22.752 [DEBUG] [Thread-197138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:16:22.757 [DEBUG] [Thread-197138] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:16:22.759 [DEBUG] [Thread-197138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:16:22.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:16:22.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:16:22.762 [DEBUG] [Thread-197138] [transport.py] [_log()] userauth is OK
2025-11-24T21:16:22.762 [DEBUG] [Thread-197138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:16:22.762 [DEBUG] [Thread-197138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:16:22.762 [DEBUG] [Thread-197138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:16:22.763 [DEBUG] [Thread-197138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:16:22.779 [INFO] [Thread-197138] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:16:22.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:16:23.432 [DEBUG] [Thread-197138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:16:23.432 [DEBUG] [Thread-197138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:16:23.437 [DEBUG] [Thread-197138] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:16:23.474 [DEBUG] [Thread-197138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:16:23.474 [DEBUG] [Thread-197138] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:16:23.483 [DEBUG] [Thread-197138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:16:23.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:16:23.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:16:23.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:16:23.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:16:23.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:16:23.506 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:16:23.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:16:23.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:16:23.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:16:23.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.802479 -999.00  +15.80  26.91     39   +2.00 1 1 1 1 1     0    0 12.38 -55.78 ZNESW 29.1 26.9 167.3 35.2 16.1 -25.8 16.0 -25.2 15.7 -24.2 16.1 -25.2
2025-11-24T21:16:23.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:16:23.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:16:23.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.802479
2025-11-24T21:16:23.514 [DEBUG] [Thread-197138] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:16:23.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:16:23.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:16:23.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:16:23.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:16:23.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:16:23.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:15:45', tmtdew=16.05, humidity=33.62, cloud=0.0, wind=27.82, temperature=16.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:16:20', seeing=0.63, atlas_timestamp='2025-11-24T19:15:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:11:00')
2025-11-24T21:16:23.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:16:23.632 [DEBUG] [Thread-197141] [transport.py] [_log()] starting thread (client mode): 0xd07125f0
2025-11-24T21:16:23.632 [DEBUG] [Thread-197141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:16:23.647 [DEBUG] [Thread-197141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:16:23.648 [INFO] [Thread-197141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] client lang: <none>
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] server lang: <none>
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] kex follows: False
2025-11-24T21:16:23.655 [DEBUG] [Thread-197141] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:16:23.656 [DEBUG] [Thread-197141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:16:23.656 [DEBUG] [Thread-197141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:16:23.656 [DEBUG] [Thread-197141] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:16:23.656 [DEBUG] [Thread-197141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:16:23.656 [DEBUG] [Thread-197141] [transport.py] [_log()] Compression: none
2025-11-24T21:16:23.656 [DEBUG] [Thread-197141] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:16:23.713 [DEBUG] [Thread-197141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:16:23.713 [DEBUG] [Thread-197141] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:16:23.713 [DEBUG] [Thread-197141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:16:23.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:16:23.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:16:23.770 [DEBUG] [Thread-197141] [transport.py] [_log()] userauth is OK
2025-11-24T21:16:23.770 [DEBUG] [Thread-197141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:16:23.770 [DEBUG] [Thread-197141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:16:23.770 [DEBUG] [Thread-197141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:16:23.770 [DEBUG] [Thread-197141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:16:23.785 [INFO] [Thread-197141] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:16: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-11-24T21:16:23.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:16:24.113 [DEBUG] [Thread-197143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:16:24.671 [DEBUG] [Thread-197141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:16:24.672 [DEBUG] [Thread-197141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:16:24.720 [DEBUG] [Thread-197141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:16:24.720 [DEBUG] [Thread-197141] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:16:24.729 [DEBUG] [Thread-197141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:16:24.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:16:24.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:16:24.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-11-24T21:16:24.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:16:24.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:16:24.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:16:24.763 [DEBUG] [Thread-197141] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:16:28.248 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:16:28.250 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:16:39.336 [DEBUG] [Thread-197144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:16:54.544 [DEBUG] [Thread-197145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:16:54.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:16:54.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:16:54.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-11-24T21:16:56.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 16, 19), 16.04, 33.62, 0.0, 29.02, 15.94, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:16:56.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:16:19
2025-11-24T21:16:56.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:16:56.945 [DEBUG] [Thread-197146] [transport.py] [_log()] starting thread (client mode): 0xd07116c0
2025-11-24T21:16:56.946 [DEBUG] [Thread-197146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:16:56.955 [DEBUG] [Thread-197146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:16:56.956 [INFO] [Thread-197146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:16:56.962 [DEBUG] [Thread-197146] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] client lang: <none>
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] server lang: <none>
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] kex follows: False
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:16:56.963 [DEBUG] [Thread-197146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:16:56.964 [DEBUG] [Thread-197146] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:16:56.964 [DEBUG] [Thread-197146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:16:56.964 [DEBUG] [Thread-197146] [transport.py] [_log()] Compression: none
2025-11-24T21:16:56.964 [DEBUG] [Thread-197146] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:16:57.001 [DEBUG] [Thread-197146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:16:57.009 [DEBUG] [Thread-197146] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:16:57.011 [DEBUG] [Thread-197146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:16:57.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:16:57.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:16:57.015 [DEBUG] [Thread-197146] [transport.py] [_log()] userauth is OK
2025-11-24T21:16:57.016 [DEBUG] [Thread-197146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:16:57.016 [DEBUG] [Thread-197146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:16:57.016 [DEBUG] [Thread-197146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:16:57.016 [DEBUG] [Thread-197146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:16:57.046 [INFO] [Thread-197146] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:16:57.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:16:57.712 [DEBUG] [Thread-197146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:16:57.712 [DEBUG] [Thread-197146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:16:57.713 [DEBUG] [Thread-197146] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:16:57.753 [DEBUG] [Thread-197146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:16:57.753 [DEBUG] [Thread-197146] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:16:57.756 [DEBUG] [Thread-197146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:16:57.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:16:57.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:16:57.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:16:57.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:16:57.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:16:57.779 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:16:57.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:16:57.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:16:57.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:16:57.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.802826 -999.00  +15.80  29.27     39   +2.00 1 1 1 1 1     0    0 12.70 -50.36 ZNESW 30.2 29.3 167.3 34.7 16.1 -25.8 16.0 -25.2 15.8 -24.1 16.1 -25.2
2025-11-24T21:16:57.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:16:57.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:16:57.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.802826
2025-11-24T21:16:57.791 [DEBUG] [Thread-197146] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:16:57.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:16:57.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:16:57.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:16:57.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:16:57.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:16:57.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:16:19', tmtdew=16.04, humidity=33.62, cloud=0.0, wind=29.02, temperature=15.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:16:54', seeing=0.68, atlas_timestamp='2025-11-24T19:16:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:11:00')
2025-11-24T21:16:57.880 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:16:57.893 [DEBUG] [Thread-197149] [transport.py] [_log()] starting thread (client mode): 0xd0713c10
2025-11-24T21:16:57.893 [DEBUG] [Thread-197149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:16:57.907 [DEBUG] [Thread-197149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:16:57.907 [INFO] [Thread-197149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] client lang: <none>
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] server lang: <none>
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] kex follows: False
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] Compression: none
2025-11-24T21:16:57.915 [DEBUG] [Thread-197149] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:16:57.973 [DEBUG] [Thread-197149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:16:57.973 [DEBUG] [Thread-197149] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:16:57.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:16:57.974 [DEBUG] [Thread-197149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:16:57.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:16:58.034 [DEBUG] [Thread-197149] [transport.py] [_log()] userauth is OK
2025-11-24T21:16:58.034 [DEBUG] [Thread-197149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:16:58.034 [DEBUG] [Thread-197149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:16:58.034 [DEBUG] [Thread-197149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:16:58.034 [DEBUG] [Thread-197149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:16:58.050 [INFO] [Thread-197149] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:16:58.050 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:16:58.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:16:58.869 [DEBUG] [Thread-197149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:16:58.869 [DEBUG] [Thread-197149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:16:58.917 [DEBUG] [Thread-197149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:16:58.917 [DEBUG] [Thread-197149] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:16:58.925 [DEBUG] [Thread-197149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:16:58.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:16:58.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-11-24T21:16:58.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-11-24T21:16:58.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:16:58.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:16:58.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:16:58.962 [DEBUG] [Thread-197149] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:17:09.745 [DEBUG] [Thread-197151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:17:17.487 [DEBUG] [Thread-197152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:17:25.145 [DEBUG] [Thread-197153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:17:25.372 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:17:28.491 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:17:28.526 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:17:28.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:17:28.987 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:17:29.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:17:32.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 16, 54), 15.96, 33.55, 0.0, 30.88, 15.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:17:32.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:16:54
2025-11-24T21:17:32.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:17:32.725 [DEBUG] [Thread-197154] [transport.py] [_log()] starting thread (client mode): 0xd3137f40
2025-11-24T21:17:32.726 [DEBUG] [Thread-197154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:17:32.727 [DEBUG] [Thread-197154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:17:32.727 [INFO] [Thread-197154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:17:32.738 [DEBUG] [Thread-197154] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:17:32.738 [DEBUG] [Thread-197154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:17:32.738 [DEBUG] [Thread-197154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:17:32.738 [DEBUG] [Thread-197154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] client lang: <none>
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] server lang: <none>
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] kex follows: False
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:17:32.739 [DEBUG] [Thread-197154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:17:32.740 [DEBUG] [Thread-197154] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:17:32.740 [DEBUG] [Thread-197154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:17:32.740 [DEBUG] [Thread-197154] [transport.py] [_log()] Compression: none
2025-11-24T21:17:32.740 [DEBUG] [Thread-197154] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:17:32.793 [DEBUG] [Thread-197154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:17:32.806 [DEBUG] [Thread-197154] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:17:32.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:17:32.808 [DEBUG] [Thread-197154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:17:32.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:17:32.811 [DEBUG] [Thread-197154] [transport.py] [_log()] userauth is OK
2025-11-24T21:17:32.811 [DEBUG] [Thread-197154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:17:32.811 [DEBUG] [Thread-197154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:17:32.811 [DEBUG] [Thread-197154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:17:32.811 [DEBUG] [Thread-197154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:17:32.841 [INFO] [Thread-197154] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:17:32.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:17:33.439 [DEBUG] [Thread-197154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:17:33.439 [DEBUG] [Thread-197154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:17:33.440 [DEBUG] [Thread-197154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:17:33.480 [DEBUG] [Thread-197154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:17:33.480 [DEBUG] [Thread-197154] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:17:33.483 [DEBUG] [Thread-197154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:17:33.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:17:33.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:17:33.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:17:33.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:17:33.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:17:33.508 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:17:33.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:17:33.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:17:33.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:17:33.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.803173 -999.00  +15.90  29.81     39   +2.00 1 1 1 1 1     0    0 12.46 -49.18 ZNESW 20.6 29.8 169.3 36.9 16.1 -26.0 16.0 -25.4 15.8 -24.2 16.1 -25.0
2025-11-24T21:17:33.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:17:33.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:17:33.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.803173
2025-11-24T21:17:33.516 [DEBUG] [Thread-197154] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:17:33.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:17:33.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:17:33.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:17:33.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:17:33.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:17:33.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:16:54', tmtdew=15.96, humidity=33.55, cloud=0.0, wind=30.88, temperature=15.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:17:28', seeing=0.73, atlas_timestamp='2025-11-24T19:16:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:11:00')
2025-11-24T21:17:33.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:17:33.632 [DEBUG] [Thread-197157] [transport.py] [_log()] starting thread (client mode): 0xd31359c0
2025-11-24T21:17:33.632 [DEBUG] [Thread-197157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:17:33.641 [DEBUG] [Thread-197157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:17:33.641 [INFO] [Thread-197157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] client lang: <none>
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] server lang: <none>
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] kex follows: False
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:17:33.649 [DEBUG] [Thread-197157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:17:33.650 [DEBUG] [Thread-197157] [transport.py] [_log()] Compression: none
2025-11-24T21:17:33.650 [DEBUG] [Thread-197157] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:17:33.705 [DEBUG] [Thread-197157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:17:33.707 [DEBUG] [Thread-197157] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:17:33.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:17:33.707 [DEBUG] [Thread-197157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:17:33.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:17:33.763 [DEBUG] [Thread-197157] [transport.py] [_log()] userauth is OK
2025-11-24T21:17:33.763 [DEBUG] [Thread-197157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:17:33.763 [DEBUG] [Thread-197157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:17:33.763 [DEBUG] [Thread-197157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:17:33.763 [DEBUG] [Thread-197157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:17:33.777 [INFO] [Thread-197157] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:17:33.777 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:17:33.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:17:34.652 [DEBUG] [Thread-197157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:17:34.652 [DEBUG] [Thread-197157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:17:34.700 [DEBUG] [Thread-197157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:17:34.700 [DEBUG] [Thread-197157] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:17:34.709 [DEBUG] [Thread-197157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:17:34.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:17:34.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-11-24T21:17:34.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-11-24T21:17:34.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:17:34.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:17:34.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:17:34.743 [DEBUG] [Thread-197157] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:17:40.321 [DEBUG] [Thread-197159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:17:55.590 [DEBUG] [Thread-197160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:18:04.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:18:04.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:18:04.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-11-24T21:18:06.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 17, 28), 15.95, 33.6, 0.0, 32.34, 15.92, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:18:06.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:17:28
2025-11-24T21:18:06.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:18:06.878 [DEBUG] [Thread-197161] [transport.py] [_log()] starting thread (client mode): 0xd07ce320
2025-11-24T21:18:06.880 [DEBUG] [Thread-197161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:18:06.881 [DEBUG] [Thread-197161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:18:06.882 [INFO] [Thread-197161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] client lang: <none>
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] server lang: <none>
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] kex follows: False
2025-11-24T21:18:06.891 [DEBUG] [Thread-197161] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:18:06.893 [DEBUG] [Thread-197161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:18:06.893 [DEBUG] [Thread-197161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:18:06.893 [DEBUG] [Thread-197161] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:18:06.893 [DEBUG] [Thread-197161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:18:06.893 [DEBUG] [Thread-197161] [transport.py] [_log()] Compression: none
2025-11-24T21:18:06.893 [DEBUG] [Thread-197161] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:18:06.931 [DEBUG] [Thread-197161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:18:06.937 [DEBUG] [Thread-197161] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:18:06.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:18:06.940 [DEBUG] [Thread-197161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:18:06.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:18:06.943 [DEBUG] [Thread-197161] [transport.py] [_log()] userauth is OK
2025-11-24T21:18:06.944 [DEBUG] [Thread-197161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:18:06.944 [DEBUG] [Thread-197161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:18:06.944 [DEBUG] [Thread-197161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:18:06.944 [DEBUG] [Thread-197161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:18:06.974 [INFO] [Thread-197161] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:18:06.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:18:07.733 [DEBUG] [Thread-197161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:18:07.734 [DEBUG] [Thread-197161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:18:07.735 [DEBUG] [Thread-197161] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:18:07.774 [DEBUG] [Thread-197161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:18:07.774 [DEBUG] [Thread-197161] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:18:07.776 [DEBUG] [Thread-197161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:18:07.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:18:07.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:18:07.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:18:07.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:18:07.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:18:07.798 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:18:07.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:18:07.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:18:07.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:18:07.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.803868 -999.00  +15.80  32.39     39   +1.90 1 1 2 1 1     0    0 12.52 -47.89 ZNESW 25.3 32.4 164.8 33.7 16.1 -25.8 16.0 -25.4 15.8 -24.4 16.0 -25.2
2025-11-24T21:18:07.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:18:07.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:18:07.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.803868
2025-11-24T21:18:07.813 [DEBUG] [Thread-197161] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:18:07.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:18:07.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:18:07.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:18:07.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:18:07.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:18:07.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:17:28', tmtdew=15.95, humidity=33.6, cloud=0.0, wind=32.34, temperature=15.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:18:04', seeing=0.72, atlas_timestamp='2025-11-24T19:17:34.195', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:11:00')
2025-11-24T21:18:07.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:18:07.921 [DEBUG] [Thread-197164] [transport.py] [_log()] starting thread (client mode): 0xd07cd630
2025-11-24T21:18:07.921 [DEBUG] [Thread-197164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:18:07.935 [DEBUG] [Thread-197164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:18:07.935 [INFO] [Thread-197164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] client lang: <none>
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] server lang: <none>
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] kex follows: False
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:18:07.943 [DEBUG] [Thread-197164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:18:07.944 [DEBUG] [Thread-197164] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:18:07.944 [DEBUG] [Thread-197164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:18:07.944 [DEBUG] [Thread-197164] [transport.py] [_log()] Compression: none
2025-11-24T21:18:07.944 [DEBUG] [Thread-197164] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:18:08.002 [DEBUG] [Thread-197164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:18:08.003 [DEBUG] [Thread-197164] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:18:08.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:18:08.003 [DEBUG] [Thread-197164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:18:08.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:18:08.058 [DEBUG] [Thread-197164] [transport.py] [_log()] userauth is OK
2025-11-24T21:18:08.058 [DEBUG] [Thread-197164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:18:08.058 [DEBUG] [Thread-197164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:18:08.058 [DEBUG] [Thread-197164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:18:08.058 [DEBUG] [Thread-197164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:18:08.072 [INFO] [Thread-197164] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:18:08.072 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:18:08.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:18:08.951 [DEBUG] [Thread-197164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:18:08.951 [DEBUG] [Thread-197164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:18:08.998 [DEBUG] [Thread-197164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:18:08.998 [DEBUG] [Thread-197164] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:18:09.008 [DEBUG] [Thread-197164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:18:09.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:18:09.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-11-24T21:18:09.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-11-24T21:18:09.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:18:09.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:18:09.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:18:09.050 [DEBUG] [Thread-197164] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:18:10.748 [DEBUG] [Thread-197166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:18:17.905 [DEBUG] [Thread-197167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:18:26.080 [DEBUG] [Thread-197168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:18:28.745 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:18:28.748 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:18:39.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:18:39.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:18:39.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-11-24T21:18:41.376 [DEBUG] [Thread-197169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:18:43.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 18, 4), 15.94, 33.62, 0.0, 32.01, 15.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:18:43.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:18:04
2025-11-24T21:18:43.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:18:44.169 [DEBUG] [Thread-197170] [transport.py] [_log()] starting thread (client mode): 0xd07cfb20
2025-11-24T21:18:44.169 [DEBUG] [Thread-197170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:18:44.170 [DEBUG] [Thread-197170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:18:44.170 [INFO] [Thread-197170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:18:44.175 [DEBUG] [Thread-197170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:18:44.175 [DEBUG] [Thread-197170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:18:44.175 [DEBUG] [Thread-197170] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:18:44.175 [DEBUG] [Thread-197170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:18:44.175 [DEBUG] [Thread-197170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:18:44.175 [DEBUG] [Thread-197170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:18:44.175 [DEBUG] [Thread-197170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] client lang: <none>
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] server lang: <none>
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] kex follows: False
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] Compression: none
2025-11-24T21:18:44.176 [DEBUG] [Thread-197170] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:18:44.247 [DEBUG] [Thread-197170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:18:44.251 [DEBUG] [Thread-197170] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:18:44.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:18:44.254 [DEBUG] [Thread-197170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:18:44.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:18:44.256 [DEBUG] [Thread-197170] [transport.py] [_log()] userauth is OK
2025-11-24T21:18:44.256 [DEBUG] [Thread-197170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:18:44.257 [DEBUG] [Thread-197170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:18:44.257 [DEBUG] [Thread-197170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:18:44.257 [DEBUG] [Thread-197170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:18:44.276 [INFO] [Thread-197170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:18:44.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:18:44.925 [DEBUG] [Thread-197170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:18:44.925 [DEBUG] [Thread-197170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:18:44.926 [DEBUG] [Thread-197170] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:18:44.966 [DEBUG] [Thread-197170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:18:44.966 [DEBUG] [Thread-197170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:18:44.968 [DEBUG] [Thread-197170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:18:44.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:18:45.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:18:45.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:18:45.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:18:45.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:18:45.018 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:18:45.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:18:45.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:18:45.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:18:45.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.804215 -999.00  +15.80  27.80     38   +1.90 1 1 1 1 1     0    0 12.99 -47.11 ZNESW 31.8 27.8 171.4 36.9 16.1 -25.9 16.0 -25.3 15.7 -24.2 16.1 -25.0
2025-11-24T21:18:45.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:18:45.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:18:45.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.804215
2025-11-24T21:18:45.027 [DEBUG] [Thread-197170] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:18:45.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:18:45.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:18:45.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:18:45.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:18:45.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:18:45.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:18:04', tmtdew=15.94, humidity=33.62, cloud=0.0, wind=32.01, temperature=15.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:18:04', seeing=0.72, atlas_timestamp='2025-11-24T19:18:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:11:00')
2025-11-24T21:18:45.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:18:45.148 [DEBUG] [Thread-197173] [transport.py] [_log()] starting thread (client mode): 0xd0785480
2025-11-24T21:18:45.148 [DEBUG] [Thread-197173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:18:45.165 [DEBUG] [Thread-197173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:18:45.165 [INFO] [Thread-197173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] client lang: <none>
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] server lang: <none>
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] kex follows: False
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] Compression: none
2025-11-24T21:18:45.173 [DEBUG] [Thread-197173] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:18:45.230 [DEBUG] [Thread-197173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:18:45.230 [DEBUG] [Thread-197173] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:18:45.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:18:45.230 [DEBUG] [Thread-197173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:18:45.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:18:45.287 [DEBUG] [Thread-197173] [transport.py] [_log()] userauth is OK
2025-11-24T21:18:45.287 [DEBUG] [Thread-197173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:18:45.287 [DEBUG] [Thread-197173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:18:45.287 [DEBUG] [Thread-197173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:18:45.287 [DEBUG] [Thread-197173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:18:45.302 [INFO] [Thread-197173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:18:45.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:18:45.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:18:46.142 [DEBUG] [Thread-197173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:18:46.142 [DEBUG] [Thread-197173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:18:46.189 [DEBUG] [Thread-197173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:18:46.189 [DEBUG] [Thread-197173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:18:46.197 [DEBUG] [Thread-197173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:18:46.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:18:46.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-11-24T21:18:46.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-11-24T21:18:46.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:18:46.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:18:46.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:18:46.231 [DEBUG] [Thread-197173] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:18:56.768 [DEBUG] [Thread-197175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:19:12.178 [DEBUG] [Thread-197176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:19:16.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:19:16.256 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:19:16.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:19:17.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 18, 38), 16.04, 33.62, 0.0, 30.81, 15.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:19:17.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:18:38
2025-11-24T21:19:18.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:19:18.322 [DEBUG] [Thread-197177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:19:18.385 [DEBUG] [Thread-197178] [transport.py] [_log()] starting thread (client mode): 0xd07ce320
2025-11-24T21:19:18.387 [DEBUG] [Thread-197178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:19:18.387 [DEBUG] [Thread-197178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:19:18.388 [INFO] [Thread-197178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] client lang: <none>
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] server lang: <none>
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] kex follows: False
2025-11-24T21:19:18.399 [DEBUG] [Thread-197178] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:19:18.405 [DEBUG] [Thread-197178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:19:18.405 [DEBUG] [Thread-197178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:19:18.405 [DEBUG] [Thread-197178] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:19:18.405 [DEBUG] [Thread-197178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:19:18.405 [DEBUG] [Thread-197178] [transport.py] [_log()] Compression: none
2025-11-24T21:19:18.405 [DEBUG] [Thread-197178] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:19:18.458 [DEBUG] [Thread-197178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:19:18.463 [DEBUG] [Thread-197178] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:19:18.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:19:18.511 [DEBUG] [Thread-197178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:19:18.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:19:18.515 [DEBUG] [Thread-197178] [transport.py] [_log()] userauth is OK
2025-11-24T21:19:18.515 [DEBUG] [Thread-197178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:19:18.515 [DEBUG] [Thread-197178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:19:18.515 [DEBUG] [Thread-197178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:19:18.515 [DEBUG] [Thread-197178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:19:18.549 [INFO] [Thread-197178] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:19:18.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:19:19.191 [DEBUG] [Thread-197178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:19:19.191 [DEBUG] [Thread-197178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:19:19.192 [DEBUG] [Thread-197178] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:19:19.232 [DEBUG] [Thread-197178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:19:19.232 [DEBUG] [Thread-197178] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:19:19.235 [DEBUG] [Thread-197178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:19:19.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:19:19.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:19:19.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:19:19.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:19:19.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:19:19.264 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:19:19.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:19:19.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:19:19.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:19:19.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.804562 -999.00  +15.80  21.98     38   +1.80 1 1 1 1 1     0    0 12.75 -48.35 ZNESW 27.5 22.0 175.8 34.9 16.1 -25.9 16.0 -25.4 15.8 -24.2 16.0 -25.2
2025-11-24T21:19:19.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:19:19.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:19:19.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.804562
2025-11-24T21:19:19.271 [DEBUG] [Thread-197178] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:19:19.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:19:19.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:19:19.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:19:19.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:19:19.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:19:19.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:18:38', tmtdew=16.04, humidity=33.62, cloud=0.0, wind=30.81, temperature=15.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:19:15', seeing=0.74, atlas_timestamp='2025-11-24T19:18:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:19:19.371 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:19:19.380 [DEBUG] [Thread-197181] [transport.py] [_log()] starting thread (client mode): 0xd0710700
2025-11-24T21:19:19.381 [DEBUG] [Thread-197181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:19:19.395 [DEBUG] [Thread-197181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:19:19.395 [INFO] [Thread-197181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] client lang: <none>
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] server lang: <none>
2025-11-24T21:19:19.402 [DEBUG] [Thread-197181] [transport.py] [_log()] kex follows: False
2025-11-24T21:19:19.403 [DEBUG] [Thread-197181] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:19:19.403 [DEBUG] [Thread-197181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:19:19.403 [DEBUG] [Thread-197181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:19:19.403 [DEBUG] [Thread-197181] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:19:19.403 [DEBUG] [Thread-197181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:19:19.403 [DEBUG] [Thread-197181] [transport.py] [_log()] Compression: none
2025-11-24T21:19:19.403 [DEBUG] [Thread-197181] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:19:19.462 [DEBUG] [Thread-197181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:19:19.463 [DEBUG] [Thread-197181] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:19:19.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:19:19.463 [DEBUG] [Thread-197181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:19:19.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:19:19.519 [DEBUG] [Thread-197181] [transport.py] [_log()] userauth is OK
2025-11-24T21:19:19.519 [DEBUG] [Thread-197181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:19:19.519 [DEBUG] [Thread-197181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:19:19.519 [DEBUG] [Thread-197181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:19:19.519 [DEBUG] [Thread-197181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:19:19.536 [INFO] [Thread-197181] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:19:19.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:19:19.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:19:20.367 [DEBUG] [Thread-197181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:19:20.367 [DEBUG] [Thread-197181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:19:20.415 [DEBUG] [Thread-197181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:19:20.415 [DEBUG] [Thread-197181] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:19:20.423 [DEBUG] [Thread-197181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:19:20.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:19:20.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-11-24T21:19:20.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-11-24T21:19:20.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:19:20.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:19:20.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:19:20.461 [DEBUG] [Thread-197181] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:19:27.528 [DEBUG] [Thread-197183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:19:28.958 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:19:28.965 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:19:43.463 [DEBUG] [Thread-197184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:19:50.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:19:50.492 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:19:50.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-11-24T21:19:52.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 19, 15), 16.03, 33.64, 0.0, 31.62, 15.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:19:52.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:19:15
2025-11-24T21:19:52.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:19:52.653 [DEBUG] [Thread-197185] [transport.py] [_log()] starting thread (client mode): 0xd0713a60
2025-11-24T21:19:52.654 [DEBUG] [Thread-197185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:19:52.661 [DEBUG] [Thread-197185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:19:52.661 [INFO] [Thread-197185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:19:52.672 [DEBUG] [Thread-197185] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:19:52.672 [DEBUG] [Thread-197185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] client lang: <none>
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] server lang: <none>
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] kex follows: False
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:19:52.673 [DEBUG] [Thread-197185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:19:52.674 [DEBUG] [Thread-197185] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:19:52.674 [DEBUG] [Thread-197185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:19:52.674 [DEBUG] [Thread-197185] [transport.py] [_log()] Compression: none
2025-11-24T21:19:52.674 [DEBUG] [Thread-197185] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:19:52.713 [DEBUG] [Thread-197185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:19:52.718 [DEBUG] [Thread-197185] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:19:52.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:19:52.722 [DEBUG] [Thread-197185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:19:52.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:19:52.725 [DEBUG] [Thread-197185] [transport.py] [_log()] userauth is OK
2025-11-24T21:19:52.725 [DEBUG] [Thread-197185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:19:52.725 [DEBUG] [Thread-197185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:19:52.725 [DEBUG] [Thread-197185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:19:52.725 [DEBUG] [Thread-197185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:19:52.745 [INFO] [Thread-197185] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:19:52.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:19:53.528 [DEBUG] [Thread-197185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:19:53.528 [DEBUG] [Thread-197185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:19:53.529 [DEBUG] [Thread-197185] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:19:53.569 [DEBUG] [Thread-197185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:19:53.569 [DEBUG] [Thread-197185] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:19:53.573 [DEBUG] [Thread-197185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:19:53.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:19:53.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:19:53.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:19:53.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:19:53.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:19:53.590 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:19:53.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:19:53.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:19:53.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:19:53.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.804909 -999.00  +15.80  28.76     38   +1.80 1 1 1 1 1     0    0 12.52 -46.24 ZNESW 27.4 28.8 168.7 32.1 16.1 -26.1 16.0 -25.5 15.7 -24.3 16.0 -25.4
2025-11-24T21:19:53.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:19:53.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:19:53.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.804909
2025-11-24T21:19:53.604 [DEBUG] [Thread-197185] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:19:53.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:19:53.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:19:53.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:19:53.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:19:53.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:19:53.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:19:15', tmtdew=16.03, humidity=33.64, cloud=0.0, wind=31.62, temperature=15.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:19:50', seeing=0.75, atlas_timestamp='2025-11-24T19:19:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:19:53.701 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:19:53.715 [DEBUG] [Thread-197188] [transport.py] [_log()] starting thread (client mode): 0xd0710e50
2025-11-24T21:19:53.716 [DEBUG] [Thread-197188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:19:53.727 [DEBUG] [Thread-197188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:19:53.727 [INFO] [Thread-197188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] client lang: <none>
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] server lang: <none>
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] kex follows: False
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] Compression: none
2025-11-24T21:19:53.735 [DEBUG] [Thread-197188] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:19:53.794 [DEBUG] [Thread-197188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:19:53.795 [DEBUG] [Thread-197188] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:19:53.795 [DEBUG] [Thread-197188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:19:53.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:19:53.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:19:53.851 [DEBUG] [Thread-197188] [transport.py] [_log()] userauth is OK
2025-11-24T21:19:53.851 [DEBUG] [Thread-197188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:19:53.851 [DEBUG] [Thread-197188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:19:53.851 [DEBUG] [Thread-197188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:19:53.851 [DEBUG] [Thread-197188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:19:53.875 [INFO] [Thread-197188] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:19:53.876 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:19:53.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:19:54.744 [DEBUG] [Thread-197188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:19:54.745 [DEBUG] [Thread-197188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:19:54.792 [DEBUG] [Thread-197188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:19:54.793 [DEBUG] [Thread-197188] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:19:54.802 [DEBUG] [Thread-197188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:19:54.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:19:54.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:19:54.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-11-24T21:19:54.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:19:54.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:19:54.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:19:54.846 [DEBUG] [Thread-197188] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:19:58.636 [DEBUG] [Thread-197190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:20:14.064 [DEBUG] [Thread-197191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:20:18.668 [DEBUG] [Thread-197192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:20:24.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:20:24.966 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:20:25.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:20:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 19, 49), 16.04, 33.62, 0.0, 30.67, 15.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:20:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:19:49
2025-11-24T21:20:26.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:20:26.796 [DEBUG] [Thread-197193] [transport.py] [_log()] starting thread (client mode): 0xd07867a0
2025-11-24T21:20:26.798 [DEBUG] [Thread-197193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:20:26.799 [DEBUG] [Thread-197193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:20:26.799 [INFO] [Thread-197193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:20:26.806 [DEBUG] [Thread-197193] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:20:26.806 [DEBUG] [Thread-197193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:20:26.806 [DEBUG] [Thread-197193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:20:26.806 [DEBUG] [Thread-197193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:20:26.806 [DEBUG] [Thread-197193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:20:26.806 [DEBUG] [Thread-197193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:20:26.806 [DEBUG] [Thread-197193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:20:26.807 [DEBUG] [Thread-197193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:20:26.807 [DEBUG] [Thread-197193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:20:26.807 [DEBUG] [Thread-197193] [transport.py] [_log()] client lang: <none>
2025-11-24T21:20:26.807 [DEBUG] [Thread-197193] [transport.py] [_log()] server lang: <none>
2025-11-24T21:20:26.807 [DEBUG] [Thread-197193] [transport.py] [_log()] kex follows: False
2025-11-24T21:20:26.807 [DEBUG] [Thread-197193] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:20:26.807 [DEBUG] [Thread-197193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:20:26.808 [DEBUG] [Thread-197193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:20:26.808 [DEBUG] [Thread-197193] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:20:26.808 [DEBUG] [Thread-197193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:20:26.808 [DEBUG] [Thread-197193] [transport.py] [_log()] Compression: none
2025-11-24T21:20:26.808 [DEBUG] [Thread-197193] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:20:26.846 [DEBUG] [Thread-197193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:20:26.852 [DEBUG] [Thread-197193] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:20:26.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:20:26.855 [DEBUG] [Thread-197193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:20:26.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:20:26.860 [DEBUG] [Thread-197193] [transport.py] [_log()] userauth is OK
2025-11-24T21:20:26.861 [DEBUG] [Thread-197193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:20:26.861 [DEBUG] [Thread-197193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:20:26.861 [DEBUG] [Thread-197193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:20:26.861 [DEBUG] [Thread-197193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:20:26.892 [INFO] [Thread-197193] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:20:26.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:20:27.552 [DEBUG] [Thread-197193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:20:27.552 [DEBUG] [Thread-197193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:20:27.553 [DEBUG] [Thread-197193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:20:27.594 [DEBUG] [Thread-197193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:20:27.594 [DEBUG] [Thread-197193] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:20:27.596 [DEBUG] [Thread-197193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:20:27.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:20:27.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:20:27.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:20:27.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:20:27.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:20:27.618 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:20:27.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:20:27.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:20:27.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:20:27.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.805257 -999.00  +15.80  25.71     38   +1.80 1 1 1 1 1     0    0 12.91 -44.15 ZNESW 28.2 25.7 166.2 33.1 16.1 -26.0 15.9 -25.4 15.7 -24.4 16.0 -25.3
2025-11-24T21:20:27.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:20:27.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:20:27.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.805257
2025-11-24T21:20:27.625 [DEBUG] [Thread-197193] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:20:27.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:20:27.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:20:27.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:20:27.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:20:27.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:20:27.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:19:49', tmtdew=16.04, humidity=33.62, cloud=0.0, wind=30.67, temperature=15.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:20:24', seeing=0.83, atlas_timestamp='2025-11-24T19:19:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:20:27.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:20:27.740 [DEBUG] [Thread-197196] [transport.py] [_log()] starting thread (client mode): 0xd0702ef0
2025-11-24T21:20:27.740 [DEBUG] [Thread-197196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:20:27.754 [DEBUG] [Thread-197196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:20:27.754 [INFO] [Thread-197196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] client lang: <none>
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] server lang: <none>
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] kex follows: False
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] Compression: none
2025-11-24T21:20:27.763 [DEBUG] [Thread-197196] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:20:27.817 [DEBUG] [Thread-197196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:20:27.817 [DEBUG] [Thread-197196] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:20:27.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:20:27.818 [DEBUG] [Thread-197196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:20:27.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:20:27.876 [DEBUG] [Thread-197196] [transport.py] [_log()] userauth is OK
2025-11-24T21:20:27.876 [DEBUG] [Thread-197196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:20:27.876 [DEBUG] [Thread-197196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:20:27.876 [DEBUG] [Thread-197196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:20:27.876 [DEBUG] [Thread-197196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:20:27.895 [INFO] [Thread-197196] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:20:27.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:20:27.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:20:28.802 [DEBUG] [Thread-197196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:20:28.803 [DEBUG] [Thread-197196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:20:28.850 [DEBUG] [Thread-197196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:20:28.850 [DEBUG] [Thread-197196] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:20:28.859 [DEBUG] [Thread-197196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:20:28.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:20:28.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-11-24T21:20:28.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-11-24T21:20:28.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:20:28.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:20:28.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:20:28.906 [DEBUG] [Thread-197196] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:20:29.198 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:20:29.216 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:20:29.358 [DEBUG] [Thread-197198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:20:45.060 [DEBUG] [Thread-197199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:20:58.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:20:58.953 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:20:58.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-11-24T21:21:00.246 [DEBUG] [Thread-197200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:21:00.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 20, 23), 16.03, 33.62, 0.0, 31.34, 15.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:21:00.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:20:23
2025-11-24T21:21:00.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:21:01.035 [DEBUG] [Thread-197201] [transport.py] [_log()] starting thread (client mode): 0xd07025c0
2025-11-24T21:21:01.036 [DEBUG] [Thread-197201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:21:01.040 [DEBUG] [Thread-197201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:21:01.040 [INFO] [Thread-197201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] client lang: <none>
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] server lang: <none>
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] kex follows: False
2025-11-24T21:21:01.048 [DEBUG] [Thread-197201] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:21:01.049 [DEBUG] [Thread-197201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:21:01.049 [DEBUG] [Thread-197201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:21:01.049 [DEBUG] [Thread-197201] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:21:01.049 [DEBUG] [Thread-197201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:21:01.049 [DEBUG] [Thread-197201] [transport.py] [_log()] Compression: none
2025-11-24T21:21:01.049 [DEBUG] [Thread-197201] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:21:01.089 [DEBUG] [Thread-197201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:21:01.096 [DEBUG] [Thread-197201] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:21:01.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:21:01.099 [DEBUG] [Thread-197201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:21:01.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:21:01.103 [DEBUG] [Thread-197201] [transport.py] [_log()] userauth is OK
2025-11-24T21:21:01.103 [DEBUG] [Thread-197201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:21:01.103 [DEBUG] [Thread-197201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:21:01.104 [DEBUG] [Thread-197201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:21:01.104 [DEBUG] [Thread-197201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:21:01.127 [INFO] [Thread-197201] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:21:01.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:21:01.778 [DEBUG] [Thread-197201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:21:01.778 [DEBUG] [Thread-197201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:21:01.779 [DEBUG] [Thread-197201] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:21:01.820 [DEBUG] [Thread-197201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:21:01.820 [DEBUG] [Thread-197201] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:21:01.823 [DEBUG] [Thread-197201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:21:01.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:21:01.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:21:01.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:21:01.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:21:01.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:21:01.845 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:21:01.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:21:01.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:21:01.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:21:01.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.805603 -999.00  +15.70  22.86     38   +1.80 1 1 1 1 1     0    0 12.78 -43.83 ZNESW 23.2 22.9 165.8 30.3 16.0 -25.8 15.9 -25.4 15.7 -24.3 16.0 -25.4
2025-11-24T21:21:01.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:21:01.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:21:01.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.805603
2025-11-24T21:21:01.858 [DEBUG] [Thread-197201] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:21:01.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:21:01.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:21:01.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:21:01.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:21:01.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:21:01.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:20:23', tmtdew=16.03, humidity=33.62, cloud=0.0, wind=31.34, temperature=15.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:20:58', seeing=0.83, atlas_timestamp='2025-11-24T19:20:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:21:01.952 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:21:01.969 [DEBUG] [Thread-197204] [transport.py] [_log()] starting thread (client mode): 0xd0786890
2025-11-24T21:21:01.970 [DEBUG] [Thread-197204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:21:01.978 [DEBUG] [Thread-197204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:21:01.978 [INFO] [Thread-197204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:21:01.985 [DEBUG] [Thread-197204] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] client lang: <none>
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] server lang: <none>
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] kex follows: False
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] Compression: none
2025-11-24T21:21:01.986 [DEBUG] [Thread-197204] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:21:02.046 [DEBUG] [Thread-197204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:21:02.046 [DEBUG] [Thread-197204] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:21:02.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:21:02.046 [DEBUG] [Thread-197204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:21:02.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:21:02.111 [DEBUG] [Thread-197204] [transport.py] [_log()] userauth is OK
2025-11-24T21:21:02.111 [DEBUG] [Thread-197204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:21:02.111 [DEBUG] [Thread-197204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:21:02.111 [DEBUG] [Thread-197204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:21:02.111 [DEBUG] [Thread-197204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:21:02.125 [INFO] [Thread-197204] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:21:02.126 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:21:02.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:21:02.992 [DEBUG] [Thread-197204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:21:02.992 [DEBUG] [Thread-197204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:21:03.040 [DEBUG] [Thread-197204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:21:03.040 [DEBUG] [Thread-197204] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:21:03.048 [DEBUG] [Thread-197204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:21:03.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:21:03.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:21:03.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:21:03.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:21:03.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:21:03.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:21:03.086 [DEBUG] [Thread-197204] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:21:15.425 [DEBUG] [Thread-197206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:21:19.029 [DEBUG] [Thread-197207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:21:29.449 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:21:29.481 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:21:30.741 [DEBUG] [Thread-197208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:21:33.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:21:33.111 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:21:33.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-11-24T21:21:39.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 20, 57), 16.04, 33.6, 0.0, 30.93, 15.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:21:39.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:20:57
2025-11-24T21:21:39.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:21:40.178 [DEBUG] [Thread-197209] [transport.py] [_log()] starting thread (client mode): 0xd073a260
2025-11-24T21:21:40.181 [DEBUG] [Thread-197209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:21:40.181 [DEBUG] [Thread-197209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:21:40.182 [INFO] [Thread-197209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:21:40.217 [DEBUG] [Thread-197209] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:21:40.217 [DEBUG] [Thread-197209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:21:40.217 [DEBUG] [Thread-197209] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:21:40.217 [DEBUG] [Thread-197209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:21:40.217 [DEBUG] [Thread-197209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:21:40.218 [DEBUG] [Thread-197209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:21:40.218 [DEBUG] [Thread-197209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:21:40.218 [DEBUG] [Thread-197209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:21:40.218 [DEBUG] [Thread-197209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:21:40.218 [DEBUG] [Thread-197209] [transport.py] [_log()] client lang: <none>
2025-11-24T21:21:40.218 [DEBUG] [Thread-197209] [transport.py] [_log()] server lang: <none>
2025-11-24T21:21:40.218 [DEBUG] [Thread-197209] [transport.py] [_log()] kex follows: False
2025-11-24T21:21:40.218 [DEBUG] [Thread-197209] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:21:40.223 [DEBUG] [Thread-197209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:21:40.223 [DEBUG] [Thread-197209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:21:40.223 [DEBUG] [Thread-197209] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:21:40.225 [DEBUG] [Thread-197209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:21:40.225 [DEBUG] [Thread-197209] [transport.py] [_log()] Compression: none
2025-11-24T21:21:40.225 [DEBUG] [Thread-197209] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:21:40.343 [DEBUG] [Thread-197209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:21:40.370 [DEBUG] [Thread-197209] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:21:40.385 [DEBUG] [Thread-197209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:21:40.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:21:40.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:21:40.401 [DEBUG] [Thread-197209] [transport.py] [_log()] userauth is OK
2025-11-24T21:21:40.403 [DEBUG] [Thread-197209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:21:40.403 [DEBUG] [Thread-197209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:21:40.403 [DEBUG] [Thread-197209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:21:40.403 [DEBUG] [Thread-197209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:21:40.442 [INFO] [Thread-197209] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:21:40.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:21:41.184 [DEBUG] [Thread-197209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:21:41.184 [DEBUG] [Thread-197209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:21:41.187 [DEBUG] [Thread-197209] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:21:41.225 [DEBUG] [Thread-197209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:21:41.225 [DEBUG] [Thread-197209] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:21:41.229 [DEBUG] [Thread-197209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:21:41.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:21:41.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:21:41.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:21:41.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:21:41.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:21:41.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:21:41.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:21:41.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:21:41.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:21:41.285 [DEBUG] [Thread-197209] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:21:41.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.806298 -999.00  +15.70  22.08     38   +1.70 1 1 1 1 1     0    0 12.63 -41.82 ZNESW 21.7 22.1 170.6 31.9 16.0 -25.9 15.9 -25.3 15.7 -24.2 16.0 -25.2
2025-11-24T21:21:41.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:21:41.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:21:41.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.806298
2025-11-24T21:21:41.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:21:41.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:21:41.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:21:41.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:21:41.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:21:41.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:20:57', tmtdew=16.04, humidity=33.6, cloud=0.0, wind=30.93, temperature=15.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:21:32', seeing=0.76, atlas_timestamp='2025-11-24T19:21:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:21:41.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:21:41.530 [DEBUG] [Thread-197212] [transport.py] [_log()] starting thread (client mode): 0xd0739810
2025-11-24T21:21:41.530 [DEBUG] [Thread-197212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:21:41.544 [DEBUG] [Thread-197212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:21:41.544 [INFO] [Thread-197212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:21:41.551 [DEBUG] [Thread-197212] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:21:41.551 [DEBUG] [Thread-197212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:21:41.551 [DEBUG] [Thread-197212] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:21:41.551 [DEBUG] [Thread-197212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:21:41.551 [DEBUG] [Thread-197212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:21:41.551 [DEBUG] [Thread-197212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:21:41.551 [DEBUG] [Thread-197212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:21:41.551 [DEBUG] [Thread-197212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:21:41.551 [DEBUG] [Thread-197212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:21:41.551 [DEBUG] [Thread-197212] [transport.py] [_log()] client lang: <none>
2025-11-24T21:21:41.552 [DEBUG] [Thread-197212] [transport.py] [_log()] server lang: <none>
2025-11-24T21:21:41.552 [DEBUG] [Thread-197212] [transport.py] [_log()] kex follows: False
2025-11-24T21:21:41.552 [DEBUG] [Thread-197212] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:21:41.552 [DEBUG] [Thread-197212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:21:41.552 [DEBUG] [Thread-197212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:21:41.552 [DEBUG] [Thread-197212] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:21:41.552 [DEBUG] [Thread-197212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:21:41.552 [DEBUG] [Thread-197212] [transport.py] [_log()] Compression: none
2025-11-24T21:21:41.552 [DEBUG] [Thread-197212] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:21:41.610 [DEBUG] [Thread-197212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:21:41.610 [DEBUG] [Thread-197212] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:21:41.610 [DEBUG] [Thread-197212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:21:41.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:21:41.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:21:41.667 [DEBUG] [Thread-197212] [transport.py] [_log()] userauth is OK
2025-11-24T21:21:41.667 [DEBUG] [Thread-197212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:21:41.667 [DEBUG] [Thread-197212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:21:41.667 [DEBUG] [Thread-197212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:21:41.667 [DEBUG] [Thread-197212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:21:41.681 [INFO] [Thread-197212] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:21:41.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:21:41.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:21:42.527 [DEBUG] [Thread-197212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:21:42.528 [DEBUG] [Thread-197212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:21:42.574 [DEBUG] [Thread-197212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:21:42.574 [DEBUG] [Thread-197212] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:21:42.583 [DEBUG] [Thread-197212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:21:42.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:21:42.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-11-24T21:21:42.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-11-24T21:21:42.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:21:42.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:21:42.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:21:42.632 [DEBUG] [Thread-197212] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:21:45.843 [DEBUG] [Thread-197214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:22:01.140 [DEBUG] [Thread-197215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:22:12.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:22:12.682 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:22:12.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-11-24T21:22:14.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 21, 32), 16.02, 33.64, 0.0, 30.6, 15.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:22:14.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:21:32
2025-11-24T21:22:14.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:22:14.582 [DEBUG] [Thread-197216] [transport.py] [_log()] starting thread (client mode): 0xd07ceb00
2025-11-24T21:22:14.584 [DEBUG] [Thread-197216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:22:14.584 [DEBUG] [Thread-197216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:22:14.585 [INFO] [Thread-197216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] client lang: <none>
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] server lang: <none>
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] kex follows: False
2025-11-24T21:22:14.592 [DEBUG] [Thread-197216] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:22:14.593 [DEBUG] [Thread-197216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:22:14.593 [DEBUG] [Thread-197216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:22:14.593 [DEBUG] [Thread-197216] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:22:14.594 [DEBUG] [Thread-197216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:22:14.594 [DEBUG] [Thread-197216] [transport.py] [_log()] Compression: none
2025-11-24T21:22:14.594 [DEBUG] [Thread-197216] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:22:14.639 [DEBUG] [Thread-197216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:22:14.647 [DEBUG] [Thread-197216] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:22:14.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:22:14.650 [DEBUG] [Thread-197216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:22:14.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:22:14.653 [DEBUG] [Thread-197216] [transport.py] [_log()] userauth is OK
2025-11-24T21:22:14.653 [DEBUG] [Thread-197216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:22:14.654 [DEBUG] [Thread-197216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:22:14.654 [DEBUG] [Thread-197216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:22:14.654 [DEBUG] [Thread-197216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:22:14.672 [INFO] [Thread-197216] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:22:14.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:22:15.343 [DEBUG] [Thread-197216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:22:15.343 [DEBUG] [Thread-197216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:22:15.351 [DEBUG] [Thread-197216] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:22:15.384 [DEBUG] [Thread-197216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:22:15.384 [DEBUG] [Thread-197216] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:22:15.387 [DEBUG] [Thread-197216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:22:15.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:22:15.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:22:15.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:22:15.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:22:15.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:22:15.409 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:22:15.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:22:15.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:22:15.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:22:15.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.806645 -999.00  +15.70  21.64     38   +1.70 1 1 1 1 1     0    0 12.74 -39.05 ZNESW 24.8 21.6 175.4 30.3 16.0 -25.9 15.9 -25.1 15.7 -24.2 15.9 -25.1
2025-11-24T21:22:15.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:22:15.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:22:15.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.806645
2025-11-24T21:22:15.411 [DEBUG] [Thread-197216] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:22:15.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:22:15.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:22:15.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:22:15.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:22:15.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:22:15.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:21:32', tmtdew=16.02, humidity=33.64, cloud=0.0, wind=30.6, temperature=15.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:22:12', seeing=0.61, atlas_timestamp='2025-11-24T19:21:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:22:15.533 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:22:15.545 [DEBUG] [Thread-197219] [transport.py] [_log()] starting thread (client mode): 0xd07871f0
2025-11-24T21:22:15.545 [DEBUG] [Thread-197219] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:22:15.559 [DEBUG] [Thread-197219] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:22:15.559 [INFO] [Thread-197219] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] client lang: <none>
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] server lang: <none>
2025-11-24T21:22:15.566 [DEBUG] [Thread-197219] [transport.py] [_log()] kex follows: False
2025-11-24T21:22:15.567 [DEBUG] [Thread-197219] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:22:15.567 [DEBUG] [Thread-197219] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:22:15.567 [DEBUG] [Thread-197219] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:22:15.567 [DEBUG] [Thread-197219] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:22:15.567 [DEBUG] [Thread-197219] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:22:15.567 [DEBUG] [Thread-197219] [transport.py] [_log()] Compression: none
2025-11-24T21:22:15.567 [DEBUG] [Thread-197219] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:22:15.622 [DEBUG] [Thread-197219] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:22:15.622 [DEBUG] [Thread-197219] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:22:15.623 [DEBUG] [Thread-197219] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:22:15.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:22:15.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:22:15.679 [DEBUG] [Thread-197219] [transport.py] [_log()] userauth is OK
2025-11-24T21:22:15.679 [DEBUG] [Thread-197219] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:22:15.679 [DEBUG] [Thread-197219] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:22:15.679 [DEBUG] [Thread-197219] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:22:15.679 [DEBUG] [Thread-197219] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:22:15.692 [INFO] [Thread-197219] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:22:15.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:22:15.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:22:16.404 [DEBUG] [Thread-197221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:22:16.539 [DEBUG] [Thread-197219] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:22:16.539 [DEBUG] [Thread-197219] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:22:16.586 [DEBUG] [Thread-197219] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:22:16.586 [DEBUG] [Thread-197219] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:22:16.594 [DEBUG] [Thread-197219] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:22:16.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:22:16.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')
2025-11-24T21:22:16.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-11-24T21:22:16.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:22:16.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:22:16.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:22:16.631 [DEBUG] [Thread-197219] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:22:19.433 [DEBUG] [Thread-197222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:22:29.820 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:22:29.952 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:22:31.864 [DEBUG] [Thread-197223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:22:46.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:22:46.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:22:46.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-11-24T21:22:47.392 [DEBUG] [Thread-197224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:22:48.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 22, 11), 16.04, 33.59, 0.0, 31.09, 15.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:22:48.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:22:11
2025-11-24T21:22:48.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:22:48.783 [DEBUG] [Thread-197225] [transport.py] [_log()] starting thread (client mode): 0xd317f0a0
2025-11-24T21:22:48.807 [DEBUG] [Thread-197225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:22:48.818 [DEBUG] [Thread-197225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:22:48.820 [INFO] [Thread-197225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:22:48.827 [DEBUG] [Thread-197225] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:22:48.827 [DEBUG] [Thread-197225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] client lang: <none>
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] server lang: <none>
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] kex follows: False
2025-11-24T21:22:48.828 [DEBUG] [Thread-197225] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:22:48.829 [DEBUG] [Thread-197225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:22:48.829 [DEBUG] [Thread-197225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:22:48.829 [DEBUG] [Thread-197225] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:22:48.829 [DEBUG] [Thread-197225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:22:48.829 [DEBUG] [Thread-197225] [transport.py] [_log()] Compression: none
2025-11-24T21:22:48.829 [DEBUG] [Thread-197225] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:22:48.867 [DEBUG] [Thread-197225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:22:48.874 [DEBUG] [Thread-197225] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:22:48.875 [DEBUG] [Thread-197225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:22:48.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:22:48.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:22:48.880 [DEBUG] [Thread-197225] [transport.py] [_log()] userauth is OK
2025-11-24T21:22:48.880 [DEBUG] [Thread-197225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:22:48.881 [DEBUG] [Thread-197225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:22:48.881 [DEBUG] [Thread-197225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:22:48.881 [DEBUG] [Thread-197225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:22:48.899 [INFO] [Thread-197225] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:22:48.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:22:49.547 [DEBUG] [Thread-197225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:22:49.547 [DEBUG] [Thread-197225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:22:49.548 [DEBUG] [Thread-197225] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:22:49.588 [DEBUG] [Thread-197225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:22:49.588 [DEBUG] [Thread-197225] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:22:49.590 [DEBUG] [Thread-197225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:22:49.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:22:49.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:22:49.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:22:49.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:22:49.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:22:49.628 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:22:49.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:22:49.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:22:49.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:22:49.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.806992 -999.00  +15.70  21.10     38   +1.70 1 1 1 1 1     0    0 12.89 -40.55 ZNESW 24.6 21.1 173.8 30.6 16.0 -25.8 15.9 -25.3 15.7 -24.3 16.0 -25.2
2025-11-24T21:22:49.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:22:49.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:22:49.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.806992
2025-11-24T21:22:49.641 [DEBUG] [Thread-197225] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:22:49.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:22:49.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:22:49.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:22:49.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:22:49.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:22:49.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:22:11', tmtdew=16.04, humidity=33.59, cloud=0.0, wind=31.09, temperature=15.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:22:46', seeing=0.75, atlas_timestamp='2025-11-24T19:22:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:22:49.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:22:49.751 [DEBUG] [Thread-197228] [transport.py] [_log()] starting thread (client mode): 0xd317da50
2025-11-24T21:22:49.751 [DEBUG] [Thread-197228] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:22:49.766 [DEBUG] [Thread-197228] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:22:49.766 [INFO] [Thread-197228] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:22:49.773 [DEBUG] [Thread-197228] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:22:49.773 [DEBUG] [Thread-197228] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:22:49.773 [DEBUG] [Thread-197228] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:22:49.773 [DEBUG] [Thread-197228] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:22:49.773 [DEBUG] [Thread-197228] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:22:49.773 [DEBUG] [Thread-197228] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] client lang: <none>
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] server lang: <none>
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] kex follows: False
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] Compression: none
2025-11-24T21:22:49.774 [DEBUG] [Thread-197228] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:22:49.832 [DEBUG] [Thread-197228] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:22:49.832 [DEBUG] [Thread-197228] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:22:49.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:22:49.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:22:49.833 [DEBUG] [Thread-197228] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:22:49.887 [DEBUG] [Thread-197228] [transport.py] [_log()] userauth is OK
2025-11-24T21:22:49.887 [DEBUG] [Thread-197228] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:22:49.887 [DEBUG] [Thread-197228] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:22:49.887 [DEBUG] [Thread-197228] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:22:49.887 [DEBUG] [Thread-197228] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:22:49.901 [INFO] [Thread-197228] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:22:49.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:22:49.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:22:50.761 [DEBUG] [Thread-197228] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:22:50.761 [DEBUG] [Thread-197228] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:22:50.808 [DEBUG] [Thread-197228] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:22:50.808 [DEBUG] [Thread-197228] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:22:50.818 [DEBUG] [Thread-197228] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:22:50.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:22:50.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-11-24T21:22:50.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-11-24T21:22:50.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:22:50.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:22:50.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:22:50.854 [DEBUG] [Thread-197228] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:23:02.551 [DEBUG] [Thread-197230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:23:17.898 [DEBUG] [Thread-197231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:23:19.889 [DEBUG] [Thread-197232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:23:20.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:23:20.878 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:23:20.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-11-24T21:23:22.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 22, 45), 16.01, 33.55, 0.0, 30.98, 15.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:23:22.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:22:45
2025-11-24T21:23:22.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:23:22.920 [DEBUG] [Thread-197233] [transport.py] [_log()] starting thread (client mode): 0xd3188f10
2025-11-24T21:23:22.921 [DEBUG] [Thread-197233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:23:22.926 [DEBUG] [Thread-197233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:23:22.926 [INFO] [Thread-197233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] client lang: <none>
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] server lang: <none>
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] kex follows: False
2025-11-24T21:23:22.933 [DEBUG] [Thread-197233] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:23:22.934 [DEBUG] [Thread-197233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:23:22.934 [DEBUG] [Thread-197233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:23:22.935 [DEBUG] [Thread-197233] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:23:22.935 [DEBUG] [Thread-197233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:23:22.935 [DEBUG] [Thread-197233] [transport.py] [_log()] Compression: none
2025-11-24T21:23:22.935 [DEBUG] [Thread-197233] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:23:22.977 [DEBUG] [Thread-197233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:23:22.981 [DEBUG] [Thread-197233] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:23:22.983 [DEBUG] [Thread-197233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:23:22.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:23:22.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:23:22.988 [DEBUG] [Thread-197233] [transport.py] [_log()] userauth is OK
2025-11-24T21:23:22.988 [DEBUG] [Thread-197233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:23:22.988 [DEBUG] [Thread-197233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:23:22.988 [DEBUG] [Thread-197233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:23:22.988 [DEBUG] [Thread-197233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:23:23.008 [INFO] [Thread-197233] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:23:23.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:23:23.614 [DEBUG] [Thread-197233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:23:23.614 [DEBUG] [Thread-197233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:23:23.615 [DEBUG] [Thread-197233] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:23:23.655 [DEBUG] [Thread-197233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:23:23.655 [DEBUG] [Thread-197233] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:23:23.657 [DEBUG] [Thread-197233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:23:23.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:23:23.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:23:23.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:23:23.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:23:23.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:23:23.687 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:23:23.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:23:23.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:23:23.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:23:23.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.807340 -999.00  +15.70  23.28     38   +1.70 1 1 1 1 1     0    0 12.80 -36.76 ZNESW 17.9 23.3 175.0 28.1 16.0 -25.9 15.9 -25.3 15.7 -24.1 15.9 -25.2
2025-11-24T21:23:23.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:23:23.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:23:23.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.807340
2025-11-24T21:23:23.699 [DEBUG] [Thread-197233] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:23:23.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:23:23.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:23:23.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:23:23.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:23:23.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:23:23.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:22:45', tmtdew=16.01, humidity=33.55, cloud=0.0, wind=30.98, temperature=15.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:23:20', seeing=0.78, atlas_timestamp='2025-11-24T19:22:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:23:23.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:23:23.803 [DEBUG] [Thread-197236] [transport.py] [_log()] starting thread (client mode): 0xd07cce20
2025-11-24T21:23:23.804 [DEBUG] [Thread-197236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:23:23.822 [DEBUG] [Thread-197236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:23:23.822 [INFO] [Thread-197236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] client lang: <none>
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] server lang: <none>
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] kex follows: False
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] Compression: none
2025-11-24T21:23:23.830 [DEBUG] [Thread-197236] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:23:23.886 [DEBUG] [Thread-197236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:23:23.886 [DEBUG] [Thread-197236] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:23:23.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:23:23.886 [DEBUG] [Thread-197236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:23:23.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:23:23.943 [DEBUG] [Thread-197236] [transport.py] [_log()] userauth is OK
2025-11-24T21:23:23.943 [DEBUG] [Thread-197236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:23:23.943 [DEBUG] [Thread-197236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:23:23.943 [DEBUG] [Thread-197236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:23:23.943 [DEBUG] [Thread-197236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:23:23.957 [INFO] [Thread-197236] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:23:23.957 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:23:23.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:23:24.804 [DEBUG] [Thread-197236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:23:24.804 [DEBUG] [Thread-197236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:23:24.852 [DEBUG] [Thread-197236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:23:24.852 [DEBUG] [Thread-197236] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:23:24.860 [DEBUG] [Thread-197236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:23:24.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:23:24.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:23:24.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:23:24.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:23:24.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:23:24.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:23:24.895 [DEBUG] [Thread-197236] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:23:30.163 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:23:30.169 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:23:33.017 [DEBUG] [Thread-197238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:23:48.617 [DEBUG] [Thread-197239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:23:54.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:23:54.921 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:23:54.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-11-24T21:23:56.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 23, 20), 15.99, 33.59, 0.0, 30.88, 15.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:23:56.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:23:20
2025-11-24T21:23:56.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:23:56.884 [DEBUG] [Thread-197240] [transport.py] [_log()] starting thread (client mode): 0xd07125c0
2025-11-24T21:23:56.885 [DEBUG] [Thread-197240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:23:56.888 [DEBUG] [Thread-197240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:23:56.888 [INFO] [Thread-197240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:23:56.896 [DEBUG] [Thread-197240] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] client lang: <none>
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] server lang: <none>
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] kex follows: False
2025-11-24T21:23:56.897 [DEBUG] [Thread-197240] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:23:56.898 [DEBUG] [Thread-197240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:23:56.898 [DEBUG] [Thread-197240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:23:56.898 [DEBUG] [Thread-197240] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:23:56.898 [DEBUG] [Thread-197240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:23:56.899 [DEBUG] [Thread-197240] [transport.py] [_log()] Compression: none
2025-11-24T21:23:56.899 [DEBUG] [Thread-197240] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:23:56.936 [DEBUG] [Thread-197240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:23:56.942 [DEBUG] [Thread-197240] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:23:56.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:23:56.946 [DEBUG] [Thread-197240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:23:56.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:23:56.948 [DEBUG] [Thread-197240] [transport.py] [_log()] userauth is OK
2025-11-24T21:23:56.949 [DEBUG] [Thread-197240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:23:56.949 [DEBUG] [Thread-197240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:23:56.949 [DEBUG] [Thread-197240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:23:56.949 [DEBUG] [Thread-197240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:23:56.980 [INFO] [Thread-197240] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:23:56.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:23:57.637 [DEBUG] [Thread-197240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:23:57.637 [DEBUG] [Thread-197240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:23:57.638 [DEBUG] [Thread-197240] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:23:57.678 [DEBUG] [Thread-197240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:23:57.678 [DEBUG] [Thread-197240] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:23:57.680 [DEBUG] [Thread-197240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:23:57.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:23:57.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:23:57.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:23:57.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:23:57.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:23:57.703 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:23:57.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:23:57.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:23:57.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:23:57.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.807687 -999.00  +15.70  20.06     38   +1.70 1 1 1 1 1     0    0 12.71 -38.48 ZNESW 19.9 20.1 177.6 33.0 16.0 -25.8 15.9 -25.3 15.6 -24.3 16.0 -25.2
2025-11-24T21:23:57.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:23:57.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:23:57.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.807687
2025-11-24T21:23:57.717 [DEBUG] [Thread-197240] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:23:57.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:23:57.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:23:57.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:23:57.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:23:57.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:23:57.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:23:20', tmtdew=15.99, humidity=33.59, cloud=0.0, wind=30.88, temperature=15.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:23:54', seeing=0.68, atlas_timestamp='2025-11-24T19:23:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:23:57.814 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:23:57.826 [DEBUG] [Thread-197243] [transport.py] [_log()] starting thread (client mode): 0xd317da80
2025-11-24T21:23:57.826 [DEBUG] [Thread-197243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:23:57.843 [DEBUG] [Thread-197243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:23:57.843 [INFO] [Thread-197243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] client lang: <none>
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] server lang: <none>
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] kex follows: False
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] Compression: none
2025-11-24T21:23:57.851 [DEBUG] [Thread-197243] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:23:57.907 [DEBUG] [Thread-197243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:23:57.908 [DEBUG] [Thread-197243] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:23:57.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:23:57.908 [DEBUG] [Thread-197243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:23:57.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:23:57.963 [DEBUG] [Thread-197243] [transport.py] [_log()] userauth is OK
2025-11-24T21:23:57.964 [DEBUG] [Thread-197243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:23:57.964 [DEBUG] [Thread-197243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:23:57.964 [DEBUG] [Thread-197243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:23:57.964 [DEBUG] [Thread-197243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:23:57.979 [INFO] [Thread-197243] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:23:57.979 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:23:57.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:23:58.851 [DEBUG] [Thread-197243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:23:58.851 [DEBUG] [Thread-197243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:23:58.899 [DEBUG] [Thread-197243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:23:58.899 [DEBUG] [Thread-197243] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:23:58.907 [DEBUG] [Thread-197243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:23:58.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:23:58.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-11-24T21:23:58.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-11-24T21:23:58.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:23:58.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:23:58.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:23:58.941 [DEBUG] [Thread-197243] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:24:03.958 [DEBUG] [Thread-197245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:24:19.213 [DEBUG] [Thread-197246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:24:20.221 [DEBUG] [Thread-197247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:24:28.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:24:28.969 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:24:29.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:24:30.377 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:24:30.383 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:24:30.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 23, 53), 16.02, 33.64, 0.0, 29.82, 15.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:24:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:23:53
2025-11-24T21:24:30.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:24:30.809 [DEBUG] [Thread-197248] [transport.py] [_log()] starting thread (client mode): 0xd0711a80
2025-11-24T21:24:30.811 [DEBUG] [Thread-197248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:24:30.811 [DEBUG] [Thread-197248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:24:30.813 [INFO] [Thread-197248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:24:30.818 [DEBUG] [Thread-197248] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:24:30.818 [DEBUG] [Thread-197248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:24:30.818 [DEBUG] [Thread-197248] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:24:30.818 [DEBUG] [Thread-197248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:24:30.818 [DEBUG] [Thread-197248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:24:30.818 [DEBUG] [Thread-197248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:24:30.818 [DEBUG] [Thread-197248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:24:30.818 [DEBUG] [Thread-197248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:24:30.818 [DEBUG] [Thread-197248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:24:30.818 [DEBUG] [Thread-197248] [transport.py] [_log()] client lang: <none>
2025-11-24T21:24:30.819 [DEBUG] [Thread-197248] [transport.py] [_log()] server lang: <none>
2025-11-24T21:24:30.819 [DEBUG] [Thread-197248] [transport.py] [_log()] kex follows: False
2025-11-24T21:24:30.819 [DEBUG] [Thread-197248] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:24:30.819 [DEBUG] [Thread-197248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:24:30.819 [DEBUG] [Thread-197248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:24:30.819 [DEBUG] [Thread-197248] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:24:30.819 [DEBUG] [Thread-197248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:24:30.819 [DEBUG] [Thread-197248] [transport.py] [_log()] Compression: none
2025-11-24T21:24:30.820 [DEBUG] [Thread-197248] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:24:30.855 [DEBUG] [Thread-197248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:24:30.860 [DEBUG] [Thread-197248] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:24:30.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:24:30.866 [DEBUG] [Thread-197248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:24:30.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:24:30.868 [DEBUG] [Thread-197248] [transport.py] [_log()] userauth is OK
2025-11-24T21:24:30.868 [DEBUG] [Thread-197248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:24:30.869 [DEBUG] [Thread-197248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:24:30.869 [DEBUG] [Thread-197248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:24:30.869 [DEBUG] [Thread-197248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:24:30.898 [INFO] [Thread-197248] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:24:30.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:24:31.560 [DEBUG] [Thread-197248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:24:31.560 [DEBUG] [Thread-197248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:24:31.561 [DEBUG] [Thread-197248] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:24:31.601 [DEBUG] [Thread-197248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:24:31.601 [DEBUG] [Thread-197248] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:24:31.603 [DEBUG] [Thread-197248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:24:31.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:24:31.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:24:31.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:24:31.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:24:31.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:24:31.624 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:24:31.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:24:31.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:24:31.628 [DEBUG] [Thread-197248] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:24:31.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:24:31.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.808034 -999.00  +15.70  25.29     38   +1.70 1 1 1 1 1     0    0 12.99 -37.07 ZNESW 24.5 25.3 171.2 29.5 16.0 -25.8 15.9 -25.3 15.6 -24.2 15.9 -25.1
2025-11-24T21:24:31.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:24:31.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:24:31.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.808034
2025-11-24T21:24:31.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:24:31.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:24:31.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:24:31.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:24:31.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:24:31.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:23:53', tmtdew=16.02, humidity=33.64, cloud=0.0, wind=29.82, temperature=15.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:24:28', seeing=0.47, atlas_timestamp='2025-11-24T19:23:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:24:31.739 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:24:31.751 [DEBUG] [Thread-197251] [transport.py] [_log()] starting thread (client mode): 0xd07134f0
2025-11-24T21:24:31.751 [DEBUG] [Thread-197251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:24:31.765 [DEBUG] [Thread-197251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:24:31.765 [INFO] [Thread-197251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:24:31.772 [DEBUG] [Thread-197251] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:24:31.772 [DEBUG] [Thread-197251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:24:31.772 [DEBUG] [Thread-197251] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:24:31.772 [DEBUG] [Thread-197251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:24:31.772 [DEBUG] [Thread-197251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:24:31.772 [DEBUG] [Thread-197251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] client lang: <none>
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] server lang: <none>
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] kex follows: False
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] Compression: none
2025-11-24T21:24:31.773 [DEBUG] [Thread-197251] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:24:31.832 [DEBUG] [Thread-197251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:24:31.832 [DEBUG] [Thread-197251] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:24:31.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:24:31.833 [DEBUG] [Thread-197251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:24:31.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:24:31.887 [DEBUG] [Thread-197251] [transport.py] [_log()] userauth is OK
2025-11-24T21:24:31.887 [DEBUG] [Thread-197251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:24:31.887 [DEBUG] [Thread-197251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:24:31.887 [DEBUG] [Thread-197251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:24:31.887 [DEBUG] [Thread-197251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:24:31.910 [INFO] [Thread-197251] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:24:31.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:24:31.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:24:32.734 [DEBUG] [Thread-197251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:24:32.734 [DEBUG] [Thread-197251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:24:32.783 [DEBUG] [Thread-197251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:24:32.783 [DEBUG] [Thread-197251] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:24:32.791 [DEBUG] [Thread-197251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:24:32.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:24:32.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-11-24T21:24:32.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') -> 00000000
2025-11-24T21:24:32.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:24:32.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:24:32.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:24:32.826 [DEBUG] [Thread-197251] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:24:34.338 [DEBUG] [Thread-197253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:24:49.603 [DEBUG] [Thread-197254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:25:02.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:25:03.045 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:25:03.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-11-24T21:25:04.965 [DEBUG] [Thread-197255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:25:10.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 24, 27), 16.01, 33.67, 0.0, 30.52, 15.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:25:10.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:24:27
2025-11-24T21:25:10.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:25:10.736 [DEBUG] [Thread-197256] [transport.py] [_log()] starting thread (client mode): 0xc9b81a20
2025-11-24T21:25:10.737 [DEBUG] [Thread-197256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:25:10.745 [DEBUG] [Thread-197256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:25:10.746 [INFO] [Thread-197256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:25:10.751 [DEBUG] [Thread-197256] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] client lang: <none>
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] server lang: <none>
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] kex follows: False
2025-11-24T21:25:10.752 [DEBUG] [Thread-197256] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:25:10.753 [DEBUG] [Thread-197256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:25:10.753 [DEBUG] [Thread-197256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:25:10.753 [DEBUG] [Thread-197256] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:25:10.753 [DEBUG] [Thread-197256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:25:10.753 [DEBUG] [Thread-197256] [transport.py] [_log()] Compression: none
2025-11-24T21:25:10.753 [DEBUG] [Thread-197256] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:25:10.783 [DEBUG] [Thread-197256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:25:10.789 [DEBUG] [Thread-197256] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:25:10.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:25:10.792 [DEBUG] [Thread-197256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:25:10.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:25:10.796 [DEBUG] [Thread-197256] [transport.py] [_log()] userauth is OK
2025-11-24T21:25:10.796 [DEBUG] [Thread-197256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:25:10.796 [DEBUG] [Thread-197256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:25:10.796 [DEBUG] [Thread-197256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:25:10.796 [DEBUG] [Thread-197256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:25:10.818 [INFO] [Thread-197256] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:25:10.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:25:12.895 [DEBUG] [Thread-197256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:25:12.895 [DEBUG] [Thread-197256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:25:12.896 [DEBUG] [Thread-197256] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:25:12.935 [DEBUG] [Thread-197256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:25:12.935 [DEBUG] [Thread-197256] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:25:12.939 [DEBUG] [Thread-197256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:25:13.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:25:13.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:25:13.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:25:13.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:25:13.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:25:13.045 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:25:13.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:25:13.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:25:13.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:25:13.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.808729 -999.00  +15.70  15.68     38   +1.70 1 1 1 1 1     0    0 12.85 -35.39 ZNESW 16.7 15.7 176.2 31.2 15.9 -25.7 15.9 -25.3 15.6 -24.4 15.9 -25.1
2025-11-24T21:25:13.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:25:13.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:25:13.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.808729
2025-11-24T21:25:13.052 [DEBUG] [Thread-197256] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:25:13.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:25:13.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:25:13.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:25:13.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:25:13.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:25:13.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:24:27', tmtdew=16.01, humidity=33.67, cloud=0.0, wind=30.52, temperature=15.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:24:28', seeing=0.47, atlas_timestamp='2025-11-24T19:24:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[0.01774999999999949, 0.048250000000001236, 0.054250000000001464, -0.0065000000000008384, 0.07000000000000028, 0.07525000000000048, 0.04800000000000004, 0.06725000000000136, 0.04400000000000048, 0.03300000000000125, 0.03924999999999912, 0.04550000000000054, 0.11199999999999832, 0.09124999999999872, 0.028499999999999304, 0.019000000000000128, 0.060249999999999915, 0.06450000000000067, 0.06599999999999895, 0.02424999999999855, 0.11599999999999966, 0.11874999999999858, 0.051249999999999574, 0.0467499999999994, 0.041999999999999815, 0.06349999999999945, 0.08774999999999977, 0.09149999999999991, 0.12349999999999994, -0.004999999999999005, 0.040000000000000924, 0.03049999999999997, 0.062249999999998806], zp_timestamp='2025-11-24T19:16:00')
2025-11-24T21:25:13.165 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:25:20.402 [DEBUG] [Thread-197259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:25:20.516 [DEBUG] [Thread-197260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:25:30.590 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:25:30.598 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:25:35.635 [DEBUG] [Thread-197261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:25:50.800 [DEBUG] [Thread-197262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:26:05.919 [DEBUG] [Thread-197263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:26:20.953 [DEBUG] [Thread-197264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:26:21.010 [DEBUG] [Thread-197265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:26:30.819 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:26:30.846 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:26:36.151 [DEBUG] [Thread-197266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:26:51.372 [DEBUG] [Thread-197267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:27:06.548 [DEBUG] [Thread-197268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:27:11.921 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:27:21.456 [DEBUG] [Thread-197269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:27:21.725 [DEBUG] [Thread-197270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:27:26.403 [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-11-24T21:27:31.111 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:27:31.119 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:27:36.822 [DEBUG] [Thread-197271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:27:51.873 [DEBUG] [Thread-197272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:27:56.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:27:56.444 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:27:56.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-11-24T21:27:57.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 27, 28), 16.02, 33.64, 0.0, 30.22, 15.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:27:57.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:27:28
2025-11-24T21:27:57.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:27:57.722 [DEBUG] [Thread-197273] [transport.py] [_log()] starting thread (client mode): 0xd3151ae0
2025-11-24T21:27:57.723 [DEBUG] [Thread-197273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:27:57.729 [DEBUG] [Thread-197273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:27:57.729 [INFO] [Thread-197273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] client lang: <none>
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] server lang: <none>
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] kex follows: False
2025-11-24T21:27:57.747 [DEBUG] [Thread-197273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:27:57.748 [DEBUG] [Thread-197273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:27:57.748 [DEBUG] [Thread-197273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:27:57.748 [DEBUG] [Thread-197273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:27:57.748 [DEBUG] [Thread-197273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:27:57.748 [DEBUG] [Thread-197273] [transport.py] [_log()] Compression: none
2025-11-24T21:27:57.748 [DEBUG] [Thread-197273] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:27:57.783 [DEBUG] [Thread-197273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:27:57.787 [DEBUG] [Thread-197273] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:27:57.789 [DEBUG] [Thread-197273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:27:57.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:27:57.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:27:57.793 [DEBUG] [Thread-197273] [transport.py] [_log()] userauth is OK
2025-11-24T21:27:57.793 [DEBUG] [Thread-197273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:27:57.794 [DEBUG] [Thread-197273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:27:57.794 [DEBUG] [Thread-197273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:27:57.794 [DEBUG] [Thread-197273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:27:57.812 [INFO] [Thread-197273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:27:57.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:27:58.467 [DEBUG] [Thread-197273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:27:58.467 [DEBUG] [Thread-197273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:27:58.468 [DEBUG] [Thread-197273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:27:58.508 [DEBUG] [Thread-197273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:27:58.508 [DEBUG] [Thread-197273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:27:58.511 [DEBUG] [Thread-197273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:27:58.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:27:58.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:27:58.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:27:58.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:27:58.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:27:58.528 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:27:58.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:27:58.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:27:58.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:27:58.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.810465 -999.00  +15.60  22.14     38   +1.60 1 1 1 1 1     0    0 13.46 -24.58 ZNESW 19.7 22.1 176.6 25.2 15.9 -25.7 15.8 -25.3 15.6 -24.2 15.8 -25.0
2025-11-24T21:27:58.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:27:58.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:27:58.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.810465
2025-11-24T21:27:58.535 [DEBUG] [Thread-197273] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:27:58.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:27:58.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:27:58.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:27:58.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:27:58.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:27:58.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:27:28', tmtdew=16.02, humidity=33.64, cloud=0.0, wind=30.22, temperature=15.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:27:28', seeing=0.58, atlas_timestamp='2025-11-24T19:27:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:21:00')
2025-11-24T21:27:58.633 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:27:58.645 [DEBUG] [Thread-197276] [transport.py] [_log()] starting thread (client mode): 0xd073a6e0
2025-11-24T21:27:58.646 [DEBUG] [Thread-197276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:27:58.660 [DEBUG] [Thread-197276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:27:58.660 [INFO] [Thread-197276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] client lang: <none>
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] server lang: <none>
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] kex follows: False
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] Compression: none
2025-11-24T21:27:58.668 [DEBUG] [Thread-197276] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:27:58.722 [DEBUG] [Thread-197276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:27:58.723 [DEBUG] [Thread-197276] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:27:58.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:27:58.723 [DEBUG] [Thread-197276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:27:58.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:27:58.779 [DEBUG] [Thread-197276] [transport.py] [_log()] userauth is OK
2025-11-24T21:27:58.779 [DEBUG] [Thread-197276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:27:58.779 [DEBUG] [Thread-197276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:27:58.779 [DEBUG] [Thread-197276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:27:58.779 [DEBUG] [Thread-197276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:27:58.793 [INFO] [Thread-197276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:27:58.793 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:27:58.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:27:59.679 [DEBUG] [Thread-197276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:27:59.679 [DEBUG] [Thread-197276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:27:59.727 [DEBUG] [Thread-197276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:27:59.727 [DEBUG] [Thread-197276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:27:59.735 [DEBUG] [Thread-197276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:27:59.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:27:59.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-11-24T21:27:59.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-11-24T21:27:59.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:27:59.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:27:59.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:27:59.770 [DEBUG] [Thread-197276] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:28:06.933 [DEBUG] [Thread-197278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:28:21.838 [DEBUG] [Thread-197279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:28:22.098 [DEBUG] [Thread-197280 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:28:29.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:28:29.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:28:29.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:28:31.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 28, 2), 16.02, 33.64, 0.0, 29.68, 15.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:28:31.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:28:02
2025-11-24T21:28:31.325 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:28:31.327 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:28:31.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:28:31.662 [DEBUG] [Thread-197281] [transport.py] [_log()] starting thread (client mode): 0xd0787be0
2025-11-24T21:28:31.663 [DEBUG] [Thread-197281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:28:31.670 [DEBUG] [Thread-197281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:28:31.671 [INFO] [Thread-197281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:28:31.678 [DEBUG] [Thread-197281] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:28:31.678 [DEBUG] [Thread-197281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:28:31.678 [DEBUG] [Thread-197281] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:28:31.678 [DEBUG] [Thread-197281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:28:31.678 [DEBUG] [Thread-197281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:28:31.678 [DEBUG] [Thread-197281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:28:31.679 [DEBUG] [Thread-197281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:28:31.679 [DEBUG] [Thread-197281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:28:31.679 [DEBUG] [Thread-197281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:28:31.679 [DEBUG] [Thread-197281] [transport.py] [_log()] client lang: <none>
2025-11-24T21:28:31.679 [DEBUG] [Thread-197281] [transport.py] [_log()] server lang: <none>
2025-11-24T21:28:31.679 [DEBUG] [Thread-197281] [transport.py] [_log()] kex follows: False
2025-11-24T21:28:31.679 [DEBUG] [Thread-197281] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:28:31.680 [DEBUG] [Thread-197281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:28:31.680 [DEBUG] [Thread-197281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:28:31.681 [DEBUG] [Thread-197281] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:28:31.681 [DEBUG] [Thread-197281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:28:31.681 [DEBUG] [Thread-197281] [transport.py] [_log()] Compression: none
2025-11-24T21:28:31.681 [DEBUG] [Thread-197281] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:28:31.724 [DEBUG] [Thread-197281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:28:31.729 [DEBUG] [Thread-197281] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:28:31.731 [DEBUG] [Thread-197281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:28:31.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:28:31.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:28:31.738 [DEBUG] [Thread-197281] [transport.py] [_log()] userauth is OK
2025-11-24T21:28:31.739 [DEBUG] [Thread-197281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:28:31.739 [DEBUG] [Thread-197281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:28:31.739 [DEBUG] [Thread-197281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:28:31.739 [DEBUG] [Thread-197281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:28:31.765 [INFO] [Thread-197281] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:28:31.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:28:32.571 [DEBUG] [Thread-197281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:28:32.571 [DEBUG] [Thread-197281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:28:32.573 [DEBUG] [Thread-197281] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:28:32.613 [DEBUG] [Thread-197281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:28:32.613 [DEBUG] [Thread-197281] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:28:32.617 [DEBUG] [Thread-197281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:28:32.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:28:32.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:28:32.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:28:32.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:28:32.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:28:32.646 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:28:32.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:28:32.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:28:32.649 [DEBUG] [Thread-197281] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:28:32.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:28:32.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.810812 -999.00  +15.60  19.60     38   +1.60 1 1 1 1 1     0    0 13.19 -19.82 ZNESW 18.8 19.6 166.6 29.1 15.9 -25.7 15.8 -25.0 15.5 -24.1 15.8 -24.9
2025-11-24T21:28:32.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:28:32.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:28:32.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.810812
2025-11-24T21:28:32.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:28:32.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:28:32.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:28:32.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:28:32.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:28:32.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:28:02', tmtdew=16.02, humidity=33.64, cloud=0.0, wind=29.68, temperature=15.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:28:02', seeing=0.53, atlas_timestamp='2025-11-24T19:27:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:28:32.758 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:28:32.771 [DEBUG] [Thread-197284] [transport.py] [_log()] starting thread (client mode): 0xc9b82fe0
2025-11-24T21:28:32.771 [DEBUG] [Thread-197284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:28:32.785 [DEBUG] [Thread-197284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:28:32.785 [INFO] [Thread-197284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:28:32.793 [DEBUG] [Thread-197284] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:28:32.793 [DEBUG] [Thread-197284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:28:32.793 [DEBUG] [Thread-197284] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:28:32.793 [DEBUG] [Thread-197284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:28:32.793 [DEBUG] [Thread-197284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:28:32.793 [DEBUG] [Thread-197284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:28:32.794 [DEBUG] [Thread-197284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:28:32.794 [DEBUG] [Thread-197284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:28:32.794 [DEBUG] [Thread-197284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:28:32.794 [DEBUG] [Thread-197284] [transport.py] [_log()] client lang: <none>
2025-11-24T21:28:32.794 [DEBUG] [Thread-197284] [transport.py] [_log()] server lang: <none>
2025-11-24T21:28:32.794 [DEBUG] [Thread-197284] [transport.py] [_log()] kex follows: False
2025-11-24T21:28:32.794 [DEBUG] [Thread-197284] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:28:32.795 [DEBUG] [Thread-197284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:28:32.795 [DEBUG] [Thread-197284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:28:32.795 [DEBUG] [Thread-197284] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:28:32.795 [DEBUG] [Thread-197284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:28:32.795 [DEBUG] [Thread-197284] [transport.py] [_log()] Compression: none
2025-11-24T21:28:32.795 [DEBUG] [Thread-197284] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:28:32.853 [DEBUG] [Thread-197284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:28:32.854 [DEBUG] [Thread-197284] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:28:32.854 [DEBUG] [Thread-197284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:28:32.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:28:32.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:28:32.912 [DEBUG] [Thread-197284] [transport.py] [_log()] userauth is OK
2025-11-24T21:28:32.913 [DEBUG] [Thread-197284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:28:32.913 [DEBUG] [Thread-197284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:28:32.913 [DEBUG] [Thread-197284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:28:32.913 [DEBUG] [Thread-197284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:28:32.933 [INFO] [Thread-197284] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:28:32.933 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:28:32.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:28:33.802 [DEBUG] [Thread-197284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:28:33.802 [DEBUG] [Thread-197284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:28:33.841 [DEBUG] [Thread-197284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:28:33.841 [DEBUG] [Thread-197284] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:28:33.849 [DEBUG] [Thread-197284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:28:33.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:28:33.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:28: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') -> 00000000
2025-11-24T21:28:33.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:28:33.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:28:33.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:28:33.884 [DEBUG] [Thread-197284] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:28:37.134 [DEBUG] [Thread-197286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:28:52.265 [DEBUG] [Thread-197287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:29:03.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:29:03.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:29:03.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-11-24T21:29:05.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 28, 35), 16.07, 33.64, 0.0, 29.01, 15.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:29:05.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:28:35
2025-11-24T21:29:05.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:29:05.864 [DEBUG] [Thread-197288] [transport.py] [_log()] starting thread (client mode): 0xd0784670
2025-11-24T21:29:05.865 [DEBUG] [Thread-197288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:29:05.866 [DEBUG] [Thread-197288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:29:05.866 [INFO] [Thread-197288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:29:05.871 [DEBUG] [Thread-197288] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:29:05.871 [DEBUG] [Thread-197288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:29:05.871 [DEBUG] [Thread-197288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:29:05.871 [DEBUG] [Thread-197288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:29:05.871 [DEBUG] [Thread-197288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:29:05.872 [DEBUG] [Thread-197288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:29:05.872 [DEBUG] [Thread-197288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:29:05.872 [DEBUG] [Thread-197288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:29:05.872 [DEBUG] [Thread-197288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:29:05.872 [DEBUG] [Thread-197288] [transport.py] [_log()] client lang: <none>
2025-11-24T21:29:05.872 [DEBUG] [Thread-197288] [transport.py] [_log()] server lang: <none>
2025-11-24T21:29:05.872 [DEBUG] [Thread-197288] [transport.py] [_log()] kex follows: False
2025-11-24T21:29:05.872 [DEBUG] [Thread-197288] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:29:05.873 [DEBUG] [Thread-197288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:29:05.873 [DEBUG] [Thread-197288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:29:05.873 [DEBUG] [Thread-197288] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:29:05.873 [DEBUG] [Thread-197288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:29:05.873 [DEBUG] [Thread-197288] [transport.py] [_log()] Compression: none
2025-11-24T21:29:05.873 [DEBUG] [Thread-197288] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:29:05.907 [DEBUG] [Thread-197288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:29:05.912 [DEBUG] [Thread-197288] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:29:05.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:29:05.915 [DEBUG] [Thread-197288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:29:05.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:29:05.918 [DEBUG] [Thread-197288] [transport.py] [_log()] userauth is OK
2025-11-24T21:29:05.918 [DEBUG] [Thread-197288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:29:05.919 [DEBUG] [Thread-197288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:29:05.919 [DEBUG] [Thread-197288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:29:05.919 [DEBUG] [Thread-197288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:29:05.951 [INFO] [Thread-197288] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:29:05.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:29:06.547 [DEBUG] [Thread-197288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:29:06.547 [DEBUG] [Thread-197288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:29:06.558 [DEBUG] [Thread-197288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:29:06.589 [DEBUG] [Thread-197288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:29:06.589 [DEBUG] [Thread-197288] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:29:06.593 [DEBUG] [Thread-197288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:29:06.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:29:06.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:29:06.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:29:06.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:29:06.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:29:06.620 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:29:06.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:29:06.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:29:06.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:29:06.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.811507 -999.00  +15.60  21.52     38   +1.60 1 1 1 1 1     0    0 13.44 -11.93 ZNESW 23.5 21.5 174.0 28.0 15.9 -25.7 15.8 -25.1 15.5 -24.1 15.8 -24.9
2025-11-24T21:29:06.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:29:06.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:29:06.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.811507
2025-11-24T21:29:06.630 [DEBUG] [Thread-197288] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:29:06.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:29:06.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:29:06.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:29:06.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:29:06.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:29:06.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:28:35', tmtdew=16.07, humidity=33.64, cloud=0.0, wind=29.01, temperature=15.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:28:35', seeing=0.55, atlas_timestamp='2025-11-24T19:28:34.205', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:29:06.748 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:29:06.760 [DEBUG] [Thread-197291] [transport.py] [_log()] starting thread (client mode): 0xd0784490
2025-11-24T21:29:06.760 [DEBUG] [Thread-197291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:29:06.775 [DEBUG] [Thread-197291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:29:06.775 [INFO] [Thread-197291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:29:06.783 [DEBUG] [Thread-197291] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:29:06.783 [DEBUG] [Thread-197291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:29:06.783 [DEBUG] [Thread-197291] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:29:06.783 [DEBUG] [Thread-197291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] client lang: <none>
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] server lang: <none>
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] kex follows: False
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:29:06.784 [DEBUG] [Thread-197291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:29:06.785 [DEBUG] [Thread-197291] [transport.py] [_log()] Compression: none
2025-11-24T21:29:06.785 [DEBUG] [Thread-197291] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:29:06.844 [DEBUG] [Thread-197291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:29:06.845 [DEBUG] [Thread-197291] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:29:06.846 [DEBUG] [Thread-197291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:29:06.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:29:06.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:29:06.904 [DEBUG] [Thread-197291] [transport.py] [_log()] userauth is OK
2025-11-24T21:29:06.904 [DEBUG] [Thread-197291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:29:06.904 [DEBUG] [Thread-197291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:29:06.904 [DEBUG] [Thread-197291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:29:06.905 [DEBUG] [Thread-197291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:29:06.929 [INFO] [Thread-197291] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:29:06.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:29:06.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:29:07.306 [DEBUG] [Thread-197293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:29:07.777 [DEBUG] [Thread-197291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:29:07.777 [DEBUG] [Thread-197291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:29:07.825 [DEBUG] [Thread-197291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:29:07.825 [DEBUG] [Thread-197291] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:29:07.834 [DEBUG] [Thread-197291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:29:07.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:29:07.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-11-24T21:29:07.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-11-24T21:29:07.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:29:07.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:29:07.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:29:07.874 [DEBUG] [Thread-197291] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:29:22.189 [DEBUG] [Thread-197294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:29:22.465 [DEBUG] [Thread-197295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:29:31.531 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:29:31.534 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:29:37.526 [DEBUG] [Thread-197296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:29:37.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:29:37.900 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:29:37.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-11-24T21:29:38.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 29, 8), 16.08, 33.6, 0.0, 26.31, 15.74, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:29:38.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:29:08
2025-11-24T21:29:39.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:29:39.195 [DEBUG] [Thread-197297] [transport.py] [_log()] starting thread (client mode): 0xd3151a20
2025-11-24T21:29:39.196 [DEBUG] [Thread-197297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:29:39.206 [DEBUG] [Thread-197297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:29:39.207 [INFO] [Thread-197297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:29:39.213 [DEBUG] [Thread-197297] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:29:39.213 [DEBUG] [Thread-197297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:29:39.213 [DEBUG] [Thread-197297] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:29:39.213 [DEBUG] [Thread-197297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:29:39.213 [DEBUG] [Thread-197297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:29:39.214 [DEBUG] [Thread-197297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:29:39.214 [DEBUG] [Thread-197297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:29:39.214 [DEBUG] [Thread-197297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:29:39.214 [DEBUG] [Thread-197297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:29:39.214 [DEBUG] [Thread-197297] [transport.py] [_log()] client lang: <none>
2025-11-24T21:29:39.214 [DEBUG] [Thread-197297] [transport.py] [_log()] server lang: <none>
2025-11-24T21:29:39.214 [DEBUG] [Thread-197297] [transport.py] [_log()] kex follows: False
2025-11-24T21:29:39.214 [DEBUG] [Thread-197297] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:29:39.215 [DEBUG] [Thread-197297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:29:39.215 [DEBUG] [Thread-197297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:29:39.215 [DEBUG] [Thread-197297] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:29:39.215 [DEBUG] [Thread-197297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:29:39.215 [DEBUG] [Thread-197297] [transport.py] [_log()] Compression: none
2025-11-24T21:29:39.215 [DEBUG] [Thread-197297] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:29:39.250 [DEBUG] [Thread-197297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:29:39.255 [DEBUG] [Thread-197297] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:29:39.257 [DEBUG] [Thread-197297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:29:39.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:29:39.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:29:39.263 [DEBUG] [Thread-197297] [transport.py] [_log()] userauth is OK
2025-11-24T21:29:39.263 [DEBUG] [Thread-197297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:29:39.263 [DEBUG] [Thread-197297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:29:39.263 [DEBUG] [Thread-197297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:29:39.263 [DEBUG] [Thread-197297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:29:39.289 [INFO] [Thread-197297] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:29:39.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:29:40.076 [DEBUG] [Thread-197297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:29:40.076 [DEBUG] [Thread-197297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:29:40.077 [DEBUG] [Thread-197297] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:29:40.117 [DEBUG] [Thread-197297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:29:40.117 [DEBUG] [Thread-197297] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:29:40.121 [DEBUG] [Thread-197297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:29:40.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:29:40.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:29:40.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:29:40.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:29:40.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:29:40.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:29:40.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:29:40.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:29:40.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:29:40.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.811854 -999.00  +15.60  20.07     38   +1.60 1 1 1 1 1     0    0 13.89 -9.04 ZNESW 18.6 20.1 167.0 27.6 15.9 -25.7 15.8 -25.0 15.5 -24.0 15.8 -24.9
2025-11-24T21:29:40.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:29:40.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:29:40.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.811854
2025-11-24T21:29:40.155 [DEBUG] [Thread-197297] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:29:40.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:29:40.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:29:40.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:29:40.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:29:40.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:29:40.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:29:08', tmtdew=16.08, humidity=33.6, cloud=0.0, wind=26.31, temperature=15.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:29:08', seeing=0.54, atlas_timestamp='2025-11-24T19:29:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:29:40.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:29:40.272 [DEBUG] [Thread-197300] [transport.py] [_log()] starting thread (client mode): 0xd07389d0
2025-11-24T21:29:40.272 [DEBUG] [Thread-197300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:29:40.286 [DEBUG] [Thread-197300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:29:40.286 [INFO] [Thread-197300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:29:40.294 [DEBUG] [Thread-197300] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:29:40.294 [DEBUG] [Thread-197300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:29:40.294 [DEBUG] [Thread-197300] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:29:40.294 [DEBUG] [Thread-197300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:29:40.294 [DEBUG] [Thread-197300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:29:40.294 [DEBUG] [Thread-197300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:29:40.294 [DEBUG] [Thread-197300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:29:40.294 [DEBUG] [Thread-197300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:29:40.294 [DEBUG] [Thread-197300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:29:40.295 [DEBUG] [Thread-197300] [transport.py] [_log()] client lang: <none>
2025-11-24T21:29:40.295 [DEBUG] [Thread-197300] [transport.py] [_log()] server lang: <none>
2025-11-24T21:29:40.295 [DEBUG] [Thread-197300] [transport.py] [_log()] kex follows: False
2025-11-24T21:29:40.295 [DEBUG] [Thread-197300] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:29:40.295 [DEBUG] [Thread-197300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:29:40.295 [DEBUG] [Thread-197300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:29:40.295 [DEBUG] [Thread-197300] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:29:40.295 [DEBUG] [Thread-197300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:29:40.295 [DEBUG] [Thread-197300] [transport.py] [_log()] Compression: none
2025-11-24T21:29:40.295 [DEBUG] [Thread-197300] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:29:40.353 [DEBUG] [Thread-197300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:29:40.354 [DEBUG] [Thread-197300] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:29:40.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:29:40.355 [DEBUG] [Thread-197300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:29:40.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:29:40.413 [DEBUG] [Thread-197300] [transport.py] [_log()] userauth is OK
2025-11-24T21:29:40.413 [DEBUG] [Thread-197300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:29:40.413 [DEBUG] [Thread-197300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:29:40.413 [DEBUG] [Thread-197300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:29:40.413 [DEBUG] [Thread-197300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:29:40.432 [INFO] [Thread-197300] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:29:40.434 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:29:40.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:29:41.285 [DEBUG] [Thread-197300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:29:41.285 [DEBUG] [Thread-197300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:29:41.333 [DEBUG] [Thread-197300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:29:41.333 [DEBUG] [Thread-197300] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:29:41.341 [DEBUG] [Thread-197300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:29:41.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:29:41.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-11-24T21:29:41.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-11-24T21:29:41.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:29:41.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:29:41.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:29:41.375 [DEBUG] [Thread-197300] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:29:52.578 [DEBUG] [Thread-197302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:30:07.709 [DEBUG] [Thread-197303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:30:11.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:30:11.396 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:30:11.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-11-24T21:30:12.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 29, 41), 16.08, 33.59, 0.0, 31.37, 15.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:30:12.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:29:41
2025-11-24T21:30:12.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:30:12.629 [DEBUG] [Thread-197304] [transport.py] [_log()] starting thread (client mode): 0xc9b81e40
2025-11-24T21:30:12.630 [DEBUG] [Thread-197304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:30:12.642 [DEBUG] [Thread-197304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:30:12.643 [INFO] [Thread-197304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:30:12.648 [DEBUG] [Thread-197304] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] client lang: <none>
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] server lang: <none>
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] kex follows: False
2025-11-24T21:30:12.649 [DEBUG] [Thread-197304] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:30:12.650 [DEBUG] [Thread-197304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:30:12.650 [DEBUG] [Thread-197304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:30:12.651 [DEBUG] [Thread-197304] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:30:12.651 [DEBUG] [Thread-197304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:30:12.651 [DEBUG] [Thread-197304] [transport.py] [_log()] Compression: none
2025-11-24T21:30:12.651 [DEBUG] [Thread-197304] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:30:12.690 [DEBUG] [Thread-197304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:30:12.695 [DEBUG] [Thread-197304] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:30:12.697 [DEBUG] [Thread-197304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:30:12.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:30:12.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:30:12.703 [DEBUG] [Thread-197304] [transport.py] [_log()] userauth is OK
2025-11-24T21:30:12.703 [DEBUG] [Thread-197304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:30:12.703 [DEBUG] [Thread-197304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:30:12.703 [DEBUG] [Thread-197304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:30:12.703 [DEBUG] [Thread-197304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:30:12.730 [INFO] [Thread-197304] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:30:12.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:30:13.602 [DEBUG] [Thread-197304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:30:13.602 [DEBUG] [Thread-197304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:30:13.603 [DEBUG] [Thread-197304] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:30:13.643 [DEBUG] [Thread-197304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:30:13.643 [DEBUG] [Thread-197304] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:30:13.645 [DEBUG] [Thread-197304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:30:13.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:30:13.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:30:13.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:30:13.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:30:13.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:30:13.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:30:13.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:30:13.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:30:13.670 [DEBUG] [Thread-197304] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:30:13.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:30:13.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.812201 -999.00  +15.60  24.86     38   +1.60 1 1 1 1 1     0    0 13.91 -7.52 ZNESW 22.8 24.9 164.4 33.2 15.9 -25.5 15.7 -24.9 15.5 -23.8 15.8 -24.9
2025-11-24T21:30:13.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:30:13.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:30:13.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.812201
2025-11-24T21:30:13.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:30:13.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:30:13.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:30:13.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:30:13.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:30:13.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:29:41', tmtdew=16.08, humidity=33.59, cloud=0.0, wind=31.37, temperature=15.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:29:41', seeing=0.54, atlas_timestamp='2025-11-24T19:29:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:30:13.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:30:13.794 [DEBUG] [Thread-197307] [transport.py] [_log()] starting thread (client mode): 0xd3153ca0
2025-11-24T21:30:13.794 [DEBUG] [Thread-197307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:30:13.809 [DEBUG] [Thread-197307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:30:13.809 [INFO] [Thread-197307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:30:13.816 [DEBUG] [Thread-197307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:30:13.816 [DEBUG] [Thread-197307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] client lang: <none>
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] server lang: <none>
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] kex follows: False
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] Compression: none
2025-11-24T21:30:13.817 [DEBUG] [Thread-197307] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:30:13.876 [DEBUG] [Thread-197307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:30:13.877 [DEBUG] [Thread-197307] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:30:13.878 [DEBUG] [Thread-197307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:30:13.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:30:13.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:30:13.932 [DEBUG] [Thread-197307] [transport.py] [_log()] userauth is OK
2025-11-24T21:30:13.933 [DEBUG] [Thread-197307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:30:13.933 [DEBUG] [Thread-197307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:30:13.933 [DEBUG] [Thread-197307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:30:13.933 [DEBUG] [Thread-197307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:30:13.958 [INFO] [Thread-197307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:30:13.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:30:13.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:30:14.781 [DEBUG] [Thread-197307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:30:14.781 [DEBUG] [Thread-197307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:30:14.829 [DEBUG] [Thread-197307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:30:14.829 [DEBUG] [Thread-197307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:30:14.837 [DEBUG] [Thread-197307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:30:14.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:30:14.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-11-24T21:30: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-11-24T21:30:14.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:30:14.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:30:14.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:30:14.871 [DEBUG] [Thread-197307] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:30:22.472 [DEBUG] [Thread-197309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:30:22.787 [DEBUG] [Thread-197310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:30:31.736 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:30:31.738 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:30:37.907 [DEBUG] [Thread-197311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:30:44.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:30:44.904 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:30:44.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-11-24T21:30:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 30, 14), 16.06, 33.64, 0.0, 33.33, 15.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:30:45.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:30:14
2025-11-24T21:30:45.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:30:46.093 [DEBUG] [Thread-197312] [transport.py] [_log()] starting thread (client mode): 0xd3151a20
2025-11-24T21:30:46.094 [DEBUG] [Thread-197312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:30:46.099 [DEBUG] [Thread-197312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:30:46.099 [INFO] [Thread-197312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] client lang: <none>
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] server lang: <none>
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] kex follows: False
2025-11-24T21:30:46.104 [DEBUG] [Thread-197312] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:30:46.105 [DEBUG] [Thread-197312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:30:46.105 [DEBUG] [Thread-197312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:30:46.105 [DEBUG] [Thread-197312] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:30:46.105 [DEBUG] [Thread-197312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:30:46.105 [DEBUG] [Thread-197312] [transport.py] [_log()] Compression: none
2025-11-24T21:30:46.105 [DEBUG] [Thread-197312] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:30:46.133 [DEBUG] [Thread-197312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:30:46.138 [DEBUG] [Thread-197312] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:30:46.140 [DEBUG] [Thread-197312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:30:46.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:30:46.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:30:46.148 [DEBUG] [Thread-197312] [transport.py] [_log()] userauth is OK
2025-11-24T21:30:46.149 [DEBUG] [Thread-197312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:30:46.149 [DEBUG] [Thread-197312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:30:46.149 [DEBUG] [Thread-197312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:30:46.149 [DEBUG] [Thread-197312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:30:46.171 [INFO] [Thread-197312] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:30:46.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:30:46.987 [DEBUG] [Thread-197312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:30:46.987 [DEBUG] [Thread-197312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:30:46.988 [DEBUG] [Thread-197312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:30:47.028 [DEBUG] [Thread-197312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:30:47.028 [DEBUG] [Thread-197312] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:30:47.031 [DEBUG] [Thread-197312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:30:47.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:30:47.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:30:47.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:30:47.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:30:47.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:30:47.050 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:30:47.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:30:47.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:30:47.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:30:47.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.812548 -999.00  +15.60  19.20     38   +1.60 1 1 1 1 1     0    0 13.51 -4.20 ZNESW 25.2 19.2 171.0 30.1 15.8 -25.6 15.7 -25.0 15.5 -23.9 15.8 -25.0
2025-11-24T21:30:47.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:30:47.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:30:47.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.812548
2025-11-24T21:30:47.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:30:47.068 [DEBUG] [Thread-197312] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:30:47.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:30:47.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:30:47.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:30:47.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:30:47.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:30:14', tmtdew=16.06, humidity=33.64, cloud=0.0, wind=33.33, temperature=15.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:30:14', seeing=0.6, atlas_timestamp='2025-11-24T19:30:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:30:47.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:30:47.157 [DEBUG] [Thread-197315] [transport.py] [_log()] starting thread (client mode): 0xd31361d0
2025-11-24T21:30:47.157 [DEBUG] [Thread-197315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:30:47.172 [DEBUG] [Thread-197315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:30:47.172 [INFO] [Thread-197315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] client lang: <none>
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] server lang: <none>
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] kex follows: False
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] Compression: none
2025-11-24T21:30:47.180 [DEBUG] [Thread-197315] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:30:47.246 [DEBUG] [Thread-197315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:30:47.246 [DEBUG] [Thread-197315] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:30:47.246 [DEBUG] [Thread-197315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:30:47.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:30:47.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:30:47.309 [DEBUG] [Thread-197315] [transport.py] [_log()] userauth is OK
2025-11-24T21:30:47.309 [DEBUG] [Thread-197315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:30:47.309 [DEBUG] [Thread-197315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:30:47.309 [DEBUG] [Thread-197315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:30:47.309 [DEBUG] [Thread-197315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:30:47.326 [INFO] [Thread-197315] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:30:47.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:30:47.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:30:48.181 [DEBUG] [Thread-197315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:30:48.181 [DEBUG] [Thread-197315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:30:48.229 [DEBUG] [Thread-197315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:30:48.229 [DEBUG] [Thread-197315] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:30:48.237 [DEBUG] [Thread-197315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:30:48.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:30:48.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-11-24T21:30:48.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-11-24T21:30:48.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:30:48.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:30:48.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:30:48.270 [DEBUG] [Thread-197315] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:30:52.956 [DEBUG] [Thread-197317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:08.109 [DEBUG] [Thread-197318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:12.839 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:16.101 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:18.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:31:18.295 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:31:18.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-11-24T21:31:19.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 30, 47), 15.98, 33.7, 0.0, 27.6, 15.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:31:19.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:30:47
2025-11-24T21:31:19.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:31:19.480 [DEBUG] [Thread-197319] [transport.py] [_log()] starting thread (client mode): 0xd3135ae0
2025-11-24T21:31:19.481 [DEBUG] [Thread-197319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:31:19.493 [DEBUG] [Thread-197319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:31:19.493 [INFO] [Thread-197319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] client lang: <none>
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] server lang: <none>
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] kex follows: False
2025-11-24T21:31:19.498 [DEBUG] [Thread-197319] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:31:19.499 [DEBUG] [Thread-197319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:31:19.499 [DEBUG] [Thread-197319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:31:19.499 [DEBUG] [Thread-197319] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:31:19.499 [DEBUG] [Thread-197319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:31:19.499 [DEBUG] [Thread-197319] [transport.py] [_log()] Compression: none
2025-11-24T21:31:19.499 [DEBUG] [Thread-197319] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:31:19.529 [DEBUG] [Thread-197319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:31:19.533 [DEBUG] [Thread-197319] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:31:19.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:31:19.535 [DEBUG] [Thread-197319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:31:19.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:31:19.537 [DEBUG] [Thread-197319] [transport.py] [_log()] userauth is OK
2025-11-24T21:31:19.537 [DEBUG] [Thread-197319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:31:19.538 [DEBUG] [Thread-197319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:31:19.538 [DEBUG] [Thread-197319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:31:19.538 [DEBUG] [Thread-197319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:31:19.567 [INFO] [Thread-197319] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:31:19.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:31:20.240 [DEBUG] [Thread-197319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:31:20.240 [DEBUG] [Thread-197319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:31:20.241 [DEBUG] [Thread-197319] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:31:20.281 [DEBUG] [Thread-197319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:31:20.281 [DEBUG] [Thread-197319] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:31:20.284 [DEBUG] [Thread-197319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:31:20.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:31:20.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:31:20.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:31:20.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:31:20.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:31:20.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:31:20.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:31:20.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:31:20.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:31:20.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.812896 -999.00  +15.60  18.78     38   +1.60 1 1 1 1 1     0    0 14.03 -1.66 ZNESW 19.4 18.8 170.1 32.8 15.9 -25.6 15.7 -25.0 15.5 -23.9 15.8 -25.0
2025-11-24T21:31:20.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:31:20.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:31:20.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.812896
2025-11-24T21:31:20.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:31:20.321 [DEBUG] [Thread-197319] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:31:20.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:31:20.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:31:20.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:31:20.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:31:20.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:30:47', tmtdew=15.98, humidity=33.7, cloud=0.0, wind=27.6, temperature=15.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:30:47', seeing=0.58, atlas_timestamp='2025-11-24T19:30:34.214', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:31:20.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:31:20.411 [DEBUG] [Thread-197322] [transport.py] [_log()] starting thread (client mode): 0xc9b834f0
2025-11-24T21:31:20.411 [DEBUG] [Thread-197322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:31:20.426 [DEBUG] [Thread-197322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:31:20.426 [INFO] [Thread-197322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] client lang: <none>
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] server lang: <none>
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] kex follows: False
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:31:20.433 [DEBUG] [Thread-197322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:31:20.434 [DEBUG] [Thread-197322] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:31:20.434 [DEBUG] [Thread-197322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:31:20.434 [DEBUG] [Thread-197322] [transport.py] [_log()] Compression: none
2025-11-24T21:31:20.434 [DEBUG] [Thread-197322] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:31:20.490 [DEBUG] [Thread-197322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:31:20.491 [DEBUG] [Thread-197322] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:31:20.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:31:20.491 [DEBUG] [Thread-197322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:31:20.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:31:20.547 [DEBUG] [Thread-197322] [transport.py] [_log()] userauth is OK
2025-11-24T21:31:20.547 [DEBUG] [Thread-197322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:31:20.547 [DEBUG] [Thread-197322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:31:20.547 [DEBUG] [Thread-197322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:31:20.547 [DEBUG] [Thread-197322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:31:20.561 [INFO] [Thread-197322] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:31:20.562 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:31:20.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:31:21.155 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:21.412 [DEBUG] [Thread-197322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:31:21.412 [DEBUG] [Thread-197322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:31:21.460 [DEBUG] [Thread-197322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:31:21.460 [DEBUG] [Thread-197322] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:31:21.468 [DEBUG] [Thread-197322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:31:21.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:31: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')
2025-11-24T21:31:21.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-11-24T21:31:21.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:31:21.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:31:21.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:31:21.501 [DEBUG] [Thread-197322] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:31:22.753 [DEBUG] [Thread-197324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:23.177 [DEBUG] [Thread-197325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:26.563 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:31.999 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:32.000 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:38.315 [DEBUG] [Thread-197326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:45.914 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:50.305 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:51.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:31:51.523 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:31:51.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:31:52.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 31, 20), 16.01, 33.65, 0.0, 29.02, 15.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:31:52.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:31:20
2025-11-24T21:31:52.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:31:53.136 [DEBUG] [Thread-197327] [transport.py] [_log()] starting thread (client mode): 0xc9b80c70
2025-11-24T21:31:53.137 [DEBUG] [Thread-197327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:31:53.142 [DEBUG] [Thread-197327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:31:53.142 [INFO] [Thread-197327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] client lang: <none>
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] server lang: <none>
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] kex follows: False
2025-11-24T21:31:53.146 [DEBUG] [Thread-197327] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:31:53.147 [DEBUG] [Thread-197327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:31:53.147 [DEBUG] [Thread-197327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:31:53.147 [DEBUG] [Thread-197327] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:31:53.147 [DEBUG] [Thread-197327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:31:53.147 [DEBUG] [Thread-197327] [transport.py] [_log()] Compression: none
2025-11-24T21:31:53.147 [DEBUG] [Thread-197327] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:31:53.181 [DEBUG] [Thread-197327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:31:53.185 [DEBUG] [Thread-197327] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:31:53.187 [DEBUG] [Thread-197327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:31:53.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:31:53.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:31:53.192 [DEBUG] [Thread-197327] [transport.py] [_log()] userauth is OK
2025-11-24T21:31:53.193 [DEBUG] [Thread-197327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:31:53.193 [DEBUG] [Thread-197327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:31:53.193 [DEBUG] [Thread-197327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:31:53.193 [DEBUG] [Thread-197327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:31:53.221 [INFO] [Thread-197327] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:31:53.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:31:53.348 [DEBUG] [Thread-197329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:31:53.916 [DEBUG] [Thread-197327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:31:53.916 [DEBUG] [Thread-197327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:31:53.917 [DEBUG] [Thread-197327] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:31:53.957 [DEBUG] [Thread-197327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:31:53.957 [DEBUG] [Thread-197327] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:31:53.960 [DEBUG] [Thread-197327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:31:53.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:31:53.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:31:53.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:31:53.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:31:53.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:31:53.978 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:31:53.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:31:53.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:31:53.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:31:53.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.813243 -999.00  +15.50  18.92     38   +1.50 1 1 1 1 1     0    0 14.06 0.22 ZNESW 17.5 18.9 170.0 29.5 15.8 -25.7 15.7 -25.0 15.5 -23.9 15.8 -24.8
2025-11-24T21:31:53.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:31:53.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:31:53.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.813243
2025-11-24T21:31:53.985 [DEBUG] [Thread-197327] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:31:53.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:31:53.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:31:53.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:31:53.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:31:53.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:31:53.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:31:20', tmtdew=16.01, humidity=33.65, cloud=0.0, wind=29.02, temperature=15.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:31:20', seeing=0.62, atlas_timestamp='2025-11-24T19:31:04.195', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:31:54.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:31:54.084 [DEBUG] [Thread-197331] [transport.py] [_log()] starting thread (client mode): 0xc9b83970
2025-11-24T21:31:54.084 [DEBUG] [Thread-197331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:31:54.101 [DEBUG] [Thread-197331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:31:54.101 [INFO] [Thread-197331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] client lang: <none>
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] server lang: <none>
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] kex follows: False
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] Compression: none
2025-11-24T21:31:54.111 [DEBUG] [Thread-197331] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:31:54.166 [DEBUG] [Thread-197331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:31:54.166 [DEBUG] [Thread-197331] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:31:54.166 [DEBUG] [Thread-197331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:31:54.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:31:54.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:31:54.224 [DEBUG] [Thread-197331] [transport.py] [_log()] userauth is OK
2025-11-24T21:31:54.224 [DEBUG] [Thread-197331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:31:54.224 [DEBUG] [Thread-197331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:31:54.224 [DEBUG] [Thread-197331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:31:54.224 [DEBUG] [Thread-197331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:31:54.238 [INFO] [Thread-197331] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:31:54.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:31:54.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:31:55.090 [DEBUG] [Thread-197331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:31:55.090 [DEBUG] [Thread-197331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:31:55.143 [DEBUG] [Thread-197331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:31:55.143 [DEBUG] [Thread-197331] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:31:55.151 [DEBUG] [Thread-197331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:31:55.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:31:55.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-11-24T21:31:55.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-11-24T21:31:55.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:31:55.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:31:55.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:31:55.184 [DEBUG] [Thread-197331] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:32:08.443 [DEBUG] [Thread-197333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:09.682 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:14.049 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:20.832 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:23.003 [DEBUG] [Thread-197334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:23.604 [DEBUG] [Thread-197335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:25.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:32:25.190 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:32:25.238 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:25.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-11-24T21:32:26.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 31, 53), 15.98, 33.59, 0.0, 24.79, 15.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:32:26.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:31:53
2025-11-24T21:32:26.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:32:27.038 [DEBUG] [Thread-197336] [transport.py] [_log()] starting thread (client mode): 0xc9b82170
2025-11-24T21:32:27.039 [DEBUG] [Thread-197336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:32:27.050 [DEBUG] [Thread-197336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:32:27.050 [INFO] [Thread-197336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:32:27.055 [DEBUG] [Thread-197336] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:32:27.055 [DEBUG] [Thread-197336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:32:27.055 [DEBUG] [Thread-197336] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:32:27.055 [DEBUG] [Thread-197336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:32:27.055 [DEBUG] [Thread-197336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:32:27.055 [DEBUG] [Thread-197336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:32:27.055 [DEBUG] [Thread-197336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:32:27.055 [DEBUG] [Thread-197336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:32:27.055 [DEBUG] [Thread-197336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:32:27.056 [DEBUG] [Thread-197336] [transport.py] [_log()] client lang: <none>
2025-11-24T21:32:27.056 [DEBUG] [Thread-197336] [transport.py] [_log()] server lang: <none>
2025-11-24T21:32:27.056 [DEBUG] [Thread-197336] [transport.py] [_log()] kex follows: False
2025-11-24T21:32:27.056 [DEBUG] [Thread-197336] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:32:27.056 [DEBUG] [Thread-197336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:32:27.056 [DEBUG] [Thread-197336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:32:27.056 [DEBUG] [Thread-197336] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:32:27.056 [DEBUG] [Thread-197336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:32:27.056 [DEBUG] [Thread-197336] [transport.py] [_log()] Compression: none
2025-11-24T21:32:27.056 [DEBUG] [Thread-197336] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:32:27.087 [DEBUG] [Thread-197336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:32:27.091 [DEBUG] [Thread-197336] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:32:27.092 [DEBUG] [Thread-197336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:32:27.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:32:27.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:32:27.095 [DEBUG] [Thread-197336] [transport.py] [_log()] userauth is OK
2025-11-24T21:32:27.096 [DEBUG] [Thread-197336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:32:27.096 [DEBUG] [Thread-197336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:32:27.096 [DEBUG] [Thread-197336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:32:27.096 [DEBUG] [Thread-197336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:32:27.113 [INFO] [Thread-197336] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:32:27.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:32:27.781 [DEBUG] [Thread-197336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:32:27.781 [DEBUG] [Thread-197336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:32:27.782 [DEBUG] [Thread-197336] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:32:27.822 [DEBUG] [Thread-197336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:32:27.822 [DEBUG] [Thread-197336] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:32:27.824 [DEBUG] [Thread-197336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:32:27.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:32:27.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:32:27.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:32:27.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:32:27.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:32:27.844 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:32:27.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:32:27.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:32:27.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:32:27.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.813937 -999.00  +15.50  17.96     38   +1.60 1 1 1 1 1     0    0 14.02 1.17 ZNESW 15.0 18.0 175.6 29.1 15.8 -25.7 15.7 -25.1 15.4 -23.9 15.8 -24.9
2025-11-24T21:32:27.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:32:27.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:32:27.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.813937
2025-11-24T21:32:27.851 [DEBUG] [Thread-197336] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:32:27.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:32:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:32:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:32:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:32:27.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:32:27.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:31:53', tmtdew=15.98, humidity=33.59, cloud=0.0, wind=24.79, temperature=15.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:31:53', seeing=0.6, atlas_timestamp='2025-11-24T19:32:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:32:27.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:32:27.953 [DEBUG] [Thread-197339] [transport.py] [_log()] starting thread (client mode): 0xd07fa500
2025-11-24T21:32:27.953 [DEBUG] [Thread-197339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:32:27.968 [DEBUG] [Thread-197339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:32:27.968 [INFO] [Thread-197339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] client lang: <none>
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] server lang: <none>
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] kex follows: False
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:32:27.977 [DEBUG] [Thread-197339] [transport.py] [_log()] Compression: none
2025-11-24T21:32:27.978 [DEBUG] [Thread-197339] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:32:28.038 [DEBUG] [Thread-197339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:32:28.039 [DEBUG] [Thread-197339] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:32:28.039 [DEBUG] [Thread-197339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:32:28.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:32:28.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:32:28.100 [DEBUG] [Thread-197339] [transport.py] [_log()] userauth is OK
2025-11-24T21:32:28.100 [DEBUG] [Thread-197339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:32:28.100 [DEBUG] [Thread-197339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:32:28.100 [DEBUG] [Thread-197339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:32:28.100 [DEBUG] [Thread-197339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:32:28.114 [INFO] [Thread-197339] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:32:28.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:32:28.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:32:28.998 [DEBUG] [Thread-197339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:32:28.999 [DEBUG] [Thread-197339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:32:29.039 [DEBUG] [Thread-197339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:32:29.039 [DEBUG] [Thread-197339] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:32:29.049 [DEBUG] [Thread-197339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:32:29.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:32:29.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:32:29.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-11-24T21:32:29.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:32:29.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:32:29.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:32:29.087 [DEBUG] [Thread-197339] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:32:32.211 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:32.212 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:38.646 [DEBUG] [Thread-197341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:53.725 [DEBUG] [Thread-197342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:32:59.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:32:59.107 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:32:59.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-11-24T21:33:00.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 32, 26), 15.99, 33.59, 0.0, 26.5, 15.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:33:00.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:32:26
2025-11-24T21:33:00.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:33:00.580 [DEBUG] [Thread-197343] [transport.py] [_log()] starting thread (client mode): 0xd07fae00
2025-11-24T21:33:00.581 [DEBUG] [Thread-197343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:33:00.593 [DEBUG] [Thread-197343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:33:00.593 [INFO] [Thread-197343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] client lang: <none>
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] server lang: <none>
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] kex follows: False
2025-11-24T21:33:00.597 [DEBUG] [Thread-197343] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:33:00.598 [DEBUG] [Thread-197343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:33:00.598 [DEBUG] [Thread-197343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:33:00.598 [DEBUG] [Thread-197343] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:33:00.598 [DEBUG] [Thread-197343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:33:00.598 [DEBUG] [Thread-197343] [transport.py] [_log()] Compression: none
2025-11-24T21:33:00.598 [DEBUG] [Thread-197343] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:33:00.615 [DEBUG] [Thread-197343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:33:00.618 [DEBUG] [Thread-197343] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:33:00.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:33:00.620 [DEBUG] [Thread-197343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:33:00.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:33:00.622 [DEBUG] [Thread-197343] [transport.py] [_log()] userauth is OK
2025-11-24T21:33:00.622 [DEBUG] [Thread-197343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:33:00.622 [DEBUG] [Thread-197343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:33:00.622 [DEBUG] [Thread-197343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:33:00.622 [DEBUG] [Thread-197343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:33:00.636 [INFO] [Thread-197343] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:33:00.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:33:01.389 [DEBUG] [Thread-197343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:33:01.389 [DEBUG] [Thread-197343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:33:01.391 [DEBUG] [Thread-197343] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:33:01.430 [DEBUG] [Thread-197343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:33:01.430 [DEBUG] [Thread-197343] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:33:01.433 [DEBUG] [Thread-197343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:33:01.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:33:01.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:33:01.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:33:01.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:33:01.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:33:01.454 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:33:01.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:33:01.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:33:01.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:33:01.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.814284 -999.00  +15.50  20.58     38   +1.60 1 1 1 1 1     0    0 13.98 1.42 ZNESW 21.8 20.6 167.6 28.4 15.8 -25.5 15.7 -24.9 15.4 -23.8 15.8 -24.8
2025-11-24T21:33:01.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:33:01.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:33:01.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.814284
2025-11-24T21:33:01.461 [DEBUG] [Thread-197343] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:33:01.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:33:01.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:33:01.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:33:01.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:33:01.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:33:01.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:32:26', tmtdew=15.99, humidity=33.59, cloud=0.0, wind=26.5, temperature=15.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:32:59', seeing=0.54, atlas_timestamp='2025-11-24T19:32:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:33:01.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:33:01.560 [DEBUG] [Thread-197346] [transport.py] [_log()] starting thread (client mode): 0xc9b83c40
2025-11-24T21:33:01.560 [DEBUG] [Thread-197346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:33:01.574 [DEBUG] [Thread-197346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:33:01.574 [INFO] [Thread-197346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] client lang: <none>
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] server lang: <none>
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] kex follows: False
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:33:01.581 [DEBUG] [Thread-197346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:33:01.582 [DEBUG] [Thread-197346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:33:01.582 [DEBUG] [Thread-197346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:33:01.582 [DEBUG] [Thread-197346] [transport.py] [_log()] Compression: none
2025-11-24T21:33:01.582 [DEBUG] [Thread-197346] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:33:01.642 [DEBUG] [Thread-197346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:33:01.642 [DEBUG] [Thread-197346] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:33:01.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:33:01.643 [DEBUG] [Thread-197346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:33:01.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:33:01.700 [DEBUG] [Thread-197346] [transport.py] [_log()] userauth is OK
2025-11-24T21:33:01.700 [DEBUG] [Thread-197346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:33:01.700 [DEBUG] [Thread-197346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:33:01.700 [DEBUG] [Thread-197346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:33:01.700 [DEBUG] [Thread-197346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:33:01.713 [INFO] [Thread-197346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:33:01.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:33:01.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:33:02.619 [DEBUG] [Thread-197346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:33:02.619 [DEBUG] [Thread-197346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:33:02.658 [DEBUG] [Thread-197346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:33:02.658 [DEBUG] [Thread-197346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:33:02.667 [DEBUG] [Thread-197346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:33:02.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:33: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-11-24T21:33: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-11-24T21:33:02.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:33:02.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:33:02.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:33:02.703 [DEBUG] [Thread-197346] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:33:08.789 [DEBUG] [Thread-197348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:33:23.294 [DEBUG] [Thread-197349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:33:23.947 [DEBUG] [Thread-197350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:33:24.517 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:33:27.630 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:33:32.413 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:33:32.415 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:33:32.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:33:32.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:33:32.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:33:33.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 32, 58), 15.98, 33.59, 0.0, 26.71, 15.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:33:33.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:32:58
2025-11-24T21:33:33.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:33:33.944 [DEBUG] [Thread-197351] [transport.py] [_log()] starting thread (client mode): 0xd3150220
2025-11-24T21:33:33.945 [DEBUG] [Thread-197351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:33:33.957 [DEBUG] [Thread-197351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:33:33.957 [INFO] [Thread-197351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] client lang: <none>
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] server lang: <none>
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] kex follows: False
2025-11-24T21:33:33.962 [DEBUG] [Thread-197351] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:33:33.963 [DEBUG] [Thread-197351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:33:33.963 [DEBUG] [Thread-197351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:33:33.963 [DEBUG] [Thread-197351] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:33:33.963 [DEBUG] [Thread-197351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:33:33.963 [DEBUG] [Thread-197351] [transport.py] [_log()] Compression: none
2025-11-24T21:33:33.963 [DEBUG] [Thread-197351] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:33:33.995 [DEBUG] [Thread-197351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:33:33.999 [DEBUG] [Thread-197351] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:33:34.000 [DEBUG] [Thread-197351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:33:34.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:33:34.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:33:34.004 [DEBUG] [Thread-197351] [transport.py] [_log()] userauth is OK
2025-11-24T21:33:34.004 [DEBUG] [Thread-197351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:33:34.004 [DEBUG] [Thread-197351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:33:34.004 [DEBUG] [Thread-197351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:33:34.004 [DEBUG] [Thread-197351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:33:34.034 [INFO] [Thread-197351] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:33:34.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:33:34.696 [DEBUG] [Thread-197351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:33:34.697 [DEBUG] [Thread-197351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:33:34.698 [DEBUG] [Thread-197351] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:33:34.738 [DEBUG] [Thread-197351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:33:34.738 [DEBUG] [Thread-197351] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:33:34.741 [DEBUG] [Thread-197351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:33:34.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:33:34.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:33:34.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:33:34.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:33:34.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:33:34.762 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:33:34.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:33:34.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:33:34.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:33:34.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.814631 -999.00  +15.50  18.13     39   +1.60 1 1 1 1 1     0    0 13.85 1.64 ZNESW 24.3 18.1 168.6 27.2 15.8 -25.5 15.7 -24.9 15.5 -23.8 15.7 -24.7
2025-11-24T21:33:34.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:33:34.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:33:34.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.814631
2025-11-24T21:33:34.769 [DEBUG] [Thread-197351] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:33:34.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:33:34.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:33:34.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:33:34.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:33:34.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:33:34.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:32:58', tmtdew=15.98, humidity=33.59, cloud=0.0, wind=26.71, temperature=15.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:33:32', seeing=0.54, atlas_timestamp='2025-11-24T19:33:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:33:34.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:33:34.886 [DEBUG] [Thread-197354] [transport.py] [_log()] starting thread (client mode): 0xd0739810
2025-11-24T21:33:34.886 [DEBUG] [Thread-197354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:33:34.901 [DEBUG] [Thread-197354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:33:34.901 [INFO] [Thread-197354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:33:34.909 [DEBUG] [Thread-197354] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:33:34.909 [DEBUG] [Thread-197354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:33:34.909 [DEBUG] [Thread-197354] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:33:34.910 [DEBUG] [Thread-197354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:33:34.910 [DEBUG] [Thread-197354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:33:34.910 [DEBUG] [Thread-197354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:33:34.910 [DEBUG] [Thread-197354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:33:34.910 [DEBUG] [Thread-197354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:33:34.910 [DEBUG] [Thread-197354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:33:34.910 [DEBUG] [Thread-197354] [transport.py] [_log()] client lang: <none>
2025-11-24T21:33:34.910 [DEBUG] [Thread-197354] [transport.py] [_log()] server lang: <none>
2025-11-24T21:33:34.910 [DEBUG] [Thread-197354] [transport.py] [_log()] kex follows: False
2025-11-24T21:33:34.911 [DEBUG] [Thread-197354] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:33:34.911 [DEBUG] [Thread-197354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:33:34.911 [DEBUG] [Thread-197354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:33:34.911 [DEBUG] [Thread-197354] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:33:34.911 [DEBUG] [Thread-197354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:33:34.911 [DEBUG] [Thread-197354] [transport.py] [_log()] Compression: none
2025-11-24T21:33:34.911 [DEBUG] [Thread-197354] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:33:34.969 [DEBUG] [Thread-197354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:33:34.969 [DEBUG] [Thread-197354] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:33:34.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:33:34.971 [DEBUG] [Thread-197354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:33:34.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:33:35.028 [DEBUG] [Thread-197354] [transport.py] [_log()] userauth is OK
2025-11-24T21:33:35.029 [DEBUG] [Thread-197354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:33:35.029 [DEBUG] [Thread-197354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:33:35.029 [DEBUG] [Thread-197354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:33:35.029 [DEBUG] [Thread-197354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:33:35.047 [INFO] [Thread-197354] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:33:35.047 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:33:35.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:33:35.902 [DEBUG] [Thread-197354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:33:35.903 [DEBUG] [Thread-197354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:33:35.950 [DEBUG] [Thread-197354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:33:35.950 [DEBUG] [Thread-197354] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:33:35.959 [DEBUG] [Thread-197354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:33:35.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:33:35.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-11-24T21:33:35.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-11-24T21:33:35.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:33:35.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:33:35.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:33:36.004 [DEBUG] [Thread-197354] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:33:39.004 [DEBUG] [Thread-197356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:33:54.113 [DEBUG] [Thread-197357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:34:06.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:34:06.002 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:34:06.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:34:06.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 33, 31), 15.96, 33.62, 0.0, 26.59, 15.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:34:06.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:33:31
2025-11-24T21:34:07.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:34:07.285 [DEBUG] [Thread-197358] [transport.py] [_log()] starting thread (client mode): 0xd0738880
2025-11-24T21:34:07.285 [DEBUG] [Thread-197358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:34:07.297 [DEBUG] [Thread-197358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:34:07.297 [INFO] [Thread-197358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:34:07.301 [DEBUG] [Thread-197358] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:34:07.301 [DEBUG] [Thread-197358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] client lang: <none>
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] server lang: <none>
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] kex follows: False
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:34:07.302 [DEBUG] [Thread-197358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:34:07.303 [DEBUG] [Thread-197358] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:34:07.303 [DEBUG] [Thread-197358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:34:07.303 [DEBUG] [Thread-197358] [transport.py] [_log()] Compression: none
2025-11-24T21:34:07.303 [DEBUG] [Thread-197358] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:34:07.326 [DEBUG] [Thread-197358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:34:07.329 [DEBUG] [Thread-197358] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:34:07.331 [DEBUG] [Thread-197358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:34:07.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:34:07.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:34:07.334 [DEBUG] [Thread-197358] [transport.py] [_log()] userauth is OK
2025-11-24T21:34:07.334 [DEBUG] [Thread-197358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:34:07.335 [DEBUG] [Thread-197358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:34:07.335 [DEBUG] [Thread-197358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:34:07.335 [DEBUG] [Thread-197358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:34:07.348 [INFO] [Thread-197358] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:34:07.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:34:07.896 [DEBUG] [Thread-197358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:34:07.896 [DEBUG] [Thread-197358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:34:07.898 [DEBUG] [Thread-197358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:34:07.937 [DEBUG] [Thread-197358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:34:07.937 [DEBUG] [Thread-197358] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:34:07.941 [DEBUG] [Thread-197358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:34:07.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:34:07.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:34:07.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:34:07.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:34:07.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:34:07.965 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:34:07.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:34:07.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:34:07.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:34:07.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.814979 -999.00  +15.50  21.78     38   +1.50 1 1 1 1 1     0    0 13.88 2.24 ZNESW 21.3 21.8 171.8 26.7 15.8 -25.5 15.7 -25.0 15.4 -23.8 15.7 -24.7
2025-11-24T21:34:07.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:34:07.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:34:07.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.814979
2025-11-24T21:34:07.972 [DEBUG] [Thread-197358] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:34:07.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:34:07.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:34:07.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:34:07.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:34:07.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:34:07.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:33:31', tmtdew=15.96, humidity=33.62, cloud=0.0, wind=26.59, temperature=15.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:34:04', seeing=0.52, atlas_timestamp='2025-11-24T19:33:34.186', atlas_cloud=1, atlas_rain=1, zp_data=[0.02474999999999916, 0.016250000000001208, 0.05125000000000135, 0.012000000000000455, 0.046499999999999986, 0.11224999999999952, 0.04699999999999882, 0.05874999999999986, 0.03249999999999886, 0.0470000000000006, 0.06524999999999892, 0.0389999999999997, 0.05149999999999899, 0.10125000000000028, 0.07199999999999918, 0.02049999999999841, 0.07525000000000048, 0.09200000000000053, 0.10799999999999876, 0.044249999999998124, 0.11799999999999855, 0.11674999999999791, 0.047750000000000625, 0.06274999999999942, 0.04299999999999926, 0.057500000000000995, 0.09325000000000117, 0.09450000000000003, 0.14499999999999957, 0.03900000000000148, 0.12300000000000111, 0.05000000000000071, 0.03125], zp_timestamp='2025-11-24T19:26:00')
2025-11-24T21:34:08.065 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:34:08.077 [DEBUG] [Thread-197361] [transport.py] [_log()] starting thread (client mode): 0xd3151510
2025-11-24T21:34:08.077 [DEBUG] [Thread-197361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:34:08.093 [DEBUG] [Thread-197361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:34:08.093 [INFO] [Thread-197361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:34:08.100 [DEBUG] [Thread-197361] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:34:08.101 [DEBUG] [Thread-197361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:34:08.101 [DEBUG] [Thread-197361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:34:08.101 [DEBUG] [Thread-197361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:34:08.101 [DEBUG] [Thread-197361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:34:08.101 [DEBUG] [Thread-197361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:34:08.101 [DEBUG] [Thread-197361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:34:08.101 [DEBUG] [Thread-197361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:34:08.102 [DEBUG] [Thread-197361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:34:08.102 [DEBUG] [Thread-197361] [transport.py] [_log()] client lang: <none>
2025-11-24T21:34:08.102 [DEBUG] [Thread-197361] [transport.py] [_log()] server lang: <none>
2025-11-24T21:34:08.102 [DEBUG] [Thread-197361] [transport.py] [_log()] kex follows: False
2025-11-24T21:34:08.102 [DEBUG] [Thread-197361] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:34:08.102 [DEBUG] [Thread-197361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:34:08.102 [DEBUG] [Thread-197361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:34:08.103 [DEBUG] [Thread-197361] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:34:08.103 [DEBUG] [Thread-197361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:34:08.103 [DEBUG] [Thread-197361] [transport.py] [_log()] Compression: none
2025-11-24T21:34:08.103 [DEBUG] [Thread-197361] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:34:08.161 [DEBUG] [Thread-197361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:34:08.162 [DEBUG] [Thread-197361] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:34:08.162 [DEBUG] [Thread-197361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:34:08.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:34:08.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:34:08.221 [DEBUG] [Thread-197361] [transport.py] [_log()] userauth is OK
2025-11-24T21:34:08.221 [DEBUG] [Thread-197361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:34:08.221 [DEBUG] [Thread-197361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:34:08.221 [DEBUG] [Thread-197361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:34:08.221 [DEBUG] [Thread-197361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:34:08.236 [INFO] [Thread-197361] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:34:08.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:34:08.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:34:09.130 [DEBUG] [Thread-197361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:34:09.130 [DEBUG] [Thread-197361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:34:09.149 [DEBUG] [Thread-197363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:34:09.178 [DEBUG] [Thread-197361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:34:09.178 [DEBUG] [Thread-197361] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:34:09.186 [DEBUG] [Thread-197361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:34:09.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:34:09.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-11-24T21:34:09.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-11-24T21:34:09.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:34:09.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:34:09.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:34:09.219 [DEBUG] [Thread-197361] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:34:23.613 [DEBUG] [Thread-197364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:34:24.238 [DEBUG] [Thread-197365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:34:32.625 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:34:32.627 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:34:39.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:34:39.259 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:34:39.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-11-24T21:34:39.296 [DEBUG] [Thread-197366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:34:40.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 34, 4), 15.93, 33.7, 0.0, 26.1, 15.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:34:40.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:34:04
2025-11-24T21:34:40.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:34:40.449 [DEBUG] [Thread-197367] [transport.py] [_log()] starting thread (client mode): 0xd3135d20
2025-11-24T21:34:40.450 [DEBUG] [Thread-197367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:34:40.456 [DEBUG] [Thread-197367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:34:40.456 [INFO] [Thread-197367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] client lang: <none>
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] server lang: <none>
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] kex follows: False
2025-11-24T21:34:40.460 [DEBUG] [Thread-197367] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:34:40.461 [DEBUG] [Thread-197367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:34:40.461 [DEBUG] [Thread-197367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:34:40.461 [DEBUG] [Thread-197367] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:34:40.461 [DEBUG] [Thread-197367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:34:40.461 [DEBUG] [Thread-197367] [transport.py] [_log()] Compression: none
2025-11-24T21:34:40.461 [DEBUG] [Thread-197367] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:34:40.495 [DEBUG] [Thread-197367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:34:40.498 [DEBUG] [Thread-197367] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:34:40.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:34:40.500 [DEBUG] [Thread-197367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:34:40.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:34:40.502 [DEBUG] [Thread-197367] [transport.py] [_log()] userauth is OK
2025-11-24T21:34:40.503 [DEBUG] [Thread-197367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:34:40.503 [DEBUG] [Thread-197367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:34:40.503 [DEBUG] [Thread-197367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:34:40.503 [DEBUG] [Thread-197367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:34:40.531 [INFO] [Thread-197367] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:34:40.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:34:41.181 [DEBUG] [Thread-197367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:34:41.181 [DEBUG] [Thread-197367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:34:41.182 [DEBUG] [Thread-197367] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:34:41.222 [DEBUG] [Thread-197367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:34:41.222 [DEBUG] [Thread-197367] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:34:41.224 [DEBUG] [Thread-197367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:34:41.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:34:41.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:34:41.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:34:41.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:34:41.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:34:41.243 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:34:41.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:34:41.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:34:41.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:34:41.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.815326 -999.00  +15.50  18.54     39   +1.60 1 1 1 1 1     0    0 13.84 2.07 ZNESW 19.6 18.5 175.5 29.7 15.8 -25.6 15.7 -25.0 15.4 -23.9 15.7 -24.9
2025-11-24T21:34:41.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:34:41.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:34:41.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.815326
2025-11-24T21:34:41.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:34:41.261 [DEBUG] [Thread-197367] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:34:41.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:34:41.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:34:41.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:34:41.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:34:41.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:34:04', tmtdew=15.93, humidity=33.7, cloud=0.0, wind=26.1, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:34:37', seeing=0.6, atlas_timestamp='2025-11-24T19:34:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.051249999999999574, 0.05025000000000013, -0.03250000000000064, 0.021000000000000796, 0.060750000000000526, 0.051000000000000156, 0.019750000000001933, 0.046499999999999986, 0.012000000000000455, 0.08124999999999893, 0.03500000000000014, 0.10500000000000043, 0.07624999999999993, 0.041999999999999815, -0.012000000000000455, 0.00975000000000037, 0.06600000000000072, 0.06949999999999967, 0.006249999999999645, 0.10499999999999865, 0.10274999999999856, 0.0182500000000001, -0.024250000000000327, 0.03599999999999959, 0.057500000000000995, 0.06475000000000009, 0.08950000000000102, 0.09050000000000047, 0.002000000000000668, 0.04800000000000182, 0.016500000000000625, 0.02424999999999855], zp_timestamp='2025-11-24T19:31:00')
2025-11-24T21:34:41.337 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:34:41.350 [DEBUG] [Thread-197370] [transport.py] [_log()] starting thread (client mode): 0xd3135690
2025-11-24T21:34:41.350 [DEBUG] [Thread-197370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:34:41.365 [DEBUG] [Thread-197370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:34:41.365 [INFO] [Thread-197370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] client lang: <none>
2025-11-24T21:34:41.373 [DEBUG] [Thread-197370] [transport.py] [_log()] server lang: <none>
2025-11-24T21:34:41.374 [DEBUG] [Thread-197370] [transport.py] [_log()] kex follows: False
2025-11-24T21:34:41.374 [DEBUG] [Thread-197370] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:34:41.374 [DEBUG] [Thread-197370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:34:41.374 [DEBUG] [Thread-197370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:34:41.382 [DEBUG] [Thread-197370] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:34:41.382 [DEBUG] [Thread-197370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:34:41.382 [DEBUG] [Thread-197370] [transport.py] [_log()] Compression: none
2025-11-24T21:34:41.382 [DEBUG] [Thread-197370] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:34:41.430 [DEBUG] [Thread-197370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:34:41.431 [DEBUG] [Thread-197370] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:34:41.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:34:41.431 [DEBUG] [Thread-197370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:34:41.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:34:41.488 [DEBUG] [Thread-197370] [transport.py] [_log()] userauth is OK
2025-11-24T21:34:41.488 [DEBUG] [Thread-197370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:34:41.488 [DEBUG] [Thread-197370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:34:41.488 [DEBUG] [Thread-197370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:34:41.488 [DEBUG] [Thread-197370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:34:41.502 [INFO] [Thread-197370] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:34:41.502 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:34:41.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:34:42.328 [DEBUG] [Thread-197370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:34:42.328 [DEBUG] [Thread-197370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:34:42.367 [DEBUG] [Thread-197370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:34:42.367 [DEBUG] [Thread-197370] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:34:42.375 [DEBUG] [Thread-197370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:34:42.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:34: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-11-24T21:34: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-11-24T21:34:42.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:34:42.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:34:42.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:34:42.409 [DEBUG] [Thread-197370] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:34:54.353 [DEBUG] [Thread-197372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:35:09.469 [DEBUG] [Thread-197373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:35:12.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:35:12.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:35:12.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-11-24T21:35:13.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 34, 37), 15.91, 33.75, 0.0, 30.52, 15.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:35:13.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:34:37
2025-11-24T21:35:13.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:35:13.731 [DEBUG] [Thread-197374] [transport.py] [_log()] starting thread (client mode): 0xd31361d0
2025-11-24T21:35:13.732 [DEBUG] [Thread-197374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:35:13.746 [DEBUG] [Thread-197374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:35:13.747 [INFO] [Thread-197374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:35:13.752 [DEBUG] [Thread-197374] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:35:13.752 [DEBUG] [Thread-197374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] client lang: <none>
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] server lang: <none>
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] kex follows: False
2025-11-24T21:35:13.753 [DEBUG] [Thread-197374] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:35:13.754 [DEBUG] [Thread-197374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:35:13.754 [DEBUG] [Thread-197374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:35:13.755 [DEBUG] [Thread-197374] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:35:13.755 [DEBUG] [Thread-197374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:35:13.755 [DEBUG] [Thread-197374] [transport.py] [_log()] Compression: none
2025-11-24T21:35:13.755 [DEBUG] [Thread-197374] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:35:13.794 [DEBUG] [Thread-197374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:35:13.799 [DEBUG] [Thread-197374] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:35:13.801 [DEBUG] [Thread-197374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:35:13.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:35:13.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:35:13.807 [DEBUG] [Thread-197374] [transport.py] [_log()] userauth is OK
2025-11-24T21:35:13.807 [DEBUG] [Thread-197374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:35:13.807 [DEBUG] [Thread-197374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:35:13.807 [DEBUG] [Thread-197374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:35:13.807 [DEBUG] [Thread-197374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:35:13.834 [INFO] [Thread-197374] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:35:13.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:35:14.626 [DEBUG] [Thread-197374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:35:14.626 [DEBUG] [Thread-197374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:35:14.627 [DEBUG] [Thread-197374] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:35:14.667 [DEBUG] [Thread-197374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:35:14.667 [DEBUG] [Thread-197374] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:35:14.669 [DEBUG] [Thread-197374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:35:14.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:35:14.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:35:14.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:35:14.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:35:14.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:35:14.690 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:35:14.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:35:14.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:35:14.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:35:14.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.815673 -999.00  +15.50  15.25     39   +1.60 1 1 1 1 1     0    0 13.91 2.18 ZNESW 16.9 15.2 173.2 29.2 15.7 -25.6 15.6 -25.2 15.4 -23.9 15.7 -24.9
2025-11-24T21:35:14.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:35:14.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:35:14.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.815673
2025-11-24T21:35:14.697 [DEBUG] [Thread-197374] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:35:14.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:35:14.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:35:14.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:35:14.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:35:14.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:35:14.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:34:37', tmtdew=15.91, humidity=33.75, cloud=0.0, wind=30.52, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:35:10', seeing=0.57, atlas_timestamp='2025-11-24T19:34:34.147', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.051249999999999574, 0.05025000000000013, -0.03250000000000064, 0.021000000000000796, 0.060750000000000526, 0.051000000000000156, 0.019750000000001933, 0.046499999999999986, 0.012000000000000455, 0.08124999999999893, 0.03500000000000014, 0.10500000000000043, 0.07624999999999993, 0.041999999999999815, -0.012000000000000455, 0.00975000000000037, 0.06600000000000072, 0.06949999999999967, 0.006249999999999645, 0.10499999999999865, 0.10274999999999856, 0.0182500000000001, -0.024250000000000327, 0.03599999999999959, 0.057500000000000995, 0.06475000000000009, 0.08950000000000102, 0.09050000000000047, 0.002000000000000668, 0.04800000000000182, 0.016500000000000625, 0.02424999999999855], zp_timestamp='2025-11-24T19:31:00')
2025-11-24T21:35:14.774 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:35:14.786 [DEBUG] [Thread-197377] [transport.py] [_log()] starting thread (client mode): 0xd3152c20
2025-11-24T21:35:14.786 [DEBUG] [Thread-197377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:35:14.800 [DEBUG] [Thread-197377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:35:14.800 [INFO] [Thread-197377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:35:14.808 [DEBUG] [Thread-197377] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:35:14.808 [DEBUG] [Thread-197377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:35:14.808 [DEBUG] [Thread-197377] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:35:14.808 [DEBUG] [Thread-197377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:35:14.808 [DEBUG] [Thread-197377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:35:14.808 [DEBUG] [Thread-197377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:35:14.809 [DEBUG] [Thread-197377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:35:14.809 [DEBUG] [Thread-197377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:35:14.809 [DEBUG] [Thread-197377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:35:14.809 [DEBUG] [Thread-197377] [transport.py] [_log()] client lang: <none>
2025-11-24T21:35:14.809 [DEBUG] [Thread-197377] [transport.py] [_log()] server lang: <none>
2025-11-24T21:35:14.809 [DEBUG] [Thread-197377] [transport.py] [_log()] kex follows: False
2025-11-24T21:35:14.809 [DEBUG] [Thread-197377] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:35:14.809 [DEBUG] [Thread-197377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:35:14.810 [DEBUG] [Thread-197377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:35:14.810 [DEBUG] [Thread-197377] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:35:14.810 [DEBUG] [Thread-197377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:35:14.810 [DEBUG] [Thread-197377] [transport.py] [_log()] Compression: none
2025-11-24T21:35:14.810 [DEBUG] [Thread-197377] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:35:14.868 [DEBUG] [Thread-197377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:35:14.869 [DEBUG] [Thread-197377] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:35:14.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:35:14.870 [DEBUG] [Thread-197377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:35:14.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:35:14.927 [DEBUG] [Thread-197377] [transport.py] [_log()] userauth is OK
2025-11-24T21:35:14.927 [DEBUG] [Thread-197377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:35:14.927 [DEBUG] [Thread-197377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:35:14.928 [DEBUG] [Thread-197377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:35:14.928 [DEBUG] [Thread-197377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:35:14.949 [INFO] [Thread-197377] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:35:14.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:35:14.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:35:15.811 [DEBUG] [Thread-197377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:35:15.811 [DEBUG] [Thread-197377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:35:15.858 [DEBUG] [Thread-197377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:35:15.858 [DEBUG] [Thread-197377] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:35:15.866 [DEBUG] [Thread-197377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:35:15.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:35:15.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-11-24T21:35:15.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-11-24T21:35:15.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:35:15.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:35:15.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:35:15.900 [DEBUG] [Thread-197377] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:35:23.871 [DEBUG] [Thread-197379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:35:24.524 [DEBUG] [Thread-197380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:35:32.841 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:35:32.844 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:35:39.697 [DEBUG] [Thread-197381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:35:45.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:35:45.924 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:35:45.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-11-24T21:35:46.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 35, 10), 15.94, 33.69, 0.0, 29.93, 15.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:35:46.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:35:10
2025-11-24T21:35:47.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:35:47.186 [DEBUG] [Thread-197382] [transport.py] [_log()] starting thread (client mode): 0xd0738e50
2025-11-24T21:35:47.187 [DEBUG] [Thread-197382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:35:47.198 [DEBUG] [Thread-197382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:35:47.198 [INFO] [Thread-197382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:35:47.203 [DEBUG] [Thread-197382] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:35:47.204 [DEBUG] [Thread-197382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:35:47.204 [DEBUG] [Thread-197382] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:35:47.204 [DEBUG] [Thread-197382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:35:47.204 [DEBUG] [Thread-197382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:35:47.204 [DEBUG] [Thread-197382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:35:47.204 [DEBUG] [Thread-197382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:35:47.204 [DEBUG] [Thread-197382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:35:47.204 [DEBUG] [Thread-197382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:35:47.205 [DEBUG] [Thread-197382] [transport.py] [_log()] client lang: <none>
2025-11-24T21:35:47.205 [DEBUG] [Thread-197382] [transport.py] [_log()] server lang: <none>
2025-11-24T21:35:47.205 [DEBUG] [Thread-197382] [transport.py] [_log()] kex follows: False
2025-11-24T21:35:47.205 [DEBUG] [Thread-197382] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:35:47.206 [DEBUG] [Thread-197382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:35:47.206 [DEBUG] [Thread-197382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:35:47.206 [DEBUG] [Thread-197382] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:35:47.206 [DEBUG] [Thread-197382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:35:47.206 [DEBUG] [Thread-197382] [transport.py] [_log()] Compression: none
2025-11-24T21:35:47.206 [DEBUG] [Thread-197382] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:35:47.247 [DEBUG] [Thread-197382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:35:47.251 [DEBUG] [Thread-197382] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:35:47.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:35:47.255 [DEBUG] [Thread-197382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:35:47.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:35:47.259 [DEBUG] [Thread-197382] [transport.py] [_log()] userauth is OK
2025-11-24T21:35:47.259 [DEBUG] [Thread-197382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:35:47.260 [DEBUG] [Thread-197382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:35:47.260 [DEBUG] [Thread-197382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:35:47.260 [DEBUG] [Thread-197382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:35:47.296 [INFO] [Thread-197382] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:35:47.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:35:47.938 [DEBUG] [Thread-197382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:35:47.939 [DEBUG] [Thread-197382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:35:47.940 [DEBUG] [Thread-197382] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:35:47.979 [DEBUG] [Thread-197382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:35:47.979 [DEBUG] [Thread-197382] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:35:47.982 [DEBUG] [Thread-197382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:35:47.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:35:47.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:35:47.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:35:47.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:35:48.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:35:48.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:35:48.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:35:48.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:35:48.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:35:48.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.816367 -999.00  +15.40  20.75     39   +1.50 1 1 1 1 1     0    0 14.19 2.43 ZNESW 25.2 20.8 175.4 27.3 15.8 -25.6 15.6 -24.9 15.4 -23.9 15.7 -24.8
2025-11-24T21:35:48.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:35:48.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:35:48.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.816367
2025-11-24T21:35:48.010 [DEBUG] [Thread-197382] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:35:48.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:35:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:35:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:35:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:35:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:35:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:35:10', tmtdew=15.94, humidity=33.69, cloud=0.0, wind=29.93, temperature=15.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:35:43', seeing=0.58, atlas_timestamp='2025-11-24T19:35:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.051249999999999574, 0.05025000000000013, -0.03250000000000064, 0.021000000000000796, 0.060750000000000526, 0.051000000000000156, 0.019750000000001933, 0.046499999999999986, 0.012000000000000455, 0.08124999999999893, 0.03500000000000014, 0.10500000000000043, 0.07624999999999993, 0.041999999999999815, -0.012000000000000455, 0.00975000000000037, 0.06600000000000072, 0.06949999999999967, 0.006249999999999645, 0.10499999999999865, 0.10274999999999856, 0.0182500000000001, -0.024250000000000327, 0.03599999999999959, 0.057500000000000995, 0.06475000000000009, 0.08950000000000102, 0.09050000000000047, 0.002000000000000668, 0.04800000000000182, 0.016500000000000625, 0.02424999999999855], zp_timestamp='2025-11-24T19:31:00')
2025-11-24T21:35:48.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:35:48.115 [DEBUG] [Thread-197385] [transport.py] [_log()] starting thread (client mode): 0xd07fb070
2025-11-24T21:35:48.115 [DEBUG] [Thread-197385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:35:48.131 [DEBUG] [Thread-197385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:35:48.131 [INFO] [Thread-197385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:35:48.139 [DEBUG] [Thread-197385] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:35:48.139 [DEBUG] [Thread-197385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:35:48.139 [DEBUG] [Thread-197385] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:35:48.139 [DEBUG] [Thread-197385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:35:48.139 [DEBUG] [Thread-197385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] client lang: <none>
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] server lang: <none>
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] kex follows: False
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] Compression: none
2025-11-24T21:35:48.140 [DEBUG] [Thread-197385] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:35:48.195 [DEBUG] [Thread-197385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:35:48.195 [DEBUG] [Thread-197385] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:35:48.195 [DEBUG] [Thread-197385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:35:48.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:35:48.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:35:48.256 [DEBUG] [Thread-197385] [transport.py] [_log()] userauth is OK
2025-11-24T21:35:48.257 [DEBUG] [Thread-197385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:35:48.257 [DEBUG] [Thread-197385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:35:48.257 [DEBUG] [Thread-197385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:35:48.257 [DEBUG] [Thread-197385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:35:48.276 [INFO] [Thread-197385] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:35:48.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:35:48.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:35:49.164 [DEBUG] [Thread-197385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:35:49.164 [DEBUG] [Thread-197385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:35:49.212 [DEBUG] [Thread-197385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:35:49.212 [DEBUG] [Thread-197385] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:35:49.221 [DEBUG] [Thread-197385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:35:49.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:35:49.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-11-24T21:35:49.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-11-24T21:35:49.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:35:49.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:35:49.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:35:49.259 [DEBUG] [Thread-197385] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:35:54.739 [DEBUG] [Thread-197387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:36:09.815 [DEBUG] [Thread-197388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:36:19.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:36:19.306 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:36:19.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-11-24T21:36:20.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 35, 43), 15.95, 33.64, 0.0, 29.01, 15.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:36:20.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:35:43
2025-11-24T21:36:20.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:36:20.546 [DEBUG] [Thread-197389] [transport.py] [_log()] starting thread (client mode): 0xd073a4d0
2025-11-24T21:36:20.547 [DEBUG] [Thread-197389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:36:20.554 [DEBUG] [Thread-197389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:36:20.555 [INFO] [Thread-197389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:36:20.561 [DEBUG] [Thread-197389] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:36:20.561 [DEBUG] [Thread-197389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:36:20.561 [DEBUG] [Thread-197389] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:36:20.561 [DEBUG] [Thread-197389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:36:20.561 [DEBUG] [Thread-197389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:36:20.561 [DEBUG] [Thread-197389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:36:20.561 [DEBUG] [Thread-197389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:36:20.561 [DEBUG] [Thread-197389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:36:20.561 [DEBUG] [Thread-197389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:36:20.561 [DEBUG] [Thread-197389] [transport.py] [_log()] client lang: <none>
2025-11-24T21:36:20.562 [DEBUG] [Thread-197389] [transport.py] [_log()] server lang: <none>
2025-11-24T21:36:20.562 [DEBUG] [Thread-197389] [transport.py] [_log()] kex follows: False
2025-11-24T21:36:20.562 [DEBUG] [Thread-197389] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:36:20.562 [DEBUG] [Thread-197389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:36:20.563 [DEBUG] [Thread-197389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:36:20.563 [DEBUG] [Thread-197389] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:36:20.563 [DEBUG] [Thread-197389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:36:20.563 [DEBUG] [Thread-197389] [transport.py] [_log()] Compression: none
2025-11-24T21:36:20.563 [DEBUG] [Thread-197389] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:36:20.597 [DEBUG] [Thread-197389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:36:20.602 [DEBUG] [Thread-197389] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:36:20.603 [DEBUG] [Thread-197389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:36:20.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:36:20.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:36:20.609 [DEBUG] [Thread-197389] [transport.py] [_log()] userauth is OK
2025-11-24T21:36:20.609 [DEBUG] [Thread-197389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:36:20.609 [DEBUG] [Thread-197389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:36:20.609 [DEBUG] [Thread-197389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:36:20.610 [DEBUG] [Thread-197389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:36:20.636 [INFO] [Thread-197389] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:36:20.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:36:21.303 [DEBUG] [Thread-197389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:36:21.304 [DEBUG] [Thread-197389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:36:21.315 [DEBUG] [Thread-197389] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:36:21.344 [DEBUG] [Thread-197389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:36:21.344 [DEBUG] [Thread-197389] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:36:21.348 [DEBUG] [Thread-197389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:36:21.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:36:21.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:36:21.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:36:21.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:36:21.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:36:21.375 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:36:21.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:36:21.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:36:21.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:36:21.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.816715 -999.00  +15.40  17.99     39   +1.50 1 1 1 1 1     0    0 13.81 2.41 ZNESW 21.8 18.0 178.2 31.3 15.8 -25.6 15.6 -25.0 15.4 -23.9 15.7 -24.8
2025-11-24T21:36:21.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:36:21.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:36:21.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.816715
2025-11-24T21:36:21.383 [DEBUG] [Thread-197389] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:36:21.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:36:21.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:36:21.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:36:21.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:36:21.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:36:21.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:35:43', tmtdew=15.95, humidity=33.64, cloud=0.0, wind=29.01, temperature=15.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:36:17', seeing=0.65, atlas_timestamp='2025-11-24T19:36:04.176', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.051249999999999574, 0.05025000000000013, -0.03250000000000064, 0.021000000000000796, 0.060750000000000526, 0.051000000000000156, 0.019750000000001933, 0.046499999999999986, 0.012000000000000455, 0.08124999999999893, 0.03500000000000014, 0.10500000000000043, 0.07624999999999993, 0.041999999999999815, -0.012000000000000455, 0.00975000000000037, 0.06600000000000072, 0.06949999999999967, 0.006249999999999645, 0.10499999999999865, 0.10274999999999856, 0.0182500000000001, -0.024250000000000327, 0.03599999999999959, 0.057500000000000995, 0.06475000000000009, 0.08950000000000102, 0.09050000000000047, 0.002000000000000668, 0.04800000000000182, 0.016500000000000625, 0.02424999999999855], zp_timestamp='2025-11-24T19:31:00')
2025-11-24T21:36:21.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:36:21.517 [DEBUG] [Thread-197392] [transport.py] [_log()] starting thread (client mode): 0xd07ce650
2025-11-24T21:36:21.517 [DEBUG] [Thread-197392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:36:21.532 [DEBUG] [Thread-197392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:36:21.532 [INFO] [Thread-197392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] client lang: <none>
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] server lang: <none>
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] kex follows: False
2025-11-24T21:36:21.539 [DEBUG] [Thread-197392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:36:21.540 [DEBUG] [Thread-197392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:36:21.540 [DEBUG] [Thread-197392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:36:21.540 [DEBUG] [Thread-197392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:36:21.540 [DEBUG] [Thread-197392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:36:21.540 [DEBUG] [Thread-197392] [transport.py] [_log()] Compression: none
2025-11-24T21:36:21.540 [DEBUG] [Thread-197392] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:36:21.596 [DEBUG] [Thread-197392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:36:21.597 [DEBUG] [Thread-197392] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:36:21.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:36:21.598 [DEBUG] [Thread-197392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:36:21.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:36:21.652 [DEBUG] [Thread-197392] [transport.py] [_log()] userauth is OK
2025-11-24T21:36:21.653 [DEBUG] [Thread-197392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:36:21.653 [DEBUG] [Thread-197392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:36:21.653 [DEBUG] [Thread-197392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:36:21.653 [DEBUG] [Thread-197392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:36:21.672 [INFO] [Thread-197392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:36:21.673 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:36:21.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:36:22.507 [DEBUG] [Thread-197392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:36:22.508 [DEBUG] [Thread-197392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:36:22.546 [DEBUG] [Thread-197392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:36:22.547 [DEBUG] [Thread-197392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:36:22.556 [DEBUG] [Thread-197392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:36:22.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:36:22.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-11-24T21:36:22.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-11-24T21:36:22.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:36:22.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:36:22.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:36:22.595 [DEBUG] [Thread-197392] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:36:24.218 [DEBUG] [Thread-197394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:36:24.889 [DEBUG] [Thread-197395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:36:33.056 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:36:33.057 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:36:40.010 [DEBUG] [Thread-197396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:36:51.475 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:36:52.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:36:52.602 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:36:52.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:36:53.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 36, 16), 15.93, 33.7, 0.0, 29.06, 15.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:36:53.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:36:16
2025-11-24T21:36:53.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:36:53.731 [DEBUG] [Thread-197397] [transport.py] [_log()] starting thread (client mode): 0xd3135690
2025-11-24T21:36:53.731 [DEBUG] [Thread-197397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:36:53.748 [DEBUG] [Thread-197397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:36:53.748 [INFO] [Thread-197397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] client lang: <none>
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] server lang: <none>
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] kex follows: False
2025-11-24T21:36:53.750 [DEBUG] [Thread-197397] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:36:53.751 [DEBUG] [Thread-197397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:36:53.751 [DEBUG] [Thread-197397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:36:53.751 [DEBUG] [Thread-197397] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:36:53.751 [DEBUG] [Thread-197397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:36:53.751 [DEBUG] [Thread-197397] [transport.py] [_log()] Compression: none
2025-11-24T21:36:53.751 [DEBUG] [Thread-197397] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:36:53.778 [DEBUG] [Thread-197397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:36:53.782 [DEBUG] [Thread-197397] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:36:53.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:36:53.784 [DEBUG] [Thread-197397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:36:53.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:36:53.786 [DEBUG] [Thread-197397] [transport.py] [_log()] userauth is OK
2025-11-24T21:36:53.787 [DEBUG] [Thread-197397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:36:53.787 [DEBUG] [Thread-197397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:36:53.787 [DEBUG] [Thread-197397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:36:53.787 [DEBUG] [Thread-197397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:36:53.808 [INFO] [Thread-197397] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:36:53.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:36:54.473 [DEBUG] [Thread-197397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:36:54.474 [DEBUG] [Thread-197397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:36:54.484 [DEBUG] [Thread-197397] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:36:54.515 [DEBUG] [Thread-197397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:36:54.515 [DEBUG] [Thread-197397] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:36:54.518 [DEBUG] [Thread-197397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:36:54.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:36:54.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:36:54.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:36:54.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:36:54.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:36:54.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:36:54.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:36:54.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:36:54.547 [DEBUG] [Thread-197397] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:36:54.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:36:54.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.817062 -999.00  +15.40  20.46     39   +1.50 1 1 1 1 1     0    0 14.47 2.55 ZNESW 22.2 20.5 160.8 35.8 15.8 -25.5 15.6 -25.0 15.4 -23.9 15.7 -24.9
2025-11-24T21:36:54.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:36:54.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:36:54.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.817062
2025-11-24T21:36:54.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:36:54.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:36:54.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:36:54.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:36:54.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:36:54.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:36:16', tmtdew=15.93, humidity=33.7, cloud=0.0, wind=29.06, temperature=15.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:36:50', seeing=0.58, atlas_timestamp='2025-11-24T19:36:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.01425000000000054, 0.051249999999999574, 0.05025000000000013, -0.03250000000000064, 0.021000000000000796, 0.060750000000000526, 0.051000000000000156, 0.019750000000001933, 0.046499999999999986, 0.012000000000000455, 0.08124999999999893, 0.03500000000000014, 0.10500000000000043, 0.07624999999999993, 0.041999999999999815, -0.012000000000000455, 0.00975000000000037, 0.06600000000000072, 0.06949999999999967, 0.006249999999999645, 0.10499999999999865, 0.10274999999999856, 0.0182500000000001, -0.024250000000000327, 0.03599999999999959, 0.057500000000000995, 0.06475000000000009, 0.08950000000000102, 0.09050000000000047, 0.002000000000000668, 0.04800000000000182, 0.016500000000000625, 0.02424999999999855], zp_timestamp='2025-11-24T19:31:00')
2025-11-24T21:36:54.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:36:54.661 [DEBUG] [Thread-197400] [transport.py] [_log()] starting thread (client mode): 0xd07fb070
2025-11-24T21:36:54.661 [DEBUG] [Thread-197400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:36:54.676 [DEBUG] [Thread-197400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:36:54.676 [INFO] [Thread-197400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:36:54.683 [DEBUG] [Thread-197400] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:36:54.683 [DEBUG] [Thread-197400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:36:54.683 [DEBUG] [Thread-197400] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:36:54.683 [DEBUG] [Thread-197400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:36:54.683 [DEBUG] [Thread-197400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:36:54.683 [DEBUG] [Thread-197400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:36:54.683 [DEBUG] [Thread-197400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:36:54.683 [DEBUG] [Thread-197400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:36:54.683 [DEBUG] [Thread-197400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:36:54.683 [DEBUG] [Thread-197400] [transport.py] [_log()] client lang: <none>
2025-11-24T21:36:54.684 [DEBUG] [Thread-197400] [transport.py] [_log()] server lang: <none>
2025-11-24T21:36:54.684 [DEBUG] [Thread-197400] [transport.py] [_log()] kex follows: False
2025-11-24T21:36:54.684 [DEBUG] [Thread-197400] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:36:54.684 [DEBUG] [Thread-197400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:36:54.684 [DEBUG] [Thread-197400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:36:54.684 [DEBUG] [Thread-197400] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:36:54.684 [DEBUG] [Thread-197400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:36:54.684 [DEBUG] [Thread-197400] [transport.py] [_log()] Compression: none
2025-11-24T21:36:54.684 [DEBUG] [Thread-197400] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:36:54.745 [DEBUG] [Thread-197400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:36:54.746 [DEBUG] [Thread-197400] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:36:54.746 [DEBUG] [Thread-197400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:36:54.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:36:54.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:36:54.805 [DEBUG] [Thread-197400] [transport.py] [_log()] userauth is OK
2025-11-24T21:36:54.806 [DEBUG] [Thread-197400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:36:54.806 [DEBUG] [Thread-197400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:36:54.806 [DEBUG] [Thread-197400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:36:54.806 [DEBUG] [Thread-197400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:36:54.826 [INFO] [Thread-197400] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:36:54.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:36:54.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:36:55.041 [DEBUG] [Thread-197402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:36:55.684 [DEBUG] [Thread-197400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:36:55.685 [DEBUG] [Thread-197400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:36:55.732 [DEBUG] [Thread-197400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:36:55.732 [DEBUG] [Thread-197400] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:36:55.741 [DEBUG] [Thread-197400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:36:55.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:36:55.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-11-24T21:36:55.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-11-24T21:36:55.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:36:55.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:36:55.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:36:55.775 [DEBUG] [Thread-197400] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:36:56.850 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:36:59.917 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:37:06.303 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:37:10.137 [DEBUG] [Thread-197403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:37:24.511 [DEBUG] [Thread-197404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:37:25.190 [DEBUG] [Thread-197405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:37:25.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:37:25.802 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:37:25.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-11-24T21:37:26.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 37, 22), 15.9, 33.77, 0.0, 31.53, 15.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:37:26.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:37:22
2025-11-24T21:37:26.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:37:26.941 [DEBUG] [Thread-197406] [transport.py] [_log()] starting thread (client mode): 0xd07ce050
2025-11-24T21:37:26.942 [DEBUG] [Thread-197406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:37:26.942 [DEBUG] [Thread-197406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:37:26.942 [INFO] [Thread-197406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] client lang: <none>
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] server lang: <none>
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] kex follows: False
2025-11-24T21:37:26.946 [DEBUG] [Thread-197406] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:37:26.947 [DEBUG] [Thread-197406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:37:26.947 [DEBUG] [Thread-197406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:37:26.947 [DEBUG] [Thread-197406] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:37:26.947 [DEBUG] [Thread-197406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:37:26.947 [DEBUG] [Thread-197406] [transport.py] [_log()] Compression: none
2025-11-24T21:37:26.947 [DEBUG] [Thread-197406] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:37:26.970 [DEBUG] [Thread-197406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:37:26.974 [DEBUG] [Thread-197406] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:37:26.975 [DEBUG] [Thread-197406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:37:26.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:37:26.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:37:26.979 [DEBUG] [Thread-197406] [transport.py] [_log()] userauth is OK
2025-11-24T21:37:26.979 [DEBUG] [Thread-197406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:37:26.979 [DEBUG] [Thread-197406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:37:26.979 [DEBUG] [Thread-197406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:37:26.979 [DEBUG] [Thread-197406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:37:27.002 [INFO] [Thread-197406] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:37:27.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:37:27.595 [DEBUG] [Thread-197406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:37:27.596 [DEBUG] [Thread-197406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:37:27.600 [DEBUG] [Thread-197406] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:37:27.636 [DEBUG] [Thread-197406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:37:27.636 [DEBUG] [Thread-197406] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:37:27.638 [DEBUG] [Thread-197406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:37:27.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:37:27.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:37:27.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:37:27.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:37:27.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:37:27.656 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:37:27.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:37:27.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:37:27.659 [DEBUG] [Thread-197406] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:37:27.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:37:27.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.817409 -999.00  +15.40  21.82     39   +1.50 1 1 1 1 1     0    0 13.89 2.04 ZNESW 21.6 21.8 174.2 30.5 15.7 -25.5 15.6 -25.0 15.4 -23.8 15.7 -24.8
2025-11-24T21:37:27.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:37:27.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:37:27.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.817409
2025-11-24T21:37:27.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:37:27.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:37:27.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:37:27.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:37:27.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:37:27.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:37:22', tmtdew=15.9, humidity=33.77, cloud=0.0, wind=31.53, temperature=15.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:37:22', seeing=0.58, atlas_timestamp='2025-11-24T19:37:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020749999999999602, 0.026250000000000995, -0.027499999999999858, 0.009499999999999176, 0.03125, 0.027499999999999858, 0.038750000000000284, 0.05999999999999872, 0.05000000000000071, 0.04374999999999929, 0.023999999999999133, 0.10099999999999909, 0.08525000000000027, 0.02499999999999858, 0.01699999999999946, 0.042749999999999844, 0.06649999999999956, 0.06999999999999851, 0.012249999999998096, 0.11999999999999922, 0.09174999999999933, 0.060750000000000526, 0.016250000000001208, 0.019999999999999574, 0.0730000000000004, 0.09925000000000139, 0.08950000000000102, 0.040500000000001535, -0.007999999999999119, 0.030000000000001137, 0.026000000000001577, 0.0007500000000000284], zp_timestamp='2025-11-24T19:36:00')
2025-11-24T21:37:27.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:37:27.786 [DEBUG] [Thread-197409] [transport.py] [_log()] starting thread (client mode): 0xd0787730
2025-11-24T21:37:27.786 [DEBUG] [Thread-197409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:37:27.802 [DEBUG] [Thread-197409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:37:27.802 [INFO] [Thread-197409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:37:27.810 [DEBUG] [Thread-197409] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:37:27.810 [DEBUG] [Thread-197409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:37:27.810 [DEBUG] [Thread-197409] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:37:27.810 [DEBUG] [Thread-197409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:37:27.810 [DEBUG] [Thread-197409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:37:27.810 [DEBUG] [Thread-197409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:37:27.811 [DEBUG] [Thread-197409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:37:27.811 [DEBUG] [Thread-197409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:37:27.811 [DEBUG] [Thread-197409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:37:27.811 [DEBUG] [Thread-197409] [transport.py] [_log()] client lang: <none>
2025-11-24T21:37:27.811 [DEBUG] [Thread-197409] [transport.py] [_log()] server lang: <none>
2025-11-24T21:37:27.811 [DEBUG] [Thread-197409] [transport.py] [_log()] kex follows: False
2025-11-24T21:37:27.811 [DEBUG] [Thread-197409] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:37:27.811 [DEBUG] [Thread-197409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:37:27.811 [DEBUG] [Thread-197409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:37:27.812 [DEBUG] [Thread-197409] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:37:27.812 [DEBUG] [Thread-197409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:37:27.812 [DEBUG] [Thread-197409] [transport.py] [_log()] Compression: none
2025-11-24T21:37:27.812 [DEBUG] [Thread-197409] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:37:27.871 [DEBUG] [Thread-197409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:37:27.872 [DEBUG] [Thread-197409] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:37:27.873 [DEBUG] [Thread-197409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:37:27.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:37:27.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:37:27.942 [DEBUG] [Thread-197409] [transport.py] [_log()] userauth is OK
2025-11-24T21:37:27.942 [DEBUG] [Thread-197409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:37:27.942 [DEBUG] [Thread-197409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:37:27.942 [DEBUG] [Thread-197409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:37:27.942 [DEBUG] [Thread-197409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:37:27.959 [INFO] [Thread-197409] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:37:27.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:37:27.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:37:28.819 [DEBUG] [Thread-197409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:37:28.820 [DEBUG] [Thread-197409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:37:28.867 [DEBUG] [Thread-197409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:37:28.867 [DEBUG] [Thread-197409] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:37:28.881 [DEBUG] [Thread-197409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:37:28.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:37:28.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:37:28.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-11-24T21:37:28.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:37:28.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:37:28.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:37:28.918 [DEBUG] [Thread-197409] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:37:33.260 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:37:33.262 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:37:40.267 [DEBUG] [Thread-197411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:37:55.383 [DEBUG] [Thread-197412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:37:58.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:37:58.947 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:37:58.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-11-24T21:37:59.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 37, 55), 15.88, 33.82, 0.0, 30.63, 15.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:37:59.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:37:55
2025-11-24T21:37:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:38:00.156 [DEBUG] [Thread-197413] [transport.py] [_log()] starting thread (client mode): 0xc9b83490
2025-11-24T21:38:00.156 [DEBUG] [Thread-197413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:38:00.168 [DEBUG] [Thread-197413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:38:00.168 [INFO] [Thread-197413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] client lang: <none>
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] server lang: <none>
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] kex follows: False
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:38:00.172 [DEBUG] [Thread-197413] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:38:00.173 [DEBUG] [Thread-197413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:38:00.173 [DEBUG] [Thread-197413] [transport.py] [_log()] Compression: none
2025-11-24T21:38:00.173 [DEBUG] [Thread-197413] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:38:00.197 [DEBUG] [Thread-197413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:38:00.200 [DEBUG] [Thread-197413] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:38:00.200 [DEBUG] [Thread-197413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:38:00.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:38:00.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:38:00.203 [DEBUG] [Thread-197413] [transport.py] [_log()] userauth is OK
2025-11-24T21:38:00.203 [DEBUG] [Thread-197413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:38:00.203 [DEBUG] [Thread-197413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:38:00.203 [DEBUG] [Thread-197413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:38:00.203 [DEBUG] [Thread-197413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:38:00.214 [INFO] [Thread-197413] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:38:00.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:38:00.843 [DEBUG] [Thread-197413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:38:00.843 [DEBUG] [Thread-197413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:38:00.844 [DEBUG] [Thread-197413] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:38:00.884 [DEBUG] [Thread-197413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:38:00.884 [DEBUG] [Thread-197413] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:38:00.886 [DEBUG] [Thread-197413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:38:00.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:38:00.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:38:00.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:38:00.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:38:00.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:38:00.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:38:00.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:38:00.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:38:00.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:38:00.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.817756 -999.00  +15.40  20.89     39   +1.50 1 1 1 1 1     0    0 14.27 2.07 ZNESW 20.2 20.9 169.4 26.5 15.7 -25.6 15.6 -25.2 15.3 -23.9 15.7 -25.0
2025-11-24T21:38:00.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:38:00.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:38:00.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.817756
2025-11-24T21:38:00.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:38:00.925 [DEBUG] [Thread-197413] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:38:00.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:38:00.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:38:00.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:38:00.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:38:00.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:37:55', tmtdew=15.88, humidity=33.82, cloud=0.0, wind=30.63, temperature=15.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:37:55', seeing=0.56, atlas_timestamp='2025-11-24T19:37:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020749999999999602, 0.026250000000000995, -0.027499999999999858, 0.009499999999999176, 0.03125, 0.027499999999999858, 0.038750000000000284, 0.05999999999999872, 0.05000000000000071, 0.04374999999999929, 0.023999999999999133, 0.10099999999999909, 0.08525000000000027, 0.02499999999999858, 0.01699999999999946, 0.042749999999999844, 0.06649999999999956, 0.06999999999999851, 0.012249999999998096, 0.11999999999999922, 0.09174999999999933, 0.060750000000000526, 0.016250000000001208, 0.019999999999999574, 0.0730000000000004, 0.09925000000000139, 0.08950000000000102, 0.040500000000001535, -0.007999999999999119, 0.030000000000001137, 0.026000000000001577, 0.0007500000000000284], zp_timestamp='2025-11-24T19:36:00')
2025-11-24T21:38:01.007 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:38:01.018 [DEBUG] [Thread-197416] [transport.py] [_log()] starting thread (client mode): 0xd0784bb0
2025-11-24T21:38:01.018 [DEBUG] [Thread-197416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:38:01.032 [DEBUG] [Thread-197416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:38:01.032 [INFO] [Thread-197416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:38:01.039 [DEBUG] [Thread-197416] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:38:01.039 [DEBUG] [Thread-197416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:38:01.039 [DEBUG] [Thread-197416] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:38:01.039 [DEBUG] [Thread-197416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] client lang: <none>
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] server lang: <none>
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] kex follows: False
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] Compression: none
2025-11-24T21:38:01.040 [DEBUG] [Thread-197416] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:38:01.094 [DEBUG] [Thread-197416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:38:01.094 [DEBUG] [Thread-197416] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:38:01.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:38:01.095 [DEBUG] [Thread-197416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:38:01.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:38:01.152 [DEBUG] [Thread-197416] [transport.py] [_log()] userauth is OK
2025-11-24T21:38:01.152 [DEBUG] [Thread-197416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:38:01.152 [DEBUG] [Thread-197416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:38:01.152 [DEBUG] [Thread-197416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:38:01.152 [DEBUG] [Thread-197416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:38:01.169 [INFO] [Thread-197416] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:38:01.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:38:01.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:38:02.008 [DEBUG] [Thread-197416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:38:02.008 [DEBUG] [Thread-197416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:38:02.056 [DEBUG] [Thread-197416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:38:02.056 [DEBUG] [Thread-197416] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:38:02.064 [DEBUG] [Thread-197416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:38:02.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:38:02.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-11-24T21:38:02.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-11-24T21:38:02.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:38:02.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:38:02.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:38:02.096 [DEBUG] [Thread-197416] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:38:10.445 [DEBUG] [Thread-197418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:24.801 [DEBUG] [Thread-197419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:25.071 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:25.600 [DEBUG] [Thread-197420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:28.258 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:32.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:38:32.120 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:38:32.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:38:32.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 38, 28), 15.91, 33.74, 0.0, 31.58, 15.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:38:32.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:38:28
2025-11-24T21:38:33.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:38:33.309 [DEBUG] [Thread-197421] [transport.py] [_log()] starting thread (client mode): 0xd07cfaf0
2025-11-24T21:38:33.310 [DEBUG] [Thread-197421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:38:33.311 [DEBUG] [Thread-197421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:38:33.311 [INFO] [Thread-197421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:38:33.322 [DEBUG] [Thread-197421] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] client lang: <none>
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] server lang: <none>
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] kex follows: False
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:38:33.323 [DEBUG] [Thread-197421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:38:33.324 [DEBUG] [Thread-197421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:38:33.324 [DEBUG] [Thread-197421] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:38:33.324 [DEBUG] [Thread-197421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:38:33.324 [DEBUG] [Thread-197421] [transport.py] [_log()] Compression: none
2025-11-24T21:38:33.324 [DEBUG] [Thread-197421] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:38:33.354 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:33.354 [DEBUG] [Thread-197421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:38:33.362 [DEBUG] [Thread-197421] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:38:33.364 [DEBUG] [Thread-197421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:38:33.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:38:33.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:38:33.397 [DEBUG] [Thread-197421] [transport.py] [_log()] userauth is OK
2025-11-24T21:38:33.398 [DEBUG] [Thread-197421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:38:33.398 [DEBUG] [Thread-197421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:38:33.398 [DEBUG] [Thread-197421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:38:33.398 [DEBUG] [Thread-197421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:38:33.425 [INFO] [Thread-197421] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:38:33.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:38:33.462 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:33.464 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:34.005 [DEBUG] [Thread-197421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:38:34.005 [DEBUG] [Thread-197421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:38:34.016 [DEBUG] [Thread-197421] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:38:34.045 [DEBUG] [Thread-197421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:38:34.046 [DEBUG] [Thread-197421] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:38:34.050 [DEBUG] [Thread-197421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:38:34.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:38:34.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:38:34.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:38:34.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:38:34.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:38:34.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:38:34.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:38:34.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:38:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:38:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.818104 -999.00  +15.40  13.46     39   +1.50 1 1 1 1 1     0    0 13.80 2.15 ZNESW 16.6 13.5 171.0 29.9 15.7 -25.6 15.6 -25.0 15.4 -23.9 15.6 -24.8
2025-11-24T21:38:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:38:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:38:34.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.818104
2025-11-24T21:38:34.082 [DEBUG] [Thread-197421] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:38:34.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:38:34.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:38:34.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:38:34.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:38:34.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:38:34.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:38:28', tmtdew=15.91, humidity=33.74, cloud=0.0, wind=31.58, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:38:28', seeing=0.61, atlas_timestamp='2025-11-24T19:38:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020749999999999602, 0.026250000000000995, -0.027499999999999858, 0.009499999999999176, 0.03125, 0.027499999999999858, 0.038750000000000284, 0.05999999999999872, 0.05000000000000071, 0.04374999999999929, 0.023999999999999133, 0.10099999999999909, 0.08525000000000027, 0.02499999999999858, 0.01699999999999946, 0.042749999999999844, 0.06649999999999956, 0.06999999999999851, 0.012249999999998096, 0.11999999999999922, 0.09174999999999933, 0.060750000000000526, 0.016250000000001208, 0.019999999999999574, 0.0730000000000004, 0.09925000000000139, 0.08950000000000102, 0.040500000000001535, -0.007999999999999119, 0.030000000000001137, 0.026000000000001577, 0.0007500000000000284], zp_timestamp='2025-11-24T19:36:00')
2025-11-24T21:38: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-11-24T21:38:34.213 [DEBUG] [Thread-197424] [transport.py] [_log()] starting thread (client mode): 0xd07cebc0
2025-11-24T21:38:34.213 [DEBUG] [Thread-197424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:38:34.227 [DEBUG] [Thread-197424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:38:34.227 [INFO] [Thread-197424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:38:34.236 [DEBUG] [Thread-197424] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:38:34.236 [DEBUG] [Thread-197424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:38:34.236 [DEBUG] [Thread-197424] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:38:34.236 [DEBUG] [Thread-197424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:38:34.236 [DEBUG] [Thread-197424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:38:34.236 [DEBUG] [Thread-197424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:38:34.236 [DEBUG] [Thread-197424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:38:34.236 [DEBUG] [Thread-197424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:38:34.236 [DEBUG] [Thread-197424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:38:34.236 [DEBUG] [Thread-197424] [transport.py] [_log()] client lang: <none>
2025-11-24T21:38:34.237 [DEBUG] [Thread-197424] [transport.py] [_log()] server lang: <none>
2025-11-24T21:38:34.237 [DEBUG] [Thread-197424] [transport.py] [_log()] kex follows: False
2025-11-24T21:38:34.237 [DEBUG] [Thread-197424] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:38:34.237 [DEBUG] [Thread-197424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:38:34.237 [DEBUG] [Thread-197424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:38:34.237 [DEBUG] [Thread-197424] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:38:34.237 [DEBUG] [Thread-197424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:38:34.237 [DEBUG] [Thread-197424] [transport.py] [_log()] Compression: none
2025-11-24T21:38:34.237 [DEBUG] [Thread-197424] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:38:34.293 [DEBUG] [Thread-197424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:38:34.294 [DEBUG] [Thread-197424] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:38:34.294 [DEBUG] [Thread-197424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:38:34.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:38:34.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:38:34.352 [DEBUG] [Thread-197424] [transport.py] [_log()] userauth is OK
2025-11-24T21:38:34.352 [DEBUG] [Thread-197424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:38:34.352 [DEBUG] [Thread-197424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:38:34.352 [DEBUG] [Thread-197424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:38:34.352 [DEBUG] [Thread-197424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:38:34.371 [INFO] [Thread-197424] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:38:34.371 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:38:34.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:38:35.205 [DEBUG] [Thread-197424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:38:35.205 [DEBUG] [Thread-197424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:38:35.244 [DEBUG] [Thread-197424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:38:35.244 [DEBUG] [Thread-197424] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:38:35.253 [DEBUG] [Thread-197424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:38:35.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:38:35.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:38:35.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:38:35.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:38:35.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:38:35.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:38:35.286 [DEBUG] [Thread-197424] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:38:38.831 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:40.653 [DEBUG] [Thread-197426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:55.807 [DEBUG] [Thread-197427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:38:58.101 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:02.479 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:05.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:39:05.311 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:39:05.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:39:06.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 39, 1), 15.92, 33.72, 0.0, 32.31, 15.53, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:39:06.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:39:01
2025-11-24T21:39:06.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:39:06.538 [DEBUG] [Thread-197428] [transport.py] [_log()] starting thread (client mode): 0xd07cdfc0
2025-11-24T21:39:06.538 [DEBUG] [Thread-197428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:39:06.547 [DEBUG] [Thread-197428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:39:06.547 [INFO] [Thread-197428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] client lang: <none>
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] server lang: <none>
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] kex follows: False
2025-11-24T21:39:06.552 [DEBUG] [Thread-197428] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:39:06.553 [DEBUG] [Thread-197428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:39:06.553 [DEBUG] [Thread-197428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:39:06.553 [DEBUG] [Thread-197428] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:39:06.553 [DEBUG] [Thread-197428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:39:06.553 [DEBUG] [Thread-197428] [transport.py] [_log()] Compression: none
2025-11-24T21:39:06.553 [DEBUG] [Thread-197428] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:39:06.590 [DEBUG] [Thread-197428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:39:06.595 [DEBUG] [Thread-197428] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:39:06.597 [DEBUG] [Thread-197428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:39:06.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:39:06.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:39:06.603 [DEBUG] [Thread-197428] [transport.py] [_log()] userauth is OK
2025-11-24T21:39:06.603 [DEBUG] [Thread-197428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:39:06.604 [DEBUG] [Thread-197428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:39:06.604 [DEBUG] [Thread-197428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:39:06.604 [DEBUG] [Thread-197428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:39:06.645 [INFO] [Thread-197428] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:39:06.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:39:07.313 [DEBUG] [Thread-197428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:39:07.313 [DEBUG] [Thread-197428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:39:07.313 [DEBUG] [Thread-197428] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:39:07.354 [DEBUG] [Thread-197428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:39:07.354 [DEBUG] [Thread-197428] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:39:07.357 [DEBUG] [Thread-197428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:39:07.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:39:07.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:39:07.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:39:07.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:39:07.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:39:07.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:39:07.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:39:07.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:39:07.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:39:07.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.818104 -999.00  +15.40  13.46     39   +1.50 1 1 1 1 1     0    0 13.80 2.15 ZNESW 16.6 13.5 171.0 29.9 15.7 -25.6 15.6 -25.0 15.4 -23.9 15.6 -24.8
2025-11-24T21:39:07.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:39:07.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:39:07.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.818104
2025-11-24T21:39:07.389 [DEBUG] [Thread-197428] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:39:07.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:39:07.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:39:07.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:39:07.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:39:07.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:39:07.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:39:01', tmtdew=15.92, humidity=33.72, cloud=0.0, wind=32.31, temperature=15.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:39:01', seeing=0.61, atlas_timestamp='2025-11-24T19:38:04.186', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020749999999999602, 0.026250000000000995, -0.027499999999999858, 0.009499999999999176, 0.03125, 0.027499999999999858, 0.038750000000000284, 0.05999999999999872, 0.05000000000000071, 0.04374999999999929, 0.023999999999999133, 0.10099999999999909, 0.08525000000000027, 0.02499999999999858, 0.01699999999999946, 0.042749999999999844, 0.06649999999999956, 0.06999999999999851, 0.012249999999998096, 0.11999999999999922, 0.09174999999999933, 0.060750000000000526, 0.016250000000001208, 0.019999999999999574, 0.0730000000000004, 0.09925000000000139, 0.08950000000000102, 0.040500000000001535, -0.007999999999999119, 0.030000000000001137, 0.026000000000001577, 0.0007500000000000284], zp_timestamp='2025-11-24T19:36:00')
2025-11-24T21:39:07.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:39:07.495 [DEBUG] [Thread-197431] [transport.py] [_log()] starting thread (client mode): 0xd317d8a0
2025-11-24T21:39:07.496 [DEBUG] [Thread-197431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:39:07.510 [DEBUG] [Thread-197431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:39:07.510 [INFO] [Thread-197431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] client lang: <none>
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] server lang: <none>
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] kex follows: False
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] Compression: none
2025-11-24T21:39:07.518 [DEBUG] [Thread-197431] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:39:07.576 [DEBUG] [Thread-197431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:39:07.577 [DEBUG] [Thread-197431] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:39:07.577 [DEBUG] [Thread-197431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:39:07.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:39:07.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:39:07.636 [DEBUG] [Thread-197431] [transport.py] [_log()] userauth is OK
2025-11-24T21:39:07.636 [DEBUG] [Thread-197431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:39:07.636 [DEBUG] [Thread-197431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:39:07.636 [DEBUG] [Thread-197431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:39:07.636 [DEBUG] [Thread-197431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:39:07.651 [INFO] [Thread-197431] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:39:07.651 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:39:07.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:39:08.500 [DEBUG] [Thread-197431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:39:08.500 [DEBUG] [Thread-197431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:39:08.548 [DEBUG] [Thread-197431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:39:08.548 [DEBUG] [Thread-197431] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:39:08.557 [DEBUG] [Thread-197431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:39:08.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:39:08.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-11-24T21:39:08.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-11-24T21:39:08.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:39:08.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:39:08.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:39:08.592 [DEBUG] [Thread-197431] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:39:10.887 [DEBUG] [Thread-197433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:21.886 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:25.068 [DEBUG] [Thread-197434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:26.015 [DEBUG] [Thread-197435 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:26.303 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:33.204 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:33.674 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:33.676 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:37.619 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:38.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:39:38.609 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:39:38.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-11-24T21:39:39.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 39, 34), 15.94, 33.69, 0.0, 27.14, 15.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:39:39.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:39:34
2025-11-24T21:39:39.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:39:39.807 [DEBUG] [Thread-197436] [transport.py] [_log()] starting thread (client mode): 0xd317c8e0
2025-11-24T21:39:39.808 [DEBUG] [Thread-197436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:39:39.820 [DEBUG] [Thread-197436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:39:39.820 [INFO] [Thread-197436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:39:39.825 [DEBUG] [Thread-197436] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] client lang: <none>
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] server lang: <none>
2025-11-24T21:39:39.826 [DEBUG] [Thread-197436] [transport.py] [_log()] kex follows: False
2025-11-24T21:39:39.827 [DEBUG] [Thread-197436] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:39:39.827 [DEBUG] [Thread-197436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:39:39.827 [DEBUG] [Thread-197436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:39:39.828 [DEBUG] [Thread-197436] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:39:39.828 [DEBUG] [Thread-197436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:39:39.828 [DEBUG] [Thread-197436] [transport.py] [_log()] Compression: none
2025-11-24T21:39:39.828 [DEBUG] [Thread-197436] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:39:39.869 [DEBUG] [Thread-197436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:39:39.875 [DEBUG] [Thread-197436] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:39:39.877 [DEBUG] [Thread-197436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:39:39.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:39:39.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:39:39.882 [DEBUG] [Thread-197436] [transport.py] [_log()] userauth is OK
2025-11-24T21:39:39.882 [DEBUG] [Thread-197436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:39:39.882 [DEBUG] [Thread-197436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:39:39.882 [DEBUG] [Thread-197436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:39:39.883 [DEBUG] [Thread-197436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:39:39.909 [INFO] [Thread-197436] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:39:39.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:39:40.499 [DEBUG] [Thread-197436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:39:40.500 [DEBUG] [Thread-197436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:39:40.501 [DEBUG] [Thread-197436] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:39:40.540 [DEBUG] [Thread-197436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:39:40.540 [DEBUG] [Thread-197436] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:39:40.543 [DEBUG] [Thread-197436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:39:40.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:39:40.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:39:40.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:39:40.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:39:40.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:39:40.567 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:39:40.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:39:40.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:39:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:39:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.818451 -999.00  +15.40  24.89     39   +1.60 1 1 1 1 1     0    0 14.25 1.50 ZNESW 26.1 24.9 166.6 31.8 15.8 -25.5 15.6 -25.0 15.3 -23.9 15.6 -24.8
2025-11-24T21:39:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:39:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:39:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.818451
2025-11-24T21:39:40.575 [DEBUG] [Thread-197436] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:39:40.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:39:40.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:39:40.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:39:40.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:39:40.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:39:40.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:39:34', tmtdew=15.94, humidity=33.69, cloud=0.0, wind=27.14, temperature=15.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:39:35', seeing=0.56, atlas_timestamp='2025-11-24T19:38:34.166', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020749999999999602, 0.026250000000000995, -0.027499999999999858, 0.009499999999999176, 0.03125, 0.027499999999999858, 0.038750000000000284, 0.05999999999999872, 0.05000000000000071, 0.04374999999999929, 0.023999999999999133, 0.10099999999999909, 0.08525000000000027, 0.02499999999999858, 0.01699999999999946, 0.042749999999999844, 0.06649999999999956, 0.06999999999999851, 0.012249999999998096, 0.11999999999999922, 0.09174999999999933, 0.060750000000000526, 0.016250000000001208, 0.019999999999999574, 0.0730000000000004, 0.09925000000000139, 0.08950000000000102, 0.040500000000001535, -0.007999999999999119, 0.030000000000001137, 0.026000000000001577, 0.0007500000000000284], zp_timestamp='2025-11-24T19:36:00')
2025-11-24T21:39:40.685 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:39:40.697 [DEBUG] [Thread-197439] [transport.py] [_log()] starting thread (client mode): 0xc9b83df0
2025-11-24T21:39:40.697 [DEBUG] [Thread-197439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:39:40.712 [DEBUG] [Thread-197439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:39:40.712 [INFO] [Thread-197439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:39:40.720 [DEBUG] [Thread-197439] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:39:40.720 [DEBUG] [Thread-197439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:39:40.720 [DEBUG] [Thread-197439] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:39:40.720 [DEBUG] [Thread-197439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:39:40.720 [DEBUG] [Thread-197439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] client lang: <none>
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] server lang: <none>
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] kex follows: False
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] Compression: none
2025-11-24T21:39:40.721 [DEBUG] [Thread-197439] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:39:40.781 [DEBUG] [Thread-197439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:39:40.782 [DEBUG] [Thread-197439] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:39:40.782 [DEBUG] [Thread-197439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:39:40.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:39:40.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:39:40.837 [DEBUG] [Thread-197439] [transport.py] [_log()] userauth is OK
2025-11-24T21:39:40.837 [DEBUG] [Thread-197439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:39:40.837 [DEBUG] [Thread-197439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:39:40.837 [DEBUG] [Thread-197439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:39:40.837 [DEBUG] [Thread-197439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:39:40.856 [INFO] [Thread-197439] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:39:40.857 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:39:40.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:39:41.096 [DEBUG] [Thread-197441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:39:41.747 [DEBUG] [Thread-197439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:39:41.747 [DEBUG] [Thread-197439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:39:41.787 [DEBUG] [Thread-197439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:39:41.787 [DEBUG] [Thread-197439] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:39:41.796 [DEBUG] [Thread-197439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:39:41.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:39:41.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-11-24T21:39:41.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:39:41.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:39:41.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:39:41.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:39:41.834 [DEBUG] [Thread-197439] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:39:56.219 [DEBUG] [Thread-197442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:40:11.301 [DEBUG] [Thread-197443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:40:11.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:40:11.831 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:40:11.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:40:12.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 40, 7), 15.93, 33.69, 0.0, 30.38, 15.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:40:12.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:40:07
2025-11-24T21:40:12.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:40:12.999 [DEBUG] [Thread-197444] [transport.py] [_log()] starting thread (client mode): 0xd0713160
2025-11-24T21:40:12.999 [DEBUG] [Thread-197444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:40:13.003 [DEBUG] [Thread-197444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:40:13.003 [INFO] [Thread-197444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] client lang: <none>
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] server lang: <none>
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] kex follows: False
2025-11-24T21:40:13.007 [DEBUG] [Thread-197444] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:40:13.008 [DEBUG] [Thread-197444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:40:13.008 [DEBUG] [Thread-197444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:40:13.008 [DEBUG] [Thread-197444] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:40:13.008 [DEBUG] [Thread-197444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:40:13.008 [DEBUG] [Thread-197444] [transport.py] [_log()] Compression: none
2025-11-24T21:40:13.009 [DEBUG] [Thread-197444] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:40:13.043 [DEBUG] [Thread-197444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:40:13.046 [DEBUG] [Thread-197444] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:40:13.048 [DEBUG] [Thread-197444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:40:13.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:40:13.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:40:13.053 [DEBUG] [Thread-197444] [transport.py] [_log()] userauth is OK
2025-11-24T21:40:13.053 [DEBUG] [Thread-197444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:40:13.053 [DEBUG] [Thread-197444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:40:13.054 [DEBUG] [Thread-197444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:40:13.054 [DEBUG] [Thread-197444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:40:13.079 [INFO] [Thread-197444] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:40:13.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:40:14.062 [DEBUG] [Thread-197444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:40:14.062 [DEBUG] [Thread-197444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:40:14.072 [DEBUG] [Thread-197444] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:40:14.103 [DEBUG] [Thread-197444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:40:14.103 [DEBUG] [Thread-197444] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:40:14.106 [DEBUG] [Thread-197444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:40:14.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:40:14.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:40:14.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:40:14.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:40:14.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:40:14.126 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:40:14.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:40:14.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:40:14.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:40:14.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.819145 -999.00  +15.40  28.52     39   +1.50 1 1 1 1 1     0    0 13.68 0.16 ZNESW 19.0 28.5 182.8 33.2 15.7 -25.6 15.6 -25.0 15.3 -23.9 15.7 -24.9
2025-11-24T21:40:14.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:40:14.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:40:14.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.819145
2025-11-24T21:40:14.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:40:14.141 [DEBUG] [Thread-197444] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:40:14.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:40:14.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:40:14.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:40:14.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:40:14.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:40:07', tmtdew=15.93, humidity=33.69, cloud=0.0, wind=30.38, temperature=15.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:40:08', seeing=0.57, atlas_timestamp='2025-11-24T19:39:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020749999999999602, 0.026250000000000995, -0.027499999999999858, 0.009499999999999176, 0.03125, 0.027499999999999858, 0.038750000000000284, 0.05999999999999872, 0.05000000000000071, 0.04374999999999929, 0.023999999999999133, 0.10099999999999909, 0.08525000000000027, 0.02499999999999858, 0.01699999999999946, 0.042749999999999844, 0.06649999999999956, 0.06999999999999851, 0.012249999999998096, 0.11999999999999922, 0.09174999999999933, 0.060750000000000526, 0.016250000000001208, 0.019999999999999574, 0.0730000000000004, 0.09925000000000139, 0.08950000000000102, 0.040500000000001535, -0.007999999999999119, 0.030000000000001137, 0.026000000000001577, 0.0007500000000000284], zp_timestamp='2025-11-24T19:36:00')
2025-11-24T21:40:14.219 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:40:14.229 [DEBUG] [Thread-197447] [transport.py] [_log()] starting thread (client mode): 0xc9b81de0
2025-11-24T21:40:14.230 [DEBUG] [Thread-197447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:40:14.250 [DEBUG] [Thread-197447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:40:14.250 [INFO] [Thread-197447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:40:14.257 [DEBUG] [Thread-197447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:40:14.257 [DEBUG] [Thread-197447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:40:14.257 [DEBUG] [Thread-197447] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:40:14.257 [DEBUG] [Thread-197447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:40:14.257 [DEBUG] [Thread-197447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:40:14.257 [DEBUG] [Thread-197447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:40:14.257 [DEBUG] [Thread-197447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:40:14.257 [DEBUG] [Thread-197447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:40:14.257 [DEBUG] [Thread-197447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:40:14.258 [DEBUG] [Thread-197447] [transport.py] [_log()] client lang: <none>
2025-11-24T21:40:14.258 [DEBUG] [Thread-197447] [transport.py] [_log()] server lang: <none>
2025-11-24T21:40:14.258 [DEBUG] [Thread-197447] [transport.py] [_log()] kex follows: False
2025-11-24T21:40:14.258 [DEBUG] [Thread-197447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:40:14.258 [DEBUG] [Thread-197447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:40:14.258 [DEBUG] [Thread-197447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:40:14.258 [DEBUG] [Thread-197447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:40:14.258 [DEBUG] [Thread-197447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:40:14.258 [DEBUG] [Thread-197447] [transport.py] [_log()] Compression: none
2025-11-24T21:40:14.258 [DEBUG] [Thread-197447] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:40:14.315 [DEBUG] [Thread-197447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:40:14.315 [DEBUG] [Thread-197447] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:40:14.315 [DEBUG] [Thread-197447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:40:14.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:40:14.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:40:14.373 [DEBUG] [Thread-197447] [transport.py] [_log()] userauth is OK
2025-11-24T21:40:14.373 [DEBUG] [Thread-197447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:40:14.373 [DEBUG] [Thread-197447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:40:14.373 [DEBUG] [Thread-197447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:40:14.373 [DEBUG] [Thread-197447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:40:14.398 [INFO] [Thread-197447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:40:14.398 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:40:14.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:40:15.323 [DEBUG] [Thread-197447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:40:15.323 [DEBUG] [Thread-197447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:40:15.370 [DEBUG] [Thread-197447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:40:15.371 [DEBUG] [Thread-197447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:40:15.380 [DEBUG] [Thread-197447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:40:15.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:40:15.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-11-24T21:40:15.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-11-24T21:40:15.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:40:15.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:40:15.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:40:15.418 [DEBUG] [Thread-197447] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:40:25.378 [DEBUG] [Thread-197449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:40:26.376 [DEBUG] [Thread-197450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:40:33.877 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:40:33.878 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:40:36.178 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:40:39.279 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:40:41.498 [DEBUG] [Thread-197451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:40:45.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:40:45.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:40:45.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-11-24T21:40:46.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 40, 40), 15.93, 33.7, 0.0, 29.98, 15.46, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:40:46.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:40:40
2025-11-24T21:40:46.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:40:46.621 [DEBUG] [Thread-197452] [transport.py] [_log()] starting thread (client mode): 0xd07cec80
2025-11-24T21:40:46.622 [DEBUG] [Thread-197452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:40:46.632 [DEBUG] [Thread-197452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:40:46.633 [INFO] [Thread-197452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] client lang: <none>
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] server lang: <none>
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] kex follows: False
2025-11-24T21:40:46.638 [DEBUG] [Thread-197452] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:40:46.639 [DEBUG] [Thread-197452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:40:46.639 [DEBUG] [Thread-197452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:40:46.639 [DEBUG] [Thread-197452] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:40:46.639 [DEBUG] [Thread-197452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:40:46.639 [DEBUG] [Thread-197452] [transport.py] [_log()] Compression: none
2025-11-24T21:40:46.639 [DEBUG] [Thread-197452] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:40:46.678 [DEBUG] [Thread-197452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:40:46.683 [DEBUG] [Thread-197452] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:40:46.684 [DEBUG] [Thread-197452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:40:46.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:40:46.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:40:46.690 [DEBUG] [Thread-197452] [transport.py] [_log()] userauth is OK
2025-11-24T21:40:46.690 [DEBUG] [Thread-197452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:40:46.691 [DEBUG] [Thread-197452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:40:46.691 [DEBUG] [Thread-197452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:40:46.691 [DEBUG] [Thread-197452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:40:46.712 [INFO] [Thread-197452] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:40:46.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:40:47.313 [DEBUG] [Thread-197452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:40:47.313 [DEBUG] [Thread-197452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:40:47.315 [DEBUG] [Thread-197452] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:40:47.355 [DEBUG] [Thread-197452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:40:47.355 [DEBUG] [Thread-197452] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:40:47.359 [DEBUG] [Thread-197452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:40:47.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:40:47.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:40:47.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:40:47.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:40:47.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:40:47.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:40:47.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:40:47.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:40:47.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:40:47.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.819492 -999.00  +15.40  18.73     39   +1.50 1 1 1 1 1     0    0 14.14 -0.38 ZNESW 24.1 18.7 174.4 33.7 15.7 -25.5 15.5 -25.0 15.3 -24.0 15.6 -24.8
2025-11-24T21:40:47.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:40:47.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:40:47.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.819492
2025-11-24T21:40:47.392 [DEBUG] [Thread-197452] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:40:47.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:40:47.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:40:47.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:40:47.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:40:47.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:40:47.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:40:40', tmtdew=15.93, humidity=33.7, cloud=0.0, wind=29.98, temperature=15.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:40:41', seeing=0.57, atlas_timestamp='2025-11-24T19:40:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020749999999999602, 0.026250000000000995, -0.027499999999999858, 0.009499999999999176, 0.03125, 0.027499999999999858, 0.038750000000000284, 0.05999999999999872, 0.05000000000000071, 0.04374999999999929, 0.023999999999999133, 0.10099999999999909, 0.08525000000000027, 0.02499999999999858, 0.01699999999999946, 0.042749999999999844, 0.06649999999999956, 0.06999999999999851, 0.012249999999998096, 0.11999999999999922, 0.09174999999999933, 0.060750000000000526, 0.016250000000001208, 0.019999999999999574, 0.0730000000000004, 0.09925000000000139, 0.08950000000000102, 0.040500000000001535, -0.007999999999999119, 0.030000000000001137, 0.026000000000001577, 0.0007500000000000284], zp_timestamp='2025-11-24T19:36:00')
2025-11-24T21:40:47.494 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:40:47.507 [DEBUG] [Thread-197455] [transport.py] [_log()] starting thread (client mode): 0xd317d450
2025-11-24T21:40:47.507 [DEBUG] [Thread-197455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:40:47.521 [DEBUG] [Thread-197455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:40:47.521 [INFO] [Thread-197455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] client lang: <none>
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] server lang: <none>
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] kex follows: False
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:40:47.529 [DEBUG] [Thread-197455] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:40:47.530 [DEBUG] [Thread-197455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:40:47.530 [DEBUG] [Thread-197455] [transport.py] [_log()] Compression: none
2025-11-24T21:40:47.530 [DEBUG] [Thread-197455] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:40:47.588 [DEBUG] [Thread-197455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:40:47.588 [DEBUG] [Thread-197455] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:40:47.589 [DEBUG] [Thread-197455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:40:47.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:40:47.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:40:47.644 [DEBUG] [Thread-197455] [transport.py] [_log()] userauth is OK
2025-11-24T21:40:47.644 [DEBUG] [Thread-197455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:40:47.644 [DEBUG] [Thread-197455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:40:47.644 [DEBUG] [Thread-197455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:40:47.644 [DEBUG] [Thread-197455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:40:47.661 [INFO] [Thread-197455] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:40:47.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:40:47.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:40:48.504 [DEBUG] [Thread-197455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:40:48.505 [DEBUG] [Thread-197455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:40:48.543 [DEBUG] [Thread-197455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:40:48.543 [DEBUG] [Thread-197455] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:40:48.552 [DEBUG] [Thread-197455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:40:48.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:40:48.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-11-24T21:40:48.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-11-24T21:40:48.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:40:48.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:40:48.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:40:48.591 [DEBUG] [Thread-197455] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:40:56.536 [DEBUG] [Thread-197457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:41:11.614 [DEBUG] [Thread-197458 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:41:18.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:41:18.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:41:18.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-11-24T21:41:19.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 41, 13), 15.92, 33.7, 0.0, 30.77, 15.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:41:19.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:41:13
2025-11-24T21:41:19.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:41:19.734 [DEBUG] [Thread-197459] [transport.py] [_log()] starting thread (client mode): 0xd07871c0
2025-11-24T21:41:19.735 [DEBUG] [Thread-197459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:41:19.743 [DEBUG] [Thread-197459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:41:19.743 [INFO] [Thread-197459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] client lang: <none>
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] server lang: <none>
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] kex follows: False
2025-11-24T21:41:19.748 [DEBUG] [Thread-197459] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:41:19.749 [DEBUG] [Thread-197459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:41:19.749 [DEBUG] [Thread-197459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:41:19.749 [DEBUG] [Thread-197459] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:41:19.749 [DEBUG] [Thread-197459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:41:19.749 [DEBUG] [Thread-197459] [transport.py] [_log()] Compression: none
2025-11-24T21:41:19.749 [DEBUG] [Thread-197459] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:41:19.778 [DEBUG] [Thread-197459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:41:19.781 [DEBUG] [Thread-197459] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:41:19.782 [DEBUG] [Thread-197459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:41:19.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:41:19.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:41:19.785 [DEBUG] [Thread-197459] [transport.py] [_log()] userauth is OK
2025-11-24T21:41:19.785 [DEBUG] [Thread-197459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:41:19.785 [DEBUG] [Thread-197459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:41:19.785 [DEBUG] [Thread-197459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:41:19.785 [DEBUG] [Thread-197459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:41:19.814 [INFO] [Thread-197459] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:41:19.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:41:20.458 [DEBUG] [Thread-197459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:41:20.458 [DEBUG] [Thread-197459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:41:20.464 [DEBUG] [Thread-197459] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:41:20.499 [DEBUG] [Thread-197459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:41:20.499 [DEBUG] [Thread-197459] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:41:20.501 [DEBUG] [Thread-197459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:41:20.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:41:20.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:41:20.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:41:20.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:41:20.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:41:20.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:41:20.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:41:20.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:41:20.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:41:20.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.819840 -999.00  +15.30  20.48     39   +1.40 1 1 1 1 1     0    0 14.17 -0.89 ZNESW 23.1 20.5 172.8 28.3 15.7 -25.6 15.5 -25.0 15.3 -24.0 15.6 -24.9
2025-11-24T21:41:20.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:41:20.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:41:20.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.819840
2025-11-24T21:41:20.531 [DEBUG] [Thread-197459] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:41:20.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:41:20.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:41:20.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:41:20.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:41:20.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:41:20.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:41:13', tmtdew=15.92, humidity=33.7, cloud=0.0, wind=30.77, temperature=15.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:41:13', seeing=0.57, atlas_timestamp='2025-11-24T19:40:34.176', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020749999999999602, 0.026250000000000995, -0.027499999999999858, 0.009499999999999176, 0.03125, 0.027499999999999858, 0.038750000000000284, 0.05999999999999872, 0.05000000000000071, 0.04374999999999929, 0.023999999999999133, 0.10099999999999909, 0.08525000000000027, 0.02499999999999858, 0.01699999999999946, 0.042749999999999844, 0.06649999999999956, 0.06999999999999851, 0.012249999999998096, 0.11999999999999922, 0.09174999999999933, 0.060750000000000526, 0.016250000000001208, 0.019999999999999574, 0.0730000000000004, 0.09925000000000139, 0.08950000000000102, 0.040500000000001535, -0.007999999999999119, 0.030000000000001137, 0.026000000000001577, 0.0007500000000000284], zp_timestamp='2025-11-24T19:36:00')
2025-11-24T21:41:20.620 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:41:20.632 [DEBUG] [Thread-197462] [transport.py] [_log()] starting thread (client mode): 0xd073ace0
2025-11-24T21:41:20.632 [DEBUG] [Thread-197462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:41:20.647 [DEBUG] [Thread-197462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:41:20.647 [INFO] [Thread-197462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] client lang: <none>
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] server lang: <none>
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] kex follows: False
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] Compression: none
2025-11-24T21:41:20.655 [DEBUG] [Thread-197462] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:41:20.712 [DEBUG] [Thread-197462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:41:20.712 [DEBUG] [Thread-197462] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:41:20.713 [DEBUG] [Thread-197462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:41:20.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:41:20.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:41:20.768 [DEBUG] [Thread-197462] [transport.py] [_log()] userauth is OK
2025-11-24T21:41:20.768 [DEBUG] [Thread-197462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:41:20.768 [DEBUG] [Thread-197462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:41:20.768 [DEBUG] [Thread-197462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:41:20.768 [DEBUG] [Thread-197462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:41:20.787 [INFO] [Thread-197462] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:41:20.787 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:41:20.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:41:21.662 [DEBUG] [Thread-197462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:41:21.663 [DEBUG] [Thread-197462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:41:21.709 [DEBUG] [Thread-197462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:41:21.709 [DEBUG] [Thread-197462] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:41:21.718 [DEBUG] [Thread-197462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:41:21.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:41:21.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-11-24T21:41: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-11-24T21:41:21.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:41:21.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:41:21.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:41:21.757 [DEBUG] [Thread-197462] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:41:25.654 [DEBUG] [Thread-197464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:41:26.677 [DEBUG] [Thread-197465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:41:34.089 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:41:34.090 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:41:41.840 [DEBUG] [Thread-197466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:41:51.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:41:51.759 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:41:51.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-11-24T21:41:52.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 41, 46), 15.98, 33.7, 0.0, 31.64, 15.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:41:52.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:41:46
2025-11-24T21:41:52.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:41:52.953 [DEBUG] [Thread-197467] [transport.py] [_log()] starting thread (client mode): 0xd0784400
2025-11-24T21:41:52.953 [DEBUG] [Thread-197467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:41:52.968 [DEBUG] [Thread-197467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:41:52.968 [INFO] [Thread-197467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:41:52.970 [DEBUG] [Thread-197467] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] client lang: <none>
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] server lang: <none>
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] kex follows: False
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:41:52.971 [DEBUG] [Thread-197467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:41:52.972 [DEBUG] [Thread-197467] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:41:52.972 [DEBUG] [Thread-197467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:41:52.972 [DEBUG] [Thread-197467] [transport.py] [_log()] Compression: none
2025-11-24T21:41:52.972 [DEBUG] [Thread-197467] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:41:52.996 [DEBUG] [Thread-197467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:41:52.999 [DEBUG] [Thread-197467] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:41:53.000 [DEBUG] [Thread-197467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:41:53.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:41:53.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:41:53.042 [DEBUG] [Thread-197467] [transport.py] [_log()] userauth is OK
2025-11-24T21:41:53.042 [DEBUG] [Thread-197467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:41:53.042 [DEBUG] [Thread-197467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:41:53.043 [DEBUG] [Thread-197467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:41:53.043 [DEBUG] [Thread-197467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:41:53.082 [INFO] [Thread-197467] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:41:53.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:41:53.751 [DEBUG] [Thread-197467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:41:53.751 [DEBUG] [Thread-197467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:41:53.751 [DEBUG] [Thread-197467] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:41:53.792 [DEBUG] [Thread-197467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:41:53.792 [DEBUG] [Thread-197467] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:41:53.794 [DEBUG] [Thread-197467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:41:53.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:41:53.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:41:53.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:41:53.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:41:53.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:41:53.807 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:41:53.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:41:53.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:41:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:41:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.820187 -999.00  +15.30  17.85     39   +1.50 1 1 1 1 1     0    0 13.88 -1.79 ZNESW 20.0 17.9 162.0 24.3 15.7 -25.6 15.5 -24.8 15.3 -23.7 15.6 -24.8
2025-11-24T21:41:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:41:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:41:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.820187
2025-11-24T21:41:53.813 [DEBUG] [Thread-197467] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:41:53.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:41:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:41:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:41:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:41:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:41:53.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:41:46', tmtdew=15.98, humidity=33.7, cloud=0.0, wind=31.64, temperature=15.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:41:47', seeing=0.57, atlas_timestamp='2025-11-24T19:41:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020749999999999602, 0.026250000000000995, -0.027499999999999858, 0.009499999999999176, 0.03125, 0.027499999999999858, 0.038750000000000284, 0.05999999999999872, 0.05000000000000071, 0.04374999999999929, 0.023999999999999133, 0.10099999999999909, 0.08525000000000027, 0.02499999999999858, 0.01699999999999946, 0.042749999999999844, 0.06649999999999956, 0.06999999999999851, 0.012249999999998096, 0.11999999999999922, 0.09174999999999933, 0.060750000000000526, 0.016250000000001208, 0.019999999999999574, 0.0730000000000004, 0.09925000000000139, 0.08950000000000102, 0.040500000000001535, -0.007999999999999119, 0.030000000000001137, 0.026000000000001577, 0.0007500000000000284], zp_timestamp='2025-11-24T19:36:00')
2025-11-24T21:41:53.897 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:41:53.910 [DEBUG] [Thread-197470] [transport.py] [_log()] starting thread (client mode): 0xd31375b0
2025-11-24T21:41:53.910 [DEBUG] [Thread-197470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:41:53.925 [DEBUG] [Thread-197470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:41:53.925 [INFO] [Thread-197470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] client lang: <none>
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] server lang: <none>
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] kex follows: False
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] Compression: none
2025-11-24T21:41:53.933 [DEBUG] [Thread-197470] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:41:53.991 [DEBUG] [Thread-197470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:41:53.992 [DEBUG] [Thread-197470] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:41:53.992 [DEBUG] [Thread-197470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:41:53.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:41:53.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:41:54.048 [DEBUG] [Thread-197470] [transport.py] [_log()] userauth is OK
2025-11-24T21:41:54.048 [DEBUG] [Thread-197470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:41:54.048 [DEBUG] [Thread-197470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:41:54.048 [DEBUG] [Thread-197470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:41:54.048 [DEBUG] [Thread-197470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:41:54.062 [INFO] [Thread-197470] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:41:54.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:41:54.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:41:54.903 [DEBUG] [Thread-197470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:41:54.903 [DEBUG] [Thread-197470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:41:54.951 [DEBUG] [Thread-197470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:41:54.951 [DEBUG] [Thread-197470] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:41:54.959 [DEBUG] [Thread-197470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:41:54.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:41: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-11-24T21:41:54.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-11-24T21:41:54.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:41:54.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:41:54.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:41:54.993 [DEBUG] [Thread-197470] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:41:56.873 [DEBUG] [Thread-197472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:42:11.935 [DEBUG] [Thread-197473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:42:25.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:42:25.020 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:42:25.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:42:25.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 42, 19), 15.97, 33.72, 0.0, 33.22, 15.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:42:25.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:42:19
2025-11-24T21:42:25.926 [DEBUG] [Thread-197474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:42:26.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:42:26.243 [DEBUG] [Thread-197475] [transport.py] [_log()] starting thread (client mode): 0xd3135690
2025-11-24T21:42:26.244 [DEBUG] [Thread-197475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:42:26.256 [DEBUG] [Thread-197475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:42:26.256 [INFO] [Thread-197475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] client lang: <none>
2025-11-24T21:42:26.261 [DEBUG] [Thread-197475] [transport.py] [_log()] server lang: <none>
2025-11-24T21:42:26.262 [DEBUG] [Thread-197475] [transport.py] [_log()] kex follows: False
2025-11-24T21:42:26.262 [DEBUG] [Thread-197475] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:42:26.262 [DEBUG] [Thread-197475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:42:26.262 [DEBUG] [Thread-197475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:42:26.262 [DEBUG] [Thread-197475] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:42:26.263 [DEBUG] [Thread-197475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:42:26.263 [DEBUG] [Thread-197475] [transport.py] [_log()] Compression: none
2025-11-24T21:42:26.263 [DEBUG] [Thread-197475] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:42:26.290 [DEBUG] [Thread-197475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:42:26.296 [DEBUG] [Thread-197475] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:42:26.298 [DEBUG] [Thread-197475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:42:26.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:42:26.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:42:26.303 [DEBUG] [Thread-197475] [transport.py] [_log()] userauth is OK
2025-11-24T21:42:26.303 [DEBUG] [Thread-197475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:42:26.304 [DEBUG] [Thread-197475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:42:26.304 [DEBUG] [Thread-197475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:42:26.304 [DEBUG] [Thread-197475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:42:26.329 [INFO] [Thread-197475] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:42:26.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:42:26.991 [DEBUG] [Thread-197475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:42:26.991 [DEBUG] [Thread-197475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:42:26.991 [DEBUG] [Thread-197475] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:42:26.993 [DEBUG] [Thread-197477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:42:27.032 [DEBUG] [Thread-197475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:42:27.032 [DEBUG] [Thread-197475] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:42:27.034 [DEBUG] [Thread-197475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:42:27.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:42:27.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:42:27.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:42:27.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:42:27.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:42:27.056 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:42:27.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:42:27.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:42:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:42:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.820534 -999.00  +15.30  20.12     39   +1.40 1 1 1 1 1     0    0 13.86 -2.29 ZNESW 21.4 20.1 170.4 25.4 15.7 -25.6 15.4 -25.1 15.3 -23.9 15.6 -24.9
2025-11-24T21:42:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:42:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:42:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.820534
2025-11-24T21:42:27.063 [DEBUG] [Thread-197475] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:42:27.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:42:27.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:42:27.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:42:27.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:42:27.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:42:27.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:42:19', tmtdew=15.97, humidity=33.72, cloud=0.0, wind=33.22, temperature=15.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:42:20', seeing=0.65, atlas_timestamp='2025-11-24T19:41:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020749999999999602, 0.026250000000000995, -0.027499999999999858, 0.009499999999999176, 0.03125, 0.027499999999999858, 0.038750000000000284, 0.05999999999999872, 0.05000000000000071, 0.04374999999999929, 0.023999999999999133, 0.10099999999999909, 0.08525000000000027, 0.02499999999999858, 0.01699999999999946, 0.042749999999999844, 0.06649999999999956, 0.06999999999999851, 0.012249999999998096, 0.11999999999999922, 0.09174999999999933, 0.060750000000000526, 0.016250000000001208, 0.019999999999999574, 0.0730000000000004, 0.09925000000000139, 0.08950000000000102, 0.040500000000001535, -0.007999999999999119, 0.030000000000001137, 0.026000000000001577, 0.0007500000000000284], zp_timestamp='2025-11-24T19:36:00')
2025-11-24T21:42:27.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:42:34.292 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:42:34.294 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:42:42.038 [DEBUG] [Thread-197479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:42:57.119 [DEBUG] [Thread-197480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:43:12.152 [DEBUG] [Thread-197481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:43:26.204 [DEBUG] [Thread-197482 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:43:27.212 [DEBUG] [Thread-197483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:43:34.497 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:43:34.499 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:43:42.266 [DEBUG] [Thread-197484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:43:57.297 [DEBUG] [Thread-197485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:03.192 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:08.484 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:11.551 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:12.332 [DEBUG] [Thread-197486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:17.932 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:26.494 [DEBUG] [Thread-197487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:27.364 [DEBUG] [Thread-197488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:34.710 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:34.718 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:38.598 [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-11-24T21:44:42.405 [DEBUG] [Thread-197489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:44:57.449 [DEBUG] [Thread-197490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:45:08.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:45:08.649 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:45:08.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-11-24T21:45:09.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 45, 3), 15.88, 33.79, 0.0, 29.27, 15.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:45:09.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:45:03
2025-11-24T21:45:09.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:45:09.822 [DEBUG] [Thread-197491] [transport.py] [_log()] starting thread (client mode): 0xd31f5060
2025-11-24T21:45:09.823 [DEBUG] [Thread-197491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:45:09.834 [DEBUG] [Thread-197491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:45:09.834 [INFO] [Thread-197491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] client lang: <none>
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] server lang: <none>
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] kex follows: False
2025-11-24T21:45:09.840 [DEBUG] [Thread-197491] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:45:09.841 [DEBUG] [Thread-197491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:45:09.841 [DEBUG] [Thread-197491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:45:09.841 [DEBUG] [Thread-197491] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:45:09.842 [DEBUG] [Thread-197491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:45:09.842 [DEBUG] [Thread-197491] [transport.py] [_log()] Compression: none
2025-11-24T21:45:09.842 [DEBUG] [Thread-197491] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:45:09.880 [DEBUG] [Thread-197491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:45:09.884 [DEBUG] [Thread-197491] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:45:09.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:45:09.886 [DEBUG] [Thread-197491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:45:09.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:45:09.888 [DEBUG] [Thread-197491] [transport.py] [_log()] userauth is OK
2025-11-24T21:45:09.889 [DEBUG] [Thread-197491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:45:09.889 [DEBUG] [Thread-197491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:45:09.889 [DEBUG] [Thread-197491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:45:09.889 [DEBUG] [Thread-197491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:45:09.907 [INFO] [Thread-197491] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:45:09.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:45:11.250 [DEBUG] [Thread-197491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:45:11.250 [DEBUG] [Thread-197491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:45:11.251 [DEBUG] [Thread-197491] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:45:11.291 [DEBUG] [Thread-197491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:45:11.291 [DEBUG] [Thread-197491] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:45:11.294 [DEBUG] [Thread-197491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:45:11.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:45:11.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:45:11.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:45:11.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:45:11.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:45:11.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:45:11.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:45:11.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:45:11.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:45:11.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.822617 -999.00  +15.30  16.66     39   +1.40 1 1 1 1 1     0    0 13.93 -4.84 ZNESW 18.6 16.7 159.0 28.8 15.6 -25.6 15.4 -25.2 15.2 -23.8 15.5 -25.0
2025-11-24T21:45:11.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:45:11.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:45:11.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.822617
2025-11-24T21:45:11.325 [DEBUG] [Thread-197491] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:45:11.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:45:11.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:45:11.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:45:11.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:45:11.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:45:11.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:45:03', tmtdew=15.88, humidity=33.79, cloud=0.0, wind=29.27, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:45:03', seeing=0.57, atlas_timestamp='2025-11-24T19:44:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.0027500000000006963, 0.05125000000000135, -0.03049999999999997, 0.048500000000000654, 0.07675000000000054, 0.02899999999999814, 0.0627500000000012, 0.08349999999999902, 0.05649999999999977, 0.07424999999999926, 0.009999999999999787, 0.11999999999999922, 0.10074999999999967, 0.0649999999999995, 0.024499999999999744, 0.030250000000000554, 0.08649999999999913, 0.08749999999999858, 0.004249999999998977, 0.08099999999999952, 0.10774999999999935, 0.07624999999999993, 0.06825000000000081, 0.014999999999998792, 0.04750000000000121, 0.0912500000000005, 0.07249999999999979, 0.05000000000000071, -0.04049999999999976, 0.09550000000000125, 0.028999999999999915, 0.007749999999999702], zp_timestamp='2025-11-24T19:41:00')
2025-11-24T21:45:11.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:45:11.435 [DEBUG] [Thread-197494] [transport.py] [_log()] starting thread (client mode): 0xd31f4220
2025-11-24T21:45:11.435 [DEBUG] [Thread-197494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:45:11.450 [DEBUG] [Thread-197494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:45:11.450 [INFO] [Thread-197494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:45:11.457 [DEBUG] [Thread-197494] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] client lang: <none>
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] server lang: <none>
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] kex follows: False
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] Compression: none
2025-11-24T21:45:11.458 [DEBUG] [Thread-197494] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:45:11.514 [DEBUG] [Thread-197494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:45:11.515 [DEBUG] [Thread-197494] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:45:11.515 [DEBUG] [Thread-197494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:45:11.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:45:11.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:45:11.572 [DEBUG] [Thread-197494] [transport.py] [_log()] userauth is OK
2025-11-24T21:45:11.572 [DEBUG] [Thread-197494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:45:11.572 [DEBUG] [Thread-197494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:45:11.572 [DEBUG] [Thread-197494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:45:11.572 [DEBUG] [Thread-197494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:45:11.585 [INFO] [Thread-197494] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:45:11.585 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:45:11.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:45:12.434 [DEBUG] [Thread-197494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:45:12.434 [DEBUG] [Thread-197494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:45:12.482 [DEBUG] [Thread-197494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:45:12.482 [DEBUG] [Thread-197494] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:45:12.490 [DEBUG] [Thread-197494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:45:12.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:45:12.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-11-24T21:45:12.500 [DEBUG] [Thread-197496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:45:12.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-11-24T21:45:12.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:45:12.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:45:12.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:45:12.523 [DEBUG] [Thread-197494] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:45:26.870 [DEBUG] [Thread-197497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:45:27.624 [DEBUG] [Thread-197498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:45:34.923 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:45:34.924 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:45:42.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:45:42.534 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:45:42.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-11-24T21:45:42.672 [DEBUG] [Thread-197499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:45:43.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 45, 36), 15.87, 33.82, 0.0, 29.06, 15.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:45:43.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:45:36
2025-11-24T21:45:43.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:45:43.808 [DEBUG] [Thread-197500] [transport.py] [_log()] starting thread (client mode): 0xd31f4550
2025-11-24T21:45:43.809 [DEBUG] [Thread-197500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:45:43.821 [DEBUG] [Thread-197500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:45:43.822 [INFO] [Thread-197500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:45:43.828 [DEBUG] [Thread-197500] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:45:43.828 [DEBUG] [Thread-197500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:45:43.828 [DEBUG] [Thread-197500] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:45:43.828 [DEBUG] [Thread-197500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:45:43.828 [DEBUG] [Thread-197500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:45:43.828 [DEBUG] [Thread-197500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:45:43.828 [DEBUG] [Thread-197500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:45:43.829 [DEBUG] [Thread-197500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:45:43.829 [DEBUG] [Thread-197500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:45:43.829 [DEBUG] [Thread-197500] [transport.py] [_log()] client lang: <none>
2025-11-24T21:45:43.829 [DEBUG] [Thread-197500] [transport.py] [_log()] server lang: <none>
2025-11-24T21:45:43.829 [DEBUG] [Thread-197500] [transport.py] [_log()] kex follows: False
2025-11-24T21:45:43.829 [DEBUG] [Thread-197500] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:45:43.829 [DEBUG] [Thread-197500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:45:43.829 [DEBUG] [Thread-197500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:45:43.830 [DEBUG] [Thread-197500] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:45:43.830 [DEBUG] [Thread-197500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:45:43.830 [DEBUG] [Thread-197500] [transport.py] [_log()] Compression: none
2025-11-24T21:45:43.830 [DEBUG] [Thread-197500] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:45:43.867 [DEBUG] [Thread-197500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:45:43.873 [DEBUG] [Thread-197500] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:45:43.875 [DEBUG] [Thread-197500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:45:43.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:45:43.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:45:43.881 [DEBUG] [Thread-197500] [transport.py] [_log()] userauth is OK
2025-11-24T21:45:43.882 [DEBUG] [Thread-197500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:45:43.882 [DEBUG] [Thread-197500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:45:43.883 [DEBUG] [Thread-197500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:45:43.883 [DEBUG] [Thread-197500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:45:43.911 [INFO] [Thread-197500] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:45:43.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:45:44.756 [DEBUG] [Thread-197500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:45:44.756 [DEBUG] [Thread-197500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:45:44.765 [DEBUG] [Thread-197500] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:45:44.797 [DEBUG] [Thread-197500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:45:44.797 [DEBUG] [Thread-197500] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:45:44.800 [DEBUG] [Thread-197500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:45:44.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:45:44.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:45:44.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:45:44.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:45:44.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:45:44.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:45:44.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:45:44.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:45:44.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:45:44.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.822964 -999.00  +15.30  20.10     39   +1.50 1 1 1 1 1     0    0 13.81 -5.61 ZNESW 22.2 20.1 163.8 29.6 15.6 -25.6 15.4 -25.0 15.2 -23.8 15.4 -24.7
2025-11-24T21:45:44.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:45:44.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:45:44.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.822964
2025-11-24T21:45:44.829 [DEBUG] [Thread-197500] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:45:44.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:45:44.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:45:44.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:45:44.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:45:44.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:45:44.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:45:36', tmtdew=15.87, humidity=33.82, cloud=0.0, wind=29.06, temperature=15.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:45:36', seeing=0.61, atlas_timestamp='2025-11-24T19:45:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.0027500000000006963, 0.05125000000000135, -0.03049999999999997, 0.048500000000000654, 0.07675000000000054, 0.02899999999999814, 0.0627500000000012, 0.08349999999999902, 0.05649999999999977, 0.07424999999999926, 0.009999999999999787, 0.11999999999999922, 0.10074999999999967, 0.0649999999999995, 0.024499999999999744, 0.030250000000000554, 0.08649999999999913, 0.08749999999999858, 0.004249999999998977, 0.08099999999999952, 0.10774999999999935, 0.07624999999999993, 0.06825000000000081, 0.014999999999998792, 0.04750000000000121, 0.0912500000000005, 0.07249999999999979, 0.05000000000000071, -0.04049999999999976, 0.09550000000000125, 0.028999999999999915, 0.007749999999999702], zp_timestamp='2025-11-24T19:41:00')
2025-11-24T21:45:44.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:45:44.927 [DEBUG] [Thread-197503] [transport.py] [_log()] starting thread (client mode): 0xd31f66b0
2025-11-24T21:45:44.927 [DEBUG] [Thread-197503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:45:44.942 [DEBUG] [Thread-197503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:45:44.942 [INFO] [Thread-197503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:45:44.949 [DEBUG] [Thread-197503] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:45:44.949 [DEBUG] [Thread-197503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:45:44.949 [DEBUG] [Thread-197503] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:45:44.949 [DEBUG] [Thread-197503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:45:44.949 [DEBUG] [Thread-197503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:45:44.949 [DEBUG] [Thread-197503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] client lang: <none>
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] server lang: <none>
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] kex follows: False
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] Compression: none
2025-11-24T21:45:44.950 [DEBUG] [Thread-197503] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:45:45.006 [DEBUG] [Thread-197503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:45:45.006 [DEBUG] [Thread-197503] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:45:45.006 [DEBUG] [Thread-197503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:45:45.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:45:45.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:45:45.063 [DEBUG] [Thread-197503] [transport.py] [_log()] userauth is OK
2025-11-24T21:45:45.063 [DEBUG] [Thread-197503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:45:45.063 [DEBUG] [Thread-197503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:45:45.063 [DEBUG] [Thread-197503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:45:45.063 [DEBUG] [Thread-197503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:45:45.077 [INFO] [Thread-197503] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:45:45.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:45:45.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:45:45.934 [DEBUG] [Thread-197503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:45:45.934 [DEBUG] [Thread-197503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:45:45.982 [DEBUG] [Thread-197503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:45:45.982 [DEBUG] [Thread-197503] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:45:45.991 [DEBUG] [Thread-197503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:45:46.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:45:46.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-11-24T21:45:46.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:45:46.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:45:46.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:45:46.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:45:46.031 [DEBUG] [Thread-197503] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:45:57.716 [DEBUG] [Thread-197505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:46:12.853 [DEBUG] [Thread-197506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:46:16.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:46:16.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:46:16.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-11-24T21:46:16.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 46, 9), 15.85, 33.87, 0.0, 29.54, 15.39, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:46:16.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:46:09
2025-11-24T21:46:17.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:46:17.232 [DEBUG] [Thread-197507] [transport.py] [_log()] starting thread (client mode): 0xd31f62c0
2025-11-24T21:46:17.232 [DEBUG] [Thread-197507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:46:17.242 [DEBUG] [Thread-197507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:46:17.242 [INFO] [Thread-197507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] client lang: <none>
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] server lang: <none>
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] kex follows: False
2025-11-24T21:46:17.245 [DEBUG] [Thread-197507] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:46:17.246 [DEBUG] [Thread-197507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:46:17.246 [DEBUG] [Thread-197507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:46:17.246 [DEBUG] [Thread-197507] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:46:17.246 [DEBUG] [Thread-197507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:46:17.246 [DEBUG] [Thread-197507] [transport.py] [_log()] Compression: none
2025-11-24T21:46:17.246 [DEBUG] [Thread-197507] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:46:17.273 [DEBUG] [Thread-197507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:46:17.275 [DEBUG] [Thread-197507] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:46:17.276 [DEBUG] [Thread-197507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:46:17.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:46:17.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:46:17.280 [DEBUG] [Thread-197507] [transport.py] [_log()] userauth is OK
2025-11-24T21:46:17.280 [DEBUG] [Thread-197507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:46:17.280 [DEBUG] [Thread-197507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:46:17.280 [DEBUG] [Thread-197507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:46:17.281 [DEBUG] [Thread-197507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:46:17.304 [INFO] [Thread-197507] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:46:17.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:46:17.922 [DEBUG] [Thread-197507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:46:17.922 [DEBUG] [Thread-197507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:46:17.931 [DEBUG] [Thread-197507] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:46:17.963 [DEBUG] [Thread-197507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:46:17.963 [DEBUG] [Thread-197507] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:46:17.966 [DEBUG] [Thread-197507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:46:17.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:46:17.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:46:17.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:46:17.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:46:17.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:46:17.985 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:46:17.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:46:17.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:46:17.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:46:17.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.823312 -999.00  +15.30  21.33     39   +1.40 1 1 1 1 1     0    0 13.80 -6.89 ZNESW 21.4 21.3 161.8 26.1 15.6 -25.5 15.4 -25.0 15.2 -24.0 15.4 -24.8
2025-11-24T21:46:17.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:46:17.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:46:17.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.823312
2025-11-24T21:46:17.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:46:17.997 [DEBUG] [Thread-197507] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:46:17.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:46:17.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:46:17.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:46:17.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:46:17.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:46:09', tmtdew=15.85, humidity=33.87, cloud=0.0, wind=29.54, temperature=15.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:46:09', seeing=0.61, atlas_timestamp='2025-11-24T19:45:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.0027500000000006963, 0.05125000000000135, -0.03049999999999997, 0.048500000000000654, 0.07675000000000054, 0.02899999999999814, 0.0627500000000012, 0.08349999999999902, 0.05649999999999977, 0.07424999999999926, 0.009999999999999787, 0.11999999999999922, 0.10074999999999967, 0.0649999999999995, 0.024499999999999744, 0.030250000000000554, 0.08649999999999913, 0.08749999999999858, 0.004249999999998977, 0.08099999999999952, 0.10774999999999935, 0.07624999999999993, 0.06825000000000081, 0.014999999999998792, 0.04750000000000121, 0.0912500000000005, 0.07249999999999979, 0.05000000000000071, -0.04049999999999976, 0.09550000000000125, 0.028999999999999915, 0.007749999999999702], zp_timestamp='2025-11-24T19:41:00')
2025-11-24T21:46:18.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:46:18.083 [DEBUG] [Thread-197510] [transport.py] [_log()] starting thread (client mode): 0xd317f2e0
2025-11-24T21:46:18.083 [DEBUG] [Thread-197510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:46:18.098 [DEBUG] [Thread-197510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:46:18.098 [INFO] [Thread-197510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] client lang: <none>
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] server lang: <none>
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] kex follows: False
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:46:18.106 [DEBUG] [Thread-197510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:46:18.107 [DEBUG] [Thread-197510] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:46:18.107 [DEBUG] [Thread-197510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:46:18.107 [DEBUG] [Thread-197510] [transport.py] [_log()] Compression: none
2025-11-24T21:46:18.107 [DEBUG] [Thread-197510] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:46:18.167 [DEBUG] [Thread-197510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:46:18.168 [DEBUG] [Thread-197510] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:46:18.168 [DEBUG] [Thread-197510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:46:18.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:46:18.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:46:18.224 [DEBUG] [Thread-197510] [transport.py] [_log()] userauth is OK
2025-11-24T21:46:18.224 [DEBUG] [Thread-197510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:46:18.224 [DEBUG] [Thread-197510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:46:18.224 [DEBUG] [Thread-197510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:46:18.225 [DEBUG] [Thread-197510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:46:18.243 [INFO] [Thread-197510] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:46:18.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:46:18.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:46:19.087 [DEBUG] [Thread-197510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:46:19.087 [DEBUG] [Thread-197510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:46:19.135 [DEBUG] [Thread-197510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:46:19.135 [DEBUG] [Thread-197510] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:46:19.143 [DEBUG] [Thread-197510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:46:19.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:46:19.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-11-24T21:46:19.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-11-24T21:46:19.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:46:19.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:46:19.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:46:19.180 [DEBUG] [Thread-197510] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:46:27.144 [DEBUG] [Thread-197512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:46:27.900 [DEBUG] [Thread-197513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:46:35.128 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:46:35.130 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:46:42.970 [DEBUG] [Thread-197514 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:46:49.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:46:49.180 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:46:49.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-11-24T21:46:50.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 46, 42), 15.83, 33.77, 0.0, 28.88, 15.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:46:50.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:46:42
2025-11-24T21:46:50.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:46:50.402 [DEBUG] [Thread-197515] [transport.py] [_log()] starting thread (client mode): 0xd31f6a10
2025-11-24T21:46:50.402 [DEBUG] [Thread-197515] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:46:50.413 [DEBUG] [Thread-197515] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:46:50.414 [INFO] [Thread-197515] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] client lang: <none>
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] server lang: <none>
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] kex follows: False
2025-11-24T21:46:50.420 [DEBUG] [Thread-197515] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:46:50.421 [DEBUG] [Thread-197515] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:46:50.421 [DEBUG] [Thread-197515] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:46:50.421 [DEBUG] [Thread-197515] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:46:50.421 [DEBUG] [Thread-197515] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:46:50.421 [DEBUG] [Thread-197515] [transport.py] [_log()] Compression: none
2025-11-24T21:46:50.421 [DEBUG] [Thread-197515] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:46:50.459 [DEBUG] [Thread-197515] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:46:50.464 [DEBUG] [Thread-197515] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:46:50.466 [DEBUG] [Thread-197515] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:46:50.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:46:50.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:46:50.472 [DEBUG] [Thread-197515] [transport.py] [_log()] userauth is OK
2025-11-24T21:46:50.472 [DEBUG] [Thread-197515] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:46:50.472 [DEBUG] [Thread-197515] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:46:50.472 [DEBUG] [Thread-197515] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:46:50.473 [DEBUG] [Thread-197515] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:46:50.491 [INFO] [Thread-197515] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:46:50.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:46:51.124 [DEBUG] [Thread-197515] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:46:51.124 [DEBUG] [Thread-197515] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:46:51.126 [DEBUG] [Thread-197515] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:46:51.164 [DEBUG] [Thread-197515] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:46:51.165 [DEBUG] [Thread-197515] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:46:51.170 [DEBUG] [Thread-197515] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:46:51.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:46:51.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:46:51.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:46:51.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:46:51.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:46:51.196 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:46:51.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:46:51.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:46:51.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:46:51.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.823659 -999.00  +15.20  23.23     39   +1.40 1 1 1 1 1     0    0 13.46 -7.90 ZNESW 21.3 23.2 175.8 26.5 15.5 -25.5 15.4 -25.0 15.2 -24.0 15.4 -24.8
2025-11-24T21:46:51.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:46:51.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:46:51.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.823659
2025-11-24T21:46:51.199 [DEBUG] [Thread-197515] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:46:51.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:46:51.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:46:51.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:46:51.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:46:51.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:46:51.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:46:42', tmtdew=15.83, humidity=33.77, cloud=0.0, wind=28.88, temperature=15.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:46:43', seeing=0.56, atlas_timestamp='2025-11-24T19:46:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.04275000000000162, 0.05925000000000047, -0.026500000000000412, 0.06199999999999939, 0.0832499999999996, 0.037499999999999645, 0.01025000000000098, 0.045499999999998764, 0.057000000000000384, 0.05424999999999969, 0.02149999999999963, 0.1014999999999997, 0.08024999999999949, 0.0365000000000002, 0.045999999999999375, 0.06524999999999892, 0.11250000000000071, 0.09699999999999953, 0.010249999999999204, 0.13599999999999923, 0.10974999999999824, 0.0417500000000004, 0.04374999999999929, 0.02099999999999902, 0.08300000000000018, 0.08825000000000038, 0.08249999999999957, 0.0835000000000008, 0.04150000000000098, 0.08900000000000041, -0.006000000000000227, 0.00024999999999941735], zp_timestamp='2025-11-24T19:41:00')
2025-11-24T21:46:51.313 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:46:51.327 [DEBUG] [Thread-197518] [transport.py] [_log()] starting thread (client mode): 0xd31f6800
2025-11-24T21:46:51.327 [DEBUG] [Thread-197518] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:46:51.341 [DEBUG] [Thread-197518] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:46:51.341 [INFO] [Thread-197518] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:46:51.349 [DEBUG] [Thread-197518] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:46:51.349 [DEBUG] [Thread-197518] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:46:51.349 [DEBUG] [Thread-197518] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] client lang: <none>
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] server lang: <none>
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] kex follows: False
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:46:51.350 [DEBUG] [Thread-197518] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:46:51.351 [DEBUG] [Thread-197518] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:46:51.351 [DEBUG] [Thread-197518] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:46:51.351 [DEBUG] [Thread-197518] [transport.py] [_log()] Compression: none
2025-11-24T21:46:51.351 [DEBUG] [Thread-197518] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:46:51.408 [DEBUG] [Thread-197518] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:46:51.409 [DEBUG] [Thread-197518] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:46:51.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:46:51.410 [DEBUG] [Thread-197518] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:46:51.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:46:51.467 [DEBUG] [Thread-197518] [transport.py] [_log()] userauth is OK
2025-11-24T21:46:51.468 [DEBUG] [Thread-197518] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:46:51.468 [DEBUG] [Thread-197518] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:46:51.468 [DEBUG] [Thread-197518] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:46:51.468 [DEBUG] [Thread-197518] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:46:51.487 [INFO] [Thread-197518] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:46:51.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:46:51.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:46:52.309 [DEBUG] [Thread-197518] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:46:52.309 [DEBUG] [Thread-197518] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:46:52.357 [DEBUG] [Thread-197518] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:46:52.357 [DEBUG] [Thread-197518] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:46:52.365 [DEBUG] [Thread-197518] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:46:52.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:46:52.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-11-24T21:46:52.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-11-24T21:46:52.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:46:52.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:46:52.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:46:52.399 [DEBUG] [Thread-197518] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:46:58.031 [DEBUG] [Thread-197520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:47:13.140 [DEBUG] [Thread-197521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:47:22.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:47:22.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:47:22.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:47:23.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 47, 16), 15.83, 33.77, 0.0, 29.91, 15.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:47:23.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:47:16
2025-11-24T21:47:23.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:47:23.591 [DEBUG] [Thread-197522] [transport.py] [_log()] starting thread (client mode): 0xd31f5750
2025-11-24T21:47:23.592 [DEBUG] [Thread-197522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:47:23.604 [DEBUG] [Thread-197522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:47:23.605 [INFO] [Thread-197522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] client lang: <none>
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] server lang: <none>
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] kex follows: False
2025-11-24T21:47:23.608 [DEBUG] [Thread-197522] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:47:23.609 [DEBUG] [Thread-197522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:47:23.609 [DEBUG] [Thread-197522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:47:23.609 [DEBUG] [Thread-197522] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:47:23.609 [DEBUG] [Thread-197522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:47:23.609 [DEBUG] [Thread-197522] [transport.py] [_log()] Compression: none
2025-11-24T21:47:23.609 [DEBUG] [Thread-197522] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:47:23.641 [DEBUG] [Thread-197522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:47:23.646 [DEBUG] [Thread-197522] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:47:23.647 [DEBUG] [Thread-197522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:47:23.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:47:23.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:47:23.652 [DEBUG] [Thread-197522] [transport.py] [_log()] userauth is OK
2025-11-24T21:47:23.652 [DEBUG] [Thread-197522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:47:23.652 [DEBUG] [Thread-197522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:47:23.652 [DEBUG] [Thread-197522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:47:23.652 [DEBUG] [Thread-197522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:47:23.689 [INFO] [Thread-197522] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:47:23.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:47:24.299 [DEBUG] [Thread-197522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:47:24.299 [DEBUG] [Thread-197522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:47:24.301 [DEBUG] [Thread-197522] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:47:24.339 [DEBUG] [Thread-197522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:47:24.339 [DEBUG] [Thread-197522] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:47:24.342 [DEBUG] [Thread-197522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:47:24.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:47:24.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:47:24.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:47:24.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:47:24.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:47:24.365 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:47:24.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:47:24.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:47:24.367 [DEBUG] [Thread-197522] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:47:24.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:47:24.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.824353 -999.00  +15.20  20.53     39   +1.40 1 1 1 1 1     0    0 13.58 -10.18 ZNESW 22.9 20.5 174.0 33.2 15.5 -25.5 15.4 -25.1 15.2 -23.9 15.4 -24.8
2025-11-24T21:47:24.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:47:24.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:47:24.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.824353
2025-11-24T21:47:24.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:47:24.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:47:24.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:47:24.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:47:24.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:47:24.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:47:16', tmtdew=15.83, humidity=33.77, cloud=0.0, wind=29.91, temperature=15.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:47:16', seeing=0.64, atlas_timestamp='2025-11-24T19:47:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.04275000000000162, 0.05925000000000047, -0.026500000000000412, 0.06199999999999939, 0.0832499999999996, 0.037499999999999645, 0.01025000000000098, 0.045499999999998764, 0.057000000000000384, 0.05424999999999969, 0.02149999999999963, 0.1014999999999997, 0.08024999999999949, 0.0365000000000002, 0.045999999999999375, 0.06524999999999892, 0.11250000000000071, 0.09699999999999953, 0.010249999999999204, 0.13599999999999923, 0.10974999999999824, 0.0417500000000004, 0.04374999999999929, 0.02099999999999902, 0.08300000000000018, 0.08825000000000038, 0.08249999999999957, 0.0835000000000008, 0.04150000000000098, 0.08900000000000041, -0.006000000000000227, 0.00024999999999941735], zp_timestamp='2025-11-24T19:41:00')
2025-11-24T21:47:24.462 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:47:24.474 [DEBUG] [Thread-197525] [transport.py] [_log()] starting thread (client mode): 0xd31f76a0
2025-11-24T21:47:24.474 [DEBUG] [Thread-197525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:47:24.489 [DEBUG] [Thread-197525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:47:24.490 [INFO] [Thread-197525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:47:24.500 [DEBUG] [Thread-197525] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] client lang: <none>
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] server lang: <none>
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] kex follows: False
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:47:24.501 [DEBUG] [Thread-197525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:47:24.502 [DEBUG] [Thread-197525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:47:24.502 [DEBUG] [Thread-197525] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:47:24.502 [DEBUG] [Thread-197525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:47:24.502 [DEBUG] [Thread-197525] [transport.py] [_log()] Compression: none
2025-11-24T21:47:24.502 [DEBUG] [Thread-197525] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:47:24.560 [DEBUG] [Thread-197525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:47:24.560 [DEBUG] [Thread-197525] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:47:24.561 [DEBUG] [Thread-197525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:47:24.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:47:24.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:47:24.616 [DEBUG] [Thread-197525] [transport.py] [_log()] userauth is OK
2025-11-24T21:47:24.616 [DEBUG] [Thread-197525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:47:24.616 [DEBUG] [Thread-197525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:47:24.616 [DEBUG] [Thread-197525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:47:24.616 [DEBUG] [Thread-197525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:47:24.636 [INFO] [Thread-197525] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:47:24.636 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:47:24.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:47:25.538 [DEBUG] [Thread-197525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:47:25.538 [DEBUG] [Thread-197525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:47:25.587 [DEBUG] [Thread-197525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:47:25.587 [DEBUG] [Thread-197525] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:47:25.596 [DEBUG] [Thread-197525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:47:25.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:47:25.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-11-24T21:47:25.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:47:25.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:47:25.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:47:25.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:47:25.644 [DEBUG] [Thread-197525] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:47:27.496 [DEBUG] [Thread-197527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:47:28.176 [DEBUG] [Thread-197528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:47:35.333 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:47:35.335 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:47:43.293 [DEBUG] [Thread-197529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:47:55.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:47:55.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:47: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-11-24T21:47:56.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 47, 48), 15.82, 33.82, 0.0, 25.81, 15.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:47:56.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:47:48
2025-11-24T21:47:56.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:47:56.828 [DEBUG] [Thread-197530] [transport.py] [_log()] starting thread (client mode): 0xd31f5f00
2025-11-24T21:47:56.829 [DEBUG] [Thread-197530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:47:56.838 [DEBUG] [Thread-197530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:47:56.838 [INFO] [Thread-197530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:47:56.843 [DEBUG] [Thread-197530] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:47:56.843 [DEBUG] [Thread-197530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:47:56.843 [DEBUG] [Thread-197530] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:47:56.843 [DEBUG] [Thread-197530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:47:56.843 [DEBUG] [Thread-197530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:47:56.843 [DEBUG] [Thread-197530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:47:56.843 [DEBUG] [Thread-197530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:47:56.843 [DEBUG] [Thread-197530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:47:56.844 [DEBUG] [Thread-197530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:47:56.844 [DEBUG] [Thread-197530] [transport.py] [_log()] client lang: <none>
2025-11-24T21:47:56.844 [DEBUG] [Thread-197530] [transport.py] [_log()] server lang: <none>
2025-11-24T21:47:56.844 [DEBUG] [Thread-197530] [transport.py] [_log()] kex follows: False
2025-11-24T21:47:56.844 [DEBUG] [Thread-197530] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:47:56.844 [DEBUG] [Thread-197530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:47:56.844 [DEBUG] [Thread-197530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:47:56.845 [DEBUG] [Thread-197530] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:47:56.845 [DEBUG] [Thread-197530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:47:56.845 [DEBUG] [Thread-197530] [transport.py] [_log()] Compression: none
2025-11-24T21:47:56.845 [DEBUG] [Thread-197530] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:47:56.877 [DEBUG] [Thread-197530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:47:56.882 [DEBUG] [Thread-197530] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:47:56.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:47:56.887 [DEBUG] [Thread-197530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:47:56.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:47:56.890 [DEBUG] [Thread-197530] [transport.py] [_log()] userauth is OK
2025-11-24T21:47:56.891 [DEBUG] [Thread-197530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:47:56.891 [DEBUG] [Thread-197530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:47:56.892 [DEBUG] [Thread-197530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:47:56.892 [DEBUG] [Thread-197530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:47:56.921 [INFO] [Thread-197530] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:47:56.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:47:57.584 [DEBUG] [Thread-197530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:47:57.585 [DEBUG] [Thread-197530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:47:57.585 [DEBUG] [Thread-197530] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:47:57.625 [DEBUG] [Thread-197530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:47:57.625 [DEBUG] [Thread-197530] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:47:57.629 [DEBUG] [Thread-197530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:47:57.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:47:57.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:47:57.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:47:57.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:47:57.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:47:57.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:47:57.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:47:57.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:47:57.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:47:57.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.824700 -999.00  +15.20  23.51     39   +1.50 1 1 1 1 1     0    0 13.59 -10.47 ZNESW 25.7 23.5 175.8 32.1 15.5 -25.5 15.3 -25.0 15.1 -23.9 15.4 -24.9
2025-11-24T21:47:57.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:47:57.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:47:57.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.824700
2025-11-24T21:47:57.654 [DEBUG] [Thread-197530] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:47:57.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:47:57.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:47:57.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:47:57.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:47:57.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:47:57.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:47:48', tmtdew=15.82, humidity=33.82, cloud=0.0, wind=25.81, temperature=15.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:47:48', seeing=0.55, atlas_timestamp='2025-11-24T19:47:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.04275000000000162, 0.05925000000000047, -0.026500000000000412, 0.06199999999999939, 0.0832499999999996, 0.037499999999999645, 0.01025000000000098, 0.045499999999998764, 0.057000000000000384, 0.05424999999999969, 0.02149999999999963, 0.1014999999999997, 0.08024999999999949, 0.0365000000000002, 0.045999999999999375, 0.06524999999999892, 0.11250000000000071, 0.09699999999999953, 0.010249999999999204, 0.13599999999999923, 0.10974999999999824, 0.0417500000000004, 0.04374999999999929, 0.02099999999999902, 0.08300000000000018, 0.08825000000000038, 0.08249999999999957, 0.0835000000000008, 0.04150000000000098, 0.08900000000000041, -0.006000000000000227, 0.00024999999999941735], zp_timestamp='2025-11-24T19:41:00')
2025-11-24T21:47:57.752 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:47:57.764 [DEBUG] [Thread-197533] [transport.py] [_log()] starting thread (client mode): 0xd0701180
2025-11-24T21:47:57.764 [DEBUG] [Thread-197533] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:47:57.778 [DEBUG] [Thread-197533] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:47:57.778 [INFO] [Thread-197533] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] client lang: <none>
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] server lang: <none>
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] kex follows: False
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:47:57.786 [DEBUG] [Thread-197533] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:47:57.787 [DEBUG] [Thread-197533] [transport.py] [_log()] Compression: none
2025-11-24T21:47:57.787 [DEBUG] [Thread-197533] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:47:57.843 [DEBUG] [Thread-197533] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:47:57.843 [DEBUG] [Thread-197533] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:47:57.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:47:57.845 [DEBUG] [Thread-197533] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:47:57.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:47:57.899 [DEBUG] [Thread-197533] [transport.py] [_log()] userauth is OK
2025-11-24T21:47:57.899 [DEBUG] [Thread-197533] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:47:57.899 [DEBUG] [Thread-197533] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:47:57.900 [DEBUG] [Thread-197533] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:47:57.900 [DEBUG] [Thread-197533] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:47:57.918 [INFO] [Thread-197533] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:47:57.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:47:57.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:47:58.324 [DEBUG] [Thread-197535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:47:58.750 [DEBUG] [Thread-197533] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:47:58.750 [DEBUG] [Thread-197533] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:47:58.798 [DEBUG] [Thread-197533] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:47:58.798 [DEBUG] [Thread-197533] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:47:58.811 [DEBUG] [Thread-197533] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:47:58.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:47:58.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-11-24T21:47:58.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-11-24T21:47:58.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:47:58.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:47:58.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:47:58.857 [DEBUG] [Thread-197533] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:48:13.441 [DEBUG] [Thread-197536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:48:27.785 [DEBUG] [Thread-197537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:48:28.487 [DEBUG] [Thread-197538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:48:28.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:48:28.873 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:48:28.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-11-24T21:48:29.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 48, 21), 15.8, 33.87, 0.0, 26.84, 15.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:48:29.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:48:21
2025-11-24T21:48:29.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:48:30.019 [DEBUG] [Thread-197539] [transport.py] [_log()] starting thread (client mode): 0xd0787040
2025-11-24T21:48:30.019 [DEBUG] [Thread-197539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:48:30.032 [DEBUG] [Thread-197539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:48:30.033 [INFO] [Thread-197539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:48:30.036 [DEBUG] [Thread-197539] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:48:30.036 [DEBUG] [Thread-197539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:48:30.036 [DEBUG] [Thread-197539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] client lang: <none>
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] server lang: <none>
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] kex follows: False
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:48:30.037 [DEBUG] [Thread-197539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:48:30.038 [DEBUG] [Thread-197539] [transport.py] [_log()] Compression: none
2025-11-24T21:48:30.038 [DEBUG] [Thread-197539] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:48:30.062 [DEBUG] [Thread-197539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:48:30.065 [DEBUG] [Thread-197539] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:48:30.066 [DEBUG] [Thread-197539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:48:30.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:48:30.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:48:30.069 [DEBUG] [Thread-197539] [transport.py] [_log()] userauth is OK
2025-11-24T21:48:30.069 [DEBUG] [Thread-197539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:48:30.069 [DEBUG] [Thread-197539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:48:30.069 [DEBUG] [Thread-197539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:48:30.069 [DEBUG] [Thread-197539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:48:30.085 [INFO] [Thread-197539] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:48:30.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:48:30.740 [DEBUG] [Thread-197539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:48:30.740 [DEBUG] [Thread-197539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:48:30.741 [DEBUG] [Thread-197539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:48:30.781 [DEBUG] [Thread-197539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:48:30.781 [DEBUG] [Thread-197539] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:48:30.784 [DEBUG] [Thread-197539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:48:30.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:48:30.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:48:30.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:48:30.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:48:30.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:48:30.805 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:48:30.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:48:30.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:48:30.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:48:30.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.825048 -999.00  +15.20  27.27     39   +1.40 1 1 1 1 1     0    0 13.34 -10.75 ZNESW 20.1 27.3 170.4 30.2 15.5 -25.5 15.4 -25.0 15.2 -24.0 15.4 -24.8
2025-11-24T21:48:30.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:48:30.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:48:30.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.825048
2025-11-24T21:48:30.811 [DEBUG] [Thread-197539] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:48:30.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:48:30.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:48:30.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:48:30.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:48:30.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:48:30.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:48:21', tmtdew=15.8, humidity=33.87, cloud=0.0, wind=26.84, temperature=15.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:48:21', seeing=0.57, atlas_timestamp='2025-11-24T19:48:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.04275000000000162, 0.05925000000000047, -0.026500000000000412, 0.06199999999999939, 0.0832499999999996, 0.037499999999999645, 0.01025000000000098, 0.045499999999998764, 0.057000000000000384, 0.05424999999999969, 0.02149999999999963, 0.1014999999999997, 0.08024999999999949, 0.0365000000000002, 0.045999999999999375, 0.06524999999999892, 0.11250000000000071, 0.09699999999999953, 0.010249999999999204, 0.13599999999999923, 0.10974999999999824, 0.0417500000000004, 0.04374999999999929, 0.02099999999999902, 0.08300000000000018, 0.08825000000000038, 0.08249999999999957, 0.0835000000000008, 0.04150000000000098, 0.08900000000000041, -0.006000000000000227, 0.00024999999999941735], zp_timestamp='2025-11-24T19:41:00')
2025-11-24T21:48:30.893 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:48:30.905 [DEBUG] [Thread-197542] [transport.py] [_log()] starting thread (client mode): 0xd0784430
2025-11-24T21:48:30.905 [DEBUG] [Thread-197542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:48:30.920 [DEBUG] [Thread-197542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:48:30.920 [INFO] [Thread-197542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] client lang: <none>
2025-11-24T21:48:30.927 [DEBUG] [Thread-197542] [transport.py] [_log()] server lang: <none>
2025-11-24T21:48:30.928 [DEBUG] [Thread-197542] [transport.py] [_log()] kex follows: False
2025-11-24T21:48:30.928 [DEBUG] [Thread-197542] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:48:30.928 [DEBUG] [Thread-197542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:48:30.928 [DEBUG] [Thread-197542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:48:30.928 [DEBUG] [Thread-197542] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:48:30.928 [DEBUG] [Thread-197542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:48:30.928 [DEBUG] [Thread-197542] [transport.py] [_log()] Compression: none
2025-11-24T21:48:30.928 [DEBUG] [Thread-197542] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:48:30.986 [DEBUG] [Thread-197542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:48:30.986 [DEBUG] [Thread-197542] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:48:30.986 [DEBUG] [Thread-197542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:48:30.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:48:30.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:48:31.042 [DEBUG] [Thread-197542] [transport.py] [_log()] userauth is OK
2025-11-24T21:48:31.042 [DEBUG] [Thread-197542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:48:31.042 [DEBUG] [Thread-197542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:48:31.042 [DEBUG] [Thread-197542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:48:31.043 [DEBUG] [Thread-197542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:48:31.056 [INFO] [Thread-197542] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:48:31.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:48:31.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:48:31.907 [DEBUG] [Thread-197542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:48:31.907 [DEBUG] [Thread-197542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:48:31.955 [DEBUG] [Thread-197542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:48:31.955 [DEBUG] [Thread-197542] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:48:31.963 [DEBUG] [Thread-197542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:48:31.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:48:31.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-11-24T21:48:31.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-11-24T21:48:31.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:48:31.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:48:31.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:48:31.998 [DEBUG] [Thread-197542] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:48:35.540 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:48:35.541 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:48:43.561 [DEBUG] [Thread-197544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:48:58.700 [DEBUG] [Thread-197545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:49:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:49:02.026 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:49:02.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-11-24T21:49:03.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 48, 54), 15.8, 33.87, 0.0, 27.21, 15.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:49:03.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:48:54
2025-11-24T21:49:03.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:49:03.348 [DEBUG] [Thread-197546] [transport.py] [_log()] starting thread (client mode): 0xd0712500
2025-11-24T21:49:03.348 [DEBUG] [Thread-197546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:49:03.356 [DEBUG] [Thread-197546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:49:03.356 [INFO] [Thread-197546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] client lang: <none>
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] server lang: <none>
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] kex follows: False
2025-11-24T21:49:03.360 [DEBUG] [Thread-197546] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:49:03.361 [DEBUG] [Thread-197546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:49:03.361 [DEBUG] [Thread-197546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:49:03.362 [DEBUG] [Thread-197546] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:49:03.362 [DEBUG] [Thread-197546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:49:03.362 [DEBUG] [Thread-197546] [transport.py] [_log()] Compression: none
2025-11-24T21:49:03.362 [DEBUG] [Thread-197546] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:49:03.391 [DEBUG] [Thread-197546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:49:03.394 [DEBUG] [Thread-197546] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:49:03.396 [DEBUG] [Thread-197546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:49:03.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:49:03.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:49:03.399 [DEBUG] [Thread-197546] [transport.py] [_log()] userauth is OK
2025-11-24T21:49:03.399 [DEBUG] [Thread-197546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:49:03.399 [DEBUG] [Thread-197546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:49:03.399 [DEBUG] [Thread-197546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:49:03.399 [DEBUG] [Thread-197546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:49:03.430 [INFO] [Thread-197546] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:49:03.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:49:04.047 [DEBUG] [Thread-197546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:49:04.048 [DEBUG] [Thread-197546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:49:04.049 [DEBUG] [Thread-197546] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:49:04.087 [DEBUG] [Thread-197546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:49:04.088 [DEBUG] [Thread-197546] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:49:04.091 [DEBUG] [Thread-197546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:49:04.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:49:04.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:49:04.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:49:04.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:49:04.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:49:04.117 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:49:04.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:49:04.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:49:04.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:49:04.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.825395 -999.00  +15.20  16.81     39   +1.40 1 1 1 1 1     0    0 13.85 -11.41 ZNESW 13.5 16.8 170.0 19.7 15.4 -25.5 15.3 -25.1 15.2 -24.1 15.4 -25.1
2025-11-24T21:49:04.120 [DEBUG] [Thread-197546] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:49:04.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:49:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:49:04.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.825395
2025-11-24T21:49:04.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:49:04.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:49:04.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:49:04.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:49:04.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:49:04.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:48:54', tmtdew=15.8, humidity=33.87, cloud=0.0, wind=27.21, temperature=15.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:48:54', seeing=0.71, atlas_timestamp='2025-11-24T19:48:34.128', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.04275000000000162, 0.05925000000000047, -0.026500000000000412, 0.06199999999999939, 0.0832499999999996, 0.037499999999999645, 0.01025000000000098, 0.045499999999998764, 0.057000000000000384, 0.05424999999999969, 0.02149999999999963, 0.1014999999999997, 0.08024999999999949, 0.0365000000000002, 0.045999999999999375, 0.06524999999999892, 0.11250000000000071, 0.09699999999999953, 0.010249999999999204, 0.13599999999999923, 0.10974999999999824, 0.0417500000000004, 0.04374999999999929, 0.02099999999999902, 0.08300000000000018, 0.08825000000000038, 0.08249999999999957, 0.0835000000000008, 0.04150000000000098, 0.08900000000000041, -0.006000000000000227, 0.00024999999999941735], zp_timestamp='2025-11-24T19:41:00')
2025-11-24T21:49:04.219 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:49:04.235 [DEBUG] [Thread-197549] [transport.py] [_log()] starting thread (client mode): 0xd0712350
2025-11-24T21:49:04.236 [DEBUG] [Thread-197549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:49:04.250 [DEBUG] [Thread-197549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:49:04.250 [INFO] [Thread-197549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:49:04.258 [DEBUG] [Thread-197549] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:49:04.258 [DEBUG] [Thread-197549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:49:04.258 [DEBUG] [Thread-197549] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] client lang: <none>
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] server lang: <none>
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] kex follows: False
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] Compression: none
2025-11-24T21:49:04.259 [DEBUG] [Thread-197549] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:49:04.318 [DEBUG] [Thread-197549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:49:04.318 [DEBUG] [Thread-197549] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:49:04.318 [DEBUG] [Thread-197549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:49:04.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:49:04.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:49:04.374 [DEBUG] [Thread-197549] [transport.py] [_log()] userauth is OK
2025-11-24T21:49:04.374 [DEBUG] [Thread-197549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:49:04.375 [DEBUG] [Thread-197549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:49:04.375 [DEBUG] [Thread-197549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:49:04.375 [DEBUG] [Thread-197549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:49:04.389 [INFO] [Thread-197549] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:49:04.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:49:04.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:49:05.284 [DEBUG] [Thread-197549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:49:05.284 [DEBUG] [Thread-197549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:49:05.331 [DEBUG] [Thread-197549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:49:05.331 [DEBUG] [Thread-197549] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:49:05.339 [DEBUG] [Thread-197549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:49:05.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:49:05.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:49:05.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-11-24T21:49:05.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:49:05.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:49:05.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:49:05.372 [DEBUG] [Thread-197549] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:49:13.763 [DEBUG] [Thread-197551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:49:28.067 [DEBUG] [Thread-197552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:49:28.915 [DEBUG] [Thread-197553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:49:35.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:49:35.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:49:35.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-11-24T21:49:35.743 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:49:35.744 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:49:36.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 49, 27), 15.79, 33.89, 0.0, 26.54, 15.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:49:36.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:49:27
2025-11-24T21:49:36.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:49:36.682 [DEBUG] [Thread-197554] [transport.py] [_log()] starting thread (client mode): 0xd31f5600
2025-11-24T21:49:36.683 [DEBUG] [Thread-197554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:49:36.695 [DEBUG] [Thread-197554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:49:36.695 [INFO] [Thread-197554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:49:36.699 [DEBUG] [Thread-197554] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] client lang: <none>
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] server lang: <none>
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] kex follows: False
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:49:36.700 [DEBUG] [Thread-197554] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:49:36.701 [DEBUG] [Thread-197554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:49:36.701 [DEBUG] [Thread-197554] [transport.py] [_log()] Compression: none
2025-11-24T21:49:36.701 [DEBUG] [Thread-197554] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:49:36.728 [DEBUG] [Thread-197554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:49:36.731 [DEBUG] [Thread-197554] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:49:36.732 [DEBUG] [Thread-197554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:49:36.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:49:36.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:49:36.736 [DEBUG] [Thread-197554] [transport.py] [_log()] userauth is OK
2025-11-24T21:49:36.736 [DEBUG] [Thread-197554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:49:36.736 [DEBUG] [Thread-197554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:49:36.736 [DEBUG] [Thread-197554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:49:36.736 [DEBUG] [Thread-197554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:49:36.754 [INFO] [Thread-197554] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:49:36.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:49:37.405 [DEBUG] [Thread-197554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:49:37.406 [DEBUG] [Thread-197554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:49:37.407 [DEBUG] [Thread-197554] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:49:37.447 [DEBUG] [Thread-197554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:49:37.447 [DEBUG] [Thread-197554] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:49:37.451 [DEBUG] [Thread-197554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:49:37.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:49:37.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:49:37.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:49:37.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:49:37.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:49:37.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:49:37.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:49:37.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:49:37.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:49:37.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.825742 -999.00  +15.10  15.00     39   +1.40 1 1 1 1 1     0    0 13.54 -11.04 ZNESW 19.8 15.0 177.0 25.3 15.5 -25.6 15.3 -25.0 15.1 -24.0 15.4 -24.8
2025-11-24T21:49:37.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:49:37.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:49:37.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.825742
2025-11-24T21:49:37.489 [DEBUG] [Thread-197554] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:49:37.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:49:37.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:49:37.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:49:37.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:49:37.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:49:37.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:49:27', tmtdew=15.79, humidity=33.89, cloud=0.0, wind=26.54, temperature=15.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:49:27', seeing=0.65, atlas_timestamp='2025-11-24T19:49:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.04275000000000162, 0.05925000000000047, -0.026500000000000412, 0.06199999999999939, 0.0832499999999996, 0.037499999999999645, 0.01025000000000098, 0.045499999999998764, 0.057000000000000384, 0.05424999999999969, 0.02149999999999963, 0.1014999999999997, 0.08024999999999949, 0.0365000000000002, 0.045999999999999375, 0.06524999999999892, 0.11250000000000071, 0.09699999999999953, 0.010249999999999204, 0.13599999999999923, 0.10974999999999824, 0.0417500000000004, 0.04374999999999929, 0.02099999999999902, 0.08300000000000018, 0.08825000000000038, 0.08249999999999957, 0.0835000000000008, 0.04150000000000098, 0.08900000000000041, -0.006000000000000227, 0.00024999999999941735], zp_timestamp='2025-11-24T19:46:00')
2025-11-24T21:49:37.596 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:49:37.607 [DEBUG] [Thread-197557] [transport.py] [_log()] starting thread (client mode): 0xd317c3a0
2025-11-24T21:49:37.607 [DEBUG] [Thread-197557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:49:37.623 [DEBUG] [Thread-197557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:49:37.623 [INFO] [Thread-197557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:49:37.630 [DEBUG] [Thread-197557] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:49:37.630 [DEBUG] [Thread-197557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:49:37.630 [DEBUG] [Thread-197557] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:49:37.630 [DEBUG] [Thread-197557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:49:37.630 [DEBUG] [Thread-197557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:49:37.630 [DEBUG] [Thread-197557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:49:37.630 [DEBUG] [Thread-197557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:49:37.630 [DEBUG] [Thread-197557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] client lang: <none>
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] server lang: <none>
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] kex follows: False
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] Compression: none
2025-11-24T21:49:37.631 [DEBUG] [Thread-197557] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:49:37.689 [DEBUG] [Thread-197557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:49:37.689 [DEBUG] [Thread-197557] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:49:37.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:49:37.689 [DEBUG] [Thread-197557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:49:37.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:49:37.746 [DEBUG] [Thread-197557] [transport.py] [_log()] userauth is OK
2025-11-24T21:49:37.746 [DEBUG] [Thread-197557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:49:37.746 [DEBUG] [Thread-197557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:49:37.746 [DEBUG] [Thread-197557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:49:37.746 [DEBUG] [Thread-197557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:49:37.760 [INFO] [Thread-197557] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:49: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-11-24T21:49:37.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:49:38.590 [DEBUG] [Thread-197557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:49:38.591 [DEBUG] [Thread-197557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:49:38.637 [DEBUG] [Thread-197557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:49:38.638 [DEBUG] [Thread-197557] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:49:38.647 [DEBUG] [Thread-197557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:49:38.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:49:38.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:49:38.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:49:38.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:49:38.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:49:38.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:49:38.685 [DEBUG] [Thread-197557] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:49:43.944 [DEBUG] [Thread-197559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:49:59.021 [DEBUG] [Thread-197560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:50:08.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:50:08.721 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:50:08.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-11-24T21:50:09.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 49, 27), 15.79, 33.89, 0.0, 26.54, 15.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:50:09.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:49:27
2025-11-24T21:50:09.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:50:10.072 [DEBUG] [Thread-197561] [transport.py] [_log()] starting thread (client mode): 0xd0701c00
2025-11-24T21:50:10.073 [DEBUG] [Thread-197561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:50:10.086 [DEBUG] [Thread-197561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:50:10.086 [INFO] [Thread-197561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] client lang: <none>
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] server lang: <none>
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] kex follows: False
2025-11-24T21:50:10.090 [DEBUG] [Thread-197561] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:50:10.091 [DEBUG] [Thread-197561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:50:10.091 [DEBUG] [Thread-197561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:50:10.091 [DEBUG] [Thread-197561] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:50:10.091 [DEBUG] [Thread-197561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:50:10.091 [DEBUG] [Thread-197561] [transport.py] [_log()] Compression: none
2025-11-24T21:50:10.091 [DEBUG] [Thread-197561] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:50:10.120 [DEBUG] [Thread-197561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:50:10.123 [DEBUG] [Thread-197561] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:50:10.124 [DEBUG] [Thread-197561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:50:10.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:50:10.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:50:10.165 [DEBUG] [Thread-197561] [transport.py] [_log()] userauth is OK
2025-11-24T21:50:10.166 [DEBUG] [Thread-197561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:50:10.166 [DEBUG] [Thread-197561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:50:10.166 [DEBUG] [Thread-197561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:50:10.166 [DEBUG] [Thread-197561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:50:10.183 [INFO] [Thread-197561] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:50:10.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:50:10.914 [DEBUG] [Thread-197561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:50:10.914 [DEBUG] [Thread-197561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:50:10.916 [DEBUG] [Thread-197561] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:50:10.955 [DEBUG] [Thread-197561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:50:10.955 [DEBUG] [Thread-197561] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:50:10.958 [DEBUG] [Thread-197561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:50:10.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:50:10.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:50:10.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:50:10.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:50:10.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:50:10.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:50:10.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:50:10.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:50:10.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:50:10.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.826089 -999.00  +15.10  19.53     39   +1.40 1 1 1 1 1     0    0 13.55 -11.32 ZNESW 23.4 19.5 181.7 24.9 15.5 -25.6 15.4 -25.1 15.1 -23.9 15.3 -24.8
2025-11-24T21:50:10.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:50:10.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:50:10.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.826089
2025-11-24T21:50:10.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:50:11.000 [DEBUG] [Thread-197561] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:50:11.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:50:11.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:50:11.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:50:11.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:50:11.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:49:27', tmtdew=15.79, humidity=33.89, cloud=0.0, wind=26.54, temperature=15.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:50:00', seeing=0.68, atlas_timestamp='2025-11-24T19:49:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.04275000000000162, 0.05925000000000047, -0.026500000000000412, 0.06199999999999939, 0.0832499999999996, 0.037499999999999645, 0.01025000000000098, 0.045499999999998764, 0.057000000000000384, 0.05424999999999969, 0.02149999999999963, 0.1014999999999997, 0.08024999999999949, 0.0365000000000002, 0.045999999999999375, 0.06524999999999892, 0.11250000000000071, 0.09699999999999953, 0.010249999999999204, 0.13599999999999923, 0.10974999999999824, 0.0417500000000004, 0.04374999999999929, 0.02099999999999902, 0.08300000000000018, 0.08825000000000038, 0.08249999999999957, 0.0835000000000008, 0.04150000000000098, 0.08900000000000041, -0.006000000000000227, 0.00024999999999941735], zp_timestamp='2025-11-24T19:46:00')
2025-11-24T21:50:11.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:50:11.089 [DEBUG] [Thread-197564] [transport.py] [_log()] starting thread (client mode): 0xd0785c60
2025-11-24T21:50:11.089 [DEBUG] [Thread-197564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:50:11.104 [DEBUG] [Thread-197564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:50:11.104 [INFO] [Thread-197564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] client lang: <none>
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] server lang: <none>
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] kex follows: False
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] Compression: none
2025-11-24T21:50:11.114 [DEBUG] [Thread-197564] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:50:11.169 [DEBUG] [Thread-197564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:50:11.169 [DEBUG] [Thread-197564] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:50:11.169 [DEBUG] [Thread-197564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:50:11.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:50:11.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:50:11.226 [DEBUG] [Thread-197564] [transport.py] [_log()] userauth is OK
2025-11-24T21:50:11.226 [DEBUG] [Thread-197564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:50:11.226 [DEBUG] [Thread-197564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:50:11.226 [DEBUG] [Thread-197564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:50:11.226 [DEBUG] [Thread-197564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:50:11.246 [INFO] [Thread-197564] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:50:11.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:50:11.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:50:12.097 [DEBUG] [Thread-197564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:50:12.097 [DEBUG] [Thread-197564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:50:12.136 [DEBUG] [Thread-197564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:50:12.136 [DEBUG] [Thread-197564] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:50:12.145 [DEBUG] [Thread-197564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:50:12.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:50:12.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-11-24T21:50:12.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-11-24T21:50:12.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:50:12.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:50:12.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:50:12.179 [DEBUG] [Thread-197564] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:50:14.078 [DEBUG] [Thread-197566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:50:28.340 [DEBUG] [Thread-197567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:50:29.176 [DEBUG] [Thread-197568 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:50:35.949 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:50:35.951 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:50:42.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:50:42.205 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:50:42.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-11-24T21:50:43.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 50, 33), 15.77, 33.9, 0.0, 29.2, 15.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:50:43.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:50:33
2025-11-24T21:50:43.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:50:43.352 [DEBUG] [Thread-197569] [transport.py] [_log()] starting thread (client mode): 0xd07125c0
2025-11-24T21:50:43.353 [DEBUG] [Thread-197569] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:50:43.364 [DEBUG] [Thread-197569] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:50:43.364 [INFO] [Thread-197569] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] client lang: <none>
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] server lang: <none>
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] kex follows: False
2025-11-24T21:50:43.369 [DEBUG] [Thread-197569] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:50:43.370 [DEBUG] [Thread-197569] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:50:43.370 [DEBUG] [Thread-197569] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:50:43.370 [DEBUG] [Thread-197569] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:50:43.370 [DEBUG] [Thread-197569] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:50:43.370 [DEBUG] [Thread-197569] [transport.py] [_log()] Compression: none
2025-11-24T21:50:43.370 [DEBUG] [Thread-197569] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:50:43.402 [DEBUG] [Thread-197569] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:50:43.405 [DEBUG] [Thread-197569] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:50:43.406 [DEBUG] [Thread-197569] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:50:43.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:50:43.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:50:43.408 [DEBUG] [Thread-197569] [transport.py] [_log()] userauth is OK
2025-11-24T21:50:43.409 [DEBUG] [Thread-197569] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:50:43.409 [DEBUG] [Thread-197569] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:50:43.409 [DEBUG] [Thread-197569] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:50:43.409 [DEBUG] [Thread-197569] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:50:43.425 [INFO] [Thread-197569] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:50:43.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:50:44.004 [DEBUG] [Thread-197569] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:50:44.004 [DEBUG] [Thread-197569] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:50:44.006 [DEBUG] [Thread-197569] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:50:44.045 [DEBUG] [Thread-197569] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:50:44.045 [DEBUG] [Thread-197569] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:50:44.049 [DEBUG] [Thread-197569] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:50:44.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:50:44.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:50:44.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:50:44.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:50:44.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:50:44.077 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:50:44.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:50:44.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:50:44.080 [DEBUG] [Thread-197569] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:50:44.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:50:44.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.826784 -999.00  +15.10  15.48     39   +1.40 1 1 1 1 1     0    0 13.24 -13.45 ZNESW 22.0 15.5 167.2 26.2 15.4 -25.6 15.3 -25.1 15.1 -23.9 15.3 -24.8
2025-11-24T21:50:44.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:50:44.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:50:44.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.826784
2025-11-24T21:50:44.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:50:44.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:50:44.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:50:44.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:50:44.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:50:44.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:50:33', tmtdew=15.77, humidity=33.9, cloud=0.0, wind=29.2, temperature=15.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:50:33', seeing=0.63, atlas_timestamp='2025-11-24T19:50:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.04275000000000162, 0.05925000000000047, -0.026500000000000412, 0.06199999999999939, 0.0832499999999996, 0.037499999999999645, 0.01025000000000098, 0.045499999999998764, 0.057000000000000384, 0.05424999999999969, 0.02149999999999963, 0.1014999999999997, 0.08024999999999949, 0.0365000000000002, 0.045999999999999375, 0.06524999999999892, 0.11250000000000071, 0.09699999999999953, 0.010249999999999204, 0.13599999999999923, 0.10974999999999824, 0.0417500000000004, 0.04374999999999929, 0.02099999999999902, 0.08300000000000018, 0.08825000000000038, 0.08249999999999957, 0.0835000000000008, 0.04150000000000098, 0.08900000000000041, -0.006000000000000227, 0.00024999999999941735], zp_timestamp='2025-11-24T19:46:00')
2025-11-24T21:50:44.208 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:50:44.210 [DEBUG] [Thread-197572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:50:44.220 [DEBUG] [Thread-197573] [transport.py] [_log()] starting thread (client mode): 0xd07cef80
2025-11-24T21:50:44.220 [DEBUG] [Thread-197573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:50:44.235 [DEBUG] [Thread-197573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:50:44.235 [INFO] [Thread-197573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:50:44.242 [DEBUG] [Thread-197573] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:50:44.242 [DEBUG] [Thread-197573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] client lang: <none>
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] server lang: <none>
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] kex follows: False
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] Compression: none
2025-11-24T21:50:44.243 [DEBUG] [Thread-197573] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:50:44.302 [DEBUG] [Thread-197573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:50:44.302 [DEBUG] [Thread-197573] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:50:44.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:50:44.303 [DEBUG] [Thread-197573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:50:44.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:50:44.358 [DEBUG] [Thread-197573] [transport.py] [_log()] userauth is OK
2025-11-24T21:50:44.358 [DEBUG] [Thread-197573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:50:44.358 [DEBUG] [Thread-197573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:50:44.358 [DEBUG] [Thread-197573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:50:44.358 [DEBUG] [Thread-197573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:50:44.377 [INFO] [Thread-197573] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:50:44.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:50:44.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:50:45.254 [DEBUG] [Thread-197573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:50:45.254 [DEBUG] [Thread-197573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:50:45.301 [DEBUG] [Thread-197573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:50:45.301 [DEBUG] [Thread-197573] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:50:45.310 [DEBUG] [Thread-197573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:50:45.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:50:45.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-11-24T21:50:45.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-11-24T21:50:45.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:50:45.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:50:45.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:50:45.346 [DEBUG] [Thread-197573] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:50:59.303 [DEBUG] [Thread-197575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:51:14.383 [DEBUG] [Thread-197576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:51:15.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:51:15.373 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:51:15.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-11-24T21:51:16.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 51, 5), 15.77, 33.9, 0.0, 28.57, 15.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:51:16.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:51:05
2025-11-24T21:51:16.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:51:16.531 [DEBUG] [Thread-197577] [transport.py] [_log()] starting thread (client mode): 0xd0700430
2025-11-24T21:51:16.532 [DEBUG] [Thread-197577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:51:16.538 [DEBUG] [Thread-197577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:51:16.539 [INFO] [Thread-197577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] client lang: <none>
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] server lang: <none>
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] kex follows: False
2025-11-24T21:51:16.544 [DEBUG] [Thread-197577] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:51:16.545 [DEBUG] [Thread-197577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:51:16.545 [DEBUG] [Thread-197577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:51:16.545 [DEBUG] [Thread-197577] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:51:16.545 [DEBUG] [Thread-197577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:51:16.545 [DEBUG] [Thread-197577] [transport.py] [_log()] Compression: none
2025-11-24T21:51:16.545 [DEBUG] [Thread-197577] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:51:16.577 [DEBUG] [Thread-197577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:51:16.583 [DEBUG] [Thread-197577] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:51:16.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:51:16.587 [DEBUG] [Thread-197577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:51:16.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:51:16.591 [DEBUG] [Thread-197577] [transport.py] [_log()] userauth is OK
2025-11-24T21:51:16.592 [DEBUG] [Thread-197577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:51:16.592 [DEBUG] [Thread-197577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:51:16.592 [DEBUG] [Thread-197577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:51:16.592 [DEBUG] [Thread-197577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:51:16.621 [INFO] [Thread-197577] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:51:16.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:51:17.203 [DEBUG] [Thread-197577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:51:17.203 [DEBUG] [Thread-197577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:51:17.203 [DEBUG] [Thread-197577] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:51:17.243 [DEBUG] [Thread-197577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:51:17.243 [DEBUG] [Thread-197577] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:51:17.246 [DEBUG] [Thread-197577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:51:17.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:51:17.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:51:17.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:51:17.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:51:17.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:51:17.260 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:51:17.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:51:17.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:51:17.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:51:17.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.827131 -999.00  +15.10  23.21     39   +1.40 1 1 1 1 1     0    0 13.77 -15.34 ZNESW 21.6 23.2 174.2 31.6 15.4 -25.5 15.3 -24.9 15.0 -23.7 15.3 -24.8
2025-11-24T21:51:17.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:51:17.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:51:17.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.827131
2025-11-24T21:51:17.266 [DEBUG] [Thread-197577] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:51:17.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:51:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:51:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:51:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:51:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:51:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:51:05', tmtdew=15.77, humidity=33.9, cloud=0.0, wind=28.57, temperature=15.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:51:06', seeing=0.63, atlas_timestamp='2025-11-24T19:51:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[0.029749999999999943, 0.04275000000000162, 0.05925000000000047, -0.026500000000000412, 0.06199999999999939, 0.0832499999999996, 0.037499999999999645, 0.01025000000000098, 0.045499999999998764, 0.057000000000000384, 0.05424999999999969, 0.02149999999999963, 0.1014999999999997, 0.08024999999999949, 0.0365000000000002, 0.045999999999999375, 0.06524999999999892, 0.11250000000000071, 0.09699999999999953, 0.010249999999999204, 0.13599999999999923, 0.10974999999999824, 0.0417500000000004, 0.04374999999999929, 0.02099999999999902, 0.08300000000000018, 0.08825000000000038, 0.08249999999999957, 0.0835000000000008, 0.04150000000000098, 0.08900000000000041, -0.006000000000000227, 0.00024999999999941735], zp_timestamp='2025-11-24T19:46:00')
2025-11-24T21:51:17.350 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:51:28.617 [DEBUG] [Thread-197580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:51:29.469 [DEBUG] [Thread-197581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:51:36.163 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:51:36.165 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:51:44.568 [DEBUG] [Thread-197582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:51:59.608 [DEBUG] [Thread-197583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:52:14.704 [DEBUG] [Thread-197584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:52:28.889 [DEBUG] [Thread-197585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:52:29.783 [DEBUG] [Thread-197586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:52:36.368 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:52:36.369 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:52:44.823 [DEBUG] [Thread-197587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:52:59.906 [DEBUG] [Thread-197588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:53:14.974 [DEBUG] [Thread-197589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:53:29.309 [DEBUG] [Thread-197590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:53:30.017 [DEBUG] [Thread-197591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:53:31.079 [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-11-24T21:53:36.569 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:53:36.572 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:53:45.062 [DEBUG] [Thread-197592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:54:00.095 [DEBUG] [Thread-197593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:54:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:54:01.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:54:01.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-11-24T21:54:02.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 53, 50), 15.77, 33.92, 0.0, 37.02, 15.24, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:54:02.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:53:50
2025-11-24T21:54:02.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:54:02.429 [DEBUG] [Thread-197594] [transport.py] [_log()] starting thread (client mode): 0xd073a170
2025-11-24T21:54:02.429 [DEBUG] [Thread-197594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:54:02.441 [DEBUG] [Thread-197594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:54:02.441 [INFO] [Thread-197594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:54:02.446 [DEBUG] [Thread-197594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] client lang: <none>
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] server lang: <none>
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] kex follows: False
2025-11-24T21:54:02.447 [DEBUG] [Thread-197594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:54:02.448 [DEBUG] [Thread-197594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:54:02.448 [DEBUG] [Thread-197594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:54:02.448 [DEBUG] [Thread-197594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:54:02.449 [DEBUG] [Thread-197594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:54:02.449 [DEBUG] [Thread-197594] [transport.py] [_log()] Compression: none
2025-11-24T21:54:02.449 [DEBUG] [Thread-197594] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:54:02.487 [DEBUG] [Thread-197594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:54:02.492 [DEBUG] [Thread-197594] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:54:02.494 [DEBUG] [Thread-197594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:54:02.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:54:02.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:54:02.500 [DEBUG] [Thread-197594] [transport.py] [_log()] userauth is OK
2025-11-24T21:54:02.501 [DEBUG] [Thread-197594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:54:02.501 [DEBUG] [Thread-197594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:54:02.501 [DEBUG] [Thread-197594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:54:02.501 [DEBUG] [Thread-197594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:54:02.528 [INFO] [Thread-197594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:54:02.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:54:03.169 [DEBUG] [Thread-197594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:54:03.169 [DEBUG] [Thread-197594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:54:03.179 [DEBUG] [Thread-197594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:54:03.210 [DEBUG] [Thread-197594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:54:03.210 [DEBUG] [Thread-197594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:54:03.213 [DEBUG] [Thread-197594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:54:03.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:54:03.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:54:03.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:54:03.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:54:03.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:54:03.236 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:54:03.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:54:03.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:54:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:54:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.828520 -999.00  +15.10  20.61     39   +1.40 1 1 1 1 1     0    0 13.28 -16.35 ZNESW 25.1 20.6 169.2 32.3 15.4 -25.6 15.2 -25.1 15.0 -23.9 15.3 -24.9
2025-11-24T21:54:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:54:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:54:03.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.828520
2025-11-24T21:54:03.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:54:03.248 [DEBUG] [Thread-197594] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:54:03.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:54:03.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:54:03.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:54:03.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:54:03.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:53:50', tmtdew=15.77, humidity=33.92, cloud=0.0, wind=37.02, temperature=15.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:53:50', seeing=0.66, atlas_timestamp='2025-11-24T19:53:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[0.02275000000000027, 0.03175000000000061, 0.025249999999999773, 0.0015000000000000568, 0.026500000000000412, 0.04875000000000185, 0.01649999999999885, 0.02925000000000111, 0.07249999999999801, 0.015000000000000568, 0.01624999999999943, 0.034000000000000696, 0.08399999999999963, 0.08375000000000021, 0.04499999999999993, 0.02549999999999919, 0.031749999999998835, 0.09050000000000047, 0.08199999999999896, 0.02624999999999922, 0.12799999999999834, 0.11474999999999902, 0.04125000000000156, 0.023750000000001492, 0.0, 0.06900000000000084, 0.09975000000000023, 0.10050000000000026, 0.06700000000000017, 0.06800000000000139, 0.05600000000000094, 0.016000000000000014, 0.02474999999999916], zp_timestamp='2025-11-24T19:51:00')
2025-11-24T21:54:03.331 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:54:03.343 [DEBUG] [Thread-197597] [transport.py] [_log()] starting thread (client mode): 0xd07f9600
2025-11-24T21:54:03.343 [DEBUG] [Thread-197597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:54:03.357 [DEBUG] [Thread-197597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:54:03.357 [INFO] [Thread-197597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] client lang: <none>
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] server lang: <none>
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] kex follows: False
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] Compression: none
2025-11-24T21:54:03.365 [DEBUG] [Thread-197597] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:54:03.421 [DEBUG] [Thread-197597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:54:03.421 [DEBUG] [Thread-197597] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:54:03.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:54:03.422 [DEBUG] [Thread-197597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:54:03.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:54:03.478 [DEBUG] [Thread-197597] [transport.py] [_log()] userauth is OK
2025-11-24T21:54:03.478 [DEBUG] [Thread-197597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:54:03.479 [DEBUG] [Thread-197597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:54:03.479 [DEBUG] [Thread-197597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:54:03.479 [DEBUG] [Thread-197597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:54:03.502 [INFO] [Thread-197597] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:54:03.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:54:03.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:54:04.337 [DEBUG] [Thread-197597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:54:04.337 [DEBUG] [Thread-197597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:54:04.375 [DEBUG] [Thread-197597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:54:04.376 [DEBUG] [Thread-197597] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:54:04.386 [DEBUG] [Thread-197597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:54:04.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:54:04.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-11-24T21:54:04.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-11-24T21:54:04.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:54:04.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:54:04.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:54:04.425 [DEBUG] [Thread-197597] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:54:15.161 [DEBUG] [Thread-197599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:54:29.675 [DEBUG] [Thread-197600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:54:30.306 [DEBUG] [Thread-197601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:54:34.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:54:34.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:54:34.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-11-24T21:54:35.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 54, 22), 15.82, 33.8, 0.0, 36.07, 15.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:54:35.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:54:22
2025-11-24T21:54:35.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:54:35.605 [DEBUG] [Thread-197602] [transport.py] [_log()] starting thread (client mode): 0xd07124d0
2025-11-24T21:54:35.606 [DEBUG] [Thread-197602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:54:35.620 [DEBUG] [Thread-197602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:54:35.620 [INFO] [Thread-197602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:54:35.626 [DEBUG] [Thread-197602] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:54:35.626 [DEBUG] [Thread-197602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:54:35.627 [DEBUG] [Thread-197602] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:54:35.627 [DEBUG] [Thread-197602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:54:35.627 [DEBUG] [Thread-197602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:54:35.627 [DEBUG] [Thread-197602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:54:35.627 [DEBUG] [Thread-197602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:54:35.627 [DEBUG] [Thread-197602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:54:35.627 [DEBUG] [Thread-197602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:54:35.627 [DEBUG] [Thread-197602] [transport.py] [_log()] client lang: <none>
2025-11-24T21:54:35.627 [DEBUG] [Thread-197602] [transport.py] [_log()] server lang: <none>
2025-11-24T21:54:35.627 [DEBUG] [Thread-197602] [transport.py] [_log()] kex follows: False
2025-11-24T21:54:35.628 [DEBUG] [Thread-197602] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:54:35.628 [DEBUG] [Thread-197602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:54:35.629 [DEBUG] [Thread-197602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:54:35.629 [DEBUG] [Thread-197602] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:54:35.629 [DEBUG] [Thread-197602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:54:35.629 [DEBUG] [Thread-197602] [transport.py] [_log()] Compression: none
2025-11-24T21:54:35.630 [DEBUG] [Thread-197602] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:54:35.668 [DEBUG] [Thread-197602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:54:35.674 [DEBUG] [Thread-197602] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:54:35.676 [DEBUG] [Thread-197602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:54:35.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:54:35.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:54:35.679 [DEBUG] [Thread-197602] [transport.py] [_log()] userauth is OK
2025-11-24T21:54:35.679 [DEBUG] [Thread-197602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:54:35.679 [DEBUG] [Thread-197602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:54:35.679 [DEBUG] [Thread-197602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:54:35.679 [DEBUG] [Thread-197602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:54:35.708 [INFO] [Thread-197602] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:54:35.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:54:36.307 [DEBUG] [Thread-197602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:54:36.307 [DEBUG] [Thread-197602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:54:36.317 [DEBUG] [Thread-197602] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:54:36.348 [DEBUG] [Thread-197602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:54:36.348 [DEBUG] [Thread-197602] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:54:36.351 [DEBUG] [Thread-197602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:54:36.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:54:36.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:54:36.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:54:36.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:54:36.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:54:36.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:54:36.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:54:36.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:54:36.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:54:36.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.829214 -999.00  +15.10  16.19     39   +1.30 1 1 1 1 1     0    0 13.33 -16.82 ZNESW 21.7 16.2 176.8 29.6 15.4 -25.5 15.2 -25.1 15.0 -23.9 15.3 -24.8
2025-11-24T21:54:36.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:54:36.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:54:36.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.829214
2025-11-24T21:54:36.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:54:36.383 [DEBUG] [Thread-197602] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:54:36.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:54:36.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:54:36.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:54:36.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:54:36.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:54:22', tmtdew=15.82, humidity=33.8, cloud=0.0, wind=36.07, temperature=15.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:54:22', seeing=0.67, atlas_timestamp='2025-11-24T19:54:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[0.02275000000000027, 0.03175000000000061, 0.025249999999999773, 0.0015000000000000568, 0.026500000000000412, 0.04875000000000185, 0.01649999999999885, 0.02925000000000111, 0.07249999999999801, 0.015000000000000568, 0.01624999999999943, 0.034000000000000696, 0.08399999999999963, 0.08375000000000021, 0.04499999999999993, 0.02549999999999919, 0.031749999999998835, 0.09050000000000047, 0.08199999999999896, 0.02624999999999922, 0.12799999999999834, 0.11474999999999902, 0.04125000000000156, 0.023750000000001492, 0.0, 0.06900000000000084, 0.09975000000000023, 0.10050000000000026, 0.06700000000000017, 0.06800000000000139, 0.05600000000000094, 0.016000000000000014, 0.02474999999999916], zp_timestamp='2025-11-24T19:51:00')
2025-11-24T21:54:36.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:54:36.481 [DEBUG] [Thread-197605] [transport.py] [_log()] starting thread (client mode): 0xd0785420
2025-11-24T21:54:36.482 [DEBUG] [Thread-197605] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:54:36.497 [DEBUG] [Thread-197605] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:54:36.497 [INFO] [Thread-197605] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:54:36.504 [DEBUG] [Thread-197605] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:54:36.504 [DEBUG] [Thread-197605] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:54:36.504 [DEBUG] [Thread-197605] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:54:36.504 [DEBUG] [Thread-197605] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:54:36.504 [DEBUG] [Thread-197605] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:54:36.504 [DEBUG] [Thread-197605] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:54:36.504 [DEBUG] [Thread-197605] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:54:36.504 [DEBUG] [Thread-197605] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] client lang: <none>
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] server lang: <none>
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] kex follows: False
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] Compression: none
2025-11-24T21:54:36.505 [DEBUG] [Thread-197605] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:54:36.560 [DEBUG] [Thread-197605] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:54:36.560 [DEBUG] [Thread-197605] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:54:36.560 [DEBUG] [Thread-197605] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:54:36.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:54:36.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:54:36.617 [DEBUG] [Thread-197605] [transport.py] [_log()] userauth is OK
2025-11-24T21:54:36.617 [DEBUG] [Thread-197605] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:54:36.617 [DEBUG] [Thread-197605] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:54:36.617 [DEBUG] [Thread-197605] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:54:36.617 [DEBUG] [Thread-197605] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:54:36.631 [INFO] [Thread-197605] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:54:36.632 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:54:36.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:54:36.783 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:54:36.784 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:54:37.481 [DEBUG] [Thread-197605] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:54:37.481 [DEBUG] [Thread-197605] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:54:37.528 [DEBUG] [Thread-197605] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:54:37.529 [DEBUG] [Thread-197605] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:54:37.538 [DEBUG] [Thread-197605] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:54:37.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:54: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')
2025-11-24T21:54:37.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-11-24T21:54:37.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:54:37.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:54:37.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:54:37.577 [DEBUG] [Thread-197605] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:54:45.344 [DEBUG] [Thread-197607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:55:00.417 [DEBUG] [Thread-197608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:55:07.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:55:07.588 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:55:07.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-11-24T21:55:08.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 54, 55), 15.81, 33.84, 0.0, 28.85, 15.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:55:08.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:54:55
2025-11-24T21:55:08.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:55:08.834 [DEBUG] [Thread-197609] [transport.py] [_log()] starting thread (client mode): 0xd07844c0
2025-11-24T21:55:08.834 [DEBUG] [Thread-197609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:55:08.846 [DEBUG] [Thread-197609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:55:08.846 [INFO] [Thread-197609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] client lang: <none>
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] server lang: <none>
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] kex follows: False
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] Compression: none
2025-11-24T21:55:08.850 [DEBUG] [Thread-197609] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:55:08.862 [DEBUG] [Thread-197609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:55:08.863 [DEBUG] [Thread-197609] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:55:08.864 [DEBUG] [Thread-197609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:55:08.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:55:08.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:55:08.905 [DEBUG] [Thread-197609] [transport.py] [_log()] userauth is OK
2025-11-24T21:55:08.905 [DEBUG] [Thread-197609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:55:08.905 [DEBUG] [Thread-197609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:55:08.905 [DEBUG] [Thread-197609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:55:08.905 [DEBUG] [Thread-197609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:55:08.924 [INFO] [Thread-197609] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:55:08.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:55:14.154 [DEBUG] [Thread-197609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:55:14.155 [DEBUG] [Thread-197609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:55:14.157 [DEBUG] [Thread-197609] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:55:14.196 [DEBUG] [Thread-197609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:55:14.196 [DEBUG] [Thread-197609] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:55:14.200 [DEBUG] [Thread-197609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:55:14.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:55:14.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:55:14.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:55:14.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:55:14.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:55:14.279 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:55:14.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:55:14.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:55:14.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:55:14.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.829562 -999.00  +15.10  28.45     39   +1.30 1 1 1 1 1     0    0 13.46 -14.89 ZNESW 20.6 28.4 173.8 32.0 15.4 -25.6 15.2 -25.1 15.0 -24.0 15.3 -24.8
2025-11-24T21:55:14.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:55:14.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:55:14.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.829562
2025-11-24T21:55:14.286 [DEBUG] [Thread-197609] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:55:14.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:55:14.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:55:14.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:55:14.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:55:14.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:55:14.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:54:55', tmtdew=15.81, humidity=33.84, cloud=0.0, wind=28.85, temperature=15.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:54:55', seeing=0.67, atlas_timestamp='2025-11-24T19:54:34.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.02275000000000027, 0.03175000000000061, 0.025249999999999773, 0.0015000000000000568, 0.026500000000000412, 0.04875000000000185, 0.01649999999999885, 0.02925000000000111, 0.07249999999999801, 0.015000000000000568, 0.01624999999999943, 0.034000000000000696, 0.08399999999999963, 0.08375000000000021, 0.04499999999999993, 0.02549999999999919, 0.031749999999998835, 0.09050000000000047, 0.08199999999999896, 0.02624999999999922, 0.12799999999999834, 0.11474999999999902, 0.04125000000000156, 0.023750000000001492, 0.0, 0.06900000000000084, 0.09975000000000023, 0.10050000000000026, 0.06700000000000017, 0.06800000000000139, 0.05600000000000094, 0.016000000000000014, 0.02474999999999916], zp_timestamp='2025-11-24T19:51:00')
2025-11-24T21:55:14.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:55:14.384 [DEBUG] [Thread-197612] [transport.py] [_log()] starting thread (client mode): 0xd073a0b0
2025-11-24T21:55:14.385 [DEBUG] [Thread-197612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:55:14.400 [DEBUG] [Thread-197612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:55:14.400 [INFO] [Thread-197612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] client lang: <none>
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] server lang: <none>
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] kex follows: False
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] Compression: none
2025-11-24T21:55:14.408 [DEBUG] [Thread-197612] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:55:14.468 [DEBUG] [Thread-197612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:55:14.468 [DEBUG] [Thread-197612] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:55:14.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:55:14.468 [DEBUG] [Thread-197612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:55:14.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:55:14.525 [DEBUG] [Thread-197612] [transport.py] [_log()] userauth is OK
2025-11-24T21:55:14.525 [DEBUG] [Thread-197612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:55:14.525 [DEBUG] [Thread-197612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:55:14.525 [DEBUG] [Thread-197612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:55:14.525 [DEBUG] [Thread-197612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:55:14.539 [INFO] [Thread-197612] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:55:14.539 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:55:14.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:55:15.380 [DEBUG] [Thread-197612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:55:15.380 [DEBUG] [Thread-197612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:55:15.418 [DEBUG] [Thread-197612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:55:15.419 [DEBUG] [Thread-197612] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:55:15.428 [DEBUG] [Thread-197612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:55:15.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:55:15.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-11-24T21:55:15.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-11-24T21:55:15.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:55:15.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:55:15.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:55:15.474 [DEBUG] [Thread-197614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:55:15.474 [DEBUG] [Thread-197612] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:55:29.976 [DEBUG] [Thread-197615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:55:30.602 [DEBUG] [Thread-197616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:55:36.995 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:55:36.997 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:55:45.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:55:45.491 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:55:45.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-11-24T21:55:45.634 [DEBUG] [Thread-197617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:55:46.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 55, 28), 15.85, 33.74, 0.0, 31.07, 15.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:55:46.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:55:28
2025-11-24T21:55:46.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:55:46.667 [DEBUG] [Thread-197618] [transport.py] [_log()] starting thread (client mode): 0xd31f5480
2025-11-24T21:55:46.668 [DEBUG] [Thread-197618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:55:46.681 [DEBUG] [Thread-197618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:55:46.681 [INFO] [Thread-197618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:55:46.686 [DEBUG] [Thread-197618] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:55:46.686 [DEBUG] [Thread-197618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:55:46.686 [DEBUG] [Thread-197618] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:55:46.686 [DEBUG] [Thread-197618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:55:46.686 [DEBUG] [Thread-197618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:55:46.686 [DEBUG] [Thread-197618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:55:46.686 [DEBUG] [Thread-197618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:55:46.686 [DEBUG] [Thread-197618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:55:46.687 [DEBUG] [Thread-197618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:55:46.687 [DEBUG] [Thread-197618] [transport.py] [_log()] client lang: <none>
2025-11-24T21:55:46.687 [DEBUG] [Thread-197618] [transport.py] [_log()] server lang: <none>
2025-11-24T21:55:46.687 [DEBUG] [Thread-197618] [transport.py] [_log()] kex follows: False
2025-11-24T21:55:46.687 [DEBUG] [Thread-197618] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:55:46.687 [DEBUG] [Thread-197618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:55:46.688 [DEBUG] [Thread-197618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:55:46.688 [DEBUG] [Thread-197618] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:55:46.688 [DEBUG] [Thread-197618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:55:46.688 [DEBUG] [Thread-197618] [transport.py] [_log()] Compression: none
2025-11-24T21:55:46.688 [DEBUG] [Thread-197618] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:55:46.720 [DEBUG] [Thread-197618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:55:46.725 [DEBUG] [Thread-197618] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:55:46.727 [DEBUG] [Thread-197618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:55:46.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:55:46.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:55:46.732 [DEBUG] [Thread-197618] [transport.py] [_log()] userauth is OK
2025-11-24T21:55:46.732 [DEBUG] [Thread-197618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:55:46.732 [DEBUG] [Thread-197618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:55:46.732 [DEBUG] [Thread-197618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:55:46.732 [DEBUG] [Thread-197618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:55:46.759 [INFO] [Thread-197618] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:55:46.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:55:47.369 [DEBUG] [Thread-197618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:55:47.369 [DEBUG] [Thread-197618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:55:47.379 [DEBUG] [Thread-197618] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:55:47.410 [DEBUG] [Thread-197618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:55:47.410 [DEBUG] [Thread-197618] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:55:47.414 [DEBUG] [Thread-197618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:55:47.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:55:47.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:55:47.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:55:47.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:55:47.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:55:47.441 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:55:47.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:55:47.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:55:47.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:55:47.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.829908 -999.00  +15.10  23.11     38   +1.20 1 1 1 1 1     0    0 13.33 -14.76 ZNESW 19.4 23.1 168.6 29.3 15.3 -25.7 15.2 -25.1 15.0 -24.1 15.2 -24.9
2025-11-24T21:55:47.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:55:47.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:55:47.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.829908
2025-11-24T21:55:47.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:55:47.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:55:47.451 [DEBUG] [Thread-197618] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:55:47.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:55:47.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:55:47.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:55:47.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:55:28', tmtdew=15.85, humidity=33.74, cloud=0.0, wind=31.07, temperature=15.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:55:28', seeing=0.71, atlas_timestamp='2025-11-24T19:55:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:51:00')
2025-11-24T21:55:47.536 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:55:47.548 [DEBUG] [Thread-197621] [transport.py] [_log()] starting thread (client mode): 0xd0786da0
2025-11-24T21:55:47.548 [DEBUG] [Thread-197621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:55:47.563 [DEBUG] [Thread-197621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:55:47.563 [INFO] [Thread-197621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:55:47.571 [DEBUG] [Thread-197621] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:55:47.572 [DEBUG] [Thread-197621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:55:47.572 [DEBUG] [Thread-197621] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:55:47.572 [DEBUG] [Thread-197621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:55:47.572 [DEBUG] [Thread-197621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:55:47.572 [DEBUG] [Thread-197621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:55:47.572 [DEBUG] [Thread-197621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:55:47.572 [DEBUG] [Thread-197621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:55:47.573 [DEBUG] [Thread-197621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:55:47.573 [DEBUG] [Thread-197621] [transport.py] [_log()] client lang: <none>
2025-11-24T21:55:47.573 [DEBUG] [Thread-197621] [transport.py] [_log()] server lang: <none>
2025-11-24T21:55:47.573 [DEBUG] [Thread-197621] [transport.py] [_log()] kex follows: False
2025-11-24T21:55:47.573 [DEBUG] [Thread-197621] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:55:47.573 [DEBUG] [Thread-197621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:55:47.573 [DEBUG] [Thread-197621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:55:47.573 [DEBUG] [Thread-197621] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:55:47.574 [DEBUG] [Thread-197621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:55:47.574 [DEBUG] [Thread-197621] [transport.py] [_log()] Compression: none
2025-11-24T21:55:47.574 [DEBUG] [Thread-197621] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:55:47.631 [DEBUG] [Thread-197621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:55:47.632 [DEBUG] [Thread-197621] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:55:47.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:55:47.633 [DEBUG] [Thread-197621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:55:47.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:55:47.694 [DEBUG] [Thread-197621] [transport.py] [_log()] userauth is OK
2025-11-24T21:55:47.694 [DEBUG] [Thread-197621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:55:47.694 [DEBUG] [Thread-197621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:55:47.695 [DEBUG] [Thread-197621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:55:47.695 [DEBUG] [Thread-197621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:55:47.714 [INFO] [Thread-197621] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:55:47.715 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:55:47.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:55:48.634 [DEBUG] [Thread-197621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:55:48.634 [DEBUG] [Thread-197621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:55:48.684 [DEBUG] [Thread-197621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:55:48.684 [DEBUG] [Thread-197621] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:55:48.693 [DEBUG] [Thread-197621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:55:48.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:55:48.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-11-24T21:55:48.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-11-24T21:55:48.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:55:48.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:55:48.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:55:48.732 [DEBUG] [Thread-197621] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:56:00.680 [DEBUG] [Thread-197623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:56:15.828 [DEBUG] [Thread-197624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:56:18.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:56:18.748 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:56:18.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-11-24T21:56:19.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 56, 1), 16.01, 33.59, 0.0, 32.94, 15.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:56:19.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:56:01
2025-11-24T21:56:19.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:56:19.943 [DEBUG] [Thread-197625] [transport.py] [_log()] starting thread (client mode): 0xd317e4a0
2025-11-24T21:56:19.944 [DEBUG] [Thread-197625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:56:19.956 [DEBUG] [Thread-197625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:56:19.956 [INFO] [Thread-197625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:56:19.960 [DEBUG] [Thread-197625] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] client lang: <none>
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] server lang: <none>
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] kex follows: False
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:56:19.961 [DEBUG] [Thread-197625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:56:19.962 [DEBUG] [Thread-197625] [transport.py] [_log()] Compression: none
2025-11-24T21:56:19.962 [DEBUG] [Thread-197625] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:56:19.988 [DEBUG] [Thread-197625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:56:19.991 [DEBUG] [Thread-197625] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:56:19.992 [DEBUG] [Thread-197625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:56:19.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:56:19.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:56:19.995 [DEBUG] [Thread-197625] [transport.py] [_log()] userauth is OK
2025-11-24T21:56:19.995 [DEBUG] [Thread-197625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:56:19.996 [DEBUG] [Thread-197625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:56:19.996 [DEBUG] [Thread-197625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:56:19.996 [DEBUG] [Thread-197625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:56:20.026 [INFO] [Thread-197625] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:56:20.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:56:20.764 [DEBUG] [Thread-197625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:56:20.764 [DEBUG] [Thread-197625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:56:20.765 [DEBUG] [Thread-197625] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:56:20.805 [DEBUG] [Thread-197625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:56:20.805 [DEBUG] [Thread-197625] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:56:20.808 [DEBUG] [Thread-197625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:56:20.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:56:20.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:56:20.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:56:20.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:56:20.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:56:20.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:56:20.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:56:20.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:56:20.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:56:20.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.830256 -999.00  +15.10  30.57     38   +1.20 1 1 2 1 1     0    0 13.28 -15.17 ZNESW 25.2 30.6 168.1 36.6 15.4 -25.6 15.2 -25.0 15.0 -23.9 15.3 -24.8
2025-11-24T21:56:20.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:56:20.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:56:20.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.830256
2025-11-24T21:56:20.837 [DEBUG] [Thread-197625] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:56:20.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:56:20.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:56:20.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:56:20.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:56:20.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:56:20.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:56:01', tmtdew=16.01, humidity=33.59, cloud=0.0, wind=32.94, temperature=15.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:56:01', seeing=0.66, atlas_timestamp='2025-11-24T19:55:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:51:00')
2025-11-24T21:56:20.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:56:20.942 [DEBUG] [Thread-197628] [transport.py] [_log()] starting thread (client mode): 0xd317ea40
2025-11-24T21:56:20.942 [DEBUG] [Thread-197628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:56:20.957 [DEBUG] [Thread-197628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:56:20.957 [INFO] [Thread-197628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:56:20.964 [DEBUG] [Thread-197628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] client lang: <none>
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] server lang: <none>
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] kex follows: False
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] Compression: none
2025-11-24T21:56:20.965 [DEBUG] [Thread-197628] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:56:21.020 [DEBUG] [Thread-197628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:56:21.020 [DEBUG] [Thread-197628] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:56:21.020 [DEBUG] [Thread-197628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:56:21.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:56:21.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:56:21.077 [DEBUG] [Thread-197628] [transport.py] [_log()] userauth is OK
2025-11-24T21:56:21.077 [DEBUG] [Thread-197628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:56:21.077 [DEBUG] [Thread-197628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:56:21.077 [DEBUG] [Thread-197628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:56:21.077 [DEBUG] [Thread-197628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:56:21.093 [INFO] [Thread-197628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:56:21.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:56:21.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:56:21.972 [DEBUG] [Thread-197628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:56:21.972 [DEBUG] [Thread-197628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:56:22.020 [DEBUG] [Thread-197628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:56:22.020 [DEBUG] [Thread-197628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:56:22.028 [DEBUG] [Thread-197628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:56:22.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:56:22.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T21:56:22.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:56:22.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:56:22.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:56:22.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:56:22.061 [DEBUG] [Thread-197628] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:56:30.290 [DEBUG] [Thread-197630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:56:30.869 [DEBUG] [Thread-197631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:56:37.200 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:56:37.201 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:56:45.991 [DEBUG] [Thread-197632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:56:52.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:56:52.087 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:56:52.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-11-24T21:56:53.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 56, 34), 16.1, 33.1, 0.0, 27.95, 15.31, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:56:53.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:56:34
2025-11-24T21:56:53.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:56:53.362 [DEBUG] [Thread-197633] [transport.py] [_log()] starting thread (client mode): 0xd0784340
2025-11-24T21:56:53.362 [DEBUG] [Thread-197633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:56:53.377 [DEBUG] [Thread-197633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:56:53.377 [INFO] [Thread-197633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:56:53.384 [DEBUG] [Thread-197633] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:56:53.384 [DEBUG] [Thread-197633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:56:53.384 [DEBUG] [Thread-197633] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:56:53.384 [DEBUG] [Thread-197633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:56:53.384 [DEBUG] [Thread-197633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:56:53.384 [DEBUG] [Thread-197633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:56:53.384 [DEBUG] [Thread-197633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:56:53.384 [DEBUG] [Thread-197633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:56:53.385 [DEBUG] [Thread-197633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:56:53.385 [DEBUG] [Thread-197633] [transport.py] [_log()] client lang: <none>
2025-11-24T21:56:53.385 [DEBUG] [Thread-197633] [transport.py] [_log()] server lang: <none>
2025-11-24T21:56:53.385 [DEBUG] [Thread-197633] [transport.py] [_log()] kex follows: False
2025-11-24T21:56:53.385 [DEBUG] [Thread-197633] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:56:53.386 [DEBUG] [Thread-197633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:56:53.386 [DEBUG] [Thread-197633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:56:53.386 [DEBUG] [Thread-197633] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:56:53.387 [DEBUG] [Thread-197633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:56:53.387 [DEBUG] [Thread-197633] [transport.py] [_log()] Compression: none
2025-11-24T21:56:53.387 [DEBUG] [Thread-197633] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:56:53.427 [DEBUG] [Thread-197633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:56:53.432 [DEBUG] [Thread-197633] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:56:53.434 [DEBUG] [Thread-197633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:56:53.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:56:53.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:56:53.440 [DEBUG] [Thread-197633] [transport.py] [_log()] userauth is OK
2025-11-24T21:56:53.440 [DEBUG] [Thread-197633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:56:53.440 [DEBUG] [Thread-197633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:56:53.440 [DEBUG] [Thread-197633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:56:53.441 [DEBUG] [Thread-197633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:56:53.467 [INFO] [Thread-197633] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:56:53.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:56:54.118 [DEBUG] [Thread-197633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:56:54.118 [DEBUG] [Thread-197633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:56:54.128 [DEBUG] [Thread-197633] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:56:54.159 [DEBUG] [Thread-197633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:56:54.159 [DEBUG] [Thread-197633] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:56:54.163 [DEBUG] [Thread-197633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:56:54.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:56:54.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:56:54.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:56:54.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:56:54.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:56:54.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:56:54.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:56:54.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:56:54.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:56:54.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.830603 -999.00  +15.10  29.62     38   +1.20 1 1 1 1 1     0    0 13.61 -15.10 ZNESW 21.9 29.6 180.2 33.8 15.4 -25.6 15.2 -24.9 15.0 -23.9 15.3 -24.9
2025-11-24T21:56:54.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:56:54.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:56:54.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.830603
2025-11-24T21:56:54.196 [DEBUG] [Thread-197633] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:56:54.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:56:54.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:56:54.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:56:54.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:56:54.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:56:54.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:56:34', tmtdew=16.1, humidity=33.1, cloud=0.0, wind=27.95, temperature=15.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:56:35', seeing=0.6, atlas_timestamp='2025-11-24T19:56:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:51:00')
2025-11-24T21:56:54.298 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:56:54.308 [DEBUG] [Thread-197636] [transport.py] [_log()] starting thread (client mode): 0xd0738250
2025-11-24T21:56:54.309 [DEBUG] [Thread-197636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:56:54.326 [DEBUG] [Thread-197636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:56:54.326 [INFO] [Thread-197636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:56:54.333 [DEBUG] [Thread-197636] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] client lang: <none>
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] server lang: <none>
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] kex follows: False
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] Compression: none
2025-11-24T21:56:54.334 [DEBUG] [Thread-197636] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:56:54.391 [DEBUG] [Thread-197636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:56:54.392 [DEBUG] [Thread-197636] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:56:54.392 [DEBUG] [Thread-197636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:56:54.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:56:54.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:56:54.449 [DEBUG] [Thread-197636] [transport.py] [_log()] userauth is OK
2025-11-24T21:56:54.449 [DEBUG] [Thread-197636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:56:54.450 [DEBUG] [Thread-197636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:56:54.450 [DEBUG] [Thread-197636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:56:54.450 [DEBUG] [Thread-197636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:56:54.474 [INFO] [Thread-197636] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:56:54.474 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:56:54.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:56:55.355 [DEBUG] [Thread-197636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:56:55.355 [DEBUG] [Thread-197636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:56:55.404 [DEBUG] [Thread-197636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:56:55.404 [DEBUG] [Thread-197636] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:56:55.413 [DEBUG] [Thread-197636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:56:55.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:56:55.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-11-24T21:56:55.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-11-24T21:56:55.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:56:55.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:56:55.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:56:55.450 [DEBUG] [Thread-197636] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:57:01.035 [DEBUG] [Thread-197638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:57:16.199 [DEBUG] [Thread-197639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:57:25.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:57:25.485 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:57:25.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-11-24T21:57:26.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 57, 8), 16.11, 33.09, 0.0, 32.45, 15.28, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:57:26.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:57:08
2025-11-24T21:57:26.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:57:26.981 [DEBUG] [Thread-197640] [transport.py] [_log()] starting thread (client mode): 0xd317c7c0
2025-11-24T21:57:26.982 [DEBUG] [Thread-197640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:57:26.996 [DEBUG] [Thread-197640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:57:26.996 [INFO] [Thread-197640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:57:27.003 [DEBUG] [Thread-197640] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:57:27.003 [DEBUG] [Thread-197640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:57:27.003 [DEBUG] [Thread-197640] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:57:27.003 [DEBUG] [Thread-197640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:57:27.003 [DEBUG] [Thread-197640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:57:27.004 [DEBUG] [Thread-197640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:57:27.004 [DEBUG] [Thread-197640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:57:27.004 [DEBUG] [Thread-197640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:57:27.004 [DEBUG] [Thread-197640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:57:27.004 [DEBUG] [Thread-197640] [transport.py] [_log()] client lang: <none>
2025-11-24T21:57:27.004 [DEBUG] [Thread-197640] [transport.py] [_log()] server lang: <none>
2025-11-24T21:57:27.004 [DEBUG] [Thread-197640] [transport.py] [_log()] kex follows: False
2025-11-24T21:57:27.004 [DEBUG] [Thread-197640] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:57:27.005 [DEBUG] [Thread-197640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:57:27.005 [DEBUG] [Thread-197640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:57:27.006 [DEBUG] [Thread-197640] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:57:27.006 [DEBUG] [Thread-197640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:57:27.006 [DEBUG] [Thread-197640] [transport.py] [_log()] Compression: none
2025-11-24T21:57:27.006 [DEBUG] [Thread-197640] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:57:27.036 [DEBUG] [Thread-197640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:57:27.041 [DEBUG] [Thread-197640] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:57:27.043 [DEBUG] [Thread-197640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:57:27.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:57:27.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:57:27.048 [DEBUG] [Thread-197640] [transport.py] [_log()] userauth is OK
2025-11-24T21:57:27.049 [DEBUG] [Thread-197640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:57:27.049 [DEBUG] [Thread-197640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:57:27.049 [DEBUG] [Thread-197640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:57:27.049 [DEBUG] [Thread-197640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:57:27.072 [INFO] [Thread-197640] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:57:27.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:57:27.689 [DEBUG] [Thread-197640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:57:27.689 [DEBUG] [Thread-197640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:57:27.690 [DEBUG] [Thread-197640] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:57:27.731 [DEBUG] [Thread-197640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:57:27.731 [DEBUG] [Thread-197640] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:57:27.735 [DEBUG] [Thread-197640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:57:27.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:57:27.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:57:27.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:57:27.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:57:27.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:57:27.760 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:57:27.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:57:27.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:57:27.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:57:27.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.830950 -999.00  +15.10  21.82     38   +1.10 1 1 1 1 1     0    0 13.57 -14.41 ZNESW 23.1 21.8 178.3 32.3 15.4 -25.7 15.2 -25.0 15.0 -24.2 15.3 -24.9
2025-11-24T21:57:27.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:57:27.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:57:27.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.830950
2025-11-24T21:57:27.772 [DEBUG] [Thread-197640] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:57:27.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:57:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:57:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:57:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:57:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:57:27.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:57:08', tmtdew=16.11, humidity=33.09, cloud=0.0, wind=32.45, temperature=15.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:57:08', seeing=0.59, atlas_timestamp='2025-11-24T19:56:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:51:00')
2025-11-24T21:57:27.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:57:27.883 [DEBUG] [Thread-197643] [transport.py] [_log()] starting thread (client mode): 0xd07390c0
2025-11-24T21:57:27.883 [DEBUG] [Thread-197643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:57:27.898 [DEBUG] [Thread-197643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:57:27.898 [INFO] [Thread-197643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] client lang: <none>
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] server lang: <none>
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] kex follows: False
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] Compression: none
2025-11-24T21:57:27.906 [DEBUG] [Thread-197643] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:57:27.968 [DEBUG] [Thread-197643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:57:27.969 [DEBUG] [Thread-197643] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:57:27.969 [DEBUG] [Thread-197643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:57:27.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:57:27.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:57:28.025 [DEBUG] [Thread-197643] [transport.py] [_log()] userauth is OK
2025-11-24T21:57:28.025 [DEBUG] [Thread-197643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:57:28.025 [DEBUG] [Thread-197643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:57:28.025 [DEBUG] [Thread-197643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:57:28.025 [DEBUG] [Thread-197643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:57:28.039 [INFO] [Thread-197643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:57:28.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:57:28.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:57:28.895 [DEBUG] [Thread-197643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:57:28.895 [DEBUG] [Thread-197643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:57:28.943 [DEBUG] [Thread-197643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:57:28.943 [DEBUG] [Thread-197643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:57:28.953 [DEBUG] [Thread-197643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:57:28.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:57:28.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-11-24T21:57:28.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-11-24T21:57:28.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:57:28.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:57:28.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:57:28.993 [DEBUG] [Thread-197643] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:57:30.647 [DEBUG] [Thread-197645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:57:31.276 [DEBUG] [Thread-197646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:57:37.403 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:57:37.404 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:57:46.405 [DEBUG] [Thread-197647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:57:59.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:57:59.018 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:57:59.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-11-24T21:57:59.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 57, 41), 16.18, 32.91, 0.0, 35.75, 15.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:57:59.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:57:41
2025-11-24T21:57:59.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:58:00.174 [DEBUG] [Thread-197648] [transport.py] [_log()] starting thread (client mode): 0xc9b825f0
2025-11-24T21:58:00.175 [DEBUG] [Thread-197648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:58:00.175 [DEBUG] [Thread-197648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:58:00.175 [INFO] [Thread-197648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] client lang: <none>
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] server lang: <none>
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] kex follows: False
2025-11-24T21:58:00.179 [DEBUG] [Thread-197648] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:58:00.180 [DEBUG] [Thread-197648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:58:00.180 [DEBUG] [Thread-197648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:58:00.180 [DEBUG] [Thread-197648] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:58:00.180 [DEBUG] [Thread-197648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:58:00.180 [DEBUG] [Thread-197648] [transport.py] [_log()] Compression: none
2025-11-24T21:58:00.180 [DEBUG] [Thread-197648] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:58:00.208 [DEBUG] [Thread-197648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:58:00.211 [DEBUG] [Thread-197648] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:58:00.212 [DEBUG] [Thread-197648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:58:00.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:58:00.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:58:00.217 [DEBUG] [Thread-197648] [transport.py] [_log()] userauth is OK
2025-11-24T21:58:00.217 [DEBUG] [Thread-197648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:58:00.217 [DEBUG] [Thread-197648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:58:00.218 [DEBUG] [Thread-197648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:58:00.218 [DEBUG] [Thread-197648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:58:00.242 [INFO] [Thread-197648] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:58:00.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:58:00.885 [DEBUG] [Thread-197648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:58:00.886 [DEBUG] [Thread-197648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:58:00.897 [DEBUG] [Thread-197648] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:58:00.926 [DEBUG] [Thread-197648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:58:00.927 [DEBUG] [Thread-197648] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:58:00.930 [DEBUG] [Thread-197648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:58:00.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:58:00.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:58:00.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:58:00.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:58:00.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:58:00.959 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:58:00.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:58:00.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:58:00.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:58:00.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.831298 -999.00  +15.10  22.81     38   +1.10 1 1 1 1 1     0    0 13.50 -12.13 ZNESW 24.2 22.8 166.5 27.4 15.4 -25.6 15.2 -25.2 15.0 -24.0 15.3 -25.0
2025-11-24T21:58:00.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:58:00.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:58:00.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.831298
2025-11-24T21:58:00.966 [DEBUG] [Thread-197648] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:58:00.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:58:00.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:58:00.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:58:00.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:58:00.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:58:00.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:57:41', tmtdew=16.18, humidity=32.91, cloud=0.0, wind=35.75, temperature=15.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:57:41', seeing=0.64, atlas_timestamp='2025-11-24T19:57:04.147', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:51:00')
2025-11-24T21:58:01.069 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:58:01.080 [DEBUG] [Thread-197651] [transport.py] [_log()] starting thread (client mode): 0xd3151f00
2025-11-24T21:58:01.081 [DEBUG] [Thread-197651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:58:01.095 [DEBUG] [Thread-197651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:58:01.095 [INFO] [Thread-197651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:58:01.102 [DEBUG] [Thread-197651] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:58:01.103 [DEBUG] [Thread-197651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:58:01.103 [DEBUG] [Thread-197651] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:58:01.103 [DEBUG] [Thread-197651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:58:01.103 [DEBUG] [Thread-197651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:58:01.103 [DEBUG] [Thread-197651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:58:01.103 [DEBUG] [Thread-197651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:58:01.103 [DEBUG] [Thread-197651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:58:01.103 [DEBUG] [Thread-197651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:58:01.103 [DEBUG] [Thread-197651] [transport.py] [_log()] client lang: <none>
2025-11-24T21:58:01.104 [DEBUG] [Thread-197651] [transport.py] [_log()] server lang: <none>
2025-11-24T21:58:01.104 [DEBUG] [Thread-197651] [transport.py] [_log()] kex follows: False
2025-11-24T21:58:01.104 [DEBUG] [Thread-197651] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:58:01.104 [DEBUG] [Thread-197651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:58:01.104 [DEBUG] [Thread-197651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:58:01.104 [DEBUG] [Thread-197651] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:58:01.104 [DEBUG] [Thread-197651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:58:01.105 [DEBUG] [Thread-197651] [transport.py] [_log()] Compression: none
2025-11-24T21:58:01.105 [DEBUG] [Thread-197651] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:58:01.163 [DEBUG] [Thread-197651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:58:01.164 [DEBUG] [Thread-197651] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:58:01.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:58:01.165 [DEBUG] [Thread-197651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:58:01.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:58:01.226 [DEBUG] [Thread-197651] [transport.py] [_log()] userauth is OK
2025-11-24T21:58:01.226 [DEBUG] [Thread-197651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:58:01.226 [DEBUG] [Thread-197651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:58:01.226 [DEBUG] [Thread-197651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:58:01.226 [DEBUG] [Thread-197651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:58:01.245 [INFO] [Thread-197651] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:58:01.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:58:01.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:58:01.450 [DEBUG] [Thread-197653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:58:02.137 [DEBUG] [Thread-197651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:58:02.137 [DEBUG] [Thread-197651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:58:02.185 [DEBUG] [Thread-197651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:58:02.185 [DEBUG] [Thread-197651] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:58:02.195 [DEBUG] [Thread-197651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:58:02.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:58:02.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-11-24T21:58:02.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:58:02.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:58:02.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:58:02.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:58:02.243 [DEBUG] [Thread-197651] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:58:16.607 [DEBUG] [Thread-197654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:58:30.979 [DEBUG] [Thread-197655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:58:31.671 [DEBUG] [Thread-197656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:58:32.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:58:32.275 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:58:32.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T21:58:33.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 58, 13), 16.24, 32.77, 0.0, 34.63, 15.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:58:33.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:58:13
2025-11-24T21:58:33.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:58:33.394 [DEBUG] [Thread-197657] [transport.py] [_log()] starting thread (client mode): 0xd07104f0
2025-11-24T21:58:33.395 [DEBUG] [Thread-197657] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:58:33.407 [DEBUG] [Thread-197657] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:58:33.407 [INFO] [Thread-197657] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:58:33.412 [DEBUG] [Thread-197657] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:58:33.412 [DEBUG] [Thread-197657] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:58:33.412 [DEBUG] [Thread-197657] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:58:33.412 [DEBUG] [Thread-197657] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:58:33.412 [DEBUG] [Thread-197657] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:58:33.412 [DEBUG] [Thread-197657] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:58:33.412 [DEBUG] [Thread-197657] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:58:33.413 [DEBUG] [Thread-197657] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:58:33.413 [DEBUG] [Thread-197657] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:58:33.413 [DEBUG] [Thread-197657] [transport.py] [_log()] client lang: <none>
2025-11-24T21:58:33.413 [DEBUG] [Thread-197657] [transport.py] [_log()] server lang: <none>
2025-11-24T21:58:33.413 [DEBUG] [Thread-197657] [transport.py] [_log()] kex follows: False
2025-11-24T21:58:33.413 [DEBUG] [Thread-197657] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:58:33.413 [DEBUG] [Thread-197657] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:58:33.414 [DEBUG] [Thread-197657] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:58:33.414 [DEBUG] [Thread-197657] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:58:33.414 [DEBUG] [Thread-197657] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:58:33.414 [DEBUG] [Thread-197657] [transport.py] [_log()] Compression: none
2025-11-24T21:58:33.414 [DEBUG] [Thread-197657] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:58:33.450 [DEBUG] [Thread-197657] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:58:33.456 [DEBUG] [Thread-197657] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:58:33.458 [DEBUG] [Thread-197657] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:58:33.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:58:33.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:58:33.464 [DEBUG] [Thread-197657] [transport.py] [_log()] userauth is OK
2025-11-24T21:58:33.464 [DEBUG] [Thread-197657] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:58:33.464 [DEBUG] [Thread-197657] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:58:33.465 [DEBUG] [Thread-197657] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:58:33.465 [DEBUG] [Thread-197657] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:58:33.492 [INFO] [Thread-197657] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:58:33.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:58:34.141 [DEBUG] [Thread-197657] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:58:34.141 [DEBUG] [Thread-197657] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:58:34.143 [DEBUG] [Thread-197657] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:58:34.183 [DEBUG] [Thread-197657] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:58:34.183 [DEBUG] [Thread-197657] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:58:34.187 [DEBUG] [Thread-197657] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:58:34.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:58:34.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:58:34.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:58:34.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:58:34.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:58:34.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:58:34.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:58:34.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:58:34.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:58:34.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.831992 -999.00  +15.10  20.26     38   +1.00 1 1 1 1 1     0    0 13.67 -8.11 ZNESW 20.3 20.3 158.2 34.9 15.3 -25.6 15.2 -25.1 15.0 -24.1 15.2 -25.0
2025-11-24T21:58:34.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:58:34.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:58:34.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.831992
2025-11-24T21:58:34.221 [DEBUG] [Thread-197657] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:58:34.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:58:34.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:58:34.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:58:34.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:58:34.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:58:34.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:58:13', tmtdew=16.24, humidity=32.77, cloud=0.0, wind=34.63, temperature=15.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:58:13', seeing=0.71, atlas_timestamp='2025-11-24T19:58:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T21:58:34.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:58:34.331 [DEBUG] [Thread-197660] [transport.py] [_log()] starting thread (client mode): 0xd0713310
2025-11-24T21:58:34.331 [DEBUG] [Thread-197660] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:58:34.346 [DEBUG] [Thread-197660] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:58:34.346 [INFO] [Thread-197660] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:58:34.353 [DEBUG] [Thread-197660] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:58:34.353 [DEBUG] [Thread-197660] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] client lang: <none>
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] server lang: <none>
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] kex follows: False
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:58:34.354 [DEBUG] [Thread-197660] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:58:34.355 [DEBUG] [Thread-197660] [transport.py] [_log()] Compression: none
2025-11-24T21:58:34.355 [DEBUG] [Thread-197660] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:58:34.417 [DEBUG] [Thread-197660] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:58:34.418 [DEBUG] [Thread-197660] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:58:34.418 [DEBUG] [Thread-197660] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:58:34.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:58:34.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:58:34.476 [DEBUG] [Thread-197660] [transport.py] [_log()] userauth is OK
2025-11-24T21:58:34.476 [DEBUG] [Thread-197660] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:58:34.476 [DEBUG] [Thread-197660] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:58:34.476 [DEBUG] [Thread-197660] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:58:34.476 [DEBUG] [Thread-197660] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:58:34.501 [INFO] [Thread-197660] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:58:34.501 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:58:34.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:58:35.325 [DEBUG] [Thread-197660] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:58:35.325 [DEBUG] [Thread-197660] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:58:35.374 [DEBUG] [Thread-197660] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:58:35.374 [DEBUG] [Thread-197660] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:58:35.383 [DEBUG] [Thread-197660] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:58:35.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:58:35.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-11-24T21:58:35.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-11-24T21:58:35.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:58:35.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:58:35.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:58:35.423 [DEBUG] [Thread-197660] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:58:37.607 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:58:37.609 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:58:46.703 [DEBUG] [Thread-197662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:59:01.846 [DEBUG] [Thread-197663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:59:05.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:59:05.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:59:05.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-11-24T21:59:06.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 58, 46), 16.25, 32.74, 0.0, 36.21, 15.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:59:06.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:58:46
2025-11-24T21:59:06.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:59:06.732 [DEBUG] [Thread-197664] [transport.py] [_log()] starting thread (client mode): 0xd0713a60
2025-11-24T21:59:06.732 [DEBUG] [Thread-197664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:59:06.746 [DEBUG] [Thread-197664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:59:06.746 [INFO] [Thread-197664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:59:06.751 [DEBUG] [Thread-197664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:59:06.751 [DEBUG] [Thread-197664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:59:06.751 [DEBUG] [Thread-197664] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:59:06.751 [DEBUG] [Thread-197664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:59:06.751 [DEBUG] [Thread-197664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:59:06.751 [DEBUG] [Thread-197664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:59:06.751 [DEBUG] [Thread-197664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:59:06.751 [DEBUG] [Thread-197664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:59:06.751 [DEBUG] [Thread-197664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:59:06.751 [DEBUG] [Thread-197664] [transport.py] [_log()] client lang: <none>
2025-11-24T21:59:06.752 [DEBUG] [Thread-197664] [transport.py] [_log()] server lang: <none>
2025-11-24T21:59:06.752 [DEBUG] [Thread-197664] [transport.py] [_log()] kex follows: False
2025-11-24T21:59:06.752 [DEBUG] [Thread-197664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:59:06.752 [DEBUG] [Thread-197664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:59:06.752 [DEBUG] [Thread-197664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:59:06.753 [DEBUG] [Thread-197664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:59:06.753 [DEBUG] [Thread-197664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:59:06.753 [DEBUG] [Thread-197664] [transport.py] [_log()] Compression: none
2025-11-24T21:59:06.753 [DEBUG] [Thread-197664] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:59:06.788 [DEBUG] [Thread-197664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:59:06.792 [DEBUG] [Thread-197664] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:59:06.794 [DEBUG] [Thread-197664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:59:06.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:59:06.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:59:06.799 [DEBUG] [Thread-197664] [transport.py] [_log()] userauth is OK
2025-11-24T21:59:06.799 [DEBUG] [Thread-197664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:59:06.799 [DEBUG] [Thread-197664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:59:06.800 [DEBUG] [Thread-197664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:59:06.800 [DEBUG] [Thread-197664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:59:06.832 [INFO] [Thread-197664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:59:06.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:59:07.485 [DEBUG] [Thread-197664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:59:07.485 [DEBUG] [Thread-197664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:59:07.486 [DEBUG] [Thread-197664] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:59:07.525 [DEBUG] [Thread-197664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:59:07.525 [DEBUG] [Thread-197664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:59:07.528 [DEBUG] [Thread-197664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:59:07.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:59:07.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:59:07.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:59:07.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:59:07.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:59:07.556 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:59:07.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:59:07.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:59:07.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:59:07.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.832339 -999.00  +15.10  26.04     38   +0.90 1 1 1 1 1     0    0 13.56 -5.24 ZNESW 29.7 26.0 177.0 39.7 15.3 -25.5 15.2 -25.1 14.9 -23.9 15.3 -24.8
2025-11-24T21:59:07.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:59:07.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:59:07.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.832339
2025-11-24T21:59:07.565 [DEBUG] [Thread-197664] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:59:07.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:59:07.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:59:07.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:59:07.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:59:07.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:59:07.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:58:46', tmtdew=16.25, humidity=32.74, cloud=0.0, wind=36.21, temperature=15.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:58:46', seeing=0.71, atlas_timestamp='2025-11-24T19:58:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T21:59:07.656 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:59:07.668 [DEBUG] [Thread-197667] [transport.py] [_log()] starting thread (client mode): 0xd0710700
2025-11-24T21:59:07.668 [DEBUG] [Thread-197667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:59:07.683 [DEBUG] [Thread-197667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:59:07.683 [INFO] [Thread-197667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:59:07.693 [DEBUG] [Thread-197667] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:59:07.694 [DEBUG] [Thread-197667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:59:07.694 [DEBUG] [Thread-197667] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:59:07.694 [DEBUG] [Thread-197667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:59:07.694 [DEBUG] [Thread-197667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:59:07.694 [DEBUG] [Thread-197667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:59:07.694 [DEBUG] [Thread-197667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:59:07.695 [DEBUG] [Thread-197667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:59:07.695 [DEBUG] [Thread-197667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:59:07.695 [DEBUG] [Thread-197667] [transport.py] [_log()] client lang: <none>
2025-11-24T21:59:07.695 [DEBUG] [Thread-197667] [transport.py] [_log()] server lang: <none>
2025-11-24T21:59:07.695 [DEBUG] [Thread-197667] [transport.py] [_log()] kex follows: False
2025-11-24T21:59:07.695 [DEBUG] [Thread-197667] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:59:07.695 [DEBUG] [Thread-197667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:59:07.695 [DEBUG] [Thread-197667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:59:07.696 [DEBUG] [Thread-197667] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:59:07.696 [DEBUG] [Thread-197667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:59:07.696 [DEBUG] [Thread-197667] [transport.py] [_log()] Compression: none
2025-11-24T21:59:07.696 [DEBUG] [Thread-197667] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:59:07.750 [DEBUG] [Thread-197667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:59:07.750 [DEBUG] [Thread-197667] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:59:07.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:59:07.752 [DEBUG] [Thread-197667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:59:07.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:59:07.809 [DEBUG] [Thread-197667] [transport.py] [_log()] userauth is OK
2025-11-24T21:59:07.810 [DEBUG] [Thread-197667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:59:07.810 [DEBUG] [Thread-197667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:59:07.810 [DEBUG] [Thread-197667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:59:07.810 [DEBUG] [Thread-197667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:59:07.830 [INFO] [Thread-197667] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:59:07.831 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:59:07.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:59:08.702 [DEBUG] [Thread-197667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:59:08.703 [DEBUG] [Thread-197667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:59:08.750 [DEBUG] [Thread-197667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:59:08.750 [DEBUG] [Thread-197667] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:59:08.758 [DEBUG] [Thread-197667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:59:08.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:59:08.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-11-24T21:59:08.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:59:08.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:59:08.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:59:08.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:59:08.792 [DEBUG] [Thread-197667] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:59:16.891 [DEBUG] [Thread-197669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:59:31.284 [DEBUG] [Thread-197670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:59:31.971 [DEBUG] [Thread-197671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:59:37.809 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:59:37.811 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T21:59:38.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T21:59:38.815 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T21:59:38.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-11-24T21:59:39.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 59, 19), 16.27, 32.72, 0.0, 32.84, 15.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T21:59:39.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:59:19
2025-11-24T21:59:39.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T21:59:39.995 [DEBUG] [Thread-197672] [transport.py] [_log()] starting thread (client mode): 0xd0702e60
2025-11-24T21:59:39.996 [DEBUG] [Thread-197672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:59:40.007 [DEBUG] [Thread-197672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T21:59:40.007 [INFO] [Thread-197672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T21:59:40.013 [DEBUG] [Thread-197672] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:59:40.013 [DEBUG] [Thread-197672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] client lang: <none>
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] server lang: <none>
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] kex follows: False
2025-11-24T21:59:40.014 [DEBUG] [Thread-197672] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:59:40.015 [DEBUG] [Thread-197672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:59:40.015 [DEBUG] [Thread-197672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:59:40.015 [DEBUG] [Thread-197672] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:59:40.016 [DEBUG] [Thread-197672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:59:40.016 [DEBUG] [Thread-197672] [transport.py] [_log()] Compression: none
2025-11-24T21:59:40.016 [DEBUG] [Thread-197672] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:59:40.056 [DEBUG] [Thread-197672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:59:40.062 [DEBUG] [Thread-197672] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:59:40.064 [DEBUG] [Thread-197672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T21:59:40.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T21:59:40.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:59:40.071 [DEBUG] [Thread-197672] [transport.py] [_log()] userauth is OK
2025-11-24T21:59:40.071 [DEBUG] [Thread-197672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:59:40.071 [DEBUG] [Thread-197672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:59:40.071 [DEBUG] [Thread-197672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T21:59:40.072 [DEBUG] [Thread-197672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:59:40.100 [INFO] [Thread-197672] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:59:40.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:59:40.710 [DEBUG] [Thread-197672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:59:40.710 [DEBUG] [Thread-197672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:59:40.712 [DEBUG] [Thread-197672] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T21:59:40.751 [DEBUG] [Thread-197672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:59:40.751 [DEBUG] [Thread-197672] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:59:40.754 [DEBUG] [Thread-197672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:59:40.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:59:40.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T21:59:40.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T21:59:40.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T21:59:40.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:59:40.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T21:59:40.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:59:40.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:59:40.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T21:59:40.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.832687 -999.00  +15.10  23.24     38   +0.90 1 1 1 1 1     0    0 13.67 -2.96 ZNESW 26.7 23.2 165.3 33.0 15.3 -25.6 15.2 -25.2 14.9 -23.9 15.3 -24.8
2025-11-24T21:59:40.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T21:59:40.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T21:59:40.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.832687
2025-11-24T21:59:40.785 [DEBUG] [Thread-197672] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:59:40.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T21:59:40.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T21:59:40.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T21:59:40.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T21:59:40.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T21:59:40.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:59:19', tmtdew=16.27, humidity=32.72, cloud=0.0, wind=32.84, temperature=15.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:59:19', seeing=0.7, atlas_timestamp='2025-11-24T19:59:04.157', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T21:59:40.872 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T21:59:40.884 [DEBUG] [Thread-197675] [transport.py] [_log()] starting thread (client mode): 0xd07f9210
2025-11-24T21:59:40.884 [DEBUG] [Thread-197675] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T21:59:40.899 [DEBUG] [Thread-197675] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T21:59:40.899 [INFO] [Thread-197675] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T21:59:40.906 [DEBUG] [Thread-197675] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T21:59:40.907 [DEBUG] [Thread-197675] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T21:59:40.907 [DEBUG] [Thread-197675] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T21:59:40.907 [DEBUG] [Thread-197675] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:59:40.907 [DEBUG] [Thread-197675] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T21:59:40.907 [DEBUG] [Thread-197675] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:59:40.907 [DEBUG] [Thread-197675] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] client lang: <none>
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] server lang: <none>
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] kex follows: False
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] Compression: none
2025-11-24T21:59:40.908 [DEBUG] [Thread-197675] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T21:59:40.966 [DEBUG] [Thread-197675] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T21:59:40.967 [DEBUG] [Thread-197675] [transport.py] [_log()] Switch to new keys ...
2025-11-24T21:59:40.967 [DEBUG] [Thread-197675] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T21:59:40.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T21:59:40.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T21:59:41.025 [DEBUG] [Thread-197675] [transport.py] [_log()] userauth is OK
2025-11-24T21:59:41.025 [DEBUG] [Thread-197675] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T21:59:41.025 [DEBUG] [Thread-197675] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T21:59:41.025 [DEBUG] [Thread-197675] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T21:59:41.025 [DEBUG] [Thread-197675] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T21:59:41.048 [INFO] [Thread-197675] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T21:59:41.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T21:59:41.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T21:59:41.881 [DEBUG] [Thread-197675] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T21:59:41.881 [DEBUG] [Thread-197675] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T21:59:41.929 [DEBUG] [Thread-197675] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T21:59:41.929 [DEBUG] [Thread-197675] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T21:59:41.938 [DEBUG] [Thread-197675] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T21:59:41.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T21:59:41.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-11-24T21:59:41.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T21:59:41.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T21:59:41.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T21:59:41.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T21:59:41.974 [DEBUG] [Thread-197675] [transport.py] [_log()] EOF in transport thread
2025-11-24T21:59:47.023 [DEBUG] [Thread-197677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:00:02.137 [DEBUG] [Thread-197678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:00:11.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:00:11.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:00:11.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:00:12.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 21, 59, 52), 16.38, 32.17, 0.0, 32.85, 15.23, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:00:12.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 21:59:52
2025-11-24T22:00:13.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:00:13.318 [DEBUG] [Thread-197679] [transport.py] [_log()] starting thread (client mode): 0xc9b83f10
2025-11-24T22:00:13.319 [DEBUG] [Thread-197679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:00:13.329 [DEBUG] [Thread-197679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:00:13.329 [INFO] [Thread-197679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] client lang: <none>
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] server lang: <none>
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] kex follows: False
2025-11-24T22:00:13.334 [DEBUG] [Thread-197679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:00:13.335 [DEBUG] [Thread-197679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:00:13.335 [DEBUG] [Thread-197679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:00:13.335 [DEBUG] [Thread-197679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:00:13.335 [DEBUG] [Thread-197679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:00:13.335 [DEBUG] [Thread-197679] [transport.py] [_log()] Compression: none
2025-11-24T22:00:13.335 [DEBUG] [Thread-197679] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:00:13.365 [DEBUG] [Thread-197679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:00:13.369 [DEBUG] [Thread-197679] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:00:13.370 [DEBUG] [Thread-197679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:00:13.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:00:13.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:00:13.373 [DEBUG] [Thread-197679] [transport.py] [_log()] userauth is OK
2025-11-24T22:00:13.374 [DEBUG] [Thread-197679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:00:13.374 [DEBUG] [Thread-197679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:00:13.374 [DEBUG] [Thread-197679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:00:13.374 [DEBUG] [Thread-197679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:00:13.391 [INFO] [Thread-197679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:00:13.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:00:14.350 [DEBUG] [Thread-197679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:00:14.350 [DEBUG] [Thread-197679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:00:14.351 [DEBUG] [Thread-197679] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:00:14.391 [DEBUG] [Thread-197679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:00:14.391 [DEBUG] [Thread-197679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:00:14.394 [DEBUG] [Thread-197679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:00:14.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:00:14.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:00:14.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:00:14.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:00:14.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:00:14.416 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:00:14.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:00:14.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:00:14.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:00:14.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.833034 -999.00  +15.10  20.97     37   +0.80 1 1 1 1 1     0    0 13.74 -0.02 ZNESW 22.1 21.0 170.0 36.0 15.3 -25.5 15.2 -25.1 15.0 -23.9 15.2 -24.8
2025-11-24T22:00:14.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:00:14.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:00:14.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.833034
2025-11-24T22:00:14.422 [DEBUG] [Thread-197679] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:00:14.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:00:14.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:00:14.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:00:14.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:00:14.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:00:14.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T21:59:52', tmtdew=16.38, humidity=32.17, cloud=0.0, wind=32.85, temperature=15.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T21:59:52', seeing=0.67, atlas_timestamp='2025-11-24T19:59:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T22:00:14.513 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:00:14.525 [DEBUG] [Thread-197682] [transport.py] [_log()] starting thread (client mode): 0xc9b82650
2025-11-24T22:00:14.525 [DEBUG] [Thread-197682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:00:14.540 [DEBUG] [Thread-197682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:00:14.540 [INFO] [Thread-197682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:00:14.547 [DEBUG] [Thread-197682] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] client lang: <none>
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] server lang: <none>
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] kex follows: False
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] Compression: none
2025-11-24T22:00:14.548 [DEBUG] [Thread-197682] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:00:14.604 [DEBUG] [Thread-197682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:00:14.604 [DEBUG] [Thread-197682] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:00:14.604 [DEBUG] [Thread-197682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:00:14.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:00:14.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:00:14.661 [DEBUG] [Thread-197682] [transport.py] [_log()] userauth is OK
2025-11-24T22:00:14.661 [DEBUG] [Thread-197682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:00:14.661 [DEBUG] [Thread-197682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:00:14.661 [DEBUG] [Thread-197682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:00:14.661 [DEBUG] [Thread-197682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:00:14.675 [INFO] [Thread-197682] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:00:14.676 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:00:14.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:00:15.507 [DEBUG] [Thread-197682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:00:15.507 [DEBUG] [Thread-197682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:00:15.556 [DEBUG] [Thread-197682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:00:15.556 [DEBUG] [Thread-197682] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:00:15.565 [DEBUG] [Thread-197682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:00:15.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:00:15.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-11-24T22:00:15.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-11-24T22:00:15.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:00:15.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:00:15.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:00:15.599 [DEBUG] [Thread-197682] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:00:17.173 [DEBUG] [Thread-197684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:00:31.649 [DEBUG] [Thread-197685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:00:32.251 [DEBUG] [Thread-197686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:00:38.023 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:00:38.025 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:00:45.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:00:45.609 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:00:45.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:00:46.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 0, 25), 16.41, 32.09, 0.0, 35.73, 15.21, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:00:46.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:00:25
2025-11-24T22:00:46.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:00:46.796 [DEBUG] [Thread-197687] [transport.py] [_log()] starting thread (client mode): 0xd07031c0
2025-11-24T22:00:46.796 [DEBUG] [Thread-197687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:00:46.806 [DEBUG] [Thread-197687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:00:46.806 [INFO] [Thread-197687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:00:46.809 [DEBUG] [Thread-197687] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] client lang: <none>
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] server lang: <none>
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] kex follows: False
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] Compression: none
2025-11-24T22:00:46.810 [DEBUG] [Thread-197687] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:00:46.829 [DEBUG] [Thread-197687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:00:46.830 [DEBUG] [Thread-197687] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:00:46.830 [DEBUG] [Thread-197687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:00:46.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:00:46.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:00:46.873 [DEBUG] [Thread-197687] [transport.py] [_log()] userauth is OK
2025-11-24T22:00:46.873 [DEBUG] [Thread-197687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:00:46.874 [DEBUG] [Thread-197687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:00:46.874 [DEBUG] [Thread-197687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:00:46.874 [DEBUG] [Thread-197687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:00:46.905 [INFO] [Thread-197687] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:00:46.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:00:47.290 [DEBUG] [Thread-197689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:00:47.709 [DEBUG] [Thread-197687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:00:47.709 [DEBUG] [Thread-197687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:00:47.718 [DEBUG] [Thread-197687] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:00:47.750 [DEBUG] [Thread-197687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:00:47.750 [DEBUG] [Thread-197687] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:00:47.752 [DEBUG] [Thread-197687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:00:47.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:00:47.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:00:47.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:00:47.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:00:47.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:00:47.771 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:00:47.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:00:47.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:00:47.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:00:47.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.833381 -999.00  +15.10  31.74     37   +0.80 1 1 2 1 1     0    0 13.84 3.62 ZNESW 26.6 31.7 162.4 37.9 15.3 -25.3 15.2 -25.0 14.9 -23.8 15.2 -24.8
2025-11-24T22:00:47.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:00:47.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:00:47.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.833381
2025-11-24T22:00:47.777 [DEBUG] [Thread-197687] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:00:47.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:00:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:00:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:00:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:00:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:00:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:00:25', tmtdew=16.41, humidity=32.09, cloud=0.0, wind=35.73, temperature=15.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:00:25', seeing=0.67, atlas_timestamp='2025-11-24T20:00:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T22:00:47.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:00:47.868 [DEBUG] [Thread-197691] [transport.py] [_log()] starting thread (client mode): 0xd3151cf0
2025-11-24T22:00:47.868 [DEBUG] [Thread-197691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:00:47.884 [DEBUG] [Thread-197691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:00:47.884 [INFO] [Thread-197691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] client lang: <none>
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] server lang: <none>
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] kex follows: False
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] Compression: none
2025-11-24T22:00:47.891 [DEBUG] [Thread-197691] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:00:47.947 [DEBUG] [Thread-197691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:00:47.948 [DEBUG] [Thread-197691] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:00:47.948 [DEBUG] [Thread-197691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:00:47.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:00:47.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:00:48.006 [DEBUG] [Thread-197691] [transport.py] [_log()] userauth is OK
2025-11-24T22:00:48.006 [DEBUG] [Thread-197691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:00:48.006 [DEBUG] [Thread-197691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:00:48.006 [DEBUG] [Thread-197691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:00:48.006 [DEBUG] [Thread-197691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:00:48.020 [INFO] [Thread-197691] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:00:48.020 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:00:48.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:00:48.873 [DEBUG] [Thread-197691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:00:48.873 [DEBUG] [Thread-197691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:00:48.921 [DEBUG] [Thread-197691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:00:48.921 [DEBUG] [Thread-197691] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:00:48.929 [DEBUG] [Thread-197691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:00:48.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:00:48.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-11-24T22:00:48.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-11-24T22:00:48.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:00:48.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:00:48.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:00:48.971 [DEBUG] [Thread-197691] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:01:02.383 [DEBUG] [Thread-197693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:01:17.535 [DEBUG] [Thread-197694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:01:18.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:01:18.996 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:01:19.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-11-24T22:01:20.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 0, 57), 16.47, 32.48, 0.0, 35.18, 15.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:01:20.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:00:57
2025-11-24T22:01:20.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:01:20.403 [DEBUG] [Thread-197695] [transport.py] [_log()] starting thread (client mode): 0xc9b80b20
2025-11-24T22:01:20.404 [DEBUG] [Thread-197695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:01:20.417 [DEBUG] [Thread-197695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:01:20.417 [INFO] [Thread-197695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] client lang: <none>
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] server lang: <none>
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] kex follows: False
2025-11-24T22:01:20.423 [DEBUG] [Thread-197695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:01:20.424 [DEBUG] [Thread-197695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:01:20.424 [DEBUG] [Thread-197695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:01:20.424 [DEBUG] [Thread-197695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:01:20.424 [DEBUG] [Thread-197695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:01:20.424 [DEBUG] [Thread-197695] [transport.py] [_log()] Compression: none
2025-11-24T22:01:20.424 [DEBUG] [Thread-197695] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:01:20.461 [DEBUG] [Thread-197695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:01:20.466 [DEBUG] [Thread-197695] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:01:20.468 [DEBUG] [Thread-197695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:01:20.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:01:20.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:01:20.474 [DEBUG] [Thread-197695] [transport.py] [_log()] userauth is OK
2025-11-24T22:01:20.474 [DEBUG] [Thread-197695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:01:20.474 [DEBUG] [Thread-197695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:01:20.474 [DEBUG] [Thread-197695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:01:20.474 [DEBUG] [Thread-197695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:01:20.513 [INFO] [Thread-197695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:01:20.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:01:21.174 [DEBUG] [Thread-197695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:01:21.174 [DEBUG] [Thread-197695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:01:21.176 [DEBUG] [Thread-197695] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:01:21.215 [DEBUG] [Thread-197695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:01:21.215 [DEBUG] [Thread-197695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:01:21.218 [DEBUG] [Thread-197695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:01:21.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:01:21.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:01:21.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:01:21.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:01:21.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:01:21.243 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:01:21.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:01:21.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:01:21.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:01:21.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.833728 -999.00  +15.10  24.70     37   +0.80 1 1 1 1 1     0    0 14.00 7.92 ZNESW 27.5 24.7 165.0 37.7 15.3 -25.6 15.2 -25.0 14.9 -24.0 15.2 -24.8
2025-11-24T22:01:21.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:01:21.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:01:21.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.833728
2025-11-24T22:01:21.250 [DEBUG] [Thread-197695] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:01:21.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:01:21.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:01:21.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:01:21.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:01:21.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:01:21.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:00:57', tmtdew=16.47, humidity=32.48, cloud=0.0, wind=35.18, temperature=15.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:00:58', seeing=0.67, atlas_timestamp='2025-11-24T20:00:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T22:01:21.347 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:01:21.360 [DEBUG] [Thread-197698] [transport.py] [_log()] starting thread (client mode): 0xd0713880
2025-11-24T22:01:21.360 [DEBUG] [Thread-197698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:01:21.380 [DEBUG] [Thread-197698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:01:21.380 [INFO] [Thread-197698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:01:21.387 [DEBUG] [Thread-197698] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] client lang: <none>
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] server lang: <none>
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] kex follows: False
2025-11-24T22:01:21.388 [DEBUG] [Thread-197698] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:01:21.389 [DEBUG] [Thread-197698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:01:21.389 [DEBUG] [Thread-197698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:01:21.389 [DEBUG] [Thread-197698] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:01:21.389 [DEBUG] [Thread-197698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:01:21.389 [DEBUG] [Thread-197698] [transport.py] [_log()] Compression: none
2025-11-24T22:01:21.389 [DEBUG] [Thread-197698] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:01:21.445 [DEBUG] [Thread-197698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:01:21.445 [DEBUG] [Thread-197698] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:01:21.446 [DEBUG] [Thread-197698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:01:21.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:01:21.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:01:21.501 [DEBUG] [Thread-197698] [transport.py] [_log()] userauth is OK
2025-11-24T22:01:21.501 [DEBUG] [Thread-197698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:01:21.501 [DEBUG] [Thread-197698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:01:21.501 [DEBUG] [Thread-197698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:01:21.501 [DEBUG] [Thread-197698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:01:21.520 [INFO] [Thread-197698] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:01:21.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:01:21.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:01:22.378 [DEBUG] [Thread-197698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:01:22.378 [DEBUG] [Thread-197698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:01:22.426 [DEBUG] [Thread-197698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:01:22.426 [DEBUG] [Thread-197698] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:01:22.438 [DEBUG] [Thread-197698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:01:22.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:01:22.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-11-24T22:01:22.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:01:22.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:01:22.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:01:22.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:01:22.473 [DEBUG] [Thread-197698] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:01:31.926 [DEBUG] [Thread-197700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:01:32.577 [DEBUG] [Thread-197701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:01:38.229 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:01:38.231 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:01:47.676 [DEBUG] [Thread-197702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:01:52.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:01:52.478 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:01:52.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-11-24T22:01:53.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 1, 30), 16.44, 32.52, 0.0, 34.39, 15.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:01:53.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:01:30
2025-11-24T22:01:53.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:01:53.751 [DEBUG] [Thread-197703] [transport.py] [_log()] starting thread (client mode): 0xd07115d0
2025-11-24T22:01:53.752 [DEBUG] [Thread-197703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:01:53.765 [DEBUG] [Thread-197703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:01:53.765 [INFO] [Thread-197703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:01:53.768 [DEBUG] [Thread-197703] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:01:53.768 [DEBUG] [Thread-197703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:01:53.768 [DEBUG] [Thread-197703] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:01:53.768 [DEBUG] [Thread-197703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:01:53.768 [DEBUG] [Thread-197703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:01:53.768 [DEBUG] [Thread-197703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:01:53.768 [DEBUG] [Thread-197703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:01:53.768 [DEBUG] [Thread-197703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:01:53.768 [DEBUG] [Thread-197703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:01:53.769 [DEBUG] [Thread-197703] [transport.py] [_log()] client lang: <none>
2025-11-24T22:01:53.769 [DEBUG] [Thread-197703] [transport.py] [_log()] server lang: <none>
2025-11-24T22:01:53.769 [DEBUG] [Thread-197703] [transport.py] [_log()] kex follows: False
2025-11-24T22:01:53.769 [DEBUG] [Thread-197703] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:01:53.769 [DEBUG] [Thread-197703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:01:53.769 [DEBUG] [Thread-197703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:01:53.769 [DEBUG] [Thread-197703] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:01:53.769 [DEBUG] [Thread-197703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:01:53.769 [DEBUG] [Thread-197703] [transport.py] [_log()] Compression: none
2025-11-24T22:01:53.769 [DEBUG] [Thread-197703] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:01:53.796 [DEBUG] [Thread-197703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:01:53.801 [DEBUG] [Thread-197703] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:01:53.802 [DEBUG] [Thread-197703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:01:53.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:01:53.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:01:53.804 [DEBUG] [Thread-197703] [transport.py] [_log()] userauth is OK
2025-11-24T22:01:53.805 [DEBUG] [Thread-197703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:01:53.805 [DEBUG] [Thread-197703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:01:53.805 [DEBUG] [Thread-197703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:01:53.805 [DEBUG] [Thread-197703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:01:53.827 [INFO] [Thread-197703] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:01:53.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:01:54.432 [DEBUG] [Thread-197703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:01:54.432 [DEBUG] [Thread-197703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:01:54.433 [DEBUG] [Thread-197703] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:01:54.473 [DEBUG] [Thread-197703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:01:54.473 [DEBUG] [Thread-197703] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:01:54.476 [DEBUG] [Thread-197703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:01:54.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:01:54.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:01:54.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:01:54.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:01:54.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:01:54.496 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:01:54.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:01:54.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:01:54.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:01:54.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.834422 -999.00  +15.10  24.46     37   +0.80 1 1 1 1 1     0    0 14.26 12.93 ZNESW 20.7 24.5 170.6 28.9 15.3 -25.6 15.2 -25.2 14.9 -24.0 15.2 -24.8
2025-11-24T22:01:54.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:01:54.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:01:54.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.834422
2025-11-24T22:01:54.503 [DEBUG] [Thread-197703] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:01:54.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:01:54.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:01:54.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:01:54.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:01:54.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:01:54.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:01:30', tmtdew=16.44, humidity=32.52, cloud=0.0, wind=34.39, temperature=15.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:01:30', seeing=0.67, atlas_timestamp='2025-11-24T20:01:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T22:01:54.582 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:01:54.594 [DEBUG] [Thread-197706] [transport.py] [_log()] starting thread (client mode): 0xc9b80700
2025-11-24T22:01:54.595 [DEBUG] [Thread-197706] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:01:54.610 [DEBUG] [Thread-197706] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:01:54.610 [INFO] [Thread-197706] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:01:54.618 [DEBUG] [Thread-197706] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:01:54.618 [DEBUG] [Thread-197706] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:01:54.618 [DEBUG] [Thread-197706] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:01:54.618 [DEBUG] [Thread-197706] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:01:54.618 [DEBUG] [Thread-197706] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:01:54.618 [DEBUG] [Thread-197706] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:01:54.618 [DEBUG] [Thread-197706] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:01:54.618 [DEBUG] [Thread-197706] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] client lang: <none>
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] server lang: <none>
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] kex follows: False
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] Compression: none
2025-11-24T22:01:54.619 [DEBUG] [Thread-197706] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:01:54.677 [DEBUG] [Thread-197706] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:01:54.678 [DEBUG] [Thread-197706] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:01:54.679 [DEBUG] [Thread-197706] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:01:54.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:01:54.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:01:54.733 [DEBUG] [Thread-197706] [transport.py] [_log()] userauth is OK
2025-11-24T22:01:54.733 [DEBUG] [Thread-197706] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:01:54.733 [DEBUG] [Thread-197706] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:01:54.734 [DEBUG] [Thread-197706] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:01:54.734 [DEBUG] [Thread-197706] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:01:54.752 [INFO] [Thread-197706] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:01:54.753 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:01:54.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:01:55.633 [DEBUG] [Thread-197706] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:01:55.633 [DEBUG] [Thread-197706] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:01:55.681 [DEBUG] [Thread-197706] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:01:55.681 [DEBUG] [Thread-197706] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:01:55.689 [DEBUG] [Thread-197706] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:01:55.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:01:55.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-11-24T22:01:55.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-11-24T22:01:55.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:01:55.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:01:55.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:01:55.732 [DEBUG] [Thread-197706] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:02:02.711 [DEBUG] [Thread-197708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:02:17.779 [DEBUG] [Thread-197709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:02:25.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:02:25.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:02:25.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-11-24T22:02:26.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 2, 3), 16.55, 32.29, 0.0, 32.54, 15.26, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:02:26.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:02:03
2025-11-24T22:02:26.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:02:26.937 [DEBUG] [Thread-197710] [transport.py] [_log()] starting thread (client mode): 0xc9b82950
2025-11-24T22:02:26.938 [DEBUG] [Thread-197710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:02:26.951 [DEBUG] [Thread-197710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:02:26.951 [INFO] [Thread-197710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:02:26.955 [DEBUG] [Thread-197710] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] client lang: <none>
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] server lang: <none>
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] kex follows: False
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:02:26.956 [DEBUG] [Thread-197710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:02:26.957 [DEBUG] [Thread-197710] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:02:26.957 [DEBUG] [Thread-197710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:02:26.957 [DEBUG] [Thread-197710] [transport.py] [_log()] Compression: none
2025-11-24T22:02:26.957 [DEBUG] [Thread-197710] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:02:26.988 [DEBUG] [Thread-197710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:02:26.989 [DEBUG] [Thread-197710] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:02:26.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:02:26.992 [DEBUG] [Thread-197710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:02:26.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:02:26.993 [DEBUG] [Thread-197710] [transport.py] [_log()] userauth is OK
2025-11-24T22:02:26.993 [DEBUG] [Thread-197710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:02:26.993 [DEBUG] [Thread-197710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:02:26.993 [DEBUG] [Thread-197710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:02:26.993 [DEBUG] [Thread-197710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:02:27.014 [INFO] [Thread-197710] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:02:27.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:02:27.617 [DEBUG] [Thread-197710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:02:27.617 [DEBUG] [Thread-197710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:02:27.626 [DEBUG] [Thread-197710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:02:27.658 [DEBUG] [Thread-197710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:02:27.658 [DEBUG] [Thread-197710] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:02:27.661 [DEBUG] [Thread-197710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:02:27.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:02:27.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:02:27.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:02:27.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:02:27.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:02:27.681 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:02:27.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:02:27.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:02:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:02:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.834770 -999.00  +15.10  16.39     38   +0.90 1 1 1 1 1     0    0 14.40 14.71 ZNESW 17.3 16.4 154.4 26.4 15.2 -25.7 15.2 -25.2 14.9 -24.0 15.2 -25.0
2025-11-24T22:02:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:02:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:02:27.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.834770
2025-11-24T22:02:27.688 [DEBUG] [Thread-197710] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:02:27.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:02:27.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:02:27.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:02:27.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:02:27.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:02:27.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:02:03', tmtdew=16.55, humidity=32.29, cloud=0.0, wind=32.54, temperature=15.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:02:03', seeing=0.66, atlas_timestamp='2025-11-24T20:02:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T22:02:27.769 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:02:27.786 [DEBUG] [Thread-197713] [transport.py] [_log()] starting thread (client mode): 0xd07ceb60
2025-11-24T22:02:27.787 [DEBUG] [Thread-197713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:02:27.803 [DEBUG] [Thread-197713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:02:27.803 [INFO] [Thread-197713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:02:27.810 [DEBUG] [Thread-197713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:02:27.810 [DEBUG] [Thread-197713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:02:27.810 [DEBUG] [Thread-197713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:02:27.810 [DEBUG] [Thread-197713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] client lang: <none>
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] server lang: <none>
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] kex follows: False
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:02:27.811 [DEBUG] [Thread-197713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:02:27.812 [DEBUG] [Thread-197713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:02:27.812 [DEBUG] [Thread-197713] [transport.py] [_log()] Compression: none
2025-11-24T22:02:27.812 [DEBUG] [Thread-197713] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:02:27.871 [DEBUG] [Thread-197713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:02:27.871 [DEBUG] [Thread-197713] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:02:27.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:02:27.872 [DEBUG] [Thread-197713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:02:27.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:02:27.929 [DEBUG] [Thread-197713] [transport.py] [_log()] userauth is OK
2025-11-24T22:02:27.929 [DEBUG] [Thread-197713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:02:27.930 [DEBUG] [Thread-197713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:02:27.930 [DEBUG] [Thread-197713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:02:27.930 [DEBUG] [Thread-197713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:02:27.949 [INFO] [Thread-197713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:02:27.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:02:27.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:02:28.825 [DEBUG] [Thread-197713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:02:28.826 [DEBUG] [Thread-197713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:02:28.874 [DEBUG] [Thread-197713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:02:28.874 [DEBUG] [Thread-197713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:02:28.883 [DEBUG] [Thread-197713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:02:28.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:02:28.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-11-24T22:02:28.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-11-24T22:02:28.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:02:28.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:02:28.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:02:28.930 [DEBUG] [Thread-197713] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:02:32.239 [DEBUG] [Thread-197715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:02:32.841 [DEBUG] [Thread-197716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:02:38.437 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:02:38.438 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:02:47.925 [DEBUG] [Thread-197717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:02:58.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:02:58.954 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:02:58.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-11-24T22:02:59.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 2, 36), 16.48, 32.33, 0.0, 30.51, 15.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:02:59.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:02:36
2025-11-24T22:02:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:03:00.037 [DEBUG] [Thread-197718] [transport.py] [_log()] starting thread (client mode): 0xd0700430
2025-11-24T22:03:00.038 [DEBUG] [Thread-197718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:03:00.050 [DEBUG] [Thread-197718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:03:00.051 [INFO] [Thread-197718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:03:00.055 [DEBUG] [Thread-197718] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:03:00.055 [DEBUG] [Thread-197718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:03:00.055 [DEBUG] [Thread-197718] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:03:00.055 [DEBUG] [Thread-197718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:03:00.055 [DEBUG] [Thread-197718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:03:00.055 [DEBUG] [Thread-197718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:03:00.055 [DEBUG] [Thread-197718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:03:00.056 [DEBUG] [Thread-197718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:03:00.056 [DEBUG] [Thread-197718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:03:00.056 [DEBUG] [Thread-197718] [transport.py] [_log()] client lang: <none>
2025-11-24T22:03:00.056 [DEBUG] [Thread-197718] [transport.py] [_log()] server lang: <none>
2025-11-24T22:03:00.056 [DEBUG] [Thread-197718] [transport.py] [_log()] kex follows: False
2025-11-24T22:03:00.056 [DEBUG] [Thread-197718] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:03:00.056 [DEBUG] [Thread-197718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:03:00.057 [DEBUG] [Thread-197718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:03:00.057 [DEBUG] [Thread-197718] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:03:00.057 [DEBUG] [Thread-197718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:03:00.057 [DEBUG] [Thread-197718] [transport.py] [_log()] Compression: none
2025-11-24T22:03:00.057 [DEBUG] [Thread-197718] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:03:00.088 [DEBUG] [Thread-197718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:03:00.092 [DEBUG] [Thread-197718] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:03:00.093 [DEBUG] [Thread-197718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:03:00.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:03:00.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:03:00.098 [DEBUG] [Thread-197718] [transport.py] [_log()] userauth is OK
2025-11-24T22:03:00.098 [DEBUG] [Thread-197718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:03:00.099 [DEBUG] [Thread-197718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:03:00.099 [DEBUG] [Thread-197718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:03:00.099 [DEBUG] [Thread-197718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:03:00.127 [INFO] [Thread-197718] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:03:00.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:03:00.744 [DEBUG] [Thread-197718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:03:00.744 [DEBUG] [Thread-197718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:03:00.745 [DEBUG] [Thread-197718] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:03:00.786 [DEBUG] [Thread-197718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:03:00.786 [DEBUG] [Thread-197718] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:03:00.789 [DEBUG] [Thread-197718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:03:00.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:03:00.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:03:00.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:03:00.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:03:00.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:03:00.818 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:03:00.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:03:00.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:03:00.820 [DEBUG] [Thread-197718] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:03:00.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:03:00.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.835117 -999.00  +15.10  19.95     38   +0.90 1 1 1 1 1     0    0 14.40 15.25 ZNESW 27.5 19.9 177.1 30.7 15.2 -25.6 15.1 -25.1 14.9 -24.1 15.2 -24.8
2025-11-24T22:03:00.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:03:00.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:03:00.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.835117
2025-11-24T22:03:00.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:03:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:03:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:03:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:03:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:03:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:02:36', tmtdew=16.48, humidity=32.33, cloud=0.0, wind=30.51, temperature=15.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:02:36', seeing=0.66, atlas_timestamp='2025-11-24T20:02:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T22:03:00.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:03:00.930 [DEBUG] [Thread-197721] [transport.py] [_log()] starting thread (client mode): 0xd0738eb0
2025-11-24T22:03:00.930 [DEBUG] [Thread-197721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:03:00.947 [DEBUG] [Thread-197721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:03:00.947 [INFO] [Thread-197721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:03:00.955 [DEBUG] [Thread-197721] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:03:00.955 [DEBUG] [Thread-197721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:03:00.955 [DEBUG] [Thread-197721] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:03:00.955 [DEBUG] [Thread-197721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:03:00.955 [DEBUG] [Thread-197721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:03:00.955 [DEBUG] [Thread-197721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:03:00.955 [DEBUG] [Thread-197721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:03:00.955 [DEBUG] [Thread-197721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] client lang: <none>
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] server lang: <none>
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] kex follows: False
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] Compression: none
2025-11-24T22:03:00.956 [DEBUG] [Thread-197721] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:03:01.014 [DEBUG] [Thread-197721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:03:01.015 [DEBUG] [Thread-197721] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:03:01.015 [DEBUG] [Thread-197721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:03:01.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:03:01.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:03:01.075 [DEBUG] [Thread-197721] [transport.py] [_log()] userauth is OK
2025-11-24T22:03:01.076 [DEBUG] [Thread-197721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:03:01.076 [DEBUG] [Thread-197721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:03:01.076 [DEBUG] [Thread-197721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:03:01.076 [DEBUG] [Thread-197721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:03:01.095 [INFO] [Thread-197721] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:03:01.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:03:01.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:03:02.022 [DEBUG] [Thread-197721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:03:02.023 [DEBUG] [Thread-197721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:03:02.070 [DEBUG] [Thread-197721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:03:02.070 [DEBUG] [Thread-197721] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:03:02.079 [DEBUG] [Thread-197721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:03:02.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:03:02.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-11-24T22:03:02.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-11-24T22:03:02.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:03:02.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:03:02.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:03:02.115 [DEBUG] [Thread-197721] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:03:02.969 [DEBUG] [Thread-197723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:03:18.087 [DEBUG] [Thread-197724 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:03:32.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:03:32.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:03:32.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-11-24T22:03:32.551 [DEBUG] [Thread-197725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:03:32.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 3, 9), 16.45, 32.38, 0.0, 32.4, 15.13, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:03:32.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:03:09
2025-11-24T22:03:33.118 [DEBUG] [Thread-197726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:03:33.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:03:33.340 [DEBUG] [Thread-197727] [transport.py] [_log()] starting thread (client mode): 0xd07ccbb0
2025-11-24T22:03:33.341 [DEBUG] [Thread-197727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:03:33.345 [DEBUG] [Thread-197727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:03:33.345 [INFO] [Thread-197727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] client lang: <none>
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] server lang: <none>
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] kex follows: False
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:03:33.349 [DEBUG] [Thread-197727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:03:33.350 [DEBUG] [Thread-197727] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:03:33.350 [DEBUG] [Thread-197727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:03:33.350 [DEBUG] [Thread-197727] [transport.py] [_log()] Compression: none
2025-11-24T22:03:33.350 [DEBUG] [Thread-197727] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:03:33.377 [DEBUG] [Thread-197727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:03:33.380 [DEBUG] [Thread-197727] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:03:33.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:03:33.382 [DEBUG] [Thread-197727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:03:33.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:03:33.421 [DEBUG] [Thread-197727] [transport.py] [_log()] userauth is OK
2025-11-24T22:03:33.421 [DEBUG] [Thread-197727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:03:33.421 [DEBUG] [Thread-197727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:03:33.421 [DEBUG] [Thread-197727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:03:33.421 [DEBUG] [Thread-197727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:03:33.444 [INFO] [Thread-197727] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:03:33.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:03:34.081 [DEBUG] [Thread-197727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:03:34.081 [DEBUG] [Thread-197727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:03:34.082 [DEBUG] [Thread-197727] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:03:34.122 [DEBUG] [Thread-197727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:03:34.122 [DEBUG] [Thread-197727] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:03:34.125 [DEBUG] [Thread-197727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:03:34.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:03:34.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:03:34.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:03:34.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:03:34.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:03:34.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:03:34.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:03:34.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:03:34.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:03:34.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.835464 -999.00  +15.10  18.84     37   +0.70 1 1 1 1 1     0    0 14.56 17.47 ZNESW 20.5 18.8 162.6 36.1 15.2 -25.7 15.2 -25.1 14.9 -23.9 15.2 -24.9
2025-11-24T22:03:34.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:03:34.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:03:34.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.835464
2025-11-24T22:03:34.152 [DEBUG] [Thread-197727] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:03:34.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:03:34.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:03:34.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:03:34.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:03:34.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:03:34.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:03:09', tmtdew=16.45, humidity=32.38, cloud=0.0, wind=32.4, temperature=15.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:03:09', seeing=0.61, atlas_timestamp='2025-11-24T20:03:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T22:03:34.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:03:34.251 [DEBUG] [Thread-197730] [transport.py] [_log()] starting thread (client mode): 0xc9b83dc0
2025-11-24T22:03:34.251 [DEBUG] [Thread-197730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:03:34.266 [DEBUG] [Thread-197730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:03:34.266 [INFO] [Thread-197730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] client lang: <none>
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] server lang: <none>
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] kex follows: False
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:03:34.273 [DEBUG] [Thread-197730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:03:34.274 [DEBUG] [Thread-197730] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:03:34.274 [DEBUG] [Thread-197730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:03:34.274 [DEBUG] [Thread-197730] [transport.py] [_log()] Compression: none
2025-11-24T22:03:34.274 [DEBUG] [Thread-197730] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:03:34.331 [DEBUG] [Thread-197730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:03:34.332 [DEBUG] [Thread-197730] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:03:34.332 [DEBUG] [Thread-197730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:03:34.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:03:34.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:03:34.388 [DEBUG] [Thread-197730] [transport.py] [_log()] userauth is OK
2025-11-24T22:03:34.388 [DEBUG] [Thread-197730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:03:34.388 [DEBUG] [Thread-197730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:03:34.388 [DEBUG] [Thread-197730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:03:34.388 [DEBUG] [Thread-197730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:03:34.406 [INFO] [Thread-197730] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:03:34.406 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:03:34.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:03:35.276 [DEBUG] [Thread-197730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:03:35.276 [DEBUG] [Thread-197730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:03:35.324 [DEBUG] [Thread-197730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:03:35.324 [DEBUG] [Thread-197730] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:03:35.332 [DEBUG] [Thread-197730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:03:35.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:03:35.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:03:35.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:03:35.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:03:35.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:03:35.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:03:35.365 [DEBUG] [Thread-197730] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:03:38.646 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:03:38.648 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:03:48.164 [DEBUG] [Thread-197732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:04:03.261 [DEBUG] [Thread-197733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:04:05.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:04:05.392 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:04:05.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-11-24T22:04:06.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 3, 42), 16.51, 32.36, 0.0, 34.48, 15.06, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:04:06.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:03:42
2025-11-24T22:04:06.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:04:06.792 [DEBUG] [Thread-197734] [transport.py] [_log()] starting thread (client mode): 0xd073a470
2025-11-24T22:04:06.793 [DEBUG] [Thread-197734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:04:06.806 [DEBUG] [Thread-197734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:04:06.806 [INFO] [Thread-197734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:04:06.811 [DEBUG] [Thread-197734] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] client lang: <none>
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] server lang: <none>
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] kex follows: False
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:04:06.812 [DEBUG] [Thread-197734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:04:06.813 [DEBUG] [Thread-197734] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:04:06.813 [DEBUG] [Thread-197734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:04:06.813 [DEBUG] [Thread-197734] [transport.py] [_log()] Compression: none
2025-11-24T22:04:06.813 [DEBUG] [Thread-197734] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:04:06.848 [DEBUG] [Thread-197734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:04:06.854 [DEBUG] [Thread-197734] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:04:06.856 [DEBUG] [Thread-197734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:04:06.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:04:06.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:04:06.861 [DEBUG] [Thread-197734] [transport.py] [_log()] userauth is OK
2025-11-24T22:04:06.861 [DEBUG] [Thread-197734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:04:06.862 [DEBUG] [Thread-197734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:04:06.862 [DEBUG] [Thread-197734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:04:06.862 [DEBUG] [Thread-197734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:04:06.891 [INFO] [Thread-197734] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:04:06.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:04:07.513 [DEBUG] [Thread-197734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:04:07.514 [DEBUG] [Thread-197734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:04:07.514 [DEBUG] [Thread-197734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:04:07.555 [DEBUG] [Thread-197734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:04:07.555 [DEBUG] [Thread-197734] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:04:07.557 [DEBUG] [Thread-197734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:04:07.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:04:07.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:04:07.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:04:07.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:04:07.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:04:07.581 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:04:07.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:04:07.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:04:07.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:04:07.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.835811 -999.00  +15.10  20.46     37   +0.80 1 1 1 1 1     0    0 14.76 18.78 ZNESW 15.9 20.5 169.0 40.0 15.2 -25.7 15.1 -25.1 14.8 -24.1 15.1 -24.9
2025-11-24T22:04:07.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:04:07.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:04:07.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.835811
2025-11-24T22:04:07.588 [DEBUG] [Thread-197734] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:04:07.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:04:07.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:04:07.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:04:07.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:04:07.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:04:07.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:03:42', tmtdew=16.51, humidity=32.36, cloud=0.0, wind=34.48, temperature=15.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:03:42', seeing=0.58, atlas_timestamp='2025-11-24T20:03:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[0.007749999999999702, 0.006249999999999645, 0.025249999999999773, 0.009000000000000341, 0.02200000000000024, 0.06825000000000081, 0.022999999999999687, -0.01624999999999943, 0.05349999999999966, 0.007500000000000284, 0.04124999999999979, -0.011000000000001009, 0.06700000000000017, 0.05824999999999925, 0.03999999999999915, 0.022999999999999687, 0.03125, 0.07150000000000034, 0.06599999999999895, 0.0012499999999988631, 0.11099999999999888, 0.07724999999999937, 0.020250000000000767, -0.0022500000000000853, 0.013999999999999346, 0.04550000000000054, 0.060750000000000526, 0.0495000000000001, 0.04400000000000048, 0.004000000000001336, 0.09100000000000108, -0.007999999999999119, -0.014749999999999375], zp_timestamp='2025-11-24T19:56:00')
2025-11-24T22:04:07.676 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:04:07.687 [DEBUG] [Thread-197737] [transport.py] [_log()] starting thread (client mode): 0xd073a200
2025-11-24T22:04:07.687 [DEBUG] [Thread-197737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:04:07.703 [DEBUG] [Thread-197737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:04:07.703 [INFO] [Thread-197737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] client lang: <none>
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] server lang: <none>
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] kex follows: False
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:04:07.711 [DEBUG] [Thread-197737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:04:07.712 [DEBUG] [Thread-197737] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:04:07.712 [DEBUG] [Thread-197737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:04:07.712 [DEBUG] [Thread-197737] [transport.py] [_log()] Compression: none
2025-11-24T22:04:07.712 [DEBUG] [Thread-197737] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:04:07.768 [DEBUG] [Thread-197737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:04:07.768 [DEBUG] [Thread-197737] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:04:07.768 [DEBUG] [Thread-197737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:04:07.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:04:07.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:04:07.828 [DEBUG] [Thread-197737] [transport.py] [_log()] userauth is OK
2025-11-24T22:04:07.828 [DEBUG] [Thread-197737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:04:07.828 [DEBUG] [Thread-197737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:04:07.828 [DEBUG] [Thread-197737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:04:07.828 [DEBUG] [Thread-197737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:04:07.844 [INFO] [Thread-197737] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:04:07.844 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:04:07.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:04:08.680 [DEBUG] [Thread-197737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:04:08.680 [DEBUG] [Thread-197737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:04:08.728 [DEBUG] [Thread-197737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:04:08.728 [DEBUG] [Thread-197737] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:04:08.736 [DEBUG] [Thread-197737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:04:08.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:04:08.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-11-24T22:04:08.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-11-24T22:04:08.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:04:08.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:04:08.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:04:08.770 [DEBUG] [Thread-197737] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:04:18.308 [DEBUG] [Thread-197739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:04:32.797 [DEBUG] [Thread-197740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:04:33.425 [DEBUG] [Thread-197741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:04:38.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:04:38.803 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:04:38.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-11-24T22:04:38.852 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:04:38.854 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:04:39.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 4, 15), 16.5, 32.38, 0.0, 37.9, 15.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:04:39.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:04:15
2025-11-24T22:04:39.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:04:40.048 [DEBUG] [Thread-197742] [transport.py] [_log()] starting thread (client mode): 0xd07cdbd0
2025-11-24T22:04:40.049 [DEBUG] [Thread-197742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:04:40.063 [DEBUG] [Thread-197742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:04:40.063 [INFO] [Thread-197742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:04:40.066 [DEBUG] [Thread-197742] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] client lang: <none>
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] server lang: <none>
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] kex follows: False
2025-11-24T22:04:40.067 [DEBUG] [Thread-197742] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:04:40.068 [DEBUG] [Thread-197742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:04:40.068 [DEBUG] [Thread-197742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:04:40.068 [DEBUG] [Thread-197742] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:04:40.068 [DEBUG] [Thread-197742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:04:40.068 [DEBUG] [Thread-197742] [transport.py] [_log()] Compression: none
2025-11-24T22:04:40.068 [DEBUG] [Thread-197742] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:04:40.096 [DEBUG] [Thread-197742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:04:40.100 [DEBUG] [Thread-197742] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:04:40.101 [DEBUG] [Thread-197742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:04:40.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:04:40.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:04:40.141 [DEBUG] [Thread-197742] [transport.py] [_log()] userauth is OK
2025-11-24T22:04:40.142 [DEBUG] [Thread-197742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:04:40.142 [DEBUG] [Thread-197742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:04:40.142 [DEBUG] [Thread-197742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:04:40.142 [DEBUG] [Thread-197742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:04:40.170 [INFO] [Thread-197742] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:04:40.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:04:40.801 [DEBUG] [Thread-197742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:04:40.801 [DEBUG] [Thread-197742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:04:40.803 [DEBUG] [Thread-197742] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:04:40.841 [DEBUG] [Thread-197742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:04:40.842 [DEBUG] [Thread-197742] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:04:40.845 [DEBUG] [Thread-197742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:04:40.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:04:40.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:04:40.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:04:40.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:04:40.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:04:40.871 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:04:40.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:04:40.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:04:40.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:04:40.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.836159 -999.00  +15.00  18.19     37   +0.70 1 1 1 1 1     0    0 14.45 20.89 ZNESW 18.8 18.2 157.6 30.5 15.2 -25.7 15.1 -25.1 14.8 -24.0 15.1 -24.9
2025-11-24T22:04:40.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:04:40.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:04:40.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.836159
2025-11-24T22:04:40.879 [DEBUG] [Thread-197742] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:04:40.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:04:40.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:04:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:04:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:04:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:04:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:04:15', tmtdew=16.5, humidity=32.38, cloud=0.0, wind=37.9, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:04:15', seeing=0.5, atlas_timestamp='2025-11-24T20:04:04.138', atlas_cloud=1, atlas_rain=1, zp_data=[-0.008250000000000313, -0.029749999999999943, 0.03175000000000061, 0.038999999999997925, -0.0024999999999995026, 0.08725000000000094, -0.02800000000000047, 0.0417500000000004, 0.04299999999999926, 0.032999999999999474, 0.04124999999999979, -0.01699999999999946, 0.08499999999999908, 0.09424999999999883, 0.03399999999999892, 0.0259999999999998, 0.03474999999999895, 0.07249999999999979, 0.06299999999999883, 0.009249999999999758, 0.07399999999999807, 0.12374999999999936, 0.02725000000000044, 0.036749999999999616, -0.0030000000000001137, 0.057500000000000995, 0.08174999999999955, 0.06850000000000023, 0.12100000000000044, 0.05150000000000077, 0.0940000000000012, 0.027000000000001023, -0.017250000000000654], zp_timestamp='2025-11-24T20:01:00')
2025-11-24T22:04: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-11-24T22:04:40.998 [DEBUG] [Thread-197745] [transport.py] [_log()] starting thread (client mode): 0xd073a410
2025-11-24T22:04:40.998 [DEBUG] [Thread-197745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:04:41.013 [DEBUG] [Thread-197745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:04:41.014 [INFO] [Thread-197745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:04:41.021 [DEBUG] [Thread-197745] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:04:41.021 [DEBUG] [Thread-197745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:04:41.022 [DEBUG] [Thread-197745] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:04:41.022 [DEBUG] [Thread-197745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:04:41.022 [DEBUG] [Thread-197745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:04:41.022 [DEBUG] [Thread-197745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:04:41.022 [DEBUG] [Thread-197745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:04:41.022 [DEBUG] [Thread-197745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:04:41.022 [DEBUG] [Thread-197745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:04:41.022 [DEBUG] [Thread-197745] [transport.py] [_log()] client lang: <none>
2025-11-24T22:04:41.022 [DEBUG] [Thread-197745] [transport.py] [_log()] server lang: <none>
2025-11-24T22:04:41.022 [DEBUG] [Thread-197745] [transport.py] [_log()] kex follows: False
2025-11-24T22:04:41.023 [DEBUG] [Thread-197745] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:04:41.023 [DEBUG] [Thread-197745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:04:41.023 [DEBUG] [Thread-197745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:04:41.023 [DEBUG] [Thread-197745] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:04:41.023 [DEBUG] [Thread-197745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:04:41.023 [DEBUG] [Thread-197745] [transport.py] [_log()] Compression: none
2025-11-24T22:04:41.023 [DEBUG] [Thread-197745] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:04:41.080 [DEBUG] [Thread-197745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:04:41.081 [DEBUG] [Thread-197745] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:04:41.082 [DEBUG] [Thread-197745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:04:41.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:04:41.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:04:41.137 [DEBUG] [Thread-197745] [transport.py] [_log()] userauth is OK
2025-11-24T22:04:41.137 [DEBUG] [Thread-197745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:04:41.137 [DEBUG] [Thread-197745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:04:41.137 [DEBUG] [Thread-197745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:04:41.137 [DEBUG] [Thread-197745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:04:41.156 [INFO] [Thread-197745] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:04:41.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:04:41.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:04:42.016 [DEBUG] [Thread-197745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:04:42.017 [DEBUG] [Thread-197745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:04:42.064 [DEBUG] [Thread-197745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:04:42.064 [DEBUG] [Thread-197745] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:04:42.073 [DEBUG] [Thread-197745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:04:42.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:04:42.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-11-24T22:04:42.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-11-24T22:04:42.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:04:42.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:04:42.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:04:42.116 [DEBUG] [Thread-197745] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:04:48.457 [DEBUG] [Thread-197747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:05:03.536 [DEBUG] [Thread-197748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:05:12.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:05:12.142 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:05:12.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-11-24T22:05:13.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 4, 47), 16.61, 31.73, 0.0, 34.09, 15.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:05:13.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:04:47
2025-11-24T22:05:13.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:05:13.855 [DEBUG] [Thread-197749] [transport.py] [_log()] starting thread (client mode): 0xd07fa860
2025-11-24T22:05:13.856 [DEBUG] [Thread-197749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:05:13.866 [DEBUG] [Thread-197749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:05:13.866 [INFO] [Thread-197749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:05:13.872 [DEBUG] [Thread-197749] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:05:13.873 [DEBUG] [Thread-197749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:05:13.873 [DEBUG] [Thread-197749] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:05:13.873 [DEBUG] [Thread-197749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:05:13.873 [DEBUG] [Thread-197749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:05:13.873 [DEBUG] [Thread-197749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:05:13.873 [DEBUG] [Thread-197749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:05:13.873 [DEBUG] [Thread-197749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:05:13.873 [DEBUG] [Thread-197749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:05:13.873 [DEBUG] [Thread-197749] [transport.py] [_log()] client lang: <none>
2025-11-24T22:05:13.873 [DEBUG] [Thread-197749] [transport.py] [_log()] server lang: <none>
2025-11-24T22:05:13.874 [DEBUG] [Thread-197749] [transport.py] [_log()] kex follows: False
2025-11-24T22:05:13.874 [DEBUG] [Thread-197749] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:05:13.874 [DEBUG] [Thread-197749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:05:13.874 [DEBUG] [Thread-197749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:05:13.875 [DEBUG] [Thread-197749] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:05:13.875 [DEBUG] [Thread-197749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:05:13.875 [DEBUG] [Thread-197749] [transport.py] [_log()] Compression: none
2025-11-24T22:05:13.875 [DEBUG] [Thread-197749] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:05:13.905 [DEBUG] [Thread-197749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:05:13.911 [DEBUG] [Thread-197749] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:05:13.913 [DEBUG] [Thread-197749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:05:13.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:05:13.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:05:13.919 [DEBUG] [Thread-197749] [transport.py] [_log()] userauth is OK
2025-11-24T22:05:13.919 [DEBUG] [Thread-197749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:05:13.919 [DEBUG] [Thread-197749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:05:13.919 [DEBUG] [Thread-197749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:05:13.920 [DEBUG] [Thread-197749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:05:13.946 [INFO] [Thread-197749] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:05:13.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:05:14.531 [DEBUG] [Thread-197749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:05:14.532 [DEBUG] [Thread-197749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:05:14.534 [DEBUG] [Thread-197749] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:05:14.571 [DEBUG] [Thread-197749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:05:14.571 [DEBUG] [Thread-197749] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:05:14.575 [DEBUG] [Thread-197749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:05:14.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:05:14.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:05:14.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:05:14.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:05:14.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:05:14.594 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:05:14.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:05:14.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:05:14.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:05:14.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.836853 -999.00  +15.00  29.74     37   +0.70 1 1 1 1 1     0    0 14.74 24.01 ZNESW 22.4 29.7 172.8 31.6 15.2 -25.5 15.0 -25.0 14.8 -24.0 15.2 -24.7
2025-11-24T22:05:14.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:05:14.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:05:14.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.836853
2025-11-24T22:05:14.602 [DEBUG] [Thread-197749] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:05:14.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:05:14.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:05:14.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:05:14.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:05:14.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:05:14.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:04:47', tmtdew=16.61, humidity=31.73, cloud=0.0, wind=34.09, temperature=15.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:04:47', seeing=0.59, atlas_timestamp='2025-11-24T20:05:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[-0.008250000000000313, -0.029749999999999943, 0.03175000000000061, 0.038999999999997925, -0.0024999999999995026, 0.08725000000000094, -0.02800000000000047, 0.0417500000000004, 0.04299999999999926, 0.032999999999999474, 0.04124999999999979, -0.01699999999999946, 0.08499999999999908, 0.09424999999999883, 0.03399999999999892, 0.0259999999999998, 0.03474999999999895, 0.07249999999999979, 0.06299999999999883, 0.009249999999999758, 0.07399999999999807, 0.12374999999999936, 0.02725000000000044, 0.036749999999999616, -0.0030000000000001137, 0.057500000000000995, 0.08174999999999955, 0.06850000000000023, 0.12100000000000044, 0.05150000000000077, 0.0940000000000012, 0.027000000000001023, -0.017250000000000654], zp_timestamp='2025-11-24T20:01:00')
2025-11-24T22:05:14.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:05:14.711 [DEBUG] [Thread-197752] [transport.py] [_log()] starting thread (client mode): 0xd07fb3d0
2025-11-24T22:05:14.711 [DEBUG] [Thread-197752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:05:14.726 [DEBUG] [Thread-197752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:05:14.726 [INFO] [Thread-197752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] client lang: <none>
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] server lang: <none>
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] kex follows: False
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:05:14.734 [DEBUG] [Thread-197752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:05:14.735 [DEBUG] [Thread-197752] [transport.py] [_log()] Compression: none
2025-11-24T22:05:14.735 [DEBUG] [Thread-197752] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:05:14.797 [DEBUG] [Thread-197752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:05:14.797 [DEBUG] [Thread-197752] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:05:14.798 [DEBUG] [Thread-197752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:05:14.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:05:14.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:05:14.853 [DEBUG] [Thread-197752] [transport.py] [_log()] userauth is OK
2025-11-24T22:05:14.853 [DEBUG] [Thread-197752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:05:14.853 [DEBUG] [Thread-197752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:05:14.853 [DEBUG] [Thread-197752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:05:14.853 [DEBUG] [Thread-197752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:05:14.867 [INFO] [Thread-197752] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:05:14.867 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:05:14.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:05:15.697 [DEBUG] [Thread-197752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:05:15.697 [DEBUG] [Thread-197752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:05:15.745 [DEBUG] [Thread-197752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:05:15.745 [DEBUG] [Thread-197752] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:05:15.754 [DEBUG] [Thread-197752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:05:15.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:05:15.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-11-24T22:05:15.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-11-24T22:05:15.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:05:15.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:05:15.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:05:15.793 [DEBUG] [Thread-197752] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:05:18.588 [DEBUG] [Thread-197754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:05:33.162 [DEBUG] [Thread-197755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:05:33.689 [DEBUG] [Thread-197756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:05:39.055 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:05:39.057 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:05:45.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:05:45.790 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:05:45.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-11-24T22:05:47.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 5, 20), 16.57, 31.83, 0.0, 32.54, 15.06, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:05:47.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:05:20
2025-11-24T22:05:47.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:05:47.493 [DEBUG] [Thread-197757] [transport.py] [_log()] starting thread (client mode): 0xd07cdcc0
2025-11-24T22:05:47.493 [DEBUG] [Thread-197757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:05:47.505 [DEBUG] [Thread-197757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:05:47.505 [INFO] [Thread-197757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] client lang: <none>
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] server lang: <none>
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] kex follows: False
2025-11-24T22:05:47.510 [DEBUG] [Thread-197757] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:05:47.511 [DEBUG] [Thread-197757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:05:47.511 [DEBUG] [Thread-197757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:05:47.511 [DEBUG] [Thread-197757] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:05:47.511 [DEBUG] [Thread-197757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:05:47.511 [DEBUG] [Thread-197757] [transport.py] [_log()] Compression: none
2025-11-24T22:05:47.511 [DEBUG] [Thread-197757] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:05:47.533 [DEBUG] [Thread-197757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:05:47.535 [DEBUG] [Thread-197757] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:05:47.537 [DEBUG] [Thread-197757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:05:47.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:05:47.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:05:47.541 [DEBUG] [Thread-197757] [transport.py] [_log()] userauth is OK
2025-11-24T22:05:47.541 [DEBUG] [Thread-197757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:05:47.542 [DEBUG] [Thread-197757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:05:47.542 [DEBUG] [Thread-197757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:05:47.542 [DEBUG] [Thread-197757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:05:47.570 [INFO] [Thread-197757] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:05:47.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:05:48.153 [DEBUG] [Thread-197757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:05:48.154 [DEBUG] [Thread-197757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:05:48.155 [DEBUG] [Thread-197757] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:05:48.194 [DEBUG] [Thread-197757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:05:48.194 [DEBUG] [Thread-197757] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:05:48.197 [DEBUG] [Thread-197757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:05:48.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:05:48.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:05:48.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:05:48.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:05:48.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:05:48.210 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:05:48.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:05:48.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:05:48.211 [DEBUG] [Thread-197757] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:05:48.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:05:48.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.837200 -999.00  +15.00  23.78     37   +0.60 1 1 1 1 1     0    0 14.99 23.32 ZNESW 24.5 23.8 166.2 30.2 15.2 -25.5 15.0 -25.1 14.8 -23.9 15.1 -24.7
2025-11-24T22:05:48.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:05:48.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:05:48.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.837200
2025-11-24T22:05:48.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:05:48.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:05:48.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:05:48.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:05:48.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:05:48.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:05:20', tmtdew=16.57, humidity=31.83, cloud=0.0, wind=32.54, temperature=15.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:05:20', seeing=0.61, atlas_timestamp='2025-11-24T20:05:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[-0.008250000000000313, -0.029749999999999943, 0.03175000000000061, 0.038999999999997925, -0.0024999999999995026, 0.08725000000000094, -0.02800000000000047, 0.0417500000000004, 0.04299999999999926, 0.032999999999999474, 0.04124999999999979, -0.01699999999999946, 0.08499999999999908, 0.09424999999999883, 0.03399999999999892, 0.0259999999999998, 0.03474999999999895, 0.07249999999999979, 0.06299999999999883, 0.009249999999999758, 0.07399999999999807, 0.12374999999999936, 0.02725000000000044, 0.036749999999999616, -0.0030000000000001137, 0.057500000000000995, 0.08174999999999955, 0.06850000000000023, 0.12100000000000044, 0.05150000000000077, 0.0940000000000012, 0.027000000000001023, -0.017250000000000654], zp_timestamp='2025-11-24T20:01:00')
2025-11-24T22:05:48.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:05:48.744 [DEBUG] [Thread-197760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:06:03.862 [DEBUG] [Thread-197761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:06:18.903 [DEBUG] [Thread-197762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:06:33.461 [DEBUG] [Thread-197763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:06:33.936 [DEBUG] [Thread-197764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:06:39.273 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:06:39.275 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:06:48.986 [DEBUG] [Thread-197765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:07:04.055 [DEBUG] [Thread-197766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:07:19.098 [DEBUG] [Thread-197767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:07:33.767 [DEBUG] [Thread-197768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:07:34.129 [DEBUG] [Thread-197769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:07:39.478 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:07:39.481 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:07:49.176 [DEBUG] [Thread-197770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:08:03.519 [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-11-24T22:08:04.202 [DEBUG] [Thread-197771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:08:19.245 [DEBUG] [Thread-197772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:08:33.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:08:33.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:08:33.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-11-24T22:08:34.053 [DEBUG] [Thread-197773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:08:34.282 [DEBUG] [Thread-197774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:08:34.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 8, 3), 16.62, 31.59, 0.0, 29.66, 14.98, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:08:34.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:08:03
2025-11-24T22:08:34.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:08:35.090 [DEBUG] [Thread-197775] [transport.py] [_log()] starting thread (client mode): 0xd3150580
2025-11-24T22:08:35.091 [DEBUG] [Thread-197775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:08:35.104 [DEBUG] [Thread-197775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:08:35.105 [INFO] [Thread-197775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] client lang: <none>
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] server lang: <none>
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] kex follows: False
2025-11-24T22:08:35.110 [DEBUG] [Thread-197775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:08:35.111 [DEBUG] [Thread-197775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:08:35.111 [DEBUG] [Thread-197775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:08:35.111 [DEBUG] [Thread-197775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:08:35.111 [DEBUG] [Thread-197775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:08:35.112 [DEBUG] [Thread-197775] [transport.py] [_log()] Compression: none
2025-11-24T22:08:35.112 [DEBUG] [Thread-197775] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:08:35.149 [DEBUG] [Thread-197775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:08:35.154 [DEBUG] [Thread-197775] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:08:35.156 [DEBUG] [Thread-197775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:08:35.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:08:35.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:08:35.161 [DEBUG] [Thread-197775] [transport.py] [_log()] userauth is OK
2025-11-24T22:08:35.162 [DEBUG] [Thread-197775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:08:35.162 [DEBUG] [Thread-197775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:08:35.162 [DEBUG] [Thread-197775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:08:35.162 [DEBUG] [Thread-197775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:08:35.202 [INFO] [Thread-197775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:08:35.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:08:35.841 [DEBUG] [Thread-197775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:08:35.842 [DEBUG] [Thread-197775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:08:35.851 [DEBUG] [Thread-197775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:08:35.883 [DEBUG] [Thread-197775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:08:35.883 [DEBUG] [Thread-197775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:08:35.886 [DEBUG] [Thread-197775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:08:35.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:08:35.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:08:35.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:08:35.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:08:35.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:08:35.907 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:08:35.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:08:35.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:08:35.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:08:35.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.838589 -999.00  +14.90  22.61     37   +0.40 1 1 1 1 1     0    0 14.82 29.33 ZNESW 22.1 22.6 167.8 31.1 15.1 -25.3 15.0 -24.9 14.7 -23.8 15.1 -24.6
2025-11-24T22:08:35.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:08:35.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:08:35.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.838589
2025-11-24T22:08:35.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:08:35.925 [DEBUG] [Thread-197775] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:08:35.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:08:35.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:08:35.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:08:35.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:08:35.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:08:03', tmtdew=16.62, humidity=31.59, cloud=0.0, wind=29.66, temperature=14.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:08:04', seeing=0.52, atlas_timestamp='2025-11-24T20:07:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[0.01624999999999943, 0.007250000000000867, 0.014750000000001151, 0.02049999999999841, -0.006499999999999062, 0.09025000000000105, 0.019000000000000128, 0.038750000000000284, 0.06449999999999889, 0.030000000000001137, 0.04224999999999923, 0.007999999999999119, 0.10099999999999909, 0.09224999999999994, 0.041999999999999815, 0.04299999999999926, 0.07525000000000048, 0.07850000000000001, 0.09249999999999936, 0.028249999999999886, 0.09499999999999886, 0.11574999999999847, 0.08825000000000038, 0.0547500000000003, 0.041999999999999815, 0.09350000000000058, 0.057749999999998636, 0.09050000000000047, 0.09699999999999953, 0.06900000000000084, 0.1070000000000011, 0.026000000000001577, -0.03325000000000067], zp_timestamp='2025-11-24T20:06:00')
2025-11-24T22:08:35.999 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:08:36.012 [DEBUG] [Thread-197778] [transport.py] [_log()] starting thread (client mode): 0xd0712500
2025-11-24T22:08:36.013 [DEBUG] [Thread-197778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:08:36.027 [DEBUG] [Thread-197778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:08:36.028 [INFO] [Thread-197778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:08:36.035 [DEBUG] [Thread-197778] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:08:36.035 [DEBUG] [Thread-197778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:08:36.035 [DEBUG] [Thread-197778] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:08:36.035 [DEBUG] [Thread-197778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:08:36.035 [DEBUG] [Thread-197778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:08:36.035 [DEBUG] [Thread-197778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:08:36.035 [DEBUG] [Thread-197778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] client lang: <none>
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] server lang: <none>
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] kex follows: False
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] Compression: none
2025-11-24T22:08:36.036 [DEBUG] [Thread-197778] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:08:36.095 [DEBUG] [Thread-197778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:08:36.095 [DEBUG] [Thread-197778] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:08:36.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:08:36.097 [DEBUG] [Thread-197778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:08:36.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:08:36.153 [DEBUG] [Thread-197778] [transport.py] [_log()] userauth is OK
2025-11-24T22:08:36.153 [DEBUG] [Thread-197778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:08:36.153 [DEBUG] [Thread-197778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:08:36.153 [DEBUG] [Thread-197778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:08:36.153 [DEBUG] [Thread-197778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:08:36.172 [INFO] [Thread-197778] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:08:36.173 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:08:36.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:08:37.100 [DEBUG] [Thread-197778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:08:37.100 [DEBUG] [Thread-197778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:08:37.148 [DEBUG] [Thread-197778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:08:37.148 [DEBUG] [Thread-197778] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:08:37.156 [DEBUG] [Thread-197778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:08:37.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:08:37.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-11-24T22:08:37.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-11-24T22:08:37.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:08:37.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:08:37.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:08:37.194 [DEBUG] [Thread-197778] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:08:39.693 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:08:39.695 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:08:49.310 [DEBUG] [Thread-197780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:09:04.445 [DEBUG] [Thread-197781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:09:07.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:09:07.202 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:09:07.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:09:08.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 8, 36), 16.8, 31.53, 0.0, 30.21, 15.01, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:09:08.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:08:36
2025-11-24T22:09:08.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:09:08.860 [DEBUG] [Thread-197782] [transport.py] [_log()] starting thread (client mode): 0xd0739330
2025-11-24T22:09:08.861 [DEBUG] [Thread-197782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:09:08.874 [DEBUG] [Thread-197782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:09:08.874 [INFO] [Thread-197782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:09:08.878 [DEBUG] [Thread-197782] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:09:08.879 [DEBUG] [Thread-197782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:09:08.879 [DEBUG] [Thread-197782] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:09:08.879 [DEBUG] [Thread-197782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:09:08.879 [DEBUG] [Thread-197782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:09:08.879 [DEBUG] [Thread-197782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:09:08.879 [DEBUG] [Thread-197782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:09:08.879 [DEBUG] [Thread-197782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:09:08.879 [DEBUG] [Thread-197782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:09:08.879 [DEBUG] [Thread-197782] [transport.py] [_log()] client lang: <none>
2025-11-24T22:09:08.880 [DEBUG] [Thread-197782] [transport.py] [_log()] server lang: <none>
2025-11-24T22:09:08.880 [DEBUG] [Thread-197782] [transport.py] [_log()] kex follows: False
2025-11-24T22:09:08.880 [DEBUG] [Thread-197782] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:09:08.880 [DEBUG] [Thread-197782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:09:08.881 [DEBUG] [Thread-197782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:09:08.881 [DEBUG] [Thread-197782] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:09:08.881 [DEBUG] [Thread-197782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:09:08.881 [DEBUG] [Thread-197782] [transport.py] [_log()] Compression: none
2025-11-24T22:09:08.881 [DEBUG] [Thread-197782] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:09:08.913 [DEBUG] [Thread-197782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:09:08.916 [DEBUG] [Thread-197782] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:09:08.918 [DEBUG] [Thread-197782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:09:08.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:09:08.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:09:08.922 [DEBUG] [Thread-197782] [transport.py] [_log()] userauth is OK
2025-11-24T22:09:08.923 [DEBUG] [Thread-197782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:09:08.923 [DEBUG] [Thread-197782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:09:08.923 [DEBUG] [Thread-197782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:09:08.923 [DEBUG] [Thread-197782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:09:08.949 [INFO] [Thread-197782] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:09:08.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:09:09.551 [DEBUG] [Thread-197782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:09:09.551 [DEBUG] [Thread-197782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:09:09.552 [DEBUG] [Thread-197782] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:09:09.592 [DEBUG] [Thread-197782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:09:09.592 [DEBUG] [Thread-197782] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:09:09.595 [DEBUG] [Thread-197782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:09:09.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:09:09.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:09:09.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:09:09.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:09:09.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:09:09.614 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:09:09.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:09:09.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:09:09.615 [DEBUG] [Thread-197782] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:09:09.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:09:09.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.839284 -999.00  +15.00  28.83     37   +0.40 1 1 1 1 1     0    0 15.15 36.39 ZNESW 23.4 28.8 161.6 34.0 15.1 -25.2 15.0 -24.8 14.8 -23.7 15.1 -24.6
2025-11-24T22:09:09.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:09:09.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:09:09.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.839284
2025-11-24T22:09:09.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:09:09.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:09:09.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:09:09.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:09:09.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:09:09.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:08:36', tmtdew=16.8, humidity=31.53, cloud=0.0, wind=30.21, temperature=15.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:08:36', seeing=0.52, atlas_timestamp='2025-11-24T20:08:34.138', atlas_cloud=1, atlas_rain=1, zp_data=[0.01624999999999943, 0.007250000000000867, 0.014750000000001151, 0.02049999999999841, -0.006499999999999062, 0.09025000000000105, 0.019000000000000128, 0.038750000000000284, 0.06449999999999889, 0.030000000000001137, 0.04224999999999923, 0.007999999999999119, 0.10099999999999909, 0.09224999999999994, 0.041999999999999815, 0.04299999999999926, 0.07525000000000048, 0.07850000000000001, 0.09249999999999936, 0.028249999999999886, 0.09499999999999886, 0.11574999999999847, 0.08825000000000038, 0.0547500000000003, 0.041999999999999815, 0.09350000000000058, 0.057749999999998636, 0.09050000000000047, 0.09699999999999953, 0.06900000000000084, 0.1070000000000011, 0.026000000000001577, -0.03325000000000067], zp_timestamp='2025-11-24T20:06:00')
2025-11-24T22:09:09.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:09:09.719 [DEBUG] [Thread-197785] [transport.py] [_log()] starting thread (client mode): 0xc9b82fe0
2025-11-24T22:09:09.719 [DEBUG] [Thread-197785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:09:09.734 [DEBUG] [Thread-197785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:09:09.734 [INFO] [Thread-197785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:09:09.741 [DEBUG] [Thread-197785] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] client lang: <none>
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] server lang: <none>
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] kex follows: False
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] Compression: none
2025-11-24T22:09:09.742 [DEBUG] [Thread-197785] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:09:09.798 [DEBUG] [Thread-197785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:09:09.799 [DEBUG] [Thread-197785] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:09:09.799 [DEBUG] [Thread-197785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:09:09.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:09:09.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:09:09.856 [DEBUG] [Thread-197785] [transport.py] [_log()] userauth is OK
2025-11-24T22:09:09.856 [DEBUG] [Thread-197785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:09:09.856 [DEBUG] [Thread-197785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:09:09.856 [DEBUG] [Thread-197785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:09:09.856 [DEBUG] [Thread-197785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:09:09.870 [INFO] [Thread-197785] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:09:09.870 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:09:09.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:09:10.725 [DEBUG] [Thread-197785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:09:10.725 [DEBUG] [Thread-197785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:09:10.773 [DEBUG] [Thread-197785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:09:10.773 [DEBUG] [Thread-197785] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:09:10.781 [DEBUG] [Thread-197785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:09:10.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:09:10.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-11-24T22:09:10.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-11-24T22:09:10.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:09:10.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:09:10.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:09:10.814 [DEBUG] [Thread-197785] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:09:19.508 [DEBUG] [Thread-197787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:09:34.417 [DEBUG] [Thread-197788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:09:34.637 [DEBUG] [Thread-197789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:09:39.908 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:09:39.910 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:09:40.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:09:40.817 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:09:40.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-11-24T22:09:41.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 9, 9), 16.82, 31.48, 0.0, 26.47, 15.0, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:09:41.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:09:09
2025-11-24T22:09:42.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:09:42.230 [DEBUG] [Thread-197790] [transport.py] [_log()] starting thread (client mode): 0xd317c190
2025-11-24T22:09:42.231 [DEBUG] [Thread-197790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:09:42.238 [DEBUG] [Thread-197790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:09:42.238 [INFO] [Thread-197790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] client lang: <none>
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] server lang: <none>
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] kex follows: False
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] Compression: none
2025-11-24T22:09:42.242 [DEBUG] [Thread-197790] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:09:42.263 [DEBUG] [Thread-197790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:09:42.264 [DEBUG] [Thread-197790] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:09:42.264 [DEBUG] [Thread-197790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:09:42.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:09:42.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:09:42.305 [DEBUG] [Thread-197790] [transport.py] [_log()] userauth is OK
2025-11-24T22:09:42.305 [DEBUG] [Thread-197790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:09:42.305 [DEBUG] [Thread-197790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:09:42.305 [DEBUG] [Thread-197790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:09:42.305 [DEBUG] [Thread-197790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:09:42.320 [INFO] [Thread-197790] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:09:42.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:09:42.961 [DEBUG] [Thread-197790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:09:42.961 [DEBUG] [Thread-197790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:09:42.961 [DEBUG] [Thread-197790] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:09:43.002 [DEBUG] [Thread-197790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:09:43.002 [DEBUG] [Thread-197790] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:09:43.004 [DEBUG] [Thread-197790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:09:43.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:09:43.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:09:43.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:09:43.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:09:43.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:09:43.024 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:09:43.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:09:43.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:09:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:09:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.839631 -999.00  +15.00  18.37     36   +0.40 1 1 1 1 1     0    0 15.22 41.30 ZNESW 23.3 18.4 163.2 25.5 15.2 -25.3 15.0 -24.8 14.8 -23.7 15.1 -24.5
2025-11-24T22:09:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:09:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:09:43.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.839631
2025-11-24T22:09:43.031 [DEBUG] [Thread-197790] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:09:43.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:09:43.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:09:43.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:09:43.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:09:43.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:09:43.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:09:09', tmtdew=16.82, humidity=31.48, cloud=0.0, wind=26.47, temperature=15.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:09:09', seeing=0.52, atlas_timestamp='2025-11-24T20:09:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[0.01624999999999943, 0.007250000000000867, 0.014750000000001151, 0.02049999999999841, -0.006499999999999062, 0.09025000000000105, 0.019000000000000128, 0.038750000000000284, 0.06449999999999889, 0.030000000000001137, 0.04224999999999923, 0.007999999999999119, 0.10099999999999909, 0.09224999999999994, 0.041999999999999815, 0.04299999999999926, 0.07525000000000048, 0.07850000000000001, 0.09249999999999936, 0.028249999999999886, 0.09499999999999886, 0.11574999999999847, 0.08825000000000038, 0.0547500000000003, 0.041999999999999815, 0.09350000000000058, 0.057749999999998636, 0.09050000000000047, 0.09699999999999953, 0.06900000000000084, 0.1070000000000011, 0.026000000000001577, -0.03325000000000067], zp_timestamp='2025-11-24T20:06:00')
2025-11-24T22:09:43.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:09:43.134 [DEBUG] [Thread-197793] [transport.py] [_log()] starting thread (client mode): 0xd317e050
2025-11-24T22:09:43.134 [DEBUG] [Thread-197793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:09:43.148 [DEBUG] [Thread-197793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:09:43.148 [INFO] [Thread-197793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:09:43.155 [DEBUG] [Thread-197793] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:09:43.155 [DEBUG] [Thread-197793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] client lang: <none>
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] server lang: <none>
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] kex follows: False
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] Compression: none
2025-11-24T22:09:43.156 [DEBUG] [Thread-197793] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:09:43.211 [DEBUG] [Thread-197793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:09:43.211 [DEBUG] [Thread-197793] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:09:43.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:09:43.211 [DEBUG] [Thread-197793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:09:43.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:09:43.268 [DEBUG] [Thread-197793] [transport.py] [_log()] userauth is OK
2025-11-24T22:09:43.268 [DEBUG] [Thread-197793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:09:43.268 [DEBUG] [Thread-197793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:09:43.268 [DEBUG] [Thread-197793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:09:43.268 [DEBUG] [Thread-197793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:09:43.282 [INFO] [Thread-197793] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:09:43.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:09:43.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:09:44.097 [DEBUG] [Thread-197793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:09:44.097 [DEBUG] [Thread-197793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:09:44.145 [DEBUG] [Thread-197793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:09:44.145 [DEBUG] [Thread-197793] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:09:44.153 [DEBUG] [Thread-197793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:09:44.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:09:44.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:09:44.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:09:44.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:09:44.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:09:44.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:09:44.186 [DEBUG] [Thread-197793] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:09:49.680 [DEBUG] [Thread-197795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:10:04.730 [DEBUG] [Thread-197796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:10:14.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:10:14.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:10:14.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-11-24T22:10:15.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 9, 42), 16.8, 31.51, 0.0, 29.18, 14.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:10:15.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:09:42
2025-11-24T22:10:15.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:10:15.527 [DEBUG] [Thread-197797] [transport.py] [_log()] starting thread (client mode): 0xd317f100
2025-11-24T22:10:15.528 [DEBUG] [Thread-197797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:10:15.543 [DEBUG] [Thread-197797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:10:15.543 [INFO] [Thread-197797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] client lang: <none>
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] server lang: <none>
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] kex follows: False
2025-11-24T22:10:15.547 [DEBUG] [Thread-197797] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:10:15.548 [DEBUG] [Thread-197797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:10:15.548 [DEBUG] [Thread-197797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:10:15.548 [DEBUG] [Thread-197797] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:10:15.548 [DEBUG] [Thread-197797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:10:15.548 [DEBUG] [Thread-197797] [transport.py] [_log()] Compression: none
2025-11-24T22:10:15.548 [DEBUG] [Thread-197797] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:10:15.578 [DEBUG] [Thread-197797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:10:15.581 [DEBUG] [Thread-197797] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:10:15.582 [DEBUG] [Thread-197797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:10:15.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:10:15.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:10:15.621 [DEBUG] [Thread-197797] [transport.py] [_log()] userauth is OK
2025-11-24T22:10:15.621 [DEBUG] [Thread-197797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:10:15.621 [DEBUG] [Thread-197797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:10:15.621 [DEBUG] [Thread-197797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:10:15.621 [DEBUG] [Thread-197797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:10:15.652 [INFO] [Thread-197797] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:10:15.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:10:16.399 [DEBUG] [Thread-197797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:10:16.399 [DEBUG] [Thread-197797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:10:16.399 [DEBUG] [Thread-197797] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:10:16.440 [DEBUG] [Thread-197797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:10:16.440 [DEBUG] [Thread-197797] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:10:16.442 [DEBUG] [Thread-197797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:10:16.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:10:16.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:10:16.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:10:16.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:10:16.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:10:16.465 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:10:16.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:10:16.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:10:16.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:10:16.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.839978 -999.00  +14.90  26.52     37   +0.40 1 1 1 1 1     0    0 15.55 43.62 ZNESW 20.7 26.5 168.8 33.2 15.2 -25.4 15.0 -24.8 14.7 -23.6 15.1 -24.7
2025-11-24T22:10:16.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:10:16.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:10:16.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.839978
2025-11-24T22:10:16.472 [DEBUG] [Thread-197797] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:10:16.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:10:16.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:10:16.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:10:16.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:10:16.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:10:16.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:09:42', tmtdew=16.8, humidity=31.51, cloud=0.0, wind=29.18, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:09:42', seeing=0.49, atlas_timestamp='2025-11-24T20:09:34.099', atlas_cloud=1, atlas_rain=1, zp_data=[0.01624999999999943, 0.007250000000000867, 0.014750000000001151, 0.02049999999999841, -0.006499999999999062, 0.09025000000000105, 0.019000000000000128, 0.038750000000000284, 0.06449999999999889, 0.030000000000001137, 0.04224999999999923, 0.007999999999999119, 0.10099999999999909, 0.09224999999999994, 0.041999999999999815, 0.04299999999999926, 0.07525000000000048, 0.07850000000000001, 0.09249999999999936, 0.028249999999999886, 0.09499999999999886, 0.11574999999999847, 0.08825000000000038, 0.0547500000000003, 0.041999999999999815, 0.09350000000000058, 0.057749999999998636, 0.09050000000000047, 0.09699999999999953, 0.06900000000000084, 0.1070000000000011, 0.026000000000001577, -0.03325000000000067], zp_timestamp='2025-11-24T20:06:00')
2025-11-24T22:10:16.556 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:10:16.567 [DEBUG] [Thread-197800] [transport.py] [_log()] starting thread (client mode): 0xd31f7490
2025-11-24T22:10:16.568 [DEBUG] [Thread-197800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:10:16.582 [DEBUG] [Thread-197800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:10:16.582 [INFO] [Thread-197800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:10:16.589 [DEBUG] [Thread-197800] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] client lang: <none>
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] server lang: <none>
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] kex follows: False
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] Compression: none
2025-11-24T22:10:16.590 [DEBUG] [Thread-197800] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:10:16.647 [DEBUG] [Thread-197800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:10:16.647 [DEBUG] [Thread-197800] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:10:16.647 [DEBUG] [Thread-197800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:10:16.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:10:16.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:10:16.704 [DEBUG] [Thread-197800] [transport.py] [_log()] userauth is OK
2025-11-24T22:10:16.704 [DEBUG] [Thread-197800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:10:16.704 [DEBUG] [Thread-197800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:10:16.704 [DEBUG] [Thread-197800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:10:16.704 [DEBUG] [Thread-197800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:10:16.719 [INFO] [Thread-197800] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:10:16.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:10:16.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:10:17.573 [DEBUG] [Thread-197800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:10:17.573 [DEBUG] [Thread-197800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:10:17.622 [DEBUG] [Thread-197800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:10:17.623 [DEBUG] [Thread-197800] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:10:17.631 [DEBUG] [Thread-197800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:10:17.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:10:17.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:10:17.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-11-24T22:10:17.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:10:17.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:10:17.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:10:17.663 [DEBUG] [Thread-197800] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:10:19.766 [DEBUG] [Thread-197802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:10:34.789 [DEBUG] [Thread-197803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:10:34.873 [DEBUG] [Thread-197804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:10:40.112 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:10:40.113 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:10:47.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:10:47.699 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:10:47.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:10:48.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 10, 14), 16.76, 31.59, 0.0, 30.38, 14.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:10:48.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:10:14
2025-11-24T22:10:48.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:10:48.922 [DEBUG] [Thread-197805] [transport.py] [_log()] starting thread (client mode): 0xd07863e0
2025-11-24T22:10:48.923 [DEBUG] [Thread-197805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:10:48.931 [DEBUG] [Thread-197805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:10:48.931 [INFO] [Thread-197805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] client lang: <none>
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] server lang: <none>
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] kex follows: False
2025-11-24T22:10:48.937 [DEBUG] [Thread-197805] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:10:48.938 [DEBUG] [Thread-197805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:10:48.938 [DEBUG] [Thread-197805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:10:48.938 [DEBUG] [Thread-197805] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:10:48.938 [DEBUG] [Thread-197805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:10:48.938 [DEBUG] [Thread-197805] [transport.py] [_log()] Compression: none
2025-11-24T22:10:48.938 [DEBUG] [Thread-197805] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:10:48.967 [DEBUG] [Thread-197805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:10:48.970 [DEBUG] [Thread-197805] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:10:48.972 [DEBUG] [Thread-197805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:10:48.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:10:48.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:10:48.975 [DEBUG] [Thread-197805] [transport.py] [_log()] userauth is OK
2025-11-24T22:10:48.975 [DEBUG] [Thread-197805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:10:48.975 [DEBUG] [Thread-197805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:10:48.975 [DEBUG] [Thread-197805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:10:48.975 [DEBUG] [Thread-197805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:10:48.995 [INFO] [Thread-197805] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:10:48.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:10:49.562 [DEBUG] [Thread-197805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:10:49.562 [DEBUG] [Thread-197805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:10:49.563 [DEBUG] [Thread-197805] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:10:49.603 [DEBUG] [Thread-197805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:10:49.603 [DEBUG] [Thread-197805] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:10:49.606 [DEBUG] [Thread-197805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:10:49.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:10:49.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:10:49.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:10:49.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:10:49.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:10:49.629 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:10:49.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:10:49.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:10:49.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:10:49.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.840325 -999.00  +14.90  26.73     37   +0.30 1 1 1 1 1     0    0 15.22 43.32 ZNESW 29.8 26.7 160.2 32.1 15.1 -25.2 14.9 -24.7 14.8 -23.6 15.0 -24.5
2025-11-24T22:10:49.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:10:49.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:10:49.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.840325
2025-11-24T22:10:49.637 [DEBUG] [Thread-197805] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:10:49.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:10:49.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:10:49.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:10:49.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:10:49.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:10:49.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:10:14', tmtdew=16.76, humidity=31.59, cloud=0.0, wind=30.38, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:10:14', seeing=0.51, atlas_timestamp='2025-11-24T20:10:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:09:00')
2025-11-24T22:10:49.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:10:49.747 [DEBUG] [Thread-197808] [transport.py] [_log()] starting thread (client mode): 0xc9b819c0
2025-11-24T22:10:49.747 [DEBUG] [Thread-197808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:10:49.766 [DEBUG] [Thread-197808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:10:49.766 [INFO] [Thread-197808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] client lang: <none>
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] server lang: <none>
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] kex follows: False
2025-11-24T22:10:49.773 [DEBUG] [Thread-197808] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:10:49.774 [DEBUG] [Thread-197808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:10:49.774 [DEBUG] [Thread-197808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:10:49.774 [DEBUG] [Thread-197808] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:10:49.774 [DEBUG] [Thread-197808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:10:49.774 [DEBUG] [Thread-197808] [transport.py] [_log()] Compression: none
2025-11-24T22:10:49.774 [DEBUG] [Thread-197808] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:10:49.831 [DEBUG] [Thread-197808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:10:49.832 [DEBUG] [Thread-197808] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:10:49.832 [DEBUG] [Thread-197808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:10:49.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:10:49.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:10:49.888 [DEBUG] [Thread-197808] [transport.py] [_log()] userauth is OK
2025-11-24T22:10:49.888 [DEBUG] [Thread-197808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:10:49.888 [DEBUG] [Thread-197808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:10:49.888 [DEBUG] [Thread-197808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:10:49.888 [DEBUG] [Thread-197808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:10:49.902 [INFO] [Thread-197808] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:10:49.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:10:49.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:10:49.926 [DEBUG] [Thread-197810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:10:50.729 [DEBUG] [Thread-197808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:10:50.730 [DEBUG] [Thread-197808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:10:50.778 [DEBUG] [Thread-197808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:10:50.778 [DEBUG] [Thread-197808] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:10:50.787 [DEBUG] [Thread-197808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:10:50.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:10:50.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:10:50.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-11-24T22:10:50.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:10:50.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:10:50.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:10:50.835 [DEBUG] [Thread-197808] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:11:05.059 [DEBUG] [Thread-197811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:11:20.105 [DEBUG] [Thread-197812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:11:20.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:11:20.858 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:11:20.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:11:21.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 10, 47), 16.81, 31.59, 0.0, 29.71, 14.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:11:21.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:10:47
2025-11-24T22:11:21.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:11:22.049 [DEBUG] [Thread-197813] [transport.py] [_log()] starting thread (client mode): 0xd318b9a0
2025-11-24T22:11:22.049 [DEBUG] [Thread-197813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:11:22.064 [DEBUG] [Thread-197813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:11:22.064 [INFO] [Thread-197813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:11:22.068 [DEBUG] [Thread-197813] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:11:22.068 [DEBUG] [Thread-197813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:11:22.068 [DEBUG] [Thread-197813] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] client lang: <none>
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] server lang: <none>
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] kex follows: False
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:11:22.069 [DEBUG] [Thread-197813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:11:22.070 [DEBUG] [Thread-197813] [transport.py] [_log()] Compression: none
2025-11-24T22:11:22.070 [DEBUG] [Thread-197813] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:11:22.094 [DEBUG] [Thread-197813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:11:22.097 [DEBUG] [Thread-197813] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:11:22.098 [DEBUG] [Thread-197813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:11:22.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:11:22.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:11:22.100 [DEBUG] [Thread-197813] [transport.py] [_log()] userauth is OK
2025-11-24T22:11:22.101 [DEBUG] [Thread-197813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:11:22.101 [DEBUG] [Thread-197813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:11:22.101 [DEBUG] [Thread-197813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:11:22.101 [DEBUG] [Thread-197813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:11:22.132 [INFO] [Thread-197813] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:11:22.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:11:22.779 [DEBUG] [Thread-197813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:11:22.780 [DEBUG] [Thread-197813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:11:22.780 [DEBUG] [Thread-197813] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:11:22.820 [DEBUG] [Thread-197813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:11:22.820 [DEBUG] [Thread-197813] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:11:22.822 [DEBUG] [Thread-197813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:11:22.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:11:22.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:11:22.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:11:22.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:11:22.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:11:22.843 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:11:22.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:11:22.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:11:22.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:11:22.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.840672 -999.00  +14.90  21.38     36   +0.30 1 1 1 1 1     0    0 15.59 46.48 ZNESW 21.8 21.4 162.2 38.7 15.1 -25.1 15.0 -24.7 14.8 -23.5 15.0 -24.7
2025-11-24T22:11:22.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:11:22.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:11:22.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.840672
2025-11-24T22:11:22.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:11:22.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:11:22.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:11:22.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:11:22.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:11:22.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:10:47', tmtdew=16.81, humidity=31.59, cloud=0.0, wind=29.71, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:11:20', seeing=0.53, atlas_timestamp='2025-11-24T20:10:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:09:00')
2025-11-24T22:11:22.851 [DEBUG] [Thread-197813] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:11:22.928 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:11:22.941 [DEBUG] [Thread-197816] [transport.py] [_log()] starting thread (client mode): 0xd318bc40
2025-11-24T22:11:22.942 [DEBUG] [Thread-197816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:11:22.956 [DEBUG] [Thread-197816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:11:22.956 [INFO] [Thread-197816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] client lang: <none>
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] server lang: <none>
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] kex follows: False
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] Compression: none
2025-11-24T22:11:22.964 [DEBUG] [Thread-197816] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:11:23.019 [DEBUG] [Thread-197816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:11:23.019 [DEBUG] [Thread-197816] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:11:23.019 [DEBUG] [Thread-197816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:11:23.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:11:23.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:11:23.076 [DEBUG] [Thread-197816] [transport.py] [_log()] userauth is OK
2025-11-24T22:11:23.076 [DEBUG] [Thread-197816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:11:23.076 [DEBUG] [Thread-197816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:11:23.076 [DEBUG] [Thread-197816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:11:23.076 [DEBUG] [Thread-197816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:11:23.090 [INFO] [Thread-197816] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:11:23.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:11:23.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:11:23.932 [DEBUG] [Thread-197816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:11:23.932 [DEBUG] [Thread-197816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:11:23.980 [DEBUG] [Thread-197816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:11:23.980 [DEBUG] [Thread-197816] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:11:23.988 [DEBUG] [Thread-197816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:11:23.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:11:23.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-11-24T22:11:24.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-11-24T22:11:24.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:11:24.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:11:24.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:11:24.023 [DEBUG] [Thread-197816] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:11:35.019 [DEBUG] [Thread-197818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:11:35.146 [DEBUG] [Thread-197819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:11:40.329 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:11:40.331 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:11:50.263 [DEBUG] [Thread-197820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:11:54.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:11:54.046 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:11:54.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-11-24T22:11:55.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 11, 20), 16.81, 31.59, 0.0, 27.54, 14.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:11:55.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:11:20
2025-11-24T22:11:55.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:11:55.353 [DEBUG] [Thread-197821] [transport.py] [_log()] starting thread (client mode): 0xd317dd80
2025-11-24T22:11:55.353 [DEBUG] [Thread-197821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:11:55.369 [DEBUG] [Thread-197821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:11:55.369 [INFO] [Thread-197821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] client lang: <none>
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] server lang: <none>
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] kex follows: False
2025-11-24T22:11:55.373 [DEBUG] [Thread-197821] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:11:55.374 [DEBUG] [Thread-197821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:11:55.374 [DEBUG] [Thread-197821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:11:55.374 [DEBUG] [Thread-197821] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:11:55.374 [DEBUG] [Thread-197821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:11:55.374 [DEBUG] [Thread-197821] [transport.py] [_log()] Compression: none
2025-11-24T22:11:55.374 [DEBUG] [Thread-197821] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:11:55.402 [DEBUG] [Thread-197821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:11:55.405 [DEBUG] [Thread-197821] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:11:55.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:11:55.408 [DEBUG] [Thread-197821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:11:55.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:11:55.410 [DEBUG] [Thread-197821] [transport.py] [_log()] userauth is OK
2025-11-24T22:11:55.410 [DEBUG] [Thread-197821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:11:55.410 [DEBUG] [Thread-197821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:11:55.410 [DEBUG] [Thread-197821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:11:55.410 [DEBUG] [Thread-197821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:11:55.423 [INFO] [Thread-197821] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:11:55.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:11:56.057 [DEBUG] [Thread-197821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:11:56.058 [DEBUG] [Thread-197821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:11:56.059 [DEBUG] [Thread-197821] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:11:56.098 [DEBUG] [Thread-197821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:11:56.098 [DEBUG] [Thread-197821] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:11:56.101 [DEBUG] [Thread-197821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:11:56.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:11:56.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:11:56.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:11:56.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:11:56.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:11:56.116 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:11:56.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:11:56.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:11:56.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:11:56.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.841020 -999.00  +14.90  23.90     36   +0.30 1 1 1 1 1     0    0 15.24 45.56 ZNESW 20.8 23.9 166.6 30.7 15.1 -25.2 14.9 -24.7 14.7 -23.6 15.0 -24.4
2025-11-24T22:11:56.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:11:56.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:11:56.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.841020
2025-11-24T22:11:56.123 [DEBUG] [Thread-197821] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:11:56.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:11:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:11:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:11:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:11:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:11:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:11:20', tmtdew=16.81, humidity=31.59, cloud=0.0, wind=27.54, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:11:53', seeing=0.5, atlas_timestamp='2025-11-24T20:11:04.128', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:09:00')
2025-11-24T22:11: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-11-24T22:11:56.224 [DEBUG] [Thread-197824] [transport.py] [_log()] starting thread (client mode): 0xd317f4f0
2025-11-24T22:11:56.224 [DEBUG] [Thread-197824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:11:56.240 [DEBUG] [Thread-197824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:11:56.240 [INFO] [Thread-197824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:11:56.247 [DEBUG] [Thread-197824] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:11:56.247 [DEBUG] [Thread-197824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:11:56.247 [DEBUG] [Thread-197824] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] client lang: <none>
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] server lang: <none>
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] kex follows: False
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] Compression: none
2025-11-24T22:11:56.248 [DEBUG] [Thread-197824] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:11:56.304 [DEBUG] [Thread-197824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:11:56.305 [DEBUG] [Thread-197824] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:11:56.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:11:56.305 [DEBUG] [Thread-197824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:11:56.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:11:56.360 [DEBUG] [Thread-197824] [transport.py] [_log()] userauth is OK
2025-11-24T22:11:56.361 [DEBUG] [Thread-197824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:11:56.361 [DEBUG] [Thread-197824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:11:56.361 [DEBUG] [Thread-197824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:11:56.361 [DEBUG] [Thread-197824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:11:56.380 [INFO] [Thread-197824] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:11:56.380 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:11:56.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:11:57.234 [DEBUG] [Thread-197824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:11:57.234 [DEBUG] [Thread-197824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:11:57.282 [DEBUG] [Thread-197824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:11:57.282 [DEBUG] [Thread-197824] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:11:57.290 [DEBUG] [Thread-197824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:11:57.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:11:57.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-11-24T22:11: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') -> 00000000
2025-11-24T22:11:57.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:11:57.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:11:57.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:11:57.332 [DEBUG] [Thread-197824] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:12:05.295 [DEBUG] [Thread-197826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:12:20.368 [DEBUG] [Thread-197827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:12:27.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:12:27.356 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:12:27.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:12:28.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 11, 53), 16.79, 31.63, 0.0, 26.84, 14.91, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:12:28.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:11:53
2025-11-24T22:12:28.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:12:28.708 [DEBUG] [Thread-197828] [transport.py] [_log()] starting thread (client mode): 0xd317eec0
2025-11-24T22:12:28.709 [DEBUG] [Thread-197828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:12:28.710 [DEBUG] [Thread-197828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:12:28.710 [INFO] [Thread-197828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] client lang: <none>
2025-11-24T22:12:28.714 [DEBUG] [Thread-197828] [transport.py] [_log()] server lang: <none>
2025-11-24T22:12:28.715 [DEBUG] [Thread-197828] [transport.py] [_log()] kex follows: False
2025-11-24T22:12:28.715 [DEBUG] [Thread-197828] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:12:28.715 [DEBUG] [Thread-197828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:12:28.715 [DEBUG] [Thread-197828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:12:28.716 [DEBUG] [Thread-197828] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:12:28.716 [DEBUG] [Thread-197828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:12:28.716 [DEBUG] [Thread-197828] [transport.py] [_log()] Compression: none
2025-11-24T22:12:28.716 [DEBUG] [Thread-197828] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:12:28.748 [DEBUG] [Thread-197828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:12:28.751 [DEBUG] [Thread-197828] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:12:28.752 [DEBUG] [Thread-197828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:12:28.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:12:28.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:12:28.756 [DEBUG] [Thread-197828] [transport.py] [_log()] userauth is OK
2025-11-24T22:12:28.756 [DEBUG] [Thread-197828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:12:28.756 [DEBUG] [Thread-197828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:12:28.756 [DEBUG] [Thread-197828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:12:28.756 [DEBUG] [Thread-197828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:12:28.773 [INFO] [Thread-197828] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:12:28.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:12:29.409 [DEBUG] [Thread-197828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:12:29.409 [DEBUG] [Thread-197828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:12:29.409 [DEBUG] [Thread-197828] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:12:29.450 [DEBUG] [Thread-197828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:12:29.450 [DEBUG] [Thread-197828] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:12:29.452 [DEBUG] [Thread-197828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:12:29.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:12:29.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:12:29.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:12:29.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:12:29.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:12:29.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:12:29.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:12:29.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:12:29.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:12:29.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.841367 -999.00  +14.90  19.76     36   +0.30 1 1 1 1 1     0    0 15.51 47.54 ZNESW 22.3 19.8 155.2 34.2 15.1 -25.2 15.0 -24.8 14.7 -23.4 15.0 -24.4
2025-11-24T22:12:29.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:12:29.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:12:29.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.841367
2025-11-24T22:12:29.483 [DEBUG] [Thread-197828] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:12:29.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:12:29.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:12:29.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:12:29.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:12:29.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:12:29.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:11:53', tmtdew=16.79, humidity=31.63, cloud=0.0, wind=26.84, temperature=14.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:12:26', seeing=0.52, atlas_timestamp='2025-11-24T20:11:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:09:00')
2025-11-24T22:12:29.585 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:12:29.597 [DEBUG] [Thread-197831] [transport.py] [_log()] starting thread (client mode): 0xd07861d0
2025-11-24T22:12:29.598 [DEBUG] [Thread-197831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:12:29.619 [DEBUG] [Thread-197831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:12:29.619 [INFO] [Thread-197831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:12:29.627 [DEBUG] [Thread-197831] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:12:29.627 [DEBUG] [Thread-197831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:12:29.627 [DEBUG] [Thread-197831] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] client lang: <none>
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] server lang: <none>
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] kex follows: False
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:12:29.628 [DEBUG] [Thread-197831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:12:29.629 [DEBUG] [Thread-197831] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:12:29.629 [DEBUG] [Thread-197831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:12:29.629 [DEBUG] [Thread-197831] [transport.py] [_log()] Compression: none
2025-11-24T22:12:29.629 [DEBUG] [Thread-197831] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:12:29.685 [DEBUG] [Thread-197831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:12:29.685 [DEBUG] [Thread-197831] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:12:29.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:12:29.686 [DEBUG] [Thread-197831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:12:29.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:12:29.745 [DEBUG] [Thread-197831] [transport.py] [_log()] userauth is OK
2025-11-24T22:12:29.745 [DEBUG] [Thread-197831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:12:29.745 [DEBUG] [Thread-197831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:12:29.745 [DEBUG] [Thread-197831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:12:29.746 [DEBUG] [Thread-197831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:12:29.765 [INFO] [Thread-197831] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:12:29.765 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:12:29.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:12:30.602 [DEBUG] [Thread-197831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:12:30.602 [DEBUG] [Thread-197831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:12:30.650 [DEBUG] [Thread-197831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:12:30.650 [DEBUG] [Thread-197831] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:12:30.658 [DEBUG] [Thread-197831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:12:30.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:12:30.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-11-24T22:12:30.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:12:30.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:12:30.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:12:30.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:12:30.702 [DEBUG] [Thread-197831] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:12:35.357 [DEBUG] [Thread-197833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:12:35.414 [DEBUG] [Thread-197834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:12:40.535 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:12:40.537 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:12:50.551 [DEBUG] [Thread-197835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:13:00.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:13:00.725 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:13:00.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-11-24T22:13:01.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 12, 26), 16.79, 31.64, 0.0, 28.69, 14.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:13:01.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:12:26
2025-11-24T22:13:01.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:13:02.161 [DEBUG] [Thread-197836] [transport.py] [_log()] starting thread (client mode): 0xd317c820
2025-11-24T22:13:02.162 [DEBUG] [Thread-197836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:13:02.181 [DEBUG] [Thread-197836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:13:02.181 [INFO] [Thread-197836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] client lang: <none>
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] server lang: <none>
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] kex follows: False
2025-11-24T22:13:02.186 [DEBUG] [Thread-197836] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:13:02.187 [DEBUG] [Thread-197836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:13:02.187 [DEBUG] [Thread-197836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:13:02.187 [DEBUG] [Thread-197836] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:13:02.187 [DEBUG] [Thread-197836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:13:02.187 [DEBUG] [Thread-197836] [transport.py] [_log()] Compression: none
2025-11-24T22:13:02.187 [DEBUG] [Thread-197836] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:13:02.209 [DEBUG] [Thread-197836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:13:02.213 [DEBUG] [Thread-197836] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:13:02.214 [DEBUG] [Thread-197836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:13:02.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:13:02.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:13:02.218 [DEBUG] [Thread-197836] [transport.py] [_log()] userauth is OK
2025-11-24T22:13:02.218 [DEBUG] [Thread-197836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:13:02.218 [DEBUG] [Thread-197836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:13:02.218 [DEBUG] [Thread-197836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:13:02.218 [DEBUG] [Thread-197836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:13:02.236 [INFO] [Thread-197836] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:13:02.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:13:02.881 [DEBUG] [Thread-197836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:13:02.882 [DEBUG] [Thread-197836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:13:02.884 [DEBUG] [Thread-197836] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:13:02.922 [DEBUG] [Thread-197836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:13:02.922 [DEBUG] [Thread-197836] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:13:02.926 [DEBUG] [Thread-197836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:13:02.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:13:02.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:13:02.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:13:02.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:13:02.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:13:02.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:13:02.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:13:02.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:13:02.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:13:02.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.842061 -999.00  +14.90  20.18     36   +0.30 1 1 1 1 1     0    0 15.86 47.12 ZNESW 23.1 20.2 155.6 30.1 15.1 -25.2 14.9 -24.8 14.7 -23.5 15.0 -24.5
2025-11-24T22:13:02.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:13:02.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:13:02.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.842061
2025-11-24T22:13:02.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:13:02.958 [DEBUG] [Thread-197836] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:13:02.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:13:02.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:13:02.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:13:02.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:13:02.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:12:26', tmtdew=16.79, humidity=31.64, cloud=0.0, wind=28.69, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:12:59', seeing=0.53, atlas_timestamp='2025-11-24T20:12:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:09:00')
2025-11-24T22:13:03.038 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:13:03.050 [DEBUG] [Thread-197839] [transport.py] [_log()] starting thread (client mode): 0xd317f5e0
2025-11-24T22:13:03.050 [DEBUG] [Thread-197839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:13:03.065 [DEBUG] [Thread-197839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:13:03.065 [INFO] [Thread-197839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:13:03.072 [DEBUG] [Thread-197839] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] client lang: <none>
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] server lang: <none>
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] kex follows: False
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:13:03.073 [DEBUG] [Thread-197839] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:13:03.074 [DEBUG] [Thread-197839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:13:03.074 [DEBUG] [Thread-197839] [transport.py] [_log()] Compression: none
2025-11-24T22:13:03.074 [DEBUG] [Thread-197839] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:13:03.137 [DEBUG] [Thread-197839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:13:03.138 [DEBUG] [Thread-197839] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:13:03.138 [DEBUG] [Thread-197839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:13:03.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:13:03.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:13:03.196 [DEBUG] [Thread-197839] [transport.py] [_log()] userauth is OK
2025-11-24T22:13:03.196 [DEBUG] [Thread-197839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:13:03.196 [DEBUG] [Thread-197839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:13:03.196 [DEBUG] [Thread-197839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:13:03.196 [DEBUG] [Thread-197839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:13:03.210 [INFO] [Thread-197839] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:13:03.210 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:13:03.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:13:04.020 [DEBUG] [Thread-197839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:13:04.024 [DEBUG] [Thread-197839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:13:04.069 [DEBUG] [Thread-197839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:13:04.069 [DEBUG] [Thread-197839] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:13:04.078 [DEBUG] [Thread-197839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:13:04.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:13:04.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-11-24T22:13: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') -> 00000000
2025-11-24T22:13:04.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:13:04.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:13:04.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:13:04.116 [DEBUG] [Thread-197839] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:13:05.603 [DEBUG] [Thread-197841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:13:20.750 [DEBUG] [Thread-197842 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:13:34.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:13:34.163 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:13:34.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-11-24T22:13:35.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 12, 59), 16.82, 31.06, 0.0, 30.37, 14.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:13:35.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:12:59
2025-11-24T22:13:35.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:13:35.514 [DEBUG] [Thread-197843] [transport.py] [_log()] starting thread (client mode): 0xd318bc40
2025-11-24T22:13:35.515 [DEBUG] [Thread-197843] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:13:35.521 [DEBUG] [Thread-197843] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:13:35.522 [INFO] [Thread-197843] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] client lang: <none>
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] server lang: <none>
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] kex follows: False
2025-11-24T22:13:35.527 [DEBUG] [Thread-197843] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:13:35.528 [DEBUG] [Thread-197843] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:13:35.528 [DEBUG] [Thread-197843] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:13:35.528 [DEBUG] [Thread-197843] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:13:35.528 [DEBUG] [Thread-197843] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:13:35.528 [DEBUG] [Thread-197843] [transport.py] [_log()] Compression: none
2025-11-24T22:13:35.528 [DEBUG] [Thread-197843] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:13:35.565 [DEBUG] [Thread-197843] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:13:35.569 [DEBUG] [Thread-197843] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:13:35.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:13:35.573 [DEBUG] [Thread-197843] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:13:35.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:13:35.575 [DEBUG] [Thread-197843] [transport.py] [_log()] userauth is OK
2025-11-24T22:13:35.575 [DEBUG] [Thread-197843] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:13:35.575 [DEBUG] [Thread-197843] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:13:35.575 [DEBUG] [Thread-197843] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:13:35.575 [DEBUG] [Thread-197843] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:13:35.607 [INFO] [Thread-197843] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:13:35.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:13:35.638 [DEBUG] [Thread-197845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:13:35.811 [DEBUG] [Thread-197846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:13:36.180 [DEBUG] [Thread-197843] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:13:36.180 [DEBUG] [Thread-197843] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:13:36.183 [DEBUG] [Thread-197843] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:13:36.220 [DEBUG] [Thread-197843] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:13:36.221 [DEBUG] [Thread-197843] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:13:36.224 [DEBUG] [Thread-197843] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:13:36.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:13:36.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:13:36.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:13:36.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:13:36.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:13:36.248 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:13:36.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:13:36.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:13:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:13:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.842408 -999.00  +14.90  16.82     36   +0.30 1 1 1 1 1     0    0 15.48 43.07 ZNESW 25.8 16.8 152.1 27.2 15.1 -25.3 14.9 -24.9 14.7 -23.6 15.0 -24.4
2025-11-24T22:13:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:13:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:13:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.842408
2025-11-24T22:13:36.256 [DEBUG] [Thread-197843] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:13:36.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:13:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:13:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:13:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:13:36.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:13:36.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:12:59', tmtdew=16.82, humidity=31.06, cloud=0.0, wind=30.37, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:13:32', seeing=0.59, atlas_timestamp='2025-11-24T20:13:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:11:00')
2025-11-24T22:13:36.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:13:36.367 [DEBUG] [Thread-197848] [transport.py] [_log()] starting thread (client mode): 0xd317e4a0
2025-11-24T22:13:36.367 [DEBUG] [Thread-197848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:13:36.384 [DEBUG] [Thread-197848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:13:36.384 [INFO] [Thread-197848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] client lang: <none>
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] server lang: <none>
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] kex follows: False
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] Compression: none
2025-11-24T22:13:36.392 [DEBUG] [Thread-197848] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:13:36.451 [DEBUG] [Thread-197848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:13:36.452 [DEBUG] [Thread-197848] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:13:36.452 [DEBUG] [Thread-197848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:13:36.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:13:36.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:13:36.509 [DEBUG] [Thread-197848] [transport.py] [_log()] userauth is OK
2025-11-24T22:13:36.509 [DEBUG] [Thread-197848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:13:36.509 [DEBUG] [Thread-197848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:13:36.509 [DEBUG] [Thread-197848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:13:36.509 [DEBUG] [Thread-197848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:13:36.523 [INFO] [Thread-197848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:13:36.523 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:13:36.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:13:37.344 [DEBUG] [Thread-197848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:13:37.344 [DEBUG] [Thread-197848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:13:37.391 [DEBUG] [Thread-197848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:13:37.392 [DEBUG] [Thread-197848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:13:37.401 [DEBUG] [Thread-197848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:13:37.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:13:37.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-11-24T22:13:37.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-11-24T22:13:37.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:13:37.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:13:37.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:13:37.437 [DEBUG] [Thread-197848] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:13:40.740 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:13:40.742 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:13:50.863 [DEBUG] [Thread-197850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:14:05.983 [DEBUG] [Thread-197851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:14:07.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:14:07.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:14:07.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-11-24T22:14:08.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 13, 32), 16.85, 31.01, 0.0, 31.92, 14.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:14:08.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:13:32
2025-11-24T22:14:08.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:14:08.686 [DEBUG] [Thread-197852] [transport.py] [_log()] starting thread (client mode): 0xd317f6d0
2025-11-24T22:14:08.687 [DEBUG] [Thread-197852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:14:08.700 [DEBUG] [Thread-197852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:14:08.701 [INFO] [Thread-197852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:14:08.705 [DEBUG] [Thread-197852] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] client lang: <none>
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] server lang: <none>
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] kex follows: False
2025-11-24T22:14:08.706 [DEBUG] [Thread-197852] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:14:08.707 [DEBUG] [Thread-197852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:14:08.707 [DEBUG] [Thread-197852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:14:08.707 [DEBUG] [Thread-197852] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:14:08.707 [DEBUG] [Thread-197852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:14:08.707 [DEBUG] [Thread-197852] [transport.py] [_log()] Compression: none
2025-11-24T22:14:08.707 [DEBUG] [Thread-197852] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:14:08.731 [DEBUG] [Thread-197852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:14:08.734 [DEBUG] [Thread-197852] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:14:08.735 [DEBUG] [Thread-197852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:14:08.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:14:08.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:14:08.740 [DEBUG] [Thread-197852] [transport.py] [_log()] userauth is OK
2025-11-24T22:14:08.740 [DEBUG] [Thread-197852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:14:08.740 [DEBUG] [Thread-197852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:14:08.740 [DEBUG] [Thread-197852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:14:08.740 [DEBUG] [Thread-197852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:14:08.767 [INFO] [Thread-197852] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:14:08.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:14:09.369 [DEBUG] [Thread-197852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:14:09.369 [DEBUG] [Thread-197852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:14:09.370 [DEBUG] [Thread-197852] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:14:09.410 [DEBUG] [Thread-197852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:14:09.410 [DEBUG] [Thread-197852] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:14:09.412 [DEBUG] [Thread-197852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:14:09.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:14:09.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:14:09.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:14:09.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:14:09.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:14:09.432 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:14:09.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:14:09.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:14:09.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:14:09.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.842756 -999.00  +14.90  23.34     36   +0.30 1 1 1 1 1     0    0 15.63 46.73 ZNESW 20.1 23.3 159.2 29.6 15.0 -25.2 14.9 -24.8 14.7 -23.5 15.0 -24.4
2025-11-24T22:14:09.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:14:09.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:14:09.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.842756
2025-11-24T22:14:09.439 [DEBUG] [Thread-197852] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:14:09.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:14:09.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:14:09.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:14:09.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:14:09.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:14:09.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:13:32', tmtdew=16.85, humidity=31.01, cloud=0.0, wind=31.92, temperature=14.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:14:05', seeing=0.49, atlas_timestamp='2025-11-24T20:13:34.118', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:11:00')
2025-11-24T22:14:09.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:14:09.541 [DEBUG] [Thread-197855] [transport.py] [_log()] starting thread (client mode): 0xd318bb50
2025-11-24T22:14:09.541 [DEBUG] [Thread-197855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:14:09.556 [DEBUG] [Thread-197855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:14:09.556 [INFO] [Thread-197855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:14:09.564 [DEBUG] [Thread-197855] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:14:09.564 [DEBUG] [Thread-197855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:14:09.564 [DEBUG] [Thread-197855] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:14:09.564 [DEBUG] [Thread-197855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:14:09.564 [DEBUG] [Thread-197855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:14:09.564 [DEBUG] [Thread-197855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:14:09.564 [DEBUG] [Thread-197855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:14:09.564 [DEBUG] [Thread-197855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] client lang: <none>
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] server lang: <none>
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] kex follows: False
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] Compression: none
2025-11-24T22:14:09.565 [DEBUG] [Thread-197855] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:14:09.623 [DEBUG] [Thread-197855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:14:09.623 [DEBUG] [Thread-197855] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:14:09.623 [DEBUG] [Thread-197855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:14:09.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:14:09.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:14:09.679 [DEBUG] [Thread-197855] [transport.py] [_log()] userauth is OK
2025-11-24T22:14:09.679 [DEBUG] [Thread-197855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:14:09.679 [DEBUG] [Thread-197855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:14:09.679 [DEBUG] [Thread-197855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:14:09.679 [DEBUG] [Thread-197855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:14:09.694 [INFO] [Thread-197855] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:14:09.694 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:14:09.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:14:10.565 [DEBUG] [Thread-197855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:14:10.566 [DEBUG] [Thread-197855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:14:10.613 [DEBUG] [Thread-197855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:14:10.614 [DEBUG] [Thread-197855] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:14:10.623 [DEBUG] [Thread-197855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:14:10.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:14:10.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:14:10.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-11-24T22:14:10.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:14:10.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:14:10.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:14:10.657 [DEBUG] [Thread-197855] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:14:21.039 [DEBUG] [Thread-197857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:14:35.883 [DEBUG] [Thread-197858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:14:36.182 [DEBUG] [Thread-197859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:14:40.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:14:40.682 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:14:40.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-11-24T22:14:40.946 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:14:40.949 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:14:41.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 14, 5), 16.83, 31.04, 0.0, 30.79, 14.93, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:14:41.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:14:05
2025-11-24T22:14:41.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:14:41.863 [DEBUG] [Thread-197860] [transport.py] [_log()] starting thread (client mode): 0xd31f5480
2025-11-24T22:14:41.864 [DEBUG] [Thread-197860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:14:41.876 [DEBUG] [Thread-197860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:14:41.877 [INFO] [Thread-197860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:14:41.882 [DEBUG] [Thread-197860] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] client lang: <none>
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] server lang: <none>
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] kex follows: False
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:14:41.883 [DEBUG] [Thread-197860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:14:41.884 [DEBUG] [Thread-197860] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:14:41.884 [DEBUG] [Thread-197860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:14:41.884 [DEBUG] [Thread-197860] [transport.py] [_log()] Compression: none
2025-11-24T22:14:41.884 [DEBUG] [Thread-197860] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:14:41.914 [DEBUG] [Thread-197860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:14:41.918 [DEBUG] [Thread-197860] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:14:41.919 [DEBUG] [Thread-197860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:14:41.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:14:41.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:14:41.922 [DEBUG] [Thread-197860] [transport.py] [_log()] userauth is OK
2025-11-24T22:14:41.923 [DEBUG] [Thread-197860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:14:41.923 [DEBUG] [Thread-197860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:14:41.923 [DEBUG] [Thread-197860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:14:41.923 [DEBUG] [Thread-197860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:14:41.945 [INFO] [Thread-197860] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:14:41.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:14:42.584 [DEBUG] [Thread-197860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:14:42.584 [DEBUG] [Thread-197860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:14:42.585 [DEBUG] [Thread-197860] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:14:42.625 [DEBUG] [Thread-197860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:14:42.625 [DEBUG] [Thread-197860] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:14:42.627 [DEBUG] [Thread-197860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:14:42.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:14:42.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:14:42.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:14:42.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:14:42.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:14:42.652 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:14:42.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:14:42.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:14:42.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:14:42.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.843103 -999.00  +14.80  23.58     36   +0.20 1 1 1 1 1     0    0 15.62 46.57 ZNESW 21.4 23.6 164.6 30.8 15.0 -25.2 14.9 -24.6 14.7 -23.6 14.9 -24.5
2025-11-24T22:14:42.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:14:42.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:14:42.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.843103
2025-11-24T22:14:42.660 [DEBUG] [Thread-197860] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:14:42.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:14:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:14:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:14:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:14:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:14:42.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:14:05', tmtdew=16.83, humidity=31.04, cloud=0.0, wind=30.79, temperature=14.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:14:38', seeing=0.56, atlas_timestamp='2025-11-24T20:14:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:11:00')
2025-11-24T22:14:42.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:14:42.763 [DEBUG] [Thread-197863] [transport.py] [_log()] starting thread (client mode): 0xd0784430
2025-11-24T22:14:42.763 [DEBUG] [Thread-197863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:14:42.777 [DEBUG] [Thread-197863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:14:42.777 [INFO] [Thread-197863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] client lang: <none>
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] server lang: <none>
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] kex follows: False
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] Compression: none
2025-11-24T22:14:42.786 [DEBUG] [Thread-197863] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:14:42.843 [DEBUG] [Thread-197863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:14:42.843 [DEBUG] [Thread-197863] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:14:42.843 [DEBUG] [Thread-197863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:14:42.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:14:42.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:14:42.900 [DEBUG] [Thread-197863] [transport.py] [_log()] userauth is OK
2025-11-24T22:14:42.900 [DEBUG] [Thread-197863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:14:42.900 [DEBUG] [Thread-197863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:14:42.900 [DEBUG] [Thread-197863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:14:42.900 [DEBUG] [Thread-197863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:14:42.914 [INFO] [Thread-197863] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:14:42.914 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:14:42.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:14:43.743 [DEBUG] [Thread-197863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:14:43.743 [DEBUG] [Thread-197863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:14:43.791 [DEBUG] [Thread-197863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:14:43.791 [DEBUG] [Thread-197863] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:14:43.799 [DEBUG] [Thread-197863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:14:43.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:14:43.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-11-24T22:14:43.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') -> 00000000
2025-11-24T22:14:43.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:14:43.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:14:43.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:14:43.833 [DEBUG] [Thread-197863] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:14:51.230 [DEBUG] [Thread-197865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:15:06.373 [DEBUG] [Thread-197866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:15:13.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:15:13.858 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:15:13.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-11-24T22:15:14.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 14, 38), 16.79, 31.53, 0.0, 30.52, 14.88, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:15:14.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:14:38
2025-11-24T22:15:14.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:15:15.101 [DEBUG] [Thread-197867] [transport.py] [_log()] starting thread (client mode): 0xd07875e0
2025-11-24T22:15:15.101 [DEBUG] [Thread-197867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:15:15.111 [DEBUG] [Thread-197867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:15:15.111 [INFO] [Thread-197867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] client lang: <none>
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] server lang: <none>
2025-11-24T22:15:15.115 [DEBUG] [Thread-197867] [transport.py] [_log()] kex follows: False
2025-11-24T22:15:15.116 [DEBUG] [Thread-197867] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:15:15.116 [DEBUG] [Thread-197867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:15:15.116 [DEBUG] [Thread-197867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:15:15.116 [DEBUG] [Thread-197867] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:15:15.116 [DEBUG] [Thread-197867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:15:15.116 [DEBUG] [Thread-197867] [transport.py] [_log()] Compression: none
2025-11-24T22:15:15.117 [DEBUG] [Thread-197867] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:15:15.145 [DEBUG] [Thread-197867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:15:15.148 [DEBUG] [Thread-197867] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:15:15.149 [DEBUG] [Thread-197867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:15:15.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:15:15.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:15:15.189 [DEBUG] [Thread-197867] [transport.py] [_log()] userauth is OK
2025-11-24T22:15:15.190 [DEBUG] [Thread-197867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:15:15.190 [DEBUG] [Thread-197867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:15:15.190 [DEBUG] [Thread-197867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:15:15.190 [DEBUG] [Thread-197867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:15:15.228 [INFO] [Thread-197867] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:15:15.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:15:15.822 [DEBUG] [Thread-197867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:15:15.822 [DEBUG] [Thread-197867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:15:15.824 [DEBUG] [Thread-197867] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:15:15.863 [DEBUG] [Thread-197867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:15:15.863 [DEBUG] [Thread-197867] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:15:15.867 [DEBUG] [Thread-197867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:15:15.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:15:15.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:15:15.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:15:15.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:15:15.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:15:15.892 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:15:15.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:15:15.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:15:15.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:15:15.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.843450 -999.00  +14.80  20.20     36   +0.20 1 1 1 1 1     0    0 15.77 48.99 ZNESW 26.8 20.2 159.1 28.6 15.0 -25.0 14.9 -24.6 14.7 -23.4 15.0 -24.4
2025-11-24T22:15:15.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:15:15.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:15:15.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.843450
2025-11-24T22:15:15.900 [DEBUG] [Thread-197867] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:15:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:15:15.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:15:15.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:15:15.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:15:15.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:15:15.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:14:38', tmtdew=16.79, humidity=31.53, cloud=0.0, wind=30.52, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:15:11', seeing=0.5, atlas_timestamp='2025-11-24T20:14:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:11:00')
2025-11-24T22:15:16.003 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:15:16.015 [DEBUG] [Thread-197870] [transport.py] [_log()] starting thread (client mode): 0xd0786a10
2025-11-24T22:15:16.016 [DEBUG] [Thread-197870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:15:16.030 [DEBUG] [Thread-197870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:15:16.031 [INFO] [Thread-197870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:15:16.038 [DEBUG] [Thread-197870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:15:16.038 [DEBUG] [Thread-197870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:15:16.038 [DEBUG] [Thread-197870] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:15:16.038 [DEBUG] [Thread-197870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:15:16.038 [DEBUG] [Thread-197870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:15:16.038 [DEBUG] [Thread-197870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:15:16.038 [DEBUG] [Thread-197870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:15:16.038 [DEBUG] [Thread-197870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:15:16.038 [DEBUG] [Thread-197870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:15:16.039 [DEBUG] [Thread-197870] [transport.py] [_log()] client lang: <none>
2025-11-24T22:15:16.039 [DEBUG] [Thread-197870] [transport.py] [_log()] server lang: <none>
2025-11-24T22:15:16.039 [DEBUG] [Thread-197870] [transport.py] [_log()] kex follows: False
2025-11-24T22:15:16.039 [DEBUG] [Thread-197870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:15:16.039 [DEBUG] [Thread-197870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:15:16.039 [DEBUG] [Thread-197870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:15:16.039 [DEBUG] [Thread-197870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:15:16.039 [DEBUG] [Thread-197870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:15:16.039 [DEBUG] [Thread-197870] [transport.py] [_log()] Compression: none
2025-11-24T22:15:16.039 [DEBUG] [Thread-197870] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:15:16.096 [DEBUG] [Thread-197870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:15:16.097 [DEBUG] [Thread-197870] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:15:16.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:15:16.098 [DEBUG] [Thread-197870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:15:16.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:15:16.153 [DEBUG] [Thread-197870] [transport.py] [_log()] userauth is OK
2025-11-24T22:15:16.153 [DEBUG] [Thread-197870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:15:16.153 [DEBUG] [Thread-197870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:15:16.153 [DEBUG] [Thread-197870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:15:16.153 [DEBUG] [Thread-197870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:15:16.172 [INFO] [Thread-197870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:15:16.173 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:15:16.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:15:17.015 [DEBUG] [Thread-197870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:15:17.015 [DEBUG] [Thread-197870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:15:17.063 [DEBUG] [Thread-197870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:15:17.063 [DEBUG] [Thread-197870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:15:17.071 [DEBUG] [Thread-197870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:15:17.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:15:17.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-11-24T22:15:17.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-11-24T22:15:17.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:15:17.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:15:17.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:15:17.103 [DEBUG] [Thread-197870] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:15:21.424 [DEBUG] [Thread-197872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:15:36.190 [DEBUG] [Thread-197873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:15:36.549 [DEBUG] [Thread-197874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:15:41.159 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:15:41.161 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:15:47.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:15:47.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:15:47.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-11-24T22:15:47.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 15, 11), 16.77, 31.56, 0.0, 31.37, 14.88, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:15:47.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:15:11
2025-11-24T22:15:48.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:15:48.333 [DEBUG] [Thread-197875] [transport.py] [_log()] starting thread (client mode): 0xd07031c0
2025-11-24T22:15:48.334 [DEBUG] [Thread-197875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:15:48.346 [DEBUG] [Thread-197875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:15:48.346 [INFO] [Thread-197875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:15:48.351 [DEBUG] [Thread-197875] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:15:48.351 [DEBUG] [Thread-197875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:15:48.351 [DEBUG] [Thread-197875] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:15:48.351 [DEBUG] [Thread-197875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:15:48.352 [DEBUG] [Thread-197875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:15:48.352 [DEBUG] [Thread-197875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:15:48.352 [DEBUG] [Thread-197875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:15:48.352 [DEBUG] [Thread-197875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:15:48.352 [DEBUG] [Thread-197875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:15:48.352 [DEBUG] [Thread-197875] [transport.py] [_log()] client lang: <none>
2025-11-24T22:15:48.352 [DEBUG] [Thread-197875] [transport.py] [_log()] server lang: <none>
2025-11-24T22:15:48.352 [DEBUG] [Thread-197875] [transport.py] [_log()] kex follows: False
2025-11-24T22:15:48.352 [DEBUG] [Thread-197875] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:15:48.353 [DEBUG] [Thread-197875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:15:48.353 [DEBUG] [Thread-197875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:15:48.353 [DEBUG] [Thread-197875] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:15:48.353 [DEBUG] [Thread-197875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:15:48.353 [DEBUG] [Thread-197875] [transport.py] [_log()] Compression: none
2025-11-24T22:15:48.354 [DEBUG] [Thread-197875] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:15:48.387 [DEBUG] [Thread-197875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:15:48.391 [DEBUG] [Thread-197875] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:15:48.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:15:48.394 [DEBUG] [Thread-197875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:15:48.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:15:48.397 [DEBUG] [Thread-197875] [transport.py] [_log()] userauth is OK
2025-11-24T22:15:48.398 [DEBUG] [Thread-197875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:15:48.398 [DEBUG] [Thread-197875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:15:48.398 [DEBUG] [Thread-197875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:15:48.398 [DEBUG] [Thread-197875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:15:48.421 [INFO] [Thread-197875] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:15:48.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:15:49.061 [DEBUG] [Thread-197875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:15:49.069 [DEBUG] [Thread-197875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:15:49.070 [DEBUG] [Thread-197875] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:15:49.103 [DEBUG] [Thread-197875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:15:49.103 [DEBUG] [Thread-197875] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:15:49.106 [DEBUG] [Thread-197875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:15:49.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:15:49.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:15:49.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:15:49.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:15:49.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:15:49.126 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:15:49.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:15:49.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:15:49.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:15:49.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.844144 -999.00  +14.90  28.86     36   +0.30 1 1 1 1 1     0    0 15.72 47.29 ZNESW 24.9 28.9 160.2 37.3 15.0 -25.0 14.9 -24.7 14.7 -23.4 14.9 -24.3
2025-11-24T22:15:49.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:15:49.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:15:49.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.844144
2025-11-24T22:15:49.132 [DEBUG] [Thread-197875] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:15:49.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:15:49.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:15:49.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:15:49.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:15:49.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:15:49.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:15:11', tmtdew=16.77, humidity=31.56, cloud=0.0, wind=31.37, temperature=14.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:15:44', seeing=0.5, atlas_timestamp='2025-11-24T20:15:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:11:00')
2025-11-24T22:15:49.217 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:15:49.230 [DEBUG] [Thread-197878] [transport.py] [_log()] starting thread (client mode): 0xd31f4790
2025-11-24T22:15:49.230 [DEBUG] [Thread-197878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:15:49.247 [DEBUG] [Thread-197878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:15:49.247 [INFO] [Thread-197878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:15:49.254 [DEBUG] [Thread-197878] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:15:49.254 [DEBUG] [Thread-197878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] client lang: <none>
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] server lang: <none>
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] kex follows: False
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] Compression: none
2025-11-24T22:15:49.255 [DEBUG] [Thread-197878] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:15:49.313 [DEBUG] [Thread-197878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:15:49.313 [DEBUG] [Thread-197878] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:15:49.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:15:49.314 [DEBUG] [Thread-197878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:15:49.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:15:49.368 [DEBUG] [Thread-197878] [transport.py] [_log()] userauth is OK
2025-11-24T22:15:49.368 [DEBUG] [Thread-197878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:15:49.369 [DEBUG] [Thread-197878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:15:49.369 [DEBUG] [Thread-197878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:15:49.369 [DEBUG] [Thread-197878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:15:49.392 [INFO] [Thread-197878] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:15:49.393 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:15:49.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:15:50.238 [DEBUG] [Thread-197878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:15:50.238 [DEBUG] [Thread-197878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:15:50.286 [DEBUG] [Thread-197878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:15:50.286 [DEBUG] [Thread-197878] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:15:50.295 [DEBUG] [Thread-197878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:15:50.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:15:50.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-11-24T22:15:50.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-11-24T22:15:50.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:15:50.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:15:50.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:15:50.337 [DEBUG] [Thread-197878] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:15:51.586 [DEBUG] [Thread-197880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:16:06.646 [DEBUG] [Thread-197881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:16:20.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:16:20.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:16:20.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:16:21.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 15, 44), 16.77, 31.56, 0.0, 29.45, 14.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:16:21.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:15:44
2025-11-24T22:16:21.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:16:21.601 [DEBUG] [Thread-197882] [transport.py] [_log()] starting thread (client mode): 0xd31f4160
2025-11-24T22:16:21.602 [DEBUG] [Thread-197882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:16:21.605 [DEBUG] [Thread-197882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:16:21.605 [INFO] [Thread-197882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:16:21.610 [DEBUG] [Thread-197882] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] client lang: <none>
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] server lang: <none>
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] kex follows: False
2025-11-24T22:16:21.611 [DEBUG] [Thread-197882] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:16:21.612 [DEBUG] [Thread-197882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:16:21.612 [DEBUG] [Thread-197882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:16:21.612 [DEBUG] [Thread-197882] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:16:21.612 [DEBUG] [Thread-197882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:16:21.612 [DEBUG] [Thread-197882] [transport.py] [_log()] Compression: none
2025-11-24T22:16:21.612 [DEBUG] [Thread-197882] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:16:21.642 [DEBUG] [Thread-197882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:16:21.645 [DEBUG] [Thread-197882] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:16:21.647 [DEBUG] [Thread-197882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:16:21.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:16:21.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:16:21.650 [DEBUG] [Thread-197882] [transport.py] [_log()] userauth is OK
2025-11-24T22:16:21.650 [DEBUG] [Thread-197882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:16:21.650 [DEBUG] [Thread-197882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:16:21.650 [DEBUG] [Thread-197882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:16:21.650 [DEBUG] [Thread-197882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:16:21.662 [INFO] [Thread-197882] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:16:21.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:16:21.682 [DEBUG] [Thread-197884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:16:22.332 [DEBUG] [Thread-197882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:16:22.333 [DEBUG] [Thread-197882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:16:22.334 [DEBUG] [Thread-197882] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:16:22.373 [DEBUG] [Thread-197882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:16:22.373 [DEBUG] [Thread-197882] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:16:22.377 [DEBUG] [Thread-197882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:16:22.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:16:22.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:16:22.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:16:22.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:16:22.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:16:22.402 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:16:22.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:16:22.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:16:22.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:16:22.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.844492 -999.00  +14.90  16.94     36   +0.30 1 1 1 1 1     0    0 15.68 49.21 ZNESW 16.6 16.9 148.0 33.3 15.0 -25.1 14.9 -24.7 14.6 -23.5 14.9 -24.3
2025-11-24T22:16:22.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:16:22.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:16:22.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.844492
2025-11-24T22:16:22.410 [DEBUG] [Thread-197882] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:16:22.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:16:22.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:16:22.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:16:22.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:16:22.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:16:22.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:15:44', tmtdew=16.77, humidity=31.56, cloud=0.0, wind=29.45, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:16:17', seeing=0.5, atlas_timestamp='2025-11-24T20:16:04.109', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, 0.005250000000000199, -0.02275000000000027, 0.010999999999999233, -0.0004999999999988347, 0.08225000000000016, -0.006999999999999673, 0.02224999999999966, 0.022999999999999687, 0.0259999999999998, 0.040749999999999176, -0.028999999999999915, 0.08749999999999858, 0.09774999999999956, 0.01699999999999946, -0.005000000000000782, 0.030250000000000554, 0.042500000000000426, 0.07399999999999984, 0.00274999999999892, 0.09899999999999842, 0.049249999999998906, 0.03825000000000145, 0.026750000000001606, 0.026999999999999247, 0.0625, 0.0727499999999992, 0.057500000000000995, 0.08000000000000007, 0.08500000000000085, 0.09600000000000186, 0.040000000000000924, -0.05825000000000102], zp_timestamp='2025-11-24T20:11:00')
2025-11-24T22:16:22.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:16:22.525 [DEBUG] [Thread-197886] [transport.py] [_log()] starting thread (client mode): 0xd0785600
2025-11-24T22:16:22.526 [DEBUG] [Thread-197886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:16:22.540 [DEBUG] [Thread-197886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:16:22.540 [INFO] [Thread-197886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:16:22.548 [DEBUG] [Thread-197886] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:16:22.548 [DEBUG] [Thread-197886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:16:22.548 [DEBUG] [Thread-197886] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:16:22.548 [DEBUG] [Thread-197886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:16:22.548 [DEBUG] [Thread-197886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:16:22.548 [DEBUG] [Thread-197886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:16:22.548 [DEBUG] [Thread-197886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:16:22.548 [DEBUG] [Thread-197886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] client lang: <none>
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] server lang: <none>
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] kex follows: False
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] Compression: none
2025-11-24T22:16:22.549 [DEBUG] [Thread-197886] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:16:22.608 [DEBUG] [Thread-197886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:16:22.609 [DEBUG] [Thread-197886] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:16:22.610 [DEBUG] [Thread-197886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:16:22.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:16:22.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:16:22.664 [DEBUG] [Thread-197886] [transport.py] [_log()] userauth is OK
2025-11-24T22:16:22.664 [DEBUG] [Thread-197886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:16:22.665 [DEBUG] [Thread-197886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:16:22.665 [DEBUG] [Thread-197886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:16:22.665 [DEBUG] [Thread-197886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:16:22.684 [INFO] [Thread-197886] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:16:22.684 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:16:22.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:16:23.543 [DEBUG] [Thread-197886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:16:23.543 [DEBUG] [Thread-197886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:16:23.591 [DEBUG] [Thread-197886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:16:23.591 [DEBUG] [Thread-197886] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:16:23.599 [DEBUG] [Thread-197886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:16:23.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:16:23.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:16:23.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-11-24T22:16:23.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:16:23.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:16:23.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:16:23.641 [DEBUG] [Thread-197886] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:16:36.447 [DEBUG] [Thread-197888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:16:36.715 [DEBUG] [Thread-197889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:16:41.363 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:16:41.364 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:16:51.811 [DEBUG] [Thread-197890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:16:53.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:16:53.668 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:16:53.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:16:54.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 16, 50), 16.76, 31.58, 0.0, 26.43, 14.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:16:54.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:16:50
2025-11-24T22:16:54.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:16:54.839 [DEBUG] [Thread-197891] [transport.py] [_log()] starting thread (client mode): 0xc9b82170
2025-11-24T22:16:54.840 [DEBUG] [Thread-197891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:16:54.852 [DEBUG] [Thread-197891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:16:54.852 [INFO] [Thread-197891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:16:54.858 [DEBUG] [Thread-197891] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:16:54.858 [DEBUG] [Thread-197891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:16:54.858 [DEBUG] [Thread-197891] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:16:54.858 [DEBUG] [Thread-197891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:16:54.858 [DEBUG] [Thread-197891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:16:54.859 [DEBUG] [Thread-197891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:16:54.859 [DEBUG] [Thread-197891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:16:54.859 [DEBUG] [Thread-197891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:16:54.859 [DEBUG] [Thread-197891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:16:54.859 [DEBUG] [Thread-197891] [transport.py] [_log()] client lang: <none>
2025-11-24T22:16:54.859 [DEBUG] [Thread-197891] [transport.py] [_log()] server lang: <none>
2025-11-24T22:16:54.859 [DEBUG] [Thread-197891] [transport.py] [_log()] kex follows: False
2025-11-24T22:16:54.859 [DEBUG] [Thread-197891] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:16:54.859 [DEBUG] [Thread-197891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:16:54.859 [DEBUG] [Thread-197891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:16:54.860 [DEBUG] [Thread-197891] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:16:54.860 [DEBUG] [Thread-197891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:16:54.860 [DEBUG] [Thread-197891] [transport.py] [_log()] Compression: none
2025-11-24T22:16:54.860 [DEBUG] [Thread-197891] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:16:54.883 [DEBUG] [Thread-197891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:16:54.887 [DEBUG] [Thread-197891] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:16:54.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:16:54.889 [DEBUG] [Thread-197891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:16:54.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:16:54.892 [DEBUG] [Thread-197891] [transport.py] [_log()] userauth is OK
2025-11-24T22:16:54.892 [DEBUG] [Thread-197891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:16:54.892 [DEBUG] [Thread-197891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:16:54.892 [DEBUG] [Thread-197891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:16:54.892 [DEBUG] [Thread-197891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:16:54.913 [INFO] [Thread-197891] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:16:54.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:16:55.515 [DEBUG] [Thread-197891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:16:55.516 [DEBUG] [Thread-197891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:16:55.516 [DEBUG] [Thread-197891] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:16:55.557 [DEBUG] [Thread-197891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:16:55.557 [DEBUG] [Thread-197891] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:16:55.559 [DEBUG] [Thread-197891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:16:55.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:16:55.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:16:55.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:16:55.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:16:55.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:16:55.582 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:16:55.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:16:55.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:16:55.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:16:55.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.844839 -999.00  +14.80  20.21     36   +0.20 1 1 1 1 1     0    0 15.82 51.09 ZNESW 21.1 20.2 159.5 27.6 15.0 -25.0 14.9 -24.6 14.7 -23.5 14.9 -24.4
2025-11-24T22:16:55.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:16:55.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:16:55.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.844839
2025-11-24T22:16:55.591 [DEBUG] [Thread-197891] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:16:55.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:16:55.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:16:55.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:16:55.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:16:55.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:16:55.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:16:50', tmtdew=16.76, humidity=31.58, cloud=0.0, wind=26.43, temperature=14.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:16:50', seeing=0.57, atlas_timestamp='2025-11-24T20:16:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:15:00')
2025-11-24T22:16:55.690 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:16:55.700 [DEBUG] [Thread-197894] [transport.py] [_log()] starting thread (client mode): 0xd0787d90
2025-11-24T22:16:55.701 [DEBUG] [Thread-197894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:16:55.715 [DEBUG] [Thread-197894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:16:55.716 [INFO] [Thread-197894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:16:55.723 [DEBUG] [Thread-197894] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:16:55.723 [DEBUG] [Thread-197894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:16:55.723 [DEBUG] [Thread-197894] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:16:55.723 [DEBUG] [Thread-197894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:16:55.723 [DEBUG] [Thread-197894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:16:55.723 [DEBUG] [Thread-197894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:16:55.723 [DEBUG] [Thread-197894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:16:55.724 [DEBUG] [Thread-197894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:16:55.724 [DEBUG] [Thread-197894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:16:55.724 [DEBUG] [Thread-197894] [transport.py] [_log()] client lang: <none>
2025-11-24T22:16:55.724 [DEBUG] [Thread-197894] [transport.py] [_log()] server lang: <none>
2025-11-24T22:16:55.724 [DEBUG] [Thread-197894] [transport.py] [_log()] kex follows: False
2025-11-24T22:16:55.724 [DEBUG] [Thread-197894] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:16:55.724 [DEBUG] [Thread-197894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:16:55.724 [DEBUG] [Thread-197894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:16:55.733 [DEBUG] [Thread-197894] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:16:55.733 [DEBUG] [Thread-197894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:16:55.733 [DEBUG] [Thread-197894] [transport.py] [_log()] Compression: none
2025-11-24T22:16:55.733 [DEBUG] [Thread-197894] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:16:55.781 [DEBUG] [Thread-197894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:16:55.782 [DEBUG] [Thread-197894] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:16:55.783 [DEBUG] [Thread-197894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:16:55.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:16:55.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:16:55.841 [DEBUG] [Thread-197894] [transport.py] [_log()] userauth is OK
2025-11-24T22:16:55.841 [DEBUG] [Thread-197894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:16:55.841 [DEBUG] [Thread-197894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:16:55.841 [DEBUG] [Thread-197894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:16:55.841 [DEBUG] [Thread-197894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:16:55.860 [INFO] [Thread-197894] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:16:55.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:16:55.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:16:56.689 [DEBUG] [Thread-197894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:16:56.690 [DEBUG] [Thread-197894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:16:56.738 [DEBUG] [Thread-197894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:16:56.738 [DEBUG] [Thread-197894] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:16:56.747 [DEBUG] [Thread-197894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:16:56.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:16:56.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-11-24T22:16:56.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-11-24T22:16:56.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:16:56.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:16:56.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:16:56.794 [DEBUG] [Thread-197894] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:17:06.881 [DEBUG] [Thread-197896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:17:22.072 [DEBUG] [Thread-197897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:17:26.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:17:26.848 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:17:26.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-11-24T22:17:27.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 17, 23), 16.73, 31.64, 0.0, 27.44, 14.85, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:17:27.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:17:23
2025-11-24T22:17:27.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:17:28.016 [DEBUG] [Thread-197898] [transport.py] [_log()] starting thread (client mode): 0xd31f6140
2025-11-24T22:17:28.017 [DEBUG] [Thread-197898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:17:28.027 [DEBUG] [Thread-197898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:17:28.028 [INFO] [Thread-197898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:17:28.034 [DEBUG] [Thread-197898] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:17:28.034 [DEBUG] [Thread-197898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] client lang: <none>
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] server lang: <none>
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] kex follows: False
2025-11-24T22:17:28.035 [DEBUG] [Thread-197898] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:17:28.036 [DEBUG] [Thread-197898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:17:28.036 [DEBUG] [Thread-197898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:17:28.037 [DEBUG] [Thread-197898] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:17:28.037 [DEBUG] [Thread-197898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:17:28.037 [DEBUG] [Thread-197898] [transport.py] [_log()] Compression: none
2025-11-24T22:17:28.037 [DEBUG] [Thread-197898] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:17:28.085 [DEBUG] [Thread-197898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:17:28.090 [DEBUG] [Thread-197898] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:17:28.093 [DEBUG] [Thread-197898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:17:28.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:17:28.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:17:28.098 [DEBUG] [Thread-197898] [transport.py] [_log()] userauth is OK
2025-11-24T22:17:28.099 [DEBUG] [Thread-197898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:17:28.099 [DEBUG] [Thread-197898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:17:28.099 [DEBUG] [Thread-197898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:17:28.099 [DEBUG] [Thread-197898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:17:28.125 [INFO] [Thread-197898] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:17:28.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:17:28.689 [DEBUG] [Thread-197898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:17:28.689 [DEBUG] [Thread-197898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:17:28.698 [DEBUG] [Thread-197898] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:17:28.730 [DEBUG] [Thread-197898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:17:28.730 [DEBUG] [Thread-197898] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:17:28.732 [DEBUG] [Thread-197898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:17:28.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:17:28.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:17:28.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:17:28.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:17:28.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:17:28.745 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:17:28.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:17:28.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:17:28.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:17:28.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.845186 -999.00  +14.80  19.69     37   +0.30 1 1 1 1 1     0    0 16.18 56.20 ZNESW 18.2 19.7 163.6 31.3 15.0 -24.9 14.9 -24.5 14.6 -23.3 14.9 -24.4
2025-11-24T22:17:28.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:17:28.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:17:28.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.845186
2025-11-24T22:17:28.751 [DEBUG] [Thread-197898] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:17:28.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:17:28.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:17:28.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:17:28.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:17:28.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:17:28.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:17:23', tmtdew=16.73, humidity=31.64, cloud=0.0, wind=27.44, temperature=14.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:17:23', seeing=0.54, atlas_timestamp='2025-11-24T20:17:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:15:00')
2025-11-24T22:17:28.836 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:17:28.849 [DEBUG] [Thread-197901] [transport.py] [_log()] starting thread (client mode): 0xd31f4910
2025-11-24T22:17:28.849 [DEBUG] [Thread-197901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:17:28.864 [DEBUG] [Thread-197901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:17:28.864 [INFO] [Thread-197901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:17:28.871 [DEBUG] [Thread-197901] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:17:28.871 [DEBUG] [Thread-197901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] client lang: <none>
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] server lang: <none>
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] kex follows: False
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] Compression: none
2025-11-24T22:17:28.872 [DEBUG] [Thread-197901] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:17:28.932 [DEBUG] [Thread-197901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:17:28.933 [DEBUG] [Thread-197901] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:17:28.933 [DEBUG] [Thread-197901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:17:28.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:17:28.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:17:28.989 [DEBUG] [Thread-197901] [transport.py] [_log()] userauth is OK
2025-11-24T22:17:28.989 [DEBUG] [Thread-197901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:17:28.989 [DEBUG] [Thread-197901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:17:28.989 [DEBUG] [Thread-197901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:17:28.989 [DEBUG] [Thread-197901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:17:29.008 [INFO] [Thread-197901] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:17:29.009 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:17:29.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:17:29.906 [DEBUG] [Thread-197901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:17:29.906 [DEBUG] [Thread-197901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:17:29.953 [DEBUG] [Thread-197901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:17:29.953 [DEBUG] [Thread-197901] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:17:29.961 [DEBUG] [Thread-197901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:17:29.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:17:29.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-11-24T22:17:29.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-11-24T22:17:29.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:17:29.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:17:29.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:17:29.996 [DEBUG] [Thread-197901] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:17:36.811 [DEBUG] [Thread-197903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:17:37.142 [DEBUG] [Thread-197904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:17:41.563 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:17:41.565 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:17:52.228 [DEBUG] [Thread-197905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:18:00.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:18:00.009 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:18:00.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-11-24T22:18:00.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 17, 56), 16.68, 31.66, 0.0, 28.67, 14.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:18:00.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:17:56
2025-11-24T22:18:01.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:18:01.229 [DEBUG] [Thread-197906] [transport.py] [_log()] starting thread (client mode): 0xd07cc9a0
2025-11-24T22:18:01.229 [DEBUG] [Thread-197906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:18:01.247 [DEBUG] [Thread-197906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:18:01.247 [INFO] [Thread-197906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] client lang: <none>
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] server lang: <none>
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] kex follows: False
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:18:01.249 [DEBUG] [Thread-197906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:18:01.250 [DEBUG] [Thread-197906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:18:01.250 [DEBUG] [Thread-197906] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:18:01.250 [DEBUG] [Thread-197906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:18:01.250 [DEBUG] [Thread-197906] [transport.py] [_log()] Compression: none
2025-11-24T22:18:01.250 [DEBUG] [Thread-197906] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:18:01.263 [DEBUG] [Thread-197906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:18:01.264 [DEBUG] [Thread-197906] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:18:01.264 [DEBUG] [Thread-197906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:18:01.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:18:01.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:18:01.267 [DEBUG] [Thread-197906] [transport.py] [_log()] userauth is OK
2025-11-24T22:18:01.267 [DEBUG] [Thread-197906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:18:01.267 [DEBUG] [Thread-197906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:18:01.267 [DEBUG] [Thread-197906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:18:01.267 [DEBUG] [Thread-197906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:18:01.285 [INFO] [Thread-197906] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:18:01.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:18:01.867 [DEBUG] [Thread-197906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:18:01.867 [DEBUG] [Thread-197906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:18:01.877 [DEBUG] [Thread-197906] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:18:01.908 [DEBUG] [Thread-197906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:18:01.908 [DEBUG] [Thread-197906] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:18:01.911 [DEBUG] [Thread-197906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:18:01.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:18:01.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:18:01.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:18:01.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:18:01.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:18:01.933 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:18:01.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:18:01.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:18:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:18:01.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.845186 -999.00  +14.80  19.69     37   +0.30 1 1 1 1 1     0    0 16.18 56.20 ZNESW 18.2 19.7 163.6 31.3 15.0 -24.9 14.9 -24.5 14.6 -23.3 14.9 -24.4
2025-11-24T22:18:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:18:01.935 [DEBUG] [Thread-197906] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:18:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:18:01.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.845186
2025-11-24T22:18:01.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:18:01.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:18:01.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:18:01.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:18:01.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:18:01.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:17:56', tmtdew=16.68, humidity=31.66, cloud=0.0, wind=28.67, temperature=14.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:17:56', seeing=0.54, atlas_timestamp='2025-11-24T20:17:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:15:00')
2025-11-24T22:18:02.020 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:18:02.032 [DEBUG] [Thread-197909] [transport.py] [_log()] starting thread (client mode): 0xd317ee60
2025-11-24T22:18:02.032 [DEBUG] [Thread-197909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:18:02.048 [DEBUG] [Thread-197909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:18:02.048 [INFO] [Thread-197909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:18:02.055 [DEBUG] [Thread-197909] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] client lang: <none>
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] server lang: <none>
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] kex follows: False
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:18:02.056 [DEBUG] [Thread-197909] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:18:02.057 [DEBUG] [Thread-197909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:18:02.057 [DEBUG] [Thread-197909] [transport.py] [_log()] Compression: none
2025-11-24T22:18:02.057 [DEBUG] [Thread-197909] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:18:02.117 [DEBUG] [Thread-197909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:18:02.118 [DEBUG] [Thread-197909] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:18:02.119 [DEBUG] [Thread-197909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:18:02.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:18:02.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:18:02.177 [DEBUG] [Thread-197909] [transport.py] [_log()] userauth is OK
2025-11-24T22:18:02.177 [DEBUG] [Thread-197909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:18:02.177 [DEBUG] [Thread-197909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:18:02.177 [DEBUG] [Thread-197909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:18:02.177 [DEBUG] [Thread-197909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:18:02.196 [INFO] [Thread-197909] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:18:02.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:18:02.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:18:03.065 [DEBUG] [Thread-197909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:18:03.065 [DEBUG] [Thread-197909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:18:03.113 [DEBUG] [Thread-197909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:18:03.113 [DEBUG] [Thread-197909] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:18:03.122 [DEBUG] [Thread-197909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:18:03.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:18:03.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-11-24T22:18:03.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-11-24T22:18:03.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:18:03.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:18:03.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:18:03.160 [DEBUG] [Thread-197909] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:18:07.258 [DEBUG] [Thread-197911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:18:22.357 [DEBUG] [Thread-197912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:18:33.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:18:33.202 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:18:33.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:18:34.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 18, 28), 16.68, 31.66, 0.0, 27.84, 14.8, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:18:34.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:18:28
2025-11-24T22:18:34.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:18:34.457 [DEBUG] [Thread-197913] [transport.py] [_log()] starting thread (client mode): 0xc9b80130
2025-11-24T22:18:34.458 [DEBUG] [Thread-197913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:18:34.465 [DEBUG] [Thread-197913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:18:34.465 [INFO] [Thread-197913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:18:34.469 [DEBUG] [Thread-197913] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] client lang: <none>
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] server lang: <none>
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] kex follows: False
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:18:34.470 [DEBUG] [Thread-197913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:18:34.471 [DEBUG] [Thread-197913] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:18:34.471 [DEBUG] [Thread-197913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:18:34.471 [DEBUG] [Thread-197913] [transport.py] [_log()] Compression: none
2025-11-24T22:18:34.471 [DEBUG] [Thread-197913] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:18:34.499 [DEBUG] [Thread-197913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:18:34.502 [DEBUG] [Thread-197913] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:18:34.502 [DEBUG] [Thread-197913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:18:34.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:18:34.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:18:34.506 [DEBUG] [Thread-197913] [transport.py] [_log()] userauth is OK
2025-11-24T22:18:34.506 [DEBUG] [Thread-197913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:18:34.506 [DEBUG] [Thread-197913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:18:34.506 [DEBUG] [Thread-197913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:18:34.506 [DEBUG] [Thread-197913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:18:34.523 [INFO] [Thread-197913] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:18:34.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:18:35.162 [DEBUG] [Thread-197913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:18:35.162 [DEBUG] [Thread-197913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:18:35.163 [DEBUG] [Thread-197913] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:18:35.203 [DEBUG] [Thread-197913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:18:35.203 [DEBUG] [Thread-197913] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:18:35.205 [DEBUG] [Thread-197913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:18:35.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:18:35.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:18:35.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:18:35.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:18:35.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:18:35.228 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:18:35.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:18:35.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:18:35.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:18:35.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.845533 -999.00  +14.80  29.35     37   +0.30 1 1 1 1 1     0    0 15.77 54.20 ZNESW 29.4 29.4 168.8 36.1 15.0 -25.0 14.8 -24.5 14.7 -23.1 14.9 -24.2
2025-11-24T22:18:35.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:18:35.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:18:35.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.845533
2025-11-24T22:18:35.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:18:35.246 [DEBUG] [Thread-197913] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:18:35.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:18:35.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:18:35.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:18:35.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:18:35.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:18:28', tmtdew=16.68, humidity=31.66, cloud=0.0, wind=27.84, temperature=14.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:18:29', seeing=0.54, atlas_timestamp='2025-11-24T20:17:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:15:00')
2025-11-24T22:18:35.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:18:35.347 [DEBUG] [Thread-197916] [transport.py] [_log()] starting thread (client mode): 0xd31f5510
2025-11-24T22:18:35.347 [DEBUG] [Thread-197916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:18:35.362 [DEBUG] [Thread-197916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:18:35.362 [INFO] [Thread-197916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:18:35.369 [DEBUG] [Thread-197916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:18:35.369 [DEBUG] [Thread-197916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:18:35.369 [DEBUG] [Thread-197916] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:18:35.369 [DEBUG] [Thread-197916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:18:35.369 [DEBUG] [Thread-197916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:18:35.369 [DEBUG] [Thread-197916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] client lang: <none>
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] server lang: <none>
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] kex follows: False
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] Compression: none
2025-11-24T22:18:35.370 [DEBUG] [Thread-197916] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:18:35.427 [DEBUG] [Thread-197916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:18:35.427 [DEBUG] [Thread-197916] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:18:35.427 [DEBUG] [Thread-197916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:18:35.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:18:35.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:18:35.484 [DEBUG] [Thread-197916] [transport.py] [_log()] userauth is OK
2025-11-24T22:18:35.484 [DEBUG] [Thread-197916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:18:35.484 [DEBUG] [Thread-197916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:18:35.484 [DEBUG] [Thread-197916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:18:35.484 [DEBUG] [Thread-197916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:18:35.498 [INFO] [Thread-197916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:18:35.498 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:18:35.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:18:36.329 [DEBUG] [Thread-197916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:18:36.329 [DEBUG] [Thread-197916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:18:36.377 [DEBUG] [Thread-197916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:18:36.377 [DEBUG] [Thread-197916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:18:36.385 [DEBUG] [Thread-197916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:18:36.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:18:36.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-11-24T22:18:36.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-11-24T22:18:36.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:18:36.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:18:36.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:18:36.419 [DEBUG] [Thread-197916] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:18:37.092 [DEBUG] [Thread-197918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:18:37.393 [DEBUG] [Thread-197919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:18:41.776 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:18:41.778 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:18:52.500 [DEBUG] [Thread-197920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:19:06.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:19:06.437 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:19:06.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-11-24T22:19:07.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 19, 1), 16.63, 31.76, 0.0, 30.05, 14.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:19:07.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:19:01
2025-11-24T22:19:07.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:19:07.553 [DEBUG] [Thread-197921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:19:07.683 [DEBUG] [Thread-197922] [transport.py] [_log()] starting thread (client mode): 0xd3152c20
2025-11-24T22:19:07.684 [DEBUG] [Thread-197922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:19:07.697 [DEBUG] [Thread-197922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:19:07.697 [INFO] [Thread-197922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:19:07.703 [DEBUG] [Thread-197922] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:19:07.703 [DEBUG] [Thread-197922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:19:07.703 [DEBUG] [Thread-197922] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:19:07.703 [DEBUG] [Thread-197922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:19:07.703 [DEBUG] [Thread-197922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:19:07.703 [DEBUG] [Thread-197922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:19:07.703 [DEBUG] [Thread-197922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:19:07.703 [DEBUG] [Thread-197922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:19:07.703 [DEBUG] [Thread-197922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:19:07.703 [DEBUG] [Thread-197922] [transport.py] [_log()] client lang: <none>
2025-11-24T22:19:07.704 [DEBUG] [Thread-197922] [transport.py] [_log()] server lang: <none>
2025-11-24T22:19:07.704 [DEBUG] [Thread-197922] [transport.py] [_log()] kex follows: False
2025-11-24T22:19:07.704 [DEBUG] [Thread-197922] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:19:07.704 [DEBUG] [Thread-197922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:19:07.704 [DEBUG] [Thread-197922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:19:07.705 [DEBUG] [Thread-197922] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:19:07.705 [DEBUG] [Thread-197922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:19:07.705 [DEBUG] [Thread-197922] [transport.py] [_log()] Compression: none
2025-11-24T22:19:07.705 [DEBUG] [Thread-197922] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:19:07.741 [DEBUG] [Thread-197922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:19:07.744 [DEBUG] [Thread-197922] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:19:07.745 [DEBUG] [Thread-197922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:19:07.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:19:07.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:19:07.749 [DEBUG] [Thread-197922] [transport.py] [_log()] userauth is OK
2025-11-24T22:19:07.749 [DEBUG] [Thread-197922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:19:07.749 [DEBUG] [Thread-197922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:19:07.749 [DEBUG] [Thread-197922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:19:07.749 [DEBUG] [Thread-197922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:19:07.786 [INFO] [Thread-197922] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:19:07.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:19:08.417 [DEBUG] [Thread-197922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:19:08.417 [DEBUG] [Thread-197922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:19:08.427 [DEBUG] [Thread-197922] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:19:08.457 [DEBUG] [Thread-197922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:19:08.458 [DEBUG] [Thread-197922] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:19:08.461 [DEBUG] [Thread-197922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:19:08.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:19:08.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:19:08.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:19:08.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:19:08.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:19:08.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:19:08.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:19:08.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:19:08.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:19:08.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.845881 -999.00  +14.80  21.16     37   +0.30 1 1 1 1 1     0    0 15.94 54.05 ZNESW 19.5 21.2 153.3 33.6 15.0 -25.0 14.9 -24.6 14.7 -23.3 14.9 -24.2
2025-11-24T22:19:08.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:19:08.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:19:08.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.845881
2025-11-24T22:19:08.495 [DEBUG] [Thread-197922] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:19:08.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:19:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:19:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:19:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:19:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:19:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:19:01', tmtdew=16.63, humidity=31.76, cloud=0.0, wind=30.05, temperature=14.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:19:02', seeing=0.5, atlas_timestamp='2025-11-24T20:18:04.118', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:15:00')
2025-11-24T22:19:08.586 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:19:08.598 [DEBUG] [Thread-197925] [transport.py] [_log()] starting thread (client mode): 0xd31f4d30
2025-11-24T22:19:08.599 [DEBUG] [Thread-197925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:19:08.613 [DEBUG] [Thread-197925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:19:08.613 [INFO] [Thread-197925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:19:08.620 [DEBUG] [Thread-197925] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:19:08.620 [DEBUG] [Thread-197925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:19:08.620 [DEBUG] [Thread-197925] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:19:08.620 [DEBUG] [Thread-197925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:19:08.620 [DEBUG] [Thread-197925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:19:08.620 [DEBUG] [Thread-197925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:19:08.620 [DEBUG] [Thread-197925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:19:08.620 [DEBUG] [Thread-197925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:19:08.620 [DEBUG] [Thread-197925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:19:08.621 [DEBUG] [Thread-197925] [transport.py] [_log()] client lang: <none>
2025-11-24T22:19:08.621 [DEBUG] [Thread-197925] [transport.py] [_log()] server lang: <none>
2025-11-24T22:19:08.621 [DEBUG] [Thread-197925] [transport.py] [_log()] kex follows: False
2025-11-24T22:19:08.621 [DEBUG] [Thread-197925] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:19:08.621 [DEBUG] [Thread-197925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:19:08.621 [DEBUG] [Thread-197925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:19:08.621 [DEBUG] [Thread-197925] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:19:08.621 [DEBUG] [Thread-197925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:19:08.621 [DEBUG] [Thread-197925] [transport.py] [_log()] Compression: none
2025-11-24T22:19:08.621 [DEBUG] [Thread-197925] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:19:08.682 [DEBUG] [Thread-197925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:19:08.683 [DEBUG] [Thread-197925] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:19:08.683 [DEBUG] [Thread-197925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:19:08.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:19:08.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:19:08.740 [DEBUG] [Thread-197925] [transport.py] [_log()] userauth is OK
2025-11-24T22:19:08.740 [DEBUG] [Thread-197925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:19:08.740 [DEBUG] [Thread-197925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:19:08.740 [DEBUG] [Thread-197925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:19:08.741 [DEBUG] [Thread-197925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:19:08.755 [INFO] [Thread-197925] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:19:08.755 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:19:08.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:19:09.638 [DEBUG] [Thread-197925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:19:09.638 [DEBUG] [Thread-197925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:19:09.686 [DEBUG] [Thread-197925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:19:09.686 [DEBUG] [Thread-197925] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:19:09.694 [DEBUG] [Thread-197925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:19:09.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:19: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')
2025-11-24T22:19:09.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-11-24T22:19:09.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:19:09.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:19:09.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:19:09.729 [DEBUG] [Thread-197925] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:19:22.621 [DEBUG] [Thread-197927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:19:37.362 [DEBUG] [Thread-197928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:19:37.752 [DEBUG] [Thread-197929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:19:39.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:19:39.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:19:39.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-11-24T22:19:40.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 19, 35), 16.55, 31.81, 0.0, 28.83, 14.73, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:19:40.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:19:35
2025-11-24T22:19:40.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:19:41.081 [DEBUG] [Thread-197930] [transport.py] [_log()] starting thread (client mode): 0xd0738ac0
2025-11-24T22:19:41.082 [DEBUG] [Thread-197930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:19:41.095 [DEBUG] [Thread-197930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:19:41.096 [INFO] [Thread-197930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:19:41.101 [DEBUG] [Thread-197930] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] client lang: <none>
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] server lang: <none>
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] kex follows: False
2025-11-24T22:19:41.102 [DEBUG] [Thread-197930] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:19:41.103 [DEBUG] [Thread-197930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:19:41.103 [DEBUG] [Thread-197930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:19:41.103 [DEBUG] [Thread-197930] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:19:41.103 [DEBUG] [Thread-197930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:19:41.103 [DEBUG] [Thread-197930] [transport.py] [_log()] Compression: none
2025-11-24T22:19:41.103 [DEBUG] [Thread-197930] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:19:41.138 [DEBUG] [Thread-197930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:19:41.143 [DEBUG] [Thread-197930] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:19:41.144 [DEBUG] [Thread-197930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:19:41.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:19:41.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:19:41.149 [DEBUG] [Thread-197930] [transport.py] [_log()] userauth is OK
2025-11-24T22:19:41.149 [DEBUG] [Thread-197930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:19:41.150 [DEBUG] [Thread-197930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:19:41.150 [DEBUG] [Thread-197930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:19:41.150 [DEBUG] [Thread-197930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:19:41.176 [INFO] [Thread-197930] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:19:41.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:19:41.821 [DEBUG] [Thread-197930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:19:41.831 [DEBUG] [Thread-197930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:19:41.833 [DEBUG] [Thread-197930] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:19:41.863 [DEBUG] [Thread-197930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:19:41.863 [DEBUG] [Thread-197930] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:19:41.867 [DEBUG] [Thread-197930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:19:41.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:19:41.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:19:41.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:19:41.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:19:41.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:19:41.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:19:41.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:19:41.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:19:41.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:19:41.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.846575 -999.00  +14.80  17.22     37   +0.20 1 1 1 1 1     0    0 15.58 46.31 ZNESW 21.9 17.2 171.4 25.1 15.0 -25.1 14.9 -24.5 14.6 -23.4 14.9 -24.3
2025-11-24T22:19:41.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:19:41.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:19:41.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.846575
2025-11-24T22:19:41.903 [DEBUG] [Thread-197930] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:19:41.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:19:41.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:19:41.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:19:41.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:19:41.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:19:41.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:19:35', tmtdew=16.55, humidity=31.81, cloud=0.0, wind=28.83, temperature=14.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:19:35', seeing=0.57, atlas_timestamp='2025-11-24T20:19:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:17:00')
2025-11-24T22:19:41.985 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:19:41.987 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:19:42.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:19:42.017 [DEBUG] [Thread-197933] [transport.py] [_log()] starting thread (client mode): 0xd07f8df0
2025-11-24T22:19:42.017 [DEBUG] [Thread-197933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:19:42.032 [DEBUG] [Thread-197933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:19:42.032 [INFO] [Thread-197933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:19:42.040 [DEBUG] [Thread-197933] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:19:42.040 [DEBUG] [Thread-197933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:19:42.040 [DEBUG] [Thread-197933] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:19:42.041 [DEBUG] [Thread-197933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:19:42.041 [DEBUG] [Thread-197933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:19:42.041 [DEBUG] [Thread-197933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:19:42.041 [DEBUG] [Thread-197933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:19:42.041 [DEBUG] [Thread-197933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:19:42.041 [DEBUG] [Thread-197933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:19:42.041 [DEBUG] [Thread-197933] [transport.py] [_log()] client lang: <none>
2025-11-24T22:19:42.041 [DEBUG] [Thread-197933] [transport.py] [_log()] server lang: <none>
2025-11-24T22:19:42.041 [DEBUG] [Thread-197933] [transport.py] [_log()] kex follows: False
2025-11-24T22:19:42.041 [DEBUG] [Thread-197933] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:19:42.042 [DEBUG] [Thread-197933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:19:42.042 [DEBUG] [Thread-197933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:19:42.042 [DEBUG] [Thread-197933] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:19:42.042 [DEBUG] [Thread-197933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:19:42.042 [DEBUG] [Thread-197933] [transport.py] [_log()] Compression: none
2025-11-24T22:19:42.042 [DEBUG] [Thread-197933] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:19:42.100 [DEBUG] [Thread-197933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:19:42.101 [DEBUG] [Thread-197933] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:19:42.102 [DEBUG] [Thread-197933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:19:42.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:19:42.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:19:42.156 [DEBUG] [Thread-197933] [transport.py] [_log()] userauth is OK
2025-11-24T22:19:42.157 [DEBUG] [Thread-197933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:19:42.157 [DEBUG] [Thread-197933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:19:42.157 [DEBUG] [Thread-197933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:19:42.157 [DEBUG] [Thread-197933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:19:42.176 [INFO] [Thread-197933] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:19:42.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:19:42.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:19:43.000 [DEBUG] [Thread-197933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:19:43.000 [DEBUG] [Thread-197933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:19:43.047 [DEBUG] [Thread-197933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:19:43.047 [DEBUG] [Thread-197933] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:19:43.056 [DEBUG] [Thread-197933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:19:43.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:19:43.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-11-24T22:19:43.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-11-24T22:19:43.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:19:43.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:19:43.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:19:43.090 [DEBUG] [Thread-197933] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:19:52.789 [DEBUG] [Thread-197935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:20:07.894 [DEBUG] [Thread-197936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:20:13.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:20:13.114 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:20:13.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-11-24T22:20:13.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 20, 8), 16.56, 31.81, 0.0, 30.14, 14.76, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:20:13.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:20:08
2025-11-24T22:20:14.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:20:14.334 [DEBUG] [Thread-197937] [transport.py] [_log()] starting thread (client mode): 0xd0739060
2025-11-24T22:20:14.335 [DEBUG] [Thread-197937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:20:14.353 [DEBUG] [Thread-197937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:20:14.353 [INFO] [Thread-197937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:20:14.356 [DEBUG] [Thread-197937] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:20:14.356 [DEBUG] [Thread-197937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:20:14.356 [DEBUG] [Thread-197937] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:20:14.356 [DEBUG] [Thread-197937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:20:14.356 [DEBUG] [Thread-197937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:20:14.356 [DEBUG] [Thread-197937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:20:14.356 [DEBUG] [Thread-197937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:20:14.356 [DEBUG] [Thread-197937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:20:14.356 [DEBUG] [Thread-197937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:20:14.357 [DEBUG] [Thread-197937] [transport.py] [_log()] client lang: <none>
2025-11-24T22:20:14.357 [DEBUG] [Thread-197937] [transport.py] [_log()] server lang: <none>
2025-11-24T22:20:14.357 [DEBUG] [Thread-197937] [transport.py] [_log()] kex follows: False
2025-11-24T22:20:14.357 [DEBUG] [Thread-197937] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:20:14.357 [DEBUG] [Thread-197937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:20:14.358 [DEBUG] [Thread-197937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:20:14.358 [DEBUG] [Thread-197937] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:20:14.358 [DEBUG] [Thread-197937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:20:14.358 [DEBUG] [Thread-197937] [transport.py] [_log()] Compression: none
2025-11-24T22:20:14.358 [DEBUG] [Thread-197937] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:20:14.389 [DEBUG] [Thread-197937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:20:14.393 [DEBUG] [Thread-197937] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:20:14.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:20:14.395 [DEBUG] [Thread-197937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:20:14.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:20:14.399 [DEBUG] [Thread-197937] [transport.py] [_log()] userauth is OK
2025-11-24T22:20:14.399 [DEBUG] [Thread-197937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:20:14.399 [DEBUG] [Thread-197937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:20:14.399 [DEBUG] [Thread-197937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:20:14.399 [DEBUG] [Thread-197937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:20:14.436 [INFO] [Thread-197937] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:20:14.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:20:15.358 [DEBUG] [Thread-197937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:20:15.358 [DEBUG] [Thread-197937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:20:15.358 [DEBUG] [Thread-197937] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:20:15.399 [DEBUG] [Thread-197937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:20:15.399 [DEBUG] [Thread-197937] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:20:15.401 [DEBUG] [Thread-197937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:20:15.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:20:15.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:20:15.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:20:15.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:20:15.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:20:15.420 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:20:15.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:20:15.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:20:15.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:20:15.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.846922 -999.00  +14.80  22.35     37   +0.30 1 1 1 1 1     0    0 15.71 45.10 ZNESW 25.7 22.4 154.0 30.9 14.9 -24.9 14.9 -24.4 14.6 -23.2 14.9 -24.2
2025-11-24T22:20:15.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:20:15.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:20:15.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.846922
2025-11-24T22:20:15.426 [DEBUG] [Thread-197937] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:20:15.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:20:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:20:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:20:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:20:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:20:15.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:20:08', tmtdew=16.56, humidity=31.81, cloud=0.0, wind=30.14, temperature=14.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:20:08', seeing=0.55, atlas_timestamp='2025-11-24T20:19:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:17:00')
2025-11-24T22:20:15.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:20:15.516 [DEBUG] [Thread-197940] [transport.py] [_log()] starting thread (client mode): 0xd073b5e0
2025-11-24T22:20:15.516 [DEBUG] [Thread-197940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:20:15.531 [DEBUG] [Thread-197940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:20:15.531 [INFO] [Thread-197940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:20:15.539 [DEBUG] [Thread-197940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:20:15.539 [DEBUG] [Thread-197940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:20:15.539 [DEBUG] [Thread-197940] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:20:15.539 [DEBUG] [Thread-197940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:20:15.539 [DEBUG] [Thread-197940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] client lang: <none>
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] server lang: <none>
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] kex follows: False
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] Compression: none
2025-11-24T22:20:15.540 [DEBUG] [Thread-197940] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:20:15.595 [DEBUG] [Thread-197940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:20:15.595 [DEBUG] [Thread-197940] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:20:15.595 [DEBUG] [Thread-197940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:20:15.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:20:15.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:20:15.652 [DEBUG] [Thread-197940] [transport.py] [_log()] userauth is OK
2025-11-24T22:20:15.652 [DEBUG] [Thread-197940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:20:15.652 [DEBUG] [Thread-197940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:20:15.652 [DEBUG] [Thread-197940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:20:15.652 [DEBUG] [Thread-197940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:20:15.667 [INFO] [Thread-197940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:20:15.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:20:15.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:20:16.557 [DEBUG] [Thread-197940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:20:16.557 [DEBUG] [Thread-197940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:20:16.605 [DEBUG] [Thread-197940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:20:16.605 [DEBUG] [Thread-197940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:20:16.613 [DEBUG] [Thread-197940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:20:16.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:20:16.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-11-24T22:20:16.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-11-24T22:20:16.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:20:16.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:20:16.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:20:16.654 [DEBUG] [Thread-197940] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:20:22.951 [DEBUG] [Thread-197942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:20:37.655 [DEBUG] [Thread-197943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:20:38.054 [DEBUG] [Thread-197944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:20:42.189 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:20:42.190 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:20:46.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:20:46.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:20:46.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-11-24T22:20:47.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 20, 41), 16.61, 31.81, 0.0, 24.26, 14.75, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:20:47.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:20:41
2025-11-24T22:20:47.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:20:48.060 [DEBUG] [Thread-197945] [transport.py] [_log()] starting thread (client mode): 0xd0739c90
2025-11-24T22:20:48.061 [DEBUG] [Thread-197945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:20:48.065 [DEBUG] [Thread-197945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:20:48.065 [INFO] [Thread-197945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] client lang: <none>
2025-11-24T22:20:48.069 [DEBUG] [Thread-197945] [transport.py] [_log()] server lang: <none>
2025-11-24T22:20:48.070 [DEBUG] [Thread-197945] [transport.py] [_log()] kex follows: False
2025-11-24T22:20:48.070 [DEBUG] [Thread-197945] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:20:48.070 [DEBUG] [Thread-197945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:20:48.070 [DEBUG] [Thread-197945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:20:48.070 [DEBUG] [Thread-197945] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:20:48.070 [DEBUG] [Thread-197945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:20:48.070 [DEBUG] [Thread-197945] [transport.py] [_log()] Compression: none
2025-11-24T22:20:48.070 [DEBUG] [Thread-197945] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:20:48.101 [DEBUG] [Thread-197945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:20:48.102 [DEBUG] [Thread-197945] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:20:48.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:20:48.105 [DEBUG] [Thread-197945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:20:48.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:20:48.145 [DEBUG] [Thread-197945] [transport.py] [_log()] userauth is OK
2025-11-24T22:20:48.145 [DEBUG] [Thread-197945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:20:48.145 [DEBUG] [Thread-197945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:20:48.145 [DEBUG] [Thread-197945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:20:48.145 [DEBUG] [Thread-197945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:20:48.162 [INFO] [Thread-197945] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:20:48.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:20:48.754 [DEBUG] [Thread-197945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:20:48.754 [DEBUG] [Thread-197945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:20:48.764 [DEBUG] [Thread-197945] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:20:48.794 [DEBUG] [Thread-197945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:20:48.795 [DEBUG] [Thread-197945] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:20:48.798 [DEBUG] [Thread-197945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:20:48.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:20:48.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:20:48.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:20:48.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:20:48.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:20:48.823 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:20:48.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:20:48.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:20:48.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:20:48.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.847269 -999.00  +14.70  21.75     37   +0.30 1 1 1 1 1     0    0 15.62 43.97 ZNESW 20.0 21.8 158.9 28.2 15.0 -25.1 14.9 -24.5 14.6 -23.3 14.9 -24.2
2025-11-24T22:20:48.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:20:48.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:20:48.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.847269
2025-11-24T22:20:48.831 [DEBUG] [Thread-197945] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:20:48.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:20:48.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:20:48.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:20:48.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:20:48.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:20:48.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:20:41', tmtdew=16.61, humidity=31.81, cloud=0.0, wind=24.26, temperature=14.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:20:41', seeing=0.55, atlas_timestamp='2025-11-24T20:20:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:17:00')
2025-11-24T22:20:48.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:20:48.945 [DEBUG] [Thread-197948] [transport.py] [_log()] starting thread (client mode): 0xd0713430
2025-11-24T22:20:48.945 [DEBUG] [Thread-197948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:20:48.961 [DEBUG] [Thread-197948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:20:48.961 [INFO] [Thread-197948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:20:48.968 [DEBUG] [Thread-197948] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] client lang: <none>
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] server lang: <none>
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] kex follows: False
2025-11-24T22:20:48.969 [DEBUG] [Thread-197948] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:20:48.970 [DEBUG] [Thread-197948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:20:48.970 [DEBUG] [Thread-197948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:20:48.970 [DEBUG] [Thread-197948] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:20:48.970 [DEBUG] [Thread-197948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:20:48.970 [DEBUG] [Thread-197948] [transport.py] [_log()] Compression: none
2025-11-24T22:20:48.970 [DEBUG] [Thread-197948] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:20:49.031 [DEBUG] [Thread-197948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:20:49.031 [DEBUG] [Thread-197948] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:20:49.031 [DEBUG] [Thread-197948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:20:49.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:20:49.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:20:49.088 [DEBUG] [Thread-197948] [transport.py] [_log()] userauth is OK
2025-11-24T22:20:49.088 [DEBUG] [Thread-197948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:20:49.088 [DEBUG] [Thread-197948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:20:49.088 [DEBUG] [Thread-197948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:20:49.088 [DEBUG] [Thread-197948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:20:49.102 [INFO] [Thread-197948] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:20: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-11-24T22:20:49.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:20:49.922 [DEBUG] [Thread-197948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:20:49.931 [DEBUG] [Thread-197948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:20:49.970 [DEBUG] [Thread-197948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:20:49.971 [DEBUG] [Thread-197948] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:20:49.980 [DEBUG] [Thread-197948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:20:49.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:20:49.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-11-24T22:20:49.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-11-24T22:20:50.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:20:50.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:20:50.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:20:50.018 [DEBUG] [Thread-197948] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:20:53.097 [DEBUG] [Thread-197950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:21:08.222 [DEBUG] [Thread-197951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:21:20.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:21:20.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:21:20.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-11-24T22:21:20.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 21, 14), 16.61, 31.79, 0.0, 26.77, 14.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:21:20.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:21:14
2025-11-24T22:21:21.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:21:21.271 [DEBUG] [Thread-197952] [transport.py] [_log()] starting thread (client mode): 0xc9b80bb0
2025-11-24T22:21:21.272 [DEBUG] [Thread-197952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:21:21.280 [DEBUG] [Thread-197952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:21:21.280 [INFO] [Thread-197952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:21:21.285 [DEBUG] [Thread-197952] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] client lang: <none>
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] server lang: <none>
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] kex follows: False
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:21:21.286 [DEBUG] [Thread-197952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:21:21.287 [DEBUG] [Thread-197952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:21:21.287 [DEBUG] [Thread-197952] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:21:21.287 [DEBUG] [Thread-197952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:21:21.287 [DEBUG] [Thread-197952] [transport.py] [_log()] Compression: none
2025-11-24T22:21:21.287 [DEBUG] [Thread-197952] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:21:21.322 [DEBUG] [Thread-197952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:21:21.328 [DEBUG] [Thread-197952] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:21:21.330 [DEBUG] [Thread-197952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:21:21.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:21:21.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:21:21.336 [DEBUG] [Thread-197952] [transport.py] [_log()] userauth is OK
2025-11-24T22:21:21.336 [DEBUG] [Thread-197952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:21:21.336 [DEBUG] [Thread-197952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:21:21.336 [DEBUG] [Thread-197952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:21:21.337 [DEBUG] [Thread-197952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:21:21.363 [INFO] [Thread-197952] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:21:21.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:21:22.007 [DEBUG] [Thread-197952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:21:22.007 [DEBUG] [Thread-197952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:21:22.008 [DEBUG] [Thread-197952] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:21:22.048 [DEBUG] [Thread-197952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:21:22.048 [DEBUG] [Thread-197952] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:21:22.051 [DEBUG] [Thread-197952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:21:22.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:21:22.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:21:22.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:21:22.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:21:22.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:21:22.072 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:21:22.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:21:22.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:21:22.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:21:22.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.847617 -999.00  +14.70  18.61     37   +0.20 1 1 1 1 1     0    0 15.65 45.30 ZNESW 22.6 18.6 153.6 28.0 15.0 -25.0 14.8 -24.4 14.6 -23.4 14.9 -24.2
2025-11-24T22:21:22.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:21:22.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:21:22.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.847617
2025-11-24T22:21:22.085 [DEBUG] [Thread-197952] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:21:22.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:21:22.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:21:22.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:21:22.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:21:22.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:21:22.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:21:14', tmtdew=16.61, humidity=31.79, cloud=0.0, wind=26.77, temperature=14.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:21:14', seeing=0.54, atlas_timestamp='2025-11-24T20:20:34.109', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:17:00')
2025-11-24T22:21:22.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:21:22.180 [DEBUG] [Thread-197955] [transport.py] [_log()] starting thread (client mode): 0xd0712350
2025-11-24T22:21:22.180 [DEBUG] [Thread-197955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:21:22.195 [DEBUG] [Thread-197955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:21:22.195 [INFO] [Thread-197955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] client lang: <none>
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] server lang: <none>
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] kex follows: False
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] Compression: none
2025-11-24T22:21:22.203 [DEBUG] [Thread-197955] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:21:22.260 [DEBUG] [Thread-197955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:21:22.260 [DEBUG] [Thread-197955] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:21:22.260 [DEBUG] [Thread-197955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:21:22.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:21:22.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:21:22.316 [DEBUG] [Thread-197955] [transport.py] [_log()] userauth is OK
2025-11-24T22:21:22.316 [DEBUG] [Thread-197955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:21:22.316 [DEBUG] [Thread-197955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:21:22.316 [DEBUG] [Thread-197955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:21:22.316 [DEBUG] [Thread-197955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:21:22.330 [INFO] [Thread-197955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:21:22.330 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:21:22.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:21:23.165 [DEBUG] [Thread-197955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:21:23.165 [DEBUG] [Thread-197955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:21:23.212 [DEBUG] [Thread-197955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:21:23.212 [DEBUG] [Thread-197955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:21:23.220 [DEBUG] [Thread-197955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:21:23.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:21:23.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:21:23.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') -> 00000000
2025-11-24T22:21:23.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:21:23.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:21:23.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:21:23.262 [DEBUG] [Thread-197955] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:21:23.268 [DEBUG] [Thread-197957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:21:37.918 [DEBUG] [Thread-197958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:21:38.424 [DEBUG] [Thread-197959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:21:42.395 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:21:42.396 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:21:53.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:21:53.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:21:53.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:21:53.467 [DEBUG] [Thread-197960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:21:54.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 21, 46), 16.5, 31.83, 0.0, 27.83, 14.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:21:54.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:21:46
2025-11-24T22:21:54.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:21:54.538 [DEBUG] [Thread-197961] [transport.py] [_log()] starting thread (client mode): 0xd317cfa0
2025-11-24T22:21:54.538 [DEBUG] [Thread-197961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:21:54.554 [DEBUG] [Thread-197961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:21:54.554 [INFO] [Thread-197961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] client lang: <none>
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] server lang: <none>
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] kex follows: False
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:21:54.557 [DEBUG] [Thread-197961] [transport.py] [_log()] Compression: none
2025-11-24T22:21:54.558 [DEBUG] [Thread-197961] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:21:54.566 [DEBUG] [Thread-197961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:21:54.568 [DEBUG] [Thread-197961] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:21:54.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:21:54.569 [DEBUG] [Thread-197961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:21:54.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:21:54.570 [DEBUG] [Thread-197961] [transport.py] [_log()] userauth is OK
2025-11-24T22:21:54.570 [DEBUG] [Thread-197961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:21:54.570 [DEBUG] [Thread-197961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:21:54.570 [DEBUG] [Thread-197961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:21:54.570 [DEBUG] [Thread-197961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:21:54.580 [INFO] [Thread-197961] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:21:54.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:21:55.212 [DEBUG] [Thread-197961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:21:55.212 [DEBUG] [Thread-197961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:21:55.213 [DEBUG] [Thread-197961] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:21:55.253 [DEBUG] [Thread-197961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:21:55.254 [DEBUG] [Thread-197961] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:21:55.257 [DEBUG] [Thread-197961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:21:55.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:21:55.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:21:55.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:21:55.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:21:55.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:21:55.282 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:21:55.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:21:55.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:21:55.285 [DEBUG] [Thread-197961] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:21:55.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:21:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.847964 -999.00  +14.70  19.33     37   +0.20 1 1 1 1 1     0    0 15.56 43.32 ZNESW 20.4 19.3 160.0 29.7 14.9 -25.0 14.8 -24.5 14.6 -23.4 14.9 -24.1
2025-11-24T22:21:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:21:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:21:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.847964
2025-11-24T22:21:55.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:21:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:21:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:21:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:21:55.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:21:55.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:21:46', tmtdew=16.5, humidity=31.83, cloud=0.0, wind=27.83, temperature=14.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:21:46', seeing=0.58, atlas_timestamp='2025-11-24T20:21:04.090', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:17:00')
2025-11-24T22:21:55.384 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:21:55.396 [DEBUG] [Thread-197964] [transport.py] [_log()] starting thread (client mode): 0xd31f4e80
2025-11-24T22:21:55.396 [DEBUG] [Thread-197964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:21:55.410 [DEBUG] [Thread-197964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:21:55.410 [INFO] [Thread-197964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:21:55.419 [DEBUG] [Thread-197964] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:21:55.419 [DEBUG] [Thread-197964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:21:55.419 [DEBUG] [Thread-197964] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:21:55.419 [DEBUG] [Thread-197964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:21:55.419 [DEBUG] [Thread-197964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:21:55.419 [DEBUG] [Thread-197964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:21:55.419 [DEBUG] [Thread-197964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:21:55.419 [DEBUG] [Thread-197964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:21:55.419 [DEBUG] [Thread-197964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:21:55.419 [DEBUG] [Thread-197964] [transport.py] [_log()] client lang: <none>
2025-11-24T22:21:55.420 [DEBUG] [Thread-197964] [transport.py] [_log()] server lang: <none>
2025-11-24T22:21:55.420 [DEBUG] [Thread-197964] [transport.py] [_log()] kex follows: False
2025-11-24T22:21:55.420 [DEBUG] [Thread-197964] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:21:55.420 [DEBUG] [Thread-197964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:21:55.420 [DEBUG] [Thread-197964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:21:55.420 [DEBUG] [Thread-197964] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:21:55.420 [DEBUG] [Thread-197964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:21:55.420 [DEBUG] [Thread-197964] [transport.py] [_log()] Compression: none
2025-11-24T22:21:55.420 [DEBUG] [Thread-197964] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:21:55.475 [DEBUG] [Thread-197964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:21:55.475 [DEBUG] [Thread-197964] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:21:55.475 [DEBUG] [Thread-197964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:21:55.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:21:55.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:21:55.532 [DEBUG] [Thread-197964] [transport.py] [_log()] userauth is OK
2025-11-24T22:21:55.532 [DEBUG] [Thread-197964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:21:55.532 [DEBUG] [Thread-197964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:21:55.532 [DEBUG] [Thread-197964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:21:55.532 [DEBUG] [Thread-197964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:21:55.547 [INFO] [Thread-197964] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:21:55.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:21:55.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:21:56.420 [DEBUG] [Thread-197964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:21:56.421 [DEBUG] [Thread-197964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:21:56.468 [DEBUG] [Thread-197964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:21:56.468 [DEBUG] [Thread-197964] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:21:56.478 [DEBUG] [Thread-197964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:21:56.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:21:56.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-11-24T22:21:56.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-11-24T22:21:56.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:21:56.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:21:56.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:21:56.517 [DEBUG] [Thread-197964] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:22:08.513 [DEBUG] [Thread-197966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:22:23.601 [DEBUG] [Thread-197967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:22:26.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:22:26.531 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:22:26.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:22:27.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 22, 19), 16.51, 31.81, 0.0, 27.07, 14.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:22:27.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:22:19
2025-11-24T22:22:27.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:22:27.738 [DEBUG] [Thread-197968] [transport.py] [_log()] starting thread (client mode): 0xd0713970
2025-11-24T22:22:27.738 [DEBUG] [Thread-197968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:22:27.757 [DEBUG] [Thread-197968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:22:27.757 [INFO] [Thread-197968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] client lang: <none>
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] server lang: <none>
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] kex follows: False
2025-11-24T22:22:27.760 [DEBUG] [Thread-197968] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:22:27.761 [DEBUG] [Thread-197968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:22:27.761 [DEBUG] [Thread-197968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:22:27.761 [DEBUG] [Thread-197968] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:22:27.761 [DEBUG] [Thread-197968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:22:27.761 [DEBUG] [Thread-197968] [transport.py] [_log()] Compression: none
2025-11-24T22:22:27.761 [DEBUG] [Thread-197968] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:22:27.790 [DEBUG] [Thread-197968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:22:27.793 [DEBUG] [Thread-197968] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:22:27.794 [DEBUG] [Thread-197968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:22:27.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:22:27.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:22:27.798 [DEBUG] [Thread-197968] [transport.py] [_log()] userauth is OK
2025-11-24T22:22:27.798 [DEBUG] [Thread-197968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:22:27.798 [DEBUG] [Thread-197968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:22:27.798 [DEBUG] [Thread-197968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:22:27.798 [DEBUG] [Thread-197968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:22:27.834 [INFO] [Thread-197968] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:22:27.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:22:28.462 [DEBUG] [Thread-197968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:22:28.462 [DEBUG] [Thread-197968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:22:28.463 [DEBUG] [Thread-197968] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:22:28.503 [DEBUG] [Thread-197968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:22:28.503 [DEBUG] [Thread-197968] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:22:28.505 [DEBUG] [Thread-197968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:22:28.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:22:28.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:22:28.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:22:28.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:22:28.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:22:28.524 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:22:28.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:22:28.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:22:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:22:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.848311 -999.00  +14.70  21.70     37   +0.30 1 1 1 1 1     0    0 15.67 41.28 ZNESW 22.8 21.7 171.0 31.4 14.9 -25.0 14.8 -24.5 14.6 -23.2 14.9 -24.1
2025-11-24T22:22:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:22:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:22:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.848311
2025-11-24T22:22:28.530 [DEBUG] [Thread-197968] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:22:28.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:22:28.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:22:28.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:22:28.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:22:28.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:22:28.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:22:19', tmtdew=16.51, humidity=31.81, cloud=0.0, wind=27.07, temperature=14.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:22:20', seeing=0.41, atlas_timestamp='2025-11-24T20:21:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[0.018749999999998934, 0.005250000000000199, -0.0012499999999988631, 0.013999999999999346, 0.0045000000000001705, 0.07925000000000182, -0.012500000000001066, 0.034250000000000114, 0.05799999999999983, 0.028999999999999915, 0.0467499999999994, -0.0035000000000007248, 0.08249999999999957, 0.08124999999999893, 0.051000000000000156, 0.02949999999999875, 0.030750000000001165, 0.061500000000000554, 0.07399999999999984, -0.003750000000000142, 0.10849999999999937, 0.05274999999999963, 0.048250000000001236, 0.0417500000000004, 0.016000000000000014, 0.08050000000000068, 0.05674999999999919, 0.07350000000000101, 0.12899999999999956, 0.06650000000000134, 0.07350000000000101, 0.03550000000000075, -0.028750000000000497], zp_timestamp='2025-11-24T20:17:00')
2025-11-24T22:22:28.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:22:28.620 [DEBUG] [Thread-197971] [transport.py] [_log()] starting thread (client mode): 0xd0710ac0
2025-11-24T22:22:28.620 [DEBUG] [Thread-197971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:22:28.634 [DEBUG] [Thread-197971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:22:28.634 [INFO] [Thread-197971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] client lang: <none>
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] server lang: <none>
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] kex follows: False
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] Compression: none
2025-11-24T22:22:28.643 [DEBUG] [Thread-197971] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:22:28.699 [DEBUG] [Thread-197971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:22:28.699 [DEBUG] [Thread-197971] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:22:28.700 [DEBUG] [Thread-197971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:22:28.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:22:28.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:22:28.760 [DEBUG] [Thread-197971] [transport.py] [_log()] userauth is OK
2025-11-24T22:22:28.760 [DEBUG] [Thread-197971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:22:28.760 [DEBUG] [Thread-197971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:22:28.760 [DEBUG] [Thread-197971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:22:28.760 [DEBUG] [Thread-197971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:22:28.776 [INFO] [Thread-197971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:22:28.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:22:28.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:22:29.659 [DEBUG] [Thread-197971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:22:29.659 [DEBUG] [Thread-197971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:22:29.711 [DEBUG] [Thread-197971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:22:29.711 [DEBUG] [Thread-197971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:22:29.719 [DEBUG] [Thread-197971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:22:29.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:22:29.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-11-24T22:22:29.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:22:29.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:22:29.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:22:29.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:22:29.752 [DEBUG] [Thread-197971] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:22:38.280 [DEBUG] [Thread-197973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:22:38.635 [DEBUG] [Thread-197974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:22:42.599 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:22:42.601 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:22:53.736 [DEBUG] [Thread-197975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:22:59.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:22:59.787 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:22:59.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-11-24T22:23:00.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 22, 53), 16.53, 31.88, 0.0, 27.93, 14.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:23:00.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:22:53
2025-11-24T22:23:00.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:23:01.143 [DEBUG] [Thread-197976] [transport.py] [_log()] starting thread (client mode): 0xd314a350
2025-11-24T22:23:01.144 [DEBUG] [Thread-197976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:23:01.154 [DEBUG] [Thread-197976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:23:01.155 [INFO] [Thread-197976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:23:01.161 [DEBUG] [Thread-197976] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:23:01.161 [DEBUG] [Thread-197976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:23:01.161 [DEBUG] [Thread-197976] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:23:01.161 [DEBUG] [Thread-197976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:23:01.162 [DEBUG] [Thread-197976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:23:01.162 [DEBUG] [Thread-197976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:23:01.162 [DEBUG] [Thread-197976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:23:01.162 [DEBUG] [Thread-197976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:23:01.162 [DEBUG] [Thread-197976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:23:01.162 [DEBUG] [Thread-197976] [transport.py] [_log()] client lang: <none>
2025-11-24T22:23:01.162 [DEBUG] [Thread-197976] [transport.py] [_log()] server lang: <none>
2025-11-24T22:23:01.162 [DEBUG] [Thread-197976] [transport.py] [_log()] kex follows: False
2025-11-24T22:23:01.162 [DEBUG] [Thread-197976] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:23:01.163 [DEBUG] [Thread-197976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:23:01.163 [DEBUG] [Thread-197976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:23:01.164 [DEBUG] [Thread-197976] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:23:01.164 [DEBUG] [Thread-197976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:23:01.164 [DEBUG] [Thread-197976] [transport.py] [_log()] Compression: none
2025-11-24T22:23:01.164 [DEBUG] [Thread-197976] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:23:01.203 [DEBUG] [Thread-197976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:23:01.210 [DEBUG] [Thread-197976] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:23:01.215 [DEBUG] [Thread-197976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:23:01.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:23:01.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:23:01.221 [DEBUG] [Thread-197976] [transport.py] [_log()] userauth is OK
2025-11-24T22:23:01.222 [DEBUG] [Thread-197976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:23:01.222 [DEBUG] [Thread-197976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:23:01.222 [DEBUG] [Thread-197976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:23:01.222 [DEBUG] [Thread-197976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:23:01.249 [INFO] [Thread-197976] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:23:01.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:23:01.825 [DEBUG] [Thread-197976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:23:01.825 [DEBUG] [Thread-197976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:23:01.825 [DEBUG] [Thread-197976] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:23:01.866 [DEBUG] [Thread-197976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:23:01.866 [DEBUG] [Thread-197976] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:23:01.870 [DEBUG] [Thread-197976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:23:01.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:23:01.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:23:01.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:23:01.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:23:01.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:23:01.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:23:01.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:23:01.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:23:01.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:23:01.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.849005 -999.00  +14.70  21.81     37   +0.30 1 1 1 1 1     0    0 15.38 35.21 ZNESW 23.9 21.8 155.6 26.5 14.9 -25.0 14.8 -24.5 14.6 -23.3 14.9 -24.4
2025-11-24T22:23:01.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:23:01.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:23:01.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.849005
2025-11-24T22:23:01.909 [DEBUG] [Thread-197976] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:23:01.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:23:01.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:23:01.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:23:01.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:23:01.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:23:01.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:22:53', tmtdew=16.53, humidity=31.88, cloud=0.0, wind=27.93, temperature=14.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:22:53', seeing=0.5, atlas_timestamp='2025-11-24T20:22:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.020749999999999602, 0.02925000000000111, -0.05349999999999966, 0.04100000000000037, 0.07325000000000159, -0.041999999999999815, 0.01025000000000098, 0.01249999999999929, -0.017999999999998906, 0.008250000000000313, -0.032999999999999474, 0.02999999999999936, 0.029249999999999332, 0.004999999999999005, -0.031000000000000583, 0.0072499999999990905, 0.022999999999999687, 0.06399999999999828, -0.03375000000000128, 0.03999999999999915, 0.04374999999999929, 0.012250000000001648, 0.0022500000000000853, -0.0024999999999995026, 0.027499999999999858, 0.06174999999999997, 0.04800000000000004, 0.10999999999999943, 0.0710000000000015, 0.038000000000000256, -0.008999999999998565, -0.06425000000000125], zp_timestamp='2025-11-24T20:20:00')
2025-11-24T22:23:01.998 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:23:02.010 [DEBUG] [Thread-197979] [transport.py] [_log()] starting thread (client mode): 0xd3149840
2025-11-24T22:23:02.010 [DEBUG] [Thread-197979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:23:02.028 [DEBUG] [Thread-197979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:23:02.028 [INFO] [Thread-197979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:23:02.035 [DEBUG] [Thread-197979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:23:02.035 [DEBUG] [Thread-197979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] client lang: <none>
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] server lang: <none>
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] kex follows: False
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] Compression: none
2025-11-24T22:23:02.036 [DEBUG] [Thread-197979] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:23:02.093 [DEBUG] [Thread-197979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:23:02.094 [DEBUG] [Thread-197979] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:23:02.095 [DEBUG] [Thread-197979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:23:02.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:23:02.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:23:02.152 [DEBUG] [Thread-197979] [transport.py] [_log()] userauth is OK
2025-11-24T22:23:02.152 [DEBUG] [Thread-197979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:23:02.152 [DEBUG] [Thread-197979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:23:02.152 [DEBUG] [Thread-197979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:23:02.152 [DEBUG] [Thread-197979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:23:02.167 [INFO] [Thread-197979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:23:02.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:23:02.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:23:02.966 [DEBUG] [Thread-197979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:23:02.966 [DEBUG] [Thread-197979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:23:03.014 [DEBUG] [Thread-197979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:23:03.014 [DEBUG] [Thread-197979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:23:03.023 [DEBUG] [Thread-197979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:23:03.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:23:03.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:23:03.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:23:03.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:23:03.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:23:03.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:23:03.057 [DEBUG] [Thread-197979] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:23:08.788 [DEBUG] [Thread-197981 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:23:23.938 [DEBUG] [Thread-197982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:23:33.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:23:33.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:23:33.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-11-24T22:23:34.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 23, 26), 16.53, 31.86, 0.0, 26.8, 14.68, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:23:34.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:23:26
2025-11-24T22:23:34.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:23:34.511 [DEBUG] [Thread-197983] [transport.py] [_log()] starting thread (client mode): 0xd3149900
2025-11-24T22:23:34.512 [DEBUG] [Thread-197983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:23:34.515 [DEBUG] [Thread-197983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:23:34.515 [INFO] [Thread-197983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] client lang: <none>
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] server lang: <none>
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] kex follows: False
2025-11-24T22:23:34.520 [DEBUG] [Thread-197983] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:23:34.521 [DEBUG] [Thread-197983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:23:34.521 [DEBUG] [Thread-197983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:23:34.521 [DEBUG] [Thread-197983] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:23:34.521 [DEBUG] [Thread-197983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:23:34.521 [DEBUG] [Thread-197983] [transport.py] [_log()] Compression: none
2025-11-24T22:23:34.521 [DEBUG] [Thread-197983] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:23:34.556 [DEBUG] [Thread-197983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:23:34.560 [DEBUG] [Thread-197983] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:23:34.562 [DEBUG] [Thread-197983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:23:34.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:23:34.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:23:34.566 [DEBUG] [Thread-197983] [transport.py] [_log()] userauth is OK
2025-11-24T22:23:34.567 [DEBUG] [Thread-197983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:23:34.567 [DEBUG] [Thread-197983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:23:34.567 [DEBUG] [Thread-197983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:23:34.567 [DEBUG] [Thread-197983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:23:34.592 [INFO] [Thread-197983] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:23:34.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:23:35.234 [DEBUG] [Thread-197983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:23:35.234 [DEBUG] [Thread-197983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:23:35.244 [DEBUG] [Thread-197983] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:23:35.275 [DEBUG] [Thread-197983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:23:35.275 [DEBUG] [Thread-197983] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:23:35.277 [DEBUG] [Thread-197983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:23:35.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:23:35.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:23:35.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:23:35.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:23:35.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:23:35.299 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:23:35.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:23:35.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:23:35.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:23:35.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.849353 -999.00  +14.70  25.09     37   +0.30 1 1 1 1 1     0    0 15.19 34.59 ZNESW 22.4 25.1 165.8 33.2 14.9 -24.8 14.8 -24.5 14.6 -23.3 14.9 -24.2
2025-11-24T22:23:35.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:23:35.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:23:35.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.849353
2025-11-24T22:23:35.307 [DEBUG] [Thread-197983] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:23:35.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:23:35.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:23:35.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:23:35.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:23:35.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:23:35.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:23:26', tmtdew=16.53, humidity=31.86, cloud=0.0, wind=26.8, temperature=14.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:23:26', seeing=0.5, atlas_timestamp='2025-11-24T20:23:04.099', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.020749999999999602, 0.02925000000000111, -0.05349999999999966, 0.04100000000000037, 0.07325000000000159, -0.041999999999999815, 0.01025000000000098, 0.01249999999999929, -0.017999999999998906, 0.008250000000000313, -0.032999999999999474, 0.02999999999999936, 0.029249999999999332, 0.004999999999999005, -0.031000000000000583, 0.0072499999999990905, 0.022999999999999687, 0.06399999999999828, -0.03375000000000128, 0.03999999999999915, 0.04374999999999929, 0.012250000000001648, 0.0022500000000000853, -0.0024999999999995026, 0.027499999999999858, 0.06174999999999997, 0.04800000000000004, 0.10999999999999943, 0.0710000000000015, 0.038000000000000256, -0.008999999999998565, -0.06425000000000125], zp_timestamp='2025-11-24T20:20:00')
2025-11-24T22:23:35.393 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:23:35.405 [DEBUG] [Thread-197986] [transport.py] [_log()] starting thread (client mode): 0xd07f87c0
2025-11-24T22:23:35.405 [DEBUG] [Thread-197986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:23:35.421 [DEBUG] [Thread-197986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:23:35.422 [INFO] [Thread-197986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] client lang: <none>
2025-11-24T22:23:35.429 [DEBUG] [Thread-197986] [transport.py] [_log()] server lang: <none>
2025-11-24T22:23:35.430 [DEBUG] [Thread-197986] [transport.py] [_log()] kex follows: False
2025-11-24T22:23:35.430 [DEBUG] [Thread-197986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:23:35.430 [DEBUG] [Thread-197986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:23:35.430 [DEBUG] [Thread-197986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:23:35.430 [DEBUG] [Thread-197986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:23:35.430 [DEBUG] [Thread-197986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:23:35.430 [DEBUG] [Thread-197986] [transport.py] [_log()] Compression: none
2025-11-24T22:23:35.430 [DEBUG] [Thread-197986] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:23:35.488 [DEBUG] [Thread-197986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:23:35.489 [DEBUG] [Thread-197986] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:23:35.489 [DEBUG] [Thread-197986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:23:35.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:23:35.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:23:35.545 [DEBUG] [Thread-197986] [transport.py] [_log()] userauth is OK
2025-11-24T22:23:35.545 [DEBUG] [Thread-197986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:23:35.545 [DEBUG] [Thread-197986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:23:35.545 [DEBUG] [Thread-197986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:23:35.545 [DEBUG] [Thread-197986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:23:35.564 [INFO] [Thread-197986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:23:35.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:23:35.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:23:36.392 [DEBUG] [Thread-197986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:23:36.392 [DEBUG] [Thread-197986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:23:36.440 [DEBUG] [Thread-197986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:23:36.440 [DEBUG] [Thread-197986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:23:36.449 [DEBUG] [Thread-197986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:23:36.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:23:36.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-11-24T22:23:36.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-11-24T22:23:36.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:23:36.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:23:36.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:23:36.487 [DEBUG] [Thread-197986] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:23:38.539 [DEBUG] [Thread-197988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:23:39.011 [DEBUG] [Thread-197989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:23:42.807 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:23:42.808 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:23:54.188 [DEBUG] [Thread-197990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:24:06.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:24:06.512 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:24:06.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-11-24T22:24:07.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 23, 58), 16.49, 31.84, 0.0, 26.56, 14.65, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:24:07.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:23:58
2025-11-24T22:24:07.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:24:07.860 [DEBUG] [Thread-197991] [transport.py] [_log()] starting thread (client mode): 0xd318bf70
2025-11-24T22:24:07.861 [DEBUG] [Thread-197991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:24:07.863 [DEBUG] [Thread-197991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:24:07.863 [INFO] [Thread-197991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] client lang: <none>
2025-11-24T22:24:07.868 [DEBUG] [Thread-197991] [transport.py] [_log()] server lang: <none>
2025-11-24T22:24:07.869 [DEBUG] [Thread-197991] [transport.py] [_log()] kex follows: False
2025-11-24T22:24:07.869 [DEBUG] [Thread-197991] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:24:07.869 [DEBUG] [Thread-197991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:24:07.869 [DEBUG] [Thread-197991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:24:07.869 [DEBUG] [Thread-197991] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:24:07.870 [DEBUG] [Thread-197991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:24:07.870 [DEBUG] [Thread-197991] [transport.py] [_log()] Compression: none
2025-11-24T22:24:07.870 [DEBUG] [Thread-197991] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:24:07.899 [DEBUG] [Thread-197991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:24:07.903 [DEBUG] [Thread-197991] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:24:07.904 [DEBUG] [Thread-197991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:24:07.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:24:07.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:24:07.907 [DEBUG] [Thread-197991] [transport.py] [_log()] userauth is OK
2025-11-24T22:24:07.908 [DEBUG] [Thread-197991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:24:07.908 [DEBUG] [Thread-197991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:24:07.908 [DEBUG] [Thread-197991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:24:07.908 [DEBUG] [Thread-197991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:24:07.929 [INFO] [Thread-197991] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:24:07.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:24:08.542 [DEBUG] [Thread-197991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:24:08.542 [DEBUG] [Thread-197991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:24:08.553 [DEBUG] [Thread-197991] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:24:08.583 [DEBUG] [Thread-197991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:24:08.583 [DEBUG] [Thread-197991] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:24:08.587 [DEBUG] [Thread-197991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:24:08.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:24:08.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:24:08.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:24:08.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:24:08.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:24:08.613 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:24:08.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:24:08.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:24:08.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:24:08.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.849700 -999.00  +14.70  18.45     37   +0.30 1 1 1 1 1     0    0 15.24 30.13 ZNESW 19.2 18.4 162.6 27.4 14.9 -25.0 14.8 -24.5 14.5 -23.4 14.9 -24.2
2025-11-24T22:24:08.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:24:08.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:24:08.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.849700
2025-11-24T22:24:08.620 [DEBUG] [Thread-197991] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:24:08.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:24:08.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:24:08.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:24:08.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:24:08.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:24:08.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:23:58', tmtdew=16.49, humidity=31.84, cloud=0.0, wind=26.56, temperature=14.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:23:59', seeing=0.49, atlas_timestamp='2025-11-24T20:23:34.080', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.020749999999999602, 0.02925000000000111, -0.05349999999999966, 0.04100000000000037, 0.07325000000000159, -0.041999999999999815, 0.01025000000000098, 0.01249999999999929, -0.017999999999998906, 0.008250000000000313, -0.032999999999999474, 0.02999999999999936, 0.029249999999999332, 0.004999999999999005, -0.031000000000000583, 0.0072499999999990905, 0.022999999999999687, 0.06399999999999828, -0.03375000000000128, 0.03999999999999915, 0.04374999999999929, 0.012250000000001648, 0.0022500000000000853, -0.0024999999999995026, 0.027499999999999858, 0.06174999999999997, 0.04800000000000004, 0.10999999999999943, 0.0710000000000015, 0.038000000000000256, -0.008999999999998565, -0.06425000000000125], zp_timestamp='2025-11-24T20:20:00')
2025-11-24T22:24:08.726 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:24:08.739 [DEBUG] [Thread-197994] [transport.py] [_log()] starting thread (client mode): 0xd0713d00
2025-11-24T22:24:08.739 [DEBUG] [Thread-197994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:24:08.753 [DEBUG] [Thread-197994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:24:08.754 [INFO] [Thread-197994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:24:08.761 [DEBUG] [Thread-197994] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:24:08.761 [DEBUG] [Thread-197994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:24:08.761 [DEBUG] [Thread-197994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:24:08.761 [DEBUG] [Thread-197994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] client lang: <none>
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] server lang: <none>
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] kex follows: False
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] Compression: none
2025-11-24T22:24:08.762 [DEBUG] [Thread-197994] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:24:08.822 [DEBUG] [Thread-197994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:24:08.822 [DEBUG] [Thread-197994] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:24:08.822 [DEBUG] [Thread-197994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:24:08.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:24:08.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:24:08.884 [DEBUG] [Thread-197994] [transport.py] [_log()] userauth is OK
2025-11-24T22:24:08.884 [DEBUG] [Thread-197994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:24:08.884 [DEBUG] [Thread-197994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:24:08.884 [DEBUG] [Thread-197994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:24:08.884 [DEBUG] [Thread-197994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:24:08.907 [INFO] [Thread-197994] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:24:08.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:24:08.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:24:09.287 [DEBUG] [Thread-197996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:24:09.730 [DEBUG] [Thread-197994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:24:09.730 [DEBUG] [Thread-197994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:24:09.777 [DEBUG] [Thread-197994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:24:09.778 [DEBUG] [Thread-197994] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:24:09.787 [DEBUG] [Thread-197994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:24:09.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:24:09.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:24:09.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:24:09.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:24:09.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:24:09.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:24:09.844 [DEBUG] [Thread-197994] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:24:24.372 [DEBUG] [Thread-197997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:24:38.851 [DEBUG] [Thread-197998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:24:39.425 [DEBUG] [Thread-197999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:24:39.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:24:39.845 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:24:39.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-11-24T22:24:40.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 24, 31), 16.43, 31.96, 0.0, 28.0, 14.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:24:40.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:24:31
2025-11-24T22:24:40.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:24:41.068 [DEBUG] [Thread-198000] [transport.py] [_log()] starting thread (client mode): 0xd07fa740
2025-11-24T22:24:41.069 [DEBUG] [Thread-198000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:24:41.081 [DEBUG] [Thread-198000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:24:41.081 [INFO] [Thread-198000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:24:41.085 [DEBUG] [Thread-198000] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] client lang: <none>
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] server lang: <none>
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] kex follows: False
2025-11-24T22:24:41.086 [DEBUG] [Thread-198000] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:24:41.087 [DEBUG] [Thread-198000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:24:41.087 [DEBUG] [Thread-198000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:24:41.087 [DEBUG] [Thread-198000] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:24:41.087 [DEBUG] [Thread-198000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:24:41.087 [DEBUG] [Thread-198000] [transport.py] [_log()] Compression: none
2025-11-24T22:24:41.087 [DEBUG] [Thread-198000] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:24:41.119 [DEBUG] [Thread-198000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:24:41.124 [DEBUG] [Thread-198000] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:24:41.126 [DEBUG] [Thread-198000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:24:41.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:24:41.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:24:41.132 [DEBUG] [Thread-198000] [transport.py] [_log()] userauth is OK
2025-11-24T22:24:41.132 [DEBUG] [Thread-198000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:24:41.133 [DEBUG] [Thread-198000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:24:41.133 [DEBUG] [Thread-198000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:24:41.133 [DEBUG] [Thread-198000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:24:41.158 [INFO] [Thread-198000] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:24:41.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:24:41.760 [DEBUG] [Thread-198000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:24:41.761 [DEBUG] [Thread-198000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:24:41.771 [DEBUG] [Thread-198000] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:24:41.802 [DEBUG] [Thread-198000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:24:41.802 [DEBUG] [Thread-198000] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:24:41.806 [DEBUG] [Thread-198000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:24:41.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:24:41.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:24:41.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:24:41.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:24:41.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:24:41.836 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:24:41.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:24:41.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:24:41.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:24:41.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.850047 -999.00  +14.60  19.09     37   +0.30 1 1 1 1 1     0    0 15.25 27.92 ZNESW 16.9 19.1 158.9 26.2 14.9 -25.0 14.7 -24.5 14.5 -23.4 14.8 -24.3
2025-11-24T22:24:41.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:24:41.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:24:41.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.850047
2025-11-24T22:24:41.844 [DEBUG] [Thread-198000] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:24:41.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:24:41.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:24:41.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:24:41.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:24:41.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:24:41.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:24:31', tmtdew=16.43, humidity=31.96, cloud=0.0, wind=28.0, temperature=14.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:24:31', seeing=0.45, atlas_timestamp='2025-11-24T20:24:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.020749999999999602, 0.02925000000000111, -0.05349999999999966, 0.04100000000000037, 0.07325000000000159, -0.041999999999999815, 0.01025000000000098, 0.01249999999999929, -0.017999999999998906, 0.008250000000000313, -0.032999999999999474, 0.02999999999999936, 0.029249999999999332, 0.004999999999999005, -0.031000000000000583, 0.0072499999999990905, 0.022999999999999687, 0.06399999999999828, -0.03375000000000128, 0.03999999999999915, 0.04374999999999929, 0.012250000000001648, 0.0022500000000000853, -0.0024999999999995026, 0.027499999999999858, 0.06174999999999997, 0.04800000000000004, 0.10999999999999943, 0.0710000000000015, 0.038000000000000256, -0.008999999999998565, -0.06425000000000125], zp_timestamp='2025-11-24T20:20:00')
2025-11-24T22:24:41.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:24:41.948 [DEBUG] [Thread-198003] [transport.py] [_log()] starting thread (client mode): 0xd0713940
2025-11-24T22:24:41.948 [DEBUG] [Thread-198003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:24:41.962 [DEBUG] [Thread-198003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:24:41.962 [INFO] [Thread-198003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:24:41.969 [DEBUG] [Thread-198003] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:24:41.969 [DEBUG] [Thread-198003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:24:41.969 [DEBUG] [Thread-198003] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] client lang: <none>
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] server lang: <none>
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] kex follows: False
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:24:41.970 [DEBUG] [Thread-198003] [transport.py] [_log()] Compression: none
2025-11-24T22:24:41.971 [DEBUG] [Thread-198003] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:24:42.029 [DEBUG] [Thread-198003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:24:42.029 [DEBUG] [Thread-198003] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:24:42.030 [DEBUG] [Thread-198003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:24:42.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:24:42.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:24:42.092 [DEBUG] [Thread-198003] [transport.py] [_log()] userauth is OK
2025-11-24T22:24:42.093 [DEBUG] [Thread-198003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:24:42.093 [DEBUG] [Thread-198003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:24:42.093 [DEBUG] [Thread-198003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:24:42.093 [DEBUG] [Thread-198003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:24:42.112 [INFO] [Thread-198003] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:24:42.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:24:42.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:24:42.969 [DEBUG] [Thread-198003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:24:42.969 [DEBUG] [Thread-198003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:24:43.010 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:24:43.011 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:24:43.017 [DEBUG] [Thread-198003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:24:43.017 [DEBUG] [Thread-198003] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:24:43.025 [DEBUG] [Thread-198003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:24:43.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:24:43.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-11-24T22:24:43.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-11-24T22:24:43.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:24:43.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:24:43.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:24:43.058 [DEBUG] [Thread-198003] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:24:54.466 [DEBUG] [Thread-198005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:25:09.600 [DEBUG] [Thread-198006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:25:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:25:13.085 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:25:13.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-11-24T22:25:13.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 25, 4), 16.44, 31.94, 0.0, 29.11, 14.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:25:13.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:25:04
2025-11-24T22:25:14.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:25:14.242 [DEBUG] [Thread-198007] [transport.py] [_log()] starting thread (client mode): 0xd0711b10
2025-11-24T22:25:14.243 [DEBUG] [Thread-198007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:25:14.256 [DEBUG] [Thread-198007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:25:14.256 [INFO] [Thread-198007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:25:14.262 [DEBUG] [Thread-198007] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:25:14.262 [DEBUG] [Thread-198007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:25:14.262 [DEBUG] [Thread-198007] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:25:14.262 [DEBUG] [Thread-198007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:25:14.262 [DEBUG] [Thread-198007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:25:14.262 [DEBUG] [Thread-198007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:25:14.262 [DEBUG] [Thread-198007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:25:14.262 [DEBUG] [Thread-198007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:25:14.262 [DEBUG] [Thread-198007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:25:14.263 [DEBUG] [Thread-198007] [transport.py] [_log()] client lang: <none>
2025-11-24T22:25:14.263 [DEBUG] [Thread-198007] [transport.py] [_log()] server lang: <none>
2025-11-24T22:25:14.263 [DEBUG] [Thread-198007] [transport.py] [_log()] kex follows: False
2025-11-24T22:25:14.263 [DEBUG] [Thread-198007] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:25:14.263 [DEBUG] [Thread-198007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:25:14.264 [DEBUG] [Thread-198007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:25:14.264 [DEBUG] [Thread-198007] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:25:14.264 [DEBUG] [Thread-198007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:25:14.264 [DEBUG] [Thread-198007] [transport.py] [_log()] Compression: none
2025-11-24T22:25:14.264 [DEBUG] [Thread-198007] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:25:14.305 [DEBUG] [Thread-198007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:25:14.311 [DEBUG] [Thread-198007] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:25:14.313 [DEBUG] [Thread-198007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:25:14.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:25:14.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:25:14.319 [DEBUG] [Thread-198007] [transport.py] [_log()] userauth is OK
2025-11-24T22:25:14.320 [DEBUG] [Thread-198007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:25:14.320 [DEBUG] [Thread-198007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:25:14.320 [DEBUG] [Thread-198007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:25:14.320 [DEBUG] [Thread-198007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:25:14.347 [INFO] [Thread-198007] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:25:14.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:25:14.947 [DEBUG] [Thread-198007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:25:14.947 [DEBUG] [Thread-198007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:25:14.948 [DEBUG] [Thread-198007] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:25:14.988 [DEBUG] [Thread-198007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:25:14.989 [DEBUG] [Thread-198007] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:25:14.992 [DEBUG] [Thread-198007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:25:15.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:25:15.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:25:15.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:25:15.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:25:15.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:25:15.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:25:15.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:25:15.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:25:15.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:25:15.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.850394 -999.00  +14.60  21.90     37   +0.30 1 1 1 1 1     0    0 15.31 24.95 ZNESW 26.0 21.9 166.6 32.3 14.8 -25.0 14.7 -24.5 14.5 -23.4 14.8 -24.3
2025-11-24T22:25:15.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:25:15.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:25:15.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.850394
2025-11-24T22:25:15.058 [DEBUG] [Thread-198007] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:25:15.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:25:15.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:25:15.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:25:15.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:25:15.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:25:15.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:25:04', tmtdew=16.44, humidity=31.94, cloud=0.0, wind=29.11, temperature=14.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:25:04', seeing=0.45, atlas_timestamp='2025-11-24T20:24:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.020749999999999602, 0.02925000000000111, -0.05349999999999966, 0.04100000000000037, 0.07325000000000159, -0.041999999999999815, 0.01025000000000098, 0.01249999999999929, -0.017999999999998906, 0.008250000000000313, -0.032999999999999474, 0.02999999999999936, 0.029249999999999332, 0.004999999999999005, -0.031000000000000583, 0.0072499999999990905, 0.022999999999999687, 0.06399999999999828, -0.03375000000000128, 0.03999999999999915, 0.04374999999999929, 0.012250000000001648, 0.0022500000000000853, -0.0024999999999995026, 0.027499999999999858, 0.06174999999999997, 0.04800000000000004, 0.10999999999999943, 0.0710000000000015, 0.038000000000000256, -0.008999999999998565, -0.06425000000000125], zp_timestamp='2025-11-24T20:20:00')
2025-11-24T22:25: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-11-24T22:25:15.162 [DEBUG] [Thread-198010] [transport.py] [_log()] starting thread (client mode): 0xd31506d0
2025-11-24T22:25:15.162 [DEBUG] [Thread-198010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:25:15.177 [DEBUG] [Thread-198010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:25:15.177 [INFO] [Thread-198010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:25:15.184 [DEBUG] [Thread-198010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:25:15.184 [DEBUG] [Thread-198010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] client lang: <none>
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] server lang: <none>
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] kex follows: False
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] Compression: none
2025-11-24T22:25:15.185 [DEBUG] [Thread-198010] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:25:15.245 [DEBUG] [Thread-198010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:25:15.245 [DEBUG] [Thread-198010] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:25:15.246 [DEBUG] [Thread-198010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:25:15.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:25:15.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:25:15.301 [DEBUG] [Thread-198010] [transport.py] [_log()] userauth is OK
2025-11-24T22:25:15.301 [DEBUG] [Thread-198010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:25:15.301 [DEBUG] [Thread-198010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:25:15.301 [DEBUG] [Thread-198010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:25:15.301 [DEBUG] [Thread-198010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:25:15.319 [INFO] [Thread-198010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:25:15.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:25:15.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:25:16.165 [DEBUG] [Thread-198010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:25:16.165 [DEBUG] [Thread-198010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:25:16.212 [DEBUG] [Thread-198010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:25:16.212 [DEBUG] [Thread-198010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:25:16.220 [DEBUG] [Thread-198010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:25:16.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:25:16.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:25:16.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') -> 00000000
2025-11-24T22:25:16.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:25:16.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:25:16.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:25:16.254 [DEBUG] [Thread-198010] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:25:24.648 [DEBUG] [Thread-198012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:25:39.106 [DEBUG] [Thread-198013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:25:39.735 [DEBUG] [Thread-198014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:25:43.213 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:25:43.215 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:25:46.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:25:46.279 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:25:46.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-11-24T22:25:47.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 25, 37), 16.43, 31.98, 0.0, 29.89, 14.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:25:47.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:25:37
2025-11-24T22:25:47.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:25:47.497 [DEBUG] [Thread-198015] [transport.py] [_log()] starting thread (client mode): 0xd318bdf0
2025-11-24T22:25:47.498 [DEBUG] [Thread-198015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:25:47.509 [DEBUG] [Thread-198015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:25:47.509 [INFO] [Thread-198015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] client lang: <none>
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] server lang: <none>
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] kex follows: False
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:25:47.513 [DEBUG] [Thread-198015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:25:47.514 [DEBUG] [Thread-198015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:25:47.514 [DEBUG] [Thread-198015] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:25:47.514 [DEBUG] [Thread-198015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:25:47.514 [DEBUG] [Thread-198015] [transport.py] [_log()] Compression: none
2025-11-24T22:25:47.514 [DEBUG] [Thread-198015] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:25:47.533 [DEBUG] [Thread-198015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:25:47.534 [DEBUG] [Thread-198015] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:25:47.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:25:47.535 [DEBUG] [Thread-198015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:25:47.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:25:47.536 [DEBUG] [Thread-198015] [transport.py] [_log()] userauth is OK
2025-11-24T22:25:47.536 [DEBUG] [Thread-198015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:25:47.536 [DEBUG] [Thread-198015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:25:47.536 [DEBUG] [Thread-198015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:25:47.536 [DEBUG] [Thread-198015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:25:47.552 [INFO] [Thread-198015] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:25:47.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:25:48.203 [DEBUG] [Thread-198015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:25:48.203 [DEBUG] [Thread-198015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:25:48.203 [DEBUG] [Thread-198015] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:25:48.244 [DEBUG] [Thread-198015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:25:48.244 [DEBUG] [Thread-198015] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:25:48.246 [DEBUG] [Thread-198015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:25:48.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:25:48.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:25:48.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:25:48.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:25:48.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:25:48.267 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:25:48.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:25:48.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:25:48.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:25:48.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.850741 -999.00  +14.60  20.27     37   +0.30 1 1 1 1 1     0    0 14.85 20.90 ZNESW 26.4 20.3 166.4 29.1 14.8 -25.0 14.7 -24.5 14.5 -23.4 14.8 -24.4
2025-11-24T22:25:48.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:25:48.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:25:48.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.850741
2025-11-24T22:25:48.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:25:48.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:25:48.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:25:48.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:25:48.274 [DEBUG] [Thread-198015] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:25:48.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:25:48.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:25:37', tmtdew=16.43, humidity=31.98, cloud=0.0, wind=29.89, temperature=14.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:25:37', seeing=0.48, atlas_timestamp='2025-11-24T20:25:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:24:00')
2025-11-24T22:25:48.350 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:25:48.364 [DEBUG] [Thread-198018] [transport.py] [_log()] starting thread (client mode): 0xd31528c0
2025-11-24T22:25:48.364 [DEBUG] [Thread-198018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:25:48.377 [DEBUG] [Thread-198018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:25:48.378 [INFO] [Thread-198018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] client lang: <none>
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] server lang: <none>
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] kex follows: False
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] Compression: none
2025-11-24T22:25:48.385 [DEBUG] [Thread-198018] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:25:48.442 [DEBUG] [Thread-198018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:25:48.442 [DEBUG] [Thread-198018] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:25:48.443 [DEBUG] [Thread-198018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:25:48.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:25:48.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:25:48.500 [DEBUG] [Thread-198018] [transport.py] [_log()] userauth is OK
2025-11-24T22:25:48.500 [DEBUG] [Thread-198018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:25:48.500 [DEBUG] [Thread-198018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:25:48.500 [DEBUG] [Thread-198018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:25:48.500 [DEBUG] [Thread-198018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:25:48.518 [INFO] [Thread-198018] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:25:48.518 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:25:48.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:25:49.388 [DEBUG] [Thread-198018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:25:49.388 [DEBUG] [Thread-198018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:25:49.436 [DEBUG] [Thread-198018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:25:49.436 [DEBUG] [Thread-198018] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:25:49.444 [DEBUG] [Thread-198018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:25:49.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:25:49.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-11-24T22:25:49.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-11-24T22:25:49.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:25:49.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:25:49.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:25:49.476 [DEBUG] [Thread-198018] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:25:54.771 [DEBUG] [Thread-198020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:26:09.857 [DEBUG] [Thread-198021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:26:19.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:26:19.495 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:26:19.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-11-24T22:26:20.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 26, 10), 16.45, 31.93, 0.0, 27.54, 14.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:26:20.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:26:10
2025-11-24T22:26:20.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:26:20.689 [DEBUG] [Thread-198022] [transport.py] [_log()] starting thread (client mode): 0xd07f9f00
2025-11-24T22:26:20.690 [DEBUG] [Thread-198022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:26:20.698 [DEBUG] [Thread-198022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:26:20.698 [INFO] [Thread-198022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] client lang: <none>
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] server lang: <none>
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] kex follows: False
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:26:20.701 [DEBUG] [Thread-198022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:26:20.702 [DEBUG] [Thread-198022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:26:20.702 [DEBUG] [Thread-198022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:26:20.702 [DEBUG] [Thread-198022] [transport.py] [_log()] Compression: none
2025-11-24T22:26:20.702 [DEBUG] [Thread-198022] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:26:20.727 [DEBUG] [Thread-198022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:26:20.730 [DEBUG] [Thread-198022] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:26:20.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:26:20.732 [DEBUG] [Thread-198022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:26:20.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:26:20.769 [DEBUG] [Thread-198022] [transport.py] [_log()] userauth is OK
2025-11-24T22:26:20.769 [DEBUG] [Thread-198022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:26:20.769 [DEBUG] [Thread-198022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:26:20.769 [DEBUG] [Thread-198022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:26:20.769 [DEBUG] [Thread-198022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:26:20.797 [INFO] [Thread-198022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:26:20.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:26:21.391 [DEBUG] [Thread-198022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:26:21.392 [DEBUG] [Thread-198022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:26:21.392 [DEBUG] [Thread-198022] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:26:21.432 [DEBUG] [Thread-198022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:26:21.432 [DEBUG] [Thread-198022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:26:21.435 [DEBUG] [Thread-198022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:26:21.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:26:21.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:26:21.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:26:21.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:26:21.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:26:21.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:26:21.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:26:21.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:26:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:26:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.851436 -999.00  +14.60  21.38     37   +0.30 1 1 1 1 1     0    0 15.09 14.50 ZNESW 21.0 21.4 159.2 29.8 14.8 -25.0 14.7 -24.5 14.5 -23.2 14.8 -24.4
2025-11-24T22:26:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:26:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:26:21.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.851436
2025-11-24T22:26:21.464 [DEBUG] [Thread-198022] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:26:21.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:26:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:26:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:26:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:26:21.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:26:21.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:26:10', tmtdew=16.45, humidity=31.93, cloud=0.0, wind=27.54, temperature=14.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:26:10', seeing=0.6, atlas_timestamp='2025-11-24T20:26:04.070', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:24:00')
2025-11-24T22:26:21.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:26:21.553 [DEBUG] [Thread-198025] [transport.py] [_log()] starting thread (client mode): 0xd3149270
2025-11-24T22:26:21.554 [DEBUG] [Thread-198025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:26:21.568 [DEBUG] [Thread-198025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:26:21.568 [INFO] [Thread-198025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:26:21.575 [DEBUG] [Thread-198025] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:26:21.575 [DEBUG] [Thread-198025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] client lang: <none>
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] server lang: <none>
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] kex follows: False
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] Compression: none
2025-11-24T22:26:21.576 [DEBUG] [Thread-198025] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:26:21.631 [DEBUG] [Thread-198025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:26:21.632 [DEBUG] [Thread-198025] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:26:21.632 [DEBUG] [Thread-198025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:26:21.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:26:21.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:26:21.689 [DEBUG] [Thread-198025] [transport.py] [_log()] userauth is OK
2025-11-24T22:26:21.690 [DEBUG] [Thread-198025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:26:21.690 [DEBUG] [Thread-198025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:26:21.690 [DEBUG] [Thread-198025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:26:21.690 [DEBUG] [Thread-198025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:26:21.710 [INFO] [Thread-198025] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:26:21.711 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:26:21.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:26:22.550 [DEBUG] [Thread-198025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:26:22.550 [DEBUG] [Thread-198025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:26:22.598 [DEBUG] [Thread-198025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:26:22.598 [DEBUG] [Thread-198025] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:26:22.606 [DEBUG] [Thread-198025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:26:22.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:26: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-11-24T22:26:22.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-11-24T22:26:22.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:26:22.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:26:22.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:26:22.638 [DEBUG] [Thread-198025] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:26:24.892 [DEBUG] [Thread-198027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:26:39.371 [DEBUG] [Thread-198028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:26:39.977 [DEBUG] [Thread-198029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:26:43.417 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:26:43.419 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:26:52.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:26:52.663 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:26:52.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-11-24T22:26:53.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 26, 43), 16.46, 32.01, 0.0, 26.1, 14.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:26:53.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:26:43
2025-11-24T22:26:53.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:26:53.959 [DEBUG] [Thread-198030] [transport.py] [_log()] starting thread (client mode): 0xd073b520
2025-11-24T22:26:53.960 [DEBUG] [Thread-198030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:26:53.972 [DEBUG] [Thread-198030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:26:53.973 [INFO] [Thread-198030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:26:53.978 [DEBUG] [Thread-198030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] client lang: <none>
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] server lang: <none>
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] kex follows: False
2025-11-24T22:26:53.979 [DEBUG] [Thread-198030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:26:53.980 [DEBUG] [Thread-198030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:26:53.980 [DEBUG] [Thread-198030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:26:53.980 [DEBUG] [Thread-198030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:26:53.980 [DEBUG] [Thread-198030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:26:53.980 [DEBUG] [Thread-198030] [transport.py] [_log()] Compression: none
2025-11-24T22:26:53.980 [DEBUG] [Thread-198030] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:26:54.016 [DEBUG] [Thread-198030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:26:54.022 [DEBUG] [Thread-198030] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:26:54.024 [DEBUG] [Thread-198030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:26:54.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:26:54.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:26:54.029 [DEBUG] [Thread-198030] [transport.py] [_log()] userauth is OK
2025-11-24T22:26:54.029 [DEBUG] [Thread-198030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:26:54.030 [DEBUG] [Thread-198030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:26:54.030 [DEBUG] [Thread-198030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:26:54.030 [DEBUG] [Thread-198030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:26:54.056 [INFO] [Thread-198030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:26:54.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:26:54.704 [DEBUG] [Thread-198030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:26:54.704 [DEBUG] [Thread-198030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:26:54.705 [DEBUG] [Thread-198030] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:26:54.744 [DEBUG] [Thread-198030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:26:54.744 [DEBUG] [Thread-198030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:26:54.747 [DEBUG] [Thread-198030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:26:54.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:26:54.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:26:54.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:26:54.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:26:54.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:26:54.775 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:26:54.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:26:54.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:26:54.778 [DEBUG] [Thread-198030] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:26:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:26:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.851783 -999.00  +14.60  24.08     37   +0.30 1 1 1 1 1     0    0 14.90 11.76 ZNESW 25.2 24.1 158.8 27.0 14.8 -25.0 14.7 -24.5 14.5 -23.3 14.8 -24.3
2025-11-24T22:26:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:26:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:26:54.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.851783
2025-11-24T22:26:54.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:26:54.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:26:54.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:26:54.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:26:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:26:54.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:26:43', tmtdew=16.46, humidity=32.01, cloud=0.0, wind=26.1, temperature=14.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:26:43', seeing=0.49, atlas_timestamp='2025-11-24T20:26:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:24:00')
2025-11-24T22:26:54.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:26:54.903 [DEBUG] [Thread-198033] [transport.py] [_log()] starting thread (client mode): 0xd3152530
2025-11-24T22:26:54.903 [DEBUG] [Thread-198033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:26:54.917 [DEBUG] [Thread-198033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:26:54.918 [INFO] [Thread-198033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:26:54.925 [DEBUG] [Thread-198033] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:26:54.926 [DEBUG] [Thread-198033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:26:54.926 [DEBUG] [Thread-198033] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:26:54.926 [DEBUG] [Thread-198033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:26:54.926 [DEBUG] [Thread-198033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:26:54.926 [DEBUG] [Thread-198033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:26:54.926 [DEBUG] [Thread-198033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:26:54.926 [DEBUG] [Thread-198033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:26:54.926 [DEBUG] [Thread-198033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:26:54.926 [DEBUG] [Thread-198033] [transport.py] [_log()] client lang: <none>
2025-11-24T22:26:54.927 [DEBUG] [Thread-198033] [transport.py] [_log()] server lang: <none>
2025-11-24T22:26:54.927 [DEBUG] [Thread-198033] [transport.py] [_log()] kex follows: False
2025-11-24T22:26:54.927 [DEBUG] [Thread-198033] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:26:54.927 [DEBUG] [Thread-198033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:26:54.927 [DEBUG] [Thread-198033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:26:54.927 [DEBUG] [Thread-198033] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:26:54.927 [DEBUG] [Thread-198033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:26:54.928 [DEBUG] [Thread-198033] [transport.py] [_log()] Compression: none
2025-11-24T22:26:54.928 [DEBUG] [Thread-198033] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:26:54.985 [DEBUG] [Thread-198033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:26:54.986 [DEBUG] [Thread-198033] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:26:54.987 [DEBUG] [Thread-198033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:26:54.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:26:54.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:26:55.025 [DEBUG] [Thread-198035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:26:55.044 [DEBUG] [Thread-198033] [transport.py] [_log()] userauth is OK
2025-11-24T22:26:55.044 [DEBUG] [Thread-198033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:26:55.044 [DEBUG] [Thread-198033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:26:55.045 [DEBUG] [Thread-198033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:26:55.045 [DEBUG] [Thread-198033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:26:55.061 [INFO] [Thread-198033] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:26:55.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:26:55.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:26:55.918 [DEBUG] [Thread-198033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:26:55.919 [DEBUG] [Thread-198033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:26:55.966 [DEBUG] [Thread-198033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:26:55.966 [DEBUG] [Thread-198033] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:26:55.975 [DEBUG] [Thread-198033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:26:55.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:26:55.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:26:55.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-11-24T22:26:56.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:26:56.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:26:56.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:26:56.011 [DEBUG] [Thread-198033] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:27:10.185 [DEBUG] [Thread-198036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:27:25.271 [DEBUG] [Thread-198037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:27:26.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:27:26.034 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:27:26.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-11-24T22:27:27.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 27, 16), 16.46, 32.01, 0.0, 27.1, 14.63, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:27:27.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:27:16
2025-11-24T22:27:27.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:27:27.412 [DEBUG] [Thread-198038] [transport.py] [_log()] starting thread (client mode): 0xd3150fd0
2025-11-24T22:27:27.412 [DEBUG] [Thread-198038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:27:27.426 [DEBUG] [Thread-198038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:27:27.427 [INFO] [Thread-198038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:27:27.432 [DEBUG] [Thread-198038] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] client lang: <none>
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] server lang: <none>
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] kex follows: False
2025-11-24T22:27:27.433 [DEBUG] [Thread-198038] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:27:27.434 [DEBUG] [Thread-198038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:27:27.434 [DEBUG] [Thread-198038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:27:27.435 [DEBUG] [Thread-198038] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:27:27.435 [DEBUG] [Thread-198038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:27:27.435 [DEBUG] [Thread-198038] [transport.py] [_log()] Compression: none
2025-11-24T22:27:27.435 [DEBUG] [Thread-198038] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:27:27.474 [DEBUG] [Thread-198038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:27:27.478 [DEBUG] [Thread-198038] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:27:27.480 [DEBUG] [Thread-198038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:27:27.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:27:27.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:27:27.486 [DEBUG] [Thread-198038] [transport.py] [_log()] userauth is OK
2025-11-24T22:27:27.486 [DEBUG] [Thread-198038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:27:27.486 [DEBUG] [Thread-198038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:27:27.486 [DEBUG] [Thread-198038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:27:27.486 [DEBUG] [Thread-198038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:27:27.524 [INFO] [Thread-198038] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:27:27.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:27:28.179 [DEBUG] [Thread-198038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:27:28.179 [DEBUG] [Thread-198038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:27:28.190 [DEBUG] [Thread-198038] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:27:28.219 [DEBUG] [Thread-198038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:27:28.220 [DEBUG] [Thread-198038] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:27:28.223 [DEBUG] [Thread-198038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:27:28.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:27:28.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:27:28.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:27:28.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:27:28.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:27:28.253 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:27:28.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:27:28.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:27:28.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:27:28.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.852130 -999.00  +14.60  18.64     37   +0.30 1 1 1 1 1     0    0 14.58 8.93 ZNESW 18.2 18.6 161.2 31.5 14.8 -24.9 14.7 -24.5 14.5 -23.3 14.8 -24.3
2025-11-24T22:27:28.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:27:28.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:27:28.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.852130
2025-11-24T22:27:28.267 [DEBUG] [Thread-198038] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:27:28.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:27:28.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:27:28.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:27:28.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:27:28.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:27:28.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:27:16', tmtdew=16.46, humidity=32.01, cloud=0.0, wind=27.1, temperature=14.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:27:16', seeing=0.48, atlas_timestamp='2025-11-24T20:27:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:24:00')
2025-11-24T22:27:28.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:27:28.374 [DEBUG] [Thread-198041] [transport.py] [_log()] starting thread (client mode): 0xd073abc0
2025-11-24T22:27:28.374 [DEBUG] [Thread-198041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:27:28.390 [DEBUG] [Thread-198041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:27:28.390 [INFO] [Thread-198041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] client lang: <none>
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] server lang: <none>
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] kex follows: False
2025-11-24T22:27:28.398 [DEBUG] [Thread-198041] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:27:28.399 [DEBUG] [Thread-198041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:27:28.399 [DEBUG] [Thread-198041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:27:28.399 [DEBUG] [Thread-198041] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:27:28.399 [DEBUG] [Thread-198041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:27:28.399 [DEBUG] [Thread-198041] [transport.py] [_log()] Compression: none
2025-11-24T22:27:28.399 [DEBUG] [Thread-198041] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:27:28.458 [DEBUG] [Thread-198041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:27:28.458 [DEBUG] [Thread-198041] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:27:28.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:27:28.459 [DEBUG] [Thread-198041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:27:28.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:27:28.517 [DEBUG] [Thread-198041] [transport.py] [_log()] userauth is OK
2025-11-24T22:27:28.517 [DEBUG] [Thread-198041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:27:28.518 [DEBUG] [Thread-198041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:27:28.518 [DEBUG] [Thread-198041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:27:28.518 [DEBUG] [Thread-198041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:27:28.537 [INFO] [Thread-198041] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:27:28.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:27:28.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:27:29.385 [DEBUG] [Thread-198041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:27:29.385 [DEBUG] [Thread-198041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:27:29.438 [DEBUG] [Thread-198041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:27:29.438 [DEBUG] [Thread-198041] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:27:29.452 [DEBUG] [Thread-198041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:27:29.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:27:29.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-11-24T22:27:29.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-11-24T22:27:29.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:27:29.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:27:29.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:27:29.499 [DEBUG] [Thread-198041] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:27:39.654 [DEBUG] [Thread-198043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:27:40.310 [DEBUG] [Thread-198044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:27:43.620 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:27:43.622 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:27:55.423 [DEBUG] [Thread-198045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:27:59.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:27:59.502 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:27:59.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-11-24T22:28:00.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 27, 48), 16.36, 32.01, 0.0, 28.6, 14.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:28:00.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:27:48
2025-11-24T22:28:00.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:28:00.742 [DEBUG] [Thread-198046] [transport.py] [_log()] starting thread (client mode): 0xd0738d90
2025-11-24T22:28:00.743 [DEBUG] [Thread-198046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:28:00.755 [DEBUG] [Thread-198046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:28:00.755 [INFO] [Thread-198046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:28:00.759 [DEBUG] [Thread-198046] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] client lang: <none>
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] server lang: <none>
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] kex follows: False
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:28:00.760 [DEBUG] [Thread-198046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:28:00.761 [DEBUG] [Thread-198046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:28:00.761 [DEBUG] [Thread-198046] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:28:00.761 [DEBUG] [Thread-198046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:28:00.761 [DEBUG] [Thread-198046] [transport.py] [_log()] Compression: none
2025-11-24T22:28:00.761 [DEBUG] [Thread-198046] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:28:00.793 [DEBUG] [Thread-198046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:28:00.798 [DEBUG] [Thread-198046] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:28:00.800 [DEBUG] [Thread-198046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:28:00.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:28:00.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:28:00.805 [DEBUG] [Thread-198046] [transport.py] [_log()] userauth is OK
2025-11-24T22:28:00.805 [DEBUG] [Thread-198046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:28:00.805 [DEBUG] [Thread-198046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:28:00.805 [DEBUG] [Thread-198046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:28:00.806 [DEBUG] [Thread-198046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:28:00.832 [INFO] [Thread-198046] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:28:00.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:28:01.440 [DEBUG] [Thread-198046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:28:01.440 [DEBUG] [Thread-198046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:28:01.442 [DEBUG] [Thread-198046] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:28:01.481 [DEBUG] [Thread-198046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:28:01.481 [DEBUG] [Thread-198046] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:28:01.484 [DEBUG] [Thread-198046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:28:01.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:28:01.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:28:01.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:28:01.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:28:01.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:28:01.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:28:01.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:28:01.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:28:01.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:28:01.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.852477 -999.00  +14.60  18.35     37   +0.30 1 1 1 1 1     0    0 14.49 5.90 ZNESW 17.3 18.4 169.4 29.5 14.8 -24.9 14.7 -24.5 14.5 -23.3 14.8 -24.3
2025-11-24T22:28:01.506 [DEBUG] [Thread-198046] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:28:01.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:28:01.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:28:01.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.852477
2025-11-24T22:28:01.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:28:01.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:28:01.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:28:01.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:28:01.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:28:01.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:27:48', tmtdew=16.36, humidity=32.01, cloud=0.0, wind=28.6, temperature=14.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:27:49', seeing=0.51, atlas_timestamp='2025-11-24T20:27:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:24:00')
2025-11-24T22:28:01.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:28:01.629 [DEBUG] [Thread-198049] [transport.py] [_log()] starting thread (client mode): 0xd07cd480
2025-11-24T22:28:01.629 [DEBUG] [Thread-198049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:28:01.649 [DEBUG] [Thread-198049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:28:01.650 [INFO] [Thread-198049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:28:01.657 [DEBUG] [Thread-198049] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:28:01.657 [DEBUG] [Thread-198049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:28:01.657 [DEBUG] [Thread-198049] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:28:01.657 [DEBUG] [Thread-198049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:28:01.657 [DEBUG] [Thread-198049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:28:01.657 [DEBUG] [Thread-198049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:28:01.657 [DEBUG] [Thread-198049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] client lang: <none>
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] server lang: <none>
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] kex follows: False
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] Compression: none
2025-11-24T22:28:01.658 [DEBUG] [Thread-198049] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:28:01.717 [DEBUG] [Thread-198049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:28:01.717 [DEBUG] [Thread-198049] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:28:01.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:28:01.718 [DEBUG] [Thread-198049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:28:01.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:28:01.776 [DEBUG] [Thread-198049] [transport.py] [_log()] userauth is OK
2025-11-24T22:28:01.776 [DEBUG] [Thread-198049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:28:01.776 [DEBUG] [Thread-198049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:28:01.776 [DEBUG] [Thread-198049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:28:01.776 [DEBUG] [Thread-198049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:28:01.790 [INFO] [Thread-198049] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:28:01.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:28:01.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:28:02.648 [DEBUG] [Thread-198049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:28:02.648 [DEBUG] [Thread-198049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:28:02.697 [DEBUG] [Thread-198049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:28:02.697 [DEBUG] [Thread-198049] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:28:02.706 [DEBUG] [Thread-198049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:28:02.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:28:02.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-11-24T22:28:02.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-11-24T22:28:02.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:28:02.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:28:02.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:28:02.744 [DEBUG] [Thread-198049] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:28:10.467 [DEBUG] [Thread-198051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:28:25.578 [DEBUG] [Thread-198052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:28:32.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:28:32.777 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:28:32.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-11-24T22:28:33.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 28, 21), 16.33, 32.09, 0.0, 30.33, 14.6, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:28:33.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:28:21
2025-11-24T22:28:33.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:28:33.924 [DEBUG] [Thread-198053] [transport.py] [_log()] starting thread (client mode): 0xd07385b0
2025-11-24T22:28:33.924 [DEBUG] [Thread-198053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:28:33.937 [DEBUG] [Thread-198053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:28:33.938 [INFO] [Thread-198053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:28:33.944 [DEBUG] [Thread-198053] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:28:33.945 [DEBUG] [Thread-198053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:28:33.945 [DEBUG] [Thread-198053] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:28:33.945 [DEBUG] [Thread-198053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:28:33.945 [DEBUG] [Thread-198053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:28:33.945 [DEBUG] [Thread-198053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:28:33.946 [DEBUG] [Thread-198053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:28:33.946 [DEBUG] [Thread-198053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:28:33.946 [DEBUG] [Thread-198053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:28:33.946 [DEBUG] [Thread-198053] [transport.py] [_log()] client lang: <none>
2025-11-24T22:28:33.946 [DEBUG] [Thread-198053] [transport.py] [_log()] server lang: <none>
2025-11-24T22:28:33.946 [DEBUG] [Thread-198053] [transport.py] [_log()] kex follows: False
2025-11-24T22:28:33.946 [DEBUG] [Thread-198053] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:28:33.947 [DEBUG] [Thread-198053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:28:33.947 [DEBUG] [Thread-198053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:28:33.947 [DEBUG] [Thread-198053] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:28:33.947 [DEBUG] [Thread-198053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:28:33.947 [DEBUG] [Thread-198053] [transport.py] [_log()] Compression: none
2025-11-24T22:28:33.947 [DEBUG] [Thread-198053] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:28:33.974 [DEBUG] [Thread-198053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:28:33.978 [DEBUG] [Thread-198053] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:28:33.980 [DEBUG] [Thread-198053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:28:33.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:28:33.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:28:33.986 [DEBUG] [Thread-198053] [transport.py] [_log()] userauth is OK
2025-11-24T22:28:33.986 [DEBUG] [Thread-198053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:28:33.986 [DEBUG] [Thread-198053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:28:33.987 [DEBUG] [Thread-198053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:28:33.987 [DEBUG] [Thread-198053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:28:34.012 [INFO] [Thread-198053] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:28:34.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:28:34.608 [DEBUG] [Thread-198053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:28:34.608 [DEBUG] [Thread-198053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:28:34.610 [DEBUG] [Thread-198053] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:28:34.648 [DEBUG] [Thread-198053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:28:34.649 [DEBUG] [Thread-198053] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:28:34.652 [DEBUG] [Thread-198053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:28:34.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:28:34.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:28:34.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:28:34.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:28:34.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:28:34.673 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:28:34.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:28:34.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:28:34.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:28:34.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.852825 -999.00  +14.50  17.24     37   +0.30 1 1 1 1 1     0    0 14.66 4.24 ZNESW 28.0 17.2 160.2 31.0 14.8 -25.0 14.7 -24.5 14.5 -23.4 14.8 -24.2
2025-11-24T22:28:34.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:28:34.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:28:34.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.852825
2025-11-24T22:28:34.682 [DEBUG] [Thread-198053] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:28:34.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:28:34.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:28:34.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:28:34.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:28:34.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:28:34.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:28:21', tmtdew=16.33, humidity=32.09, cloud=0.0, wind=30.33, temperature=14.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:28:21', seeing=0.56, atlas_timestamp='2025-11-24T20:28:04.080', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:24:00')
2025-11-24T22:28:34.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:28:34.794 [DEBUG] [Thread-198056] [transport.py] [_log()] starting thread (client mode): 0xd0739960
2025-11-24T22:28:34.794 [DEBUG] [Thread-198056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:28:34.809 [DEBUG] [Thread-198056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:28:34.809 [INFO] [Thread-198056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:28:34.816 [DEBUG] [Thread-198056] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:28:34.817 [DEBUG] [Thread-198056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:28:34.817 [DEBUG] [Thread-198056] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:28:34.817 [DEBUG] [Thread-198056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:28:34.817 [DEBUG] [Thread-198056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:28:34.817 [DEBUG] [Thread-198056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:28:34.817 [DEBUG] [Thread-198056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:28:34.817 [DEBUG] [Thread-198056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:28:34.817 [DEBUG] [Thread-198056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:28:34.818 [DEBUG] [Thread-198056] [transport.py] [_log()] client lang: <none>
2025-11-24T22:28:34.818 [DEBUG] [Thread-198056] [transport.py] [_log()] server lang: <none>
2025-11-24T22:28:34.818 [DEBUG] [Thread-198056] [transport.py] [_log()] kex follows: False
2025-11-24T22:28:34.818 [DEBUG] [Thread-198056] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:28:34.818 [DEBUG] [Thread-198056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:28:34.818 [DEBUG] [Thread-198056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:28:34.819 [DEBUG] [Thread-198056] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:28:34.819 [DEBUG] [Thread-198056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:28:34.819 [DEBUG] [Thread-198056] [transport.py] [_log()] Compression: none
2025-11-24T22:28:34.819 [DEBUG] [Thread-198056] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:28:34.878 [DEBUG] [Thread-198056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:28:34.878 [DEBUG] [Thread-198056] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:28:34.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:28:34.879 [DEBUG] [Thread-198056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:28:34.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:28:34.936 [DEBUG] [Thread-198056] [transport.py] [_log()] userauth is OK
2025-11-24T22:28:34.937 [DEBUG] [Thread-198056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:28:34.937 [DEBUG] [Thread-198056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:28:34.937 [DEBUG] [Thread-198056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:28:34.937 [DEBUG] [Thread-198056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:28:34.960 [INFO] [Thread-198056] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:28:34.961 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:28:34.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:28:35.807 [DEBUG] [Thread-198056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:28:35.807 [DEBUG] [Thread-198056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:28:35.855 [DEBUG] [Thread-198056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:28:35.855 [DEBUG] [Thread-198056] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:28:35.864 [DEBUG] [Thread-198056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:28:35.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:28:35.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-11-24T22:28:35.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-11-24T22:28:35.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:28:35.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:28:35.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:28:35.901 [DEBUG] [Thread-198056] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:28:39.911 [DEBUG] [Thread-198058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:28:40.607 [DEBUG] [Thread-198059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:28:43.825 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:28:43.826 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:28:55.714 [DEBUG] [Thread-198060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:29:05.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:29:05.942 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:29:05.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-11-24T22:29:06.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 28, 53), 16.33, 32.09, 0.0, 26.25, 14.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:29:06.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:28:53
2025-11-24T22:29:06.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:29:07.179 [DEBUG] [Thread-198061] [transport.py] [_log()] starting thread (client mode): 0xd07107c0
2025-11-24T22:29:07.180 [DEBUG] [Thread-198061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:29:07.180 [DEBUG] [Thread-198061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:29:07.180 [INFO] [Thread-198061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] client lang: <none>
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] server lang: <none>
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] kex follows: False
2025-11-24T22:29:07.184 [DEBUG] [Thread-198061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:29:07.185 [DEBUG] [Thread-198061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:29:07.185 [DEBUG] [Thread-198061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:29:07.185 [DEBUG] [Thread-198061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:29:07.185 [DEBUG] [Thread-198061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:29:07.185 [DEBUG] [Thread-198061] [transport.py] [_log()] Compression: none
2025-11-24T22:29:07.185 [DEBUG] [Thread-198061] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:29:07.215 [DEBUG] [Thread-198061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:29:07.219 [DEBUG] [Thread-198061] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:29:07.220 [DEBUG] [Thread-198061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:29:07.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:29:07.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:29:07.223 [DEBUG] [Thread-198061] [transport.py] [_log()] userauth is OK
2025-11-24T22:29:07.223 [DEBUG] [Thread-198061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:29:07.223 [DEBUG] [Thread-198061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:29:07.223 [DEBUG] [Thread-198061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:29:07.223 [DEBUG] [Thread-198061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:29:07.240 [INFO] [Thread-198061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:29:07.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:29:07.816 [DEBUG] [Thread-198061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:29:07.816 [DEBUG] [Thread-198061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:29:07.817 [DEBUG] [Thread-198061] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:29:07.857 [DEBUG] [Thread-198061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:29:07.857 [DEBUG] [Thread-198061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:29:07.860 [DEBUG] [Thread-198061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:29:07.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:29:07.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:29:07.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:29:07.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:29:07.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:29:07.882 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:29:07.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:29:07.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:29:07.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:29:07.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.853172 -999.00  +14.60  24.16     37   +0.30 1 1 1 1 1     0    0 14.65 2.02 ZNESW 27.8 24.2 151.8 31.7 14.8 -25.0 14.7 -24.4 14.4 -23.3 14.8 -24.1
2025-11-24T22:29:07.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:29:07.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:29:07.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.853172
2025-11-24T22:29:07.889 [DEBUG] [Thread-198061] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:29:07.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:29:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:29:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:29:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:29:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:29:07.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:28:53', tmtdew=16.33, humidity=32.09, cloud=0.0, wind=26.25, temperature=14.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:28:54', seeing=0.6, atlas_timestamp='2025-11-24T20:28:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:27:00')
2025-11-24T22:29:07.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:29:07.995 [DEBUG] [Thread-198064] [transport.py] [_log()] starting thread (client mode): 0xc9b81030
2025-11-24T22:29:07.995 [DEBUG] [Thread-198064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:29:08.011 [DEBUG] [Thread-198064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:29:08.011 [INFO] [Thread-198064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:29:08.018 [DEBUG] [Thread-198064] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] client lang: <none>
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] server lang: <none>
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] kex follows: False
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] Compression: none
2025-11-24T22:29:08.019 [DEBUG] [Thread-198064] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:29:08.075 [DEBUG] [Thread-198064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:29:08.075 [DEBUG] [Thread-198064] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:29:08.075 [DEBUG] [Thread-198064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:29:08.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:29:08.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:29:08.132 [DEBUG] [Thread-198064] [transport.py] [_log()] userauth is OK
2025-11-24T22:29:08.132 [DEBUG] [Thread-198064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:29:08.132 [DEBUG] [Thread-198064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:29:08.132 [DEBUG] [Thread-198064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:29:08.132 [DEBUG] [Thread-198064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:29:08.148 [INFO] [Thread-198064] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:29:08.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:29:08.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:29:08.993 [DEBUG] [Thread-198064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:29:08.993 [DEBUG] [Thread-198064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:29:09.040 [DEBUG] [Thread-198064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:29:09.041 [DEBUG] [Thread-198064] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:29:09.049 [DEBUG] [Thread-198064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:29:09.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:29:09.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:29:09.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-11-24T22:29:09.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:29:09.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:29:09.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:29:09.085 [DEBUG] [Thread-198064] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:29:10.767 [DEBUG] [Thread-198066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:29:25.920 [DEBUG] [Thread-198067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:29:39.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:29:39.104 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:29:39.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:29:39.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 29, 26), 16.37, 32.01, 0.0, 24.95, 14.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:29:39.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:29:26
2025-11-24T22:29:40.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:29:40.207 [DEBUG] [Thread-198068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:29:40.325 [DEBUG] [Thread-198069] [transport.py] [_log()] starting thread (client mode): 0xd0700430
2025-11-24T22:29:40.325 [DEBUG] [Thread-198069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:29:40.339 [DEBUG] [Thread-198069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:29:40.340 [INFO] [Thread-198069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] client lang: <none>
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] server lang: <none>
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] kex follows: False
2025-11-24T22:29:40.344 [DEBUG] [Thread-198069] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:29:40.345 [DEBUG] [Thread-198069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:29:40.345 [DEBUG] [Thread-198069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:29:40.345 [DEBUG] [Thread-198069] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:29:40.345 [DEBUG] [Thread-198069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:29:40.345 [DEBUG] [Thread-198069] [transport.py] [_log()] Compression: none
2025-11-24T22:29:40.345 [DEBUG] [Thread-198069] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:29:40.373 [DEBUG] [Thread-198069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:29:40.377 [DEBUG] [Thread-198069] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:29:40.378 [DEBUG] [Thread-198069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:29:40.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:29:40.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:29:40.382 [DEBUG] [Thread-198069] [transport.py] [_log()] userauth is OK
2025-11-24T22:29:40.382 [DEBUG] [Thread-198069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:29:40.382 [DEBUG] [Thread-198069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:29:40.382 [DEBUG] [Thread-198069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:29:40.382 [DEBUG] [Thread-198069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:29:40.394 [INFO] [Thread-198069] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:29:40.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:29:40.960 [DEBUG] [Thread-198071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:29:41.004 [DEBUG] [Thread-198069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:29:41.004 [DEBUG] [Thread-198069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:29:41.005 [DEBUG] [Thread-198069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:29:41.045 [DEBUG] [Thread-198069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:29:41.045 [DEBUG] [Thread-198069] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:29:41.048 [DEBUG] [Thread-198069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:29:41.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:29:41.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:29:41.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:29:41.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:29:41.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:29:41.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:29:41.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:29:41.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:29:41.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:29:41.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.853172 -999.00  +14.60  24.16     37   +0.30 1 1 1 1 1     0    0 14.65 2.02 ZNESW 27.8 24.2 151.8 31.7 14.8 -25.0 14.7 -24.4 14.4 -23.3 14.8 -24.1
2025-11-24T22:29:41.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:29:41.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:29:41.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.853172
2025-11-24T22:29:41.074 [DEBUG] [Thread-198069] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:29:41.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:29:41.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:29:41.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:29:41.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:29:41.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:29:41.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:29:26', tmtdew=16.37, humidity=32.01, cloud=0.0, wind=24.95, temperature=14.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:29:27', seeing=0.6, atlas_timestamp='2025-11-24T20:28:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:27:00')
2025-11-24T22:29:41.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:29:41.166 [DEBUG] [Thread-198073] [transport.py] [_log()] starting thread (client mode): 0xd073b550
2025-11-24T22:29:41.166 [DEBUG] [Thread-198073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:29:41.181 [DEBUG] [Thread-198073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:29:41.181 [INFO] [Thread-198073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:29:41.188 [DEBUG] [Thread-198073] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] client lang: <none>
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] server lang: <none>
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] kex follows: False
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] Compression: none
2025-11-24T22:29:41.189 [DEBUG] [Thread-198073] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:29:41.248 [DEBUG] [Thread-198073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:29:41.248 [DEBUG] [Thread-198073] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:29:41.248 [DEBUG] [Thread-198073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:29:41.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:29:41.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:29:41.304 [DEBUG] [Thread-198073] [transport.py] [_log()] userauth is OK
2025-11-24T22:29:41.304 [DEBUG] [Thread-198073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:29:41.304 [DEBUG] [Thread-198073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:29:41.304 [DEBUG] [Thread-198073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:29:41.305 [DEBUG] [Thread-198073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:29:41.318 [INFO] [Thread-198073] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:29:41.318 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:29:41.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:29:42.159 [DEBUG] [Thread-198073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:29:42.159 [DEBUG] [Thread-198073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:29:42.207 [DEBUG] [Thread-198073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:29:42.207 [DEBUG] [Thread-198073] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:29:42.215 [DEBUG] [Thread-198073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:29:42.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:29:42.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:29:42.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') -> 00000000
2025-11-24T22:29:42.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:29:42.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:29:42.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:29:42.250 [DEBUG] [Thread-198073] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:29:44.027 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:29:44.029 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:29:56.013 [DEBUG] [Thread-198075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:30:11.102 [DEBUG] [Thread-198076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:30:12.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:30:12.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:30:12.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-11-24T22:30:13.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 29, 26), 16.37, 32.01, 0.0, 24.95, 14.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:30:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:29:26
2025-11-24T22:30:13.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:30:13.598 [DEBUG] [Thread-198077] [transport.py] [_log()] starting thread (client mode): 0xd314b430
2025-11-24T22:30:13.599 [DEBUG] [Thread-198077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:30:13.612 [DEBUG] [Thread-198077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:30:13.613 [INFO] [Thread-198077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:30:13.618 [DEBUG] [Thread-198077] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:30:13.618 [DEBUG] [Thread-198077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:30:13.618 [DEBUG] [Thread-198077] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:30:13.618 [DEBUG] [Thread-198077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:30:13.619 [DEBUG] [Thread-198077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:30:13.619 [DEBUG] [Thread-198077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:30:13.619 [DEBUG] [Thread-198077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:30:13.619 [DEBUG] [Thread-198077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:30:13.619 [DEBUG] [Thread-198077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:30:13.619 [DEBUG] [Thread-198077] [transport.py] [_log()] client lang: <none>
2025-11-24T22:30:13.619 [DEBUG] [Thread-198077] [transport.py] [_log()] server lang: <none>
2025-11-24T22:30:13.619 [DEBUG] [Thread-198077] [transport.py] [_log()] kex follows: False
2025-11-24T22:30:13.619 [DEBUG] [Thread-198077] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:30:13.620 [DEBUG] [Thread-198077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:30:13.620 [DEBUG] [Thread-198077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:30:13.621 [DEBUG] [Thread-198077] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:30:13.621 [DEBUG] [Thread-198077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:30:13.621 [DEBUG] [Thread-198077] [transport.py] [_log()] Compression: none
2025-11-24T22:30:13.621 [DEBUG] [Thread-198077] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:30:13.654 [DEBUG] [Thread-198077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:30:13.659 [DEBUG] [Thread-198077] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:30:13.661 [DEBUG] [Thread-198077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:30:13.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:30:13.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:30:13.665 [DEBUG] [Thread-198077] [transport.py] [_log()] userauth is OK
2025-11-24T22:30:13.665 [DEBUG] [Thread-198077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:30:13.665 [DEBUG] [Thread-198077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:30:13.665 [DEBUG] [Thread-198077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:30:13.665 [DEBUG] [Thread-198077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:30:13.693 [INFO] [Thread-198077] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:30:13.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:30:14.652 [DEBUG] [Thread-198077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:30:14.652 [DEBUG] [Thread-198077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:30:14.663 [DEBUG] [Thread-198077] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:30:14.692 [DEBUG] [Thread-198077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:30:14.693 [DEBUG] [Thread-198077] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:30:14.696 [DEBUG] [Thread-198077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:30:14.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:30:14.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:30:14.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:30:14.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:30:14.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:30:14.721 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:30:14.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:30:14.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:30:14.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:30:14.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.853866 -999.00  +14.50  19.16     37   +0.30 1 1 1 1 1     0    0 14.25 -1.33 ZNESW 18.3 19.2 160.0 30.5 14.8 -25.0 14.7 -24.5 14.5 -23.4 14.8 -24.2
2025-11-24T22:30:14.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:30:14.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:30:14.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.853866
2025-11-24T22:30:14.729 [DEBUG] [Thread-198077] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:30:14.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:30:14.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:30:14.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:30:14.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:30:14.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:30:14.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:29:26', tmtdew=16.37, humidity=32.01, cloud=0.0, wind=24.95, temperature=14.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:30:00', seeing=0.61, atlas_timestamp='2025-11-24T20:29:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:27:00')
2025-11-24T22:30:14.831 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:30:14.842 [DEBUG] [Thread-198080] [transport.py] [_log()] starting thread (client mode): 0xd07102b0
2025-11-24T22:30:14.842 [DEBUG] [Thread-198080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:30:14.857 [DEBUG] [Thread-198080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:30:14.857 [INFO] [Thread-198080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] client lang: <none>
2025-11-24T22:30:14.865 [DEBUG] [Thread-198080] [transport.py] [_log()] server lang: <none>
2025-11-24T22:30:14.866 [DEBUG] [Thread-198080] [transport.py] [_log()] kex follows: False
2025-11-24T22:30:14.866 [DEBUG] [Thread-198080] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:30:14.866 [DEBUG] [Thread-198080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:30:14.866 [DEBUG] [Thread-198080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:30:14.866 [DEBUG] [Thread-198080] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:30:14.866 [DEBUG] [Thread-198080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:30:14.866 [DEBUG] [Thread-198080] [transport.py] [_log()] Compression: none
2025-11-24T22:30:14.866 [DEBUG] [Thread-198080] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:30:14.924 [DEBUG] [Thread-198080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:30:14.924 [DEBUG] [Thread-198080] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:30:14.925 [DEBUG] [Thread-198080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:30:14.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:30:14.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:30:14.981 [DEBUG] [Thread-198080] [transport.py] [_log()] userauth is OK
2025-11-24T22:30:14.981 [DEBUG] [Thread-198080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:30:14.981 [DEBUG] [Thread-198080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:30:14.981 [DEBUG] [Thread-198080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:30:14.981 [DEBUG] [Thread-198080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:30:15.001 [INFO] [Thread-198080] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:30:15.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:30:15.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:30:15.826 [DEBUG] [Thread-198080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:30:15.826 [DEBUG] [Thread-198080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:30:15.874 [DEBUG] [Thread-198080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:30:15.874 [DEBUG] [Thread-198080] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:30:15.882 [DEBUG] [Thread-198080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:30:15.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:30:15.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-11-24T22:30:15.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-11-24T22:30:15.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:30:15.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:30:15.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:30:15.925 [DEBUG] [Thread-198080] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:30:26.139 [DEBUG] [Thread-198082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:30:40.460 [DEBUG] [Thread-198083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:30:41.221 [DEBUG] [Thread-198084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:30:44.234 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:30:44.237 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:30:45.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:30:45.941 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:30:45.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-11-24T22:30:46.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 30, 33), 16.36, 32.51, 0.0, 28.41, 14.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:30:46.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:30:33
2025-11-24T22:30:47.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:30:47.271 [DEBUG] [Thread-198085] [transport.py] [_log()] starting thread (client mode): 0xd317d390
2025-11-24T22:30:47.272 [DEBUG] [Thread-198085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:30:47.284 [DEBUG] [Thread-198085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:30:47.285 [INFO] [Thread-198085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:30:47.289 [DEBUG] [Thread-198085] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] client lang: <none>
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] server lang: <none>
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] kex follows: False
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:30:47.290 [DEBUG] [Thread-198085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:30:47.291 [DEBUG] [Thread-198085] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:30:47.291 [DEBUG] [Thread-198085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:30:47.291 [DEBUG] [Thread-198085] [transport.py] [_log()] Compression: none
2025-11-24T22:30:47.291 [DEBUG] [Thread-198085] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:30:47.322 [DEBUG] [Thread-198085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:30:47.327 [DEBUG] [Thread-198085] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:30:47.329 [DEBUG] [Thread-198085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:30:47.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:30:47.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:30:47.335 [DEBUG] [Thread-198085] [transport.py] [_log()] userauth is OK
2025-11-24T22:30:47.335 [DEBUG] [Thread-198085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:30:47.336 [DEBUG] [Thread-198085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:30:47.336 [DEBUG] [Thread-198085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:30:47.336 [DEBUG] [Thread-198085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:30:47.372 [INFO] [Thread-198085] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:30:47.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:30:48.160 [DEBUG] [Thread-198085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:30:48.160 [DEBUG] [Thread-198085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:30:48.169 [DEBUG] [Thread-198085] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:30:48.201 [DEBUG] [Thread-198085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:30:48.201 [DEBUG] [Thread-198085] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:30:48.204 [DEBUG] [Thread-198085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:30:48.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:30:48.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:30:48.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:30:48.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:30:48.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:30:48.225 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:30:48.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:30:48.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:30:48.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:30:48.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.854213 -999.00  +14.50  19.46     37   +0.20 1 1 1 1 1     0    0 14.40 -2.88 ZNESW 20.0 19.5 161.8 29.2 14.8 -25.1 14.7 -24.6 14.4 -23.5 14.7 -24.3
2025-11-24T22:30:48.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:30:48.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:30:48.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.854213
2025-11-24T22:30:48.232 [DEBUG] [Thread-198085] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:30:48.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:30:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:30:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:30:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:30:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:30:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:30:33', tmtdew=16.36, humidity=32.51, cloud=0.0, wind=28.41, temperature=14.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:30:34', seeing=0.67, atlas_timestamp='2025-11-24T20:30:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:27:00')
2025-11-24T22:30:48.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:30:48.328 [DEBUG] [Thread-198088] [transport.py] [_log()] starting thread (client mode): 0xd0786b00
2025-11-24T22:30:48.329 [DEBUG] [Thread-198088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:30:48.344 [DEBUG] [Thread-198088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:30:48.344 [INFO] [Thread-198088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] client lang: <none>
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] server lang: <none>
2025-11-24T22:30:48.351 [DEBUG] [Thread-198088] [transport.py] [_log()] kex follows: False
2025-11-24T22:30:48.352 [DEBUG] [Thread-198088] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:30:48.352 [DEBUG] [Thread-198088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:30:48.352 [DEBUG] [Thread-198088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:30:48.352 [DEBUG] [Thread-198088] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:30:48.352 [DEBUG] [Thread-198088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:30:48.352 [DEBUG] [Thread-198088] [transport.py] [_log()] Compression: none
2025-11-24T22:30:48.352 [DEBUG] [Thread-198088] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:30:48.411 [DEBUG] [Thread-198088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:30:48.411 [DEBUG] [Thread-198088] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:30:48.411 [DEBUG] [Thread-198088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:30:48.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:30:48.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:30:48.469 [DEBUG] [Thread-198088] [transport.py] [_log()] userauth is OK
2025-11-24T22:30:48.469 [DEBUG] [Thread-198088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:30:48.469 [DEBUG] [Thread-198088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:30:48.469 [DEBUG] [Thread-198088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:30:48.469 [DEBUG] [Thread-198088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:30:48.483 [INFO] [Thread-198088] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:30:48.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:30:48.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:30:49.369 [DEBUG] [Thread-198088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:30:49.369 [DEBUG] [Thread-198088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:30:49.421 [DEBUG] [Thread-198088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:30:49.421 [DEBUG] [Thread-198088] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:30:49.430 [DEBUG] [Thread-198088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:30:49.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:30:49.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-11-24T22:30:49.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-11-24T22:30:49.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:30:49.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:30:49.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:30:49.468 [DEBUG] [Thread-198088] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:30:56.267 [DEBUG] [Thread-198090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:31:11.403 [DEBUG] [Thread-198091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:31:19.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:31:19.501 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:31:19.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-11-24T22:31:20.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 31, 6), 16.31, 32.68, 0.0, 30.74, 14.7, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:31:20.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:31:06
2025-11-24T22:31:20.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:31:20.838 [DEBUG] [Thread-198092] [transport.py] [_log()] starting thread (client mode): 0xd0738820
2025-11-24T22:31:20.838 [DEBUG] [Thread-198092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:31:20.851 [DEBUG] [Thread-198092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:31:20.851 [INFO] [Thread-198092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:31:20.857 [DEBUG] [Thread-198092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:31:20.857 [DEBUG] [Thread-198092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:31:20.857 [DEBUG] [Thread-198092] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:31:20.857 [DEBUG] [Thread-198092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:31:20.857 [DEBUG] [Thread-198092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:31:20.858 [DEBUG] [Thread-198092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:31:20.858 [DEBUG] [Thread-198092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:31:20.858 [DEBUG] [Thread-198092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:31:20.858 [DEBUG] [Thread-198092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:31:20.858 [DEBUG] [Thread-198092] [transport.py] [_log()] client lang: <none>
2025-11-24T22:31:20.858 [DEBUG] [Thread-198092] [transport.py] [_log()] server lang: <none>
2025-11-24T22:31:20.858 [DEBUG] [Thread-198092] [transport.py] [_log()] kex follows: False
2025-11-24T22:31:20.858 [DEBUG] [Thread-198092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:31:20.859 [DEBUG] [Thread-198092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:31:20.859 [DEBUG] [Thread-198092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:31:20.859 [DEBUG] [Thread-198092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:31:20.859 [DEBUG] [Thread-198092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:31:20.860 [DEBUG] [Thread-198092] [transport.py] [_log()] Compression: none
2025-11-24T22:31:20.860 [DEBUG] [Thread-198092] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:31:20.896 [DEBUG] [Thread-198092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:31:20.901 [DEBUG] [Thread-198092] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:31:20.904 [DEBUG] [Thread-198092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:31:20.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:31:20.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:31:20.909 [DEBUG] [Thread-198092] [transport.py] [_log()] userauth is OK
2025-11-24T22:31:20.910 [DEBUG] [Thread-198092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:31:20.910 [DEBUG] [Thread-198092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:31:20.910 [DEBUG] [Thread-198092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:31:20.910 [DEBUG] [Thread-198092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:31:20.939 [INFO] [Thread-198092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:31:20.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:31:21.567 [DEBUG] [Thread-198092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:31:21.576 [DEBUG] [Thread-198092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:31:21.577 [DEBUG] [Thread-198092] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:31:21.608 [DEBUG] [Thread-198092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:31:21.608 [DEBUG] [Thread-198092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:31:21.611 [DEBUG] [Thread-198092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:31:21.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:31:21.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:31:21.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:31:21.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:31:21.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:31:21.635 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:31:21.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:31:21.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:31:21.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:31:21.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.854561 -999.00  +14.50  29.38     37   +0.20 1 1 1 1 1     0    0 14.21 -4.46 ZNESW 26.1 29.4 160.4 32.5 14.8 -25.0 14.7 -24.4 14.4 -23.2 14.7 -24.3
2025-11-24T22:31:21.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:31:21.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:31:21.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.854561
2025-11-24T22:31:21.642 [DEBUG] [Thread-198092] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:31:21.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:31:21.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:31:21.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:31:21.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:31:21.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:31:21.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:31:06', tmtdew=16.31, humidity=32.68, cloud=0.0, wind=30.74, temperature=14.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:31:06', seeing=0.58, atlas_timestamp='2025-11-24T20:30:34.070', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, -0.036749999999999616, 0.016750000000000043, -0.03750000000000142, -0.01750000000000007, 0.07675000000000054, -0.012000000000000455, -0.007749999999999702, 0.018499999999999517, 0.015499999999999403, 0.00274999999999892, -0.031000000000000583, 0.04699999999999882, 0.0702499999999997, 0.03749999999999787, -0.0259999999999998, 0.019249999999999545, 0.01750000000000007, 0.05999999999999872, -0.0037500000000019185, 0.05249999999999844, 0.021749999999999048, 0.005250000000000199, 0.012750000000000483, -0.0030000000000001137, 0.037499999999999645, 0.06375000000000064, 0.0495000000000001, 0.13899999999999935, 0.021000000000000796, 0.040000000000000924, 0.0, -0.04225000000000101], zp_timestamp='2025-11-24T20:27:00')
2025-11-24T22:31:21.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:31:21.739 [DEBUG] [Thread-198095] [transport.py] [_log()] starting thread (client mode): 0xd317d0c0
2025-11-24T22:31:21.739 [DEBUG] [Thread-198095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:31:21.755 [DEBUG] [Thread-198095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:31:21.755 [INFO] [Thread-198095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] client lang: <none>
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] server lang: <none>
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] kex follows: False
2025-11-24T22:31:21.762 [DEBUG] [Thread-198095] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:31:21.763 [DEBUG] [Thread-198095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:31:21.763 [DEBUG] [Thread-198095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:31:21.763 [DEBUG] [Thread-198095] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:31:21.763 [DEBUG] [Thread-198095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:31:21.763 [DEBUG] [Thread-198095] [transport.py] [_log()] Compression: none
2025-11-24T22:31:21.763 [DEBUG] [Thread-198095] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:31:21.819 [DEBUG] [Thread-198095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:31:21.819 [DEBUG] [Thread-198095] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:31:21.819 [DEBUG] [Thread-198095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:31:21.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:31:21.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:31:21.876 [DEBUG] [Thread-198095] [transport.py] [_log()] userauth is OK
2025-11-24T22:31:21.876 [DEBUG] [Thread-198095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:31:21.876 [DEBUG] [Thread-198095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:31:21.876 [DEBUG] [Thread-198095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:31:21.876 [DEBUG] [Thread-198095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:31:21.890 [INFO] [Thread-198095] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:31:21.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:31:21.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:31:22.724 [DEBUG] [Thread-198095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:31:22.724 [DEBUG] [Thread-198095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:31:22.771 [DEBUG] [Thread-198095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:31:22.771 [DEBUG] [Thread-198095] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:31:22.783 [DEBUG] [Thread-198095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:31:22.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:31:22.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:31:22.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-11-24T22:31:22.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:31:22.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:31:22.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:31:22.817 [DEBUG] [Thread-198095] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:31:26.499 [DEBUG] [Thread-198097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:31:40.754 [DEBUG] [Thread-198098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:31:41.611 [DEBUG] [Thread-198099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:31:44.438 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:31:44.439 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:31:52.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:31:52.839 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:31:52.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-11-24T22:31:53.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 31, 39), 16.37, 32.11, 0.0, 26.73, 14.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:31:53.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:31:39
2025-11-24T22:31:53.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:31:54.096 [DEBUG] [Thread-198100] [transport.py] [_log()] starting thread (client mode): 0xd073b6a0
2025-11-24T22:31:54.097 [DEBUG] [Thread-198100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:31:54.102 [DEBUG] [Thread-198100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:31:54.102 [INFO] [Thread-198100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] client lang: <none>
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] server lang: <none>
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] kex follows: False
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:31:54.106 [DEBUG] [Thread-198100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:31:54.107 [DEBUG] [Thread-198100] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:31:54.107 [DEBUG] [Thread-198100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:31:54.107 [DEBUG] [Thread-198100] [transport.py] [_log()] Compression: none
2025-11-24T22:31:54.107 [DEBUG] [Thread-198100] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:31:54.134 [DEBUG] [Thread-198100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:31:54.137 [DEBUG] [Thread-198100] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:31:54.138 [DEBUG] [Thread-198100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:31:54.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:31:54.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:31:54.141 [DEBUG] [Thread-198100] [transport.py] [_log()] userauth is OK
2025-11-24T22:31:54.141 [DEBUG] [Thread-198100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:31:54.141 [DEBUG] [Thread-198100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:31:54.141 [DEBUG] [Thread-198100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:31:54.142 [DEBUG] [Thread-198100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:31:54.152 [INFO] [Thread-198100] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:31:54.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:31:54.965 [DEBUG] [Thread-198100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:31:54.966 [DEBUG] [Thread-198100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:31:54.976 [DEBUG] [Thread-198100] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:31:55.007 [DEBUG] [Thread-198100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:31:55.007 [DEBUG] [Thread-198100] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:31:55.011 [DEBUG] [Thread-198100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:31:55.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:31:55.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:31:55.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:31:55.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:31:55.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:31:55.038 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:31:55.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:31:55.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:31:55.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:31:55.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.854908 -999.00  +14.50  16.76     37   +0.20 1 1 1 1 1     0    0 14.18 -5.85 ZNESW 19.1 16.8 157.4 35.5 14.8 -25.1 14.7 -24.5 14.4 -23.4 14.8 -24.3
2025-11-24T22:31:55.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:31:55.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:31:55.040 [DEBUG] [Thread-198100] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:31:55.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.854908
2025-11-24T22:31:55.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:31:55.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:31:55.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:31:55.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:31:55.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:31:55.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:31:39', tmtdew=16.37, humidity=32.11, cloud=0.0, wind=26.73, temperature=14.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:31:39', seeing=0.6, atlas_timestamp='2025-11-24T20:31:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:30:00')
2025-11-24T22:31:55.139 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:31:55.151 [DEBUG] [Thread-198103] [transport.py] [_log()] starting thread (client mode): 0xd073bb50
2025-11-24T22:31:55.151 [DEBUG] [Thread-198103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:31:55.166 [DEBUG] [Thread-198103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:31:55.166 [INFO] [Thread-198103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] client lang: <none>
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] server lang: <none>
2025-11-24T22:31:55.173 [DEBUG] [Thread-198103] [transport.py] [_log()] kex follows: False
2025-11-24T22:31:55.174 [DEBUG] [Thread-198103] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:31:55.174 [DEBUG] [Thread-198103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:31:55.174 [DEBUG] [Thread-198103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:31:55.174 [DEBUG] [Thread-198103] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:31:55.174 [DEBUG] [Thread-198103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:31:55.174 [DEBUG] [Thread-198103] [transport.py] [_log()] Compression: none
2025-11-24T22:31:55.174 [DEBUG] [Thread-198103] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:31:55.233 [DEBUG] [Thread-198103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:31:55.235 [DEBUG] [Thread-198103] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:31:55.236 [DEBUG] [Thread-198103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:31:55.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:31:55.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:31:55.292 [DEBUG] [Thread-198103] [transport.py] [_log()] userauth is OK
2025-11-24T22:31:55.293 [DEBUG] [Thread-198103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:31:55.293 [DEBUG] [Thread-198103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:31:55.293 [DEBUG] [Thread-198103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:31:55.293 [DEBUG] [Thread-198103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:31:55.307 [INFO] [Thread-198103] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:31:55.307 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:31:55.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:31:56.168 [DEBUG] [Thread-198103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:31:56.168 [DEBUG] [Thread-198103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:31:56.215 [DEBUG] [Thread-198103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:31:56.215 [DEBUG] [Thread-198103] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:31:56.224 [DEBUG] [Thread-198103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:31:56.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:31:56.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-11-24T22:31:56.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-11-24T22:31:56.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:31:56.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:31:56.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:31:56.270 [DEBUG] [Thread-198103] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:31:56.659 [DEBUG] [Thread-198105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:32:11.803 [DEBUG] [Thread-198106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:32:26.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:32:26.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:32:26.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-11-24T22:32:26.832 [DEBUG] [Thread-198107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:32:27.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 32, 11), 16.36, 32.13, 0.0, 27.22, 14.58, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:32:27.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:32:11
2025-11-24T22:32:27.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:32:27.434 [DEBUG] [Thread-198108] [transport.py] [_log()] starting thread (client mode): 0xd317e7a0
2025-11-24T22:32:27.434 [DEBUG] [Thread-198108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:32:27.449 [DEBUG] [Thread-198108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:32:27.449 [INFO] [Thread-198108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:32:27.453 [DEBUG] [Thread-198108] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] client lang: <none>
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] server lang: <none>
2025-11-24T22:32:27.454 [DEBUG] [Thread-198108] [transport.py] [_log()] kex follows: False
2025-11-24T22:32:27.455 [DEBUG] [Thread-198108] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:32:27.455 [DEBUG] [Thread-198108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:32:27.456 [DEBUG] [Thread-198108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:32:27.456 [DEBUG] [Thread-198108] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:32:27.456 [DEBUG] [Thread-198108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:32:27.456 [DEBUG] [Thread-198108] [transport.py] [_log()] Compression: none
2025-11-24T22:32:27.456 [DEBUG] [Thread-198108] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:32:27.486 [DEBUG] [Thread-198108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:32:27.492 [DEBUG] [Thread-198108] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:32:27.494 [DEBUG] [Thread-198108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:32:27.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:32:27.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:32:27.498 [DEBUG] [Thread-198108] [transport.py] [_log()] userauth is OK
2025-11-24T22:32:27.499 [DEBUG] [Thread-198108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:32:27.499 [DEBUG] [Thread-198108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:32:27.499 [DEBUG] [Thread-198108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:32:27.499 [DEBUG] [Thread-198108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:32:27.525 [INFO] [Thread-198108] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:32:27.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:32:28.109 [DEBUG] [Thread-198108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:32:28.109 [DEBUG] [Thread-198108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:32:28.110 [DEBUG] [Thread-198108] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:32:28.150 [DEBUG] [Thread-198108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:32:28.150 [DEBUG] [Thread-198108] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:32:28.152 [DEBUG] [Thread-198108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:32:28.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:32:28.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:32:28.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:32:28.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:32:28.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:32:28.174 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:32:28.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:32:28.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:32:28.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:32:28.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.855255 -999.00  +14.50  23.94     37   +0.20 1 1 1 1 1     0    0 14.15 -7.46 ZNESW 22.4 23.9 165.2 33.4 14.8 -25.0 14.7 -24.5 14.4 -23.4 14.7 -24.3
2025-11-24T22:32:28.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:32:28.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:32:28.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.855255
2025-11-24T22:32:28.181 [DEBUG] [Thread-198108] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:32:28.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:32:28.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:32:28.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:32:28.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:32:28.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:32:28.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:32:11', tmtdew=16.36, humidity=32.13, cloud=0.0, wind=27.22, temperature=14.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:32:12', seeing=0.51, atlas_timestamp='2025-11-24T20:31:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:30:00')
2025-11-24T22:32:28.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:32:28.277 [DEBUG] [Thread-198111] [transport.py] [_log()] starting thread (client mode): 0xd3153c40
2025-11-24T22:32:28.277 [DEBUG] [Thread-198111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:32:28.292 [DEBUG] [Thread-198111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:32:28.292 [INFO] [Thread-198111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] client lang: <none>
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] server lang: <none>
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] kex follows: False
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:32:28.300 [DEBUG] [Thread-198111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:32:28.301 [DEBUG] [Thread-198111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:32:28.301 [DEBUG] [Thread-198111] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:32:28.301 [DEBUG] [Thread-198111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:32:28.301 [DEBUG] [Thread-198111] [transport.py] [_log()] Compression: none
2025-11-24T22:32:28.301 [DEBUG] [Thread-198111] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:32:28.359 [DEBUG] [Thread-198111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:32:28.359 [DEBUG] [Thread-198111] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:32:28.359 [DEBUG] [Thread-198111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:32:28.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:32:28.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:32:28.416 [DEBUG] [Thread-198111] [transport.py] [_log()] userauth is OK
2025-11-24T22:32:28.416 [DEBUG] [Thread-198111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:32:28.416 [DEBUG] [Thread-198111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:32:28.416 [DEBUG] [Thread-198111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:32:28.416 [DEBUG] [Thread-198111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:32:28.436 [INFO] [Thread-198111] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:32:28.437 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:32:28.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:32:29.272 [DEBUG] [Thread-198111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:32:29.272 [DEBUG] [Thread-198111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:32:29.320 [DEBUG] [Thread-198111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:32:29.321 [DEBUG] [Thread-198111] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:32:29.331 [DEBUG] [Thread-198111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:32:29.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:32: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')
2025-11-24T22:32:29.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-11-24T22:32:29.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:32:29.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:32:29.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:32:29.373 [DEBUG] [Thread-198111] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:32:41.079 [DEBUG] [Thread-198113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:32:41.876 [DEBUG] [Thread-198114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:32:44.638 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:32:44.639 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:32:56.980 [DEBUG] [Thread-198115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:32:59.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:32:59.395 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:32:59.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-11-24T22:33:00.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 32, 45), 16.33, 32.58, 0.0, 28.94, 14.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:33:00.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:32:45
2025-11-24T22:33:00.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:33:00.645 [DEBUG] [Thread-198116] [transport.py] [_log()] starting thread (client mode): 0xd07877c0
2025-11-24T22:33:00.646 [DEBUG] [Thread-198116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:33:00.655 [DEBUG] [Thread-198116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:33:00.655 [INFO] [Thread-198116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] client lang: <none>
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] server lang: <none>
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] kex follows: False
2025-11-24T22:33:00.659 [DEBUG] [Thread-198116] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:33:00.660 [DEBUG] [Thread-198116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:33:00.660 [DEBUG] [Thread-198116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:33:00.660 [DEBUG] [Thread-198116] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:33:00.660 [DEBUG] [Thread-198116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:33:00.660 [DEBUG] [Thread-198116] [transport.py] [_log()] Compression: none
2025-11-24T22:33:00.660 [DEBUG] [Thread-198116] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:33:00.684 [DEBUG] [Thread-198116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:33:00.687 [DEBUG] [Thread-198116] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:33:00.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:33:00.688 [DEBUG] [Thread-198116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:33:00.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:33:00.729 [DEBUG] [Thread-198116] [transport.py] [_log()] userauth is OK
2025-11-24T22:33:00.729 [DEBUG] [Thread-198116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:33:00.729 [DEBUG] [Thread-198116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:33:00.729 [DEBUG] [Thread-198116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:33:00.729 [DEBUG] [Thread-198116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:33:00.747 [INFO] [Thread-198116] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:33:00.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:33:01.536 [DEBUG] [Thread-198116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:33:01.536 [DEBUG] [Thread-198116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:33:01.537 [DEBUG] [Thread-198116] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:33:01.577 [DEBUG] [Thread-198116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:33:01.577 [DEBUG] [Thread-198116] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:33:01.579 [DEBUG] [Thread-198116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:33:01.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:33:01.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:33:01.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:33:01.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:33:01.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:33:01.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:33:01.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:33:01.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:33:01.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:33:01.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.855602 -999.00  +14.50  24.44     37   +0.20 1 1 1 1 1     0    0 14.20 -7.92 ZNESW 23.6 24.4 166.0 33.6 14.8 -25.0 14.6 -24.5 14.4 -23.3 14.7 -24.2
2025-11-24T22:33:01.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:33:01.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:33:01.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.855602
2025-11-24T22:33:01.606 [DEBUG] [Thread-198116] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:33:01.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:33:01.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:33:01.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:33:01.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:33:01.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:33:01.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:32:45', tmtdew=16.33, humidity=32.58, cloud=0.0, wind=28.94, temperature=14.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:32:45', seeing=0.5, atlas_timestamp='2025-11-24T20:32:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:30:00')
2025-11-24T22:33:01.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:33:01.697 [DEBUG] [Thread-198119] [transport.py] [_log()] starting thread (client mode): 0xd07860b0
2025-11-24T22:33:01.698 [DEBUG] [Thread-198119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:33:01.714 [DEBUG] [Thread-198119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:33:01.714 [INFO] [Thread-198119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] client lang: <none>
2025-11-24T22:33:01.722 [DEBUG] [Thread-198119] [transport.py] [_log()] server lang: <none>
2025-11-24T22:33:01.723 [DEBUG] [Thread-198119] [transport.py] [_log()] kex follows: False
2025-11-24T22:33:01.723 [DEBUG] [Thread-198119] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:33:01.723 [DEBUG] [Thread-198119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:33:01.723 [DEBUG] [Thread-198119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:33:01.723 [DEBUG] [Thread-198119] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:33:01.723 [DEBUG] [Thread-198119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:33:01.723 [DEBUG] [Thread-198119] [transport.py] [_log()] Compression: none
2025-11-24T22:33:01.723 [DEBUG] [Thread-198119] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:33:01.783 [DEBUG] [Thread-198119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:33:01.783 [DEBUG] [Thread-198119] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:33:01.783 [DEBUG] [Thread-198119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:33:01.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:33:01.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:33:01.840 [DEBUG] [Thread-198119] [transport.py] [_log()] userauth is OK
2025-11-24T22:33:01.840 [DEBUG] [Thread-198119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:33:01.840 [DEBUG] [Thread-198119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:33:01.840 [DEBUG] [Thread-198119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:33:01.840 [DEBUG] [Thread-198119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:33:01.855 [INFO] [Thread-198119] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:33:01.855 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:33:01.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:33:02.779 [DEBUG] [Thread-198119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:33:02.779 [DEBUG] [Thread-198119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:33:02.827 [DEBUG] [Thread-198119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:33:02.827 [DEBUG] [Thread-198119] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:33:02.835 [DEBUG] [Thread-198119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:33:02.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:33:02.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-11-24T22:33:02.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-11-24T22:33:02.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:33:02.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:33:02.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:33:02.869 [DEBUG] [Thread-198119] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:33:12.033 [DEBUG] [Thread-198121 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:33:27.196 [DEBUG] [Thread-198122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:33:32.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:33:32.902 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:33:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:33:33.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 33, 18), 16.32, 32.61, 0.0, 28.65, 14.55, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:33:33.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:33:18
2025-11-24T22:33:33.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:33:34.123 [DEBUG] [Thread-198123] [transport.py] [_log()] starting thread (client mode): 0xd317ffd0
2025-11-24T22:33:34.123 [DEBUG] [Thread-198123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:33:34.140 [DEBUG] [Thread-198123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:33:34.140 [INFO] [Thread-198123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:33:34.143 [DEBUG] [Thread-198123] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:33:34.143 [DEBUG] [Thread-198123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:33:34.143 [DEBUG] [Thread-198123] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:33:34.143 [DEBUG] [Thread-198123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:33:34.144 [DEBUG] [Thread-198123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:33:34.144 [DEBUG] [Thread-198123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:33:34.144 [DEBUG] [Thread-198123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:33:34.144 [DEBUG] [Thread-198123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:33:34.144 [DEBUG] [Thread-198123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:33:34.144 [DEBUG] [Thread-198123] [transport.py] [_log()] client lang: <none>
2025-11-24T22:33:34.144 [DEBUG] [Thread-198123] [transport.py] [_log()] server lang: <none>
2025-11-24T22:33:34.144 [DEBUG] [Thread-198123] [transport.py] [_log()] kex follows: False
2025-11-24T22:33:34.144 [DEBUG] [Thread-198123] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:33:34.145 [DEBUG] [Thread-198123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:33:34.145 [DEBUG] [Thread-198123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:33:34.145 [DEBUG] [Thread-198123] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:33:34.145 [DEBUG] [Thread-198123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:33:34.145 [DEBUG] [Thread-198123] [transport.py] [_log()] Compression: none
2025-11-24T22:33:34.145 [DEBUG] [Thread-198123] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:33:34.175 [DEBUG] [Thread-198123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:33:34.177 [DEBUG] [Thread-198123] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:33:34.178 [DEBUG] [Thread-198123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:33:34.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:33:34.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:33:34.183 [DEBUG] [Thread-198123] [transport.py] [_log()] userauth is OK
2025-11-24T22:33:34.183 [DEBUG] [Thread-198123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:33:34.183 [DEBUG] [Thread-198123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:33:34.183 [DEBUG] [Thread-198123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:33:34.183 [DEBUG] [Thread-198123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:33:34.204 [INFO] [Thread-198123] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:33:34.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:33:34.844 [DEBUG] [Thread-198123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:33:34.845 [DEBUG] [Thread-198123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:33:34.855 [DEBUG] [Thread-198123] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:33:34.885 [DEBUG] [Thread-198123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:33:34.885 [DEBUG] [Thread-198123] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:33:34.888 [DEBUG] [Thread-198123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:33:34.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:33:34.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:33:34.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:33:34.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:33:34.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:33:34.907 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:33:34.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:33:34.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:33:34.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:33:34.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.856297 -999.00  +14.40  21.46     37   +0.20 1 1 1 1 1     0    0 13.83 -12.20 ZNESW 18.6 21.5 161.0 27.0 14.8 -25.0 14.6 -24.5 14.4 -23.4 14.7 -24.2
2025-11-24T22:33:34.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:33:34.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:33:34.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.856297
2025-11-24T22:33:34.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:33:34.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:33:34.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:33:34.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:33:34.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:33:34.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:33:18', tmtdew=16.32, humidity=32.61, cloud=0.0, wind=28.65, temperature=14.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:33:18', seeing=0.56, atlas_timestamp='2025-11-24T20:33:04.061', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:30:00')
2025-11-24T22:33:34.917 [DEBUG] [Thread-198123] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:33:34.991 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:33:35.002 [DEBUG] [Thread-198126] [transport.py] [_log()] starting thread (client mode): 0xd318bdf0
2025-11-24T22:33:35.003 [DEBUG] [Thread-198126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:33:35.017 [DEBUG] [Thread-198126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:33:35.018 [INFO] [Thread-198126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] client lang: <none>
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] server lang: <none>
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] kex follows: False
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:33:35.025 [DEBUG] [Thread-198126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:33:35.026 [DEBUG] [Thread-198126] [transport.py] [_log()] Compression: none
2025-11-24T22:33:35.026 [DEBUG] [Thread-198126] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:33:35.083 [DEBUG] [Thread-198126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:33:35.083 [DEBUG] [Thread-198126] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:33:35.083 [DEBUG] [Thread-198126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:33:35.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:33:35.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:33:35.140 [DEBUG] [Thread-198126] [transport.py] [_log()] userauth is OK
2025-11-24T22:33:35.140 [DEBUG] [Thread-198126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:33:35.140 [DEBUG] [Thread-198126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:33:35.140 [DEBUG] [Thread-198126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:33:35.140 [DEBUG] [Thread-198126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:33:35.155 [INFO] [Thread-198126] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:33:35.155 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:33:35.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:33:36.002 [DEBUG] [Thread-198126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:33:36.002 [DEBUG] [Thread-198126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:33:36.050 [DEBUG] [Thread-198126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:33:36.050 [DEBUG] [Thread-198126] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:33:36.058 [DEBUG] [Thread-198126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:33:36.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:33:36.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-11-24T22:33:36.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-11-24T22:33:36.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:33:36.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:33:36.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:33:36.092 [DEBUG] [Thread-198126] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:33:41.349 [DEBUG] [Thread-198128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:33:42.230 [DEBUG] [Thread-198129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:33:44.847 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:33:44.849 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:33:57.371 [DEBUG] [Thread-198130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:34:06.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:34:06.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:34:06.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:34:07.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 33, 51), 16.27, 32.59, 0.0, 27.61, 14.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:34:07.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:33:51
2025-11-24T22:34:07.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:34:07.619 [DEBUG] [Thread-198131] [transport.py] [_log()] starting thread (client mode): 0xd31f5b40
2025-11-24T22:34:07.620 [DEBUG] [Thread-198131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:34:07.633 [DEBUG] [Thread-198131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:34:07.633 [INFO] [Thread-198131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:34:07.638 [DEBUG] [Thread-198131] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] client lang: <none>
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] server lang: <none>
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] kex follows: False
2025-11-24T22:34:07.639 [DEBUG] [Thread-198131] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:34:07.640 [DEBUG] [Thread-198131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:34:07.640 [DEBUG] [Thread-198131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:34:07.640 [DEBUG] [Thread-198131] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:34:07.640 [DEBUG] [Thread-198131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:34:07.640 [DEBUG] [Thread-198131] [transport.py] [_log()] Compression: none
2025-11-24T22:34:07.640 [DEBUG] [Thread-198131] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:34:07.677 [DEBUG] [Thread-198131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:34:07.682 [DEBUG] [Thread-198131] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:34:07.683 [DEBUG] [Thread-198131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:34:07.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:34:07.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:34:07.689 [DEBUG] [Thread-198131] [transport.py] [_log()] userauth is OK
2025-11-24T22:34:07.689 [DEBUG] [Thread-198131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:34:07.689 [DEBUG] [Thread-198131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:34:07.689 [DEBUG] [Thread-198131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:34:07.689 [DEBUG] [Thread-198131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:34:07.716 [INFO] [Thread-198131] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:34:07.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:34:08.438 [DEBUG] [Thread-198131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:34:08.439 [DEBUG] [Thread-198131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:34:08.449 [DEBUG] [Thread-198131] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:34:08.480 [DEBUG] [Thread-198131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:34:08.480 [DEBUG] [Thread-198131] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:34:08.483 [DEBUG] [Thread-198131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:34:08.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:34:08.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:34:08.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:34:08.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:34:08.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:34:08.507 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:34:08.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:34:08.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:34:08.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:34:08.510 [DEBUG] [Thread-198131] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:34:08.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.856644 -999.00  +14.40  24.54     37   +0.20 1 1 1 1 1     0    0 14.24 -14.18 ZNESW 20.6 24.5 160.8 33.8 14.8 -25.1 14.6 -24.5 14.4 -23.3 14.7 -24.4
2025-11-24T22:34:08.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:34:08.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:34:08.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.856644
2025-11-24T22:34:08.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:34:08.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:34:08.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:34:08.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:34:08.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:34:08.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:33:51', tmtdew=16.27, humidity=32.59, cloud=0.0, wind=27.61, temperature=14.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:33:51', seeing=0.56, atlas_timestamp='2025-11-24T20:33:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:30:00')
2025-11-24T22:34:08.613 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:34:08.625 [DEBUG] [Thread-198134] [transport.py] [_log()] starting thread (client mode): 0xd31f6470
2025-11-24T22:34:08.625 [DEBUG] [Thread-198134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:34:08.640 [DEBUG] [Thread-198134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:34:08.640 [INFO] [Thread-198134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:34:08.648 [DEBUG] [Thread-198134] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:34:08.648 [DEBUG] [Thread-198134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:34:08.648 [DEBUG] [Thread-198134] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:34:08.648 [DEBUG] [Thread-198134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:34:08.648 [DEBUG] [Thread-198134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:34:08.648 [DEBUG] [Thread-198134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:34:08.648 [DEBUG] [Thread-198134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:34:08.648 [DEBUG] [Thread-198134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] client lang: <none>
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] server lang: <none>
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] kex follows: False
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] Compression: none
2025-11-24T22:34:08.649 [DEBUG] [Thread-198134] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:34:08.709 [DEBUG] [Thread-198134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:34:08.710 [DEBUG] [Thread-198134] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:34:08.711 [DEBUG] [Thread-198134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:34:08.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:34:08.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:34:08.771 [DEBUG] [Thread-198134] [transport.py] [_log()] userauth is OK
2025-11-24T22:34:08.771 [DEBUG] [Thread-198134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:34:08.771 [DEBUG] [Thread-198134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:34:08.771 [DEBUG] [Thread-198134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:34:08.771 [DEBUG] [Thread-198134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:34:08.791 [INFO] [Thread-198134] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:34:08.791 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:34:08.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:34:09.624 [DEBUG] [Thread-198134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:34:09.624 [DEBUG] [Thread-198134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:34:09.672 [DEBUG] [Thread-198134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:34:09.672 [DEBUG] [Thread-198134] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:34:09.681 [DEBUG] [Thread-198134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:34:09.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:34:09.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-11-24T22:34:09.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-11-24T22:34:09.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:34:09.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:34:09.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:34:09.715 [DEBUG] [Thread-198134] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:34:12.433 [DEBUG] [Thread-198136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:34:27.568 [DEBUG] [Thread-198137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:34:39.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:34:39.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:34:39.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:34:40.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 34, 23), 16.26, 32.63, 0.0, 25.69, 14.48, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:34:40.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:34:23
2025-11-24T22:34:40.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:34:41.059 [DEBUG] [Thread-198138] [transport.py] [_log()] starting thread (client mode): 0xd0786650
2025-11-24T22:34:41.060 [DEBUG] [Thread-198138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:34:41.063 [DEBUG] [Thread-198138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:34:41.063 [INFO] [Thread-198138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:34:41.067 [DEBUG] [Thread-198138] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:34:41.067 [DEBUG] [Thread-198138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] client lang: <none>
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] server lang: <none>
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] kex follows: False
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] Compression: none
2025-11-24T22:34:41.068 [DEBUG] [Thread-198138] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:34:41.095 [DEBUG] [Thread-198138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:34:41.097 [DEBUG] [Thread-198138] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:34:41.098 [DEBUG] [Thread-198138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:34:41.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:34:41.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:34:41.137 [DEBUG] [Thread-198138] [transport.py] [_log()] userauth is OK
2025-11-24T22:34:41.137 [DEBUG] [Thread-198138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:34:41.137 [DEBUG] [Thread-198138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:34:41.137 [DEBUG] [Thread-198138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:34:41.137 [DEBUG] [Thread-198138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:34:41.160 [INFO] [Thread-198138] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:34:41.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:34:41.649 [DEBUG] [Thread-198140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:34:41.818 [DEBUG] [Thread-198138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:34:41.819 [DEBUG] [Thread-198138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:34:41.829 [DEBUG] [Thread-198138] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:34:41.860 [DEBUG] [Thread-198138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:34:41.860 [DEBUG] [Thread-198138] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:34:41.863 [DEBUG] [Thread-198138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:34:41.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:34:41.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:34:41.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:34:41.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:34:41.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:34:41.888 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:34:41.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:34:41.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:34:41.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:34:41.890 [DEBUG] [Thread-198138] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:34:41.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.856991 -999.00  +14.40  25.96     38   +0.30 1 1 1 1 1     0    0 14.02 -15.60 ZNESW 30.4 26.0 172.0 38.3 14.7 -25.0 14.6 -24.5 14.4 -23.4 14.6 -24.2
2025-11-24T22:34:41.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:34:41.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:34:41.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.856991
2025-11-24T22:34:41.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:34:41.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:34:41.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:34:41.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:34:41.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:34:41.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:34:23', tmtdew=16.26, humidity=32.63, cloud=0.0, wind=25.69, temperature=14.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:34:24', seeing=0.58, atlas_timestamp='2025-11-24T20:34:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:30:00')
2025-11-24T22:34:42.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:34:42.013 [DEBUG] [Thread-198142] [transport.py] [_log()] starting thread (client mode): 0xd0786e00
2025-11-24T22:34:42.014 [DEBUG] [Thread-198142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:34:42.028 [DEBUG] [Thread-198142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:34:42.028 [INFO] [Thread-198142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:34:42.036 [DEBUG] [Thread-198142] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:34:42.036 [DEBUG] [Thread-198142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:34:42.036 [DEBUG] [Thread-198142] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:34:42.036 [DEBUG] [Thread-198142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:34:42.036 [DEBUG] [Thread-198142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] client lang: <none>
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] server lang: <none>
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] kex follows: False
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:34:42.037 [DEBUG] [Thread-198142] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:34:42.038 [DEBUG] [Thread-198142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:34:42.038 [DEBUG] [Thread-198142] [transport.py] [_log()] Compression: none
2025-11-24T22:34:42.038 [DEBUG] [Thread-198142] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:34:42.095 [DEBUG] [Thread-198142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:34:42.096 [DEBUG] [Thread-198142] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:34:42.096 [DEBUG] [Thread-198142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:34:42.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:34:42.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:34:42.152 [DEBUG] [Thread-198142] [transport.py] [_log()] userauth is OK
2025-11-24T22:34:42.152 [DEBUG] [Thread-198142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:34:42.152 [DEBUG] [Thread-198142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:34:42.152 [DEBUG] [Thread-198142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:34:42.152 [DEBUG] [Thread-198142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:34:42.166 [INFO] [Thread-198142] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:34:42.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:34:42.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:34:42.665 [DEBUG] [Thread-198144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:34:43.014 [DEBUG] [Thread-198142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:34:43.014 [DEBUG] [Thread-198142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:34:43.062 [DEBUG] [Thread-198142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:34:43.062 [DEBUG] [Thread-198142] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:34:43.070 [DEBUG] [Thread-198142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:34:43.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:34:43.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-11-24T22:34:43.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-11-24T22:34:43.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:34:43.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:34:43.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:34:43.102 [DEBUG] [Thread-198142] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:34:45.055 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:34:45.057 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:34:57.747 [DEBUG] [Thread-198145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:35:12.782 [DEBUG] [Thread-198146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:35:13.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:35:13.131 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:35:13.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-11-24T22:35:15.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 34, 56), 16.26, 32.63, 0.0, 28.88, 14.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:35:15.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:34:56
2025-11-24T22:35:15.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:35:16.171 [DEBUG] [Thread-198147] [transport.py] [_log()] starting thread (client mode): 0xd318bb50
2025-11-24T22:35:16.172 [DEBUG] [Thread-198147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:35:16.184 [DEBUG] [Thread-198147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:35:16.185 [INFO] [Thread-198147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:35:16.189 [DEBUG] [Thread-198147] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:35:16.190 [DEBUG] [Thread-198147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:35:16.190 [DEBUG] [Thread-198147] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:35:16.190 [DEBUG] [Thread-198147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:35:16.190 [DEBUG] [Thread-198147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:35:16.190 [DEBUG] [Thread-198147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:35:16.190 [DEBUG] [Thread-198147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:35:16.190 [DEBUG] [Thread-198147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:35:16.190 [DEBUG] [Thread-198147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:35:16.190 [DEBUG] [Thread-198147] [transport.py] [_log()] client lang: <none>
2025-11-24T22:35:16.190 [DEBUG] [Thread-198147] [transport.py] [_log()] server lang: <none>
2025-11-24T22:35:16.191 [DEBUG] [Thread-198147] [transport.py] [_log()] kex follows: False
2025-11-24T22:35:16.191 [DEBUG] [Thread-198147] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:35:16.192 [DEBUG] [Thread-198147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:35:16.192 [DEBUG] [Thread-198147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:35:16.192 [DEBUG] [Thread-198147] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:35:16.192 [DEBUG] [Thread-198147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:35:16.192 [DEBUG] [Thread-198147] [transport.py] [_log()] Compression: none
2025-11-24T22:35:16.192 [DEBUG] [Thread-198147] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:35:16.228 [DEBUG] [Thread-198147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:35:16.232 [DEBUG] [Thread-198147] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:35:16.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:35:16.235 [DEBUG] [Thread-198147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:35:16.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:35:16.239 [DEBUG] [Thread-198147] [transport.py] [_log()] userauth is OK
2025-11-24T22:35:16.239 [DEBUG] [Thread-198147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:35:16.240 [DEBUG] [Thread-198147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:35:16.240 [DEBUG] [Thread-198147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:35:16.240 [DEBUG] [Thread-198147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:35:16.269 [INFO] [Thread-198147] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:35:16.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:35:17.806 [DEBUG] [Thread-198147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:35:17.806 [DEBUG] [Thread-198147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:35:17.807 [DEBUG] [Thread-198147] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:35:17.847 [DEBUG] [Thread-198147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:35:17.847 [DEBUG] [Thread-198147] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:35:17.850 [DEBUG] [Thread-198147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:35:17.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:35:17.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:35:17.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:35:17.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:35:17.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:35:17.891 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:35:17.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:35:17.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:35:17.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:35:17.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.857339 -999.00  +14.40  27.58     38   +0.30 1 1 1 1 1     0    0 13.65 -18.06 ZNESW 24.3 27.6 167.4 39.4 14.7 -24.9 14.6 -24.4 14.4 -23.3 14.6 -24.2
2025-11-24T22:35:17.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:35:17.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:35:17.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.857339
2025-11-24T22:35:17.898 [DEBUG] [Thread-198147] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:35:17.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:35:17.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:35:17.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:35:17.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:35:17.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:35:17.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:34:56', tmtdew=16.26, humidity=32.63, cloud=0.0, wind=28.88, temperature=14.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:34:56', seeing=0.5, atlas_timestamp='2025-11-24T20:34:34.090', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:33:00')
2025-11-24T22:35:17.979 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:35:17.990 [DEBUG] [Thread-198150] [transport.py] [_log()] starting thread (client mode): 0xd31f5ba0
2025-11-24T22:35:17.990 [DEBUG] [Thread-198150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:35:18.004 [DEBUG] [Thread-198150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:35:18.004 [INFO] [Thread-198150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] client lang: <none>
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] server lang: <none>
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] kex follows: False
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:35:18.012 [DEBUG] [Thread-198150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:35:18.013 [DEBUG] [Thread-198150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:35:18.013 [DEBUG] [Thread-198150] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:35:18.013 [DEBUG] [Thread-198150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:35:18.013 [DEBUG] [Thread-198150] [transport.py] [_log()] Compression: none
2025-11-24T22:35:18.013 [DEBUG] [Thread-198150] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:35:18.071 [DEBUG] [Thread-198150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:35:18.072 [DEBUG] [Thread-198150] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:35:18.072 [DEBUG] [Thread-198150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:35:18.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:35:18.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:35:18.129 [DEBUG] [Thread-198150] [transport.py] [_log()] userauth is OK
2025-11-24T22:35:18.129 [DEBUG] [Thread-198150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:35:18.129 [DEBUG] [Thread-198150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:35:18.129 [DEBUG] [Thread-198150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:35:18.129 [DEBUG] [Thread-198150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:35:18.142 [INFO] [Thread-198150] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:35:18.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:35:18.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:35:18.970 [DEBUG] [Thread-198150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:35:18.972 [DEBUG] [Thread-198150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:35:19.018 [DEBUG] [Thread-198150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:35:19.018 [DEBUG] [Thread-198150] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:35:19.027 [DEBUG] [Thread-198150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:35:19.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:35:19.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-11-24T22:35:19.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-11-24T22:35:19.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:35:19.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:35:19.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:35:19.064 [DEBUG] [Thread-198150] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:35:27.836 [DEBUG] [Thread-198152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:35:42.009 [DEBUG] [Thread-198153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:35:42.987 [DEBUG] [Thread-198154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:35:45.262 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:35:45.265 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:35:49.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:35:49.090 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:35:49.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-11-24T22:35:50.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 35, 29), 16.2, 32.74, 0.0, 31.87, 14.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:35:50.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:35:29
2025-11-24T22:35:50.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:35:50.400 [DEBUG] [Thread-198155] [transport.py] [_log()] starting thread (client mode): 0xd31f4190
2025-11-24T22:35:50.401 [DEBUG] [Thread-198155] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:35:50.413 [DEBUG] [Thread-198155] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:35:50.414 [INFO] [Thread-198155] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:35:50.418 [DEBUG] [Thread-198155] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:35:50.418 [DEBUG] [Thread-198155] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:35:50.418 [DEBUG] [Thread-198155] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] client lang: <none>
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] server lang: <none>
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] kex follows: False
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:35:50.419 [DEBUG] [Thread-198155] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:35:50.420 [DEBUG] [Thread-198155] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:35:50.420 [DEBUG] [Thread-198155] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:35:50.420 [DEBUG] [Thread-198155] [transport.py] [_log()] Compression: none
2025-11-24T22:35:50.420 [DEBUG] [Thread-198155] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:35:50.457 [DEBUG] [Thread-198155] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:35:50.463 [DEBUG] [Thread-198155] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:35:50.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:35:50.466 [DEBUG] [Thread-198155] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:35:50.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:35:50.470 [DEBUG] [Thread-198155] [transport.py] [_log()] userauth is OK
2025-11-24T22:35:50.471 [DEBUG] [Thread-198155] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:35:50.471 [DEBUG] [Thread-198155] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:35:50.471 [DEBUG] [Thread-198155] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:35:50.471 [DEBUG] [Thread-198155] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:35:50.510 [INFO] [Thread-198155] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:35:50.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:35:51.160 [DEBUG] [Thread-198155] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:35:51.160 [DEBUG] [Thread-198155] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:35:51.171 [DEBUG] [Thread-198155] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:35:51.202 [DEBUG] [Thread-198155] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:35:51.202 [DEBUG] [Thread-198155] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:35:51.206 [DEBUG] [Thread-198155] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:35:51.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:35:51.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:35:51.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:35:51.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:35:51.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:35:51.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:35:51.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:35:51.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:35:51.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:35:51.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.857685 -999.00  +14.40  18.71     38   +0.30 1 1 1 1 1     0    0 13.94 -21.86 ZNESW 17.4 18.7 159.9 25.4 14.7 -25.1 14.6 -24.5 14.3 -23.3 14.7 -24.3
2025-11-24T22:35:51.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:35:51.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:35:51.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.857685
2025-11-24T22:35:51.241 [DEBUG] [Thread-198155] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:35:51.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:35:51.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:35:51.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:35:51.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:35:51.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:35:51.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:35:29', tmtdew=16.2, humidity=32.74, cloud=0.0, wind=31.87, temperature=14.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:35:30', seeing=0.6, atlas_timestamp='2025-11-24T20:35:03.984', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:33:00')
2025-11-24T22:35:51.343 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:35:51.356 [DEBUG] [Thread-198158] [transport.py] [_log()] starting thread (client mode): 0xd31f67d0
2025-11-24T22:35:51.356 [DEBUG] [Thread-198158] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:35:51.373 [DEBUG] [Thread-198158] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:35:51.374 [INFO] [Thread-198158] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:35:51.381 [DEBUG] [Thread-198158] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:35:51.382 [DEBUG] [Thread-198158] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:35:51.382 [DEBUG] [Thread-198158] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:35:51.382 [DEBUG] [Thread-198158] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:35:51.382 [DEBUG] [Thread-198158] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:35:51.382 [DEBUG] [Thread-198158] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:35:51.382 [DEBUG] [Thread-198158] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:35:51.383 [DEBUG] [Thread-198158] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:35:51.383 [DEBUG] [Thread-198158] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:35:51.383 [DEBUG] [Thread-198158] [transport.py] [_log()] client lang: <none>
2025-11-24T22:35:51.383 [DEBUG] [Thread-198158] [transport.py] [_log()] server lang: <none>
2025-11-24T22:35:51.383 [DEBUG] [Thread-198158] [transport.py] [_log()] kex follows: False
2025-11-24T22:35:51.383 [DEBUG] [Thread-198158] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:35:51.383 [DEBUG] [Thread-198158] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:35:51.384 [DEBUG] [Thread-198158] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:35:51.384 [DEBUG] [Thread-198158] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:35:51.384 [DEBUG] [Thread-198158] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:35:51.384 [DEBUG] [Thread-198158] [transport.py] [_log()] Compression: none
2025-11-24T22:35:51.384 [DEBUG] [Thread-198158] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:35:51.442 [DEBUG] [Thread-198158] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:35:51.443 [DEBUG] [Thread-198158] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:35:51.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:35:51.444 [DEBUG] [Thread-198158] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:35:51.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:35:51.500 [DEBUG] [Thread-198158] [transport.py] [_log()] userauth is OK
2025-11-24T22:35:51.501 [DEBUG] [Thread-198158] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:35:51.501 [DEBUG] [Thread-198158] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:35:51.501 [DEBUG] [Thread-198158] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:35:51.501 [DEBUG] [Thread-198158] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:35:51.518 [INFO] [Thread-198158] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:35:51.519 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:35:51.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:35:52.395 [DEBUG] [Thread-198158] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:35:52.396 [DEBUG] [Thread-198158] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:35:52.443 [DEBUG] [Thread-198158] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:35:52.444 [DEBUG] [Thread-198158] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:35:52.454 [DEBUG] [Thread-198158] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:35:52.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:35:52.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-11-24T22:35: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') -> 00000000
2025-11-24T22:35:52.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:35:52.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:35:52.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:35:52.493 [DEBUG] [Thread-198158] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:35:58.077 [DEBUG] [Thread-198160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:13.236 [DEBUG] [Thread-198161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:22.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:36:22.522 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:36:22.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:36:23.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 36, 3), 16.17, 32.82, 0.0, 31.81, 14.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:36:23.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:36:03
2025-11-24T22:36:23.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:36:23.773 [DEBUG] [Thread-198162] [transport.py] [_log()] starting thread (client mode): 0xd31f5840
2025-11-24T22:36:23.773 [DEBUG] [Thread-198162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:36:23.781 [DEBUG] [Thread-198162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:36:23.781 [INFO] [Thread-198162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:36:23.787 [DEBUG] [Thread-198162] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:36:23.787 [DEBUG] [Thread-198162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:36:23.787 [DEBUG] [Thread-198162] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:36:23.787 [DEBUG] [Thread-198162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:36:23.788 [DEBUG] [Thread-198162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:36:23.788 [DEBUG] [Thread-198162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:36:23.788 [DEBUG] [Thread-198162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:36:23.788 [DEBUG] [Thread-198162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:36:23.788 [DEBUG] [Thread-198162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:36:23.788 [DEBUG] [Thread-198162] [transport.py] [_log()] client lang: <none>
2025-11-24T22:36:23.788 [DEBUG] [Thread-198162] [transport.py] [_log()] server lang: <none>
2025-11-24T22:36:23.788 [DEBUG] [Thread-198162] [transport.py] [_log()] kex follows: False
2025-11-24T22:36:23.788 [DEBUG] [Thread-198162] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:36:23.789 [DEBUG] [Thread-198162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:36:23.789 [DEBUG] [Thread-198162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:36:23.789 [DEBUG] [Thread-198162] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:36:23.789 [DEBUG] [Thread-198162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:36:23.790 [DEBUG] [Thread-198162] [transport.py] [_log()] Compression: none
2025-11-24T22:36:23.790 [DEBUG] [Thread-198162] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:36:23.828 [DEBUG] [Thread-198162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:36:23.833 [DEBUG] [Thread-198162] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:36:23.835 [DEBUG] [Thread-198162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:36:23.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:36:23.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:36:23.841 [DEBUG] [Thread-198162] [transport.py] [_log()] userauth is OK
2025-11-24T22:36:23.841 [DEBUG] [Thread-198162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:36:23.842 [DEBUG] [Thread-198162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:36:23.842 [DEBUG] [Thread-198162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:36:23.842 [DEBUG] [Thread-198162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:36:23.869 [INFO] [Thread-198162] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:36:23.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:36:24.449 [DEBUG] [Thread-198162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:36:24.449 [DEBUG] [Thread-198162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:36:24.460 [DEBUG] [Thread-198162] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:36:24.490 [DEBUG] [Thread-198162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:36:24.490 [DEBUG] [Thread-198162] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:36:24.494 [DEBUG] [Thread-198162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:36:24.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:36:24.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:36:24.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:36:24.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:36:24.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:36:24.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:36:24.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:36:24.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:36:24.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:36:24.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.858033 -999.00  +14.40  28.12     38   +0.30 1 1 1 1 1     0    0 13.56 -22.56 ZNESW 29.7 28.1 170.4 33.2 14.7 -25.0 14.6 -24.4 14.3 -23.2 14.7 -24.3
2025-11-24T22:36:24.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:36:24.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:36:24.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.858033
2025-11-24T22:36:24.528 [DEBUG] [Thread-198162] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:36:24.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:36:24.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:36:24.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:36:24.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:36:24.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:36:24.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:36:03', tmtdew=16.17, humidity=32.82, cloud=0.0, wind=31.81, temperature=14.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:36:03', seeing=0.6, atlas_timestamp='2025-11-24T20:35:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:33:00')
2025-11-24T22:36:24.636 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:36:24.646 [DEBUG] [Thread-198165] [transport.py] [_log()] starting thread (client mode): 0xd317d690
2025-11-24T22:36:24.646 [DEBUG] [Thread-198165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:36:24.660 [DEBUG] [Thread-198165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:36:24.660 [INFO] [Thread-198165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:36:24.668 [DEBUG] [Thread-198165] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:36:24.668 [DEBUG] [Thread-198165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:36:24.668 [DEBUG] [Thread-198165] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] client lang: <none>
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] server lang: <none>
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] kex follows: False
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] Compression: none
2025-11-24T22:36:24.669 [DEBUG] [Thread-198165] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:36:24.723 [DEBUG] [Thread-198165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:36:24.723 [DEBUG] [Thread-198165] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:36:24.724 [DEBUG] [Thread-198165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:36:24.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:36:24.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:36:24.785 [DEBUG] [Thread-198165] [transport.py] [_log()] userauth is OK
2025-11-24T22:36:24.785 [DEBUG] [Thread-198165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:36:24.785 [DEBUG] [Thread-198165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:36:24.785 [DEBUG] [Thread-198165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:36:24.786 [DEBUG] [Thread-198165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:36:24.804 [INFO] [Thread-198165] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:36:24.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:36:24.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:36:25.644 [DEBUG] [Thread-198165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:36:25.644 [DEBUG] [Thread-198165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:36:25.692 [DEBUG] [Thread-198165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:36:25.692 [DEBUG] [Thread-198165] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:36:25.701 [DEBUG] [Thread-198165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:36:25.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:36:25.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-11-24T22:36:25.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-11-24T22:36:25.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:36:25.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:36:25.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:36:25.742 [DEBUG] [Thread-198165] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:36:28.306 [DEBUG] [Thread-198167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:42.343 [DEBUG] [Thread-198168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:43.461 [DEBUG] [Thread-198169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:45.422 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:45.471 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:45.473 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:48.497 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:53.535 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:55.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:36:55.752 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:36:55.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:36:56.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 36, 36), 16.15, 32.86, 0.0, 30.98, 14.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:36:56.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:36:36
2025-11-24T22:36:56.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:36:56.821 [DEBUG] [Thread-198170] [transport.py] [_log()] starting thread (client mode): 0xd317fb50
2025-11-24T22:36:56.822 [DEBUG] [Thread-198170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:36:56.831 [DEBUG] [Thread-198170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:36:56.831 [INFO] [Thread-198170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:36:56.836 [DEBUG] [Thread-198170] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] client lang: <none>
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] server lang: <none>
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] kex follows: False
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:36:56.837 [DEBUG] [Thread-198170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:36:56.838 [DEBUG] [Thread-198170] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:36:56.838 [DEBUG] [Thread-198170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:36:56.838 [DEBUG] [Thread-198170] [transport.py] [_log()] Compression: none
2025-11-24T22:36:56.838 [DEBUG] [Thread-198170] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:36:56.868 [DEBUG] [Thread-198170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:36:56.871 [DEBUG] [Thread-198170] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:36:56.872 [DEBUG] [Thread-198170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:36:56.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:36:56.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:36:56.875 [DEBUG] [Thread-198170] [transport.py] [_log()] userauth is OK
2025-11-24T22:36:56.875 [DEBUG] [Thread-198170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:36:56.876 [DEBUG] [Thread-198170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:36:56.876 [DEBUG] [Thread-198170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:36:56.876 [DEBUG] [Thread-198170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:36:56.904 [INFO] [Thread-198170] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:36:56.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:36:57.532 [DEBUG] [Thread-198170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:36:57.532 [DEBUG] [Thread-198170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:36:57.533 [DEBUG] [Thread-198170] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:36:57.573 [DEBUG] [Thread-198170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:36:57.573 [DEBUG] [Thread-198170] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:36:57.576 [DEBUG] [Thread-198170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:36:57.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:36:57.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:36:57.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:36:57.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:36:57.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:36:57.597 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:36:57.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:36:57.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:36:57.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:36:57.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.858727 -999.00  +14.40  25.26     38   +0.30 1 1 1 1 1     0    0 13.23 -27.87 ZNESW 22.3 25.3 175.6 27.5 14.7 -25.2 14.6 -24.6 14.3 -23.4 14.7 -24.4
2025-11-24T22:36:57.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:36:57.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:36:57.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.858727
2025-11-24T22:36:57.604 [DEBUG] [Thread-198170] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:36:57.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:36:57.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:36:57.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:36:57.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:36:57.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:36:57.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:36:36', tmtdew=16.15, humidity=32.86, cloud=0.0, wind=30.98, temperature=14.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:36:36', seeing=0.6, atlas_timestamp='2025-11-24T20:36:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:33:00')
2025-11-24T22:36:57.692 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:36:57.704 [DEBUG] [Thread-198173] [transport.py] [_log()] starting thread (client mode): 0xd0784fd0
2025-11-24T22:36:57.704 [DEBUG] [Thread-198173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:36:57.718 [DEBUG] [Thread-198173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:36:57.718 [INFO] [Thread-198173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] client lang: <none>
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] server lang: <none>
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] kex follows: False
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] Compression: none
2025-11-24T22:36:57.726 [DEBUG] [Thread-198173] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:36:57.784 [DEBUG] [Thread-198173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:36:57.784 [DEBUG] [Thread-198173] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:36:57.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:36:57.784 [DEBUG] [Thread-198173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:36:57.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:36:57.840 [DEBUG] [Thread-198173] [transport.py] [_log()] userauth is OK
2025-11-24T22:36:57.840 [DEBUG] [Thread-198173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:36:57.840 [DEBUG] [Thread-198173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:36:57.840 [DEBUG] [Thread-198173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:36:57.840 [DEBUG] [Thread-198173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:36:57.854 [INFO] [Thread-198173] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:36:57.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:36:57.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:36:58.493 [DEBUG] [Thread-198175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:36:58.699 [DEBUG] [Thread-198173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:36:58.699 [DEBUG] [Thread-198173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:36:58.748 [DEBUG] [Thread-198173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:36:58.748 [DEBUG] [Thread-198173] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:36:58.756 [DEBUG] [Thread-198173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:36:58.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:36:58.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-11-24T22:36:58.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-11-24T22:36:58.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:36:58.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:36:58.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:36:58.790 [DEBUG] [Thread-198173] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:36:58.847 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:13.660 [DEBUG] [Thread-198176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:17.299 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:21.665 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:28.716 [DEBUG] [Thread-198177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:28.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:37:28.799 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:37:28.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:37:29.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 37, 9), 16.12, 32.96, 0.0, 32.01, 14.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:37:29.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:37:09
2025-11-24T22:37:30.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:37:30.291 [DEBUG] [Thread-198178] [transport.py] [_log()] starting thread (client mode): 0xd0784970
2025-11-24T22:37:30.292 [DEBUG] [Thread-198178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:37:30.297 [DEBUG] [Thread-198178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:37:30.297 [INFO] [Thread-198178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] client lang: <none>
2025-11-24T22:37:30.301 [DEBUG] [Thread-198178] [transport.py] [_log()] server lang: <none>
2025-11-24T22:37:30.302 [DEBUG] [Thread-198178] [transport.py] [_log()] kex follows: False
2025-11-24T22:37:30.302 [DEBUG] [Thread-198178] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:37:30.302 [DEBUG] [Thread-198178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:37:30.302 [DEBUG] [Thread-198178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:37:30.302 [DEBUG] [Thread-198178] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:37:30.302 [DEBUG] [Thread-198178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:37:30.302 [DEBUG] [Thread-198178] [transport.py] [_log()] Compression: none
2025-11-24T22:37:30.302 [DEBUG] [Thread-198178] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:37:30.334 [DEBUG] [Thread-198178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:37:30.338 [DEBUG] [Thread-198178] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:37:30.340 [DEBUG] [Thread-198178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:37:30.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:37:30.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:37:30.345 [DEBUG] [Thread-198178] [transport.py] [_log()] userauth is OK
2025-11-24T22:37:30.345 [DEBUG] [Thread-198178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:37:30.345 [DEBUG] [Thread-198178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:37:30.345 [DEBUG] [Thread-198178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:37:30.346 [DEBUG] [Thread-198178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:37:30.373 [INFO] [Thread-198178] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:37:30.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:37:31.016 [DEBUG] [Thread-198178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:37:31.016 [DEBUG] [Thread-198178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:37:31.017 [DEBUG] [Thread-198178] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:37:31.057 [DEBUG] [Thread-198178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:37:31.057 [DEBUG] [Thread-198178] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:37:31.059 [DEBUG] [Thread-198178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:37:31.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:37:31.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:37:31.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:37:31.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:37:31.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:37:31.082 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:37:31.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:37:31.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:37:31.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:37:31.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.859076 -999.00  +14.40  22.58     38   +0.20 1 1 1 1 1     0    0 13.59 -29.85 ZNESW 23.3 22.6 172.4 28.0 14.7 -24.9 14.6 -24.3 14.3 -23.3 14.6 -24.3
2025-11-24T22:37:31.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:37:31.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:37:31.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.859076
2025-11-24T22:37:31.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:37:31.100 [DEBUG] [Thread-198178] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:37:31.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:37:31.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:37:31.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:37:31.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:37:31.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:37:09', tmtdew=16.12, humidity=32.96, cloud=0.0, wind=32.01, temperature=14.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:37:09', seeing=0.6, atlas_timestamp='2025-11-24T20:37:04.166', atlas_cloud=1, atlas_rain=1, zp_data=[0.006750000000000256, -0.029749999999999943, 0.05825000000000102, -0.02050000000000196, 0.028499999999999304, 0.1282500000000013, 0.02200000000000024, 0.03325000000000067, 0.01649999999999885, 0.011000000000001009, 0.02775000000000105, -0.02800000000000047, 0.08449999999999847, 0.06574999999999953, 0.03449999999999953, -0.0010000000000012221, 0.01624999999999943, 0.05149999999999899, 0.05250000000000021, 0.03424999999999834, 0.06199999999999761, 0.053749999999999076, 0.034750000000000725, 0.008750000000000924, -0.006000000000000227, 0.03950000000000031, 0.05274999999999963, 0.08450000000000024, 0.14400000000000013, 0.05000000000000071, 0.0705000000000009, -0.0030000000000001137, -0.02325000000000088], zp_timestamp='2025-11-24T20:33:00')
2025-11-24T22:37:31.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:37:31.189 [DEBUG] [Thread-198181] [transport.py] [_log()] starting thread (client mode): 0xd0784d90
2025-11-24T22:37:31.189 [DEBUG] [Thread-198181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:37:31.203 [DEBUG] [Thread-198181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:37:31.203 [INFO] [Thread-198181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] client lang: <none>
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] server lang: <none>
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] kex follows: False
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] Compression: none
2025-11-24T22:37:31.211 [DEBUG] [Thread-198181] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:37:31.267 [DEBUG] [Thread-198181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:37:31.267 [DEBUG] [Thread-198181] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:37:31.267 [DEBUG] [Thread-198181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:37:31.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:37:31.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:37:31.324 [DEBUG] [Thread-198181] [transport.py] [_log()] userauth is OK
2025-11-24T22:37:31.324 [DEBUG] [Thread-198181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:37:31.324 [DEBUG] [Thread-198181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:37:31.324 [DEBUG] [Thread-198181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:37:31.324 [DEBUG] [Thread-198181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:37:31.339 [INFO] [Thread-198181] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:37:31.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:37:31.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:37:32.158 [DEBUG] [Thread-198181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:37:32.158 [DEBUG] [Thread-198181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:37:32.206 [DEBUG] [Thread-198181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:37:32.206 [DEBUG] [Thread-198181] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:37:32.214 [DEBUG] [Thread-198181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:37:32.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:37:32.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-11-24T22:37:32.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-11-24T22:37:32.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:37:32.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:37:32.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:37:32.246 [DEBUG] [Thread-198181] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:37:41.062 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:42.602 [DEBUG] [Thread-198183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:43.765 [DEBUG] [Thread-198184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:45.384 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:45.677 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:45.679 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:51.568 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:55.887 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:37:58.913 [DEBUG] [Thread-198185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:38:02.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:38:02.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:38:02.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:38:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 37, 42), 16.16, 32.86, 0.0, 32.25, 14.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:38:03.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:37:42
2025-11-24T22:38:03.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:38:03.933 [DEBUG] [Thread-198186] [transport.py] [_log()] starting thread (client mode): 0xd31f4a60
2025-11-24T22:38:03.933 [DEBUG] [Thread-198186] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:38:03.944 [DEBUG] [Thread-198186] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:38:03.944 [INFO] [Thread-198186] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:38:03.949 [DEBUG] [Thread-198186] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:38:03.949 [DEBUG] [Thread-198186] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] client lang: <none>
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] server lang: <none>
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] kex follows: False
2025-11-24T22:38:03.950 [DEBUG] [Thread-198186] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:38:03.951 [DEBUG] [Thread-198186] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:38:03.952 [DEBUG] [Thread-198186] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:38:03.952 [DEBUG] [Thread-198186] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:38:03.952 [DEBUG] [Thread-198186] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:38:03.952 [DEBUG] [Thread-198186] [transport.py] [_log()] Compression: none
2025-11-24T22:38:03.952 [DEBUG] [Thread-198186] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:38:03.986 [DEBUG] [Thread-198186] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:38:03.992 [DEBUG] [Thread-198186] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:38:03.993 [DEBUG] [Thread-198186] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:38:03.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:38:03.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:38:03.999 [DEBUG] [Thread-198186] [transport.py] [_log()] userauth is OK
2025-11-24T22:38:03.999 [DEBUG] [Thread-198186] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:38:03.999 [DEBUG] [Thread-198186] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:38:03.999 [DEBUG] [Thread-198186] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:38:03.999 [DEBUG] [Thread-198186] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:38:04.026 [INFO] [Thread-198186] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:38:04.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:38:04.650 [DEBUG] [Thread-198186] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:38:04.650 [DEBUG] [Thread-198186] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:38:04.661 [DEBUG] [Thread-198186] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:38:04.691 [DEBUG] [Thread-198186] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:38:04.691 [DEBUG] [Thread-198186] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:38:04.695 [DEBUG] [Thread-198186] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:38:04.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:38:04.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:38:04.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:38:04.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:38:04.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:38:04.724 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:38:04.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:38:04.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:38:04.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:38:04.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.859422 -999.00  +14.40  15.45     38   +0.30 1 1 1 1 1     0    0 13.49 -30.36 ZNESW 22.4 15.4 171.6 23.8 14.7 -25.2 14.6 -24.5 14.3 -23.4 14.6 -24.4
2025-11-24T22:38:04.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:38:04.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:38:04.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.859422
2025-11-24T22:38:04.732 [DEBUG] [Thread-198186] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:38:04.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:38:04.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:38:04.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:38:04.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:38:04.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:38:04.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:37:42', tmtdew=16.16, humidity=32.86, cloud=0.0, wind=32.25, temperature=14.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:37:42', seeing=0.58, atlas_timestamp='2025-11-24T20:37:34.061', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, -0.017250000000000654, 0.02725000000000044, 0.0004999999999988347, 0.02549999999999919, 0.08275000000000077, 0.05250000000000021, 0.02125000000000199, 0.03849999999999909, 0.020500000000000185, 0.040749999999999176, -0.01750000000000007, 0.07499999999999929, 0.07124999999999915, 0.02149999999999963, 0.0030000000000001137, 0.04224999999999923, 0.03950000000000031, 0.07399999999999984, 0.016749999999998266, 0.06799999999999784, 0.03774999999999906, 0.03825000000000145, 0.0337499999999995, -0.0030000000000001137, 0.04349999999999987, 0.05325000000000024, 0.06649999999999956, 0.16750000000000043, 0.07250000000000156, 0.051000000000000156, -0.0045000000000001705, -0.014749999999999375], zp_timestamp='2025-11-24T20:35:00')
2025-11-24T22:38:04.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:38:04.860 [DEBUG] [Thread-198189] [transport.py] [_log()] starting thread (client mode): 0xd31f6950
2025-11-24T22:38:04.860 [DEBUG] [Thread-198189] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:38:04.875 [DEBUG] [Thread-198189] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:38:04.876 [INFO] [Thread-198189] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:38:04.883 [DEBUG] [Thread-198189] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:38:04.883 [DEBUG] [Thread-198189] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:38:04.884 [DEBUG] [Thread-198189] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:38:04.884 [DEBUG] [Thread-198189] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:38:04.884 [DEBUG] [Thread-198189] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:38:04.884 [DEBUG] [Thread-198189] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:38:04.884 [DEBUG] [Thread-198189] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:38:04.885 [DEBUG] [Thread-198189] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:38:04.885 [DEBUG] [Thread-198189] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:38:04.885 [DEBUG] [Thread-198189] [transport.py] [_log()] client lang: <none>
2025-11-24T22:38:04.885 [DEBUG] [Thread-198189] [transport.py] [_log()] server lang: <none>
2025-11-24T22:38:04.886 [DEBUG] [Thread-198189] [transport.py] [_log()] kex follows: False
2025-11-24T22:38:04.886 [DEBUG] [Thread-198189] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:38:04.886 [DEBUG] [Thread-198189] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:38:04.886 [DEBUG] [Thread-198189] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:38:04.886 [DEBUG] [Thread-198189] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:38:04.887 [DEBUG] [Thread-198189] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:38:04.887 [DEBUG] [Thread-198189] [transport.py] [_log()] Compression: none
2025-11-24T22:38:04.887 [DEBUG] [Thread-198189] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:38:04.939 [DEBUG] [Thread-198189] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:38:04.939 [DEBUG] [Thread-198189] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:38:04.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:38:04.940 [DEBUG] [Thread-198189] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:38:04.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:38:04.997 [DEBUG] [Thread-198189] [transport.py] [_log()] userauth is OK
2025-11-24T22:38:04.997 [DEBUG] [Thread-198189] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:38:04.997 [DEBUG] [Thread-198189] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:38:04.997 [DEBUG] [Thread-198189] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:38:04.997 [DEBUG] [Thread-198189] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:38:05.011 [INFO] [Thread-198189] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:38:05.011 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:38:05.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:38:05.841 [DEBUG] [Thread-198189] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:38:05.841 [DEBUG] [Thread-198189] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:38:05.889 [DEBUG] [Thread-198189] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:38:05.889 [DEBUG] [Thread-198189] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:38:05.897 [DEBUG] [Thread-198189] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:38:05.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:38:05.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-11-24T22:38:05.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-11-24T22:38:05.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:38:05.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:38:05.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:38:05.932 [DEBUG] [Thread-198189] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:38:13.968 [DEBUG] [Thread-198191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:38:29.125 [DEBUG] [Thread-198192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:38:35.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:38:35.959 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:38:35.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-11-24T22:38:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 38, 15), 16.18, 32.81, 0.0, 33.59, 14.45, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:38:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:38:15
2025-11-24T22:38:37.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:38:37.390 [DEBUG] [Thread-198193] [transport.py] [_log()] starting thread (client mode): 0xd31f55d0
2025-11-24T22:38:37.391 [DEBUG] [Thread-198193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:38:37.403 [DEBUG] [Thread-198193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:38:37.404 [INFO] [Thread-198193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] client lang: <none>
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] server lang: <none>
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] kex follows: False
2025-11-24T22:38:37.409 [DEBUG] [Thread-198193] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:38:37.410 [DEBUG] [Thread-198193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:38:37.410 [DEBUG] [Thread-198193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:38:37.410 [DEBUG] [Thread-198193] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:38:37.410 [DEBUG] [Thread-198193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:38:37.410 [DEBUG] [Thread-198193] [transport.py] [_log()] Compression: none
2025-11-24T22:38:37.410 [DEBUG] [Thread-198193] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:38:37.446 [DEBUG] [Thread-198193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:38:37.451 [DEBUG] [Thread-198193] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:38:37.452 [DEBUG] [Thread-198193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:38:37.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:38:37.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:38:37.457 [DEBUG] [Thread-198193] [transport.py] [_log()] userauth is OK
2025-11-24T22:38:37.457 [DEBUG] [Thread-198193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:38:37.457 [DEBUG] [Thread-198193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:38:37.457 [DEBUG] [Thread-198193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:38:37.458 [DEBUG] [Thread-198193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:38:37.496 [INFO] [Thread-198193] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:38:37.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:38:38.116 [DEBUG] [Thread-198193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:38:38.116 [DEBUG] [Thread-198193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:38:38.126 [DEBUG] [Thread-198193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:38:38.161 [DEBUG] [Thread-198193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:38:38.161 [DEBUG] [Thread-198193] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:38:38.164 [DEBUG] [Thread-198193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:38:38.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:38:38.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:38:38.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:38:38.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:38:38.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:38:38.183 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:38:38.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:38:38.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:38:38.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:38:38.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.859769 -999.00  +14.30  24.21     38   +0.30 1 1 1 1 1     0    0 13.44 -29.85 ZNESW 26.0 24.2 163.2 34.7 14.7 -25.0 14.5 -24.5 14.3 -23.3 14.6 -24.3
2025-11-24T22:38:38.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:38:38.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:38:38.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.859769
2025-11-24T22:38:38.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:38:38.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:38:38.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:38:38.192 [DEBUG] [Thread-198193] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:38:38.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:38:38.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:38:38.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:38:15', tmtdew=16.18, humidity=32.81, cloud=0.0, wind=33.59, temperature=14.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:38:16', seeing=0.58, atlas_timestamp='2025-11-24T20:38:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, -0.017250000000000654, 0.02725000000000044, 0.0004999999999988347, 0.02549999999999919, 0.08275000000000077, 0.05250000000000021, 0.02125000000000199, 0.03849999999999909, 0.020500000000000185, 0.040749999999999176, -0.01750000000000007, 0.07499999999999929, 0.07124999999999915, 0.02149999999999963, 0.0030000000000001137, 0.04224999999999923, 0.03950000000000031, 0.07399999999999984, 0.016749999999998266, 0.06799999999999784, 0.03774999999999906, 0.03825000000000145, 0.0337499999999995, -0.0030000000000001137, 0.04349999999999987, 0.05325000000000024, 0.06649999999999956, 0.16750000000000043, 0.07250000000000156, 0.051000000000000156, -0.0045000000000001705, -0.014749999999999375], zp_timestamp='2025-11-24T20:35:00')
2025-11-24T22:38:38.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:38:38.278 [DEBUG] [Thread-198196] [transport.py] [_log()] starting thread (client mode): 0xd317f5e0
2025-11-24T22:38:38.278 [DEBUG] [Thread-198196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:38:38.292 [DEBUG] [Thread-198196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:38:38.292 [INFO] [Thread-198196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:38:38.299 [DEBUG] [Thread-198196] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:38:38.299 [DEBUG] [Thread-198196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:38:38.299 [DEBUG] [Thread-198196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:38:38.299 [DEBUG] [Thread-198196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:38:38.299 [DEBUG] [Thread-198196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] client lang: <none>
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] server lang: <none>
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] kex follows: False
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] Compression: none
2025-11-24T22:38:38.300 [DEBUG] [Thread-198196] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:38:38.355 [DEBUG] [Thread-198196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:38:38.356 [DEBUG] [Thread-198196] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:38:38.356 [DEBUG] [Thread-198196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:38:38.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:38:38.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:38:38.412 [DEBUG] [Thread-198196] [transport.py] [_log()] userauth is OK
2025-11-24T22:38:38.412 [DEBUG] [Thread-198196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:38:38.412 [DEBUG] [Thread-198196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:38:38.412 [DEBUG] [Thread-198196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:38:38.412 [DEBUG] [Thread-198196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:38:38.426 [INFO] [Thread-198196] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:38:38.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:38:38.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:38:39.276 [DEBUG] [Thread-198196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:38:39.276 [DEBUG] [Thread-198196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:38:39.325 [DEBUG] [Thread-198196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:38:39.325 [DEBUG] [Thread-198196] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:38:39.334 [DEBUG] [Thread-198196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:38:39.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:38:39.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-11-24T22:38:39.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-11-24T22:38:39.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:38:39.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:38:39.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:38:39.381 [DEBUG] [Thread-198196] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:38:42.957 [DEBUG] [Thread-198198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:38:44.173 [DEBUG] [Thread-198199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:38:45.893 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:38:45.895 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:38:59.311 [DEBUG] [Thread-198200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:39:04.729 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:39:08.829 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:39:09.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:39:09.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:39:09.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-11-24T22:39:10.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 38, 48), 16.01, 32.96, 0.0, 32.31, 14.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:39:10.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:38:48
2025-11-24T22:39:10.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:39:11.005 [DEBUG] [Thread-198201] [transport.py] [_log()] starting thread (client mode): 0xd0785600
2025-11-24T22:39:11.006 [DEBUG] [Thread-198201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:39:11.016 [DEBUG] [Thread-198201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:39:11.016 [INFO] [Thread-198201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:39:11.020 [DEBUG] [Thread-198201] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] client lang: <none>
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] server lang: <none>
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] kex follows: False
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:39:11.021 [DEBUG] [Thread-198201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:39:11.022 [DEBUG] [Thread-198201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:39:11.022 [DEBUG] [Thread-198201] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:39:11.022 [DEBUG] [Thread-198201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:39:11.022 [DEBUG] [Thread-198201] [transport.py] [_log()] Compression: none
2025-11-24T22:39:11.022 [DEBUG] [Thread-198201] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:39:11.057 [DEBUG] [Thread-198201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:39:11.063 [DEBUG] [Thread-198201] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:39:11.065 [DEBUG] [Thread-198201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:39:11.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:39:11.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:39:11.069 [DEBUG] [Thread-198201] [transport.py] [_log()] userauth is OK
2025-11-24T22:39:11.070 [DEBUG] [Thread-198201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:39:11.070 [DEBUG] [Thread-198201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:39:11.070 [DEBUG] [Thread-198201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:39:11.070 [DEBUG] [Thread-198201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:39:11.095 [INFO] [Thread-198201] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:39:11.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:39:11.745 [DEBUG] [Thread-198201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:39:11.745 [DEBUG] [Thread-198201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:39:11.756 [DEBUG] [Thread-198201] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:39:11.786 [DEBUG] [Thread-198201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:39:11.786 [DEBUG] [Thread-198201] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:39:11.790 [DEBUG] [Thread-198201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:39:11.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:39:11.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:39:11.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:39:11.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:39:11.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:39:11.818 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:39:11.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:39:11.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:39:11.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:39:11.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.860116 -999.00  +14.30  27.91     38   +0.30 1 1 1 1 1     0    0 13.42 -30.12 ZNESW 24.3 27.9 160.8 31.1 14.6 -25.0 14.5 -24.3 14.3 -23.2 14.6 -24.3
2025-11-24T22:39:11.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:39:11.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:39:11.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.860116
2025-11-24T22:39:11.827 [DEBUG] [Thread-198201] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:39:11.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:39:11.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:39:11.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:39:11.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:39:11.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:39:11.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:38:48', tmtdew=16.01, humidity=32.96, cloud=0.0, wind=32.31, temperature=14.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:38:48', seeing=0.61, atlas_timestamp='2025-11-24T20:38:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, -0.017250000000000654, 0.02725000000000044, 0.0004999999999988347, 0.02549999999999919, 0.08275000000000077, 0.05250000000000021, 0.02125000000000199, 0.03849999999999909, 0.020500000000000185, 0.040749999999999176, -0.01750000000000007, 0.07499999999999929, 0.07124999999999915, 0.02149999999999963, 0.0030000000000001137, 0.04224999999999923, 0.03950000000000031, 0.07399999999999984, 0.016749999999998266, 0.06799999999999784, 0.03774999999999906, 0.03825000000000145, 0.0337499999999995, -0.0030000000000001137, 0.04349999999999987, 0.05325000000000024, 0.06649999999999956, 0.16750000000000043, 0.07250000000000156, 0.051000000000000156, -0.0045000000000001705, -0.014749999999999375], zp_timestamp='2025-11-24T20:35:00')
2025-11-24T22:39:11.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:39:11.943 [DEBUG] [Thread-198204] [transport.py] [_log()] starting thread (client mode): 0xd07873d0
2025-11-24T22:39:11.943 [DEBUG] [Thread-198204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:39:11.959 [DEBUG] [Thread-198204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:39:11.959 [INFO] [Thread-198204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] client lang: <none>
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] server lang: <none>
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] kex follows: False
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] Compression: none
2025-11-24T22:39:11.967 [DEBUG] [Thread-198204] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:39:12.031 [DEBUG] [Thread-198204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:39:12.032 [DEBUG] [Thread-198204] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:39:12.032 [DEBUG] [Thread-198204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:39:12.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:39:12.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:39:12.088 [DEBUG] [Thread-198204] [transport.py] [_log()] userauth is OK
2025-11-24T22:39:12.089 [DEBUG] [Thread-198204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:39:12.089 [DEBUG] [Thread-198204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:39:12.089 [DEBUG] [Thread-198204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:39:12.089 [DEBUG] [Thread-198204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:39:12.104 [INFO] [Thread-198204] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:39:12.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:39:12.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:39:12.943 [DEBUG] [Thread-198204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:39:12.943 [DEBUG] [Thread-198204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:39:12.992 [DEBUG] [Thread-198204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:39:12.992 [DEBUG] [Thread-198204] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:39:13.001 [DEBUG] [Thread-198204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:39:13.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:39:13.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-11-24T22:39:13.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:39:13.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:39:13.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:39:13.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:39:13.051 [DEBUG] [Thread-198204] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:39:14.392 [DEBUG] [Thread-198206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:39:29.509 [DEBUG] [Thread-198207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:39:43.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:39:43.073 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:39:43.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-11-24T22:39:43.232 [DEBUG] [Thread-198208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:39:44.538 [DEBUG] [Thread-198209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:39:46.104 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:39:46.116 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:39:47.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 39, 21), 16.01, 32.97, 0.0, 30.01, 14.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:39:47.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:39:21
2025-11-24T22:39:47.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:39:47.910 [DEBUG] [Thread-198210] [transport.py] [_log()] starting thread (client mode): 0xd07ce650
2025-11-24T22:39:47.921 [DEBUG] [Thread-198210] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:39:47.925 [DEBUG] [Thread-198210] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:39:47.927 [INFO] [Thread-198210] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:39:47.967 [DEBUG] [Thread-198210] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:39:47.969 [DEBUG] [Thread-198210] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:39:47.969 [DEBUG] [Thread-198210] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:39:47.969 [DEBUG] [Thread-198210] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:39:47.969 [DEBUG] [Thread-198210] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:39:47.969 [DEBUG] [Thread-198210] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:39:47.969 [DEBUG] [Thread-198210] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:39:47.971 [DEBUG] [Thread-198210] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:39:47.971 [DEBUG] [Thread-198210] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:39:47.971 [DEBUG] [Thread-198210] [transport.py] [_log()] client lang: <none>
2025-11-24T22:39:47.971 [DEBUG] [Thread-198210] [transport.py] [_log()] server lang: <none>
2025-11-24T22:39:47.971 [DEBUG] [Thread-198210] [transport.py] [_log()] kex follows: False
2025-11-24T22:39:47.971 [DEBUG] [Thread-198210] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:39:47.975 [DEBUG] [Thread-198210] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:39:47.975 [DEBUG] [Thread-198210] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:39:47.978 [DEBUG] [Thread-198210] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:39:47.978 [DEBUG] [Thread-198210] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:39:47.978 [DEBUG] [Thread-198210] [transport.py] [_log()] Compression: none
2025-11-24T22:39:47.979 [DEBUG] [Thread-198210] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:39:48.105 [DEBUG] [Thread-198210] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:39:48.134 [DEBUG] [Thread-198210] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:39:48.144 [DEBUG] [Thread-198210] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:39:48.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:39:48.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:39:48.168 [DEBUG] [Thread-198210] [transport.py] [_log()] userauth is OK
2025-11-24T22:39:48.171 [DEBUG] [Thread-198210] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:39:48.171 [DEBUG] [Thread-198210] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:39:48.171 [DEBUG] [Thread-198210] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:39:48.171 [DEBUG] [Thread-198210] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:39:48.235 [INFO] [Thread-198210] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:39:48.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:39:48.880 [DEBUG] [Thread-198210] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:39:48.881 [DEBUG] [Thread-198210] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:39:48.891 [DEBUG] [Thread-198210] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:39:48.921 [DEBUG] [Thread-198210] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:39:48.921 [DEBUG] [Thread-198210] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:39:48.925 [DEBUG] [Thread-198210] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:39:48.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:39:48.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:39:48.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:39:48.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:39:48.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:39:48.954 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:39:48.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:39:48.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:39:48.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:39:48.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.860463 -999.00  +14.40  19.77     38   +0.30 1 1 1 1 1     0    0 13.36 -30.78 ZNESW 18.7 19.8 171.0 30.4 14.6 -24.7 14.5 -24.2 14.3 -23.1 14.6 -24.1
2025-11-24T22:39:48.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:39:48.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:39:48.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.860463
2025-11-24T22:39:48.962 [DEBUG] [Thread-198210] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:39:48.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:39:48.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:39:48.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:39:48.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:39:48.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:39:48.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:39:21', tmtdew=16.01, humidity=32.97, cloud=0.0, wind=30.01, temperature=14.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:39:21', seeing=0.57, atlas_timestamp='2025-11-24T20:39:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, -0.017250000000000654, 0.02725000000000044, 0.0004999999999988347, 0.02549999999999919, 0.08275000000000077, 0.05250000000000021, 0.02125000000000199, 0.03849999999999909, 0.020500000000000185, 0.040749999999999176, -0.01750000000000007, 0.07499999999999929, 0.07124999999999915, 0.02149999999999963, 0.0030000000000001137, 0.04224999999999923, 0.03950000000000031, 0.07399999999999984, 0.016749999999998266, 0.06799999999999784, 0.03774999999999906, 0.03825000000000145, 0.0337499999999995, -0.0030000000000001137, 0.04349999999999987, 0.05325000000000024, 0.06649999999999956, 0.16750000000000043, 0.07250000000000156, 0.051000000000000156, -0.0045000000000001705, -0.014749999999999375], zp_timestamp='2025-11-24T20:35:00')
2025-11-24T22:39:49.064 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:39:49.080 [DEBUG] [Thread-198213] [transport.py] [_log()] starting thread (client mode): 0xd314a980
2025-11-24T22:39:49.080 [DEBUG] [Thread-198213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:39:49.099 [DEBUG] [Thread-198213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:39:49.099 [INFO] [Thread-198213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:39:49.111 [DEBUG] [Thread-198213] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] client lang: <none>
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] server lang: <none>
2025-11-24T22:39:49.112 [DEBUG] [Thread-198213] [transport.py] [_log()] kex follows: False
2025-11-24T22:39:49.113 [DEBUG] [Thread-198213] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:39:49.113 [DEBUG] [Thread-198213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:39:49.113 [DEBUG] [Thread-198213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:39:49.113 [DEBUG] [Thread-198213] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:39:49.113 [DEBUG] [Thread-198213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:39:49.113 [DEBUG] [Thread-198213] [transport.py] [_log()] Compression: none
2025-11-24T22:39:49.113 [DEBUG] [Thread-198213] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:39:49.165 [DEBUG] [Thread-198213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:39:49.166 [DEBUG] [Thread-198213] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:39:49.166 [DEBUG] [Thread-198213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:39:49.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:39:49.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:39:49.221 [DEBUG] [Thread-198213] [transport.py] [_log()] userauth is OK
2025-11-24T22:39:49.221 [DEBUG] [Thread-198213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:39:49.221 [DEBUG] [Thread-198213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:39:49.221 [DEBUG] [Thread-198213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:39:49.221 [DEBUG] [Thread-198213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:39:49.242 [INFO] [Thread-198213] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:39:49.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:39:49.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:39:50.113 [DEBUG] [Thread-198213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:39:50.113 [DEBUG] [Thread-198213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:39:50.161 [DEBUG] [Thread-198213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:39:50.162 [DEBUG] [Thread-198213] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:39:50.171 [DEBUG] [Thread-198213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:39:50.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:39:50.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:39:50.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-11-24T22:39:50.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:39:50.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:39:50.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:39:50.209 [DEBUG] [Thread-198213] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:39:59.619 [DEBUG] [Thread-198215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:40:14.812 [DEBUG] [Thread-198216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:40:20.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:40:20.224 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:40:20.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-11-24T22:40:21.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 39, 53), 16.01, 32.96, 0.0, 31.76, 14.38, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:40:21.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:39:53
2025-11-24T22:40:21.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:40:21.391 [DEBUG] [Thread-198217] [transport.py] [_log()] starting thread (client mode): 0xd317ceb0
2025-11-24T22:40:21.391 [DEBUG] [Thread-198217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:40:21.397 [DEBUG] [Thread-198217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:40:21.398 [INFO] [Thread-198217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] client lang: <none>
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] server lang: <none>
2025-11-24T22:40:21.402 [DEBUG] [Thread-198217] [transport.py] [_log()] kex follows: False
2025-11-24T22:40:21.403 [DEBUG] [Thread-198217] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:40:21.403 [DEBUG] [Thread-198217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:40:21.404 [DEBUG] [Thread-198217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:40:21.404 [DEBUG] [Thread-198217] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:40:21.404 [DEBUG] [Thread-198217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:40:21.404 [DEBUG] [Thread-198217] [transport.py] [_log()] Compression: none
2025-11-24T22:40:21.404 [DEBUG] [Thread-198217] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:40:21.438 [DEBUG] [Thread-198217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:40:21.441 [DEBUG] [Thread-198217] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:40:21.443 [DEBUG] [Thread-198217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:40:21.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:40:21.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:40:21.449 [DEBUG] [Thread-198217] [transport.py] [_log()] userauth is OK
2025-11-24T22:40:21.449 [DEBUG] [Thread-198217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:40:21.449 [DEBUG] [Thread-198217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:40:21.449 [DEBUG] [Thread-198217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:40:21.449 [DEBUG] [Thread-198217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:40:21.476 [INFO] [Thread-198217] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:40:21.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:40:22.138 [DEBUG] [Thread-198217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:40:22.139 [DEBUG] [Thread-198217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:40:22.149 [DEBUG] [Thread-198217] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:40:22.180 [DEBUG] [Thread-198217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:40:22.180 [DEBUG] [Thread-198217] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:40:22.183 [DEBUG] [Thread-198217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:40:22.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:40:22.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:40:22.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:40:22.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:40:22.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:40:22.205 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:40:22.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:40:22.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:40:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:40:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.861157 -999.00  +14.30  25.91     38   +0.30 1 1 1 1 1     0    0 13.52 -32.45 ZNESW 26.0 25.9 166.2 39.7 14.6 -24.9 14.5 -24.3 14.3 -23.1 14.6 -24.1
2025-11-24T22:40:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:40:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:40:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.861157
2025-11-24T22:40:22.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:40:22.223 [DEBUG] [Thread-198217] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:40:22.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:40:22.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:40:22.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:40:22.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:40:22.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:39:53', tmtdew=16.01, humidity=32.96, cloud=0.0, wind=31.76, temperature=14.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:39:54', seeing=0.6, atlas_timestamp='2025-11-24T20:40:03.965', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0012500000000006395, -0.017250000000000654, 0.02725000000000044, 0.0004999999999988347, 0.02549999999999919, 0.08275000000000077, 0.05250000000000021, 0.02125000000000199, 0.03849999999999909, 0.020500000000000185, 0.040749999999999176, -0.01750000000000007, 0.07499999999999929, 0.07124999999999915, 0.02149999999999963, 0.0030000000000001137, 0.04224999999999923, 0.03950000000000031, 0.07399999999999984, 0.016749999999998266, 0.06799999999999784, 0.03774999999999906, 0.03825000000000145, 0.0337499999999995, -0.0030000000000001137, 0.04349999999999987, 0.05325000000000024, 0.06649999999999956, 0.16750000000000043, 0.07250000000000156, 0.051000000000000156, -0.0045000000000001705, -0.014749999999999375], zp_timestamp='2025-11-24T20:35:00')
2025-11-24T22:40:22.302 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:40:22.314 [DEBUG] [Thread-198220] [transport.py] [_log()] starting thread (client mode): 0xc9b833a0
2025-11-24T22:40:22.315 [DEBUG] [Thread-198220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:40:22.330 [DEBUG] [Thread-198220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:40:22.330 [INFO] [Thread-198220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] client lang: <none>
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] server lang: <none>
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] kex follows: False
2025-11-24T22:40:22.338 [DEBUG] [Thread-198220] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:40:22.339 [DEBUG] [Thread-198220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:40:22.339 [DEBUG] [Thread-198220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:40:22.339 [DEBUG] [Thread-198220] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:40:22.339 [DEBUG] [Thread-198220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:40:22.339 [DEBUG] [Thread-198220] [transport.py] [_log()] Compression: none
2025-11-24T22:40:22.339 [DEBUG] [Thread-198220] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:40:22.397 [DEBUG] [Thread-198220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:40:22.398 [DEBUG] [Thread-198220] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:40:22.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:40:22.408 [DEBUG] [Thread-198220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:40:22.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:40:22.453 [DEBUG] [Thread-198220] [transport.py] [_log()] userauth is OK
2025-11-24T22:40:22.453 [DEBUG] [Thread-198220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:40:22.453 [DEBUG] [Thread-198220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:40:22.453 [DEBUG] [Thread-198220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:40:22.453 [DEBUG] [Thread-198220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:40:22.472 [INFO] [Thread-198220] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:40:22.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:40:22.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:40:23.327 [DEBUG] [Thread-198220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:40:23.327 [DEBUG] [Thread-198220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:40:23.375 [DEBUG] [Thread-198220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:40:23.375 [DEBUG] [Thread-198220] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:40:23.394 [DEBUG] [Thread-198220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:40:23.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:40:23.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-11-24T22:40:23.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-11-24T22:40:23.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:40:23.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:40:23.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:40:23.435 [DEBUG] [Thread-198220] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:40:29.873 [DEBUG] [Thread-198222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:40:43.490 [DEBUG] [Thread-198223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:40:44.967 [DEBUG] [Thread-198224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:40:46.322 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:40:46.324 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:40:53.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:40:53.468 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:40:53.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-11-24T22:40:54.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 40, 26), 15.98, 33.02, 0.0, 33.65, 14.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:40:54.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:40:26
2025-11-24T22:40:54.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:40:54.538 [DEBUG] [Thread-198225] [transport.py] [_log()] starting thread (client mode): 0xd3148f10
2025-11-24T22:40:54.539 [DEBUG] [Thread-198225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:40:54.548 [DEBUG] [Thread-198225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:40:54.548 [INFO] [Thread-198225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] client lang: <none>
2025-11-24T22:40:54.553 [DEBUG] [Thread-198225] [transport.py] [_log()] server lang: <none>
2025-11-24T22:40:54.554 [DEBUG] [Thread-198225] [transport.py] [_log()] kex follows: False
2025-11-24T22:40:54.554 [DEBUG] [Thread-198225] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:40:54.554 [DEBUG] [Thread-198225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:40:54.554 [DEBUG] [Thread-198225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:40:54.554 [DEBUG] [Thread-198225] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:40:54.555 [DEBUG] [Thread-198225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:40:54.555 [DEBUG] [Thread-198225] [transport.py] [_log()] Compression: none
2025-11-24T22:40:54.555 [DEBUG] [Thread-198225] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:40:54.586 [DEBUG] [Thread-198225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:40:54.589 [DEBUG] [Thread-198225] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:40:54.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:40:54.592 [DEBUG] [Thread-198225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:40:54.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:40:54.593 [DEBUG] [Thread-198225] [transport.py] [_log()] userauth is OK
2025-11-24T22:40:54.593 [DEBUG] [Thread-198225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:40:54.594 [DEBUG] [Thread-198225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:40:54.594 [DEBUG] [Thread-198225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:40:54.594 [DEBUG] [Thread-198225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:40:54.611 [INFO] [Thread-198225] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:40:54.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:40:55.242 [DEBUG] [Thread-198225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:40:55.242 [DEBUG] [Thread-198225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:40:55.244 [DEBUG] [Thread-198225] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:40:55.283 [DEBUG] [Thread-198225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:40:55.284 [DEBUG] [Thread-198225] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:40:55.287 [DEBUG] [Thread-198225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:40:55.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:40:55.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:40:55.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:40:55.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:40:55.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:40:55.314 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:40:55.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:40:55.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:40:55.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:40:55.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.861505 -999.00  +14.30  24.18     38   +0.30 1 1 1 1 1     0    0 13.38 -30.76 ZNESW 23.3 24.2 170.6 27.4 14.6 -24.9 14.5 -24.3 14.3 -23.2 14.5 -24.2
2025-11-24T22:40:55.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:40:55.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:40:55.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.861505
2025-11-24T22:40:55.323 [DEBUG] [Thread-198225] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:40:55.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:40:55.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:40:55.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:40:55.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:40:55.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:40:55.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:40:26', tmtdew=15.98, humidity=33.02, cloud=0.0, wind=33.65, temperature=14.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:40:27', seeing=0.65, atlas_timestamp='2025-11-24T20:40:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, -0.051249999999999574, 0.017250000000000654, -0.018500000000001293, 0.02949999999999875, 0.054750000000002075, -0.011000000000001009, 0.015750000000000597, 0.0045000000000001705, 0.009000000000000341, 0.030249999999998778, -0.04899999999999949, 0.04499999999999993, 0.07874999999999943, 0.03500000000000014, 0.009999999999999787, 0.01624999999999943, 0.042500000000000426, 0.04899999999999949, 0.014249999999998764, 0.06149999999999878, 0.01574999999999882, 0.05025000000000013, 0.023750000000001492, -0.012500000000001066, 0.009500000000000952, 0.04475000000000051, 0.06649999999999956, 0.11599999999999966, 0.13400000000000034, 0.08500000000000085, -0.019999999999999574, -0.04025000000000034], zp_timestamp='2025-11-24T20:39:00')
2025-11-24T22:40:55.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:40:55.441 [DEBUG] [Thread-198228] [transport.py] [_log()] starting thread (client mode): 0xd31f4460
2025-11-24T22:40:55.441 [DEBUG] [Thread-198228] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:40:55.460 [DEBUG] [Thread-198228] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:40:55.461 [INFO] [Thread-198228] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] client lang: <none>
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] server lang: <none>
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] kex follows: False
2025-11-24T22:40:55.468 [DEBUG] [Thread-198228] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:40:55.469 [DEBUG] [Thread-198228] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:40:55.469 [DEBUG] [Thread-198228] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:40:55.469 [DEBUG] [Thread-198228] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:40:55.469 [DEBUG] [Thread-198228] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:40:55.469 [DEBUG] [Thread-198228] [transport.py] [_log()] Compression: none
2025-11-24T22:40:55.469 [DEBUG] [Thread-198228] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:40:55.528 [DEBUG] [Thread-198228] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:40:55.528 [DEBUG] [Thread-198228] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:40:55.528 [DEBUG] [Thread-198228] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:40:55.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:40:55.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:40:55.585 [DEBUG] [Thread-198228] [transport.py] [_log()] userauth is OK
2025-11-24T22:40:55.585 [DEBUG] [Thread-198228] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:40:55.585 [DEBUG] [Thread-198228] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:40:55.586 [DEBUG] [Thread-198228] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:40:55.586 [DEBUG] [Thread-198228] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:40:55.610 [INFO] [Thread-198228] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:40:55.610 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:40:55.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:40:56.435 [DEBUG] [Thread-198228] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:40:56.435 [DEBUG] [Thread-198228] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:40:56.483 [DEBUG] [Thread-198228] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:40:56.483 [DEBUG] [Thread-198228] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:40:56.491 [DEBUG] [Thread-198228] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:40:56.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:40:56.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-11-24T22:40:56.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-11-24T22:40:56.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:40:56.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:40:56.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:40:56.524 [DEBUG] [Thread-198228] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:41:00.013 [DEBUG] [Thread-198230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:41:15.205 [DEBUG] [Thread-198231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:41:26.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:41:26.523 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:41:26.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-11-24T22:41:27.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 40, 59), 15.93, 33.54, 0.0, 33.77, 14.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:41:27.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:40:59
2025-11-24T22:41:27.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:41:27.917 [DEBUG] [Thread-198232] [transport.py] [_log()] starting thread (client mode): 0xd31535b0
2025-11-24T22:41:27.917 [DEBUG] [Thread-198232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:41:27.929 [DEBUG] [Thread-198232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:41:27.929 [INFO] [Thread-198232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] client lang: <none>
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] server lang: <none>
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] kex follows: False
2025-11-24T22:41:27.933 [DEBUG] [Thread-198232] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:41:27.934 [DEBUG] [Thread-198232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:41:27.934 [DEBUG] [Thread-198232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:41:27.934 [DEBUG] [Thread-198232] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:41:27.934 [DEBUG] [Thread-198232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:41:27.934 [DEBUG] [Thread-198232] [transport.py] [_log()] Compression: none
2025-11-24T22:41:27.934 [DEBUG] [Thread-198232] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:41:27.962 [DEBUG] [Thread-198232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:41:27.966 [DEBUG] [Thread-198232] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:41:27.967 [DEBUG] [Thread-198232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:41:27.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:41:27.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:41:27.971 [DEBUG] [Thread-198232] [transport.py] [_log()] userauth is OK
2025-11-24T22:41:27.971 [DEBUG] [Thread-198232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:41:27.971 [DEBUG] [Thread-198232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:41:27.971 [DEBUG] [Thread-198232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:41:27.971 [DEBUG] [Thread-198232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:41:27.989 [INFO] [Thread-198232] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:41:27.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:41:28.622 [DEBUG] [Thread-198232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:41:28.622 [DEBUG] [Thread-198232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:41:28.622 [DEBUG] [Thread-198232] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:41:28.663 [DEBUG] [Thread-198232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:41:28.663 [DEBUG] [Thread-198232] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:41:28.665 [DEBUG] [Thread-198232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:41:28.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:41:28.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:41:28.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:41:28.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:41:28.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:41:28.687 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:41:28.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:41:28.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:41:28.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:41:28.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.861852 -999.00  +14.30  21.33     38   +0.20 1 1 1 1 1     0    0 13.23 -33.43 ZNESW 19.9 21.3 165.8 26.6 14.6 -24.9 14.5 -24.3 14.3 -23.2 14.6 -24.2
2025-11-24T22:41:28.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:41:28.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:41:28.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.861852
2025-11-24T22:41:28.695 [DEBUG] [Thread-198232] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:41:28.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:41:28.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:41:28.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:41:28.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:41:28.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:41:28.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:40:59', tmtdew=15.93, humidity=33.54, cloud=0.0, wind=33.77, temperature=14.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:40:59', seeing=0.66, atlas_timestamp='2025-11-24T20:41:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, -0.051249999999999574, 0.017250000000000654, -0.018500000000001293, 0.02949999999999875, 0.054750000000002075, -0.011000000000001009, 0.015750000000000597, 0.0045000000000001705, 0.009000000000000341, 0.030249999999998778, -0.04899999999999949, 0.04499999999999993, 0.07874999999999943, 0.03500000000000014, 0.009999999999999787, 0.01624999999999943, 0.042500000000000426, 0.04899999999999949, 0.014249999999998764, 0.06149999999999878, 0.01574999999999882, 0.05025000000000013, 0.023750000000001492, -0.012500000000001066, 0.009500000000000952, 0.04475000000000051, 0.06649999999999956, 0.11599999999999966, 0.13400000000000034, 0.08500000000000085, -0.019999999999999574, -0.04025000000000034], zp_timestamp='2025-11-24T20:39:00')
2025-11-24T22:41:28.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:41:30.264 [DEBUG] [Thread-198235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:41:43.772 [DEBUG] [Thread-198236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:41:45.355 [DEBUG] [Thread-198237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:41:46.562 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:41:46.564 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:42:00.390 [DEBUG] [Thread-198238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:42:15.489 [DEBUG] [Thread-198239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:42:30.553 [DEBUG] [Thread-198240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:42:44.042 [DEBUG] [Thread-198241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:42:45.585 [DEBUG] [Thread-198242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:42:46.767 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:42:46.769 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:43:00.653 [DEBUG] [Thread-198243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:43:15.766 [DEBUG] [Thread-198244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:43:30.803 [DEBUG] [Thread-198245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:43:41.640 [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-11-24T22:43:44.368 [DEBUG] [Thread-198246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:43:45.832 [DEBUG] [Thread-198247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:43:46.968 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:43:46.970 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:44:00.875 [DEBUG] [Thread-198248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:44:11.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:44:11.656 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:44:11.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-11-24T22:44:12.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 43, 44), 15.85, 33.72, 0.0, 34.9, 14.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:44:12.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:43:44
2025-11-24T22:44:12.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:44:12.903 [DEBUG] [Thread-198249] [transport.py] [_log()] starting thread (client mode): 0xd31490c0
2025-11-24T22:44:12.904 [DEBUG] [Thread-198249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:44:12.914 [DEBUG] [Thread-198249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:44:12.914 [INFO] [Thread-198249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:44:12.921 [DEBUG] [Thread-198249] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:44:12.921 [DEBUG] [Thread-198249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:44:12.921 [DEBUG] [Thread-198249] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:44:12.921 [DEBUG] [Thread-198249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:44:12.921 [DEBUG] [Thread-198249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:44:12.921 [DEBUG] [Thread-198249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:44:12.921 [DEBUG] [Thread-198249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:44:12.921 [DEBUG] [Thread-198249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:44:12.921 [DEBUG] [Thread-198249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:44:12.922 [DEBUG] [Thread-198249] [transport.py] [_log()] client lang: <none>
2025-11-24T22:44:12.922 [DEBUG] [Thread-198249] [transport.py] [_log()] server lang: <none>
2025-11-24T22:44:12.922 [DEBUG] [Thread-198249] [transport.py] [_log()] kex follows: False
2025-11-24T22:44:12.922 [DEBUG] [Thread-198249] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:44:12.922 [DEBUG] [Thread-198249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:44:12.923 [DEBUG] [Thread-198249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:44:12.923 [DEBUG] [Thread-198249] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:44:12.923 [DEBUG] [Thread-198249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:44:12.923 [DEBUG] [Thread-198249] [transport.py] [_log()] Compression: none
2025-11-24T22:44:12.923 [DEBUG] [Thread-198249] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:44:12.960 [DEBUG] [Thread-198249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:44:12.965 [DEBUG] [Thread-198249] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:44:12.967 [DEBUG] [Thread-198249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:44:12.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:44:12.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:44:12.974 [DEBUG] [Thread-198249] [transport.py] [_log()] userauth is OK
2025-11-24T22:44:12.974 [DEBUG] [Thread-198249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:44:12.975 [DEBUG] [Thread-198249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:44:12.975 [DEBUG] [Thread-198249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:44:12.975 [DEBUG] [Thread-198249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:44:13.001 [INFO] [Thread-198249] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:44:13.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:44:13.658 [DEBUG] [Thread-198249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:44:13.658 [DEBUG] [Thread-198249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:44:13.661 [DEBUG] [Thread-198249] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:44:13.699 [DEBUG] [Thread-198249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:44:13.699 [DEBUG] [Thread-198249] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:44:13.703 [DEBUG] [Thread-198249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:44:13.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:44:13.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:44:13.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:44:13.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:44:13.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:44:13.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:44:13.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:44:13.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:44:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:44:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.863588 -999.00  +14.30  21.53     38   +0.40 1 1 1 1 1     0    0 13.23 -33.04 ZNESW 20.4 21.5 169.8 25.2 14.6 -24.9 14.4 -24.4 14.2 -23.2 14.5 -24.2
2025-11-24T22:44:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:44:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:44:13.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.863588
2025-11-24T22:44:13.740 [DEBUG] [Thread-198249] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:44:13.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:44:13.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:44:13.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:44:13.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:44:13.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:44:13.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:43:44', tmtdew=15.85, humidity=33.72, cloud=0.0, wind=34.9, temperature=14.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:43:44', seeing=0.67, atlas_timestamp='2025-11-24T20:43:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, -0.051249999999999574, 0.017250000000000654, -0.018500000000001293, 0.02949999999999875, 0.054750000000002075, -0.011000000000001009, 0.015750000000000597, 0.0045000000000001705, 0.009000000000000341, 0.030249999999998778, -0.04899999999999949, 0.04499999999999993, 0.07874999999999943, 0.03500000000000014, 0.009999999999999787, 0.01624999999999943, 0.042500000000000426, 0.04899999999999949, 0.014249999999998764, 0.06149999999999878, 0.01574999999999882, 0.05025000000000013, 0.023750000000001492, -0.012500000000001066, 0.009500000000000952, 0.04475000000000051, 0.06649999999999956, 0.11599999999999966, 0.13400000000000034, 0.08500000000000085, -0.019999999999999574, -0.04025000000000034], zp_timestamp='2025-11-24T20:42:00')
2025-11-24T22:44:13.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:44:13.870 [DEBUG] [Thread-198252] [transport.py] [_log()] starting thread (client mode): 0xd31f6440
2025-11-24T22:44:13.870 [DEBUG] [Thread-198252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:44:13.884 [DEBUG] [Thread-198252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:44:13.884 [INFO] [Thread-198252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] client lang: <none>
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] server lang: <none>
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] kex follows: False
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] Compression: none
2025-11-24T22:44:13.892 [DEBUG] [Thread-198252] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:44:13.949 [DEBUG] [Thread-198252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:44:13.950 [DEBUG] [Thread-198252] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:44:13.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:44:13.951 [DEBUG] [Thread-198252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:44:13.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:44:14.005 [DEBUG] [Thread-198252] [transport.py] [_log()] userauth is OK
2025-11-24T22:44:14.005 [DEBUG] [Thread-198252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:44:14.005 [DEBUG] [Thread-198252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:44:14.006 [DEBUG] [Thread-198252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:44:14.006 [DEBUG] [Thread-198252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:44:14.026 [INFO] [Thread-198252] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:44:14.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:44:14.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:44:14.870 [DEBUG] [Thread-198252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:44:14.870 [DEBUG] [Thread-198252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:44:14.917 [DEBUG] [Thread-198252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:44:14.918 [DEBUG] [Thread-198252] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:44:14.927 [DEBUG] [Thread-198252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:44:14.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:44:14.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-11-24T22:44:14.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-11-24T22:44:14.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:44:14.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:44:14.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:44:14.977 [DEBUG] [Thread-198252] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:44:15.953 [DEBUG] [Thread-198254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:44:31.109 [DEBUG] [Thread-198255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:44:32.827 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:44:44.614 [DEBUG] [Thread-198256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:44:44.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:44:45.000 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:44:45.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-11-24T22:44:45.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 44, 17), 15.8, 33.84, 0.0, 34.44, 14.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:44:45.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:44:17
2025-11-24T22:44:46.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:44:46.149 [DEBUG] [Thread-198257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:44:46.231 [DEBUG] [Thread-198258] [transport.py] [_log()] starting thread (client mode): 0xd07f8370
2025-11-24T22:44:46.231 [DEBUG] [Thread-198258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:44:46.248 [DEBUG] [Thread-198258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:44:46.248 [INFO] [Thread-198258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] client lang: <none>
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] server lang: <none>
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] kex follows: False
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:44:46.251 [DEBUG] [Thread-198258] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:44:46.252 [DEBUG] [Thread-198258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:44:46.252 [DEBUG] [Thread-198258] [transport.py] [_log()] Compression: none
2025-11-24T22:44:46.252 [DEBUG] [Thread-198258] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:44:46.268 [DEBUG] [Thread-198258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:44:46.270 [DEBUG] [Thread-198258] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:44:46.270 [DEBUG] [Thread-198258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:44:46.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:44:46.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:44:46.313 [DEBUG] [Thread-198258] [transport.py] [_log()] userauth is OK
2025-11-24T22:44:46.313 [DEBUG] [Thread-198258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:44:46.313 [DEBUG] [Thread-198258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:44:46.313 [DEBUG] [Thread-198258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:44:46.313 [DEBUG] [Thread-198258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:44:46.344 [INFO] [Thread-198258] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:44:46.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:44:47.062 [DEBUG] [Thread-198258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:44:47.063 [DEBUG] [Thread-198258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:44:47.063 [DEBUG] [Thread-198258] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:44:47.103 [DEBUG] [Thread-198258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:44:47.103 [DEBUG] [Thread-198258] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:44:47.105 [DEBUG] [Thread-198258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:44:47.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:44:47.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:44:47.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:44:47.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:44:47.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:44:47.124 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:44:47.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:44:47.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:44:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:44:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.863935 -999.00  +14.20  24.00     38   +0.40 1 1 1 1 1     0    0 13.23 -34.94 ZNESW 24.2 24.0 174.0 28.0 14.6 -24.7 14.4 -24.2 14.2 -23.1 14.5 -24.2
2025-11-24T22:44:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:44:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:44:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.863935
2025-11-24T22:44:47.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:44:47.127 [DEBUG] [Thread-198258] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:44:47.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:44:47.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:44:47.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:44:47.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:44:47.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:44:17', tmtdew=15.8, humidity=33.84, cloud=0.0, wind=34.44, temperature=14.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:44:17', seeing=0.62, atlas_timestamp='2025-11-24T20:44:03.984', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, -0.051249999999999574, 0.017250000000000654, -0.018500000000001293, 0.02949999999999875, 0.054750000000002075, -0.011000000000001009, 0.015750000000000597, 0.0045000000000001705, 0.009000000000000341, 0.030249999999998778, -0.04899999999999949, 0.04499999999999993, 0.07874999999999943, 0.03500000000000014, 0.009999999999999787, 0.01624999999999943, 0.042500000000000426, 0.04899999999999949, 0.014249999999998764, 0.06149999999999878, 0.01574999999999882, 0.05025000000000013, 0.023750000000001492, -0.012500000000001066, 0.009500000000000952, 0.04475000000000051, 0.06649999999999956, 0.11599999999999966, 0.13400000000000034, 0.08500000000000085, -0.019999999999999574, -0.04025000000000034], zp_timestamp='2025-11-24T20:42:00')
2025-11-24T22:44:47.174 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:44:47.175 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:44:47.206 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:44:47.218 [DEBUG] [Thread-198261] [transport.py] [_log()] starting thread (client mode): 0xd07f9900
2025-11-24T22:44:47.218 [DEBUG] [Thread-198261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:44:47.232 [DEBUG] [Thread-198261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:44:47.233 [INFO] [Thread-198261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] client lang: <none>
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] server lang: <none>
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] kex follows: False
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] Compression: none
2025-11-24T22:44:47.240 [DEBUG] [Thread-198261] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:44:47.295 [DEBUG] [Thread-198261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:44:47.296 [DEBUG] [Thread-198261] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:44:47.296 [DEBUG] [Thread-198261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:44:47.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:44:47.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:44:47.354 [DEBUG] [Thread-198261] [transport.py] [_log()] userauth is OK
2025-11-24T22:44:47.354 [DEBUG] [Thread-198261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:44:47.354 [DEBUG] [Thread-198261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:44:47.354 [DEBUG] [Thread-198261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:44:47.354 [DEBUG] [Thread-198261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:44:47.368 [INFO] [Thread-198261] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:44:47.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:44:47.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:44:48.251 [DEBUG] [Thread-198261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:44:48.251 [DEBUG] [Thread-198261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:44:48.302 [DEBUG] [Thread-198261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:44:48.302 [DEBUG] [Thread-198261] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:44:48.315 [DEBUG] [Thread-198261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:44:48.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:44:48.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-11-24T22:44:48.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-11-24T22:44:48.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:44:48.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:44:48.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:44:48.362 [DEBUG] [Thread-198261] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:45:01.175 [DEBUG] [Thread-198263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:45:16.265 [DEBUG] [Thread-198264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:45:18.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:45:18.391 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:45:18.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:45:19.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 44, 50), 15.81, 33.71, 0.0, 33.35, 14.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:45:19.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:44:50
2025-11-24T22:45:19.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:45:19.942 [DEBUG] [Thread-198265] [transport.py] [_log()] starting thread (client mode): 0xd0784d90
2025-11-24T22:45:19.943 [DEBUG] [Thread-198265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:45:19.955 [DEBUG] [Thread-198265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:45:19.955 [INFO] [Thread-198265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] client lang: <none>
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] server lang: <none>
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] kex follows: False
2025-11-24T22:45:19.960 [DEBUG] [Thread-198265] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:45:19.961 [DEBUG] [Thread-198265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:45:19.961 [DEBUG] [Thread-198265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:45:19.961 [DEBUG] [Thread-198265] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:45:19.961 [DEBUG] [Thread-198265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:45:19.961 [DEBUG] [Thread-198265] [transport.py] [_log()] Compression: none
2025-11-24T22:45:19.961 [DEBUG] [Thread-198265] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:45:20.003 [DEBUG] [Thread-198265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:45:20.010 [DEBUG] [Thread-198265] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:45:20.012 [DEBUG] [Thread-198265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:45:20.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:45:20.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:45:20.017 [DEBUG] [Thread-198265] [transport.py] [_log()] userauth is OK
2025-11-24T22:45:20.018 [DEBUG] [Thread-198265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:45:20.018 [DEBUG] [Thread-198265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:45:20.018 [DEBUG] [Thread-198265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:45:20.018 [DEBUG] [Thread-198265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:45:20.046 [INFO] [Thread-198265] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:45:20.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:45:21.509 [DEBUG] [Thread-198265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:45:21.509 [DEBUG] [Thread-198265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:45:21.510 [DEBUG] [Thread-198265] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:45:21.550 [DEBUG] [Thread-198265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:45:21.550 [DEBUG] [Thread-198265] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:45:21.553 [DEBUG] [Thread-198265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:45:21.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:45:21.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:45:21.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:45:21.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:45:21.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:45:21.627 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:45:21.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:45:21.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:45:21.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:45:21.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.864283 -999.00  +14.20  17.57     38   +0.40 1 1 1 1 1     0    0 13.37 -33.65 ZNESW 18.4 17.6 163.0 29.6 14.6 -24.8 14.4 -24.3 14.2 -23.3 14.5 -24.2
2025-11-24T22:45:21.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:45:21.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:45:21.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.864283
2025-11-24T22:45:21.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:45:21.645 [DEBUG] [Thread-198265] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:45:21.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:45:21.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:45:21.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:45:21.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:45:21.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:44:50', tmtdew=15.81, humidity=33.71, cloud=0.0, wind=33.35, temperature=14.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:44:50', seeing=0.51, atlas_timestamp='2025-11-24T20:44:34.051', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, -0.051249999999999574, 0.017250000000000654, -0.018500000000001293, 0.02949999999999875, 0.054750000000002075, -0.011000000000001009, 0.015750000000000597, 0.0045000000000001705, 0.009000000000000341, 0.030249999999998778, -0.04899999999999949, 0.04499999999999993, 0.07874999999999943, 0.03500000000000014, 0.009999999999999787, 0.01624999999999943, 0.042500000000000426, 0.04899999999999949, 0.014249999999998764, 0.06149999999999878, 0.01574999999999882, 0.05025000000000013, 0.023750000000001492, -0.012500000000001066, 0.009500000000000952, 0.04475000000000051, 0.06649999999999956, 0.11599999999999966, 0.13400000000000034, 0.08500000000000085, -0.019999999999999574, -0.04025000000000034], zp_timestamp='2025-11-24T20:42:00')
2025-11-24T22:45:21.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:45:21.733 [DEBUG] [Thread-198268] [transport.py] [_log()] starting thread (client mode): 0xd07f9e70
2025-11-24T22:45:21.734 [DEBUG] [Thread-198268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:45:21.750 [DEBUG] [Thread-198268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:45:21.750 [INFO] [Thread-198268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:45:21.757 [DEBUG] [Thread-198268] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:45:21.757 [DEBUG] [Thread-198268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:45:21.757 [DEBUG] [Thread-198268] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:45:21.757 [DEBUG] [Thread-198268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:45:21.757 [DEBUG] [Thread-198268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:45:21.757 [DEBUG] [Thread-198268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:45:21.757 [DEBUG] [Thread-198268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:45:21.757 [DEBUG] [Thread-198268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:45:21.757 [DEBUG] [Thread-198268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:45:21.757 [DEBUG] [Thread-198268] [transport.py] [_log()] client lang: <none>
2025-11-24T22:45:21.758 [DEBUG] [Thread-198268] [transport.py] [_log()] server lang: <none>
2025-11-24T22:45:21.758 [DEBUG] [Thread-198268] [transport.py] [_log()] kex follows: False
2025-11-24T22:45:21.758 [DEBUG] [Thread-198268] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:45:21.758 [DEBUG] [Thread-198268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:45:21.758 [DEBUG] [Thread-198268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:45:21.758 [DEBUG] [Thread-198268] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:45:21.758 [DEBUG] [Thread-198268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:45:21.758 [DEBUG] [Thread-198268] [transport.py] [_log()] Compression: none
2025-11-24T22:45:21.758 [DEBUG] [Thread-198268] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:45:21.816 [DEBUG] [Thread-198268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:45:21.816 [DEBUG] [Thread-198268] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:45:21.816 [DEBUG] [Thread-198268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:45:21.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:45:21.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:45:21.872 [DEBUG] [Thread-198268] [transport.py] [_log()] userauth is OK
2025-11-24T22:45:21.872 [DEBUG] [Thread-198268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:45:21.872 [DEBUG] [Thread-198268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:45:21.872 [DEBUG] [Thread-198268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:45:21.872 [DEBUG] [Thread-198268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:45:21.887 [INFO] [Thread-198268] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:45:21.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:45:21.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:45:22.738 [DEBUG] [Thread-198268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:45:22.738 [DEBUG] [Thread-198268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:45:22.786 [DEBUG] [Thread-198268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:45:22.786 [DEBUG] [Thread-198268] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:45:22.794 [DEBUG] [Thread-198268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:45:22.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:45:22.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-11-24T22:45:22.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-11-24T22:45:22.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:45:22.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:45:22.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:45:22.827 [DEBUG] [Thread-198268] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:45:31.363 [DEBUG] [Thread-198270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:45:44.875 [DEBUG] [Thread-198271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:45:46.543 [DEBUG] [Thread-198272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:45:47.378 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:45:47.379 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:45:52.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:45:52.862 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:45:52.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-11-24T22:45:53.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 45, 23), 15.78, 33.76, 0.0, 35.62, 14.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:45:53.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:45:23
2025-11-24T22:45:54.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:45:54.265 [DEBUG] [Thread-198273] [transport.py] [_log()] starting thread (client mode): 0xd3149630
2025-11-24T22:45:54.265 [DEBUG] [Thread-198273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:45:54.277 [DEBUG] [Thread-198273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:45:54.277 [INFO] [Thread-198273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:45:54.282 [DEBUG] [Thread-198273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:45:54.282 [DEBUG] [Thread-198273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:45:54.282 [DEBUG] [Thread-198273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:45:54.282 [DEBUG] [Thread-198273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:45:54.283 [DEBUG] [Thread-198273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:45:54.283 [DEBUG] [Thread-198273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:45:54.283 [DEBUG] [Thread-198273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:45:54.283 [DEBUG] [Thread-198273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:45:54.283 [DEBUG] [Thread-198273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:45:54.283 [DEBUG] [Thread-198273] [transport.py] [_log()] client lang: <none>
2025-11-24T22:45:54.283 [DEBUG] [Thread-198273] [transport.py] [_log()] server lang: <none>
2025-11-24T22:45:54.283 [DEBUG] [Thread-198273] [transport.py] [_log()] kex follows: False
2025-11-24T22:45:54.283 [DEBUG] [Thread-198273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:45:54.284 [DEBUG] [Thread-198273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:45:54.284 [DEBUG] [Thread-198273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:45:54.284 [DEBUG] [Thread-198273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:45:54.284 [DEBUG] [Thread-198273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:45:54.284 [DEBUG] [Thread-198273] [transport.py] [_log()] Compression: none
2025-11-24T22:45:54.284 [DEBUG] [Thread-198273] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:45:54.321 [DEBUG] [Thread-198273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:45:54.327 [DEBUG] [Thread-198273] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:45:54.329 [DEBUG] [Thread-198273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:45:54.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:45:54.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:45:54.333 [DEBUG] [Thread-198273] [transport.py] [_log()] userauth is OK
2025-11-24T22:45:54.334 [DEBUG] [Thread-198273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:45:54.334 [DEBUG] [Thread-198273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:45:54.334 [DEBUG] [Thread-198273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:45:54.334 [DEBUG] [Thread-198273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:45:54.373 [INFO] [Thread-198273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:45:54.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:45:55.014 [DEBUG] [Thread-198273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:45:55.014 [DEBUG] [Thread-198273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:45:55.023 [DEBUG] [Thread-198273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:45:55.055 [DEBUG] [Thread-198273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:45:55.055 [DEBUG] [Thread-198273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:45:55.058 [DEBUG] [Thread-198273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:45:55.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:45:55.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:45:55.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:45:55.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:45:55.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:45:55.078 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:45:55.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:45:55.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:45:55.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:45:55.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.864630 -999.00  +14.20  17.74     39   +0.40 1 1 1 1 1     0    0 13.09 -34.91 ZNESW 22.7 17.7 165.5 31.9 14.6 -24.7 14.4 -24.2 14.2 -23.1 14.5 -24.1
2025-11-24T22:45:55.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:45:55.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:45:55.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.864630
2025-11-24T22:45:55.085 [DEBUG] [Thread-198273] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:45:55.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:45:55.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:45:55.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:45:55.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:45:55.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:45:55.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:45:23', tmtdew=15.78, humidity=33.76, cloud=0.0, wind=35.62, temperature=14.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:45:23', seeing=0.59, atlas_timestamp='2025-11-24T20:45:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, -0.051249999999999574, 0.017250000000000654, -0.018500000000001293, 0.02949999999999875, 0.054750000000002075, -0.011000000000001009, 0.015750000000000597, 0.0045000000000001705, 0.009000000000000341, 0.030249999999998778, -0.04899999999999949, 0.04499999999999993, 0.07874999999999943, 0.03500000000000014, 0.009999999999999787, 0.01624999999999943, 0.042500000000000426, 0.04899999999999949, 0.014249999999998764, 0.06149999999999878, 0.01574999999999882, 0.05025000000000013, 0.023750000000001492, -0.012500000000001066, 0.009500000000000952, 0.04475000000000051, 0.06649999999999956, 0.11599999999999966, 0.13400000000000034, 0.08500000000000085, -0.019999999999999574, -0.04025000000000034], zp_timestamp='2025-11-24T20:42:00')
2025-11-24T22:45:55.172 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:45:55.183 [DEBUG] [Thread-198276] [transport.py] [_log()] starting thread (client mode): 0xd3149db0
2025-11-24T22:45:55.183 [DEBUG] [Thread-198276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:45:55.197 [DEBUG] [Thread-198276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:45:55.197 [INFO] [Thread-198276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] client lang: <none>
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] server lang: <none>
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] kex follows: False
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] Compression: none
2025-11-24T22:45:55.205 [DEBUG] [Thread-198276] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:45:55.259 [DEBUG] [Thread-198276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:45:55.260 [DEBUG] [Thread-198276] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:45:55.260 [DEBUG] [Thread-198276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:45:55.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:45:55.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:45:55.316 [DEBUG] [Thread-198276] [transport.py] [_log()] userauth is OK
2025-11-24T22:45:55.317 [DEBUG] [Thread-198276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:45:55.317 [DEBUG] [Thread-198276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:45:55.317 [DEBUG] [Thread-198276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:45:55.317 [DEBUG] [Thread-198276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:45:55.331 [INFO] [Thread-198276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:45:55.331 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:45:55.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:45:56.134 [DEBUG] [Thread-198276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:45:56.134 [DEBUG] [Thread-198276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:45:56.182 [DEBUG] [Thread-198276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:45:56.182 [DEBUG] [Thread-198276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:45:56.191 [DEBUG] [Thread-198276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:45:56.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:45:56.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-11-24T22:45:56.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-11-24T22:45:56.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:45:56.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:45:56.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:45:56.226 [DEBUG] [Thread-198276] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:46:01.584 [DEBUG] [Thread-198278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:46:16.728 [DEBUG] [Thread-198279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:46:26.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:46:26.262 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:46:26.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-11-24T22:46:27.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 45, 56), 15.75, 33.87, 0.0, 30.03, 14.4, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:46:27.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:45:56
2025-11-24T22:46:27.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:46:27.894 [DEBUG] [Thread-198280] [transport.py] [_log()] starting thread (client mode): 0xd07fa260
2025-11-24T22:46:27.895 [DEBUG] [Thread-198280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:46:27.907 [DEBUG] [Thread-198280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:46:27.907 [INFO] [Thread-198280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:46:27.913 [DEBUG] [Thread-198280] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:46:27.913 [DEBUG] [Thread-198280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] client lang: <none>
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] server lang: <none>
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] kex follows: False
2025-11-24T22:46:27.914 [DEBUG] [Thread-198280] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:46:27.915 [DEBUG] [Thread-198280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:46:27.916 [DEBUG] [Thread-198280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:46:27.916 [DEBUG] [Thread-198280] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:46:27.916 [DEBUG] [Thread-198280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:46:27.916 [DEBUG] [Thread-198280] [transport.py] [_log()] Compression: none
2025-11-24T22:46:27.916 [DEBUG] [Thread-198280] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:46:27.954 [DEBUG] [Thread-198280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:46:27.959 [DEBUG] [Thread-198280] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:46:27.962 [DEBUG] [Thread-198280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:46:27.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:46:27.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:46:27.967 [DEBUG] [Thread-198280] [transport.py] [_log()] userauth is OK
2025-11-24T22:46:27.967 [DEBUG] [Thread-198280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:46:27.967 [DEBUG] [Thread-198280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:46:27.968 [DEBUG] [Thread-198280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:46:27.968 [DEBUG] [Thread-198280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:46:27.996 [INFO] [Thread-198280] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:46:28.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:46:28.650 [DEBUG] [Thread-198280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:46:28.650 [DEBUG] [Thread-198280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:46:28.660 [DEBUG] [Thread-198280] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:46:28.691 [DEBUG] [Thread-198280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:46:28.691 [DEBUG] [Thread-198280] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:46:28.694 [DEBUG] [Thread-198280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:46:28.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:46:28.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:46:28.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:46:28.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:46:28.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:46:28.714 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:46:28.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:46:28.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:46:28.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:46:28.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.864977 -999.00  +14.20  23.36     39   +0.40 1 1 1 1 1     0    0 13.33 -32.99 ZNESW 26.4 23.4 176.0 36.2 14.5 -24.8 14.4 -24.2 14.2 -23.1 14.5 -24.1
2025-11-24T22:46:28.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:46:28.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:46:28.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.864977
2025-11-24T22:46:28.720 [DEBUG] [Thread-198280] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:46:28.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:46:28.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:46:28.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:46:28.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:46:28.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:46:28.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:45:56', tmtdew=15.75, humidity=33.87, cloud=0.0, wind=30.03, temperature=14.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:45:56', seeing=0.64, atlas_timestamp='2025-11-24T20:45:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004750000000001364, -0.051249999999999574, 0.017250000000000654, -0.018500000000001293, 0.02949999999999875, 0.054750000000002075, -0.011000000000001009, 0.015750000000000597, 0.0045000000000001705, 0.009000000000000341, 0.030249999999998778, -0.04899999999999949, 0.04499999999999993, 0.07874999999999943, 0.03500000000000014, 0.009999999999999787, 0.01624999999999943, 0.042500000000000426, 0.04899999999999949, 0.014249999999998764, 0.06149999999999878, 0.01574999999999882, 0.05025000000000013, 0.023750000000001492, -0.012500000000001066, 0.009500000000000952, 0.04475000000000051, 0.06649999999999956, 0.11599999999999966, 0.13400000000000034, 0.08500000000000085, -0.019999999999999574, -0.04025000000000034], zp_timestamp='2025-11-24T20:42:00')
2025-11-24T22:46:28.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:46:28.817 [DEBUG] [Thread-198283] [transport.py] [_log()] starting thread (client mode): 0xd317c160
2025-11-24T22:46:28.817 [DEBUG] [Thread-198283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:46:28.832 [DEBUG] [Thread-198283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:46:28.832 [INFO] [Thread-198283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:46:28.840 [DEBUG] [Thread-198283] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:46:28.840 [DEBUG] [Thread-198283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:46:28.840 [DEBUG] [Thread-198283] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:46:28.840 [DEBUG] [Thread-198283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:46:28.840 [DEBUG] [Thread-198283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] client lang: <none>
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] server lang: <none>
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] kex follows: False
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] Compression: none
2025-11-24T22:46:28.841 [DEBUG] [Thread-198283] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:46:28.897 [DEBUG] [Thread-198283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:46:28.897 [DEBUG] [Thread-198283] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:46:28.898 [DEBUG] [Thread-198283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:46:28.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:46:28.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:46:28.953 [DEBUG] [Thread-198283] [transport.py] [_log()] userauth is OK
2025-11-24T22:46:28.953 [DEBUG] [Thread-198283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:46:28.953 [DEBUG] [Thread-198283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:46:28.953 [DEBUG] [Thread-198283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:46:28.953 [DEBUG] [Thread-198283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:46:28.969 [INFO] [Thread-198283] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:46:28.969 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:46:28.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:46:29.828 [DEBUG] [Thread-198283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:46:29.828 [DEBUG] [Thread-198283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:46:29.876 [DEBUG] [Thread-198283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:46:29.876 [DEBUG] [Thread-198283] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:46:29.884 [DEBUG] [Thread-198283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:46:29.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:46:29.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-11-24T22:46:29.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-11-24T22:46:29.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:46:29.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:46:29.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:46:29.918 [DEBUG] [Thread-198283] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:46:31.830 [DEBUG] [Thread-198285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:46:45.187 [DEBUG] [Thread-198286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:46:46.948 [DEBUG] [Thread-198287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:46:47.582 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:46:47.584 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:46:59.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:46:59.952 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:46:59.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-11-24T22:47:00.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 46, 28), 15.81, 33.67, 0.0, 28.18, 14.3, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:47:00.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:46:28
2025-11-24T22:47:01.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:47:01.365 [DEBUG] [Thread-198288] [transport.py] [_log()] starting thread (client mode): 0xd31f53c0
2025-11-24T22:47:01.367 [DEBUG] [Thread-198288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:47:01.369 [DEBUG] [Thread-198288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:47:01.370 [INFO] [Thread-198288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:47:01.377 [DEBUG] [Thread-198288] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] client lang: <none>
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] server lang: <none>
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] kex follows: False
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:47:01.378 [DEBUG] [Thread-198288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:47:01.379 [DEBUG] [Thread-198288] [transport.py] [_log()] Compression: none
2025-11-24T22:47:01.379 [DEBUG] [Thread-198288] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:47:01.413 [DEBUG] [Thread-198288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:47:01.416 [DEBUG] [Thread-198288] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:47:01.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:47:01.418 [DEBUG] [Thread-198288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:47:01.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:47:01.421 [DEBUG] [Thread-198288] [transport.py] [_log()] userauth is OK
2025-11-24T22:47:01.421 [DEBUG] [Thread-198288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:47:01.421 [DEBUG] [Thread-198288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:47:01.421 [DEBUG] [Thread-198288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:47:01.421 [DEBUG] [Thread-198288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:47:01.433 [INFO] [Thread-198288] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:47:01.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:47:01.979 [DEBUG] [Thread-198290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:47:02.087 [DEBUG] [Thread-198288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:47:02.087 [DEBUG] [Thread-198288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:47:02.087 [DEBUG] [Thread-198288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:47:02.128 [DEBUG] [Thread-198288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:47:02.128 [DEBUG] [Thread-198288] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:47:02.131 [DEBUG] [Thread-198288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:47:02.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:47:02.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:47:02.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:47:02.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:47:02.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:47:02.152 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:47:02.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:47:02.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:47:02.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:47:02.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.865324 -999.00  +14.20  19.78     39   +0.40 1 1 1 1 1     0    0 12.79 -34.83 ZNESW 23.1 19.8 172.4 29.1 14.5 -24.8 14.4 -24.2 14.2 -23.1 14.5 -23.9
2025-11-24T22:47:02.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:47:02.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:47:02.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.865324
2025-11-24T22:47:02.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:47:02.170 [DEBUG] [Thread-198288] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:47:02.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:47:02.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:47:02.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:47:02.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:47:02.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:46:28', tmtdew=15.81, humidity=33.67, cloud=0.0, wind=28.18, temperature=14.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:46:29', seeing=0.64, atlas_timestamp='2025-11-24T20:46:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:45:00')
2025-11-24T22:47:02.247 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:47:02.258 [DEBUG] [Thread-198292] [transport.py] [_log()] starting thread (client mode): 0xd3148f10
2025-11-24T22:47:02.258 [DEBUG] [Thread-198292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:47:02.274 [DEBUG] [Thread-198292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:47:02.274 [INFO] [Thread-198292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:47:02.283 [DEBUG] [Thread-198292] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:47:02.283 [DEBUG] [Thread-198292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:47:02.283 [DEBUG] [Thread-198292] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:47:02.283 [DEBUG] [Thread-198292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:47:02.283 [DEBUG] [Thread-198292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:47:02.283 [DEBUG] [Thread-198292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:47:02.283 [DEBUG] [Thread-198292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] client lang: <none>
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] server lang: <none>
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] kex follows: False
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] Compression: none
2025-11-24T22:47:02.284 [DEBUG] [Thread-198292] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:47:02.339 [DEBUG] [Thread-198292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:47:02.339 [DEBUG] [Thread-198292] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:47:02.340 [DEBUG] [Thread-198292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:47:02.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:47:02.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:47:02.396 [DEBUG] [Thread-198292] [transport.py] [_log()] userauth is OK
2025-11-24T22:47:02.397 [DEBUG] [Thread-198292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:47:02.397 [DEBUG] [Thread-198292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:47:02.397 [DEBUG] [Thread-198292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:47:02.397 [DEBUG] [Thread-198292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:47:02.410 [INFO] [Thread-198292] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:47:02.410 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:47:02.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:47:03.252 [DEBUG] [Thread-198292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:47:03.252 [DEBUG] [Thread-198292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:47:03.300 [DEBUG] [Thread-198292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:47:03.300 [DEBUG] [Thread-198292] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:47:03.309 [DEBUG] [Thread-198292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:47:03.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:47:03.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-11-24T22:47:03.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-11-24T22:47:03.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:47:03.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:47:03.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:47:03.342 [DEBUG] [Thread-198292] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:47:17.023 [DEBUG] [Thread-198294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:47:32.139 [DEBUG] [Thread-198295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:47:33.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:47:33.374 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:47:33.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-11-24T22:47:34.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 47, 1), 15.74, 33.72, 0.0, 31.53, 14.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:47:34.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:47:01
2025-11-24T22:47:34.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:47:34.546 [DEBUG] [Thread-198296] [transport.py] [_log()] starting thread (client mode): 0xd073b970
2025-11-24T22:47:34.547 [DEBUG] [Thread-198296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:47:34.550 [DEBUG] [Thread-198296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:47:34.550 [INFO] [Thread-198296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:47:34.553 [DEBUG] [Thread-198296] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] client lang: <none>
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] server lang: <none>
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] kex follows: False
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:47:34.554 [DEBUG] [Thread-198296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:47:34.555 [DEBUG] [Thread-198296] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:47:34.555 [DEBUG] [Thread-198296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:47:34.555 [DEBUG] [Thread-198296] [transport.py] [_log()] Compression: none
2025-11-24T22:47:34.555 [DEBUG] [Thread-198296] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:47:34.580 [DEBUG] [Thread-198296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:47:34.583 [DEBUG] [Thread-198296] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:47:34.584 [DEBUG] [Thread-198296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:47:34.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:47:34.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:47:34.625 [DEBUG] [Thread-198296] [transport.py] [_log()] userauth is OK
2025-11-24T22:47:34.625 [DEBUG] [Thread-198296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:47:34.625 [DEBUG] [Thread-198296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:47:34.625 [DEBUG] [Thread-198296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:47:34.625 [DEBUG] [Thread-198296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:47:34.653 [INFO] [Thread-198296] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:47:34.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:47:35.312 [DEBUG] [Thread-198296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:47:35.312 [DEBUG] [Thread-198296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:47:35.312 [DEBUG] [Thread-198296] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:47:35.353 [DEBUG] [Thread-198296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:47:35.353 [DEBUG] [Thread-198296] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:47:35.356 [DEBUG] [Thread-198296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:47:35.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:47:35.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:47:35.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:47:35.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:47:35.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:47:35.378 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:47:35.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:47:35.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:47:35.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:47:35.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.866019 -999.00  +14.20  24.96     39   +0.60 1 1 1 1 1     0    0 13.01 -35.78 ZNESW 31.7 25.0 166.3 37.1 14.5 -24.5 14.4 -24.2 14.2 -22.9 14.5 -24.2
2025-11-24T22:47:35.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:47:35.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:47:35.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.866019
2025-11-24T22:47:35.385 [DEBUG] [Thread-198296] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:47:35.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:47:35.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:47:35.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:47:35.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:47:35.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:47:35.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:47:01', tmtdew=15.74, humidity=33.72, cloud=0.0, wind=31.53, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:47:01', seeing=0.65, atlas_timestamp='2025-11-24T20:47:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:45:00')
2025-11-24T22:47:35.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:47:35.480 [DEBUG] [Thread-198299] [transport.py] [_log()] starting thread (client mode): 0xd07389a0
2025-11-24T22:47:35.480 [DEBUG] [Thread-198299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:47:35.495 [DEBUG] [Thread-198299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:47:35.496 [INFO] [Thread-198299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] client lang: <none>
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] server lang: <none>
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] kex follows: False
2025-11-24T22:47:35.503 [DEBUG] [Thread-198299] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:47:35.504 [DEBUG] [Thread-198299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:47:35.504 [DEBUG] [Thread-198299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:47:35.504 [DEBUG] [Thread-198299] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:47:35.504 [DEBUG] [Thread-198299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:47:35.504 [DEBUG] [Thread-198299] [transport.py] [_log()] Compression: none
2025-11-24T22:47:35.504 [DEBUG] [Thread-198299] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:47:35.563 [DEBUG] [Thread-198299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:47:35.563 [DEBUG] [Thread-198299] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:47:35.563 [DEBUG] [Thread-198299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:47:35.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:47:35.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:47:35.620 [DEBUG] [Thread-198299] [transport.py] [_log()] userauth is OK
2025-11-24T22:47:35.620 [DEBUG] [Thread-198299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:47:35.620 [DEBUG] [Thread-198299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:47:35.620 [DEBUG] [Thread-198299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:47:35.620 [DEBUG] [Thread-198299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:47:35.634 [INFO] [Thread-198299] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:47:35.634 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:47:35.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:47:36.512 [DEBUG] [Thread-198299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:47:36.512 [DEBUG] [Thread-198299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:47:36.560 [DEBUG] [Thread-198299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:47:36.560 [DEBUG] [Thread-198299] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:47:36.568 [DEBUG] [Thread-198299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:47:36.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:47:36.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-11-24T22:47:36.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-11-24T22:47:36.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:47:36.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:47:36.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:47:36.601 [DEBUG] [Thread-198299] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:47:45.445 [DEBUG] [Thread-198301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:47:47.192 [DEBUG] [Thread-198302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:47:47.795 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:47:47.796 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:48:02.277 [DEBUG] [Thread-198303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:48:06.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:48:06.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:48:06.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-11-24T22:48:07.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 47, 34), 15.73, 33.76, 0.0, 29.5, 14.27, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:48:07.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:47:34
2025-11-24T22:48:07.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:48:07.666 [DEBUG] [Thread-198304] [transport.py] [_log()] starting thread (client mode): 0xd07f89a0
2025-11-24T22:48:07.667 [DEBUG] [Thread-198304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:48:07.680 [DEBUG] [Thread-198304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:48:07.681 [INFO] [Thread-198304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] client lang: <none>
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] server lang: <none>
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] kex follows: False
2025-11-24T22:48:07.684 [DEBUG] [Thread-198304] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:48:07.685 [DEBUG] [Thread-198304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:48:07.685 [DEBUG] [Thread-198304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:48:07.685 [DEBUG] [Thread-198304] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:48:07.685 [DEBUG] [Thread-198304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:48:07.685 [DEBUG] [Thread-198304] [transport.py] [_log()] Compression: none
2025-11-24T22:48:07.685 [DEBUG] [Thread-198304] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:48:07.715 [DEBUG] [Thread-198304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:48:07.718 [DEBUG] [Thread-198304] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:48:07.718 [DEBUG] [Thread-198304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:48:07.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:48:07.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:48:07.721 [DEBUG] [Thread-198304] [transport.py] [_log()] userauth is OK
2025-11-24T22:48:07.721 [DEBUG] [Thread-198304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:48:07.721 [DEBUG] [Thread-198304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:48:07.721 [DEBUG] [Thread-198304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:48:07.721 [DEBUG] [Thread-198304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:48:07.738 [INFO] [Thread-198304] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:48:07.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:48:08.344 [DEBUG] [Thread-198304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:48:08.344 [DEBUG] [Thread-198304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:48:08.345 [DEBUG] [Thread-198304] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:48:08.385 [DEBUG] [Thread-198304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:48:08.385 [DEBUG] [Thread-198304] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:48:08.388 [DEBUG] [Thread-198304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:48:08.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:48:08.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:48:08.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:48:08.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:48:08.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:48:08.409 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:48:08.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:48:08.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:48:08.410 [DEBUG] [Thread-198304] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:48:08.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:48:08.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.866366 -999.00  +14.20  22.85     39   +0.60 1 1 1 1 1     0    0 13.05 -36.75 ZNESW 21.6 22.9 166.0 33.4 14.5 -24.8 14.4 -24.4 14.2 -23.0 14.4 -24.2
2025-11-24T22:48:08.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:48:08.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:48:08.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.866366
2025-11-24T22:48:08.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:48:08.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:48:08.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:48:08.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:48:08.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:48:08.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:47:34', tmtdew=15.73, humidity=33.76, cloud=0.0, wind=29.5, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:47:34', seeing=0.55, atlas_timestamp='2025-11-24T20:47:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:45:00')
2025-11-24T22:48:08.498 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:48:08.510 [DEBUG] [Thread-198307] [transport.py] [_log()] starting thread (client mode): 0xd07111e0
2025-11-24T22:48:08.510 [DEBUG] [Thread-198307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:48:08.524 [DEBUG] [Thread-198307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:48:08.524 [INFO] [Thread-198307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] client lang: <none>
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] server lang: <none>
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] kex follows: False
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] Compression: none
2025-11-24T22:48:08.532 [DEBUG] [Thread-198307] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:48:08.588 [DEBUG] [Thread-198307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:48:08.588 [DEBUG] [Thread-198307] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:48:08.588 [DEBUG] [Thread-198307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:48:08.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:48:08.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:48:08.644 [DEBUG] [Thread-198307] [transport.py] [_log()] userauth is OK
2025-11-24T22:48:08.644 [DEBUG] [Thread-198307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:48:08.645 [DEBUG] [Thread-198307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:48:08.645 [DEBUG] [Thread-198307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:48:08.645 [DEBUG] [Thread-198307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:48:08.659 [INFO] [Thread-198307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:48:08.659 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:48:08.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:48:09.511 [DEBUG] [Thread-198307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:48:09.511 [DEBUG] [Thread-198307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:48:09.559 [DEBUG] [Thread-198307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:48:09.560 [DEBUG] [Thread-198307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:48:09.568 [DEBUG] [Thread-198307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:48:09.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:48:09.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:48:09.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-11-24T22:48:09.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:48:09.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:48:09.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:48:09.605 [DEBUG] [Thread-198307] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:48:17.345 [DEBUG] [Thread-198309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:48:32.502 [DEBUG] [Thread-198310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:48:39.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:48:39.628 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:48:39.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-11-24T22:48:40.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 48, 6), 15.66, 33.91, 0.0, 29.29, 14.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:48:40.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:48:06
2025-11-24T22:48:41.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:48:41.249 [DEBUG] [Thread-198311] [transport.py] [_log()] starting thread (client mode): 0xd0710220
2025-11-24T22:48:41.250 [DEBUG] [Thread-198311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:48:41.260 [DEBUG] [Thread-198311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:48:41.260 [INFO] [Thread-198311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] client lang: <none>
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] server lang: <none>
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] kex follows: False
2025-11-24T22:48:41.264 [DEBUG] [Thread-198311] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:48:41.265 [DEBUG] [Thread-198311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:48:41.265 [DEBUG] [Thread-198311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:48:41.265 [DEBUG] [Thread-198311] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:48:41.265 [DEBUG] [Thread-198311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:48:41.265 [DEBUG] [Thread-198311] [transport.py] [_log()] Compression: none
2025-11-24T22:48:41.265 [DEBUG] [Thread-198311] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:48:41.294 [DEBUG] [Thread-198311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:48:41.298 [DEBUG] [Thread-198311] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:48:41.299 [DEBUG] [Thread-198311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:48:41.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:48:41.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:48:41.303 [DEBUG] [Thread-198311] [transport.py] [_log()] userauth is OK
2025-11-24T22:48:41.303 [DEBUG] [Thread-198311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:48:41.303 [DEBUG] [Thread-198311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:48:41.303 [DEBUG] [Thread-198311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:48:41.303 [DEBUG] [Thread-198311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:48:41.322 [INFO] [Thread-198311] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:48:41.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:48:41.940 [DEBUG] [Thread-198311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:48:41.940 [DEBUG] [Thread-198311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:48:41.940 [DEBUG] [Thread-198311] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:48:41.981 [DEBUG] [Thread-198311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:48:41.981 [DEBUG] [Thread-198311] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:48:41.983 [DEBUG] [Thread-198311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:48:41.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:48:41.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:48:41.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:48:41.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:48:42.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:48:42.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:48:42.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:48:42.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:48:42.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:48:42.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.866713 -999.00  +14.20  25.02     39   +0.50 1 1 1 1 1     0    0 13.02 -36.95 ZNESW 25.0 25.0 167.2 31.5 14.5 -24.8 14.4 -24.3 14.2 -23.2 14.4 -24.1
2025-11-24T22:48:42.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:48:42.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:48:42.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.866713
2025-11-24T22:48:42.015 [DEBUG] [Thread-198311] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:48:42.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:48:42.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:48:42.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:48:42.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:48:42.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:48:42.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:48:06', tmtdew=15.66, humidity=33.91, cloud=0.0, wind=29.29, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:48:06', seeing=0.61, atlas_timestamp='2025-11-24T20:48:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:45:00')
2025-11-24T22:48:42.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:48:42.115 [DEBUG] [Thread-198314] [transport.py] [_log()] starting thread (client mode): 0xd07f89a0
2025-11-24T22:48:42.115 [DEBUG] [Thread-198314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:48:42.129 [DEBUG] [Thread-198314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:48:42.129 [INFO] [Thread-198314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] client lang: <none>
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] server lang: <none>
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] kex follows: False
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:48:42.137 [DEBUG] [Thread-198314] [transport.py] [_log()] Compression: none
2025-11-24T22:48:42.138 [DEBUG] [Thread-198314] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:48:42.195 [DEBUG] [Thread-198314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:48:42.195 [DEBUG] [Thread-198314] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:48:42.196 [DEBUG] [Thread-198314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:48:42.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:48:42.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:48:42.252 [DEBUG] [Thread-198314] [transport.py] [_log()] userauth is OK
2025-11-24T22:48:42.252 [DEBUG] [Thread-198314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:48:42.252 [DEBUG] [Thread-198314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:48:42.252 [DEBUG] [Thread-198314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:48:42.252 [DEBUG] [Thread-198314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:48:42.270 [INFO] [Thread-198314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:48:42.270 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:48:42.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:48:43.098 [DEBUG] [Thread-198314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:48:43.098 [DEBUG] [Thread-198314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:48:43.146 [DEBUG] [Thread-198314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:48:43.146 [DEBUG] [Thread-198314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:48:43.154 [DEBUG] [Thread-198314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:48:43.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:48: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')
2025-11-24T22:48:43.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:48:43.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:48:43.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:48:43.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:48:43.186 [DEBUG] [Thread-198314] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:48:45.720 [DEBUG] [Thread-198316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:48:47.539 [DEBUG] [Thread-198317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:48:48.000 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:48:48.002 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:49:02.655 [DEBUG] [Thread-198318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:49:13.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:49:13.209 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:49:13.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-11-24T22:49:14.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 48, 39), 15.59, 34.0, 0.0, 34.16, 14.35, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:49:14.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:48:39
2025-11-24T22:49:14.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:49:14.641 [DEBUG] [Thread-198319] [transport.py] [_log()] starting thread (client mode): 0xd07124d0
2025-11-24T22:49:14.642 [DEBUG] [Thread-198319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:49:14.649 [DEBUG] [Thread-198319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:49:14.650 [INFO] [Thread-198319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] client lang: <none>
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] server lang: <none>
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] kex follows: False
2025-11-24T22:49:14.655 [DEBUG] [Thread-198319] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:49:14.656 [DEBUG] [Thread-198319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:49:14.656 [DEBUG] [Thread-198319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:49:14.656 [DEBUG] [Thread-198319] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:49:14.656 [DEBUG] [Thread-198319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:49:14.656 [DEBUG] [Thread-198319] [transport.py] [_log()] Compression: none
2025-11-24T22:49:14.656 [DEBUG] [Thread-198319] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:49:14.690 [DEBUG] [Thread-198319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:49:14.694 [DEBUG] [Thread-198319] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:49:14.695 [DEBUG] [Thread-198319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:49:14.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:49:14.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:49:14.699 [DEBUG] [Thread-198319] [transport.py] [_log()] userauth is OK
2025-11-24T22:49:14.699 [DEBUG] [Thread-198319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:49:14.700 [DEBUG] [Thread-198319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:49:14.700 [DEBUG] [Thread-198319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:49:14.700 [DEBUG] [Thread-198319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:49:14.722 [INFO] [Thread-198319] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:49:14.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:49:15.339 [DEBUG] [Thread-198319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:49:15.339 [DEBUG] [Thread-198319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:49:15.340 [DEBUG] [Thread-198319] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:49:15.380 [DEBUG] [Thread-198319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:49:15.380 [DEBUG] [Thread-198319] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:49:15.383 [DEBUG] [Thread-198319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:49:15.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:49:15.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:49:15.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:49:15.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:49:15.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:49:15.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:49:15.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:49:15.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:49:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:49:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.867060 -999.00  +14.20  31.31     39   +0.50 1 1 2 1 1     0    0 12.73 -38.32 ZNESW 27.1 31.3 172.2 36.2 14.5 -24.7 14.3 -24.2 14.1 -23.2 14.4 -24.1
2025-11-24T22:49:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:49:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:49:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.867060
2025-11-24T22:49:15.411 [DEBUG] [Thread-198319] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:49:15.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:49:15.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:49:15.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:49:15.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:49:15.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:49:15.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:48:39', tmtdew=15.59, humidity=34.0, cloud=0.0, wind=34.16, temperature=14.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:49:12', seeing=0.64, atlas_timestamp='2025-11-24T20:48:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:45:00')
2025-11-24T22:49:15.497 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:49:15.508 [DEBUG] [Thread-198322] [transport.py] [_log()] starting thread (client mode): 0xd3150070
2025-11-24T22:49:15.508 [DEBUG] [Thread-198322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:49:15.526 [DEBUG] [Thread-198322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:49:15.526 [INFO] [Thread-198322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] client lang: <none>
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] server lang: <none>
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] kex follows: False
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] Compression: none
2025-11-24T22:49:15.534 [DEBUG] [Thread-198322] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:49:15.595 [DEBUG] [Thread-198322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:49:15.596 [DEBUG] [Thread-198322] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:49:15.596 [DEBUG] [Thread-198322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:49:15.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:49:15.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:49:15.655 [DEBUG] [Thread-198322] [transport.py] [_log()] userauth is OK
2025-11-24T22:49:15.656 [DEBUG] [Thread-198322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:49:15.656 [DEBUG] [Thread-198322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:49:15.656 [DEBUG] [Thread-198322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:49:15.656 [DEBUG] [Thread-198322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:49:15.676 [INFO] [Thread-198322] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:49:15.676 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:49:15.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:49:16.519 [DEBUG] [Thread-198322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:49:16.519 [DEBUG] [Thread-198322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:49:16.568 [DEBUG] [Thread-198322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:49:16.568 [DEBUG] [Thread-198322] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:49:16.578 [DEBUG] [Thread-198322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:49:16.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:49:16.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-11-24T22:49:16.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-11-24T22:49:16.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:49:16.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:49:16.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:49:16.614 [DEBUG] [Thread-198322] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:49:17.703 [DEBUG] [Thread-198324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:49:32.849 [DEBUG] [Thread-198325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:49:45.998 [DEBUG] [Thread-198326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:49:46.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:49:46.638 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:49:46.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-11-24T22:49:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 49, 12), 15.55, 34.07, 0.0, 31.71, 14.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:49:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:49:12
2025-11-24T22:49:47.891 [DEBUG] [Thread-198327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:49:47.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:49:48.097 [DEBUG] [Thread-198328] [transport.py] [_log()] starting thread (client mode): 0xd3135f30
2025-11-24T22:49:48.097 [DEBUG] [Thread-198328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:49:48.109 [DEBUG] [Thread-198328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:49:48.109 [INFO] [Thread-198328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] client lang: <none>
2025-11-24T22:49:48.113 [DEBUG] [Thread-198328] [transport.py] [_log()] server lang: <none>
2025-11-24T22:49:48.114 [DEBUG] [Thread-198328] [transport.py] [_log()] kex follows: False
2025-11-24T22:49:48.114 [DEBUG] [Thread-198328] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:49:48.114 [DEBUG] [Thread-198328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:49:48.114 [DEBUG] [Thread-198328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:49:48.114 [DEBUG] [Thread-198328] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:49:48.114 [DEBUG] [Thread-198328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:49:48.114 [DEBUG] [Thread-198328] [transport.py] [_log()] Compression: none
2025-11-24T22:49:48.114 [DEBUG] [Thread-198328] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:49:48.145 [DEBUG] [Thread-198328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:49:48.148 [DEBUG] [Thread-198328] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:49:48.148 [DEBUG] [Thread-198328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:49:48.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:49:48.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:49:48.152 [DEBUG] [Thread-198328] [transport.py] [_log()] userauth is OK
2025-11-24T22:49:48.152 [DEBUG] [Thread-198328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:49:48.152 [DEBUG] [Thread-198328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:49:48.152 [DEBUG] [Thread-198328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:49:48.152 [DEBUG] [Thread-198328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:49:48.170 [INFO] [Thread-198328] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:49:48.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:49:48.205 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:49:48.206 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:49:48.789 [DEBUG] [Thread-198328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:49:48.789 [DEBUG] [Thread-198328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:49:48.791 [DEBUG] [Thread-198328] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:49:48.830 [DEBUG] [Thread-198328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:49:48.831 [DEBUG] [Thread-198328] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:49:48.835 [DEBUG] [Thread-198328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:49:48.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:49:48.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:49:48.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:49:48.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:49:48.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:49:48.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:49:48.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:49:48.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:49:48.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:49:48.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.867408 -999.00  +14.20  22.80     39   +0.50 1 1 1 1 1     0    0 13.09 -38.59 ZNESW 21.3 22.8 166.0 26.4 14.5 -24.8 14.4 -24.3 14.2 -23.1 14.4 -24.1
2025-11-24T22:49:48.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:49:48.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:49:48.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.867408
2025-11-24T22:49:48.872 [DEBUG] [Thread-198328] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:49:48.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:49:48.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:49:48.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:49:48.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:49:48.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:49:48.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:49:12', tmtdew=15.55, humidity=34.07, cloud=0.0, wind=31.71, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:49:45', seeing=0.54, atlas_timestamp='2025-11-24T20:49:04.051', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:45:00')
2025-11-24T22:49:48.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:49:48.986 [DEBUG] [Thread-198331] [transport.py] [_log()] starting thread (client mode): 0xd07f89a0
2025-11-24T22:49:48.986 [DEBUG] [Thread-198331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:49:49.000 [DEBUG] [Thread-198331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:49:49.000 [INFO] [Thread-198331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:49:49.007 [DEBUG] [Thread-198331] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:49:49.008 [DEBUG] [Thread-198331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:49:49.008 [DEBUG] [Thread-198331] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:49:49.008 [DEBUG] [Thread-198331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:49:49.008 [DEBUG] [Thread-198331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:49:49.008 [DEBUG] [Thread-198331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:49:49.008 [DEBUG] [Thread-198331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:49:49.008 [DEBUG] [Thread-198331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:49:49.008 [DEBUG] [Thread-198331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:49:49.009 [DEBUG] [Thread-198331] [transport.py] [_log()] client lang: <none>
2025-11-24T22:49:49.009 [DEBUG] [Thread-198331] [transport.py] [_log()] server lang: <none>
2025-11-24T22:49:49.009 [DEBUG] [Thread-198331] [transport.py] [_log()] kex follows: False
2025-11-24T22:49:49.009 [DEBUG] [Thread-198331] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:49:49.009 [DEBUG] [Thread-198331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:49:49.009 [DEBUG] [Thread-198331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:49:49.009 [DEBUG] [Thread-198331] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:49:49.009 [DEBUG] [Thread-198331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:49:49.010 [DEBUG] [Thread-198331] [transport.py] [_log()] Compression: none
2025-11-24T22:49:49.010 [DEBUG] [Thread-198331] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:49:49.069 [DEBUG] [Thread-198331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:49:49.070 [DEBUG] [Thread-198331] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:49:49.071 [DEBUG] [Thread-198331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:49:49.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:49:49.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:49:49.129 [DEBUG] [Thread-198331] [transport.py] [_log()] userauth is OK
2025-11-24T22:49:49.129 [DEBUG] [Thread-198331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:49:49.130 [DEBUG] [Thread-198331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:49:49.130 [DEBUG] [Thread-198331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:49:49.130 [DEBUG] [Thread-198331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:49:49.150 [INFO] [Thread-198331] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:49:49.150 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:49:49.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:49:49.961 [DEBUG] [Thread-198331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:49:49.961 [DEBUG] [Thread-198331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:49:50.009 [DEBUG] [Thread-198331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:49:50.009 [DEBUG] [Thread-198331] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:49:50.017 [DEBUG] [Thread-198331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:49:50.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:49:50.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-11-24T22:49:50.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:49:50.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:49:50.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:49:50.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:49:50.050 [DEBUG] [Thread-198331] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:49:55.828 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:50:02.950 [DEBUG] [Thread-198333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:50:18.051 [DEBUG] [Thread-198334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:50:20.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:50:20.076 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:50:20.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:50:21.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 49, 45), 15.65, 33.97, 0.0, 28.62, 14.27, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:50:21.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:49:45
2025-11-24T22:50:21.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:50:21.538 [DEBUG] [Thread-198335] [transport.py] [_log()] starting thread (client mode): 0xd3151cf0
2025-11-24T22:50:21.538 [DEBUG] [Thread-198335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:50:21.544 [DEBUG] [Thread-198335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:50:21.544 [INFO] [Thread-198335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] client lang: <none>
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] server lang: <none>
2025-11-24T22:50:21.549 [DEBUG] [Thread-198335] [transport.py] [_log()] kex follows: False
2025-11-24T22:50:21.550 [DEBUG] [Thread-198335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:50:21.550 [DEBUG] [Thread-198335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:50:21.550 [DEBUG] [Thread-198335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:50:21.551 [DEBUG] [Thread-198335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:50:21.551 [DEBUG] [Thread-198335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:50:21.551 [DEBUG] [Thread-198335] [transport.py] [_log()] Compression: none
2025-11-24T22:50:21.551 [DEBUG] [Thread-198335] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:50:21.587 [DEBUG] [Thread-198335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:50:21.589 [DEBUG] [Thread-198335] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:50:21.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:50:21.590 [DEBUG] [Thread-198335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:50:21.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:50:21.592 [DEBUG] [Thread-198335] [transport.py] [_log()] userauth is OK
2025-11-24T22:50:21.592 [DEBUG] [Thread-198335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:50:21.592 [DEBUG] [Thread-198335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:50:21.592 [DEBUG] [Thread-198335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:50:21.592 [DEBUG] [Thread-198335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:50:21.608 [INFO] [Thread-198335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:50:21.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:50:22.264 [DEBUG] [Thread-198335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:50:22.264 [DEBUG] [Thread-198335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:50:22.264 [DEBUG] [Thread-198335] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:50:22.305 [DEBUG] [Thread-198335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:50:22.305 [DEBUG] [Thread-198335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:50:22.308 [DEBUG] [Thread-198335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:50:22.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:50:22.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:50:22.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:50:22.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:50:22.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:50:22.329 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:50:22.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:50:22.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:50:22.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:50:22.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.867755 -999.00  +14.10  25.50     39   +0.50 1 1 1 1 1     0    0 12.77 -37.18 ZNESW 21.9 25.5 163.8 33.2 14.5 -24.8 14.3 -24.3 14.1 -23.1 14.4 -24.2
2025-11-24T22:50:22.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:50:22.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:50:22.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.867755
2025-11-24T22:50:22.336 [DEBUG] [Thread-198335] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:50:22.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:50:22.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:50:22.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:50:22.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:50:22.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:50:22.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:49:45', tmtdew=15.65, humidity=33.97, cloud=0.0, wind=28.62, temperature=14.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:50:18', seeing=0.75, atlas_timestamp='2025-11-24T20:49:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:48:00')
2025-11-24T22:50:22.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:50:22.433 [DEBUG] [Thread-198338] [transport.py] [_log()] starting thread (client mode): 0xc9b81c00
2025-11-24T22:50:22.433 [DEBUG] [Thread-198338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:50:22.448 [DEBUG] [Thread-198338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:50:22.448 [INFO] [Thread-198338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:50:22.455 [DEBUG] [Thread-198338] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:50:22.455 [DEBUG] [Thread-198338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:50:22.455 [DEBUG] [Thread-198338] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] client lang: <none>
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] server lang: <none>
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] kex follows: False
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] Compression: none
2025-11-24T22:50:22.456 [DEBUG] [Thread-198338] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:50:22.511 [DEBUG] [Thread-198338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:50:22.511 [DEBUG] [Thread-198338] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:50:22.511 [DEBUG] [Thread-198338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:50:22.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:50:22.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:50:22.568 [DEBUG] [Thread-198338] [transport.py] [_log()] userauth is OK
2025-11-24T22:50:22.568 [DEBUG] [Thread-198338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:50:22.568 [DEBUG] [Thread-198338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:50:22.568 [DEBUG] [Thread-198338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:50:22.568 [DEBUG] [Thread-198338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:50:22.583 [INFO] [Thread-198338] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:50:22.584 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:50:22.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:50:23.398 [DEBUG] [Thread-198338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:50:23.398 [DEBUG] [Thread-198338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:50:23.445 [DEBUG] [Thread-198338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:50:23.445 [DEBUG] [Thread-198338] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:50:23.454 [DEBUG] [Thread-198338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:50:23.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:50:23.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-11-24T22:50:23.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-11-24T22:50:23.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:50:23.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:50:23.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:50:23.492 [DEBUG] [Thread-198338] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:50:33.085 [DEBUG] [Thread-198340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:50:46.334 [DEBUG] [Thread-198341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:50:48.193 [DEBUG] [Thread-198342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:50:48.419 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:50:48.421 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:50:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:50:53.489 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:50:53.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-11-24T22:50:54.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 50, 18), 15.66, 33.92, 0.0, 29.91, 14.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:50:54.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:50:18
2025-11-24T22:50:54.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:50:54.805 [DEBUG] [Thread-198343] [transport.py] [_log()] starting thread (client mode): 0xd073bdc0
2025-11-24T22:50:54.806 [DEBUG] [Thread-198343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:50:54.815 [DEBUG] [Thread-198343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:50:54.816 [INFO] [Thread-198343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:50:54.821 [DEBUG] [Thread-198343] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:50:54.821 [DEBUG] [Thread-198343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:50:54.821 [DEBUG] [Thread-198343] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:50:54.821 [DEBUG] [Thread-198343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:50:54.821 [DEBUG] [Thread-198343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:50:54.821 [DEBUG] [Thread-198343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:50:54.822 [DEBUG] [Thread-198343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:50:54.822 [DEBUG] [Thread-198343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:50:54.822 [DEBUG] [Thread-198343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:50:54.822 [DEBUG] [Thread-198343] [transport.py] [_log()] client lang: <none>
2025-11-24T22:50:54.822 [DEBUG] [Thread-198343] [transport.py] [_log()] server lang: <none>
2025-11-24T22:50:54.822 [DEBUG] [Thread-198343] [transport.py] [_log()] kex follows: False
2025-11-24T22:50:54.822 [DEBUG] [Thread-198343] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:50:54.823 [DEBUG] [Thread-198343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:50:54.823 [DEBUG] [Thread-198343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:50:54.823 [DEBUG] [Thread-198343] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:50:54.823 [DEBUG] [Thread-198343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:50:54.823 [DEBUG] [Thread-198343] [transport.py] [_log()] Compression: none
2025-11-24T22:50:54.823 [DEBUG] [Thread-198343] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:50:54.857 [DEBUG] [Thread-198343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:50:54.862 [DEBUG] [Thread-198343] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:50:54.864 [DEBUG] [Thread-198343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:50:54.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:50:54.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:50:54.869 [DEBUG] [Thread-198343] [transport.py] [_log()] userauth is OK
2025-11-24T22:50:54.870 [DEBUG] [Thread-198343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:50:54.870 [DEBUG] [Thread-198343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:50:54.870 [DEBUG] [Thread-198343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:50:54.870 [DEBUG] [Thread-198343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:50:54.896 [INFO] [Thread-198343] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:50:54.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:50:55.528 [DEBUG] [Thread-198343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:50:55.529 [DEBUG] [Thread-198343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:50:55.539 [DEBUG] [Thread-198343] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:50:55.569 [DEBUG] [Thread-198343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:50:55.569 [DEBUG] [Thread-198343] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:50:55.573 [DEBUG] [Thread-198343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:50:55.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:50:55.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:50:55.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:50:55.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:50:55.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:50:55.604 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:50:55.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:50:55.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:50:55.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:50:55.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.868449 -999.00  +14.10  16.75     39   +0.50 1 1 1 1 1     0    0 12.96 -37.42 ZNESW 20.6 16.8 173.4 36.2 14.5 -24.8 14.3 -24.1 14.1 -23.1 14.4 -24.1
2025-11-24T22:50:55.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:50:55.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:50:55.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.868449
2025-11-24T22:50:55.612 [DEBUG] [Thread-198343] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:50:55.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:50:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:50:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:50:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:50:55.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:50:55.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:50:18', tmtdew=15.66, humidity=33.92, cloud=0.0, wind=29.91, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:50:51', seeing=0.75, atlas_timestamp='2025-11-24T20:50:33.994', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:48:00')
2025-11-24T22:50:55.716 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:50:55.727 [DEBUG] [Thread-198346] [transport.py] [_log()] starting thread (client mode): 0xd0711a80
2025-11-24T22:50:55.727 [DEBUG] [Thread-198346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:50:55.743 [DEBUG] [Thread-198346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:50:55.743 [INFO] [Thread-198346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:50:55.750 [DEBUG] [Thread-198346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:50:55.750 [DEBUG] [Thread-198346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] client lang: <none>
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] server lang: <none>
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] kex follows: False
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] Compression: none
2025-11-24T22:50:55.751 [DEBUG] [Thread-198346] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:50:55.810 [DEBUG] [Thread-198346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:50:55.811 [DEBUG] [Thread-198346] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:50:55.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:50:55.812 [DEBUG] [Thread-198346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:50:55.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:50:55.869 [DEBUG] [Thread-198346] [transport.py] [_log()] userauth is OK
2025-11-24T22:50:55.869 [DEBUG] [Thread-198346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:50:55.869 [DEBUG] [Thread-198346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:50:55.869 [DEBUG] [Thread-198346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:50:55.869 [DEBUG] [Thread-198346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:50:55.883 [INFO] [Thread-198346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:50:55.884 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:50:55.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:50:56.770 [DEBUG] [Thread-198346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:50:56.770 [DEBUG] [Thread-198346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:50:56.819 [DEBUG] [Thread-198346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:50:56.819 [DEBUG] [Thread-198346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:50:56.828 [DEBUG] [Thread-198346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:50:56.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:50:56.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-11-24T22:50:56.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-11-24T22:50:56.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:50:56.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:50:56.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:50:56.868 [DEBUG] [Thread-198346] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:51:03.268 [DEBUG] [Thread-198348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:51:18.364 [DEBUG] [Thread-198349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:51:26.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:51:26.892 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:51:26.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-11-24T22:51:27.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 51, 24), 15.49, 34.24, 0.0, 29.46, 14.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:51:27.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:51:24
2025-11-24T22:51:27.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:51:28.045 [DEBUG] [Thread-198350] [transport.py] [_log()] starting thread (client mode): 0xd07117b0
2025-11-24T22:51:28.046 [DEBUG] [Thread-198350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:51:28.058 [DEBUG] [Thread-198350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:51:28.059 [INFO] [Thread-198350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:51:28.064 [DEBUG] [Thread-198350] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:51:28.065 [DEBUG] [Thread-198350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:51:28.065 [DEBUG] [Thread-198350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:51:28.065 [DEBUG] [Thread-198350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:51:28.065 [DEBUG] [Thread-198350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:51:28.065 [DEBUG] [Thread-198350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:51:28.065 [DEBUG] [Thread-198350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:51:28.065 [DEBUG] [Thread-198350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:51:28.065 [DEBUG] [Thread-198350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:51:28.066 [DEBUG] [Thread-198350] [transport.py] [_log()] client lang: <none>
2025-11-24T22:51:28.066 [DEBUG] [Thread-198350] [transport.py] [_log()] server lang: <none>
2025-11-24T22:51:28.066 [DEBUG] [Thread-198350] [transport.py] [_log()] kex follows: False
2025-11-24T22:51:28.066 [DEBUG] [Thread-198350] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:51:28.067 [DEBUG] [Thread-198350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:51:28.067 [DEBUG] [Thread-198350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:51:28.067 [DEBUG] [Thread-198350] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:51:28.067 [DEBUG] [Thread-198350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:51:28.068 [DEBUG] [Thread-198350] [transport.py] [_log()] Compression: none
2025-11-24T22:51:28.068 [DEBUG] [Thread-198350] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:51:28.109 [DEBUG] [Thread-198350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:51:28.114 [DEBUG] [Thread-198350] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:51:28.116 [DEBUG] [Thread-198350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:51:28.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:51:28.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:51:28.122 [DEBUG] [Thread-198350] [transport.py] [_log()] userauth is OK
2025-11-24T22:51:28.122 [DEBUG] [Thread-198350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:51:28.123 [DEBUG] [Thread-198350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:51:28.123 [DEBUG] [Thread-198350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:51:28.123 [DEBUG] [Thread-198350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:51:28.151 [INFO] [Thread-198350] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:51:28.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:51:28.764 [DEBUG] [Thread-198350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:51:28.764 [DEBUG] [Thread-198350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:51:28.765 [DEBUG] [Thread-198350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:51:28.806 [DEBUG] [Thread-198350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:51:28.806 [DEBUG] [Thread-198350] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:51:28.810 [DEBUG] [Thread-198350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:51:28.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:51:28.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:51:28.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:51:28.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:51:28.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:51:28.836 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:51:28.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:51:28.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:51:28.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:51:28.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.868854 -999.00  +14.10  23.36     39   +0.60 1 1 1 1 1     0    0 12.58 -42.69 ZNESW 24.7 23.4 175.4 27.9 14.5 -24.7 14.3 -24.1 14.1 -23.1 14.4 -24.1
2025-11-24T22:51:28.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:51:28.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:51:28.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.868854
2025-11-24T22:51:28.844 [DEBUG] [Thread-198350] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:51:28.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:51:28.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:51:28.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:51:28.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:51:28.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:51:28.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:51:24', tmtdew=15.49, humidity=34.24, cloud=0.0, wind=29.46, temperature=14.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:51:24', seeing=0.69, atlas_timestamp='2025-11-24T20:51:08.986', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:48:00')
2025-11-24T22:51:28.941 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:51:28.953 [DEBUG] [Thread-198353] [transport.py] [_log()] starting thread (client mode): 0xd3150070
2025-11-24T22:51:28.953 [DEBUG] [Thread-198353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:51:28.969 [DEBUG] [Thread-198353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:51:28.970 [INFO] [Thread-198353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:51:28.977 [DEBUG] [Thread-198353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] client lang: <none>
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] server lang: <none>
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] kex follows: False
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:51:28.978 [DEBUG] [Thread-198353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:51:28.979 [DEBUG] [Thread-198353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:51:28.979 [DEBUG] [Thread-198353] [transport.py] [_log()] Compression: none
2025-11-24T22:51:28.979 [DEBUG] [Thread-198353] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:51:29.041 [DEBUG] [Thread-198353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:51:29.042 [DEBUG] [Thread-198353] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:51:29.043 [DEBUG] [Thread-198353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:51:29.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:51:29.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:51:29.101 [DEBUG] [Thread-198353] [transport.py] [_log()] userauth is OK
2025-11-24T22:51:29.101 [DEBUG] [Thread-198353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:51:29.101 [DEBUG] [Thread-198353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:51:29.102 [DEBUG] [Thread-198353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:51:29.102 [DEBUG] [Thread-198353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:51:29.121 [INFO] [Thread-198353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:51:29.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:51:29.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:51:30.019 [DEBUG] [Thread-198353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:51:30.019 [DEBUG] [Thread-198353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:51:30.067 [DEBUG] [Thread-198353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:51:30.067 [DEBUG] [Thread-198353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:51:30.076 [DEBUG] [Thread-198353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:51:30.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:51:30.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-11-24T22:51:30.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-11-24T22:51:30.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:51:30.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:51:30.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:51:30.113 [DEBUG] [Thread-198353] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:51:33.410 [DEBUG] [Thread-198355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:51:46.590 [DEBUG] [Thread-198356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:51:48.523 [DEBUG] [Thread-198357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:51:48.622 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:51:48.623 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:52:00.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:52:00.143 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:52:00.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-11-24T22:52:01.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 51, 56), 15.34, 34.72, 0.0, 31.35, 14.19, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:52:01.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:51:56
2025-11-24T22:52:01.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:52:01.414 [DEBUG] [Thread-198358] [transport.py] [_log()] starting thread (client mode): 0xd07f94b0
2025-11-24T22:52:01.414 [DEBUG] [Thread-198358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:52:01.421 [DEBUG] [Thread-198358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:52:01.422 [INFO] [Thread-198358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] client lang: <none>
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] server lang: <none>
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] kex follows: False
2025-11-24T22:52:01.427 [DEBUG] [Thread-198358] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:52:01.428 [DEBUG] [Thread-198358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:52:01.428 [DEBUG] [Thread-198358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:52:01.428 [DEBUG] [Thread-198358] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:52:01.428 [DEBUG] [Thread-198358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:52:01.428 [DEBUG] [Thread-198358] [transport.py] [_log()] Compression: none
2025-11-24T22:52:01.428 [DEBUG] [Thread-198358] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:52:01.459 [DEBUG] [Thread-198358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:52:01.462 [DEBUG] [Thread-198358] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:52:01.463 [DEBUG] [Thread-198358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:52:01.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:52:01.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:52:01.467 [DEBUG] [Thread-198358] [transport.py] [_log()] userauth is OK
2025-11-24T22:52:01.467 [DEBUG] [Thread-198358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:52:01.467 [DEBUG] [Thread-198358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:52:01.467 [DEBUG] [Thread-198358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:52:01.467 [DEBUG] [Thread-198358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:52:01.485 [INFO] [Thread-198358] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:52:01.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:52:02.124 [DEBUG] [Thread-198358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:52:02.125 [DEBUG] [Thread-198358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:52:02.125 [DEBUG] [Thread-198358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:52:02.166 [DEBUG] [Thread-198358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:52:02.166 [DEBUG] [Thread-198358] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:52:02.168 [DEBUG] [Thread-198358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:52:02.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:52:02.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:52:02.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:52:02.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:52:02.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:52:02.188 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:52:02.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:52:02.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:52:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:52:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.869144 -999.00  +14.10  28.61     40   +0.70 1 1 1 1 1     0    0 12.66 -41.61 ZNESW 24.9 28.6 172.4 36.5 14.5 -24.6 14.3 -24.0 14.1 -23.0 14.4 -23.9
2025-11-24T22:52:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:52:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:52:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.869144
2025-11-24T22:52:02.195 [DEBUG] [Thread-198358] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:52:02.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:52:02.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:52:02.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:52:02.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:52:02.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:52:02.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:51:56', tmtdew=15.34, humidity=34.72, cloud=0.0, wind=31.35, temperature=14.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:51:57', seeing=0.74, atlas_timestamp='2025-11-24T20:51:34.042', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:48:00')
2025-11-24T22:52:02.284 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:52:02.296 [DEBUG] [Thread-198361] [transport.py] [_log()] starting thread (client mode): 0xd07ce2f0
2025-11-24T22:52:02.296 [DEBUG] [Thread-198361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:52:02.313 [DEBUG] [Thread-198361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:52:02.313 [INFO] [Thread-198361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] client lang: <none>
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] server lang: <none>
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] kex follows: False
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] Compression: none
2025-11-24T22:52:02.321 [DEBUG] [Thread-198361] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:52:02.379 [DEBUG] [Thread-198361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:52:02.379 [DEBUG] [Thread-198361] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:52:02.380 [DEBUG] [Thread-198361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:52:02.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:52:02.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:52:02.436 [DEBUG] [Thread-198361] [transport.py] [_log()] userauth is OK
2025-11-24T22:52:02.436 [DEBUG] [Thread-198361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:52:02.436 [DEBUG] [Thread-198361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:52:02.436 [DEBUG] [Thread-198361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:52:02.436 [DEBUG] [Thread-198361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:52:02.455 [INFO] [Thread-198361] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:52:02.455 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:52:02.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:52:03.380 [DEBUG] [Thread-198361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:52:03.380 [DEBUG] [Thread-198361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:52:03.431 [DEBUG] [Thread-198361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:52:03.431 [DEBUG] [Thread-198361] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:52:03.439 [DEBUG] [Thread-198361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:52:03.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:52:03.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:52:03.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:52:03.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:52:03.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:52:03.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:52:03.473 [DEBUG] [Thread-198361] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:52:03.555 [DEBUG] [Thread-198363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:52:18.639 [DEBUG] [Thread-198364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:52:33.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:52:33.478 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:52: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-11-24T22:52:33.685 [DEBUG] [Thread-198365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:52:34.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 52, 29), 15.31, 34.82, 0.0, 31.21, 14.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:52:34.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:52:29
2025-11-24T22:52:34.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:52:34.666 [DEBUG] [Thread-198366] [transport.py] [_log()] starting thread (client mode): 0xd0712230
2025-11-24T22:52:34.667 [DEBUG] [Thread-198366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:52:34.680 [DEBUG] [Thread-198366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:52:34.681 [INFO] [Thread-198366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:52:34.685 [DEBUG] [Thread-198366] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:52:34.685 [DEBUG] [Thread-198366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] client lang: <none>
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] server lang: <none>
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] kex follows: False
2025-11-24T22:52:34.686 [DEBUG] [Thread-198366] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:52:34.687 [DEBUG] [Thread-198366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:52:34.687 [DEBUG] [Thread-198366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:52:34.687 [DEBUG] [Thread-198366] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:52:34.687 [DEBUG] [Thread-198366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:52:34.688 [DEBUG] [Thread-198366] [transport.py] [_log()] Compression: none
2025-11-24T22:52:34.688 [DEBUG] [Thread-198366] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:52:34.715 [DEBUG] [Thread-198366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:52:34.719 [DEBUG] [Thread-198366] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:52:34.720 [DEBUG] [Thread-198366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:52:34.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:52:34.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:52:34.725 [DEBUG] [Thread-198366] [transport.py] [_log()] userauth is OK
2025-11-24T22:52:34.725 [DEBUG] [Thread-198366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:52:34.725 [DEBUG] [Thread-198366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:52:34.725 [DEBUG] [Thread-198366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:52:34.725 [DEBUG] [Thread-198366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:52:34.749 [INFO] [Thread-198366] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:52:34.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:52:35.344 [DEBUG] [Thread-198366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:52:35.344 [DEBUG] [Thread-198366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:52:35.345 [DEBUG] [Thread-198366] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:52:35.384 [DEBUG] [Thread-198366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:52:35.385 [DEBUG] [Thread-198366] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:52:35.388 [DEBUG] [Thread-198366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:52:35.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:52:35.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:52:35.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:52:35.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:52:35.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:52:35.414 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:52:35.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:52:35.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:52:35.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:52:35.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.869491 -999.00  +14.10  24.04     39   +0.60 1 1 1 1 1     0    0 12.74 -43.41 ZNESW 22.5 24.0 165.2 31.2 14.4 -24.7 14.3 -24.1 14.1 -23.1 14.4 -24.1
2025-11-24T22:52:35.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:52:35.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:52:35.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.869491
2025-11-24T22:52:35.421 [DEBUG] [Thread-198366] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:52:35.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:52:35.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:52:35.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:52:35.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:52:35.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:52:35.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:52:29', tmtdew=15.31, humidity=34.82, cloud=0.0, wind=31.21, temperature=14.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:52:29', seeing=0.64, atlas_timestamp='2025-11-24T20:52:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0022500000000000853, -0.03575000000000017, 0.0182500000000001, -0.023500000000002075, 0.026500000000000412, 0.048250000000001236, 0.007999999999999119, 0.00975000000000037, 0.0034999999999989484, -0.006000000000000227, 0.028249999999999886, -0.02800000000000047, 0.06449999999999889, 0.09124999999999872, 0.036999999999999034, -0.021000000000000796, 0.0072499999999990905, 0.05649999999999977, 0.022499999999999076, -0.038750000000000284, 0.01699999999999946, 0.035749999999998394, 0.015750000000000597, 0.007749999999999702, -0.002000000000000668, 0.02800000000000047, 0.036249999999999005, 0.04899999999999949, 0.16600000000000037, 0.11200000000000188, 0.08800000000000097, -0.010999999999999233, -0.04275000000000162], zp_timestamp='2025-11-24T20:48:00')
2025-11-24T22:52:35.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:52:35.522 [DEBUG] [Thread-198369] [transport.py] [_log()] starting thread (client mode): 0xd3153a90
2025-11-24T22:52:35.522 [DEBUG] [Thread-198369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:52:35.539 [DEBUG] [Thread-198369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:52:35.539 [INFO] [Thread-198369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] client lang: <none>
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] server lang: <none>
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] kex follows: False
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] Compression: none
2025-11-24T22:52:35.547 [DEBUG] [Thread-198369] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:52:35.605 [DEBUG] [Thread-198369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:52:35.606 [DEBUG] [Thread-198369] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:52:35.606 [DEBUG] [Thread-198369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:52:35.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:52:35.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:52:35.667 [DEBUG] [Thread-198369] [transport.py] [_log()] userauth is OK
2025-11-24T22:52:35.667 [DEBUG] [Thread-198369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:52:35.667 [DEBUG] [Thread-198369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:52:35.667 [DEBUG] [Thread-198369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:52:35.667 [DEBUG] [Thread-198369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:52:35.682 [INFO] [Thread-198369] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:52:35.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:52:35.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:52:36.526 [DEBUG] [Thread-198369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:52:36.526 [DEBUG] [Thread-198369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:52:36.574 [DEBUG] [Thread-198369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:52:36.574 [DEBUG] [Thread-198369] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:52:36.582 [DEBUG] [Thread-198369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:52:36.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:52:36.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-11-24T22:52:36.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:52:36.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:52:36.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:52:36.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:52:36.615 [DEBUG] [Thread-198369] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:52:46.875 [DEBUG] [Thread-198371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:52:48.742 [DEBUG] [Thread-198372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:52:48.827 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:52:48.828 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:53:03.872 [DEBUG] [Thread-198373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:53:06.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:53:06.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:53:06.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-11-24T22:53:07.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 53, 2), 15.33, 34.74, 0.0, 29.04, 14.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:53:07.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:53:02
2025-11-24T22:53:07.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:53:07.864 [DEBUG] [Thread-198374] [transport.py] [_log()] starting thread (client mode): 0xd3153a30
2025-11-24T22:53:07.865 [DEBUG] [Thread-198374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:53:07.870 [DEBUG] [Thread-198374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:53:07.870 [INFO] [Thread-198374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] client lang: <none>
2025-11-24T22:53:07.874 [DEBUG] [Thread-198374] [transport.py] [_log()] server lang: <none>
2025-11-24T22:53:07.875 [DEBUG] [Thread-198374] [transport.py] [_log()] kex follows: False
2025-11-24T22:53:07.875 [DEBUG] [Thread-198374] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:53:07.875 [DEBUG] [Thread-198374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:53:07.875 [DEBUG] [Thread-198374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:53:07.875 [DEBUG] [Thread-198374] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:53:07.876 [DEBUG] [Thread-198374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:53:07.876 [DEBUG] [Thread-198374] [transport.py] [_log()] Compression: none
2025-11-24T22:53:07.876 [DEBUG] [Thread-198374] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:53:07.914 [DEBUG] [Thread-198374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:53:07.919 [DEBUG] [Thread-198374] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:53:07.922 [DEBUG] [Thread-198374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:53:07.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:53:07.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:53:07.926 [DEBUG] [Thread-198374] [transport.py] [_log()] userauth is OK
2025-11-24T22:53:07.926 [DEBUG] [Thread-198374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:53:07.926 [DEBUG] [Thread-198374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:53:07.926 [DEBUG] [Thread-198374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:53:07.927 [DEBUG] [Thread-198374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:53:07.955 [INFO] [Thread-198374] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:53:07.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:53:08.594 [DEBUG] [Thread-198374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:53:08.594 [DEBUG] [Thread-198374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:53:08.595 [DEBUG] [Thread-198374] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:53:08.635 [DEBUG] [Thread-198374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:53:08.635 [DEBUG] [Thread-198374] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:53:08.638 [DEBUG] [Thread-198374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:53:08.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:53:08.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:53:08.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:53:08.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:53:08.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:53:08.662 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:53:08.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:53:08.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:53:08.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:53:08.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.869838 -999.00  +14.10  22.14     40   +0.80 1 1 1 1 1     0    0 12.45 -47.14 ZNESW 24.7 22.1 164.4 34.4 14.5 -24.6 14.3 -23.9 14.1 -22.9 14.4 -24.0
2025-11-24T22:53:08.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:53:08.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:53:08.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.869838
2025-11-24T22:53:08.670 [DEBUG] [Thread-198374] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:53:08.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:53:08.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:53:08.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:53:08.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:53:08.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:53:08.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:53:02', tmtdew=15.33, humidity=34.74, cloud=0.0, wind=29.04, temperature=14.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:53:02', seeing=0.66, atlas_timestamp='2025-11-24T20:52:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020250000000000767, 0.04025000000000034, -0.025500000000000966, 0.06050000000000111, 0.06625000000000014, 0.02549999999999919, 0.020250000000000767, 0.03599999999999959, 0.009999999999999787, 0.0072499999999990905, -0.04100000000000037, 0.05349999999999966, 0.08924999999999983, 0.006999999999999673, -0.0030000000000001137, 0.01624999999999943, 0.02149999999999963, 0.04899999999999949, -0.017250000000000654, 0.036999999999999034, 0.02674999999999983, 0.028249999999999886, 0.04624999999999879, -0.009000000000000341, 0.009999999999999787, 0.062249999999998806, 0.03449999999999953, 0.15350000000000108, 0.10900000000000176, -0.0039999999999995595, -0.0030000000000001137, -0.03825000000000145], zp_timestamp='2025-11-24T20:51:00')
2025-11-24T22:53: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-11-24T22:53:08.784 [DEBUG] [Thread-198377] [transport.py] [_log()] starting thread (client mode): 0xd3151480
2025-11-24T22:53:08.784 [DEBUG] [Thread-198377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:53:08.797 [DEBUG] [Thread-198377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:53:08.798 [INFO] [Thread-198377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:53:08.805 [DEBUG] [Thread-198377] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:53:08.805 [DEBUG] [Thread-198377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:53:08.805 [DEBUG] [Thread-198377] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:53:08.805 [DEBUG] [Thread-198377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:53:08.805 [DEBUG] [Thread-198377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:53:08.806 [DEBUG] [Thread-198377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:53:08.806 [DEBUG] [Thread-198377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:53:08.806 [DEBUG] [Thread-198377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:53:08.806 [DEBUG] [Thread-198377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:53:08.806 [DEBUG] [Thread-198377] [transport.py] [_log()] client lang: <none>
2025-11-24T22:53:08.806 [DEBUG] [Thread-198377] [transport.py] [_log()] server lang: <none>
2025-11-24T22:53:08.806 [DEBUG] [Thread-198377] [transport.py] [_log()] kex follows: False
2025-11-24T22:53:08.806 [DEBUG] [Thread-198377] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:53:08.806 [DEBUG] [Thread-198377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:53:08.806 [DEBUG] [Thread-198377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:53:08.807 [DEBUG] [Thread-198377] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:53:08.807 [DEBUG] [Thread-198377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:53:08.807 [DEBUG] [Thread-198377] [transport.py] [_log()] Compression: none
2025-11-24T22:53:08.807 [DEBUG] [Thread-198377] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:53:08.865 [DEBUG] [Thread-198377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:53:08.866 [DEBUG] [Thread-198377] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:53:08.866 [DEBUG] [Thread-198377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:53:08.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:53:08.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:53:08.927 [DEBUG] [Thread-198377] [transport.py] [_log()] userauth is OK
2025-11-24T22:53:08.927 [DEBUG] [Thread-198377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:53:08.927 [DEBUG] [Thread-198377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:53:08.927 [DEBUG] [Thread-198377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:53:08.927 [DEBUG] [Thread-198377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:53:08.946 [INFO] [Thread-198377] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:53:08.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:53:08.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:53:09.800 [DEBUG] [Thread-198377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:53:09.800 [DEBUG] [Thread-198377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:53:09.848 [DEBUG] [Thread-198377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:53:09.849 [DEBUG] [Thread-198377] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:53:09.857 [DEBUG] [Thread-198377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:53:09.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:53:09.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-11-24T22:53:09.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-11-24T22:53:09.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:53:09.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:53:09.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:53:09.895 [DEBUG] [Thread-198377] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:53:18.949 [DEBUG] [Thread-198379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:53:34.085 [DEBUG] [Thread-198380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:53:39.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:53:39.920 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:53:39.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-11-24T22:53:40.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 53, 35), 15.39, 34.72, 0.0, 28.97, 14.25, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:53:40.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:53:35
2025-11-24T22:53:40.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:53:41.103 [DEBUG] [Thread-198381] [transport.py] [_log()] starting thread (client mode): 0xd31522c0
2025-11-24T22:53:41.103 [DEBUG] [Thread-198381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:53:41.117 [DEBUG] [Thread-198381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:53:41.117 [INFO] [Thread-198381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:53:41.122 [DEBUG] [Thread-198381] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:53:41.122 [DEBUG] [Thread-198381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] client lang: <none>
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] server lang: <none>
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] kex follows: False
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:53:41.123 [DEBUG] [Thread-198381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:53:41.124 [DEBUG] [Thread-198381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:53:41.124 [DEBUG] [Thread-198381] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:53:41.124 [DEBUG] [Thread-198381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:53:41.124 [DEBUG] [Thread-198381] [transport.py] [_log()] Compression: none
2025-11-24T22:53:41.124 [DEBUG] [Thread-198381] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:53:41.155 [DEBUG] [Thread-198381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:53:41.161 [DEBUG] [Thread-198381] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:53:41.163 [DEBUG] [Thread-198381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:53:41.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:53:41.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:53:41.169 [DEBUG] [Thread-198381] [transport.py] [_log()] userauth is OK
2025-11-24T22:53:41.169 [DEBUG] [Thread-198381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:53:41.170 [DEBUG] [Thread-198381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:53:41.170 [DEBUG] [Thread-198381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:53:41.170 [DEBUG] [Thread-198381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:53:41.209 [INFO] [Thread-198381] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:53:41.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:53:41.863 [DEBUG] [Thread-198381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:53:41.864 [DEBUG] [Thread-198381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:53:41.865 [DEBUG] [Thread-198381] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:53:41.895 [DEBUG] [Thread-198381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:53:41.896 [DEBUG] [Thread-198381] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:53:41.900 [DEBUG] [Thread-198381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:53:41.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:53:41.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:53:41.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:53:41.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:53:41.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:53:41.928 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:53:41.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:53:41.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:53:41.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:53:41.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.870185 -999.00  +14.10  18.20     40   +0.70 1 1 1 1 1     0    0 12.46 -48.38 ZNESW 23.4 18.2 156.9 23.9 14.4 -24.8 14.3 -24.2 14.1 -23.0 14.4 -24.1
2025-11-24T22:53:41.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:53:41.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:53:41.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.870185
2025-11-24T22:53:41.941 [DEBUG] [Thread-198381] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:53:41.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:53:41.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:53:41.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:53:41.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:53:41.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:53:41.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:53:35', tmtdew=15.39, humidity=34.72, cloud=0.0, wind=28.97, temperature=14.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:53:36', seeing=0.62, atlas_timestamp='2025-11-24T20:53:03.984', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020250000000000767, 0.04025000000000034, -0.025500000000000966, 0.06050000000000111, 0.06625000000000014, 0.02549999999999919, 0.020250000000000767, 0.03599999999999959, 0.009999999999999787, 0.0072499999999990905, -0.04100000000000037, 0.05349999999999966, 0.08924999999999983, 0.006999999999999673, -0.0030000000000001137, 0.01624999999999943, 0.02149999999999963, 0.04899999999999949, -0.017250000000000654, 0.036999999999999034, 0.02674999999999983, 0.028249999999999886, 0.04624999999999879, -0.009000000000000341, 0.009999999999999787, 0.062249999999998806, 0.03449999999999953, 0.15350000000000108, 0.10900000000000176, -0.0039999999999995595, -0.0030000000000001137, -0.03825000000000145], zp_timestamp='2025-11-24T20:51:00')
2025-11-24T22:53:42.036 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:53:42.048 [DEBUG] [Thread-198384] [transport.py] [_log()] starting thread (client mode): 0xd3149b40
2025-11-24T22:53:42.049 [DEBUG] [Thread-198384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:53:42.063 [DEBUG] [Thread-198384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:53:42.064 [INFO] [Thread-198384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:53:42.074 [DEBUG] [Thread-198384] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:53:42.074 [DEBUG] [Thread-198384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:53:42.074 [DEBUG] [Thread-198384] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:53:42.074 [DEBUG] [Thread-198384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:53:42.074 [DEBUG] [Thread-198384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:53:42.074 [DEBUG] [Thread-198384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] client lang: <none>
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] server lang: <none>
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] kex follows: False
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] Compression: none
2025-11-24T22:53:42.075 [DEBUG] [Thread-198384] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:53:42.141 [DEBUG] [Thread-198384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:53:42.142 [DEBUG] [Thread-198384] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:53:42.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:53:42.143 [DEBUG] [Thread-198384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:53:42.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:53:42.197 [DEBUG] [Thread-198384] [transport.py] [_log()] userauth is OK
2025-11-24T22:53:42.197 [DEBUG] [Thread-198384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:53:42.198 [DEBUG] [Thread-198384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:53:42.198 [DEBUG] [Thread-198384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:53:42.198 [DEBUG] [Thread-198384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:53:42.217 [INFO] [Thread-198384] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:53:42.217 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:53:42.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:53:43.046 [DEBUG] [Thread-198384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:53:43.046 [DEBUG] [Thread-198384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:53:43.093 [DEBUG] [Thread-198384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:53:43.093 [DEBUG] [Thread-198384] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:53:43.101 [DEBUG] [Thread-198384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:53:43.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:53:43.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-11-24T22:53:43.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-11-24T22:53:43.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:53:43.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:53:43.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:53:43.134 [DEBUG] [Thread-198384] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:53:47.166 [DEBUG] [Thread-198386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:53:49.040 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:53:49.043 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:53:49.130 [DEBUG] [Thread-198387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:54:04.263 [DEBUG] [Thread-198388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:54:13.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:54:13.138 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:54:13.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-11-24T22:54:13.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 54, 8), 15.33, 34.89, 0.0, 31.57, 14.22, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:54:13.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:54:08
2025-11-24T22:54:14.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:54:14.365 [DEBUG] [Thread-198389] [transport.py] [_log()] starting thread (client mode): 0xd07cea70
2025-11-24T22:54:14.365 [DEBUG] [Thread-198389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:54:14.377 [DEBUG] [Thread-198389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:54:14.377 [INFO] [Thread-198389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:54:14.382 [DEBUG] [Thread-198389] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] client lang: <none>
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] server lang: <none>
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] kex follows: False
2025-11-24T22:54:14.383 [DEBUG] [Thread-198389] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:54:14.384 [DEBUG] [Thread-198389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:54:14.384 [DEBUG] [Thread-198389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:54:14.384 [DEBUG] [Thread-198389] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:54:14.384 [DEBUG] [Thread-198389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:54:14.384 [DEBUG] [Thread-198389] [transport.py] [_log()] Compression: none
2025-11-24T22:54:14.384 [DEBUG] [Thread-198389] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:54:14.412 [DEBUG] [Thread-198389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:54:14.417 [DEBUG] [Thread-198389] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:54:14.419 [DEBUG] [Thread-198389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:54:14.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:54:14.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:54:14.424 [DEBUG] [Thread-198389] [transport.py] [_log()] userauth is OK
2025-11-24T22:54:14.425 [DEBUG] [Thread-198389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:54:14.425 [DEBUG] [Thread-198389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:54:14.425 [DEBUG] [Thread-198389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:54:14.425 [DEBUG] [Thread-198389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:54:14.463 [INFO] [Thread-198389] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:54:14.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:54:15.086 [DEBUG] [Thread-198389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:54:15.086 [DEBUG] [Thread-198389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:54:15.088 [DEBUG] [Thread-198389] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:54:15.128 [DEBUG] [Thread-198389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:54:15.128 [DEBUG] [Thread-198389] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:54:15.132 [DEBUG] [Thread-198389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:54:15.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:54:15.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:54:15.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:54:15.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:54:15.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:54:15.156 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:54:15.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:54:15.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:54:15.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:54:15.159 [DEBUG] [Thread-198389] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:54:15.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.870880 -999.00  +14.10  19.34     39   +0.70 1 1 1 1 1     0    0 12.40 -45.30 ZNESW 17.1 19.3 164.0 31.2 14.4 -24.9 14.3 -24.2 14.1 -23.1 14.4 -24.1
2025-11-24T22:54:15.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:54:15.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:54:15.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.870880
2025-11-24T22:54:15.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:54:15.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:54:15.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:54:15.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:54:15.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:54:15.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:54:08', tmtdew=15.33, humidity=34.89, cloud=0.0, wind=31.57, temperature=14.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:54:09', seeing=0.72, atlas_timestamp='2025-11-24T20:54:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020250000000000767, 0.04025000000000034, -0.025500000000000966, 0.06050000000000111, 0.06625000000000014, 0.02549999999999919, 0.020250000000000767, 0.03599999999999959, 0.009999999999999787, 0.0072499999999990905, -0.04100000000000037, 0.05349999999999966, 0.08924999999999983, 0.006999999999999673, -0.0030000000000001137, 0.01624999999999943, 0.02149999999999963, 0.04899999999999949, -0.017250000000000654, 0.036999999999999034, 0.02674999999999983, 0.028249999999999886, 0.04624999999999879, -0.009000000000000341, 0.009999999999999787, 0.062249999999998806, 0.03449999999999953, 0.15350000000000108, 0.10900000000000176, -0.0039999999999995595, -0.0030000000000001137, -0.03825000000000145], zp_timestamp='2025-11-24T20:51:00')
2025-11-24T22:54:15.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:54:15.268 [DEBUG] [Thread-198392] [transport.py] [_log()] starting thread (client mode): 0xc9b80c70
2025-11-24T22:54:15.268 [DEBUG] [Thread-198392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:54:15.282 [DEBUG] [Thread-198392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:54:15.282 [INFO] [Thread-198392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:54:15.290 [DEBUG] [Thread-198392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:54:15.290 [DEBUG] [Thread-198392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:54:15.290 [DEBUG] [Thread-198392] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:54:15.290 [DEBUG] [Thread-198392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:54:15.290 [DEBUG] [Thread-198392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:54:15.290 [DEBUG] [Thread-198392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:54:15.290 [DEBUG] [Thread-198392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:54:15.290 [DEBUG] [Thread-198392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] client lang: <none>
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] server lang: <none>
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] kex follows: False
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] Compression: none
2025-11-24T22:54:15.291 [DEBUG] [Thread-198392] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:54:15.349 [DEBUG] [Thread-198392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:54:15.350 [DEBUG] [Thread-198392] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:54:15.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:54:15.351 [DEBUG] [Thread-198392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:54:15.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:54:15.405 [DEBUG] [Thread-198392] [transport.py] [_log()] userauth is OK
2025-11-24T22:54:15.406 [DEBUG] [Thread-198392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:54:15.406 [DEBUG] [Thread-198392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:54:15.406 [DEBUG] [Thread-198392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:54:15.406 [DEBUG] [Thread-198392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:54:15.426 [INFO] [Thread-198392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:54:15.426 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:54:15.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:54:16.272 [DEBUG] [Thread-198392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:54:16.273 [DEBUG] [Thread-198392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:54:16.321 [DEBUG] [Thread-198392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:54:16.321 [DEBUG] [Thread-198392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:54:16.330 [DEBUG] [Thread-198392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:54:16.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:54:16.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:54:16.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:54:16.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:54:16.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:54:16.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:54:16.369 [DEBUG] [Thread-198392] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:54:19.327 [DEBUG] [Thread-198394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:54:34.457 [DEBUG] [Thread-198395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:54:46.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:54:46.420 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:54:46.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-11-24T22:54:47.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 54, 41), 15.29, 34.84, 0.0, 31.3, 14.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:54:47.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:54:41
2025-11-24T22:54:47.421 [DEBUG] [Thread-198396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:54:47.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:54:47.609 [DEBUG] [Thread-198397] [transport.py] [_log()] starting thread (client mode): 0xc9b82a10
2025-11-24T22:54:47.610 [DEBUG] [Thread-198397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:54:47.621 [DEBUG] [Thread-198397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:54:47.621 [INFO] [Thread-198397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:54:47.627 [DEBUG] [Thread-198397] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] client lang: <none>
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] server lang: <none>
2025-11-24T22:54:47.628 [DEBUG] [Thread-198397] [transport.py] [_log()] kex follows: False
2025-11-24T22:54:47.629 [DEBUG] [Thread-198397] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:54:47.629 [DEBUG] [Thread-198397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:54:47.630 [DEBUG] [Thread-198397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:54:47.630 [DEBUG] [Thread-198397] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:54:47.630 [DEBUG] [Thread-198397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:54:47.630 [DEBUG] [Thread-198397] [transport.py] [_log()] Compression: none
2025-11-24T22:54:47.630 [DEBUG] [Thread-198397] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:54:47.662 [DEBUG] [Thread-198397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:54:47.667 [DEBUG] [Thread-198397] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:54:47.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:54:47.670 [DEBUG] [Thread-198397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:54:47.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:54:47.675 [DEBUG] [Thread-198397] [transport.py] [_log()] userauth is OK
2025-11-24T22:54:47.676 [DEBUG] [Thread-198397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:54:47.676 [DEBUG] [Thread-198397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:54:47.676 [DEBUG] [Thread-198397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:54:47.676 [DEBUG] [Thread-198397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:54:47.714 [INFO] [Thread-198397] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:54:47.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:54:48.298 [DEBUG] [Thread-198397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:54:48.299 [DEBUG] [Thread-198397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:54:48.301 [DEBUG] [Thread-198397] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:54:48.339 [DEBUG] [Thread-198397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:54:48.340 [DEBUG] [Thread-198397] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:54:48.343 [DEBUG] [Thread-198397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:54:48.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:54:48.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:54:48.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:54:48.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:54:48.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:54:48.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:54:48.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:54:48.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:54:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:54:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.871227 -999.00  +14.10  22.77     40   +0.70 1 1 1 1 1     0    0 12.45 -47.08 ZNESW 33.0 22.8 173.6 36.8 14.4 -24.6 14.3 -24.2 14.1 -23.0 14.4 -24.1
2025-11-24T22:54:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:54:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:54:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.871227
2025-11-24T22:54:48.372 [DEBUG] [Thread-198397] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:54:48.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:54:48.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:54:48.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:54:48.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:54:48.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:54:48.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:54:41', tmtdew=15.29, humidity=34.84, cloud=0.0, wind=31.3, temperature=14.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:54:42', seeing=0.72, atlas_timestamp='2025-11-24T20:54:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020250000000000767, 0.04025000000000034, -0.025500000000000966, 0.06050000000000111, 0.06625000000000014, 0.02549999999999919, 0.020250000000000767, 0.03599999999999959, 0.009999999999999787, 0.0072499999999990905, -0.04100000000000037, 0.05349999999999966, 0.08924999999999983, 0.006999999999999673, -0.0030000000000001137, 0.01624999999999943, 0.02149999999999963, 0.04899999999999949, -0.017250000000000654, 0.036999999999999034, 0.02674999999999983, 0.028249999999999886, 0.04624999999999879, -0.009000000000000341, 0.009999999999999787, 0.062249999999998806, 0.03449999999999953, 0.15350000000000108, 0.10900000000000176, -0.0039999999999995595, -0.0030000000000001137, -0.03825000000000145], zp_timestamp='2025-11-24T20:51:00')
2025-11-24T22:54:48.485 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:54:48.498 [DEBUG] [Thread-198400] [transport.py] [_log()] starting thread (client mode): 0xd07f9240
2025-11-24T22:54:48.498 [DEBUG] [Thread-198400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:54:48.513 [DEBUG] [Thread-198400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:54:48.513 [INFO] [Thread-198400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:54:48.523 [DEBUG] [Thread-198400] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:54:48.523 [DEBUG] [Thread-198400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] client lang: <none>
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] server lang: <none>
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] kex follows: False
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] Compression: none
2025-11-24T22:54:48.524 [DEBUG] [Thread-198400] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:54:48.582 [DEBUG] [Thread-198400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:54:48.582 [DEBUG] [Thread-198400] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:54:48.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:54:48.583 [DEBUG] [Thread-198400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:54:48.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:54:48.641 [DEBUG] [Thread-198400] [transport.py] [_log()] userauth is OK
2025-11-24T22:54:48.641 [DEBUG] [Thread-198400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:54:48.641 [DEBUG] [Thread-198400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:54:48.642 [DEBUG] [Thread-198400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:54:48.642 [DEBUG] [Thread-198400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:54:48.661 [INFO] [Thread-198400] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:54:48.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:54:48.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:54:49.247 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:54:49.249 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:54:49.503 [DEBUG] [Thread-198400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:54:49.504 [DEBUG] [Thread-198400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:54:49.525 [DEBUG] [Thread-198402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:54:49.551 [DEBUG] [Thread-198400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:54:49.551 [DEBUG] [Thread-198400] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:54:49.560 [DEBUG] [Thread-198400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:54:49.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:54:49.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:54:49.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:54:49.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:54:49.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:54:49.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:54:49.597 [DEBUG] [Thread-198400] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:55:04.683 [DEBUG] [Thread-198403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:55:19.038 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:55:19.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:55:19.621 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:55:19.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-11-24T22:55:19.730 [DEBUG] [Thread-198404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:55:20.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 55, 14), 15.34, 34.72, 0.0, 30.65, 14.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:55:20.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:55:14
2025-11-24T22:55:20.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:55:20.640 [DEBUG] [Thread-198405] [transport.py] [_log()] starting thread (client mode): 0xd3150580
2025-11-24T22:55:20.641 [DEBUG] [Thread-198405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:55:20.652 [DEBUG] [Thread-198405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:55:20.652 [INFO] [Thread-198405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:55:20.656 [DEBUG] [Thread-198405] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] client lang: <none>
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] server lang: <none>
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] kex follows: False
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:55:20.657 [DEBUG] [Thread-198405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:55:20.658 [DEBUG] [Thread-198405] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:55:20.658 [DEBUG] [Thread-198405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:55:20.658 [DEBUG] [Thread-198405] [transport.py] [_log()] Compression: none
2025-11-24T22:55:20.658 [DEBUG] [Thread-198405] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:55:20.686 [DEBUG] [Thread-198405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:55:20.689 [DEBUG] [Thread-198405] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:55:20.690 [DEBUG] [Thread-198405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:55:20.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:55:20.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:55:20.693 [DEBUG] [Thread-198405] [transport.py] [_log()] userauth is OK
2025-11-24T22:55:20.694 [DEBUG] [Thread-198405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:55:20.694 [DEBUG] [Thread-198405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:55:20.694 [DEBUG] [Thread-198405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:55:20.694 [DEBUG] [Thread-198405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:55:20.713 [INFO] [Thread-198405] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:55:20.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:55:21.314 [DEBUG] [Thread-198405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:55:21.315 [DEBUG] [Thread-198405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:55:21.316 [DEBUG] [Thread-198405] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:55:21.356 [DEBUG] [Thread-198405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:55:21.356 [DEBUG] [Thread-198405] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:55:21.360 [DEBUG] [Thread-198405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:55:21.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:55:21.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:55:21.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:55:21.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:55:21.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:55:21.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:55:21.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:55:21.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:55:21.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:55:21.382 [DEBUG] [Thread-198405] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:55:21.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.871574 -999.00  +14.10  23.05     40   +0.70 1 1 1 1 1     0    0 12.36 -51.46 ZNESW 26.2 23.1 160.4 34.8 14.4 -24.9 14.2 -24.3 14.1 -23.1 14.4 -24.0
2025-11-24T22:55:21.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:55:21.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:55:21.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.871574
2025-11-24T22:55:21.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:55:21.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:55:21.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:55:21.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:55:21.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:55:21.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:55:14', tmtdew=15.34, humidity=34.72, cloud=0.0, wind=30.65, temperature=14.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:55:15', seeing=0.86, atlas_timestamp='2025-11-24T20:55:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[0.010749999999999815, 0.020250000000000767, 0.04025000000000034, -0.025500000000000966, 0.06050000000000111, 0.06625000000000014, 0.02549999999999919, 0.020250000000000767, 0.03599999999999959, 0.009999999999999787, 0.0072499999999990905, -0.04100000000000037, 0.05349999999999966, 0.08924999999999983, 0.006999999999999673, -0.0030000000000001137, 0.01624999999999943, 0.02149999999999963, 0.04899999999999949, -0.017250000000000654, 0.036999999999999034, 0.02674999999999983, 0.028249999999999886, 0.04624999999999879, -0.009000000000000341, 0.009999999999999787, 0.062249999999998806, 0.03449999999999953, 0.15350000000000108, 0.10900000000000176, -0.0039999999999995595, -0.0030000000000001137, -0.03825000000000145], zp_timestamp='2025-11-24T20:51:00')
2025-11-24T22:55: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-11-24T22:55:21.478 [DEBUG] [Thread-198408] [transport.py] [_log()] starting thread (client mode): 0xd3148e50
2025-11-24T22:55:21.479 [DEBUG] [Thread-198408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:55:21.493 [DEBUG] [Thread-198408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:55:21.493 [INFO] [Thread-198408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:55:21.500 [DEBUG] [Thread-198408] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] client lang: <none>
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] server lang: <none>
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] kex follows: False
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] Compression: none
2025-11-24T22:55:21.501 [DEBUG] [Thread-198408] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:55:21.561 [DEBUG] [Thread-198408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:55:21.562 [DEBUG] [Thread-198408] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:55:21.563 [DEBUG] [Thread-198408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:55:21.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:55:21.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:55:21.617 [DEBUG] [Thread-198408] [transport.py] [_log()] userauth is OK
2025-11-24T22:55:21.618 [DEBUG] [Thread-198408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:55:21.618 [DEBUG] [Thread-198408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:55:21.618 [DEBUG] [Thread-198408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:55:21.618 [DEBUG] [Thread-198408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:55:21.638 [INFO] [Thread-198408] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:55:21.638 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:55:21.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:55:22.452 [DEBUG] [Thread-198408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:55:22.452 [DEBUG] [Thread-198408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:55:22.500 [DEBUG] [Thread-198408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:55:22.500 [DEBUG] [Thread-198408] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:55:22.508 [DEBUG] [Thread-198408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:55:22.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:55:22.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T22:55:22.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-11-24T22:55:22.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:55:22.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:55:22.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:55:22.550 [DEBUG] [Thread-198408] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:55:34.796 [DEBUG] [Thread-198410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:55:47.788 [DEBUG] [Thread-198411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:55:49.450 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:55:49.451 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:55:49.886 [DEBUG] [Thread-198412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:55:52.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:55:52.576 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:55:52.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:55:53.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 55, 47), 15.23, 34.85, 0.0, 30.14, 14.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:55:53.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:55:47
2025-11-24T22:55:53.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:55:53.907 [DEBUG] [Thread-198413] [transport.py] [_log()] starting thread (client mode): 0xd3150400
2025-11-24T22:55:53.907 [DEBUG] [Thread-198413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:55:53.918 [DEBUG] [Thread-198413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:55:53.918 [INFO] [Thread-198413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:55:53.921 [DEBUG] [Thread-198413] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] client lang: <none>
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] server lang: <none>
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] kex follows: False
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] Compression: none
2025-11-24T22:55:53.922 [DEBUG] [Thread-198413] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:55:53.951 [DEBUG] [Thread-198413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:55:53.953 [DEBUG] [Thread-198413] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:55:53.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:55:53.954 [DEBUG] [Thread-198413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:55:53.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:55:53.993 [DEBUG] [Thread-198413] [transport.py] [_log()] userauth is OK
2025-11-24T22:55:53.993 [DEBUG] [Thread-198413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:55:53.993 [DEBUG] [Thread-198413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:55:53.993 [DEBUG] [Thread-198413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:55:53.993 [DEBUG] [Thread-198413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:55:54.014 [INFO] [Thread-198413] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:55:54.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:55:54.734 [DEBUG] [Thread-198413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:55:54.734 [DEBUG] [Thread-198413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:55:54.735 [DEBUG] [Thread-198413] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:55:54.775 [DEBUG] [Thread-198413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:55:54.775 [DEBUG] [Thread-198413] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:55:54.777 [DEBUG] [Thread-198413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:55:54.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:55:54.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:55:54.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:55:54.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:55:54.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:55:54.798 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:55:54.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:55:54.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:55:54.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:55:54.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.871574 -999.00  +14.10  23.05     40   +0.70 1 1 1 1 1     0    0 12.36 -51.46 ZNESW 26.2 23.1 160.4 34.8 14.4 -24.9 14.2 -24.3 14.1 -23.1 14.4 -24.0
2025-11-24T22:55:54.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:55:54.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:55:54.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.871574
2025-11-24T22:55:54.806 [DEBUG] [Thread-198413] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:55:54.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:55:54.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:55:54.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:55:54.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:55:54.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:55:54.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:55:47', tmtdew=15.23, humidity=34.85, cloud=0.0, wind=30.14, temperature=14.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:55:47', seeing=0.74, atlas_timestamp='2025-11-24T20:55:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:53:00')
2025-11-24T22:55:54.886 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:55:54.897 [DEBUG] [Thread-198416] [transport.py] [_log()] starting thread (client mode): 0xd073bbe0
2025-11-24T22:55:54.897 [DEBUG] [Thread-198416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:55:54.912 [DEBUG] [Thread-198416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:55:54.912 [INFO] [Thread-198416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:55:54.919 [DEBUG] [Thread-198416] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] client lang: <none>
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] server lang: <none>
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] kex follows: False
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] Compression: none
2025-11-24T22:55:54.920 [DEBUG] [Thread-198416] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:55:54.975 [DEBUG] [Thread-198416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:55:54.975 [DEBUG] [Thread-198416] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:55:54.975 [DEBUG] [Thread-198416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:55:54.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:55:54.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:55:55.032 [DEBUG] [Thread-198416] [transport.py] [_log()] userauth is OK
2025-11-24T22:55:55.032 [DEBUG] [Thread-198416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:55:55.032 [DEBUG] [Thread-198416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:55:55.032 [DEBUG] [Thread-198416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:55:55.032 [DEBUG] [Thread-198416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:55:55.046 [INFO] [Thread-198416] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:55:55.046 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:55:55.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:55:55.924 [DEBUG] [Thread-198416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:55:55.924 [DEBUG] [Thread-198416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:55:55.973 [DEBUG] [Thread-198416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:55:55.974 [DEBUG] [Thread-198416] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:55:55.982 [DEBUG] [Thread-198416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:55:55.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:55:55.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-11-24T22:55:55.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-11-24T22:55:56.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:55:56.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:55:56.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:55:56.015 [DEBUG] [Thread-198416] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:56:04.936 [DEBUG] [Thread-198418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:20.103 [DEBUG] [Thread-198419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:26.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:56:26.016 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:56:26.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:56:26.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 56, 20), 15.2, 34.94, 0.0, 31.39, 14.1, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:56:26.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:56:20
2025-11-24T22:56:27.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:56:27.272 [DEBUG] [Thread-198420] [transport.py] [_log()] starting thread (client mode): 0xd31f6b90
2025-11-24T22:56:27.272 [DEBUG] [Thread-198420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:56:27.284 [DEBUG] [Thread-198420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:56:27.285 [INFO] [Thread-198420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:56:27.290 [DEBUG] [Thread-198420] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:56:27.291 [DEBUG] [Thread-198420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:56:27.291 [DEBUG] [Thread-198420] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:56:27.291 [DEBUG] [Thread-198420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:56:27.291 [DEBUG] [Thread-198420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:56:27.291 [DEBUG] [Thread-198420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:56:27.291 [DEBUG] [Thread-198420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:56:27.291 [DEBUG] [Thread-198420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:56:27.292 [DEBUG] [Thread-198420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:56:27.292 [DEBUG] [Thread-198420] [transport.py] [_log()] client lang: <none>
2025-11-24T22:56:27.292 [DEBUG] [Thread-198420] [transport.py] [_log()] server lang: <none>
2025-11-24T22:56:27.292 [DEBUG] [Thread-198420] [transport.py] [_log()] kex follows: False
2025-11-24T22:56:27.292 [DEBUG] [Thread-198420] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:56:27.293 [DEBUG] [Thread-198420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:56:27.293 [DEBUG] [Thread-198420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:56:27.293 [DEBUG] [Thread-198420] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:56:27.293 [DEBUG] [Thread-198420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:56:27.293 [DEBUG] [Thread-198420] [transport.py] [_log()] Compression: none
2025-11-24T22:56:27.293 [DEBUG] [Thread-198420] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:56:27.327 [DEBUG] [Thread-198420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:56:27.332 [DEBUG] [Thread-198420] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:56:27.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:56:27.336 [DEBUG] [Thread-198420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:56:27.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:56:27.340 [DEBUG] [Thread-198420] [transport.py] [_log()] userauth is OK
2025-11-24T22:56:27.340 [DEBUG] [Thread-198420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:56:27.340 [DEBUG] [Thread-198420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:56:27.340 [DEBUG] [Thread-198420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:56:27.340 [DEBUG] [Thread-198420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:56:27.367 [INFO] [Thread-198420] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:56:27.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:56:28.017 [DEBUG] [Thread-198420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:56:28.018 [DEBUG] [Thread-198420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:56:28.019 [DEBUG] [Thread-198420] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:56:28.058 [DEBUG] [Thread-198420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:56:28.058 [DEBUG] [Thread-198420] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:56:28.061 [DEBUG] [Thread-198420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:56:28.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:56:28.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:56:28.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:56:28.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:56:28.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:56:28.087 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:56:28.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:56:28.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:56:28.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:56:28.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.871921 -999.00  +14.00  25.50     40   +0.70 1 1 1 1 1     0    0 12.40 -51.60 ZNESW 23.0 25.5 161.7 32.6 14.4 -24.8 14.3 -24.4 14.1 -23.1 14.3 -24.1
2025-11-24T22:56:28.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:56:28.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:56:28.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.871921
2025-11-24T22:56:28.094 [DEBUG] [Thread-198420] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:56:28.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:56:28.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:56:28.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:56:28.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:56:28.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:56:28.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:56:20', tmtdew=15.2, humidity=34.94, cloud=0.0, wind=31.39, temperature=14.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:56:20', seeing=0.71, atlas_timestamp='2025-11-24T20:55:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:53:00')
2025-11-24T22:56:28.190 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:56:28.202 [DEBUG] [Thread-198423] [transport.py] [_log()] starting thread (client mode): 0xc9b82800
2025-11-24T22:56:28.202 [DEBUG] [Thread-198423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:56:28.217 [DEBUG] [Thread-198423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:56:28.217 [INFO] [Thread-198423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] client lang: <none>
2025-11-24T22:56:28.225 [DEBUG] [Thread-198423] [transport.py] [_log()] server lang: <none>
2025-11-24T22:56:28.226 [DEBUG] [Thread-198423] [transport.py] [_log()] kex follows: False
2025-11-24T22:56:28.226 [DEBUG] [Thread-198423] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:56:28.226 [DEBUG] [Thread-198423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:56:28.226 [DEBUG] [Thread-198423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:56:28.226 [DEBUG] [Thread-198423] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:56:28.226 [DEBUG] [Thread-198423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:56:28.226 [DEBUG] [Thread-198423] [transport.py] [_log()] Compression: none
2025-11-24T22:56:28.226 [DEBUG] [Thread-198423] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:56:28.286 [DEBUG] [Thread-198423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:56:28.286 [DEBUG] [Thread-198423] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:56:28.287 [DEBUG] [Thread-198423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:56:28.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:56:28.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:56:28.345 [DEBUG] [Thread-198423] [transport.py] [_log()] userauth is OK
2025-11-24T22:56:28.345 [DEBUG] [Thread-198423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:56:28.345 [DEBUG] [Thread-198423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:56:28.346 [DEBUG] [Thread-198423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:56:28.346 [DEBUG] [Thread-198423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:56:28.365 [INFO] [Thread-198423] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:56:28.374 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:56:28.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:56:29.192 [DEBUG] [Thread-198423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:56:29.192 [DEBUG] [Thread-198423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:56:29.241 [DEBUG] [Thread-198423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:56:29.241 [DEBUG] [Thread-198423] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:56:29.250 [DEBUG] [Thread-198423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:56:29.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:56:29.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-11-24T22:56:29.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:56:29.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:56:29.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:56:29.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:56:29.290 [DEBUG] [Thread-198423] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:56:29.782 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:32.976 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:35.155 [DEBUG] [Thread-198425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:38.078 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:44.576 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:48.104 [DEBUG] [Thread-198426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:49.669 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:49.670 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:50.248 [DEBUG] [Thread-198427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:56:59.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:56:59.334 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:56:59.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T22:57:00.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 56, 53), 15.12, 35.28, 0.0, 30.88, 14.17, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:57:00.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:56:53
2025-11-24T22:57:00.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:57:00.614 [DEBUG] [Thread-198428] [transport.py] [_log()] starting thread (client mode): 0xd0786aa0
2025-11-24T22:57:00.615 [DEBUG] [Thread-198428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:57:00.626 [DEBUG] [Thread-198428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:57:00.626 [INFO] [Thread-198428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:57:00.632 [DEBUG] [Thread-198428] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:57:00.632 [DEBUG] [Thread-198428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:57:00.632 [DEBUG] [Thread-198428] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:57:00.632 [DEBUG] [Thread-198428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:57:00.632 [DEBUG] [Thread-198428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:57:00.632 [DEBUG] [Thread-198428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:57:00.632 [DEBUG] [Thread-198428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:57:00.633 [DEBUG] [Thread-198428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:57:00.633 [DEBUG] [Thread-198428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:57:00.633 [DEBUG] [Thread-198428] [transport.py] [_log()] client lang: <none>
2025-11-24T22:57:00.633 [DEBUG] [Thread-198428] [transport.py] [_log()] server lang: <none>
2025-11-24T22:57:00.633 [DEBUG] [Thread-198428] [transport.py] [_log()] kex follows: False
2025-11-24T22:57:00.633 [DEBUG] [Thread-198428] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:57:00.634 [DEBUG] [Thread-198428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:57:00.634 [DEBUG] [Thread-198428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:57:00.634 [DEBUG] [Thread-198428] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:57:00.634 [DEBUG] [Thread-198428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:57:00.635 [DEBUG] [Thread-198428] [transport.py] [_log()] Compression: none
2025-11-24T22:57:00.635 [DEBUG] [Thread-198428] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:57:00.669 [DEBUG] [Thread-198428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:57:00.674 [DEBUG] [Thread-198428] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:57:00.677 [DEBUG] [Thread-198428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:57:00.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:57:00.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:57:00.683 [DEBUG] [Thread-198428] [transport.py] [_log()] userauth is OK
2025-11-24T22:57:00.683 [DEBUG] [Thread-198428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:57:00.683 [DEBUG] [Thread-198428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:57:00.683 [DEBUG] [Thread-198428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:57:00.683 [DEBUG] [Thread-198428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:57:00.710 [INFO] [Thread-198428] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:57:00.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:57:01.331 [DEBUG] [Thread-198428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:57:01.332 [DEBUG] [Thread-198428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:57:01.333 [DEBUG] [Thread-198428] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:57:01.373 [DEBUG] [Thread-198428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:57:01.373 [DEBUG] [Thread-198428] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:57:01.376 [DEBUG] [Thread-198428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:57:01.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:57:01.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:57:01.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:57:01.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:57:01.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:57:01.397 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:57:01.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:57:01.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.872269 -999.00  +14.00  19.94     40   +0.70 1 1 1 1 1     0    0 12.15 -55.61 ZNESW 24.5 19.9 159.0 32.4 14.3 -24.8 14.3 -24.3 14.0 -23.2 14.3 -24.1
2025-11-24T22:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.872269
2025-11-24T22:57:01.405 [DEBUG] [Thread-198428] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:57:01.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:57:01.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:57:01.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:57:01.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:57:01.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:57:01.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:56:53', tmtdew=15.12, humidity=35.28, cloud=0.0, wind=30.88, temperature=14.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:56:54', seeing=0.74, atlas_timestamp='2025-11-24T20:56:04.042', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:53:00')
2025-11-24T22:57:01.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:57:01.502 [DEBUG] [Thread-198431] [transport.py] [_log()] starting thread (client mode): 0xc9b83340
2025-11-24T22:57:01.502 [DEBUG] [Thread-198431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:57:01.518 [DEBUG] [Thread-198431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:57:01.518 [INFO] [Thread-198431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:57:01.526 [DEBUG] [Thread-198431] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:57:01.526 [DEBUG] [Thread-198431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:57:01.526 [DEBUG] [Thread-198431] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:57:01.526 [DEBUG] [Thread-198431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] client lang: <none>
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] server lang: <none>
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] kex follows: False
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:57:01.527 [DEBUG] [Thread-198431] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:57:01.528 [DEBUG] [Thread-198431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:57:01.528 [DEBUG] [Thread-198431] [transport.py] [_log()] Compression: none
2025-11-24T22:57:01.528 [DEBUG] [Thread-198431] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:57:01.584 [DEBUG] [Thread-198431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:57:01.584 [DEBUG] [Thread-198431] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:57:01.584 [DEBUG] [Thread-198431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:57:01.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:57:01.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:57:01.642 [DEBUG] [Thread-198431] [transport.py] [_log()] userauth is OK
2025-11-24T22:57:01.642 [DEBUG] [Thread-198431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:57:01.642 [DEBUG] [Thread-198431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:57:01.642 [DEBUG] [Thread-198431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:57:01.642 [DEBUG] [Thread-198431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:57:01.658 [INFO] [Thread-198431] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:57:01.659 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:57:01.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:57:02.552 [DEBUG] [Thread-198431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:57:02.552 [DEBUG] [Thread-198431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:57:02.601 [DEBUG] [Thread-198431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:57:02.601 [DEBUG] [Thread-198431] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:57:02.610 [DEBUG] [Thread-198431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:57:02.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:57:02.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-11-24T22:57:02.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-11-24T22:57:02.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:57:02.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:57:02.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:57:02.649 [DEBUG] [Thread-198431] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:57:03.868 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:05.314 [DEBUG] [Thread-198433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:08.239 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:20.456 [DEBUG] [Thread-198434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:27.644 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:32.017 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:32.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:57:32.673 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:57:32.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-11-24T22:57:33.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 57, 26), 15.14, 35.23, 0.0, 30.84, 14.2, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:57:33.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:57:26
2025-11-24T22:57:33.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:57:33.836 [DEBUG] [Thread-198435] [transport.py] [_log()] starting thread (client mode): 0xd31f4d30
2025-11-24T22:57:33.836 [DEBUG] [Thread-198435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:57:33.849 [DEBUG] [Thread-198435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:57:33.849 [INFO] [Thread-198435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:57:33.854 [DEBUG] [Thread-198435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] client lang: <none>
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] server lang: <none>
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] kex follows: False
2025-11-24T22:57:33.855 [DEBUG] [Thread-198435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:57:33.856 [DEBUG] [Thread-198435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:57:33.856 [DEBUG] [Thread-198435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:57:33.856 [DEBUG] [Thread-198435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:57:33.856 [DEBUG] [Thread-198435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:57:33.856 [DEBUG] [Thread-198435] [transport.py] [_log()] Compression: none
2025-11-24T22:57:33.856 [DEBUG] [Thread-198435] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:57:33.894 [DEBUG] [Thread-198435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:57:33.899 [DEBUG] [Thread-198435] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:57:33.901 [DEBUG] [Thread-198435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:57:33.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:57:33.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:57:33.907 [DEBUG] [Thread-198435] [transport.py] [_log()] userauth is OK
2025-11-24T22:57:33.907 [DEBUG] [Thread-198435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:57:33.907 [DEBUG] [Thread-198435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:57:33.907 [DEBUG] [Thread-198435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:57:33.907 [DEBUG] [Thread-198435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:57:33.946 [INFO] [Thread-198435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:57:33.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:57:34.594 [DEBUG] [Thread-198435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:57:34.594 [DEBUG] [Thread-198435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:57:34.599 [DEBUG] [Thread-198435] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:57:34.634 [DEBUG] [Thread-198435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:57:34.634 [DEBUG] [Thread-198435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:57:34.637 [DEBUG] [Thread-198435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:57:34.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:57:34.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:57:34.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:57:34.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:57:34.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:57:34.665 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:57:34.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:57:34.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:57:34.667 [DEBUG] [Thread-198435] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:57:34.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:57:34.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.872616 -999.00  +14.00  21.39     40   +0.70 1 1 1 1 1     0    0 12.23 -48.90 ZNESW 20.8 21.4 156.6 27.7 14.3 -24.7 14.2 -24.3 14.0 -23.0 14.3 -24.2
2025-11-24T22:57:34.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:57:34.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:57:34.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.872616
2025-11-24T22:57:34.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:57:34.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:57:34.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:57:34.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:57:34.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:57:34.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:57:26', tmtdew=15.14, humidity=35.23, cloud=0.0, wind=30.84, temperature=14.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:57:27', seeing=0.6, atlas_timestamp='2025-11-24T20:56:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:53:00')
2025-11-24T22:57:34.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:57:34.778 [DEBUG] [Thread-198438] [transport.py] [_log()] starting thread (client mode): 0xc9b80eb0
2025-11-24T22:57:34.778 [DEBUG] [Thread-198438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:57:34.793 [DEBUG] [Thread-198438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:57:34.793 [INFO] [Thread-198438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] client lang: <none>
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] server lang: <none>
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] kex follows: False
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] Compression: none
2025-11-24T22:57:34.801 [DEBUG] [Thread-198438] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:57:34.861 [DEBUG] [Thread-198438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:57:34.861 [DEBUG] [Thread-198438] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:57:34.862 [DEBUG] [Thread-198438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:57:34.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:57:34.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:57:34.916 [DEBUG] [Thread-198438] [transport.py] [_log()] userauth is OK
2025-11-24T22:57:34.916 [DEBUG] [Thread-198438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:57:34.916 [DEBUG] [Thread-198438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:57:34.916 [DEBUG] [Thread-198438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:57:34.916 [DEBUG] [Thread-198438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:57:34.931 [INFO] [Thread-198438] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:57:34.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:57:34.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:57:35.496 [DEBUG] [Thread-198440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:35.751 [DEBUG] [Thread-198438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:57:35.751 [DEBUG] [Thread-198438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:57:35.799 [DEBUG] [Thread-198438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:57:35.799 [DEBUG] [Thread-198438] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:57:35.808 [DEBUG] [Thread-198438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:57:35.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:57:35.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-11-24T22:57:35.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-11-24T22:57:35.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:57:35.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:57:35.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:57:35.855 [DEBUG] [Thread-198438] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:57:38.155 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:42.570 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:48.338 [DEBUG] [Thread-198441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:49.880 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:49.882 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:57:50.580 [DEBUG] [Thread-198442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:58:05.681 [DEBUG] [Thread-198443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:58:05.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:58:05.853 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:58:05.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-11-24T22:58:06.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 57, 59), 15.12, 35.15, 0.0, 32.98, 14.14, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:58:06.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:57:59
2025-11-24T22:58:07.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:58:07.206 [DEBUG] [Thread-198444] [transport.py] [_log()] starting thread (client mode): 0xd317e2f0
2025-11-24T22:58:07.207 [DEBUG] [Thread-198444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:58:07.210 [DEBUG] [Thread-198444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:58:07.210 [INFO] [Thread-198444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:58:07.215 [DEBUG] [Thread-198444] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:58:07.215 [DEBUG] [Thread-198444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] client lang: <none>
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] server lang: <none>
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] kex follows: False
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:58:07.216 [DEBUG] [Thread-198444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:58:07.217 [DEBUG] [Thread-198444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:58:07.217 [DEBUG] [Thread-198444] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:58:07.217 [DEBUG] [Thread-198444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:58:07.217 [DEBUG] [Thread-198444] [transport.py] [_log()] Compression: none
2025-11-24T22:58:07.217 [DEBUG] [Thread-198444] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:58:07.251 [DEBUG] [Thread-198444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:58:07.256 [DEBUG] [Thread-198444] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:58:07.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:58:07.260 [DEBUG] [Thread-198444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:58:07.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:58:07.263 [DEBUG] [Thread-198444] [transport.py] [_log()] userauth is OK
2025-11-24T22:58:07.264 [DEBUG] [Thread-198444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:58:07.264 [DEBUG] [Thread-198444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:58:07.264 [DEBUG] [Thread-198444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:58:07.264 [DEBUG] [Thread-198444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:58:07.292 [INFO] [Thread-198444] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:58:07.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:58:07.900 [DEBUG] [Thread-198444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:58:07.900 [DEBUG] [Thread-198444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:58:07.902 [DEBUG] [Thread-198444] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:58:07.942 [DEBUG] [Thread-198444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:58:07.942 [DEBUG] [Thread-198444] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:58:07.945 [DEBUG] [Thread-198444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:58:07.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:58:07.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:58:07.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:58:07.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:58:07.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:58:07.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:58:07.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:58:07.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:58:07.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:58:07.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.873310 -999.00  +13.90  17.62     40   +0.60 1 1 1 1 1     0    0 12.36 -48.59 ZNESW 20.3 17.6 169.6 27.3 14.3 -24.6 14.2 -24.2 13.9 -23.0 14.3 -24.1
2025-11-24T22:58:07.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:58:07.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:58:07.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.873310
2025-11-24T22:58:07.973 [DEBUG] [Thread-198444] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:58:07.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:58:07.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:58:07.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:58:07.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:58:07.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:58:07.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:57:59', tmtdew=15.12, humidity=35.15, cloud=0.0, wind=32.98, temperature=14.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:57:59', seeing=0.6, atlas_timestamp='2025-11-24T20:57:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:53:00')
2025-11-24T22:58:08.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:58:08.073 [DEBUG] [Thread-198447] [transport.py] [_log()] starting thread (client mode): 0xd317f940
2025-11-24T22:58:08.073 [DEBUG] [Thread-198447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:58:08.087 [DEBUG] [Thread-198447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:58:08.088 [INFO] [Thread-198447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] client lang: <none>
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] server lang: <none>
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] kex follows: False
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:58:08.096 [DEBUG] [Thread-198447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:58:08.097 [DEBUG] [Thread-198447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:58:08.097 [DEBUG] [Thread-198447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:58:08.097 [DEBUG] [Thread-198447] [transport.py] [_log()] Compression: none
2025-11-24T22:58:08.097 [DEBUG] [Thread-198447] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:58:08.151 [DEBUG] [Thread-198447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:58:08.152 [DEBUG] [Thread-198447] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:58:08.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:58:08.152 [DEBUG] [Thread-198447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:58:08.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:58:08.209 [DEBUG] [Thread-198447] [transport.py] [_log()] userauth is OK
2025-11-24T22:58:08.209 [DEBUG] [Thread-198447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:58:08.209 [DEBUG] [Thread-198447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:58:08.209 [DEBUG] [Thread-198447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:58:08.209 [DEBUG] [Thread-198447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:58:08.224 [INFO] [Thread-198447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:58:08.224 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:58:08.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:58:09.119 [DEBUG] [Thread-198447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:58:09.119 [DEBUG] [Thread-198447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:58:09.167 [DEBUG] [Thread-198447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:58:09.167 [DEBUG] [Thread-198447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:58:09.175 [DEBUG] [Thread-198447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:58:09.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:58:09.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-11-24T22:58:09.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-11-24T22:58:09.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:58:09.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:58:09.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:58:09.216 [DEBUG] [Thread-198447] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:58:20.790 [DEBUG] [Thread-198449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:58:35.907 [DEBUG] [Thread-198450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:58:39.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:58:39.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:58:39.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-11-24T22:58:40.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 58, 32), 15.14, 35.12, 0.0, 31.79, 14.15, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:58:40.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:58:32
2025-11-24T22:58:40.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:58:40.327 [DEBUG] [Thread-198451] [transport.py] [_log()] starting thread (client mode): 0xd317fc10
2025-11-24T22:58:40.328 [DEBUG] [Thread-198451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:58:40.339 [DEBUG] [Thread-198451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:58:40.339 [INFO] [Thread-198451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] client lang: <none>
2025-11-24T22:58:40.342 [DEBUG] [Thread-198451] [transport.py] [_log()] server lang: <none>
2025-11-24T22:58:40.343 [DEBUG] [Thread-198451] [transport.py] [_log()] kex follows: False
2025-11-24T22:58:40.343 [DEBUG] [Thread-198451] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:58:40.343 [DEBUG] [Thread-198451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:58:40.343 [DEBUG] [Thread-198451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:58:40.343 [DEBUG] [Thread-198451] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:58:40.343 [DEBUG] [Thread-198451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:58:40.343 [DEBUG] [Thread-198451] [transport.py] [_log()] Compression: none
2025-11-24T22:58:40.343 [DEBUG] [Thread-198451] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:58:40.362 [DEBUG] [Thread-198451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:58:40.363 [DEBUG] [Thread-198451] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:58:40.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:58:40.364 [DEBUG] [Thread-198451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:58:40.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:58:40.405 [DEBUG] [Thread-198451] [transport.py] [_log()] userauth is OK
2025-11-24T22:58:40.405 [DEBUG] [Thread-198451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:58:40.406 [DEBUG] [Thread-198451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:58:40.406 [DEBUG] [Thread-198451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:58:40.406 [DEBUG] [Thread-198451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:58:40.441 [INFO] [Thread-198451] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:58:40.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:58:41.099 [DEBUG] [Thread-198451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:58:41.099 [DEBUG] [Thread-198451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:58:41.108 [DEBUG] [Thread-198451] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:58:41.140 [DEBUG] [Thread-198451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:58:41.140 [DEBUG] [Thread-198451] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:58:41.142 [DEBUG] [Thread-198451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:58:41.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:58:41.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:58:41.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:58:41.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:58:41.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:58:41.160 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:58:41.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:58:41.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:58:41.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:58:41.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.873657 -999.00  +13.90  27.35     40   +0.70 1 1 1 1 1     0    0 12.10 -56.18 ZNESW 21.4 27.4 170.4 32.6 14.3 -24.6 14.2 -24.2 14.0 -23.0 14.3 -24.0
2025-11-24T22:58:41.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:58:41.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:58:41.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.873657
2025-11-24T22:58:41.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:58:41.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:58:41.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:58:41.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:58:41.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:58:41.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:58:32', tmtdew=15.14, humidity=35.12, cloud=0.0, wind=31.79, temperature=14.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:58:32', seeing=0.7, atlas_timestamp='2025-11-24T20:58:03.965', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:53:00')
2025-11-24T22:58:41.163 [DEBUG] [Thread-198451] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:58:41.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:58:41.249 [DEBUG] [Thread-198454] [transport.py] [_log()] starting thread (client mode): 0xd317f550
2025-11-24T22:58:41.249 [DEBUG] [Thread-198454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:58:41.264 [DEBUG] [Thread-198454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:58:41.264 [INFO] [Thread-198454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:58:41.271 [DEBUG] [Thread-198454] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:58:41.271 [DEBUG] [Thread-198454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:58:41.271 [DEBUG] [Thread-198454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:58:41.271 [DEBUG] [Thread-198454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] client lang: <none>
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] server lang: <none>
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] kex follows: False
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] Compression: none
2025-11-24T22:58:41.272 [DEBUG] [Thread-198454] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:58:41.329 [DEBUG] [Thread-198454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:58:41.330 [DEBUG] [Thread-198454] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:58:41.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:58:41.331 [DEBUG] [Thread-198454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:58:41.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:58:41.385 [DEBUG] [Thread-198454] [transport.py] [_log()] userauth is OK
2025-11-24T22:58:41.385 [DEBUG] [Thread-198454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:58:41.385 [DEBUG] [Thread-198454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:58:41.385 [DEBUG] [Thread-198454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:58:41.385 [DEBUG] [Thread-198454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:58:41.404 [INFO] [Thread-198454] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:58:41.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:58:41.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:58:42.218 [DEBUG] [Thread-198454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:58:42.218 [DEBUG] [Thread-198454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:58:42.265 [DEBUG] [Thread-198454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:58:42.266 [DEBUG] [Thread-198454] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:58:42.275 [DEBUG] [Thread-198454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:58:42.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:58: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-11-24T22:58:42.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T22:58:42.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:58:42.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:58:42.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:58:42.321 [DEBUG] [Thread-198454] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:58:48.601 [DEBUG] [Thread-198456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:58:50.084 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:58:50.086 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:58:50.934 [DEBUG] [Thread-198457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:58:51.848 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:58:55.910 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:59:05.969 [DEBUG] [Thread-198458 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:59:12.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:59:12.346 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:59:12.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-11-24T22:59:13.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 59, 5), 15.12, 35.15, 0.0, 32.34, 14.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:59:13.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:59:05
2025-11-24T22:59:13.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:59:13.365 [DEBUG] [Thread-198459] [transport.py] [_log()] starting thread (client mode): 0xd0786440
2025-11-24T22:59:13.366 [DEBUG] [Thread-198459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:59:13.372 [DEBUG] [Thread-198459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:59:13.373 [INFO] [Thread-198459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] client lang: <none>
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] server lang: <none>
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] kex follows: False
2025-11-24T22:59:13.377 [DEBUG] [Thread-198459] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:59:13.378 [DEBUG] [Thread-198459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:59:13.378 [DEBUG] [Thread-198459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:59:13.378 [DEBUG] [Thread-198459] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:59:13.378 [DEBUG] [Thread-198459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:59:13.378 [DEBUG] [Thread-198459] [transport.py] [_log()] Compression: none
2025-11-24T22:59:13.378 [DEBUG] [Thread-198459] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:59:13.400 [DEBUG] [Thread-198459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:59:13.403 [DEBUG] [Thread-198459] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:59:13.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:59:13.405 [DEBUG] [Thread-198459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:59:13.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:59:13.408 [DEBUG] [Thread-198459] [transport.py] [_log()] userauth is OK
2025-11-24T22:59:13.408 [DEBUG] [Thread-198459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:59:13.408 [DEBUG] [Thread-198459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:59:13.408 [DEBUG] [Thread-198459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:59:13.408 [DEBUG] [Thread-198459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:59:13.422 [INFO] [Thread-198459] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:59:13.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:59:14.004 [DEBUG] [Thread-198459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:59:14.004 [DEBUG] [Thread-198459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:59:14.005 [DEBUG] [Thread-198459] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:59:14.045 [DEBUG] [Thread-198459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:59:14.045 [DEBUG] [Thread-198459] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:59:14.047 [DEBUG] [Thread-198459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:59:14.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:59:14.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:59:14.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:59:14.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:59:14.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:59:14.066 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:59:14.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:59:14.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:59:14.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:59:14.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.874005 -999.00  +13.90  21.28     40   +0.60 1 1 1 1 1     0    0 11.94 -56.17 ZNESW 23.2 21.3 165.6 26.1 14.3 -24.7 14.2 -24.1 13.9 -23.0 14.2 -24.0
2025-11-24T22:59:14.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:59:14.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:59:14.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.874005
2025-11-24T22:59:14.073 [DEBUG] [Thread-198459] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:59:14.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:59:14.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:59:14.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:59:14.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:59:14.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:59:14.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:59:05', tmtdew=15.12, humidity=35.15, cloud=0.0, wind=32.34, temperature=14.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:59:05', seeing=0.7, atlas_timestamp='2025-11-24T20:58:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:57:00')
2025-11-24T22:59:14.155 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:59:14.165 [DEBUG] [Thread-198462] [transport.py] [_log()] starting thread (client mode): 0xd07863b0
2025-11-24T22:59:14.165 [DEBUG] [Thread-198462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:59:14.180 [DEBUG] [Thread-198462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:59:14.180 [INFO] [Thread-198462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] client lang: <none>
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] server lang: <none>
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] kex follows: False
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] Compression: none
2025-11-24T22:59:14.188 [DEBUG] [Thread-198462] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:59:14.243 [DEBUG] [Thread-198462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:59:14.243 [DEBUG] [Thread-198462] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:59:14.243 [DEBUG] [Thread-198462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:59:14.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:59:14.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:59:14.300 [DEBUG] [Thread-198462] [transport.py] [_log()] userauth is OK
2025-11-24T22:59:14.300 [DEBUG] [Thread-198462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:59:14.300 [DEBUG] [Thread-198462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:59:14.300 [DEBUG] [Thread-198462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:59:14.300 [DEBUG] [Thread-198462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:59:14.313 [INFO] [Thread-198462] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:59:14.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:59:14.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:59:15.123 [DEBUG] [Thread-198462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:59:15.123 [DEBUG] [Thread-198462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:59:15.171 [DEBUG] [Thread-198462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:59:15.171 [DEBUG] [Thread-198462] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:59:15.180 [DEBUG] [Thread-198462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:59:15.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:59:15.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-11-24T22:59:15.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-11-24T22:59:15.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:59:15.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:59:15.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:59:15.214 [DEBUG] [Thread-198462] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:59:21.026 [DEBUG] [Thread-198464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:59:36.183 [DEBUG] [Thread-198465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:59:45.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T22:59:45.239 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T22:59:45.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-11-24T22:59:46.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 22, 59, 38), 15.03, 35.27, 0.0, 29.57, 14.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T22:59:46.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 22:59:38
2025-11-24T22:59:46.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T22:59:46.459 [DEBUG] [Thread-198466] [transport.py] [_log()] starting thread (client mode): 0xd3152440
2025-11-24T22:59:46.460 [DEBUG] [Thread-198466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:59:46.469 [DEBUG] [Thread-198466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T22:59:46.469 [INFO] [Thread-198466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T22:59:46.476 [DEBUG] [Thread-198466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] client lang: <none>
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] server lang: <none>
2025-11-24T22:59:46.477 [DEBUG] [Thread-198466] [transport.py] [_log()] kex follows: False
2025-11-24T22:59:46.478 [DEBUG] [Thread-198466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:59:46.478 [DEBUG] [Thread-198466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:59:46.479 [DEBUG] [Thread-198466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:59:46.479 [DEBUG] [Thread-198466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:59:46.479 [DEBUG] [Thread-198466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:59:46.479 [DEBUG] [Thread-198466] [transport.py] [_log()] Compression: none
2025-11-24T22:59:46.479 [DEBUG] [Thread-198466] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:59:46.517 [DEBUG] [Thread-198466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:59:46.522 [DEBUG] [Thread-198466] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:59:46.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T22:59:46.527 [DEBUG] [Thread-198466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T22:59:46.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:59:46.531 [DEBUG] [Thread-198466] [transport.py] [_log()] userauth is OK
2025-11-24T22:59:46.531 [DEBUG] [Thread-198466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:59:46.532 [DEBUG] [Thread-198466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:59:46.532 [DEBUG] [Thread-198466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T22:59:46.532 [DEBUG] [Thread-198466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:59:46.560 [INFO] [Thread-198466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:59:46.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:59:47.200 [DEBUG] [Thread-198466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:59:47.200 [DEBUG] [Thread-198466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:59:47.201 [DEBUG] [Thread-198466] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T22:59:47.241 [DEBUG] [Thread-198466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:59:47.241 [DEBUG] [Thread-198466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:59:47.243 [DEBUG] [Thread-198466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:59:47.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:59:47.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T22:59:47.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T22:59:47.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T22:59:47.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:59:47.265 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T22:59:47.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:59:47.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:59:47.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T22:59:47.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.874352 -999.00  +14.00  26.55     40   +0.80 1 1 1 1 1     0    0 12.03 -58.49 ZNESW 23.0 26.6 167.6 36.5 14.3 -24.6 14.2 -24.0 13.9 -22.9 14.2 -23.9
2025-11-24T22:59:47.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T22:59:47.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T22:59:47.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.874352
2025-11-24T22:59:47.272 [DEBUG] [Thread-198466] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:59:47.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T22:59:47.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T22:59:47.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T22:59:47.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T22:59:47.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T22:59:47.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T22:59:38', tmtdew=15.03, humidity=35.27, cloud=0.0, wind=29.57, temperature=14.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T22:59:38', seeing=0.7, atlas_timestamp='2025-11-24T20:59:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:57:00')
2025-11-24T22:59:47.359 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T22:59:47.371 [DEBUG] [Thread-198469] [transport.py] [_log()] starting thread (client mode): 0xd0784f10
2025-11-24T22:59:47.371 [DEBUG] [Thread-198469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T22:59:47.386 [DEBUG] [Thread-198469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T22:59:47.386 [INFO] [Thread-198469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] client lang: <none>
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] server lang: <none>
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] kex follows: False
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] Compression: none
2025-11-24T22:59:47.394 [DEBUG] [Thread-198469] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T22:59:47.451 [DEBUG] [Thread-198469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T22:59:47.451 [DEBUG] [Thread-198469] [transport.py] [_log()] Switch to new keys ...
2025-11-24T22:59:47.452 [DEBUG] [Thread-198469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T22:59:47.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T22:59:47.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T22:59:47.508 [DEBUG] [Thread-198469] [transport.py] [_log()] userauth is OK
2025-11-24T22:59:47.509 [DEBUG] [Thread-198469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T22:59:47.509 [DEBUG] [Thread-198469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T22:59:47.509 [DEBUG] [Thread-198469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T22:59:47.509 [DEBUG] [Thread-198469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T22:59:47.524 [INFO] [Thread-198469] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T22:59:47.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T22:59:47.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T22:59:48.332 [DEBUG] [Thread-198469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T22:59:48.332 [DEBUG] [Thread-198469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T22:59:48.380 [DEBUG] [Thread-198469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T22:59:48.380 [DEBUG] [Thread-198469] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T22:59:48.389 [DEBUG] [Thread-198469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T22:59:48.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T22:59: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-11-24T22:59: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-11-24T22:59:48.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T22:59:48.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T22:59:48.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T22:59:48.428 [DEBUG] [Thread-198469] [transport.py] [_log()] EOF in transport thread
2025-11-24T22:59:48.905 [DEBUG] [Thread-198471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:59:50.292 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:59:50.293 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T22:59:51.229 [DEBUG] [Thread-198472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:00:06.350 [DEBUG] [Thread-198473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:00:18.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:00:18.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:00:18.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:00:19.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 0, 11), 15.04, 35.23, 0.0, 29.96, 14.12, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:00:19.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:00:11
2025-11-24T23:00:19.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:00:19.654 [DEBUG] [Thread-198474] [transport.py] [_log()] starting thread (client mode): 0xd07870a0
2025-11-24T23:00:19.655 [DEBUG] [Thread-198474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:00:19.665 [DEBUG] [Thread-198474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:00:19.665 [INFO] [Thread-198474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] client lang: <none>
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] server lang: <none>
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] kex follows: False
2025-11-24T23:00:19.670 [DEBUG] [Thread-198474] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:00:19.671 [DEBUG] [Thread-198474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:00:19.671 [DEBUG] [Thread-198474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:00:19.671 [DEBUG] [Thread-198474] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:00:19.671 [DEBUG] [Thread-198474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:00:19.671 [DEBUG] [Thread-198474] [transport.py] [_log()] Compression: none
2025-11-24T23:00:19.671 [DEBUG] [Thread-198474] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:00:19.705 [DEBUG] [Thread-198474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:00:19.710 [DEBUG] [Thread-198474] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:00:19.712 [DEBUG] [Thread-198474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:00:19.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:00:19.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:00:19.717 [DEBUG] [Thread-198474] [transport.py] [_log()] userauth is OK
2025-11-24T23:00:19.718 [DEBUG] [Thread-198474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:00:19.718 [DEBUG] [Thread-198474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:00:19.718 [DEBUG] [Thread-198474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:00:19.718 [DEBUG] [Thread-198474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:00:19.745 [INFO] [Thread-198474] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:00:19.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:00:20.752 [DEBUG] [Thread-198474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:00:20.753 [DEBUG] [Thread-198474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:00:20.762 [DEBUG] [Thread-198474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:00:20.793 [DEBUG] [Thread-198474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:00:20.793 [DEBUG] [Thread-198474] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:00:20.795 [DEBUG] [Thread-198474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:00:20.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:00:20.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:00:20.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:00:20.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:00:20.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:00:20.815 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:00:20.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:00:20.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:00:20.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:00:20.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.874699 -999.00  +14.00  26.20     40   +0.90 1 1 1 1 1     0    0 12.16 -56.94 ZNESW 24.4 26.2 171.0 33.8 14.3 -24.6 14.2 -24.0 14.0 -22.9 14.3 -24.0
2025-11-24T23:00:20.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:00:20.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:00:20.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.874699
2025-11-24T23:00:20.821 [DEBUG] [Thread-198474] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:00:20.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:00:20.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:00:20.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:00:20.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:00:20.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:00:20.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:00:11', tmtdew=15.04, humidity=35.23, cloud=0.0, wind=29.96, temperature=14.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:00:11', seeing=0.7, atlas_timestamp='2025-11-24T20:59:33.994', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:57:00')
2025-11-24T23:00:20.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:00:20.923 [DEBUG] [Thread-198477] [transport.py] [_log()] starting thread (client mode): 0xd3150b80
2025-11-24T23:00:20.923 [DEBUG] [Thread-198477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:00:20.938 [DEBUG] [Thread-198477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:00:20.939 [INFO] [Thread-198477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] client lang: <none>
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] server lang: <none>
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] kex follows: False
2025-11-24T23:00:20.946 [DEBUG] [Thread-198477] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:00:20.955 [DEBUG] [Thread-198477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:00:20.955 [DEBUG] [Thread-198477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:00:20.955 [DEBUG] [Thread-198477] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:00:20.955 [DEBUG] [Thread-198477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:00:20.955 [DEBUG] [Thread-198477] [transport.py] [_log()] Compression: none
2025-11-24T23:00:20.955 [DEBUG] [Thread-198477] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:00:21.003 [DEBUG] [Thread-198477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:00:21.003 [DEBUG] [Thread-198477] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:00:21.003 [DEBUG] [Thread-198477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:00:21.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:00:21.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:00:21.060 [DEBUG] [Thread-198477] [transport.py] [_log()] userauth is OK
2025-11-24T23:00:21.060 [DEBUG] [Thread-198477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:00:21.060 [DEBUG] [Thread-198477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:00:21.060 [DEBUG] [Thread-198477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:00:21.060 [DEBUG] [Thread-198477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:00:21.074 [INFO] [Thread-198477] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:00:21.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:00:21.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:00:21.413 [DEBUG] [Thread-198479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:00:21.942 [DEBUG] [Thread-198477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:00:21.942 [DEBUG] [Thread-198477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:00:21.989 [DEBUG] [Thread-198477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:00:21.989 [DEBUG] [Thread-198477] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:00:21.997 [DEBUG] [Thread-198477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:00:22.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:00:22.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-11-24T23:00:22.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-11-24T23:00:22.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:00:22.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:00:22.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:00:22.031 [DEBUG] [Thread-198477] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:00:36.556 [DEBUG] [Thread-198480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:00:49.239 [DEBUG] [Thread-198481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:00:50.508 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:00:50.510 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:00:51.584 [DEBUG] [Thread-198482 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:00:52.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:00:52.041 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:00:52.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-11-24T23:00:52.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 0, 44), 15.0, 35.7, 0.0, 30.33, 14.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:00:52.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:00:44
2025-11-24T23:00:53.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:00:53.319 [DEBUG] [Thread-198483] [transport.py] [_log()] starting thread (client mode): 0xd317dc60
2025-11-24T23:00:53.321 [DEBUG] [Thread-198483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:00:53.332 [DEBUG] [Thread-198483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:00:53.333 [INFO] [Thread-198483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:00:53.338 [DEBUG] [Thread-198483] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:00:53.339 [DEBUG] [Thread-198483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:00:53.339 [DEBUG] [Thread-198483] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:00:53.339 [DEBUG] [Thread-198483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:00:53.339 [DEBUG] [Thread-198483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:00:53.339 [DEBUG] [Thread-198483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:00:53.339 [DEBUG] [Thread-198483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:00:53.339 [DEBUG] [Thread-198483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:00:53.339 [DEBUG] [Thread-198483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:00:53.339 [DEBUG] [Thread-198483] [transport.py] [_log()] client lang: <none>
2025-11-24T23:00:53.340 [DEBUG] [Thread-198483] [transport.py] [_log()] server lang: <none>
2025-11-24T23:00:53.340 [DEBUG] [Thread-198483] [transport.py] [_log()] kex follows: False
2025-11-24T23:00:53.340 [DEBUG] [Thread-198483] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:00:53.341 [DEBUG] [Thread-198483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:00:53.341 [DEBUG] [Thread-198483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:00:53.341 [DEBUG] [Thread-198483] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:00:53.341 [DEBUG] [Thread-198483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:00:53.341 [DEBUG] [Thread-198483] [transport.py] [_log()] Compression: none
2025-11-24T23:00:53.341 [DEBUG] [Thread-198483] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:00:53.383 [DEBUG] [Thread-198483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:00:53.388 [DEBUG] [Thread-198483] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:00:53.390 [DEBUG] [Thread-198483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:00:53.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:00:53.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:00:53.396 [DEBUG] [Thread-198483] [transport.py] [_log()] userauth is OK
2025-11-24T23:00:53.396 [DEBUG] [Thread-198483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:00:53.396 [DEBUG] [Thread-198483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:00:53.396 [DEBUG] [Thread-198483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:00:53.396 [DEBUG] [Thread-198483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:00:53.423 [INFO] [Thread-198483] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:00:53.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:00:54.072 [DEBUG] [Thread-198483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:00:54.072 [DEBUG] [Thread-198483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:00:54.074 [DEBUG] [Thread-198483] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:00:54.112 [DEBUG] [Thread-198483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:00:54.113 [DEBUG] [Thread-198483] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:00:54.116 [DEBUG] [Thread-198483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:00:54.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:00:54.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:00:54.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:00:54.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:00:54.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:00:54.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:00:54.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:00:54.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:00:54.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:00:54.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.875046 -999.00  +14.00  27.08     40   +0.80 1 1 1 1 1     0    0 11.71 -58.33 ZNESW 21.5 27.1 170.4 33.5 14.3 -24.7 14.2 -24.3 13.9 -23.1 14.3 -24.0
2025-11-24T23:00:54.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:00:54.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:00:54.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.875046
2025-11-24T23:00:54.152 [DEBUG] [Thread-198483] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:00:54.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:00:54.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:00:54.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:00:54.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:00:54.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:00:54.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:00:44', tmtdew=15.0, humidity=35.7, cloud=0.0, wind=30.33, temperature=14.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:00:44', seeing=0.7, atlas_timestamp='2025-11-24T21:00:03.974', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:57:00')
2025-11-24T23:00:54.263 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:00:54.274 [DEBUG] [Thread-198486] [transport.py] [_log()] starting thread (client mode): 0xd317ff10
2025-11-24T23:00:54.274 [DEBUG] [Thread-198486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:00:54.289 [DEBUG] [Thread-198486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:00:54.289 [INFO] [Thread-198486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:00:54.296 [DEBUG] [Thread-198486] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:00:54.297 [DEBUG] [Thread-198486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:00:54.297 [DEBUG] [Thread-198486] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:00:54.297 [DEBUG] [Thread-198486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:00:54.297 [DEBUG] [Thread-198486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:00:54.297 [DEBUG] [Thread-198486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:00:54.297 [DEBUG] [Thread-198486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:00:54.297 [DEBUG] [Thread-198486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:00:54.297 [DEBUG] [Thread-198486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:00:54.297 [DEBUG] [Thread-198486] [transport.py] [_log()] client lang: <none>
2025-11-24T23:00:54.297 [DEBUG] [Thread-198486] [transport.py] [_log()] server lang: <none>
2025-11-24T23:00:54.298 [DEBUG] [Thread-198486] [transport.py] [_log()] kex follows: False
2025-11-24T23:00:54.298 [DEBUG] [Thread-198486] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:00:54.298 [DEBUG] [Thread-198486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:00:54.298 [DEBUG] [Thread-198486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:00:54.298 [DEBUG] [Thread-198486] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:00:54.298 [DEBUG] [Thread-198486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:00:54.298 [DEBUG] [Thread-198486] [transport.py] [_log()] Compression: none
2025-11-24T23:00:54.298 [DEBUG] [Thread-198486] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:00:54.358 [DEBUG] [Thread-198486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:00:54.359 [DEBUG] [Thread-198486] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:00:54.361 [DEBUG] [Thread-198486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:00:54.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:00:54.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:00:54.417 [DEBUG] [Thread-198486] [transport.py] [_log()] userauth is OK
2025-11-24T23:00:54.417 [DEBUG] [Thread-198486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:00:54.417 [DEBUG] [Thread-198486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:00:54.417 [DEBUG] [Thread-198486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:00:54.417 [DEBUG] [Thread-198486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:00:54.442 [INFO] [Thread-198486] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:00:54.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:00:54.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:00:55.273 [DEBUG] [Thread-198486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:00:55.273 [DEBUG] [Thread-198486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:00:55.321 [DEBUG] [Thread-198486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:00:55.321 [DEBUG] [Thread-198486] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:00:55.329 [DEBUG] [Thread-198486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:00:55.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:00:55.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-11-24T23:00:55.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-11-24T23:00:55.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:00:55.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:00:55.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:00:55.374 [DEBUG] [Thread-198486] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:01:06.616 [DEBUG] [Thread-198488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:01:21.739 [DEBUG] [Thread-198489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:01:25.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:01:25.383 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:01:25.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-11-24T23:01:26.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 1, 17), 14.95, 35.83, 0.0, 29.2, 14.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:01:26.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:01:17
2025-11-24T23:01:26.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:01:26.569 [DEBUG] [Thread-198490] [transport.py] [_log()] starting thread (client mode): 0xd317f5e0
2025-11-24T23:01:26.570 [DEBUG] [Thread-198490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:01:26.574 [DEBUG] [Thread-198490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:01:26.575 [INFO] [Thread-198490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] client lang: <none>
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] server lang: <none>
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] kex follows: False
2025-11-24T23:01:26.579 [DEBUG] [Thread-198490] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:01:26.580 [DEBUG] [Thread-198490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:01:26.580 [DEBUG] [Thread-198490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:01:26.580 [DEBUG] [Thread-198490] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:01:26.580 [DEBUG] [Thread-198490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:01:26.580 [DEBUG] [Thread-198490] [transport.py] [_log()] Compression: none
2025-11-24T23:01:26.581 [DEBUG] [Thread-198490] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:01:26.608 [DEBUG] [Thread-198490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:01:26.612 [DEBUG] [Thread-198490] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:01:26.613 [DEBUG] [Thread-198490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:01:26.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:01:26.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:01:26.618 [DEBUG] [Thread-198490] [transport.py] [_log()] userauth is OK
2025-11-24T23:01:26.618 [DEBUG] [Thread-198490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:01:26.618 [DEBUG] [Thread-198490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:01:26.618 [DEBUG] [Thread-198490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:01:26.618 [DEBUG] [Thread-198490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:01:26.655 [INFO] [Thread-198490] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:01:26.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:01:27.310 [DEBUG] [Thread-198490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:01:27.310 [DEBUG] [Thread-198490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:01:27.313 [DEBUG] [Thread-198490] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:01:27.351 [DEBUG] [Thread-198490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:01:27.351 [DEBUG] [Thread-198490] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:01:27.355 [DEBUG] [Thread-198490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:01:27.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:01:27.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:01:27.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:01:27.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:01:27.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:01:27.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:01:27.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:01:27.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:01:27.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:01:27.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.875741 -999.00  +14.00  25.55     41   +0.90 1 1 1 1 1     0    0 11.99 -58.38 ZNESW 21.9 25.6 167.8 35.8 14.3 -24.7 14.2 -23.9 13.9 -23.0 14.2 -24.1
2025-11-24T23:01:27.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:01:27.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:01:27.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.875741
2025-11-24T23:01:27.392 [DEBUG] [Thread-198490] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:01:27.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:01:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:01:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:01:27.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:01:27.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:01:27.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:01:17', tmtdew=14.95, humidity=35.83, cloud=0.0, wind=29.2, temperature=14.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:01:17', seeing=0.74, atlas_timestamp='2025-11-24T21:01:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, -0.03074999999999939, 0.008250000000000313, -0.04150000000000098, 0.03249999999999886, 0.04925000000000068, 0.009999999999999787, 0.03725000000000023, 0.010499999999998622, 0.009000000000000341, 0.03324999999999889, -0.04899999999999949, 0.04049999999999976, 0.07124999999999915, 0.021999999999998465, -0.02050000000000196, 0.019249999999999545, 0.04550000000000054, 0.04249999999999865, -0.02224999999999966, 0.06499999999999773, 0.08274999999999899, 0.05825000000000102, 0.015249999999999986, 0.0039999999999995595, 0.0005000000000006111, 0.05775000000000041, 0.059499999999999886, 0.17350000000000065, 0.057500000000000995, 0.02200000000000024, -0.011999999999998678, -0.03375000000000128], zp_timestamp='2025-11-24T20:57:00')
2025-11-24T23:01:27.491 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:01:27.503 [DEBUG] [Thread-198493] [transport.py] [_log()] starting thread (client mode): 0xd31f57b0
2025-11-24T23:01:27.503 [DEBUG] [Thread-198493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:01:27.518 [DEBUG] [Thread-198493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:01:27.518 [INFO] [Thread-198493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:01:27.525 [DEBUG] [Thread-198493] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:01:27.525 [DEBUG] [Thread-198493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:01:27.525 [DEBUG] [Thread-198493] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] client lang: <none>
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] server lang: <none>
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] kex follows: False
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] Compression: none
2025-11-24T23:01:27.526 [DEBUG] [Thread-198493] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:01:27.590 [DEBUG] [Thread-198493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:01:27.590 [DEBUG] [Thread-198493] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:01:27.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:01:27.591 [DEBUG] [Thread-198493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:01:27.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:01:27.648 [DEBUG] [Thread-198493] [transport.py] [_log()] userauth is OK
2025-11-24T23:01:27.648 [DEBUG] [Thread-198493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:01:27.649 [DEBUG] [Thread-198493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:01:27.649 [DEBUG] [Thread-198493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:01:27.649 [DEBUG] [Thread-198493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:01:27.663 [INFO] [Thread-198493] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:01:27.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:01:27.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:01:28.544 [DEBUG] [Thread-198493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:01:28.544 [DEBUG] [Thread-198493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:01:28.592 [DEBUG] [Thread-198493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:01:28.592 [DEBUG] [Thread-198493] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:01:28.600 [DEBUG] [Thread-198493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:01:28.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:01:28.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-11-24T23:01:28.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-11-24T23:01:28.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:01:28.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:01:28.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:01:28.644 [DEBUG] [Thread-198493] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:01:36.814 [DEBUG] [Thread-198495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:01:49.484 [DEBUG] [Thread-198496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:01:50.719 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:01:50.720 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:01:51.899 [DEBUG] [Thread-198497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:01:58.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:01:58.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:01:58.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-11-24T23:01:59.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 1, 49), 14.94, 35.72, 0.0, 35.75, 14.0, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:01:59.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:01:49
2025-11-24T23:01:59.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:01:59.828 [DEBUG] [Thread-198498] [transport.py] [_log()] starting thread (client mode): 0xd317d210
2025-11-24T23:01:59.829 [DEBUG] [Thread-198498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:01:59.845 [DEBUG] [Thread-198498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:01:59.845 [INFO] [Thread-198498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:01:59.847 [DEBUG] [Thread-198498] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:01:59.847 [DEBUG] [Thread-198498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] client lang: <none>
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] server lang: <none>
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] kex follows: False
2025-11-24T23:01:59.848 [DEBUG] [Thread-198498] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:01:59.849 [DEBUG] [Thread-198498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:01:59.849 [DEBUG] [Thread-198498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:01:59.849 [DEBUG] [Thread-198498] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:01:59.849 [DEBUG] [Thread-198498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:01:59.849 [DEBUG] [Thread-198498] [transport.py] [_log()] Compression: none
2025-11-24T23:01:59.849 [DEBUG] [Thread-198498] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:01:59.867 [DEBUG] [Thread-198498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:01:59.871 [DEBUG] [Thread-198498] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:01:59.872 [DEBUG] [Thread-198498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:01:59.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:01:59.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:01:59.876 [DEBUG] [Thread-198498] [transport.py] [_log()] userauth is OK
2025-11-24T23:01:59.877 [DEBUG] [Thread-198498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:01:59.877 [DEBUG] [Thread-198498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:01:59.877 [DEBUG] [Thread-198498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:01:59.877 [DEBUG] [Thread-198498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:01:59.900 [INFO] [Thread-198498] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:01:59.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:02:00.453 [DEBUG] [Thread-198498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:02:00.453 [DEBUG] [Thread-198498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:02:00.455 [DEBUG] [Thread-198498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:02:00.494 [DEBUG] [Thread-198498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:02:00.494 [DEBUG] [Thread-198498] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:02:00.497 [DEBUG] [Thread-198498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:02:00.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:02:00.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:02:00.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:02:00.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:02:00.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:02:00.521 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:02:00.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:02:00.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:02:00.525 [DEBUG] [Thread-198498] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:02:00.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:02:00.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.876088 -999.00  +14.00  27.14     41   +1.00 1 1 1 1 1     0    0 11.47 -61.28 ZNESW 24.0 27.1 168.2 34.0 14.3 -24.6 14.2 -24.0 13.9 -23.0 14.2 -23.8
2025-11-24T23:02:00.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:02:00.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:02:00.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.876088
2025-11-24T23:02:00.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:02:00.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:02:00.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:02:00.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:02:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:02:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:01:49', tmtdew=14.94, humidity=35.72, cloud=0.0, wind=35.75, temperature=14.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:01:50', seeing=0.74, atlas_timestamp='2025-11-24T21:01:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:00:00')
2025-11-24T23:02:00.612 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:02:00.623 [DEBUG] [Thread-198501] [transport.py] [_log()] starting thread (client mode): 0xd317ccd0
2025-11-24T23:02:00.623 [DEBUG] [Thread-198501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:02:00.637 [DEBUG] [Thread-198501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:02:00.637 [INFO] [Thread-198501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] client lang: <none>
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] server lang: <none>
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] kex follows: False
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] Compression: none
2025-11-24T23:02:00.645 [DEBUG] [Thread-198501] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:02:00.706 [DEBUG] [Thread-198501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:02:00.706 [DEBUG] [Thread-198501] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:02:00.707 [DEBUG] [Thread-198501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:02:00.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:02:00.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:02:00.764 [DEBUG] [Thread-198501] [transport.py] [_log()] userauth is OK
2025-11-24T23:02:00.765 [DEBUG] [Thread-198501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:02:00.765 [DEBUG] [Thread-198501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:02:00.765 [DEBUG] [Thread-198501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:02:00.765 [DEBUG] [Thread-198501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:02:00.783 [INFO] [Thread-198501] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:02:00.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:02:00.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:02:01.608 [DEBUG] [Thread-198501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:02:01.608 [DEBUG] [Thread-198501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:02:01.657 [DEBUG] [Thread-198501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:02:01.657 [DEBUG] [Thread-198501] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:02:01.666 [DEBUG] [Thread-198501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:02:01.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:02:01.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-11-24T23:02:01.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-11-24T23:02:01.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:02:01.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:02:01.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:02:01.700 [DEBUG] [Thread-198501] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:02:06.952 [DEBUG] [Thread-198503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:02:22.072 [DEBUG] [Thread-198504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:02:31.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:02:31.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:02:31.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-11-24T23:02:32.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 2, 22), 14.9, 35.83, 0.0, 33.51, 14.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:02:32.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:02:22
2025-11-24T23:02:32.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:02:32.759 [DEBUG] [Thread-198505] [transport.py] [_log()] starting thread (client mode): 0xd3152da0
2025-11-24T23:02:32.760 [DEBUG] [Thread-198505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:02:32.771 [DEBUG] [Thread-198505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:02:32.771 [INFO] [Thread-198505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] client lang: <none>
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] server lang: <none>
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] kex follows: False
2025-11-24T23:02:32.775 [DEBUG] [Thread-198505] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:02:32.776 [DEBUG] [Thread-198505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:02:32.776 [DEBUG] [Thread-198505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:02:32.776 [DEBUG] [Thread-198505] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:02:32.776 [DEBUG] [Thread-198505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:02:32.776 [DEBUG] [Thread-198505] [transport.py] [_log()] Compression: none
2025-11-24T23:02:32.776 [DEBUG] [Thread-198505] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:02:32.801 [DEBUG] [Thread-198505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:02:32.805 [DEBUG] [Thread-198505] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:02:32.806 [DEBUG] [Thread-198505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:02:32.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:02:32.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:02:32.810 [DEBUG] [Thread-198505] [transport.py] [_log()] userauth is OK
2025-11-24T23:02:32.810 [DEBUG] [Thread-198505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:02:32.810 [DEBUG] [Thread-198505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:02:32.810 [DEBUG] [Thread-198505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:02:32.810 [DEBUG] [Thread-198505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:02:32.829 [INFO] [Thread-198505] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:02:32.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:02:33.471 [DEBUG] [Thread-198505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:02:33.472 [DEBUG] [Thread-198505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:02:33.482 [DEBUG] [Thread-198505] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:02:33.512 [DEBUG] [Thread-198505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:02:33.513 [DEBUG] [Thread-198505] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:02:33.517 [DEBUG] [Thread-198505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:02:33.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:02:33.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:02:33.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:02:33.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:02:33.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:02:33.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:02:33.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:02:33.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:02:33.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:02:33.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.876435 -999.00  +14.00  26.44     41   +0.90 1 1 1 1 1     0    0 12.13 -58.29 ZNESW 24.4 26.4 168.0 36.9 14.3 -24.5 14.2 -24.0 13.9 -22.9 14.2 -23.9
2025-11-24T23:02:33.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:02:33.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:02:33.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.876435
2025-11-24T23:02:33.552 [DEBUG] [Thread-198505] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:02:33.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:02:33.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:02:33.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:02:33.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:02:33.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:02:33.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:02:22', tmtdew=14.9, humidity=35.83, cloud=0.0, wind=33.51, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:02:22', seeing=0.71, atlas_timestamp='2025-11-24T21:02:03.984', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:00:00')
2025-11-24T23:02:33.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:02:33.661 [DEBUG] [Thread-198508] [transport.py] [_log()] starting thread (client mode): 0xd0787dc0
2025-11-24T23:02:33.661 [DEBUG] [Thread-198508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:02:33.676 [DEBUG] [Thread-198508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:02:33.676 [INFO] [Thread-198508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:02:33.684 [DEBUG] [Thread-198508] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:02:33.684 [DEBUG] [Thread-198508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:02:33.684 [DEBUG] [Thread-198508] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:02:33.684 [DEBUG] [Thread-198508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:02:33.685 [DEBUG] [Thread-198508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:02:33.685 [DEBUG] [Thread-198508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:02:33.685 [DEBUG] [Thread-198508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:02:33.685 [DEBUG] [Thread-198508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:02:33.685 [DEBUG] [Thread-198508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:02:33.685 [DEBUG] [Thread-198508] [transport.py] [_log()] client lang: <none>
2025-11-24T23:02:33.685 [DEBUG] [Thread-198508] [transport.py] [_log()] server lang: <none>
2025-11-24T23:02:33.685 [DEBUG] [Thread-198508] [transport.py] [_log()] kex follows: False
2025-11-24T23:02:33.686 [DEBUG] [Thread-198508] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:02:33.686 [DEBUG] [Thread-198508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:02:33.686 [DEBUG] [Thread-198508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:02:33.686 [DEBUG] [Thread-198508] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:02:33.686 [DEBUG] [Thread-198508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:02:33.686 [DEBUG] [Thread-198508] [transport.py] [_log()] Compression: none
2025-11-24T23:02:33.686 [DEBUG] [Thread-198508] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:02:33.746 [DEBUG] [Thread-198508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:02:33.747 [DEBUG] [Thread-198508] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:02:33.748 [DEBUG] [Thread-198508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:02:33.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:02:33.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:02:33.808 [DEBUG] [Thread-198508] [transport.py] [_log()] userauth is OK
2025-11-24T23:02:33.808 [DEBUG] [Thread-198508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:02:33.808 [DEBUG] [Thread-198508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:02:33.808 [DEBUG] [Thread-198508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:02:33.808 [DEBUG] [Thread-198508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:02:33.823 [INFO] [Thread-198508] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:02:33.823 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:02:33.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:02:34.704 [DEBUG] [Thread-198508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:02:34.705 [DEBUG] [Thread-198508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:02:34.752 [DEBUG] [Thread-198508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:02:34.752 [DEBUG] [Thread-198508] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:02:34.760 [DEBUG] [Thread-198508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:02:34.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:02:34.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-11-24T23:02:34.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-11-24T23:02:34.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:02:34.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:02:34.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:02:34.803 [DEBUG] [Thread-198508] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:02:37.138 [DEBUG] [Thread-198510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:02:49.796 [DEBUG] [Thread-198511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:02:50.931 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:02:50.932 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:02:52.279 [DEBUG] [Thread-198512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:03:04.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:03:04.800 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:03:04.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-11-24T23:03:05.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 2, 55), 14.86, 35.8, 0.0, 33.21, 14.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:03:05.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:02:55
2025-11-24T23:03:06.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:03:06.175 [DEBUG] [Thread-198513] [transport.py] [_log()] starting thread (client mode): 0xd31f5450
2025-11-24T23:03:06.176 [DEBUG] [Thread-198513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:03:06.190 [DEBUG] [Thread-198513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:03:06.191 [INFO] [Thread-198513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:03:06.193 [DEBUG] [Thread-198513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:03:06.193 [DEBUG] [Thread-198513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] client lang: <none>
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] server lang: <none>
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] kex follows: False
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] Compression: none
2025-11-24T23:03:06.194 [DEBUG] [Thread-198513] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:03:06.214 [DEBUG] [Thread-198513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:03:06.214 [DEBUG] [Thread-198513] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:03:06.215 [DEBUG] [Thread-198513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:03:06.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:03:06.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:03:06.256 [DEBUG] [Thread-198513] [transport.py] [_log()] userauth is OK
2025-11-24T23:03:06.256 [DEBUG] [Thread-198513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:03:06.256 [DEBUG] [Thread-198513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:03:06.256 [DEBUG] [Thread-198513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:03:06.256 [DEBUG] [Thread-198513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:03:06.279 [INFO] [Thread-198513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:03:06.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:03:06.918 [DEBUG] [Thread-198513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:03:06.918 [DEBUG] [Thread-198513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:03:06.919 [DEBUG] [Thread-198513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:03:06.959 [DEBUG] [Thread-198513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:03:06.959 [DEBUG] [Thread-198513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:03:06.961 [DEBUG] [Thread-198513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:03:06.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:03:06.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:03:06.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:03:06.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:03:06.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:03:06.980 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:03:06.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:03:06.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:03:06.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:03:06.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.876782 -999.00  +13.90  27.87     41   +0.90 1 1 1 1 1     0    0 12.19 -52.15 ZNESW 20.1 27.9 171.6 30.5 14.2 -24.7 14.1 -24.2 13.9 -23.2 14.2 -24.1
2025-11-24T23:03:06.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:03:06.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:03:06.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.876782
2025-11-24T23:03:06.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:03:06.985 [DEBUG] [Thread-198513] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:03:06.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:03:06.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:03:06.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:03:06.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:03:06.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:02:55', tmtdew=14.86, humidity=35.8, cloud=0.0, wind=33.21, temperature=14.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:02:55', seeing=0.64, atlas_timestamp='2025-11-24T21:02:33.965', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:00:00')
2025-11-24T23:03:07.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:03:07.073 [DEBUG] [Thread-198516] [transport.py] [_log()] starting thread (client mode): 0xd07cce20
2025-11-24T23:03:07.073 [DEBUG] [Thread-198516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:03:07.089 [DEBUG] [Thread-198516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:03:07.089 [INFO] [Thread-198516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] client lang: <none>
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] server lang: <none>
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] kex follows: False
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:03:07.096 [DEBUG] [Thread-198516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:03:07.097 [DEBUG] [Thread-198516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:03:07.097 [DEBUG] [Thread-198516] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:03:07.097 [DEBUG] [Thread-198516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:03:07.097 [DEBUG] [Thread-198516] [transport.py] [_log()] Compression: none
2025-11-24T23:03:07.097 [DEBUG] [Thread-198516] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:03:07.151 [DEBUG] [Thread-198516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:03:07.151 [DEBUG] [Thread-198516] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:03:07.151 [DEBUG] [Thread-198516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:03:07.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:03:07.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:03:07.208 [DEBUG] [Thread-198516] [transport.py] [_log()] userauth is OK
2025-11-24T23:03:07.208 [DEBUG] [Thread-198516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:03:07.208 [DEBUG] [Thread-198516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:03:07.208 [DEBUG] [Thread-198516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:03:07.208 [DEBUG] [Thread-198516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:03:07.222 [INFO] [Thread-198516] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:03:07.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:03:07.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:03:07.307 [DEBUG] [Thread-198518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:03:08.087 [DEBUG] [Thread-198516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:03:08.087 [DEBUG] [Thread-198516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:03:08.135 [DEBUG] [Thread-198516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:03:08.135 [DEBUG] [Thread-198516] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:03:08.143 [DEBUG] [Thread-198516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:03:08.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:03:08.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-11-24T23:03:08.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-11-24T23:03:08.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:03:08.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:03:08.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:03:08.175 [DEBUG] [Thread-198516] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:03:22.380 [DEBUG] [Thread-198519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:03:37.474 [DEBUG] [Thread-198520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:03:38.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:03:38.201 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:03:38.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-11-24T23:03:39.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 3, 28), 14.86, 35.8, 0.0, 30.97, 14.09, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:03:39.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:03:28
2025-11-24T23:03:39.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:03:39.438 [DEBUG] [Thread-198521] [transport.py] [_log()] starting thread (client mode): 0xd0785030
2025-11-24T23:03:39.439 [DEBUG] [Thread-198521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:03:39.451 [DEBUG] [Thread-198521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:03:39.451 [INFO] [Thread-198521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:03:39.457 [DEBUG] [Thread-198521] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:03:39.458 [DEBUG] [Thread-198521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:03:39.458 [DEBUG] [Thread-198521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:03:39.458 [DEBUG] [Thread-198521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:03:39.458 [DEBUG] [Thread-198521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:03:39.458 [DEBUG] [Thread-198521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:03:39.458 [DEBUG] [Thread-198521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:03:39.458 [DEBUG] [Thread-198521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:03:39.458 [DEBUG] [Thread-198521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:03:39.458 [DEBUG] [Thread-198521] [transport.py] [_log()] client lang: <none>
2025-11-24T23:03:39.458 [DEBUG] [Thread-198521] [transport.py] [_log()] server lang: <none>
2025-11-24T23:03:39.459 [DEBUG] [Thread-198521] [transport.py] [_log()] kex follows: False
2025-11-24T23:03:39.459 [DEBUG] [Thread-198521] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:03:39.459 [DEBUG] [Thread-198521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:03:39.459 [DEBUG] [Thread-198521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:03:39.460 [DEBUG] [Thread-198521] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:03:39.460 [DEBUG] [Thread-198521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:03:39.460 [DEBUG] [Thread-198521] [transport.py] [_log()] Compression: none
2025-11-24T23:03:39.460 [DEBUG] [Thread-198521] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:03:39.497 [DEBUG] [Thread-198521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:03:39.503 [DEBUG] [Thread-198521] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:03:39.505 [DEBUG] [Thread-198521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:03:39.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:03:39.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:03:39.511 [DEBUG] [Thread-198521] [transport.py] [_log()] userauth is OK
2025-11-24T23:03:39.511 [DEBUG] [Thread-198521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:03:39.512 [DEBUG] [Thread-198521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:03:39.512 [DEBUG] [Thread-198521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:03:39.512 [DEBUG] [Thread-198521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:03:39.540 [INFO] [Thread-198521] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:03:39.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:03:40.142 [DEBUG] [Thread-198521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:03:40.143 [DEBUG] [Thread-198521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:03:40.143 [DEBUG] [Thread-198521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:03:40.183 [DEBUG] [Thread-198521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:03:40.184 [DEBUG] [Thread-198521] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:03:40.187 [DEBUG] [Thread-198521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:03:40.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:03:40.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:03:40.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:03:40.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:03:40.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:03:40.215 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:03:40.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:03:40.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:03:40.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:03:40.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.877130 -999.00  +13.90  26.06     41   +0.90 1 1 1 1 1     0    0 11.96 -50.22 ZNESW 22.9 26.1 169.6 32.2 14.3 -24.7 14.1 -24.3 13.9 -23.1 14.2 -24.0
2025-11-24T23:03:40.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:03:40.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:03:40.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.877130
2025-11-24T23:03:40.224 [DEBUG] [Thread-198521] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:03:40.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:03:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:03:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:03:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:03:40.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:03:40.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:03:28', tmtdew=14.86, humidity=35.8, cloud=0.0, wind=30.97, temperature=14.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:03:28', seeing=0.65, atlas_timestamp='2025-11-24T21:03:04.032', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:00:00')
2025-11-24T23:03:40.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:03:40.343 [DEBUG] [Thread-198524] [transport.py] [_log()] starting thread (client mode): 0xd07ceaa0
2025-11-24T23:03:40.343 [DEBUG] [Thread-198524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:03:40.358 [DEBUG] [Thread-198524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:03:40.358 [INFO] [Thread-198524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:03:40.366 [DEBUG] [Thread-198524] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:03:40.366 [DEBUG] [Thread-198524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:03:40.366 [DEBUG] [Thread-198524] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:03:40.366 [DEBUG] [Thread-198524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:03:40.367 [DEBUG] [Thread-198524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:03:40.367 [DEBUG] [Thread-198524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:03:40.367 [DEBUG] [Thread-198524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:03:40.367 [DEBUG] [Thread-198524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:03:40.367 [DEBUG] [Thread-198524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:03:40.367 [DEBUG] [Thread-198524] [transport.py] [_log()] client lang: <none>
2025-11-24T23:03:40.367 [DEBUG] [Thread-198524] [transport.py] [_log()] server lang: <none>
2025-11-24T23:03:40.367 [DEBUG] [Thread-198524] [transport.py] [_log()] kex follows: False
2025-11-24T23:03:40.367 [DEBUG] [Thread-198524] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:03:40.368 [DEBUG] [Thread-198524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:03:40.368 [DEBUG] [Thread-198524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:03:40.368 [DEBUG] [Thread-198524] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:03:40.368 [DEBUG] [Thread-198524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:03:40.369 [DEBUG] [Thread-198524] [transport.py] [_log()] Compression: none
2025-11-24T23:03:40.369 [DEBUG] [Thread-198524] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:03:40.425 [DEBUG] [Thread-198524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:03:40.426 [DEBUG] [Thread-198524] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:03:40.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:03:40.427 [DEBUG] [Thread-198524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:03:40.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:03:40.494 [DEBUG] [Thread-198524] [transport.py] [_log()] userauth is OK
2025-11-24T23:03:40.494 [DEBUG] [Thread-198524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:03:40.494 [DEBUG] [Thread-198524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:03:40.494 [DEBUG] [Thread-198524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:03:40.494 [DEBUG] [Thread-198524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:03:40.520 [INFO] [Thread-198524] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:03:40.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:03:40.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:03:41.402 [DEBUG] [Thread-198524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:03:41.403 [DEBUG] [Thread-198524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:03:41.450 [DEBUG] [Thread-198524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:03:41.450 [DEBUG] [Thread-198524] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:03:41.459 [DEBUG] [Thread-198524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:03:41.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:03:41.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-11-24T23:03:41.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-11-24T23:03:41.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:03:41.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:03:41.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:03:41.496 [DEBUG] [Thread-198524] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:03:50.055 [DEBUG] [Thread-198526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:03:51.133 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:03:51.134 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:03:52.552 [DEBUG] [Thread-198527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:04:07.738 [DEBUG] [Thread-198528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:04:11.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:04:11.521 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:04:11.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-11-24T23:04:12.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 4, 1), 14.81, 35.92, 0.0, 31.09, 14.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:04:12.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:04:01
2025-11-24T23:04:12.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:04:12.770 [DEBUG] [Thread-198529] [transport.py] [_log()] starting thread (client mode): 0xd3153a60
2025-11-24T23:04:12.770 [DEBUG] [Thread-198529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:04:12.776 [DEBUG] [Thread-198529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:04:12.777 [INFO] [Thread-198529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:04:12.780 [DEBUG] [Thread-198529] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] client lang: <none>
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] server lang: <none>
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] kex follows: False
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:04:12.781 [DEBUG] [Thread-198529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:04:12.782 [DEBUG] [Thread-198529] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:04:12.782 [DEBUG] [Thread-198529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:04:12.782 [DEBUG] [Thread-198529] [transport.py] [_log()] Compression: none
2025-11-24T23:04:12.782 [DEBUG] [Thread-198529] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:04:12.808 [DEBUG] [Thread-198529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:04:12.812 [DEBUG] [Thread-198529] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:04:12.813 [DEBUG] [Thread-198529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:04:12.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:04:12.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:04:12.853 [DEBUG] [Thread-198529] [transport.py] [_log()] userauth is OK
2025-11-24T23:04:12.854 [DEBUG] [Thread-198529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:04:12.854 [DEBUG] [Thread-198529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:04:12.854 [DEBUG] [Thread-198529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:04:12.854 [DEBUG] [Thread-198529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:04:12.893 [INFO] [Thread-198529] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:04:12.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:04:13.541 [DEBUG] [Thread-198529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:04:13.541 [DEBUG] [Thread-198529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:04:13.542 [DEBUG] [Thread-198529] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:04:13.582 [DEBUG] [Thread-198529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:04:13.582 [DEBUG] [Thread-198529] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:04:13.586 [DEBUG] [Thread-198529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:04:13.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:04:13.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:04:13.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:04:13.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:04:13.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:04:13.612 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:04:13.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:04:13.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:04:13.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:04:13.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.877477 -999.00  +13.90  24.31     41   +1.00 1 1 1 1 1     0    0 11.81 -56.52 ZNESW 18.8 24.3 163.6 35.7 14.3 -24.8 14.1 -24.2 13.9 -23.1 14.2 -24.0
2025-11-24T23:04:13.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:04:13.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:04:13.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.877477
2025-11-24T23:04:13.619 [DEBUG] [Thread-198529] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:04:13.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:04:13.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:04:13.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:04:13.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:04:13.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:04:13.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:04:01', tmtdew=14.81, humidity=35.92, cloud=0.0, wind=31.09, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:04:01', seeing=0.58, atlas_timestamp='2025-11-24T21:03:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:00:00')
2025-11-24T23:04:13.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:04:13.739 [DEBUG] [Thread-198532] [transport.py] [_log()] starting thread (client mode): 0xd31497b0
2025-11-24T23:04:13.739 [DEBUG] [Thread-198532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:04:13.754 [DEBUG] [Thread-198532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:04:13.754 [INFO] [Thread-198532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:04:13.761 [DEBUG] [Thread-198532] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:04:13.761 [DEBUG] [Thread-198532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:04:13.761 [DEBUG] [Thread-198532] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] client lang: <none>
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] server lang: <none>
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] kex follows: False
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] Compression: none
2025-11-24T23:04:13.762 [DEBUG] [Thread-198532] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:04:13.820 [DEBUG] [Thread-198532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:04:13.821 [DEBUG] [Thread-198532] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:04:13.822 [DEBUG] [Thread-198532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:04:13.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:04:13.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:04:13.881 [DEBUG] [Thread-198532] [transport.py] [_log()] userauth is OK
2025-11-24T23:04:13.881 [DEBUG] [Thread-198532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:04:13.881 [DEBUG] [Thread-198532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:04:13.882 [DEBUG] [Thread-198532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:04:13.882 [DEBUG] [Thread-198532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:04:13.903 [INFO] [Thread-198532] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:04:13.903 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:04:13.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:04:14.736 [DEBUG] [Thread-198532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:04:14.737 [DEBUG] [Thread-198532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:04:14.785 [DEBUG] [Thread-198532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:04:14.785 [DEBUG] [Thread-198532] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:04:14.794 [DEBUG] [Thread-198532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:04:14.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:04:14.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-11-24T23:04:14.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:04:14.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:04:14.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:04:14.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:04:14.842 [DEBUG] [Thread-198532] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:04:20.032 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:04:22.818 [DEBUG] [Thread-198534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:04:37.919 [DEBUG] [Thread-198535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:04:44.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:04:44.868 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:04:44.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-11-24T23:04:45.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 4, 34), 14.74, 35.95, 0.0, 29.75, 14.0, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:04:45.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:04:34
2025-11-24T23:04:45.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:04:46.065 [DEBUG] [Thread-198536] [transport.py] [_log()] starting thread (client mode): 0xd31f4a60
2025-11-24T23:04:46.066 [DEBUG] [Thread-198536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:04:46.079 [DEBUG] [Thread-198536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:04:46.079 [INFO] [Thread-198536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:04:46.085 [DEBUG] [Thread-198536] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:04:46.085 [DEBUG] [Thread-198536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:04:46.085 [DEBUG] [Thread-198536] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] client lang: <none>
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] server lang: <none>
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] kex follows: False
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:04:46.086 [DEBUG] [Thread-198536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:04:46.087 [DEBUG] [Thread-198536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:04:46.087 [DEBUG] [Thread-198536] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:04:46.087 [DEBUG] [Thread-198536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:04:46.087 [DEBUG] [Thread-198536] [transport.py] [_log()] Compression: none
2025-11-24T23:04:46.087 [DEBUG] [Thread-198536] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:04:46.116 [DEBUG] [Thread-198536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:04:46.120 [DEBUG] [Thread-198536] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:04:46.122 [DEBUG] [Thread-198536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:04:46.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:04:46.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:04:46.128 [DEBUG] [Thread-198536] [transport.py] [_log()] userauth is OK
2025-11-24T23:04:46.128 [DEBUG] [Thread-198536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:04:46.128 [DEBUG] [Thread-198536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:04:46.128 [DEBUG] [Thread-198536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:04:46.128 [DEBUG] [Thread-198536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:04:46.155 [INFO] [Thread-198536] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:04:46.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:04:46.803 [DEBUG] [Thread-198536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:04:46.803 [DEBUG] [Thread-198536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:04:46.804 [DEBUG] [Thread-198536] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:04:46.844 [DEBUG] [Thread-198536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:04:46.844 [DEBUG] [Thread-198536] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:04:46.848 [DEBUG] [Thread-198536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:04:46.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:04:46.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:04:46.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:04:46.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:04:46.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:04:46.872 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:04:46.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:04:46.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:04:46.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:04:46.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.878171 -999.00  +13.90  23.47     41   +0.90 1 1 1 1 1     0    0 12.00 -56.26 ZNESW 19.1 23.5 167.2 30.9 14.2 -24.7 14.1 -24.2 13.9 -23.0 14.2 -24.1
2025-11-24T23:04:46.875 [DEBUG] [Thread-198536] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:04:46.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:04:46.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:04:46.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.878171
2025-11-24T23:04:46.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:04:46.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:04:46.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:04:46.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:04:46.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:04:46.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:04:34', tmtdew=14.74, humidity=35.95, cloud=0.0, wind=29.75, temperature=14.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:04:34', seeing=0.63, atlas_timestamp='2025-11-24T21:04:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:00:00')
2025-11-24T23:04:46.979 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:04:46.993 [DEBUG] [Thread-198539] [transport.py] [_log()] starting thread (client mode): 0xd31f4310
2025-11-24T23:04:46.993 [DEBUG] [Thread-198539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:04:47.008 [DEBUG] [Thread-198539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:04:47.008 [INFO] [Thread-198539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:04:47.016 [DEBUG] [Thread-198539] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:04:47.016 [DEBUG] [Thread-198539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:04:47.016 [DEBUG] [Thread-198539] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:04:47.016 [DEBUG] [Thread-198539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] client lang: <none>
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] server lang: <none>
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] kex follows: False
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:04:47.017 [DEBUG] [Thread-198539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:04:47.018 [DEBUG] [Thread-198539] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:04:47.018 [DEBUG] [Thread-198539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:04:47.018 [DEBUG] [Thread-198539] [transport.py] [_log()] Compression: none
2025-11-24T23:04:47.018 [DEBUG] [Thread-198539] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:04:47.077 [DEBUG] [Thread-198539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:04:47.078 [DEBUG] [Thread-198539] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:04:47.078 [DEBUG] [Thread-198539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:04:47.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:04:47.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:04:47.133 [DEBUG] [Thread-198539] [transport.py] [_log()] userauth is OK
2025-11-24T23:04:47.133 [DEBUG] [Thread-198539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:04:47.133 [DEBUG] [Thread-198539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:04:47.133 [DEBUG] [Thread-198539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:04:47.133 [DEBUG] [Thread-198539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:04:47.152 [INFO] [Thread-198539] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:04:47.153 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:04:47.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:04:48.048 [DEBUG] [Thread-198539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:04:48.049 [DEBUG] [Thread-198539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:04:48.096 [DEBUG] [Thread-198539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:04:48.096 [DEBUG] [Thread-198539] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:04:48.104 [DEBUG] [Thread-198539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:04:48.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:04:48.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-11-24T23:04:48.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-11-24T23:04:48.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:04:48.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:04:48.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:04:48.159 [DEBUG] [Thread-198539] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:04:50.357 [DEBUG] [Thread-198541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:04:51.340 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:04:51.342 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:04:52.975 [DEBUG] [Thread-198542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:05:08.101 [DEBUG] [Thread-198543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:05:18.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:05:18.192 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:05:18.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-11-24T23:05:19.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 5, 7), 14.71, 36.05, 0.0, 32.75, 14.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:05:19.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:05:07
2025-11-24T23:05:19.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:05:19.598 [DEBUG] [Thread-198544] [transport.py] [_log()] starting thread (client mode): 0xd31f4c40
2025-11-24T23:05:19.599 [DEBUG] [Thread-198544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:05:19.611 [DEBUG] [Thread-198544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:05:19.611 [INFO] [Thread-198544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:05:19.618 [DEBUG] [Thread-198544] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:05:19.618 [DEBUG] [Thread-198544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:05:19.618 [DEBUG] [Thread-198544] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:05:19.618 [DEBUG] [Thread-198544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:05:19.618 [DEBUG] [Thread-198544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:05:19.618 [DEBUG] [Thread-198544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:05:19.618 [DEBUG] [Thread-198544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:05:19.618 [DEBUG] [Thread-198544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:05:19.619 [DEBUG] [Thread-198544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:05:19.619 [DEBUG] [Thread-198544] [transport.py] [_log()] client lang: <none>
2025-11-24T23:05:19.619 [DEBUG] [Thread-198544] [transport.py] [_log()] server lang: <none>
2025-11-24T23:05:19.619 [DEBUG] [Thread-198544] [transport.py] [_log()] kex follows: False
2025-11-24T23:05:19.619 [DEBUG] [Thread-198544] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:05:19.620 [DEBUG] [Thread-198544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:05:19.620 [DEBUG] [Thread-198544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:05:19.620 [DEBUG] [Thread-198544] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:05:19.621 [DEBUG] [Thread-198544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:05:19.621 [DEBUG] [Thread-198544] [transport.py] [_log()] Compression: none
2025-11-24T23:05:19.621 [DEBUG] [Thread-198544] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:05:19.659 [DEBUG] [Thread-198544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:05:19.664 [DEBUG] [Thread-198544] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:05:19.666 [DEBUG] [Thread-198544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:05:19.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:05:19.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:05:19.672 [DEBUG] [Thread-198544] [transport.py] [_log()] userauth is OK
2025-11-24T23:05:19.672 [DEBUG] [Thread-198544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:05:19.672 [DEBUG] [Thread-198544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:05:19.672 [DEBUG] [Thread-198544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:05:19.672 [DEBUG] [Thread-198544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:05:19.700 [INFO] [Thread-198544] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:05:19.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:05:20.245 [DEBUG] [Thread-198544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:05:20.245 [DEBUG] [Thread-198544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:05:20.254 [DEBUG] [Thread-198544] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:05:20.286 [DEBUG] [Thread-198544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:05:20.286 [DEBUG] [Thread-198544] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:05:20.288 [DEBUG] [Thread-198544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:05:20.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:05:20.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:05:20.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:05:20.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:05:20.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:05:20.314 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:05:20.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:05:20.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:05:20.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:05:20.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.878518 -999.00  +13.90  25.13     41   +1.00 1 1 1 1 1     0    0 11.86 -53.09 ZNESW 24.8 25.1 170.6 34.3 14.3 -24.7 14.1 -24.1 13.8 -23.0 14.2 -23.9
2025-11-24T23:05:20.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:05:20.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:05:20.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.878518
2025-11-24T23:05:20.321 [DEBUG] [Thread-198544] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:05:20.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:05:20.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:05:20.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:05:20.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:05:20.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:05:20.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:05:07', tmtdew=14.71, humidity=36.05, cloud=0.0, wind=32.75, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:05:07', seeing=0.67, atlas_timestamp='2025-11-24T21:05:03.955', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:04:00')
2025-11-24T23:05:20.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:05:20.419 [DEBUG] [Thread-198547] [transport.py] [_log()] starting thread (client mode): 0xd31504c0
2025-11-24T23:05:20.420 [DEBUG] [Thread-198547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:05:20.434 [DEBUG] [Thread-198547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:05:20.434 [INFO] [Thread-198547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] client lang: <none>
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] server lang: <none>
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] kex follows: False
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] Compression: none
2025-11-24T23:05:20.442 [DEBUG] [Thread-198547] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:05:20.503 [DEBUG] [Thread-198547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:05:20.503 [DEBUG] [Thread-198547] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:05:20.503 [DEBUG] [Thread-198547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:05:20.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:05:20.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:05:20.561 [DEBUG] [Thread-198547] [transport.py] [_log()] userauth is OK
2025-11-24T23:05:20.561 [DEBUG] [Thread-198547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:05:20.561 [DEBUG] [Thread-198547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:05:20.561 [DEBUG] [Thread-198547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:05:20.561 [DEBUG] [Thread-198547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:05:20.575 [INFO] [Thread-198547] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:05:20.575 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:05:20.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:05:21.416 [DEBUG] [Thread-198547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:05:21.416 [DEBUG] [Thread-198547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:05:21.463 [DEBUG] [Thread-198547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:05:21.463 [DEBUG] [Thread-198547] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:05:21.472 [DEBUG] [Thread-198547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:05:21.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:05:21.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-11-24T23:05:21.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-11-24T23:05:21.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:05:21.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:05:21.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:05:21.512 [DEBUG] [Thread-198547] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:05:23.159 [DEBUG] [Thread-198549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:05:38.258 [DEBUG] [Thread-198550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:05:50.632 [DEBUG] [Thread-198551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:05:51.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:05:51.536 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:05:51.546 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:05:51.551 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:05:51.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-11-24T23:05:52.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 5, 39), 14.72, 36.02, 0.0, 35.04, 14.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:05:52.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:05:39
2025-11-24T23:05:52.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:05:52.692 [DEBUG] [Thread-198552] [transport.py] [_log()] starting thread (client mode): 0xd314b790
2025-11-24T23:05:52.692 [DEBUG] [Thread-198552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:05:52.701 [DEBUG] [Thread-198552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:05:52.701 [INFO] [Thread-198552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] client lang: <none>
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] server lang: <none>
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] kex follows: False
2025-11-24T23:05:52.706 [DEBUG] [Thread-198552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:05:52.707 [DEBUG] [Thread-198552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:05:52.707 [DEBUG] [Thread-198552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:05:52.707 [DEBUG] [Thread-198552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:05:52.707 [DEBUG] [Thread-198552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:05:52.707 [DEBUG] [Thread-198552] [transport.py] [_log()] Compression: none
2025-11-24T23:05:52.708 [DEBUG] [Thread-198552] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:05:52.741 [DEBUG] [Thread-198552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:05:52.746 [DEBUG] [Thread-198552] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:05:52.750 [DEBUG] [Thread-198552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:05:52.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:05:52.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:05:52.755 [DEBUG] [Thread-198552] [transport.py] [_log()] userauth is OK
2025-11-24T23:05:52.755 [DEBUG] [Thread-198552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:05:52.755 [DEBUG] [Thread-198552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:05:52.755 [DEBUG] [Thread-198552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:05:52.756 [DEBUG] [Thread-198552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:05:52.795 [INFO] [Thread-198552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:05:52.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:05:53.313 [DEBUG] [Thread-198554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:05:53.373 [DEBUG] [Thread-198552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:05:53.373 [DEBUG] [Thread-198552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:05:53.374 [DEBUG] [Thread-198552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:05:53.414 [DEBUG] [Thread-198552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:05:53.414 [DEBUG] [Thread-198552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:05:53.417 [DEBUG] [Thread-198552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:05:53.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:05:53.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:05:53.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:05:53.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:05:53.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:05:53.438 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:05:53.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:05:53.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:05:53.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:05:53.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.878866 -999.00  +13.90  19.07     41   +1.00 1 1 1 1 1     0    0 12.07 -51.19 ZNESW 21.3 19.1 165.0 32.3 14.2 -24.9 14.1 -24.3 13.9 -23.1 14.2 -24.0
2025-11-24T23:05:53.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:05:53.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:05:53.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.878866
2025-11-24T23:05:53.446 [DEBUG] [Thread-198552] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:05:53.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:05:53.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:05:53.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:05:53.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:05:53.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:05:53.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:05:39', tmtdew=14.72, humidity=36.02, cloud=0.0, wind=35.04, temperature=14.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:05:40', seeing=0.67, atlas_timestamp='2025-11-24T21:05:34.022', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:04:00')
2025-11-24T23:05:53.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:05:53.541 [DEBUG] [Thread-198556] [transport.py] [_log()] starting thread (client mode): 0xc9b809d0
2025-11-24T23:05:53.541 [DEBUG] [Thread-198556] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:05:53.556 [DEBUG] [Thread-198556] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:05:53.556 [INFO] [Thread-198556] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:05:53.563 [DEBUG] [Thread-198556] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:05:53.563 [DEBUG] [Thread-198556] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] client lang: <none>
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] server lang: <none>
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] kex follows: False
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] Compression: none
2025-11-24T23:05:53.564 [DEBUG] [Thread-198556] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:05:53.620 [DEBUG] [Thread-198556] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:05:53.621 [DEBUG] [Thread-198556] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:05:53.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:05:53.622 [DEBUG] [Thread-198556] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:05:53.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:05:53.677 [DEBUG] [Thread-198556] [transport.py] [_log()] userauth is OK
2025-11-24T23:05:53.677 [DEBUG] [Thread-198556] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:05:53.677 [DEBUG] [Thread-198556] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:05:53.678 [DEBUG] [Thread-198556] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:05:53.678 [DEBUG] [Thread-198556] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:05:53.698 [INFO] [Thread-198556] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:05:53.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:05:53.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:05:54.505 [DEBUG] [Thread-198556] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:05:54.505 [DEBUG] [Thread-198556] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:05:54.553 [DEBUG] [Thread-198556] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:05:54.553 [DEBUG] [Thread-198556] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:05:54.561 [DEBUG] [Thread-198556] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:05:54.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:05:54.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:05:54.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-11-24T23:05:54.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:05:54.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:05:54.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:05:54.602 [DEBUG] [Thread-198556] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:06:08.382 [DEBUG] [Thread-198558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:06:23.510 [DEBUG] [Thread-198559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:06:24.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:06:24.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:06:24.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-11-24T23:06:25.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 6, 13), 14.72, 36.03, 0.0, 34.81, 14.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:06:25.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:06:13
2025-11-24T23:06:25.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:06:25.825 [DEBUG] [Thread-198560] [transport.py] [_log()] starting thread (client mode): 0xd317f430
2025-11-24T23:06:25.826 [DEBUG] [Thread-198560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:06:25.836 [DEBUG] [Thread-198560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:06:25.837 [INFO] [Thread-198560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] client lang: <none>
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] server lang: <none>
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] kex follows: False
2025-11-24T23:06:25.842 [DEBUG] [Thread-198560] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:06:25.843 [DEBUG] [Thread-198560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:06:25.843 [DEBUG] [Thread-198560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:06:25.843 [DEBUG] [Thread-198560] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:06:25.843 [DEBUG] [Thread-198560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:06:25.843 [DEBUG] [Thread-198560] [transport.py] [_log()] Compression: none
2025-11-24T23:06:25.843 [DEBUG] [Thread-198560] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:06:25.864 [DEBUG] [Thread-198560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:06:25.868 [DEBUG] [Thread-198560] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:06:25.869 [DEBUG] [Thread-198560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:06:25.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:06:25.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:06:25.872 [DEBUG] [Thread-198560] [transport.py] [_log()] userauth is OK
2025-11-24T23:06:25.873 [DEBUG] [Thread-198560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:06:25.873 [DEBUG] [Thread-198560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:06:25.873 [DEBUG] [Thread-198560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:06:25.873 [DEBUG] [Thread-198560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:06:25.891 [INFO] [Thread-198560] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:06:25.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:06:26.500 [DEBUG] [Thread-198560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:06:26.500 [DEBUG] [Thread-198560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:06:26.501 [DEBUG] [Thread-198560] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:06:26.541 [DEBUG] [Thread-198560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:06:26.541 [DEBUG] [Thread-198560] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:06:26.545 [DEBUG] [Thread-198560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:06:26.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:06:26.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:06:26.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:06:26.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:06:26.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:06:26.567 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:06:26.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:06:26.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:06:26.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:06:26.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.879213 -999.00  +13.80  20.88     41   +0.90 1 1 1 1 1     0    0 11.81 -53.86 ZNESW 24.5 20.9 163.1 25.4 14.2 -24.8 14.1 -24.2 13.8 -23.1 14.2 -24.1
2025-11-24T23:06:26.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:06:26.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:06:26.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.879213
2025-11-24T23:06:26.574 [DEBUG] [Thread-198560] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:06:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:06:26.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:06:26.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:06:26.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:06:26.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:06:26.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:06:13', tmtdew=14.72, humidity=36.03, cloud=0.0, wind=34.81, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:06:13', seeing=0.64, atlas_timestamp='2025-11-24T21:06:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:04:00')
2025-11-24T23:06:26.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:06:26.672 [DEBUG] [Thread-198563] [transport.py] [_log()] starting thread (client mode): 0xd07cce20
2025-11-24T23:06:26.673 [DEBUG] [Thread-198563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:06:26.687 [DEBUG] [Thread-198563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:06:26.687 [INFO] [Thread-198563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] client lang: <none>
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] server lang: <none>
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] kex follows: False
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] Compression: none
2025-11-24T23:06:26.696 [DEBUG] [Thread-198563] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:06:26.751 [DEBUG] [Thread-198563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:06:26.751 [DEBUG] [Thread-198563] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:06:26.751 [DEBUG] [Thread-198563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:06:26.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:06:26.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:06:26.811 [DEBUG] [Thread-198563] [transport.py] [_log()] userauth is OK
2025-11-24T23:06:26.811 [DEBUG] [Thread-198563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:06:26.811 [DEBUG] [Thread-198563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:06:26.811 [DEBUG] [Thread-198563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:06:26.811 [DEBUG] [Thread-198563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:06:26.830 [INFO] [Thread-198563] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:06:26.831 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:06:26.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:06:27.670 [DEBUG] [Thread-198563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:06:27.671 [DEBUG] [Thread-198563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:06:27.718 [DEBUG] [Thread-198563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:06:27.719 [DEBUG] [Thread-198563] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:06:27.727 [DEBUG] [Thread-198563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:06:27.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:06:27.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-11-24T23:06:27.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-11-24T23:06:27.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:06:27.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:06:27.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:06:27.760 [DEBUG] [Thread-198563] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:06:38.554 [DEBUG] [Thread-198565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:06:50.898 [DEBUG] [Thread-198566 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:06:51.757 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:06:51.759 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:06:53.634 [DEBUG] [Thread-198567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:06:57.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:06:57.792 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:06:57.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-11-24T23:06:58.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 6, 46), 14.76, 36.05, 0.0, 32.91, 14.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:06:58.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:06:46
2025-11-24T23:06:58.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:06:59.057 [DEBUG] [Thread-198568] [transport.py] [_log()] starting thread (client mode): 0xd317d450
2025-11-24T23:06:59.058 [DEBUG] [Thread-198568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:06:59.066 [DEBUG] [Thread-198568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:06:59.066 [INFO] [Thread-198568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:06:59.069 [DEBUG] [Thread-198568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:06:59.069 [DEBUG] [Thread-198568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:06:59.069 [DEBUG] [Thread-198568] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:06:59.069 [DEBUG] [Thread-198568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:06:59.069 [DEBUG] [Thread-198568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:06:59.069 [DEBUG] [Thread-198568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:06:59.069 [DEBUG] [Thread-198568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:06:59.069 [DEBUG] [Thread-198568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:06:59.069 [DEBUG] [Thread-198568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:06:59.069 [DEBUG] [Thread-198568] [transport.py] [_log()] client lang: <none>
2025-11-24T23:06:59.070 [DEBUG] [Thread-198568] [transport.py] [_log()] server lang: <none>
2025-11-24T23:06:59.070 [DEBUG] [Thread-198568] [transport.py] [_log()] kex follows: False
2025-11-24T23:06:59.070 [DEBUG] [Thread-198568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:06:59.070 [DEBUG] [Thread-198568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:06:59.070 [DEBUG] [Thread-198568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:06:59.070 [DEBUG] [Thread-198568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:06:59.070 [DEBUG] [Thread-198568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:06:59.070 [DEBUG] [Thread-198568] [transport.py] [_log()] Compression: none
2025-11-24T23:06:59.070 [DEBUG] [Thread-198568] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:06:59.095 [DEBUG] [Thread-198568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:06:59.098 [DEBUG] [Thread-198568] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:06:59.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:06:59.100 [DEBUG] [Thread-198568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:06:59.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:06:59.137 [DEBUG] [Thread-198568] [transport.py] [_log()] userauth is OK
2025-11-24T23:06:59.137 [DEBUG] [Thread-198568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:06:59.137 [DEBUG] [Thread-198568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:06:59.137 [DEBUG] [Thread-198568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:06:59.137 [DEBUG] [Thread-198568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:06:59.162 [INFO] [Thread-198568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:06:59.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:06:59.938 [DEBUG] [Thread-198568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:06:59.938 [DEBUG] [Thread-198568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:06:59.939 [DEBUG] [Thread-198568] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:06:59.979 [DEBUG] [Thread-198568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:06:59.979 [DEBUG] [Thread-198568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:06:59.981 [DEBUG] [Thread-198568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:06:59.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:06:59.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:06:59.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:06:59.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:07:00.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:07:00.001 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:07:00.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:07:00.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:07:00.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:07:00.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.879213 -999.00  +13.80  20.88     41   +0.90 1 1 1 1 1     0    0 11.81 -53.86 ZNESW 24.5 20.9 163.1 25.4 14.2 -24.8 14.1 -24.2 13.8 -23.1 14.2 -24.1
2025-11-24T23:07:00.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:07:00.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:07:00.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.879213
2025-11-24T23:07:00.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:07:00.005 [DEBUG] [Thread-198568] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:07:00.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:07:00.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:07:00.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:07:00.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:07:00.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:06:46', tmtdew=14.76, humidity=36.05, cloud=0.0, wind=32.91, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:06:46', seeing=0.62, atlas_timestamp='2025-11-24T21:06:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:04:00')
2025-11-24T23:07:00.082 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:07:00.093 [DEBUG] [Thread-198571] [transport.py] [_log()] starting thread (client mode): 0xd07f94b0
2025-11-24T23:07:00.093 [DEBUG] [Thread-198571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:07:00.108 [DEBUG] [Thread-198571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:07:00.108 [INFO] [Thread-198571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] client lang: <none>
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] server lang: <none>
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] kex follows: False
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] Compression: none
2025-11-24T23:07:00.116 [DEBUG] [Thread-198571] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:07:00.171 [DEBUG] [Thread-198571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:07:00.171 [DEBUG] [Thread-198571] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:07:00.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:07:00.172 [DEBUG] [Thread-198571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:07:00.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:07:00.228 [DEBUG] [Thread-198571] [transport.py] [_log()] userauth is OK
2025-11-24T23:07:00.228 [DEBUG] [Thread-198571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:07:00.228 [DEBUG] [Thread-198571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:07:00.228 [DEBUG] [Thread-198571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:07:00.228 [DEBUG] [Thread-198571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:07:00.242 [INFO] [Thread-198571] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:07:00.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:07:00.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:07:01.096 [DEBUG] [Thread-198571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:07:01.096 [DEBUG] [Thread-198571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:07:01.144 [DEBUG] [Thread-198571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:07:01.144 [DEBUG] [Thread-198571] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:07:01.153 [DEBUG] [Thread-198571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:07:01.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:07:01.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:07:01.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:07:01.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:07:01.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:07:01.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:07:01.185 [DEBUG] [Thread-198571] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:07:08.690 [DEBUG] [Thread-198573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:07:24.144 [DEBUG] [Thread-198574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:07:31.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:07:31.212 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:07: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-11-24T23:07:32.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 7, 19), 14.74, 36.1, 0.0, 32.73, 14.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:07:32.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:07:19
2025-11-24T23:07:32.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:07:32.452 [DEBUG] [Thread-198575] [transport.py] [_log()] starting thread (client mode): 0xd3152530
2025-11-24T23:07:32.453 [DEBUG] [Thread-198575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:07:32.465 [DEBUG] [Thread-198575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:07:32.465 [INFO] [Thread-198575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:07:32.470 [DEBUG] [Thread-198575] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] client lang: <none>
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] server lang: <none>
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] kex follows: False
2025-11-24T23:07:32.471 [DEBUG] [Thread-198575] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:07:32.472 [DEBUG] [Thread-198575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:07:32.472 [DEBUG] [Thread-198575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:07:32.472 [DEBUG] [Thread-198575] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:07:32.472 [DEBUG] [Thread-198575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:07:32.472 [DEBUG] [Thread-198575] [transport.py] [_log()] Compression: none
2025-11-24T23:07:32.472 [DEBUG] [Thread-198575] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:07:32.510 [DEBUG] [Thread-198575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:07:32.515 [DEBUG] [Thread-198575] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:07:32.517 [DEBUG] [Thread-198575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:07:32.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:07:32.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:07:32.524 [DEBUG] [Thread-198575] [transport.py] [_log()] userauth is OK
2025-11-24T23:07:32.524 [DEBUG] [Thread-198575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:07:32.525 [DEBUG] [Thread-198575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:07:32.525 [DEBUG] [Thread-198575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:07:32.525 [DEBUG] [Thread-198575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:07:32.563 [INFO] [Thread-198575] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:07:32.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:07:33.154 [DEBUG] [Thread-198575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:07:33.154 [DEBUG] [Thread-198575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:07:33.156 [DEBUG] [Thread-198575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:07:33.194 [DEBUG] [Thread-198575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:07:33.195 [DEBUG] [Thread-198575] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:07:33.199 [DEBUG] [Thread-198575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:07:33.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:07:33.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:07:33.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:07:33.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:07:33.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:07:33.226 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:07:33.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:07:33.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:07:33.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:07:33.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.879560 -999.00  +13.80  24.85     41   +1.00 1 1 1 1 1     0    0 11.95 -54.31 ZNESW 19.5 24.9 170.6 31.0 14.2 -24.8 14.1 -24.2 13.9 -23.1 14.2 -24.1
2025-11-24T23:07:33.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:07:33.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:07:33.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.879560
2025-11-24T23:07:33.234 [DEBUG] [Thread-198575] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:07:33.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:07:33.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:07:33.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:07:33.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:07:33.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:07:33.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:07:19', tmtdew=14.74, humidity=36.1, cloud=0.0, wind=32.73, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:07:20', seeing=0.67, atlas_timestamp='2025-11-24T21:06:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[0.012749999999998707, -0.011749999999999261, 0.03325000000000067, 0.010499999999998622, 0.051000000000000156, 0.0572499999999998, 0.049999999999998934, 0.012249999999999872, 0.0129999999999999, 0.025000000000000355, 0.025249999999999773, -0.04349999999999987, 0.06299999999999883, 0.08375000000000021, 0.01750000000000007, 0.032999999999999474, 0.004249999999998977, 0.04600000000000115, 0.062499999999998224, 0.018249999999998323, 0.049999999999998934, 0.06974999999999909, 0.054250000000001464, 0.05075000000000074, 0.023999999999999133, 0.026500000000000412, 0.05674999999999919, 0.03049999999999997, 0.16250000000000142, 0.09300000000000175, 0.09000000000000163, 0.017000000000001236, -0.015249999999999986], zp_timestamp='2025-11-24T21:04:00')
2025-11-24T23:07:33.328 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:07:33.343 [DEBUG] [Thread-198578] [transport.py] [_log()] starting thread (client mode): 0xd07fae00
2025-11-24T23:07:33.343 [DEBUG] [Thread-198578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:07:33.358 [DEBUG] [Thread-198578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:07:33.358 [INFO] [Thread-198578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:07:33.366 [DEBUG] [Thread-198578] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:07:33.366 [DEBUG] [Thread-198578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:07:33.366 [DEBUG] [Thread-198578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:07:33.366 [DEBUG] [Thread-198578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:07:33.366 [DEBUG] [Thread-198578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:07:33.366 [DEBUG] [Thread-198578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:07:33.366 [DEBUG] [Thread-198578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] client lang: <none>
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] server lang: <none>
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] kex follows: False
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] Compression: none
2025-11-24T23:07:33.367 [DEBUG] [Thread-198578] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:07:33.424 [DEBUG] [Thread-198578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:07:33.424 [DEBUG] [Thread-198578] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:07:33.424 [DEBUG] [Thread-198578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:07:33.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:07:33.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:07:33.482 [DEBUG] [Thread-198578] [transport.py] [_log()] userauth is OK
2025-11-24T23:07:33.482 [DEBUG] [Thread-198578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:07:33.491 [DEBUG] [Thread-198578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:07:33.491 [DEBUG] [Thread-198578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:07:33.491 [DEBUG] [Thread-198578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:07:33.515 [INFO] [Thread-198578] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:07:33.516 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:07:33.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:07:34.344 [DEBUG] [Thread-198578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:07:34.344 [DEBUG] [Thread-198578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:07:34.392 [DEBUG] [Thread-198578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:07:34.392 [DEBUG] [Thread-198578] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:07:34.400 [DEBUG] [Thread-198578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:07:34.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:07:34.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-11-24T23:07:34.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-11-24T23:07:34.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:07:34.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:07:34.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:07:34.441 [DEBUG] [Thread-198578] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:07:39.413 [DEBUG] [Thread-198580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:07:51.221 [DEBUG] [Thread-198581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:07:51.969 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:07:51.970 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:07:54.516 [DEBUG] [Thread-198582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:08:04.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:08:04.475 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:08:04.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-11-24T23:08:05.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 7, 52), 14.7, 36.58, 0.0, 34.79, 14.0, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:08:05.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:07:52
2025-11-24T23:08:05.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:08:05.776 [DEBUG] [Thread-198583] [transport.py] [_log()] starting thread (client mode): 0xd07cca30
2025-11-24T23:08:05.777 [DEBUG] [Thread-198583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:08:05.789 [DEBUG] [Thread-198583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:08:05.789 [INFO] [Thread-198583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:08:05.795 [DEBUG] [Thread-198583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] client lang: <none>
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] server lang: <none>
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] kex follows: False
2025-11-24T23:08:05.796 [DEBUG] [Thread-198583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:08:05.797 [DEBUG] [Thread-198583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:08:05.797 [DEBUG] [Thread-198583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:08:05.798 [DEBUG] [Thread-198583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:08:05.798 [DEBUG] [Thread-198583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:08:05.798 [DEBUG] [Thread-198583] [transport.py] [_log()] Compression: none
2025-11-24T23:08:05.798 [DEBUG] [Thread-198583] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:08:05.839 [DEBUG] [Thread-198583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:08:05.844 [DEBUG] [Thread-198583] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:08:05.846 [DEBUG] [Thread-198583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:08:05.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:08:05.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:08:05.851 [DEBUG] [Thread-198583] [transport.py] [_log()] userauth is OK
2025-11-24T23:08:05.852 [DEBUG] [Thread-198583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:08:05.852 [DEBUG] [Thread-198583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:08:05.852 [DEBUG] [Thread-198583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:08:05.852 [DEBUG] [Thread-198583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:08:05.880 [INFO] [Thread-198583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:08:05.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:08:06.697 [DEBUG] [Thread-198583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:08:06.698 [DEBUG] [Thread-198583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:08:06.700 [DEBUG] [Thread-198583] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:08:06.739 [DEBUG] [Thread-198583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:08:06.739 [DEBUG] [Thread-198583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:08:06.742 [DEBUG] [Thread-198583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:08:06.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:08:06.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:08:06.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:08:06.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:08:06.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:08:06.767 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:08:06.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:08:06.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:08:06.770 [DEBUG] [Thread-198583] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:08:06.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:08:06.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.879907 -999.00  +13.90  24.08     41   +1.10 1 1 1 1 1     0    0 11.91 -50.49 ZNESW 28.6 24.1 172.4 30.6 14.2 -24.6 14.1 -24.1 13.9 -23.0 14.2 -24.0
2025-11-24T23:08:06.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:08:06.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:08:06.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.879907
2025-11-24T23:08:06.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:08:06.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:08:06.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:08:06.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:08:06.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:08:06.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:07:52', tmtdew=14.7, humidity=36.58, cloud=0.0, wind=34.79, temperature=14.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:07:53', seeing=0.75, atlas_timestamp='2025-11-24T21:07:03.965', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004250000000000753, -0.03474999999999895, -0.004749999999999588, 0.027499999999999858, 0.02200000000000024, 0.06425000000000125, 0.02099999999999902, -0.0007500000000000284, 0.01249999999999929, 0.007500000000000284, 0.03824999999999967, -0.03149999999999942, 0.0625, 0.08225000000000016, 0.033500000000000085, -0.006000000000000227, -0.004750000000001364, 0.03049999999999997, 0.05999999999999872, -0.024750000000000938, 0.05349999999999966, 0.057749999999998636, 0.04125000000000156, 0.007749999999999702, 0.004999999999999005, 0.0005000000000006111, 0.025249999999999773, 0.014000000000001123, 0.12900000000000134, 0.07800000000000118, 0.06950000000000145, -0.019999999999999574, -0.03825000000000145], zp_timestamp='2025-11-24T21:06:00')
2025-11-24T23:08:06.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:08:06.885 [DEBUG] [Thread-198586] [transport.py] [_log()] starting thread (client mode): 0xd31f5ab0
2025-11-24T23:08:06.885 [DEBUG] [Thread-198586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:08:06.900 [DEBUG] [Thread-198586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:08:06.900 [INFO] [Thread-198586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:08:06.908 [DEBUG] [Thread-198586] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:08:06.908 [DEBUG] [Thread-198586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] client lang: <none>
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] server lang: <none>
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] kex follows: False
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] Compression: none
2025-11-24T23:08:06.909 [DEBUG] [Thread-198586] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:08:06.965 [DEBUG] [Thread-198586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:08:06.966 [DEBUG] [Thread-198586] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:08:06.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:08:06.967 [DEBUG] [Thread-198586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:08:06.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:08:07.025 [DEBUG] [Thread-198586] [transport.py] [_log()] userauth is OK
2025-11-24T23:08:07.025 [DEBUG] [Thread-198586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:08:07.026 [DEBUG] [Thread-198586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:08:07.026 [DEBUG] [Thread-198586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:08:07.026 [DEBUG] [Thread-198586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:08:07.044 [INFO] [Thread-198586] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:08:07.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:08:07.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:08:07.926 [DEBUG] [Thread-198586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:08:07.926 [DEBUG] [Thread-198586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:08:07.974 [DEBUG] [Thread-198586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:08:07.974 [DEBUG] [Thread-198586] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:08:07.982 [DEBUG] [Thread-198586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:08:07.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:08:07.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-11-24T23:08:08.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-11-24T23:08:08.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:08:08.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:08:08.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:08:08.024 [DEBUG] [Thread-198586] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:08:09.592 [DEBUG] [Thread-198588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:08:24.695 [DEBUG] [Thread-198589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:08:38.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:08:38.057 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:08:38.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-11-24T23:08:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 8, 25), 14.73, 36.52, 0.0, 32.17, 14.04, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:08:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:08:25
2025-11-24T23:08:39.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:08:39.339 [DEBUG] [Thread-198590] [transport.py] [_log()] starting thread (client mode): 0xd07f94e0
2025-11-24T23:08:39.340 [DEBUG] [Thread-198590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:08:39.353 [DEBUG] [Thread-198590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:08:39.353 [INFO] [Thread-198590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:08:39.358 [DEBUG] [Thread-198590] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:08:39.358 [DEBUG] [Thread-198590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:08:39.358 [DEBUG] [Thread-198590] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] client lang: <none>
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] server lang: <none>
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] kex follows: False
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:08:39.359 [DEBUG] [Thread-198590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:08:39.360 [DEBUG] [Thread-198590] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:08:39.360 [DEBUG] [Thread-198590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:08:39.360 [DEBUG] [Thread-198590] [transport.py] [_log()] Compression: none
2025-11-24T23:08:39.360 [DEBUG] [Thread-198590] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:08:39.395 [DEBUG] [Thread-198590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:08:39.400 [DEBUG] [Thread-198590] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:08:39.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:08:39.403 [DEBUG] [Thread-198590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:08:39.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:08:39.407 [DEBUG] [Thread-198590] [transport.py] [_log()] userauth is OK
2025-11-24T23:08:39.408 [DEBUG] [Thread-198590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:08:39.408 [DEBUG] [Thread-198590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:08:39.408 [DEBUG] [Thread-198590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:08:39.408 [DEBUG] [Thread-198590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:08:39.434 [INFO] [Thread-198590] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:08:39.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:08:39.763 [DEBUG] [Thread-198592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:08:40.082 [DEBUG] [Thread-198590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:08:40.082 [DEBUG] [Thread-198590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:08:40.092 [DEBUG] [Thread-198590] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:08:40.123 [DEBUG] [Thread-198590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:08:40.123 [DEBUG] [Thread-198590] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:08:40.127 [DEBUG] [Thread-198590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:08:40.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:08:40.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:08:40.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:08:40.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:08:40.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:08:40.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:08:40.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:08:40.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:08:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:08:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.880602 -999.00  +13.90  25.77     41   +1.10 1 1 1 1 1     0    0 11.78 -55.00 ZNESW 25.9 25.8 173.6 33.7 14.2 -24.6 14.1 -24.2 13.8 -23.1 14.2 -24.0
2025-11-24T23:08:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:08:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:08:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.880602
2025-11-24T23:08:40.162 [DEBUG] [Thread-198590] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:08:40.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:08:40.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:08:40.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:08:40.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:08:40.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:08:40.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:08:25', tmtdew=14.73, humidity=36.52, cloud=0.0, wind=32.17, temperature=14.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:08:26', seeing=0.71, atlas_timestamp='2025-11-24T21:08:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004250000000000753, -0.03474999999999895, -0.004749999999999588, 0.027499999999999858, 0.02200000000000024, 0.06425000000000125, 0.02099999999999902, -0.0007500000000000284, 0.01249999999999929, 0.007500000000000284, 0.03824999999999967, -0.03149999999999942, 0.0625, 0.08225000000000016, 0.033500000000000085, -0.006000000000000227, -0.004750000000001364, 0.03049999999999997, 0.05999999999999872, -0.024750000000000938, 0.05349999999999966, 0.057749999999998636, 0.04125000000000156, 0.007749999999999702, 0.004999999999999005, 0.0005000000000006111, 0.025249999999999773, 0.014000000000001123, 0.12900000000000134, 0.07800000000000118, 0.06950000000000145, -0.019999999999999574, -0.03825000000000145], zp_timestamp='2025-11-24T21:06:00')
2025-11-24T23:08:40.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:08:40.264 [DEBUG] [Thread-198594] [transport.py] [_log()] starting thread (client mode): 0xd317ed70
2025-11-24T23:08:40.264 [DEBUG] [Thread-198594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:08:40.278 [DEBUG] [Thread-198594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:08:40.278 [INFO] [Thread-198594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:08:40.285 [DEBUG] [Thread-198594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:08:40.285 [DEBUG] [Thread-198594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] client lang: <none>
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] server lang: <none>
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] kex follows: False
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] Compression: none
2025-11-24T23:08:40.286 [DEBUG] [Thread-198594] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:08:40.346 [DEBUG] [Thread-198594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:08:40.347 [DEBUG] [Thread-198594] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:08:40.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:08:40.347 [DEBUG] [Thread-198594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:08:40.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:08:40.405 [DEBUG] [Thread-198594] [transport.py] [_log()] userauth is OK
2025-11-24T23:08:40.405 [DEBUG] [Thread-198594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:08:40.405 [DEBUG] [Thread-198594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:08:40.406 [DEBUG] [Thread-198594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:08:40.406 [DEBUG] [Thread-198594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:08:40.424 [INFO] [Thread-198594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:08:40.425 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:08:40.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:08:41.269 [DEBUG] [Thread-198594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:08:41.269 [DEBUG] [Thread-198594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:08:41.317 [DEBUG] [Thread-198594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:08:41.317 [DEBUG] [Thread-198594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:08:41.326 [DEBUG] [Thread-198594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:08:41.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:08:41.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-11-24T23:08:41.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-11-24T23:08:41.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:08:41.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:08:41.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:08:41.365 [DEBUG] [Thread-198594] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:08:51.523 [DEBUG] [Thread-198596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:08:52.180 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:08:52.182 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:08:54.800 [DEBUG] [Thread-198597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:09:09.973 [DEBUG] [Thread-198598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:09:11.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:09:11.362 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:09:11.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-11-24T23:09:12.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 8, 58), 14.71, 36.05, 0.0, 29.73, 13.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:09:12.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:08:58
2025-11-24T23:09:12.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:09:12.547 [DEBUG] [Thread-198599] [transport.py] [_log()] starting thread (client mode): 0xd317f220
2025-11-24T23:09:12.548 [DEBUG] [Thread-198599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:09:12.561 [DEBUG] [Thread-198599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:09:12.561 [INFO] [Thread-198599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:09:12.565 [DEBUG] [Thread-198599] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] client lang: <none>
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] server lang: <none>
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] kex follows: False
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] Compression: none
2025-11-24T23:09:12.566 [DEBUG] [Thread-198599] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:09:12.590 [DEBUG] [Thread-198599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:09:12.594 [DEBUG] [Thread-198599] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:09:12.595 [DEBUG] [Thread-198599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:09:12.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:09:12.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:09:12.598 [DEBUG] [Thread-198599] [transport.py] [_log()] userauth is OK
2025-11-24T23:09:12.598 [DEBUG] [Thread-198599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:09:12.598 [DEBUG] [Thread-198599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:09:12.598 [DEBUG] [Thread-198599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:09:12.599 [DEBUG] [Thread-198599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:09:12.618 [INFO] [Thread-198599] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:09:12.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:09:13.425 [DEBUG] [Thread-198599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:09:13.426 [DEBUG] [Thread-198599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:09:13.427 [DEBUG] [Thread-198599] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:09:13.465 [DEBUG] [Thread-198599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:09:13.465 [DEBUG] [Thread-198599] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:09:13.469 [DEBUG] [Thread-198599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:09:13.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:09:13.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:09:13.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:09:13.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:09:13.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:09:13.496 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:09:13.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:09:13.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:09:13.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:09:13.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.880949 -999.00  +13.90  21.13     41   +1.10 1 1 1 1 1     0    0 11.66 -54.25 ZNESW 24.3 21.1 166.0 31.6 14.2 -24.7 14.1 -24.2 13.8 -23.1 14.2 -23.9
2025-11-24T23:09:13.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:09:13.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:09:13.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.880949
2025-11-24T23:09:13.510 [DEBUG] [Thread-198599] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:09:13.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:09:13.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:09:13.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:09:13.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:09:13.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:09:13.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:08:58', tmtdew=14.71, humidity=36.05, cloud=0.0, wind=29.73, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:08:58', seeing=0.89, atlas_timestamp='2025-11-24T21:08:33.994', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004250000000000753, -0.03474999999999895, -0.004749999999999588, 0.027499999999999858, 0.02200000000000024, 0.06425000000000125, 0.02099999999999902, -0.0007500000000000284, 0.01249999999999929, 0.007500000000000284, 0.03824999999999967, -0.03149999999999942, 0.0625, 0.08225000000000016, 0.033500000000000085, -0.006000000000000227, -0.004750000000001364, 0.03049999999999997, 0.05999999999999872, -0.024750000000000938, 0.05349999999999966, 0.057749999999998636, 0.04125000000000156, 0.007749999999999702, 0.004999999999999005, 0.0005000000000006111, 0.025249999999999773, 0.014000000000001123, 0.12900000000000134, 0.07800000000000118, 0.06950000000000145, -0.019999999999999574, -0.03825000000000145], zp_timestamp='2025-11-24T21:06:00')
2025-11-24T23:09:13.603 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:09:13.616 [DEBUG] [Thread-198602] [transport.py] [_log()] starting thread (client mode): 0xc9b832b0
2025-11-24T23:09:13.616 [DEBUG] [Thread-198602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:09:13.630 [DEBUG] [Thread-198602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:09:13.630 [INFO] [Thread-198602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:09:13.638 [DEBUG] [Thread-198602] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] client lang: <none>
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] server lang: <none>
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] kex follows: False
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:09:13.639 [DEBUG] [Thread-198602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:09:13.640 [DEBUG] [Thread-198602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:09:13.640 [DEBUG] [Thread-198602] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:09:13.640 [DEBUG] [Thread-198602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:09:13.640 [DEBUG] [Thread-198602] [transport.py] [_log()] Compression: none
2025-11-24T23:09:13.640 [DEBUG] [Thread-198602] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:09:13.697 [DEBUG] [Thread-198602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:09:13.698 [DEBUG] [Thread-198602] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:09:13.698 [DEBUG] [Thread-198602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:09:13.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:09:13.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:09:13.753 [DEBUG] [Thread-198602] [transport.py] [_log()] userauth is OK
2025-11-24T23:09:13.753 [DEBUG] [Thread-198602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:09:13.753 [DEBUG] [Thread-198602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:09:13.753 [DEBUG] [Thread-198602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:09:13.753 [DEBUG] [Thread-198602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:09:13.772 [INFO] [Thread-198602] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:09:13.772 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:09:13.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:09:14.584 [DEBUG] [Thread-198602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:09:14.585 [DEBUG] [Thread-198602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:09:14.632 [DEBUG] [Thread-198602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:09:14.632 [DEBUG] [Thread-198602] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:09:14.641 [DEBUG] [Thread-198602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:09:14.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:09: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')
2025-11-24T23:09:14.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:09:14.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:09:14.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:09:14.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:09:14.679 [DEBUG] [Thread-198602] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:09:25.055 [DEBUG] [Thread-198604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:09:40.208 [DEBUG] [Thread-198605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:09:43.258 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:09:44.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:09:44.703 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:09:44.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-11-24T23:09:45.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 9, 31), 14.68, 36.13, 0.0, 30.05, 13.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:09:45.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:09:31
2025-11-24T23:09:45.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:09:45.884 [DEBUG] [Thread-198606] [transport.py] [_log()] starting thread (client mode): 0xc9b80910
2025-11-24T23:09:45.885 [DEBUG] [Thread-198606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:09:45.885 [DEBUG] [Thread-198606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:09:45.886 [INFO] [Thread-198606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:09:45.890 [DEBUG] [Thread-198606] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:09:45.890 [DEBUG] [Thread-198606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:09:45.890 [DEBUG] [Thread-198606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:09:45.890 [DEBUG] [Thread-198606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:09:45.890 [DEBUG] [Thread-198606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:09:45.890 [DEBUG] [Thread-198606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:09:45.891 [DEBUG] [Thread-198606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:09:45.891 [DEBUG] [Thread-198606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:09:45.891 [DEBUG] [Thread-198606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:09:45.891 [DEBUG] [Thread-198606] [transport.py] [_log()] client lang: <none>
2025-11-24T23:09:45.891 [DEBUG] [Thread-198606] [transport.py] [_log()] server lang: <none>
2025-11-24T23:09:45.891 [DEBUG] [Thread-198606] [transport.py] [_log()] kex follows: False
2025-11-24T23:09:45.891 [DEBUG] [Thread-198606] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:09:45.891 [DEBUG] [Thread-198606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:09:45.891 [DEBUG] [Thread-198606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:09:45.892 [DEBUG] [Thread-198606] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:09:45.892 [DEBUG] [Thread-198606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:09:45.892 [DEBUG] [Thread-198606] [transport.py] [_log()] Compression: none
2025-11-24T23:09:45.892 [DEBUG] [Thread-198606] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:09:45.926 [DEBUG] [Thread-198606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:09:45.930 [DEBUG] [Thread-198606] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:09:45.932 [DEBUG] [Thread-198606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:09:45.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:09:45.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:09:45.937 [DEBUG] [Thread-198606] [transport.py] [_log()] userauth is OK
2025-11-24T23:09:45.937 [DEBUG] [Thread-198606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:09:45.938 [DEBUG] [Thread-198606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:09:45.938 [DEBUG] [Thread-198606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:09:45.938 [DEBUG] [Thread-198606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:09:45.964 [INFO] [Thread-198606] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:09:45.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:09:46.615 [DEBUG] [Thread-198606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:09:46.615 [DEBUG] [Thread-198606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:09:46.626 [DEBUG] [Thread-198606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:09:46.655 [DEBUG] [Thread-198606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:09:46.656 [DEBUG] [Thread-198606] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:09:46.659 [DEBUG] [Thread-198606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:09:46.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:09:46.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:09:46.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:09:46.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:09:46.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:09:46.684 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:09:46.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:09:46.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:09:46.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:09:46.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.881296 -999.00  +13.90  27.56     41   +1.10 1 1 1 1 1     0    0 11.53 -53.08 ZNESW 29.0 27.6 176.0 33.3 14.2 -24.7 14.1 -24.1 13.8 -23.0 14.2 -24.0
2025-11-24T23:09:46.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:09:46.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:09:46.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.881296
2025-11-24T23:09:46.692 [DEBUG] [Thread-198606] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:09:46.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:09:46.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:09:46.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:09:46.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:09:46.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:09:46.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:09:31', tmtdew=14.68, humidity=36.13, cloud=0.0, wind=30.05, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:09:31', seeing=0.89, atlas_timestamp='2025-11-24T21:09:03.974', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004250000000000753, -0.03474999999999895, -0.004749999999999588, 0.027499999999999858, 0.02200000000000024, 0.06425000000000125, 0.02099999999999902, -0.0007500000000000284, 0.01249999999999929, 0.007500000000000284, 0.03824999999999967, -0.03149999999999942, 0.0625, 0.08225000000000016, 0.033500000000000085, -0.006000000000000227, -0.004750000000001364, 0.03049999999999997, 0.05999999999999872, -0.024750000000000938, 0.05349999999999966, 0.057749999999998636, 0.04125000000000156, 0.007749999999999702, 0.004999999999999005, 0.0005000000000006111, 0.025249999999999773, 0.014000000000001123, 0.12900000000000134, 0.07800000000000118, 0.06950000000000145, -0.019999999999999574, -0.03825000000000145], zp_timestamp='2025-11-24T21:06:00')
2025-11-24T23:09:46.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:09:46.806 [DEBUG] [Thread-198609] [transport.py] [_log()] starting thread (client mode): 0xd0710220
2025-11-24T23:09:46.806 [DEBUG] [Thread-198609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:09:46.823 [DEBUG] [Thread-198609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:09:46.823 [INFO] [Thread-198609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] client lang: <none>
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] server lang: <none>
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] kex follows: False
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] Compression: none
2025-11-24T23:09:46.831 [DEBUG] [Thread-198609] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:09:46.895 [DEBUG] [Thread-198609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:09:46.896 [DEBUG] [Thread-198609] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:09:46.896 [DEBUG] [Thread-198609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:09:46.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:09:46.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:09:46.954 [DEBUG] [Thread-198609] [transport.py] [_log()] userauth is OK
2025-11-24T23:09:46.954 [DEBUG] [Thread-198609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:09:46.954 [DEBUG] [Thread-198609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:09:46.954 [DEBUG] [Thread-198609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:09:46.955 [DEBUG] [Thread-198609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:09:46.989 [INFO] [Thread-198609] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:09:46.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:09:46.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:09:47.875 [DEBUG] [Thread-198609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:09:47.875 [DEBUG] [Thread-198609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:09:47.923 [DEBUG] [Thread-198609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:09:47.924 [DEBUG] [Thread-198609] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:09:47.933 [DEBUG] [Thread-198609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:09:47.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:09:47.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-11-24T23:09:47.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:09:47.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:09:47.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:09:47.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:09:47.971 [DEBUG] [Thread-198609] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:09:51.837 [DEBUG] [Thread-198611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:09:52.384 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:09:52.386 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:09:55.276 [DEBUG] [Thread-198612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:10:10.466 [DEBUG] [Thread-198613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:10:17.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:10:18.001 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:10:18.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-11-24T23:10:18.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 10, 4), 14.66, 36.17, 0.0, 30.7, 13.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:10:18.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:10:04
2025-11-24T23:10:18.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:10:19.118 [DEBUG] [Thread-198614] [transport.py] [_log()] starting thread (client mode): 0xd3149570
2025-11-24T23:10:19.119 [DEBUG] [Thread-198614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:10:19.130 [DEBUG] [Thread-198614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:10:19.130 [INFO] [Thread-198614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] client lang: <none>
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] server lang: <none>
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] kex follows: False
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:10:19.136 [DEBUG] [Thread-198614] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:10:19.137 [DEBUG] [Thread-198614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:10:19.137 [DEBUG] [Thread-198614] [transport.py] [_log()] Compression: none
2025-11-24T23:10:19.137 [DEBUG] [Thread-198614] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:10:19.165 [DEBUG] [Thread-198614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:10:19.168 [DEBUG] [Thread-198614] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:10:19.169 [DEBUG] [Thread-198614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:10:19.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:10:19.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:10:19.173 [DEBUG] [Thread-198614] [transport.py] [_log()] userauth is OK
2025-11-24T23:10:19.173 [DEBUG] [Thread-198614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:10:19.173 [DEBUG] [Thread-198614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:10:19.173 [DEBUG] [Thread-198614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:10:19.173 [DEBUG] [Thread-198614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:10:19.191 [INFO] [Thread-198614] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:10:19.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:10:20.125 [DEBUG] [Thread-198614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:10:20.125 [DEBUG] [Thread-198614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:10:20.125 [DEBUG] [Thread-198614] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:10:20.166 [DEBUG] [Thread-198614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:10:20.166 [DEBUG] [Thread-198614] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:10:20.169 [DEBUG] [Thread-198614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:10:20.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:10:20.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:10:20.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:10:20.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:10:20.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:10:20.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:10:20.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:10:20.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:10:20.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:10:20.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.881643 -999.00  +13.90  19.61     41   +1.10 1 1 1 1 1     0    0 11.68 -55.18 ZNESW 20.0 19.6 161.8 29.9 14.2 -24.6 14.1 -24.1 13.8 -23.1 14.2 -24.0
2025-11-24T23:10:20.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:10:20.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:10:20.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.881643
2025-11-24T23:10:20.197 [DEBUG] [Thread-198614] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:10:20.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:10:20.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:10:20.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:10:20.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:10:20.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:10:20.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:10:04', tmtdew=14.66, humidity=36.17, cloud=0.0, wind=30.7, temperature=13.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:10:04', seeing=0.8, atlas_timestamp='2025-11-24T21:09:33.955', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004250000000000753, -0.03474999999999895, -0.004749999999999588, 0.027499999999999858, 0.02200000000000024, 0.06425000000000125, 0.02099999999999902, -0.0007500000000000284, 0.01249999999999929, 0.007500000000000284, 0.03824999999999967, -0.03149999999999942, 0.0625, 0.08225000000000016, 0.033500000000000085, -0.006000000000000227, -0.004750000000001364, 0.03049999999999997, 0.05999999999999872, -0.024750000000000938, 0.05349999999999966, 0.057749999999998636, 0.04125000000000156, 0.007749999999999702, 0.004999999999999005, 0.0005000000000006111, 0.025249999999999773, 0.014000000000001123, 0.12900000000000134, 0.07800000000000118, 0.06950000000000145, -0.019999999999999574, -0.03825000000000145], zp_timestamp='2025-11-24T21:06:00')
2025-11-24T23:10:20.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:10:20.300 [DEBUG] [Thread-198617] [transport.py] [_log()] starting thread (client mode): 0xd3149bd0
2025-11-24T23:10:20.301 [DEBUG] [Thread-198617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:10:20.315 [DEBUG] [Thread-198617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:10:20.315 [INFO] [Thread-198617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] client lang: <none>
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] server lang: <none>
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] kex follows: False
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] Compression: none
2025-11-24T23:10:20.323 [DEBUG] [Thread-198617] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:10:20.379 [DEBUG] [Thread-198617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:10:20.379 [DEBUG] [Thread-198617] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:10:20.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:10:20.379 [DEBUG] [Thread-198617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:10:20.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:10:20.436 [DEBUG] [Thread-198617] [transport.py] [_log()] userauth is OK
2025-11-24T23:10:20.436 [DEBUG] [Thread-198617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:10:20.436 [DEBUG] [Thread-198617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:10:20.436 [DEBUG] [Thread-198617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:10:20.436 [DEBUG] [Thread-198617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:10:20.450 [INFO] [Thread-198617] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:10:20.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:10:20.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:10:21.321 [DEBUG] [Thread-198617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:10:21.322 [DEBUG] [Thread-198617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:10:21.370 [DEBUG] [Thread-198617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:10:21.370 [DEBUG] [Thread-198617] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:10:21.378 [DEBUG] [Thread-198617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:10:21.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:10:21.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:10:21.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-11-24T23:10:21.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:10:21.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:10:21.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:10:21.411 [DEBUG] [Thread-198617] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:10:25.562 [DEBUG] [Thread-198619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:10:40.693 [DEBUG] [Thread-198620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:10:51.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:10:51.415 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:10:51.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-11-24T23:10:52.121 [DEBUG] [Thread-198621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:10:52.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 10, 37), 14.63, 36.62, 0.0, 31.85, 13.95, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:10:52.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:10:37
2025-11-24T23:10:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:10:52.589 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:10:52.590 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:10:52.637 [DEBUG] [Thread-198622] [transport.py] [_log()] starting thread (client mode): 0xd07f96c0
2025-11-24T23:10:52.637 [DEBUG] [Thread-198622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:10:52.651 [DEBUG] [Thread-198622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:10:52.651 [INFO] [Thread-198622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:10:52.654 [DEBUG] [Thread-198622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] client lang: <none>
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] server lang: <none>
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] kex follows: False
2025-11-24T23:10:52.655 [DEBUG] [Thread-198622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:10:52.656 [DEBUG] [Thread-198622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:10:52.656 [DEBUG] [Thread-198622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:10:52.656 [DEBUG] [Thread-198622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:10:52.656 [DEBUG] [Thread-198622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:10:52.657 [DEBUG] [Thread-198622] [transport.py] [_log()] Compression: none
2025-11-24T23:10:52.657 [DEBUG] [Thread-198622] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:10:52.688 [DEBUG] [Thread-198622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:10:52.690 [DEBUG] [Thread-198622] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:10:52.692 [DEBUG] [Thread-198622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:10:52.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:10:52.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:10:52.733 [DEBUG] [Thread-198622] [transport.py] [_log()] userauth is OK
2025-11-24T23:10:52.734 [DEBUG] [Thread-198622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:10:52.734 [DEBUG] [Thread-198622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:10:52.734 [DEBUG] [Thread-198622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:10:52.734 [DEBUG] [Thread-198622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:10:52.763 [INFO] [Thread-198622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:10:52.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:10:53.383 [DEBUG] [Thread-198622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:10:53.383 [DEBUG] [Thread-198622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:10:53.384 [DEBUG] [Thread-198622] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:10:53.424 [DEBUG] [Thread-198622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:10:53.424 [DEBUG] [Thread-198622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:10:53.426 [DEBUG] [Thread-198622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:10:53.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:10:53.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:10:53.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:10:53.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:10:53.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:10:53.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:10:53.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:10:53.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:10:53.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:10:53.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.881991 -999.00  +13.90  25.23     41   +1.10 1 1 1 1 1     0    0 11.67 -52.29 ZNESW 24.1 25.2 173.8 29.8 14.2 -24.7 14.1 -24.0 13.9 -23.1 14.1 -23.9
2025-11-24T23:10:53.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:10:53.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:10:53.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.881991
2025-11-24T23:10:53.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:10:53.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:10:53.452 [DEBUG] [Thread-198622] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:10:53.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:10:53.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:10:53.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:10:53.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:10:37', tmtdew=14.63, humidity=36.62, cloud=0.0, wind=31.85, temperature=13.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:10:37', seeing=0.8, atlas_timestamp='2025-11-24T21:10:04.022', atlas_cloud=1, atlas_rain=1, zp_data=[-0.004250000000000753, -0.03474999999999895, -0.004749999999999588, 0.027499999999999858, 0.02200000000000024, 0.06425000000000125, 0.02099999999999902, -0.0007500000000000284, 0.01249999999999929, 0.007500000000000284, 0.03824999999999967, -0.03149999999999942, 0.0625, 0.08225000000000016, 0.033500000000000085, -0.006000000000000227, -0.004750000000001364, 0.03049999999999997, 0.05999999999999872, -0.024750000000000938, 0.05349999999999966, 0.057749999999998636, 0.04125000000000156, 0.007749999999999702, 0.004999999999999005, 0.0005000000000006111, 0.025249999999999773, 0.014000000000001123, 0.12900000000000134, 0.07800000000000118, 0.06950000000000145, -0.019999999999999574, -0.03825000000000145], zp_timestamp='2025-11-24T21:06:00')
2025-11-24T23:10:53.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:10:53.537 [DEBUG] [Thread-198625] [transport.py] [_log()] starting thread (client mode): 0xd31499f0
2025-11-24T23:10:53.537 [DEBUG] [Thread-198625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:10:53.552 [DEBUG] [Thread-198625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:10:53.552 [INFO] [Thread-198625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:10:53.559 [DEBUG] [Thread-198625] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] client lang: <none>
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] server lang: <none>
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] kex follows: False
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] Compression: none
2025-11-24T23:10:53.560 [DEBUG] [Thread-198625] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:10:53.621 [DEBUG] [Thread-198625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:10:53.622 [DEBUG] [Thread-198625] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:10:53.623 [DEBUG] [Thread-198625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:10:53.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:10:53.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:10:53.677 [DEBUG] [Thread-198625] [transport.py] [_log()] userauth is OK
2025-11-24T23:10:53.677 [DEBUG] [Thread-198625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:10:53.678 [DEBUG] [Thread-198625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:10:53.678 [DEBUG] [Thread-198625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:10:53.678 [DEBUG] [Thread-198625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:10:53.697 [INFO] [Thread-198625] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:10:53.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:10:53.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:10:54.651 [DEBUG] [Thread-198625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:10:54.651 [DEBUG] [Thread-198625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:10:54.699 [DEBUG] [Thread-198625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:10:54.699 [DEBUG] [Thread-198625] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:10:54.707 [DEBUG] [Thread-198625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:10:54.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:10:54.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-11-24T23:10:54.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-11-24T23:10:54.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:10:54.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:10:54.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:10:54.742 [DEBUG] [Thread-198625] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:10:55.741 [DEBUG] [Thread-198627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:11:10.821 [DEBUG] [Thread-198628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:11:24.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:11:24.759 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:11:24.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-11-24T23:11:25.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 11, 10), 14.62, 36.63, 0.0, 33.67, 13.94, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:11:25.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:11:10
2025-11-24T23:11:25.864 [DEBUG] [Thread-198629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:11:25.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:11:26.067 [DEBUG] [Thread-198630] [transport.py] [_log()] starting thread (client mode): 0xd31493f0
2025-11-24T23:11:26.068 [DEBUG] [Thread-198630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:11:26.081 [DEBUG] [Thread-198630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:11:26.082 [INFO] [Thread-198630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] client lang: <none>
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] server lang: <none>
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] kex follows: False
2025-11-24T23:11:26.088 [DEBUG] [Thread-198630] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:11:26.089 [DEBUG] [Thread-198630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:11:26.089 [DEBUG] [Thread-198630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:11:26.089 [DEBUG] [Thread-198630] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:11:26.089 [DEBUG] [Thread-198630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:11:26.089 [DEBUG] [Thread-198630] [transport.py] [_log()] Compression: none
2025-11-24T23:11:26.089 [DEBUG] [Thread-198630] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:11:26.128 [DEBUG] [Thread-198630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:11:26.133 [DEBUG] [Thread-198630] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:11:26.135 [DEBUG] [Thread-198630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:11:26.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:11:26.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:11:26.141 [DEBUG] [Thread-198630] [transport.py] [_log()] userauth is OK
2025-11-24T23:11:26.141 [DEBUG] [Thread-198630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:11:26.141 [DEBUG] [Thread-198630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:11:26.141 [DEBUG] [Thread-198630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:11:26.142 [DEBUG] [Thread-198630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:11:26.180 [INFO] [Thread-198630] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:11:26.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:11:26.785 [DEBUG] [Thread-198630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:11:26.785 [DEBUG] [Thread-198630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:11:26.795 [DEBUG] [Thread-198630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:11:26.826 [DEBUG] [Thread-198630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:11:26.826 [DEBUG] [Thread-198630] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:11:26.828 [DEBUG] [Thread-198630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:11:26.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:11:26.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:11:26.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:11:26.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:11:26.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:11:26.849 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:11:26.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:11:26.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:11:26.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:11:26.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.882338 -999.00  +13.90  20.28     41   +1.10 1 1 1 1 1     0    0 11.63 -54.30 ZNESW 20.2 20.3 172.0 32.6 14.2 -24.5 14.1 -24.1 13.8 -23.0 14.2 -24.0
2025-11-24T23:11:26.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:11:26.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:11:26.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.882338
2025-11-24T23:11:26.855 [DEBUG] [Thread-198630] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:11:26.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:11:26.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:11:26.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:11:26.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:11:26.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:11:26.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:11:10', tmtdew=14.62, humidity=36.63, cloud=0.0, wind=33.67, temperature=13.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:11:10', seeing=0.72, atlas_timestamp='2025-11-24T21:10:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.020749999999999602, 0.015249999999999986, -0.016500000000000625, 0.06049999999999933, 0.05125000000000135, 0.049999999999998934, 0.011250000000000426, 0.010999999999999233, 0.02200000000000024, 0.03725000000000023, -0.046499999999999986, 0.08300000000000018, 0.09224999999999817, 0.0030000000000001137, 0.02499999999999858, 0.013249999999999318, 0.05550000000000033, 0.04800000000000004, 0.01524999999999821, 0.06649999999999778, 0.06474999999999831, 0.06725000000000136, 0.024750000000000938, -0.0010000000000012221, -0.005499999999999616, 0.05674999999999919, 0.054499999999999105, 0.12150000000000105, 0.14500000000000135, 0.057000000000000384, -0.022999999999999687, -0.021250000000000213], zp_timestamp='2025-11-24T21:09:00')
2025-11-24T23:11:26.939 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:11:26.951 [DEBUG] [Thread-198633] [transport.py] [_log()] starting thread (client mode): 0xd073bd60
2025-11-24T23:11:26.951 [DEBUG] [Thread-198633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:11:26.967 [DEBUG] [Thread-198633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:11:26.967 [INFO] [Thread-198633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:11:26.974 [DEBUG] [Thread-198633] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] client lang: <none>
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] server lang: <none>
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] kex follows: False
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] Compression: none
2025-11-24T23:11:26.975 [DEBUG] [Thread-198633] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:11:27.032 [DEBUG] [Thread-198633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:11:27.032 [DEBUG] [Thread-198633] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:11:27.032 [DEBUG] [Thread-198633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:11:27.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:11:27.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:11:27.088 [DEBUG] [Thread-198633] [transport.py] [_log()] userauth is OK
2025-11-24T23:11:27.088 [DEBUG] [Thread-198633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:11:27.088 [DEBUG] [Thread-198633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:11:27.088 [DEBUG] [Thread-198633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:11:27.088 [DEBUG] [Thread-198633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:11:27.112 [INFO] [Thread-198633] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:11:27.112 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:11:27.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:11:27.997 [DEBUG] [Thread-198633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:11:27.998 [DEBUG] [Thread-198633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:11:28.046 [DEBUG] [Thread-198633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:11:28.046 [DEBUG] [Thread-198633] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:11:28.056 [DEBUG] [Thread-198633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:11:28.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:11:28.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-11-24T23:11:28.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-11-24T23:11:28.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:11:28.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:11:28.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:11:28.093 [DEBUG] [Thread-198633] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:11:40.908 [DEBUG] [Thread-198635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:11:52.507 [DEBUG] [Thread-198636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:11:52.794 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:11:52.796 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:11:56.027 [DEBUG] [Thread-198637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:11:58.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:11:58.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:11:58.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-11-24T23:11:59.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 11, 43), 14.6, 36.7, 0.0, 30.19, 13.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:11:59.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:11:43
2025-11-24T23:11:59.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:11:59.403 [DEBUG] [Thread-198638] [transport.py] [_log()] starting thread (client mode): 0xc9b80880
2025-11-24T23:11:59.404 [DEBUG] [Thread-198638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:11:59.416 [DEBUG] [Thread-198638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:11:59.417 [INFO] [Thread-198638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:11:59.423 [DEBUG] [Thread-198638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] client lang: <none>
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] server lang: <none>
2025-11-24T23:11:59.424 [DEBUG] [Thread-198638] [transport.py] [_log()] kex follows: False
2025-11-24T23:11:59.425 [DEBUG] [Thread-198638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:11:59.425 [DEBUG] [Thread-198638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:11:59.426 [DEBUG] [Thread-198638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:11:59.426 [DEBUG] [Thread-198638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:11:59.426 [DEBUG] [Thread-198638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:11:59.426 [DEBUG] [Thread-198638] [transport.py] [_log()] Compression: none
2025-11-24T23:11:59.426 [DEBUG] [Thread-198638] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:11:59.457 [DEBUG] [Thread-198638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:11:59.462 [DEBUG] [Thread-198638] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:11:59.464 [DEBUG] [Thread-198638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:11:59.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:11:59.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:11:59.469 [DEBUG] [Thread-198638] [transport.py] [_log()] userauth is OK
2025-11-24T23:11:59.470 [DEBUG] [Thread-198638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:11:59.470 [DEBUG] [Thread-198638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:11:59.470 [DEBUG] [Thread-198638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:11:59.470 [DEBUG] [Thread-198638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:11:59.497 [INFO] [Thread-198638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:11:59.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:12:00.121 [DEBUG] [Thread-198638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:12:00.122 [DEBUG] [Thread-198638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:12:00.123 [DEBUG] [Thread-198638] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:12:00.162 [DEBUG] [Thread-198638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:12:00.162 [DEBUG] [Thread-198638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:12:00.165 [DEBUG] [Thread-198638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:12:00.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:12:00.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:12:00.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:12:00.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:12:00.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:12:00.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:12:00.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:12:00.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:12:00.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:12:00.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.883032 -999.00  +13.80  18.43     41   +1.00 1 1 1 1 1     0    0 11.95 -51.32 ZNESW 25.4 18.4 166.4 26.7 14.2 -24.7 14.1 -24.1 13.8 -23.0 14.2 -24.1
2025-11-24T23:12:00.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:12:00.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:12:00.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.883032
2025-11-24T23:12:00.197 [DEBUG] [Thread-198638] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:12:00.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:12:00.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:12:00.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:12:00.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:12:00.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:12:00.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:11:43', tmtdew=14.6, humidity=36.7, cloud=0.0, wind=30.19, temperature=13.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:11:43', seeing=0.87, atlas_timestamp='2025-11-24T21:11:33.965', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.020749999999999602, 0.015249999999999986, -0.016500000000000625, 0.06049999999999933, 0.05125000000000135, 0.049999999999998934, 0.011250000000000426, 0.010999999999999233, 0.02200000000000024, 0.03725000000000023, -0.046499999999999986, 0.08300000000000018, 0.09224999999999817, 0.0030000000000001137, 0.02499999999999858, 0.013249999999999318, 0.05550000000000033, 0.04800000000000004, 0.01524999999999821, 0.06649999999999778, 0.06474999999999831, 0.06725000000000136, 0.024750000000000938, -0.0010000000000012221, -0.005499999999999616, 0.05674999999999919, 0.054499999999999105, 0.12150000000000105, 0.14500000000000135, 0.057000000000000384, -0.022999999999999687, -0.021250000000000213], zp_timestamp='2025-11-24T21:09:00')
2025-11-24T23:12: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-11-24T23:12:00.313 [DEBUG] [Thread-198641] [transport.py] [_log()] starting thread (client mode): 0xc9b82080
2025-11-24T23:12:00.313 [DEBUG] [Thread-198641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:12:00.328 [DEBUG] [Thread-198641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:12:00.328 [INFO] [Thread-198641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] client lang: <none>
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] server lang: <none>
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] kex follows: False
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:12:00.336 [DEBUG] [Thread-198641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:12:00.337 [DEBUG] [Thread-198641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:12:00.337 [DEBUG] [Thread-198641] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:12:00.337 [DEBUG] [Thread-198641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:12:00.337 [DEBUG] [Thread-198641] [transport.py] [_log()] Compression: none
2025-11-24T23:12:00.337 [DEBUG] [Thread-198641] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:12:00.397 [DEBUG] [Thread-198641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:12:00.398 [DEBUG] [Thread-198641] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:12:00.398 [DEBUG] [Thread-198641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:12:00.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:12:00.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:12:00.452 [DEBUG] [Thread-198641] [transport.py] [_log()] userauth is OK
2025-11-24T23:12:00.453 [DEBUG] [Thread-198641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:12:00.453 [DEBUG] [Thread-198641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:12:00.453 [DEBUG] [Thread-198641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:12:00.453 [DEBUG] [Thread-198641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:12:00.472 [INFO] [Thread-198641] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:12:00.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:12:00.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:12:01.393 [DEBUG] [Thread-198641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:12:01.394 [DEBUG] [Thread-198641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:12:01.441 [DEBUG] [Thread-198641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:12:01.441 [DEBUG] [Thread-198641] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:12:01.450 [DEBUG] [Thread-198641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:12:01.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:12:01.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-11-24T23:12:01.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-11-24T23:12:01.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:12:01.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:12:01.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:12:01.483 [DEBUG] [Thread-198641] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:12:11.110 [DEBUG] [Thread-198643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:12:26.267 [DEBUG] [Thread-198644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:12:31.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:12:31.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:12:31.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-11-24T23:12:32.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 12, 16), 14.53, 36.88, 0.0, 31.18, 14.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:12:32.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:12:16
2025-11-24T23:12:32.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:12:32.714 [DEBUG] [Thread-198645] [transport.py] [_log()] starting thread (client mode): 0xc9b83280
2025-11-24T23:12:32.714 [DEBUG] [Thread-198645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:12:32.715 [DEBUG] [Thread-198645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:12:32.715 [INFO] [Thread-198645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] client lang: <none>
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] server lang: <none>
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] kex follows: False
2025-11-24T23:12:32.718 [DEBUG] [Thread-198645] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:12:32.719 [DEBUG] [Thread-198645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:12:32.719 [DEBUG] [Thread-198645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:12:32.719 [DEBUG] [Thread-198645] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:12:32.719 [DEBUG] [Thread-198645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:12:32.719 [DEBUG] [Thread-198645] [transport.py] [_log()] Compression: none
2025-11-24T23:12:32.719 [DEBUG] [Thread-198645] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:12:32.743 [DEBUG] [Thread-198645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:12:32.747 [DEBUG] [Thread-198645] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:12:32.749 [DEBUG] [Thread-198645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:12:32.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:12:32.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:12:32.753 [DEBUG] [Thread-198645] [transport.py] [_log()] userauth is OK
2025-11-24T23:12:32.754 [DEBUG] [Thread-198645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:12:32.754 [DEBUG] [Thread-198645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:12:32.754 [DEBUG] [Thread-198645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:12:32.754 [DEBUG] [Thread-198645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:12:32.780 [INFO] [Thread-198645] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:12:32.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:12:33.569 [DEBUG] [Thread-198645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:12:33.569 [DEBUG] [Thread-198645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:12:33.570 [DEBUG] [Thread-198645] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:12:33.610 [DEBUG] [Thread-198645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:12:33.610 [DEBUG] [Thread-198645] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:12:33.613 [DEBUG] [Thread-198645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:12:33.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:12:33.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:12:33.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:12:33.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:12:33.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:12:33.634 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:12:33.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:12:33.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:12:33.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:12:33.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.883379 -999.00  +13.80  19.45     41   +1.10 1 1 1 1 1     0    0 11.85 -54.77 ZNESW 21.1 19.4 166.0 31.5 14.2 -24.6 14.1 -24.2 13.8 -23.0 14.1 -24.0
2025-11-24T23:12:33.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:12:33.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:12:33.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.883379
2025-11-24T23:12:33.642 [DEBUG] [Thread-198645] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:12:33.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:12:33.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:12:33.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:12:33.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:12:33.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:12:33.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:12:16', tmtdew=14.53, humidity=36.88, cloud=0.0, wind=31.18, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:12:16', seeing=0.86, atlas_timestamp='2025-11-24T21:12:03.946', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.020749999999999602, 0.015249999999999986, -0.016500000000000625, 0.06049999999999933, 0.05125000000000135, 0.049999999999998934, 0.011250000000000426, 0.010999999999999233, 0.02200000000000024, 0.03725000000000023, -0.046499999999999986, 0.08300000000000018, 0.09224999999999817, 0.0030000000000001137, 0.02499999999999858, 0.013249999999999318, 0.05550000000000033, 0.04800000000000004, 0.01524999999999821, 0.06649999999999778, 0.06474999999999831, 0.06725000000000136, 0.024750000000000938, -0.0010000000000012221, -0.005499999999999616, 0.05674999999999919, 0.054499999999999105, 0.12150000000000105, 0.14500000000000135, 0.057000000000000384, -0.022999999999999687, -0.021250000000000213], zp_timestamp='2025-11-24T21:09:00')
2025-11-24T23:12:33.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:12:33.739 [DEBUG] [Thread-198648] [transport.py] [_log()] starting thread (client mode): 0xd0711840
2025-11-24T23:12:33.739 [DEBUG] [Thread-198648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:12:33.754 [DEBUG] [Thread-198648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:12:33.754 [INFO] [Thread-198648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] client lang: <none>
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] server lang: <none>
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] kex follows: False
2025-11-24T23:12:33.761 [DEBUG] [Thread-198648] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:12:33.762 [DEBUG] [Thread-198648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:12:33.762 [DEBUG] [Thread-198648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:12:33.762 [DEBUG] [Thread-198648] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:12:33.762 [DEBUG] [Thread-198648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:12:33.762 [DEBUG] [Thread-198648] [transport.py] [_log()] Compression: none
2025-11-24T23:12:33.762 [DEBUG] [Thread-198648] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:12:33.819 [DEBUG] [Thread-198648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:12:33.819 [DEBUG] [Thread-198648] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:12:33.819 [DEBUG] [Thread-198648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:12:33.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:12:33.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:12:33.876 [DEBUG] [Thread-198648] [transport.py] [_log()] userauth is OK
2025-11-24T23:12:33.876 [DEBUG] [Thread-198648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:12:33.876 [DEBUG] [Thread-198648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:12:33.876 [DEBUG] [Thread-198648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:12:33.876 [DEBUG] [Thread-198648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:12:33.890 [INFO] [Thread-198648] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:12:33.890 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:12:33.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:12:34.794 [DEBUG] [Thread-198648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:12:34.794 [DEBUG] [Thread-198648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:12:34.842 [DEBUG] [Thread-198648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:12:34.842 [DEBUG] [Thread-198648] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:12:34.850 [DEBUG] [Thread-198648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:12:34.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:12:34.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:12:34.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-11-24T23:12:34.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:12:34.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:12:34.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:12:34.885 [DEBUG] [Thread-198648] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:12:41.325 [DEBUG] [Thread-198650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:12:52.870 [DEBUG] [Thread-198651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:12:53.000 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:12:53.001 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:12:56.407 [DEBUG] [Thread-198652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:13:04.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:13:04.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:13:04.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-11-24T23:13:05.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 12, 48), 14.55, 36.85, 0.0, 34.65, 13.99, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:13:05.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:12:48
2025-11-24T23:13:05.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:13:06.129 [DEBUG] [Thread-198653] [transport.py] [_log()] starting thread (client mode): 0xc9b82710
2025-11-24T23:13:06.129 [DEBUG] [Thread-198653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:13:06.143 [DEBUG] [Thread-198653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:13:06.143 [INFO] [Thread-198653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:13:06.147 [DEBUG] [Thread-198653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] client lang: <none>
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] server lang: <none>
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] kex follows: False
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:13:06.148 [DEBUG] [Thread-198653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:13:06.149 [DEBUG] [Thread-198653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:13:06.149 [DEBUG] [Thread-198653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:13:06.149 [DEBUG] [Thread-198653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:13:06.149 [DEBUG] [Thread-198653] [transport.py] [_log()] Compression: none
2025-11-24T23:13:06.149 [DEBUG] [Thread-198653] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:13:06.166 [DEBUG] [Thread-198653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:13:06.168 [DEBUG] [Thread-198653] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:13:06.169 [DEBUG] [Thread-198653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:13:06.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:13:06.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:13:06.173 [DEBUG] [Thread-198653] [transport.py] [_log()] userauth is OK
2025-11-24T23:13:06.173 [DEBUG] [Thread-198653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:13:06.173 [DEBUG] [Thread-198653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:13:06.173 [DEBUG] [Thread-198653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:13:06.173 [DEBUG] [Thread-198653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:13:06.198 [INFO] [Thread-198653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:13:06.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:13:06.853 [DEBUG] [Thread-198653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:13:06.853 [DEBUG] [Thread-198653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:13:06.863 [DEBUG] [Thread-198653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:13:06.894 [DEBUG] [Thread-198653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:13:06.894 [DEBUG] [Thread-198653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:13:06.896 [DEBUG] [Thread-198653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:13:06.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:13:06.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:13:06.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:13:06.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:13:06.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:13:06.919 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:13:06.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:13:06.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:13:06.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:13:06.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.883727 -999.00  +13.80  25.01     41   +1.00 1 1 1 1 1     0    0 11.60 -53.61 ZNESW 27.3 25.0 171.0 32.8 14.2 -24.7 14.0 -24.3 13.8 -23.1 14.1 -24.0
2025-11-24T23:13:06.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:13:06.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:13:06.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.883727
2025-11-24T23:13:06.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:13:06.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:13:06.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:13:06.928 [DEBUG] [Thread-198653] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:13:06.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:13:06.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:13:06.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:12:48', tmtdew=14.55, humidity=36.85, cloud=0.0, wind=34.65, temperature=13.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:12:48', seeing=0.86, atlas_timestamp='2025-11-24T21:12:34.013', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.020749999999999602, 0.015249999999999986, -0.016500000000000625, 0.06049999999999933, 0.05125000000000135, 0.049999999999998934, 0.011250000000000426, 0.010999999999999233, 0.02200000000000024, 0.03725000000000023, -0.046499999999999986, 0.08300000000000018, 0.09224999999999817, 0.0030000000000001137, 0.02499999999999858, 0.013249999999999318, 0.05550000000000033, 0.04800000000000004, 0.01524999999999821, 0.06649999999999778, 0.06474999999999831, 0.06725000000000136, 0.024750000000000938, -0.0010000000000012221, -0.005499999999999616, 0.05674999999999919, 0.054499999999999105, 0.12150000000000105, 0.14500000000000135, 0.057000000000000384, -0.022999999999999687, -0.021250000000000213], zp_timestamp='2025-11-24T21:09:00')
2025-11-24T23:13:07.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:13:07.014 [DEBUG] [Thread-198656] [transport.py] [_log()] starting thread (client mode): 0xc9b817b0
2025-11-24T23:13:07.014 [DEBUG] [Thread-198656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:13:07.030 [DEBUG] [Thread-198656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:13:07.030 [INFO] [Thread-198656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:13:07.037 [DEBUG] [Thread-198656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:13:07.037 [DEBUG] [Thread-198656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] client lang: <none>
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] server lang: <none>
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] kex follows: False
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] Compression: none
2025-11-24T23:13:07.038 [DEBUG] [Thread-198656] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:13:07.096 [DEBUG] [Thread-198656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:13:07.096 [DEBUG] [Thread-198656] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:13:07.096 [DEBUG] [Thread-198656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:13:07.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:13:07.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:13:07.152 [DEBUG] [Thread-198656] [transport.py] [_log()] userauth is OK
2025-11-24T23:13:07.152 [DEBUG] [Thread-198656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:13:07.152 [DEBUG] [Thread-198656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:13:07.152 [DEBUG] [Thread-198656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:13:07.152 [DEBUG] [Thread-198656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:13:07.168 [INFO] [Thread-198656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:13:07.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:13:07.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:13:08.143 [DEBUG] [Thread-198656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:13:08.144 [DEBUG] [Thread-198656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:13:08.195 [DEBUG] [Thread-198656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:13:08.195 [DEBUG] [Thread-198656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:13:08.207 [DEBUG] [Thread-198656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:13:08.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:13:08.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-11-24T23:13:08.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-11-24T23:13:08.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:13:08.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:13:08.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:13:08.263 [DEBUG] [Thread-198656] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:13:11.466 [DEBUG] [Thread-198658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:13:26.649 [DEBUG] [Thread-198659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:13:38.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:13:38.284 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:13:38.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-11-24T23:13:39.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 13, 21), 14.56, 36.83, 0.0, 34.92, 14.0, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:13:39.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:13:21
2025-11-24T23:13:39.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:13:39.372 [DEBUG] [Thread-198660] [transport.py] [_log()] starting thread (client mode): 0xd073bd60
2025-11-24T23:13:39.373 [DEBUG] [Thread-198660] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:13:39.391 [DEBUG] [Thread-198660] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:13:39.391 [INFO] [Thread-198660] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] client lang: <none>
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] server lang: <none>
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] kex follows: False
2025-11-24T23:13:39.396 [DEBUG] [Thread-198660] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:13:39.397 [DEBUG] [Thread-198660] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:13:39.397 [DEBUG] [Thread-198660] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:13:39.397 [DEBUG] [Thread-198660] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:13:39.397 [DEBUG] [Thread-198660] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:13:39.397 [DEBUG] [Thread-198660] [transport.py] [_log()] Compression: none
2025-11-24T23:13:39.398 [DEBUG] [Thread-198660] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:13:39.420 [DEBUG] [Thread-198660] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:13:39.424 [DEBUG] [Thread-198660] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:13:39.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:13:39.426 [DEBUG] [Thread-198660] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:13:39.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:13:39.429 [DEBUG] [Thread-198660] [transport.py] [_log()] userauth is OK
2025-11-24T23:13:39.429 [DEBUG] [Thread-198660] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:13:39.429 [DEBUG] [Thread-198660] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:13:39.429 [DEBUG] [Thread-198660] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:13:39.429 [DEBUG] [Thread-198660] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:13:39.448 [INFO] [Thread-198660] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:13:39.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:13:40.240 [DEBUG] [Thread-198660] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:13:40.240 [DEBUG] [Thread-198660] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:13:40.241 [DEBUG] [Thread-198660] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:13:40.281 [DEBUG] [Thread-198660] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:13:40.281 [DEBUG] [Thread-198660] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:13:40.283 [DEBUG] [Thread-198660] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:13:40.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:13:40.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:13:40.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:13:40.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:13:40.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:13:40.304 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:13:40.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:13:40.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:13:40.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:13:40.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.884074 -999.00  +13.80  26.09     42   +1.10 1 1 1 1 1     0    0 11.63 -55.65 ZNESW 27.4 26.1 171.6 30.0 14.2 -24.8 14.1 -24.1 13.8 -23.1 14.1 -23.9
2025-11-24T23:13:40.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:13:40.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:13:40.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.884074
2025-11-24T23:13:40.311 [DEBUG] [Thread-198660] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:13:40.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:13:40.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:13:40.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:13:40.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:13:40.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:13:40.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:13:21', tmtdew=14.56, humidity=36.83, cloud=0.0, wind=34.92, temperature=14.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:13:21', seeing=0.86, atlas_timestamp='2025-11-24T21:13:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.020749999999999602, 0.015249999999999986, -0.016500000000000625, 0.06049999999999933, 0.05125000000000135, 0.049999999999998934, 0.011250000000000426, 0.010999999999999233, 0.02200000000000024, 0.03725000000000023, -0.046499999999999986, 0.08300000000000018, 0.09224999999999817, 0.0030000000000001137, 0.02499999999999858, 0.013249999999999318, 0.05550000000000033, 0.04800000000000004, 0.01524999999999821, 0.06649999999999778, 0.06474999999999831, 0.06725000000000136, 0.024750000000000938, -0.0010000000000012221, -0.005499999999999616, 0.05674999999999919, 0.054499999999999105, 0.12150000000000105, 0.14500000000000135, 0.057000000000000384, -0.022999999999999687, -0.021250000000000213], zp_timestamp='2025-11-24T21:09:00')
2025-11-24T23:13:40.399 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:13:40.411 [DEBUG] [Thread-198663] [transport.py] [_log()] starting thread (client mode): 0xd3149a80
2025-11-24T23:13:40.411 [DEBUG] [Thread-198663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:13:40.426 [DEBUG] [Thread-198663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:13:40.426 [INFO] [Thread-198663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] client lang: <none>
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] server lang: <none>
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] kex follows: False
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] Compression: none
2025-11-24T23:13:40.434 [DEBUG] [Thread-198663] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:13:40.491 [DEBUG] [Thread-198663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:13:40.491 [DEBUG] [Thread-198663] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:13:40.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:13:40.491 [DEBUG] [Thread-198663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:13:40.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:13:40.553 [DEBUG] [Thread-198663] [transport.py] [_log()] userauth is OK
2025-11-24T23:13:40.553 [DEBUG] [Thread-198663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:13:40.553 [DEBUG] [Thread-198663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:13:40.553 [DEBUG] [Thread-198663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:13:40.553 [DEBUG] [Thread-198663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:13:40.569 [INFO] [Thread-198663] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:13:40.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:13:40.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:13:41.439 [DEBUG] [Thread-198663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:13:41.439 [DEBUG] [Thread-198663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:13:41.487 [DEBUG] [Thread-198663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:13:41.487 [DEBUG] [Thread-198663] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:13:41.495 [DEBUG] [Thread-198663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:13:41.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:13:41.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-11-24T23:13:41.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-11-24T23:13:41.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:13:41.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:13:41.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:13:41.534 [DEBUG] [Thread-198663] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:13:41.706 [DEBUG] [Thread-198665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:13:53.201 [DEBUG] [Thread-198666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:13:53.208 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:13:53.209 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:13:56.820 [DEBUG] [Thread-198667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:14:11.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:14:11.550 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:14:11.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:14:11.886 [DEBUG] [Thread-198668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:14:12.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 13, 54), 14.65, 36.72, 0.0, 33.07, 14.05, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:14:12.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:13:54
2025-11-24T23:14:12.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:14:13.150 [DEBUG] [Thread-198669] [transport.py] [_log()] starting thread (client mode): 0xd31499f0
2025-11-24T23:14:13.151 [DEBUG] [Thread-198669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:14:13.162 [DEBUG] [Thread-198669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:14:13.162 [INFO] [Thread-198669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:14:13.167 [DEBUG] [Thread-198669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:14:13.167 [DEBUG] [Thread-198669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:14:13.167 [DEBUG] [Thread-198669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:14:13.167 [DEBUG] [Thread-198669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:14:13.167 [DEBUG] [Thread-198669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:14:13.167 [DEBUG] [Thread-198669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:14:13.167 [DEBUG] [Thread-198669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:14:13.167 [DEBUG] [Thread-198669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:14:13.167 [DEBUG] [Thread-198669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:14:13.168 [DEBUG] [Thread-198669] [transport.py] [_log()] client lang: <none>
2025-11-24T23:14:13.168 [DEBUG] [Thread-198669] [transport.py] [_log()] server lang: <none>
2025-11-24T23:14:13.168 [DEBUG] [Thread-198669] [transport.py] [_log()] kex follows: False
2025-11-24T23:14:13.168 [DEBUG] [Thread-198669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:14:13.168 [DEBUG] [Thread-198669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:14:13.168 [DEBUG] [Thread-198669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:14:13.168 [DEBUG] [Thread-198669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:14:13.168 [DEBUG] [Thread-198669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:14:13.168 [DEBUG] [Thread-198669] [transport.py] [_log()] Compression: none
2025-11-24T23:14:13.169 [DEBUG] [Thread-198669] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:14:13.199 [DEBUG] [Thread-198669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:14:13.202 [DEBUG] [Thread-198669] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:14:13.203 [DEBUG] [Thread-198669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:14:13.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:14:13.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:14:13.208 [DEBUG] [Thread-198669] [transport.py] [_log()] userauth is OK
2025-11-24T23:14:13.208 [DEBUG] [Thread-198669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:14:13.208 [DEBUG] [Thread-198669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:14:13.208 [DEBUG] [Thread-198669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:14:13.208 [DEBUG] [Thread-198669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:14:13.237 [INFO] [Thread-198669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:14:13.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:14:13.862 [DEBUG] [Thread-198669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:14:13.862 [DEBUG] [Thread-198669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:14:13.862 [DEBUG] [Thread-198669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:14:13.903 [DEBUG] [Thread-198669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:14:13.903 [DEBUG] [Thread-198669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:14:13.906 [DEBUG] [Thread-198669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:14:13.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:14:13.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:14:13.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:14:13.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:14:13.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:14:13.930 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:14:13.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:14:13.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:14:13.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:14:13.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.884421 -999.00  +13.80  22.08     41   +1.10 1 1 1 1 1     0    0 11.55 -53.66 ZNESW 19.7 22.1 167.6 32.4 14.2 -24.8 14.0 -24.3 13.8 -23.1 14.1 -24.1
2025-11-24T23:14:13.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:14:13.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:14:13.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.884421
2025-11-24T23:14:13.938 [DEBUG] [Thread-198669] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:14:13.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:14:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:14:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:14:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:14:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:14:13.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:13:54', tmtdew=14.65, humidity=36.72, cloud=0.0, wind=33.07, temperature=14.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:13:54', seeing=0.99, atlas_timestamp='2025-11-24T21:13:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.020749999999999602, 0.015249999999999986, -0.016500000000000625, 0.06049999999999933, 0.05125000000000135, 0.049999999999998934, 0.011250000000000426, 0.010999999999999233, 0.02200000000000024, 0.03725000000000023, -0.046499999999999986, 0.08300000000000018, 0.09224999999999817, 0.0030000000000001137, 0.02499999999999858, 0.013249999999999318, 0.05550000000000033, 0.04800000000000004, 0.01524999999999821, 0.06649999999999778, 0.06474999999999831, 0.06725000000000136, 0.024750000000000938, -0.0010000000000012221, -0.005499999999999616, 0.05674999999999919, 0.054499999999999105, 0.12150000000000105, 0.14500000000000135, 0.057000000000000384, -0.022999999999999687, -0.021250000000000213], zp_timestamp='2025-11-24T21:12:00')
2025-11-24T23:14:14.026 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:14:14.037 [DEBUG] [Thread-198672] [transport.py] [_log()] starting thread (client mode): 0xd314a350
2025-11-24T23:14:14.038 [DEBUG] [Thread-198672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:14:14.052 [DEBUG] [Thread-198672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:14:14.052 [INFO] [Thread-198672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] client lang: <none>
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] server lang: <none>
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] kex follows: False
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] Compression: none
2025-11-24T23:14:14.060 [DEBUG] [Thread-198672] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:14:14.122 [DEBUG] [Thread-198672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:14:14.122 [DEBUG] [Thread-198672] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:14:14.122 [DEBUG] [Thread-198672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:14:14.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:14:14.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:14:14.180 [DEBUG] [Thread-198672] [transport.py] [_log()] userauth is OK
2025-11-24T23:14:14.180 [DEBUG] [Thread-198672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:14:14.180 [DEBUG] [Thread-198672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:14:14.180 [DEBUG] [Thread-198672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:14:14.180 [DEBUG] [Thread-198672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:14:14.195 [INFO] [Thread-198672] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:14:14.195 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:14:14.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:14:15.048 [DEBUG] [Thread-198672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:14:15.048 [DEBUG] [Thread-198672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:14:15.096 [DEBUG] [Thread-198672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:14:15.096 [DEBUG] [Thread-198672] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:14:15.104 [DEBUG] [Thread-198672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:14:15.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:14:15.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')
2025-11-24T23:14:15.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') -> 00000000
2025-11-24T23:14:15.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:14:15.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:14:15.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:14:15.138 [DEBUG] [Thread-198672] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:14:26.926 [DEBUG] [Thread-198674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:14:42.048 [DEBUG] [Thread-198675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:14:45.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:14:45.163 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:14:45.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-11-24T23:14:46.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 14, 27), 14.64, 36.73, 0.0, 32.22, 14.02, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:14:46.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:14:27
2025-11-24T23:14:46.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:14:46.519 [DEBUG] [Thread-198676] [transport.py] [_log()] starting thread (client mode): 0xd07f8f10
2025-11-24T23:14:46.519 [DEBUG] [Thread-198676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:14:46.534 [DEBUG] [Thread-198676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:14:46.534 [INFO] [Thread-198676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:14:46.538 [DEBUG] [Thread-198676] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:14:46.538 [DEBUG] [Thread-198676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] client lang: <none>
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] server lang: <none>
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] kex follows: False
2025-11-24T23:14:46.539 [DEBUG] [Thread-198676] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:14:46.540 [DEBUG] [Thread-198676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:14:46.541 [DEBUG] [Thread-198676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:14:46.541 [DEBUG] [Thread-198676] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:14:46.541 [DEBUG] [Thread-198676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:14:46.541 [DEBUG] [Thread-198676] [transport.py] [_log()] Compression: none
2025-11-24T23:14:46.541 [DEBUG] [Thread-198676] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:14:46.558 [DEBUG] [Thread-198676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:14:46.563 [DEBUG] [Thread-198676] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:14:46.565 [DEBUG] [Thread-198676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:14:46.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:14:46.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:14:46.601 [DEBUG] [Thread-198676] [transport.py] [_log()] userauth is OK
2025-11-24T23:14:46.601 [DEBUG] [Thread-198676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:14:46.602 [DEBUG] [Thread-198676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:14:46.602 [DEBUG] [Thread-198676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:14:46.602 [DEBUG] [Thread-198676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:14:46.629 [INFO] [Thread-198676] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:14:46.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:14:47.282 [DEBUG] [Thread-198676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:14:47.282 [DEBUG] [Thread-198676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:14:47.293 [DEBUG] [Thread-198676] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:14:47.323 [DEBUG] [Thread-198676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:14:47.323 [DEBUG] [Thread-198676] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:14:47.326 [DEBUG] [Thread-198676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:14:47.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:14:47.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:14:47.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:14:47.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:14:47.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:14:47.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:14:47.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:14:47.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:14:47.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:14:47.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.884768 -999.00  +13.80  23.97     41   +1.00 1 1 1 1 1     0    0 11.49 -51.67 ZNESW 23.9 24.0 170.8 27.1 14.2 -24.9 14.0 -24.4 13.8 -23.1 14.1 -24.2
2025-11-24T23:14:47.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:14:47.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:14:47.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.884768
2025-11-24T23:14:47.362 [DEBUG] [Thread-198676] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:14:47.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:14:47.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:14:47.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:14:47.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:14:47.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:14:47.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:14:27', tmtdew=14.64, humidity=36.73, cloud=0.0, wind=32.22, temperature=14.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:14:27', seeing=0.83, atlas_timestamp='2025-11-24T21:14:03.955', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.020749999999999602, 0.015249999999999986, -0.016500000000000625, 0.06049999999999933, 0.05125000000000135, 0.049999999999998934, 0.011250000000000426, 0.010999999999999233, 0.02200000000000024, 0.03725000000000023, -0.046499999999999986, 0.08300000000000018, 0.09224999999999817, 0.0030000000000001137, 0.02499999999999858, 0.013249999999999318, 0.05550000000000033, 0.04800000000000004, 0.01524999999999821, 0.06649999999999778, 0.06474999999999831, 0.06725000000000136, 0.024750000000000938, -0.0010000000000012221, -0.005499999999999616, 0.05674999999999919, 0.054499999999999105, 0.12150000000000105, 0.14500000000000135, 0.057000000000000384, -0.022999999999999687, -0.021250000000000213], zp_timestamp='2025-11-24T21:12:00')
2025-11-24T23:14:47.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:14:47.463 [DEBUG] [Thread-198679] [transport.py] [_log()] starting thread (client mode): 0xd317e2c0
2025-11-24T23:14:47.463 [DEBUG] [Thread-198679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:14:47.476 [DEBUG] [Thread-198679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:14:47.476 [INFO] [Thread-198679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:14:47.484 [DEBUG] [Thread-198679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:14:47.484 [DEBUG] [Thread-198679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:14:47.484 [DEBUG] [Thread-198679] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:14:47.484 [DEBUG] [Thread-198679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:14:47.484 [DEBUG] [Thread-198679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:14:47.484 [DEBUG] [Thread-198679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:14:47.485 [DEBUG] [Thread-198679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:14:47.485 [DEBUG] [Thread-198679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:14:47.485 [DEBUG] [Thread-198679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:14:47.485 [DEBUG] [Thread-198679] [transport.py] [_log()] client lang: <none>
2025-11-24T23:14:47.485 [DEBUG] [Thread-198679] [transport.py] [_log()] server lang: <none>
2025-11-24T23:14:47.485 [DEBUG] [Thread-198679] [transport.py] [_log()] kex follows: False
2025-11-24T23:14:47.485 [DEBUG] [Thread-198679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:14:47.485 [DEBUG] [Thread-198679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:14:47.485 [DEBUG] [Thread-198679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:14:47.485 [DEBUG] [Thread-198679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:14:47.486 [DEBUG] [Thread-198679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:14:47.486 [DEBUG] [Thread-198679] [transport.py] [_log()] Compression: none
2025-11-24T23:14:47.486 [DEBUG] [Thread-198679] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:14:47.541 [DEBUG] [Thread-198679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:14:47.542 [DEBUG] [Thread-198679] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:14:47.542 [DEBUG] [Thread-198679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:14:47.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:14:47.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:14:47.601 [DEBUG] [Thread-198679] [transport.py] [_log()] userauth is OK
2025-11-24T23:14:47.602 [DEBUG] [Thread-198679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:14:47.602 [DEBUG] [Thread-198679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:14:47.602 [DEBUG] [Thread-198679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:14:47.602 [DEBUG] [Thread-198679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:14:47.620 [INFO] [Thread-198679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:14:47.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:14:47.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:14:48.449 [DEBUG] [Thread-198679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:14:48.449 [DEBUG] [Thread-198679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:14:48.498 [DEBUG] [Thread-198679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:14:48.498 [DEBUG] [Thread-198679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:14:48.507 [DEBUG] [Thread-198679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:14:48.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:14:48.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:14:48.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:14:48.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:14:48.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:14:48.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:14:48.554 [DEBUG] [Thread-198679] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:14:53.427 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:14:53.429 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:14:53.494 [DEBUG] [Thread-198681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:14:57.092 [DEBUG] [Thread-198682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:15:06.412 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:15:12.250 [DEBUG] [Thread-198683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:15:18.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:15:18.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:15:18.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-11-24T23:15:19.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 14, 27), 14.64, 36.23, 0.0, 30.42, 13.97, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:15:19.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:14:27
2025-11-24T23:15:19.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:15:19.915 [DEBUG] [Thread-198684] [transport.py] [_log()] starting thread (client mode): 0xd07130a0
2025-11-24T23:15:19.916 [DEBUG] [Thread-198684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:15:19.919 [DEBUG] [Thread-198684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:15:19.920 [INFO] [Thread-198684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:15:19.924 [DEBUG] [Thread-198684] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:15:19.925 [DEBUG] [Thread-198684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:15:19.925 [DEBUG] [Thread-198684] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:15:19.925 [DEBUG] [Thread-198684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:15:19.925 [DEBUG] [Thread-198684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:15:19.925 [DEBUG] [Thread-198684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:15:19.925 [DEBUG] [Thread-198684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:15:19.925 [DEBUG] [Thread-198684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:15:19.925 [DEBUG] [Thread-198684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:15:19.926 [DEBUG] [Thread-198684] [transport.py] [_log()] client lang: <none>
2025-11-24T23:15:19.926 [DEBUG] [Thread-198684] [transport.py] [_log()] server lang: <none>
2025-11-24T23:15:19.926 [DEBUG] [Thread-198684] [transport.py] [_log()] kex follows: False
2025-11-24T23:15:19.926 [DEBUG] [Thread-198684] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:15:19.926 [DEBUG] [Thread-198684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:15:19.926 [DEBUG] [Thread-198684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:15:19.926 [DEBUG] [Thread-198684] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:15:19.926 [DEBUG] [Thread-198684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:15:19.926 [DEBUG] [Thread-198684] [transport.py] [_log()] Compression: none
2025-11-24T23:15:19.927 [DEBUG] [Thread-198684] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:15:19.959 [DEBUG] [Thread-198684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:15:19.964 [DEBUG] [Thread-198684] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:15:19.965 [DEBUG] [Thread-198684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:15:19.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:15:19.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:15:19.971 [DEBUG] [Thread-198684] [transport.py] [_log()] userauth is OK
2025-11-24T23:15:19.971 [DEBUG] [Thread-198684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:15:19.971 [DEBUG] [Thread-198684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:15:19.972 [DEBUG] [Thread-198684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:15:19.972 [DEBUG] [Thread-198684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:15:20.012 [INFO] [Thread-198684] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:15:20.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:15:20.665 [DEBUG] [Thread-198684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:15:20.665 [DEBUG] [Thread-198684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:15:20.674 [DEBUG] [Thread-198684] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:15:20.706 [DEBUG] [Thread-198684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:15:20.706 [DEBUG] [Thread-198684] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:15:20.709 [DEBUG] [Thread-198684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:15:20.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:15:20.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:15:20.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:15:20.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:15:20.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:15:20.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:15:20.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:15:20.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:15:20.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:15:20.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.885463 -999.00  +13.70  23.64     41   +0.90 1 1 1 1 1     0    0 11.61 -51.98 ZNESW 22.9 23.6 170.4 27.7 14.2 -25.0 14.0 -24.5 13.8 -23.3 14.0 -24.2
2025-11-24T23:15:20.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:15:20.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:15:20.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.885463
2025-11-24T23:15:20.737 [DEBUG] [Thread-198684] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:15:20.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:15:20.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:15:20.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:15:20.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:15:20.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:15:20.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:14:27', tmtdew=14.64, humidity=36.23, cloud=0.0, wind=30.42, temperature=13.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:15:00', seeing=0.94, atlas_timestamp='2025-11-24T21:15:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.020749999999999602, 0.015249999999999986, -0.016500000000000625, 0.06049999999999933, 0.05125000000000135, 0.049999999999998934, 0.011250000000000426, 0.010999999999999233, 0.02200000000000024, 0.03725000000000023, -0.046499999999999986, 0.08300000000000018, 0.09224999999999817, 0.0030000000000001137, 0.02499999999999858, 0.013249999999999318, 0.05550000000000033, 0.04800000000000004, 0.01524999999999821, 0.06649999999999778, 0.06474999999999831, 0.06725000000000136, 0.024750000000000938, -0.0010000000000012221, -0.005499999999999616, 0.05674999999999919, 0.054499999999999105, 0.12150000000000105, 0.14500000000000135, 0.057000000000000384, -0.022999999999999687, -0.021250000000000213], zp_timestamp='2025-11-24T21:12:00')
2025-11-24T23:15:20.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:15:20.829 [DEBUG] [Thread-198687] [transport.py] [_log()] starting thread (client mode): 0xc9b80760
2025-11-24T23:15:20.829 [DEBUG] [Thread-198687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:15:20.844 [DEBUG] [Thread-198687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:15:20.844 [INFO] [Thread-198687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] client lang: <none>
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] server lang: <none>
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] kex follows: False
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] Compression: none
2025-11-24T23:15:20.852 [DEBUG] [Thread-198687] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:15:20.907 [DEBUG] [Thread-198687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:15:20.907 [DEBUG] [Thread-198687] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:15:20.907 [DEBUG] [Thread-198687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:15:20.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:15:20.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:15:20.965 [DEBUG] [Thread-198687] [transport.py] [_log()] userauth is OK
2025-11-24T23:15:20.965 [DEBUG] [Thread-198687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:15:20.965 [DEBUG] [Thread-198687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:15:20.965 [DEBUG] [Thread-198687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:15:20.965 [DEBUG] [Thread-198687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:15:20.985 [INFO] [Thread-198687] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:15:20.985 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:15:20.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:15:21.842 [DEBUG] [Thread-198687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:15:21.843 [DEBUG] [Thread-198687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:15:21.890 [DEBUG] [Thread-198687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:15:21.891 [DEBUG] [Thread-198687] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:15:21.899 [DEBUG] [Thread-198687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:15:21.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:15:21.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-11-24T23:15:21.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-11-24T23:15:21.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:15:21.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:15:21.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:15:21.934 [DEBUG] [Thread-198687] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:15:27.348 [DEBUG] [Thread-198689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:15:42.434 [DEBUG] [Thread-198690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:15:51.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:15:51.939 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:15:51.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-11-24T23:15:52.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 15, 33), 14.67, 36.13, 0.0, 31.23, 13.89, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:15:52.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:15:33
2025-11-24T23:15:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:15:53.120 [DEBUG] [Thread-198691] [transport.py] [_log()] starting thread (client mode): 0xd317dc90
2025-11-24T23:15:53.120 [DEBUG] [Thread-198691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:15:53.135 [DEBUG] [Thread-198691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:15:53.135 [INFO] [Thread-198691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] client lang: <none>
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] server lang: <none>
2025-11-24T23:15:53.139 [DEBUG] [Thread-198691] [transport.py] [_log()] kex follows: False
2025-11-24T23:15:53.140 [DEBUG] [Thread-198691] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:15:53.140 [DEBUG] [Thread-198691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:15:53.140 [DEBUG] [Thread-198691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:15:53.141 [DEBUG] [Thread-198691] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:15:53.141 [DEBUG] [Thread-198691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:15:53.141 [DEBUG] [Thread-198691] [transport.py] [_log()] Compression: none
2025-11-24T23:15:53.141 [DEBUG] [Thread-198691] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:15:53.175 [DEBUG] [Thread-198691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:15:53.180 [DEBUG] [Thread-198691] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:15:53.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:15:53.184 [DEBUG] [Thread-198691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:15:53.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:15:53.187 [DEBUG] [Thread-198691] [transport.py] [_log()] userauth is OK
2025-11-24T23:15:53.188 [DEBUG] [Thread-198691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:15:53.188 [DEBUG] [Thread-198691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:15:53.188 [DEBUG] [Thread-198691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:15:53.188 [DEBUG] [Thread-198691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:15:53.214 [INFO] [Thread-198691] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:15:53.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:15:53.634 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:15:53.637 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:15:53.797 [DEBUG] [Thread-198691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:15:53.798 [DEBUG] [Thread-198691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:15:53.799 [DEBUG] [Thread-198691] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:15:53.803 [DEBUG] [Thread-198693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:15:53.838 [DEBUG] [Thread-198691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:15:53.838 [DEBUG] [Thread-198691] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:15:53.841 [DEBUG] [Thread-198691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:15:53.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:15:53.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:15:53.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:15:53.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:15:53.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:15:53.866 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:15:53.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:15:53.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:15:53.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:15:53.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.885810 -999.00  +13.70  25.62     41   +0.90 1 1 1 1 1     0    0 11.84 -46.59 ZNESW 25.7 25.6 171.0 32.4 14.1 -25.0 14.0 -24.4 13.8 -23.3 14.0 -24.2
2025-11-24T23:15:53.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:15:53.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:15:53.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.885810
2025-11-24T23:15:53.874 [DEBUG] [Thread-198691] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:15:53.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:15:53.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:15:53.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:15:53.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:15:53.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:15:53.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:15:33', tmtdew=14.67, humidity=36.13, cloud=0.0, wind=31.23, temperature=13.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:15:33', seeing=1.01, atlas_timestamp='2025-11-24T21:15:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.020749999999999602, 0.015249999999999986, -0.016500000000000625, 0.06049999999999933, 0.05125000000000135, 0.049999999999998934, 0.011250000000000426, 0.010999999999999233, 0.02200000000000024, 0.03725000000000023, -0.046499999999999986, 0.08300000000000018, 0.09224999999999817, 0.0030000000000001137, 0.02499999999999858, 0.013249999999999318, 0.05550000000000033, 0.04800000000000004, 0.01524999999999821, 0.06649999999999778, 0.06474999999999831, 0.06725000000000136, 0.024750000000000938, -0.0010000000000012221, -0.005499999999999616, 0.05674999999999919, 0.054499999999999105, 0.12150000000000105, 0.14500000000000135, 0.057000000000000384, -0.022999999999999687, -0.021250000000000213], zp_timestamp='2025-11-24T21:12:00')
2025-11-24T23:15:53.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:15:53.975 [DEBUG] [Thread-198695] [transport.py] [_log()] starting thread (client mode): 0xd0712350
2025-11-24T23:15:53.975 [DEBUG] [Thread-198695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:15:53.991 [DEBUG] [Thread-198695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:15:53.992 [INFO] [Thread-198695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] client lang: <none>
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] server lang: <none>
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] kex follows: False
2025-11-24T23:15:53.999 [DEBUG] [Thread-198695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:15:54.000 [DEBUG] [Thread-198695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:15:54.000 [DEBUG] [Thread-198695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:15:54.000 [DEBUG] [Thread-198695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:15:54.000 [DEBUG] [Thread-198695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:15:54.000 [DEBUG] [Thread-198695] [transport.py] [_log()] Compression: none
2025-11-24T23:15:54.000 [DEBUG] [Thread-198695] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:15:54.057 [DEBUG] [Thread-198695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:15:54.057 [DEBUG] [Thread-198695] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:15:54.058 [DEBUG] [Thread-198695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:15:54.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:15:54.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:15:54.112 [DEBUG] [Thread-198695] [transport.py] [_log()] userauth is OK
2025-11-24T23:15:54.112 [DEBUG] [Thread-198695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:15:54.113 [DEBUG] [Thread-198695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:15:54.113 [DEBUG] [Thread-198695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:15:54.113 [DEBUG] [Thread-198695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:15:54.131 [INFO] [Thread-198695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:15: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-11-24T23:15:54.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:15:54.968 [DEBUG] [Thread-198695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:15:54.968 [DEBUG] [Thread-198695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:15:55.016 [DEBUG] [Thread-198695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:15:55.016 [DEBUG] [Thread-198695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:15:55.025 [DEBUG] [Thread-198695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:15:55.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:15:55.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:15:55.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:15:55.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:15:55.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:15:55.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:15:55.061 [DEBUG] [Thread-198695] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:15:57.482 [DEBUG] [Thread-198697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:12.627 [DEBUG] [Thread-198698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:25.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:16:25.095 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:16:25.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-11-24T23:16:26.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 16, 5), 14.66, 36.17, 0.0, 30.51, 13.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:16:26.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:16:05
2025-11-24T23:16:26.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:16:26.396 [DEBUG] [Thread-198699] [transport.py] [_log()] starting thread (client mode): 0xd07ce320
2025-11-24T23:16:26.397 [DEBUG] [Thread-198699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:16:26.404 [DEBUG] [Thread-198699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:16:26.404 [INFO] [Thread-198699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:16:26.410 [DEBUG] [Thread-198699] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:16:26.410 [DEBUG] [Thread-198699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:16:26.410 [DEBUG] [Thread-198699] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:16:26.410 [DEBUG] [Thread-198699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:16:26.410 [DEBUG] [Thread-198699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:16:26.411 [DEBUG] [Thread-198699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:16:26.411 [DEBUG] [Thread-198699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:16:26.411 [DEBUG] [Thread-198699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:16:26.411 [DEBUG] [Thread-198699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:16:26.411 [DEBUG] [Thread-198699] [transport.py] [_log()] client lang: <none>
2025-11-24T23:16:26.411 [DEBUG] [Thread-198699] [transport.py] [_log()] server lang: <none>
2025-11-24T23:16:26.411 [DEBUG] [Thread-198699] [transport.py] [_log()] kex follows: False
2025-11-24T23:16:26.411 [DEBUG] [Thread-198699] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:16:26.412 [DEBUG] [Thread-198699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:16:26.412 [DEBUG] [Thread-198699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:16:26.412 [DEBUG] [Thread-198699] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:16:26.412 [DEBUG] [Thread-198699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:16:26.412 [DEBUG] [Thread-198699] [transport.py] [_log()] Compression: none
2025-11-24T23:16:26.412 [DEBUG] [Thread-198699] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:16:26.452 [DEBUG] [Thread-198699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:16:26.458 [DEBUG] [Thread-198699] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:16:26.460 [DEBUG] [Thread-198699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:16:26.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:16:26.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:16:26.466 [DEBUG] [Thread-198699] [transport.py] [_log()] userauth is OK
2025-11-24T23:16:26.466 [DEBUG] [Thread-198699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:16:26.466 [DEBUG] [Thread-198699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:16:26.466 [DEBUG] [Thread-198699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:16:26.467 [DEBUG] [Thread-198699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:16:26.493 [INFO] [Thread-198699] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:16:26.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:16:27.117 [DEBUG] [Thread-198699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:16:27.117 [DEBUG] [Thread-198699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:16:27.127 [DEBUG] [Thread-198699] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:16:27.158 [DEBUG] [Thread-198699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:16:27.158 [DEBUG] [Thread-198699] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:16:27.161 [DEBUG] [Thread-198699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:16:27.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:16:27.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:16:27.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:16:27.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:16:27.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:16:27.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:16:27.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:16:27.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:16:27.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:16:27.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.886157 -999.00  +13.70  19.58     41   +0.90 1 1 1 1 1     0    0 11.56 -45.90 ZNESW 19.7 19.6 173.2 32.2 14.1 -24.8 13.9 -24.3 13.7 -23.0 14.1 -24.0
2025-11-24T23:16:27.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:16:27.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:16:27.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.886157
2025-11-24T23:16:27.185 [DEBUG] [Thread-198699] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:16:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:16:27.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:16:27.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:16:27.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:16:27.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:16:27.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:16:05', tmtdew=14.66, humidity=36.17, cloud=0.0, wind=30.51, temperature=13.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:16:06', seeing=0.89, atlas_timestamp='2025-11-24T21:16:03.965', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.020749999999999602, 0.015249999999999986, -0.016500000000000625, 0.06049999999999933, 0.05125000000000135, 0.049999999999998934, 0.011250000000000426, 0.010999999999999233, 0.02200000000000024, 0.03725000000000023, -0.046499999999999986, 0.08300000000000018, 0.09224999999999817, 0.0030000000000001137, 0.02499999999999858, 0.013249999999999318, 0.05550000000000033, 0.04800000000000004, 0.01524999999999821, 0.06649999999999778, 0.06474999999999831, 0.06725000000000136, 0.024750000000000938, -0.0010000000000012221, -0.005499999999999616, 0.05674999999999919, 0.054499999999999105, 0.12150000000000105, 0.14500000000000135, 0.057000000000000384, -0.022999999999999687, -0.021250000000000213], zp_timestamp='2025-11-24T21:12:00')
2025-11-24T23:16:27.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:16:27.283 [DEBUG] [Thread-198702] [transport.py] [_log()] starting thread (client mode): 0xd07ccee0
2025-11-24T23:16:27.283 [DEBUG] [Thread-198702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:16:27.297 [DEBUG] [Thread-198702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:16:27.297 [INFO] [Thread-198702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:16:27.308 [DEBUG] [Thread-198702] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:16:27.308 [DEBUG] [Thread-198702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] client lang: <none>
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] server lang: <none>
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] kex follows: False
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] Compression: none
2025-11-24T23:16:27.309 [DEBUG] [Thread-198702] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:16:27.368 [DEBUG] [Thread-198702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:16:27.368 [DEBUG] [Thread-198702] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:16:27.368 [DEBUG] [Thread-198702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:16:27.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:16:27.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:16:27.424 [DEBUG] [Thread-198702] [transport.py] [_log()] userauth is OK
2025-11-24T23:16:27.424 [DEBUG] [Thread-198702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:16:27.424 [DEBUG] [Thread-198702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:16:27.424 [DEBUG] [Thread-198702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:16:27.424 [DEBUG] [Thread-198702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:16:27.438 [INFO] [Thread-198702] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:16:27.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:16:27.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:16:27.678 [DEBUG] [Thread-198704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:28.282 [DEBUG] [Thread-198702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:16:28.283 [DEBUG] [Thread-198702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:16:28.332 [DEBUG] [Thread-198702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:16:28.332 [DEBUG] [Thread-198702] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:16:28.342 [DEBUG] [Thread-198702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:16:28.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:16:28.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-11-24T23:16:28.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-11-24T23:16:28.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:16:28.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:16:28.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:16:28.380 [DEBUG] [Thread-198702] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:16:30.357 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:33.515 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:38.599 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:42.758 [DEBUG] [Thread-198705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:45.028 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:53.855 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:53.868 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:54.084 [DEBUG] [Thread-198706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:57.801 [DEBUG] [Thread-198707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:16:58.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:16:58.404 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:16:58.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-11-24T23:16:59.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 16, 38), 14.64, 36.58, 0.0, 28.5, 13.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:16:59.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:16:38
2025-11-24T23:16:59.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:16:59.557 [DEBUG] [Thread-198708] [transport.py] [_log()] starting thread (client mode): 0xd3149000
2025-11-24T23:16:59.558 [DEBUG] [Thread-198708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:16:59.570 [DEBUG] [Thread-198708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:16:59.570 [INFO] [Thread-198708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] client lang: <none>
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] server lang: <none>
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] kex follows: False
2025-11-24T23:16:59.575 [DEBUG] [Thread-198708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:16:59.576 [DEBUG] [Thread-198708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:16:59.576 [DEBUG] [Thread-198708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:16:59.576 [DEBUG] [Thread-198708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:16:59.576 [DEBUG] [Thread-198708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:16:59.576 [DEBUG] [Thread-198708] [transport.py] [_log()] Compression: none
2025-11-24T23:16:59.576 [DEBUG] [Thread-198708] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:16:59.612 [DEBUG] [Thread-198708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:16:59.617 [DEBUG] [Thread-198708] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:16:59.619 [DEBUG] [Thread-198708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:16:59.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:16:59.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:16:59.625 [DEBUG] [Thread-198708] [transport.py] [_log()] userauth is OK
2025-11-24T23:16:59.625 [DEBUG] [Thread-198708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:16:59.625 [DEBUG] [Thread-198708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:16:59.625 [DEBUG] [Thread-198708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:16:59.625 [DEBUG] [Thread-198708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:16:59.651 [INFO] [Thread-198708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:16:59.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:17:00.266 [DEBUG] [Thread-198708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:17:00.267 [DEBUG] [Thread-198708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:17:00.268 [DEBUG] [Thread-198708] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:17:00.307 [DEBUG] [Thread-198708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:17:00.308 [DEBUG] [Thread-198708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:17:00.310 [DEBUG] [Thread-198708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:17:00.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:17:00.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:17:00.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:17:00.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:17:00.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:17:00.338 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:17:00.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:17:00.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:17:00.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:17:00.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.886504 -999.00  +13.70  23.07     41   +1.00 1 1 1 1 1     0    0 11.66 -44.04 ZNESW 19.1 23.1 165.7 31.0 14.1 -24.9 14.0 -24.3 13.7 -23.2 14.0 -24.0
2025-11-24T23:17:00.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:17:00.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:17:00.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.886504
2025-11-24T23:17:00.345 [DEBUG] [Thread-198708] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:17:00.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:17:00.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:17:00.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:17:00.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:17:00.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:17:00.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:16:38', tmtdew=14.64, humidity=36.58, cloud=0.0, wind=28.5, temperature=13.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:16:39', seeing=0.89, atlas_timestamp='2025-11-24T21:16:33.946', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:15:00')
2025-11-24T23:17:00.450 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:17:00.461 [DEBUG] [Thread-198711] [transport.py] [_log()] starting thread (client mode): 0xd31510c0
2025-11-24T23:17:00.461 [DEBUG] [Thread-198711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:17:00.477 [DEBUG] [Thread-198711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:17:00.477 [INFO] [Thread-198711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:17:00.492 [DEBUG] [Thread-198711] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:17:00.492 [DEBUG] [Thread-198711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:17:00.492 [DEBUG] [Thread-198711] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:17:00.492 [DEBUG] [Thread-198711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:17:00.492 [DEBUG] [Thread-198711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:17:00.492 [DEBUG] [Thread-198711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:17:00.492 [DEBUG] [Thread-198711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:17:00.493 [DEBUG] [Thread-198711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:17:00.493 [DEBUG] [Thread-198711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:17:00.493 [DEBUG] [Thread-198711] [transport.py] [_log()] client lang: <none>
2025-11-24T23:17:00.493 [DEBUG] [Thread-198711] [transport.py] [_log()] server lang: <none>
2025-11-24T23:17:00.493 [DEBUG] [Thread-198711] [transport.py] [_log()] kex follows: False
2025-11-24T23:17:00.493 [DEBUG] [Thread-198711] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:17:00.493 [DEBUG] [Thread-198711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:17:00.493 [DEBUG] [Thread-198711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:17:00.494 [DEBUG] [Thread-198711] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:17:00.494 [DEBUG] [Thread-198711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:17:00.494 [DEBUG] [Thread-198711] [transport.py] [_log()] Compression: none
2025-11-24T23:17:00.494 [DEBUG] [Thread-198711] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:17:00.543 [DEBUG] [Thread-198711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:17:00.543 [DEBUG] [Thread-198711] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:17:00.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:17:00.543 [DEBUG] [Thread-198711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:17:00.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:17:00.600 [DEBUG] [Thread-198711] [transport.py] [_log()] userauth is OK
2025-11-24T23:17:00.600 [DEBUG] [Thread-198711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:17:00.600 [DEBUG] [Thread-198711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:17:00.600 [DEBUG] [Thread-198711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:17:00.600 [DEBUG] [Thread-198711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:17:00.617 [INFO] [Thread-198711] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:17:00.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:17:00.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:17:01.500 [DEBUG] [Thread-198711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:17:01.501 [DEBUG] [Thread-198711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:17:01.549 [DEBUG] [Thread-198711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:17:01.549 [DEBUG] [Thread-198711] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:17:01.559 [DEBUG] [Thread-198711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:17:01.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:17:01.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-11-24T23:17:01.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:17:01.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:17:01.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:17:01.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:17:01.596 [DEBUG] [Thread-198711] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:17:03.381 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:07.812 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:12.870 [DEBUG] [Thread-198713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:27.195 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:28.006 [DEBUG] [Thread-198714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:31.591 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:31.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:17:31.619 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:17:31.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-11-24T23:17:32.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 17, 11), 14.57, 36.77, 0.0, 28.44, 13.91, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:17:32.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:17:11
2025-11-24T23:17:32.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:17:32.667 [DEBUG] [Thread-198715] [transport.py] [_log()] starting thread (client mode): 0xd31f62f0
2025-11-24T23:17:32.668 [DEBUG] [Thread-198715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:17:32.672 [DEBUG] [Thread-198715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:17:32.672 [INFO] [Thread-198715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] client lang: <none>
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] server lang: <none>
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] kex follows: False
2025-11-24T23:17:32.677 [DEBUG] [Thread-198715] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:17:32.678 [DEBUG] [Thread-198715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:17:32.678 [DEBUG] [Thread-198715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:17:32.678 [DEBUG] [Thread-198715] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:17:32.678 [DEBUG] [Thread-198715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:17:32.678 [DEBUG] [Thread-198715] [transport.py] [_log()] Compression: none
2025-11-24T23:17:32.678 [DEBUG] [Thread-198715] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:17:32.708 [DEBUG] [Thread-198715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:17:32.712 [DEBUG] [Thread-198715] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:17:32.714 [DEBUG] [Thread-198715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:17:32.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:17:32.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:17:32.717 [DEBUG] [Thread-198715] [transport.py] [_log()] userauth is OK
2025-11-24T23:17:32.717 [DEBUG] [Thread-198715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:17:32.717 [DEBUG] [Thread-198715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:17:32.717 [DEBUG] [Thread-198715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:17:32.717 [DEBUG] [Thread-198715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:17:32.729 [INFO] [Thread-198715] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:17:32.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:17:33.295 [DEBUG] [Thread-198715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:17:33.295 [DEBUG] [Thread-198715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:17:33.296 [DEBUG] [Thread-198715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:17:33.336 [DEBUG] [Thread-198715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:17:33.336 [DEBUG] [Thread-198715] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:17:33.337 [DEBUG] [Thread-198715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:17:33.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:17:33.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:17:33.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:17:33.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:17:33.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:17:33.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:17:33.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:17:33.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:17:33.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:17:33.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.886852 -999.00  +13.70  21.00     41   +1.00 1 1 1 1 1     0    0 11.58 -47.62 ZNESW 21.7 21.0 172.2 30.9 14.1 -24.9 14.0 -24.5 13.8 -23.3 14.0 -24.1
2025-11-24T23:17:33.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:17:33.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:17:33.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.886852
2025-11-24T23:17:33.362 [DEBUG] [Thread-198715] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:17:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:17:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:17:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:17:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:17:33.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:17:33.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:17:11', tmtdew=14.57, humidity=36.77, cloud=0.0, wind=28.44, temperature=13.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:17:12', seeing=0.85, atlas_timestamp='2025-11-24T21:17:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:15:00')
2025-11-24T23:17:33.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:17:33.464 [DEBUG] [Thread-198718] [transport.py] [_log()] starting thread (client mode): 0xc9b82140
2025-11-24T23:17:33.464 [DEBUG] [Thread-198718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:17:33.479 [DEBUG] [Thread-198718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:17:33.479 [INFO] [Thread-198718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] client lang: <none>
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] server lang: <none>
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] kex follows: False
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:17:33.486 [DEBUG] [Thread-198718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:17:33.487 [DEBUG] [Thread-198718] [transport.py] [_log()] Compression: none
2025-11-24T23:17:33.487 [DEBUG] [Thread-198718] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:17:33.543 [DEBUG] [Thread-198718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:17:33.544 [DEBUG] [Thread-198718] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:17:33.544 [DEBUG] [Thread-198718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:17:33.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:17:33.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:17:33.600 [DEBUG] [Thread-198718] [transport.py] [_log()] userauth is OK
2025-11-24T23:17:33.600 [DEBUG] [Thread-198718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:17:33.600 [DEBUG] [Thread-198718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:17:33.600 [DEBUG] [Thread-198718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:17:33.600 [DEBUG] [Thread-198718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:17:33.615 [INFO] [Thread-198718] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:17:33.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:17:33.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:17:34.462 [DEBUG] [Thread-198718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:17:34.462 [DEBUG] [Thread-198718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:17:34.510 [DEBUG] [Thread-198718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:17:34.510 [DEBUG] [Thread-198718] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:17:34.518 [DEBUG] [Thread-198718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:17:34.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:17:34.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:17:34.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-11-24T23:17:34.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:17:34.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:17:34.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:17:34.551 [DEBUG] [Thread-198718] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:17:37.693 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:42.083 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:43.050 [DEBUG] [Thread-198720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:54.092 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:54.106 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:54.356 [DEBUG] [Thread-198721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:17:58.221 [DEBUG] [Thread-198722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:18:04.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:18:04.575 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:18:04.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-11-24T23:18:05.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 17, 45), 14.64, 36.58, 0.0, 30.01, 13.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:18:05.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:17:45
2025-11-24T23:18:06.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:18:06.260 [DEBUG] [Thread-198723] [transport.py] [_log()] starting thread (client mode): 0xd07cebf0
2025-11-24T23:18:06.261 [DEBUG] [Thread-198723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:18:06.264 [DEBUG] [Thread-198723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:18:06.265 [INFO] [Thread-198723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] client lang: <none>
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] server lang: <none>
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] kex follows: False
2025-11-24T23:18:06.268 [DEBUG] [Thread-198723] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:18:06.269 [DEBUG] [Thread-198723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:18:06.269 [DEBUG] [Thread-198723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:18:06.269 [DEBUG] [Thread-198723] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:18:06.269 [DEBUG] [Thread-198723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:18:06.269 [DEBUG] [Thread-198723] [transport.py] [_log()] Compression: none
2025-11-24T23:18:06.269 [DEBUG] [Thread-198723] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:18:06.302 [DEBUG] [Thread-198723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:18:06.305 [DEBUG] [Thread-198723] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:18:06.306 [DEBUG] [Thread-198723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:18:06.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:18:06.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:18:06.309 [DEBUG] [Thread-198723] [transport.py] [_log()] userauth is OK
2025-11-24T23:18:06.309 [DEBUG] [Thread-198723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:18:06.309 [DEBUG] [Thread-198723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:18:06.309 [DEBUG] [Thread-198723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:18:06.309 [DEBUG] [Thread-198723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:18:06.326 [INFO] [Thread-198723] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:18:06.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:18:07.099 [DEBUG] [Thread-198723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:18:07.099 [DEBUG] [Thread-198723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:18:07.100 [DEBUG] [Thread-198723] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:18:07.140 [DEBUG] [Thread-198723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:18:07.140 [DEBUG] [Thread-198723] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:18:07.142 [DEBUG] [Thread-198723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:18:07.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:18:07.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:18:07.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:18:07.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:18:07.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:18:07.166 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:18:07.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:18:07.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:18:07.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:18:07.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.886852 -999.00  +13.70  21.00     41   +1.00 1 1 1 1 1     0    0 11.58 -47.62 ZNESW 21.7 21.0 172.2 30.9 14.1 -24.9 14.0 -24.5 13.8 -23.3 14.0 -24.1
2025-11-24T23:18:07.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:18:07.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:18:07.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.886852
2025-11-24T23:18:07.174 [DEBUG] [Thread-198723] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:18:07.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:18:07.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:18:07.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:18:07.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:18:07.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:18:07.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:17:45', tmtdew=14.64, humidity=36.58, cloud=0.0, wind=30.01, temperature=13.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:17:45', seeing=0.81, atlas_timestamp='2025-11-24T21:17:04.013', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:15:00')
2025-11-24T23:18:07.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:18:07.289 [DEBUG] [Thread-198726] [transport.py] [_log()] starting thread (client mode): 0xd317f4f0
2025-11-24T23:18:07.289 [DEBUG] [Thread-198726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:18:07.304 [DEBUG] [Thread-198726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:18:07.305 [INFO] [Thread-198726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:18:07.312 [DEBUG] [Thread-198726] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:18:07.312 [DEBUG] [Thread-198726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:18:07.312 [DEBUG] [Thread-198726] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:18:07.312 [DEBUG] [Thread-198726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:18:07.312 [DEBUG] [Thread-198726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:18:07.312 [DEBUG] [Thread-198726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:18:07.312 [DEBUG] [Thread-198726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:18:07.312 [DEBUG] [Thread-198726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:18:07.312 [DEBUG] [Thread-198726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:18:07.312 [DEBUG] [Thread-198726] [transport.py] [_log()] client lang: <none>
2025-11-24T23:18:07.313 [DEBUG] [Thread-198726] [transport.py] [_log()] server lang: <none>
2025-11-24T23:18:07.313 [DEBUG] [Thread-198726] [transport.py] [_log()] kex follows: False
2025-11-24T23:18:07.313 [DEBUG] [Thread-198726] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:18:07.313 [DEBUG] [Thread-198726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:18:07.313 [DEBUG] [Thread-198726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:18:07.313 [DEBUG] [Thread-198726] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:18:07.313 [DEBUG] [Thread-198726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:18:07.313 [DEBUG] [Thread-198726] [transport.py] [_log()] Compression: none
2025-11-24T23:18:07.313 [DEBUG] [Thread-198726] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:18:07.375 [DEBUG] [Thread-198726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:18:07.376 [DEBUG] [Thread-198726] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:18:07.376 [DEBUG] [Thread-198726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:18:07.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:18:07.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:18:07.433 [DEBUG] [Thread-198726] [transport.py] [_log()] userauth is OK
2025-11-24T23:18:07.433 [DEBUG] [Thread-198726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:18:07.433 [DEBUG] [Thread-198726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:18:07.433 [DEBUG] [Thread-198726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:18:07.434 [DEBUG] [Thread-198726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:18:07.453 [INFO] [Thread-198726] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:18:07.453 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:18:07.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:18:08.286 [DEBUG] [Thread-198726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:18:08.286 [DEBUG] [Thread-198726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:18:08.334 [DEBUG] [Thread-198726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:18:08.334 [DEBUG] [Thread-198726] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:18:08.342 [DEBUG] [Thread-198726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:18:08.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:18:08.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-11-24T23:18: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') -> 00000000
2025-11-24T23:18:08.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:18:08.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:18:08.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:18:08.375 [DEBUG] [Thread-198726] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:18:13.318 [DEBUG] [Thread-198728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:18:28.439 [DEBUG] [Thread-198729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:18:38.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:18:38.406 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:18:38.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-11-24T23:18:39.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 18, 18), 14.64, 36.57, 0.0, 31.94, 13.86, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:18:39.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:18:18
2025-11-24T23:18:39.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:18:39.700 [DEBUG] [Thread-198730] [transport.py] [_log()] starting thread (client mode): 0xc9b81ff0
2025-11-24T23:18:39.700 [DEBUG] [Thread-198730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:18:39.712 [DEBUG] [Thread-198730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:18:39.712 [INFO] [Thread-198730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:18:39.718 [DEBUG] [Thread-198730] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:18:39.718 [DEBUG] [Thread-198730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:18:39.718 [DEBUG] [Thread-198730] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:18:39.718 [DEBUG] [Thread-198730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:18:39.718 [DEBUG] [Thread-198730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:18:39.718 [DEBUG] [Thread-198730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:18:39.718 [DEBUG] [Thread-198730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:18:39.718 [DEBUG] [Thread-198730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:18:39.719 [DEBUG] [Thread-198730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:18:39.719 [DEBUG] [Thread-198730] [transport.py] [_log()] client lang: <none>
2025-11-24T23:18:39.719 [DEBUG] [Thread-198730] [transport.py] [_log()] server lang: <none>
2025-11-24T23:18:39.719 [DEBUG] [Thread-198730] [transport.py] [_log()] kex follows: False
2025-11-24T23:18:39.719 [DEBUG] [Thread-198730] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:18:39.719 [DEBUG] [Thread-198730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:18:39.719 [DEBUG] [Thread-198730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:18:39.720 [DEBUG] [Thread-198730] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:18:39.720 [DEBUG] [Thread-198730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:18:39.720 [DEBUG] [Thread-198730] [transport.py] [_log()] Compression: none
2025-11-24T23:18:39.720 [DEBUG] [Thread-198730] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:18:39.754 [DEBUG] [Thread-198730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:18:39.759 [DEBUG] [Thread-198730] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:18:39.761 [DEBUG] [Thread-198730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:18:39.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:18:39.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:18:39.767 [DEBUG] [Thread-198730] [transport.py] [_log()] userauth is OK
2025-11-24T23:18:39.767 [DEBUG] [Thread-198730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:18:39.767 [DEBUG] [Thread-198730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:18:39.768 [DEBUG] [Thread-198730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:18:39.768 [DEBUG] [Thread-198730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:18:39.793 [INFO] [Thread-198730] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:18:39.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:18:40.455 [DEBUG] [Thread-198730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:18:40.455 [DEBUG] [Thread-198730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:18:40.465 [DEBUG] [Thread-198730] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:18:40.496 [DEBUG] [Thread-198730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:18:40.496 [DEBUG] [Thread-198730] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:18:40.499 [DEBUG] [Thread-198730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:18:40.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:18:40.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:18:40.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:18:40.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:18:40.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:18:40.529 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:18:40.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:18:40.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:18:40.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:18:40.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.887199 -999.00  +13.70  22.73     41   +0.90 1 1 1 1 1     0    0 11.61 -42.87 ZNESW 25.0 22.7 161.1 29.6 14.1 -25.0 13.9 -24.5 13.7 -23.3 14.0 -24.3
2025-11-24T23:18:40.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:18:40.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:18:40.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.887199
2025-11-24T23:18:40.536 [DEBUG] [Thread-198730] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:18:40.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:18:40.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:18:40.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:18:40.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:18:40.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:18:40.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:18:18', tmtdew=14.64, humidity=36.57, cloud=0.0, wind=31.94, temperature=13.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:18:19', seeing=0.77, atlas_timestamp='2025-11-24T21:17:33.994', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:15:00')
2025-11-24T23:18:40.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:18:40.629 [DEBUG] [Thread-198733] [transport.py] [_log()] starting thread (client mode): 0xd31f42b0
2025-11-24T23:18:40.629 [DEBUG] [Thread-198733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:18:40.644 [DEBUG] [Thread-198733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:18:40.645 [INFO] [Thread-198733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] client lang: <none>
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] server lang: <none>
2025-11-24T23:18:40.652 [DEBUG] [Thread-198733] [transport.py] [_log()] kex follows: False
2025-11-24T23:18:40.653 [DEBUG] [Thread-198733] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:18:40.653 [DEBUG] [Thread-198733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:18:40.653 [DEBUG] [Thread-198733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:18:40.653 [DEBUG] [Thread-198733] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:18:40.653 [DEBUG] [Thread-198733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:18:40.653 [DEBUG] [Thread-198733] [transport.py] [_log()] Compression: none
2025-11-24T23:18:40.653 [DEBUG] [Thread-198733] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:18:40.707 [DEBUG] [Thread-198733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:18:40.708 [DEBUG] [Thread-198733] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:18:40.708 [DEBUG] [Thread-198733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:18:40.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:18:40.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:18:40.764 [DEBUG] [Thread-198733] [transport.py] [_log()] userauth is OK
2025-11-24T23:18:40.764 [DEBUG] [Thread-198733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:18:40.764 [DEBUG] [Thread-198733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:18:40.764 [DEBUG] [Thread-198733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:18:40.764 [DEBUG] [Thread-198733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:18:40.778 [INFO] [Thread-198733] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:18:40.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:18:40.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:18:41.629 [DEBUG] [Thread-198733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:18:41.629 [DEBUG] [Thread-198733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:18:41.677 [DEBUG] [Thread-198733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:18:41.677 [DEBUG] [Thread-198733] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:18:41.686 [DEBUG] [Thread-198733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:18:41.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:18:41.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-11-24T23:18:41.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-11-24T23:18:41.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:18:41.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:18:41.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:18:41.734 [DEBUG] [Thread-198733] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:18:43.504 [DEBUG] [Thread-198735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:18:50.944 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:18:54.312 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:18:54.313 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:18:54.643 [DEBUG] [Thread-198736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:18:55.062 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:18:58.588 [DEBUG] [Thread-198737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:19:11.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:19:11.741 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:19:11.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-11-24T23:19:13.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 18, 52), 14.63, 36.58, 0.0, 29.5, 13.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:19:13.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:18:52
2025-11-24T23:19:13.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:19:13.414 [DEBUG] [Thread-198738] [transport.py] [_log()] starting thread (client mode): 0xc9b81090
2025-11-24T23:19:13.415 [DEBUG] [Thread-198738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:19:13.426 [DEBUG] [Thread-198738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:19:13.426 [INFO] [Thread-198738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:19:13.432 [DEBUG] [Thread-198738] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] client lang: <none>
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] server lang: <none>
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] kex follows: False
2025-11-24T23:19:13.433 [DEBUG] [Thread-198738] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:19:13.434 [DEBUG] [Thread-198738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:19:13.434 [DEBUG] [Thread-198738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:19:13.434 [DEBUG] [Thread-198738] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:19:13.434 [DEBUG] [Thread-198738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:19:13.434 [DEBUG] [Thread-198738] [transport.py] [_log()] Compression: none
2025-11-24T23:19:13.434 [DEBUG] [Thread-198738] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:19:13.471 [DEBUG] [Thread-198738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:19:13.476 [DEBUG] [Thread-198738] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:19:13.478 [DEBUG] [Thread-198738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:19:13.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:19:13.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:19:13.483 [DEBUG] [Thread-198738] [transport.py] [_log()] userauth is OK
2025-11-24T23:19:13.483 [DEBUG] [Thread-198738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:19:13.483 [DEBUG] [Thread-198738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:19:13.484 [DEBUG] [Thread-198738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:19:13.484 [DEBUG] [Thread-198738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:19:13.521 [INFO] [Thread-198738] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:19:13.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:19:13.645 [DEBUG] [Thread-198740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:19:14.294 [DEBUG] [Thread-198738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:19:14.303 [DEBUG] [Thread-198738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:19:14.306 [DEBUG] [Thread-198738] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:19:14.335 [DEBUG] [Thread-198738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:19:14.335 [DEBUG] [Thread-198738] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:19:14.339 [DEBUG] [Thread-198738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:19:14.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:19:14.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:19:14.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:19:14.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:19:14.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:19:14.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:19:14.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:19:14.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:19:14.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:19:14.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.887893 -999.00  +13.70  20.84     41   +0.90 1 1 1 1 1     0    0 11.70 -42.63 ZNESW 20.3 20.8 173.1 27.4 14.1 -24.9 13.9 -24.5 13.7 -23.4 14.0 -24.3
2025-11-24T23:19:14.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:19:14.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:19:14.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.887893
2025-11-24T23:19:14.372 [DEBUG] [Thread-198738] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:19:14.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:19:14.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:19:14.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:19:14.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:19:14.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:19:14.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:18:52', tmtdew=14.63, humidity=36.58, cloud=0.0, wind=29.5, temperature=13.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:18:52', seeing=0.77, atlas_timestamp='2025-11-24T21:18:33.955', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:15:00')
2025-11-24T23:19:14.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:19:14.488 [DEBUG] [Thread-198742] [transport.py] [_log()] starting thread (client mode): 0xc9b829b0
2025-11-24T23:19:14.489 [DEBUG] [Thread-198742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:19:14.503 [DEBUG] [Thread-198742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:19:14.503 [INFO] [Thread-198742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:19:14.511 [DEBUG] [Thread-198742] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:19:14.511 [DEBUG] [Thread-198742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:19:14.511 [DEBUG] [Thread-198742] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] client lang: <none>
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] server lang: <none>
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] kex follows: False
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] Compression: none
2025-11-24T23:19:14.512 [DEBUG] [Thread-198742] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:19:14.568 [DEBUG] [Thread-198742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:19:14.569 [DEBUG] [Thread-198742] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:19:14.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:19:14.570 [DEBUG] [Thread-198742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:19:14.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:19:14.625 [DEBUG] [Thread-198742] [transport.py] [_log()] userauth is OK
2025-11-24T23:19:14.626 [DEBUG] [Thread-198742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:19:14.626 [DEBUG] [Thread-198742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:19:14.626 [DEBUG] [Thread-198742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:19:14.626 [DEBUG] [Thread-198742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:19:14.644 [INFO] [Thread-198742] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:19:14.645 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:19:14.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:19:15.499 [DEBUG] [Thread-198742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:19:15.499 [DEBUG] [Thread-198742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:19:15.546 [DEBUG] [Thread-198742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:19:15.546 [DEBUG] [Thread-198742] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:19:15.555 [DEBUG] [Thread-198742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:19:15.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:19:15.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-11-24T23:19:15.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-11-24T23:19:15.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:19:15.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:19:15.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:19:15.598 [DEBUG] [Thread-198742] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:19:28.747 [DEBUG] [Thread-198744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:19:43.882 [DEBUG] [Thread-198745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:19:45.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:19:45.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:19:45.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-11-24T23:19:46.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 19, 24), 14.58, 36.73, 0.0, 30.1, 13.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:19:46.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:19:24
2025-11-24T23:19:46.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:19:47.002 [DEBUG] [Thread-198746] [transport.py] [_log()] starting thread (client mode): 0xd317c940
2025-11-24T23:19:47.003 [DEBUG] [Thread-198746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:19:47.016 [DEBUG] [Thread-198746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:19:47.016 [INFO] [Thread-198746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:19:47.022 [DEBUG] [Thread-198746] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:19:47.022 [DEBUG] [Thread-198746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] client lang: <none>
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] server lang: <none>
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] kex follows: False
2025-11-24T23:19:47.023 [DEBUG] [Thread-198746] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:19:47.024 [DEBUG] [Thread-198746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:19:47.024 [DEBUG] [Thread-198746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:19:47.025 [DEBUG] [Thread-198746] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:19:47.025 [DEBUG] [Thread-198746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:19:47.025 [DEBUG] [Thread-198746] [transport.py] [_log()] Compression: none
2025-11-24T23:19:47.025 [DEBUG] [Thread-198746] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:19:47.065 [DEBUG] [Thread-198746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:19:47.070 [DEBUG] [Thread-198746] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:19:47.072 [DEBUG] [Thread-198746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:19:47.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:19:47.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:19:47.078 [DEBUG] [Thread-198746] [transport.py] [_log()] userauth is OK
2025-11-24T23:19:47.078 [DEBUG] [Thread-198746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:19:47.078 [DEBUG] [Thread-198746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:19:47.078 [DEBUG] [Thread-198746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:19:47.078 [DEBUG] [Thread-198746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:19:47.120 [INFO] [Thread-198746] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:19:47.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:19:47.776 [DEBUG] [Thread-198746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:19:47.776 [DEBUG] [Thread-198746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:19:47.785 [DEBUG] [Thread-198746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:19:47.817 [DEBUG] [Thread-198746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:19:47.817 [DEBUG] [Thread-198746] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:19:47.820 [DEBUG] [Thread-198746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:19:47.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:19:47.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:19:47.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:19:47.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:19:47.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:19:47.842 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:19:47.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:19:47.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:19:47.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:19:47.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.888240 -999.00  +13.70  19.27     41   +0.90 1 1 1 1 1     0    0 11.64 -41.02 ZNESW 21.3 19.3 166.4 27.2 14.1 -24.9 13.9 -24.4 13.7 -23.3 14.0 -24.3
2025-11-24T23:19:47.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:19:47.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:19:47.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.888240
2025-11-24T23:19:47.849 [DEBUG] [Thread-198746] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:19:47.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:19:47.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:19:47.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:19:47.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:19:47.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:19:47.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:19:24', tmtdew=14.58, humidity=36.73, cloud=0.0, wind=30.1, temperature=13.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:19:25', seeing=0.85, atlas_timestamp='2025-11-24T21:19:03.936', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:15:00')
2025-11-24T23:19:47.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:19:47.946 [DEBUG] [Thread-198749] [transport.py] [_log()] starting thread (client mode): 0xd317cc40
2025-11-24T23:19:47.947 [DEBUG] [Thread-198749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:19:47.962 [DEBUG] [Thread-198749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:19:47.962 [INFO] [Thread-198749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:19:47.970 [DEBUG] [Thread-198749] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:19:47.970 [DEBUG] [Thread-198749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:19:47.970 [DEBUG] [Thread-198749] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] client lang: <none>
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] server lang: <none>
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] kex follows: False
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] Compression: none
2025-11-24T23:19:47.971 [DEBUG] [Thread-198749] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:19:48.030 [DEBUG] [Thread-198749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:19:48.030 [DEBUG] [Thread-198749] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:19:48.031 [DEBUG] [Thread-198749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:19:48.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:19:48.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:19:48.093 [DEBUG] [Thread-198749] [transport.py] [_log()] userauth is OK
2025-11-24T23:19:48.093 [DEBUG] [Thread-198749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:19:48.093 [DEBUG] [Thread-198749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:19:48.094 [DEBUG] [Thread-198749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:19:48.094 [DEBUG] [Thread-198749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:19:48.113 [INFO] [Thread-198749] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:19:48.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:19:48.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:19:49.033 [DEBUG] [Thread-198749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:19:49.033 [DEBUG] [Thread-198749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:19:49.081 [DEBUG] [Thread-198749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:19:49.081 [DEBUG] [Thread-198749] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:19:49.091 [DEBUG] [Thread-198749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:19:49.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:19:49.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-11-24T23:19:49.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-11-24T23:19:49.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:19:49.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:19:49.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:19:49.130 [DEBUG] [Thread-198749] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:19:54.569 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:19:54.571 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:19:54.962 [DEBUG] [Thread-198751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:19:58.924 [DEBUG] [Thread-198752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:20:14.074 [DEBUG] [Thread-198753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:20:19.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:20:19.144 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:20:19.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:20:20.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 19, 57), 14.61, 36.65, 0.0, 26.59, 13.87, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:20:20.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:19:57
2025-11-24T23:20:20.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:20:20.379 [DEBUG] [Thread-198754] [transport.py] [_log()] starting thread (client mode): 0xd31f4160
2025-11-24T23:20:20.380 [DEBUG] [Thread-198754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:20:20.390 [DEBUG] [Thread-198754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:20:20.390 [INFO] [Thread-198754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:20:20.397 [DEBUG] [Thread-198754] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:20:20.397 [DEBUG] [Thread-198754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:20:20.397 [DEBUG] [Thread-198754] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] client lang: <none>
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] server lang: <none>
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] kex follows: False
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:20:20.398 [DEBUG] [Thread-198754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:20:20.399 [DEBUG] [Thread-198754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:20:20.399 [DEBUG] [Thread-198754] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:20:20.399 [DEBUG] [Thread-198754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:20:20.399 [DEBUG] [Thread-198754] [transport.py] [_log()] Compression: none
2025-11-24T23:20:20.399 [DEBUG] [Thread-198754] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:20:20.435 [DEBUG] [Thread-198754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:20:20.439 [DEBUG] [Thread-198754] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:20:20.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:20:20.442 [DEBUG] [Thread-198754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:20:20.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:20:20.445 [DEBUG] [Thread-198754] [transport.py] [_log()] userauth is OK
2025-11-24T23:20:20.445 [DEBUG] [Thread-198754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:20:20.445 [DEBUG] [Thread-198754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:20:20.445 [DEBUG] [Thread-198754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:20:20.445 [DEBUG] [Thread-198754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:20:20.467 [INFO] [Thread-198754] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:20:20.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:20:21.327 [DEBUG] [Thread-198754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:20:21.327 [DEBUG] [Thread-198754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:20:21.329 [DEBUG] [Thread-198754] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:20:21.368 [DEBUG] [Thread-198754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:20:21.368 [DEBUG] [Thread-198754] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:20:21.371 [DEBUG] [Thread-198754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:20:21.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:20:21.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:20:21.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:20:21.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:20:21.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:20:21.402 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:20:21.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:20:21.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:20:21.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:20:21.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.888588 -999.00  +13.70  18.56     41   +0.90 1 1 1 1 1     0    0 11.77 -39.68 ZNESW 17.9 18.6 170.2 27.6 14.1 -24.9 13.9 -24.5 13.7 -23.3 13.9 -24.2
2025-11-24T23:20:21.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:20:21.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:20:21.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.888588
2025-11-24T23:20:21.410 [DEBUG] [Thread-198754] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:20:21.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:20:21.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:20:21.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:20:21.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:20:21.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:20:21.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:19:57', tmtdew=14.61, humidity=36.65, cloud=0.0, wind=26.59, temperature=13.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:19:58', seeing=0.85, atlas_timestamp='2025-11-24T21:19:34.003', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:19:00')
2025-11-24T23:20:21.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:20:21.511 [DEBUG] [Thread-198757] [transport.py] [_log()] starting thread (client mode): 0xd31f47f0
2025-11-24T23:20:21.511 [DEBUG] [Thread-198757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:20:21.525 [DEBUG] [Thread-198757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:20:21.526 [INFO] [Thread-198757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:20:21.533 [DEBUG] [Thread-198757] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:20:21.533 [DEBUG] [Thread-198757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:20:21.533 [DEBUG] [Thread-198757] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:20:21.534 [DEBUG] [Thread-198757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:20:21.534 [DEBUG] [Thread-198757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:20:21.534 [DEBUG] [Thread-198757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:20:21.534 [DEBUG] [Thread-198757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:20:21.534 [DEBUG] [Thread-198757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:20:21.534 [DEBUG] [Thread-198757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:20:21.534 [DEBUG] [Thread-198757] [transport.py] [_log()] client lang: <none>
2025-11-24T23:20:21.534 [DEBUG] [Thread-198757] [transport.py] [_log()] server lang: <none>
2025-11-24T23:20:21.534 [DEBUG] [Thread-198757] [transport.py] [_log()] kex follows: False
2025-11-24T23:20:21.534 [DEBUG] [Thread-198757] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:20:21.535 [DEBUG] [Thread-198757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:20:21.535 [DEBUG] [Thread-198757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:20:21.535 [DEBUG] [Thread-198757] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:20:21.535 [DEBUG] [Thread-198757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:20:21.535 [DEBUG] [Thread-198757] [transport.py] [_log()] Compression: none
2025-11-24T23:20:21.535 [DEBUG] [Thread-198757] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:20:21.592 [DEBUG] [Thread-198757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:20:21.593 [DEBUG] [Thread-198757] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:20:21.593 [DEBUG] [Thread-198757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:20:21.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:20:21.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:20:21.649 [DEBUG] [Thread-198757] [transport.py] [_log()] userauth is OK
2025-11-24T23:20:21.649 [DEBUG] [Thread-198757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:20:21.649 [DEBUG] [Thread-198757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:20:21.649 [DEBUG] [Thread-198757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:20:21.649 [DEBUG] [Thread-198757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:20:21.670 [INFO] [Thread-198757] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:20:21.670 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:20:21.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:20:22.503 [DEBUG] [Thread-198757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:20:22.503 [DEBUG] [Thread-198757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:20:22.551 [DEBUG] [Thread-198757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:20:22.551 [DEBUG] [Thread-198757] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:20:22.559 [DEBUG] [Thread-198757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:20:22.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:20:22.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-11-24T23:20:22.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-11-24T23:20:22.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:20:22.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:20:22.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:20:22.602 [DEBUG] [Thread-198757] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:20:29.169 [DEBUG] [Thread-198759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:20:44.277 [DEBUG] [Thread-198760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:20:52.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:20:52.627 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:20:52.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-11-24T23:20:53.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 20, 30), 14.59, 36.7, 0.0, 28.8, 13.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:20:53.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:20:30
2025-11-24T23:20:53.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:20:53.781 [DEBUG] [Thread-198761] [transport.py] [_log()] starting thread (client mode): 0xd07873a0
2025-11-24T23:20:53.782 [DEBUG] [Thread-198761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:20:53.782 [DEBUG] [Thread-198761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:20:53.783 [INFO] [Thread-198761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:20:53.786 [DEBUG] [Thread-198761] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:20:53.786 [DEBUG] [Thread-198761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] client lang: <none>
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] server lang: <none>
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] kex follows: False
2025-11-24T23:20:53.787 [DEBUG] [Thread-198761] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:20:53.788 [DEBUG] [Thread-198761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:20:53.788 [DEBUG] [Thread-198761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:20:53.788 [DEBUG] [Thread-198761] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:20:53.788 [DEBUG] [Thread-198761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:20:53.788 [DEBUG] [Thread-198761] [transport.py] [_log()] Compression: none
2025-11-24T23:20:53.788 [DEBUG] [Thread-198761] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:20:53.826 [DEBUG] [Thread-198761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:20:53.830 [DEBUG] [Thread-198761] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:20:53.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:20:53.834 [DEBUG] [Thread-198761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:20:53.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:20:53.837 [DEBUG] [Thread-198761] [transport.py] [_log()] userauth is OK
2025-11-24T23:20:53.837 [DEBUG] [Thread-198761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:20:53.837 [DEBUG] [Thread-198761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:20:53.838 [DEBUG] [Thread-198761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:20:53.838 [DEBUG] [Thread-198761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:20:53.875 [INFO] [Thread-198761] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:20:53.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:20:54.516 [DEBUG] [Thread-198761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:20:54.516 [DEBUG] [Thread-198761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:20:54.516 [DEBUG] [Thread-198761] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:20:54.557 [DEBUG] [Thread-198761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:20:54.557 [DEBUG] [Thread-198761] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:20:54.560 [DEBUG] [Thread-198761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:20:54.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:20:54.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:20:54.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:20:54.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:20:54.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:20:54.579 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:20:54.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:20:54.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:20:54.581 [DEBUG] [Thread-198761] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:20:54.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:20:54.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.888935 -999.00  +13.60  15.79     41   +0.90 1 1 1 1 1     0    0 11.95 -37.45 ZNESW 20.7 15.8 170.6 25.6 14.1 -25.0 14.0 -24.4 13.7 -23.4 14.0 -24.2
2025-11-24T23:20:54.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:20:54.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:20:54.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.888935
2025-11-24T23:20:54.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:20:54.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:20:54.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:20:54.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:20:54.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:20:54.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:20:30', tmtdew=14.59, humidity=36.7, cloud=0.0, wind=28.8, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:20:31', seeing=0.78, atlas_timestamp='2025-11-24T21:20:03.984', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:19:00')
2025-11-24T23:20:54.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:20:54.678 [DEBUG] [Thread-198764] [transport.py] [_log()] starting thread (client mode): 0xd31934f0
2025-11-24T23:20:54.679 [DEBUG] [Thread-198764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:20:54.694 [DEBUG] [Thread-198764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:20:54.694 [INFO] [Thread-198764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:20:54.701 [DEBUG] [Thread-198764] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:20:54.701 [DEBUG] [Thread-198764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:20:54.701 [DEBUG] [Thread-198764] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:20:54.701 [DEBUG] [Thread-198764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:20:54.701 [DEBUG] [Thread-198764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:20:54.701 [DEBUG] [Thread-198764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:20:54.701 [DEBUG] [Thread-198764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] client lang: <none>
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] server lang: <none>
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] kex follows: False
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] Compression: none
2025-11-24T23:20:54.702 [DEBUG] [Thread-198764] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:20:54.759 [DEBUG] [Thread-198764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:20:54.759 [DEBUG] [Thread-198764] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:20:54.759 [DEBUG] [Thread-198764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:20:54.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:20:54.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:20:54.783 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:20:54.784 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:20:54.816 [DEBUG] [Thread-198764] [transport.py] [_log()] userauth is OK
2025-11-24T23:20:54.816 [DEBUG] [Thread-198764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:20:54.816 [DEBUG] [Thread-198764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:20:54.816 [DEBUG] [Thread-198764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:20:54.816 [DEBUG] [Thread-198764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:20:54.833 [INFO] [Thread-198764] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:20:54.833 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:20:54.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:20:55.260 [DEBUG] [Thread-198766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:20:55.648 [DEBUG] [Thread-198764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:20:55.648 [DEBUG] [Thread-198764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:20:55.696 [DEBUG] [Thread-198764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:20:55.697 [DEBUG] [Thread-198764] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:20:55.705 [DEBUG] [Thread-198764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:20:55.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:20:55.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:20:55.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-11-24T23:20:55.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:20:55.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:20:55.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:20:55.742 [DEBUG] [Thread-198764] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:20:59.320 [DEBUG] [Thread-198767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:21:14.468 [DEBUG] [Thread-198768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:21:25.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:21:25.767 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:21:25.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-11-24T23:21:26.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 21, 3), 14.54, 36.83, 0.0, 28.16, 13.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:21:26.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:21:03
2025-11-24T23:21:26.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:21:26.969 [DEBUG] [Thread-198769] [transport.py] [_log()] starting thread (client mode): 0xd31926b0
2025-11-24T23:21:26.970 [DEBUG] [Thread-198769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:21:26.983 [DEBUG] [Thread-198769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:21:26.983 [INFO] [Thread-198769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] client lang: <none>
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] server lang: <none>
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] kex follows: False
2025-11-24T23:21:26.988 [DEBUG] [Thread-198769] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:21:26.989 [DEBUG] [Thread-198769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:21:26.989 [DEBUG] [Thread-198769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:21:26.989 [DEBUG] [Thread-198769] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:21:26.989 [DEBUG] [Thread-198769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:21:26.989 [DEBUG] [Thread-198769] [transport.py] [_log()] Compression: none
2025-11-24T23:21:26.989 [DEBUG] [Thread-198769] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:21:27.019 [DEBUG] [Thread-198769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:21:27.023 [DEBUG] [Thread-198769] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:21:27.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:21:27.026 [DEBUG] [Thread-198769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:21:27.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:21:27.028 [DEBUG] [Thread-198769] [transport.py] [_log()] userauth is OK
2025-11-24T23:21:27.028 [DEBUG] [Thread-198769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:21:27.028 [DEBUG] [Thread-198769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:21:27.028 [DEBUG] [Thread-198769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:21:27.028 [DEBUG] [Thread-198769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:21:27.061 [INFO] [Thread-198769] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:21:27.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:21:27.691 [DEBUG] [Thread-198769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:21:27.691 [DEBUG] [Thread-198769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:21:27.692 [DEBUG] [Thread-198769] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:21:27.732 [DEBUG] [Thread-198769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:21:27.732 [DEBUG] [Thread-198769] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:21:27.735 [DEBUG] [Thread-198769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:21:27.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:21:27.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:21:27.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:21:27.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:21:27.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:21:27.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:21:27.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:21:27.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:21:27.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:21:27.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.889282 -999.00  +13.60  11.45     42   +1.00 1 1 1 1 1     0    0 11.71 -37.26 ZNESW 15.7 11.4 159.8 27.1 14.1 -24.9 13.9 -24.4 13.7 -23.3 14.0 -24.3
2025-11-24T23:21:27.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:21:27.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:21:27.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.889282
2025-11-24T23:21:27.765 [DEBUG] [Thread-198769] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:21:27.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:21:27.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:21:27.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:21:27.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:21:27.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:21:27.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:21:03', tmtdew=14.54, humidity=36.83, cloud=0.0, wind=28.16, temperature=13.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:21:04', seeing=0.75, atlas_timestamp='2025-11-24T21:20:33.965', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:19:00')
2025-11-24T23:21:27.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:21:27.873 [DEBUG] [Thread-198772] [transport.py] [_log()] starting thread (client mode): 0xd3192830
2025-11-24T23:21:27.873 [DEBUG] [Thread-198772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:21:27.888 [DEBUG] [Thread-198772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:21:27.888 [INFO] [Thread-198772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:21:27.895 [DEBUG] [Thread-198772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:21:27.895 [DEBUG] [Thread-198772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:21:27.895 [DEBUG] [Thread-198772] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] client lang: <none>
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] server lang: <none>
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] kex follows: False
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] Compression: none
2025-11-24T23:21:27.896 [DEBUG] [Thread-198772] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:21:27.951 [DEBUG] [Thread-198772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:21:27.951 [DEBUG] [Thread-198772] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:21:27.951 [DEBUG] [Thread-198772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:21:27.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:21:27.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:21:28.008 [DEBUG] [Thread-198772] [transport.py] [_log()] userauth is OK
2025-11-24T23:21:28.008 [DEBUG] [Thread-198772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:21:28.008 [DEBUG] [Thread-198772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:21:28.008 [DEBUG] [Thread-198772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:21:28.008 [DEBUG] [Thread-198772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:21:28.023 [INFO] [Thread-198772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:21:28.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:21:28.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:21:28.903 [DEBUG] [Thread-198772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:21:28.903 [DEBUG] [Thread-198772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:21:28.951 [DEBUG] [Thread-198772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:21:28.951 [DEBUG] [Thread-198772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:21:28.959 [DEBUG] [Thread-198772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:21:28.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:21:28.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:21:28.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-11-24T23:21:28.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:21:28.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:21:28.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:21:28.992 [DEBUG] [Thread-198772] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:21:29.541 [DEBUG] [Thread-198774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:21:44.675 [DEBUG] [Thread-198775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:21:54.997 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:21:54.998 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:21:55.548 [DEBUG] [Thread-198776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:21:59.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:21:59.018 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:21:59.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-11-24T23:21:59.724 [DEBUG] [Thread-198777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:22:00.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 21, 36), 14.55, 36.8, 0.0, 28.95, 13.84, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:22:00.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:21:36
2025-11-24T23:22:00.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:22:00.447 [DEBUG] [Thread-198778] [transport.py] [_log()] starting thread (client mode): 0xd0787d90
2025-11-24T23:22:00.448 [DEBUG] [Thread-198778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:22:00.462 [DEBUG] [Thread-198778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:22:00.462 [INFO] [Thread-198778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:22:00.467 [DEBUG] [Thread-198778] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:22:00.467 [DEBUG] [Thread-198778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:22:00.467 [DEBUG] [Thread-198778] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:22:00.468 [DEBUG] [Thread-198778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:22:00.468 [DEBUG] [Thread-198778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:22:00.468 [DEBUG] [Thread-198778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:22:00.468 [DEBUG] [Thread-198778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:22:00.468 [DEBUG] [Thread-198778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:22:00.468 [DEBUG] [Thread-198778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:22:00.468 [DEBUG] [Thread-198778] [transport.py] [_log()] client lang: <none>
2025-11-24T23:22:00.468 [DEBUG] [Thread-198778] [transport.py] [_log()] server lang: <none>
2025-11-24T23:22:00.468 [DEBUG] [Thread-198778] [transport.py] [_log()] kex follows: False
2025-11-24T23:22:00.468 [DEBUG] [Thread-198778] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:22:00.469 [DEBUG] [Thread-198778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:22:00.469 [DEBUG] [Thread-198778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:22:00.469 [DEBUG] [Thread-198778] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:22:00.469 [DEBUG] [Thread-198778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:22:00.469 [DEBUG] [Thread-198778] [transport.py] [_log()] Compression: none
2025-11-24T23:22:00.469 [DEBUG] [Thread-198778] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:22:00.492 [DEBUG] [Thread-198778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:22:00.496 [DEBUG] [Thread-198778] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:22:00.498 [DEBUG] [Thread-198778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:22:00.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:22:00.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:22:00.501 [DEBUG] [Thread-198778] [transport.py] [_log()] userauth is OK
2025-11-24T23:22:00.502 [DEBUG] [Thread-198778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:22:00.502 [DEBUG] [Thread-198778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:22:00.502 [DEBUG] [Thread-198778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:22:00.502 [DEBUG] [Thread-198778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:22:00.528 [INFO] [Thread-198778] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:22:00.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:22:01.194 [DEBUG] [Thread-198778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:22:01.195 [DEBUG] [Thread-198778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:22:01.205 [DEBUG] [Thread-198778] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:22:01.236 [DEBUG] [Thread-198778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:22:01.236 [DEBUG] [Thread-198778] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:22:01.240 [DEBUG] [Thread-198778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:22:01.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:22:01.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:22:01.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:22:01.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:22:01.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:22:01.266 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:22:01.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:22:01.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:22:01.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:22:01.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.889629 -999.00  +13.60  18.86     42   +1.00 1 1 1 1 1     0    0 11.77 -36.68 ZNESW 21.6 18.9 167.4 28.4 14.0 -25.0 13.9 -24.4 13.7 -23.3 14.0 -24.3
2025-11-24T23:22:01.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:22:01.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:22:01.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.889629
2025-11-24T23:22:01.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:22:01.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:22:01.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:22:01.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:22:01.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:22:01.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:21:36', tmtdew=14.55, humidity=36.8, cloud=0.0, wind=28.95, temperature=13.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:21:37', seeing=0.77, atlas_timestamp='2025-11-24T21:21:03.946', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:19:00')
2025-11-24T23:22:01.272 [DEBUG] [Thread-198778] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:22:01.365 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:22:01.376 [DEBUG] [Thread-198781] [transport.py] [_log()] starting thread (client mode): 0xd0787220
2025-11-24T23:22:01.377 [DEBUG] [Thread-198781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:22:01.391 [DEBUG] [Thread-198781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:22:01.391 [INFO] [Thread-198781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:22:01.399 [DEBUG] [Thread-198781] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:22:01.399 [DEBUG] [Thread-198781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:22:01.399 [DEBUG] [Thread-198781] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:22:01.399 [DEBUG] [Thread-198781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:22:01.399 [DEBUG] [Thread-198781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:22:01.399 [DEBUG] [Thread-198781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:22:01.399 [DEBUG] [Thread-198781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] client lang: <none>
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] server lang: <none>
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] kex follows: False
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] Compression: none
2025-11-24T23:22:01.400 [DEBUG] [Thread-198781] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:22:01.457 [DEBUG] [Thread-198781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:22:01.458 [DEBUG] [Thread-198781] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:22:01.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:22:01.459 [DEBUG] [Thread-198781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:22:01.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:22:01.512 [DEBUG] [Thread-198781] [transport.py] [_log()] userauth is OK
2025-11-24T23:22:01.513 [DEBUG] [Thread-198781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:22:01.513 [DEBUG] [Thread-198781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:22:01.513 [DEBUG] [Thread-198781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:22:01.513 [DEBUG] [Thread-198781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:22:01.532 [INFO] [Thread-198781] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:22:01.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:22:01.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:22:02.365 [DEBUG] [Thread-198781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:22:02.366 [DEBUG] [Thread-198781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:22:02.413 [DEBUG] [Thread-198781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:22:02.413 [DEBUG] [Thread-198781] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:22:02.421 [DEBUG] [Thread-198781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:22:02.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:22:02.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-11-24T23:22:02.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-11-24T23:22:02.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:22:02.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:22:02.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:22:02.453 [DEBUG] [Thread-198781] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:22:14.808 [DEBUG] [Thread-198783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:22:29.986 [DEBUG] [Thread-198784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:22:32.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:22:32.464 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:22:32.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-11-24T23:22:33.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 22, 9), 14.55, 36.8, 0.0, 27.88, 13.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:22:33.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:22:09
2025-11-24T23:22:33.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:22:34.007 [DEBUG] [Thread-198785] [transport.py] [_log()] starting thread (client mode): 0xd0784f10
2025-11-24T23:22:34.008 [DEBUG] [Thread-198785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:22:34.020 [DEBUG] [Thread-198785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:22:34.020 [INFO] [Thread-198785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:22:34.025 [DEBUG] [Thread-198785] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:22:34.025 [DEBUG] [Thread-198785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:22:34.025 [DEBUG] [Thread-198785] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:22:34.025 [DEBUG] [Thread-198785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:22:34.025 [DEBUG] [Thread-198785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:22:34.026 [DEBUG] [Thread-198785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:22:34.026 [DEBUG] [Thread-198785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:22:34.026 [DEBUG] [Thread-198785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:22:34.026 [DEBUG] [Thread-198785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:22:34.026 [DEBUG] [Thread-198785] [transport.py] [_log()] client lang: <none>
2025-11-24T23:22:34.026 [DEBUG] [Thread-198785] [transport.py] [_log()] server lang: <none>
2025-11-24T23:22:34.026 [DEBUG] [Thread-198785] [transport.py] [_log()] kex follows: False
2025-11-24T23:22:34.026 [DEBUG] [Thread-198785] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:22:34.026 [DEBUG] [Thread-198785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:22:34.027 [DEBUG] [Thread-198785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:22:34.027 [DEBUG] [Thread-198785] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:22:34.027 [DEBUG] [Thread-198785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:22:34.027 [DEBUG] [Thread-198785] [transport.py] [_log()] Compression: none
2025-11-24T23:22:34.027 [DEBUG] [Thread-198785] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:22:34.065 [DEBUG] [Thread-198785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:22:34.069 [DEBUG] [Thread-198785] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:22:34.073 [DEBUG] [Thread-198785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:22:34.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:22:34.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:22:34.077 [DEBUG] [Thread-198785] [transport.py] [_log()] userauth is OK
2025-11-24T23:22:34.078 [DEBUG] [Thread-198785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:22:34.078 [DEBUG] [Thread-198785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:22:34.078 [DEBUG] [Thread-198785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:22:34.078 [DEBUG] [Thread-198785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:22:34.105 [INFO] [Thread-198785] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:22:34.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:22:34.737 [DEBUG] [Thread-198785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:22:34.737 [DEBUG] [Thread-198785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:22:34.739 [DEBUG] [Thread-198785] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:22:34.778 [DEBUG] [Thread-198785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:22:34.778 [DEBUG] [Thread-198785] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:22:34.782 [DEBUG] [Thread-198785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:22:34.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:22:34.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:22:34.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:22:34.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:22:34.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:22:34.806 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:22:34.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:22:34.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:22:34.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:22:34.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.890324 -999.00  +13.60  22.79     41   +0.90 1 1 1 1 1     0    0 11.82 -35.64 ZNESW 17.2 22.8 172.6 26.5 14.0 -24.9 13.9 -24.4 13.7 -23.2 13.9 -24.3
2025-11-24T23:22:34.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:22:34.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:22:34.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.890324
2025-11-24T23:22:34.813 [DEBUG] [Thread-198785] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:22:34.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:22:34.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:22:34.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:22:34.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:22:34.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:22:34.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:22:09', tmtdew=14.55, humidity=36.8, cloud=0.0, wind=27.88, temperature=13.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:22:09', seeing=0.81, atlas_timestamp='2025-11-24T21:22:03.994', atlas_cloud=1, atlas_rain=1, zp_data=[-0.013250000000001094, -0.0727499999999992, 0.021250000000000213, -0.018500000000001293, -0.010999999999999233, 0.033250000000002444, 0.0019999999999988916, -0.0337499999999995, -0.022500000000000853, -0.006499999999999062, 0.03524999999999956, -0.05500000000000149, 0.04699999999999882, 0.06424999999999947, -0.02400000000000091, -0.0010000000000012221, -0.010749999999999815, 0.02149999999999963, 0.039499999999998536, -0.03675000000000139, 0.03249999999999886, 0.01624999999999943, -0.005749999999999034, -0.021250000000000213, -0.023000000000001464, -0.04449999999999932, 0.040749999999999176, 0.030500000000001748, 0.0884999999999998, 0.03550000000000075, 0.06600000000000072, -0.017999999999998906, -0.06825000000000081], zp_timestamp='2025-11-24T21:19:00')
2025-11-24T23:22:34.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:22:34.911 [DEBUG] [Thread-198788] [transport.py] [_log()] starting thread (client mode): 0xd31516f0
2025-11-24T23:22:34.911 [DEBUG] [Thread-198788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:22:34.926 [DEBUG] [Thread-198788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:22:34.926 [INFO] [Thread-198788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] client lang: <none>
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] server lang: <none>
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] kex follows: False
2025-11-24T23:22:34.933 [DEBUG] [Thread-198788] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:22:34.934 [DEBUG] [Thread-198788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:22:34.934 [DEBUG] [Thread-198788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:22:34.934 [DEBUG] [Thread-198788] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:22:34.934 [DEBUG] [Thread-198788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:22:34.934 [DEBUG] [Thread-198788] [transport.py] [_log()] Compression: none
2025-11-24T23:22:34.934 [DEBUG] [Thread-198788] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:22:34.991 [DEBUG] [Thread-198788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:22:34.991 [DEBUG] [Thread-198788] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:22:34.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:22:34.992 [DEBUG] [Thread-198788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:22:34.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:22:35.049 [DEBUG] [Thread-198788] [transport.py] [_log()] userauth is OK
2025-11-24T23:22:35.049 [DEBUG] [Thread-198788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:22:35.049 [DEBUG] [Thread-198788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:22:35.049 [DEBUG] [Thread-198788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:22:35.049 [DEBUG] [Thread-198788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:22:35.063 [INFO] [Thread-198788] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:22:35.063 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:22:35.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:22:35.889 [DEBUG] [Thread-198788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:22:35.889 [DEBUG] [Thread-198788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:22:35.937 [DEBUG] [Thread-198788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:22:35.937 [DEBUG] [Thread-198788] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:22:35.946 [DEBUG] [Thread-198788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:22:35.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:22:35.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:22:35.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-11-24T23:22:35.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:22:35.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:22:35.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:22:35.980 [DEBUG] [Thread-198788] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:22:45.045 [DEBUG] [Thread-198790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:22:55.210 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:22:55.213 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:22:55.829 [DEBUG] [Thread-198791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:23:00.150 [DEBUG] [Thread-198792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:23:05.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:23:06.002 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:23:06.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:23:07.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 22, 42), 14.59, 36.72, 0.0, 28.11, 13.82, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:23:07.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:22:42
2025-11-24T23:23:07.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:23:07.649 [DEBUG] [Thread-198793] [transport.py] [_log()] starting thread (client mode): 0xd07845e0
2025-11-24T23:23:07.650 [DEBUG] [Thread-198793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:23:07.661 [DEBUG] [Thread-198793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:23:07.662 [INFO] [Thread-198793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:23:07.666 [DEBUG] [Thread-198793] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:23:07.666 [DEBUG] [Thread-198793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:23:07.666 [DEBUG] [Thread-198793] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] client lang: <none>
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] server lang: <none>
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] kex follows: False
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:23:07.667 [DEBUG] [Thread-198793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:23:07.668 [DEBUG] [Thread-198793] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:23:07.668 [DEBUG] [Thread-198793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:23:07.668 [DEBUG] [Thread-198793] [transport.py] [_log()] Compression: none
2025-11-24T23:23:07.668 [DEBUG] [Thread-198793] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:23:07.698 [DEBUG] [Thread-198793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:23:07.701 [DEBUG] [Thread-198793] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:23:07.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:23:07.704 [DEBUG] [Thread-198793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:23:07.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:23:07.708 [DEBUG] [Thread-198793] [transport.py] [_log()] userauth is OK
2025-11-24T23:23:07.708 [DEBUG] [Thread-198793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:23:07.709 [DEBUG] [Thread-198793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:23:07.709 [DEBUG] [Thread-198793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:23:07.709 [DEBUG] [Thread-198793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:23:07.729 [INFO] [Thread-198793] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:23:07.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:23:08.367 [DEBUG] [Thread-198793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:23:08.367 [DEBUG] [Thread-198793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:23:08.369 [DEBUG] [Thread-198793] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:23:08.408 [DEBUG] [Thread-198793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:23:08.408 [DEBUG] [Thread-198793] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:23:08.412 [DEBUG] [Thread-198793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:23:08.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:23:08.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:23:08.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:23:08.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:23:08.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:23:08.440 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:23:08.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:23:08.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:23:08.442 [DEBUG] [Thread-198793] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:23:08.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:23:08.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.890671 -999.00  +13.60  23.58     41   +0.90 1 1 1 1 1     0    0 11.87 -33.01 ZNESW 15.7 23.6 168.8 28.1 14.0 -25.0 13.9 -24.5 13.6 -23.4 13.9 -24.2
2025-11-24T23:23:08.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:23:08.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:23:08.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.890671
2025-11-24T23:23:08.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:23:08.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:23:08.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:23:08.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:23:08.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:23:08.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:22:42', tmtdew=14.59, humidity=36.72, cloud=0.0, wind=28.11, temperature=13.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:22:42', seeing=0.81, atlas_timestamp='2025-11-24T21:22:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[0.0012499999999988631, -0.004749999999999588, -0.006750000000000256, -0.033500000000000085, 0.061500000000000554, 0.034250000000000114, 0.06799999999999962, -0.0007500000000000284, 0.033500000000000085, 0.01150000000000162, 0.0072499999999990905, -0.026500000000000412, 0.0259999999999998, 0.07324999999999982, 0.02149999999999963, 0.009999999999999787, -0.0072499999999990905, 0.0669999999999984, 0.053999999999998494, -0.010750000000001592, 0.0649999999999995, 0.05524999999999913, 0.03375000000000128, 0.0027500000000006963, -0.009000000000000341, 0.009500000000000952, 0.056750000000000966, 0.015499999999999403, 0.1745000000000001, 0.12750000000000128, 0.07400000000000162, 0.02850000000000108, -0.03325000000000067], zp_timestamp='2025-11-24T21:21:00')
2025-11-24T23:23:08.543 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:23:08.555 [DEBUG] [Thread-198796] [transport.py] [_log()] starting thread (client mode): 0xd0786230
2025-11-24T23:23:08.556 [DEBUG] [Thread-198796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:23:08.569 [DEBUG] [Thread-198796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:23:08.569 [INFO] [Thread-198796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] client lang: <none>
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] server lang: <none>
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] kex follows: False
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:23:08.578 [DEBUG] [Thread-198796] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:23:08.579 [DEBUG] [Thread-198796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:23:08.579 [DEBUG] [Thread-198796] [transport.py] [_log()] Compression: none
2025-11-24T23:23:08.579 [DEBUG] [Thread-198796] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:23:08.637 [DEBUG] [Thread-198796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:23:08.638 [DEBUG] [Thread-198796] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:23:08.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:23:08.638 [DEBUG] [Thread-198796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:23:08.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:23:08.692 [DEBUG] [Thread-198796] [transport.py] [_log()] userauth is OK
2025-11-24T23:23:08.693 [DEBUG] [Thread-198796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:23:08.693 [DEBUG] [Thread-198796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:23:08.693 [DEBUG] [Thread-198796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:23:08.693 [DEBUG] [Thread-198796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:23:08.711 [INFO] [Thread-198796] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:23:08.712 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:23:08.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:23:09.554 [DEBUG] [Thread-198796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:23:09.554 [DEBUG] [Thread-198796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:23:09.602 [DEBUG] [Thread-198796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:23:09.603 [DEBUG] [Thread-198796] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:23:09.612 [DEBUG] [Thread-198796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:23:09.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:23:09.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-11-24T23:23:09.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-11-24T23:23:09.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:23:09.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:23:09.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:23:09.649 [DEBUG] [Thread-198796] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:23:15.193 [DEBUG] [Thread-198798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:23:30.279 [DEBUG] [Thread-198799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:23:39.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:23:39.647 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:23:39.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-11-24T23:23:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 23, 15), 14.57, 36.75, 0.0, 27.75, 13.79, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:23:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:23:15
2025-11-24T23:23:40.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:23:41.098 [DEBUG] [Thread-198800] [transport.py] [_log()] starting thread (client mode): 0xd3191780
2025-11-24T23:23:41.099 [DEBUG] [Thread-198800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:23:41.106 [DEBUG] [Thread-198800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:23:41.106 [INFO] [Thread-198800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:23:41.110 [DEBUG] [Thread-198800] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:23:41.110 [DEBUG] [Thread-198800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:23:41.110 [DEBUG] [Thread-198800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:23:41.110 [DEBUG] [Thread-198800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:23:41.110 [DEBUG] [Thread-198800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:23:41.110 [DEBUG] [Thread-198800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:23:41.110 [DEBUG] [Thread-198800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:23:41.110 [DEBUG] [Thread-198800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:23:41.111 [DEBUG] [Thread-198800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:23:41.111 [DEBUG] [Thread-198800] [transport.py] [_log()] client lang: <none>
2025-11-24T23:23:41.111 [DEBUG] [Thread-198800] [transport.py] [_log()] server lang: <none>
2025-11-24T23:23:41.111 [DEBUG] [Thread-198800] [transport.py] [_log()] kex follows: False
2025-11-24T23:23:41.111 [DEBUG] [Thread-198800] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:23:41.111 [DEBUG] [Thread-198800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:23:41.111 [DEBUG] [Thread-198800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:23:41.111 [DEBUG] [Thread-198800] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:23:41.112 [DEBUG] [Thread-198800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:23:41.112 [DEBUG] [Thread-198800] [transport.py] [_log()] Compression: none
2025-11-24T23:23:41.112 [DEBUG] [Thread-198800] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:23:41.142 [DEBUG] [Thread-198800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:23:41.145 [DEBUG] [Thread-198800] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:23:41.147 [DEBUG] [Thread-198800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:23:41.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:23:41.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:23:41.185 [DEBUG] [Thread-198800] [transport.py] [_log()] userauth is OK
2025-11-24T23:23:41.186 [DEBUG] [Thread-198800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:23:41.186 [DEBUG] [Thread-198800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:23:41.186 [DEBUG] [Thread-198800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:23:41.187 [DEBUG] [Thread-198800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:23:41.213 [INFO] [Thread-198800] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:23:41.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:23:41.886 [DEBUG] [Thread-198800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:23:41.886 [DEBUG] [Thread-198800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:23:41.893 [DEBUG] [Thread-198800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:23:41.927 [DEBUG] [Thread-198800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:23:41.928 [DEBUG] [Thread-198800] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:23:41.932 [DEBUG] [Thread-198800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:23:41.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:23:41.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:23:41.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:23:41.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:23:41.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:23:41.956 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:23:41.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:23:41.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:23:41.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:23:41.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.891018 -999.00  +13.60  18.84     41   +0.80 1 1 1 1 1     0    0 11.96 -32.47 ZNESW 20.4 18.8 163.7 25.6 13.9 -25.0 13.8 -24.3 13.6 -23.4 13.8 -24.2
2025-11-24T23:23:41.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:23:41.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:23:41.959 [DEBUG] [Thread-198800] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:23:41.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.891018
2025-11-24T23:23:41.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:23:41.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:23:41.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:23:41.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:23:41.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:23:41.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:23:15', tmtdew=14.57, humidity=36.75, cloud=0.0, wind=27.75, temperature=13.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:23:15', seeing=0.88, atlas_timestamp='2025-11-24T21:23:03.955', atlas_cloud=1, atlas_rain=1, zp_data=[0.0012499999999988631, -0.004749999999999588, -0.006750000000000256, -0.033500000000000085, 0.061500000000000554, 0.034250000000000114, 0.06799999999999962, -0.0007500000000000284, 0.033500000000000085, 0.01150000000000162, 0.0072499999999990905, -0.026500000000000412, 0.0259999999999998, 0.07324999999999982, 0.02149999999999963, 0.009999999999999787, -0.0072499999999990905, 0.0669999999999984, 0.053999999999998494, -0.010750000000001592, 0.0649999999999995, 0.05524999999999913, 0.03375000000000128, 0.0027500000000006963, -0.009000000000000341, 0.009500000000000952, 0.056750000000000966, 0.015499999999999403, 0.1745000000000001, 0.12750000000000128, 0.07400000000000162, 0.02850000000000108, -0.03325000000000067], zp_timestamp='2025-11-24T21:21:00')
2025-11-24T23:23:42.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:23:42.072 [DEBUG] [Thread-198803] [transport.py] [_log()] starting thread (client mode): 0xd31f4100
2025-11-24T23:23:42.073 [DEBUG] [Thread-198803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:23:42.088 [DEBUG] [Thread-198803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:23:42.088 [INFO] [Thread-198803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:23:42.096 [DEBUG] [Thread-198803] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:23:42.096 [DEBUG] [Thread-198803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:23:42.096 [DEBUG] [Thread-198803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:23:42.096 [DEBUG] [Thread-198803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:23:42.097 [DEBUG] [Thread-198803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:23:42.097 [DEBUG] [Thread-198803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:23:42.097 [DEBUG] [Thread-198803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:23:42.097 [DEBUG] [Thread-198803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:23:42.097 [DEBUG] [Thread-198803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:23:42.097 [DEBUG] [Thread-198803] [transport.py] [_log()] client lang: <none>
2025-11-24T23:23:42.097 [DEBUG] [Thread-198803] [transport.py] [_log()] server lang: <none>
2025-11-24T23:23:42.097 [DEBUG] [Thread-198803] [transport.py] [_log()] kex follows: False
2025-11-24T23:23:42.097 [DEBUG] [Thread-198803] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:23:42.098 [DEBUG] [Thread-198803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:23:42.098 [DEBUG] [Thread-198803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:23:42.098 [DEBUG] [Thread-198803] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:23:42.098 [DEBUG] [Thread-198803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:23:42.098 [DEBUG] [Thread-198803] [transport.py] [_log()] Compression: none
2025-11-24T23:23:42.098 [DEBUG] [Thread-198803] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:23:42.153 [DEBUG] [Thread-198803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:23:42.153 [DEBUG] [Thread-198803] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:23:42.154 [DEBUG] [Thread-198803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:23:42.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:23:42.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:23:42.209 [DEBUG] [Thread-198803] [transport.py] [_log()] userauth is OK
2025-11-24T23:23:42.209 [DEBUG] [Thread-198803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:23:42.209 [DEBUG] [Thread-198803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:23:42.209 [DEBUG] [Thread-198803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:23:42.209 [DEBUG] [Thread-198803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:23:42.232 [INFO] [Thread-198803] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:23:42.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:23:42.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:23:43.120 [DEBUG] [Thread-198803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:23:43.120 [DEBUG] [Thread-198803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:23:43.168 [DEBUG] [Thread-198803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:23:43.168 [DEBUG] [Thread-198803] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:23:43.176 [DEBUG] [Thread-198803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:23:43.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:23:43.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-11-24T23:23:43.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-11-24T23:23:43.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:23:43.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:23:43.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:23:43.208 [DEBUG] [Thread-198803] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:23:45.335 [DEBUG] [Thread-198805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:23:55.422 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:23:55.425 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:23:56.193 [DEBUG] [Thread-198806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:24:00.468 [DEBUG] [Thread-198807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:24:13.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:24:13.248 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:24:13.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-11-24T23:24:14.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 23, 47), 14.54, 36.83, 0.0, 27.68, 13.77, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:24:14.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:23:47
2025-11-24T23:24:14.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:24:14.382 [DEBUG] [Thread-198808] [transport.py] [_log()] starting thread (client mode): 0xd31929e0
2025-11-24T23:24:14.382 [DEBUG] [Thread-198808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:24:14.391 [DEBUG] [Thread-198808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:24:14.391 [INFO] [Thread-198808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:24:14.397 [DEBUG] [Thread-198808] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:24:14.397 [DEBUG] [Thread-198808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] client lang: <none>
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] server lang: <none>
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] kex follows: False
2025-11-24T23:24:14.398 [DEBUG] [Thread-198808] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:24:14.399 [DEBUG] [Thread-198808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:24:14.399 [DEBUG] [Thread-198808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:24:14.399 [DEBUG] [Thread-198808] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:24:14.399 [DEBUG] [Thread-198808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:24:14.399 [DEBUG] [Thread-198808] [transport.py] [_log()] Compression: none
2025-11-24T23:24:14.399 [DEBUG] [Thread-198808] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:24:14.436 [DEBUG] [Thread-198808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:24:14.441 [DEBUG] [Thread-198808] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:24:14.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:24:14.446 [DEBUG] [Thread-198808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:24:14.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:24:14.450 [DEBUG] [Thread-198808] [transport.py] [_log()] userauth is OK
2025-11-24T23:24:14.450 [DEBUG] [Thread-198808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:24:14.450 [DEBUG] [Thread-198808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:24:14.450 [DEBUG] [Thread-198808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:24:14.450 [DEBUG] [Thread-198808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:24:14.490 [INFO] [Thread-198808] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:24:14.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:24:15.124 [DEBUG] [Thread-198808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:24:15.124 [DEBUG] [Thread-198808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:24:15.135 [DEBUG] [Thread-198808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:24:15.166 [DEBUG] [Thread-198808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:24:15.166 [DEBUG] [Thread-198808] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:24:15.170 [DEBUG] [Thread-198808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:24:15.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:24:15.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:24:15.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:24:15.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:24:15.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:24:15.195 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:24:15.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:24:15.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:24:15.197 [DEBUG] [Thread-198808] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:24:15.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:24:15.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.891365 -999.00  +13.50  18.53     41   +0.80 1 1 1 1 1     0    0 11.94 -31.07 ZNESW 20.8 18.5 174.2 26.2 14.0 -25.0 13.8 -24.5 13.6 -23.3 13.9 -24.2
2025-11-24T23:24:15.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:24:15.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:24:15.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.891365
2025-11-24T23:24:15.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:24:15.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:24:15.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:24:15.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:24:15.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:24:15.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:23:47', tmtdew=14.54, humidity=36.83, cloud=0.0, wind=27.68, temperature=13.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:23:48', seeing=0.97, atlas_timestamp='2025-11-24T21:23:33.936', atlas_cloud=1, atlas_rain=1, zp_data=[0.0012499999999988631, -0.004749999999999588, -0.006750000000000256, -0.033500000000000085, 0.061500000000000554, 0.034250000000000114, 0.06799999999999962, -0.0007500000000000284, 0.033500000000000085, 0.01150000000000162, 0.0072499999999990905, -0.026500000000000412, 0.0259999999999998, 0.07324999999999982, 0.02149999999999963, 0.009999999999999787, -0.0072499999999990905, 0.0669999999999984, 0.053999999999998494, -0.010750000000001592, 0.0649999999999995, 0.05524999999999913, 0.03375000000000128, 0.0027500000000006963, -0.009000000000000341, 0.009500000000000952, 0.056750000000000966, 0.015499999999999403, 0.1745000000000001, 0.12750000000000128, 0.07400000000000162, 0.02850000000000108, -0.03325000000000067], zp_timestamp='2025-11-24T21:21:00')
2025-11-24T23:24:15.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:24:15.331 [DEBUG] [Thread-198811] [transport.py] [_log()] starting thread (client mode): 0xd3193f40
2025-11-24T23:24:15.331 [DEBUG] [Thread-198811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:24:15.345 [DEBUG] [Thread-198811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:24:15.345 [INFO] [Thread-198811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:24:15.353 [DEBUG] [Thread-198811] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:24:15.353 [DEBUG] [Thread-198811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:24:15.353 [DEBUG] [Thread-198811] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:24:15.353 [DEBUG] [Thread-198811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:24:15.353 [DEBUG] [Thread-198811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:24:15.353 [DEBUG] [Thread-198811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:24:15.353 [DEBUG] [Thread-198811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:24:15.353 [DEBUG] [Thread-198811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:24:15.354 [DEBUG] [Thread-198811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:24:15.354 [DEBUG] [Thread-198811] [transport.py] [_log()] client lang: <none>
2025-11-24T23:24:15.354 [DEBUG] [Thread-198811] [transport.py] [_log()] server lang: <none>
2025-11-24T23:24:15.354 [DEBUG] [Thread-198811] [transport.py] [_log()] kex follows: False
2025-11-24T23:24:15.354 [DEBUG] [Thread-198811] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:24:15.354 [DEBUG] [Thread-198811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:24:15.354 [DEBUG] [Thread-198811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:24:15.354 [DEBUG] [Thread-198811] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:24:15.355 [DEBUG] [Thread-198811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:24:15.355 [DEBUG] [Thread-198811] [transport.py] [_log()] Compression: none
2025-11-24T23:24:15.355 [DEBUG] [Thread-198811] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:24:15.414 [DEBUG] [Thread-198811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:24:15.414 [DEBUG] [Thread-198811] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:24:15.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:24:15.415 [DEBUG] [Thread-198811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:24:15.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:24:15.473 [DEBUG] [Thread-198811] [transport.py] [_log()] userauth is OK
2025-11-24T23:24:15.473 [DEBUG] [Thread-198811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:24:15.473 [DEBUG] [Thread-198811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:24:15.473 [DEBUG] [Thread-198811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:24:15.473 [DEBUG] [Thread-198811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:24:15.492 [INFO] [Thread-198811] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:24: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-11-24T23:24:15.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:24:15.531 [DEBUG] [Thread-198813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:24:16.337 [DEBUG] [Thread-198811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:24:16.337 [DEBUG] [Thread-198811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:24:16.384 [DEBUG] [Thread-198811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:24:16.385 [DEBUG] [Thread-198811] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:24:16.394 [DEBUG] [Thread-198811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:24:16.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:24: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-11-24T23:24:16.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-11-24T23:24:16.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:24:16.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:24:16.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:24:16.443 [DEBUG] [Thread-198811] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:24:19.093 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:24:30.724 [DEBUG] [Thread-198814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:24:45.824 [DEBUG] [Thread-198815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:24:46.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:24:46.468 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:24:46.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-11-24T23:24:47.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 24, 20), 14.53, 36.86, 0.0, 25.46, 13.81, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:24:47.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:24:20
2025-11-24T23:24:47.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:24:47.678 [DEBUG] [Thread-198816] [transport.py] [_log()] starting thread (client mode): 0xd3151cf0
2025-11-24T23:24:47.679 [DEBUG] [Thread-198816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:24:47.682 [DEBUG] [Thread-198816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:24:47.682 [INFO] [Thread-198816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] client lang: <none>
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] server lang: <none>
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] kex follows: False
2025-11-24T23:24:47.687 [DEBUG] [Thread-198816] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:24:47.688 [DEBUG] [Thread-198816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:24:47.688 [DEBUG] [Thread-198816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:24:47.688 [DEBUG] [Thread-198816] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:24:47.688 [DEBUG] [Thread-198816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:24:47.688 [DEBUG] [Thread-198816] [transport.py] [_log()] Compression: none
2025-11-24T23:24:47.688 [DEBUG] [Thread-198816] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:24:47.716 [DEBUG] [Thread-198816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:24:47.720 [DEBUG] [Thread-198816] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:24:47.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:24:47.722 [DEBUG] [Thread-198816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:24:47.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:24:47.725 [DEBUG] [Thread-198816] [transport.py] [_log()] userauth is OK
2025-11-24T23:24:47.725 [DEBUG] [Thread-198816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:24:47.725 [DEBUG] [Thread-198816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:24:47.725 [DEBUG] [Thread-198816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:24:47.725 [DEBUG] [Thread-198816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:24:47.742 [INFO] [Thread-198816] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:24:47.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:24:48.537 [DEBUG] [Thread-198816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:24:48.537 [DEBUG] [Thread-198816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:24:48.538 [DEBUG] [Thread-198816] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:24:48.579 [DEBUG] [Thread-198816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:24:48.579 [DEBUG] [Thread-198816] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:24:48.581 [DEBUG] [Thread-198816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:24:48.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:24:48.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:24:48.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:24:48.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:24:48.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:24:48.603 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:24:48.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:24:48.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:24:48.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:24:48.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.891713 -999.00  +13.50  15.46     41   +0.80 1 1 1 1 1     0    0 12.24 -29.02 ZNESW 15.7 15.5 170.0 23.1 13.9 -25.0 13.8 -24.4 13.6 -23.1 13.9 -24.1
2025-11-24T23:24:48.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:24:48.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:24:48.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.891713
2025-11-24T23:24:48.610 [DEBUG] [Thread-198816] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:24:48.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:24:48.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:24:48.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:24:48.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:24:48.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:24:48.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:24:20', tmtdew=14.53, humidity=36.86, cloud=0.0, wind=25.46, temperature=13.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:24:21', seeing=0.91, atlas_timestamp='2025-11-24T21:24:04.003', atlas_cloud=1, atlas_rain=1, zp_data=[0.0012499999999988631, -0.004749999999999588, -0.006750000000000256, -0.033500000000000085, 0.061500000000000554, 0.034250000000000114, 0.06799999999999962, -0.0007500000000000284, 0.033500000000000085, 0.01150000000000162, 0.0072499999999990905, -0.026500000000000412, 0.0259999999999998, 0.07324999999999982, 0.02149999999999963, 0.009999999999999787, -0.0072499999999990905, 0.0669999999999984, 0.053999999999998494, -0.010750000000001592, 0.0649999999999995, 0.05524999999999913, 0.03375000000000128, 0.0027500000000006963, -0.009000000000000341, 0.009500000000000952, 0.056750000000000966, 0.015499999999999403, 0.1745000000000001, 0.12750000000000128, 0.07400000000000162, 0.02850000000000108, -0.03325000000000067], zp_timestamp='2025-11-24T21:21:00')
2025-11-24T23:24:48.698 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:24:48.710 [DEBUG] [Thread-198819] [transport.py] [_log()] starting thread (client mode): 0xd3152260
2025-11-24T23:24:48.710 [DEBUG] [Thread-198819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:24:48.725 [DEBUG] [Thread-198819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:24:48.725 [INFO] [Thread-198819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] client lang: <none>
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] server lang: <none>
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] kex follows: False
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] Compression: none
2025-11-24T23:24:48.733 [DEBUG] [Thread-198819] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:24:48.801 [DEBUG] [Thread-198819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:24:48.801 [DEBUG] [Thread-198819] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:24:48.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:24:48.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:24:48.801 [DEBUG] [Thread-198819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:24:48.856 [DEBUG] [Thread-198819] [transport.py] [_log()] userauth is OK
2025-11-24T23:24:48.856 [DEBUG] [Thread-198819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:24:48.857 [DEBUG] [Thread-198819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:24:48.857 [DEBUG] [Thread-198819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:24:48.857 [DEBUG] [Thread-198819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:24:48.874 [INFO] [Thread-198819] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:24:48.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:24:48.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:24:49.726 [DEBUG] [Thread-198819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:24:49.726 [DEBUG] [Thread-198819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:24:49.774 [DEBUG] [Thread-198819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:24:49.774 [DEBUG] [Thread-198819] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:24:49.782 [DEBUG] [Thread-198819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:24:49.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:24:49.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:24:49.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-11-24T23:24:49.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:24:49.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:24:49.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:24:49.817 [DEBUG] [Thread-198819] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:24:55.629 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:24:55.630 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:24:56.467 [DEBUG] [Thread-198821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:25:00.907 [DEBUG] [Thread-198822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:25:16.064 [DEBUG] [Thread-198823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:25:19.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:25:19.836 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:25:19.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-11-24T23:25:21.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 24, 53), 14.52, 36.73, 0.0, 27.19, 13.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:25:21.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:24:53
2025-11-24T23:25:21.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:25:21.443 [DEBUG] [Thread-198824] [transport.py] [_log()] starting thread (client mode): 0xd07ce2c0
2025-11-24T23:25:21.444 [DEBUG] [Thread-198824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:25:21.457 [DEBUG] [Thread-198824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:25:21.457 [INFO] [Thread-198824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:25:21.461 [DEBUG] [Thread-198824] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:25:21.461 [DEBUG] [Thread-198824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] client lang: <none>
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] server lang: <none>
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] kex follows: False
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:25:21.462 [DEBUG] [Thread-198824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:25:21.463 [DEBUG] [Thread-198824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:25:21.463 [DEBUG] [Thread-198824] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:25:21.463 [DEBUG] [Thread-198824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:25:21.463 [DEBUG] [Thread-198824] [transport.py] [_log()] Compression: none
2025-11-24T23:25:21.463 [DEBUG] [Thread-198824] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:25:21.494 [DEBUG] [Thread-198824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:25:21.499 [DEBUG] [Thread-198824] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:25:21.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:25:21.502 [DEBUG] [Thread-198824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:25:21.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:25:21.505 [DEBUG] [Thread-198824] [transport.py] [_log()] userauth is OK
2025-11-24T23:25:21.506 [DEBUG] [Thread-198824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:25:21.506 [DEBUG] [Thread-198824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:25:21.506 [DEBUG] [Thread-198824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:25:21.506 [DEBUG] [Thread-198824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:25:21.533 [INFO] [Thread-198824] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:25:21.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:25:22.133 [DEBUG] [Thread-198824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:25:22.134 [DEBUG] [Thread-198824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:25:22.134 [DEBUG] [Thread-198824] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:25:22.174 [DEBUG] [Thread-198824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:25:22.174 [DEBUG] [Thread-198824] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:25:22.177 [DEBUG] [Thread-198824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:25:22.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:25:22.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:25:22.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:25:22.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:25:22.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:25:22.198 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:25:22.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:25:22.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:25:22.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:25:22.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.892060 -999.00  +13.50  23.62     41   +0.80 1 1 1 1 1     0    0 12.05 -26.92 ZNESW 22.1 23.6 165.6 27.5 13.9 -24.9 13.8 -24.4 13.6 -23.3 13.8 -24.2
2025-11-24T23:25:22.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:25:22.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:25:22.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.892060
2025-11-24T23:25:22.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:25:22.207 [DEBUG] [Thread-198824] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:25:22.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:25:22.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:25:22.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:25:22.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:25:22.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:24:53', tmtdew=14.52, humidity=36.73, cloud=0.0, wind=27.19, temperature=13.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:24:53', seeing=0.9, atlas_timestamp='2025-11-24T21:24:33.984', atlas_cloud=1, atlas_rain=1, zp_data=[0.0012499999999988631, -0.004749999999999588, -0.006750000000000256, -0.033500000000000085, 0.061500000000000554, 0.034250000000000114, 0.06799999999999962, -0.0007500000000000284, 0.033500000000000085, 0.01150000000000162, 0.0072499999999990905, -0.026500000000000412, 0.0259999999999998, 0.07324999999999982, 0.02149999999999963, 0.009999999999999787, -0.0072499999999990905, 0.0669999999999984, 0.053999999999998494, -0.010750000000001592, 0.0649999999999995, 0.05524999999999913, 0.03375000000000128, 0.0027500000000006963, -0.009000000000000341, 0.009500000000000952, 0.056750000000000966, 0.015499999999999403, 0.1745000000000001, 0.12750000000000128, 0.07400000000000162, 0.02850000000000108, -0.03325000000000067], zp_timestamp='2025-11-24T21:21:00')
2025-11-24T23:25:22.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:25:22.306 [DEBUG] [Thread-198827] [transport.py] [_log()] starting thread (client mode): 0xd07ccd30
2025-11-24T23:25:22.306 [DEBUG] [Thread-198827] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:25:22.326 [DEBUG] [Thread-198827] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:25:22.327 [INFO] [Thread-198827] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] client lang: <none>
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] server lang: <none>
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] kex follows: False
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] Compression: none
2025-11-24T23:25:22.335 [DEBUG] [Thread-198827] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:25:22.392 [DEBUG] [Thread-198827] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:25:22.392 [DEBUG] [Thread-198827] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:25:22.392 [DEBUG] [Thread-198827] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:25:22.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:25:22.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:25:22.448 [DEBUG] [Thread-198827] [transport.py] [_log()] userauth is OK
2025-11-24T23:25:22.448 [DEBUG] [Thread-198827] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:25:22.448 [DEBUG] [Thread-198827] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:25:22.448 [DEBUG] [Thread-198827] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:25:22.448 [DEBUG] [Thread-198827] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:25:22.463 [INFO] [Thread-198827] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:25:22.463 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:25:22.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:25:23.293 [DEBUG] [Thread-198827] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:25:23.293 [DEBUG] [Thread-198827] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:25:23.341 [DEBUG] [Thread-198827] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:25:23.341 [DEBUG] [Thread-198827] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:25:23.349 [DEBUG] [Thread-198827] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:25:23.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:25:23.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-11-24T23:25:23.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:25:23.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:25:23.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:25:23.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:25:23.382 [DEBUG] [Thread-198827] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:25:31.106 [DEBUG] [Thread-198829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:25:46.220 [DEBUG] [Thread-198830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:25:53.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:25:53.397 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:25:53.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-11-24T23:25:54.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 25, 26), 14.53, 36.72, 0.0, 27.45, 13.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:25:54.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:25:26
2025-11-24T23:25:54.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:25:54.972 [DEBUG] [Thread-198831] [transport.py] [_log()] starting thread (client mode): 0xd3152320
2025-11-24T23:25:54.973 [DEBUG] [Thread-198831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:25:54.987 [DEBUG] [Thread-198831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:25:54.987 [INFO] [Thread-198831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:25:54.990 [DEBUG] [Thread-198831] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:25:54.990 [DEBUG] [Thread-198831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] client lang: <none>
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] server lang: <none>
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] kex follows: False
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] Compression: none
2025-11-24T23:25:54.991 [DEBUG] [Thread-198831] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:25:55.022 [DEBUG] [Thread-198831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:25:55.027 [DEBUG] [Thread-198831] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:25:55.029 [DEBUG] [Thread-198831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:25:55.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:25:55.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:25:55.033 [DEBUG] [Thread-198831] [transport.py] [_log()] userauth is OK
2025-11-24T23:25:55.033 [DEBUG] [Thread-198831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:25:55.033 [DEBUG] [Thread-198831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:25:55.033 [DEBUG] [Thread-198831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:25:55.033 [DEBUG] [Thread-198831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:25:55.058 [INFO] [Thread-198831] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:25:55.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:25:55.690 [DEBUG] [Thread-198831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:25:55.690 [DEBUG] [Thread-198831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:25:55.692 [DEBUG] [Thread-198831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:25:55.731 [DEBUG] [Thread-198831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:25:55.731 [DEBUG] [Thread-198831] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:25:55.735 [DEBUG] [Thread-198831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:25:55.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:25:55.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:25:55.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:25:55.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:25:55.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:25:55.761 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:25:55.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:25:55.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:25:55.763 [DEBUG] [Thread-198831] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:25:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:25:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.892754 -999.00  +13.50  21.67     41   +0.80 1 1 1 1 1     0    0 12.18 -23.43 ZNESW 19.7 21.7 167.2 26.7 13.9 -24.9 13.8 -24.4 13.6 -23.3 13.8 -24.3
2025-11-24T23:25:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:25:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:25:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.892754
2025-11-24T23:25:55.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:25:55.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:25:55.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:25:55.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:25:55.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:25:55.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:25:26', tmtdew=14.53, humidity=36.72, cloud=0.0, wind=27.45, temperature=13.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:25:26', seeing=0.88, atlas_timestamp='2025-11-24T21:25:33.946', atlas_cloud=1, atlas_rain=1, zp_data=[0.0012499999999988631, -0.004749999999999588, -0.006750000000000256, -0.033500000000000085, 0.061500000000000554, 0.034250000000000114, 0.06799999999999962, -0.0007500000000000284, 0.033500000000000085, 0.01150000000000162, 0.0072499999999990905, -0.026500000000000412, 0.0259999999999998, 0.07324999999999982, 0.02149999999999963, 0.009999999999999787, -0.0072499999999990905, 0.0669999999999984, 0.053999999999998494, -0.010750000000001592, 0.0649999999999995, 0.05524999999999913, 0.03375000000000128, 0.0027500000000006963, -0.009000000000000341, 0.009500000000000952, 0.056750000000000966, 0.015499999999999403, 0.1745000000000001, 0.12750000000000128, 0.07400000000000162, 0.02850000000000108, -0.03325000000000067], zp_timestamp='2025-11-24T21:21:00')
2025-11-24T23:25:55.834 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:25:55.835 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:25:55.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:25:55.878 [DEBUG] [Thread-198834] [transport.py] [_log()] starting thread (client mode): 0xd3150d60
2025-11-24T23:25:55.878 [DEBUG] [Thread-198834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:25:55.892 [DEBUG] [Thread-198834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:25:55.892 [INFO] [Thread-198834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:25:55.899 [DEBUG] [Thread-198834] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:25:55.899 [DEBUG] [Thread-198834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:25:55.899 [DEBUG] [Thread-198834] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] client lang: <none>
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] server lang: <none>
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] kex follows: False
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] Compression: none
2025-11-24T23:25:55.900 [DEBUG] [Thread-198834] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:25:55.955 [DEBUG] [Thread-198834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:25:55.955 [DEBUG] [Thread-198834] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:25:55.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:25:55.955 [DEBUG] [Thread-198834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:25:55.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:25:56.014 [DEBUG] [Thread-198834] [transport.py] [_log()] userauth is OK
2025-11-24T23:25:56.014 [DEBUG] [Thread-198834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:25:56.014 [DEBUG] [Thread-198834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:25:56.014 [DEBUG] [Thread-198834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:25:56.014 [DEBUG] [Thread-198834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:25:56.032 [INFO] [Thread-198834] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:25:56.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:25:56.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:25:56.853 [DEBUG] [Thread-198836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:25:56.898 [DEBUG] [Thread-198834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:25:56.898 [DEBUG] [Thread-198834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:25:56.946 [DEBUG] [Thread-198834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:25:56.947 [DEBUG] [Thread-198834] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:25:56.956 [DEBUG] [Thread-198834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:25:56.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:25:56.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:25:56.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-11-24T23:25:56.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:25:56.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:25:56.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:25:56.994 [DEBUG] [Thread-198834] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:26:01.289 [DEBUG] [Thread-198837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:26:16.426 [DEBUG] [Thread-198838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:26:27.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:26:27.018 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:26:27.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-11-24T23:26:28.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 25, 59), 14.59, 36.7, 0.0, 24.35, 13.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:26:28.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:25:59
2025-11-24T23:26:28.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:26:28.624 [DEBUG] [Thread-198839] [transport.py] [_log()] starting thread (client mode): 0xd0784b80
2025-11-24T23:26:28.624 [DEBUG] [Thread-198839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:26:28.627 [DEBUG] [Thread-198839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:26:28.627 [INFO] [Thread-198839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:26:28.632 [DEBUG] [Thread-198839] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:26:28.632 [DEBUG] [Thread-198839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:26:28.632 [DEBUG] [Thread-198839] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:26:28.632 [DEBUG] [Thread-198839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:26:28.632 [DEBUG] [Thread-198839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:26:28.632 [DEBUG] [Thread-198839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:26:28.632 [DEBUG] [Thread-198839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:26:28.632 [DEBUG] [Thread-198839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:26:28.632 [DEBUG] [Thread-198839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:26:28.632 [DEBUG] [Thread-198839] [transport.py] [_log()] client lang: <none>
2025-11-24T23:26:28.633 [DEBUG] [Thread-198839] [transport.py] [_log()] server lang: <none>
2025-11-24T23:26:28.633 [DEBUG] [Thread-198839] [transport.py] [_log()] kex follows: False
2025-11-24T23:26:28.633 [DEBUG] [Thread-198839] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:26:28.633 [DEBUG] [Thread-198839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:26:28.633 [DEBUG] [Thread-198839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:26:28.633 [DEBUG] [Thread-198839] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:26:28.633 [DEBUG] [Thread-198839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:26:28.633 [DEBUG] [Thread-198839] [transport.py] [_log()] Compression: none
2025-11-24T23:26:28.633 [DEBUG] [Thread-198839] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:26:28.667 [DEBUG] [Thread-198839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:26:28.672 [DEBUG] [Thread-198839] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:26:28.674 [DEBUG] [Thread-198839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:26:28.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:26:28.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:26:28.679 [DEBUG] [Thread-198839] [transport.py] [_log()] userauth is OK
2025-11-24T23:26:28.680 [DEBUG] [Thread-198839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:26:28.680 [DEBUG] [Thread-198839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:26:28.681 [DEBUG] [Thread-198839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:26:28.681 [DEBUG] [Thread-198839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:26:28.718 [INFO] [Thread-198839] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:26:28.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:26:29.380 [DEBUG] [Thread-198839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:26:29.380 [DEBUG] [Thread-198839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:26:29.381 [DEBUG] [Thread-198839] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:26:29.421 [DEBUG] [Thread-198839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:26:29.421 [DEBUG] [Thread-198839] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:26:29.424 [DEBUG] [Thread-198839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:26:29.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:26:29.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:26:29.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:26:29.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:26:29.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:26:29.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:26:29.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:26:29.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:26:29.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:26:29.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.893101 -999.00  +13.60  20.68     41   +0.80 1 1 1 1 1     0    0 12.17 -20.60 ZNESW 23.1 20.7 166.9 27.0 13.9 -24.9 13.8 -24.4 13.6 -23.3 13.9 -24.1
2025-11-24T23:26:29.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:26:29.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:26:29.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.893101
2025-11-24T23:26:29.453 [DEBUG] [Thread-198839] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:26:29.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:26:29.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:26:29.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:26:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:26:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:26:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:25:59', tmtdew=14.59, humidity=36.7, cloud=0.0, wind=24.35, temperature=13.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:25:59', seeing=0.92, atlas_timestamp='2025-11-24T21:26:03.926', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:24:00')
2025-11-24T23:26:29.543 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:26:29.555 [DEBUG] [Thread-198842] [transport.py] [_log()] starting thread (client mode): 0xd3193be0
2025-11-24T23:26:29.555 [DEBUG] [Thread-198842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:26:29.569 [DEBUG] [Thread-198842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:26:29.569 [INFO] [Thread-198842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] client lang: <none>
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] server lang: <none>
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] kex follows: False
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] Compression: none
2025-11-24T23:26:29.577 [DEBUG] [Thread-198842] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:26:29.636 [DEBUG] [Thread-198842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:26:29.636 [DEBUG] [Thread-198842] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:26:29.637 [DEBUG] [Thread-198842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:26:29.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:26:29.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:26:29.692 [DEBUG] [Thread-198842] [transport.py] [_log()] userauth is OK
2025-11-24T23:26:29.692 [DEBUG] [Thread-198842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:26:29.693 [DEBUG] [Thread-198842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:26:29.693 [DEBUG] [Thread-198842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:26:29.693 [DEBUG] [Thread-198842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:26:29.706 [INFO] [Thread-198842] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:26:29.707 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:26:29.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:26:30.547 [DEBUG] [Thread-198842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:26:30.547 [DEBUG] [Thread-198842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:26:30.595 [DEBUG] [Thread-198842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:26:30.595 [DEBUG] [Thread-198842] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:26:30.603 [DEBUG] [Thread-198842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:26:30.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:26:30.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-11-24T23:26:30.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-11-24T23:26:30.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:26:30.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:26:30.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:26:30.638 [DEBUG] [Thread-198842] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:26:31.462 [DEBUG] [Thread-198844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:26:46.602 [DEBUG] [Thread-198845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:26:56.040 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:26:56.042 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:26:57.181 [DEBUG] [Thread-198846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:27:00.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:27:00.665 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:27:00.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-11-24T23:27:01.678 [DEBUG] [Thread-198847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:27:01.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 26, 32), 14.59, 36.7, 0.0, 25.37, 13.72, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:27:01.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:26:32
2025-11-24T23:27:02.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:27:02.305 [DEBUG] [Thread-198848] [transport.py] [_log()] starting thread (client mode): 0xd3152b00
2025-11-24T23:27:02.306 [DEBUG] [Thread-198848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:27:02.318 [DEBUG] [Thread-198848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:27:02.319 [INFO] [Thread-198848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:27:02.323 [DEBUG] [Thread-198848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] client lang: <none>
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] server lang: <none>
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] kex follows: False
2025-11-24T23:27:02.324 [DEBUG] [Thread-198848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:27:02.325 [DEBUG] [Thread-198848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:27:02.325 [DEBUG] [Thread-198848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:27:02.325 [DEBUG] [Thread-198848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:27:02.325 [DEBUG] [Thread-198848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:27:02.325 [DEBUG] [Thread-198848] [transport.py] [_log()] Compression: none
2025-11-24T23:27:02.325 [DEBUG] [Thread-198848] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:27:02.361 [DEBUG] [Thread-198848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:27:02.366 [DEBUG] [Thread-198848] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:27:02.368 [DEBUG] [Thread-198848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:27:02.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:27:02.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:27:02.374 [DEBUG] [Thread-198848] [transport.py] [_log()] userauth is OK
2025-11-24T23:27:02.375 [DEBUG] [Thread-198848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:27:02.375 [DEBUG] [Thread-198848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:27:02.375 [DEBUG] [Thread-198848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:27:02.375 [DEBUG] [Thread-198848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:27:02.404 [INFO] [Thread-198848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:27:02.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:27:03.054 [DEBUG] [Thread-198848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:27:03.054 [DEBUG] [Thread-198848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:27:03.064 [DEBUG] [Thread-198848] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:27:03.094 [DEBUG] [Thread-198848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:27:03.094 [DEBUG] [Thread-198848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:27:03.098 [DEBUG] [Thread-198848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:27:03.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:27:03.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:27:03.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:27:03.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:27:03.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:27:03.125 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:27:03.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:27:03.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:27:03.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:27:03.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.893449 -999.00  +13.60  18.19     41   +0.80 1 1 1 1 1     0    0 12.35 -19.26 ZNESW 23.6 18.2 169.8 30.0 13.9 -24.7 13.8 -24.3 13.6 -23.1 13.8 -24.0
2025-11-24T23:27:03.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:27:03.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:27:03.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.893449
2025-11-24T23:27:03.133 [DEBUG] [Thread-198848] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:27:03.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:27:03.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:27:03.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:27:03.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:27:03.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:27:03.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:26:32', tmtdew=14.59, humidity=36.7, cloud=0.0, wind=25.37, temperature=13.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:26:32', seeing=0.9, atlas_timestamp='2025-11-24T21:26:33.994', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:24:00')
2025-11-24T23:27:03.231 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:27:03.243 [DEBUG] [Thread-198851] [transport.py] [_log()] starting thread (client mode): 0xd0784bb0
2025-11-24T23:27:03.243 [DEBUG] [Thread-198851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:27:03.258 [DEBUG] [Thread-198851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:27:03.258 [INFO] [Thread-198851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:27:03.266 [DEBUG] [Thread-198851] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:27:03.266 [DEBUG] [Thread-198851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:27:03.266 [DEBUG] [Thread-198851] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:27:03.266 [DEBUG] [Thread-198851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:27:03.267 [DEBUG] [Thread-198851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:27:03.267 [DEBUG] [Thread-198851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:27:03.267 [DEBUG] [Thread-198851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:27:03.267 [DEBUG] [Thread-198851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:27:03.267 [DEBUG] [Thread-198851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:27:03.267 [DEBUG] [Thread-198851] [transport.py] [_log()] client lang: <none>
2025-11-24T23:27:03.267 [DEBUG] [Thread-198851] [transport.py] [_log()] server lang: <none>
2025-11-24T23:27:03.267 [DEBUG] [Thread-198851] [transport.py] [_log()] kex follows: False
2025-11-24T23:27:03.267 [DEBUG] [Thread-198851] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:27:03.267 [DEBUG] [Thread-198851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:27:03.268 [DEBUG] [Thread-198851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:27:03.268 [DEBUG] [Thread-198851] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:27:03.268 [DEBUG] [Thread-198851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:27:03.268 [DEBUG] [Thread-198851] [transport.py] [_log()] Compression: none
2025-11-24T23:27:03.268 [DEBUG] [Thread-198851] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:27:03.326 [DEBUG] [Thread-198851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:27:03.326 [DEBUG] [Thread-198851] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:27:03.327 [DEBUG] [Thread-198851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:27:03.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:27:03.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:27:03.388 [DEBUG] [Thread-198851] [transport.py] [_log()] userauth is OK
2025-11-24T23:27:03.389 [DEBUG] [Thread-198851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:27:03.389 [DEBUG] [Thread-198851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:27:03.389 [DEBUG] [Thread-198851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:27:03.389 [DEBUG] [Thread-198851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:27:03.410 [INFO] [Thread-198851] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:27:03.411 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:27:03.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:27:04.261 [DEBUG] [Thread-198851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:27:04.261 [DEBUG] [Thread-198851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:27:04.309 [DEBUG] [Thread-198851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:27:04.309 [DEBUG] [Thread-198851] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:27:04.317 [DEBUG] [Thread-198851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:27:04.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:27: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-11-24T23:27: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-11-24T23:27:04.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:27:04.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:27:04.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:27:04.362 [DEBUG] [Thread-198851] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:27:16.716 [DEBUG] [Thread-198853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:27:31.804 [DEBUG] [Thread-198854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:27:34.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:27:34.387 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:27:34.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:27:35.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 27, 4), 14.6, 36.67, 0.0, 24.86, 13.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:27:35.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:27:04
2025-11-24T23:27:35.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:27:35.538 [DEBUG] [Thread-198855] [transport.py] [_log()] starting thread (client mode): 0xd3153670
2025-11-24T23:27:35.539 [DEBUG] [Thread-198855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:27:35.555 [DEBUG] [Thread-198855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:27:35.555 [INFO] [Thread-198855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:27:35.559 [DEBUG] [Thread-198855] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:27:35.559 [DEBUG] [Thread-198855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:27:35.559 [DEBUG] [Thread-198855] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:27:35.559 [DEBUG] [Thread-198855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:27:35.559 [DEBUG] [Thread-198855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:27:35.559 [DEBUG] [Thread-198855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:27:35.559 [DEBUG] [Thread-198855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:27:35.559 [DEBUG] [Thread-198855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:27:35.559 [DEBUG] [Thread-198855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:27:35.560 [DEBUG] [Thread-198855] [transport.py] [_log()] client lang: <none>
2025-11-24T23:27:35.560 [DEBUG] [Thread-198855] [transport.py] [_log()] server lang: <none>
2025-11-24T23:27:35.560 [DEBUG] [Thread-198855] [transport.py] [_log()] kex follows: False
2025-11-24T23:27:35.560 [DEBUG] [Thread-198855] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:27:35.560 [DEBUG] [Thread-198855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:27:35.560 [DEBUG] [Thread-198855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:27:35.560 [DEBUG] [Thread-198855] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:27:35.561 [DEBUG] [Thread-198855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:27:35.561 [DEBUG] [Thread-198855] [transport.py] [_log()] Compression: none
2025-11-24T23:27:35.561 [DEBUG] [Thread-198855] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:27:35.590 [DEBUG] [Thread-198855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:27:35.593 [DEBUG] [Thread-198855] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:27:35.595 [DEBUG] [Thread-198855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:27:35.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:27:35.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:27:35.601 [DEBUG] [Thread-198855] [transport.py] [_log()] userauth is OK
2025-11-24T23:27:35.601 [DEBUG] [Thread-198855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:27:35.601 [DEBUG] [Thread-198855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:27:35.601 [DEBUG] [Thread-198855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:27:35.601 [DEBUG] [Thread-198855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:27:35.640 [INFO] [Thread-198855] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:27:35.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:27:36.280 [DEBUG] [Thread-198855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:27:36.280 [DEBUG] [Thread-198855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:27:36.281 [DEBUG] [Thread-198855] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:27:36.321 [DEBUG] [Thread-198855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:27:36.321 [DEBUG] [Thread-198855] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:27:36.324 [DEBUG] [Thread-198855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:27:36.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:27:36.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:27:36.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:27:36.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:27:36.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:27:36.345 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:27:36.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:27:36.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:27:36.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:27:36.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.893796 -999.00  +13.60  16.51     41   +0.80 1 1 1 1 1     0    0 12.11 -17.78 ZNESW 16.9 16.5 165.2 31.2 13.9 -24.6 13.8 -24.3 13.6 -23.1 13.8 -24.1
2025-11-24T23:27:36.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:27:36.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:27:36.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.893796
2025-11-24T23:27:36.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:27:36.353 [DEBUG] [Thread-198855] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:27:36.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:27:36.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:27:36.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:27:36.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:27:36.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:27:04', tmtdew=14.6, humidity=36.67, cloud=0.0, wind=24.86, temperature=13.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:27:05', seeing=0.9, atlas_timestamp='2025-11-24T21:27:03.974', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:24:00')
2025-11-24T23:27:36.432 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:27:36.445 [DEBUG] [Thread-198858] [transport.py] [_log()] starting thread (client mode): 0xd07cd7e0
2025-11-24T23:27:36.445 [DEBUG] [Thread-198858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:27:36.460 [DEBUG] [Thread-198858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:27:36.460 [INFO] [Thread-198858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:27:36.468 [DEBUG] [Thread-198858] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:27:36.469 [DEBUG] [Thread-198858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:27:36.469 [DEBUG] [Thread-198858] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:27:36.469 [DEBUG] [Thread-198858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:27:36.469 [DEBUG] [Thread-198858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:27:36.469 [DEBUG] [Thread-198858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:27:36.469 [DEBUG] [Thread-198858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:27:36.470 [DEBUG] [Thread-198858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:27:36.470 [DEBUG] [Thread-198858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:27:36.470 [DEBUG] [Thread-198858] [transport.py] [_log()] client lang: <none>
2025-11-24T23:27:36.470 [DEBUG] [Thread-198858] [transport.py] [_log()] server lang: <none>
2025-11-24T23:27:36.470 [DEBUG] [Thread-198858] [transport.py] [_log()] kex follows: False
2025-11-24T23:27:36.470 [DEBUG] [Thread-198858] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:27:36.470 [DEBUG] [Thread-198858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:27:36.471 [DEBUG] [Thread-198858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:27:36.471 [DEBUG] [Thread-198858] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:27:36.471 [DEBUG] [Thread-198858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:27:36.471 [DEBUG] [Thread-198858] [transport.py] [_log()] Compression: none
2025-11-24T23:27:36.471 [DEBUG] [Thread-198858] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:27:36.527 [DEBUG] [Thread-198858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:27:36.528 [DEBUG] [Thread-198858] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:27:36.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:27:36.529 [DEBUG] [Thread-198858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:27:36.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:27:36.585 [DEBUG] [Thread-198858] [transport.py] [_log()] userauth is OK
2025-11-24T23:27:36.586 [DEBUG] [Thread-198858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:27:36.586 [DEBUG] [Thread-198858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:27:36.586 [DEBUG] [Thread-198858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:27:36.586 [DEBUG] [Thread-198858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:27:36.606 [INFO] [Thread-198858] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:27:36.606 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:27:36.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:27:37.444 [DEBUG] [Thread-198858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:27:37.445 [DEBUG] [Thread-198858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:27:37.492 [DEBUG] [Thread-198858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:27:37.492 [DEBUG] [Thread-198858] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:27:37.500 [DEBUG] [Thread-198858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:27:37.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:27:37.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:27:37.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-11-24T23:27:37.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:27:37.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:27:37.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:27:37.541 [DEBUG] [Thread-198858] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:27:46.855 [DEBUG] [Thread-198860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:27:56.253 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:27:56.255 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:27:57.529 [DEBUG] [Thread-198861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:28:02.002 [DEBUG] [Thread-198862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:28:07.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:28:07.568 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:28:07.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:28:08.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 27, 37), 14.57, 36.75, 0.0, 24.08, 13.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:28:08.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:27:37
2025-11-24T23:28:08.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:28:08.741 [DEBUG] [Thread-198863] [transport.py] [_log()] starting thread (client mode): 0xd31f4220
2025-11-24T23:28:08.742 [DEBUG] [Thread-198863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:28:08.753 [DEBUG] [Thread-198863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:28:08.753 [INFO] [Thread-198863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:28:08.758 [DEBUG] [Thread-198863] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:28:08.758 [DEBUG] [Thread-198863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:28:08.758 [DEBUG] [Thread-198863] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:28:08.758 [DEBUG] [Thread-198863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:28:08.758 [DEBUG] [Thread-198863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:28:08.758 [DEBUG] [Thread-198863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:28:08.758 [DEBUG] [Thread-198863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:28:08.759 [DEBUG] [Thread-198863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:28:08.759 [DEBUG] [Thread-198863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:28:08.759 [DEBUG] [Thread-198863] [transport.py] [_log()] client lang: <none>
2025-11-24T23:28:08.759 [DEBUG] [Thread-198863] [transport.py] [_log()] server lang: <none>
2025-11-24T23:28:08.759 [DEBUG] [Thread-198863] [transport.py] [_log()] kex follows: False
2025-11-24T23:28:08.759 [DEBUG] [Thread-198863] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:28:08.760 [DEBUG] [Thread-198863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:28:08.760 [DEBUG] [Thread-198863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:28:08.760 [DEBUG] [Thread-198863] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:28:08.760 [DEBUG] [Thread-198863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:28:08.760 [DEBUG] [Thread-198863] [transport.py] [_log()] Compression: none
2025-11-24T23:28:08.760 [DEBUG] [Thread-198863] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:28:08.798 [DEBUG] [Thread-198863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:28:08.804 [DEBUG] [Thread-198863] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:28:08.807 [DEBUG] [Thread-198863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:28:08.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:28:08.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:28:08.812 [DEBUG] [Thread-198863] [transport.py] [_log()] userauth is OK
2025-11-24T23:28:08.813 [DEBUG] [Thread-198863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:28:08.813 [DEBUG] [Thread-198863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:28:08.813 [DEBUG] [Thread-198863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:28:08.813 [DEBUG] [Thread-198863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:28:08.840 [INFO] [Thread-198863] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:28:08.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:28:09.479 [DEBUG] [Thread-198863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:28:09.479 [DEBUG] [Thread-198863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:28:09.481 [DEBUG] [Thread-198863] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:28:09.519 [DEBUG] [Thread-198863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:28:09.519 [DEBUG] [Thread-198863] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:28:09.522 [DEBUG] [Thread-198863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:28:09.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:28:09.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:28:09.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:28:09.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:28:09.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:28:09.547 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:28:09.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:28:09.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:28:09.549 [DEBUG] [Thread-198863] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:28:09.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:28:09.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.894143 -999.00  +13.60  20.42     41   +0.80 1 1 1 1 1     0    0 12.31 -16.24 ZNESW 20.2 20.4 165.0 27.1 13.9 -24.7 13.8 -24.2 13.6 -23.3 13.8 -23.9
2025-11-24T23:28:09.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:28:09.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:28:09.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.894143
2025-11-24T23:28:09.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:28:09.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:28:09.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:28:09.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:28:09.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:28:09.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:27:37', tmtdew=14.57, humidity=36.75, cloud=0.0, wind=24.08, temperature=13.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:27:38', seeing=1.0, atlas_timestamp='2025-11-24T21:27:33.955', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:24:00')
2025-11-24T23:28:09.658 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:28:09.670 [DEBUG] [Thread-198866] [transport.py] [_log()] starting thread (client mode): 0xd07397b0
2025-11-24T23:28:09.670 [DEBUG] [Thread-198866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:28:09.685 [DEBUG] [Thread-198866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:28:09.685 [INFO] [Thread-198866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:28:09.694 [DEBUG] [Thread-198866] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] client lang: <none>
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] server lang: <none>
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] kex follows: False
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:28:09.695 [DEBUG] [Thread-198866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:28:09.696 [DEBUG] [Thread-198866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:28:09.696 [DEBUG] [Thread-198866] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:28:09.696 [DEBUG] [Thread-198866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:28:09.696 [DEBUG] [Thread-198866] [transport.py] [_log()] Compression: none
2025-11-24T23:28:09.696 [DEBUG] [Thread-198866] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:28:09.754 [DEBUG] [Thread-198866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:28:09.755 [DEBUG] [Thread-198866] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:28:09.755 [DEBUG] [Thread-198866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:28:09.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:28:09.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:28:09.813 [DEBUG] [Thread-198866] [transport.py] [_log()] userauth is OK
2025-11-24T23:28:09.813 [DEBUG] [Thread-198866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:28:09.822 [DEBUG] [Thread-198866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:28:09.822 [DEBUG] [Thread-198866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:28:09.822 [DEBUG] [Thread-198866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:28:09.847 [INFO] [Thread-198866] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:28:09.847 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:28:09.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:28:10.662 [DEBUG] [Thread-198866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:28:10.663 [DEBUG] [Thread-198866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:28:10.710 [DEBUG] [Thread-198866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:28:10.710 [DEBUG] [Thread-198866] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:28:10.718 [DEBUG] [Thread-198866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:28:10.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:28:10.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-11-24T23:28:10.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-11-24T23:28:10.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:28:10.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:28:10.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:28:10.751 [DEBUG] [Thread-198866] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:28:17.058 [DEBUG] [Thread-198868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:28:32.176 [DEBUG] [Thread-198869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:28:40.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:28:40.775 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:28:40.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-11-24T23:28:41.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 28, 10), 14.6, 36.65, 0.0, 24.08, 13.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:28:41.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:28:10
2025-11-24T23:28:41.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:28:42.022 [DEBUG] [Thread-198870] [transport.py] [_log()] starting thread (client mode): 0xd0739330
2025-11-24T23:28:42.023 [DEBUG] [Thread-198870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:28:42.036 [DEBUG] [Thread-198870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:28:42.037 [INFO] [Thread-198870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] client lang: <none>
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] server lang: <none>
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] kex follows: False
2025-11-24T23:28:42.042 [DEBUG] [Thread-198870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:28:42.043 [DEBUG] [Thread-198870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:28:42.043 [DEBUG] [Thread-198870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:28:42.043 [DEBUG] [Thread-198870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:28:42.043 [DEBUG] [Thread-198870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:28:42.043 [DEBUG] [Thread-198870] [transport.py] [_log()] Compression: none
2025-11-24T23:28:42.043 [DEBUG] [Thread-198870] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:28:42.069 [DEBUG] [Thread-198870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:28:42.073 [DEBUG] [Thread-198870] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:28:42.074 [DEBUG] [Thread-198870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:28:42.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:28:42.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:28:42.078 [DEBUG] [Thread-198870] [transport.py] [_log()] userauth is OK
2025-11-24T23:28:42.078 [DEBUG] [Thread-198870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:28:42.078 [DEBUG] [Thread-198870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:28:42.078 [DEBUG] [Thread-198870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:28:42.078 [DEBUG] [Thread-198870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:28:42.112 [INFO] [Thread-198870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:28:42.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:28:42.758 [DEBUG] [Thread-198870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:28:42.758 [DEBUG] [Thread-198870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:28:42.759 [DEBUG] [Thread-198870] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:28:42.799 [DEBUG] [Thread-198870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:28:42.799 [DEBUG] [Thread-198870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:28:42.802 [DEBUG] [Thread-198870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:28:42.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:28:42.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:28:42.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:28:42.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:28:42.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:28:42.824 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:28:42.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:28:42.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:28:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:28:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.894490 -999.00  +13.60  22.41     41   +0.80 1 1 1 1 1     0    0 12.23 -15.71 ZNESW 21.9 22.4 173.8 25.7 13.9 -24.7 13.8 -24.2 13.6 -23.1 13.8 -23.9
2025-11-24T23:28:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:28:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:28:42.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.894490
2025-11-24T23:28:42.830 [DEBUG] [Thread-198870] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:28:42.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:28:42.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:28:42.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:28:42.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:28:42.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:28:42.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:28:10', tmtdew=14.6, humidity=36.65, cloud=0.0, wind=24.08, temperature=13.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:28:10', seeing=1.02, atlas_timestamp='2025-11-24T21:28:03.936', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:24:00')
2025-11-24T23:28:42.915 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:28:42.926 [DEBUG] [Thread-198873] [transport.py] [_log()] starting thread (client mode): 0xd0739570
2025-11-24T23:28:42.926 [DEBUG] [Thread-198873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:28:42.941 [DEBUG] [Thread-198873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:28:42.941 [INFO] [Thread-198873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:28:42.948 [DEBUG] [Thread-198873] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:28:42.948 [DEBUG] [Thread-198873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:28:42.948 [DEBUG] [Thread-198873] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:28:42.948 [DEBUG] [Thread-198873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:28:42.948 [DEBUG] [Thread-198873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:28:42.948 [DEBUG] [Thread-198873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] client lang: <none>
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] server lang: <none>
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] kex follows: False
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] Compression: none
2025-11-24T23:28:42.949 [DEBUG] [Thread-198873] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:28:43.004 [DEBUG] [Thread-198873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:28:43.004 [DEBUG] [Thread-198873] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:28:43.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:28:43.004 [DEBUG] [Thread-198873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:28:43.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:28:43.061 [DEBUG] [Thread-198873] [transport.py] [_log()] userauth is OK
2025-11-24T23:28:43.061 [DEBUG] [Thread-198873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:28:43.061 [DEBUG] [Thread-198873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:28:43.061 [DEBUG] [Thread-198873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:28:43.061 [DEBUG] [Thread-198873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:28:43.079 [INFO] [Thread-198873] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:28:43.079 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:28:43.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:28:43.911 [DEBUG] [Thread-198873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:28:43.911 [DEBUG] [Thread-198873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:28:43.959 [DEBUG] [Thread-198873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:28:43.959 [DEBUG] [Thread-198873] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:28:43.968 [DEBUG] [Thread-198873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:28:43.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:28:43.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-11-24T23:28:43.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-11-24T23:28:43.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:28:43.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:28:43.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:28:44.003 [DEBUG] [Thread-198873] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:28:47.214 [DEBUG] [Thread-198875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:28:56.459 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:28:56.462 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:28:57.889 [DEBUG] [Thread-198876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:29:02.265 [DEBUG] [Thread-198877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:29:14.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:29:14.033 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:29:14.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-11-24T23:29:15.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 28, 43), 14.56, 36.77, 0.0, 26.01, 13.69, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:29:15.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:28:43
2025-11-24T23:29:15.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:29:15.665 [DEBUG] [Thread-198878] [transport.py] [_log()] starting thread (client mode): 0xd07cf580
2025-11-24T23:29:15.666 [DEBUG] [Thread-198878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:29:15.668 [DEBUG] [Thread-198878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:29:15.669 [INFO] [Thread-198878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:29:15.673 [DEBUG] [Thread-198878] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:29:15.673 [DEBUG] [Thread-198878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:29:15.673 [DEBUG] [Thread-198878] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:29:15.673 [DEBUG] [Thread-198878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:29:15.673 [DEBUG] [Thread-198878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:29:15.673 [DEBUG] [Thread-198878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:29:15.673 [DEBUG] [Thread-198878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:29:15.674 [DEBUG] [Thread-198878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:29:15.674 [DEBUG] [Thread-198878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:29:15.674 [DEBUG] [Thread-198878] [transport.py] [_log()] client lang: <none>
2025-11-24T23:29:15.674 [DEBUG] [Thread-198878] [transport.py] [_log()] server lang: <none>
2025-11-24T23:29:15.674 [DEBUG] [Thread-198878] [transport.py] [_log()] kex follows: False
2025-11-24T23:29:15.674 [DEBUG] [Thread-198878] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:29:15.674 [DEBUG] [Thread-198878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:29:15.675 [DEBUG] [Thread-198878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:29:15.675 [DEBUG] [Thread-198878] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:29:15.675 [DEBUG] [Thread-198878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:29:15.675 [DEBUG] [Thread-198878] [transport.py] [_log()] Compression: none
2025-11-24T23:29:15.675 [DEBUG] [Thread-198878] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:29:15.704 [DEBUG] [Thread-198878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:29:15.709 [DEBUG] [Thread-198878] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:29:15.711 [DEBUG] [Thread-198878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:29:15.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:29:15.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:29:15.716 [DEBUG] [Thread-198878] [transport.py] [_log()] userauth is OK
2025-11-24T23:29:15.717 [DEBUG] [Thread-198878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:29:15.717 [DEBUG] [Thread-198878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:29:15.717 [DEBUG] [Thread-198878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:29:15.717 [DEBUG] [Thread-198878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:29:15.755 [INFO] [Thread-198878] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:29:15.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:29:16.421 [DEBUG] [Thread-198878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:29:16.421 [DEBUG] [Thread-198878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:29:16.423 [DEBUG] [Thread-198878] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:29:16.461 [DEBUG] [Thread-198878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:29:16.461 [DEBUG] [Thread-198878] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:29:16.465 [DEBUG] [Thread-198878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:29:16.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:29:16.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:29:16.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:29:16.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:29:16.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:29:16.489 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:29:16.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:29:16.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:29:16.492 [DEBUG] [Thread-198878] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:29:16.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:29:16.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.895185 -999.00  +13.60  17.25     41   +0.70 1 1 1 1 1     0    0 12.31 -11.72 ZNESW 16.7 17.2 166.4 30.0 13.9 -24.8 13.8 -24.3 13.6 -23.0 13.8 -24.0
2025-11-24T23:29:16.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:29:16.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:29:16.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.895185
2025-11-24T23:29:16.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:29:16.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:29:16.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:29:16.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:29:16.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:29:16.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:28:43', tmtdew=14.56, humidity=36.77, cloud=0.0, wind=26.01, temperature=13.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:28:43', seeing=0.96, atlas_timestamp='2025-11-24T21:29:03.984', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:27:00')
2025-11-24T23:29:16.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:29:16.617 [DEBUG] [Thread-198881] [transport.py] [_log()] starting thread (client mode): 0xd0784970
2025-11-24T23:29:16.618 [DEBUG] [Thread-198881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:29:16.633 [DEBUG] [Thread-198881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:29:16.633 [INFO] [Thread-198881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:29:16.640 [DEBUG] [Thread-198881] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:29:16.640 [DEBUG] [Thread-198881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] client lang: <none>
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] server lang: <none>
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] kex follows: False
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] Compression: none
2025-11-24T23:29:16.641 [DEBUG] [Thread-198881] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:29:16.696 [DEBUG] [Thread-198881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:29:16.697 [DEBUG] [Thread-198881] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:29:16.697 [DEBUG] [Thread-198881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:29:16.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:29:16.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:29:16.753 [DEBUG] [Thread-198881] [transport.py] [_log()] userauth is OK
2025-11-24T23:29:16.753 [DEBUG] [Thread-198881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:29:16.753 [DEBUG] [Thread-198881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:29:16.753 [DEBUG] [Thread-198881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:29:16.753 [DEBUG] [Thread-198881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:29:16.767 [INFO] [Thread-198881] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:29:16.767 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:29:16.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:29:17.318 [DEBUG] [Thread-198883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:29:17.630 [DEBUG] [Thread-198881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:29:17.630 [DEBUG] [Thread-198881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:29:17.678 [DEBUG] [Thread-198881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:29:17.678 [DEBUG] [Thread-198881] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:29:17.686 [DEBUG] [Thread-198881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:29:17.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:29:17.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-11-24T23:29:17.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-11-24T23:29:17.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:29:17.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:29:17.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:29:17.719 [DEBUG] [Thread-198881] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:29:32.491 [DEBUG] [Thread-198884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:29:42.237 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:29:47.595 [DEBUG] [Thread-198885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:29:47.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:29:47.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:29:47.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-11-24T23:29:49.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 29, 16), 14.52, 36.88, 0.0, 26.18, 13.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:29:49.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:29:16
2025-11-24T23:29:49.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:29:49.460 [DEBUG] [Thread-198886] [transport.py] [_log()] starting thread (client mode): 0xd317ee60
2025-11-24T23:29:49.461 [DEBUG] [Thread-198886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:29:49.467 [DEBUG] [Thread-198886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:29:49.467 [INFO] [Thread-198886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:29:49.471 [DEBUG] [Thread-198886] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] client lang: <none>
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] server lang: <none>
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] kex follows: False
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:29:49.472 [DEBUG] [Thread-198886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:29:49.473 [DEBUG] [Thread-198886] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:29:49.473 [DEBUG] [Thread-198886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:29:49.473 [DEBUG] [Thread-198886] [transport.py] [_log()] Compression: none
2025-11-24T23:29:49.473 [DEBUG] [Thread-198886] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:29:49.504 [DEBUG] [Thread-198886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:29:49.507 [DEBUG] [Thread-198886] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:29:49.508 [DEBUG] [Thread-198886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:29:49.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:29:49.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:29:49.512 [DEBUG] [Thread-198886] [transport.py] [_log()] userauth is OK
2025-11-24T23:29:49.512 [DEBUG] [Thread-198886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:29:49.512 [DEBUG] [Thread-198886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:29:49.512 [DEBUG] [Thread-198886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:29:49.512 [DEBUG] [Thread-198886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:29:49.529 [INFO] [Thread-198886] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:29:49.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:29:50.122 [DEBUG] [Thread-198886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:29:50.122 [DEBUG] [Thread-198886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:29:50.122 [DEBUG] [Thread-198886] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:29:50.163 [DEBUG] [Thread-198886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:29:50.163 [DEBUG] [Thread-198886] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:29:50.166 [DEBUG] [Thread-198886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:29:50.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:29:50.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:29:50.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:29:50.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:29:50.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:29:50.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:29:50.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:29:50.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:29:50.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:29:50.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.895532 -999.00  +13.50  19.67     41   +0.70 1 1 1 1 1     0    0 12.57 -11.18 ZNESW 18.8 19.7 158.4 23.7 13.9 -24.7 13.8 -24.2 13.5 -23.1 13.8 -23.9
2025-11-24T23:29:50.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:29:50.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:29:50.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.895532
2025-11-24T23:29:50.197 [DEBUG] [Thread-198886] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:29:50.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:29:50.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:29:50.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:29:50.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:29:50.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:29:50.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:29:16', tmtdew=14.52, humidity=36.88, cloud=0.0, wind=26.18, temperature=13.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:29:16', seeing=0.92, atlas_timestamp='2025-11-24T21:29:33.965', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:27:00')
2025-11-24T23:29:50.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:29:50.299 [DEBUG] [Thread-198889] [transport.py] [_log()] starting thread (client mode): 0xd07cec80
2025-11-24T23:29:50.299 [DEBUG] [Thread-198889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:29:50.314 [DEBUG] [Thread-198889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:29:50.314 [INFO] [Thread-198889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] client lang: <none>
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] server lang: <none>
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] kex follows: False
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:29:50.322 [DEBUG] [Thread-198889] [transport.py] [_log()] Compression: none
2025-11-24T23:29:50.323 [DEBUG] [Thread-198889] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:29:50.381 [DEBUG] [Thread-198889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:29:50.382 [DEBUG] [Thread-198889] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:29:50.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:29:50.382 [DEBUG] [Thread-198889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:29:50.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:29:50.437 [DEBUG] [Thread-198889] [transport.py] [_log()] userauth is OK
2025-11-24T23:29:50.437 [DEBUG] [Thread-198889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:29:50.438 [DEBUG] [Thread-198889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:29:50.438 [DEBUG] [Thread-198889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:29:50.438 [DEBUG] [Thread-198889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:29:50.452 [INFO] [Thread-198889] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:29:50.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:29:50.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:29:51.318 [DEBUG] [Thread-198889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:29:51.318 [DEBUG] [Thread-198889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:29:51.367 [DEBUG] [Thread-198889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:29:51.367 [DEBUG] [Thread-198889] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:29:51.375 [DEBUG] [Thread-198889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:29:51.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:29:51.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-11-24T23:29:51.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-11-24T23:29:51.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:29:51.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:29:51.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:29:51.407 [DEBUG] [Thread-198889] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:29:56.669 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:29:56.672 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:29:58.200 [DEBUG] [Thread-198891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:30:02.712 [DEBUG] [Thread-198892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:30:17.894 [DEBUG] [Thread-198893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:30:21.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:30:21.449 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:30:21.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-11-24T23:30:23.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 29, 49), 14.56, 36.75, 0.0, 29.61, 13.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:30:23.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:29:49
2025-11-24T23:30:23.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:30:23.524 [DEBUG] [Thread-198894] [transport.py] [_log()] starting thread (client mode): 0xd073bc10
2025-11-24T23:30:23.525 [DEBUG] [Thread-198894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:30:23.525 [DEBUG] [Thread-198894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:30:23.525 [INFO] [Thread-198894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] client lang: <none>
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] server lang: <none>
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] kex follows: False
2025-11-24T23:30:23.530 [DEBUG] [Thread-198894] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:30:23.531 [DEBUG] [Thread-198894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:30:23.531 [DEBUG] [Thread-198894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:30:23.531 [DEBUG] [Thread-198894] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:30:23.531 [DEBUG] [Thread-198894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:30:23.531 [DEBUG] [Thread-198894] [transport.py] [_log()] Compression: none
2025-11-24T23:30:23.531 [DEBUG] [Thread-198894] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:30:23.554 [DEBUG] [Thread-198894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:30:23.557 [DEBUG] [Thread-198894] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:30:23.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:30:23.562 [DEBUG] [Thread-198894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:30:23.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:30:23.564 [DEBUG] [Thread-198894] [transport.py] [_log()] userauth is OK
2025-11-24T23:30:23.564 [DEBUG] [Thread-198894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:30:23.564 [DEBUG] [Thread-198894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:30:23.564 [DEBUG] [Thread-198894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:30:23.564 [DEBUG] [Thread-198894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:30:23.582 [INFO] [Thread-198894] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:30:23.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:30:24.180 [DEBUG] [Thread-198894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:30:24.180 [DEBUG] [Thread-198894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:30:24.181 [DEBUG] [Thread-198894] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:30:24.221 [DEBUG] [Thread-198894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:30:24.221 [DEBUG] [Thread-198894] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:30:24.223 [DEBUG] [Thread-198894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:30:24.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:30:24.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:30:24.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:30:24.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:30:24.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:30:24.243 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:30:24.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:30:24.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:30:24.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:30:24.245 [DEBUG] [Thread-198894] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:30:24.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.895879 -999.00  +13.50  15.09     41   +0.60 1 1 1 1 1     0    0 12.32 -9.63 ZNESW 14.3 15.1 165.8 23.4 13.9 -24.7 13.8 -24.2 13.5 -23.0 13.8 -24.0
2025-11-24T23:30:24.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:30:24.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:30:24.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.895879
2025-11-24T23:30:24.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:30:24.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:30:24.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:30:24.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:30:24.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:30:24.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:29:49', tmtdew=14.56, humidity=36.75, cloud=0.0, wind=29.61, temperature=13.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:29:49', seeing=1.0, atlas_timestamp='2025-11-24T21:30:03.946', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:27:00')
2025-11-24T23:30:24.336 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:30:24.348 [DEBUG] [Thread-198897] [transport.py] [_log()] starting thread (client mode): 0xd0739570
2025-11-24T23:30:24.348 [DEBUG] [Thread-198897] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:30:24.363 [DEBUG] [Thread-198897] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:30:24.363 [INFO] [Thread-198897] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] client lang: <none>
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] server lang: <none>
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] kex follows: False
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] Compression: none
2025-11-24T23:30:24.371 [DEBUG] [Thread-198897] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:30:24.429 [DEBUG] [Thread-198897] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:30:24.429 [DEBUG] [Thread-198897] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:30:24.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:30:24.429 [DEBUG] [Thread-198897] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:30:24.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:30:24.485 [DEBUG] [Thread-198897] [transport.py] [_log()] userauth is OK
2025-11-24T23:30:24.485 [DEBUG] [Thread-198897] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:30:24.485 [DEBUG] [Thread-198897] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:30:24.485 [DEBUG] [Thread-198897] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:30:24.485 [DEBUG] [Thread-198897] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:30:24.504 [INFO] [Thread-198897] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:30:24.504 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:30:24.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:30:25.393 [DEBUG] [Thread-198897] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:30:25.393 [DEBUG] [Thread-198897] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:30:25.441 [DEBUG] [Thread-198897] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:30:25.441 [DEBUG] [Thread-198897] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:30:25.449 [DEBUG] [Thread-198897] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:30:25.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:30:25.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-11-24T23:30:25.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-11-24T23:30:25.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:30:25.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:30:25.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:30:25.483 [DEBUG] [Thread-198897] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:30:33.045 [DEBUG] [Thread-198899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:30:48.210 [DEBUG] [Thread-198900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:30:55.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:30:55.505 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:30:55.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:30:56.877 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:30:56.881 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:30:57.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 30, 22), 14.52, 36.88, 0.0, 27.81, 13.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:30:57.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:30:22
2025-11-24T23:30:57.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:30:57.373 [DEBUG] [Thread-198901] [transport.py] [_log()] starting thread (client mode): 0xd317d210
2025-11-24T23:30:57.374 [DEBUG] [Thread-198901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:30:57.387 [DEBUG] [Thread-198901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:30:57.387 [INFO] [Thread-198901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] client lang: <none>
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] server lang: <none>
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] kex follows: False
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:30:57.391 [DEBUG] [Thread-198901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:30:57.392 [DEBUG] [Thread-198901] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:30:57.392 [DEBUG] [Thread-198901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:30:57.392 [DEBUG] [Thread-198901] [transport.py] [_log()] Compression: none
2025-11-24T23:30:57.392 [DEBUG] [Thread-198901] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:30:57.415 [DEBUG] [Thread-198901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:30:57.419 [DEBUG] [Thread-198901] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:30:57.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:30:57.421 [DEBUG] [Thread-198901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:30:57.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:30:57.423 [DEBUG] [Thread-198901] [transport.py] [_log()] userauth is OK
2025-11-24T23:30:57.423 [DEBUG] [Thread-198901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:30:57.424 [DEBUG] [Thread-198901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:30:57.424 [DEBUG] [Thread-198901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:30:57.424 [DEBUG] [Thread-198901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:30:57.441 [INFO] [Thread-198901] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:30:57.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:30:58.020 [DEBUG] [Thread-198901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:30:58.020 [DEBUG] [Thread-198901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:30:58.020 [DEBUG] [Thread-198901] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:30:58.062 [DEBUG] [Thread-198901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:30:58.062 [DEBUG] [Thread-198901] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:30:58.064 [DEBUG] [Thread-198901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:30:58.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:30:58.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:30:58.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:30:58.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:30:58.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:30:58.083 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:30:58.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:30:58.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:30:58.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:30:58.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.896226 -999.00  +13.50  18.94     41   +0.70 1 1 1 1 1     0    0 12.45 -8.18 ZNESW 18.3 18.9 160.4 25.1 13.9 -24.6 13.7 -24.1 13.5 -23.2 13.8 -24.0
2025-11-24T23:30:58.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:30:58.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:30:58.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.896226
2025-11-24T23:30:58.090 [DEBUG] [Thread-198901] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:30:58.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:30:58.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:30:58.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:30:58.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:30:58.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:30:58.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:30:22', tmtdew=14.52, humidity=36.88, cloud=0.0, wind=27.81, temperature=13.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:30:22', seeing=0.9, atlas_timestamp='2025-11-24T21:30:33.926', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:27:00')
2025-11-24T23:30:58.187 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:30:58.198 [DEBUG] [Thread-198904] [transport.py] [_log()] starting thread (client mode): 0xd3148490
2025-11-24T23:30:58.198 [DEBUG] [Thread-198904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:30:58.216 [DEBUG] [Thread-198904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:30:58.216 [INFO] [Thread-198904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:30:58.223 [DEBUG] [Thread-198904] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:30:58.223 [DEBUG] [Thread-198904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] client lang: <none>
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] server lang: <none>
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] kex follows: False
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] Compression: none
2025-11-24T23:30:58.224 [DEBUG] [Thread-198904] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:30:58.280 [DEBUG] [Thread-198904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:30:58.280 [DEBUG] [Thread-198904] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:30:58.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:30:58.281 [DEBUG] [Thread-198904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:30:58.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:30:58.338 [DEBUG] [Thread-198904] [transport.py] [_log()] userauth is OK
2025-11-24T23:30:58.338 [DEBUG] [Thread-198904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:30:58.338 [DEBUG] [Thread-198904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:30:58.338 [DEBUG] [Thread-198904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:30:58.338 [DEBUG] [Thread-198904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:30:58.352 [INFO] [Thread-198904] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:30:58.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:30:58.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:30:58.498 [DEBUG] [Thread-198906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:30:59.204 [DEBUG] [Thread-198904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:30:59.205 [DEBUG] [Thread-198904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:30:59.252 [DEBUG] [Thread-198904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:30:59.252 [DEBUG] [Thread-198904] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:30:59.260 [DEBUG] [Thread-198904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:30:59.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:30:59.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:30:59.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:30:59.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:30:59.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:30:59.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:30:59.295 [DEBUG] [Thread-198904] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:31:03.285 [DEBUG] [Thread-198907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:31:18.441 [DEBUG] [Thread-198908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:31:29.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:31:29.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:31:29.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-11-24T23:31:30.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 30, 55), 14.6, 36.18, 0.0, 24.63, 13.67, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:31:30.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:30:55
2025-11-24T23:31:30.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:31:30.982 [DEBUG] [Thread-198909] [transport.py] [_log()] starting thread (client mode): 0xd31925c0
2025-11-24T23:31:30.984 [DEBUG] [Thread-198909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:31:30.984 [DEBUG] [Thread-198909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:31:30.985 [INFO] [Thread-198909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] client lang: <none>
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] server lang: <none>
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] kex follows: False
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:31:30.991 [DEBUG] [Thread-198909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:31:30.992 [DEBUG] [Thread-198909] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:31:30.992 [DEBUG] [Thread-198909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:31:30.992 [DEBUG] [Thread-198909] [transport.py] [_log()] Compression: none
2025-11-24T23:31:30.992 [DEBUG] [Thread-198909] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:31:31.026 [DEBUG] [Thread-198909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:31:31.029 [DEBUG] [Thread-198909] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:31:31.030 [DEBUG] [Thread-198909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:31:31.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:31:31.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:31:31.034 [DEBUG] [Thread-198909] [transport.py] [_log()] userauth is OK
2025-11-24T23:31:31.034 [DEBUG] [Thread-198909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:31:31.034 [DEBUG] [Thread-198909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:31:31.034 [DEBUG] [Thread-198909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:31:31.034 [DEBUG] [Thread-198909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:31:31.051 [INFO] [Thread-198909] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:31:31.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:31:31.614 [DEBUG] [Thread-198909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:31:31.614 [DEBUG] [Thread-198909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:31:31.615 [DEBUG] [Thread-198909] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:31:31.655 [DEBUG] [Thread-198909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:31:31.655 [DEBUG] [Thread-198909] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:31:31.657 [DEBUG] [Thread-198909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:31:31.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:31:31.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:31:31.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:31:31.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:31:31.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:31:31.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:31:31.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:31:31.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:31:31.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:31:31.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.896573 -999.00  +13.50  19.84     41   +0.70 1 1 1 1 1     0    0 12.61 -6.90 ZNESW 13.6 19.8 167.4 24.3 13.9 -24.6 13.8 -24.2 13.5 -23.0 13.8 -24.0
2025-11-24T23:31:31.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:31:31.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:31:31.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.896573
2025-11-24T23:31:31.685 [DEBUG] [Thread-198909] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:31:31.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:31:31.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:31:31.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:31:31.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:31:31.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:31:31.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:30:55', tmtdew=14.6, humidity=36.18, cloud=0.0, wind=24.63, temperature=13.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:31:29', seeing=0.8, atlas_timestamp='2025-11-24T21:31:03.907', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:27:00')
2025-11-24T23:31:31.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:31:31.793 [DEBUG] [Thread-198912] [transport.py] [_log()] starting thread (client mode): 0xc9b82cb0
2025-11-24T23:31:31.793 [DEBUG] [Thread-198912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:31:31.807 [DEBUG] [Thread-198912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:31:31.807 [INFO] [Thread-198912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] client lang: <none>
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] server lang: <none>
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] kex follows: False
2025-11-24T23:31:31.814 [DEBUG] [Thread-198912] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:31:31.815 [DEBUG] [Thread-198912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:31:31.815 [DEBUG] [Thread-198912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:31:31.815 [DEBUG] [Thread-198912] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:31:31.815 [DEBUG] [Thread-198912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:31:31.815 [DEBUG] [Thread-198912] [transport.py] [_log()] Compression: none
2025-11-24T23:31:31.815 [DEBUG] [Thread-198912] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:31:31.877 [DEBUG] [Thread-198912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:31:31.877 [DEBUG] [Thread-198912] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:31:31.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:31:31.878 [DEBUG] [Thread-198912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:31:31.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:31:31.933 [DEBUG] [Thread-198912] [transport.py] [_log()] userauth is OK
2025-11-24T23:31:31.933 [DEBUG] [Thread-198912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:31:31.933 [DEBUG] [Thread-198912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:31:31.933 [DEBUG] [Thread-198912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:31:31.933 [DEBUG] [Thread-198912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:31:31.947 [INFO] [Thread-198912] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:31:31.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:31:31.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:31:32.848 [DEBUG] [Thread-198912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:31:32.849 [DEBUG] [Thread-198912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:31:32.896 [DEBUG] [Thread-198912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:31:32.896 [DEBUG] [Thread-198912] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:31:32.904 [DEBUG] [Thread-198912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:31:32.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:31:32.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-11-24T23:31:32.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-11-24T23:31:32.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:31:32.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:31:32.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:31:32.937 [DEBUG] [Thread-198912] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:31:33.536 [DEBUG] [Thread-198914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:31:48.744 [DEBUG] [Thread-198915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:31:57.100 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:31:57.147 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:31:58.938 [DEBUG] [Thread-198916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:32:02.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:32:02.969 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:32:02.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:32:03.962 [DEBUG] [Thread-198917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:32:04.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 31, 28), 14.67, 35.98, 0.0, 24.47, 13.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:32:04.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:31:28
2025-11-24T23:32:05.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:32:05.305 [DEBUG] [Thread-198918] [transport.py] [_log()] starting thread (client mode): 0xd3149c00
2025-11-24T23:32:05.306 [DEBUG] [Thread-198918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:32:05.321 [DEBUG] [Thread-198918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:32:05.322 [INFO] [Thread-198918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:32:05.325 [DEBUG] [Thread-198918] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:32:05.325 [DEBUG] [Thread-198918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:32:05.325 [DEBUG] [Thread-198918] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:32:05.325 [DEBUG] [Thread-198918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:32:05.325 [DEBUG] [Thread-198918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:32:05.325 [DEBUG] [Thread-198918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:32:05.325 [DEBUG] [Thread-198918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:32:05.325 [DEBUG] [Thread-198918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:32:05.325 [DEBUG] [Thread-198918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:32:05.325 [DEBUG] [Thread-198918] [transport.py] [_log()] client lang: <none>
2025-11-24T23:32:05.326 [DEBUG] [Thread-198918] [transport.py] [_log()] server lang: <none>
2025-11-24T23:32:05.326 [DEBUG] [Thread-198918] [transport.py] [_log()] kex follows: False
2025-11-24T23:32:05.326 [DEBUG] [Thread-198918] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:32:05.326 [DEBUG] [Thread-198918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:32:05.326 [DEBUG] [Thread-198918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:32:05.326 [DEBUG] [Thread-198918] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:32:05.326 [DEBUG] [Thread-198918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:32:05.326 [DEBUG] [Thread-198918] [transport.py] [_log()] Compression: none
2025-11-24T23:32:05.326 [DEBUG] [Thread-198918] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:32:05.361 [DEBUG] [Thread-198918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:32:05.365 [DEBUG] [Thread-198918] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:32:05.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:32:05.367 [DEBUG] [Thread-198918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:32:05.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:32:05.369 [DEBUG] [Thread-198918] [transport.py] [_log()] userauth is OK
2025-11-24T23:32:05.369 [DEBUG] [Thread-198918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:32:05.369 [DEBUG] [Thread-198918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:32:05.369 [DEBUG] [Thread-198918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:32:05.369 [DEBUG] [Thread-198918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:32:05.387 [INFO] [Thread-198918] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:32:05.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:32:05.959 [DEBUG] [Thread-198918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:32:05.959 [DEBUG] [Thread-198918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:32:05.959 [DEBUG] [Thread-198918] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:32:05.999 [DEBUG] [Thread-198918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:32:05.999 [DEBUG] [Thread-198918] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:32:06.008 [DEBUG] [Thread-198918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:32:06.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:32:06.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:32:06.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:32:06.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:32:06.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:32:06.024 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:32:06.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:32:06.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:32:06.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:32:06.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.896921 -999.00  +13.50  20.06     41   +0.80 1 1 1 1 1     0    0 12.57 -6.32 ZNESW 16.5 20.1 163.0 24.6 13.8 -24.6 13.7 -24.1 13.5 -22.9 13.8 -23.8
2025-11-24T23:32:06.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:32:06.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:32:06.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.896921
2025-11-24T23:32:06.033 [DEBUG] [Thread-198918] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:32:06.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:32:06.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:32:06.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:32:06.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:32:06.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:32:06.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:31:28', tmtdew=14.67, humidity=35.98, cloud=0.0, wind=24.47, temperature=13.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:32:02', seeing=0.81, atlas_timestamp='2025-11-24T21:31:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[-0.034250000000000114, -0.07075000000000031, -0.023749999999999716, -0.020500000000000185, 0.021999999999998465, 0.022750000000002046, 0.02200000000000024, -0.012749999999998707, 0.0024999999999995026, 0.005500000000001393, 0.0072499999999990905, -0.044500000000001094, 0.03999999999999915, 0.06174999999999997, -0.0365000000000002, 0.0, -0.0017499999999994742, 0.02549999999999919, 0.0129999999999999, -0.007250000000000867, 0.013499999999998735, 0.05074999999999896, 0.03125, -0.030250000000000554, -0.023000000000001464, -0.042500000000000426, 0.023749999999999716, 0.025500000000000966, 0.13149999999999906, 0.10850000000000115, 0.06400000000000183, -0.0015000000000000568, -0.0762500000000017], zp_timestamp='2025-11-24T21:27:00')
2025-11-24T23:32:06.129 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:32:06.141 [DEBUG] [Thread-198921] [transport.py] [_log()] starting thread (client mode): 0xc9b827a0
2025-11-24T23:32:06.141 [DEBUG] [Thread-198921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:32:06.155 [DEBUG] [Thread-198921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:32:06.155 [INFO] [Thread-198921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] client lang: <none>
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] server lang: <none>
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] kex follows: False
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] Compression: none
2025-11-24T23:32:06.163 [DEBUG] [Thread-198921] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:32:06.220 [DEBUG] [Thread-198921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:32:06.220 [DEBUG] [Thread-198921] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:32:06.221 [DEBUG] [Thread-198921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:32:06.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:32:06.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:32:06.277 [DEBUG] [Thread-198921] [transport.py] [_log()] userauth is OK
2025-11-24T23:32:06.277 [DEBUG] [Thread-198921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:32:06.277 [DEBUG] [Thread-198921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:32:06.277 [DEBUG] [Thread-198921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:32:06.277 [DEBUG] [Thread-198921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:32:06.291 [INFO] [Thread-198921] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:32:06.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:32:06.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:32:07.168 [DEBUG] [Thread-198921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:32:07.168 [DEBUG] [Thread-198921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:32:07.216 [DEBUG] [Thread-198921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:32:07.217 [DEBUG] [Thread-198921] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:32:07.226 [DEBUG] [Thread-198921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:32:07.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:32:07.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-11-24T23:32:07.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-11-24T23:32:07.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:32:07.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:32:07.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:32:07.261 [DEBUG] [Thread-198921] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:32:19.141 [DEBUG] [Thread-198923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:32:34.420 [DEBUG] [Thread-198924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:32:37.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:32:37.296 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:32:37.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:32:39.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 32, 2), 14.65, 36.03, 0.0, 24.44, 13.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:32:39.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:32:02
2025-11-24T23:32:39.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:32:39.496 [DEBUG] [Thread-198925] [transport.py] [_log()] starting thread (client mode): 0xc9b83fd0
2025-11-24T23:32:39.497 [DEBUG] [Thread-198925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:32:39.504 [DEBUG] [Thread-198925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:32:39.504 [INFO] [Thread-198925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:32:39.512 [DEBUG] [Thread-198925] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] client lang: <none>
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] server lang: <none>
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] kex follows: False
2025-11-24T23:32:39.513 [DEBUG] [Thread-198925] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:32:39.514 [DEBUG] [Thread-198925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:32:39.514 [DEBUG] [Thread-198925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:32:39.514 [DEBUG] [Thread-198925] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:32:39.514 [DEBUG] [Thread-198925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:32:39.514 [DEBUG] [Thread-198925] [transport.py] [_log()] Compression: none
2025-11-24T23:32:39.514 [DEBUG] [Thread-198925] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:32:39.548 [DEBUG] [Thread-198925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:32:39.553 [DEBUG] [Thread-198925] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:32:39.554 [DEBUG] [Thread-198925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:32:39.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:32:39.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:32:39.559 [DEBUG] [Thread-198925] [transport.py] [_log()] userauth is OK
2025-11-24T23:32:39.559 [DEBUG] [Thread-198925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:32:39.559 [DEBUG] [Thread-198925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:32:39.559 [DEBUG] [Thread-198925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:32:39.559 [DEBUG] [Thread-198925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:32:39.572 [INFO] [Thread-198925] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:32:39.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:32:40.184 [DEBUG] [Thread-198925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:32:40.184 [DEBUG] [Thread-198925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:32:40.186 [DEBUG] [Thread-198925] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:32:40.226 [DEBUG] [Thread-198925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:32:40.226 [DEBUG] [Thread-198925] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:32:40.232 [DEBUG] [Thread-198925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:32:40.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:32:40.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:32:40.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:32:40.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:32:40.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:32:40.259 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:32:40.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:32:40.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:32:40.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:32:40.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.896921 -999.00  +13.50  20.06     41   +0.80 1 1 1 1 1     0    0 12.57 -6.32 ZNESW 16.5 20.1 163.0 24.6 13.8 -24.6 13.7 -24.1 13.5 -22.9 13.8 -23.8
2025-11-24T23:32:40.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:32:40.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:32:40.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.896921
2025-11-24T23:32:40.267 [DEBUG] [Thread-198925] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:32:40.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:32:40.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:32:40.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:32:40.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:32:40.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:32:40.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:32:02', tmtdew=14.65, humidity=36.03, cloud=0.0, wind=24.44, temperature=13.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:32:02', seeing=0.81, atlas_timestamp='2025-11-24T21:31:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.01774999999999949, -0.004749999999999588, -0.022500000000000853, 0.007999999999999119, 0.07125000000000092, 0.02200000000000024, -0.010749999999998039, 0.03399999999999892, 0.016000000000000014, 0.03524999999999956, -0.04899999999999949, 0.057000000000000384, 0.10975000000000001, 0.012999999999998124, -0.007500000000000284, -0.01425000000000054, 0.04749999999999943, 0.02800000000000047, -0.026250000000000995, 0.04699999999999882, 0.05074999999999896, 0.052250000000000796, -0.004250000000000753, -0.03200000000000003, -0.023999999999999133, 0.020749999999999602, 0.002000000000000668, 0.08500000000000085, 0.06800000000000139, 0.09000000000000163, -0.009999999999999787, -0.026750000000001606], zp_timestamp='2025-11-24T21:30:00')
2025-11-24T23:32:40.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:32:40.392 [DEBUG] [Thread-198928] [transport.py] [_log()] starting thread (client mode): 0xd0738e80
2025-11-24T23:32:40.392 [DEBUG] [Thread-198928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:32:40.406 [DEBUG] [Thread-198928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:32:40.406 [INFO] [Thread-198928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] client lang: <none>
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] server lang: <none>
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] kex follows: False
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:32:40.414 [DEBUG] [Thread-198928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:32:40.415 [DEBUG] [Thread-198928] [transport.py] [_log()] Compression: none
2025-11-24T23:32:40.415 [DEBUG] [Thread-198928] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:32:40.474 [DEBUG] [Thread-198928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:32:40.474 [DEBUG] [Thread-198928] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:32:40.475 [DEBUG] [Thread-198928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:32:40.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:32:40.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:32:40.529 [DEBUG] [Thread-198928] [transport.py] [_log()] userauth is OK
2025-11-24T23:32:40.529 [DEBUG] [Thread-198928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:32:40.529 [DEBUG] [Thread-198928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:32:40.529 [DEBUG] [Thread-198928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:32:40.529 [DEBUG] [Thread-198928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:32:40.547 [INFO] [Thread-198928] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:32:40.547 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:32:40.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:32:41.371 [DEBUG] [Thread-198928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:32:41.371 [DEBUG] [Thread-198928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:32:41.419 [DEBUG] [Thread-198928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:32:41.419 [DEBUG] [Thread-198928] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:32:41.427 [DEBUG] [Thread-198928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:32:41.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:32:41.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-11-24T23:32:41.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-11-24T23:32:41.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:32:41.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:32:41.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:32:41.464 [DEBUG] [Thread-198928] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:32:49.678 [DEBUG] [Thread-198930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:32:57.398 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:32:57.414 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:32:59.410 [DEBUG] [Thread-198931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:33:04.954 [DEBUG] [Thread-198932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:33:11.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:33:11.546 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:33:11.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:33:13.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 32, 36), 14.71, 35.98, 0.0, 26.63, 13.71, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:33:13.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:32:36
2025-11-24T23:33:13.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:33:13.833 [DEBUG] [Thread-198933] [transport.py] [_log()] starting thread (client mode): 0xd073b760
2025-11-24T23:33:13.835 [DEBUG] [Thread-198933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:33:13.835 [DEBUG] [Thread-198933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:33:13.835 [INFO] [Thread-198933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] client lang: <none>
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] server lang: <none>
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] kex follows: False
2025-11-24T23:33:13.842 [DEBUG] [Thread-198933] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:33:13.843 [DEBUG] [Thread-198933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:33:13.843 [DEBUG] [Thread-198933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:33:13.844 [DEBUG] [Thread-198933] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:33:13.844 [DEBUG] [Thread-198933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:33:13.844 [DEBUG] [Thread-198933] [transport.py] [_log()] Compression: none
2025-11-24T23:33:13.844 [DEBUG] [Thread-198933] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:33:13.881 [DEBUG] [Thread-198933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:33:13.887 [DEBUG] [Thread-198933] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:33:13.888 [DEBUG] [Thread-198933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:33:13.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:33:13.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:33:13.893 [DEBUG] [Thread-198933] [transport.py] [_log()] userauth is OK
2025-11-24T23:33:13.893 [DEBUG] [Thread-198933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:33:13.893 [DEBUG] [Thread-198933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:33:13.893 [DEBUG] [Thread-198933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:33:13.893 [DEBUG] [Thread-198933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:33:13.925 [INFO] [Thread-198933] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:33:13.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:33:14.552 [DEBUG] [Thread-198933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:33:14.552 [DEBUG] [Thread-198933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:33:14.553 [DEBUG] [Thread-198933] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:33:14.592 [DEBUG] [Thread-198933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:33:14.592 [DEBUG] [Thread-198933] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:33:14.595 [DEBUG] [Thread-198933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:33:14.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:33:14.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:33:14.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:33:14.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:33:14.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:33:14.621 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:33:14.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:33:14.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:33:14.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:33:14.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.897615 -999.00  +13.50  12.84     41   +0.70 1 1 1 1 1     0    0 12.55 -5.08 ZNESW 12.9 12.8 156.8 20.6 13.8 -24.6 13.7 -24.2 13.5 -23.0 13.8 -24.0
2025-11-24T23:33:14.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:33:14.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:33:14.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.897615
2025-11-24T23:33:14.629 [DEBUG] [Thread-198933] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:33:14.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:33:14.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:33:14.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:33:14.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:33:14.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:33:14.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:32:36', tmtdew=14.71, humidity=35.98, cloud=0.0, wind=26.63, temperature=13.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:33:11', seeing=0.91, atlas_timestamp='2025-11-24T21:32:33.936', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.01774999999999949, -0.004749999999999588, -0.022500000000000853, 0.007999999999999119, 0.07125000000000092, 0.02200000000000024, -0.010749999999998039, 0.03399999999999892, 0.016000000000000014, 0.03524999999999956, -0.04899999999999949, 0.057000000000000384, 0.10975000000000001, 0.012999999999998124, -0.007500000000000284, -0.01425000000000054, 0.04749999999999943, 0.02800000000000047, -0.026250000000000995, 0.04699999999999882, 0.05074999999999896, 0.052250000000000796, -0.004250000000000753, -0.03200000000000003, -0.023999999999999133, 0.020749999999999602, 0.002000000000000668, 0.08500000000000085, 0.06800000000000139, 0.09000000000000163, -0.009999999999999787, -0.026750000000001606], zp_timestamp='2025-11-24T21:30:00')
2025-11-24T23:33:14.740 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:33:14.752 [DEBUG] [Thread-198936] [transport.py] [_log()] starting thread (client mode): 0xd073b850
2025-11-24T23:33:14.752 [DEBUG] [Thread-198936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:33:14.767 [DEBUG] [Thread-198936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:33:14.768 [INFO] [Thread-198936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] client lang: <none>
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] server lang: <none>
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] kex follows: False
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:33:14.775 [DEBUG] [Thread-198936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:33:14.776 [DEBUG] [Thread-198936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:33:14.776 [DEBUG] [Thread-198936] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:33:14.776 [DEBUG] [Thread-198936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:33:14.776 [DEBUG] [Thread-198936] [transport.py] [_log()] Compression: none
2025-11-24T23:33:14.776 [DEBUG] [Thread-198936] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:33:14.833 [DEBUG] [Thread-198936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:33:14.833 [DEBUG] [Thread-198936] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:33:14.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:33:14.833 [DEBUG] [Thread-198936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:33:14.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:33:14.890 [DEBUG] [Thread-198936] [transport.py] [_log()] userauth is OK
2025-11-24T23:33:14.890 [DEBUG] [Thread-198936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:33:14.890 [DEBUG] [Thread-198936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:33:14.890 [DEBUG] [Thread-198936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:33:14.890 [DEBUG] [Thread-198936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:33:14.904 [INFO] [Thread-198936] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:33:14.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:33:14.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:33:15.745 [DEBUG] [Thread-198936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:33:15.746 [DEBUG] [Thread-198936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:33:15.797 [DEBUG] [Thread-198936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:33:15.797 [DEBUG] [Thread-198936] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:33:15.808 [DEBUG] [Thread-198936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:33:15.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:33:15.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-11-24T23:33:15.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-11-24T23:33:15.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:33:15.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:33:15.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:33:15.852 [DEBUG] [Thread-198936] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:33:20.125 [DEBUG] [Thread-198938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:33:35.435 [DEBUG] [Thread-198939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:33:45.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:33:45.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:33:45.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-11-24T23:33:47.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 33, 10), 14.69, 36.03, 0.0, 27.07, 13.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:33:47.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:33:10
2025-11-24T23:33:47.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:33:48.067 [DEBUG] [Thread-198940] [transport.py] [_log()] starting thread (client mode): 0xc9b81300
2025-11-24T23:33:48.069 [DEBUG] [Thread-198940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:33:48.070 [DEBUG] [Thread-198940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:33:48.070 [INFO] [Thread-198940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:33:48.079 [DEBUG] [Thread-198940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:33:48.079 [DEBUG] [Thread-198940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:33:48.079 [DEBUG] [Thread-198940] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:33:48.079 [DEBUG] [Thread-198940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:33:48.079 [DEBUG] [Thread-198940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:33:48.079 [DEBUG] [Thread-198940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:33:48.079 [DEBUG] [Thread-198940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:33:48.079 [DEBUG] [Thread-198940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:33:48.080 [DEBUG] [Thread-198940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:33:48.080 [DEBUG] [Thread-198940] [transport.py] [_log()] client lang: <none>
2025-11-24T23:33:48.080 [DEBUG] [Thread-198940] [transport.py] [_log()] server lang: <none>
2025-11-24T23:33:48.080 [DEBUG] [Thread-198940] [transport.py] [_log()] kex follows: False
2025-11-24T23:33:48.080 [DEBUG] [Thread-198940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:33:48.080 [DEBUG] [Thread-198940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:33:48.081 [DEBUG] [Thread-198940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:33:48.081 [DEBUG] [Thread-198940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:33:48.081 [DEBUG] [Thread-198940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:33:48.081 [DEBUG] [Thread-198940] [transport.py] [_log()] Compression: none
2025-11-24T23:33:48.081 [DEBUG] [Thread-198940] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:33:48.143 [DEBUG] [Thread-198940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:33:48.149 [DEBUG] [Thread-198940] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:33:48.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:33:48.152 [DEBUG] [Thread-198940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:33:48.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:33:48.155 [DEBUG] [Thread-198940] [transport.py] [_log()] userauth is OK
2025-11-24T23:33:48.155 [DEBUG] [Thread-198940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:33:48.156 [DEBUG] [Thread-198940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:33:48.156 [DEBUG] [Thread-198940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:33:48.156 [DEBUG] [Thread-198940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:33:48.187 [INFO] [Thread-198940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:33:48.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:33:48.967 [DEBUG] [Thread-198940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:33:48.967 [DEBUG] [Thread-198940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:33:48.968 [DEBUG] [Thread-198940] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:33:49.008 [DEBUG] [Thread-198940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:33:49.008 [DEBUG] [Thread-198940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:33:49.012 [DEBUG] [Thread-198940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:33:49.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:33:49.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:33:49.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:33:49.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:33:49.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:33:49.066 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:33:49.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:33:49.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:33:49.069 [DEBUG] [Thread-198940] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:33:49.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:33:49.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.897962 -999.00  +13.50  17.14     41   +0.60 1 1 1 1 1     0    0 12.71 -3.69 ZNESW 14.8 17.1 150.8 19.8 13.8 -24.6 13.7 -24.0 13.4 -23.2 13.8 -23.9
2025-11-24T23:33:49.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:33:49.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:33:49.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.897962
2025-11-24T23:33:49.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:33:49.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:33:49.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:33:49.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:33:49.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:33:49.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:33:10', tmtdew=14.69, humidity=36.03, cloud=0.0, wind=27.07, temperature=13.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:33:45', seeing=0.89, atlas_timestamp='2025-11-24T21:33:03.917', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.01774999999999949, -0.004749999999999588, -0.022500000000000853, 0.007999999999999119, 0.07125000000000092, 0.02200000000000024, -0.010749999999998039, 0.03399999999999892, 0.016000000000000014, 0.03524999999999956, -0.04899999999999949, 0.057000000000000384, 0.10975000000000001, 0.012999999999998124, -0.007500000000000284, -0.01425000000000054, 0.04749999999999943, 0.02800000000000047, -0.026250000000000995, 0.04699999999999882, 0.05074999999999896, 0.052250000000000796, -0.004250000000000753, -0.03200000000000003, -0.023999999999999133, 0.020749999999999602, 0.002000000000000668, 0.08500000000000085, 0.06800000000000139, 0.09000000000000163, -0.009999999999999787, -0.026750000000001606], zp_timestamp='2025-11-24T21:30:00')
2025-11-24T23:33:49.177 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:33:49.188 [DEBUG] [Thread-198943] [transport.py] [_log()] starting thread (client mode): 0xd3151540
2025-11-24T23:33:49.188 [DEBUG] [Thread-198943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:33:49.203 [DEBUG] [Thread-198943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:33:49.203 [INFO] [Thread-198943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] client lang: <none>
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] server lang: <none>
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] kex follows: False
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] Compression: none
2025-11-24T23:33:49.211 [DEBUG] [Thread-198943] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:33:49.271 [DEBUG] [Thread-198943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:33:49.271 [DEBUG] [Thread-198943] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:33:49.271 [DEBUG] [Thread-198943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:33:49.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:33:49.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:33:49.326 [DEBUG] [Thread-198943] [transport.py] [_log()] userauth is OK
2025-11-24T23:33:49.326 [DEBUG] [Thread-198943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:33:49.326 [DEBUG] [Thread-198943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:33:49.326 [DEBUG] [Thread-198943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:33:49.327 [DEBUG] [Thread-198943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:33:49.345 [INFO] [Thread-198943] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:33:49.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:33:49.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:33:50.167 [DEBUG] [Thread-198943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:33:50.167 [DEBUG] [Thread-198943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:33:50.215 [DEBUG] [Thread-198943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:33:50.215 [DEBUG] [Thread-198943] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:33:50.224 [DEBUG] [Thread-198943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:33:50.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:33:50.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-11-24T23:33:50.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-11-24T23:33:50.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:33:50.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:33:50.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:33:50.262 [DEBUG] [Thread-198943] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:33:50.580 [DEBUG] [Thread-198945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:33:57.616 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:33:57.620 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:33:59.919 [DEBUG] [Thread-198946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:34:05.799 [DEBUG] [Thread-198947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:34:20.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:34:20.314 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:34:20.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-11-24T23:34:20.906 [DEBUG] [Thread-198948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:34:21.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 33, 44), 14.71, 36.12, 0.0, 24.23, 13.64, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:34:21.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:33:44
2025-11-24T23:34:22.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:34:22.321 [DEBUG] [Thread-198949] [transport.py] [_log()] starting thread (client mode): 0xd3149660
2025-11-24T23:34:22.322 [DEBUG] [Thread-198949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:34:22.327 [DEBUG] [Thread-198949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:34:22.327 [INFO] [Thread-198949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:34:22.335 [DEBUG] [Thread-198949] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:34:22.335 [DEBUG] [Thread-198949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] client lang: <none>
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] server lang: <none>
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] kex follows: False
2025-11-24T23:34:22.336 [DEBUG] [Thread-198949] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:34:22.337 [DEBUG] [Thread-198949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:34:22.337 [DEBUG] [Thread-198949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:34:22.337 [DEBUG] [Thread-198949] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:34:22.337 [DEBUG] [Thread-198949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:34:22.338 [DEBUG] [Thread-198949] [transport.py] [_log()] Compression: none
2025-11-24T23:34:22.338 [DEBUG] [Thread-198949] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:34:22.376 [DEBUG] [Thread-198949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:34:22.382 [DEBUG] [Thread-198949] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:34:22.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:34:22.385 [DEBUG] [Thread-198949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:34:22.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:34:22.389 [DEBUG] [Thread-198949] [transport.py] [_log()] userauth is OK
2025-11-24T23:34:22.389 [DEBUG] [Thread-198949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:34:22.389 [DEBUG] [Thread-198949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:34:22.389 [DEBUG] [Thread-198949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:34:22.389 [DEBUG] [Thread-198949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:34:22.419 [INFO] [Thread-198949] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:34:22.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:34:23.067 [DEBUG] [Thread-198949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:34:23.067 [DEBUG] [Thread-198949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:34:23.067 [DEBUG] [Thread-198949] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:34:23.108 [DEBUG] [Thread-198949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:34:23.108 [DEBUG] [Thread-198949] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:34:23.111 [DEBUG] [Thread-198949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:34:23.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:34:23.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:34:23.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:34:23.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:34:23.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:34:23.135 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:34:23.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:34:23.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:34:23.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:34:23.137 [DEBUG] [Thread-198949] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:34:23.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.898309 -999.00  +13.50  15.34     41   +0.60 1 1 1 1 1     0    0 12.72 -2.72 ZNESW 18.6 15.3 160.6 22.1 13.8 -24.6 13.7 -24.2 13.5 -22.9 13.8 -24.0
2025-11-24T23:34:23.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:34:23.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:34:23.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.898309
2025-11-24T23:34:23.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:34:23.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:34:23.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:34:23.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:34:23.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:34:23.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:33:44', tmtdew=14.71, humidity=36.12, cloud=0.0, wind=24.23, temperature=13.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:34:19', seeing=0.89, atlas_timestamp='2025-11-24T21:33:33.898', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.01774999999999949, -0.004749999999999588, -0.022500000000000853, 0.007999999999999119, 0.07125000000000092, 0.02200000000000024, -0.010749999999998039, 0.03399999999999892, 0.016000000000000014, 0.03524999999999956, -0.04899999999999949, 0.057000000000000384, 0.10975000000000001, 0.012999999999998124, -0.007500000000000284, -0.01425000000000054, 0.04749999999999943, 0.02800000000000047, -0.026250000000000995, 0.04699999999999882, 0.05074999999999896, 0.052250000000000796, -0.004250000000000753, -0.03200000000000003, -0.023999999999999133, 0.020749999999999602, 0.002000000000000668, 0.08500000000000085, 0.06800000000000139, 0.09000000000000163, -0.009999999999999787, -0.026750000000001606], zp_timestamp='2025-11-24T21:30:00')
2025-11-24T23:34:23.244 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:34:23.256 [DEBUG] [Thread-198952] [transport.py] [_log()] starting thread (client mode): 0xd0739de0
2025-11-24T23:34:23.256 [DEBUG] [Thread-198952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:34:23.271 [DEBUG] [Thread-198952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:34:23.271 [INFO] [Thread-198952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] client lang: <none>
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] server lang: <none>
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] kex follows: False
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:34:23.280 [DEBUG] [Thread-198952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:34:23.283 [DEBUG] [Thread-198952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:34:23.283 [DEBUG] [Thread-198952] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:34:23.283 [DEBUG] [Thread-198952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:34:23.283 [DEBUG] [Thread-198952] [transport.py] [_log()] Compression: none
2025-11-24T23:34:23.283 [DEBUG] [Thread-198952] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:34:23.337 [DEBUG] [Thread-198952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:34:23.337 [DEBUG] [Thread-198952] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:34:23.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:34:23.337 [DEBUG] [Thread-198952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:34:23.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:34:23.394 [DEBUG] [Thread-198952] [transport.py] [_log()] userauth is OK
2025-11-24T23:34:23.394 [DEBUG] [Thread-198952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:34:23.394 [DEBUG] [Thread-198952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:34:23.394 [DEBUG] [Thread-198952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:34:23.394 [DEBUG] [Thread-198952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:34:23.412 [INFO] [Thread-198952] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:34:23.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:34:23.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:34:24.238 [DEBUG] [Thread-198952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:34:24.238 [DEBUG] [Thread-198952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:34:24.287 [DEBUG] [Thread-198952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:34:24.287 [DEBUG] [Thread-198952] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:34:24.295 [DEBUG] [Thread-198952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:34:24.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:34:24.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-11-24T23:34:24.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-11-24T23:34:24.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:34:24.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:34:24.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:34:24.331 [DEBUG] [Thread-198952] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:34:36.066 [DEBUG] [Thread-198954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:34:51.379 [DEBUG] [Thread-198955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:34:54.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:34:54.356 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:34:54.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-11-24T23:34:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 34, 19), 14.74, 36.05, 0.0, 23.82, 13.66, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:34:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:34:19
2025-11-24T23:34:56.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:34:56.577 [DEBUG] [Thread-198956] [transport.py] [_log()] starting thread (client mode): 0xd0739b40
2025-11-24T23:34:56.578 [DEBUG] [Thread-198956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:34:56.579 [DEBUG] [Thread-198956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:34:56.579 [INFO] [Thread-198956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] client lang: <none>
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] server lang: <none>
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] kex follows: False
2025-11-24T23:34:56.587 [DEBUG] [Thread-198956] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:34:56.588 [DEBUG] [Thread-198956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:34:56.588 [DEBUG] [Thread-198956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:34:56.588 [DEBUG] [Thread-198956] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:34:56.588 [DEBUG] [Thread-198956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:34:56.588 [DEBUG] [Thread-198956] [transport.py] [_log()] Compression: none
2025-11-24T23:34:56.588 [DEBUG] [Thread-198956] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:34:56.631 [DEBUG] [Thread-198956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:34:56.679 [DEBUG] [Thread-198956] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:34:56.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:34:56.681 [DEBUG] [Thread-198956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:34:56.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:34:56.683 [DEBUG] [Thread-198956] [transport.py] [_log()] userauth is OK
2025-11-24T23:34:56.684 [DEBUG] [Thread-198956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:34:56.684 [DEBUG] [Thread-198956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:34:56.684 [DEBUG] [Thread-198956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:34:56.684 [DEBUG] [Thread-198956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:34:56.701 [INFO] [Thread-198956] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:34:56.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:34:57.312 [DEBUG] [Thread-198956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:34:57.313 [DEBUG] [Thread-198956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:34:57.314 [DEBUG] [Thread-198956] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:34:57.353 [DEBUG] [Thread-198956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:34:57.353 [DEBUG] [Thread-198956] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:34:57.356 [DEBUG] [Thread-198956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:34:57.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:34:57.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:34:57.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:34:57.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:34:57.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:34:57.377 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:34:57.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:34:57.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:34:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:34:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.898657 -999.00  +13.50  18.63     41   +0.60 1 1 1 1 1     0    0 12.72 -1.72 ZNESW 20.3 18.6 160.4 25.9 13.8 -24.6 13.7 -24.1 13.4 -22.9 13.8 -23.8
2025-11-24T23:34:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:34:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:34:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.898657
2025-11-24T23:34:57.384 [DEBUG] [Thread-198956] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:34:57.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:34:57.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:34:57.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:34:57.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:34:57.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:34:57.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:34:19', tmtdew=14.74, humidity=36.05, cloud=0.0, wind=23.82, temperature=13.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:34:53', seeing=0.84, atlas_timestamp='2025-11-24T21:34:03.965', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.01774999999999949, -0.004749999999999588, -0.022500000000000853, 0.007999999999999119, 0.07125000000000092, 0.02200000000000024, -0.010749999999998039, 0.03399999999999892, 0.016000000000000014, 0.03524999999999956, -0.04899999999999949, 0.057000000000000384, 0.10975000000000001, 0.012999999999998124, -0.007500000000000284, -0.01425000000000054, 0.04749999999999943, 0.02800000000000047, -0.026250000000000995, 0.04699999999999882, 0.05074999999999896, 0.052250000000000796, -0.004250000000000753, -0.03200000000000003, -0.023999999999999133, 0.020749999999999602, 0.002000000000000668, 0.08500000000000085, 0.06800000000000139, 0.09000000000000163, -0.009999999999999787, -0.026750000000001606], zp_timestamp='2025-11-24T21:30:00')
2025-11-24T23:34:57.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:34:57.484 [DEBUG] [Thread-198959] [transport.py] [_log()] starting thread (client mode): 0xd073a440
2025-11-24T23:34:57.484 [DEBUG] [Thread-198959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:34:57.501 [DEBUG] [Thread-198959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:34:57.501 [INFO] [Thread-198959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:34:57.508 [DEBUG] [Thread-198959] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] client lang: <none>
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] server lang: <none>
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] kex follows: False
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] Compression: none
2025-11-24T23:34:57.509 [DEBUG] [Thread-198959] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:34:57.565 [DEBUG] [Thread-198959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:34:57.565 [DEBUG] [Thread-198959] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:34:57.565 [DEBUG] [Thread-198959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:34:57.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:34:57.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:34:57.622 [DEBUG] [Thread-198959] [transport.py] [_log()] userauth is OK
2025-11-24T23:34:57.623 [DEBUG] [Thread-198959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:34:57.623 [DEBUG] [Thread-198959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:34:57.623 [DEBUG] [Thread-198959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:34:57.623 [DEBUG] [Thread-198959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:34:57.644 [INFO] [Thread-198959] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:34:57.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:34:57.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:34:57.824 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:34:57.825 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:34:58.492 [DEBUG] [Thread-198959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:34:58.492 [DEBUG] [Thread-198959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:34:58.540 [DEBUG] [Thread-198959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:34:58.540 [DEBUG] [Thread-198959] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:34:58.549 [DEBUG] [Thread-198959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:34:58.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:34:58.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-11-24T23:34:58.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-11-24T23:34:58.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:34:58.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:34:58.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:34:58.587 [DEBUG] [Thread-198959] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:35:00.299 [DEBUG] [Thread-198961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:35:05.489 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:35:06.537 [DEBUG] [Thread-198962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:35:21.815 [DEBUG] [Thread-198963 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:35:28.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:35:28.638 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:35:28.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-11-24T23:35:30.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 34, 53), 14.66, 36.12, 0.0, 20.73, 13.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:35:30.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:34:53
2025-11-24T23:35:30.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:35:30.767 [DEBUG] [Thread-198964] [transport.py] [_log()] starting thread (client mode): 0xd3149000
2025-11-24T23:35:30.768 [DEBUG] [Thread-198964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:35:30.770 [DEBUG] [Thread-198964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:35:30.770 [INFO] [Thread-198964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:35:30.788 [DEBUG] [Thread-198964] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] client lang: <none>
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] server lang: <none>
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] kex follows: False
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:35:30.789 [DEBUG] [Thread-198964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:35:30.790 [DEBUG] [Thread-198964] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:35:30.790 [DEBUG] [Thread-198964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:35:30.790 [DEBUG] [Thread-198964] [transport.py] [_log()] Compression: none
2025-11-24T23:35:30.790 [DEBUG] [Thread-198964] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:35:30.821 [DEBUG] [Thread-198964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:35:30.825 [DEBUG] [Thread-198964] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:35:30.827 [DEBUG] [Thread-198964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:35:30.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:35:30.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:35:30.831 [DEBUG] [Thread-198964] [transport.py] [_log()] userauth is OK
2025-11-24T23:35:30.832 [DEBUG] [Thread-198964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:35:30.832 [DEBUG] [Thread-198964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:35:30.832 [DEBUG] [Thread-198964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:35:30.832 [DEBUG] [Thread-198964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:35:30.850 [INFO] [Thread-198964] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:35:30.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:35:31.468 [DEBUG] [Thread-198964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:35:31.468 [DEBUG] [Thread-198964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:35:31.469 [DEBUG] [Thread-198964] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:35:31.509 [DEBUG] [Thread-198964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:35:31.509 [DEBUG] [Thread-198964] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:35:31.512 [DEBUG] [Thread-198964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:35:31.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:35:31.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:35:31.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:35:31.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:35:31.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:35:31.537 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:35:31.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:35:31.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:35:31.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:35:31.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.899004 -999.00  +13.50  16.94     41   +0.60 1 1 1 1 1     0    0 12.74 -0.64 ZNESW 18.0 16.9 157.2 26.1 13.8 -24.5 13.7 -24.1 13.4 -22.9 13.8 -23.8
2025-11-24T23:35:31.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:35:31.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:35:31.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.899004
2025-11-24T23:35:31.550 [DEBUG] [Thread-198964] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:35:31.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:35:31.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:35:31.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:35:31.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:35:31.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:35:31.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:34:53', tmtdew=14.66, humidity=36.12, cloud=0.0, wind=20.73, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:35:28', seeing=0.93, atlas_timestamp='2025-11-24T21:34:33.946', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.01774999999999949, -0.004749999999999588, -0.022500000000000853, 0.007999999999999119, 0.07125000000000092, 0.02200000000000024, -0.010749999999998039, 0.03399999999999892, 0.016000000000000014, 0.03524999999999956, -0.04899999999999949, 0.057000000000000384, 0.10975000000000001, 0.012999999999998124, -0.007500000000000284, -0.01425000000000054, 0.04749999999999943, 0.02800000000000047, -0.026250000000000995, 0.04699999999999882, 0.05074999999999896, 0.052250000000000796, -0.004250000000000753, -0.03200000000000003, -0.023999999999999133, 0.020749999999999602, 0.002000000000000668, 0.08500000000000085, 0.06800000000000139, 0.09000000000000163, -0.009999999999999787, -0.026750000000001606], zp_timestamp='2025-11-24T21:33:00')
2025-11-24T23:35: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-11-24T23:35:31.652 [DEBUG] [Thread-198967] [transport.py] [_log()] starting thread (client mode): 0xd0738f10
2025-11-24T23:35:31.652 [DEBUG] [Thread-198967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:35:31.666 [DEBUG] [Thread-198967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:35:31.666 [INFO] [Thread-198967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] client lang: <none>
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] server lang: <none>
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] kex follows: False
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] Compression: none
2025-11-24T23:35:31.674 [DEBUG] [Thread-198967] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:35:31.729 [DEBUG] [Thread-198967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:35:31.729 [DEBUG] [Thread-198967] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:35:31.730 [DEBUG] [Thread-198967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:35:31.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:35:31.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:35:31.790 [DEBUG] [Thread-198967] [transport.py] [_log()] userauth is OK
2025-11-24T23:35:31.790 [DEBUG] [Thread-198967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:35:31.790 [DEBUG] [Thread-198967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:35:31.790 [DEBUG] [Thread-198967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:35:31.790 [DEBUG] [Thread-198967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:35:31.804 [INFO] [Thread-198967] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:35:31.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:35:31.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:35:32.632 [DEBUG] [Thread-198967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:35:32.632 [DEBUG] [Thread-198967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:35:32.680 [DEBUG] [Thread-198967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:35:32.681 [DEBUG] [Thread-198967] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:35:32.689 [DEBUG] [Thread-198967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:35:32.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:35:32.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-11-24T23:35: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') -> 00000000
2025-11-24T23:35:32.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:35:32.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:35:32.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:35:32.732 [DEBUG] [Thread-198967] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:35:36.956 [DEBUG] [Thread-198969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:35:52.177 [DEBUG] [Thread-198970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:35:58.065 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:35:58.068 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:35:58.419 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:00.828 [DEBUG] [Thread-198971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:01.576 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:02.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:36:02.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:36:02.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-11-24T23:36:04.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 35, 27), 14.62, 36.23, 0.0, 21.65, 13.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:36:04.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:35:27
2025-11-24T23:36:04.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:36:04.673 [DEBUG] [Thread-198972] [transport.py] [_log()] starting thread (client mode): 0xd3151180
2025-11-24T23:36:04.674 [DEBUG] [Thread-198972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:36:04.679 [DEBUG] [Thread-198972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:36:04.679 [INFO] [Thread-198972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:36:04.688 [DEBUG] [Thread-198972] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:36:04.688 [DEBUG] [Thread-198972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:36:04.688 [DEBUG] [Thread-198972] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:36:04.688 [DEBUG] [Thread-198972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:36:04.688 [DEBUG] [Thread-198972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:36:04.688 [DEBUG] [Thread-198972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:36:04.688 [DEBUG] [Thread-198972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:36:04.689 [DEBUG] [Thread-198972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:36:04.689 [DEBUG] [Thread-198972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:36:04.689 [DEBUG] [Thread-198972] [transport.py] [_log()] client lang: <none>
2025-11-24T23:36:04.689 [DEBUG] [Thread-198972] [transport.py] [_log()] server lang: <none>
2025-11-24T23:36:04.689 [DEBUG] [Thread-198972] [transport.py] [_log()] kex follows: False
2025-11-24T23:36:04.689 [DEBUG] [Thread-198972] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:36:04.689 [DEBUG] [Thread-198972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:36:04.689 [DEBUG] [Thread-198972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:36:04.690 [DEBUG] [Thread-198972] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:36:04.690 [DEBUG] [Thread-198972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:36:04.690 [DEBUG] [Thread-198972] [transport.py] [_log()] Compression: none
2025-11-24T23:36:04.690 [DEBUG] [Thread-198972] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:36:04.736 [DEBUG] [Thread-198972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:36:04.742 [DEBUG] [Thread-198972] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:36:04.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:36:04.745 [DEBUG] [Thread-198972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:36:04.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:36:04.752 [DEBUG] [Thread-198972] [transport.py] [_log()] userauth is OK
2025-11-24T23:36:04.752 [DEBUG] [Thread-198972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:36:04.752 [DEBUG] [Thread-198972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:36:04.752 [DEBUG] [Thread-198972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:36:04.753 [DEBUG] [Thread-198972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:36:04.772 [INFO] [Thread-198972] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:36:04.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:36:05.365 [DEBUG] [Thread-198972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:36:05.365 [DEBUG] [Thread-198972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:36:05.369 [DEBUG] [Thread-198972] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:36:05.406 [DEBUG] [Thread-198972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:36:05.406 [DEBUG] [Thread-198972] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:36:05.409 [DEBUG] [Thread-198972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:36:05.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:36:05.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:36:05.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:36:05.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:36:05.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:36:05.437 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:36:05.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:36:05.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:36:05.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:36:05.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.899351 -999.00  +13.50  13.07     41   +0.60 1 1 1 1 1     0    0 12.95 0.31 ZNESW 19.2 13.1 163.2 21.7 13.8 -24.5 13.7 -24.2 13.4 -23.0 13.8 -24.0
2025-11-24T23:36:05.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:36:05.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:36:05.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.899351
2025-11-24T23:36:05.454 [DEBUG] [Thread-198972] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:36:05.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:36:05.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:36:05.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:36:05.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:36:05.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:36:05.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:35:27', tmtdew=14.62, humidity=36.23, cloud=0.0, wind=21.65, temperature=13.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:36:02', seeing=0.93, atlas_timestamp='2025-11-24T21:35:03.926', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.01774999999999949, -0.004749999999999588, -0.022500000000000853, 0.007999999999999119, 0.07125000000000092, 0.02200000000000024, -0.010749999999998039, 0.03399999999999892, 0.016000000000000014, 0.03524999999999956, -0.04899999999999949, 0.057000000000000384, 0.10975000000000001, 0.012999999999998124, -0.007500000000000284, -0.01425000000000054, 0.04749999999999943, 0.02800000000000047, -0.026250000000000995, 0.04699999999999882, 0.05074999999999896, 0.052250000000000796, -0.004250000000000753, -0.03200000000000003, -0.023999999999999133, 0.020749999999999602, 0.002000000000000668, 0.08500000000000085, 0.06800000000000139, 0.09000000000000163, -0.009999999999999787, -0.026750000000001606], zp_timestamp='2025-11-24T21:33:00')
2025-11-24T23:36:05.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:36:05.594 [DEBUG] [Thread-198975] [transport.py] [_log()] starting thread (client mode): 0xd314a350
2025-11-24T23:36:05.594 [DEBUG] [Thread-198975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:36:05.609 [DEBUG] [Thread-198975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:36:05.609 [INFO] [Thread-198975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:36:05.617 [DEBUG] [Thread-198975] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:36:05.617 [DEBUG] [Thread-198975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:36:05.617 [DEBUG] [Thread-198975] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:36:05.617 [DEBUG] [Thread-198975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:36:05.617 [DEBUG] [Thread-198975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:36:05.617 [DEBUG] [Thread-198975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:36:05.617 [DEBUG] [Thread-198975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:36:05.617 [DEBUG] [Thread-198975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] client lang: <none>
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] server lang: <none>
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] kex follows: False
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] Compression: none
2025-11-24T23:36:05.618 [DEBUG] [Thread-198975] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:36:05.673 [DEBUG] [Thread-198975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:36:05.674 [DEBUG] [Thread-198975] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:36:05.674 [DEBUG] [Thread-198975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:36:05.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:36:05.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:36:05.730 [DEBUG] [Thread-198975] [transport.py] [_log()] userauth is OK
2025-11-24T23:36:05.730 [DEBUG] [Thread-198975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:36:05.730 [DEBUG] [Thread-198975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:36:05.730 [DEBUG] [Thread-198975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:36:05.730 [DEBUG] [Thread-198975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:36:05.748 [INFO] [Thread-198975] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:36:05.748 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:36:05.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:36:06.625 [DEBUG] [Thread-198975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:36:06.626 [DEBUG] [Thread-198975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:36:06.666 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:06.673 [DEBUG] [Thread-198975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:36:06.673 [DEBUG] [Thread-198975] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:36:06.682 [DEBUG] [Thread-198975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:36:06.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:36:06.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-11-24T23:36:06.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-11-24T23:36:06.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:36:06.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:36:06.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:36:06.718 [DEBUG] [Thread-198975] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:36:07.294 [DEBUG] [Thread-198977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:13.170 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:22.514 [DEBUG] [Thread-198978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:32.466 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:36.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:36:36.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:36:36.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-11-24T23:36:36.949 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:37.654 [DEBUG] [Thread-198979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:38.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 36, 1), 14.6, 36.28, 0.0, 21.16, 13.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:36:38.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:36:01
2025-11-24T23:36:39.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:36:39.246 [DEBUG] [Thread-198980] [transport.py] [_log()] starting thread (client mode): 0xd31495a0
2025-11-24T23:36:39.254 [DEBUG] [Thread-198980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:36:39.255 [DEBUG] [Thread-198980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:36:39.255 [INFO] [Thread-198980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:36:39.262 [DEBUG] [Thread-198980] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:36:39.262 [DEBUG] [Thread-198980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] client lang: <none>
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] server lang: <none>
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] kex follows: False
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:36:39.263 [DEBUG] [Thread-198980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:36:39.264 [DEBUG] [Thread-198980] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:36:39.264 [DEBUG] [Thread-198980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:36:39.264 [DEBUG] [Thread-198980] [transport.py] [_log()] Compression: none
2025-11-24T23:36:39.264 [DEBUG] [Thread-198980] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:36:39.323 [DEBUG] [Thread-198980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:36:39.342 [DEBUG] [Thread-198980] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:36:39.344 [DEBUG] [Thread-198980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:36:39.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:36:39.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:36:39.350 [DEBUG] [Thread-198980] [transport.py] [_log()] userauth is OK
2025-11-24T23:36:39.350 [DEBUG] [Thread-198980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:36:39.350 [DEBUG] [Thread-198980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:36:39.350 [DEBUG] [Thread-198980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:36:39.350 [DEBUG] [Thread-198980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:36:39.373 [INFO] [Thread-198980] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:36:39.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:36:40.007 [DEBUG] [Thread-198980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:36:40.007 [DEBUG] [Thread-198980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:36:40.008 [DEBUG] [Thread-198980] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:36:40.048 [DEBUG] [Thread-198980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:36:40.048 [DEBUG] [Thread-198980] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:36:40.055 [DEBUG] [Thread-198980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:36:40.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:36:40.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:36:40.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:36:40.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:36:40.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:36:40.108 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:36:40.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:36:40.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:36:40.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:36:40.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.900046 -999.00  +13.60  16.93     41   +0.60 1 1 1 1 1     0    0 12.50 2.51 ZNESW 15.5 16.9 174.2 30.3 13.8 -24.7 13.7 -24.3 13.4 -23.0 13.8 -24.0
2025-11-24T23:36:40.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:36:40.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:36:40.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.900046
2025-11-24T23:36:40.116 [DEBUG] [Thread-198980] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:36:40.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:36:40.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:36:40.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:36:40.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:36:40.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:36:40.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:36:01', tmtdew=14.6, humidity=36.28, cloud=0.0, wind=21.16, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:36:36', seeing=0.92, atlas_timestamp='2025-11-24T21:36:03.974', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.01774999999999949, -0.004749999999999588, -0.022500000000000853, 0.007999999999999119, 0.07125000000000092, 0.02200000000000024, -0.010749999999998039, 0.03399999999999892, 0.016000000000000014, 0.03524999999999956, -0.04899999999999949, 0.057000000000000384, 0.10975000000000001, 0.012999999999998124, -0.007500000000000284, -0.01425000000000054, 0.04749999999999943, 0.02800000000000047, -0.026250000000000995, 0.04699999999999882, 0.05074999999999896, 0.052250000000000796, -0.004250000000000753, -0.03200000000000003, -0.023999999999999133, 0.020749999999999602, 0.002000000000000668, 0.08500000000000085, 0.06800000000000139, 0.09000000000000163, -0.009999999999999787, -0.026750000000001606], zp_timestamp='2025-11-24T21:33:00')
2025-11-24T23:36:40.211 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:36:40.223 [DEBUG] [Thread-198983] [transport.py] [_log()] starting thread (client mode): 0xd07137f0
2025-11-24T23:36:40.223 [DEBUG] [Thread-198983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:36:40.238 [DEBUG] [Thread-198983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:36:40.238 [INFO] [Thread-198983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] client lang: <none>
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] server lang: <none>
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] kex follows: False
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:36:40.245 [DEBUG] [Thread-198983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:36:40.246 [DEBUG] [Thread-198983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:36:40.246 [DEBUG] [Thread-198983] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:36:40.246 [DEBUG] [Thread-198983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:36:40.246 [DEBUG] [Thread-198983] [transport.py] [_log()] Compression: none
2025-11-24T23:36:40.246 [DEBUG] [Thread-198983] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:36:40.301 [DEBUG] [Thread-198983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:36:40.301 [DEBUG] [Thread-198983] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:36:40.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:36:40.307 [DEBUG] [Thread-198983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:36:40.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:36:40.358 [DEBUG] [Thread-198983] [transport.py] [_log()] userauth is OK
2025-11-24T23:36:40.358 [DEBUG] [Thread-198983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:36:40.359 [DEBUG] [Thread-198983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:36:40.359 [DEBUG] [Thread-198983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:36:40.359 [DEBUG] [Thread-198983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:36:40.372 [INFO] [Thread-198983] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:36:40.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:36:40.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:36:41.187 [DEBUG] [Thread-198983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:36:41.188 [DEBUG] [Thread-198983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:36:41.235 [DEBUG] [Thread-198983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:36:41.235 [DEBUG] [Thread-198983] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:36:41.244 [DEBUG] [Thread-198983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:36:41.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:36:41.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-11-24T23:36:41.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-11-24T23:36:41.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:36:41.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:36:41.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:36:41.282 [DEBUG] [Thread-198983] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:36:52.852 [DEBUG] [Thread-198985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:56.249 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:58.272 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:36:58.275 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:37:00.714 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:37:01.149 [DEBUG] [Thread-198986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:37:06.745 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:37:08.201 [DEBUG] [Thread-198987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:37:11.240 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:37:11.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:37:11.310 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:37:11.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-11-24T23:37:13.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 36, 35), 14.58, 36.33, 0.0, 23.34, 13.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:37:13.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:36:35
2025-11-24T23:37:13.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:37:14.004 [DEBUG] [Thread-198988] [transport.py] [_log()] starting thread (client mode): 0xd317eb30
2025-11-24T23:37:14.005 [DEBUG] [Thread-198988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:37:14.009 [DEBUG] [Thread-198988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:37:14.009 [INFO] [Thread-198988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:37:14.016 [DEBUG] [Thread-198988] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] client lang: <none>
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] server lang: <none>
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] kex follows: False
2025-11-24T23:37:14.017 [DEBUG] [Thread-198988] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:37:14.018 [DEBUG] [Thread-198988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:37:14.018 [DEBUG] [Thread-198988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:37:14.018 [DEBUG] [Thread-198988] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:37:14.018 [DEBUG] [Thread-198988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:37:14.018 [DEBUG] [Thread-198988] [transport.py] [_log()] Compression: none
2025-11-24T23:37:14.018 [DEBUG] [Thread-198988] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:37:14.055 [DEBUG] [Thread-198988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:37:14.061 [DEBUG] [Thread-198988] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:37:14.063 [DEBUG] [Thread-198988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:37:14.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:37:14.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:37:14.068 [DEBUG] [Thread-198988] [transport.py] [_log()] userauth is OK
2025-11-24T23:37:14.068 [DEBUG] [Thread-198988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:37:14.068 [DEBUG] [Thread-198988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:37:14.068 [DEBUG] [Thread-198988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:37:14.068 [DEBUG] [Thread-198988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:37:14.087 [INFO] [Thread-198988] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:37:14.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:37:14.714 [DEBUG] [Thread-198988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:37:14.714 [DEBUG] [Thread-198988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:37:14.715 [DEBUG] [Thread-198988] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:37:14.755 [DEBUG] [Thread-198988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:37:14.755 [DEBUG] [Thread-198988] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:37:14.757 [DEBUG] [Thread-198988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:37:14.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:37:14.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:37:14.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:37:14.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:37:14.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:37:14.781 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:37:14.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:37:14.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:37:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:37:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.900393 -999.00  +13.50  16.37     41   +0.50 1 1 1 1 1     0    0 12.91 3.94 ZNESW 12.3 16.4 153.2 25.8 13.8 -24.8 13.7 -24.3 13.4 -23.0 13.8 -23.9
2025-11-24T23:37:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:37:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:37:14.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.900393
2025-11-24T23:37:14.789 [DEBUG] [Thread-198988] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:37:14.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:37:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:37:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:37:14.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:37:14.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:37:14.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:36:35', tmtdew=14.58, humidity=36.33, cloud=0.0, wind=23.34, temperature=13.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:36:36', seeing=0.92, atlas_timestamp='2025-11-24T21:36:33.955', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.01774999999999949, -0.004749999999999588, -0.022500000000000853, 0.007999999999999119, 0.07125000000000092, 0.02200000000000024, -0.010749999999998039, 0.03399999999999892, 0.016000000000000014, 0.03524999999999956, -0.04899999999999949, 0.057000000000000384, 0.10975000000000001, 0.012999999999998124, -0.007500000000000284, -0.01425000000000054, 0.04749999999999943, 0.02800000000000047, -0.026250000000000995, 0.04699999999999882, 0.05074999999999896, 0.052250000000000796, -0.004250000000000753, -0.03200000000000003, -0.023999999999999133, 0.020749999999999602, 0.002000000000000668, 0.08500000000000085, 0.06800000000000139, 0.09000000000000163, -0.009999999999999787, -0.026750000000001606], zp_timestamp='2025-11-24T21:33:00')
2025-11-24T23:37:14.888 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:37:14.900 [DEBUG] [Thread-198991] [transport.py] [_log()] starting thread (client mode): 0xd317c3a0
2025-11-24T23:37:14.900 [DEBUG] [Thread-198991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:37:14.915 [DEBUG] [Thread-198991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:37:14.915 [INFO] [Thread-198991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] client lang: <none>
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] server lang: <none>
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] kex follows: False
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] Compression: none
2025-11-24T23:37:14.923 [DEBUG] [Thread-198991] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:37:14.985 [DEBUG] [Thread-198991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:37:14.986 [DEBUG] [Thread-198991] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:37:14.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:37:14.986 [DEBUG] [Thread-198991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:37:14.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:37:15.042 [DEBUG] [Thread-198991] [transport.py] [_log()] userauth is OK
2025-11-24T23:37:15.042 [DEBUG] [Thread-198991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:37:15.042 [DEBUG] [Thread-198991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:37:15.042 [DEBUG] [Thread-198991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:37:15.042 [DEBUG] [Thread-198991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:37:15.060 [INFO] [Thread-198991] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:37:15.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:37:15.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:37:15.868 [DEBUG] [Thread-198991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:37:15.868 [DEBUG] [Thread-198991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:37:15.917 [DEBUG] [Thread-198991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:37:15.918 [DEBUG] [Thread-198991] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:37:15.926 [DEBUG] [Thread-198991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:37:15.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:37:15.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-11-24T23:37:15.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-11-24T23:37:15.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:37:15.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:37:15.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:37:15.961 [DEBUG] [Thread-198991] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:37:23.481 [DEBUG] [Thread-198993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:37:38.775 [DEBUG] [Thread-198994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:37:45.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:37:46.010 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:37:46.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-11-24T23:37:47.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 37, 11), 14.65, 36.17, 0.0, 22.43, 13.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:37:47.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:37:11
2025-11-24T23:37:47.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:37:48.110 [DEBUG] [Thread-198995] [transport.py] [_log()] starting thread (client mode): 0xd317fe80
2025-11-24T23:37:48.111 [DEBUG] [Thread-198995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:37:48.112 [DEBUG] [Thread-198995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:37:48.112 [INFO] [Thread-198995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:37:48.117 [DEBUG] [Thread-198995] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:37:48.117 [DEBUG] [Thread-198995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:37:48.117 [DEBUG] [Thread-198995] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:37:48.117 [DEBUG] [Thread-198995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:37:48.117 [DEBUG] [Thread-198995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:37:48.117 [DEBUG] [Thread-198995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:37:48.118 [DEBUG] [Thread-198995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:37:48.118 [DEBUG] [Thread-198995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:37:48.118 [DEBUG] [Thread-198995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:37:48.118 [DEBUG] [Thread-198995] [transport.py] [_log()] client lang: <none>
2025-11-24T23:37:48.118 [DEBUG] [Thread-198995] [transport.py] [_log()] server lang: <none>
2025-11-24T23:37:48.118 [DEBUG] [Thread-198995] [transport.py] [_log()] kex follows: False
2025-11-24T23:37:48.118 [DEBUG] [Thread-198995] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:37:48.118 [DEBUG] [Thread-198995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:37:48.118 [DEBUG] [Thread-198995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:37:48.119 [DEBUG] [Thread-198995] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:37:48.119 [DEBUG] [Thread-198995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:37:48.119 [DEBUG] [Thread-198995] [transport.py] [_log()] Compression: none
2025-11-24T23:37:48.119 [DEBUG] [Thread-198995] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:37:48.153 [DEBUG] [Thread-198995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:37:48.157 [DEBUG] [Thread-198995] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:37:48.159 [DEBUG] [Thread-198995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:37:48.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:37:48.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:37:48.163 [DEBUG] [Thread-198995] [transport.py] [_log()] userauth is OK
2025-11-24T23:37:48.163 [DEBUG] [Thread-198995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:37:48.163 [DEBUG] [Thread-198995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:37:48.163 [DEBUG] [Thread-198995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:37:48.163 [DEBUG] [Thread-198995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:37:48.187 [INFO] [Thread-198995] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:37:48.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:37:48.827 [DEBUG] [Thread-198995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:37:48.827 [DEBUG] [Thread-198995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:37:48.828 [DEBUG] [Thread-198995] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:37:48.868 [DEBUG] [Thread-198995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:37:48.868 [DEBUG] [Thread-198995] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:37:48.871 [DEBUG] [Thread-198995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:37:48.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:37:48.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:37:48.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:37:48.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:37:48.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:37:48.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:37:48.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:37:48.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:37:48.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:37:48.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.900740 -999.00  +13.50  15.78     41   +0.60 1 1 1 1 1     0    0 13.16 5.26 ZNESW 20.2 15.8 159.5 24.8 13.8 -24.7 13.7 -24.3 13.5 -23.0 13.8 -24.1
2025-11-24T23:37:48.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:37:48.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:37:48.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.900740
2025-11-24T23:37:48.902 [DEBUG] [Thread-198995] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:37:48.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:37:48.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:37:48.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:37:48.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:37:48.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:37:48.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:37:11', tmtdew=14.65, humidity=36.17, cloud=0.0, wind=22.43, temperature=13.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:37:45', seeing=0.91, atlas_timestamp='2025-11-24T21:37:03.936', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.01774999999999949, -0.004749999999999588, -0.022500000000000853, 0.007999999999999119, 0.07125000000000092, 0.02200000000000024, -0.010749999999998039, 0.03399999999999892, 0.016000000000000014, 0.03524999999999956, -0.04899999999999949, 0.057000000000000384, 0.10975000000000001, 0.012999999999998124, -0.007500000000000284, -0.01425000000000054, 0.04749999999999943, 0.02800000000000047, -0.026250000000000995, 0.04699999999999882, 0.05074999999999896, 0.052250000000000796, -0.004250000000000753, -0.03200000000000003, -0.023999999999999133, 0.020749999999999602, 0.002000000000000668, 0.08500000000000085, 0.06800000000000139, 0.09000000000000163, -0.009999999999999787, -0.026750000000001606], zp_timestamp='2025-11-24T21:33:00')
2025-11-24T23:37:49.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:37:49.016 [DEBUG] [Thread-198998] [transport.py] [_log()] starting thread (client mode): 0xd07ce2c0
2025-11-24T23:37:49.016 [DEBUG] [Thread-198998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:37:49.032 [DEBUG] [Thread-198998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:37:49.032 [INFO] [Thread-198998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] client lang: <none>
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] server lang: <none>
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] kex follows: False
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] Compression: none
2025-11-24T23:37:49.040 [DEBUG] [Thread-198998] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:37:49.100 [DEBUG] [Thread-198998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:37:49.101 [DEBUG] [Thread-198998] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:37:49.101 [DEBUG] [Thread-198998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:37:49.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:37:49.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:37:49.161 [DEBUG] [Thread-198998] [transport.py] [_log()] userauth is OK
2025-11-24T23:37:49.161 [DEBUG] [Thread-198998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:37:49.161 [DEBUG] [Thread-198998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:37:49.161 [DEBUG] [Thread-198998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:37:49.161 [DEBUG] [Thread-198998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:37:49.186 [INFO] [Thread-198998] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:37:49.187 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:37:49.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:37:50.040 [DEBUG] [Thread-198998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:37:50.040 [DEBUG] [Thread-198998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:37:50.087 [DEBUG] [Thread-198998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:37:50.087 [DEBUG] [Thread-198998] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:37:50.096 [DEBUG] [Thread-198998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:37:50.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:37:50.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-11-24T23:37:50.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-11-24T23:37:50.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:37:50.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:37:50.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:37:50.133 [DEBUG] [Thread-198998] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:37:53.897 [DEBUG] [Thread-199000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:37:58.478 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:37:58.480 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:38:01.788 [DEBUG] [Thread-199001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:38:09.133 [DEBUG] [Thread-199002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:38:19.536 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:38:20.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:38:20.158 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:38:20.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-11-24T23:38:21.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 37, 45), 14.66, 36.1, 0.0, 25.35, 13.56, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:38:21.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:37:45
2025-11-24T23:38:21.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:38:22.173 [DEBUG] [Thread-199003] [transport.py] [_log()] starting thread (client mode): 0xd317d6c0
2025-11-24T23:38:22.175 [DEBUG] [Thread-199003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:38:22.179 [DEBUG] [Thread-199003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:38:22.179 [INFO] [Thread-199003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] client lang: <none>
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] server lang: <none>
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] kex follows: False
2025-11-24T23:38:22.185 [DEBUG] [Thread-199003] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:38:22.186 [DEBUG] [Thread-199003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:38:22.186 [DEBUG] [Thread-199003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:38:22.186 [DEBUG] [Thread-199003] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:38:22.186 [DEBUG] [Thread-199003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:38:22.186 [DEBUG] [Thread-199003] [transport.py] [_log()] Compression: none
2025-11-24T23:38:22.186 [DEBUG] [Thread-199003] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:38:22.230 [DEBUG] [Thread-199003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:38:22.237 [DEBUG] [Thread-199003] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:38:22.239 [DEBUG] [Thread-199003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:38:22.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:38:22.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:38:22.244 [DEBUG] [Thread-199003] [transport.py] [_log()] userauth is OK
2025-11-24T23:38:22.244 [DEBUG] [Thread-199003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:38:22.244 [DEBUG] [Thread-199003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:38:22.244 [DEBUG] [Thread-199003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:38:22.244 [DEBUG] [Thread-199003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:38:22.301 [INFO] [Thread-199003] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:38:22.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:38:22.937 [DEBUG] [Thread-199003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:38:22.937 [DEBUG] [Thread-199003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:38:22.938 [DEBUG] [Thread-199003] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:38:22.978 [DEBUG] [Thread-199003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:38:22.978 [DEBUG] [Thread-199003] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:38:22.980 [DEBUG] [Thread-199003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:38:22.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:38:22.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:38:22.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:38:22.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:38:23.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:38:23.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:38:23.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:38:23.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:38:23.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:38:23.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.901087 -999.00  +13.50  17.85     41   +0.60 1 1 1 1 1     0    0 13.12 5.77 ZNESW 18.3 17.9 157.1 25.7 13.8 -24.6 13.7 -24.3 13.4 -22.9 13.7 -24.0
2025-11-24T23:38:23.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:38:23.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:38:23.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.901087
2025-11-24T23:38:23.017 [DEBUG] [Thread-199003] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:38:23.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:38:23.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:38:23.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:38:23.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:38:23.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:38:23.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:37:45', tmtdew=14.66, humidity=36.1, cloud=0.0, wind=25.35, temperature=13.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:38:19', seeing=0.99, atlas_timestamp='2025-11-24T21:37:33.917', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.03074999999999939, -0.005250000000000199, -0.021500000000001407, 0.04499999999999993, 0.052250000000000796, 0.01750000000000007, -0.0007500000000000284, 0.027499999999999858, 0.010999999999999233, 0.0442499999999999, -0.05749999999999922, 0.0730000000000004, 0.07174999999999976, 0.009999999999999787, -0.005000000000000782, -0.0017499999999994742, 0.034000000000000696, 0.032999999999999474, -0.0027500000000006963, 0.01899999999999835, 0.025749999999998607, 0.02775000000000105, -0.0072499999999990905, -0.04800000000000004, -0.019000000000000128, 0.03275000000000006, 0.048500000000000654, 0.10299999999999976, 0.08700000000000152, 0.08800000000000097, 0.015000000000000568, -0.04225000000000101], zp_timestamp='2025-11-24T21:36:00')
2025-11-24T23:38:23.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:38:23.124 [DEBUG] [Thread-199006] [transport.py] [_log()] starting thread (client mode): 0xd0739780
2025-11-24T23:38:23.124 [DEBUG] [Thread-199006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:38:23.142 [DEBUG] [Thread-199006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:38:23.143 [INFO] [Thread-199006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] client lang: <none>
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] server lang: <none>
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] kex follows: False
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] Compression: none
2025-11-24T23:38:23.150 [DEBUG] [Thread-199006] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:38:23.209 [DEBUG] [Thread-199006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:38:23.209 [DEBUG] [Thread-199006] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:38:23.209 [DEBUG] [Thread-199006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:38:23.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:38:23.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:38:23.276 [DEBUG] [Thread-199006] [transport.py] [_log()] userauth is OK
2025-11-24T23:38:23.276 [DEBUG] [Thread-199006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:38:23.276 [DEBUG] [Thread-199006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:38:23.276 [DEBUG] [Thread-199006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:38:23.276 [DEBUG] [Thread-199006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:38:23.291 [INFO] [Thread-199006] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:38:23.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:38:23.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:38:23.653 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:38:24.202 [DEBUG] [Thread-199006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:38:24.202 [DEBUG] [Thread-199006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:38:24.247 [DEBUG] [Thread-199008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:38:24.250 [DEBUG] [Thread-199006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:38:24.250 [DEBUG] [Thread-199006] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:38:24.258 [DEBUG] [Thread-199006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:38:24.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:38:24.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-11-24T23:38:24.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:38:24.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:38:24.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:38:24.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:38:24.292 [DEBUG] [Thread-199006] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:38:39.537 [DEBUG] [Thread-199009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:38:54.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:38:54.366 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:38:54.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-11-24T23:38:54.715 [DEBUG] [Thread-199010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:38:56.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 38, 19), 14.62, 36.25, 0.0, 25.73, 13.62, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:38:56.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:38:19
2025-11-24T23:38:56.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:38:56.421 [DEBUG] [Thread-199011] [transport.py] [_log()] starting thread (client mode): 0xd3149660
2025-11-24T23:38:56.422 [DEBUG] [Thread-199011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:38:56.432 [DEBUG] [Thread-199011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:38:56.432 [INFO] [Thread-199011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] client lang: <none>
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] server lang: <none>
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] kex follows: False
2025-11-24T23:38:56.439 [DEBUG] [Thread-199011] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:38:56.440 [DEBUG] [Thread-199011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:38:56.440 [DEBUG] [Thread-199011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:38:56.440 [DEBUG] [Thread-199011] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:38:56.440 [DEBUG] [Thread-199011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:38:56.440 [DEBUG] [Thread-199011] [transport.py] [_log()] Compression: none
2025-11-24T23:38:56.440 [DEBUG] [Thread-199011] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:38:56.479 [DEBUG] [Thread-199011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:38:56.483 [DEBUG] [Thread-199011] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:38:56.484 [DEBUG] [Thread-199011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:38:56.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:38:56.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:38:56.488 [DEBUG] [Thread-199011] [transport.py] [_log()] userauth is OK
2025-11-24T23:38:56.488 [DEBUG] [Thread-199011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:38:56.488 [DEBUG] [Thread-199011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:38:56.488 [DEBUG] [Thread-199011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:38:56.488 [DEBUG] [Thread-199011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:38:56.508 [INFO] [Thread-199011] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:38:56.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:38:57.288 [DEBUG] [Thread-199011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:38:57.288 [DEBUG] [Thread-199011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:38:57.289 [DEBUG] [Thread-199011] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:38:57.329 [DEBUG] [Thread-199011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:38:57.329 [DEBUG] [Thread-199011] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:38:57.332 [DEBUG] [Thread-199011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:38:57.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:38:57.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:38:57.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:38:57.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:38:57.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:38:57.357 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:38:57.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:38:57.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:38:57.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:38:57.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.901434 -999.00  +13.50  19.61     41   +0.50 1 1 1 1 1     0    0 12.75 6.64 ZNESW 17.9 19.6 162.3 25.6 13.8 -24.7 13.7 -24.4 13.4 -23.1 13.7 -24.0
2025-11-24T23:38:57.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:38:57.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:38:57.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.901434
2025-11-24T23:38:57.370 [DEBUG] [Thread-199011] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:38:57.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:38:57.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:38:57.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:38:57.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:38:57.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:38:57.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:38:19', tmtdew=14.62, humidity=36.25, cloud=0.0, wind=25.73, temperature=13.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:38:53', seeing=0.92, atlas_timestamp='2025-11-24T21:38:03.898', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.03074999999999939, -0.005250000000000199, -0.021500000000001407, 0.04499999999999993, 0.052250000000000796, 0.01750000000000007, -0.0007500000000000284, 0.027499999999999858, 0.010999999999999233, 0.0442499999999999, -0.05749999999999922, 0.0730000000000004, 0.07174999999999976, 0.009999999999999787, -0.005000000000000782, -0.0017499999999994742, 0.034000000000000696, 0.032999999999999474, -0.0027500000000006963, 0.01899999999999835, 0.025749999999998607, 0.02775000000000105, -0.0072499999999990905, -0.04800000000000004, -0.019000000000000128, 0.03275000000000006, 0.048500000000000654, 0.10299999999999976, 0.08700000000000152, 0.08800000000000097, 0.015000000000000568, -0.04225000000000101], zp_timestamp='2025-11-24T21:36:00')
2025-11-24T23:38:57.465 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:38:57.477 [DEBUG] [Thread-199014] [transport.py] [_log()] starting thread (client mode): 0xc9b834f0
2025-11-24T23:38:57.477 [DEBUG] [Thread-199014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:38:57.491 [DEBUG] [Thread-199014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:38:57.491 [INFO] [Thread-199014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] client lang: <none>
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] server lang: <none>
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] kex follows: False
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] Compression: none
2025-11-24T23:38:57.499 [DEBUG] [Thread-199014] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:38:57.557 [DEBUG] [Thread-199014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:38:57.557 [DEBUG] [Thread-199014] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:38:57.557 [DEBUG] [Thread-199014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:38:57.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:38:57.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:38:57.614 [DEBUG] [Thread-199014] [transport.py] [_log()] userauth is OK
2025-11-24T23:38:57.614 [DEBUG] [Thread-199014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:38:57.614 [DEBUG] [Thread-199014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:38:57.614 [DEBUG] [Thread-199014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:38:57.614 [DEBUG] [Thread-199014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:38:57.628 [INFO] [Thread-199014] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:38:57.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:38:57.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:38:58.470 [DEBUG] [Thread-199014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:38:58.470 [DEBUG] [Thread-199014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:38:58.518 [DEBUG] [Thread-199014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:38:58.518 [DEBUG] [Thread-199014] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:38:58.526 [DEBUG] [Thread-199014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:38:58.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:38:58.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:38: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-11-24T23:38:58.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:38:58.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:38:58.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:38:58.558 [DEBUG] [Thread-199014] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:38:58.702 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:38:58.703 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:39:02.298 [DEBUG] [Thread-199016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:39:09.905 [DEBUG] [Thread-199017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:39:25.198 [DEBUG] [Thread-199018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:39:28.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:39:28.598 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:39:28.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-11-24T23:39:30.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 38, 53), 14.78, 36.07, 0.0, 23.73, 13.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:39:30.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:38:53
2025-11-24T23:39:30.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:39:30.412 [DEBUG] [Thread-199019] [transport.py] [_log()] starting thread (client mode): 0xd0713640
2025-11-24T23:39:30.414 [DEBUG] [Thread-199019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:39:30.419 [DEBUG] [Thread-199019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:39:30.419 [INFO] [Thread-199019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:39:30.427 [DEBUG] [Thread-199019] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] client lang: <none>
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] server lang: <none>
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] kex follows: False
2025-11-24T23:39:30.428 [DEBUG] [Thread-199019] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:39:30.429 [DEBUG] [Thread-199019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:39:30.429 [DEBUG] [Thread-199019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:39:30.429 [DEBUG] [Thread-199019] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:39:30.429 [DEBUG] [Thread-199019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:39:30.429 [DEBUG] [Thread-199019] [transport.py] [_log()] Compression: none
2025-11-24T23:39:30.429 [DEBUG] [Thread-199019] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:39:30.466 [DEBUG] [Thread-199019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:39:30.472 [DEBUG] [Thread-199019] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:39:30.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:39:30.475 [DEBUG] [Thread-199019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:39:30.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:39:30.479 [DEBUG] [Thread-199019] [transport.py] [_log()] userauth is OK
2025-11-24T23:39:30.479 [DEBUG] [Thread-199019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:39:30.479 [DEBUG] [Thread-199019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:39:30.479 [DEBUG] [Thread-199019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:39:30.479 [DEBUG] [Thread-199019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:39:30.499 [INFO] [Thread-199019] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:39:30.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:39:31.126 [DEBUG] [Thread-199019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:39:31.126 [DEBUG] [Thread-199019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:39:31.127 [DEBUG] [Thread-199019] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:39:31.167 [DEBUG] [Thread-199019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:39:31.167 [DEBUG] [Thread-199019] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:39:31.169 [DEBUG] [Thread-199019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:39:31.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:39:31.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:39:31.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:39:31.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:39:31.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:39:31.197 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:39:31.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:39:31.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:39:31.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:39:31.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.901782 -999.00  +13.50  17.49     41   +0.50 1 1 1 1 1     0    0 13.17 7.78 ZNESW 17.4 17.5 160.8 23.6 13.8 -24.9 13.7 -24.4 13.4 -23.3 13.7 -24.3
2025-11-24T23:39:31.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:39:31.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:39:31.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.901782
2025-11-24T23:39:31.211 [DEBUG] [Thread-199019] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:39:31.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:39:31.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:39:31.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:39:31.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:39:31.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:39:31.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:38:53', tmtdew=14.78, humidity=36.07, cloud=0.0, wind=23.73, temperature=13.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:39:27', seeing=0.82, atlas_timestamp='2025-11-24T21:38:33.965', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.03074999999999939, -0.005250000000000199, -0.021500000000001407, 0.04499999999999993, 0.052250000000000796, 0.01750000000000007, -0.0007500000000000284, 0.027499999999999858, 0.010999999999999233, 0.0442499999999999, -0.05749999999999922, 0.0730000000000004, 0.07174999999999976, 0.009999999999999787, -0.005000000000000782, -0.0017499999999994742, 0.034000000000000696, 0.032999999999999474, -0.0027500000000006963, 0.01899999999999835, 0.025749999999998607, 0.02775000000000105, -0.0072499999999990905, -0.04800000000000004, -0.019000000000000128, 0.03275000000000006, 0.048500000000000654, 0.10299999999999976, 0.08700000000000152, 0.08800000000000097, 0.015000000000000568, -0.04225000000000101], zp_timestamp='2025-11-24T21:36:00')
2025-11-24T23:39:31.308 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:39:31.321 [DEBUG] [Thread-199022] [transport.py] [_log()] starting thread (client mode): 0xd3149cc0
2025-11-24T23:39:31.321 [DEBUG] [Thread-199022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:39:31.335 [DEBUG] [Thread-199022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:39:31.335 [INFO] [Thread-199022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] client lang: <none>
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] server lang: <none>
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] kex follows: False
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] Compression: none
2025-11-24T23:39:31.343 [DEBUG] [Thread-199022] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:39:31.402 [DEBUG] [Thread-199022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:39:31.402 [DEBUG] [Thread-199022] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:39:31.402 [DEBUG] [Thread-199022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:39:31.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:39:31.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:39:31.458 [DEBUG] [Thread-199022] [transport.py] [_log()] userauth is OK
2025-11-24T23:39:31.458 [DEBUG] [Thread-199022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:39:31.458 [DEBUG] [Thread-199022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:39:31.459 [DEBUG] [Thread-199022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:39:31.459 [DEBUG] [Thread-199022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:39:31.473 [INFO] [Thread-199022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:39:31.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:39:31.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:39:32.293 [DEBUG] [Thread-199022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:39:32.294 [DEBUG] [Thread-199022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:39:32.342 [DEBUG] [Thread-199022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:39:32.342 [DEBUG] [Thread-199022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:39:32.354 [DEBUG] [Thread-199022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:39:32.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:39:32.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-11-24T23:39:32.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-11-24T23:39:32.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:39:32.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:39:32.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:39:32.409 [DEBUG] [Thread-199022] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:39:40.409 [DEBUG] [Thread-199024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:39:55.697 [DEBUG] [Thread-199025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:39:58.928 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:39:58.934 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:40:02.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:40:02.435 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:40:02.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-11-24T23:40:02.682 [DEBUG] [Thread-199026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:40:04.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 39, 27), 14.75, 36.13, 0.0, 25.58, 13.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:40:04.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:39:27
2025-11-24T23:40:04.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:40:04.524 [DEBUG] [Thread-199027] [transport.py] [_log()] starting thread (client mode): 0xd31f57b0
2025-11-24T23:40:04.526 [DEBUG] [Thread-199027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:40:04.527 [DEBUG] [Thread-199027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:40:04.527 [INFO] [Thread-199027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] client lang: <none>
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] server lang: <none>
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] kex follows: False
2025-11-24T23:40:04.536 [DEBUG] [Thread-199027] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:40:04.537 [DEBUG] [Thread-199027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:40:04.537 [DEBUG] [Thread-199027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:40:04.538 [DEBUG] [Thread-199027] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:40:04.538 [DEBUG] [Thread-199027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:40:04.538 [DEBUG] [Thread-199027] [transport.py] [_log()] Compression: none
2025-11-24T23:40:04.538 [DEBUG] [Thread-199027] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:40:04.585 [DEBUG] [Thread-199027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:40:04.589 [DEBUG] [Thread-199027] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:40:04.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:40:04.594 [DEBUG] [Thread-199027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:40:04.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:40:04.599 [DEBUG] [Thread-199027] [transport.py] [_log()] userauth is OK
2025-11-24T23:40:04.599 [DEBUG] [Thread-199027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:40:04.600 [DEBUG] [Thread-199027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:40:04.600 [DEBUG] [Thread-199027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:40:04.600 [DEBUG] [Thread-199027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:40:04.624 [INFO] [Thread-199027] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:40:04.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:40:05.735 [DEBUG] [Thread-199027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:40:05.735 [DEBUG] [Thread-199027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:40:05.735 [DEBUG] [Thread-199027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:40:05.776 [DEBUG] [Thread-199027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:40:05.776 [DEBUG] [Thread-199027] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:40:05.782 [DEBUG] [Thread-199027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:40:05.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:40:05.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:40:05.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:40:05.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:40:05.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:40:05.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:40:05.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:40:05.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:40:05.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:40:05.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.902476 -999.00  +13.50  15.90     41   +0.50 1 1 1 1 1     0    0 13.12 9.29 ZNESW 17.6 15.9 156.4 25.9 13.8 -24.8 13.7 -24.2 13.4 -23.1 13.8 -24.1
2025-11-24T23:40:05.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:40:05.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:40:05.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.902476
2025-11-24T23:40:05.837 [DEBUG] [Thread-199027] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:40:05.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:40:05.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:40:05.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:40:05.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:40:05.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:40:05.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:39:27', tmtdew=14.75, humidity=36.13, cloud=0.0, wind=25.58, temperature=13.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:40:01', seeing=0.8, atlas_timestamp='2025-11-24T21:39:33.926', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.03074999999999939, -0.005250000000000199, -0.021500000000001407, 0.04499999999999993, 0.052250000000000796, 0.01750000000000007, -0.0007500000000000284, 0.027499999999999858, 0.010999999999999233, 0.0442499999999999, -0.05749999999999922, 0.0730000000000004, 0.07174999999999976, 0.009999999999999787, -0.005000000000000782, -0.0017499999999994742, 0.034000000000000696, 0.032999999999999474, -0.0027500000000006963, 0.01899999999999835, 0.025749999999998607, 0.02775000000000105, -0.0072499999999990905, -0.04800000000000004, -0.019000000000000128, 0.03275000000000006, 0.048500000000000654, 0.10299999999999976, 0.08700000000000152, 0.08800000000000097, 0.015000000000000568, -0.04225000000000101], zp_timestamp='2025-11-24T21:36:00')
2025-11-24T23:40:05.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:40:05.942 [DEBUG] [Thread-199030] [transport.py] [_log()] starting thread (client mode): 0xd0710700
2025-11-24T23:40:05.942 [DEBUG] [Thread-199030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:40:05.966 [DEBUG] [Thread-199030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:40:05.966 [INFO] [Thread-199030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:40:05.973 [DEBUG] [Thread-199030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:40:05.973 [DEBUG] [Thread-199030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] client lang: <none>
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] server lang: <none>
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] kex follows: False
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] Compression: none
2025-11-24T23:40:05.974 [DEBUG] [Thread-199030] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:40:06.033 [DEBUG] [Thread-199030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:40:06.033 [DEBUG] [Thread-199030] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:40:06.034 [DEBUG] [Thread-199030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:40:06.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:40:06.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:40:06.090 [DEBUG] [Thread-199030] [transport.py] [_log()] userauth is OK
2025-11-24T23:40:06.090 [DEBUG] [Thread-199030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:40:06.090 [DEBUG] [Thread-199030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:40:06.090 [DEBUG] [Thread-199030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:40:06.090 [DEBUG] [Thread-199030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:40:06.106 [INFO] [Thread-199030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:40:06.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:40:06.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:40:06.971 [DEBUG] [Thread-199030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:40:06.975 [DEBUG] [Thread-199030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:40:07.019 [DEBUG] [Thread-199030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:40:07.019 [DEBUG] [Thread-199030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:40:07.027 [DEBUG] [Thread-199030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:40:07.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:40:07.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-11-24T23:40:07.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-11-24T23:40:07.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:40:07.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:40:07.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:40:07.064 [DEBUG] [Thread-199030] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:40:10.810 [DEBUG] [Thread-199032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:40:26.159 [DEBUG] [Thread-199033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:40:37.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:40:37.110 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:40:37.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:40:38.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 40, 1), 14.76, 36.12, 0.0, 25.58, 13.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:40:38.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:40:01
2025-11-24T23:40:38.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:40:38.908 [DEBUG] [Thread-199034] [transport.py] [_log()] starting thread (client mode): 0xd0712500
2025-11-24T23:40:38.909 [DEBUG] [Thread-199034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:40:38.910 [DEBUG] [Thread-199034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:40:38.910 [INFO] [Thread-199034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] client lang: <none>
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] server lang: <none>
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] kex follows: False
2025-11-24T23:40:38.916 [DEBUG] [Thread-199034] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:40:38.917 [DEBUG] [Thread-199034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:40:38.917 [DEBUG] [Thread-199034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:40:38.917 [DEBUG] [Thread-199034] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:40:38.917 [DEBUG] [Thread-199034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:40:38.917 [DEBUG] [Thread-199034] [transport.py] [_log()] Compression: none
2025-11-24T23:40:38.917 [DEBUG] [Thread-199034] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:40:38.951 [DEBUG] [Thread-199034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:40:38.956 [DEBUG] [Thread-199034] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:40:38.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:40:38.959 [DEBUG] [Thread-199034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:40:38.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:40:38.962 [DEBUG] [Thread-199034] [transport.py] [_log()] userauth is OK
2025-11-24T23:40:38.962 [DEBUG] [Thread-199034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:40:38.962 [DEBUG] [Thread-199034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:40:38.962 [DEBUG] [Thread-199034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:40:38.962 [DEBUG] [Thread-199034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:40:38.996 [INFO] [Thread-199034] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:40:38.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:40:39.626 [DEBUG] [Thread-199034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:40:39.626 [DEBUG] [Thread-199034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:40:39.626 [DEBUG] [Thread-199034] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:40:39.667 [DEBUG] [Thread-199034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:40:39.667 [DEBUG] [Thread-199034] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:40:39.670 [DEBUG] [Thread-199034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:40:39.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:40:39.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:40:39.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:40:39.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:40:39.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:40:39.691 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:40:39.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:40:39.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:40:39.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:40:39.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.902823 -999.00  +13.50  17.31     41   +0.50 1 1 1 1 1     0    0 13.50 11.74 ZNESW 16.5 17.3 155.8 21.4 13.8 -24.8 13.7 -24.4 13.4 -23.3 13.7 -24.2
2025-11-24T23:40:39.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:40:39.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:40:39.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.902823
2025-11-24T23:40:39.705 [DEBUG] [Thread-199034] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:40:39.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:40:39.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:40:39.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:40:39.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:40:39.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:40:39.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:40:01', tmtdew=14.76, humidity=36.12, cloud=0.0, wind=25.58, temperature=13.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:40:36', seeing=0.78, atlas_timestamp='2025-11-24T21:40:03.907', atlas_cloud=1, atlas_rain=1, zp_data=[-0.007250000000000867, -0.03074999999999939, -0.005250000000000199, -0.021500000000001407, 0.04499999999999993, 0.052250000000000796, 0.01750000000000007, -0.0007500000000000284, 0.027499999999999858, 0.010999999999999233, 0.0442499999999999, -0.05749999999999922, 0.0730000000000004, 0.07174999999999976, 0.009999999999999787, -0.005000000000000782, -0.0017499999999994742, 0.034000000000000696, 0.032999999999999474, -0.0027500000000006963, 0.01899999999999835, 0.025749999999998607, 0.02775000000000105, -0.0072499999999990905, -0.04800000000000004, -0.019000000000000128, 0.03275000000000006, 0.048500000000000654, 0.10299999999999976, 0.08700000000000152, 0.08800000000000097, 0.015000000000000568, -0.04225000000000101], zp_timestamp='2025-11-24T21:36:00')
2025-11-24T23:40:39.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:40:39.818 [DEBUG] [Thread-199037] [transport.py] [_log()] starting thread (client mode): 0xd0786950
2025-11-24T23:40:39.818 [DEBUG] [Thread-199037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:40:39.834 [DEBUG] [Thread-199037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:40:39.834 [INFO] [Thread-199037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] client lang: <none>
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] server lang: <none>
2025-11-24T23:40:39.842 [DEBUG] [Thread-199037] [transport.py] [_log()] kex follows: False
2025-11-24T23:40:39.843 [DEBUG] [Thread-199037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:40:39.843 [DEBUG] [Thread-199037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:40:39.843 [DEBUG] [Thread-199037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:40:39.843 [DEBUG] [Thread-199037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:40:39.843 [DEBUG] [Thread-199037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:40:39.843 [DEBUG] [Thread-199037] [transport.py] [_log()] Compression: none
2025-11-24T23:40:39.843 [DEBUG] [Thread-199037] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:40:39.901 [DEBUG] [Thread-199037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:40:39.901 [DEBUG] [Thread-199037] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:40:39.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:40:39.903 [DEBUG] [Thread-199037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:40:39.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:40:39.961 [DEBUG] [Thread-199037] [transport.py] [_log()] userauth is OK
2025-11-24T23:40:39.961 [DEBUG] [Thread-199037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:40:39.962 [DEBUG] [Thread-199037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:40:39.962 [DEBUG] [Thread-199037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:40:39.962 [DEBUG] [Thread-199037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:40:39.983 [INFO] [Thread-199037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:40:39.983 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:40:39.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:40:40.809 [DEBUG] [Thread-199037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:40:40.809 [DEBUG] [Thread-199037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:40:40.857 [DEBUG] [Thread-199037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:40:40.857 [DEBUG] [Thread-199037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:40:40.866 [DEBUG] [Thread-199037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:40:40.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:40:40.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:40:40.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-11-24T23:40:40.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:40:40.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:40:40.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:40:40.909 [DEBUG] [Thread-199037] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:40:41.306 [DEBUG] [Thread-199039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:40:56.565 [DEBUG] [Thread-199040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:40:59.142 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:40:59.144 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:41:03.068 [DEBUG] [Thread-199041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:41:10.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:41:10.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:41:10.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-11-24T23:41:11.689 [DEBUG] [Thread-199042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:41:12.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 40, 35), 14.74, 36.18, 0.0, 24.6, 13.52, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:41:12.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:40:35
2025-11-24T23:41:12.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:41:13.038 [DEBUG] [Thread-199043] [transport.py] [_log()] starting thread (client mode): 0xd07cc0d0
2025-11-24T23:41:13.039 [DEBUG] [Thread-199043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:41:13.049 [DEBUG] [Thread-199043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:41:13.049 [INFO] [Thread-199043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] client lang: <none>
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] server lang: <none>
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] kex follows: False
2025-11-24T23:41:13.062 [DEBUG] [Thread-199043] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:41:13.063 [DEBUG] [Thread-199043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:41:13.063 [DEBUG] [Thread-199043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:41:13.063 [DEBUG] [Thread-199043] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:41:13.063 [DEBUG] [Thread-199043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:41:13.063 [DEBUG] [Thread-199043] [transport.py] [_log()] Compression: none
2025-11-24T23:41:13.063 [DEBUG] [Thread-199043] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:41:13.098 [DEBUG] [Thread-199043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:41:13.103 [DEBUG] [Thread-199043] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:41:13.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:41:13.107 [DEBUG] [Thread-199043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:41:13.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:41:13.113 [DEBUG] [Thread-199043] [transport.py] [_log()] userauth is OK
2025-11-24T23:41:13.113 [DEBUG] [Thread-199043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:41:13.113 [DEBUG] [Thread-199043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:41:13.113 [DEBUG] [Thread-199043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:41:13.113 [DEBUG] [Thread-199043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:41:13.133 [INFO] [Thread-199043] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:41:13.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:41:13.784 [DEBUG] [Thread-199043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:41:13.784 [DEBUG] [Thread-199043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:41:13.785 [DEBUG] [Thread-199043] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:41:13.825 [DEBUG] [Thread-199043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:41:13.825 [DEBUG] [Thread-199043] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:41:13.829 [DEBUG] [Thread-199043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:41:13.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:41:13.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:41:13.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:41:13.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:41:13.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:41:13.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:41:13.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:41:13.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:41:13.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:41:13.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.903171 -999.00  +13.50  20.96     40   +0.50 1 1 1 1 1     0    0 13.25 13.07 ZNESW 19.8 21.0 156.6 26.1 13.8 -24.8 13.7 -24.3 13.4 -23.2 13.7 -24.0
2025-11-24T23:41:13.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:41:13.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:41:13.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.903171
2025-11-24T23:41:13.869 [DEBUG] [Thread-199043] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:41:13.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:41:13.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:41:13.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:41:13.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:41:13.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:41:13.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:40:35', tmtdew=14.74, humidity=36.18, cloud=0.0, wind=24.6, temperature=13.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:41:10', seeing=0.7, atlas_timestamp='2025-11-24T21:40:33.974', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:39:00')
2025-11-24T23:41:13.963 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:41:13.973 [DEBUG] [Thread-199046] [transport.py] [_log()] starting thread (client mode): 0xd0786440
2025-11-24T23:41:13.973 [DEBUG] [Thread-199046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:41:13.988 [DEBUG] [Thread-199046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:41:13.988 [INFO] [Thread-199046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] client lang: <none>
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] server lang: <none>
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] kex follows: False
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] Compression: none
2025-11-24T23:41:13.996 [DEBUG] [Thread-199046] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:41:14.054 [DEBUG] [Thread-199046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:41:14.055 [DEBUG] [Thread-199046] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:41:14.055 [DEBUG] [Thread-199046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:41:14.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:41:14.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:41:14.110 [DEBUG] [Thread-199046] [transport.py] [_log()] userauth is OK
2025-11-24T23:41:14.110 [DEBUG] [Thread-199046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:41:14.110 [DEBUG] [Thread-199046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:41:14.110 [DEBUG] [Thread-199046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:41:14.110 [DEBUG] [Thread-199046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:41:14.124 [INFO] [Thread-199046] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:41:14.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:41:14.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:41:14.931 [DEBUG] [Thread-199046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:41:14.931 [DEBUG] [Thread-199046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:41:14.980 [DEBUG] [Thread-199046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:41:14.980 [DEBUG] [Thread-199046] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:41:14.988 [DEBUG] [Thread-199046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:41:14.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:41:14.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-11-24T23:41:15.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-11-24T23:41:15.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:41:15.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:41:15.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:41:15.024 [DEBUG] [Thread-199046] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:41:26.874 [DEBUG] [Thread-199048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:41:42.155 [DEBUG] [Thread-199049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:41:45.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:41:45.053 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:41:45.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-11-24T23:41:46.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 41, 9), 14.7, 36.28, 0.0, 24.4, 13.57, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:41:46.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:41:09
2025-11-24T23:41:47.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:41:47.215 [DEBUG] [Thread-199050] [transport.py] [_log()] starting thread (client mode): 0xd3149540
2025-11-24T23:41:47.217 [DEBUG] [Thread-199050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:41:47.222 [DEBUG] [Thread-199050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:41:47.222 [INFO] [Thread-199050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] client lang: <none>
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] server lang: <none>
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] kex follows: False
2025-11-24T23:41:47.231 [DEBUG] [Thread-199050] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:41:47.232 [DEBUG] [Thread-199050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:41:47.232 [DEBUG] [Thread-199050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:41:47.232 [DEBUG] [Thread-199050] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:41:47.232 [DEBUG] [Thread-199050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:41:47.232 [DEBUG] [Thread-199050] [transport.py] [_log()] Compression: none
2025-11-24T23:41:47.232 [DEBUG] [Thread-199050] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:41:47.274 [DEBUG] [Thread-199050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:41:47.280 [DEBUG] [Thread-199050] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:41:47.282 [DEBUG] [Thread-199050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:41:47.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:41:47.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:41:47.286 [DEBUG] [Thread-199050] [transport.py] [_log()] userauth is OK
2025-11-24T23:41:47.286 [DEBUG] [Thread-199050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:41:47.287 [DEBUG] [Thread-199050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:41:47.287 [DEBUG] [Thread-199050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:41:47.287 [DEBUG] [Thread-199050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:41:47.317 [INFO] [Thread-199050] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:41:47.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:41:47.932 [DEBUG] [Thread-199050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:41:47.933 [DEBUG] [Thread-199050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:41:47.933 [DEBUG] [Thread-199050] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:41:47.974 [DEBUG] [Thread-199050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:41:47.974 [DEBUG] [Thread-199050] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:41:47.978 [DEBUG] [Thread-199050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:41:47.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:41:47.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:41:47.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:41:47.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:41:48.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:41:48.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:41:48.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:41:48.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:41:48.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:41:48.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.903518 -999.00  +13.50  21.54     40   +0.50 1 1 1 1 1     0    0 12.98 14.01 ZNESW 18.8 21.5 165.6 25.6 13.8 -24.8 13.7 -24.2 13.4 -23.2 13.7 -24.1
2025-11-24T23:41:48.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:41:48.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:41:48.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.903518
2025-11-24T23:41:48.022 [DEBUG] [Thread-199050] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:41:48.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:41:48.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:41:48.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:41:48.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:41:48.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:41:48.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:41:09', tmtdew=14.7, humidity=36.28, cloud=0.0, wind=24.4, temperature=13.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:41:10', seeing=0.7, atlas_timestamp='2025-11-24T21:41:03.955', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:39:00')
2025-11-24T23:41:48.132 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:41:48.145 [DEBUG] [Thread-199053] [transport.py] [_log()] starting thread (client mode): 0xd31f5600
2025-11-24T23:41:48.145 [DEBUG] [Thread-199053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:41:48.159 [DEBUG] [Thread-199053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:41:48.159 [INFO] [Thread-199053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:41:48.168 [DEBUG] [Thread-199053] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] client lang: <none>
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] server lang: <none>
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] kex follows: False
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] Compression: none
2025-11-24T23:41:48.169 [DEBUG] [Thread-199053] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:41:48.233 [DEBUG] [Thread-199053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:41:48.233 [DEBUG] [Thread-199053] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:41:48.233 [DEBUG] [Thread-199053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:41:48.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:41:48.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:41:48.292 [DEBUG] [Thread-199053] [transport.py] [_log()] userauth is OK
2025-11-24T23:41:48.292 [DEBUG] [Thread-199053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:41:48.292 [DEBUG] [Thread-199053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:41:48.292 [DEBUG] [Thread-199053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:41:48.292 [DEBUG] [Thread-199053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:41:48.306 [INFO] [Thread-199053] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:41:48.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:41:48.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:41:49.114 [DEBUG] [Thread-199053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:41:49.114 [DEBUG] [Thread-199053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:41:49.161 [DEBUG] [Thread-199053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:41:49.161 [DEBUG] [Thread-199053] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:41:49.170 [DEBUG] [Thread-199053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:41:49.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:41:49.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:41:49.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-11-24T23:41:49.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:41:49.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:41:49.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:41:49.209 [DEBUG] [Thread-199053] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:41:57.301 [DEBUG] [Thread-199055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:41:59.350 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:41:59.352 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:42:03.488 [DEBUG] [Thread-199056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:42:12.594 [DEBUG] [Thread-199057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:42:19.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:42:19.262 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:42:19.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:42:20.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 41, 44), 14.59, 36.68, 0.0, 23.59, 13.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:42:20.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:41:44
2025-11-24T23:42:21.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:42:21.342 [DEBUG] [Thread-199058] [transport.py] [_log()] starting thread (client mode): 0xd0787280
2025-11-24T23:42:21.344 [DEBUG] [Thread-199058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:42:21.348 [DEBUG] [Thread-199058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:42:21.348 [INFO] [Thread-199058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:42:21.356 [DEBUG] [Thread-199058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:42:21.356 [DEBUG] [Thread-199058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:42:21.356 [DEBUG] [Thread-199058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:42:21.357 [DEBUG] [Thread-199058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:42:21.357 [DEBUG] [Thread-199058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:42:21.357 [DEBUG] [Thread-199058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:42:21.357 [DEBUG] [Thread-199058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:42:21.357 [DEBUG] [Thread-199058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:42:21.357 [DEBUG] [Thread-199058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:42:21.357 [DEBUG] [Thread-199058] [transport.py] [_log()] client lang: <none>
2025-11-24T23:42:21.357 [DEBUG] [Thread-199058] [transport.py] [_log()] server lang: <none>
2025-11-24T23:42:21.357 [DEBUG] [Thread-199058] [transport.py] [_log()] kex follows: False
2025-11-24T23:42:21.357 [DEBUG] [Thread-199058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:42:21.358 [DEBUG] [Thread-199058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:42:21.358 [DEBUG] [Thread-199058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:42:21.358 [DEBUG] [Thread-199058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:42:21.358 [DEBUG] [Thread-199058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:42:21.358 [DEBUG] [Thread-199058] [transport.py] [_log()] Compression: none
2025-11-24T23:42:21.358 [DEBUG] [Thread-199058] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:42:21.401 [DEBUG] [Thread-199058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:42:21.435 [DEBUG] [Thread-199058] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:42:21.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:42:21.439 [DEBUG] [Thread-199058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:42:21.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:42:21.442 [DEBUG] [Thread-199058] [transport.py] [_log()] userauth is OK
2025-11-24T23:42:21.443 [DEBUG] [Thread-199058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:42:21.443 [DEBUG] [Thread-199058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:42:21.443 [DEBUG] [Thread-199058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:42:21.443 [DEBUG] [Thread-199058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:42:21.474 [INFO] [Thread-199058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:42:21.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:42:22.109 [DEBUG] [Thread-199058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:42:22.109 [DEBUG] [Thread-199058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:42:22.109 [DEBUG] [Thread-199058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:42:22.150 [DEBUG] [Thread-199058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:42:22.150 [DEBUG] [Thread-199058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:42:22.152 [DEBUG] [Thread-199058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:42:22.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:42:22.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:42:22.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:42:22.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:42:22.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:42:22.176 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:42:22.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:42:22.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:42:22.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:42:22.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.903865 -999.00  +13.50  16.64     40   +0.50 1 1 1 1 1     0    0 13.39 14.07 ZNESW 18.4 16.6 156.8 23.6 13.8 -25.0 13.7 -24.3 13.4 -23.2 13.7 -24.2
2025-11-24T23:42:22.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:42:22.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:42:22.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.903865
2025-11-24T23:42:22.184 [DEBUG] [Thread-199058] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:42:22.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:42:22.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:42:22.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:42:22.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:42:22.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:42:22.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:41:44', tmtdew=14.59, humidity=36.68, cloud=0.0, wind=23.59, temperature=13.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:42:19', seeing=0.75, atlas_timestamp='2025-11-24T21:41:33.936', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:39:00')
2025-11-24T23:42:22.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:42:22.298 [DEBUG] [Thread-199061] [transport.py] [_log()] starting thread (client mode): 0xd07cca90
2025-11-24T23:42:22.298 [DEBUG] [Thread-199061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:42:22.313 [DEBUG] [Thread-199061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:42:22.314 [INFO] [Thread-199061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] client lang: <none>
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] server lang: <none>
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] kex follows: False
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] Compression: none
2025-11-24T23:42:22.321 [DEBUG] [Thread-199061] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:42:22.378 [DEBUG] [Thread-199061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:42:22.378 [DEBUG] [Thread-199061] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:42:22.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:42:22.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:42:22.379 [DEBUG] [Thread-199061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:42:22.435 [DEBUG] [Thread-199061] [transport.py] [_log()] userauth is OK
2025-11-24T23:42:22.435 [DEBUG] [Thread-199061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:42:22.435 [DEBUG] [Thread-199061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:42:22.436 [DEBUG] [Thread-199061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:42:22.436 [DEBUG] [Thread-199061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:42:22.456 [INFO] [Thread-199061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:42:22.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:42:22.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:42:23.271 [DEBUG] [Thread-199061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:42:23.272 [DEBUG] [Thread-199061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:42:23.319 [DEBUG] [Thread-199061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:42:23.319 [DEBUG] [Thread-199061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:42:23.329 [DEBUG] [Thread-199061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:42:23.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:42:23.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-11-24T23:42:23.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-11-24T23:42:23.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:42:23.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:42:23.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:42:23.372 [DEBUG] [Thread-199061] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:42:27.764 [DEBUG] [Thread-199063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:42:43.026 [DEBUG] [Thread-199064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:42:53.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:42:53.418 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:42:53.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-11-24T23:42:55.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 42, 18), 14.59, 36.7, 0.0, 23.36, 13.61, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:42:55.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:42:18
2025-11-24T23:42:55.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:42:55.583 [DEBUG] [Thread-199065] [transport.py] [_log()] starting thread (client mode): 0xd3149060
2025-11-24T23:42:55.585 [DEBUG] [Thread-199065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:42:55.586 [DEBUG] [Thread-199065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:42:55.586 [INFO] [Thread-199065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:42:55.594 [DEBUG] [Thread-199065] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:42:55.594 [DEBUG] [Thread-199065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:42:55.594 [DEBUG] [Thread-199065] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:42:55.594 [DEBUG] [Thread-199065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:42:55.594 [DEBUG] [Thread-199065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:42:55.594 [DEBUG] [Thread-199065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:42:55.594 [DEBUG] [Thread-199065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:42:55.594 [DEBUG] [Thread-199065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:42:55.595 [DEBUG] [Thread-199065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:42:55.595 [DEBUG] [Thread-199065] [transport.py] [_log()] client lang: <none>
2025-11-24T23:42:55.595 [DEBUG] [Thread-199065] [transport.py] [_log()] server lang: <none>
2025-11-24T23:42:55.595 [DEBUG] [Thread-199065] [transport.py] [_log()] kex follows: False
2025-11-24T23:42:55.595 [DEBUG] [Thread-199065] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:42:55.595 [DEBUG] [Thread-199065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:42:55.595 [DEBUG] [Thread-199065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:42:55.599 [DEBUG] [Thread-199065] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:42:55.599 [DEBUG] [Thread-199065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:42:55.599 [DEBUG] [Thread-199065] [transport.py] [_log()] Compression: none
2025-11-24T23:42:55.599 [DEBUG] [Thread-199065] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:42:55.644 [DEBUG] [Thread-199065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:42:55.650 [DEBUG] [Thread-199065] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:42:55.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:42:55.653 [DEBUG] [Thread-199065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:42:55.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:42:55.658 [DEBUG] [Thread-199065] [transport.py] [_log()] userauth is OK
2025-11-24T23:42:55.658 [DEBUG] [Thread-199065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:42:55.658 [DEBUG] [Thread-199065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:42:55.658 [DEBUG] [Thread-199065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:42:55.658 [DEBUG] [Thread-199065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:42:55.690 [INFO] [Thread-199065] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:42:55.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:42:56.343 [DEBUG] [Thread-199065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:42:56.344 [DEBUG] [Thread-199065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:42:56.344 [DEBUG] [Thread-199065] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:42:56.384 [DEBUG] [Thread-199065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:42:56.384 [DEBUG] [Thread-199065] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:42:56.387 [DEBUG] [Thread-199065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:42:56.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:42:56.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:42:56.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:42:56.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:42:56.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:42:56.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:42:56.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:42:56.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:42:56.415 [DEBUG] [Thread-199065] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:42:56.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:42:56.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.904212 -999.00  +13.50  25.18     41   +0.50 1 1 1 1 1     0    0 13.36 15.02 ZNESW 20.0 25.2 167.4 29.2 13.7 -24.8 13.6 -24.3 13.4 -23.4 13.7 -24.2
2025-11-24T23:42:56.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:42:56.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:42:56.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.904212
2025-11-24T23:42:56.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:42:56.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:42:56.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:42:56.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:42:56.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:42:56.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:42:18', tmtdew=14.59, humidity=36.7, cloud=0.0, wind=23.36, temperature=13.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:42:52', seeing=0.71, atlas_timestamp='2025-11-24T21:42:03.917', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:39:00')
2025-11-24T23:42:56.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:42:56.541 [DEBUG] [Thread-199068] [transport.py] [_log()] starting thread (client mode): 0xd31928f0
2025-11-24T23:42:56.541 [DEBUG] [Thread-199068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:42:56.563 [DEBUG] [Thread-199068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:42:56.563 [INFO] [Thread-199068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:42:56.570 [DEBUG] [Thread-199068] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] client lang: <none>
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] server lang: <none>
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] kex follows: False
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] Compression: none
2025-11-24T23:42:56.571 [DEBUG] [Thread-199068] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:42:56.625 [DEBUG] [Thread-199068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:42:56.625 [DEBUG] [Thread-199068] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:42:56.627 [DEBUG] [Thread-199068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:42:56.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:42:56.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:42:56.685 [DEBUG] [Thread-199068] [transport.py] [_log()] userauth is OK
2025-11-24T23:42:56.686 [DEBUG] [Thread-199068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:42:56.686 [DEBUG] [Thread-199068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:42:56.686 [DEBUG] [Thread-199068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:42:56.686 [DEBUG] [Thread-199068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:42:56.705 [INFO] [Thread-199068] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:42:56.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:42:56.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:42:57.573 [DEBUG] [Thread-199068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:42:57.573 [DEBUG] [Thread-199068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:42:57.622 [DEBUG] [Thread-199068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:42:57.622 [DEBUG] [Thread-199068] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:42:57.632 [DEBUG] [Thread-199068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:42:57.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:42:57.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-11-24T23:42:57.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-11-24T23:42:57.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:42:57.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:42:57.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:42:57.669 [DEBUG] [Thread-199068] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:42:58.130 [DEBUG] [Thread-199070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:42:59.556 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:42:59.557 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:43:03.911 [DEBUG] [Thread-199071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:43:13.454 [DEBUG] [Thread-199072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:43:27.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:43:27.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:43:27.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-11-24T23:43:28.604 [DEBUG] [Thread-199073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:43:29.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 42, 52), 14.73, 36.08, 0.0, 23.78, 13.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:43:29.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:42:52
2025-11-24T23:43:29.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:43:29.837 [DEBUG] [Thread-199074] [transport.py] [_log()] starting thread (client mode): 0xd07cca30
2025-11-24T23:43:29.838 [DEBUG] [Thread-199074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:43:29.838 [DEBUG] [Thread-199074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:43:29.838 [INFO] [Thread-199074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] client lang: <none>
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] server lang: <none>
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] kex follows: False
2025-11-24T23:43:29.844 [DEBUG] [Thread-199074] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:43:29.845 [DEBUG] [Thread-199074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:43:29.845 [DEBUG] [Thread-199074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:43:29.845 [DEBUG] [Thread-199074] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:43:29.845 [DEBUG] [Thread-199074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:43:29.845 [DEBUG] [Thread-199074] [transport.py] [_log()] Compression: none
2025-11-24T23:43:29.845 [DEBUG] [Thread-199074] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:43:29.886 [DEBUG] [Thread-199074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:43:29.890 [DEBUG] [Thread-199074] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:43:29.892 [DEBUG] [Thread-199074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:43:29.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:43:29.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:43:29.896 [DEBUG] [Thread-199074] [transport.py] [_log()] userauth is OK
2025-11-24T23:43:29.896 [DEBUG] [Thread-199074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:43:29.897 [DEBUG] [Thread-199074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:43:29.897 [DEBUG] [Thread-199074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:43:29.897 [DEBUG] [Thread-199074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:43:29.927 [INFO] [Thread-199074] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:43:29.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:43:30.577 [DEBUG] [Thread-199074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:43:30.578 [DEBUG] [Thread-199074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:43:30.579 [DEBUG] [Thread-199074] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:43:30.618 [DEBUG] [Thread-199074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:43:30.618 [DEBUG] [Thread-199074] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:43:30.620 [DEBUG] [Thread-199074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:43:30.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:43:30.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:43:30.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:43:30.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:43:30.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:43:30.643 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:43:30.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:43:30.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:43:30.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:43:30.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.904906 -999.00  +13.50  20.23     41   +0.50 1 1 1 1 1     0    0 13.47 16.46 ZNESW 17.6 20.2 154.8 30.3 13.8 -24.7 13.6 -24.2 13.4 -23.2 13.7 -24.1
2025-11-24T23:43:30.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:43:30.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:43:30.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.904906
2025-11-24T23:43:30.650 [DEBUG] [Thread-199074] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:43:30.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:43:30.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:43:30.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:43:30.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:43:30.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:43:30.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:42:52', tmtdew=14.73, humidity=36.08, cloud=0.0, wind=23.78, temperature=13.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:43:27', seeing=0.88, atlas_timestamp='2025-11-24T21:43:03.878', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:39:00')
2025-11-24T23:43:30.748 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:43:30.759 [DEBUG] [Thread-199077] [transport.py] [_log()] starting thread (client mode): 0xd3192c20
2025-11-24T23:43:30.759 [DEBUG] [Thread-199077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:43:30.775 [DEBUG] [Thread-199077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:43:30.775 [INFO] [Thread-199077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] client lang: <none>
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] server lang: <none>
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] kex follows: False
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] Compression: none
2025-11-24T23:43:30.783 [DEBUG] [Thread-199077] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:43:30.842 [DEBUG] [Thread-199077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:43:30.842 [DEBUG] [Thread-199077] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:43:30.842 [DEBUG] [Thread-199077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:43:30.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:43:30.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:43:30.898 [DEBUG] [Thread-199077] [transport.py] [_log()] userauth is OK
2025-11-24T23:43:30.899 [DEBUG] [Thread-199077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:43:30.899 [DEBUG] [Thread-199077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:43:30.899 [DEBUG] [Thread-199077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:43:30.899 [DEBUG] [Thread-199077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:43:30.917 [INFO] [Thread-199077] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:43:30.917 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:43:30.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:43:31.791 [DEBUG] [Thread-199077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:43:31.791 [DEBUG] [Thread-199077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:43:31.839 [DEBUG] [Thread-199077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:43:31.839 [DEBUG] [Thread-199077] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:43:31.847 [DEBUG] [Thread-199077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:43:31.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:43:31.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-11-24T23:43:31.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-11-24T23:43:31.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:43:31.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:43:31.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:43:31.881 [DEBUG] [Thread-199077] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:43:43.741 [DEBUG] [Thread-199079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:43:47.739 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:43:58.971 [DEBUG] [Thread-199080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:43:59.762 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:43:59.764 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:44:01.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:44:01.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:44:01.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-11-24T23:44:03.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 43, 26), 14.69, 36.15, 0.0, 25.09, 13.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:44:03.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:43:26
2025-11-24T23:44:03.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:44:03.994 [DEBUG] [Thread-199081] [transport.py] [_log()] starting thread (client mode): 0xd3192440
2025-11-24T23:44:03.996 [DEBUG] [Thread-199081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:44:04.001 [DEBUG] [Thread-199081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:44:04.001 [INFO] [Thread-199081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] client lang: <none>
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] server lang: <none>
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] kex follows: False
2025-11-24T23:44:04.009 [DEBUG] [Thread-199081] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:44:04.011 [DEBUG] [Thread-199081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:44:04.011 [DEBUG] [Thread-199081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:44:04.012 [DEBUG] [Thread-199081] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:44:04.012 [DEBUG] [Thread-199081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:44:04.012 [DEBUG] [Thread-199081] [transport.py] [_log()] Compression: none
2025-11-24T23:44:04.012 [DEBUG] [Thread-199081] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:44:04.052 [DEBUG] [Thread-199081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:44:04.057 [DEBUG] [Thread-199081] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:44:04.059 [DEBUG] [Thread-199081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:44:04.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:44:04.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:44:04.064 [DEBUG] [Thread-199081] [transport.py] [_log()] userauth is OK
2025-11-24T23:44:04.065 [DEBUG] [Thread-199081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:44:04.065 [DEBUG] [Thread-199081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:44:04.065 [DEBUG] [Thread-199081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:44:04.065 [DEBUG] [Thread-199081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:44:04.095 [INFO] [Thread-199081] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:44:04.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:44:04.275 [DEBUG] [Thread-199083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:44:04.824 [DEBUG] [Thread-199081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:44:04.824 [DEBUG] [Thread-199081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:44:04.825 [DEBUG] [Thread-199081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:44:04.865 [DEBUG] [Thread-199081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:44:04.865 [DEBUG] [Thread-199081] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:44:04.867 [DEBUG] [Thread-199081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:44:04.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:44:04.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:44:04.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:44:04.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:44:04.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:44:04.889 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:44:04.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:44:04.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:44:04.891 [DEBUG] [Thread-199081] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:44:04.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:44:04.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.905254 -999.00  +13.50  16.24     40   +0.50 1 1 1 1 1     0    0 13.26 16.35 ZNESW 14.6 16.2 149.8 24.9 13.8 -24.8 13.6 -24.3 13.4 -23.1 13.7 -24.2
2025-11-24T23:44:04.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:44:04.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:44:04.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.905254
2025-11-24T23:44:04.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:44:04.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:44:04.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:44:04.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:44:04.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:44:04.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:43:26', tmtdew=14.69, humidity=36.15, cloud=0.0, wind=25.09, temperature=13.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:44:01', seeing=0.8, atlas_timestamp='2025-11-24T21:43:33.946', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:39:00')
2025-11-24T23:44:04.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:44:05.013 [DEBUG] [Thread-199085] [transport.py] [_log()] starting thread (client mode): 0xd07867a0
2025-11-24T23:44:05.013 [DEBUG] [Thread-199085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:44:05.027 [DEBUG] [Thread-199085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:44:05.028 [INFO] [Thread-199085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] client lang: <none>
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] server lang: <none>
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] kex follows: False
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:44:05.035 [DEBUG] [Thread-199085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:44:05.036 [DEBUG] [Thread-199085] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:44:05.036 [DEBUG] [Thread-199085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:44:05.036 [DEBUG] [Thread-199085] [transport.py] [_log()] Compression: none
2025-11-24T23:44:05.036 [DEBUG] [Thread-199085] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:44:05.096 [DEBUG] [Thread-199085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:44:05.097 [DEBUG] [Thread-199085] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:44:05.098 [DEBUG] [Thread-199085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:44:05.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:44:05.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:44:05.155 [DEBUG] [Thread-199085] [transport.py] [_log()] userauth is OK
2025-11-24T23:44:05.155 [DEBUG] [Thread-199085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:44:05.155 [DEBUG] [Thread-199085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:44:05.155 [DEBUG] [Thread-199085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:44:05.155 [DEBUG] [Thread-199085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:44:05.169 [INFO] [Thread-199085] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:44:05.169 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:44:05.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:44:05.982 [DEBUG] [Thread-199085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:44:05.982 [DEBUG] [Thread-199085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:44:06.030 [DEBUG] [Thread-199085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:44:06.030 [DEBUG] [Thread-199085] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:44:06.038 [DEBUG] [Thread-199085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:44:06.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:44:06.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-11-24T23:44: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-11-24T23:44:06.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:44:06.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:44:06.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:44:06.112 [DEBUG] [Thread-199085] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:44:14.115 [DEBUG] [Thread-199087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:44:29.377 [DEBUG] [Thread-199088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:44:36.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:44:36.137 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:44:36.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-11-24T23:44:37.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 44), 14.64, 36.3, 0.0, 24.97, 13.59, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:44:37.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:44:00
2025-11-24T23:44:37.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:44:37.803 [DEBUG] [Thread-199089] [transport.py] [_log()] starting thread (client mode): 0xd0787f10
2025-11-24T23:44:37.804 [DEBUG] [Thread-199089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:44:37.812 [DEBUG] [Thread-199089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:44:37.813 [INFO] [Thread-199089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] client lang: <none>
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] server lang: <none>
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] kex follows: False
2025-11-24T23:44:37.820 [DEBUG] [Thread-199089] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:44:37.821 [DEBUG] [Thread-199089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:44:37.821 [DEBUG] [Thread-199089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:44:37.821 [DEBUG] [Thread-199089] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:44:37.821 [DEBUG] [Thread-199089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:44:37.821 [DEBUG] [Thread-199089] [transport.py] [_log()] Compression: none
2025-11-24T23:44:37.821 [DEBUG] [Thread-199089] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:44:37.861 [DEBUG] [Thread-199089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:44:37.867 [DEBUG] [Thread-199089] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:44:37.869 [DEBUG] [Thread-199089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:44:37.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:44:37.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:44:37.873 [DEBUG] [Thread-199089] [transport.py] [_log()] userauth is OK
2025-11-24T23:44:37.874 [DEBUG] [Thread-199089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:44:37.874 [DEBUG] [Thread-199089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:44:37.874 [DEBUG] [Thread-199089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:44:37.874 [DEBUG] [Thread-199089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:44:37.892 [INFO] [Thread-199089] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:44:37.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:44:38.520 [DEBUG] [Thread-199089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:44:38.520 [DEBUG] [Thread-199089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:44:38.521 [DEBUG] [Thread-199089] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:44:38.561 [DEBUG] [Thread-199089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:44:38.561 [DEBUG] [Thread-199089] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:44:38.564 [DEBUG] [Thread-199089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:44:38.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:44:38.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:44:38.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:44:38.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:44:38.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:44:38.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:44:38.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:44:38.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:44:38.594 [DEBUG] [Thread-199089] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:44:38.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:44:38.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.905601 -999.00  +13.50  13.47     40   +0.40 1 1 1 1 1     0    0 13.26 15.85 ZNESW 18.6 13.5 151.4 25.4 13.8 -24.7 13.7 -24.3 13.4 -23.2 13.7 -24.2
2025-11-24T23:44:38.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:44:38.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:44:38.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.905601
2025-11-24T23:44:38.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:44:38.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:44:38.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:44:38.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:44:38.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:44:38.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:44:00', tmtdew=14.64, humidity=36.3, cloud=0.0, wind=24.97, temperature=13.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:44:35', seeing=0.96, atlas_timestamp='2025-11-24T21:44:03.926', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:42:00')
2025-11-24T23:44:38.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:44:38.726 [DEBUG] [Thread-199092] [transport.py] [_log()] starting thread (client mode): 0xd3193b50
2025-11-24T23:44:38.726 [DEBUG] [Thread-199092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:44:38.740 [DEBUG] [Thread-199092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:44:38.740 [INFO] [Thread-199092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:44:38.747 [DEBUG] [Thread-199092] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:44:38.747 [DEBUG] [Thread-199092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:44:38.747 [DEBUG] [Thread-199092] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:44:38.747 [DEBUG] [Thread-199092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:44:38.747 [DEBUG] [Thread-199092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] client lang: <none>
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] server lang: <none>
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] kex follows: False
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] Compression: none
2025-11-24T23:44:38.748 [DEBUG] [Thread-199092] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:44:38.807 [DEBUG] [Thread-199092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:44:38.808 [DEBUG] [Thread-199092] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:44:38.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:44:38.809 [DEBUG] [Thread-199092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:44:38.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:44:38.867 [DEBUG] [Thread-199092] [transport.py] [_log()] userauth is OK
2025-11-24T23:44:38.867 [DEBUG] [Thread-199092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:44:38.867 [DEBUG] [Thread-199092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:44:38.867 [DEBUG] [Thread-199092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:44:38.867 [DEBUG] [Thread-199092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:44:38.886 [INFO] [Thread-199092] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:44:38.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:44:38.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:44:39.722 [DEBUG] [Thread-199092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:44:39.722 [DEBUG] [Thread-199092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:44:39.770 [DEBUG] [Thread-199092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:44:39.770 [DEBUG] [Thread-199092] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:44:39.780 [DEBUG] [Thread-199092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:44:39.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:44:39.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-11-24T23:44:39.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-11-24T23:44:39.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:44:39.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:44:39.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:44:39.816 [DEBUG] [Thread-199092] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:44:44.520 [DEBUG] [Thread-199094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:44:59.665 [DEBUG] [Thread-199095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:44:59.966 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:44:59.968 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:45:04.694 [DEBUG] [Thread-199096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:45:09.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:45:09.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:45:09.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-11-24T23:45:10.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 44, 34), 14.7, 36.28, 0.0, 24.65, 13.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:45:10.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:44:34
2025-11-24T23:45:11.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:45:11.214 [DEBUG] [Thread-199097] [transport.py] [_log()] starting thread (client mode): 0xd31926b0
2025-11-24T23:45:11.215 [DEBUG] [Thread-199097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:45:11.215 [DEBUG] [Thread-199097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:45:11.216 [INFO] [Thread-199097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] client lang: <none>
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] server lang: <none>
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] kex follows: False
2025-11-24T23:45:11.223 [DEBUG] [Thread-199097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:45:11.224 [DEBUG] [Thread-199097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:45:11.224 [DEBUG] [Thread-199097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:45:11.224 [DEBUG] [Thread-199097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:45:11.225 [DEBUG] [Thread-199097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:45:11.225 [DEBUG] [Thread-199097] [transport.py] [_log()] Compression: none
2025-11-24T23:45:11.225 [DEBUG] [Thread-199097] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:45:11.258 [DEBUG] [Thread-199097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:45:11.263 [DEBUG] [Thread-199097] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:45:11.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:45:11.266 [DEBUG] [Thread-199097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:45:11.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:45:11.270 [DEBUG] [Thread-199097] [transport.py] [_log()] userauth is OK
2025-11-24T23:45:11.270 [DEBUG] [Thread-199097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:45:11.270 [DEBUG] [Thread-199097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:45:11.270 [DEBUG] [Thread-199097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:45:11.270 [DEBUG] [Thread-199097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:45:11.288 [INFO] [Thread-199097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:45:11.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:45:14.737 [DEBUG] [Thread-199099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:45:16.120 [DEBUG] [Thread-199097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:45:16.120 [DEBUG] [Thread-199097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:45:16.121 [DEBUG] [Thread-199097] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:45:16.161 [DEBUG] [Thread-199097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:45:16.161 [DEBUG] [Thread-199097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:45:16.165 [DEBUG] [Thread-199097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:45:16.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:45:16.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:45:16.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:45:16.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:45:16.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:45:16.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:45:16.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:45:16.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:45:16.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:45:16.237 [DEBUG] [Thread-199097] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:45:16.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.905948 -999.00  +13.50  18.57     41   +0.50 1 1 1 1 1     0    0 13.39 16.84 ZNESW 21.2 18.6 149.6 25.0 13.8 -24.9 13.7 -24.4 13.4 -23.1 13.7 -24.1
2025-11-24T23:45:16.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:45:16.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:45:16.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.905948
2025-11-24T23:45:16.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:45:16.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:45:16.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:45:16.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:45:16.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:45:16.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:44:34', tmtdew=14.7, humidity=36.28, cloud=0.0, wind=24.65, temperature=13.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:45:08', seeing=0.83, atlas_timestamp='2025-11-24T21:44:33.907', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:42:00')
2025-11-24T23:45:16.357 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:45:16.369 [DEBUG] [Thread-199101] [transport.py] [_log()] starting thread (client mode): 0xd0786650
2025-11-24T23:45:16.369 [DEBUG] [Thread-199101] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:45:16.384 [DEBUG] [Thread-199101] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:45:16.384 [INFO] [Thread-199101] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] client lang: <none>
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] server lang: <none>
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] kex follows: False
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:45:16.392 [DEBUG] [Thread-199101] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:45:16.393 [DEBUG] [Thread-199101] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:45:16.393 [DEBUG] [Thread-199101] [transport.py] [_log()] Compression: none
2025-11-24T23:45:16.393 [DEBUG] [Thread-199101] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:45:16.450 [DEBUG] [Thread-199101] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:45:16.450 [DEBUG] [Thread-199101] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:45:16.450 [DEBUG] [Thread-199101] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:45:16.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:45:16.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:45:16.508 [DEBUG] [Thread-199101] [transport.py] [_log()] userauth is OK
2025-11-24T23:45:16.508 [DEBUG] [Thread-199101] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:45:16.508 [DEBUG] [Thread-199101] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:45:16.508 [DEBUG] [Thread-199101] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:45:16.508 [DEBUG] [Thread-199101] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:45:16.533 [INFO] [Thread-199101] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:45:16.534 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:45:16.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:45:17.409 [DEBUG] [Thread-199101] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:45:17.410 [DEBUG] [Thread-199101] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:45:17.457 [DEBUG] [Thread-199101] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:45:17.458 [DEBUG] [Thread-199101] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:45:17.466 [DEBUG] [Thread-199101] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:45:17.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:45:17.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-11-24T23:45:17.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-11-24T23:45:17.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:45:17.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:45:17.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:45:17.505 [DEBUG] [Thread-199101] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:45:29.792 [DEBUG] [Thread-199103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:45:44.976 [DEBUG] [Thread-199104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:45:47.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:45:47.525 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:45:47.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-11-24T23:45:48.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 45, 41), 14.62, 36.33, 0.0, 23.27, 13.47, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:45:48.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:45:41
2025-11-24T23:45:48.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:45:48.987 [DEBUG] [Thread-199105] [transport.py] [_log()] starting thread (client mode): 0xd31f6650
2025-11-24T23:45:48.988 [DEBUG] [Thread-199105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:45:49.001 [DEBUG] [Thread-199105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:45:49.001 [INFO] [Thread-199105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:45:49.008 [DEBUG] [Thread-199105] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:45:49.008 [DEBUG] [Thread-199105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:45:49.009 [DEBUG] [Thread-199105] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:45:49.009 [DEBUG] [Thread-199105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:45:49.009 [DEBUG] [Thread-199105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:45:49.009 [DEBUG] [Thread-199105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:45:49.009 [DEBUG] [Thread-199105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:45:49.009 [DEBUG] [Thread-199105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:45:49.009 [DEBUG] [Thread-199105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:45:49.009 [DEBUG] [Thread-199105] [transport.py] [_log()] client lang: <none>
2025-11-24T23:45:49.009 [DEBUG] [Thread-199105] [transport.py] [_log()] server lang: <none>
2025-11-24T23:45:49.010 [DEBUG] [Thread-199105] [transport.py] [_log()] kex follows: False
2025-11-24T23:45:49.010 [DEBUG] [Thread-199105] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:45:49.011 [DEBUG] [Thread-199105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:45:49.011 [DEBUG] [Thread-199105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:45:49.011 [DEBUG] [Thread-199105] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:45:49.011 [DEBUG] [Thread-199105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:45:49.011 [DEBUG] [Thread-199105] [transport.py] [_log()] Compression: none
2025-11-24T23:45:49.012 [DEBUG] [Thread-199105] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:45:49.041 [DEBUG] [Thread-199105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:45:49.046 [DEBUG] [Thread-199105] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:45:49.048 [DEBUG] [Thread-199105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:45:49.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:45:49.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:45:49.054 [DEBUG] [Thread-199105] [transport.py] [_log()] userauth is OK
2025-11-24T23:45:49.054 [DEBUG] [Thread-199105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:45:49.054 [DEBUG] [Thread-199105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:45:49.054 [DEBUG] [Thread-199105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:45:49.054 [DEBUG] [Thread-199105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:45:49.075 [INFO] [Thread-199105] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:45:49.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:45:49.708 [DEBUG] [Thread-199105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:45:49.708 [DEBUG] [Thread-199105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:45:49.710 [DEBUG] [Thread-199105] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:45:49.749 [DEBUG] [Thread-199105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:45:49.749 [DEBUG] [Thread-199105] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:45:49.753 [DEBUG] [Thread-199105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:45:49.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:45:49.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:45:49.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:45:49.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:45:49.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:45:49.780 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:45:49.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:45:49.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:45:49.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:45:49.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.906296 -999.00  +13.50  16.79     41   +0.50 1 1 1 1 1     0    0 13.55 18.21 ZNESW 16.2 16.8 153.6 25.5 13.8 -24.7 13.6 -24.3 13.4 -23.2 13.7 -24.0
2025-11-24T23:45:49.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:45:49.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:45:49.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.906296
2025-11-24T23:45:49.788 [DEBUG] [Thread-199105] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:45:49.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:45:49.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:45:49.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:45:49.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:45:49.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:45:49.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:45:41', tmtdew=14.62, humidity=36.33, cloud=0.0, wind=23.27, temperature=13.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:45:42', seeing=0.88, atlas_timestamp='2025-11-24T21:45:03.974', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:42:00')
2025-11-24T23:45:49.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:45:49.908 [DEBUG] [Thread-199108] [transport.py] [_log()] starting thread (client mode): 0xd31f4400
2025-11-24T23:45:49.908 [DEBUG] [Thread-199108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:45:49.926 [DEBUG] [Thread-199108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:45:49.926 [INFO] [Thread-199108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] client lang: <none>
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] server lang: <none>
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] kex follows: False
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:45:49.934 [DEBUG] [Thread-199108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:45:49.935 [DEBUG] [Thread-199108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:45:49.935 [DEBUG] [Thread-199108] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:45:49.935 [DEBUG] [Thread-199108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:45:49.935 [DEBUG] [Thread-199108] [transport.py] [_log()] Compression: none
2025-11-24T23:45:49.935 [DEBUG] [Thread-199108] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:45:49.999 [DEBUG] [Thread-199108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:45:50.000 [DEBUG] [Thread-199108] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:45:50.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:45:50.001 [DEBUG] [Thread-199108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:45:50.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:45:50.055 [DEBUG] [Thread-199108] [transport.py] [_log()] userauth is OK
2025-11-24T23:45:50.056 [DEBUG] [Thread-199108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:45:50.056 [DEBUG] [Thread-199108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:45:50.056 [DEBUG] [Thread-199108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:45:50.056 [DEBUG] [Thread-199108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:45:50.081 [INFO] [Thread-199108] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:45:50.082 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:45:50.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:45:50.989 [DEBUG] [Thread-199108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:45:50.989 [DEBUG] [Thread-199108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:45:51.037 [DEBUG] [Thread-199108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:45:51.037 [DEBUG] [Thread-199108] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:45:51.046 [DEBUG] [Thread-199108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:45:51.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:45:51.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-11-24T23:45:51.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-11-24T23:45:51.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:45:51.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:45:51.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:45:51.086 [DEBUG] [Thread-199108] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:46:00.057 [DEBUG] [Thread-199110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:46:00.170 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:46:00.172 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:46:04.953 [DEBUG] [Thread-199111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:46:15.180 [DEBUG] [Thread-199112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:46:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:46:21.110 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:46:21.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-11-24T23:46:21.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 46, 14), 14.62, 36.37, 0.0, 23.8, 13.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:46:21.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:46:14
2025-11-24T23:46:21.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:46:22.126 [DEBUG] [Thread-199113] [transport.py] [_log()] starting thread (client mode): 0xd07cfd60
2025-11-24T23:46:22.127 [DEBUG] [Thread-199113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:46:22.132 [DEBUG] [Thread-199113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:46:22.132 [INFO] [Thread-199113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] client lang: <none>
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] server lang: <none>
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] kex follows: False
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:46:22.136 [DEBUG] [Thread-199113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:46:22.137 [DEBUG] [Thread-199113] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:46:22.137 [DEBUG] [Thread-199113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:46:22.137 [DEBUG] [Thread-199113] [transport.py] [_log()] Compression: none
2025-11-24T23:46:22.137 [DEBUG] [Thread-199113] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:46:22.163 [DEBUG] [Thread-199113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:46:22.165 [DEBUG] [Thread-199113] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:46:22.166 [DEBUG] [Thread-199113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:46:22.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:46:22.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:46:22.169 [DEBUG] [Thread-199113] [transport.py] [_log()] userauth is OK
2025-11-24T23:46:22.169 [DEBUG] [Thread-199113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:46:22.170 [DEBUG] [Thread-199113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:46:22.170 [DEBUG] [Thread-199113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:46:22.170 [DEBUG] [Thread-199113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:46:22.190 [INFO] [Thread-199113] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:46:22.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:46:22.785 [DEBUG] [Thread-199113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:46:22.785 [DEBUG] [Thread-199113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:46:22.786 [DEBUG] [Thread-199113] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:46:22.826 [DEBUG] [Thread-199113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:46:22.827 [DEBUG] [Thread-199113] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:46:22.830 [DEBUG] [Thread-199113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:46:22.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:46:22.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:46:22.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:46:22.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:46:22.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:46:22.855 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:46:22.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:46:22.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:46:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:46:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.906642 -999.00  +13.40  16.01     41   +0.50 1 1 1 1 1     0    0 13.45 18.06 ZNESW 18.9 16.0 153.0 22.8 13.8 -24.9 13.6 -24.2 13.4 -23.2 13.7 -24.2
2025-11-24T23:46:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:46:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:46:22.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.906642
2025-11-24T23:46:22.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:46:22.867 [DEBUG] [Thread-199113] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:46:22.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:46:22.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:46:22.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:46:22.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:46:22.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:46:14', tmtdew=14.62, humidity=36.37, cloud=0.0, wind=23.8, temperature=13.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:46:14', seeing=0.94, atlas_timestamp='2025-11-24T21:45:33.869', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:42:00')
2025-11-24T23:46:22.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:46:22.954 [DEBUG] [Thread-199116] [transport.py] [_log()] starting thread (client mode): 0xd0712d40
2025-11-24T23:46:22.954 [DEBUG] [Thread-199116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:46:22.970 [DEBUG] [Thread-199116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:46:22.971 [INFO] [Thread-199116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] client lang: <none>
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] server lang: <none>
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] kex follows: False
2025-11-24T23:46:22.978 [DEBUG] [Thread-199116] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:46:22.979 [DEBUG] [Thread-199116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:46:22.979 [DEBUG] [Thread-199116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:46:22.979 [DEBUG] [Thread-199116] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:46:22.979 [DEBUG] [Thread-199116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:46:22.979 [DEBUG] [Thread-199116] [transport.py] [_log()] Compression: none
2025-11-24T23:46:22.979 [DEBUG] [Thread-199116] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:46:23.038 [DEBUG] [Thread-199116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:46:23.038 [DEBUG] [Thread-199116] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:46:23.038 [DEBUG] [Thread-199116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:46:23.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:46:23.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:46:23.095 [DEBUG] [Thread-199116] [transport.py] [_log()] userauth is OK
2025-11-24T23:46:23.095 [DEBUG] [Thread-199116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:46:23.095 [DEBUG] [Thread-199116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:46:23.095 [DEBUG] [Thread-199116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:46:23.095 [DEBUG] [Thread-199116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:46:23.109 [INFO] [Thread-199116] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:46:23.109 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:46:23.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:46:24.027 [DEBUG] [Thread-199116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:46:24.027 [DEBUG] [Thread-199116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:46:24.074 [DEBUG] [Thread-199116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:46:24.075 [DEBUG] [Thread-199116] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:46:24.084 [DEBUG] [Thread-199116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:46:24.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:46:24.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-11-24T23:46:24.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-11-24T23:46:24.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:46:24.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:46:24.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:46:24.122 [DEBUG] [Thread-199116] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:46:30.238 [DEBUG] [Thread-199118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:46:45.375 [DEBUG] [Thread-199119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:46:54.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:46:54.150 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:46:54.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-11-24T23:46:55.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 46, 47), 14.54, 36.8, 0.0, 27.28, 13.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:46:55.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:46:47
2025-11-24T23:46:55.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:46:55.368 [DEBUG] [Thread-199120] [transport.py] [_log()] starting thread (client mode): 0xd0713430
2025-11-24T23:46:55.369 [DEBUG] [Thread-199120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:46:55.382 [DEBUG] [Thread-199120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:46:55.382 [INFO] [Thread-199120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] client lang: <none>
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] server lang: <none>
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] kex follows: False
2025-11-24T23:46:55.387 [DEBUG] [Thread-199120] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:46:55.388 [DEBUG] [Thread-199120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:46:55.388 [DEBUG] [Thread-199120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:46:55.388 [DEBUG] [Thread-199120] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:46:55.388 [DEBUG] [Thread-199120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:46:55.388 [DEBUG] [Thread-199120] [transport.py] [_log()] Compression: none
2025-11-24T23:46:55.388 [DEBUG] [Thread-199120] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:46:55.416 [DEBUG] [Thread-199120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:46:55.420 [DEBUG] [Thread-199120] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:46:55.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:46:55.422 [DEBUG] [Thread-199120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:46:55.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:46:55.425 [DEBUG] [Thread-199120] [transport.py] [_log()] userauth is OK
2025-11-24T23:46:55.425 [DEBUG] [Thread-199120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:46:55.426 [DEBUG] [Thread-199120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:46:55.426 [DEBUG] [Thread-199120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:46:55.426 [DEBUG] [Thread-199120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:46:55.459 [INFO] [Thread-199120] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:46:55.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:46:56.089 [DEBUG] [Thread-199120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:46:56.089 [DEBUG] [Thread-199120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:46:56.090 [DEBUG] [Thread-199120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:46:56.130 [DEBUG] [Thread-199120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:46:56.130 [DEBUG] [Thread-199120] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:46:56.133 [DEBUG] [Thread-199120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:46:56.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:46:56.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:46:56.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:46:56.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:46:56.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:46:56.153 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:46:56.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:46:56.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:46:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:46:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.907337 -999.00  +13.40  17.36     41   +0.60 1 1 1 1 1     0    0 13.42 16.43 ZNESW 18.6 17.4 160.8 22.4 13.7 -24.7 13.6 -24.1 13.4 -23.1 13.7 -24.1
2025-11-24T23:46:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:46:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:46:56.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.907337
2025-11-24T23:46:56.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:46:56.166 [DEBUG] [Thread-199120] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:46:56.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:46:56.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:46:56.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:46:56.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:46:56.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:46:47', tmtdew=14.54, humidity=36.8, cloud=0.0, wind=27.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-11-24T23:46:48', seeing=0.81, atlas_timestamp='2025-11-24T21:46:33.917', atlas_cloud=1, atlas_rain=1, zp_data=[-0.006249999999999645, -0.003750000000000142, 0.0012500000000006395, -0.022500000000000853, 0.04749999999999943, 0.06025000000000169, 0.004999999999999005, -0.0017499999999994742, 0.0015000000000000568, -0.016000000000000014, 0.028249999999999886, -0.033500000000000085, 0.07699999999999996, 0.07925000000000004, 0.009999999999999787, -0.009000000000000341, -0.012750000000000483, 0.04449999999999932, 0.03799999999999848, -0.01875000000000071, 0.034999999999998366, 0.059749999999999304, 0.0572499999999998, -0.008750000000000924, -0.026500000000000412, -0.020500000000000185, 0.014749999999999375, 0.04550000000000054, 0.12049999999999983, 0.06100000000000172, 0.07400000000000162, -0.0019999999999988916, -0.04525000000000112], zp_timestamp='2025-11-24T21:42:00')
2025-11-24T23:46:56.249 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:46:56.260 [DEBUG] [Thread-199123] [transport.py] [_log()] starting thread (client mode): 0xd31f4760
2025-11-24T23:46:56.260 [DEBUG] [Thread-199123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:46:56.274 [DEBUG] [Thread-199123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:46:56.274 [INFO] [Thread-199123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] client lang: <none>
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] server lang: <none>
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] kex follows: False
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] Compression: none
2025-11-24T23:46:56.282 [DEBUG] [Thread-199123] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:46:56.338 [DEBUG] [Thread-199123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:46:56.338 [DEBUG] [Thread-199123] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:46:56.338 [DEBUG] [Thread-199123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:46:56.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:46:56.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:46:56.395 [DEBUG] [Thread-199123] [transport.py] [_log()] userauth is OK
2025-11-24T23:46:56.395 [DEBUG] [Thread-199123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:46:56.395 [DEBUG] [Thread-199123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:46:56.395 [DEBUG] [Thread-199123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:46:56.395 [DEBUG] [Thread-199123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:46:56.409 [INFO] [Thread-199123] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:46: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-11-24T23:46:56.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:46:57.232 [DEBUG] [Thread-199123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:46:57.233 [DEBUG] [Thread-199123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:46:57.280 [DEBUG] [Thread-199123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:46:57.280 [DEBUG] [Thread-199123] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:46:57.288 [DEBUG] [Thread-199123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:46:57.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:46:57.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-11-24T23:46:57.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-11-24T23:46:57.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:46:57.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:46:57.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:46:57.323 [DEBUG] [Thread-199123] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:47:00.379 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:47:00.381 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:47:00.411 [DEBUG] [Thread-199125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:47:05.290 [DEBUG] [Thread-199126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:47:15.521 [DEBUG] [Thread-199127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:47:27.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:47:27.359 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:47:27.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-11-24T23:47:28.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 47, 20), 14.57, 36.72, 0.0, 27.33, 13.54, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:47:28.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:47:20
2025-11-24T23:47:28.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:47:28.594 [DEBUG] [Thread-199128] [transport.py] [_log()] starting thread (client mode): 0xd0787d00
2025-11-24T23:47:28.595 [DEBUG] [Thread-199128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:47:28.600 [DEBUG] [Thread-199128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:47:28.600 [INFO] [Thread-199128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:47:28.605 [DEBUG] [Thread-199128] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:47:28.605 [DEBUG] [Thread-199128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:47:28.605 [DEBUG] [Thread-199128] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:47:28.605 [DEBUG] [Thread-199128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:47:28.605 [DEBUG] [Thread-199128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:47:28.605 [DEBUG] [Thread-199128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:47:28.605 [DEBUG] [Thread-199128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:47:28.605 [DEBUG] [Thread-199128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:47:28.606 [DEBUG] [Thread-199128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:47:28.606 [DEBUG] [Thread-199128] [transport.py] [_log()] client lang: <none>
2025-11-24T23:47:28.606 [DEBUG] [Thread-199128] [transport.py] [_log()] server lang: <none>
2025-11-24T23:47:28.606 [DEBUG] [Thread-199128] [transport.py] [_log()] kex follows: False
2025-11-24T23:47:28.606 [DEBUG] [Thread-199128] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:47:28.606 [DEBUG] [Thread-199128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:47:28.606 [DEBUG] [Thread-199128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:47:28.607 [DEBUG] [Thread-199128] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:47:28.607 [DEBUG] [Thread-199128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:47:28.607 [DEBUG] [Thread-199128] [transport.py] [_log()] Compression: none
2025-11-24T23:47:28.607 [DEBUG] [Thread-199128] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:47:28.640 [DEBUG] [Thread-199128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:47:28.645 [DEBUG] [Thread-199128] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:47:28.647 [DEBUG] [Thread-199128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:47:28.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:47:28.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:47:28.653 [DEBUG] [Thread-199128] [transport.py] [_log()] userauth is OK
2025-11-24T23:47:28.653 [DEBUG] [Thread-199128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:47:28.653 [DEBUG] [Thread-199128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:47:28.653 [DEBUG] [Thread-199128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:47:28.653 [DEBUG] [Thread-199128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:47:28.681 [INFO] [Thread-199128] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:47:28.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:47:29.306 [DEBUG] [Thread-199128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:47:29.306 [DEBUG] [Thread-199128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:47:29.308 [DEBUG] [Thread-199128] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:47:29.347 [DEBUG] [Thread-199128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:47:29.348 [DEBUG] [Thread-199128] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:47:29.351 [DEBUG] [Thread-199128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:47:29.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:47:29.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:47:29.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:47:29.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:47:29.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:47:29.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:47:29.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:47:29.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:47:29.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:47:29.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.907684 -999.00  +13.50  20.02     41   +0.70 1 1 1 1 1     0    0 13.51 15.83 ZNESW 16.0 20.0 153.8 28.8 13.8 -24.5 13.6 -24.1 13.4 -23.1 13.7 -23.8
2025-11-24T23:47:29.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:47:29.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:47:29.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.907684
2025-11-24T23:47:29.387 [DEBUG] [Thread-199128] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:47:29.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:47:29.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:47:29.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:47:29.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:47:29.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:47:29.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:47:20', tmtdew=14.57, humidity=36.72, cloud=0.0, wind=27.33, temperature=13.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:47:21', seeing=0.81, atlas_timestamp='2025-11-24T21:47:03.898', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.014749999999999375, 0.0032500000000013074, -0.005500000000001393, 0.014499999999999957, 0.039250000000000895, -0.01550000000000118, -0.0072499999999990905, -0.0035000000000007248, -0.006000000000000227, 0.011250000000000426, -0.04100000000000037, 0.05599999999999916, 0.06825000000000081, 0.0019999999999988916, 0.02099999999999902, -0.03575000000000017, 0.01249999999999929, 0.0019999999999988916, -0.023750000000001492, 0.027499999999999858, 0.06824999999999903, 0.01025000000000098, -0.025249999999999773, -0.03149999999999942, -0.04299999999999926, -0.0007500000000000284, 0.05299999999999905, 0.05799999999999983, 0.057000000000000384, 0.06100000000000172, -0.016000000000000014, -0.04525000000000112], zp_timestamp='2025-11-24T21:45:00')
2025-11-24T23:47:29.494 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:47:29.507 [DEBUG] [Thread-199131] [transport.py] [_log()] starting thread (client mode): 0xd31f55d0
2025-11-24T23:47:29.508 [DEBUG] [Thread-199131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:47:29.521 [DEBUG] [Thread-199131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:47:29.521 [INFO] [Thread-199131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:47:29.530 [DEBUG] [Thread-199131] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] client lang: <none>
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] server lang: <none>
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] kex follows: False
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:47:29.531 [DEBUG] [Thread-199131] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:47:29.532 [DEBUG] [Thread-199131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:47:29.532 [DEBUG] [Thread-199131] [transport.py] [_log()] Compression: none
2025-11-24T23:47:29.532 [DEBUG] [Thread-199131] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:47:29.587 [DEBUG] [Thread-199131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:47:29.588 [DEBUG] [Thread-199131] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:47:29.589 [DEBUG] [Thread-199131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:47:29.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:47:29.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:47:29.643 [DEBUG] [Thread-199131] [transport.py] [_log()] userauth is OK
2025-11-24T23:47:29.644 [DEBUG] [Thread-199131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:47:29.644 [DEBUG] [Thread-199131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:47:29.644 [DEBUG] [Thread-199131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:47:29.644 [DEBUG] [Thread-199131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:47:29.663 [INFO] [Thread-199131] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:47:29.663 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:47:29.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:47:30.498 [DEBUG] [Thread-199131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:47:30.498 [DEBUG] [Thread-199131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:47:30.548 [DEBUG] [Thread-199131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:47:30.548 [DEBUG] [Thread-199131] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:47:30.557 [DEBUG] [Thread-199131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:47:30.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:47:30.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:47:30.575 [DEBUG] [Thread-199133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:47:30.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:47:30.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:47:30.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:47:30.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:47:30.602 [DEBUG] [Thread-199131] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:47:45.691 [DEBUG] [Thread-199134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:48:00.608 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:48:00.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:48:00.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:48:00.624 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:48:00.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:48:00.743 [DEBUG] [Thread-199135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:48:01.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 47, 53), 14.58, 36.7, 0.0, 27.84, 13.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:48:01.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:47:53
2025-11-24T23:48:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:48:01.881 [DEBUG] [Thread-199136] [transport.py] [_log()] starting thread (client mode): 0xd0785570
2025-11-24T23:48:01.881 [DEBUG] [Thread-199136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:48:01.893 [DEBUG] [Thread-199136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:48:01.893 [INFO] [Thread-199136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:48:01.898 [DEBUG] [Thread-199136] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] client lang: <none>
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] server lang: <none>
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] kex follows: False
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:48:01.899 [DEBUG] [Thread-199136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:48:01.900 [DEBUG] [Thread-199136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:48:01.900 [DEBUG] [Thread-199136] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:48:01.900 [DEBUG] [Thread-199136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:48:01.900 [DEBUG] [Thread-199136] [transport.py] [_log()] Compression: none
2025-11-24T23:48:01.900 [DEBUG] [Thread-199136] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:48:01.936 [DEBUG] [Thread-199136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:48:01.941 [DEBUG] [Thread-199136] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:48:01.943 [DEBUG] [Thread-199136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:48:01.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:48:01.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:48:01.948 [DEBUG] [Thread-199136] [transport.py] [_log()] userauth is OK
2025-11-24T23:48:01.949 [DEBUG] [Thread-199136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:48:01.949 [DEBUG] [Thread-199136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:48:01.949 [DEBUG] [Thread-199136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:48:01.949 [DEBUG] [Thread-199136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:48:01.987 [INFO] [Thread-199136] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:48:02.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:48:02.623 [DEBUG] [Thread-199136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:48:02.623 [DEBUG] [Thread-199136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:48:02.628 [DEBUG] [Thread-199136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:48:02.664 [DEBUG] [Thread-199136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:48:02.664 [DEBUG] [Thread-199136] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:48:02.668 [DEBUG] [Thread-199136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:48:02.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:48:02.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:48:02.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:48:02.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:48:02.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:48:02.695 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:48:02.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:48:02.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:48:02.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:48:02.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.908031 -999.00  +13.50  16.11     41   +0.70 1 1 1 1 1     0    0 13.43 14.39 ZNESW 18.8 16.1 150.8 28.0 13.7 -24.4 13.6 -24.1 13.4 -23.0 13.7 -23.7
2025-11-24T23:48:02.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:48:02.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:48:02.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.908031
2025-11-24T23:48:02.704 [DEBUG] [Thread-199136] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:48:02.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:48:02.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:48:02.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:48:02.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:48:02.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:48:02.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:47:53', tmtdew=14.58, humidity=36.7, cloud=0.0, wind=27.84, temperature=13.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:47:54', seeing=0.76, atlas_timestamp='2025-11-24T21:47:33.878', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.014749999999999375, 0.0032500000000013074, -0.005500000000001393, 0.014499999999999957, 0.039250000000000895, -0.01550000000000118, -0.0072499999999990905, -0.0035000000000007248, -0.006000000000000227, 0.011250000000000426, -0.04100000000000037, 0.05599999999999916, 0.06825000000000081, 0.0019999999999988916, 0.02099999999999902, -0.03575000000000017, 0.01249999999999929, 0.0019999999999988916, -0.023750000000001492, 0.027499999999999858, 0.06824999999999903, 0.01025000000000098, -0.025249999999999773, -0.03149999999999942, -0.04299999999999926, -0.0007500000000000284, 0.05299999999999905, 0.05799999999999983, 0.057000000000000384, 0.06100000000000172, -0.016000000000000014, -0.04525000000000112], zp_timestamp='2025-11-24T21:45:00')
2025-11-24T23:48:02.809 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:48:05.669 [DEBUG] [Thread-199139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:48:15.805 [DEBUG] [Thread-199140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:48:30.969 [DEBUG] [Thread-199141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:48:46.064 [DEBUG] [Thread-199142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:49:00.831 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:49:00.833 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:49:01.101 [DEBUG] [Thread-199143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:49:05.939 [DEBUG] [Thread-199144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:49:10.767 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:49:16.135 [DEBUG] [Thread-199145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:49:31.221 [DEBUG] [Thread-199146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:49:46.344 [DEBUG] [Thread-199147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:50:01.036 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:50:01.039 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:50:01.425 [DEBUG] [Thread-199148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:50:06.254 [DEBUG] [Thread-199149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:50:15.243 [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-11-24T23:50:16.495 [DEBUG] [Thread-199150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:50:31.620 [DEBUG] [Thread-199151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:50:45.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:50:45.290 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:50:45.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-11-24T23:50:46.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 50, 38), 14.44, 36.92, 0.0, 25.02, 13.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:50:46.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:50:38
2025-11-24T23:50:46.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:50:46.569 [DEBUG] [Thread-199152] [transport.py] [_log()] starting thread (client mode): 0xd3191a20
2025-11-24T23:50:46.570 [DEBUG] [Thread-199152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:50:46.576 [DEBUG] [Thread-199152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:50:46.576 [INFO] [Thread-199152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:50:46.580 [DEBUG] [Thread-199152] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:50:46.580 [DEBUG] [Thread-199152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:50:46.580 [DEBUG] [Thread-199152] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] client lang: <none>
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] server lang: <none>
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] kex follows: False
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:50:46.581 [DEBUG] [Thread-199152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:50:46.582 [DEBUG] [Thread-199152] [transport.py] [_log()] Compression: none
2025-11-24T23:50:46.582 [DEBUG] [Thread-199152] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:50:46.617 [DEBUG] [Thread-199152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:50:46.622 [DEBUG] [Thread-199152] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:50:46.624 [DEBUG] [Thread-199152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:50:46.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:50:46.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:50:46.629 [DEBUG] [Thread-199152] [transport.py] [_log()] userauth is OK
2025-11-24T23:50:46.629 [DEBUG] [Thread-199152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:50:46.629 [DEBUG] [Thread-199152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:50:46.629 [DEBUG] [Thread-199152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:50:46.629 [DEBUG] [Thread-199152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:50:46.668 [INFO] [Thread-199152] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:50:46.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:50:46.696 [DEBUG] [Thread-199154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:50:47.279 [DEBUG] [Thread-199152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:50:47.279 [DEBUG] [Thread-199152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:50:47.280 [DEBUG] [Thread-199152] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:50:47.319 [DEBUG] [Thread-199152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:50:47.320 [DEBUG] [Thread-199152] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:50:47.323 [DEBUG] [Thread-199152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:50:47.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:50:47.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:50:47.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:50:47.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:50:47.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:50:47.344 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:50:47.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:50:47.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:50:47.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:50:47.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.910114 -999.00  +13.40  16.82     41   +0.60 1 1 1 1 1     0    0 13.38 10.38 ZNESW 18.6 16.8 149.8 26.6 13.7 -24.7 13.6 -24.3 13.3 -23.2 13.6 -24.0
2025-11-24T23:50:47.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:50:47.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:50:47.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.910114
2025-11-24T23:50:47.352 [DEBUG] [Thread-199152] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:50:47.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:50:47.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:50:47.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:50:47.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:50:47.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:50:47.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:50:38', tmtdew=14.44, humidity=36.92, cloud=0.0, wind=25.02, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:50:39', seeing=0.8, atlas_timestamp='2025-11-24T21:50:33.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.012750000000000483, 0.010749999999999815, -0.005500000000001393, 0.020500000000000185, 0.055749999999999744, 0.004999999999999005, -0.00274999999999892, 0.01249999999999929, 0.0129999999999999, 0.040749999999999176, -0.018500000000001293, 0.06099999999999994, 0.09024999999999928, 0.0019999999999988916, 0.0259999999999998, -0.016750000000000043, 0.04749999999999943, 0.034000000000000696, -0.019750000000001933, 0.019999999999999574, 0.05574999999999797, 0.0652500000000007, -0.006249999999999645, 0.004999999999999005, -0.017000000000001236, -0.00274999999999892, 0.06649999999999956, 0.10100000000000087, 0.09500000000000064, 0.10250000000000092, -0.014999999999998792, -0.03375000000000128], zp_timestamp='2025-11-24T21:48:00')
2025-11-24T23:50:47.455 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:50:47.467 [DEBUG] [Thread-199156] [transport.py] [_log()] starting thread (client mode): 0xd3192cb0
2025-11-24T23:50:47.468 [DEBUG] [Thread-199156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:50:47.482 [DEBUG] [Thread-199156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:50:47.482 [INFO] [Thread-199156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:50:47.490 [DEBUG] [Thread-199156] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] client lang: <none>
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] server lang: <none>
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] kex follows: False
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:50:47.491 [DEBUG] [Thread-199156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:50:47.492 [DEBUG] [Thread-199156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:50:47.492 [DEBUG] [Thread-199156] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:50:47.492 [DEBUG] [Thread-199156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:50:47.492 [DEBUG] [Thread-199156] [transport.py] [_log()] Compression: none
2025-11-24T23:50:47.492 [DEBUG] [Thread-199156] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:50:47.547 [DEBUG] [Thread-199156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:50:47.548 [DEBUG] [Thread-199156] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:50:47.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:50:47.549 [DEBUG] [Thread-199156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:50:47.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:50:47.604 [DEBUG] [Thread-199156] [transport.py] [_log()] userauth is OK
2025-11-24T23:50:47.604 [DEBUG] [Thread-199156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:50:47.604 [DEBUG] [Thread-199156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:50:47.604 [DEBUG] [Thread-199156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:50:47.604 [DEBUG] [Thread-199156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:50:47.627 [INFO] [Thread-199156] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:50:47.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:50:47.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:50:48.469 [DEBUG] [Thread-199156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:50:48.469 [DEBUG] [Thread-199156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:50:48.517 [DEBUG] [Thread-199156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:50:48.517 [DEBUG] [Thread-199156] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:50:48.527 [DEBUG] [Thread-199156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:50:48.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:50:48.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:50:48.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-11-24T23:50:48.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:50:48.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:50:48.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:50:48.567 [DEBUG] [Thread-199156] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:51:01.243 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:51:01.244 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:51:01.759 [DEBUG] [Thread-199158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:51:06.521 [DEBUG] [Thread-199159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:51:16.893 [DEBUG] [Thread-199160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:51:18.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:51:18.603 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:51:18.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-11-24T23:51:19.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 51, 11), 14.45, 36.9, 0.0, 26.34, 13.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:51:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:51:11
2025-11-24T23:51:19.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:51:19.869 [DEBUG] [Thread-199161] [transport.py] [_log()] starting thread (client mode): 0xd31f4160
2025-11-24T23:51:19.870 [DEBUG] [Thread-199161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:51:19.883 [DEBUG] [Thread-199161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:51:19.883 [INFO] [Thread-199161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:51:19.888 [DEBUG] [Thread-199161] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:51:19.889 [DEBUG] [Thread-199161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:51:19.889 [DEBUG] [Thread-199161] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:51:19.889 [DEBUG] [Thread-199161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:51:19.889 [DEBUG] [Thread-199161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:51:19.889 [DEBUG] [Thread-199161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:51:19.889 [DEBUG] [Thread-199161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:51:19.889 [DEBUG] [Thread-199161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:51:19.889 [DEBUG] [Thread-199161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:51:19.890 [DEBUG] [Thread-199161] [transport.py] [_log()] client lang: <none>
2025-11-24T23:51:19.890 [DEBUG] [Thread-199161] [transport.py] [_log()] server lang: <none>
2025-11-24T23:51:19.890 [DEBUG] [Thread-199161] [transport.py] [_log()] kex follows: False
2025-11-24T23:51:19.890 [DEBUG] [Thread-199161] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:51:19.890 [DEBUG] [Thread-199161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:51:19.891 [DEBUG] [Thread-199161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:51:19.891 [DEBUG] [Thread-199161] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:51:19.891 [DEBUG] [Thread-199161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:51:19.891 [DEBUG] [Thread-199161] [transport.py] [_log()] Compression: none
2025-11-24T23:51:19.891 [DEBUG] [Thread-199161] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:51:19.919 [DEBUG] [Thread-199161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:51:19.924 [DEBUG] [Thread-199161] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:51:19.926 [DEBUG] [Thread-199161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:51:19.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:51:19.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:51:19.932 [DEBUG] [Thread-199161] [transport.py] [_log()] userauth is OK
2025-11-24T23:51:19.932 [DEBUG] [Thread-199161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:51:19.932 [DEBUG] [Thread-199161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:51:19.932 [DEBUG] [Thread-199161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:51:19.933 [DEBUG] [Thread-199161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:51:19.957 [INFO] [Thread-199161] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:51:19.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:51:20.593 [DEBUG] [Thread-199161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:51:20.593 [DEBUG] [Thread-199161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:51:20.604 [DEBUG] [Thread-199161] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:51:20.635 [DEBUG] [Thread-199161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:51:20.635 [DEBUG] [Thread-199161] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:51:20.639 [DEBUG] [Thread-199161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:51:20.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:51:20.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:51:20.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:51:20.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:51:20.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:51:20.666 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:51:20.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:51:20.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:51:20.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:51:20.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.910462 -999.00  +13.40  15.69     41   +0.60 1 1 1 1 1     0    0 12.83 9.32 ZNESW 16.5 15.7 149.4 20.9 13.7 -24.7 13.6 -24.1 13.4 -23.1 13.6 -24.1
2025-11-24T23:51:20.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:51:20.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:51:20.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.910462
2025-11-24T23:51:20.674 [DEBUG] [Thread-199161] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:51:20.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:51:20.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:51:20.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:51:20.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:51:20.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:51:20.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:51:11', tmtdew=14.45, humidity=36.9, cloud=0.0, wind=26.34, temperature=13.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:51:12', seeing=0.8, atlas_timestamp='2025-11-24T21:51:03.917', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.012750000000000483, 0.010749999999999815, -0.005500000000001393, 0.020500000000000185, 0.055749999999999744, 0.004999999999999005, -0.00274999999999892, 0.01249999999999929, 0.0129999999999999, 0.040749999999999176, -0.018500000000001293, 0.06099999999999994, 0.09024999999999928, 0.0019999999999988916, 0.0259999999999998, -0.016750000000000043, 0.04749999999999943, 0.034000000000000696, -0.019750000000001933, 0.019999999999999574, 0.05574999999999797, 0.0652500000000007, -0.006249999999999645, 0.004999999999999005, -0.017000000000001236, -0.00274999999999892, 0.06649999999999956, 0.10100000000000087, 0.09500000000000064, 0.10250000000000092, -0.014999999999998792, -0.03375000000000128], zp_timestamp='2025-11-24T21:48:00')
2025-11-24T23:51:20.775 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:51:20.788 [DEBUG] [Thread-199164] [transport.py] [_log()] starting thread (client mode): 0xd317c8b0
2025-11-24T23:51:20.788 [DEBUG] [Thread-199164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:51:20.803 [DEBUG] [Thread-199164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:51:20.804 [INFO] [Thread-199164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] client lang: <none>
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] server lang: <none>
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] kex follows: False
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] Compression: none
2025-11-24T23:51:20.811 [DEBUG] [Thread-199164] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:51:20.872 [DEBUG] [Thread-199164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:51:20.873 [DEBUG] [Thread-199164] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:51:20.874 [DEBUG] [Thread-199164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:51:20.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:51:20.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:51:20.932 [DEBUG] [Thread-199164] [transport.py] [_log()] userauth is OK
2025-11-24T23:51:20.932 [DEBUG] [Thread-199164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:51:20.933 [DEBUG] [Thread-199164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:51:20.933 [DEBUG] [Thread-199164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:51:20.933 [DEBUG] [Thread-199164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:51:20.952 [INFO] [Thread-199164] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:51:20.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:51:20.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:51:21.784 [DEBUG] [Thread-199164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:51:21.785 [DEBUG] [Thread-199164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:51:21.832 [DEBUG] [Thread-199164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:51:21.833 [DEBUG] [Thread-199164] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:51:21.843 [DEBUG] [Thread-199164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:51:21.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:51:21.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:51:21.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-11-24T23:51:21.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:51:21.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:51:21.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:51:21.883 [DEBUG] [Thread-199164] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:51:31.979 [DEBUG] [Thread-199166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:51:47.120 [DEBUG] [Thread-199167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:51:51.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:51:51.915 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:51:51.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-11-24T23:51:52.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 51, 44), 14.38, 36.93, 0.0, 27.01, 13.39, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:51:52.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:51:44
2025-11-24T23:51:52.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:51:53.124 [DEBUG] [Thread-199168] [transport.py] [_log()] starting thread (client mode): 0xd314a9b0
2025-11-24T23:51:53.125 [DEBUG] [Thread-199168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:51:53.137 [DEBUG] [Thread-199168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:51:53.137 [INFO] [Thread-199168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:51:53.143 [DEBUG] [Thread-199168] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:51:53.143 [DEBUG] [Thread-199168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:51:53.143 [DEBUG] [Thread-199168] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] client lang: <none>
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] server lang: <none>
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] kex follows: False
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:51:53.144 [DEBUG] [Thread-199168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:51:53.145 [DEBUG] [Thread-199168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:51:53.145 [DEBUG] [Thread-199168] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:51:53.145 [DEBUG] [Thread-199168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:51:53.145 [DEBUG] [Thread-199168] [transport.py] [_log()] Compression: none
2025-11-24T23:51:53.145 [DEBUG] [Thread-199168] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:51:53.181 [DEBUG] [Thread-199168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:51:53.186 [DEBUG] [Thread-199168] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:51:53.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:51:53.191 [DEBUG] [Thread-199168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:51:53.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:51:53.196 [DEBUG] [Thread-199168] [transport.py] [_log()] userauth is OK
2025-11-24T23:51:53.196 [DEBUG] [Thread-199168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:51:53.196 [DEBUG] [Thread-199168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:51:53.197 [DEBUG] [Thread-199168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:51:53.197 [DEBUG] [Thread-199168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:51:53.224 [INFO] [Thread-199168] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:51:53.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:51:53.857 [DEBUG] [Thread-199168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:51:53.858 [DEBUG] [Thread-199168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:51:53.859 [DEBUG] [Thread-199168] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:51:53.899 [DEBUG] [Thread-199168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:51:53.899 [DEBUG] [Thread-199168] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:51:53.903 [DEBUG] [Thread-199168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:51:53.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:51:53.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:51:53.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:51:53.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:51:53.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:51:53.930 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:51:53.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:51:53.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:51:53.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:51:53.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.910462 -999.00  +13.40  15.69     41   +0.60 1 1 1 1 1     0    0 12.83 9.32 ZNESW 16.5 15.7 149.4 20.9 13.7 -24.7 13.6 -24.1 13.4 -23.1 13.6 -24.1
2025-11-24T23:51:53.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:51:53.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:51:53.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.910462
2025-11-24T23:51:53.937 [DEBUG] [Thread-199168] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:51:53.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:51:53.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:51:53.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:51:53.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:51:53.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:51:53.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:51:44', tmtdew=14.38, humidity=36.93, cloud=0.0, wind=27.01, temperature=13.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:51:45', seeing=0.77, atlas_timestamp='2025-11-24T21:51:03.917', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.012750000000000483, 0.010749999999999815, -0.005500000000001393, 0.020500000000000185, 0.055749999999999744, 0.004999999999999005, -0.00274999999999892, 0.01249999999999929, 0.0129999999999999, 0.040749999999999176, -0.018500000000001293, 0.06099999999999994, 0.09024999999999928, 0.0019999999999988916, 0.0259999999999998, -0.016750000000000043, 0.04749999999999943, 0.034000000000000696, -0.019750000000001933, 0.019999999999999574, 0.05574999999999797, 0.0652500000000007, -0.006249999999999645, 0.004999999999999005, -0.017000000000001236, -0.00274999999999892, 0.06649999999999956, 0.10100000000000087, 0.09500000000000064, 0.10250000000000092, -0.014999999999998792, -0.03375000000000128], zp_timestamp='2025-11-24T21:48:00')
2025-11-24T23:51:54.040 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:51:54.052 [DEBUG] [Thread-199171] [transport.py] [_log()] starting thread (client mode): 0xd3149720
2025-11-24T23:51:54.052 [DEBUG] [Thread-199171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:51:54.066 [DEBUG] [Thread-199171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:51:54.067 [INFO] [Thread-199171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:51:54.074 [DEBUG] [Thread-199171] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:51:54.074 [DEBUG] [Thread-199171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] client lang: <none>
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] server lang: <none>
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] kex follows: False
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] Compression: none
2025-11-24T23:51:54.075 [DEBUG] [Thread-199171] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:51:54.132 [DEBUG] [Thread-199171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:51:54.133 [DEBUG] [Thread-199171] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:51:54.133 [DEBUG] [Thread-199171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:51:54.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:51:54.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:51:54.188 [DEBUG] [Thread-199171] [transport.py] [_log()] userauth is OK
2025-11-24T23:51:54.188 [DEBUG] [Thread-199171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:51:54.188 [DEBUG] [Thread-199171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:51:54.188 [DEBUG] [Thread-199171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:51:54.188 [DEBUG] [Thread-199171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:51:54.206 [INFO] [Thread-199171] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:51:54.207 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:51:54.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:51:54.999 [DEBUG] [Thread-199171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:51:54.999 [DEBUG] [Thread-199171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:51:55.048 [DEBUG] [Thread-199171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:51:55.048 [DEBUG] [Thread-199171] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:51:55.057 [DEBUG] [Thread-199171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:51:55.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:51:55.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-11-24T23:51:55.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-11-24T23:51:55.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:51:55.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:51:55.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:51:55.096 [DEBUG] [Thread-199171] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:52:01.452 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:52:01.454 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:52:02.195 [DEBUG] [Thread-199173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:52:06.868 [DEBUG] [Thread-199174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:52:17.307 [DEBUG] [Thread-199175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:52:25.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:52:25.140 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:52:25.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-11-24T23:52:25.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 52, 17), 14.38, 36.95, 0.0, 27.15, 13.42, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:52:25.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:52:17
2025-11-24T23:52:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:52:26.362 [DEBUG] [Thread-199176] [transport.py] [_log()] starting thread (client mode): 0xd3149990
2025-11-24T23:52:26.363 [DEBUG] [Thread-199176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:52:26.363 [DEBUG] [Thread-199176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:52:26.363 [INFO] [Thread-199176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] client lang: <none>
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] server lang: <none>
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] kex follows: False
2025-11-24T23:52:26.368 [DEBUG] [Thread-199176] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:52:26.369 [DEBUG] [Thread-199176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:52:26.369 [DEBUG] [Thread-199176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:52:26.369 [DEBUG] [Thread-199176] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:52:26.369 [DEBUG] [Thread-199176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:52:26.369 [DEBUG] [Thread-199176] [transport.py] [_log()] Compression: none
2025-11-24T23:52:26.369 [DEBUG] [Thread-199176] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:52:26.400 [DEBUG] [Thread-199176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:52:26.402 [DEBUG] [Thread-199176] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:52:26.404 [DEBUG] [Thread-199176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:52:26.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:52:26.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:52:26.407 [DEBUG] [Thread-199176] [transport.py] [_log()] userauth is OK
2025-11-24T23:52:26.407 [DEBUG] [Thread-199176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:52:26.407 [DEBUG] [Thread-199176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:52:26.407 [DEBUG] [Thread-199176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:52:26.407 [DEBUG] [Thread-199176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:52:26.425 [INFO] [Thread-199176] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:52:26.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:52:27.075 [DEBUG] [Thread-199176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:52:27.075 [DEBUG] [Thread-199176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:52:27.075 [DEBUG] [Thread-199176] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:52:27.116 [DEBUG] [Thread-199176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:52:27.116 [DEBUG] [Thread-199176] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:52:27.118 [DEBUG] [Thread-199176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:52:27.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:52:27.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:52:27.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:52:27.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:52:27.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:52:27.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:52:27.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:52:27.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:52:27.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:52:27.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.910809 -999.00  +13.40  15.55     41   +0.60 1 1 1 1 1     0    0 13.11 8.28 ZNESW 19.0 15.6 153.0 26.0 13.7 -24.7 13.6 -24.1 13.3 -23.0 13.6 -23.7
2025-11-24T23:52:27.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:52:27.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:52:27.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.910809
2025-11-24T23:52:27.146 [DEBUG] [Thread-199176] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:52:27.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:52:27.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:52:27.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:52:27.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:52:27.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:52:27.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:52:17', tmtdew=14.38, humidity=36.95, cloud=0.0, wind=27.15, temperature=13.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:52:17', seeing=0.82, atlas_timestamp='2025-11-24T21:51:33.898', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.012750000000000483, 0.010749999999999815, -0.005500000000001393, 0.020500000000000185, 0.055749999999999744, 0.004999999999999005, -0.00274999999999892, 0.01249999999999929, 0.0129999999999999, 0.040749999999999176, -0.018500000000001293, 0.06099999999999994, 0.09024999999999928, 0.0019999999999988916, 0.0259999999999998, -0.016750000000000043, 0.04749999999999943, 0.034000000000000696, -0.019750000000001933, 0.019999999999999574, 0.05574999999999797, 0.0652500000000007, -0.006249999999999645, 0.004999999999999005, -0.017000000000001236, -0.00274999999999892, 0.06649999999999956, 0.10100000000000087, 0.09500000000000064, 0.10250000000000092, -0.014999999999998792, -0.03375000000000128], zp_timestamp='2025-11-24T21:48:00')
2025-11-24T23:52:27.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:52:27.252 [DEBUG] [Thread-199179] [transport.py] [_log()] starting thread (client mode): 0xd3152650
2025-11-24T23:52:27.252 [DEBUG] [Thread-199179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:52:27.268 [DEBUG] [Thread-199179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:52:27.268 [INFO] [Thread-199179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:52:27.275 [DEBUG] [Thread-199179] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:52:27.275 [DEBUG] [Thread-199179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:52:27.275 [DEBUG] [Thread-199179] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:52:27.275 [DEBUG] [Thread-199179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:52:27.275 [DEBUG] [Thread-199179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:52:27.275 [DEBUG] [Thread-199179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:52:27.275 [DEBUG] [Thread-199179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:52:27.275 [DEBUG] [Thread-199179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:52:27.275 [DEBUG] [Thread-199179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:52:27.276 [DEBUG] [Thread-199179] [transport.py] [_log()] client lang: <none>
2025-11-24T23:52:27.276 [DEBUG] [Thread-199179] [transport.py] [_log()] server lang: <none>
2025-11-24T23:52:27.276 [DEBUG] [Thread-199179] [transport.py] [_log()] kex follows: False
2025-11-24T23:52:27.276 [DEBUG] [Thread-199179] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:52:27.276 [DEBUG] [Thread-199179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:52:27.276 [DEBUG] [Thread-199179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:52:27.276 [DEBUG] [Thread-199179] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:52:27.276 [DEBUG] [Thread-199179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:52:27.276 [DEBUG] [Thread-199179] [transport.py] [_log()] Compression: none
2025-11-24T23:52:27.276 [DEBUG] [Thread-199179] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:52:27.336 [DEBUG] [Thread-199179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:52:27.336 [DEBUG] [Thread-199179] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:52:27.337 [DEBUG] [Thread-199179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:52:27.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:52:27.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:52:27.395 [DEBUG] [Thread-199179] [transport.py] [_log()] userauth is OK
2025-11-24T23:52:27.395 [DEBUG] [Thread-199179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:52:27.395 [DEBUG] [Thread-199179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:52:27.395 [DEBUG] [Thread-199179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:52:27.396 [DEBUG] [Thread-199179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:52:27.410 [INFO] [Thread-199179] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:52:27.410 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:52:27.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:52:28.323 [DEBUG] [Thread-199179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:52:28.323 [DEBUG] [Thread-199179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:52:28.371 [DEBUG] [Thread-199179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:52:28.371 [DEBUG] [Thread-199179] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:52:28.380 [DEBUG] [Thread-199179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:52:28.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:52:28.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-11-24T23:52: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') -> 00000000
2025-11-24T23:52:28.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:52:28.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:52:28.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:52:28.414 [DEBUG] [Thread-199179] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:52:32.375 [DEBUG] [Thread-199181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:52:47.509 [DEBUG] [Thread-199182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:52:58.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:52:58.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:52:58.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-11-24T23:52:59.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 52, 50), 14.4, 36.9, 0.0, 27.67, 13.37, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:52:59.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:52:50
2025-11-24T23:52:59.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:52:59.655 [DEBUG] [Thread-199183] [transport.py] [_log()] starting thread (client mode): 0xd0785510
2025-11-24T23:52:59.656 [DEBUG] [Thread-199183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:52:59.668 [DEBUG] [Thread-199183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:52:59.668 [INFO] [Thread-199183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] client lang: <none>
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] server lang: <none>
2025-11-24T23:52:59.672 [DEBUG] [Thread-199183] [transport.py] [_log()] kex follows: False
2025-11-24T23:52:59.673 [DEBUG] [Thread-199183] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:52:59.673 [DEBUG] [Thread-199183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:52:59.673 [DEBUG] [Thread-199183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:52:59.673 [DEBUG] [Thread-199183] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:52:59.673 [DEBUG] [Thread-199183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:52:59.673 [DEBUG] [Thread-199183] [transport.py] [_log()] Compression: none
2025-11-24T23:52:59.673 [DEBUG] [Thread-199183] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:52:59.705 [DEBUG] [Thread-199183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:52:59.708 [DEBUG] [Thread-199183] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:52:59.709 [DEBUG] [Thread-199183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:52:59.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:52:59.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:52:59.712 [DEBUG] [Thread-199183] [transport.py] [_log()] userauth is OK
2025-11-24T23:52:59.713 [DEBUG] [Thread-199183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:52:59.713 [DEBUG] [Thread-199183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:52:59.713 [DEBUG] [Thread-199183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:52:59.713 [DEBUG] [Thread-199183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:52:59.737 [INFO] [Thread-199183] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:52:59.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:53:00.362 [DEBUG] [Thread-199183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:53:00.362 [DEBUG] [Thread-199183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:53:00.363 [DEBUG] [Thread-199183] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:53:00.403 [DEBUG] [Thread-199183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:53:00.403 [DEBUG] [Thread-199183] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:53:00.405 [DEBUG] [Thread-199183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:53:00.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:53:00.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:53:00.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:53:00.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:53:00.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:53:00.430 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:53:00.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:53:00.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:53:00.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:53:00.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.911156 -999.00  +13.40  19.64     41   +0.70 1 1 1 1 1     0    0 13.22 6.25 ZNESW 20.4 19.6 152.0 25.2 13.7 -24.6 13.6 -24.2 13.3 -23.0 13.6 -24.0
2025-11-24T23:53:00.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:53:00.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:53:00.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.911156
2025-11-24T23:53:00.437 [DEBUG] [Thread-199183] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:53:00.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:53:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:53:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:53:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:53:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:53:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:52:50', tmtdew=14.4, humidity=36.9, cloud=0.0, wind=27.67, temperature=13.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:52:50', seeing=1.04, atlas_timestamp='2025-11-24T21:52:03.878', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.012750000000000483, 0.010749999999999815, -0.005500000000001393, 0.020500000000000185, 0.055749999999999744, 0.004999999999999005, -0.00274999999999892, 0.01249999999999929, 0.0129999999999999, 0.040749999999999176, -0.018500000000001293, 0.06099999999999994, 0.09024999999999928, 0.0019999999999988916, 0.0259999999999998, -0.016750000000000043, 0.04749999999999943, 0.034000000000000696, -0.019750000000001933, 0.019999999999999574, 0.05574999999999797, 0.0652500000000007, -0.006249999999999645, 0.004999999999999005, -0.017000000000001236, -0.00274999999999892, 0.06649999999999956, 0.10100000000000087, 0.09500000000000064, 0.10250000000000092, -0.014999999999998792, -0.03375000000000128], zp_timestamp='2025-11-24T21:48:00')
2025-11-24T23:53:00.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:53:00.548 [DEBUG] [Thread-199186] [transport.py] [_log()] starting thread (client mode): 0xd3150fd0
2025-11-24T23:53:00.548 [DEBUG] [Thread-199186] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:53:00.562 [DEBUG] [Thread-199186] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:53:00.562 [INFO] [Thread-199186] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] client lang: <none>
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] server lang: <none>
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] kex follows: False
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:53:00.570 [DEBUG] [Thread-199186] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:53:00.571 [DEBUG] [Thread-199186] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:53:00.571 [DEBUG] [Thread-199186] [transport.py] [_log()] Compression: none
2025-11-24T23:53:00.571 [DEBUG] [Thread-199186] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:53:00.628 [DEBUG] [Thread-199186] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:53:00.628 [DEBUG] [Thread-199186] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:53:00.629 [DEBUG] [Thread-199186] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:53:00.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:53:00.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:53:00.687 [DEBUG] [Thread-199186] [transport.py] [_log()] userauth is OK
2025-11-24T23:53:00.687 [DEBUG] [Thread-199186] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:53:00.687 [DEBUG] [Thread-199186] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:53:00.688 [DEBUG] [Thread-199186] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:53:00.688 [DEBUG] [Thread-199186] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:53:00.708 [INFO] [Thread-199186] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:53:00.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:53:00.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:53:01.528 [DEBUG] [Thread-199186] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:53:01.528 [DEBUG] [Thread-199186] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:53:01.576 [DEBUG] [Thread-199186] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:53:01.576 [DEBUG] [Thread-199186] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:53:01.585 [DEBUG] [Thread-199186] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:53:01.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:53:01.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-11-24T23:53:01.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:53:01.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:53:01.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:53:01.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:53:01.621 [DEBUG] [Thread-199186] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:53:01.659 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:53:01.660 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:53:02.548 [DEBUG] [Thread-199188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:53:07.120 [DEBUG] [Thread-199189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:53:17.655 [DEBUG] [Thread-199190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:53:31.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:53:31.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:53:31.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-11-24T23:53:32.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 53, 23), 14.43, 36.8, 0.0, 27.83, 13.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:53:32.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:53:23
2025-11-24T23:53:32.721 [DEBUG] [Thread-199191 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:53:32.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:53:32.927 [DEBUG] [Thread-199192] [transport.py] [_log()] starting thread (client mode): 0xd3149cf0
2025-11-24T23:53:32.927 [DEBUG] [Thread-199192] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:53:32.941 [DEBUG] [Thread-199192] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:53:32.941 [INFO] [Thread-199192] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:53:32.948 [DEBUG] [Thread-199192] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:53:32.948 [DEBUG] [Thread-199192] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:53:32.948 [DEBUG] [Thread-199192] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:53:32.948 [DEBUG] [Thread-199192] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:53:32.948 [DEBUG] [Thread-199192] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:53:32.948 [DEBUG] [Thread-199192] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:53:32.948 [DEBUG] [Thread-199192] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:53:32.949 [DEBUG] [Thread-199192] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:53:32.949 [DEBUG] [Thread-199192] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:53:32.949 [DEBUG] [Thread-199192] [transport.py] [_log()] client lang: <none>
2025-11-24T23:53:32.949 [DEBUG] [Thread-199192] [transport.py] [_log()] server lang: <none>
2025-11-24T23:53:32.949 [DEBUG] [Thread-199192] [transport.py] [_log()] kex follows: False
2025-11-24T23:53:32.949 [DEBUG] [Thread-199192] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:53:32.950 [DEBUG] [Thread-199192] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:53:32.950 [DEBUG] [Thread-199192] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:53:32.951 [DEBUG] [Thread-199192] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:53:32.951 [DEBUG] [Thread-199192] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:53:32.951 [DEBUG] [Thread-199192] [transport.py] [_log()] Compression: none
2025-11-24T23:53:32.951 [DEBUG] [Thread-199192] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:53:32.990 [DEBUG] [Thread-199192] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:53:32.996 [DEBUG] [Thread-199192] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:53:32.997 [DEBUG] [Thread-199192] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:53:32.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:53:33.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:53:33.003 [DEBUG] [Thread-199192] [transport.py] [_log()] userauth is OK
2025-11-24T23:53:33.003 [DEBUG] [Thread-199192] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:53:33.004 [DEBUG] [Thread-199192] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:53:33.004 [DEBUG] [Thread-199192] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:53:33.004 [DEBUG] [Thread-199192] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:53:33.043 [INFO] [Thread-199192] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:53:33.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:53:33.716 [DEBUG] [Thread-199192] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:53:33.717 [DEBUG] [Thread-199192] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:53:33.718 [DEBUG] [Thread-199192] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:53:33.758 [DEBUG] [Thread-199192] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:53:33.758 [DEBUG] [Thread-199192] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:53:33.762 [DEBUG] [Thread-199192] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:53:33.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:53:33.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:53:33.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:53:33.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:53:33.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:53:33.790 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:53:33.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:53:33.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:53:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:53:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.911504 -999.00  +13.40  20.72     41   +0.60 1 1 1 1 1     0    0 13.01 4.89 ZNESW 15.5 20.7 153.0 25.0 13.7 -24.7 13.6 -24.2 13.4 -23.1 13.6 -23.7
2025-11-24T23:53:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:53:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:53:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.911504
2025-11-24T23:53:33.798 [DEBUG] [Thread-199192] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:53:33.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:53:33.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:53:33.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:53:33.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:53:33.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:53:33.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:53:23', tmtdew=14.43, humidity=36.8, cloud=0.0, wind=27.83, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:53:24', seeing=0.84, atlas_timestamp='2025-11-24T21:52:33.946', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.012750000000000483, 0.010749999999999815, -0.005500000000001393, 0.020500000000000185, 0.055749999999999744, 0.004999999999999005, -0.00274999999999892, 0.01249999999999929, 0.0129999999999999, 0.040749999999999176, -0.018500000000001293, 0.06099999999999994, 0.09024999999999928, 0.0019999999999988916, 0.0259999999999998, -0.016750000000000043, 0.04749999999999943, 0.034000000000000696, -0.019750000000001933, 0.019999999999999574, 0.05574999999999797, 0.0652500000000007, -0.006249999999999645, 0.004999999999999005, -0.017000000000001236, -0.00274999999999892, 0.06649999999999956, 0.10100000000000087, 0.09500000000000064, 0.10250000000000092, -0.014999999999998792, -0.03375000000000128], zp_timestamp='2025-11-24T21:52:00')
2025-11-24T23:53:33.899 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:53:33.911 [DEBUG] [Thread-199195] [transport.py] [_log()] starting thread (client mode): 0xd31f4dc0
2025-11-24T23:53:33.912 [DEBUG] [Thread-199195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:53:33.926 [DEBUG] [Thread-199195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:53:33.926 [INFO] [Thread-199195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:53:33.934 [DEBUG] [Thread-199195] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:53:33.934 [DEBUG] [Thread-199195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:53:33.934 [DEBUG] [Thread-199195] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] client lang: <none>
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] server lang: <none>
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] kex follows: False
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] Compression: none
2025-11-24T23:53:33.935 [DEBUG] [Thread-199195] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:53:33.992 [DEBUG] [Thread-199195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:53:33.993 [DEBUG] [Thread-199195] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:53:33.993 [DEBUG] [Thread-199195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:53:33.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:53:33.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:53:34.047 [DEBUG] [Thread-199195] [transport.py] [_log()] userauth is OK
2025-11-24T23:53:34.048 [DEBUG] [Thread-199195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:53:34.048 [DEBUG] [Thread-199195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:53:34.048 [DEBUG] [Thread-199195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:53:34.048 [DEBUG] [Thread-199195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:53:34.067 [INFO] [Thread-199195] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:53: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-11-24T23:53:34.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:53:34.977 [DEBUG] [Thread-199195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:53:34.977 [DEBUG] [Thread-199195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:53:35.025 [DEBUG] [Thread-199195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:53:35.025 [DEBUG] [Thread-199195] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:53:35.034 [DEBUG] [Thread-199195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:53:35.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:53:35.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-11-24T23:53:35.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-11-24T23:53:35.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:53:35.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:53:35.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:53:35.076 [DEBUG] [Thread-199195] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:53:47.770 [DEBUG] [Thread-199197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:54:01.880 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:54:01.896 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:54:02.898 [DEBUG] [Thread-199198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:54:05.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:54:05.102 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:54:05.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-11-24T23:54:06.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 53, 56), 14.42, 36.82, 0.0, 28.21, 13.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:54:06.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:53:56
2025-11-24T23:54:06.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:54:06.435 [DEBUG] [Thread-199199] [transport.py] [_log()] starting thread (client mode): 0xd31516f0
2025-11-24T23:54:06.435 [DEBUG] [Thread-199199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:54:06.441 [DEBUG] [Thread-199199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:54:06.441 [INFO] [Thread-199199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] client lang: <none>
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] server lang: <none>
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] kex follows: False
2025-11-24T23:54:06.446 [DEBUG] [Thread-199199] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:54:06.447 [DEBUG] [Thread-199199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:54:06.447 [DEBUG] [Thread-199199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:54:06.447 [DEBUG] [Thread-199199] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:54:06.447 [DEBUG] [Thread-199199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:54:06.447 [DEBUG] [Thread-199199] [transport.py] [_log()] Compression: none
2025-11-24T23:54:06.447 [DEBUG] [Thread-199199] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:54:06.475 [DEBUG] [Thread-199199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:54:06.479 [DEBUG] [Thread-199199] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:54:06.480 [DEBUG] [Thread-199199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:54:06.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:54:06.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:54:06.483 [DEBUG] [Thread-199199] [transport.py] [_log()] userauth is OK
2025-11-24T23:54:06.483 [DEBUG] [Thread-199199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:54:06.483 [DEBUG] [Thread-199199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:54:06.483 [DEBUG] [Thread-199199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:54:06.484 [DEBUG] [Thread-199199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:54:06.508 [INFO] [Thread-199199] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:54:06.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:54:07.296 [DEBUG] [Thread-199199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:54:07.296 [DEBUG] [Thread-199199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:54:07.297 [DEBUG] [Thread-199199] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:54:07.337 [DEBUG] [Thread-199199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:54:07.338 [DEBUG] [Thread-199199] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:54:07.340 [DEBUG] [Thread-199199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:54:07.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:54:07.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:54:07.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:54:07.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:54:07.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:54:07.366 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:54:07.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:54:07.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:54:07.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:54:07.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.911851 -999.00  +13.30  18.37     41   +0.60 1 1 1 1 1     0    0 13.11 3.66 ZNESW 22.8 18.4 156.4 26.9 13.7 -24.6 13.5 -24.2 13.3 -23.1 13.6 -23.9
2025-11-24T23:54:07.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:54:07.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:54:07.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.911851
2025-11-24T23:54:07.372 [DEBUG] [Thread-199199] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:54:07.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:54:07.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:54:07.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:54:07.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:54:07.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:54:07.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:53:56', tmtdew=14.42, humidity=36.82, cloud=0.0, wind=28.21, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:53:57', seeing=0.94, atlas_timestamp='2025-11-24T21:53:03.926', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.012750000000000483, 0.010749999999999815, -0.005500000000001393, 0.020500000000000185, 0.055749999999999744, 0.004999999999999005, -0.00274999999999892, 0.01249999999999929, 0.0129999999999999, 0.040749999999999176, -0.018500000000001293, 0.06099999999999994, 0.09024999999999928, 0.0019999999999988916, 0.0259999999999998, -0.016750000000000043, 0.04749999999999943, 0.034000000000000696, -0.019750000000001933, 0.019999999999999574, 0.05574999999999797, 0.0652500000000007, -0.006249999999999645, 0.004999999999999005, -0.017000000000001236, -0.00274999999999892, 0.06649999999999956, 0.10100000000000087, 0.09500000000000064, 0.10250000000000092, -0.014999999999998792, -0.03375000000000128], zp_timestamp='2025-11-24T21:52:00')
2025-11-24T23:54:07.451 [DEBUG] [Thread-199202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:54:07.461 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:54:07.473 [DEBUG] [Thread-199203] [transport.py] [_log()] starting thread (client mode): 0xd07cd600
2025-11-24T23:54:07.473 [DEBUG] [Thread-199203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:54:07.488 [DEBUG] [Thread-199203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:54:07.488 [INFO] [Thread-199203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:54:07.496 [DEBUG] [Thread-199203] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:54:07.496 [DEBUG] [Thread-199203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:54:07.496 [DEBUG] [Thread-199203] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:54:07.496 [DEBUG] [Thread-199203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] client lang: <none>
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] server lang: <none>
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] kex follows: False
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] Compression: none
2025-11-24T23:54:07.497 [DEBUG] [Thread-199203] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:54:07.556 [DEBUG] [Thread-199203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:54:07.556 [DEBUG] [Thread-199203] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:54:07.557 [DEBUG] [Thread-199203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:54:07.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:54:07.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:54:07.612 [DEBUG] [Thread-199203] [transport.py] [_log()] userauth is OK
2025-11-24T23:54:07.613 [DEBUG] [Thread-199203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:54:07.622 [DEBUG] [Thread-199203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:54:07.623 [DEBUG] [Thread-199203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:54:07.623 [DEBUG] [Thread-199203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:54:07.644 [INFO] [Thread-199203] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:54:07.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:54:07.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:54:08.493 [DEBUG] [Thread-199203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:54:08.493 [DEBUG] [Thread-199203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:54:08.540 [DEBUG] [Thread-199203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:54:08.540 [DEBUG] [Thread-199203] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:54:08.548 [DEBUG] [Thread-199203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:54:08.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:54:08.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-11-24T23:54:08.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-11-24T23:54:08.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:54:08.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:54:08.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:54:08.590 [DEBUG] [Thread-199203] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:54:17.958 [DEBUG] [Thread-199205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:54:33.113 [DEBUG] [Thread-199206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:54:33.850 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:54:38.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:54:38.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:54:38.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-11-24T23:54:39.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 54, 29), 14.41, 36.87, 0.0, 28.12, 13.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:54:39.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:54:29
2025-11-24T23:54:39.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:54:39.755 [DEBUG] [Thread-199207] [transport.py] [_log()] starting thread (client mode): 0xd3152200
2025-11-24T23:54:39.756 [DEBUG] [Thread-199207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:54:39.768 [DEBUG] [Thread-199207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:54:39.768 [INFO] [Thread-199207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] client lang: <none>
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] server lang: <none>
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] kex follows: False
2025-11-24T23:54:39.774 [DEBUG] [Thread-199207] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:54:39.775 [DEBUG] [Thread-199207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:54:39.775 [DEBUG] [Thread-199207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:54:39.775 [DEBUG] [Thread-199207] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:54:39.775 [DEBUG] [Thread-199207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:54:39.775 [DEBUG] [Thread-199207] [transport.py] [_log()] Compression: none
2025-11-24T23:54:39.775 [DEBUG] [Thread-199207] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:54:39.809 [DEBUG] [Thread-199207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:54:39.814 [DEBUG] [Thread-199207] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:54:39.816 [DEBUG] [Thread-199207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:54:39.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:54:39.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:54:39.821 [DEBUG] [Thread-199207] [transport.py] [_log()] userauth is OK
2025-11-24T23:54:39.822 [DEBUG] [Thread-199207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:54:39.822 [DEBUG] [Thread-199207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:54:39.822 [DEBUG] [Thread-199207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:54:39.822 [DEBUG] [Thread-199207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:54:39.849 [INFO] [Thread-199207] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:54:39.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:54:40.508 [DEBUG] [Thread-199207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:54:40.517 [DEBUG] [Thread-199207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:54:40.517 [DEBUG] [Thread-199207] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:54:40.549 [DEBUG] [Thread-199207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:54:40.549 [DEBUG] [Thread-199207] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:54:40.551 [DEBUG] [Thread-199207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:54:40.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:54:40.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:54:40.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:54:40.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:54:40.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:54:40.573 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:54:40.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:54:40.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:54:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:54:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.912545 -999.00  +13.40  18.70     42   +0.70 1 1 1 1 1     0    0 12.75 0.83 ZNESW 19.7 18.7 152.1 30.7 13.7 -24.6 13.5 -24.2 13.3 -23.0 13.6 -24.0
2025-11-24T23:54:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:54:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:54:40.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.912545
2025-11-24T23:54:40.580 [DEBUG] [Thread-199207] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:54:40.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:54:40.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:54:40.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:54:40.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:54:40.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:54:40.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:54:29', tmtdew=14.41, humidity=36.87, cloud=0.0, wind=28.12, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:54:29', seeing=0.86, atlas_timestamp='2025-11-24T21:54:03.888', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.012750000000000483, 0.010749999999999815, -0.005500000000001393, 0.020500000000000185, 0.055749999999999744, 0.004999999999999005, -0.00274999999999892, 0.01249999999999929, 0.0129999999999999, 0.040749999999999176, -0.018500000000001293, 0.06099999999999994, 0.09024999999999928, 0.0019999999999988916, 0.0259999999999998, -0.016750000000000043, 0.04749999999999943, 0.034000000000000696, -0.019750000000001933, 0.019999999999999574, 0.05574999999999797, 0.0652500000000007, -0.006249999999999645, 0.004999999999999005, -0.017000000000001236, -0.00274999999999892, 0.06649999999999956, 0.10100000000000087, 0.09500000000000064, 0.10250000000000092, -0.014999999999998792, -0.03375000000000128], zp_timestamp='2025-11-24T21:52:00')
2025-11-24T23:54:40.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:54:40.677 [DEBUG] [Thread-199210] [transport.py] [_log()] starting thread (client mode): 0xc9b80df0
2025-11-24T23:54:40.677 [DEBUG] [Thread-199210] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:54:40.693 [DEBUG] [Thread-199210] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:54:40.693 [INFO] [Thread-199210] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] client lang: <none>
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] server lang: <none>
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] kex follows: False
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] Compression: none
2025-11-24T23:54:40.701 [DEBUG] [Thread-199210] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:54:40.762 [DEBUG] [Thread-199210] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:54:40.762 [DEBUG] [Thread-199210] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:54:40.762 [DEBUG] [Thread-199210] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:54:40.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:54:40.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:54:40.819 [DEBUG] [Thread-199210] [transport.py] [_log()] userauth is OK
2025-11-24T23:54:40.819 [DEBUG] [Thread-199210] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:54:40.819 [DEBUG] [Thread-199210] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:54:40.819 [DEBUG] [Thread-199210] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:54:40.819 [DEBUG] [Thread-199210] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:54:40.842 [INFO] [Thread-199210] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:54:40.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:54:40.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:54:41.672 [DEBUG] [Thread-199210] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:54:41.672 [DEBUG] [Thread-199210] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:54:41.720 [DEBUG] [Thread-199210] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:54:41.720 [DEBUG] [Thread-199210] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:54:41.728 [DEBUG] [Thread-199210] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:54:41.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:54:41.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-11-24T23:54:41.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-11-24T23:54:41.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:54:41.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:54:41.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:54:41.764 [DEBUG] [Thread-199210] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:54:48.211 [DEBUG] [Thread-199212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:02.102 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:02.104 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:03.330 [DEBUG] [Thread-199213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:07.684 [DEBUG] [Thread-199214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:11.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:55:11.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:55:11.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:55:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 55, 2), 14.35, 37.02, 0.0, 28.42, 13.29, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:55:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:55:02
2025-11-24T23:55:12.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:55:12.998 [DEBUG] [Thread-199215] [transport.py] [_log()] starting thread (client mode): 0xd07383d0
2025-11-24T23:55:12.999 [DEBUG] [Thread-199215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:55:13.002 [DEBUG] [Thread-199215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:55:13.002 [INFO] [Thread-199215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:55:13.006 [DEBUG] [Thread-199215] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:55:13.006 [DEBUG] [Thread-199215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] client lang: <none>
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] server lang: <none>
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] kex follows: False
2025-11-24T23:55:13.007 [DEBUG] [Thread-199215] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:55:13.008 [DEBUG] [Thread-199215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:55:13.008 [DEBUG] [Thread-199215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:55:13.008 [DEBUG] [Thread-199215] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:55:13.008 [DEBUG] [Thread-199215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:55:13.008 [DEBUG] [Thread-199215] [transport.py] [_log()] Compression: none
2025-11-24T23:55:13.008 [DEBUG] [Thread-199215] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:55:13.045 [DEBUG] [Thread-199215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:55:13.050 [DEBUG] [Thread-199215] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:55:13.052 [DEBUG] [Thread-199215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:55:13.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:55:13.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:55:13.057 [DEBUG] [Thread-199215] [transport.py] [_log()] userauth is OK
2025-11-24T23:55:13.057 [DEBUG] [Thread-199215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:55:13.058 [DEBUG] [Thread-199215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:55:13.058 [DEBUG] [Thread-199215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:55:13.058 [DEBUG] [Thread-199215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:55:13.096 [INFO] [Thread-199215] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:55:13.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:55:16.670 [DEBUG] [Thread-199215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:55:16.670 [DEBUG] [Thread-199215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:55:16.673 [DEBUG] [Thread-199215] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:55:16.710 [DEBUG] [Thread-199215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:55:16.711 [DEBUG] [Thread-199215] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:55:16.714 [DEBUG] [Thread-199215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:55:16.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:55:16.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:55:16.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:55:16.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:55:16.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:55:16.808 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:55:16.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:55:16.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:55:16.810 [DEBUG] [Thread-199215] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:55:16.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:55:16.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.912892 -999.00  +13.40  19.06     41   +0.70 1 1 1 1 1     0    0 12.92 -0.49 ZNESW 22.6 19.1 154.0 24.8 13.7 -24.6 13.6 -24.1 13.3 -23.2 13.7 -23.7
2025-11-24T23:55:16.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:55:16.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:55:16.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.912892
2025-11-24T23:55:16.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:55:16.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:55:16.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:55:16.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:55:16.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:55:16.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:55:02', tmtdew=14.35, humidity=37.02, cloud=0.0, wind=28.42, temperature=13.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:55:02', seeing=0.93, atlas_timestamp='2025-11-24T21:54:33.869', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.012750000000000483, 0.010749999999999815, -0.005500000000001393, 0.020500000000000185, 0.055749999999999744, 0.004999999999999005, -0.00274999999999892, 0.01249999999999929, 0.0129999999999999, 0.040749999999999176, -0.018500000000001293, 0.06099999999999994, 0.09024999999999928, 0.0019999999999988916, 0.0259999999999998, -0.016750000000000043, 0.04749999999999943, 0.034000000000000696, -0.019750000000001933, 0.019999999999999574, 0.05574999999999797, 0.0652500000000007, -0.006249999999999645, 0.004999999999999005, -0.017000000000001236, -0.00274999999999892, 0.06649999999999956, 0.10100000000000087, 0.09500000000000064, 0.10250000000000092, -0.014999999999998792, -0.03375000000000128], zp_timestamp='2025-11-24T21:52:00')
2025-11-24T23:55:16.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:55:16.941 [DEBUG] [Thread-199218] [transport.py] [_log()] starting thread (client mode): 0xd0739d20
2025-11-24T23:55:16.941 [DEBUG] [Thread-199218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:55:16.956 [DEBUG] [Thread-199218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:55:16.956 [INFO] [Thread-199218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:55:16.963 [DEBUG] [Thread-199218] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:55:16.963 [DEBUG] [Thread-199218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:55:16.963 [DEBUG] [Thread-199218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:55:16.963 [DEBUG] [Thread-199218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:55:16.963 [DEBUG] [Thread-199218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:55:16.963 [DEBUG] [Thread-199218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:55:16.963 [DEBUG] [Thread-199218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:55:16.963 [DEBUG] [Thread-199218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:55:16.963 [DEBUG] [Thread-199218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:55:16.964 [DEBUG] [Thread-199218] [transport.py] [_log()] client lang: <none>
2025-11-24T23:55:16.964 [DEBUG] [Thread-199218] [transport.py] [_log()] server lang: <none>
2025-11-24T23:55:16.964 [DEBUG] [Thread-199218] [transport.py] [_log()] kex follows: False
2025-11-24T23:55:16.964 [DEBUG] [Thread-199218] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:55:16.964 [DEBUG] [Thread-199218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:55:16.964 [DEBUG] [Thread-199218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:55:16.964 [DEBUG] [Thread-199218] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:55:16.964 [DEBUG] [Thread-199218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:55:16.964 [DEBUG] [Thread-199218] [transport.py] [_log()] Compression: none
2025-11-24T23:55:16.964 [DEBUG] [Thread-199218] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:55:17.025 [DEBUG] [Thread-199218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:55:17.025 [DEBUG] [Thread-199218] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:55:17.025 [DEBUG] [Thread-199218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:55:17.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:55:17.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:55:17.084 [DEBUG] [Thread-199218] [transport.py] [_log()] userauth is OK
2025-11-24T23:55:17.084 [DEBUG] [Thread-199218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:55:17.084 [DEBUG] [Thread-199218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:55:17.084 [DEBUG] [Thread-199218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:55:17.084 [DEBUG] [Thread-199218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:55:17.101 [INFO] [Thread-199218] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:55:17.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:55:17.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:55:17.942 [DEBUG] [Thread-199218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:55:17.943 [DEBUG] [Thread-199218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:55:17.991 [DEBUG] [Thread-199218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:55:17.992 [DEBUG] [Thread-199218] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:55:18.002 [DEBUG] [Thread-199218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:55:18.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:55:18.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-11-24T23:55:18.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-11-24T23:55:18.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:55:18.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:55:18.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:55:18.040 [DEBUG] [Thread-199218] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:55:18.387 [DEBUG] [Thread-199220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:33.528 [DEBUG] [Thread-199221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:42.865 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:46.013 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:48.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:55:48.063 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:55:48.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-11-24T23:55:48.577 [DEBUG] [Thread-199222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:48.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 55, 35), 14.34, 37.05, 0.0, 26.66, 13.49, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:55:48.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:55:35
2025-11-24T23:55:48.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:55:49.148 [DEBUG] [Thread-199223] [transport.py] [_log()] starting thread (client mode): 0xd3151480
2025-11-24T23:55:49.149 [DEBUG] [Thread-199223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:55:49.162 [DEBUG] [Thread-199223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:55:49.162 [INFO] [Thread-199223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] client lang: <none>
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] server lang: <none>
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] kex follows: False
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:55:49.166 [DEBUG] [Thread-199223] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:55:49.167 [DEBUG] [Thread-199223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:55:49.167 [DEBUG] [Thread-199223] [transport.py] [_log()] Compression: none
2025-11-24T23:55:49.167 [DEBUG] [Thread-199223] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:55:49.191 [DEBUG] [Thread-199223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:55:49.194 [DEBUG] [Thread-199223] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:55:49.195 [DEBUG] [Thread-199223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:55:49.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:55:49.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:55:49.232 [DEBUG] [Thread-199223] [transport.py] [_log()] userauth is OK
2025-11-24T23:55:49.233 [DEBUG] [Thread-199223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:55:49.233 [DEBUG] [Thread-199223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:55:49.233 [DEBUG] [Thread-199223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:55:49.233 [DEBUG] [Thread-199223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:55:49.250 [INFO] [Thread-199223] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:55:49.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:55:49.909 [DEBUG] [Thread-199223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:55:49.909 [DEBUG] [Thread-199223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:55:49.910 [DEBUG] [Thread-199223] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:55:49.951 [DEBUG] [Thread-199223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:55:49.951 [DEBUG] [Thread-199223] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:55:49.953 [DEBUG] [Thread-199223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:55:49.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:55:49.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:55:49.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:55:49.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:55:49.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:55:49.974 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:55:49.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:55:49.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:55:49.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:55:49.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.913239 -999.00  +13.40  24.33     42   +1.00 1 1 1 1 1     0    0 12.86 -2.29 ZNESW 23.1 24.3 151.2 29.0 13.7 -24.6 13.6 -24.1 13.4 -22.9 13.7 -23.7
2025-11-24T23:55:49.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:55:49.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:55:49.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.913239
2025-11-24T23:55:49.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:55:49.978 [DEBUG] [Thread-199223] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:55:49.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:55:49.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:55:49.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:55:49.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:55:49.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:55:35', tmtdew=14.34, humidity=37.05, cloud=0.0, wind=26.66, temperature=13.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:55:35', seeing=0.82, atlas_timestamp='2025-11-24T21:55:03.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.012750000000000483, 0.010749999999999815, -0.005500000000001393, 0.020500000000000185, 0.055749999999999744, 0.004999999999999005, -0.00274999999999892, 0.01249999999999929, 0.0129999999999999, 0.040749999999999176, -0.018500000000001293, 0.06099999999999994, 0.09024999999999928, 0.0019999999999988916, 0.0259999999999998, -0.016750000000000043, 0.04749999999999943, 0.034000000000000696, -0.019750000000001933, 0.019999999999999574, 0.05574999999999797, 0.0652500000000007, -0.006249999999999645, 0.004999999999999005, -0.017000000000001236, -0.00274999999999892, 0.06649999999999956, 0.10100000000000087, 0.09500000000000064, 0.10250000000000092, -0.014999999999998792, -0.03375000000000128], zp_timestamp='2025-11-24T21:52:00')
2025-11-24T23:55:50.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:55:50.074 [DEBUG] [Thread-199226] [transport.py] [_log()] starting thread (client mode): 0xd31f6440
2025-11-24T23:55:50.074 [DEBUG] [Thread-199226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:55:50.089 [DEBUG] [Thread-199226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:55:50.089 [INFO] [Thread-199226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] client lang: <none>
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] server lang: <none>
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] kex follows: False
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] Compression: none
2025-11-24T23:55:50.097 [DEBUG] [Thread-199226] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:55:50.158 [DEBUG] [Thread-199226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:55:50.158 [DEBUG] [Thread-199226] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:55:50.159 [DEBUG] [Thread-199226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:55:50.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:55:50.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:55:50.216 [DEBUG] [Thread-199226] [transport.py] [_log()] userauth is OK
2025-11-24T23:55:50.216 [DEBUG] [Thread-199226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:55:50.216 [DEBUG] [Thread-199226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:55:50.216 [DEBUG] [Thread-199226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:55:50.216 [DEBUG] [Thread-199226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:55:50.237 [INFO] [Thread-199226] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:55:50.238 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:55:50.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:55:51.084 [DEBUG] [Thread-199226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:55:51.084 [DEBUG] [Thread-199226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:55:51.103 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:55:51.132 [DEBUG] [Thread-199226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:55:51.132 [DEBUG] [Thread-199226] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:55:51.140 [DEBUG] [Thread-199226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:55:51.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:55:51.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-11-24T23:55: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-11-24T23:55:51.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:55:51.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:55:51.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:55:51.175 [DEBUG] [Thread-199226] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:55:57.613 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:02.308 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:02.309 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:03.635 [DEBUG] [Thread-199228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:08.011 [DEBUG] [Thread-199229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:16.877 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:18.769 [DEBUG] [Thread-199230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:21.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:56:21.204 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:56:21.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-11-24T23:56:21.347 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:22.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 56, 8), 14.35, 37.02, 0.0, 26.33, 13.51, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:56:22.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:56:08
2025-11-24T23:56:22.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:56:22.400 [DEBUG] [Thread-199231] [transport.py] [_log()] starting thread (client mode): 0xd31f4a60
2025-11-24T23:56:22.401 [DEBUG] [Thread-199231] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:56:22.408 [DEBUG] [Thread-199231] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:56:22.408 [INFO] [Thread-199231] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] client lang: <none>
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] server lang: <none>
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] kex follows: False
2025-11-24T23:56:22.412 [DEBUG] [Thread-199231] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:56:22.413 [DEBUG] [Thread-199231] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:56:22.413 [DEBUG] [Thread-199231] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:56:22.413 [DEBUG] [Thread-199231] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:56:22.413 [DEBUG] [Thread-199231] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:56:22.413 [DEBUG] [Thread-199231] [transport.py] [_log()] Compression: none
2025-11-24T23:56:22.413 [DEBUG] [Thread-199231] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:56:22.440 [DEBUG] [Thread-199231] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:56:22.447 [DEBUG] [Thread-199231] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:56:22.449 [DEBUG] [Thread-199231] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:56:22.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:56:22.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:56:22.455 [DEBUG] [Thread-199231] [transport.py] [_log()] userauth is OK
2025-11-24T23:56:22.455 [DEBUG] [Thread-199231] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:56:22.456 [DEBUG] [Thread-199231] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:56:22.456 [DEBUG] [Thread-199231] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:56:22.456 [DEBUG] [Thread-199231] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:56:22.485 [INFO] [Thread-199231] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:56:22.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:56:23.059 [DEBUG] [Thread-199231] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:56:23.059 [DEBUG] [Thread-199231] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:56:23.061 [DEBUG] [Thread-199231] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:56:23.099 [DEBUG] [Thread-199231] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:56:23.099 [DEBUG] [Thread-199231] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:56:23.103 [DEBUG] [Thread-199231] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:56:23.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:56:23.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:56:23.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:56:23.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:56:23.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:56:23.128 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:56:23.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:56:23.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:56:23.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:56:23.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.913587 -999.00  +13.50  20.04     42   +0.80 1 1 1 1 1     0    0 12.70 -3.99 ZNESW 18.5 20.0 151.6 28.4 13.7 -24.7 13.6 -24.1 13.3 -23.0 13.6 -23.7
2025-11-24T23:56:23.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:56:23.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:56:23.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.913587
2025-11-24T23:56:23.136 [DEBUG] [Thread-199231] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:56:23.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:56:23.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:56:23.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:56:23.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:56:23.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:56:23.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:56:08', tmtdew=14.35, humidity=37.02, cloud=0.0, wind=26.33, temperature=13.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:56:08', seeing=0.82, atlas_timestamp='2025-11-24T21:55:33.917', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:55:00')
2025-11-24T23:56: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-11-24T23:56:23.255 [DEBUG] [Thread-199234] [transport.py] [_log()] starting thread (client mode): 0xc9b81c30
2025-11-24T23:56:23.255 [DEBUG] [Thread-199234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:56:23.272 [DEBUG] [Thread-199234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:56:23.272 [INFO] [Thread-199234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:56:23.279 [DEBUG] [Thread-199234] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:56:23.279 [DEBUG] [Thread-199234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:56:23.279 [DEBUG] [Thread-199234] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:56:23.279 [DEBUG] [Thread-199234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:56:23.279 [DEBUG] [Thread-199234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] client lang: <none>
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] server lang: <none>
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] kex follows: False
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] Compression: none
2025-11-24T23:56:23.280 [DEBUG] [Thread-199234] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:56:23.343 [DEBUG] [Thread-199234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:56:23.344 [DEBUG] [Thread-199234] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:56:23.344 [DEBUG] [Thread-199234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:56:23.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:56:23.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:56:23.399 [DEBUG] [Thread-199234] [transport.py] [_log()] userauth is OK
2025-11-24T23:56:23.399 [DEBUG] [Thread-199234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:56:23.399 [DEBUG] [Thread-199234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:56:23.399 [DEBUG] [Thread-199234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:56:23.399 [DEBUG] [Thread-199234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:56:23.416 [INFO] [Thread-199234] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:56:23.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:56:23.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:56:24.281 [DEBUG] [Thread-199234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:56:24.281 [DEBUG] [Thread-199234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:56:24.329 [DEBUG] [Thread-199234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:56:24.329 [DEBUG] [Thread-199234] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:56:24.338 [DEBUG] [Thread-199234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:56:24.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:56:24.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-11-24T23:56:24.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-11-24T23:56:24.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:56:24.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:56:24.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:56:24.372 [DEBUG] [Thread-199234] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:56:33.900 [DEBUG] [Thread-199236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:40.656 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:45.150 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:49.098 [DEBUG] [Thread-199237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:51.161 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:54.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:56:54.370 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:56:54.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-24T23:56:55.662 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:56:55.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 56, 41), 14.4, 36.9, 0.0, 29.24, 13.43, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:56:55.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:56:41
2025-11-24T23:56:55.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:56:56.050 [DEBUG] [Thread-199238] [transport.py] [_log()] starting thread (client mode): 0xd07386a0
2025-11-24T23:56:56.051 [DEBUG] [Thread-199238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:56:56.060 [DEBUG] [Thread-199238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:56:56.060 [INFO] [Thread-199238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] client lang: <none>
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] server lang: <none>
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] kex follows: False
2025-11-24T23:56:56.065 [DEBUG] [Thread-199238] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:56:56.066 [DEBUG] [Thread-199238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:56:56.066 [DEBUG] [Thread-199238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:56:56.066 [DEBUG] [Thread-199238] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:56:56.066 [DEBUG] [Thread-199238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:56:56.066 [DEBUG] [Thread-199238] [transport.py] [_log()] Compression: none
2025-11-24T23:56:56.066 [DEBUG] [Thread-199238] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:56:56.100 [DEBUG] [Thread-199238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:56:56.106 [DEBUG] [Thread-199238] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:56:56.107 [DEBUG] [Thread-199238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:56:56.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:56:56.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:56:56.111 [DEBUG] [Thread-199238] [transport.py] [_log()] userauth is OK
2025-11-24T23:56:56.112 [DEBUG] [Thread-199238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:56:56.112 [DEBUG] [Thread-199238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:56:56.112 [DEBUG] [Thread-199238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:56:56.112 [DEBUG] [Thread-199238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:56:56.132 [INFO] [Thread-199238] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:56:56.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:56:56.756 [DEBUG] [Thread-199238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:56:56.756 [DEBUG] [Thread-199238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:56:56.757 [DEBUG] [Thread-199238] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:56:56.797 [DEBUG] [Thread-199238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:56:56.797 [DEBUG] [Thread-199238] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:56:56.800 [DEBUG] [Thread-199238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:56:56.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:56:56.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:56:56.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:56:56.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:56:56.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:56:56.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:56:56.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:56:56.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:56:56.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:56:56.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.913934 -999.00  +13.40  17.86     42   +0.80 1 1 1 1 1     0    0 12.70 -5.42 ZNESW 17.8 17.9 156.0 30.2 13.8 -24.7 13.6 -24.1 13.3 -23.2 13.6 -24.0
2025-11-24T23:56:56.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:56:56.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:56:56.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.913934
2025-11-24T23:56:56.829 [DEBUG] [Thread-199238] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:56:56.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:56:56.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:56:56.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:56:56.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:56:56.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:56:56.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:56:41', tmtdew=14.4, humidity=36.9, cloud=0.0, wind=29.24, temperature=13.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:56:41', seeing=0.89, atlas_timestamp='2025-11-24T21:56:03.898', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:55:00')
2025-11-24T23:56:56.932 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:56:56.943 [DEBUG] [Thread-199241] [transport.py] [_log()] starting thread (client mode): 0xd0739e70
2025-11-24T23:56:56.943 [DEBUG] [Thread-199241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:56:56.958 [DEBUG] [Thread-199241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:56:56.958 [INFO] [Thread-199241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] client lang: <none>
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] server lang: <none>
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] kex follows: False
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:56:56.966 [DEBUG] [Thread-199241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:56:56.967 [DEBUG] [Thread-199241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:56:56.967 [DEBUG] [Thread-199241] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:56:56.967 [DEBUG] [Thread-199241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:56:56.967 [DEBUG] [Thread-199241] [transport.py] [_log()] Compression: none
2025-11-24T23:56:56.967 [DEBUG] [Thread-199241] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:56:57.024 [DEBUG] [Thread-199241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:56:57.025 [DEBUG] [Thread-199241] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:56:57.025 [DEBUG] [Thread-199241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:56:57.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:56:57.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:56:57.083 [DEBUG] [Thread-199241] [transport.py] [_log()] userauth is OK
2025-11-24T23:56:57.083 [DEBUG] [Thread-199241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:56:57.083 [DEBUG] [Thread-199241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:56:57.083 [DEBUG] [Thread-199241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:56:57.083 [DEBUG] [Thread-199241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:56:57.099 [INFO] [Thread-199241] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:56:57.099 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:56:57.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:56:57.941 [DEBUG] [Thread-199241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:56:57.941 [DEBUG] [Thread-199241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:56:57.989 [DEBUG] [Thread-199241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:56:57.989 [DEBUG] [Thread-199241] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:56:57.997 [DEBUG] [Thread-199241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:56:58.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:56:58.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-11-24T23:56:58.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-11-24T23:56:58.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:56:58.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:56:58.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:56:58.032 [DEBUG] [Thread-199241] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:57:02.512 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:57:02.514 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:57:04.158 [DEBUG] [Thread-199243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:57:08.270 [DEBUG] [Thread-199244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:57:19.364 [DEBUG] [Thread-199245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:57:28.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:57:28.050 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:57:28.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-11-24T23:57:28.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 57, 14), 14.4, 36.87, 0.0, 28.62, 13.36, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:57:28.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:57:14
2025-11-24T23:57:29.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:57:29.331 [DEBUG] [Thread-199246] [transport.py] [_log()] starting thread (client mode): 0xd31506a0
2025-11-24T23:57:29.332 [DEBUG] [Thread-199246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:57:29.343 [DEBUG] [Thread-199246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:57:29.343 [INFO] [Thread-199246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:57:29.348 [DEBUG] [Thread-199246] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:57:29.349 [DEBUG] [Thread-199246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:57:29.349 [DEBUG] [Thread-199246] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:57:29.349 [DEBUG] [Thread-199246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:57:29.349 [DEBUG] [Thread-199246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:57:29.349 [DEBUG] [Thread-199246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:57:29.349 [DEBUG] [Thread-199246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:57:29.349 [DEBUG] [Thread-199246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:57:29.349 [DEBUG] [Thread-199246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:57:29.349 [DEBUG] [Thread-199246] [transport.py] [_log()] client lang: <none>
2025-11-24T23:57:29.350 [DEBUG] [Thread-199246] [transport.py] [_log()] server lang: <none>
2025-11-24T23:57:29.350 [DEBUG] [Thread-199246] [transport.py] [_log()] kex follows: False
2025-11-24T23:57:29.350 [DEBUG] [Thread-199246] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:57:29.350 [DEBUG] [Thread-199246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:57:29.350 [DEBUG] [Thread-199246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:57:29.351 [DEBUG] [Thread-199246] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:57:29.351 [DEBUG] [Thread-199246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:57:29.351 [DEBUG] [Thread-199246] [transport.py] [_log()] Compression: none
2025-11-24T23:57:29.351 [DEBUG] [Thread-199246] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:57:29.384 [DEBUG] [Thread-199246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:57:29.390 [DEBUG] [Thread-199246] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:57:29.392 [DEBUG] [Thread-199246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:57:29.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:57:29.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:57:29.397 [DEBUG] [Thread-199246] [transport.py] [_log()] userauth is OK
2025-11-24T23:57:29.397 [DEBUG] [Thread-199246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:57:29.398 [DEBUG] [Thread-199246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:57:29.398 [DEBUG] [Thread-199246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:57:29.398 [DEBUG] [Thread-199246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:57:29.425 [INFO] [Thread-199246] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:57:29.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:57:30.065 [DEBUG] [Thread-199246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:57:30.065 [DEBUG] [Thread-199246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:57:30.067 [DEBUG] [Thread-199246] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:57:30.106 [DEBUG] [Thread-199246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:57:30.106 [DEBUG] [Thread-199246] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:57:30.110 [DEBUG] [Thread-199246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:57:30.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:57:30.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:57:30.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:57:30.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:57:30.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:57:30.136 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:57:30.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:57:30.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:57:30.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:57:30.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.914281 -999.00  +13.40  16.71     42   +0.70 1 1 1 1 1     0    0 12.61 -6.13 ZNESW 20.4 16.7 146.4 26.8 13.7 -24.7 13.6 -24.2 13.3 -23.2 13.6 -24.1
2025-11-24T23:57:30.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:57:30.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:57:30.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.914281
2025-11-24T23:57:30.144 [DEBUG] [Thread-199246] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:57:30.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:57:30.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:57:30.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:57:30.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:57:30.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:57:30.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:57:14', tmtdew=14.4, humidity=36.87, cloud=0.0, wind=28.62, temperature=13.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:57:15', seeing=0.85, atlas_timestamp='2025-11-24T21:56:33.878', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:55:00')
2025-11-24T23:57:30.239 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:57:30.250 [DEBUG] [Thread-199249] [transport.py] [_log()] starting thread (client mode): 0xd07110c0
2025-11-24T23:57:30.250 [DEBUG] [Thread-199249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:57:30.266 [DEBUG] [Thread-199249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:57:30.266 [INFO] [Thread-199249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:57:30.274 [DEBUG] [Thread-199249] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:57:30.274 [DEBUG] [Thread-199249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:57:30.274 [DEBUG] [Thread-199249] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:57:30.274 [DEBUG] [Thread-199249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:57:30.275 [DEBUG] [Thread-199249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:57:30.275 [DEBUG] [Thread-199249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:57:30.275 [DEBUG] [Thread-199249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:57:30.275 [DEBUG] [Thread-199249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:57:30.275 [DEBUG] [Thread-199249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:57:30.275 [DEBUG] [Thread-199249] [transport.py] [_log()] client lang: <none>
2025-11-24T23:57:30.275 [DEBUG] [Thread-199249] [transport.py] [_log()] server lang: <none>
2025-11-24T23:57:30.275 [DEBUG] [Thread-199249] [transport.py] [_log()] kex follows: False
2025-11-24T23:57:30.275 [DEBUG] [Thread-199249] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:57:30.276 [DEBUG] [Thread-199249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:57:30.276 [DEBUG] [Thread-199249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:57:30.276 [DEBUG] [Thread-199249] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:57:30.276 [DEBUG] [Thread-199249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:57:30.276 [DEBUG] [Thread-199249] [transport.py] [_log()] Compression: none
2025-11-24T23:57:30.276 [DEBUG] [Thread-199249] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:57:30.341 [DEBUG] [Thread-199249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:57:30.342 [DEBUG] [Thread-199249] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:57:30.343 [DEBUG] [Thread-199249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:57:30.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:57:30.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:57:30.400 [DEBUG] [Thread-199249] [transport.py] [_log()] userauth is OK
2025-11-24T23:57:30.400 [DEBUG] [Thread-199249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:57:30.400 [DEBUG] [Thread-199249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:57:30.400 [DEBUG] [Thread-199249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:57:30.401 [DEBUG] [Thread-199249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:57:30.420 [INFO] [Thread-199249] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:57:30.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:57:30.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:57:31.255 [DEBUG] [Thread-199249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:57:31.255 [DEBUG] [Thread-199249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:57:31.304 [DEBUG] [Thread-199249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:57:31.304 [DEBUG] [Thread-199249] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:57:31.313 [DEBUG] [Thread-199249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:57:31.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:57:31.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-11-24T23:57:31.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-11-24T23:57:31.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:57:31.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:57:31.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:57:31.353 [DEBUG] [Thread-199249] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:57:34.443 [DEBUG] [Thread-199251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:57:49.538 [DEBUG] [Thread-199252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:58:01.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:58:01.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:58:01.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-11-24T23:58:02.720 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:58:02.724 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:58:02.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 57, 47), 14.41, 36.83, 0.0, 29.04, 13.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:58:02.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:57:47
2025-11-24T23:58:02.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:58:03.151 [DEBUG] [Thread-199253] [transport.py] [_log()] starting thread (client mode): 0xd3152410
2025-11-24T23:58:03.152 [DEBUG] [Thread-199253] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:58:03.152 [DEBUG] [Thread-199253] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:58:03.153 [INFO] [Thread-199253] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:58:03.158 [DEBUG] [Thread-199253] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:58:03.158 [DEBUG] [Thread-199253] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:58:03.158 [DEBUG] [Thread-199253] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:58:03.158 [DEBUG] [Thread-199253] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:58:03.158 [DEBUG] [Thread-199253] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:58:03.158 [DEBUG] [Thread-199253] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:58:03.158 [DEBUG] [Thread-199253] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:58:03.158 [DEBUG] [Thread-199253] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:58:03.159 [DEBUG] [Thread-199253] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:58:03.159 [DEBUG] [Thread-199253] [transport.py] [_log()] client lang: <none>
2025-11-24T23:58:03.159 [DEBUG] [Thread-199253] [transport.py] [_log()] server lang: <none>
2025-11-24T23:58:03.159 [DEBUG] [Thread-199253] [transport.py] [_log()] kex follows: False
2025-11-24T23:58:03.159 [DEBUG] [Thread-199253] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:58:03.160 [DEBUG] [Thread-199253] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:58:03.160 [DEBUG] [Thread-199253] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:58:03.160 [DEBUG] [Thread-199253] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:58:03.160 [DEBUG] [Thread-199253] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:58:03.160 [DEBUG] [Thread-199253] [transport.py] [_log()] Compression: none
2025-11-24T23:58:03.161 [DEBUG] [Thread-199253] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:58:03.200 [DEBUG] [Thread-199253] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:58:03.205 [DEBUG] [Thread-199253] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:58:03.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:58:03.209 [DEBUG] [Thread-199253] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:58:03.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:58:03.211 [DEBUG] [Thread-199253] [transport.py] [_log()] userauth is OK
2025-11-24T23:58:03.212 [DEBUG] [Thread-199253] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:58:03.212 [DEBUG] [Thread-199253] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:58:03.212 [DEBUG] [Thread-199253] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:58:03.212 [DEBUG] [Thread-199253] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:58:03.240 [INFO] [Thread-199253] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:58:03.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:58:03.887 [DEBUG] [Thread-199253] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:58:03.888 [DEBUG] [Thread-199253] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:58:03.889 [DEBUG] [Thread-199253] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:58:03.929 [DEBUG] [Thread-199253] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:58:03.929 [DEBUG] [Thread-199253] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:58:03.933 [DEBUG] [Thread-199253] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:58:03.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:58:03.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:58:03.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:58:03.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:58:03.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:58:03.965 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:58:03.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:58:03.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:58:03.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:58:03.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.914976 -999.00  +13.40  18.54     41   +0.70 1 1 1 1 1     0    0 12.46 -8.34 ZNESW 18.2 18.5 145.4 24.5 13.7 -24.7 13.6 -24.2 13.3 -23.0 13.6 -23.9
2025-11-24T23:58:03.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:58:03.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:58:03.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.914976
2025-11-24T23:58:03.974 [DEBUG] [Thread-199253] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:58:03.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:58:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:58:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:58:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:58:03.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:58:03.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:57:47', tmtdew=14.41, humidity=36.83, cloud=0.0, wind=29.04, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:57:47', seeing=0.8, atlas_timestamp='2025-11-24T21:57:33.926', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:55:00')
2025-11-24T23:58:04.039 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:58:04.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:58:04.086 [DEBUG] [Thread-199256] [transport.py] [_log()] starting thread (client mode): 0xd0712b00
2025-11-24T23:58:04.087 [DEBUG] [Thread-199256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:58:04.101 [DEBUG] [Thread-199256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:58:04.101 [INFO] [Thread-199256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] client lang: <none>
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] server lang: <none>
2025-11-24T23:58:04.109 [DEBUG] [Thread-199256] [transport.py] [_log()] kex follows: False
2025-11-24T23:58:04.110 [DEBUG] [Thread-199256] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:58:04.110 [DEBUG] [Thread-199256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:58:04.110 [DEBUG] [Thread-199256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:58:04.110 [DEBUG] [Thread-199256] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:58:04.110 [DEBUG] [Thread-199256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:58:04.110 [DEBUG] [Thread-199256] [transport.py] [_log()] Compression: none
2025-11-24T23:58:04.110 [DEBUG] [Thread-199256] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:58:04.166 [DEBUG] [Thread-199256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:58:04.166 [DEBUG] [Thread-199256] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:58:04.166 [DEBUG] [Thread-199256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:58:04.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:58:04.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:58:04.224 [DEBUG] [Thread-199256] [transport.py] [_log()] userauth is OK
2025-11-24T23:58:04.224 [DEBUG] [Thread-199256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:58:04.224 [DEBUG] [Thread-199256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:58:04.224 [DEBUG] [Thread-199256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:58:04.224 [DEBUG] [Thread-199256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:58:04.247 [INFO] [Thread-199256] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:58:04.248 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:58:04.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:58:04.588 [DEBUG] [Thread-199258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:58:05.079 [DEBUG] [Thread-199256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:58:05.080 [DEBUG] [Thread-199256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:58:05.128 [DEBUG] [Thread-199256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:58:05.128 [DEBUG] [Thread-199256] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:58:05.137 [DEBUG] [Thread-199256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:58:05.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:58:05.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-11-24T23:58:05.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-11-24T23:58:05.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:58:05.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:58:05.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:58:05.184 [DEBUG] [Thread-199256] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:58:08.166 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:58:08.614 [DEBUG] [Thread-199259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:58:19.705 [DEBUG] [Thread-199260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:58:34.749 [DEBUG] [Thread-199261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:58:35.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:58:35.208 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:58:35.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-11-24T23:58:36.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 58, 20), 14.4, 36.88, 0.0, 29.01, 13.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:58:36.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:58:20
2025-11-24T23:58:36.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:58:36.384 [DEBUG] [Thread-199262] [transport.py] [_log()] starting thread (client mode): 0xd0739fc0
2025-11-24T23:58:36.385 [DEBUG] [Thread-199262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:58:36.398 [DEBUG] [Thread-199262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:58:36.398 [INFO] [Thread-199262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:58:36.404 [DEBUG] [Thread-199262] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:58:36.404 [DEBUG] [Thread-199262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] client lang: <none>
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] server lang: <none>
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] kex follows: False
2025-11-24T23:58:36.405 [DEBUG] [Thread-199262] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:58:36.406 [DEBUG] [Thread-199262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:58:36.406 [DEBUG] [Thread-199262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:58:36.407 [DEBUG] [Thread-199262] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:58:36.407 [DEBUG] [Thread-199262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:58:36.407 [DEBUG] [Thread-199262] [transport.py] [_log()] Compression: none
2025-11-24T23:58:36.407 [DEBUG] [Thread-199262] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:58:36.441 [DEBUG] [Thread-199262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:58:36.446 [DEBUG] [Thread-199262] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:58:36.448 [DEBUG] [Thread-199262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:58:36.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:58:36.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:58:36.453 [DEBUG] [Thread-199262] [transport.py] [_log()] userauth is OK
2025-11-24T23:58:36.454 [DEBUG] [Thread-199262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:58:36.454 [DEBUG] [Thread-199262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:58:36.454 [DEBUG] [Thread-199262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:58:36.454 [DEBUG] [Thread-199262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:58:36.481 [INFO] [Thread-199262] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:58:36.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:58:37.108 [DEBUG] [Thread-199262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:58:37.108 [DEBUG] [Thread-199262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:58:37.118 [DEBUG] [Thread-199262] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:58:37.149 [DEBUG] [Thread-199262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:58:37.149 [DEBUG] [Thread-199262] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:58:37.153 [DEBUG] [Thread-199262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:58:37.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:58:37.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:58:37.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:58:37.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:58:37.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:58:37.181 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:58:37.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:58:37.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:58:37.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:58:37.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.915323 -999.00  +13.30  19.80     42   +0.70 1 1 1 1 1     0    0 12.58 -9.50 ZNESW 16.8 19.8 151.4 28.7 13.7 -24.6 13.5 -24.2 13.3 -23.1 13.6 -24.2
2025-11-24T23:58:37.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:58:37.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:58:37.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.915323
2025-11-24T23:58:37.189 [DEBUG] [Thread-199262] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:58:37.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:58:37.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:58:37.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:58:37.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:58:37.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:58:37.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:58:20', tmtdew=14.4, humidity=36.88, cloud=0.0, wind=29.01, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:58:20', seeing=0.78, atlas_timestamp='2025-11-24T21:58:03.907', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:55:00')
2025-11-24T23:58:37.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:58:37.306 [DEBUG] [Thread-199265] [transport.py] [_log()] starting thread (client mode): 0xd073a6e0
2025-11-24T23:58:37.306 [DEBUG] [Thread-199265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:58:37.320 [DEBUG] [Thread-199265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:58:37.320 [INFO] [Thread-199265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:58:37.328 [DEBUG] [Thread-199265] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:58:37.328 [DEBUG] [Thread-199265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:58:37.328 [DEBUG] [Thread-199265] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:58:37.328 [DEBUG] [Thread-199265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:58:37.328 [DEBUG] [Thread-199265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:58:37.328 [DEBUG] [Thread-199265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:58:37.328 [DEBUG] [Thread-199265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:58:37.328 [DEBUG] [Thread-199265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:58:37.328 [DEBUG] [Thread-199265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:58:37.328 [DEBUG] [Thread-199265] [transport.py] [_log()] client lang: <none>
2025-11-24T23:58:37.329 [DEBUG] [Thread-199265] [transport.py] [_log()] server lang: <none>
2025-11-24T23:58:37.329 [DEBUG] [Thread-199265] [transport.py] [_log()] kex follows: False
2025-11-24T23:58:37.329 [DEBUG] [Thread-199265] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:58:37.329 [DEBUG] [Thread-199265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:58:37.329 [DEBUG] [Thread-199265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:58:37.329 [DEBUG] [Thread-199265] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:58:37.329 [DEBUG] [Thread-199265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:58:37.329 [DEBUG] [Thread-199265] [transport.py] [_log()] Compression: none
2025-11-24T23:58:37.329 [DEBUG] [Thread-199265] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:58:37.389 [DEBUG] [Thread-199265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:58:37.391 [DEBUG] [Thread-199265] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:58:37.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:58:37.392 [DEBUG] [Thread-199265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:58:37.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:58:37.448 [DEBUG] [Thread-199265] [transport.py] [_log()] userauth is OK
2025-11-24T23:58:37.448 [DEBUG] [Thread-199265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:58:37.448 [DEBUG] [Thread-199265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:58:37.448 [DEBUG] [Thread-199265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:58:37.448 [DEBUG] [Thread-199265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:58:37.472 [INFO] [Thread-199265] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:58:37.473 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:58:37.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:58:38.313 [DEBUG] [Thread-199265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:58:38.313 [DEBUG] [Thread-199265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:58:38.360 [DEBUG] [Thread-199265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:58:38.360 [DEBUG] [Thread-199265] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:58:38.369 [DEBUG] [Thread-199265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:58:38.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:58:38.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-11-24T23:58:38.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-11-24T23:58:38.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:58:38.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:58:38.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:58:38.407 [DEBUG] [Thread-199265] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:58:49.798 [DEBUG] [Thread-199267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:59:02.934 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:59:02.941 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:59:04.928 [DEBUG] [Thread-199268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:59:08.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:59:08.429 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:59:08.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-11-24T23:59:08.853 [DEBUG] [Thread-199269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:59:09.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 58, 53), 14.31, 36.97, 0.0, 31.04, 13.33, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:59:09.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:58:53
2025-11-24T23:59:09.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:59:10.054 [DEBUG] [Thread-199270] [transport.py] [_log()] starting thread (client mode): 0xd0712770
2025-11-24T23:59:10.055 [DEBUG] [Thread-199270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:59:10.064 [DEBUG] [Thread-199270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:59:10.065 [INFO] [Thread-199270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:59:10.069 [DEBUG] [Thread-199270] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:59:10.069 [DEBUG] [Thread-199270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:59:10.069 [DEBUG] [Thread-199270] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:59:10.069 [DEBUG] [Thread-199270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:59:10.069 [DEBUG] [Thread-199270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:59:10.069 [DEBUG] [Thread-199270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] client lang: <none>
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] server lang: <none>
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] kex follows: False
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:59:10.070 [DEBUG] [Thread-199270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:59:10.071 [DEBUG] [Thread-199270] [transport.py] [_log()] Compression: none
2025-11-24T23:59:10.071 [DEBUG] [Thread-199270] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:59:10.100 [DEBUG] [Thread-199270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:59:10.103 [DEBUG] [Thread-199270] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:59:10.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:59:10.105 [DEBUG] [Thread-199270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:59:10.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:59:10.115 [DEBUG] [Thread-199270] [transport.py] [_log()] userauth is OK
2025-11-24T23:59:10.115 [DEBUG] [Thread-199270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:59:10.115 [DEBUG] [Thread-199270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:59:10.115 [DEBUG] [Thread-199270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:59:10.115 [DEBUG] [Thread-199270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:59:10.133 [INFO] [Thread-199270] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:59:10.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:59:10.771 [DEBUG] [Thread-199270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:59:10.772 [DEBUG] [Thread-199270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:59:10.772 [DEBUG] [Thread-199270] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:59:10.812 [DEBUG] [Thread-199270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:59:10.812 [DEBUG] [Thread-199270] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:59:10.814 [DEBUG] [Thread-199270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:59:10.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:59:10.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:59:10.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:59:10.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:59:10.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:59:10.834 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:59:10.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:59:10.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:59:10.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:59:10.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.915670 -999.00  +13.30  16.62     41   +0.60 1 1 1 1 1     0    0 12.64 -10.11 ZNESW 17.0 16.6 147.4 24.4 13.6 -24.7 13.5 -24.3 13.3 -23.2 13.6 -24.1
2025-11-24T23:59:10.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:59:10.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:59:10.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.915670
2025-11-24T23:59:10.841 [DEBUG] [Thread-199270] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:59:10.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:59:10.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:59:10.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:59:10.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:59:10.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:59:10.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:58:53', tmtdew=14.31, humidity=36.97, cloud=0.0, wind=31.04, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:58:53', seeing=0.84, atlas_timestamp='2025-11-24T21:58:33.888', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:55:00')
2025-11-24T23:59:10.931 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:59:10.943 [DEBUG] [Thread-199273] [transport.py] [_log()] starting thread (client mode): 0xd073a2f0
2025-11-24T23:59:10.943 [DEBUG] [Thread-199273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:59:10.957 [DEBUG] [Thread-199273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:59:10.957 [INFO] [Thread-199273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:59:10.964 [DEBUG] [Thread-199273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:59:10.964 [DEBUG] [Thread-199273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:59:10.964 [DEBUG] [Thread-199273] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:59:10.964 [DEBUG] [Thread-199273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] client lang: <none>
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] server lang: <none>
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] kex follows: False
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] Compression: none
2025-11-24T23:59:10.965 [DEBUG] [Thread-199273] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:59:11.022 [DEBUG] [Thread-199273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:59:11.022 [DEBUG] [Thread-199273] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:59:11.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:59:11.023 [DEBUG] [Thread-199273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:59:11.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:59:11.079 [DEBUG] [Thread-199273] [transport.py] [_log()] userauth is OK
2025-11-24T23:59:11.080 [DEBUG] [Thread-199273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:59:11.080 [DEBUG] [Thread-199273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:59:11.080 [DEBUG] [Thread-199273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:59:11.080 [DEBUG] [Thread-199273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:59:11.097 [INFO] [Thread-199273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:59:11.097 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:59:11.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:59:11.936 [DEBUG] [Thread-199273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:59:11.936 [DEBUG] [Thread-199273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:59:11.984 [DEBUG] [Thread-199273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:59:11.984 [DEBUG] [Thread-199273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:59:11.992 [DEBUG] [Thread-199273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:59:12.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:59: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-11-24T23:59:12.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-11-24T23:59:12.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:59:12.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:59:12.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:59:12.026 [DEBUG] [Thread-199273] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:59:19.991 [DEBUG] [Thread-199275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:59:35.132 [DEBUG] [Thread-199276 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-24T23:59:42.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-24T23:59:42.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-24T23:59:42.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-11-24T23:59:43.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 59, 26), 14.32, 36.95, 0.0, 30.77, 13.34, 0, 0, 0, 2, 0, 0),)
2025-11-24T23:59:43.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:59:26
2025-11-24T23:59:43.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-24T23:59:43.358 [DEBUG] [Thread-199277] [transport.py] [_log()] starting thread (client mode): 0xd0738250
2025-11-24T23:59:43.359 [DEBUG] [Thread-199277] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:59:43.371 [DEBUG] [Thread-199277] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-24T23:59:43.372 [INFO] [Thread-199277] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] client lang: <none>
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] server lang: <none>
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] kex follows: False
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:59:43.377 [DEBUG] [Thread-199277] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:59:43.378 [DEBUG] [Thread-199277] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:59:43.378 [DEBUG] [Thread-199277] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:59:43.378 [DEBUG] [Thread-199277] [transport.py] [_log()] Compression: none
2025-11-24T23:59:43.378 [DEBUG] [Thread-199277] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:59:43.406 [DEBUG] [Thread-199277] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:59:43.410 [DEBUG] [Thread-199277] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:59:43.411 [DEBUG] [Thread-199277] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-24T23:59:43.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-24T23:59:43.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:59:43.414 [DEBUG] [Thread-199277] [transport.py] [_log()] userauth is OK
2025-11-24T23:59:43.415 [DEBUG] [Thread-199277] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:59:43.415 [DEBUG] [Thread-199277] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:59:43.415 [DEBUG] [Thread-199277] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-24T23:59:43.415 [DEBUG] [Thread-199277] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:59:43.433 [INFO] [Thread-199277] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:59:43.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:59:44.083 [DEBUG] [Thread-199277] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:59:44.083 [DEBUG] [Thread-199277] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:59:44.094 [DEBUG] [Thread-199277] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-24T23:59:44.125 [DEBUG] [Thread-199277] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:59:44.125 [DEBUG] [Thread-199277] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:59:44.128 [DEBUG] [Thread-199277] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:59:44.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:59:44.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-24T23:59:44.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-24T23:59:44.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-24T23:59:44.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:59:44.155 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-24T23:59:44.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:59:44.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:59:44.157 [DEBUG] [Thread-199277] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:59:44.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-24T23:59:44.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.916017 -999.00  +13.30  18.84     42   +0.70 1 1 1 1 1     0    0 12.71 -10.21 ZNESW 24.3 18.8 149.6 29.7 13.7 -24.7 13.5 -24.2 -999.0 -999.0 13.6 -24.0
2025-11-24T23:59:44.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-24T23:59:44.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-24T23:59:44.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.916017
2025-11-24T23:59:44.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-24T23:59:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-24T23:59:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-24T23:59:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-24T23:59:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-24T23:59:44.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:59:26', tmtdew=14.32, humidity=36.95, cloud=0.0, wind=30.77, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:59:26', seeing=0.84, atlas_timestamp='2025-11-24T21:59:03.869', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:57:00')
2025-11-24T23:59:44.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-24T23:59:44.280 [DEBUG] [Thread-199280] [transport.py] [_log()] starting thread (client mode): 0xd0713640
2025-11-24T23:59:44.280 [DEBUG] [Thread-199280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-24T23:59:44.293 [DEBUG] [Thread-199280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-24T23:59:44.294 [INFO] [Thread-199280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] client lang: <none>
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] server lang: <none>
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] kex follows: False
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] === Key exchange agreements ===
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-24T23:59:44.304 [DEBUG] [Thread-199280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-24T23:59:44.305 [DEBUG] [Thread-199280] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-24T23:59:44.305 [DEBUG] [Thread-199280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-24T23:59:44.305 [DEBUG] [Thread-199280] [transport.py] [_log()] Compression: none
2025-11-24T23:59:44.305 [DEBUG] [Thread-199280] [transport.py] [_log()] === End of kex handshake ===
2025-11-24T23:59:44.368 [DEBUG] [Thread-199280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-24T23:59:44.370 [DEBUG] [Thread-199280] [transport.py] [_log()] Switch to new keys ...
2025-11-24T23:59:44.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-24T23:59:44.371 [DEBUG] [Thread-199280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-24T23:59:44.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-24T23:59:44.427 [DEBUG] [Thread-199280] [transport.py] [_log()] userauth is OK
2025-11-24T23:59:44.428 [DEBUG] [Thread-199280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-24T23:59:44.428 [DEBUG] [Thread-199280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-24T23:59:44.428 [DEBUG] [Thread-199280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-24T23:59:44.428 [DEBUG] [Thread-199280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-24T23:59:44.447 [INFO] [Thread-199280] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-24T23:59:44.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-24T23:59:44.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-24T23:59:45.261 [DEBUG] [Thread-199280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-24T23:59:45.261 [DEBUG] [Thread-199280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-24T23:59:45.309 [DEBUG] [Thread-199280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-24T23:59:45.309 [DEBUG] [Thread-199280] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-24T23:59:45.318 [DEBUG] [Thread-199280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-24T23:59:45.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-24T23:59:45.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-24T23:59:45.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-24T23:59:45.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-24T23:59:45.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-24T23:59:45.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-24T23:59:45.366 [DEBUG] [Thread-199280] [transport.py] [_log()] EOF in transport thread
2025-11-24T23:59:50.190 [DEBUG] [Thread-199282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:00:03.147 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:00:03.151 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:00:05.295 [DEBUG] [Thread-199283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:00:09.170 [DEBUG] [Thread-199284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:00:15.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:00:15.393 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:00:15.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-11-25T00:00:16.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 24, 23, 59, 59), 14.44, 36.88, 0.0, 28.35, 13.38, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:00:16.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-24 23:59:59
2025-11-25T00:00:16.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:00:16.887 [DEBUG] [Thread-199285] [transport.py] [_log()] starting thread (client mode): 0xd073a440
2025-11-25T00:00:16.887 [DEBUG] [Thread-199285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:00:16.898 [DEBUG] [Thread-199285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:00:16.898 [INFO] [Thread-199285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:00:16.904 [DEBUG] [Thread-199285] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:00:16.904 [DEBUG] [Thread-199285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] client lang: <none>
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] server lang: <none>
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] kex follows: False
2025-11-25T00:00:16.905 [DEBUG] [Thread-199285] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:00:16.906 [DEBUG] [Thread-199285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:00:16.906 [DEBUG] [Thread-199285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:00:16.907 [DEBUG] [Thread-199285] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:00:16.907 [DEBUG] [Thread-199285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:00:16.907 [DEBUG] [Thread-199285] [transport.py] [_log()] Compression: none
2025-11-25T00:00:16.907 [DEBUG] [Thread-199285] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:00:16.949 [DEBUG] [Thread-199285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:00:16.955 [DEBUG] [Thread-199285] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:00:16.956 [DEBUG] [Thread-199285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:00:16.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:00:16.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:00:16.960 [DEBUG] [Thread-199285] [transport.py] [_log()] userauth is OK
2025-11-25T00:00:16.960 [DEBUG] [Thread-199285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:00:16.960 [DEBUG] [Thread-199285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:00:16.960 [DEBUG] [Thread-199285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:00:16.960 [DEBUG] [Thread-199285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:00:16.978 [INFO] [Thread-199285] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:00:16.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:00:17.604 [DEBUG] [Thread-199285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:00:17.604 [DEBUG] [Thread-199285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:00:17.605 [DEBUG] [Thread-199285] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:00:17.645 [DEBUG] [Thread-199285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:00:17.645 [DEBUG] [Thread-199285] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:00:17.648 [DEBUG] [Thread-199285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:00:17.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:00:17.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:00:17.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:00:17.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:00:17.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:00:17.671 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:00:17.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:00:17.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:00:17.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:00:17.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.916365 -999.00  +13.30  21.81     42   +0.60 1 1 1 1 1     0    0 12.55 -10.89 ZNESW 22.4 21.8 146.0 30.9 13.7 -24.7 13.5 -24.2 13.2 -23.2 13.6 -24.1
2025-11-25T00:00:17.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:00:17.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:00:17.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.916365
2025-11-25T00:00:17.678 [DEBUG] [Thread-199285] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:00:17.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:00:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:00:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:00:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:00:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:00:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-24T23:59:59', tmtdew=14.44, humidity=36.88, cloud=0.0, wind=28.35, temperature=13.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-24T23:59:59', seeing=0.84, atlas_timestamp='2025-11-24T21:59:33.936', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:57:00')
2025-11-25T00:00:17.760 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:00:17.770 [DEBUG] [Thread-199288] [transport.py] [_log()] starting thread (client mode): 0xd3151210
2025-11-25T00:00:17.771 [DEBUG] [Thread-199288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:00:17.784 [DEBUG] [Thread-199288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:00:17.785 [INFO] [Thread-199288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] client lang: <none>
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] server lang: <none>
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] kex follows: False
2025-11-25T00:00:17.792 [DEBUG] [Thread-199288] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:00:17.793 [DEBUG] [Thread-199288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:00:17.793 [DEBUG] [Thread-199288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:00:17.793 [DEBUG] [Thread-199288] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:00:17.793 [DEBUG] [Thread-199288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:00:17.793 [DEBUG] [Thread-199288] [transport.py] [_log()] Compression: none
2025-11-25T00:00:17.793 [DEBUG] [Thread-199288] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:00:17.850 [DEBUG] [Thread-199288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:00:17.850 [DEBUG] [Thread-199288] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:00:17.850 [DEBUG] [Thread-199288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:00:17.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:00:17.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:00:17.907 [DEBUG] [Thread-199288] [transport.py] [_log()] userauth is OK
2025-11-25T00:00:17.907 [DEBUG] [Thread-199288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:00:17.907 [DEBUG] [Thread-199288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:00:17.907 [DEBUG] [Thread-199288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:00:17.907 [DEBUG] [Thread-199288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:00:17.921 [INFO] [Thread-199288] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:00:17.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:00:17.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:00:18.729 [DEBUG] [Thread-199288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:00:18.729 [DEBUG] [Thread-199288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:00:18.777 [DEBUG] [Thread-199288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:00:18.778 [DEBUG] [Thread-199288] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:00:18.786 [DEBUG] [Thread-199288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:00:18.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:00:18.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-11-25T00:00:18.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-11-25T00:00:18.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:00:18.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:00:18.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:00:18.824 [DEBUG] [Thread-199288] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:00:20.343 [DEBUG] [Thread-199290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:00:35.459 [DEBUG] [Thread-199291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:00:48.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:00:48.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:00:48.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-11-25T00:00:50.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 0, 31), 14.39, 37.05, 0.0, 28.02, 13.43, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:00:50.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:00:31
2025-11-25T00:00:50.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:00:50.552 [DEBUG] [Thread-199292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:00:50.679 [DEBUG] [Thread-199293] [transport.py] [_log()] starting thread (client mode): 0xd317ce20
2025-11-25T00:00:50.680 [DEBUG] [Thread-199293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:00:50.694 [DEBUG] [Thread-199293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:00:50.695 [INFO] [Thread-199293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:00:50.700 [DEBUG] [Thread-199293] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:00:50.700 [DEBUG] [Thread-199293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:00:50.700 [DEBUG] [Thread-199293] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:00:50.700 [DEBUG] [Thread-199293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:00:50.700 [DEBUG] [Thread-199293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:00:50.700 [DEBUG] [Thread-199293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:00:50.700 [DEBUG] [Thread-199293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:00:50.700 [DEBUG] [Thread-199293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:00:50.701 [DEBUG] [Thread-199293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:00:50.701 [DEBUG] [Thread-199293] [transport.py] [_log()] client lang: <none>
2025-11-25T00:00:50.701 [DEBUG] [Thread-199293] [transport.py] [_log()] server lang: <none>
2025-11-25T00:00:50.701 [DEBUG] [Thread-199293] [transport.py] [_log()] kex follows: False
2025-11-25T00:00:50.701 [DEBUG] [Thread-199293] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:00:50.702 [DEBUG] [Thread-199293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:00:50.702 [DEBUG] [Thread-199293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:00:50.702 [DEBUG] [Thread-199293] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:00:50.702 [DEBUG] [Thread-199293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:00:50.702 [DEBUG] [Thread-199293] [transport.py] [_log()] Compression: none
2025-11-25T00:00:50.702 [DEBUG] [Thread-199293] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:00:50.738 [DEBUG] [Thread-199293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:00:50.742 [DEBUG] [Thread-199293] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:00:50.744 [DEBUG] [Thread-199293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:00:50.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:00:50.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:00:50.749 [DEBUG] [Thread-199293] [transport.py] [_log()] userauth is OK
2025-11-25T00:00:50.749 [DEBUG] [Thread-199293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:00:50.750 [DEBUG] [Thread-199293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:00:50.750 [DEBUG] [Thread-199293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:00:50.750 [DEBUG] [Thread-199293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:00:50.778 [INFO] [Thread-199293] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:00:50.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:00:51.379 [DEBUG] [Thread-199293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:00:51.380 [DEBUG] [Thread-199293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:00:51.381 [DEBUG] [Thread-199293] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:00:51.420 [DEBUG] [Thread-199293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:00:51.421 [DEBUG] [Thread-199293] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:00:51.424 [DEBUG] [Thread-199293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:00:51.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:00:51.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:00:51.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:00:51.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:00:51.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:00:51.450 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:00:51.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:00:51.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:00:51.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:00:51.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.917059 -999.00  +13.20  22.60     42   +0.60 1 1 1 1 1     0    0 12.32 -13.49 ZNESW 21.1 22.6 143.2 32.7 13.6 -24.8 13.5 -24.2 13.2 -23.1 13.5 -24.2
2025-11-25T00:00:51.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:00:51.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:00:51.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.917059
2025-11-25T00:00:51.458 [DEBUG] [Thread-199293] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:00:51.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:00:51.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:00:51.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:00:51.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:00:51.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:00:51.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:00:31', tmtdew=14.39, humidity=37.05, cloud=0.0, wind=28.02, temperature=13.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:00:32', seeing=0.84, atlas_timestamp='2025-11-24T22:00:33.898', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:57:00')
2025-11-25T00:00:51.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:00:51.568 [DEBUG] [Thread-199296] [transport.py] [_log()] starting thread (client mode): 0xd317c7f0
2025-11-25T00:00:51.569 [DEBUG] [Thread-199296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:00:51.582 [DEBUG] [Thread-199296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:00:51.582 [INFO] [Thread-199296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:00:51.589 [DEBUG] [Thread-199296] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] client lang: <none>
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] server lang: <none>
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] kex follows: False
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] Compression: none
2025-11-25T00:00:51.590 [DEBUG] [Thread-199296] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:00:51.647 [DEBUG] [Thread-199296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:00:51.647 [DEBUG] [Thread-199296] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:00:51.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:00:51.648 [DEBUG] [Thread-199296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:00:51.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:00:51.703 [DEBUG] [Thread-199296] [transport.py] [_log()] userauth is OK
2025-11-25T00:00:51.704 [DEBUG] [Thread-199296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:00:51.704 [DEBUG] [Thread-199296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:00:51.704 [DEBUG] [Thread-199296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:00:51.704 [DEBUG] [Thread-199296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:00:51.728 [INFO] [Thread-199296] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:00:51.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:00:51.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:00:52.552 [DEBUG] [Thread-199296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:00:52.553 [DEBUG] [Thread-199296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:00:52.600 [DEBUG] [Thread-199296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:00:52.601 [DEBUG] [Thread-199296] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:00:52.610 [DEBUG] [Thread-199296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:00:52.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:00: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')
2025-11-25T00:00:52.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-11-25T00:00:52.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:00:52.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:00:52.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:00:52.648 [DEBUG] [Thread-199296] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:01:03.367 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:01:03.369 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:01:05.619 [DEBUG] [Thread-199298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:01:09.435 [DEBUG] [Thread-199299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:01:20.722 [DEBUG] [Thread-199300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:01:22.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:01:22.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:01:22.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-11-25T00:01:23.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 1, 4), 14.42, 36.97, 0.0, 29.78, 13.41, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:01:23.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:01:04
2025-11-25T00:01:23.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:01:23.861 [DEBUG] [Thread-199301] [transport.py] [_log()] starting thread (client mode): 0xc9b81a20
2025-11-25T00:01:23.861 [DEBUG] [Thread-199301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:01:23.870 [DEBUG] [Thread-199301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:01:23.870 [INFO] [Thread-199301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:01:23.876 [DEBUG] [Thread-199301] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:01:23.876 [DEBUG] [Thread-199301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:01:23.876 [DEBUG] [Thread-199301] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:01:23.877 [DEBUG] [Thread-199301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:01:23.877 [DEBUG] [Thread-199301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:01:23.877 [DEBUG] [Thread-199301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:01:23.877 [DEBUG] [Thread-199301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:01:23.877 [DEBUG] [Thread-199301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:01:23.877 [DEBUG] [Thread-199301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:01:23.877 [DEBUG] [Thread-199301] [transport.py] [_log()] client lang: <none>
2025-11-25T00:01:23.877 [DEBUG] [Thread-199301] [transport.py] [_log()] server lang: <none>
2025-11-25T00:01:23.877 [DEBUG] [Thread-199301] [transport.py] [_log()] kex follows: False
2025-11-25T00:01:23.877 [DEBUG] [Thread-199301] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:01:23.878 [DEBUG] [Thread-199301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:01:23.878 [DEBUG] [Thread-199301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:01:23.878 [DEBUG] [Thread-199301] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:01:23.879 [DEBUG] [Thread-199301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:01:23.879 [DEBUG] [Thread-199301] [transport.py] [_log()] Compression: none
2025-11-25T00:01:23.879 [DEBUG] [Thread-199301] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:01:23.917 [DEBUG] [Thread-199301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:01:23.921 [DEBUG] [Thread-199301] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:01:23.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:01:23.924 [DEBUG] [Thread-199301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:01:23.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:01:23.927 [DEBUG] [Thread-199301] [transport.py] [_log()] userauth is OK
2025-11-25T00:01:23.927 [DEBUG] [Thread-199301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:01:23.927 [DEBUG] [Thread-199301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:01:23.927 [DEBUG] [Thread-199301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:01:23.927 [DEBUG] [Thread-199301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:01:23.966 [INFO] [Thread-199301] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:01:23.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:01:24.563 [DEBUG] [Thread-199301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:01:24.573 [DEBUG] [Thread-199301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:01:24.574 [DEBUG] [Thread-199301] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:01:24.604 [DEBUG] [Thread-199301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:01:24.605 [DEBUG] [Thread-199301] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:01:24.609 [DEBUG] [Thread-199301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:01:24.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:01:24.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:01:24.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:01:24.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:01:24.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:01:24.636 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:01:24.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:01:24.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:01:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:01:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.917406 -999.00  +13.20  18.60     42   +0.60 1 1 1 1 1     0    0 12.31 -14.19 ZNESW 22.4 18.6 145.1 26.4 13.6 -24.8 13.5 -24.3 13.3 -23.2 13.6 -24.1
2025-11-25T00:01:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:01:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:01:24.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.917406
2025-11-25T00:01:24.644 [DEBUG] [Thread-199301] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:01:24.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:01:24.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:01:24.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:01:24.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:01:24.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:01:24.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:01:04', tmtdew=14.42, humidity=36.97, cloud=0.0, wind=29.78, temperature=13.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:01:04', seeing=1.02, atlas_timestamp='2025-11-24T22:01:03.878', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:57:00')
2025-11-25T00:01:24.731 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:01:24.742 [DEBUG] [Thread-199304] [transport.py] [_log()] starting thread (client mode): 0xc9b83250
2025-11-25T00:01:24.742 [DEBUG] [Thread-199304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:01:24.757 [DEBUG] [Thread-199304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:01:24.757 [INFO] [Thread-199304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:01:24.765 [DEBUG] [Thread-199304] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:01:24.765 [DEBUG] [Thread-199304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:01:24.765 [DEBUG] [Thread-199304] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:01:24.765 [DEBUG] [Thread-199304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:01:24.765 [DEBUG] [Thread-199304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:01:24.765 [DEBUG] [Thread-199304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:01:24.766 [DEBUG] [Thread-199304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:01:24.766 [DEBUG] [Thread-199304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:01:24.766 [DEBUG] [Thread-199304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:01:24.766 [DEBUG] [Thread-199304] [transport.py] [_log()] client lang: <none>
2025-11-25T00:01:24.766 [DEBUG] [Thread-199304] [transport.py] [_log()] server lang: <none>
2025-11-25T00:01:24.766 [DEBUG] [Thread-199304] [transport.py] [_log()] kex follows: False
2025-11-25T00:01:24.766 [DEBUG] [Thread-199304] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:01:24.766 [DEBUG] [Thread-199304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:01:24.766 [DEBUG] [Thread-199304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:01:24.767 [DEBUG] [Thread-199304] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:01:24.767 [DEBUG] [Thread-199304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:01:24.767 [DEBUG] [Thread-199304] [transport.py] [_log()] Compression: none
2025-11-25T00:01:24.767 [DEBUG] [Thread-199304] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:01:24.824 [DEBUG] [Thread-199304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:01:24.824 [DEBUG] [Thread-199304] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:01:24.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:01:24.826 [DEBUG] [Thread-199304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:01:24.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:01:24.879 [DEBUG] [Thread-199304] [transport.py] [_log()] userauth is OK
2025-11-25T00:01:24.879 [DEBUG] [Thread-199304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:01:24.880 [DEBUG] [Thread-199304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:01:24.880 [DEBUG] [Thread-199304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:01:24.880 [DEBUG] [Thread-199304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:01:24.904 [INFO] [Thread-199304] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:01:24.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:01:24.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:01:25.785 [DEBUG] [Thread-199304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:01:25.785 [DEBUG] [Thread-199304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:01:25.833 [DEBUG] [Thread-199304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:01:25.833 [DEBUG] [Thread-199304] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:01:25.842 [DEBUG] [Thread-199304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:01:25.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:01:25.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-11-25T00:01:25.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-11-25T00:01:25.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:01:25.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:01:25.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:01:25.889 [DEBUG] [Thread-199304] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:01:35.783 [DEBUG] [Thread-199306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:01:50.870 [DEBUG] [Thread-199307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:01:55.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:01:55.914 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:01:55.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:01:56.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 1, 37), 14.28, 37.07, 0.0, 31.74, 13.33, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:01:56.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:01:37
2025-11-25T00:01:56.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:01:57.112 [DEBUG] [Thread-199308] [transport.py] [_log()] starting thread (client mode): 0xd073b910
2025-11-25T00:01:57.113 [DEBUG] [Thread-199308] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:01:57.125 [DEBUG] [Thread-199308] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:01:57.125 [INFO] [Thread-199308] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:01:57.129 [DEBUG] [Thread-199308] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:01:57.129 [DEBUG] [Thread-199308] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] client lang: <none>
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] server lang: <none>
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] kex follows: False
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:01:57.130 [DEBUG] [Thread-199308] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:01:57.131 [DEBUG] [Thread-199308] [transport.py] [_log()] Compression: none
2025-11-25T00:01:57.131 [DEBUG] [Thread-199308] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:01:57.150 [DEBUG] [Thread-199308] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:01:57.154 [DEBUG] [Thread-199308] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:01:57.156 [DEBUG] [Thread-199308] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:01:57.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:01:57.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:01:57.159 [DEBUG] [Thread-199308] [transport.py] [_log()] userauth is OK
2025-11-25T00:01:57.159 [DEBUG] [Thread-199308] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:01:57.159 [DEBUG] [Thread-199308] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:01:57.159 [DEBUG] [Thread-199308] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:01:57.159 [DEBUG] [Thread-199308] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:01:57.177 [INFO] [Thread-199308] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:01:57.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:01:57.813 [DEBUG] [Thread-199308] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:01:57.813 [DEBUG] [Thread-199308] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:01:57.814 [DEBUG] [Thread-199308] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:01:57.854 [DEBUG] [Thread-199308] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:01:57.854 [DEBUG] [Thread-199308] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:01:57.857 [DEBUG] [Thread-199308] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:01:57.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:01:57.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:01:57.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:01:57.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:01:57.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:01:57.879 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:01:57.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:01:57.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:01:57.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:01:57.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.917755 -999.00  +13.20  22.07     42   +0.60 1 1 1 1 1     0    0 12.30 -15.11 ZNESW 25.9 22.1 148.8 28.4 13.6 -24.7 13.5 -24.3 13.2 -23.3 13.6 -24.1
2025-11-25T00:01:57.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:01:57.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:01:57.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.917755
2025-11-25T00:01:57.886 [DEBUG] [Thread-199308] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:01:57.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:01:57.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:01:57.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:01:57.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:01:57.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:01:57.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:01:37', tmtdew=14.28, humidity=37.07, cloud=0.0, wind=31.74, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:01:37', seeing=1.11, atlas_timestamp='2025-11-24T22:01:34.032', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, 0.0032500000000013074, -0.0037499999999983658, -0.04400000000000048, -0.006000000000000227, 0.05925000000000047, -0.011000000000001009, -0.02474999999999916, -0.018500000000001293, -0.0009999999999994458, 0.025249999999999773, -0.025000000000000355, 0.06799999999999962, 0.07225000000000037, -0.0070000000000014495, 0.009000000000000341, -0.012249999999999872, 0.013500000000000512, 0.011499999999999844, -0.0417500000000004, 0.059499999999999886, 0.062249999999998806, 0.02325000000000088, -0.0337499999999995, -0.021500000000001407, 0.00849999999999973, 0.0007500000000000284, 0.0045000000000001705, 0.0779999999999994, 0.10400000000000098, 0.08300000000000018, -0.017999999999998906, -0.02575000000000216], zp_timestamp='2025-11-24T21:57:00')
2025-11-25T00:01:57.970 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:01:57.980 [DEBUG] [Thread-199311] [transport.py] [_log()] starting thread (client mode): 0xc9b80460
2025-11-25T00:01:57.981 [DEBUG] [Thread-199311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:01:57.995 [DEBUG] [Thread-199311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:01:57.995 [INFO] [Thread-199311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] client lang: <none>
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] server lang: <none>
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] kex follows: False
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:01:58.003 [DEBUG] [Thread-199311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:01:58.004 [DEBUG] [Thread-199311] [transport.py] [_log()] Compression: none
2025-11-25T00:01:58.004 [DEBUG] [Thread-199311] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:01:58.061 [DEBUG] [Thread-199311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:01:58.062 [DEBUG] [Thread-199311] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:01:58.062 [DEBUG] [Thread-199311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:01:58.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:01:58.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:01:58.118 [DEBUG] [Thread-199311] [transport.py] [_log()] userauth is OK
2025-11-25T00:01:58.119 [DEBUG] [Thread-199311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:01:58.119 [DEBUG] [Thread-199311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:01:58.119 [DEBUG] [Thread-199311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:01:58.119 [DEBUG] [Thread-199311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:01:58.133 [INFO] [Thread-199311] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:01:58.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:01:58.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:01:58.973 [DEBUG] [Thread-199311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:01:58.973 [DEBUG] [Thread-199311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:01:59.021 [DEBUG] [Thread-199311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:01:59.021 [DEBUG] [Thread-199311] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:01:59.030 [DEBUG] [Thread-199311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:01:59.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:01:59.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-11-25T00:01:59.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-11-25T00:01:59.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:01:59.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:01:59.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:01:59.064 [DEBUG] [Thread-199311] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:02:03.579 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:02:03.582 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:02:05.920 [DEBUG] [Thread-199313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:02:09.771 [DEBUG] [Thread-199314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:02:21.093 [DEBUG] [Thread-199315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:02:29.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:02:29.088 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:02:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:02:30.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 2, 10), 14.3, 37.02, 0.0, 30.98, 13.31, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:02:30.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:02:10
2025-11-25T00:02:30.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:02:30.498 [DEBUG] [Thread-199316] [transport.py] [_log()] starting thread (client mode): 0xd073a920
2025-11-25T00:02:30.499 [DEBUG] [Thread-199316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:02:30.509 [DEBUG] [Thread-199316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:02:30.509 [INFO] [Thread-199316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:02:30.515 [DEBUG] [Thread-199316] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] client lang: <none>
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] server lang: <none>
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] kex follows: False
2025-11-25T00:02:30.516 [DEBUG] [Thread-199316] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:02:30.517 [DEBUG] [Thread-199316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:02:30.517 [DEBUG] [Thread-199316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:02:30.518 [DEBUG] [Thread-199316] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:02:30.518 [DEBUG] [Thread-199316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:02:30.518 [DEBUG] [Thread-199316] [transport.py] [_log()] Compression: none
2025-11-25T00:02:30.518 [DEBUG] [Thread-199316] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:02:30.556 [DEBUG] [Thread-199316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:02:30.561 [DEBUG] [Thread-199316] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:02:30.564 [DEBUG] [Thread-199316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:02:30.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:02:30.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:02:30.570 [DEBUG] [Thread-199316] [transport.py] [_log()] userauth is OK
2025-11-25T00:02:30.570 [DEBUG] [Thread-199316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:02:30.570 [DEBUG] [Thread-199316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:02:30.570 [DEBUG] [Thread-199316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:02:30.571 [DEBUG] [Thread-199316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:02:30.596 [INFO] [Thread-199316] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:02:30.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:02:31.166 [DEBUG] [Thread-199316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:02:31.166 [DEBUG] [Thread-199316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:02:31.168 [DEBUG] [Thread-199316] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:02:31.206 [DEBUG] [Thread-199316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:02:31.207 [DEBUG] [Thread-199316] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:02:31.211 [DEBUG] [Thread-199316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:02:31.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:02:31.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:02:31.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:02:31.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:02:31.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:02:31.237 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:02:31.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:02:31.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:02:31.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:02:31.240 [DEBUG] [Thread-199316] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:02:31.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.918101 -999.00  +13.20  23.45     42   +0.70 1 1 1 1 1     0    0 12.26 -17.49 ZNESW 14.9 23.4 145.4 29.9 13.6 -24.8 13.4 -24.3 13.2 -23.3 13.5 -24.2
2025-11-25T00:02:31.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:02:31.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:02:31.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.918101
2025-11-25T00:02:31.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:02:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:02:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:02:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:02:31.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:02:31.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:02:10', tmtdew=14.3, humidity=37.02, cloud=0.0, wind=30.98, temperature=13.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:02:10', seeing=0.92, atlas_timestamp='2025-11-24T22:02:03.926', atlas_cloud=1, atlas_rain=1, zp_data=[-0.008250000000000313, -0.014749999999999375, -0.029749999999999943, -0.023500000000002075, 0.006000000000000227, 0.0652500000000007, 0.031000000000000583, -0.010249999999999204, -0.0065000000000008384, 0.006000000000000227, 0.029249999999999332, -0.013999999999999346, 0.05799999999999983, 0.019249999999999545, -0.004000000000001336, -0.018000000000000682, -0.01774999999999949, 0.026999999999999247, 0.025999999999998025, -0.03375000000000128, 0.021999999999998465, 0.07974999999999888, 0.022250000000001435, -0.02624999999999922, -0.014000000000001123, -0.0045000000000001705, -0.02224999999999966, 0.04400000000000048, 0.09800000000000075, 0.048500000000000654, 0.0990000000000002, -0.007999999999999119, -0.05825000000000102], zp_timestamp='2025-11-24T22:00:00')
2025-11-25T00:02:31.352 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:02:31.364 [DEBUG] [Thread-199319] [transport.py] [_log()] starting thread (client mode): 0xd3193d30
2025-11-25T00:02:31.364 [DEBUG] [Thread-199319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:02:31.378 [DEBUG] [Thread-199319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:02:31.378 [INFO] [Thread-199319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] client lang: <none>
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] server lang: <none>
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] kex follows: False
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:02:31.386 [DEBUG] [Thread-199319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:02:31.387 [DEBUG] [Thread-199319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:02:31.387 [DEBUG] [Thread-199319] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:02:31.387 [DEBUG] [Thread-199319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:02:31.387 [DEBUG] [Thread-199319] [transport.py] [_log()] Compression: none
2025-11-25T00:02:31.387 [DEBUG] [Thread-199319] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:02:31.441 [DEBUG] [Thread-199319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:02:31.441 [DEBUG] [Thread-199319] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:02:31.441 [DEBUG] [Thread-199319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:02:31.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:02:31.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:02:31.498 [DEBUG] [Thread-199319] [transport.py] [_log()] userauth is OK
2025-11-25T00:02:31.498 [DEBUG] [Thread-199319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:02:31.498 [DEBUG] [Thread-199319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:02:31.498 [DEBUG] [Thread-199319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:02:31.498 [DEBUG] [Thread-199319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:02:31.515 [INFO] [Thread-199319] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:02:31.516 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:02:31.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:02:32.339 [DEBUG] [Thread-199319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:02:32.339 [DEBUG] [Thread-199319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:02:32.387 [DEBUG] [Thread-199319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:02:32.387 [DEBUG] [Thread-199319] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:02:32.395 [DEBUG] [Thread-199319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:02:32.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:02:32.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-11-25T00:02:32.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:02:32.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:02:32.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:02:32.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:02:32.428 [DEBUG] [Thread-199319] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:02:36.167 [DEBUG] [Thread-199321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:02:51.326 [DEBUG] [Thread-199322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:03:02.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:03:02.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:03:02.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-11-25T00:03:03.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 2, 43), 14.33, 37.43, 0.0, 31.2, 13.31, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:03:03.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:02:43
2025-11-25T00:03:03.784 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:03:03.785 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:03:03.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:03:04.105 [DEBUG] [Thread-199323] [transport.py] [_log()] starting thread (client mode): 0xc9b81630
2025-11-25T00:03:04.106 [DEBUG] [Thread-199323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:03:04.110 [DEBUG] [Thread-199323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:03:04.111 [INFO] [Thread-199323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:03:04.115 [DEBUG] [Thread-199323] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] client lang: <none>
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] server lang: <none>
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] kex follows: False
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:03:04.116 [DEBUG] [Thread-199323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:03:04.117 [DEBUG] [Thread-199323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:03:04.117 [DEBUG] [Thread-199323] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:03:04.117 [DEBUG] [Thread-199323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:03:04.117 [DEBUG] [Thread-199323] [transport.py] [_log()] Compression: none
2025-11-25T00:03:04.117 [DEBUG] [Thread-199323] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:03:04.143 [DEBUG] [Thread-199323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:03:04.149 [DEBUG] [Thread-199323] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:03:04.151 [DEBUG] [Thread-199323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:03:04.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:03:04.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:03:04.157 [DEBUG] [Thread-199323] [transport.py] [_log()] userauth is OK
2025-11-25T00:03:04.157 [DEBUG] [Thread-199323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:03:04.157 [DEBUG] [Thread-199323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:03:04.158 [DEBUG] [Thread-199323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:03:04.158 [DEBUG] [Thread-199323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:03:04.179 [INFO] [Thread-199323] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:03:04.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:03:04.756 [DEBUG] [Thread-199323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:03:04.756 [DEBUG] [Thread-199323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:03:04.767 [DEBUG] [Thread-199323] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:03:04.796 [DEBUG] [Thread-199323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:03:04.796 [DEBUG] [Thread-199323] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:03:04.800 [DEBUG] [Thread-199323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:03:04.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:03:04.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:03:04.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:03:04.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:03:04.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:03:04.823 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:03:04.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:03:04.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:03:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:03:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.918448 -999.00  +13.20  18.30     42   +0.70 1 1 1 1 1     0    0 12.40 -19.74 ZNESW 21.9 18.3 144.6 27.0 13.6 -24.8 13.4 -24.3 13.2 -23.2 13.5 -24.1
2025-11-25T00:03:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:03:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:03:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.918448
2025-11-25T00:03:04.832 [DEBUG] [Thread-199323] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:03:04.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:03:04.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:03:04.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:03:04.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:03:04.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:03:04.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:02:43', tmtdew=14.33, humidity=37.43, cloud=0.0, wind=31.2, temperature=13.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:02:43', seeing=0.91, atlas_timestamp='2025-11-24T22:02:33.907', atlas_cloud=1, atlas_rain=1, zp_data=[-0.008250000000000313, -0.014749999999999375, -0.029749999999999943, -0.023500000000002075, 0.006000000000000227, 0.0652500000000007, 0.031000000000000583, -0.010249999999999204, -0.0065000000000008384, 0.006000000000000227, 0.029249999999999332, -0.013999999999999346, 0.05799999999999983, 0.019249999999999545, -0.004000000000001336, -0.018000000000000682, -0.01774999999999949, 0.026999999999999247, 0.025999999999998025, -0.03375000000000128, 0.021999999999998465, 0.07974999999999888, 0.022250000000001435, -0.02624999999999922, -0.014000000000001123, -0.0045000000000001705, -0.02224999999999966, 0.04400000000000048, 0.09800000000000075, 0.048500000000000654, 0.0990000000000002, -0.007999999999999119, -0.05825000000000102], zp_timestamp='2025-11-24T22:00:00')
2025-11-25T00:03:04.940 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:03:04.954 [DEBUG] [Thread-199326] [transport.py] [_log()] starting thread (client mode): 0xd073a500
2025-11-25T00:03:04.955 [DEBUG] [Thread-199326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:03:04.971 [DEBUG] [Thread-199326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:03:04.971 [INFO] [Thread-199326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] client lang: <none>
2025-11-25T00:03:04.982 [DEBUG] [Thread-199326] [transport.py] [_log()] server lang: <none>
2025-11-25T00:03:04.983 [DEBUG] [Thread-199326] [transport.py] [_log()] kex follows: False
2025-11-25T00:03:04.983 [DEBUG] [Thread-199326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:03:04.983 [DEBUG] [Thread-199326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:03:04.983 [DEBUG] [Thread-199326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:03:04.983 [DEBUG] [Thread-199326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:03:04.983 [DEBUG] [Thread-199326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:03:04.983 [DEBUG] [Thread-199326] [transport.py] [_log()] Compression: none
2025-11-25T00:03:04.983 [DEBUG] [Thread-199326] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:03:05.038 [DEBUG] [Thread-199326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:03:05.039 [DEBUG] [Thread-199326] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:03:05.039 [DEBUG] [Thread-199326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:03:05.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:03:05.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:03:05.095 [DEBUG] [Thread-199326] [transport.py] [_log()] userauth is OK
2025-11-25T00:03:05.095 [DEBUG] [Thread-199326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:03:05.095 [DEBUG] [Thread-199326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:03:05.095 [DEBUG] [Thread-199326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:03:05.095 [DEBUG] [Thread-199326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:03:05.115 [INFO] [Thread-199326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:03:05.115 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:03:05.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:03:06.016 [DEBUG] [Thread-199326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:03:06.017 [DEBUG] [Thread-199326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:03:06.065 [DEBUG] [Thread-199326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:03:06.065 [DEBUG] [Thread-199326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:03:06.074 [DEBUG] [Thread-199326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:03:06.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:03:06.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-11-25T00:03:06.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-11-25T00:03:06.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:03:06.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:03:06.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:03:06.112 [DEBUG] [Thread-199326] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:03:06.432 [DEBUG] [Thread-199328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:03:10.048 [DEBUG] [Thread-199329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:03:21.591 [DEBUG] [Thread-199330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:03:32.297 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:03:36.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:03:36.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:03:36.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-11-25T00:03:36.667 [DEBUG] [Thread-199331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:03:37.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 3, 16), 14.36, 37.37, 0.0, 30.65, 13.28, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:03:37.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:03:16
2025-11-25T00:03:37.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:03:37.593 [DEBUG] [Thread-199332] [transport.py] [_log()] starting thread (client mode): 0xc9b81f30
2025-11-25T00:03:37.594 [DEBUG] [Thread-199332] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:03:37.597 [DEBUG] [Thread-199332] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:03:37.598 [INFO] [Thread-199332] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] client lang: <none>
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] server lang: <none>
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] kex follows: False
2025-11-25T00:03:37.601 [DEBUG] [Thread-199332] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:03:37.602 [DEBUG] [Thread-199332] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:03:37.602 [DEBUG] [Thread-199332] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:03:37.602 [DEBUG] [Thread-199332] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:03:37.602 [DEBUG] [Thread-199332] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:03:37.602 [DEBUG] [Thread-199332] [transport.py] [_log()] Compression: none
2025-11-25T00:03:37.602 [DEBUG] [Thread-199332] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:03:37.631 [DEBUG] [Thread-199332] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:03:37.635 [DEBUG] [Thread-199332] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:03:37.637 [DEBUG] [Thread-199332] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:03:37.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:03:37.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:03:37.643 [DEBUG] [Thread-199332] [transport.py] [_log()] userauth is OK
2025-11-25T00:03:37.644 [DEBUG] [Thread-199332] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:03:37.644 [DEBUG] [Thread-199332] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:03:37.644 [DEBUG] [Thread-199332] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:03:37.644 [DEBUG] [Thread-199332] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:03:37.671 [INFO] [Thread-199332] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:03:37.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:03:38.229 [DEBUG] [Thread-199332] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:03:38.229 [DEBUG] [Thread-199332] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:03:38.239 [DEBUG] [Thread-199332] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:03:38.270 [DEBUG] [Thread-199332] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:03:38.270 [DEBUG] [Thread-199332] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:03:38.273 [DEBUG] [Thread-199332] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:03:38.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:03:38.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:03:38.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:03:38.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:03:38.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:03:38.292 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:03:38.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:03:38.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:03:38.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:03:38.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.918795 -999.00  +13.20  24.36     42   +0.70 1 1 1 1 1     0    0 12.10 -20.73 ZNESW 14.8 24.4 143.6 26.5 13.6 -24.8 13.4 -24.3 13.2 -23.3 13.5 -24.0
2025-11-25T00:03:38.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:03:38.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:03:38.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.918795
2025-11-25T00:03:38.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:03:38.307 [DEBUG] [Thread-199332] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:03:38.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:03:38.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:03:38.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:03:38.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:03:38.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:03:16', tmtdew=14.36, humidity=37.37, cloud=0.0, wind=30.65, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:03:16', seeing=0.91, atlas_timestamp='2025-11-24T22:03:03.888', atlas_cloud=1, atlas_rain=1, zp_data=[-0.008250000000000313, -0.014749999999999375, -0.029749999999999943, -0.023500000000002075, 0.006000000000000227, 0.0652500000000007, 0.031000000000000583, -0.010249999999999204, -0.0065000000000008384, 0.006000000000000227, 0.029249999999999332, -0.013999999999999346, 0.05799999999999983, 0.019249999999999545, -0.004000000000001336, -0.018000000000000682, -0.01774999999999949, 0.026999999999999247, 0.025999999999998025, -0.03375000000000128, 0.021999999999998465, 0.07974999999999888, 0.022250000000001435, -0.02624999999999922, -0.014000000000001123, -0.0045000000000001705, -0.02224999999999966, 0.04400000000000048, 0.09800000000000075, 0.048500000000000654, 0.0990000000000002, -0.007999999999999119, -0.05825000000000102], zp_timestamp='2025-11-24T22:00:00')
2025-11-25T00:03:38.382 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:03:38.397 [DEBUG] [Thread-199335] [transport.py] [_log()] starting thread (client mode): 0xd3149630
2025-11-25T00:03:38.397 [DEBUG] [Thread-199335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:03:38.412 [DEBUG] [Thread-199335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:03:38.412 [INFO] [Thread-199335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] client lang: <none>
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] server lang: <none>
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] kex follows: False
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:03:38.419 [DEBUG] [Thread-199335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:03:38.420 [DEBUG] [Thread-199335] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:03:38.420 [DEBUG] [Thread-199335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:03:38.420 [DEBUG] [Thread-199335] [transport.py] [_log()] Compression: none
2025-11-25T00:03:38.420 [DEBUG] [Thread-199335] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:03:38.477 [DEBUG] [Thread-199335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:03:38.477 [DEBUG] [Thread-199335] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:03:38.477 [DEBUG] [Thread-199335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:03:38.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:03:38.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:03:38.534 [DEBUG] [Thread-199335] [transport.py] [_log()] userauth is OK
2025-11-25T00:03:38.534 [DEBUG] [Thread-199335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:03:38.534 [DEBUG] [Thread-199335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:03:38.534 [DEBUG] [Thread-199335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:03:38.534 [DEBUG] [Thread-199335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:03:38.548 [INFO] [Thread-199335] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:03:38.548 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:03:38.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:03:39.366 [DEBUG] [Thread-199335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:03:39.367 [DEBUG] [Thread-199335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:03:39.415 [DEBUG] [Thread-199335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:03:39.415 [DEBUG] [Thread-199335] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:03:39.424 [DEBUG] [Thread-199335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:03:39.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:03:39.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-11-25T00:03:39.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-11-25T00:03:39.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:03:39.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:03:39.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:03:39.462 [DEBUG] [Thread-199335] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:03:51.750 [DEBUG] [Thread-199337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:04:04.011 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:04:04.032 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:04:06.913 [DEBUG] [Thread-199338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:04:09.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:04:09.482 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:04:09.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-11-25T00:04:10.318 [DEBUG] [Thread-199339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:04:10.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 3, 49), 14.28, 37.42, 0.0, 31.37, 13.23, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:04:10.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:03:49
2025-11-25T00:04:10.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:04:10.971 [DEBUG] [Thread-199340] [transport.py] [_log()] starting thread (client mode): 0xd31499c0
2025-11-25T00:04:10.972 [DEBUG] [Thread-199340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:04:10.979 [DEBUG] [Thread-199340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:04:10.980 [INFO] [Thread-199340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] client lang: <none>
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] server lang: <none>
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] kex follows: False
2025-11-25T00:04:10.984 [DEBUG] [Thread-199340] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:04:10.985 [DEBUG] [Thread-199340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:04:10.985 [DEBUG] [Thread-199340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:04:10.985 [DEBUG] [Thread-199340] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:04:10.985 [DEBUG] [Thread-199340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:04:10.985 [DEBUG] [Thread-199340] [transport.py] [_log()] Compression: none
2025-11-25T00:04:10.985 [DEBUG] [Thread-199340] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:04:11.014 [DEBUG] [Thread-199340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:04:11.018 [DEBUG] [Thread-199340] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:04:11.019 [DEBUG] [Thread-199340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:04:11.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:04:11.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:04:11.022 [DEBUG] [Thread-199340] [transport.py] [_log()] userauth is OK
2025-11-25T00:04:11.023 [DEBUG] [Thread-199340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:04:11.023 [DEBUG] [Thread-199340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:04:11.023 [DEBUG] [Thread-199340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:04:11.023 [DEBUG] [Thread-199340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:04:11.041 [INFO] [Thread-199340] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:04:11.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:04:11.654 [DEBUG] [Thread-199340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:04:11.654 [DEBUG] [Thread-199340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:04:11.656 [DEBUG] [Thread-199340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:04:11.695 [DEBUG] [Thread-199340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:04:11.696 [DEBUG] [Thread-199340] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:04:11.699 [DEBUG] [Thread-199340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:04:11.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:04:11.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:04:11.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:04:11.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:04:11.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:04:11.725 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:04:11.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:04:11.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:04:11.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:04:11.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.918795 -999.00  +13.20  24.36     42   +0.70 1 1 1 1 1     0    0 12.10 -20.73 ZNESW 14.8 24.4 143.6 26.5 13.6 -24.8 13.4 -24.3 13.2 -23.3 13.5 -24.0
2025-11-25T00:04:11.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:04:11.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:04:11.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.918795
2025-11-25T00:04:11.732 [DEBUG] [Thread-199340] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:04:11.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:04:11.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:04:11.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:04:11.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:04:11.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:04:11.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:03:49', tmtdew=14.28, humidity=37.42, cloud=0.0, wind=31.37, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:03:49', seeing=0.86, atlas_timestamp='2025-11-24T22:03:03.888', atlas_cloud=1, atlas_rain=1, zp_data=[-0.008250000000000313, -0.014749999999999375, -0.029749999999999943, -0.023500000000002075, 0.006000000000000227, 0.0652500000000007, 0.031000000000000583, -0.010249999999999204, -0.0065000000000008384, 0.006000000000000227, 0.029249999999999332, -0.013999999999999346, 0.05799999999999983, 0.019249999999999545, -0.004000000000001336, -0.018000000000000682, -0.01774999999999949, 0.026999999999999247, 0.025999999999998025, -0.03375000000000128, 0.021999999999998465, 0.07974999999999888, 0.022250000000001435, -0.02624999999999922, -0.014000000000001123, -0.0045000000000001705, -0.02224999999999966, 0.04400000000000048, 0.09800000000000075, 0.048500000000000654, 0.0990000000000002, -0.007999999999999119, -0.05825000000000102], zp_timestamp='2025-11-24T22:00:00')
2025-11-25T00:04:11.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:04:11.846 [DEBUG] [Thread-199343] [transport.py] [_log()] starting thread (client mode): 0xd317d1e0
2025-11-25T00:04:11.847 [DEBUG] [Thread-199343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:04:11.866 [DEBUG] [Thread-199343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:04:11.867 [INFO] [Thread-199343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:04:11.877 [DEBUG] [Thread-199343] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] client lang: <none>
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] server lang: <none>
2025-11-25T00:04:11.878 [DEBUG] [Thread-199343] [transport.py] [_log()] kex follows: False
2025-11-25T00:04:11.879 [DEBUG] [Thread-199343] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:04:11.879 [DEBUG] [Thread-199343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:04:11.879 [DEBUG] [Thread-199343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:04:11.879 [DEBUG] [Thread-199343] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:04:11.879 [DEBUG] [Thread-199343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:04:11.879 [DEBUG] [Thread-199343] [transport.py] [_log()] Compression: none
2025-11-25T00:04:11.879 [DEBUG] [Thread-199343] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:04:11.934 [DEBUG] [Thread-199343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:04:11.935 [DEBUG] [Thread-199343] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:04:11.936 [DEBUG] [Thread-199343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:04:11.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:04:11.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:04:11.991 [DEBUG] [Thread-199343] [transport.py] [_log()] userauth is OK
2025-11-25T00:04:11.991 [DEBUG] [Thread-199343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:04:11.992 [DEBUG] [Thread-199343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:04:11.992 [DEBUG] [Thread-199343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:04:11.992 [DEBUG] [Thread-199343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:04:12.006 [INFO] [Thread-199343] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:04:12.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:04:12.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:04:12.815 [DEBUG] [Thread-199343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:04:12.816 [DEBUG] [Thread-199343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:04:12.864 [DEBUG] [Thread-199343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:04:12.864 [DEBUG] [Thread-199343] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:04:12.873 [DEBUG] [Thread-199343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:04:12.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:04:12.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-11-25T00:04:12.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-11-25T00:04:12.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:04:12.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:04:12.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:04:12.912 [DEBUG] [Thread-199343] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:04:21.983 [DEBUG] [Thread-199345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:04:37.098 [DEBUG] [Thread-199346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:04:42.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:04:42.930 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:04:42.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-11-25T00:04:43.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 4, 22), 14.25, 37.52, 0.0, 31.41, 13.23, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:04:43.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:04:22
2025-11-25T00:04:43.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:04:44.136 [DEBUG] [Thread-199347] [transport.py] [_log()] starting thread (client mode): 0xd3152320
2025-11-25T00:04:44.137 [DEBUG] [Thread-199347] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:04:44.146 [DEBUG] [Thread-199347] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:04:44.147 [INFO] [Thread-199347] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:04:44.150 [DEBUG] [Thread-199347] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:04:44.150 [DEBUG] [Thread-199347] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:04:44.150 [DEBUG] [Thread-199347] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:04:44.150 [DEBUG] [Thread-199347] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:04:44.150 [DEBUG] [Thread-199347] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:04:44.150 [DEBUG] [Thread-199347] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:04:44.150 [DEBUG] [Thread-199347] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:04:44.151 [DEBUG] [Thread-199347] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:04:44.151 [DEBUG] [Thread-199347] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:04:44.151 [DEBUG] [Thread-199347] [transport.py] [_log()] client lang: <none>
2025-11-25T00:04:44.151 [DEBUG] [Thread-199347] [transport.py] [_log()] server lang: <none>
2025-11-25T00:04:44.151 [DEBUG] [Thread-199347] [transport.py] [_log()] kex follows: False
2025-11-25T00:04:44.151 [DEBUG] [Thread-199347] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:04:44.152 [DEBUG] [Thread-199347] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:04:44.152 [DEBUG] [Thread-199347] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:04:44.152 [DEBUG] [Thread-199347] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:04:44.152 [DEBUG] [Thread-199347] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:04:44.152 [DEBUG] [Thread-199347] [transport.py] [_log()] Compression: none
2025-11-25T00:04:44.152 [DEBUG] [Thread-199347] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:04:44.180 [DEBUG] [Thread-199347] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:04:44.184 [DEBUG] [Thread-199347] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:04:44.185 [DEBUG] [Thread-199347] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:04:44.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:04:44.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:04:44.225 [DEBUG] [Thread-199347] [transport.py] [_log()] userauth is OK
2025-11-25T00:04:44.226 [DEBUG] [Thread-199347] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:04:44.226 [DEBUG] [Thread-199347] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:04:44.226 [DEBUG] [Thread-199347] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:04:44.226 [DEBUG] [Thread-199347] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:04:44.250 [INFO] [Thread-199347] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:04:44.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:04:44.898 [DEBUG] [Thread-199347] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:04:44.898 [DEBUG] [Thread-199347] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:04:44.899 [DEBUG] [Thread-199347] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:04:44.939 [DEBUG] [Thread-199347] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:04:44.939 [DEBUG] [Thread-199347] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:04:44.941 [DEBUG] [Thread-199347] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:04:44.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:04:44.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:04:44.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:04:44.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:04:44.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:04:44.964 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:04:44.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:04:44.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:04:44.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:04:44.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.919489 -999.00  +13.20  21.98     42   +0.60 1 1 1 1 1     0    0 12.10 -24.63 ZNESW 18.3 22.0 146.0 29.7 13.6 -24.7 13.4 -24.2 13.2 -23.2 13.5 -24.0
2025-11-25T00:04:44.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:04:44.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:04:44.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.919489
2025-11-25T00:04:44.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:04:44.981 [DEBUG] [Thread-199347] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:04:44.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:04:44.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:04:44.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:04:44.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:04:44.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:04:22', tmtdew=14.25, humidity=37.52, cloud=0.0, wind=31.41, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:04:22', seeing=0.84, atlas_timestamp='2025-11-24T22:04:03.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.008250000000000313, -0.014749999999999375, -0.029749999999999943, -0.023500000000002075, 0.006000000000000227, 0.0652500000000007, 0.031000000000000583, -0.010249999999999204, -0.0065000000000008384, 0.006000000000000227, 0.029249999999999332, -0.013999999999999346, 0.05799999999999983, 0.019249999999999545, -0.004000000000001336, -0.018000000000000682, -0.01774999999999949, 0.026999999999999247, 0.025999999999998025, -0.03375000000000128, 0.021999999999998465, 0.07974999999999888, 0.022250000000001435, -0.02624999999999922, -0.014000000000001123, -0.0045000000000001705, -0.02224999999999966, 0.04400000000000048, 0.09800000000000075, 0.048500000000000654, 0.0990000000000002, -0.007999999999999119, -0.05825000000000102], zp_timestamp='2025-11-24T22:00:00')
2025-11-25T00:04:45.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:04:45.075 [DEBUG] [Thread-199350] [transport.py] [_log()] starting thread (client mode): 0xd3193b20
2025-11-25T00:04:45.076 [DEBUG] [Thread-199350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:04:45.090 [DEBUG] [Thread-199350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:04:45.090 [INFO] [Thread-199350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:04:45.098 [DEBUG] [Thread-199350] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:04:45.098 [DEBUG] [Thread-199350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:04:45.098 [DEBUG] [Thread-199350] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:04:45.099 [DEBUG] [Thread-199350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:04:45.099 [DEBUG] [Thread-199350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:04:45.099 [DEBUG] [Thread-199350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:04:45.099 [DEBUG] [Thread-199350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:04:45.099 [DEBUG] [Thread-199350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:04:45.099 [DEBUG] [Thread-199350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:04:45.099 [DEBUG] [Thread-199350] [transport.py] [_log()] client lang: <none>
2025-11-25T00:04:45.099 [DEBUG] [Thread-199350] [transport.py] [_log()] server lang: <none>
2025-11-25T00:04:45.099 [DEBUG] [Thread-199350] [transport.py] [_log()] kex follows: False
2025-11-25T00:04:45.100 [DEBUG] [Thread-199350] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:04:45.100 [DEBUG] [Thread-199350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:04:45.100 [DEBUG] [Thread-199350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:04:45.100 [DEBUG] [Thread-199350] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:04:45.100 [DEBUG] [Thread-199350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:04:45.101 [DEBUG] [Thread-199350] [transport.py] [_log()] Compression: none
2025-11-25T00:04:45.101 [DEBUG] [Thread-199350] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:04:45.158 [DEBUG] [Thread-199350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:04:45.159 [DEBUG] [Thread-199350] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:04:45.160 [DEBUG] [Thread-199350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:04:45.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:04:45.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:04:45.215 [DEBUG] [Thread-199350] [transport.py] [_log()] userauth is OK
2025-11-25T00:04:45.215 [DEBUG] [Thread-199350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:04:45.215 [DEBUG] [Thread-199350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:04:45.215 [DEBUG] [Thread-199350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:04:45.215 [DEBUG] [Thread-199350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:04:45.234 [INFO] [Thread-199350] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:04:45.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:04:45.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:04:46.122 [DEBUG] [Thread-199350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:04:46.122 [DEBUG] [Thread-199350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:04:46.169 [DEBUG] [Thread-199350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:04:46.170 [DEBUG] [Thread-199350] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:04:46.180 [DEBUG] [Thread-199350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:04:46.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:04:46.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-11-25T00:04:46.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-11-25T00:04:46.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:04:46.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:04:46.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:04:46.219 [DEBUG] [Thread-199350] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:04:52.170 [DEBUG] [Thread-199352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:05:04.244 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:05:04.247 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:05:07.315 [DEBUG] [Thread-199353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:05:10.596 [DEBUG] [Thread-199354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:05:16.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:05:16.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:05:16.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-11-25T00:05:17.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 4, 55), 14.27, 37.45, 0.0, 29.55, 13.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:05:17.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:04:55
2025-11-25T00:05:17.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:05:17.421 [DEBUG] [Thread-199355] [transport.py] [_log()] starting thread (client mode): 0xd31520e0
2025-11-25T00:05:17.422 [DEBUG] [Thread-199355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:05:17.430 [DEBUG] [Thread-199355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:05:17.430 [INFO] [Thread-199355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:05:17.435 [DEBUG] [Thread-199355] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:05:17.435 [DEBUG] [Thread-199355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:05:17.435 [DEBUG] [Thread-199355] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:05:17.435 [DEBUG] [Thread-199355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] client lang: <none>
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] server lang: <none>
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] kex follows: False
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:05:17.436 [DEBUG] [Thread-199355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:05:17.437 [DEBUG] [Thread-199355] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:05:17.437 [DEBUG] [Thread-199355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:05:17.437 [DEBUG] [Thread-199355] [transport.py] [_log()] Compression: none
2025-11-25T00:05:17.437 [DEBUG] [Thread-199355] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:05:17.467 [DEBUG] [Thread-199355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:05:17.470 [DEBUG] [Thread-199355] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:05:17.472 [DEBUG] [Thread-199355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:05:17.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:05:17.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:05:17.475 [DEBUG] [Thread-199355] [transport.py] [_log()] userauth is OK
2025-11-25T00:05:17.475 [DEBUG] [Thread-199355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:05:17.475 [DEBUG] [Thread-199355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:05:17.475 [DEBUG] [Thread-199355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:05:17.475 [DEBUG] [Thread-199355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:05:17.493 [INFO] [Thread-199355] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:05:17.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:05:18.638 [DEBUG] [Thread-199355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:05:18.638 [DEBUG] [Thread-199355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:05:18.638 [DEBUG] [Thread-199355] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:05:18.679 [DEBUG] [Thread-199355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:05:18.679 [DEBUG] [Thread-199355] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:05:18.681 [DEBUG] [Thread-199355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:05:18.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:05:18.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:05:18.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:05:18.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:05:18.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:05:18.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:05:18.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:05:18.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:05:18.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:05:18.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.919837 -999.00  +13.20  22.98     42   +0.70 1 1 1 1 1     0    0 12.10 -25.79 ZNESW 25.6 23.0 150.0 30.5 13.5 -24.8 13.4 -24.2 13.1 -23.1 13.5 -24.0
2025-11-25T00:05:18.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:05:18.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:05:18.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.919837
2025-11-25T00:05:18.707 [DEBUG] [Thread-199355] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:05:18.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:05:18.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:05:18.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:05:18.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:05:18.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:05:18.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:04:55', tmtdew=14.27, humidity=37.45, cloud=0.0, wind=29.55, temperature=13.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:04:55', seeing=0.92, atlas_timestamp='2025-11-24T22:04:33.917', atlas_cloud=1, atlas_rain=1, zp_data=[-0.008250000000000313, -0.014749999999999375, -0.029749999999999943, -0.023500000000002075, 0.006000000000000227, 0.0652500000000007, 0.031000000000000583, -0.010249999999999204, -0.0065000000000008384, 0.006000000000000227, 0.029249999999999332, -0.013999999999999346, 0.05799999999999983, 0.019249999999999545, -0.004000000000001336, -0.018000000000000682, -0.01774999999999949, 0.026999999999999247, 0.025999999999998025, -0.03375000000000128, 0.021999999999998465, 0.07974999999999888, 0.022250000000001435, -0.02624999999999922, -0.014000000000001123, -0.0045000000000001705, -0.02224999999999966, 0.04400000000000048, 0.09800000000000075, 0.048500000000000654, 0.0990000000000002, -0.007999999999999119, -0.05825000000000102], zp_timestamp='2025-11-24T22:00:00')
2025-11-25T00:05:18.799 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:05:18.809 [DEBUG] [Thread-199358] [transport.py] [_log()] starting thread (client mode): 0xd07ccee0
2025-11-25T00:05:18.810 [DEBUG] [Thread-199358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:05:18.825 [DEBUG] [Thread-199358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:05:18.825 [INFO] [Thread-199358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] client lang: <none>
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] server lang: <none>
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] kex follows: False
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] Compression: none
2025-11-25T00:05:18.837 [DEBUG] [Thread-199358] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:05:18.891 [DEBUG] [Thread-199358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:05:18.891 [DEBUG] [Thread-199358] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:05:18.892 [DEBUG] [Thread-199358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:05:18.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:05:18.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:05:18.950 [DEBUG] [Thread-199358] [transport.py] [_log()] userauth is OK
2025-11-25T00:05:18.950 [DEBUG] [Thread-199358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:05:18.950 [DEBUG] [Thread-199358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:05:18.950 [DEBUG] [Thread-199358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:05:18.950 [DEBUG] [Thread-199358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:05:18.965 [INFO] [Thread-199358] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:05:18.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:05:18.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:05:19.789 [DEBUG] [Thread-199358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:05:19.790 [DEBUG] [Thread-199358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:05:19.838 [DEBUG] [Thread-199358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:05:19.838 [DEBUG] [Thread-199358] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:05:19.846 [DEBUG] [Thread-199358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:05:19.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:05:19.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-11-25T00:05:19.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-11-25T00:05:19.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:05:19.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:05:19.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:05:19.881 [DEBUG] [Thread-199358] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:05:22.363 [DEBUG] [Thread-199360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:05:37.489 [DEBUG] [Thread-199361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:05:49.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:05:49.916 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:05:49.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-11-25T00:05:50.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 5, 28), 14.11, 37.9, 0.0, 29.43, 13.29, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:05:50.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:05:28
2025-11-25T00:05:51.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:05:51.331 [DEBUG] [Thread-199362] [transport.py] [_log()] starting thread (client mode): 0xd3192a40
2025-11-25T00:05:51.332 [DEBUG] [Thread-199362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:05:51.346 [DEBUG] [Thread-199362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:05:51.346 [INFO] [Thread-199362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] client lang: <none>
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] server lang: <none>
2025-11-25T00:05:51.352 [DEBUG] [Thread-199362] [transport.py] [_log()] kex follows: False
2025-11-25T00:05:51.353 [DEBUG] [Thread-199362] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:05:51.353 [DEBUG] [Thread-199362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:05:51.353 [DEBUG] [Thread-199362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:05:51.353 [DEBUG] [Thread-199362] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:05:51.353 [DEBUG] [Thread-199362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:05:51.354 [DEBUG] [Thread-199362] [transport.py] [_log()] Compression: none
2025-11-25T00:05:51.354 [DEBUG] [Thread-199362] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:05:51.389 [DEBUG] [Thread-199362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:05:51.393 [DEBUG] [Thread-199362] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:05:51.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:05:51.396 [DEBUG] [Thread-199362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:05:51.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:05:51.398 [DEBUG] [Thread-199362] [transport.py] [_log()] userauth is OK
2025-11-25T00:05:51.399 [DEBUG] [Thread-199362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:05:51.399 [DEBUG] [Thread-199362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:05:51.399 [DEBUG] [Thread-199362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:05:51.399 [DEBUG] [Thread-199362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:05:51.437 [INFO] [Thread-199362] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:05:51.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:05:52.059 [DEBUG] [Thread-199362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:05:52.068 [DEBUG] [Thread-199362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:05:52.070 [DEBUG] [Thread-199362] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:05:52.099 [DEBUG] [Thread-199362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:05:52.099 [DEBUG] [Thread-199362] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:05:52.102 [DEBUG] [Thread-199362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:05:52.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:05:52.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:05:52.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:05:52.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:05:52.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:05:52.122 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:05:52.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:05:52.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:05:52.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:05:52.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.920183 -999.00  +13.20  19.95     42   +0.70 1 1 1 1 1     0    0 12.10 -26.63 ZNESW 21.4 19.9 150.6 30.9 13.6 -24.7 13.4 -24.2 13.2 -23.1 13.5 -24.0
2025-11-25T00:05:52.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:05:52.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:05:52.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.920183
2025-11-25T00:05:52.129 [DEBUG] [Thread-199362] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:05:52.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:05:52.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:05:52.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:05:52.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:05:52.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:05:52.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:05:28', tmtdew=14.11, humidity=37.9, cloud=0.0, wind=29.43, temperature=13.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:05:28', seeing=0.89, atlas_timestamp='2025-11-24T22:05:03.811', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.03725000000000023, 0.02725000000000044, -0.006000000000000227, 0.022500000000000853, 0.034250000000000114, 0.03599999999999959, 0.00975000000000037, 0.026499999999998636, 0.025000000000000355, 0.03774999999999906, -0.011499999999999844, 0.11749999999999972, 0.09525000000000006, 0.006000000000000227, 0.014999999999998792, 0.009249999999999758, 0.0235000000000003, 0.022999999999999687, -0.018250000000001876, 0.05799999999999805, 0.05524999999999913, 0.034250000000000114, 0.025750000000000384, -0.02800000000000047, 0.008000000000000895, -0.0072499999999990905, 0.0705000000000009, 0.07900000000000063, 0.06300000000000061, 0.07500000000000107, 0.03300000000000125, -0.006750000000000256], zp_timestamp='2025-11-24T22:03:00')
2025-11-25T00:05:52.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:05:52.234 [DEBUG] [Thread-199365] [transport.py] [_log()] starting thread (client mode): 0xd3149060
2025-11-25T00:05:52.235 [DEBUG] [Thread-199365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:05:52.248 [DEBUG] [Thread-199365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:05:52.248 [INFO] [Thread-199365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] client lang: <none>
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] server lang: <none>
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] kex follows: False
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] Compression: none
2025-11-25T00:05:52.256 [DEBUG] [Thread-199365] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:05:52.312 [DEBUG] [Thread-199365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:05:52.313 [DEBUG] [Thread-199365] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:05:52.313 [DEBUG] [Thread-199365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:05:52.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:05:52.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:05:52.369 [DEBUG] [Thread-199365] [transport.py] [_log()] userauth is OK
2025-11-25T00:05:52.370 [DEBUG] [Thread-199365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:05:52.370 [DEBUG] [Thread-199365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:05:52.370 [DEBUG] [Thread-199365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:05:52.370 [DEBUG] [Thread-199365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:05:52.384 [INFO] [Thread-199365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:05: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-11-25T00:05:52.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:05:52.523 [DEBUG] [Thread-199367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:05:53.209 [DEBUG] [Thread-199365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:05:53.209 [DEBUG] [Thread-199365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:05:53.257 [DEBUG] [Thread-199365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:05:53.257 [DEBUG] [Thread-199365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:05:53.265 [DEBUG] [Thread-199365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:05:53.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:05:53.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-11-25T00:05:53.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-11-25T00:05:53.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:05:53.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:05:53.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:05:53.298 [DEBUG] [Thread-199365] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:06:04.468 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:06:04.482 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:06:07.659 [DEBUG] [Thread-199368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:06:10.971 [DEBUG] [Thread-199369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:06:22.734 [DEBUG] [Thread-199370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:06:23.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:06:23.332 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:06:23.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-11-25T00:06:24.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 6), 14.17, 37.75, 0.0, 30.28, 13.33, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:06:24.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:06:00
2025-11-25T00:06:24.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:06:24.733 [DEBUG] [Thread-199371] [transport.py] [_log()] starting thread (client mode): 0xd3193c10
2025-11-25T00:06:24.734 [DEBUG] [Thread-199371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:06:24.741 [DEBUG] [Thread-199371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:06:24.741 [INFO] [Thread-199371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:06:24.744 [DEBUG] [Thread-199371] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] client lang: <none>
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] server lang: <none>
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] kex follows: False
2025-11-25T00:06:24.745 [DEBUG] [Thread-199371] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:06:24.746 [DEBUG] [Thread-199371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:06:24.746 [DEBUG] [Thread-199371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:06:24.746 [DEBUG] [Thread-199371] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:06:24.746 [DEBUG] [Thread-199371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:06:24.746 [DEBUG] [Thread-199371] [transport.py] [_log()] Compression: none
2025-11-25T00:06:24.746 [DEBUG] [Thread-199371] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:06:24.780 [DEBUG] [Thread-199371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:06:24.784 [DEBUG] [Thread-199371] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:06:24.786 [DEBUG] [Thread-199371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:06:24.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:06:24.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:06:24.792 [DEBUG] [Thread-199371] [transport.py] [_log()] userauth is OK
2025-11-25T00:06:24.792 [DEBUG] [Thread-199371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:06:24.792 [DEBUG] [Thread-199371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:06:24.793 [DEBUG] [Thread-199371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:06:24.793 [DEBUG] [Thread-199371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:06:24.831 [INFO] [Thread-199371] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:06:24.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:06:25.468 [DEBUG] [Thread-199371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:06:25.468 [DEBUG] [Thread-199371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:06:25.477 [DEBUG] [Thread-199371] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:06:25.509 [DEBUG] [Thread-199371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:06:25.509 [DEBUG] [Thread-199371] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:06:25.512 [DEBUG] [Thread-199371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:06:25.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:06:25.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:06:25.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:06:25.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:06:25.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:06:25.533 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:06:25.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:06:25.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:06:25.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:06:25.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.920531 -999.00  +13.20  14.43     42   +0.80 1 1 1 1 1     0    0 11.72 -29.27 ZNESW 18.0 14.4 156.0 24.4 13.6 -24.7 13.4 -24.2 13.2 -22.9 13.5 -23.9
2025-11-25T00:06:25.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:06:25.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:06:25.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.920531
2025-11-25T00:06:25.540 [DEBUG] [Thread-199371] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:06:25.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:06:25.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:06:25.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:06:25.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:06:25.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:06:25.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:06:00', tmtdew=14.17, humidity=37.75, cloud=0.0, wind=30.28, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:06:01', seeing=0.8, atlas_timestamp='2025-11-24T22:05:33.878', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.03725000000000023, 0.02725000000000044, -0.006000000000000227, 0.022500000000000853, 0.034250000000000114, 0.03599999999999959, 0.00975000000000037, 0.026499999999998636, 0.025000000000000355, 0.03774999999999906, -0.011499999999999844, 0.11749999999999972, 0.09525000000000006, 0.006000000000000227, 0.014999999999998792, 0.009249999999999758, 0.0235000000000003, 0.022999999999999687, -0.018250000000001876, 0.05799999999999805, 0.05524999999999913, 0.034250000000000114, 0.025750000000000384, -0.02800000000000047, 0.008000000000000895, -0.0072499999999990905, 0.0705000000000009, 0.07900000000000063, 0.06300000000000061, 0.07500000000000107, 0.03300000000000125, -0.006750000000000256], zp_timestamp='2025-11-24T22:03:00')
2025-11-25T00:06:25.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:06:25.635 [DEBUG] [Thread-199374] [transport.py] [_log()] starting thread (client mode): 0xd31f6290
2025-11-25T00:06:25.635 [DEBUG] [Thread-199374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:06:25.650 [DEBUG] [Thread-199374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:06:25.650 [INFO] [Thread-199374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:06:25.658 [DEBUG] [Thread-199374] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:06:25.658 [DEBUG] [Thread-199374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:06:25.658 [DEBUG] [Thread-199374] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:06:25.658 [DEBUG] [Thread-199374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:06:25.658 [DEBUG] [Thread-199374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:06:25.658 [DEBUG] [Thread-199374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:06:25.659 [DEBUG] [Thread-199374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:06:25.659 [DEBUG] [Thread-199374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:06:25.659 [DEBUG] [Thread-199374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:06:25.659 [DEBUG] [Thread-199374] [transport.py] [_log()] client lang: <none>
2025-11-25T00:06:25.659 [DEBUG] [Thread-199374] [transport.py] [_log()] server lang: <none>
2025-11-25T00:06:25.659 [DEBUG] [Thread-199374] [transport.py] [_log()] kex follows: False
2025-11-25T00:06:25.659 [DEBUG] [Thread-199374] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:06:25.659 [DEBUG] [Thread-199374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:06:25.660 [DEBUG] [Thread-199374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:06:25.660 [DEBUG] [Thread-199374] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:06:25.660 [DEBUG] [Thread-199374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:06:25.660 [DEBUG] [Thread-199374] [transport.py] [_log()] Compression: none
2025-11-25T00:06:25.660 [DEBUG] [Thread-199374] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:06:25.719 [DEBUG] [Thread-199374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:06:25.720 [DEBUG] [Thread-199374] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:06:25.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:06:25.722 [DEBUG] [Thread-199374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:06:25.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:06:25.778 [DEBUG] [Thread-199374] [transport.py] [_log()] userauth is OK
2025-11-25T00:06:25.778 [DEBUG] [Thread-199374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:06:25.779 [DEBUG] [Thread-199374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:06:25.779 [DEBUG] [Thread-199374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:06:25.779 [DEBUG] [Thread-199374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:06:25.798 [INFO] [Thread-199374] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:06:25.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:06:25.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:06:26.628 [DEBUG] [Thread-199374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:06:26.636 [DEBUG] [Thread-199374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:06:26.676 [DEBUG] [Thread-199374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:06:26.676 [DEBUG] [Thread-199374] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:06:26.684 [DEBUG] [Thread-199374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:06:26.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:06:26.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-11-25T00:06:26.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-11-25T00:06:26.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:06:26.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:06:26.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:06:26.718 [DEBUG] [Thread-199374] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:06:37.785 [DEBUG] [Thread-199376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:06:52.957 [DEBUG] [Thread-199377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:06:56.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:06:56.751 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:06:56.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-11-25T00:06:58.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 6, 33), 14.18, 37.57, 0.0, 29.24, 13.28, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:06:58.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:06:33
2025-11-25T00:06:58.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:06:58.359 [DEBUG] [Thread-199378] [transport.py] [_log()] starting thread (client mode): 0xd317ce20
2025-11-25T00:06:58.360 [DEBUG] [Thread-199378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:06:58.375 [DEBUG] [Thread-199378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:06:58.376 [INFO] [Thread-199378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:06:58.383 [DEBUG] [Thread-199378] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:06:58.384 [DEBUG] [Thread-199378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:06:58.384 [DEBUG] [Thread-199378] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:06:58.384 [DEBUG] [Thread-199378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:06:58.384 [DEBUG] [Thread-199378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:06:58.384 [DEBUG] [Thread-199378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:06:58.384 [DEBUG] [Thread-199378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:06:58.385 [DEBUG] [Thread-199378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:06:58.385 [DEBUG] [Thread-199378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:06:58.385 [DEBUG] [Thread-199378] [transport.py] [_log()] client lang: <none>
2025-11-25T00:06:58.385 [DEBUG] [Thread-199378] [transport.py] [_log()] server lang: <none>
2025-11-25T00:06:58.385 [DEBUG] [Thread-199378] [transport.py] [_log()] kex follows: False
2025-11-25T00:06:58.385 [DEBUG] [Thread-199378] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:06:58.386 [DEBUG] [Thread-199378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:06:58.386 [DEBUG] [Thread-199378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:06:58.386 [DEBUG] [Thread-199378] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:06:58.387 [DEBUG] [Thread-199378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:06:58.387 [DEBUG] [Thread-199378] [transport.py] [_log()] Compression: none
2025-11-25T00:06:58.387 [DEBUG] [Thread-199378] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:06:58.427 [DEBUG] [Thread-199378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:06:58.432 [DEBUG] [Thread-199378] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:06:58.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:06:58.436 [DEBUG] [Thread-199378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:06:58.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:06:58.442 [DEBUG] [Thread-199378] [transport.py] [_log()] userauth is OK
2025-11-25T00:06:58.443 [DEBUG] [Thread-199378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:06:58.444 [DEBUG] [Thread-199378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:06:58.444 [DEBUG] [Thread-199378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:06:58.444 [DEBUG] [Thread-199378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:06:58.481 [INFO] [Thread-199378] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:06:58.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:06:59.135 [DEBUG] [Thread-199378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:06:59.135 [DEBUG] [Thread-199378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:06:59.136 [DEBUG] [Thread-199378] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:06:59.176 [DEBUG] [Thread-199378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:06:59.176 [DEBUG] [Thread-199378] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:06:59.179 [DEBUG] [Thread-199378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:06:59.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:06:59.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:06:59.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:06:59.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:06:59.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:06:59.207 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:06:59.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:06:59.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:06:59.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:06:59.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.920878 -999.00  +13.20  20.53     42   +0.80 1 1 1 1 1     0    0 11.78 -30.68 ZNESW 21.9 20.5 156.2 30.3 13.5 -24.6 13.4 -24.1 13.2 -23.1 13.5 -24.0
2025-11-25T00:06:59.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:06:59.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:06:59.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.920878
2025-11-25T00:06:59.210 [DEBUG] [Thread-199378] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:06:59.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:06:59.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:06:59.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:06:59.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:06:59.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:06:59.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:06:33', tmtdew=14.18, humidity=37.57, cloud=0.0, wind=29.24, temperature=13.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:06:34', seeing=0.7, atlas_timestamp='2025-11-24T22:06:03.859', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.03725000000000023, 0.02725000000000044, -0.006000000000000227, 0.022500000000000853, 0.034250000000000114, 0.03599999999999959, 0.00975000000000037, 0.026499999999998636, 0.025000000000000355, 0.03774999999999906, -0.011499999999999844, 0.11749999999999972, 0.09525000000000006, 0.006000000000000227, 0.014999999999998792, 0.009249999999999758, 0.0235000000000003, 0.022999999999999687, -0.018250000000001876, 0.05799999999999805, 0.05524999999999913, 0.034250000000000114, 0.025750000000000384, -0.02800000000000047, 0.008000000000000895, -0.0072499999999990905, 0.0705000000000009, 0.07900000000000063, 0.06300000000000061, 0.07500000000000107, 0.03300000000000125, -0.006750000000000256], zp_timestamp='2025-11-24T22:03:00')
2025-11-25T00:06:59.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:06:59.340 [DEBUG] [Thread-199381] [transport.py] [_log()] starting thread (client mode): 0xd317d7b0
2025-11-25T00:06:59.340 [DEBUG] [Thread-199381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:06:59.354 [DEBUG] [Thread-199381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:06:59.354 [INFO] [Thread-199381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:06:59.361 [DEBUG] [Thread-199381] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] client lang: <none>
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] server lang: <none>
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] kex follows: False
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] Compression: none
2025-11-25T00:06:59.362 [DEBUG] [Thread-199381] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:06:59.421 [DEBUG] [Thread-199381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:06:59.421 [DEBUG] [Thread-199381] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:06:59.422 [DEBUG] [Thread-199381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:06:59.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:06:59.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:06:59.477 [DEBUG] [Thread-199381] [transport.py] [_log()] userauth is OK
2025-11-25T00:06:59.478 [DEBUG] [Thread-199381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:06:59.478 [DEBUG] [Thread-199381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:06:59.478 [DEBUG] [Thread-199381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:06:59.478 [DEBUG] [Thread-199381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:06:59.500 [INFO] [Thread-199381] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:06:59.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:06:59.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:07:00.373 [DEBUG] [Thread-199381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:07:00.373 [DEBUG] [Thread-199381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:07:00.422 [DEBUG] [Thread-199381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:07:00.422 [DEBUG] [Thread-199381] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:07:00.432 [DEBUG] [Thread-199381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:07:00.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:07:00.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:07:00.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-11-25T00:07:00.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:07:00.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:07:00.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:07:00.467 [DEBUG] [Thread-199381] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:07:04.697 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:07:04.699 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:07:08.014 [DEBUG] [Thread-199383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:07:11.244 [DEBUG] [Thread-199384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:07:23.126 [DEBUG] [Thread-199385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:07:30.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:07:30.501 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:07:30.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-11-25T00:07:31.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 7, 6), 14.15, 37.65, 0.0, 28.9, 13.26, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:07:31.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:07:06
2025-11-25T00:07:31.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:07:31.750 [DEBUG] [Thread-199386] [transport.py] [_log()] starting thread (client mode): 0xd3149660
2025-11-25T00:07:31.750 [DEBUG] [Thread-199386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:07:31.761 [DEBUG] [Thread-199386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:07:31.761 [INFO] [Thread-199386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] client lang: <none>
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] server lang: <none>
2025-11-25T00:07:31.767 [DEBUG] [Thread-199386] [transport.py] [_log()] kex follows: False
2025-11-25T00:07:31.768 [DEBUG] [Thread-199386] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:07:31.768 [DEBUG] [Thread-199386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:07:31.768 [DEBUG] [Thread-199386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:07:31.769 [DEBUG] [Thread-199386] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:07:31.769 [DEBUG] [Thread-199386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:07:31.769 [DEBUG] [Thread-199386] [transport.py] [_log()] Compression: none
2025-11-25T00:07:31.769 [DEBUG] [Thread-199386] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:07:31.800 [DEBUG] [Thread-199386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:07:31.805 [DEBUG] [Thread-199386] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:07:31.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:07:31.810 [DEBUG] [Thread-199386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:07:31.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:07:31.813 [DEBUG] [Thread-199386] [transport.py] [_log()] userauth is OK
2025-11-25T00:07:31.813 [DEBUG] [Thread-199386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:07:31.814 [DEBUG] [Thread-199386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:07:31.814 [DEBUG] [Thread-199386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:07:31.814 [DEBUG] [Thread-199386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:07:31.855 [INFO] [Thread-199386] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:07:31.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:07:32.507 [DEBUG] [Thread-199386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:07:32.507 [DEBUG] [Thread-199386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:07:32.517 [DEBUG] [Thread-199386] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:07:32.548 [DEBUG] [Thread-199386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:07:32.548 [DEBUG] [Thread-199386] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:07:32.551 [DEBUG] [Thread-199386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:07:32.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:07:32.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:07:32.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:07:32.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:07:32.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:07:32.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:07:32.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:07:32.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:07:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:07:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.921225 -999.00  +13.20  24.80     42   +0.90 1 1 1 1 1     0    0 11.94 -31.33 ZNESW 25.9 24.8 143.8 31.2 13.6 -24.7 13.4 -24.3 13.2 -23.2 13.5 -23.8
2025-11-25T00:07:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:07:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:07:32.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.921225
2025-11-25T00:07:32.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:07:32.584 [DEBUG] [Thread-199386] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:07:32.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:07:32.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:07:32.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:07:32.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:07:32.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:07:06', tmtdew=14.15, humidity=37.65, cloud=0.0, wind=28.9, temperature=13.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:07:06', seeing=0.72, atlas_timestamp='2025-11-24T22:06:33.840', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.03725000000000023, 0.02725000000000044, -0.006000000000000227, 0.022500000000000853, 0.034250000000000114, 0.03599999999999959, 0.00975000000000037, 0.026499999999998636, 0.025000000000000355, 0.03774999999999906, -0.011499999999999844, 0.11749999999999972, 0.09525000000000006, 0.006000000000000227, 0.014999999999998792, 0.009249999999999758, 0.0235000000000003, 0.022999999999999687, -0.018250000000001876, 0.05799999999999805, 0.05524999999999913, 0.034250000000000114, 0.025750000000000384, -0.02800000000000047, 0.008000000000000895, -0.0072499999999990905, 0.0705000000000009, 0.07900000000000063, 0.06300000000000061, 0.07500000000000107, 0.03300000000000125, -0.006750000000000256], zp_timestamp='2025-11-24T22:03:00')
2025-11-25T00:07:32.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:07:32.686 [DEBUG] [Thread-199389] [transport.py] [_log()] starting thread (client mode): 0xd07cef20
2025-11-25T00:07:32.686 [DEBUG] [Thread-199389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:07:32.701 [DEBUG] [Thread-199389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:07:32.701 [INFO] [Thread-199389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] client lang: <none>
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] server lang: <none>
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] kex follows: False
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] Compression: none
2025-11-25T00:07:32.709 [DEBUG] [Thread-199389] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:07:32.766 [DEBUG] [Thread-199389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:07:32.767 [DEBUG] [Thread-199389] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:07:32.768 [DEBUG] [Thread-199389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:07:32.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:07:32.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:07:32.822 [DEBUG] [Thread-199389] [transport.py] [_log()] userauth is OK
2025-11-25T00:07:32.822 [DEBUG] [Thread-199389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:07:32.822 [DEBUG] [Thread-199389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:07:32.822 [DEBUG] [Thread-199389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:07:32.823 [DEBUG] [Thread-199389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:07:32.841 [INFO] [Thread-199389] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:07:32.841 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:07:32.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:07:33.620 [DEBUG] [Thread-199389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:07:33.621 [DEBUG] [Thread-199389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:07:33.669 [DEBUG] [Thread-199389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:07:33.669 [DEBUG] [Thread-199389] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:07:33.678 [DEBUG] [Thread-199389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:07:33.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:07:33.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-11-25T00:07:33.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-11-25T00:07:33.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:07:33.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:07:33.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:07:33.715 [DEBUG] [Thread-199389] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:07:38.185 [DEBUG] [Thread-199391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:07:53.308 [DEBUG] [Thread-199392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:08:03.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:08:03.755 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:08:03.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-11-25T00:08:04.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 7, 39), 14.2, 37.63, 0.0, 28.57, 13.23, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:08:04.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:07:39
2025-11-25T00:08:04.907 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:08:04.911 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:08:04.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:08:05.144 [DEBUG] [Thread-199393] [transport.py] [_log()] starting thread (client mode): 0xd07ce950
2025-11-25T00:08:05.145 [DEBUG] [Thread-199393] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:08:05.153 [DEBUG] [Thread-199393] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:08:05.153 [INFO] [Thread-199393] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] client lang: <none>
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] server lang: <none>
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] kex follows: False
2025-11-25T00:08:05.159 [DEBUG] [Thread-199393] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:08:05.160 [DEBUG] [Thread-199393] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:08:05.160 [DEBUG] [Thread-199393] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:08:05.160 [DEBUG] [Thread-199393] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:08:05.160 [DEBUG] [Thread-199393] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:08:05.160 [DEBUG] [Thread-199393] [transport.py] [_log()] Compression: none
2025-11-25T00:08:05.160 [DEBUG] [Thread-199393] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:08:05.196 [DEBUG] [Thread-199393] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:08:05.201 [DEBUG] [Thread-199393] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:08:05.202 [DEBUG] [Thread-199393] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:08:05.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:08:05.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:08:05.208 [DEBUG] [Thread-199393] [transport.py] [_log()] userauth is OK
2025-11-25T00:08:05.208 [DEBUG] [Thread-199393] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:08:05.208 [DEBUG] [Thread-199393] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:08:05.208 [DEBUG] [Thread-199393] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:08:05.209 [DEBUG] [Thread-199393] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:08:05.248 [INFO] [Thread-199393] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:08:05.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:08:05.907 [DEBUG] [Thread-199393] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:08:05.907 [DEBUG] [Thread-199393] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:08:05.908 [DEBUG] [Thread-199393] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:08:05.947 [DEBUG] [Thread-199393] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:08:05.948 [DEBUG] [Thread-199393] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:08:05.951 [DEBUG] [Thread-199393] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:08:05.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:08:05.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:08:05.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:08:05.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:08:05.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:08:05.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:08:05.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:08:05.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:08:05.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:08:05.982 [DEBUG] [Thread-199393] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:08:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.921920 -999.00  +13.20  18.57     42   +0.80 1 1 1 1 1     0    0 11.76 -31.00 ZNESW 17.2 18.6 144.1 25.5 13.5 -24.8 13.4 -24.4 13.1 -23.2 13.4 -24.1
2025-11-25T00:08:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:08:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:08:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.921920
2025-11-25T00:08:05.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:08:06.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:08:06.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:08:06.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:08:06.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:08:06.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:07:39', tmtdew=14.2, humidity=37.63, cloud=0.0, wind=28.57, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:07:39', seeing=0.72, atlas_timestamp='2025-11-24T22:07:33.888', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.03725000000000023, 0.02725000000000044, -0.006000000000000227, 0.022500000000000853, 0.034250000000000114, 0.03599999999999959, 0.00975000000000037, 0.026499999999998636, 0.025000000000000355, 0.03774999999999906, -0.011499999999999844, 0.11749999999999972, 0.09525000000000006, 0.006000000000000227, 0.014999999999998792, 0.009249999999999758, 0.0235000000000003, 0.022999999999999687, -0.018250000000001876, 0.05799999999999805, 0.05524999999999913, 0.034250000000000114, 0.025750000000000384, -0.02800000000000047, 0.008000000000000895, -0.0072499999999990905, 0.0705000000000009, 0.07900000000000063, 0.06300000000000061, 0.07500000000000107, 0.03300000000000125, -0.006750000000000256], zp_timestamp='2025-11-24T22:03:00')
2025-11-25T00:08:06.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:08:06.098 [DEBUG] [Thread-199396] [transport.py] [_log()] starting thread (client mode): 0xd0786c80
2025-11-25T00:08:06.098 [DEBUG] [Thread-199396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:08:06.112 [DEBUG] [Thread-199396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:08:06.113 [INFO] [Thread-199396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] client lang: <none>
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] server lang: <none>
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] kex follows: False
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:08:06.120 [DEBUG] [Thread-199396] [transport.py] [_log()] Compression: none
2025-11-25T00:08:06.121 [DEBUG] [Thread-199396] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:08:06.176 [DEBUG] [Thread-199396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:08:06.176 [DEBUG] [Thread-199396] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:08:06.176 [DEBUG] [Thread-199396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:08:06.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:08:06.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:08:06.234 [DEBUG] [Thread-199396] [transport.py] [_log()] userauth is OK
2025-11-25T00:08:06.234 [DEBUG] [Thread-199396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:08:06.235 [DEBUG] [Thread-199396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:08:06.235 [DEBUG] [Thread-199396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:08:06.235 [DEBUG] [Thread-199396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:08:06.257 [INFO] [Thread-199396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:08:06.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:08:06.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:08:07.127 [DEBUG] [Thread-199396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:08:07.127 [DEBUG] [Thread-199396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:08:07.177 [DEBUG] [Thread-199396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:08:07.178 [DEBUG] [Thread-199396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:08:07.189 [DEBUG] [Thread-199396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:08:07.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:08:07.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-11-25T00:08:07.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-11-25T00:08:07.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:08:07.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:08:07.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:08:07.240 [DEBUG] [Thread-199396] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:08:08.377 [DEBUG] [Thread-199398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:08:11.548 [DEBUG] [Thread-199399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:08:23.526 [DEBUG] [Thread-199400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:08:37.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:08:37.246 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:08:37.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-11-25T00:08:38.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 8, 12), 14.13, 37.83, 0.0, 28.65, 13.31, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:08:38.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:08:12
2025-11-25T00:08:38.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:08:38.463 [DEBUG] [Thread-199401] [transport.py] [_log()] starting thread (client mode): 0xd0787220
2025-11-25T00:08:38.464 [DEBUG] [Thread-199401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:08:38.470 [DEBUG] [Thread-199401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:08:38.470 [INFO] [Thread-199401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:08:38.475 [DEBUG] [Thread-199401] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:08:38.475 [DEBUG] [Thread-199401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:08:38.475 [DEBUG] [Thread-199401] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:08:38.475 [DEBUG] [Thread-199401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:08:38.475 [DEBUG] [Thread-199401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:08:38.476 [DEBUG] [Thread-199401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:08:38.476 [DEBUG] [Thread-199401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:08:38.476 [DEBUG] [Thread-199401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:08:38.476 [DEBUG] [Thread-199401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:08:38.476 [DEBUG] [Thread-199401] [transport.py] [_log()] client lang: <none>
2025-11-25T00:08:38.476 [DEBUG] [Thread-199401] [transport.py] [_log()] server lang: <none>
2025-11-25T00:08:38.476 [DEBUG] [Thread-199401] [transport.py] [_log()] kex follows: False
2025-11-25T00:08:38.476 [DEBUG] [Thread-199401] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:08:38.476 [DEBUG] [Thread-199401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:08:38.476 [DEBUG] [Thread-199401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:08:38.477 [DEBUG] [Thread-199401] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:08:38.477 [DEBUG] [Thread-199401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:08:38.477 [DEBUG] [Thread-199401] [transport.py] [_log()] Compression: none
2025-11-25T00:08:38.477 [DEBUG] [Thread-199401] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:08:38.508 [DEBUG] [Thread-199401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:08:38.512 [DEBUG] [Thread-199401] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:08:38.513 [DEBUG] [Thread-199401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:08:38.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:08:38.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:08:38.517 [DEBUG] [Thread-199401] [transport.py] [_log()] userauth is OK
2025-11-25T00:08:38.518 [DEBUG] [Thread-199401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:08:38.518 [DEBUG] [Thread-199401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:08:38.518 [DEBUG] [Thread-199401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:08:38.518 [DEBUG] [Thread-199401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:08:38.548 [INFO] [Thread-199401] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:08:38.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:08:38.569 [DEBUG] [Thread-199403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:08:39.160 [DEBUG] [Thread-199401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:08:39.161 [DEBUG] [Thread-199401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:08:39.161 [DEBUG] [Thread-199401] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:08:39.202 [DEBUG] [Thread-199401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:08:39.202 [DEBUG] [Thread-199401] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:08:39.204 [DEBUG] [Thread-199401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:08:39.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:08:39.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:08:39.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:08:39.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:08:39.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:08:39.225 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:08:39.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:08:39.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:08:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:08:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.922267 -999.00  +13.20  18.49     42   +0.70 1 1 1 1 1     0    0 11.68 -28.54 ZNESW 19.9 18.5 149.4 28.8 13.6 -24.8 13.4 -24.2 13.2 -23.2 13.4 -24.1
2025-11-25T00:08:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:08:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:08:39.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.922267
2025-11-25T00:08:39.232 [DEBUG] [Thread-199401] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:08:39.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:08:39.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:08:39.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:08:39.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:08:39.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:08:39.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:08:12', tmtdew=14.13, humidity=37.83, cloud=0.0, wind=28.65, temperature=13.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:08:12', seeing=0.82, atlas_timestamp='2025-11-24T22:08:03.869', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.03725000000000023, 0.02725000000000044, -0.006000000000000227, 0.022500000000000853, 0.034250000000000114, 0.03599999999999959, 0.00975000000000037, 0.026499999999998636, 0.025000000000000355, 0.03774999999999906, -0.011499999999999844, 0.11749999999999972, 0.09525000000000006, 0.006000000000000227, 0.014999999999998792, 0.009249999999999758, 0.0235000000000003, 0.022999999999999687, -0.018250000000001876, 0.05799999999999805, 0.05524999999999913, 0.034250000000000114, 0.025750000000000384, -0.02800000000000047, 0.008000000000000895, -0.0072499999999990905, 0.0705000000000009, 0.07900000000000063, 0.06300000000000061, 0.07500000000000107, 0.03300000000000125, -0.006750000000000256], zp_timestamp='2025-11-24T22:07:00')
2025-11-25T00:08:39.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:08:39.332 [DEBUG] [Thread-199405] [transport.py] [_log()] starting thread (client mode): 0xd0785030
2025-11-25T00:08:39.332 [DEBUG] [Thread-199405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:08:39.346 [DEBUG] [Thread-199405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:08:39.347 [INFO] [Thread-199405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] client lang: <none>
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] server lang: <none>
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] kex follows: False
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:08:39.354 [DEBUG] [Thread-199405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:08:39.355 [DEBUG] [Thread-199405] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:08:39.355 [DEBUG] [Thread-199405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:08:39.355 [DEBUG] [Thread-199405] [transport.py] [_log()] Compression: none
2025-11-25T00:08:39.355 [DEBUG] [Thread-199405] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:08:39.412 [DEBUG] [Thread-199405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:08:39.413 [DEBUG] [Thread-199405] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:08:39.413 [DEBUG] [Thread-199405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:08:39.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:08:39.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:08:39.469 [DEBUG] [Thread-199405] [transport.py] [_log()] userauth is OK
2025-11-25T00:08:39.469 [DEBUG] [Thread-199405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:08:39.469 [DEBUG] [Thread-199405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:08:39.469 [DEBUG] [Thread-199405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:08:39.469 [DEBUG] [Thread-199405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:08:39.483 [INFO] [Thread-199405] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:08:39.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:08:39.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:08:40.374 [DEBUG] [Thread-199405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:08:40.375 [DEBUG] [Thread-199405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:08:40.422 [DEBUG] [Thread-199405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:08:40.422 [DEBUG] [Thread-199405] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:08:40.431 [DEBUG] [Thread-199405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:08:40.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:08:40.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-11-25T00:08:40.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-11-25T00:08:40.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:08:40.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:08:40.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:08:40.467 [DEBUG] [Thread-199405] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:08:53.672 [DEBUG] [Thread-199407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:08:55.572 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:09:05.115 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:09:05.117 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:09:08.846 [DEBUG] [Thread-199408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:09:10.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:09:10.491 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:09:10.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:09:11.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 8, 45), 14.15, 37.91, 0.0, 33.03, 13.33, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:09:11.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:08:45
2025-11-25T00:09:11.830 [DEBUG] [Thread-199409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:09:11.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:09:12.094 [DEBUG] [Thread-199410] [transport.py] [_log()] starting thread (client mode): 0xd07862f0
2025-11-25T00:09:12.095 [DEBUG] [Thread-199410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:09:12.105 [DEBUG] [Thread-199410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:09:12.106 [INFO] [Thread-199410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:09:12.110 [DEBUG] [Thread-199410] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:09:12.110 [DEBUG] [Thread-199410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:09:12.110 [DEBUG] [Thread-199410] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:09:12.111 [DEBUG] [Thread-199410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:09:12.111 [DEBUG] [Thread-199410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:09:12.111 [DEBUG] [Thread-199410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:09:12.111 [DEBUG] [Thread-199410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:09:12.111 [DEBUG] [Thread-199410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:09:12.111 [DEBUG] [Thread-199410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:09:12.111 [DEBUG] [Thread-199410] [transport.py] [_log()] client lang: <none>
2025-11-25T00:09:12.111 [DEBUG] [Thread-199410] [transport.py] [_log()] server lang: <none>
2025-11-25T00:09:12.111 [DEBUG] [Thread-199410] [transport.py] [_log()] kex follows: False
2025-11-25T00:09:12.111 [DEBUG] [Thread-199410] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:09:12.112 [DEBUG] [Thread-199410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:09:12.112 [DEBUG] [Thread-199410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:09:12.112 [DEBUG] [Thread-199410] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:09:12.112 [DEBUG] [Thread-199410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:09:12.112 [DEBUG] [Thread-199410] [transport.py] [_log()] Compression: none
2025-11-25T00:09:12.112 [DEBUG] [Thread-199410] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:09:12.147 [DEBUG] [Thread-199410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:09:12.151 [DEBUG] [Thread-199410] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:09:12.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:09:12.154 [DEBUG] [Thread-199410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:09:12.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:09:12.159 [DEBUG] [Thread-199410] [transport.py] [_log()] userauth is OK
2025-11-25T00:09:12.159 [DEBUG] [Thread-199410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:09:12.159 [DEBUG] [Thread-199410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:09:12.159 [DEBUG] [Thread-199410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:09:12.159 [DEBUG] [Thread-199410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:09:12.203 [INFO] [Thread-199410] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:09:12.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:09:12.835 [DEBUG] [Thread-199410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:09:12.836 [DEBUG] [Thread-199410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:09:12.838 [DEBUG] [Thread-199410] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:09:12.876 [DEBUG] [Thread-199410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:09:12.877 [DEBUG] [Thread-199410] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:09:12.880 [DEBUG] [Thread-199410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:09:12.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:09:12.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:09:12.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:09:12.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:09:12.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:09:12.900 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:09:12.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:09:12.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:09:12.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:09:12.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.922614 -999.00  +13.10  26.22     42   +0.70 1 1 1 1 1     0    0 11.69 -31.37 ZNESW 22.8 26.2 141.2 33.2 13.5 -24.8 13.4 -24.3 13.2 -23.3 13.4 -24.2
2025-11-25T00:09:12.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:09:12.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:09:12.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.922614
2025-11-25T00:09:12.906 [DEBUG] [Thread-199410] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:09:12.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:09:12.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:09:12.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:09:12.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:09:12.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:09:12.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:08:45', tmtdew=14.15, humidity=37.91, cloud=0.0, wind=33.03, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:08:45', seeing=0.82, atlas_timestamp='2025-11-24T22:08:33.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.03725000000000023, 0.02725000000000044, -0.006000000000000227, 0.022500000000000853, 0.034250000000000114, 0.03599999999999959, 0.00975000000000037, 0.026499999999998636, 0.025000000000000355, 0.03774999999999906, -0.011499999999999844, 0.11749999999999972, 0.09525000000000006, 0.006000000000000227, 0.014999999999998792, 0.009249999999999758, 0.0235000000000003, 0.022999999999999687, -0.018250000000001876, 0.05799999999999805, 0.05524999999999913, 0.034250000000000114, 0.025750000000000384, -0.02800000000000047, 0.008000000000000895, -0.0072499999999990905, 0.0705000000000009, 0.07900000000000063, 0.06300000000000061, 0.07500000000000107, 0.03300000000000125, -0.006750000000000256], zp_timestamp='2025-11-24T22:07:00')
2025-11-25T00:09:12.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:09:13.006 [DEBUG] [Thread-199413] [transport.py] [_log()] starting thread (client mode): 0xd31f6440
2025-11-25T00:09:13.006 [DEBUG] [Thread-199413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:09:13.020 [DEBUG] [Thread-199413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:09:13.020 [INFO] [Thread-199413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] client lang: <none>
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] server lang: <none>
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] kex follows: False
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] Compression: none
2025-11-25T00:09:13.029 [DEBUG] [Thread-199413] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:09:13.084 [DEBUG] [Thread-199413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:09:13.085 [DEBUG] [Thread-199413] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:09:13.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:09:13.086 [DEBUG] [Thread-199413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:09:13.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:09:13.141 [DEBUG] [Thread-199413] [transport.py] [_log()] userauth is OK
2025-11-25T00:09:13.141 [DEBUG] [Thread-199413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:09:13.141 [DEBUG] [Thread-199413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:09:13.141 [DEBUG] [Thread-199413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:09:13.141 [DEBUG] [Thread-199413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:09:13.158 [INFO] [Thread-199413] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:09:13.158 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:09:13.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:09:13.952 [DEBUG] [Thread-199413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:09:13.953 [DEBUG] [Thread-199413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:09:14.000 [DEBUG] [Thread-199413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:09:14.000 [DEBUG] [Thread-199413] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:09:14.009 [DEBUG] [Thread-199413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:09:14.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:09:14.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-11-25T00:09:14.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-11-25T00:09:14.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:09:14.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:09:14.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:09:14.042 [DEBUG] [Thread-199413] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:09:23.944 [DEBUG] [Thread-199415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:09:39.129 [DEBUG] [Thread-199416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:09:44.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:09:44.067 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:09:44.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-11-25T00:09:45.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 9, 17), 14.09, 38.08, 0.0, 32.32, 13.34, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:09:45.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:09:17
2025-11-25T00:09:45.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:09:45.422 [DEBUG] [Thread-199417] [transport.py] [_log()] starting thread (client mode): 0xd31f50c0
2025-11-25T00:09:45.423 [DEBUG] [Thread-199417] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:09:45.438 [DEBUG] [Thread-199417] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:09:45.439 [INFO] [Thread-199417] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] client lang: <none>
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] server lang: <none>
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] kex follows: False
2025-11-25T00:09:45.444 [DEBUG] [Thread-199417] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:09:45.445 [DEBUG] [Thread-199417] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:09:45.445 [DEBUG] [Thread-199417] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:09:45.445 [DEBUG] [Thread-199417] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:09:45.445 [DEBUG] [Thread-199417] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:09:45.445 [DEBUG] [Thread-199417] [transport.py] [_log()] Compression: none
2025-11-25T00:09:45.445 [DEBUG] [Thread-199417] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:09:45.480 [DEBUG] [Thread-199417] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:09:45.484 [DEBUG] [Thread-199417] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:09:45.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:09:45.488 [DEBUG] [Thread-199417] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:09:45.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:09:45.492 [DEBUG] [Thread-199417] [transport.py] [_log()] userauth is OK
2025-11-25T00:09:45.493 [DEBUG] [Thread-199417] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:09:45.493 [DEBUG] [Thread-199417] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:09:45.494 [DEBUG] [Thread-199417] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:09:45.494 [DEBUG] [Thread-199417] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:09:45.528 [INFO] [Thread-199417] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:09:45.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:09:46.179 [DEBUG] [Thread-199417] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:09:46.179 [DEBUG] [Thread-199417] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:09:46.182 [DEBUG] [Thread-199417] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:09:46.221 [DEBUG] [Thread-199417] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:09:46.221 [DEBUG] [Thread-199417] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:09:46.225 [DEBUG] [Thread-199417] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:09:46.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:09:46.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:09:46.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:09:46.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:09:46.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:09:46.253 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:09:46.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:09:46.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:09:46.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:09:46.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.922961 -999.00  +13.10  20.39     42   +0.70 1 1 1 1 1     0    0 12.05 -32.39 ZNESW 21.3 20.4 146.4 28.6 13.5 -24.9 13.3 -24.3 13.1 -23.3 13.4 -24.1
2025-11-25T00:09:46.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:09:46.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:09:46.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.922961
2025-11-25T00:09:46.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:09:46.259 [DEBUG] [Thread-199417] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:09:46.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:09:46.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:09:46.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:09:46.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:09:46.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:09:17', tmtdew=14.09, humidity=38.08, cloud=0.0, wind=32.32, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:09:18', seeing=0.69, atlas_timestamp='2025-11-24T22:09:03.830', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.03725000000000023, 0.02725000000000044, -0.006000000000000227, 0.022500000000000853, 0.034250000000000114, 0.03599999999999959, 0.00975000000000037, 0.026499999999998636, 0.025000000000000355, 0.03774999999999906, -0.011499999999999844, 0.11749999999999972, 0.09525000000000006, 0.006000000000000227, 0.014999999999998792, 0.009249999999999758, 0.0235000000000003, 0.022999999999999687, -0.018250000000001876, 0.05799999999999805, 0.05524999999999913, 0.034250000000000114, 0.025750000000000384, -0.02800000000000047, 0.008000000000000895, -0.0072499999999990905, 0.0705000000000009, 0.07900000000000063, 0.06300000000000061, 0.07500000000000107, 0.03300000000000125, -0.006750000000000256], zp_timestamp='2025-11-24T22:07:00')
2025-11-25T00:09:46.355 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:09:46.369 [DEBUG] [Thread-199420] [transport.py] [_log()] starting thread (client mode): 0xd0787730
2025-11-25T00:09:46.369 [DEBUG] [Thread-199420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:09:46.381 [DEBUG] [Thread-199420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:09:46.382 [INFO] [Thread-199420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:09:46.390 [DEBUG] [Thread-199420] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:09:46.390 [DEBUG] [Thread-199420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:09:46.390 [DEBUG] [Thread-199420] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:09:46.390 [DEBUG] [Thread-199420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:09:46.391 [DEBUG] [Thread-199420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:09:46.391 [DEBUG] [Thread-199420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:09:46.391 [DEBUG] [Thread-199420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:09:46.391 [DEBUG] [Thread-199420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:09:46.391 [DEBUG] [Thread-199420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:09:46.391 [DEBUG] [Thread-199420] [transport.py] [_log()] client lang: <none>
2025-11-25T00:09:46.391 [DEBUG] [Thread-199420] [transport.py] [_log()] server lang: <none>
2025-11-25T00:09:46.391 [DEBUG] [Thread-199420] [transport.py] [_log()] kex follows: False
2025-11-25T00:09:46.391 [DEBUG] [Thread-199420] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:09:46.392 [DEBUG] [Thread-199420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:09:46.392 [DEBUG] [Thread-199420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:09:46.392 [DEBUG] [Thread-199420] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:09:46.392 [DEBUG] [Thread-199420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:09:46.392 [DEBUG] [Thread-199420] [transport.py] [_log()] Compression: none
2025-11-25T00:09:46.392 [DEBUG] [Thread-199420] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:09:46.451 [DEBUG] [Thread-199420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:09:46.452 [DEBUG] [Thread-199420] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:09:46.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:09:46.453 [DEBUG] [Thread-199420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:09:46.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:09:46.510 [DEBUG] [Thread-199420] [transport.py] [_log()] userauth is OK
2025-11-25T00:09:46.510 [DEBUG] [Thread-199420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:09:46.510 [DEBUG] [Thread-199420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:09:46.510 [DEBUG] [Thread-199420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:09:46.510 [DEBUG] [Thread-199420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:09:46.529 [INFO] [Thread-199420] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:09:46.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:09:46.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:09:47.385 [DEBUG] [Thread-199420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:09:47.386 [DEBUG] [Thread-199420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:09:47.434 [DEBUG] [Thread-199420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:09:47.434 [DEBUG] [Thread-199420] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:09:47.443 [DEBUG] [Thread-199420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:09:47.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:09:47.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-11-25T00:09:47.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-11-25T00:09:47.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:09:47.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:09:47.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:09:47.491 [DEBUG] [Thread-199420] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:09:54.160 [DEBUG] [Thread-199422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:10:05.320 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:10:05.322 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:10:09.230 [DEBUG] [Thread-199423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:10:12.154 [DEBUG] [Thread-199424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:10:17.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:10:17.489 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:10:17.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-11-25T00:10:18.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 9, 50), 14.0, 38.06, 0.0, 31.07, 13.34, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:10:18.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:09:50
2025-11-25T00:10:18.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:10:19.149 [DEBUG] [Thread-199425] [transport.py] [_log()] starting thread (client mode): 0xd3151540
2025-11-25T00:10:19.149 [DEBUG] [Thread-199425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:10:19.162 [DEBUG] [Thread-199425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:10:19.162 [INFO] [Thread-199425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:10:19.169 [DEBUG] [Thread-199425] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:10:19.170 [DEBUG] [Thread-199425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:10:19.170 [DEBUG] [Thread-199425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:10:19.170 [DEBUG] [Thread-199425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:10:19.170 [DEBUG] [Thread-199425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:10:19.170 [DEBUG] [Thread-199425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:10:19.170 [DEBUG] [Thread-199425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:10:19.170 [DEBUG] [Thread-199425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:10:19.170 [DEBUG] [Thread-199425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:10:19.170 [DEBUG] [Thread-199425] [transport.py] [_log()] client lang: <none>
2025-11-25T00:10:19.171 [DEBUG] [Thread-199425] [transport.py] [_log()] server lang: <none>
2025-11-25T00:10:19.171 [DEBUG] [Thread-199425] [transport.py] [_log()] kex follows: False
2025-11-25T00:10:19.171 [DEBUG] [Thread-199425] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:10:19.172 [DEBUG] [Thread-199425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:10:19.172 [DEBUG] [Thread-199425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:10:19.172 [DEBUG] [Thread-199425] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:10:19.173 [DEBUG] [Thread-199425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:10:19.173 [DEBUG] [Thread-199425] [transport.py] [_log()] Compression: none
2025-11-25T00:10:19.173 [DEBUG] [Thread-199425] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:10:19.212 [DEBUG] [Thread-199425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:10:19.217 [DEBUG] [Thread-199425] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:10:19.219 [DEBUG] [Thread-199425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:10:19.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:10:19.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:10:19.225 [DEBUG] [Thread-199425] [transport.py] [_log()] userauth is OK
2025-11-25T00:10:19.225 [DEBUG] [Thread-199425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:10:19.226 [DEBUG] [Thread-199425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:10:19.226 [DEBUG] [Thread-199425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:10:19.226 [DEBUG] [Thread-199425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:10:19.269 [INFO] [Thread-199425] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:10:19.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:10:20.027 [DEBUG] [Thread-199425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:10:20.027 [DEBUG] [Thread-199425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:10:20.027 [DEBUG] [Thread-199425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:10:20.069 [DEBUG] [Thread-199425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:10:20.069 [DEBUG] [Thread-199425] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:10:20.073 [DEBUG] [Thread-199425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:10:20.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:10:20.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:10:20.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:10:20.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:10:20.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:10:20.110 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:10:20.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:10:20.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:10:20.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:10:20.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.923309 -999.00  +13.10  21.27     42   +0.60 1 1 1 1 1     0    0 11.65 -29.84 ZNESW 17.0 21.3 147.6 28.1 13.4 -24.9 13.3 -24.3 13.2 -23.4 13.5 -24.2
2025-11-25T00:10:20.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:10:20.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:10:20.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.923309
2025-11-25T00:10:20.118 [DEBUG] [Thread-199425] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:10:20.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:10:20.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:10:20.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:10:20.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:10:20.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:10:20.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:09:50', tmtdew=14.0, humidity=38.06, cloud=0.0, wind=31.07, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:09:50', seeing=0.75, atlas_timestamp='2025-11-24T22:09:33.898', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.03725000000000023, 0.02725000000000044, -0.006000000000000227, 0.022500000000000853, 0.034250000000000114, 0.03599999999999959, 0.00975000000000037, 0.026499999999998636, 0.025000000000000355, 0.03774999999999906, -0.011499999999999844, 0.11749999999999972, 0.09525000000000006, 0.006000000000000227, 0.014999999999998792, 0.009249999999999758, 0.0235000000000003, 0.022999999999999687, -0.018250000000001876, 0.05799999999999805, 0.05524999999999913, 0.034250000000000114, 0.025750000000000384, -0.02800000000000047, 0.008000000000000895, -0.0072499999999990905, 0.0705000000000009, 0.07900000000000063, 0.06300000000000061, 0.07500000000000107, 0.03300000000000125, -0.006750000000000256], zp_timestamp='2025-11-24T22:07:00')
2025-11-25T00:10: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-11-25T00:10:20.238 [DEBUG] [Thread-199428] [transport.py] [_log()] starting thread (client mode): 0xd0786950
2025-11-25T00:10:20.238 [DEBUG] [Thread-199428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:10:20.252 [DEBUG] [Thread-199428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:10:20.252 [INFO] [Thread-199428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:10:20.259 [DEBUG] [Thread-199428] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] client lang: <none>
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] server lang: <none>
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] kex follows: False
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:10:20.260 [DEBUG] [Thread-199428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:10:20.261 [DEBUG] [Thread-199428] [transport.py] [_log()] Compression: none
2025-11-25T00:10:20.261 [DEBUG] [Thread-199428] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:10:20.317 [DEBUG] [Thread-199428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:10:20.318 [DEBUG] [Thread-199428] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:10:20.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:10:20.319 [DEBUG] [Thread-199428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:10:20.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:10:20.374 [DEBUG] [Thread-199428] [transport.py] [_log()] userauth is OK
2025-11-25T00:10:20.375 [DEBUG] [Thread-199428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:10:20.375 [DEBUG] [Thread-199428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:10:20.375 [DEBUG] [Thread-199428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:10:20.375 [DEBUG] [Thread-199428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:10:20.395 [INFO] [Thread-199428] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:10:20.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:10:20.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:10:21.251 [DEBUG] [Thread-199428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:10:21.252 [DEBUG] [Thread-199428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:10:21.301 [DEBUG] [Thread-199428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:10:21.301 [DEBUG] [Thread-199428] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:10:21.309 [DEBUG] [Thread-199428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:10:21.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:10:21.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:10:21.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:10:21.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:10:21.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:10:21.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:10:21.344 [DEBUG] [Thread-199428] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:10:24.276 [DEBUG] [Thread-199430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:10:39.403 [DEBUG] [Thread-199431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:10:51.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:10:51.380 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:10:51.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-11-25T00:10:52.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 10, 23), 14.04, 37.98, 0.0, 31.42, 13.38, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:10:52.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:10:23
2025-11-25T00:10:52.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:10:52.609 [DEBUG] [Thread-199432] [transport.py] [_log()] starting thread (client mode): 0xd0784bb0
2025-11-25T00:10:52.610 [DEBUG] [Thread-199432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:10:52.621 [DEBUG] [Thread-199432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:10:52.621 [INFO] [Thread-199432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:10:52.626 [DEBUG] [Thread-199432] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] client lang: <none>
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] server lang: <none>
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] kex follows: False
2025-11-25T00:10:52.627 [DEBUG] [Thread-199432] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:10:52.628 [DEBUG] [Thread-199432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:10:52.628 [DEBUG] [Thread-199432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:10:52.628 [DEBUG] [Thread-199432] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:10:52.629 [DEBUG] [Thread-199432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:10:52.629 [DEBUG] [Thread-199432] [transport.py] [_log()] Compression: none
2025-11-25T00:10:52.629 [DEBUG] [Thread-199432] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:10:52.665 [DEBUG] [Thread-199432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:10:52.670 [DEBUG] [Thread-199432] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:10:52.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:10:52.675 [DEBUG] [Thread-199432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:10:52.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:10:52.679 [DEBUG] [Thread-199432] [transport.py] [_log()] userauth is OK
2025-11-25T00:10:52.679 [DEBUG] [Thread-199432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:10:52.680 [DEBUG] [Thread-199432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:10:52.680 [DEBUG] [Thread-199432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:10:52.680 [DEBUG] [Thread-199432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:10:52.719 [INFO] [Thread-199432] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:10:52.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:10:53.367 [DEBUG] [Thread-199432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:10:53.367 [DEBUG] [Thread-199432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:10:53.369 [DEBUG] [Thread-199432] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:10:53.408 [DEBUG] [Thread-199432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:10:53.408 [DEBUG] [Thread-199432] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:10:53.411 [DEBUG] [Thread-199432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:10:53.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:10:53.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:10:53.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:10:53.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:10:53.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:10:53.437 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:10:53.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:10:53.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:10:53.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:10:53.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.924003 -999.00  +13.10  21.14     42   +0.80 1 1 1 1 1     0    0 11.83 -30.75 ZNESW 19.0 21.1 144.8 27.4 13.4 -24.8 13.3 -24.3 13.1 -23.2 13.4 -24.2
2025-11-25T00:10:53.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:10:53.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:10:53.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.924003
2025-11-25T00:10:53.446 [DEBUG] [Thread-199432] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:10:53.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:10:53.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:10:53.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:10:53.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:10:53.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:10:53.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:10:23', tmtdew=14.04, humidity=37.98, cloud=0.0, wind=31.42, temperature=13.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:10:23', seeing=0.75, atlas_timestamp='2025-11-24T22:10:33.859', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0032500000000013074, 0.03725000000000023, 0.02725000000000044, -0.006000000000000227, 0.022500000000000853, 0.034250000000000114, 0.03599999999999959, 0.00975000000000037, 0.026499999999998636, 0.025000000000000355, 0.03774999999999906, -0.011499999999999844, 0.11749999999999972, 0.09525000000000006, 0.006000000000000227, 0.014999999999998792, 0.009249999999999758, 0.0235000000000003, 0.022999999999999687, -0.018250000000001876, 0.05799999999999805, 0.05524999999999913, 0.034250000000000114, 0.025750000000000384, -0.02800000000000047, 0.008000000000000895, -0.0072499999999990905, 0.0705000000000009, 0.07900000000000063, 0.06300000000000061, 0.07500000000000107, 0.03300000000000125, -0.006750000000000256], zp_timestamp='2025-11-24T22:07:00')
2025-11-25T00:10:53.549 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:10:53.561 [DEBUG] [Thread-199435] [transport.py] [_log()] starting thread (client mode): 0xd07cdfc0
2025-11-25T00:10:53.561 [DEBUG] [Thread-199435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:10:53.579 [DEBUG] [Thread-199435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:10:53.579 [INFO] [Thread-199435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:10:53.586 [DEBUG] [Thread-199435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:10:53.586 [DEBUG] [Thread-199435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:10:53.587 [DEBUG] [Thread-199435] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:10:53.587 [DEBUG] [Thread-199435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:10:53.587 [DEBUG] [Thread-199435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:10:53.587 [DEBUG] [Thread-199435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:10:53.587 [DEBUG] [Thread-199435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:10:53.587 [DEBUG] [Thread-199435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:10:53.587 [DEBUG] [Thread-199435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:10:53.587 [DEBUG] [Thread-199435] [transport.py] [_log()] client lang: <none>
2025-11-25T00:10:53.587 [DEBUG] [Thread-199435] [transport.py] [_log()] server lang: <none>
2025-11-25T00:10:53.588 [DEBUG] [Thread-199435] [transport.py] [_log()] kex follows: False
2025-11-25T00:10:53.588 [DEBUG] [Thread-199435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:10:53.588 [DEBUG] [Thread-199435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:10:53.588 [DEBUG] [Thread-199435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:10:53.588 [DEBUG] [Thread-199435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:10:53.588 [DEBUG] [Thread-199435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:10:53.588 [DEBUG] [Thread-199435] [transport.py] [_log()] Compression: none
2025-11-25T00:10:53.589 [DEBUG] [Thread-199435] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:10:53.645 [DEBUG] [Thread-199435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:10:53.646 [DEBUG] [Thread-199435] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:10:53.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:10:53.648 [DEBUG] [Thread-199435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:10:53.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:10:53.702 [DEBUG] [Thread-199435] [transport.py] [_log()] userauth is OK
2025-11-25T00:10:53.702 [DEBUG] [Thread-199435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:10:53.702 [DEBUG] [Thread-199435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:10:53.702 [DEBUG] [Thread-199435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:10:53.702 [DEBUG] [Thread-199435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:10:53.721 [INFO] [Thread-199435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:10:53.722 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:10:53.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:10:54.457 [DEBUG] [Thread-199437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:10:54.505 [DEBUG] [Thread-199435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:10:54.505 [DEBUG] [Thread-199435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:10:54.553 [DEBUG] [Thread-199435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:10:54.553 [DEBUG] [Thread-199435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:10:54.561 [DEBUG] [Thread-199435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:10:54.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:10:54.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:10:54.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:10:54.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:10:54.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:10:54.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:10:54.594 [DEBUG] [Thread-199435] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:11:05.527 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:11:05.529 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:11:09.582 [DEBUG] [Thread-199438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:11:12.462 [DEBUG] [Thread-199439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:11:24.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:11:24.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:11:24.664 [DEBUG] [Thread-199440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:11:24.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-11-25T00:11:25.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 10, 56), 13.93, 38.36, 0.0, 29.34, 13.48, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:11:25.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:10:56
2025-11-25T00:11:25.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:11:25.861 [DEBUG] [Thread-199441] [transport.py] [_log()] starting thread (client mode): 0xd07ce890
2025-11-25T00:11:25.861 [DEBUG] [Thread-199441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:11:25.875 [DEBUG] [Thread-199441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:11:25.875 [INFO] [Thread-199441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:11:25.882 [DEBUG] [Thread-199441] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:11:25.883 [DEBUG] [Thread-199441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:11:25.883 [DEBUG] [Thread-199441] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:11:25.883 [DEBUG] [Thread-199441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:11:25.883 [DEBUG] [Thread-199441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:11:25.883 [DEBUG] [Thread-199441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:11:25.883 [DEBUG] [Thread-199441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:11:25.883 [DEBUG] [Thread-199441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:11:25.884 [DEBUG] [Thread-199441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:11:25.884 [DEBUG] [Thread-199441] [transport.py] [_log()] client lang: <none>
2025-11-25T00:11:25.884 [DEBUG] [Thread-199441] [transport.py] [_log()] server lang: <none>
2025-11-25T00:11:25.884 [DEBUG] [Thread-199441] [transport.py] [_log()] kex follows: False
2025-11-25T00:11:25.884 [DEBUG] [Thread-199441] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:11:25.885 [DEBUG] [Thread-199441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:11:25.885 [DEBUG] [Thread-199441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:11:25.885 [DEBUG] [Thread-199441] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:11:25.885 [DEBUG] [Thread-199441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:11:25.886 [DEBUG] [Thread-199441] [transport.py] [_log()] Compression: none
2025-11-25T00:11:25.886 [DEBUG] [Thread-199441] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:11:25.922 [DEBUG] [Thread-199441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:11:25.925 [DEBUG] [Thread-199441] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:11:25.926 [DEBUG] [Thread-199441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:11:25.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:11:25.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:11:25.930 [DEBUG] [Thread-199441] [transport.py] [_log()] userauth is OK
2025-11-25T00:11:25.931 [DEBUG] [Thread-199441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:11:25.931 [DEBUG] [Thread-199441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:11:25.931 [DEBUG] [Thread-199441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:11:25.931 [DEBUG] [Thread-199441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:11:25.952 [INFO] [Thread-199441] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:11:25.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:11:26.550 [DEBUG] [Thread-199441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:11:26.550 [DEBUG] [Thread-199441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:11:26.552 [DEBUG] [Thread-199441] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:11:26.591 [DEBUG] [Thread-199441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:11:26.591 [DEBUG] [Thread-199441] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:11:26.595 [DEBUG] [Thread-199441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:11:26.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:11:26.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:11:26.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:11:26.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:11:26.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:11:26.623 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:11:26.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:11:26.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:11:26.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:11:26.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.924350 -999.00  +13.10  19.73     43   +1.00 1 1 1 1 1     0    0 11.62 -32.23 ZNESW 21.3 19.7 152.4 35.0 13.4 -24.7 13.3 -24.3 13.1 -23.3 13.3 -24.1
2025-11-25T00:11:26.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:11:26.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:11:26.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.924350
2025-11-25T00:11:26.632 [DEBUG] [Thread-199441] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:11:26.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:11:26.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:11:26.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:11:26.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:11:26.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:11:26.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:10:56', tmtdew=13.93, humidity=38.36, cloud=0.0, wind=29.34, temperature=13.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:10:56', seeing=0.82, atlas_timestamp='2025-11-24T22:11:03.840', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01425000000000054, 0.013750000000001705, -0.003750000000000142, 0.005499999999999616, 0.02949999999999875, 0.052250000000000796, 0.03149999999999942, -0.029749999999999943, 0.006499999999999062, 0.0009999999999994458, 0.03824999999999967, -0.005000000000000782, 0.08799999999999919, 0.11324999999999896, 0.0045000000000001705, -0.03750000000000142, 0.03125, 0.020500000000000185, 0.03799999999999848, -0.02275000000000027, 0.06599999999999895, 0.08624999999999972, 0.06325000000000003, 0.03074999999999939, -0.012000000000000455, -0.013499999999998735, 0.013749999999999929, 0.037499999999999645, 0.14100000000000001, 0.04800000000000182, 0.1205000000000016, 0.002000000000000668, -0.0002500000000011937], zp_timestamp='2025-11-24T22:09:00')
2025-11-25T00:11: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-11-25T00:11:26.747 [DEBUG] [Thread-199444] [transport.py] [_log()] starting thread (client mode): 0xd0787d90
2025-11-25T00:11:26.747 [DEBUG] [Thread-199444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:11:26.762 [DEBUG] [Thread-199444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:11:26.762 [INFO] [Thread-199444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:11:26.769 [DEBUG] [Thread-199444] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] client lang: <none>
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] server lang: <none>
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] kex follows: False
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:11:26.770 [DEBUG] [Thread-199444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:11:26.771 [DEBUG] [Thread-199444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:11:26.771 [DEBUG] [Thread-199444] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:11:26.771 [DEBUG] [Thread-199444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:11:26.771 [DEBUG] [Thread-199444] [transport.py] [_log()] Compression: none
2025-11-25T00:11:26.771 [DEBUG] [Thread-199444] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:11:26.830 [DEBUG] [Thread-199444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:11:26.831 [DEBUG] [Thread-199444] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:11:26.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:11:26.832 [DEBUG] [Thread-199444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:11:26.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:11:26.889 [DEBUG] [Thread-199444] [transport.py] [_log()] userauth is OK
2025-11-25T00:11:26.889 [DEBUG] [Thread-199444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:11:26.889 [DEBUG] [Thread-199444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:11:26.889 [DEBUG] [Thread-199444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:11:26.889 [DEBUG] [Thread-199444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:11:26.909 [INFO] [Thread-199444] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:11:26.909 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:11:26.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:11:27.740 [DEBUG] [Thread-199444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:11:27.740 [DEBUG] [Thread-199444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:11:27.789 [DEBUG] [Thread-199444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:11:27.790 [DEBUG] [Thread-199444] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:11:27.799 [DEBUG] [Thread-199444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:11:27.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:11:27.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-11-25T00:11:27.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') -> 00000000
2025-11-25T00:11:27.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:11:27.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:11:27.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:11:27.833 [DEBUG] [Thread-199444] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:11:39.755 [DEBUG] [Thread-199446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:11:54.867 [DEBUG] [Thread-199447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:11:57.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:11:57.856 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:11: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-11-25T00:11:58.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 11, 29), 13.82, 38.66, 0.0, 30.12, 13.46, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:11:58.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:11:29
2025-11-25T00:11:58.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:11:59.012 [DEBUG] [Thread-199448] [transport.py] [_log()] starting thread (client mode): 0xd31f7430
2025-11-25T00:11:59.013 [DEBUG] [Thread-199448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:11:59.013 [DEBUG] [Thread-199448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:11:59.013 [INFO] [Thread-199448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] client lang: <none>
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] server lang: <none>
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] kex follows: False
2025-11-25T00:11:59.017 [DEBUG] [Thread-199448] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:11:59.018 [DEBUG] [Thread-199448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:11:59.018 [DEBUG] [Thread-199448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:11:59.018 [DEBUG] [Thread-199448] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:11:59.018 [DEBUG] [Thread-199448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:11:59.018 [DEBUG] [Thread-199448] [transport.py] [_log()] Compression: none
2025-11-25T00:11:59.018 [DEBUG] [Thread-199448] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:11:59.047 [DEBUG] [Thread-199448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:11:59.051 [DEBUG] [Thread-199448] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:11:59.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:11:59.053 [DEBUG] [Thread-199448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:11:59.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:11:59.054 [DEBUG] [Thread-199448] [transport.py] [_log()] userauth is OK
2025-11-25T00:11:59.054 [DEBUG] [Thread-199448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:11:59.055 [DEBUG] [Thread-199448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:11:59.055 [DEBUG] [Thread-199448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:11:59.055 [DEBUG] [Thread-199448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:11:59.074 [INFO] [Thread-199448] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:11:59.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:11:59.729 [DEBUG] [Thread-199448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:11:59.729 [DEBUG] [Thread-199448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:11:59.730 [DEBUG] [Thread-199448] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:11:59.770 [DEBUG] [Thread-199448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:11:59.770 [DEBUG] [Thread-199448] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:11:59.772 [DEBUG] [Thread-199448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:11:59.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:11:59.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:11:59.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:11:59.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:11:59.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:11:59.793 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:11:59.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:11:59.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:11:59.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:11:59.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.924698 -999.00  +13.20  20.98     43   +0.90 1 1 1 1 1     0    0 11.69 -29.03 ZNESW 23.9 21.0 156.6 32.9 13.4 -24.8 13.3 -24.3 13.1 -23.3 13.4 -24.1
2025-11-25T00:11:59.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:11:59.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:11:59.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.924698
2025-11-25T00:11:59.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:11:59.800 [DEBUG] [Thread-199448] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:11:59.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:11:59.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:11:59.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:11:59.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:11:59.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:11:29', tmtdew=13.82, humidity=38.66, cloud=0.0, wind=30.12, temperature=13.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:11:29', seeing=0.73, atlas_timestamp='2025-11-24T22:11:33.907', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01425000000000054, 0.013750000000001705, -0.003750000000000142, 0.005499999999999616, 0.02949999999999875, 0.052250000000000796, 0.03149999999999942, -0.029749999999999943, 0.006499999999999062, 0.0009999999999994458, 0.03824999999999967, -0.005000000000000782, 0.08799999999999919, 0.11324999999999896, 0.0045000000000001705, -0.03750000000000142, 0.03125, 0.020500000000000185, 0.03799999999999848, -0.02275000000000027, 0.06599999999999895, 0.08624999999999972, 0.06325000000000003, 0.03074999999999939, -0.012000000000000455, -0.013499999999998735, 0.013749999999999929, 0.037499999999999645, 0.14100000000000001, 0.04800000000000182, 0.1205000000000016, 0.002000000000000668, -0.0002500000000011937], zp_timestamp='2025-11-24T22:09:00')
2025-11-25T00:11:59.880 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:11:59.891 [DEBUG] [Thread-199451] [transport.py] [_log()] starting thread (client mode): 0xd0787d00
2025-11-25T00:11:59.891 [DEBUG] [Thread-199451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:11:59.905 [DEBUG] [Thread-199451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:11:59.905 [INFO] [Thread-199451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] client lang: <none>
2025-11-25T00:11:59.912 [DEBUG] [Thread-199451] [transport.py] [_log()] server lang: <none>
2025-11-25T00:11:59.913 [DEBUG] [Thread-199451] [transport.py] [_log()] kex follows: False
2025-11-25T00:11:59.913 [DEBUG] [Thread-199451] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:11:59.913 [DEBUG] [Thread-199451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:11:59.913 [DEBUG] [Thread-199451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:11:59.913 [DEBUG] [Thread-199451] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:11:59.913 [DEBUG] [Thread-199451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:11:59.913 [DEBUG] [Thread-199451] [transport.py] [_log()] Compression: none
2025-11-25T00:11:59.913 [DEBUG] [Thread-199451] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:11:59.967 [DEBUG] [Thread-199451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:11:59.967 [DEBUG] [Thread-199451] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:11:59.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:11:59.968 [DEBUG] [Thread-199451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:11:59.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:12:00.025 [DEBUG] [Thread-199451] [transport.py] [_log()] userauth is OK
2025-11-25T00:12:00.025 [DEBUG] [Thread-199451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:12:00.025 [DEBUG] [Thread-199451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:12:00.025 [DEBUG] [Thread-199451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:12:00.025 [DEBUG] [Thread-199451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:12:00.039 [INFO] [Thread-199451] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:12:00.039 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:12:00.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:12:00.855 [DEBUG] [Thread-199451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:12:00.856 [DEBUG] [Thread-199451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:12:00.903 [DEBUG] [Thread-199451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:12:00.903 [DEBUG] [Thread-199451] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:12:00.911 [DEBUG] [Thread-199451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:12:00.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:12:00.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:12:00.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-11-25T00:12:00.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:12:00.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:12:00.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:12:00.945 [DEBUG] [Thread-199451] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:12:05.739 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:12:05.745 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:12:09.921 [DEBUG] [Thread-199453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:12:12.694 [DEBUG] [Thread-199454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:12:25.035 [DEBUG] [Thread-199455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:12:30.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:12:30.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:12:30.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:12:32.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 12, 2), 13.82, 38.65, 0.0, 29.02, 13.46, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:12:32.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:12:02
2025-11-25T00:12:32.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:12:32.526 [DEBUG] [Thread-199456] [transport.py] [_log()] starting thread (client mode): 0xd3152260
2025-11-25T00:12:32.527 [DEBUG] [Thread-199456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:12:32.535 [DEBUG] [Thread-199456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:12:32.535 [INFO] [Thread-199456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:12:32.540 [DEBUG] [Thread-199456] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:12:32.540 [DEBUG] [Thread-199456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:12:32.540 [DEBUG] [Thread-199456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:12:32.540 [DEBUG] [Thread-199456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:12:32.540 [DEBUG] [Thread-199456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:12:32.540 [DEBUG] [Thread-199456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:12:32.540 [DEBUG] [Thread-199456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:12:32.540 [DEBUG] [Thread-199456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:12:32.541 [DEBUG] [Thread-199456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:12:32.541 [DEBUG] [Thread-199456] [transport.py] [_log()] client lang: <none>
2025-11-25T00:12:32.541 [DEBUG] [Thread-199456] [transport.py] [_log()] server lang: <none>
2025-11-25T00:12:32.541 [DEBUG] [Thread-199456] [transport.py] [_log()] kex follows: False
2025-11-25T00:12:32.541 [DEBUG] [Thread-199456] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:12:32.542 [DEBUG] [Thread-199456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:12:32.542 [DEBUG] [Thread-199456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:12:32.542 [DEBUG] [Thread-199456] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:12:32.542 [DEBUG] [Thread-199456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:12:32.542 [DEBUG] [Thread-199456] [transport.py] [_log()] Compression: none
2025-11-25T00:12:32.542 [DEBUG] [Thread-199456] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:12:32.579 [DEBUG] [Thread-199456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:12:32.584 [DEBUG] [Thread-199456] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:12:32.586 [DEBUG] [Thread-199456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:12:32.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:12:32.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:12:32.593 [DEBUG] [Thread-199456] [transport.py] [_log()] userauth is OK
2025-11-25T00:12:32.593 [DEBUG] [Thread-199456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:12:32.594 [DEBUG] [Thread-199456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:12:32.594 [DEBUG] [Thread-199456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:12:32.594 [DEBUG] [Thread-199456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:12:32.621 [INFO] [Thread-199456] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:12:32.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:12:33.249 [DEBUG] [Thread-199456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:12:33.250 [DEBUG] [Thread-199456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:12:33.250 [DEBUG] [Thread-199456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:12:33.291 [DEBUG] [Thread-199456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:12:33.291 [DEBUG] [Thread-199456] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:12:33.294 [DEBUG] [Thread-199456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:12:33.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:12:33.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:12:33.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:12:33.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:12:33.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:12:33.316 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:12:33.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:12:33.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:12:33.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:12:33.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.925045 -999.00  +13.20  27.71     44   +1.30 1 1 1 1 1     0    0 11.71 -29.95 ZNESW 22.7 27.7 145.8 34.2 13.5 -24.7 13.3 -24.2 13.1 -23.1 13.4 -24.1
2025-11-25T00:12:33.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:12:33.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:12:33.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.925045
2025-11-25T00:12:33.323 [DEBUG] [Thread-199456] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:12:33.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:12:33.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:12:33.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:12:33.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:12:33.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:12:33.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:12:02', tmtdew=13.82, humidity=38.65, cloud=0.0, wind=29.02, temperature=13.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:12:02', seeing=0.73, atlas_timestamp='2025-11-24T22:12:03.888', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01425000000000054, 0.013750000000001705, -0.003750000000000142, 0.005499999999999616, 0.02949999999999875, 0.052250000000000796, 0.03149999999999942, -0.029749999999999943, 0.006499999999999062, 0.0009999999999994458, 0.03824999999999967, -0.005000000000000782, 0.08799999999999919, 0.11324999999999896, 0.0045000000000001705, -0.03750000000000142, 0.03125, 0.020500000000000185, 0.03799999999999848, -0.02275000000000027, 0.06599999999999895, 0.08624999999999972, 0.06325000000000003, 0.03074999999999939, -0.012000000000000455, -0.013499999999998735, 0.013749999999999929, 0.037499999999999645, 0.14100000000000001, 0.04800000000000182, 0.1205000000000016, 0.002000000000000668, -0.0002500000000011937], zp_timestamp='2025-11-24T22:09:00')
2025-11-25T00:12:33.409 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:12:33.421 [DEBUG] [Thread-199459] [transport.py] [_log()] starting thread (client mode): 0xd07ce650
2025-11-25T00:12:33.421 [DEBUG] [Thread-199459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:12:33.435 [DEBUG] [Thread-199459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:12:33.435 [INFO] [Thread-199459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:12:33.443 [DEBUG] [Thread-199459] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:12:33.444 [DEBUG] [Thread-199459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:12:33.444 [DEBUG] [Thread-199459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:12:33.444 [DEBUG] [Thread-199459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:12:33.444 [DEBUG] [Thread-199459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:12:33.444 [DEBUG] [Thread-199459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:12:33.444 [DEBUG] [Thread-199459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:12:33.444 [DEBUG] [Thread-199459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:12:33.445 [DEBUG] [Thread-199459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:12:33.445 [DEBUG] [Thread-199459] [transport.py] [_log()] client lang: <none>
2025-11-25T00:12:33.445 [DEBUG] [Thread-199459] [transport.py] [_log()] server lang: <none>
2025-11-25T00:12:33.445 [DEBUG] [Thread-199459] [transport.py] [_log()] kex follows: False
2025-11-25T00:12:33.445 [DEBUG] [Thread-199459] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:12:33.445 [DEBUG] [Thread-199459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:12:33.445 [DEBUG] [Thread-199459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:12:33.445 [DEBUG] [Thread-199459] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:12:33.446 [DEBUG] [Thread-199459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:12:33.446 [DEBUG] [Thread-199459] [transport.py] [_log()] Compression: none
2025-11-25T00:12:33.446 [DEBUG] [Thread-199459] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:12:33.502 [DEBUG] [Thread-199459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:12:33.502 [DEBUG] [Thread-199459] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:12:33.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:12:33.503 [DEBUG] [Thread-199459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:12:33.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:12:33.557 [DEBUG] [Thread-199459] [transport.py] [_log()] userauth is OK
2025-11-25T00:12:33.558 [DEBUG] [Thread-199459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:12:33.558 [DEBUG] [Thread-199459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:12:33.558 [DEBUG] [Thread-199459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:12:33.558 [DEBUG] [Thread-199459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:12:33.577 [INFO] [Thread-199459] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:12:33.577 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:12:33.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:12:34.416 [DEBUG] [Thread-199459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:12:34.416 [DEBUG] [Thread-199459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:12:34.464 [DEBUG] [Thread-199459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:12:34.465 [DEBUG] [Thread-199459] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:12:34.474 [DEBUG] [Thread-199459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:12:34.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:12:34.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')
2025-11-25T00:12:34.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-11-25T00:12:34.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:12:34.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:12:34.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:12:34.513 [DEBUG] [Thread-199459] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:12:40.089 [DEBUG] [Thread-199461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:12:55.215 [DEBUG] [Thread-199462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:13:04.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:13:04.518 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:13:04.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-11-25T00:13:05.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 12, 35), 13.9, 38.06, 0.0, 29.98, 13.33, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:13:05.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:12:35
2025-11-25T00:13:05.951 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:13:05.954 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:13:05.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:13:06.157 [DEBUG] [Thread-199463] [transport.py] [_log()] starting thread (client mode): 0xd3192cb0
2025-11-25T00:13:06.158 [DEBUG] [Thread-199463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:13:06.170 [DEBUG] [Thread-199463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:13:06.170 [INFO] [Thread-199463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:13:06.176 [DEBUG] [Thread-199463] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] client lang: <none>
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] server lang: <none>
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] kex follows: False
2025-11-25T00:13:06.177 [DEBUG] [Thread-199463] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:13:06.178 [DEBUG] [Thread-199463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:13:06.178 [DEBUG] [Thread-199463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:13:06.179 [DEBUG] [Thread-199463] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:13:06.180 [DEBUG] [Thread-199463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:13:06.180 [DEBUG] [Thread-199463] [transport.py] [_log()] Compression: none
2025-11-25T00:13:06.180 [DEBUG] [Thread-199463] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:13:06.217 [DEBUG] [Thread-199463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:13:06.222 [DEBUG] [Thread-199463] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:13:06.224 [DEBUG] [Thread-199463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:13:06.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:13:06.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:13:06.230 [DEBUG] [Thread-199463] [transport.py] [_log()] userauth is OK
2025-11-25T00:13:06.230 [DEBUG] [Thread-199463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:13:06.231 [DEBUG] [Thread-199463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:13:06.231 [DEBUG] [Thread-199463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:13:06.231 [DEBUG] [Thread-199463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:13:06.269 [INFO] [Thread-199463] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:13:06.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:13:06.908 [DEBUG] [Thread-199463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:13:06.909 [DEBUG] [Thread-199463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:13:06.911 [DEBUG] [Thread-199463] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:13:06.950 [DEBUG] [Thread-199463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:13:06.950 [DEBUG] [Thread-199463] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:13:06.954 [DEBUG] [Thread-199463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:13:06.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:13:06.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:13:06.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:13:06.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:13:06.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:13:06.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:13:06.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:13:06.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:13:06.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:13:06.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.925392 -999.00  +13.30  26.02     43   +1.20 1 1 1 1 1     0    0 11.67 -29.97 ZNESW 20.5 26.0 148.2 31.6 13.4 -24.7 13.3 -24.2 13.1 -23.1 13.4 -24.1
2025-11-25T00:13:06.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:13:06.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:13:06.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.925392
2025-11-25T00:13:06.989 [DEBUG] [Thread-199463] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:13:07.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:13:07.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:13:07.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:13:07.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:13:07.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:13:07.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:12:35', tmtdew=13.9, humidity=38.06, cloud=0.0, wind=29.98, temperature=13.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:12:35', seeing=0.7, atlas_timestamp='2025-11-24T22:12:33.869', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01425000000000054, 0.013750000000001705, -0.003750000000000142, 0.005499999999999616, 0.02949999999999875, 0.052250000000000796, 0.03149999999999942, -0.029749999999999943, 0.006499999999999062, 0.0009999999999994458, 0.03824999999999967, -0.005000000000000782, 0.08799999999999919, 0.11324999999999896, 0.0045000000000001705, -0.03750000000000142, 0.03125, 0.020500000000000185, 0.03799999999999848, -0.02275000000000027, 0.06599999999999895, 0.08624999999999972, 0.06325000000000003, 0.03074999999999939, -0.012000000000000455, -0.013499999999998735, 0.013749999999999929, 0.037499999999999645, 0.14100000000000001, 0.04800000000000182, 0.1205000000000016, 0.002000000000000668, -0.0002500000000011937], zp_timestamp='2025-11-24T22:09:00')
2025-11-25T00:13:07.106 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:13:07.117 [DEBUG] [Thread-199466] [transport.py] [_log()] starting thread (client mode): 0xd3192590
2025-11-25T00:13:07.117 [DEBUG] [Thread-199466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:13:07.132 [DEBUG] [Thread-199466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:13:07.132 [INFO] [Thread-199466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:13:07.140 [DEBUG] [Thread-199466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:13:07.140 [DEBUG] [Thread-199466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:13:07.140 [DEBUG] [Thread-199466] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:13:07.140 [DEBUG] [Thread-199466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:13:07.140 [DEBUG] [Thread-199466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:13:07.140 [DEBUG] [Thread-199466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:13:07.140 [DEBUG] [Thread-199466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] client lang: <none>
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] server lang: <none>
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] kex follows: False
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] Compression: none
2025-11-25T00:13:07.141 [DEBUG] [Thread-199466] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:13:07.196 [DEBUG] [Thread-199466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:13:07.197 [DEBUG] [Thread-199466] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:13:07.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:13:07.198 [DEBUG] [Thread-199466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:13:07.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:13:07.253 [DEBUG] [Thread-199466] [transport.py] [_log()] userauth is OK
2025-11-25T00:13:07.253 [DEBUG] [Thread-199466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:13:07.253 [DEBUG] [Thread-199466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:13:07.253 [DEBUG] [Thread-199466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:13:07.253 [DEBUG] [Thread-199466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:13:07.272 [INFO] [Thread-199466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:13:07.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:13:07.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:13:08.136 [DEBUG] [Thread-199466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:13:08.136 [DEBUG] [Thread-199466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:13:08.185 [DEBUG] [Thread-199466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:13:08.185 [DEBUG] [Thread-199466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:13:08.194 [DEBUG] [Thread-199466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:13:08.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:13:08.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-11-25T00:13:08.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-11-25T00:13:08.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:13:08.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:13:08.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:13:08.231 [DEBUG] [Thread-199466] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:13:10.263 [DEBUG] [Thread-199468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:13:13.017 [DEBUG] [Thread-199469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:13:25.401 [DEBUG] [Thread-199470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:13:38.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:13:38.233 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:13:38.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:13:39.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 13, 7), 13.9, 38.06, 0.0, 30.82, 13.29, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:13:39.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:13:07
2025-11-25T00:13:39.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:13:39.674 [DEBUG] [Thread-199471] [transport.py] [_log()] starting thread (client mode): 0xd3153b50
2025-11-25T00:13:39.675 [DEBUG] [Thread-199471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:13:39.679 [DEBUG] [Thread-199471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:13:39.679 [INFO] [Thread-199471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] client lang: <none>
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] server lang: <none>
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] kex follows: False
2025-11-25T00:13:39.683 [DEBUG] [Thread-199471] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:13:39.684 [DEBUG] [Thread-199471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:13:39.684 [DEBUG] [Thread-199471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:13:39.684 [DEBUG] [Thread-199471] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:13:39.684 [DEBUG] [Thread-199471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:13:39.684 [DEBUG] [Thread-199471] [transport.py] [_log()] Compression: none
2025-11-25T00:13:39.684 [DEBUG] [Thread-199471] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:13:39.723 [DEBUG] [Thread-199471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:13:39.728 [DEBUG] [Thread-199471] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:13:39.730 [DEBUG] [Thread-199471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:13:39.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:13:39.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:13:39.735 [DEBUG] [Thread-199471] [transport.py] [_log()] userauth is OK
2025-11-25T00:13:39.736 [DEBUG] [Thread-199471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:13:39.736 [DEBUG] [Thread-199471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:13:39.736 [DEBUG] [Thread-199471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:13:39.736 [DEBUG] [Thread-199471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:13:39.755 [INFO] [Thread-199471] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:13:39.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:13:40.338 [DEBUG] [Thread-199471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:13:40.338 [DEBUG] [Thread-199471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:13:40.349 [DEBUG] [Thread-199471] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:13:40.380 [DEBUG] [Thread-199471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:13:40.380 [DEBUG] [Thread-199471] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:13:40.383 [DEBUG] [Thread-199471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:13:40.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:13:40.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:13:40.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:13:40.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:13:40.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:13:40.405 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:13:40.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:13:40.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:13:40.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:13:40.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.925739 -999.00  +13.30  19.77     43   +1.10 1 1 1 1 1     0    0 11.63 -29.05 ZNESW 20.1 19.8 146.0 30.7 13.5 -24.9 13.3 -24.3 13.1 -23.3 13.4 -24.2
2025-11-25T00:13:40.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:13:40.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:13:40.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.925739
2025-11-25T00:13:40.413 [DEBUG] [Thread-199471] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:13:40.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:13:40.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:13:40.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:13:40.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:13:40.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:13:40.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:13:07', tmtdew=13.9, humidity=38.06, cloud=0.0, wind=30.82, temperature=13.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:13:08', seeing=0.65, atlas_timestamp='2025-11-24T22:13:03.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01425000000000054, 0.013750000000001705, -0.003750000000000142, 0.005499999999999616, 0.02949999999999875, 0.052250000000000796, 0.03149999999999942, -0.029749999999999943, 0.006499999999999062, 0.0009999999999994458, 0.03824999999999967, -0.005000000000000782, 0.08799999999999919, 0.11324999999999896, 0.0045000000000001705, -0.03750000000000142, 0.03125, 0.020500000000000185, 0.03799999999999848, -0.02275000000000027, 0.06599999999999895, 0.08624999999999972, 0.06325000000000003, 0.03074999999999939, -0.012000000000000455, -0.013499999999998735, 0.013749999999999929, 0.037499999999999645, 0.14100000000000001, 0.04800000000000182, 0.1205000000000016, 0.002000000000000668, -0.0002500000000011937], zp_timestamp='2025-11-24T22:09:00')
2025-11-25T00:13:40.455 [DEBUG] [Thread-199474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:13:40.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:13:40.511 [DEBUG] [Thread-199475] [transport.py] [_log()] starting thread (client mode): 0xd317ee60
2025-11-25T00:13:40.511 [DEBUG] [Thread-199475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:13:40.525 [DEBUG] [Thread-199475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:13:40.525 [INFO] [Thread-199475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:13:40.532 [DEBUG] [Thread-199475] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:13:40.532 [DEBUG] [Thread-199475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] client lang: <none>
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] server lang: <none>
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] kex follows: False
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] Compression: none
2025-11-25T00:13:40.533 [DEBUG] [Thread-199475] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:13:40.587 [DEBUG] [Thread-199475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:13:40.587 [DEBUG] [Thread-199475] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:13:40.587 [DEBUG] [Thread-199475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:13:40.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:13:40.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:13:40.646 [DEBUG] [Thread-199475] [transport.py] [_log()] userauth is OK
2025-11-25T00:13:40.646 [DEBUG] [Thread-199475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:13:40.646 [DEBUG] [Thread-199475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:13:40.646 [DEBUG] [Thread-199475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:13:40.646 [DEBUG] [Thread-199475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:13:40.665 [INFO] [Thread-199475] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:13:40.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:13:40.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:13:41.516 [DEBUG] [Thread-199475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:13:41.516 [DEBUG] [Thread-199475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:13:41.565 [DEBUG] [Thread-199475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:13:41.565 [DEBUG] [Thread-199475] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:13:41.573 [DEBUG] [Thread-199475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:13:41.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:13:41.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-11-25T00:13:41.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:13:41.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:13:41.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:13:41.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:13:41.606 [DEBUG] [Thread-199475] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:13:55.524 [DEBUG] [Thread-199477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:14:06.159 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:14:06.162 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:14:10.583 [DEBUG] [Thread-199478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:14:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:14:11.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:14:11.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-11-25T00:14:12.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 13, 40), 13.83, 38.73, 0.0, 33.88, 13.31, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:14:12.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:13:40
2025-11-25T00:14:12.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:14:12.979 [DEBUG] [Thread-199479] [transport.py] [_log()] starting thread (client mode): 0xd317dcf0
2025-11-25T00:14:12.980 [DEBUG] [Thread-199479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:14:12.989 [DEBUG] [Thread-199479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:14:12.989 [INFO] [Thread-199479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] client lang: <none>
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] server lang: <none>
2025-11-25T00:14:12.995 [DEBUG] [Thread-199479] [transport.py] [_log()] kex follows: False
2025-11-25T00:14:12.996 [DEBUG] [Thread-199479] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:14:12.996 [DEBUG] [Thread-199479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:14:12.996 [DEBUG] [Thread-199479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:14:12.997 [DEBUG] [Thread-199479] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:14:12.997 [DEBUG] [Thread-199479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:14:12.997 [DEBUG] [Thread-199479] [transport.py] [_log()] Compression: none
2025-11-25T00:14:12.997 [DEBUG] [Thread-199479] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:14:13.034 [DEBUG] [Thread-199479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:14:13.041 [DEBUG] [Thread-199479] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:14:13.043 [DEBUG] [Thread-199479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:14:13.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:14:13.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:14:13.049 [DEBUG] [Thread-199479] [transport.py] [_log()] userauth is OK
2025-11-25T00:14:13.050 [DEBUG] [Thread-199479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:14:13.050 [DEBUG] [Thread-199479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:14:13.050 [DEBUG] [Thread-199479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:14:13.051 [DEBUG] [Thread-199479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:14:13.088 [INFO] [Thread-199479] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:14:13.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:14:13.297 [DEBUG] [Thread-199481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:14:13.696 [DEBUG] [Thread-199479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:14:13.696 [DEBUG] [Thread-199479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:14:13.696 [DEBUG] [Thread-199479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:14:13.737 [DEBUG] [Thread-199479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:14:13.737 [DEBUG] [Thread-199479] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:14:13.739 [DEBUG] [Thread-199479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:14:13.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:14:13.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:14:13.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:14:13.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:14:13.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:14:13.760 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:14:13.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:14:13.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:14:13.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:14:13.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.926434 -999.00  +13.20  20.67     43   +1.20 1 1 1 1 1     0    0 11.45 -31.79 ZNESW 18.3 20.7 147.8 26.6 13.5 -24.7 13.3 -24.4 13.1 -23.3 13.4 -24.1
2025-11-25T00:14:13.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:14:13.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:14:13.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.926434
2025-11-25T00:14:13.766 [DEBUG] [Thread-199479] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:14:13.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:14:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:14:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:14:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:14:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:14:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:13:40', tmtdew=13.83, humidity=38.73, cloud=0.0, wind=33.88, temperature=13.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:13:40', seeing=0.72, atlas_timestamp='2025-11-24T22:14:03.898', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01425000000000054, 0.013750000000001705, -0.003750000000000142, 0.005499999999999616, 0.02949999999999875, 0.052250000000000796, 0.03149999999999942, -0.029749999999999943, 0.006499999999999062, 0.0009999999999994458, 0.03824999999999967, -0.005000000000000782, 0.08799999999999919, 0.11324999999999896, 0.0045000000000001705, -0.03750000000000142, 0.03125, 0.020500000000000185, 0.03799999999999848, -0.02275000000000027, 0.06599999999999895, 0.08624999999999972, 0.06325000000000003, 0.03074999999999939, -0.012000000000000455, -0.013499999999998735, 0.013749999999999929, 0.037499999999999645, 0.14100000000000001, 0.04800000000000182, 0.1205000000000016, 0.002000000000000668, -0.0002500000000011937], zp_timestamp='2025-11-24T22:09:00')
2025-11-25T00:14:13.857 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:14:13.868 [DEBUG] [Thread-199483] [transport.py] [_log()] starting thread (client mode): 0xd3192980
2025-11-25T00:14:13.868 [DEBUG] [Thread-199483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:14:13.882 [DEBUG] [Thread-199483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:14:13.882 [INFO] [Thread-199483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] client lang: <none>
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] server lang: <none>
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] kex follows: False
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:14:13.890 [DEBUG] [Thread-199483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:14:13.891 [DEBUG] [Thread-199483] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:14:13.891 [DEBUG] [Thread-199483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:14:13.891 [DEBUG] [Thread-199483] [transport.py] [_log()] Compression: none
2025-11-25T00:14:13.891 [DEBUG] [Thread-199483] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:14:13.948 [DEBUG] [Thread-199483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:14:13.948 [DEBUG] [Thread-199483] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:14:13.948 [DEBUG] [Thread-199483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:14:13.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:14:13.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:14:14.006 [DEBUG] [Thread-199483] [transport.py] [_log()] userauth is OK
2025-11-25T00:14:14.006 [DEBUG] [Thread-199483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:14:14.006 [DEBUG] [Thread-199483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:14:14.006 [DEBUG] [Thread-199483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:14:14.006 [DEBUG] [Thread-199483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:14:14.024 [INFO] [Thread-199483] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:14:14.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:14:14.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:14:14.845 [DEBUG] [Thread-199483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:14:14.845 [DEBUG] [Thread-199483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:14:14.894 [DEBUG] [Thread-199483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:14:14.894 [DEBUG] [Thread-199483] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:14:14.903 [DEBUG] [Thread-199483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:14:14.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:14:14.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-11-25T00:14:14.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-11-25T00:14:14.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:14:14.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:14:14.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:14:14.937 [DEBUG] [Thread-199483] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:14:18.732 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:14:25.674 [DEBUG] [Thread-199485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:14:40.827 [DEBUG] [Thread-199486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:14:44.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:14:44.946 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:14:44.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:14:45.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 14, 13), 13.78, 38.91, 0.0, 32.66, 13.39, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:14:45.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:14:13
2025-11-25T00:14:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:14:46.133 [DEBUG] [Thread-199487] [transport.py] [_log()] starting thread (client mode): 0xd073b5e0
2025-11-25T00:14:46.134 [DEBUG] [Thread-199487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:14:46.135 [DEBUG] [Thread-199487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:14:46.135 [INFO] [Thread-199487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:14:46.139 [DEBUG] [Thread-199487] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] client lang: <none>
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] server lang: <none>
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] kex follows: False
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:14:46.140 [DEBUG] [Thread-199487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:14:46.141 [DEBUG] [Thread-199487] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:14:46.141 [DEBUG] [Thread-199487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:14:46.141 [DEBUG] [Thread-199487] [transport.py] [_log()] Compression: none
2025-11-25T00:14:46.141 [DEBUG] [Thread-199487] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:14:46.168 [DEBUG] [Thread-199487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:14:46.172 [DEBUG] [Thread-199487] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:14:46.175 [DEBUG] [Thread-199487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:14:46.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:14:46.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:14:46.179 [DEBUG] [Thread-199487] [transport.py] [_log()] userauth is OK
2025-11-25T00:14:46.180 [DEBUG] [Thread-199487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:14:46.180 [DEBUG] [Thread-199487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:14:46.180 [DEBUG] [Thread-199487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:14:46.180 [DEBUG] [Thread-199487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:14:46.207 [INFO] [Thread-199487] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:14:46.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:14:46.847 [DEBUG] [Thread-199487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:14:46.847 [DEBUG] [Thread-199487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:14:46.848 [DEBUG] [Thread-199487] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:14:46.888 [DEBUG] [Thread-199487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:14:46.888 [DEBUG] [Thread-199487] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:14:46.890 [DEBUG] [Thread-199487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:14:46.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:14:46.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:14:46.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:14:46.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:14:46.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:14:46.909 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:14:46.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:14:46.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:14:46.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:14:46.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.926781 -999.00  +13.20  24.35     43   +1.20 1 1 1 1 1     0    0 11.54 -32.51 ZNESW 25.4 24.4 147.8 32.3 13.5 -24.8 13.3 -24.3 13.1 -23.3 13.4 -24.1
2025-11-25T00:14:46.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:14:46.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:14:46.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.926781
2025-11-25T00:14:46.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:14:46.928 [DEBUG] [Thread-199487] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:14:46.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:14:46.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:14:46.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:14:46.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:14:46.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:14:13', tmtdew=13.78, humidity=38.91, cloud=0.0, wind=32.66, temperature=13.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:14:13', seeing=0.72, atlas_timestamp='2025-11-24T22:14:33.878', atlas_cloud=1, atlas_rain=1, zp_data=[-0.01425000000000054, 0.013750000000001705, -0.003750000000000142, 0.005499999999999616, 0.02949999999999875, 0.052250000000000796, 0.03149999999999942, -0.029749999999999943, 0.006499999999999062, 0.0009999999999994458, 0.03824999999999967, -0.005000000000000782, 0.08799999999999919, 0.11324999999999896, 0.0045000000000001705, -0.03750000000000142, 0.03125, 0.020500000000000185, 0.03799999999999848, -0.02275000000000027, 0.06599999999999895, 0.08624999999999972, 0.06325000000000003, 0.03074999999999939, -0.012000000000000455, -0.013499999999998735, 0.013749999999999929, 0.037499999999999645, 0.14100000000000001, 0.04800000000000182, 0.1205000000000016, 0.002000000000000668, -0.0002500000000011937], zp_timestamp='2025-11-24T22:12:00')
2025-11-25T00:14:47.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:14:55.878 [DEBUG] [Thread-199490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:06.375 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:06.376 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:10.971 [DEBUG] [Thread-199491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:13.611 [DEBUG] [Thread-199492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:26.045 [DEBUG] [Thread-199493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:27.039 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:30.269 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:35.360 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:41.118 [DEBUG] [Thread-199494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:41.814 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:15:56.209 [DEBUG] [Thread-199495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:01.131 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:05.538 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:06.577 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:06.578 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:11.306 [DEBUG] [Thread-199496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:13.906 [DEBUG] [Thread-199497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:24.920 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:26.345 [DEBUG] [Thread-199498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:29.329 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:35.448 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:39.842 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:41.400 [DEBUG] [Thread-199499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:16:56.466 [DEBUG] [Thread-199500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:17:00.863 [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-11-25T00:17:06.792 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:17:06.794 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:17:11.519 [DEBUG] [Thread-199501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:17:14.273 [DEBUG] [Thread-199502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:17:26.588 [DEBUG] [Thread-199503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:17:30.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:17:30.904 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:17:30.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-11-25T00:17:32.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 16, 58), 13.71, 38.81, 0.0, 31.16, 13.36, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:17:32.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:16:58
2025-11-25T00:17:32.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:17:32.477 [DEBUG] [Thread-199504] [transport.py] [_log()] starting thread (client mode): 0xd0739030
2025-11-25T00:17:32.477 [DEBUG] [Thread-199504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:17:32.486 [DEBUG] [Thread-199504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:17:32.486 [INFO] [Thread-199504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:17:32.491 [DEBUG] [Thread-199504] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:17:32.491 [DEBUG] [Thread-199504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] client lang: <none>
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] server lang: <none>
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] kex follows: False
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:17:32.492 [DEBUG] [Thread-199504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:17:32.493 [DEBUG] [Thread-199504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:17:32.493 [DEBUG] [Thread-199504] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:17:32.493 [DEBUG] [Thread-199504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:17:32.493 [DEBUG] [Thread-199504] [transport.py] [_log()] Compression: none
2025-11-25T00:17:32.493 [DEBUG] [Thread-199504] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:17:32.523 [DEBUG] [Thread-199504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:17:32.527 [DEBUG] [Thread-199504] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:17:32.529 [DEBUG] [Thread-199504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:17:32.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:17:32.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:17:32.532 [DEBUG] [Thread-199504] [transport.py] [_log()] userauth is OK
2025-11-25T00:17:32.532 [DEBUG] [Thread-199504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:17:32.533 [DEBUG] [Thread-199504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:17:32.533 [DEBUG] [Thread-199504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:17:32.533 [DEBUG] [Thread-199504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:17:32.563 [INFO] [Thread-199504] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:17:32.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:17:33.220 [DEBUG] [Thread-199504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:17:33.220 [DEBUG] [Thread-199504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:17:33.221 [DEBUG] [Thread-199504] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:17:33.261 [DEBUG] [Thread-199504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:17:33.261 [DEBUG] [Thread-199504] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:17:33.264 [DEBUG] [Thread-199504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:17:33.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:17:33.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:17:33.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:17:33.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:17:33.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:17:33.289 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:17:33.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:17:33.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:17:33.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:17:33.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.928170 -999.00  +13.20  24.01     44   +1.30 1 1 1 1 1     0    0 11.38 -39.08 ZNESW 19.8 24.0 143.0 29.7 13.5 -25.0 13.3 -24.5 13.1 -23.4 13.4 -24.3
2025-11-25T00:17:33.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:17:33.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:17:33.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.928170
2025-11-25T00:17:33.295 [DEBUG] [Thread-199504] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:17:33.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:17:33.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:17:33.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:17:33.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:17:33.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:17:33.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:16:58', tmtdew=13.71, humidity=38.81, cloud=0.0, wind=31.16, temperature=13.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:16:58', seeing=0.9, atlas_timestamp='2025-11-24T22:16:33.888', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.006750000000000256, -0.016750000000000043, -0.005500000000001393, 0.04749999999999943, 0.058750000000001634, -0.012000000000000455, -0.023249999999999105, -0.05450000000000088, -0.007999999999999119, 0.02224999999999966, -0.016000000000000014, 0.06349999999999945, 0.07424999999999926, -0.030000000000001137, -0.031000000000000583, 0.00024999999999941735, 0.031000000000000583, 0.03399999999999892, -0.018250000000001876, 0.03199999999999825, 0.10774999999999935, 0.03225000000000122, 0.005250000000000199, -0.02400000000000091, -0.027499999999999858, -0.005250000000000199, 0.04499999999999993, 0.08399999999999963, 0.07700000000000173, 0.08550000000000146, -0.032999999999999474, -0.011250000000000426], zp_timestamp='2025-11-24T22:15:00')
2025-11-25T00:17:33.389 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:17:33.401 [DEBUG] [Thread-199507] [transport.py] [_log()] starting thread (client mode): 0xd3193c10
2025-11-25T00:17:33.401 [DEBUG] [Thread-199507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:17:33.415 [DEBUG] [Thread-199507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:17:33.415 [INFO] [Thread-199507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] client lang: <none>
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] server lang: <none>
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] kex follows: False
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:17:33.423 [DEBUG] [Thread-199507] [transport.py] [_log()] Compression: none
2025-11-25T00:17:33.424 [DEBUG] [Thread-199507] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:17:33.479 [DEBUG] [Thread-199507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:17:33.480 [DEBUG] [Thread-199507] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:17:33.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:17:33.480 [DEBUG] [Thread-199507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:17:33.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:17:33.536 [DEBUG] [Thread-199507] [transport.py] [_log()] userauth is OK
2025-11-25T00:17:33.536 [DEBUG] [Thread-199507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:17:33.536 [DEBUG] [Thread-199507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:17:33.537 [DEBUG] [Thread-199507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:17:33.537 [DEBUG] [Thread-199507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:17:33.550 [INFO] [Thread-199507] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:17:33.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:17:33.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:17:34.378 [DEBUG] [Thread-199507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:17:34.378 [DEBUG] [Thread-199507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:17:34.427 [DEBUG] [Thread-199507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:17:34.427 [DEBUG] [Thread-199507] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:17:34.436 [DEBUG] [Thread-199507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:17:34.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:17:34.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-11-25T00:17:34.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:17:34.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:17:34.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:17:34.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:17:34.475 [DEBUG] [Thread-199507] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:17:41.663 [DEBUG] [Thread-199509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:17:49.213 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:17:53.295 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:17:56.816 [DEBUG] [Thread-199510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:18:04.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:18:04.492 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:18:04.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-11-25T00:18:05.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 17, 31), 13.63, 39.03, 0.0, 32.36, 13.34, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:18:05.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:17:31
2025-11-25T00:18:05.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:18:05.669 [DEBUG] [Thread-199511] [transport.py] [_log()] starting thread (client mode): 0xd3153be0
2025-11-25T00:18:05.670 [DEBUG] [Thread-199511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:18:05.686 [DEBUG] [Thread-199511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:18:05.686 [INFO] [Thread-199511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] client lang: <none>
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] server lang: <none>
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] kex follows: False
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:18:05.694 [DEBUG] [Thread-199511] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:18:05.695 [DEBUG] [Thread-199511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:18:05.695 [DEBUG] [Thread-199511] [transport.py] [_log()] Compression: none
2025-11-25T00:18:05.695 [DEBUG] [Thread-199511] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:18:05.711 [DEBUG] [Thread-199511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:18:05.714 [DEBUG] [Thread-199511] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:18:05.715 [DEBUG] [Thread-199511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:18:05.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:18:05.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:18:05.717 [DEBUG] [Thread-199511] [transport.py] [_log()] userauth is OK
2025-11-25T00:18:05.717 [DEBUG] [Thread-199511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:18:05.717 [DEBUG] [Thread-199511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:18:05.717 [DEBUG] [Thread-199511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:18:05.717 [DEBUG] [Thread-199511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:18:05.728 [INFO] [Thread-199511] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:18:05.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:18:06.360 [DEBUG] [Thread-199511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:18:06.360 [DEBUG] [Thread-199511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:18:06.361 [DEBUG] [Thread-199511] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:18:06.402 [DEBUG] [Thread-199511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:18:06.402 [DEBUG] [Thread-199511] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:18:06.404 [DEBUG] [Thread-199511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:18:06.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:18:06.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:18:06.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:18:06.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:18:06.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:18:06.425 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:18:06.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:18:06.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:18:06.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:18:06.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.928864 -999.00  +13.30  23.26     44   +1.30 1 1 1 1 1     0    0 11.21 -37.43 ZNESW 23.4 23.3 157.0 28.2 13.5 -24.9 13.3 -24.4 13.2 -23.3 13.4 -24.3
2025-11-25T00:18:06.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:18:06.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:18:06.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.928864
2025-11-25T00:18:06.431 [DEBUG] [Thread-199511] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:18:06.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:18:06.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:18:06.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:18:06.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:18:06.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:18:06.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:17:31', tmtdew=13.63, humidity=39.03, cloud=0.0, wind=32.36, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:18:04', seeing=0.68, atlas_timestamp='2025-11-24T22:17:33.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.006750000000000256, -0.016750000000000043, -0.005500000000001393, 0.04749999999999943, 0.058750000000001634, -0.012000000000000455, -0.023249999999999105, -0.05450000000000088, -0.007999999999999119, 0.02224999999999966, -0.016000000000000014, 0.06349999999999945, 0.07424999999999926, -0.030000000000001137, -0.031000000000000583, 0.00024999999999941735, 0.031000000000000583, 0.03399999999999892, -0.018250000000001876, 0.03199999999999825, 0.10774999999999935, 0.03225000000000122, 0.005250000000000199, -0.02400000000000091, -0.027499999999999858, -0.005250000000000199, 0.04499999999999993, 0.08399999999999963, 0.07700000000000173, 0.08550000000000146, -0.032999999999999474, -0.011250000000000426], zp_timestamp='2025-11-24T22:15:00')
2025-11-25T00:18:06.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:18:06.523 [DEBUG] [Thread-199514] [transport.py] [_log()] starting thread (client mode): 0xd3152440
2025-11-25T00:18:06.523 [DEBUG] [Thread-199514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:18:06.540 [DEBUG] [Thread-199514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:18:06.540 [INFO] [Thread-199514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] client lang: <none>
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] server lang: <none>
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] kex follows: False
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] Compression: none
2025-11-25T00:18:06.548 [DEBUG] [Thread-199514] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:18:06.603 [DEBUG] [Thread-199514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:18:06.603 [DEBUG] [Thread-199514] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:18:06.604 [DEBUG] [Thread-199514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:18:06.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:18:06.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:18:06.660 [DEBUG] [Thread-199514] [transport.py] [_log()] userauth is OK
2025-11-25T00:18:06.660 [DEBUG] [Thread-199514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:18:06.660 [DEBUG] [Thread-199514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:18:06.661 [DEBUG] [Thread-199514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:18:06.661 [DEBUG] [Thread-199514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:18:06.677 [INFO] [Thread-199514] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:18:06.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:18:06.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:18:07.009 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:18:07.010 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:18:07.513 [DEBUG] [Thread-199514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:18:07.513 [DEBUG] [Thread-199514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:18:07.561 [DEBUG] [Thread-199514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:18:07.561 [DEBUG] [Thread-199514] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:18:07.570 [DEBUG] [Thread-199514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:18:07.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:18:07.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:18:07.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-11-25T00:18:07.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:18:07.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:18:07.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:18:07.604 [DEBUG] [Thread-199514] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:18:11.873 [DEBUG] [Thread-199516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:18:14.575 [DEBUG] [Thread-199517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:18:27.035 [DEBUG] [Thread-199518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:18:37.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:18:37.627 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:18:37.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-11-25T00:18:38.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 18, 4), 13.66, 38.94, 0.0, 31.46, 13.34, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:18:38.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:18:04
2025-11-25T00:18:38.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:18:39.023 [DEBUG] [Thread-199519] [transport.py] [_log()] starting thread (client mode): 0xd07cdbd0
2025-11-25T00:18:39.024 [DEBUG] [Thread-199519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:18:39.037 [DEBUG] [Thread-199519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:18:39.037 [INFO] [Thread-199519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:18:39.041 [DEBUG] [Thread-199519] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:18:39.041 [DEBUG] [Thread-199519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] client lang: <none>
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] server lang: <none>
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] kex follows: False
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:18:39.042 [DEBUG] [Thread-199519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:18:39.043 [DEBUG] [Thread-199519] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:18:39.043 [DEBUG] [Thread-199519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:18:39.043 [DEBUG] [Thread-199519] [transport.py] [_log()] Compression: none
2025-11-25T00:18:39.043 [DEBUG] [Thread-199519] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:18:39.074 [DEBUG] [Thread-199519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:18:39.077 [DEBUG] [Thread-199519] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:18:39.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:18:39.080 [DEBUG] [Thread-199519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:18:39.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:18:39.081 [DEBUG] [Thread-199519] [transport.py] [_log()] userauth is OK
2025-11-25T00:18:39.081 [DEBUG] [Thread-199519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:18:39.082 [DEBUG] [Thread-199519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:18:39.082 [DEBUG] [Thread-199519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:18:39.082 [DEBUG] [Thread-199519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:18:39.099 [INFO] [Thread-199519] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:18:39.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:18:39.752 [DEBUG] [Thread-199519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:18:39.752 [DEBUG] [Thread-199519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:18:39.753 [DEBUG] [Thread-199519] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:18:39.794 [DEBUG] [Thread-199519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:18:39.794 [DEBUG] [Thread-199519] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:18:39.797 [DEBUG] [Thread-199519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:18:39.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:18:39.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:18:39.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:18:39.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:18:39.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:18:39.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:18:39.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:18:39.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:18:39.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:18:39.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.929211 -999.00  +13.20  20.04     44   +1.20 1 1 1 1 1     0    0 11.13 -40.28 ZNESW 22.6 20.0 150.9 28.3 13.5 -25.0 13.3 -24.6 13.1 -23.2 13.4 -24.2
2025-11-25T00:18:39.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:18:39.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:18:39.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.929211
2025-11-25T00:18:39.827 [DEBUG] [Thread-199519] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:18:39.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:18:39.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:18:39.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:18:39.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:18:39.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:18:39.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:18:04', tmtdew=13.66, humidity=38.94, cloud=0.0, wind=31.46, temperature=13.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:18:37', seeing=0.87, atlas_timestamp='2025-11-24T22:18:03.830', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.006750000000000256, -0.016750000000000043, -0.005500000000001393, 0.04749999999999943, 0.058750000000001634, -0.012000000000000455, -0.023249999999999105, -0.05450000000000088, -0.007999999999999119, 0.02224999999999966, -0.016000000000000014, 0.06349999999999945, 0.07424999999999926, -0.030000000000001137, -0.031000000000000583, 0.00024999999999941735, 0.031000000000000583, 0.03399999999999892, -0.018250000000001876, 0.03199999999999825, 0.10774999999999935, 0.03225000000000122, 0.005250000000000199, -0.02400000000000091, -0.027499999999999858, -0.005250000000000199, 0.04499999999999993, 0.08399999999999963, 0.07700000000000173, 0.08550000000000146, -0.032999999999999474, -0.011250000000000426], zp_timestamp='2025-11-24T22:15:00')
2025-11-25T00:18:39.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:18:39.934 [DEBUG] [Thread-199522] [transport.py] [_log()] starting thread (client mode): 0xd3192500
2025-11-25T00:18:39.934 [DEBUG] [Thread-199522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:18:39.949 [DEBUG] [Thread-199522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:18:39.949 [INFO] [Thread-199522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:18:39.956 [DEBUG] [Thread-199522] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:18:39.956 [DEBUG] [Thread-199522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:18:39.956 [DEBUG] [Thread-199522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:18:39.956 [DEBUG] [Thread-199522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:18:39.956 [DEBUG] [Thread-199522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:18:39.956 [DEBUG] [Thread-199522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:18:39.956 [DEBUG] [Thread-199522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] client lang: <none>
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] server lang: <none>
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] kex follows: False
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] Compression: none
2025-11-25T00:18:39.957 [DEBUG] [Thread-199522] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:18:40.011 [DEBUG] [Thread-199522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:18:40.011 [DEBUG] [Thread-199522] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:18:40.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:18:40.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:18:40.012 [DEBUG] [Thread-199522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:18:40.068 [DEBUG] [Thread-199522] [transport.py] [_log()] userauth is OK
2025-11-25T00:18:40.068 [DEBUG] [Thread-199522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:18:40.068 [DEBUG] [Thread-199522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:18:40.069 [DEBUG] [Thread-199522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:18:40.069 [DEBUG] [Thread-199522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:18:40.086 [INFO] [Thread-199522] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:18:40.086 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:18:40.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:18:40.895 [DEBUG] [Thread-199522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:18:40.895 [DEBUG] [Thread-199522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:18:40.943 [DEBUG] [Thread-199522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:18:40.943 [DEBUG] [Thread-199522] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:18:40.951 [DEBUG] [Thread-199522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:18:40.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:18:40.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-11-25T00:18:40.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-11-25T00:18:40.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:18:40.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:18:40.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:18:40.984 [DEBUG] [Thread-199522] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:18:42.081 [DEBUG] [Thread-199524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:18:57.213 [DEBUG] [Thread-199525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:19:07.224 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:19:07.227 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:19:11.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:19:11.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:19: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-11-25T00:19:12.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 18, 36), 13.64, 38.86, 0.0, 31.78, 13.38, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:19:12.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:18:36
2025-11-25T00:19:12.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:19:12.308 [DEBUG] [Thread-199526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:19:12.441 [DEBUG] [Thread-199527] [transport.py] [_log()] starting thread (client mode): 0xd07cd600
2025-11-25T00:19:12.442 [DEBUG] [Thread-199527] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:19:12.456 [DEBUG] [Thread-199527] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:19:12.457 [INFO] [Thread-199527] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] client lang: <none>
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] server lang: <none>
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] kex follows: False
2025-11-25T00:19:12.460 [DEBUG] [Thread-199527] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:19:12.461 [DEBUG] [Thread-199527] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:19:12.461 [DEBUG] [Thread-199527] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:19:12.461 [DEBUG] [Thread-199527] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:19:12.461 [DEBUG] [Thread-199527] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:19:12.461 [DEBUG] [Thread-199527] [transport.py] [_log()] Compression: none
2025-11-25T00:19:12.461 [DEBUG] [Thread-199527] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:19:12.491 [DEBUG] [Thread-199527] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:19:12.495 [DEBUG] [Thread-199527] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:19:12.496 [DEBUG] [Thread-199527] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:19:12.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:19:12.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:19:12.499 [DEBUG] [Thread-199527] [transport.py] [_log()] userauth is OK
2025-11-25T00:19:12.499 [DEBUG] [Thread-199527] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:19:12.499 [DEBUG] [Thread-199527] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:19:12.499 [DEBUG] [Thread-199527] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:19:12.499 [DEBUG] [Thread-199527] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:19:12.520 [INFO] [Thread-199527] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:19:12.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:19:13.141 [DEBUG] [Thread-199527] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:19:13.142 [DEBUG] [Thread-199527] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:19:13.142 [DEBUG] [Thread-199527] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:19:13.182 [DEBUG] [Thread-199527] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:19:13.182 [DEBUG] [Thread-199527] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:19:13.185 [DEBUG] [Thread-199527] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:19:13.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:19:13.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:19:13.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:19:13.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:19:13.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:19:13.204 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:19:13.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:19:13.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:19:13.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:19:13.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.929559 -999.00  +13.20  16.70     44   +1.30 1 1 1 1 1     0    0 11.26 -39.58 ZNESW 17.3 16.7 149.4 32.4 13.5 -25.1 13.3 -24.6 13.1 -23.3 13.4 -24.2
2025-11-25T00:19:13.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:19:13.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:19:13.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.929559
2025-11-25T00:19:13.212 [DEBUG] [Thread-199527] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:19:13.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:19:13.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:19:13.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:19:13.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:19:13.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:19:13.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:18:36', tmtdew=13.64, humidity=38.86, cloud=0.0, wind=31.78, temperature=13.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:19:10', seeing=0.78, atlas_timestamp='2025-11-24T22:18:33.898', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.006750000000000256, -0.016750000000000043, -0.005500000000001393, 0.04749999999999943, 0.058750000000001634, -0.012000000000000455, -0.023249999999999105, -0.05450000000000088, -0.007999999999999119, 0.02224999999999966, -0.016000000000000014, 0.06349999999999945, 0.07424999999999926, -0.030000000000001137, -0.031000000000000583, 0.00024999999999941735, 0.031000000000000583, 0.03399999999999892, -0.018250000000001876, 0.03199999999999825, 0.10774999999999935, 0.03225000000000122, 0.005250000000000199, -0.02400000000000091, -0.027499999999999858, -0.005250000000000199, 0.04499999999999993, 0.08399999999999963, 0.07700000000000173, 0.08550000000000146, -0.032999999999999474, -0.011250000000000426], zp_timestamp='2025-11-24T22:15:00')
2025-11-25T00:19:13.300 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:19:13.310 [DEBUG] [Thread-199530] [transport.py] [_log()] starting thread (client mode): 0xd0711e40
2025-11-25T00:19:13.311 [DEBUG] [Thread-199530] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:19:13.326 [DEBUG] [Thread-199530] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:19:13.326 [INFO] [Thread-199530] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:19:13.333 [DEBUG] [Thread-199530] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:19:13.333 [DEBUG] [Thread-199530] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:19:13.333 [DEBUG] [Thread-199530] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:19:13.333 [DEBUG] [Thread-199530] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] client lang: <none>
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] server lang: <none>
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] kex follows: False
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] Compression: none
2025-11-25T00:19:13.334 [DEBUG] [Thread-199530] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:19:13.394 [DEBUG] [Thread-199530] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:19:13.394 [DEBUG] [Thread-199530] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:19:13.395 [DEBUG] [Thread-199530] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:19:13.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:19:13.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:19:13.453 [DEBUG] [Thread-199530] [transport.py] [_log()] userauth is OK
2025-11-25T00:19:13.453 [DEBUG] [Thread-199530] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:19:13.454 [DEBUG] [Thread-199530] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:19:13.454 [DEBUG] [Thread-199530] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:19:13.454 [DEBUG] [Thread-199530] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:19:13.474 [INFO] [Thread-199530] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:19:13.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:19:13.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:19:14.324 [DEBUG] [Thread-199530] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:19:14.324 [DEBUG] [Thread-199530] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:19:14.372 [DEBUG] [Thread-199530] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:19:14.372 [DEBUG] [Thread-199530] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:19:14.380 [DEBUG] [Thread-199530] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:19:14.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:19:14.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-11-25T00:19:14.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-11-25T00:19:14.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:19:14.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:19:14.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:19:14.426 [DEBUG] [Thread-199530] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:19:14.812 [DEBUG] [Thread-199532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:19:27.336 [DEBUG] [Thread-199533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:19:42.432 [DEBUG] [Thread-199534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:19:44.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:19:44.428 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:19:44.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-11-25T00:19:45.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 19, 10), 13.61, 38.94, 0.0, 30.67, 13.31, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:19:45.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:19:10
2025-11-25T00:19:45.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:19:45.721 [DEBUG] [Thread-199535] [transport.py] [_log()] starting thread (client mode): 0xd0738ac0
2025-11-25T00:19:45.722 [DEBUG] [Thread-199535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:19:45.736 [DEBUG] [Thread-199535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:19:45.736 [INFO] [Thread-199535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] client lang: <none>
2025-11-25T00:19:45.740 [DEBUG] [Thread-199535] [transport.py] [_log()] server lang: <none>
2025-11-25T00:19:45.741 [DEBUG] [Thread-199535] [transport.py] [_log()] kex follows: False
2025-11-25T00:19:45.741 [DEBUG] [Thread-199535] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:19:45.741 [DEBUG] [Thread-199535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:19:45.741 [DEBUG] [Thread-199535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:19:45.741 [DEBUG] [Thread-199535] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:19:45.741 [DEBUG] [Thread-199535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:19:45.741 [DEBUG] [Thread-199535] [transport.py] [_log()] Compression: none
2025-11-25T00:19:45.741 [DEBUG] [Thread-199535] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:19:45.772 [DEBUG] [Thread-199535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:19:45.775 [DEBUG] [Thread-199535] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:19:45.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:19:45.779 [DEBUG] [Thread-199535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:19:45.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:19:45.780 [DEBUG] [Thread-199535] [transport.py] [_log()] userauth is OK
2025-11-25T00:19:45.780 [DEBUG] [Thread-199535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:19:45.781 [DEBUG] [Thread-199535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:19:45.781 [DEBUG] [Thread-199535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:19:45.781 [DEBUG] [Thread-199535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:19:45.801 [INFO] [Thread-199535] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:19:45.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:19:46.435 [DEBUG] [Thread-199535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:19:46.435 [DEBUG] [Thread-199535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:19:46.437 [DEBUG] [Thread-199535] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:19:46.476 [DEBUG] [Thread-199535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:19:46.476 [DEBUG] [Thread-199535] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:19:46.480 [DEBUG] [Thread-199535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:19:46.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:19:46.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:19:46.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:19:46.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:19:46.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:19:46.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:19:46.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:19:46.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:19:46.505 [DEBUG] [Thread-199535] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:19:46.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:19:46.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.929906 -999.00  +13.20  22.23     44   +1.30 1 1 1 1 1     0    0 11.08 -43.02 ZNESW 23.8 22.2 149.0 29.3 13.5 -25.0 13.4 -24.6 13.1 -23.5 13.4 -24.3
2025-11-25T00:19:46.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:19:46.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:19:46.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.929906
2025-11-25T00:19:46.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:19:46.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:19:46.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:19:46.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:19:46.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:19:46.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:19:10', tmtdew=13.61, humidity=38.94, cloud=0.0, wind=30.67, temperature=13.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:19:43', seeing=0.83, atlas_timestamp='2025-11-24T22:19:03.878', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.006750000000000256, -0.016750000000000043, -0.005500000000001393, 0.04749999999999943, 0.058750000000001634, -0.012000000000000455, -0.023249999999999105, -0.05450000000000088, -0.007999999999999119, 0.02224999999999966, -0.016000000000000014, 0.06349999999999945, 0.07424999999999926, -0.030000000000001137, -0.031000000000000583, 0.00024999999999941735, 0.031000000000000583, 0.03399999999999892, -0.018250000000001876, 0.03199999999999825, 0.10774999999999935, 0.03225000000000122, 0.005250000000000199, -0.02400000000000091, -0.027499999999999858, -0.005250000000000199, 0.04499999999999993, 0.08399999999999963, 0.07700000000000173, 0.08550000000000146, -0.032999999999999474, -0.011250000000000426], zp_timestamp='2025-11-24T22:15:00')
2025-11-25T00:19:46.601 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:19:46.612 [DEBUG] [Thread-199538] [transport.py] [_log()] starting thread (client mode): 0xd317f010
2025-11-25T00:19:46.613 [DEBUG] [Thread-199538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:19:46.626 [DEBUG] [Thread-199538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:19:46.626 [INFO] [Thread-199538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] client lang: <none>
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] server lang: <none>
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] kex follows: False
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] Compression: none
2025-11-25T00:19:46.634 [DEBUG] [Thread-199538] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:19:46.692 [DEBUG] [Thread-199538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:19:46.692 [DEBUG] [Thread-199538] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:19:46.693 [DEBUG] [Thread-199538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:19:46.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:19:46.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:19:46.752 [DEBUG] [Thread-199538] [transport.py] [_log()] userauth is OK
2025-11-25T00:19:46.753 [DEBUG] [Thread-199538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:19:46.753 [DEBUG] [Thread-199538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:19:46.753 [DEBUG] [Thread-199538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:19:46.753 [DEBUG] [Thread-199538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:19:46.772 [INFO] [Thread-199538] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:19:46.772 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:19:46.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:19:47.595 [DEBUG] [Thread-199538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:19:47.595 [DEBUG] [Thread-199538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:19:47.643 [DEBUG] [Thread-199538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:19:47.643 [DEBUG] [Thread-199538] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:19:47.651 [DEBUG] [Thread-199538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:19:47.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:19:47.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-11-25T00:19:47.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') -> 00000000
2025-11-25T00:19:47.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:19:47.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:19:47.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:19:47.683 [DEBUG] [Thread-199538] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:19:57.473 [DEBUG] [Thread-199540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:20:07.432 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:20:07.433 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:20:12.560 [DEBUG] [Thread-199541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:20:15.188 [DEBUG] [Thread-199542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:20:17.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:20:17.704 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:20:17.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-11-25T00:20:18.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 19, 43), 13.59, 39.01, 0.0, 32.98, 13.29, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:20:18.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:19:43
2025-11-25T00:20:18.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:20:19.026 [DEBUG] [Thread-199543] [transport.py] [_log()] starting thread (client mode): 0xd3153430
2025-11-25T00:20:19.027 [DEBUG] [Thread-199543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:20:19.040 [DEBUG] [Thread-199543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:20:19.041 [INFO] [Thread-199543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:20:19.046 [DEBUG] [Thread-199543] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] client lang: <none>
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] server lang: <none>
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] kex follows: False
2025-11-25T00:20:19.047 [DEBUG] [Thread-199543] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:20:19.048 [DEBUG] [Thread-199543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:20:19.048 [DEBUG] [Thread-199543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:20:19.048 [DEBUG] [Thread-199543] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:20:19.048 [DEBUG] [Thread-199543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:20:19.048 [DEBUG] [Thread-199543] [transport.py] [_log()] Compression: none
2025-11-25T00:20:19.048 [DEBUG] [Thread-199543] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:20:19.078 [DEBUG] [Thread-199543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:20:19.081 [DEBUG] [Thread-199543] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:20:19.082 [DEBUG] [Thread-199543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:20:19.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:20:19.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:20:19.086 [DEBUG] [Thread-199543] [transport.py] [_log()] userauth is OK
2025-11-25T00:20:19.086 [DEBUG] [Thread-199543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:20:19.087 [DEBUG] [Thread-199543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:20:19.087 [DEBUG] [Thread-199543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:20:19.087 [DEBUG] [Thread-199543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:20:19.105 [INFO] [Thread-199543] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:20:19.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:20:19.736 [DEBUG] [Thread-199543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:20:19.736 [DEBUG] [Thread-199543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:20:19.737 [DEBUG] [Thread-199543] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:20:19.776 [DEBUG] [Thread-199543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:20:19.777 [DEBUG] [Thread-199543] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:20:19.780 [DEBUG] [Thread-199543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:20:19.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:20:19.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:20:19.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:20:19.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:20:19.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:20:19.809 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:20:19.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:20:19.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:20:19.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:20:19.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.930253 -999.00  +13.20  18.40     44   +1.30 1 1 1 1 1     0    0 10.96 -45.35 ZNESW 21.2 18.4 154.0 31.3 13.5 -25.0 13.3 -24.4 13.1 -23.5 13.4 -24.3
2025-11-25T00:20:19.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:20:19.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:20:19.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.930253
2025-11-25T00:20:19.817 [DEBUG] [Thread-199543] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:20:19.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:20:19.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:20:19.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:20:19.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:20:19.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:20:19.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:19:43', tmtdew=13.59, humidity=39.01, cloud=0.0, wind=32.98, temperature=13.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:20:16', seeing=0.87, atlas_timestamp='2025-11-24T22:19:33.859', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.006750000000000256, -0.016750000000000043, -0.005500000000001393, 0.04749999999999943, 0.058750000000001634, -0.012000000000000455, -0.023249999999999105, -0.05450000000000088, -0.007999999999999119, 0.02224999999999966, -0.016000000000000014, 0.06349999999999945, 0.07424999999999926, -0.030000000000001137, -0.031000000000000583, 0.00024999999999941735, 0.031000000000000583, 0.03399999999999892, -0.018250000000001876, 0.03199999999999825, 0.10774999999999935, 0.03225000000000122, 0.005250000000000199, -0.02400000000000091, -0.027499999999999858, -0.005250000000000199, 0.04499999999999993, 0.08399999999999963, 0.07700000000000173, 0.08550000000000146, -0.032999999999999474, -0.011250000000000426], zp_timestamp='2025-11-24T22:15:00')
2025-11-25T00:20:19.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:20:19.936 [DEBUG] [Thread-199546] [transport.py] [_log()] starting thread (client mode): 0xd073b4c0
2025-11-25T00:20:19.936 [DEBUG] [Thread-199546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:20:19.951 [DEBUG] [Thread-199546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:20:19.951 [INFO] [Thread-199546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:20:19.960 [DEBUG] [Thread-199546] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:20:19.960 [DEBUG] [Thread-199546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:20:19.960 [DEBUG] [Thread-199546] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:20:19.960 [DEBUG] [Thread-199546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:20:19.960 [DEBUG] [Thread-199546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:20:19.960 [DEBUG] [Thread-199546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:20:19.960 [DEBUG] [Thread-199546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:20:19.960 [DEBUG] [Thread-199546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:20:19.961 [DEBUG] [Thread-199546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:20:19.961 [DEBUG] [Thread-199546] [transport.py] [_log()] client lang: <none>
2025-11-25T00:20:19.961 [DEBUG] [Thread-199546] [transport.py] [_log()] server lang: <none>
2025-11-25T00:20:19.961 [DEBUG] [Thread-199546] [transport.py] [_log()] kex follows: False
2025-11-25T00:20:19.961 [DEBUG] [Thread-199546] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:20:19.962 [DEBUG] [Thread-199546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:20:19.962 [DEBUG] [Thread-199546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:20:19.962 [DEBUG] [Thread-199546] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:20:19.962 [DEBUG] [Thread-199546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:20:19.962 [DEBUG] [Thread-199546] [transport.py] [_log()] Compression: none
2025-11-25T00:20:19.962 [DEBUG] [Thread-199546] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:20:20.017 [DEBUG] [Thread-199546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:20:20.018 [DEBUG] [Thread-199546] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:20:20.018 [DEBUG] [Thread-199546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:20:20.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:20:20.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:20:20.072 [DEBUG] [Thread-199546] [transport.py] [_log()] userauth is OK
2025-11-25T00:20:20.073 [DEBUG] [Thread-199546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:20:20.073 [DEBUG] [Thread-199546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:20:20.073 [DEBUG] [Thread-199546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:20:20.073 [DEBUG] [Thread-199546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:20:20.087 [INFO] [Thread-199546] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:20:20.087 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:20:20.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:20:20.899 [DEBUG] [Thread-199546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:20:20.899 [DEBUG] [Thread-199546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:20:20.947 [DEBUG] [Thread-199546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:20:20.947 [DEBUG] [Thread-199546] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:20:20.956 [DEBUG] [Thread-199546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:20:20.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:20:20.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:20:20.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-11-25T00:20:20.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:20:20.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:20:20.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:20:20.990 [DEBUG] [Thread-199546] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:20:27.606 [DEBUG] [Thread-199548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:20:42.692 [DEBUG] [Thread-199549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:20:51.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:20:51.009 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:20:51.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-11-25T00:20:52.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 20, 16), 13.57, 39.08, 0.0, 29.85, 13.31, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:20:52.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:20:16
2025-11-25T00:20:52.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:20:52.383 [DEBUG] [Thread-199550] [transport.py] [_log()] starting thread (client mode): 0xd0739450
2025-11-25T00:20:52.384 [DEBUG] [Thread-199550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:20:52.384 [DEBUG] [Thread-199550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:20:52.384 [INFO] [Thread-199550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] client lang: <none>
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] server lang: <none>
2025-11-25T00:20:52.389 [DEBUG] [Thread-199550] [transport.py] [_log()] kex follows: False
2025-11-25T00:20:52.390 [DEBUG] [Thread-199550] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:20:52.390 [DEBUG] [Thread-199550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:20:52.390 [DEBUG] [Thread-199550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:20:52.390 [DEBUG] [Thread-199550] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:20:52.391 [DEBUG] [Thread-199550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:20:52.391 [DEBUG] [Thread-199550] [transport.py] [_log()] Compression: none
2025-11-25T00:20:52.391 [DEBUG] [Thread-199550] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:20:52.427 [DEBUG] [Thread-199550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:20:52.434 [DEBUG] [Thread-199550] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:20:52.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:20:52.438 [DEBUG] [Thread-199550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:20:52.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:20:52.441 [DEBUG] [Thread-199550] [transport.py] [_log()] userauth is OK
2025-11-25T00:20:52.441 [DEBUG] [Thread-199550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:20:52.442 [DEBUG] [Thread-199550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:20:52.442 [DEBUG] [Thread-199550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:20:52.442 [DEBUG] [Thread-199550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:20:52.470 [INFO] [Thread-199550] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:20:52.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:20:53.111 [DEBUG] [Thread-199550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:20:53.112 [DEBUG] [Thread-199550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:20:53.113 [DEBUG] [Thread-199550] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:20:53.152 [DEBUG] [Thread-199550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:20:53.153 [DEBUG] [Thread-199550] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:20:53.156 [DEBUG] [Thread-199550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:20:53.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:20:53.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:20:53.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:20:53.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:20:53.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:20:53.183 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:20:53.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:20:53.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:20:53.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:20:53.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.930600 -999.00  +13.20  20.92     44   +1.30 1 1 1 1 1     0    0 10.82 -45.87 ZNESW 22.9 20.9 148.8 30.6 13.4 -25.1 13.3 -24.5 13.1 -23.5 13.4 -24.3
2025-11-25T00:20:53.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:20:53.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:20:53.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.930600
2025-11-25T00:20:53.191 [DEBUG] [Thread-199550] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:20:53.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:20:53.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:20:53.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:20:53.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:20:53.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:20:53.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:20:16', tmtdew=13.57, humidity=39.08, cloud=0.0, wind=29.85, temperature=13.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:20:49', seeing=0.87, atlas_timestamp='2025-11-24T22:20:03.840', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:18:00')
2025-11-25T00:20:53.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:20:53.311 [DEBUG] [Thread-199553] [transport.py] [_log()] starting thread (client mode): 0xc9b818d0
2025-11-25T00:20:53.311 [DEBUG] [Thread-199553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:20:53.335 [DEBUG] [Thread-199553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:20:53.335 [INFO] [Thread-199553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:20:53.353 [DEBUG] [Thread-199553] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:20:53.353 [DEBUG] [Thread-199553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] client lang: <none>
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] server lang: <none>
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] kex follows: False
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:20:53.354 [DEBUG] [Thread-199553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:20:53.355 [DEBUG] [Thread-199553] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:20:53.355 [DEBUG] [Thread-199553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:20:53.355 [DEBUG] [Thread-199553] [transport.py] [_log()] Compression: none
2025-11-25T00:20:53.355 [DEBUG] [Thread-199553] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:20:53.400 [DEBUG] [Thread-199553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:20:53.400 [DEBUG] [Thread-199553] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:20:53.401 [DEBUG] [Thread-199553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:20:53.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:20:53.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:20:53.457 [DEBUG] [Thread-199553] [transport.py] [_log()] userauth is OK
2025-11-25T00:20:53.457 [DEBUG] [Thread-199553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:20:53.457 [DEBUG] [Thread-199553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:20:53.457 [DEBUG] [Thread-199553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:20:53.457 [DEBUG] [Thread-199553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:20:53.477 [INFO] [Thread-199553] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:20:53.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:20:53.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:20:54.292 [DEBUG] [Thread-199553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:20:54.293 [DEBUG] [Thread-199553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:20:54.340 [DEBUG] [Thread-199553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:20:54.341 [DEBUG] [Thread-199553] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:20:54.350 [DEBUG] [Thread-199553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:20:54.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:20:54.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-11-25T00:20:54.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-11-25T00:20:54.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:20:54.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:20:54.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:20:54.389 [DEBUG] [Thread-199553] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:20:57.749 [DEBUG] [Thread-199555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:21:07.647 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:21:07.649 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:21:12.878 [DEBUG] [Thread-199556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:21:15.454 [DEBUG] [Thread-199557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:21:24.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:21:24.438 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:21:24.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-11-25T00:21:25.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 20, 49), 13.48, 39.16, 0.0, 30.05, 13.23, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:21:25.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:20:49
2025-11-25T00:21:25.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:21:25.696 [DEBUG] [Thread-199558] [transport.py] [_log()] starting thread (client mode): 0xc9b81f30
2025-11-25T00:21:25.697 [DEBUG] [Thread-199558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:21:25.703 [DEBUG] [Thread-199558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:21:25.704 [INFO] [Thread-199558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:21:25.708 [DEBUG] [Thread-199558] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] client lang: <none>
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] server lang: <none>
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] kex follows: False
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:21:25.709 [DEBUG] [Thread-199558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:21:25.710 [DEBUG] [Thread-199558] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:21:25.710 [DEBUG] [Thread-199558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:21:25.710 [DEBUG] [Thread-199558] [transport.py] [_log()] Compression: none
2025-11-25T00:21:25.710 [DEBUG] [Thread-199558] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:21:25.742 [DEBUG] [Thread-199558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:21:25.746 [DEBUG] [Thread-199558] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:21:25.748 [DEBUG] [Thread-199558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:21:25.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:21:25.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:21:25.751 [DEBUG] [Thread-199558] [transport.py] [_log()] userauth is OK
2025-11-25T00:21:25.751 [DEBUG] [Thread-199558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:21:25.752 [DEBUG] [Thread-199558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:21:25.752 [DEBUG] [Thread-199558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:21:25.752 [DEBUG] [Thread-199558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:21:25.771 [INFO] [Thread-199558] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:21:25.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:21:26.391 [DEBUG] [Thread-199558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:21:26.391 [DEBUG] [Thread-199558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:21:26.392 [DEBUG] [Thread-199558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:21:26.432 [DEBUG] [Thread-199558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:21:26.432 [DEBUG] [Thread-199558] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:21:26.435 [DEBUG] [Thread-199558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:21:26.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:21:26.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:21:26.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:21:26.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:21:26.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:21:26.458 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:21:26.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:21:26.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:21:26.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:21:26.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.931294 -999.00  +13.20  19.90     44   +1.30 1 1 1 1 1     0    0 11.14 -42.46 ZNESW 18.3 19.9 155.2 30.5 13.5 -25.1 13.3 -24.6 13.1 -23.5 13.4 -24.3
2025-11-25T00:21:26.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:21:26.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:21:26.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.931294
2025-11-25T00:21:26.465 [DEBUG] [Thread-199558] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:21:26.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:21:26.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:21:26.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:21:26.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:21:26.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:21:26.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:20:49', tmtdew=13.48, humidity=39.16, cloud=0.0, wind=30.05, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:21:24', seeing=0.92, atlas_timestamp='2025-11-24T22:21:03.802', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:18:00')
2025-11-25T00:21:26.560 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:21:26.572 [DEBUG] [Thread-199561] [transport.py] [_log()] starting thread (client mode): 0xd07117b0
2025-11-25T00:21:26.573 [DEBUG] [Thread-199561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:21:26.586 [DEBUG] [Thread-199561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:21:26.586 [INFO] [Thread-199561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] client lang: <none>
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] server lang: <none>
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] kex follows: False
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] Compression: none
2025-11-25T00:21:26.594 [DEBUG] [Thread-199561] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:21:26.651 [DEBUG] [Thread-199561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:21:26.651 [DEBUG] [Thread-199561] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:21:26.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:21:26.652 [DEBUG] [Thread-199561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:21:26.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:21:26.712 [DEBUG] [Thread-199561] [transport.py] [_log()] userauth is OK
2025-11-25T00:21:26.712 [DEBUG] [Thread-199561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:21:26.712 [DEBUG] [Thread-199561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:21:26.712 [DEBUG] [Thread-199561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:21:26.712 [DEBUG] [Thread-199561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:21:26.726 [INFO] [Thread-199561] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:21:26.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:21:26.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:21:27.603 [DEBUG] [Thread-199561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:21:27.603 [DEBUG] [Thread-199561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:21:27.651 [DEBUG] [Thread-199561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:21:27.651 [DEBUG] [Thread-199561] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:21:27.659 [DEBUG] [Thread-199561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:21:27.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:21:27.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-11-25T00:21:27.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:21:27.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:21:27.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:21:27.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:21:27.692 [DEBUG] [Thread-199561] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:21:27.928 [DEBUG] [Thread-199563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:21:43.044 [DEBUG] [Thread-199564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:21:57.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:21:57.706 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:21:57.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-11-25T00:21:58.076 [DEBUG] [Thread-199565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:21:58.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 21, 22), 13.53, 39.04, 0.0, 31.07, 13.24, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:21:58.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:21:22
2025-11-25T00:21:58.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:21:59.131 [DEBUG] [Thread-199566] [transport.py] [_log()] starting thread (client mode): 0xd0738ac0
2025-11-25T00:21:59.132 [DEBUG] [Thread-199566] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:21:59.148 [DEBUG] [Thread-199566] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:21:59.148 [INFO] [Thread-199566] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] client lang: <none>
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] server lang: <none>
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] kex follows: False
2025-11-25T00:21:59.152 [DEBUG] [Thread-199566] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:21:59.153 [DEBUG] [Thread-199566] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:21:59.153 [DEBUG] [Thread-199566] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:21:59.153 [DEBUG] [Thread-199566] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:21:59.153 [DEBUG] [Thread-199566] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:21:59.153 [DEBUG] [Thread-199566] [transport.py] [_log()] Compression: none
2025-11-25T00:21:59.153 [DEBUG] [Thread-199566] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:21:59.182 [DEBUG] [Thread-199566] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:21:59.184 [DEBUG] [Thread-199566] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:21:59.185 [DEBUG] [Thread-199566] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:21:59.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:21:59.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:21:59.188 [DEBUG] [Thread-199566] [transport.py] [_log()] userauth is OK
2025-11-25T00:21:59.188 [DEBUG] [Thread-199566] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:21:59.188 [DEBUG] [Thread-199566] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:21:59.188 [DEBUG] [Thread-199566] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:21:59.188 [DEBUG] [Thread-199566] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:21:59.205 [INFO] [Thread-199566] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:21:59.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:21:59.848 [DEBUG] [Thread-199566] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:21:59.848 [DEBUG] [Thread-199566] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:21:59.848 [DEBUG] [Thread-199566] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:21:59.889 [DEBUG] [Thread-199566] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:21:59.889 [DEBUG] [Thread-199566] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:21:59.891 [DEBUG] [Thread-199566] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:21:59.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:21:59.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:21:59.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:21:59.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:21:59.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:21:59.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:21:59.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:21:59.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:21:59.917 [DEBUG] [Thread-199566] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:21:59.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:21:59.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.931642 -999.00  +13.20  15.62     44   +1.30 1 1 1 1 1     0    0 11.25 -41.36 ZNESW 22.1 15.6 159.1 30.7 13.5 -25.1 13.3 -24.6 13.1 -23.5 13.4 -24.3
2025-11-25T00:21:59.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:21:59.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:21:59.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.931642
2025-11-25T00:21:59.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:21:59.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:21:59.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:21:59.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:21:59.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:21:59.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:21:22', tmtdew=13.53, humidity=39.04, cloud=0.0, wind=31.07, temperature=13.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:21:57', seeing=0.76, atlas_timestamp='2025-11-24T22:21:33.869', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:18:00')
2025-11-25T00:22:00.039 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:22:00.050 [DEBUG] [Thread-199569] [transport.py] [_log()] starting thread (client mode): 0xd073b9d0
2025-11-25T00:22:00.050 [DEBUG] [Thread-199569] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:22:00.064 [DEBUG] [Thread-199569] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:22:00.065 [INFO] [Thread-199569] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:22:00.072 [DEBUG] [Thread-199569] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:22:00.072 [DEBUG] [Thread-199569] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:22:00.072 [DEBUG] [Thread-199569] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:22:00.072 [DEBUG] [Thread-199569] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:22:00.073 [DEBUG] [Thread-199569] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:22:00.073 [DEBUG] [Thread-199569] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:22:00.073 [DEBUG] [Thread-199569] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:22:00.073 [DEBUG] [Thread-199569] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:22:00.073 [DEBUG] [Thread-199569] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:22:00.073 [DEBUG] [Thread-199569] [transport.py] [_log()] client lang: <none>
2025-11-25T00:22:00.073 [DEBUG] [Thread-199569] [transport.py] [_log()] server lang: <none>
2025-11-25T00:22:00.073 [DEBUG] [Thread-199569] [transport.py] [_log()] kex follows: False
2025-11-25T00:22:00.074 [DEBUG] [Thread-199569] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:22:00.074 [DEBUG] [Thread-199569] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:22:00.074 [DEBUG] [Thread-199569] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:22:00.074 [DEBUG] [Thread-199569] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:22:00.074 [DEBUG] [Thread-199569] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:22:00.074 [DEBUG] [Thread-199569] [transport.py] [_log()] Compression: none
2025-11-25T00:22:00.074 [DEBUG] [Thread-199569] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:22:00.128 [DEBUG] [Thread-199569] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:22:00.129 [DEBUG] [Thread-199569] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:22:00.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:22:00.130 [DEBUG] [Thread-199569] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:22:00.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:22:00.184 [DEBUG] [Thread-199569] [transport.py] [_log()] userauth is OK
2025-11-25T00:22:00.184 [DEBUG] [Thread-199569] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:22:00.185 [DEBUG] [Thread-199569] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:22:00.185 [DEBUG] [Thread-199569] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:22:00.185 [DEBUG] [Thread-199569] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:22:00.208 [INFO] [Thread-199569] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:22:00.208 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:22:00.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:22:01.118 [DEBUG] [Thread-199569] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:22:01.118 [DEBUG] [Thread-199569] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:22:01.169 [DEBUG] [Thread-199569] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:22:01.169 [DEBUG] [Thread-199569] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:22:01.180 [DEBUG] [Thread-199569] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:22:01.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:22:01.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:22: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-11-25T00:22:01.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:22:01.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:22:01.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:22:01.223 [DEBUG] [Thread-199569] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:22:07.889 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:22:07.901 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:22:13.133 [DEBUG] [Thread-199571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:22:15.775 [DEBUG] [Thread-199572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:22:28.272 [DEBUG] [Thread-199573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:22:31.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:22:31.248 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:22:31.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-11-25T00:22:32.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 21, 56), 13.58, 39.03, 0.0, 29.54, 13.23, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:22:32.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:21:56
2025-11-25T00:22:32.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:22:32.651 [DEBUG] [Thread-199574] [transport.py] [_log()] starting thread (client mode): 0xc9b83e20
2025-11-25T00:22:32.651 [DEBUG] [Thread-199574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:22:32.662 [DEBUG] [Thread-199574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:22:32.662 [INFO] [Thread-199574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] client lang: <none>
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] server lang: <none>
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] kex follows: False
2025-11-25T00:22:32.668 [DEBUG] [Thread-199574] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:22:32.669 [DEBUG] [Thread-199574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:22:32.669 [DEBUG] [Thread-199574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:22:32.669 [DEBUG] [Thread-199574] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:22:32.669 [DEBUG] [Thread-199574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:22:32.669 [DEBUG] [Thread-199574] [transport.py] [_log()] Compression: none
2025-11-25T00:22:32.669 [DEBUG] [Thread-199574] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:22:32.700 [DEBUG] [Thread-199574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:22:32.704 [DEBUG] [Thread-199574] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:22:32.705 [DEBUG] [Thread-199574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:22:32.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:22:32.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:22:32.709 [DEBUG] [Thread-199574] [transport.py] [_log()] userauth is OK
2025-11-25T00:22:32.709 [DEBUG] [Thread-199574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:22:32.709 [DEBUG] [Thread-199574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:22:32.709 [DEBUG] [Thread-199574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:22:32.709 [DEBUG] [Thread-199574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:22:32.739 [INFO] [Thread-199574] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:22:32.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:22:33.377 [DEBUG] [Thread-199574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:22:33.378 [DEBUG] [Thread-199574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:22:33.379 [DEBUG] [Thread-199574] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:22:33.419 [DEBUG] [Thread-199574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:22:33.419 [DEBUG] [Thread-199574] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:22:33.422 [DEBUG] [Thread-199574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:22:33.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:22:33.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:22:33.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:22:33.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:22:33.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:22:33.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:22:33.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:22:33.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:22:33.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:22:33.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.931989 -999.00  +13.20  21.37     44   +1.40 1 1 1 1 1     0    0 10.92 -37.44 ZNESW 22.6 21.4 146.6 28.7 13.5 -25.0 13.3 -24.5 13.1 -23.5 13.4 -24.4
2025-11-25T00:22:33.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:22:33.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:22:33.448 [DEBUG] [Thread-199574] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:22:33.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.931989
2025-11-25T00:22:33.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:22:33.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:22:33.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:22:33.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:22:33.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:22:33.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:21:56', tmtdew=13.58, humidity=39.03, cloud=0.0, wind=29.54, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:22:30', seeing=0.77, atlas_timestamp='2025-11-24T22:22:03.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:18:00')
2025-11-25T00:22:33.559 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:22:33.571 [DEBUG] [Thread-199577] [transport.py] [_log()] starting thread (client mode): 0xd07124d0
2025-11-25T00:22:33.571 [DEBUG] [Thread-199577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:22:33.585 [DEBUG] [Thread-199577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:22:33.585 [INFO] [Thread-199577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] client lang: <none>
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] server lang: <none>
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] kex follows: False
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:22:33.593 [DEBUG] [Thread-199577] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:22:33.594 [DEBUG] [Thread-199577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:22:33.594 [DEBUG] [Thread-199577] [transport.py] [_log()] Compression: none
2025-11-25T00:22:33.594 [DEBUG] [Thread-199577] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:22:33.652 [DEBUG] [Thread-199577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:22:33.653 [DEBUG] [Thread-199577] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:22:33.653 [DEBUG] [Thread-199577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:22:33.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:22:33.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:22:33.709 [DEBUG] [Thread-199577] [transport.py] [_log()] userauth is OK
2025-11-25T00:22:33.709 [DEBUG] [Thread-199577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:22:33.709 [DEBUG] [Thread-199577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:22:33.710 [DEBUG] [Thread-199577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:22:33.710 [DEBUG] [Thread-199577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:22:33.728 [INFO] [Thread-199577] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:22:33.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:22:33.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:22:34.560 [DEBUG] [Thread-199577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:22:34.561 [DEBUG] [Thread-199577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:22:34.608 [DEBUG] [Thread-199577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:22:34.608 [DEBUG] [Thread-199577] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:22:34.617 [DEBUG] [Thread-199577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:22:34.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:22:34.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-11-25T00:22:34.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:22:34.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:22:34.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:22:34.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:22:34.653 [DEBUG] [Thread-199577] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:22:43.308 [DEBUG] [Thread-199579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:22:58.414 [DEBUG] [Thread-199580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:23:04.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:23:04.683 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:23:04.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-11-25T00:23:05.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 22, 29), 13.58, 39.03, 0.0, 29.96, 13.24, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:23:05.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:22:29
2025-11-25T00:23:05.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:23:06.000 [DEBUG] [Thread-199581] [transport.py] [_log()] starting thread (client mode): 0xd0710ac0
2025-11-25T00:23:06.001 [DEBUG] [Thread-199581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:23:06.009 [DEBUG] [Thread-199581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:23:06.009 [INFO] [Thread-199581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] client lang: <none>
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] server lang: <none>
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] kex follows: False
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:23:06.015 [DEBUG] [Thread-199581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:23:06.016 [DEBUG] [Thread-199581] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:23:06.016 [DEBUG] [Thread-199581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:23:06.016 [DEBUG] [Thread-199581] [transport.py] [_log()] Compression: none
2025-11-25T00:23:06.016 [DEBUG] [Thread-199581] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:23:06.051 [DEBUG] [Thread-199581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:23:06.055 [DEBUG] [Thread-199581] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:23:06.056 [DEBUG] [Thread-199581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:23:06.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:23:06.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:23:06.060 [DEBUG] [Thread-199581] [transport.py] [_log()] userauth is OK
2025-11-25T00:23:06.060 [DEBUG] [Thread-199581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:23:06.061 [DEBUG] [Thread-199581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:23:06.061 [DEBUG] [Thread-199581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:23:06.061 [DEBUG] [Thread-199581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:23:06.072 [INFO] [Thread-199581] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:23:06.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:23:06.705 [DEBUG] [Thread-199581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:23:06.705 [DEBUG] [Thread-199581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:23:06.707 [DEBUG] [Thread-199581] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:23:06.746 [DEBUG] [Thread-199581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:23:06.746 [DEBUG] [Thread-199581] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:23:06.750 [DEBUG] [Thread-199581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:23:06.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:23:06.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:23:06.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:23:06.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:23:06.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:23:06.779 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:23:06.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:23:06.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:23:06.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:23:06.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.932336 -999.00  +13.20  20.37     44   +1.30 1 1 1 1 1     0    0 11.32 -36.86 ZNESW 20.1 20.4 151.4 27.7 13.5 -25.1 13.3 -24.6 13.1 -23.6 13.4 -24.4
2025-11-25T00:23:06.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:23:06.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:23:06.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.932336
2025-11-25T00:23:06.788 [DEBUG] [Thread-199581] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:23:06.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:23:06.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:23:06.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:23:06.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:23:06.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:23:06.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:22:29', tmtdew=13.58, humidity=39.03, cloud=0.0, wind=29.96, temperature=13.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:23:03', seeing=0.91, atlas_timestamp='2025-11-24T22:22:33.830', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:18:00')
2025-11-25T00:23:06.901 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:23:06.912 [DEBUG] [Thread-199584] [transport.py] [_log()] starting thread (client mode): 0xd073a620
2025-11-25T00:23:06.912 [DEBUG] [Thread-199584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:23:06.927 [DEBUG] [Thread-199584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:23:06.927 [INFO] [Thread-199584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:23:06.935 [DEBUG] [Thread-199584] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:23:06.935 [DEBUG] [Thread-199584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:23:06.935 [DEBUG] [Thread-199584] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:23:06.935 [DEBUG] [Thread-199584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:23:06.935 [DEBUG] [Thread-199584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:23:06.935 [DEBUG] [Thread-199584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:23:06.935 [DEBUG] [Thread-199584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:23:06.935 [DEBUG] [Thread-199584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:23:06.935 [DEBUG] [Thread-199584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:23:06.936 [DEBUG] [Thread-199584] [transport.py] [_log()] client lang: <none>
2025-11-25T00:23:06.936 [DEBUG] [Thread-199584] [transport.py] [_log()] server lang: <none>
2025-11-25T00:23:06.936 [DEBUG] [Thread-199584] [transport.py] [_log()] kex follows: False
2025-11-25T00:23:06.936 [DEBUG] [Thread-199584] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:23:06.936 [DEBUG] [Thread-199584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:23:06.936 [DEBUG] [Thread-199584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:23:06.936 [DEBUG] [Thread-199584] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:23:06.936 [DEBUG] [Thread-199584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:23:06.936 [DEBUG] [Thread-199584] [transport.py] [_log()] Compression: none
2025-11-25T00:23:06.936 [DEBUG] [Thread-199584] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:23:06.993 [DEBUG] [Thread-199584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:23:06.994 [DEBUG] [Thread-199584] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:23:06.994 [DEBUG] [Thread-199584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:23:06.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:23:06.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:23:07.049 [DEBUG] [Thread-199584] [transport.py] [_log()] userauth is OK
2025-11-25T00:23:07.049 [DEBUG] [Thread-199584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:23:07.049 [DEBUG] [Thread-199584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:23:07.049 [DEBUG] [Thread-199584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:23:07.050 [DEBUG] [Thread-199584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:23:07.074 [INFO] [Thread-199584] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:23:07.074 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:23:07.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:23:07.928 [DEBUG] [Thread-199584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:23:07.929 [DEBUG] [Thread-199584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:23:07.976 [DEBUG] [Thread-199584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:23:07.976 [DEBUG] [Thread-199584] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:23:07.986 [DEBUG] [Thread-199584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:23:07.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:23:07.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-11-25T00:23:08.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-11-25T00:23:08.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:23:08.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:23:08.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:23:08.029 [DEBUG] [Thread-199584] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:23:08.107 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:23:08.109 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:23:13.503 [DEBUG] [Thread-199586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:23:16.143 [DEBUG] [Thread-199587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:23:17.365 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:23:28.648 [DEBUG] [Thread-199588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:23:38.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:23:38.053 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:23:38.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-11-25T00:23:38.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 23, 3), 13.57, 39.06, 0.0, 29.04, 13.23, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:23:38.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:23:03
2025-11-25T00:23:39.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:23:39.276 [DEBUG] [Thread-199589] [transport.py] [_log()] starting thread (client mode): 0xd0738e80
2025-11-25T00:23:39.277 [DEBUG] [Thread-199589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:23:39.289 [DEBUG] [Thread-199589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:23:39.289 [INFO] [Thread-199589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] client lang: <none>
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] server lang: <none>
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] kex follows: False
2025-11-25T00:23:39.294 [DEBUG] [Thread-199589] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:23:39.295 [DEBUG] [Thread-199589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:23:39.295 [DEBUG] [Thread-199589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:23:39.295 [DEBUG] [Thread-199589] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:23:39.295 [DEBUG] [Thread-199589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:23:39.295 [DEBUG] [Thread-199589] [transport.py] [_log()] Compression: none
2025-11-25T00:23:39.295 [DEBUG] [Thread-199589] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:23:39.327 [DEBUG] [Thread-199589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:23:39.331 [DEBUG] [Thread-199589] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:23:39.332 [DEBUG] [Thread-199589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:23:39.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:23:39.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:23:39.335 [DEBUG] [Thread-199589] [transport.py] [_log()] userauth is OK
2025-11-25T00:23:39.336 [DEBUG] [Thread-199589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:23:39.336 [DEBUG] [Thread-199589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:23:39.336 [DEBUG] [Thread-199589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:23:39.336 [DEBUG] [Thread-199589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:23:39.357 [INFO] [Thread-199589] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:23:39.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:23:39.984 [DEBUG] [Thread-199589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:23:39.984 [DEBUG] [Thread-199589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:23:39.995 [DEBUG] [Thread-199589] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:23:40.025 [DEBUG] [Thread-199589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:23:40.025 [DEBUG] [Thread-199589] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:23:40.029 [DEBUG] [Thread-199589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:23:40.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:23:40.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:23:40.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:23:40.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:23:40.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:23:40.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:23:40.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:23:40.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:23:40.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:23:40.058 [DEBUG] [Thread-199589] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:23:40.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.932683 -999.00  +13.20  20.60     43   +1.10 1 1 1 1 1     0    0 11.05 -39.81 ZNESW 18.9 20.6 161.0 25.7 13.4 -25.1 13.3 -24.6 13.1 -23.6 13.4 -24.4
2025-11-25T00:23:40.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:23:40.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:23:40.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.932683
2025-11-25T00:23:40.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:23:40.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:23:40.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:23:40.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:23:40.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:23:40.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:23:03', tmtdew=13.57, humidity=39.06, cloud=0.0, wind=29.04, temperature=13.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:23:36', seeing=0.8, atlas_timestamp='2025-11-24T22:23:03.811', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:21:00')
2025-11-25T00:23:40.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:23:40.179 [DEBUG] [Thread-199592] [transport.py] [_log()] starting thread (client mode): 0xd07cebf0
2025-11-25T00:23:40.179 [DEBUG] [Thread-199592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:23:40.194 [DEBUG] [Thread-199592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:23:40.195 [INFO] [Thread-199592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:23:40.202 [DEBUG] [Thread-199592] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:23:40.202 [DEBUG] [Thread-199592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:23:40.202 [DEBUG] [Thread-199592] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:23:40.202 [DEBUG] [Thread-199592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:23:40.202 [DEBUG] [Thread-199592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:23:40.202 [DEBUG] [Thread-199592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:23:40.202 [DEBUG] [Thread-199592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:23:40.202 [DEBUG] [Thread-199592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:23:40.202 [DEBUG] [Thread-199592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:23:40.203 [DEBUG] [Thread-199592] [transport.py] [_log()] client lang: <none>
2025-11-25T00:23:40.203 [DEBUG] [Thread-199592] [transport.py] [_log()] server lang: <none>
2025-11-25T00:23:40.203 [DEBUG] [Thread-199592] [transport.py] [_log()] kex follows: False
2025-11-25T00:23:40.203 [DEBUG] [Thread-199592] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:23:40.203 [DEBUG] [Thread-199592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:23:40.203 [DEBUG] [Thread-199592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:23:40.203 [DEBUG] [Thread-199592] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:23:40.203 [DEBUG] [Thread-199592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:23:40.203 [DEBUG] [Thread-199592] [transport.py] [_log()] Compression: none
2025-11-25T00:23:40.203 [DEBUG] [Thread-199592] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:23:40.261 [DEBUG] [Thread-199592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:23:40.261 [DEBUG] [Thread-199592] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:23:40.262 [DEBUG] [Thread-199592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:23:40.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:23:40.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:23:40.317 [DEBUG] [Thread-199592] [transport.py] [_log()] userauth is OK
2025-11-25T00:23:40.317 [DEBUG] [Thread-199592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:23:40.317 [DEBUG] [Thread-199592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:23:40.318 [DEBUG] [Thread-199592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:23:40.318 [DEBUG] [Thread-199592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:23:40.336 [INFO] [Thread-199592] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:23:40.337 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:23:40.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:23:41.177 [DEBUG] [Thread-199592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:23:41.178 [DEBUG] [Thread-199592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:23:41.226 [DEBUG] [Thread-199592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:23:41.226 [DEBUG] [Thread-199592] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:23:41.235 [DEBUG] [Thread-199592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:23:41.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:23:41.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-11-25T00:23:41.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-11-25T00:23:41.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:23:41.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:23:41.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:23:41.274 [DEBUG] [Thread-199592] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:23:43.696 [DEBUG] [Thread-199594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:23:58.823 [DEBUG] [Thread-199595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:24:08.328 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:24:08.342 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:24:11.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:24:11.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:24:11.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-11-25T00:24:12.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 23, 36), 13.46, 39.56, 0.0, 31.12, 13.18, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:24:12.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:23:36
2025-11-25T00:24:12.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:24:12.498 [DEBUG] [Thread-199596] [transport.py] [_log()] starting thread (client mode): 0xd0713910
2025-11-25T00:24:12.499 [DEBUG] [Thread-199596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:24:12.504 [DEBUG] [Thread-199596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:24:12.504 [INFO] [Thread-199596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:24:12.510 [DEBUG] [Thread-199596] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:24:12.510 [DEBUG] [Thread-199596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:24:12.510 [DEBUG] [Thread-199596] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:24:12.510 [DEBUG] [Thread-199596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:24:12.510 [DEBUG] [Thread-199596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:24:12.511 [DEBUG] [Thread-199596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:24:12.511 [DEBUG] [Thread-199596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:24:12.511 [DEBUG] [Thread-199596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:24:12.511 [DEBUG] [Thread-199596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:24:12.511 [DEBUG] [Thread-199596] [transport.py] [_log()] client lang: <none>
2025-11-25T00:24:12.511 [DEBUG] [Thread-199596] [transport.py] [_log()] server lang: <none>
2025-11-25T00:24:12.511 [DEBUG] [Thread-199596] [transport.py] [_log()] kex follows: False
2025-11-25T00:24:12.511 [DEBUG] [Thread-199596] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:24:12.512 [DEBUG] [Thread-199596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:24:12.512 [DEBUG] [Thread-199596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:24:12.512 [DEBUG] [Thread-199596] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:24:12.512 [DEBUG] [Thread-199596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:24:12.513 [DEBUG] [Thread-199596] [transport.py] [_log()] Compression: none
2025-11-25T00:24:12.513 [DEBUG] [Thread-199596] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:24:12.549 [DEBUG] [Thread-199596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:24:12.552 [DEBUG] [Thread-199596] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:24:12.554 [DEBUG] [Thread-199596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:24:12.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:24:12.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:24:12.557 [DEBUG] [Thread-199596] [transport.py] [_log()] userauth is OK
2025-11-25T00:24:12.557 [DEBUG] [Thread-199596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:24:12.557 [DEBUG] [Thread-199596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:24:12.557 [DEBUG] [Thread-199596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:24:12.557 [DEBUG] [Thread-199596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:24:12.576 [INFO] [Thread-199596] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:24:12.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:24:13.165 [DEBUG] [Thread-199596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:24:13.165 [DEBUG] [Thread-199596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:24:13.166 [DEBUG] [Thread-199596] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:24:13.206 [DEBUG] [Thread-199596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:24:13.206 [DEBUG] [Thread-199596] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:24:13.209 [DEBUG] [Thread-199596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:24:13.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:24:13.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:24:13.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:24:13.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:24:13.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:24:13.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:24:13.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:24:13.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:24:13.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:24:13.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.933031 -999.00  +13.10  19.55     44   +1.20 1 1 1 1 1     0    0 11.02 -43.53 ZNESW 17.7 19.6 152.7 28.4 13.4 -25.1 13.3 -24.7 13.0 -23.4 13.4 -24.4
2025-11-25T00:24:13.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:24:13.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:24:13.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.933031
2025-11-25T00:24:13.237 [DEBUG] [Thread-199596] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:24:13.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:24:13.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:24:13.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:24:13.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:24:13.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:24:13.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:23:36', tmtdew=13.46, humidity=39.56, cloud=0.0, wind=31.12, temperature=13.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:24:09', seeing=0.99, atlas_timestamp='2025-11-24T22:23:33.878', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:21:00')
2025-11-25T00:24:13.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:24:13.337 [DEBUG] [Thread-199599] [transport.py] [_log()] starting thread (client mode): 0xd0712980
2025-11-25T00:24:13.337 [DEBUG] [Thread-199599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:24:13.351 [DEBUG] [Thread-199599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:24:13.351 [INFO] [Thread-199599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] client lang: <none>
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] server lang: <none>
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] kex follows: False
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:24:13.358 [DEBUG] [Thread-199599] [transport.py] [_log()] Compression: none
2025-11-25T00:24:13.359 [DEBUG] [Thread-199599] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:24:13.420 [DEBUG] [Thread-199599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:24:13.421 [DEBUG] [Thread-199599] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:24:13.421 [DEBUG] [Thread-199599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:24:13.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:24:13.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:24:13.476 [DEBUG] [Thread-199599] [transport.py] [_log()] userauth is OK
2025-11-25T00:24:13.476 [DEBUG] [Thread-199599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:24:13.476 [DEBUG] [Thread-199599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:24:13.476 [DEBUG] [Thread-199599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:24:13.476 [DEBUG] [Thread-199599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:24:13.490 [INFO] [Thread-199599] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:24:13.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:24:13.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:24:13.870 [DEBUG] [Thread-199601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:24:14.349 [DEBUG] [Thread-199599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:24:14.350 [DEBUG] [Thread-199599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:24:14.398 [DEBUG] [Thread-199599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:24:14.398 [DEBUG] [Thread-199599] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:24:14.407 [DEBUG] [Thread-199599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:24:14.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:24:14.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-11-25T00:24: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-11-25T00:24:14.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:24:14.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:24:14.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:24:14.447 [DEBUG] [Thread-199599] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:24:16.494 [DEBUG] [Thread-199602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:24:28.999 [DEBUG] [Thread-199603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:24:44.060 [DEBUG] [Thread-199604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:24:44.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:24:44.470 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:24:44.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-11-25T00:24:45.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 24, 9), 13.45, 39.61, 0.0, 30.4, 13.18, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:24:45.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:24:09
2025-11-25T00:24:45.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:24:45.861 [DEBUG] [Thread-199605] [transport.py] [_log()] starting thread (client mode): 0xd0711a80
2025-11-25T00:24:45.862 [DEBUG] [Thread-199605] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:24:45.868 [DEBUG] [Thread-199605] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:24:45.868 [INFO] [Thread-199605] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] client lang: <none>
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] server lang: <none>
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] kex follows: False
2025-11-25T00:24:45.873 [DEBUG] [Thread-199605] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:24:45.874 [DEBUG] [Thread-199605] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:24:45.874 [DEBUG] [Thread-199605] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:24:45.874 [DEBUG] [Thread-199605] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:24:45.874 [DEBUG] [Thread-199605] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:24:45.874 [DEBUG] [Thread-199605] [transport.py] [_log()] Compression: none
2025-11-25T00:24:45.874 [DEBUG] [Thread-199605] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:24:45.906 [DEBUG] [Thread-199605] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:24:45.909 [DEBUG] [Thread-199605] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:24:45.911 [DEBUG] [Thread-199605] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:24:45.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:24:45.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:24:45.916 [DEBUG] [Thread-199605] [transport.py] [_log()] userauth is OK
2025-11-25T00:24:45.916 [DEBUG] [Thread-199605] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:24:45.917 [DEBUG] [Thread-199605] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:24:45.917 [DEBUG] [Thread-199605] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:24:45.917 [DEBUG] [Thread-199605] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:24:45.955 [INFO] [Thread-199605] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:24:45.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:24:46.579 [DEBUG] [Thread-199605] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:24:46.579 [DEBUG] [Thread-199605] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:24:46.580 [DEBUG] [Thread-199605] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:24:46.620 [DEBUG] [Thread-199605] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:24:46.620 [DEBUG] [Thread-199605] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:24:46.623 [DEBUG] [Thread-199605] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:24:46.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:24:46.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:24:46.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:24:46.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:24:46.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:24:46.645 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:24:46.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:24:46.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:24:46.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:24:46.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.933378 -999.00  +13.10  21.19     44   +1.30 1 1 1 1 1     0    0 11.21 -44.60 ZNESW 21.6 21.2 163.0 32.7 13.4 -25.0 13.3 -24.6 13.0 -23.3 13.3 -24.3
2025-11-25T00:24:46.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:24:46.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:24:46.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.933378
2025-11-25T00:24:46.652 [DEBUG] [Thread-199605] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:24:46.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:24:46.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:24:46.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:24:46.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:24:46.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:24:46.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:24:09', tmtdew=13.45, humidity=39.61, cloud=0.0, wind=30.4, temperature=13.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:24:42', seeing=0.75, atlas_timestamp='2025-11-24T22:24:03.859', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:21:00')
2025-11-25T00:24:46.738 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:24:46.751 [DEBUG] [Thread-199608] [transport.py] [_log()] starting thread (client mode): 0xd0712aa0
2025-11-25T00:24:46.751 [DEBUG] [Thread-199608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:24:46.766 [DEBUG] [Thread-199608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:24:46.766 [INFO] [Thread-199608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:24:46.773 [DEBUG] [Thread-199608] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:24:46.773 [DEBUG] [Thread-199608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:24:46.773 [DEBUG] [Thread-199608] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:24:46.773 [DEBUG] [Thread-199608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] client lang: <none>
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] server lang: <none>
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] kex follows: False
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] Compression: none
2025-11-25T00:24:46.774 [DEBUG] [Thread-199608] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:24:46.831 [DEBUG] [Thread-199608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:24:46.831 [DEBUG] [Thread-199608] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:24:46.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:24:46.832 [DEBUG] [Thread-199608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:24:46.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:24:46.892 [DEBUG] [Thread-199608] [transport.py] [_log()] userauth is OK
2025-11-25T00:24:46.892 [DEBUG] [Thread-199608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:24:46.892 [DEBUG] [Thread-199608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:24:46.892 [DEBUG] [Thread-199608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:24:46.892 [DEBUG] [Thread-199608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:24:46.910 [INFO] [Thread-199608] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:24:46.910 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:24:46.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:24:47.760 [DEBUG] [Thread-199608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:24:47.761 [DEBUG] [Thread-199608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:24:47.808 [DEBUG] [Thread-199608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:24:47.808 [DEBUG] [Thread-199608] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:24:47.816 [DEBUG] [Thread-199608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:24:47.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:24:47.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-11-25T00:24:47.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-11-25T00:24:47.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:24:47.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:24:47.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:24:47.849 [DEBUG] [Thread-199608] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:24:59.101 [DEBUG] [Thread-199610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:25:08.556 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:25:08.558 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:25:14.213 [DEBUG] [Thread-199611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:25:16.755 [DEBUG] [Thread-199612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:25:17.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:25:17.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:25:17.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:25:18.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 24, 42), 13.53, 39.51, 0.0, 26.15, 13.21, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:25:18.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:24:42
2025-11-25T00:25:18.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:25:19.165 [DEBUG] [Thread-199613] [transport.py] [_log()] starting thread (client mode): 0xc9b80e20
2025-11-25T00:25:19.166 [DEBUG] [Thread-199613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:25:19.177 [DEBUG] [Thread-199613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:25:19.177 [INFO] [Thread-199613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] client lang: <none>
2025-11-25T00:25:19.183 [DEBUG] [Thread-199613] [transport.py] [_log()] server lang: <none>
2025-11-25T00:25:19.184 [DEBUG] [Thread-199613] [transport.py] [_log()] kex follows: False
2025-11-25T00:25:19.184 [DEBUG] [Thread-199613] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:25:19.184 [DEBUG] [Thread-199613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:25:19.184 [DEBUG] [Thread-199613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:25:19.185 [DEBUG] [Thread-199613] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:25:19.185 [DEBUG] [Thread-199613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:25:19.185 [DEBUG] [Thread-199613] [transport.py] [_log()] Compression: none
2025-11-25T00:25:19.185 [DEBUG] [Thread-199613] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:25:19.222 [DEBUG] [Thread-199613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:25:19.227 [DEBUG] [Thread-199613] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:25:19.229 [DEBUG] [Thread-199613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:25:19.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:25:19.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:25:19.235 [DEBUG] [Thread-199613] [transport.py] [_log()] userauth is OK
2025-11-25T00:25:19.235 [DEBUG] [Thread-199613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:25:19.235 [DEBUG] [Thread-199613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:25:19.235 [DEBUG] [Thread-199613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:25:19.236 [DEBUG] [Thread-199613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:25:19.274 [INFO] [Thread-199613] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:25:19.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:25:19.875 [DEBUG] [Thread-199613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:25:19.875 [DEBUG] [Thread-199613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:25:19.876 [DEBUG] [Thread-199613] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:25:19.916 [DEBUG] [Thread-199613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:25:19.916 [DEBUG] [Thread-199613] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:25:19.918 [DEBUG] [Thread-199613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:25:19.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:25:19.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:25:19.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:25:19.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:25:19.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:25:19.940 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:25:19.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:25:19.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:25:19.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:25:19.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.934072 -999.00  +13.20  22.69     45   +1.50 1 1 1 1 1     0    0 10.73 -50.20 ZNESW 21.6 22.7 154.2 28.6 13.4 -25.0 13.3 -24.6 13.1 -23.3 13.4 -24.3
2025-11-25T00:25:19.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:25:19.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:25:19.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.934072
2025-11-25T00:25:19.947 [DEBUG] [Thread-199613] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:25:19.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:25:19.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:25:19.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:25:19.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:25:19.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:25:19.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:24:42', tmtdew=13.53, humidity=39.51, cloud=0.0, wind=26.15, temperature=13.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:25:15', seeing=0.74, atlas_timestamp='2025-11-24T22:25:03.821', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:21:00')
2025-11-25T00:25:20.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:25:20.064 [DEBUG] [Thread-199616] [transport.py] [_log()] starting thread (client mode): 0xd07ccee0
2025-11-25T00:25:20.065 [DEBUG] [Thread-199616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:25:20.081 [DEBUG] [Thread-199616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:25:20.082 [INFO] [Thread-199616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:25:20.089 [DEBUG] [Thread-199616] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:25:20.089 [DEBUG] [Thread-199616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:25:20.089 [DEBUG] [Thread-199616] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:25:20.089 [DEBUG] [Thread-199616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:25:20.089 [DEBUG] [Thread-199616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:25:20.089 [DEBUG] [Thread-199616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:25:20.089 [DEBUG] [Thread-199616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:25:20.089 [DEBUG] [Thread-199616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:25:20.089 [DEBUG] [Thread-199616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:25:20.089 [DEBUG] [Thread-199616] [transport.py] [_log()] client lang: <none>
2025-11-25T00:25:20.090 [DEBUG] [Thread-199616] [transport.py] [_log()] server lang: <none>
2025-11-25T00:25:20.090 [DEBUG] [Thread-199616] [transport.py] [_log()] kex follows: False
2025-11-25T00:25:20.090 [DEBUG] [Thread-199616] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:25:20.090 [DEBUG] [Thread-199616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:25:20.090 [DEBUG] [Thread-199616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:25:20.090 [DEBUG] [Thread-199616] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:25:20.090 [DEBUG] [Thread-199616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:25:20.090 [DEBUG] [Thread-199616] [transport.py] [_log()] Compression: none
2025-11-25T00:25:20.090 [DEBUG] [Thread-199616] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:25:20.149 [DEBUG] [Thread-199616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:25:20.149 [DEBUG] [Thread-199616] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:25:20.150 [DEBUG] [Thread-199616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:25:20.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:25:20.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:25:20.205 [DEBUG] [Thread-199616] [transport.py] [_log()] userauth is OK
2025-11-25T00:25:20.205 [DEBUG] [Thread-199616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:25:20.205 [DEBUG] [Thread-199616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:25:20.205 [DEBUG] [Thread-199616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:25:20.205 [DEBUG] [Thread-199616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:25:20.229 [INFO] [Thread-199616] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:25:20.230 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:25:20.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:25:21.031 [DEBUG] [Thread-199616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:25:21.031 [DEBUG] [Thread-199616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:25:21.080 [DEBUG] [Thread-199616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:25:21.080 [DEBUG] [Thread-199616] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:25:21.090 [DEBUG] [Thread-199616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:25:21.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:25:21.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-11-25T00:25:21.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-11-25T00:25:21.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:25:21.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:25:21.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:25:21.132 [DEBUG] [Thread-199616] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:25:29.251 [DEBUG] [Thread-199618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:25:44.376 [DEBUG] [Thread-199619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:25:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:25:51.137 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:25:51.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-11-25T00:25:52.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 25, 15), 13.54, 39.49, 0.0, 25.04, 13.16, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:25:52.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:25:15
2025-11-25T00:25:52.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:25:52.365 [DEBUG] [Thread-199620] [transport.py] [_log()] starting thread (client mode): 0xd317ed10
2025-11-25T00:25:52.366 [DEBUG] [Thread-199620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:25:52.377 [DEBUG] [Thread-199620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:25:52.377 [INFO] [Thread-199620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:25:52.383 [DEBUG] [Thread-199620] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] client lang: <none>
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] server lang: <none>
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] kex follows: False
2025-11-25T00:25:52.384 [DEBUG] [Thread-199620] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:25:52.385 [DEBUG] [Thread-199620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:25:52.385 [DEBUG] [Thread-199620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:25:52.386 [DEBUG] [Thread-199620] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:25:52.386 [DEBUG] [Thread-199620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:25:52.386 [DEBUG] [Thread-199620] [transport.py] [_log()] Compression: none
2025-11-25T00:25:52.386 [DEBUG] [Thread-199620] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:25:52.415 [DEBUG] [Thread-199620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:25:52.420 [DEBUG] [Thread-199620] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:25:52.422 [DEBUG] [Thread-199620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:25:52.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:25:52.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:25:52.428 [DEBUG] [Thread-199620] [transport.py] [_log()] userauth is OK
2025-11-25T00:25:52.429 [DEBUG] [Thread-199620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:25:52.429 [DEBUG] [Thread-199620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:25:52.430 [DEBUG] [Thread-199620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:25:52.430 [DEBUG] [Thread-199620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:25:52.452 [INFO] [Thread-199620] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:25:52.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:25:53.069 [DEBUG] [Thread-199620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:25:53.069 [DEBUG] [Thread-199620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:25:53.070 [DEBUG] [Thread-199620] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:25:53.111 [DEBUG] [Thread-199620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:25:53.111 [DEBUG] [Thread-199620] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:25:53.115 [DEBUG] [Thread-199620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:25:53.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:25:53.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:25:53.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:25:53.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:25:53.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:25:53.142 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:25:53.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:25:53.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:25:53.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:25:53.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.934419 -999.00  +13.20  21.06     45   +1.50 1 1 1 1 1     0    0 10.64 -55.44 ZNESW 15.5 21.1 151.6 29.1 13.4 -25.2 13.3 -24.6 13.1 -23.5 13.4 -24.2
2025-11-25T00:25:53.145 [DEBUG] [Thread-199620] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:25:53.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:25:53.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:25:53.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.934419
2025-11-25T00:25:53.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:25:53.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:25:53.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:25:53.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:25:53.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:25:53.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:25:15', tmtdew=13.54, humidity=39.49, cloud=0.0, wind=25.04, temperature=13.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:25:48', seeing=0.74, atlas_timestamp='2025-11-24T22:25:33.802', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:21:00')
2025-11-25T00:25:53.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:25:53.266 [DEBUG] [Thread-199623] [transport.py] [_log()] starting thread (client mode): 0xd317c700
2025-11-25T00:25:53.266 [DEBUG] [Thread-199623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:25:53.281 [DEBUG] [Thread-199623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:25:53.281 [INFO] [Thread-199623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:25:53.289 [DEBUG] [Thread-199623] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:25:53.289 [DEBUG] [Thread-199623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:25:53.289 [DEBUG] [Thread-199623] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:25:53.290 [DEBUG] [Thread-199623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:25:53.290 [DEBUG] [Thread-199623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:25:53.290 [DEBUG] [Thread-199623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:25:53.290 [DEBUG] [Thread-199623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:25:53.290 [DEBUG] [Thread-199623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:25:53.290 [DEBUG] [Thread-199623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:25:53.290 [DEBUG] [Thread-199623] [transport.py] [_log()] client lang: <none>
2025-11-25T00:25:53.290 [DEBUG] [Thread-199623] [transport.py] [_log()] server lang: <none>
2025-11-25T00:25:53.291 [DEBUG] [Thread-199623] [transport.py] [_log()] kex follows: False
2025-11-25T00:25:53.291 [DEBUG] [Thread-199623] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:25:53.291 [DEBUG] [Thread-199623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:25:53.291 [DEBUG] [Thread-199623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:25:53.291 [DEBUG] [Thread-199623] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:25:53.291 [DEBUG] [Thread-199623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:25:53.292 [DEBUG] [Thread-199623] [transport.py] [_log()] Compression: none
2025-11-25T00:25:53.292 [DEBUG] [Thread-199623] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:25:53.350 [DEBUG] [Thread-199623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:25:53.351 [DEBUG] [Thread-199623] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:25:53.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:25:53.352 [DEBUG] [Thread-199623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:25:53.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:25:53.409 [DEBUG] [Thread-199623] [transport.py] [_log()] userauth is OK
2025-11-25T00:25:53.409 [DEBUG] [Thread-199623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:25:53.409 [DEBUG] [Thread-199623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:25:53.409 [DEBUG] [Thread-199623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:25:53.409 [DEBUG] [Thread-199623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:25:53.433 [INFO] [Thread-199623] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:25:53.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:25:53.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:25:54.264 [DEBUG] [Thread-199623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:25:54.265 [DEBUG] [Thread-199623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:25:54.313 [DEBUG] [Thread-199623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:25:54.313 [DEBUG] [Thread-199623] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:25:54.322 [DEBUG] [Thread-199623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:25:54.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:25:54.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:25:54.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:25:54.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:25:54.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:25:54.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:25:54.369 [DEBUG] [Thread-199623] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:25:59.424 [DEBUG] [Thread-199625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:26:08.816 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:26:08.817 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:26:14.579 [DEBUG] [Thread-199626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:26:17.080 [DEBUG] [Thread-199627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:26:24.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:26:24.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:26:24.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-11-25T00:26:25.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 25, 48), 13.44, 39.61, 0.0, 28.16, 13.18, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:26:25.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:25:48
2025-11-25T00:26:25.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:26:25.638 [DEBUG] [Thread-199628] [transport.py] [_log()] starting thread (client mode): 0xd073b280
2025-11-25T00:26:25.639 [DEBUG] [Thread-199628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:26:25.641 [DEBUG] [Thread-199628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:26:25.641 [INFO] [Thread-199628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:26:25.647 [DEBUG] [Thread-199628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:26:25.647 [DEBUG] [Thread-199628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:26:25.647 [DEBUG] [Thread-199628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:26:25.647 [DEBUG] [Thread-199628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:26:25.647 [DEBUG] [Thread-199628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:26:25.647 [DEBUG] [Thread-199628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:26:25.647 [DEBUG] [Thread-199628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:26:25.647 [DEBUG] [Thread-199628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:26:25.647 [DEBUG] [Thread-199628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:26:25.648 [DEBUG] [Thread-199628] [transport.py] [_log()] client lang: <none>
2025-11-25T00:26:25.648 [DEBUG] [Thread-199628] [transport.py] [_log()] server lang: <none>
2025-11-25T00:26:25.648 [DEBUG] [Thread-199628] [transport.py] [_log()] kex follows: False
2025-11-25T00:26:25.648 [DEBUG] [Thread-199628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:26:25.648 [DEBUG] [Thread-199628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:26:25.648 [DEBUG] [Thread-199628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:26:25.649 [DEBUG] [Thread-199628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:26:25.649 [DEBUG] [Thread-199628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:26:25.649 [DEBUG] [Thread-199628] [transport.py] [_log()] Compression: none
2025-11-25T00:26:25.649 [DEBUG] [Thread-199628] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:26:25.679 [DEBUG] [Thread-199628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:26:25.685 [DEBUG] [Thread-199628] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:26:25.687 [DEBUG] [Thread-199628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:26:25.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:26:25.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:26:25.692 [DEBUG] [Thread-199628] [transport.py] [_log()] userauth is OK
2025-11-25T00:26:25.693 [DEBUG] [Thread-199628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:26:25.693 [DEBUG] [Thread-199628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:26:25.693 [DEBUG] [Thread-199628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:26:25.693 [DEBUG] [Thread-199628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:26:25.720 [INFO] [Thread-199628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:26:25.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:26:26.312 [DEBUG] [Thread-199628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:26:26.312 [DEBUG] [Thread-199628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:26:26.315 [DEBUG] [Thread-199628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:26:26.352 [DEBUG] [Thread-199628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:26:26.353 [DEBUG] [Thread-199628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:26:26.356 [DEBUG] [Thread-199628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:26:26.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:26:26.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:26:26.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:26:26.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:26:26.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:26:26.376 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:26:26.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:26:26.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:26:26.378 [DEBUG] [Thread-199628] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:26:26.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:26:26.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.934767 -999.00  +13.20  19.64     44   +1.50 1 1 1 1 1     0    0 10.58 -53.73 ZNESW 18.0 19.6 151.0 28.1 13.4 -25.2 13.3 -24.7 13.1 -23.6 13.4 -24.5
2025-11-25T00:26:26.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:26:26.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:26:26.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.934767
2025-11-25T00:26:26.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:26:26.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:26:26.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:26:26.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:26:26.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:26:26.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:25:48', tmtdew=13.44, humidity=39.61, cloud=0.0, wind=28.16, temperature=13.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:26:21', seeing=0.86, atlas_timestamp='2025-11-24T22:26:03.869', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, 0.017250000000000654, 0.012249999999999872, 0.023499999999998522, 0.03449999999999953, 0.05025000000000013, -0.02800000000000047, -0.022749999999998494, 0.0015000000000000568, 0.010500000000000398, 0.056250000000000355, 0.025000000000000355, 0.10999999999999943, 0.0752499999999987, 0.004999999999999005, -0.012000000000000455, 0.0012500000000006395, 0.026500000000000412, 0.02800000000000047, -0.00575000000000081, 0.07399999999999807, 0.10874999999999879, 0.05925000000000047, -0.009249999999999758, -0.004000000000001336, -0.03349999999999831, -0.023249999999999105, 0.027000000000001023, 0.11299999999999955, 0.0660000000000025, 0.1330000000000009, 0.014000000000001123, 0.004249999999998977], zp_timestamp='2025-11-24T22:21:00')
2025-11-25T00:26:26.489 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:26:26.502 [DEBUG] [Thread-199631] [transport.py] [_log()] starting thread (client mode): 0xd31916f0
2025-11-25T00:26:26.503 [DEBUG] [Thread-199631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:26:26.517 [DEBUG] [Thread-199631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:26:26.517 [INFO] [Thread-199631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] client lang: <none>
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] server lang: <none>
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] kex follows: False
2025-11-25T00:26:26.525 [DEBUG] [Thread-199631] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:26:26.526 [DEBUG] [Thread-199631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:26:26.526 [DEBUG] [Thread-199631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:26:26.526 [DEBUG] [Thread-199631] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:26:26.526 [DEBUG] [Thread-199631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:26:26.526 [DEBUG] [Thread-199631] [transport.py] [_log()] Compression: none
2025-11-25T00:26:26.526 [DEBUG] [Thread-199631] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:26:26.590 [DEBUG] [Thread-199631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:26:26.590 [DEBUG] [Thread-199631] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:26:26.591 [DEBUG] [Thread-199631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:26:26.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:26:26.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:26:26.655 [DEBUG] [Thread-199631] [transport.py] [_log()] userauth is OK
2025-11-25T00:26:26.656 [DEBUG] [Thread-199631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:26:26.656 [DEBUG] [Thread-199631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:26:26.656 [DEBUG] [Thread-199631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:26:26.656 [DEBUG] [Thread-199631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:26:26.677 [INFO] [Thread-199631] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:26:26.678 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:26:26.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:26:27.515 [DEBUG] [Thread-199631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:26:27.515 [DEBUG] [Thread-199631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:26:27.563 [DEBUG] [Thread-199631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:26:27.563 [DEBUG] [Thread-199631] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:26:27.572 [DEBUG] [Thread-199631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:26:27.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:26:27.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:26:27.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-11-25T00:26:27.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:26:27.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:26:27.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:26:27.613 [DEBUG] [Thread-199631] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:26:29.649 [DEBUG] [Thread-199633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:26:44.768 [DEBUG] [Thread-199634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:26:57.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:26:57.663 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:26:57.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-11-25T00:26:58.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 26, 54), 13.39, 39.76, 0.0, 30.28, 13.16, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:26:58.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:26:54
2025-11-25T00:26:58.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:26:58.817 [DEBUG] [Thread-199635] [transport.py] [_log()] starting thread (client mode): 0xd3193220
2025-11-25T00:26:58.818 [DEBUG] [Thread-199635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:26:58.818 [DEBUG] [Thread-199635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:26:58.818 [INFO] [Thread-199635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:26:58.824 [DEBUG] [Thread-199635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] client lang: <none>
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] server lang: <none>
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] kex follows: False
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:26:58.825 [DEBUG] [Thread-199635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:26:58.826 [DEBUG] [Thread-199635] [transport.py] [_log()] Compression: none
2025-11-25T00:26:58.826 [DEBUG] [Thread-199635] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:26:58.857 [DEBUG] [Thread-199635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:26:58.862 [DEBUG] [Thread-199635] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:26:58.864 [DEBUG] [Thread-199635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:26:58.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:26:58.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:26:58.870 [DEBUG] [Thread-199635] [transport.py] [_log()] userauth is OK
2025-11-25T00:26:58.870 [DEBUG] [Thread-199635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:26:58.871 [DEBUG] [Thread-199635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:26:58.871 [DEBUG] [Thread-199635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:26:58.871 [DEBUG] [Thread-199635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:26:58.900 [INFO] [Thread-199635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:26:58.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:26:59.476 [DEBUG] [Thread-199635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:26:59.476 [DEBUG] [Thread-199635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:26:59.487 [DEBUG] [Thread-199635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:26:59.517 [DEBUG] [Thread-199635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:26:59.518 [DEBUG] [Thread-199635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:26:59.521 [DEBUG] [Thread-199635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:26:59.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:26:59.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:26:59.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:26:59.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:26:59.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:26:59.543 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:26:59.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:26:59.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:26:59.545 [DEBUG] [Thread-199635] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:26:59.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:26:59.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.935114 -999.00  +13.20  18.04     45   +1.50 1 1 1 1 1     0    0 10.47 -56.58 ZNESW 17.1 18.0 149.8 23.7 13.4 -25.0 13.3 -24.8 13.0 -23.4 13.3 -24.3
2025-11-25T00:26:59.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:26:59.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:26:59.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.935114
2025-11-25T00:26:59.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:26:59.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:26:59.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:26:59.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:26:59.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:26:59.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:26:54', tmtdew=13.39, humidity=39.76, cloud=0.0, wind=30.28, temperature=13.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:26:54', seeing=0.74, atlas_timestamp='2025-11-24T22:26:33.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:24:00')
2025-11-25T00:26:59.667 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:26:59.678 [DEBUG] [Thread-199638] [transport.py] [_log()] starting thread (client mode): 0xd317ed10
2025-11-25T00:26:59.678 [DEBUG] [Thread-199638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:26:59.693 [DEBUG] [Thread-199638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:26:59.693 [INFO] [Thread-199638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] client lang: <none>
2025-11-25T00:26:59.700 [DEBUG] [Thread-199638] [transport.py] [_log()] server lang: <none>
2025-11-25T00:26:59.701 [DEBUG] [Thread-199638] [transport.py] [_log()] kex follows: False
2025-11-25T00:26:59.701 [DEBUG] [Thread-199638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:26:59.701 [DEBUG] [Thread-199638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:26:59.701 [DEBUG] [Thread-199638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:26:59.701 [DEBUG] [Thread-199638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:26:59.701 [DEBUG] [Thread-199638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:26:59.701 [DEBUG] [Thread-199638] [transport.py] [_log()] Compression: none
2025-11-25T00:26:59.701 [DEBUG] [Thread-199638] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:26:59.761 [DEBUG] [Thread-199638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:26:59.762 [DEBUG] [Thread-199638] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:26:59.762 [DEBUG] [Thread-199638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:26:59.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:26:59.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:26:59.817 [DEBUG] [Thread-199638] [transport.py] [_log()] userauth is OK
2025-11-25T00:26:59.817 [DEBUG] [Thread-199638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:26:59.817 [DEBUG] [Thread-199638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:26:59.817 [DEBUG] [Thread-199638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:26:59.817 [DEBUG] [Thread-199638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:26:59.828 [DEBUG] [Thread-199640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:26:59.850 [INFO] [Thread-199638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:26:59.851 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:26:59.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:27:00.667 [DEBUG] [Thread-199638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:27:00.667 [DEBUG] [Thread-199638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:27:00.714 [DEBUG] [Thread-199638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:27:00.714 [DEBUG] [Thread-199638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:27:00.723 [DEBUG] [Thread-199638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:27:00.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:27:00.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-11-25T00:27:00.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-11-25T00:27:00.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:27:00.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:27:00.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:27:00.760 [DEBUG] [Thread-199638] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:27:09.029 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:27:09.031 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:27:14.995 [DEBUG] [Thread-199641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:27:17.334 [DEBUG] [Thread-199642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:27:30.072 [DEBUG] [Thread-199643 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:27:30.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:27:30.757 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:27:30.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-11-25T00:27:31.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 27, 27), 13.4, 39.74, 0.0, 30.19, 13.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:27:31.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:27:27
2025-11-25T00:27:31.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:27:31.983 [DEBUG] [Thread-199644] [transport.py] [_log()] starting thread (client mode): 0xd31499f0
2025-11-25T00:27:31.984 [DEBUG] [Thread-199644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:27:31.987 [DEBUG] [Thread-199644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:27:31.988 [INFO] [Thread-199644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] client lang: <none>
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] server lang: <none>
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] kex follows: False
2025-11-25T00:27:31.992 [DEBUG] [Thread-199644] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:27:31.993 [DEBUG] [Thread-199644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:27:31.993 [DEBUG] [Thread-199644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:27:31.993 [DEBUG] [Thread-199644] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:27:31.993 [DEBUG] [Thread-199644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:27:31.993 [DEBUG] [Thread-199644] [transport.py] [_log()] Compression: none
2025-11-25T00:27:31.993 [DEBUG] [Thread-199644] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:27:32.019 [DEBUG] [Thread-199644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:27:32.022 [DEBUG] [Thread-199644] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:27:32.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:27:32.024 [DEBUG] [Thread-199644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:27:32.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:27:32.026 [DEBUG] [Thread-199644] [transport.py] [_log()] userauth is OK
2025-11-25T00:27:32.026 [DEBUG] [Thread-199644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:27:32.026 [DEBUG] [Thread-199644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:27:32.026 [DEBUG] [Thread-199644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:27:32.026 [DEBUG] [Thread-199644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:27:32.044 [INFO] [Thread-199644] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:27:32.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:27:32.759 [DEBUG] [Thread-199644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:27:32.759 [DEBUG] [Thread-199644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:27:32.761 [DEBUG] [Thread-199644] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:27:32.800 [DEBUG] [Thread-199644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:27:32.800 [DEBUG] [Thread-199644] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:27:32.801 [DEBUG] [Thread-199644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:27:32.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:27:32.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:27:32.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:27:32.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:27:32.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:27:32.820 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:27:32.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:27:32.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:27:32.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:27:32.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.935114 -999.00  +13.20  18.04     45   +1.50 1 1 1 1 1     0    0 10.47 -56.58 ZNESW 17.1 18.0 149.8 23.7 13.4 -25.0 13.3 -24.8 13.0 -23.4 13.3 -24.3
2025-11-25T00:27:32.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:27:32.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:27:32.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.935114
2025-11-25T00:27:32.831 [DEBUG] [Thread-199644] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:27:32.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:27:32.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:27:32.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:27:32.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:27:32.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:27:32.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:27:27', tmtdew=13.4, humidity=39.74, cloud=0.0, wind=30.19, temperature=13.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:27:27', seeing=0.68, atlas_timestamp='2025-11-24T22:26:33.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:24:00')
2025-11-25T00:27:32.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:27:32.925 [DEBUG] [Thread-199647] [transport.py] [_log()] starting thread (client mode): 0xd314a350
2025-11-25T00:27:32.926 [DEBUG] [Thread-199647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:27:32.941 [DEBUG] [Thread-199647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:27:32.941 [INFO] [Thread-199647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] client lang: <none>
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] server lang: <none>
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] kex follows: False
2025-11-25T00:27:32.948 [DEBUG] [Thread-199647] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:27:32.949 [DEBUG] [Thread-199647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:27:32.949 [DEBUG] [Thread-199647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:27:32.949 [DEBUG] [Thread-199647] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:27:32.949 [DEBUG] [Thread-199647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:27:32.949 [DEBUG] [Thread-199647] [transport.py] [_log()] Compression: none
2025-11-25T00:27:32.949 [DEBUG] [Thread-199647] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:27:33.003 [DEBUG] [Thread-199647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:27:33.003 [DEBUG] [Thread-199647] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:27:33.003 [DEBUG] [Thread-199647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:27:33.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:27:33.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:27:33.060 [DEBUG] [Thread-199647] [transport.py] [_log()] userauth is OK
2025-11-25T00:27:33.060 [DEBUG] [Thread-199647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:27:33.060 [DEBUG] [Thread-199647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:27:33.060 [DEBUG] [Thread-199647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:27:33.060 [DEBUG] [Thread-199647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:27:33.075 [INFO] [Thread-199647] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:27:33.075 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:27:33.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:27:33.869 [DEBUG] [Thread-199647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:27:33.869 [DEBUG] [Thread-199647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:27:33.917 [DEBUG] [Thread-199647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:27:33.917 [DEBUG] [Thread-199647] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:27:33.925 [DEBUG] [Thread-199647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:27:33.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:27:33.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-11-25T00:27:33.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-11-25T00:27:33.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:27:33.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:27:33.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:27:33.958 [DEBUG] [Thread-199647] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:27:45.127 [DEBUG] [Thread-199649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:28:00.203 [DEBUG] [Thread-199650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:28:03.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:28:03.982 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:28:04.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:28:04.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 27, 27), 13.4, 39.74, 0.0, 30.19, 13.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:28:04.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:27:27
2025-11-25T00:28:04.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:28:05.145 [DEBUG] [Thread-199651] [transport.py] [_log()] starting thread (client mode): 0xc9b82020
2025-11-25T00:28:05.145 [DEBUG] [Thread-199651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:28:05.161 [DEBUG] [Thread-199651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:28:05.162 [INFO] [Thread-199651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:28:05.166 [DEBUG] [Thread-199651] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:28:05.166 [DEBUG] [Thread-199651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:28:05.166 [DEBUG] [Thread-199651] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:28:05.167 [DEBUG] [Thread-199651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:28:05.167 [DEBUG] [Thread-199651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:28:05.167 [DEBUG] [Thread-199651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:28:05.167 [DEBUG] [Thread-199651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:28:05.167 [DEBUG] [Thread-199651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:28:05.167 [DEBUG] [Thread-199651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:28:05.167 [DEBUG] [Thread-199651] [transport.py] [_log()] client lang: <none>
2025-11-25T00:28:05.167 [DEBUG] [Thread-199651] [transport.py] [_log()] server lang: <none>
2025-11-25T00:28:05.167 [DEBUG] [Thread-199651] [transport.py] [_log()] kex follows: False
2025-11-25T00:28:05.167 [DEBUG] [Thread-199651] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:28:05.168 [DEBUG] [Thread-199651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:28:05.168 [DEBUG] [Thread-199651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:28:05.168 [DEBUG] [Thread-199651] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:28:05.169 [DEBUG] [Thread-199651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:28:05.169 [DEBUG] [Thread-199651] [transport.py] [_log()] Compression: none
2025-11-25T00:28:05.169 [DEBUG] [Thread-199651] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:28:05.207 [DEBUG] [Thread-199651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:28:05.211 [DEBUG] [Thread-199651] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:28:05.212 [DEBUG] [Thread-199651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:28:05.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:28:05.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:28:05.216 [DEBUG] [Thread-199651] [transport.py] [_log()] userauth is OK
2025-11-25T00:28:05.217 [DEBUG] [Thread-199651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:28:05.217 [DEBUG] [Thread-199651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:28:05.217 [DEBUG] [Thread-199651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:28:05.217 [DEBUG] [Thread-199651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:28:05.255 [INFO] [Thread-199651] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:28:05.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:28:05.905 [DEBUG] [Thread-199651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:28:05.906 [DEBUG] [Thread-199651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:28:05.907 [DEBUG] [Thread-199651] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:28:05.946 [DEBUG] [Thread-199651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:28:05.946 [DEBUG] [Thread-199651] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:28:05.948 [DEBUG] [Thread-199651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:28:05.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:28:05.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:28:05.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:28:05.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:28:05.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:28:05.971 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:28:05.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:28:05.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:28:05.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:28:05.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.935461 -999.00  +13.20  17.48     45   +1.60 1 1 1 1 1     0    0 10.59 -53.08 ZNESW 19.8 17.5 151.8 34.8 13.4 -25.0 13.3 -24.5 13.1 -23.4 13.4 -24.3
2025-11-25T00:28:05.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:28:05.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:28:05.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.935461
2025-11-25T00:28:05.978 [DEBUG] [Thread-199651] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:28:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:28:05.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:28:05.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:28:05.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:28:05.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:28:05.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:27:27', tmtdew=13.4, humidity=39.74, cloud=0.0, wind=30.19, temperature=13.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:28:00', seeing=0.79, atlas_timestamp='2025-11-24T22:27:03.830', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:24:00')
2025-11-25T00:28:06.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:28:06.071 [DEBUG] [Thread-199654] [transport.py] [_log()] starting thread (client mode): 0xc9b82800
2025-11-25T00:28:06.072 [DEBUG] [Thread-199654] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:28:06.085 [DEBUG] [Thread-199654] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:28:06.086 [INFO] [Thread-199654] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:28:06.094 [DEBUG] [Thread-199654] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:28:06.094 [DEBUG] [Thread-199654] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:28:06.094 [DEBUG] [Thread-199654] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:28:06.094 [DEBUG] [Thread-199654] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:28:06.094 [DEBUG] [Thread-199654] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:28:06.094 [DEBUG] [Thread-199654] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:28:06.095 [DEBUG] [Thread-199654] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:28:06.095 [DEBUG] [Thread-199654] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:28:06.095 [DEBUG] [Thread-199654] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:28:06.095 [DEBUG] [Thread-199654] [transport.py] [_log()] client lang: <none>
2025-11-25T00:28:06.095 [DEBUG] [Thread-199654] [transport.py] [_log()] server lang: <none>
2025-11-25T00:28:06.095 [DEBUG] [Thread-199654] [transport.py] [_log()] kex follows: False
2025-11-25T00:28:06.095 [DEBUG] [Thread-199654] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:28:06.095 [DEBUG] [Thread-199654] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:28:06.095 [DEBUG] [Thread-199654] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:28:06.096 [DEBUG] [Thread-199654] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:28:06.096 [DEBUG] [Thread-199654] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:28:06.096 [DEBUG] [Thread-199654] [transport.py] [_log()] Compression: none
2025-11-25T00:28:06.096 [DEBUG] [Thread-199654] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:28:06.152 [DEBUG] [Thread-199654] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:28:06.153 [DEBUG] [Thread-199654] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:28:06.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:28:06.154 [DEBUG] [Thread-199654] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:28:06.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:28:06.208 [DEBUG] [Thread-199654] [transport.py] [_log()] userauth is OK
2025-11-25T00:28:06.209 [DEBUG] [Thread-199654] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:28:06.209 [DEBUG] [Thread-199654] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:28:06.209 [DEBUG] [Thread-199654] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:28:06.209 [DEBUG] [Thread-199654] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:28:06.234 [INFO] [Thread-199654] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:28:06.234 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:28:06.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:28:07.055 [DEBUG] [Thread-199654] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:28:07.055 [DEBUG] [Thread-199654] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:28:07.103 [DEBUG] [Thread-199654] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:28:07.103 [DEBUG] [Thread-199654] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:28:07.111 [DEBUG] [Thread-199654] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:28:07.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:28:07.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:28:07.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:28:07.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:28:07.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:28:07.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:28:07.144 [DEBUG] [Thread-199654] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:28:09.236 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:28:09.238 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:28:15.251 [DEBUG] [Thread-199656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:28:17.577 [DEBUG] [Thread-199657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:28:30.364 [DEBUG] [Thread-199658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:28:37.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:28:37.168 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:28:37.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:28:38.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 27, 27), 13.4, 39.74, 0.0, 30.19, 13.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:28:38.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:27:27
2025-11-25T00:28:38.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:28:38.365 [DEBUG] [Thread-199659] [transport.py] [_log()] starting thread (client mode): 0xd07103a0
2025-11-25T00:28:38.365 [DEBUG] [Thread-199659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:28:38.379 [DEBUG] [Thread-199659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:28:38.379 [INFO] [Thread-199659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:28:38.385 [DEBUG] [Thread-199659] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:28:38.385 [DEBUG] [Thread-199659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] client lang: <none>
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] server lang: <none>
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] kex follows: False
2025-11-25T00:28:38.386 [DEBUG] [Thread-199659] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:28:38.387 [DEBUG] [Thread-199659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:28:38.387 [DEBUG] [Thread-199659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:28:38.388 [DEBUG] [Thread-199659] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:28:38.388 [DEBUG] [Thread-199659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:28:38.388 [DEBUG] [Thread-199659] [transport.py] [_log()] Compression: none
2025-11-25T00:28:38.388 [DEBUG] [Thread-199659] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:28:38.426 [DEBUG] [Thread-199659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:28:38.431 [DEBUG] [Thread-199659] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:28:38.433 [DEBUG] [Thread-199659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:28:38.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:28:38.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:28:38.438 [DEBUG] [Thread-199659] [transport.py] [_log()] userauth is OK
2025-11-25T00:28:38.438 [DEBUG] [Thread-199659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:28:38.438 [DEBUG] [Thread-199659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:28:38.438 [DEBUG] [Thread-199659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:28:38.438 [DEBUG] [Thread-199659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:28:38.476 [INFO] [Thread-199659] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:28:38.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:28:39.195 [DEBUG] [Thread-199659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:28:39.195 [DEBUG] [Thread-199659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:28:39.196 [DEBUG] [Thread-199659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:28:39.236 [DEBUG] [Thread-199659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:28:39.236 [DEBUG] [Thread-199659] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:28:39.238 [DEBUG] [Thread-199659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:28:39.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:28:39.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:28:39.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:28:39.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:28:39.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:28:39.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:28:39.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:28:39.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:28:39.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:28:39.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.935808 -999.00  +13.20  15.47     45   +1.60 1 1 1 1 1     0    0 10.54 -56.64 ZNESW 18.4 15.5 151.6 26.8 13.4 -25.2 13.3 -24.6 13.1 -23.5 13.3 -24.2
2025-11-25T00:28:39.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:28:39.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:28:39.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.935808
2025-11-25T00:28:39.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:28:39.271 [DEBUG] [Thread-199659] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:28:39.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:28:39.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:28:39.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:28:39.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:28:39.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:27:27', tmtdew=13.4, humidity=39.74, cloud=0.0, wind=30.19, temperature=13.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:28:34', seeing=0.81, atlas_timestamp='2025-11-24T22:27:33.811', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:24:00')
2025-11-25T00:28:39.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:28:39.360 [DEBUG] [Thread-199662] [transport.py] [_log()] starting thread (client mode): 0xd07ce2f0
2025-11-25T00:28:39.361 [DEBUG] [Thread-199662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:28:39.375 [DEBUG] [Thread-199662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:28:39.375 [INFO] [Thread-199662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:28:39.385 [DEBUG] [Thread-199662] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:28:39.385 [DEBUG] [Thread-199662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:28:39.385 [DEBUG] [Thread-199662] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:28:39.385 [DEBUG] [Thread-199662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:28:39.385 [DEBUG] [Thread-199662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:28:39.385 [DEBUG] [Thread-199662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:28:39.385 [DEBUG] [Thread-199662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:28:39.385 [DEBUG] [Thread-199662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:28:39.386 [DEBUG] [Thread-199662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:28:39.386 [DEBUG] [Thread-199662] [transport.py] [_log()] client lang: <none>
2025-11-25T00:28:39.386 [DEBUG] [Thread-199662] [transport.py] [_log()] server lang: <none>
2025-11-25T00:28:39.386 [DEBUG] [Thread-199662] [transport.py] [_log()] kex follows: False
2025-11-25T00:28:39.386 [DEBUG] [Thread-199662] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:28:39.387 [DEBUG] [Thread-199662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:28:39.387 [DEBUG] [Thread-199662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:28:39.387 [DEBUG] [Thread-199662] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:28:39.387 [DEBUG] [Thread-199662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:28:39.387 [DEBUG] [Thread-199662] [transport.py] [_log()] Compression: none
2025-11-25T00:28:39.387 [DEBUG] [Thread-199662] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:28:39.442 [DEBUG] [Thread-199662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:28:39.443 [DEBUG] [Thread-199662] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:28:39.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:28:39.444 [DEBUG] [Thread-199662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:28:39.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:28:39.501 [DEBUG] [Thread-199662] [transport.py] [_log()] userauth is OK
2025-11-25T00:28:39.502 [DEBUG] [Thread-199662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:28:39.502 [DEBUG] [Thread-199662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:28:39.502 [DEBUG] [Thread-199662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:28:39.502 [DEBUG] [Thread-199662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:28:39.521 [INFO] [Thread-199662] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:28:39.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:28:39.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:28:40.344 [DEBUG] [Thread-199662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:28:40.345 [DEBUG] [Thread-199662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:28:40.392 [DEBUG] [Thread-199662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:28:40.393 [DEBUG] [Thread-199662] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:28:40.397 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:28:40.402 [DEBUG] [Thread-199662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:28:40.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:28:40.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-11-25T00:28:40.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-11-25T00:28:40.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:28:40.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:28:40.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:28:40.439 [DEBUG] [Thread-199662] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:28:45.416 [DEBUG] [Thread-199664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:29:00.498 [DEBUG] [Thread-199665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:29:09.440 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:29:09.442 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:29:10.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:29:10.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:29:10.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:29:11.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 29, 7), 13.37, 39.83, 0.0, 27.15, 13.24, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:29:11.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:29:07
2025-11-25T00:29:11.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:29:11.714 [DEBUG] [Thread-199666] [transport.py] [_log()] starting thread (client mode): 0xd0739300
2025-11-25T00:29:11.715 [DEBUG] [Thread-199666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:29:11.727 [DEBUG] [Thread-199666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:29:11.728 [INFO] [Thread-199666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] client lang: <none>
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] server lang: <none>
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] kex follows: False
2025-11-25T00:29:11.733 [DEBUG] [Thread-199666] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:29:11.734 [DEBUG] [Thread-199666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:29:11.734 [DEBUG] [Thread-199666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:29:11.734 [DEBUG] [Thread-199666] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:29:11.734 [DEBUG] [Thread-199666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:29:11.734 [DEBUG] [Thread-199666] [transport.py] [_log()] Compression: none
2025-11-25T00:29:11.734 [DEBUG] [Thread-199666] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:29:11.771 [DEBUG] [Thread-199666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:29:11.777 [DEBUG] [Thread-199666] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:29:11.779 [DEBUG] [Thread-199666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:29:11.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:29:11.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:29:11.785 [DEBUG] [Thread-199666] [transport.py] [_log()] userauth is OK
2025-11-25T00:29:11.785 [DEBUG] [Thread-199666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:29:11.785 [DEBUG] [Thread-199666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:29:11.785 [DEBUG] [Thread-199666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:29:11.785 [DEBUG] [Thread-199666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:29:11.812 [INFO] [Thread-199666] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:29:11.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:29:12.418 [DEBUG] [Thread-199666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:29:12.418 [DEBUG] [Thread-199666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:29:12.419 [DEBUG] [Thread-199666] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:29:12.459 [DEBUG] [Thread-199666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:29:12.459 [DEBUG] [Thread-199666] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:29:12.462 [DEBUG] [Thread-199666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:29:12.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:29:12.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:29:12.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:29:12.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:29:12.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:29:12.482 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:29:12.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:29:12.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:29:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:29:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.936503 -999.00  +13.20  17.05     45   +1.50 1 1 1 1 1     0    0 10.55 -56.37 ZNESW 16.8 17.1 146.4 27.6 13.4 -25.0 13.3 -24.5 13.1 -23.5 13.3 -24.3
2025-11-25T00:29:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:29:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:29:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.936503
2025-11-25T00:29:12.489 [DEBUG] [Thread-199666] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:29:12.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:29:12.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:29:12.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:29:12.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:29:12.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:29:12.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:29:07', tmtdew=13.37, humidity=39.83, cloud=0.0, wind=27.15, temperature=13.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:29:07', seeing=0.76, atlas_timestamp='2025-11-24T22:28:33.859', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:24:00')
2025-11-25T00:29:12.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:29:12.588 [DEBUG] [Thread-199669] [transport.py] [_log()] starting thread (client mode): 0xd07139a0
2025-11-25T00:29:12.588 [DEBUG] [Thread-199669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:29:12.607 [DEBUG] [Thread-199669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:29:12.607 [INFO] [Thread-199669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] client lang: <none>
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] server lang: <none>
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] kex follows: False
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] Compression: none
2025-11-25T00:29:12.615 [DEBUG] [Thread-199669] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:29:12.671 [DEBUG] [Thread-199669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:29:12.671 [DEBUG] [Thread-199669] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:29:12.672 [DEBUG] [Thread-199669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:29:12.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:29:12.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:29:12.729 [DEBUG] [Thread-199669] [transport.py] [_log()] userauth is OK
2025-11-25T00:29:12.729 [DEBUG] [Thread-199669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:29:12.729 [DEBUG] [Thread-199669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:29:12.729 [DEBUG] [Thread-199669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:29:12.729 [DEBUG] [Thread-199669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:29:12.743 [INFO] [Thread-199669] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:29:12.743 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:29:12.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:29:13.573 [DEBUG] [Thread-199669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:29:13.573 [DEBUG] [Thread-199669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:29:13.622 [DEBUG] [Thread-199669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:29:13.623 [DEBUG] [Thread-199669] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:29:13.634 [DEBUG] [Thread-199669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:29:13.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:29:13.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-11-25T00:29:13.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-11-25T00:29:13.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:29:13.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:29:13.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:29:13.680 [DEBUG] [Thread-199669] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:29:15.532 [DEBUG] [Thread-199671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:29:17.889 [DEBUG] [Thread-199672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:29:30.640 [DEBUG] [Thread-199673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:29:43.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:29:43.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:29:43.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:29:44.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 29, 40), 13.41, 39.84, 0.0, 30.58, 13.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:29:44.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:29:40
2025-11-25T00:29:44.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:29:44.987 [DEBUG] [Thread-199674] [transport.py] [_log()] starting thread (client mode): 0xd3193eb0
2025-11-25T00:29:44.988 [DEBUG] [Thread-199674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:29:44.995 [DEBUG] [Thread-199674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:29:44.995 [INFO] [Thread-199674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:29:45.003 [DEBUG] [Thread-199674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:29:45.003 [DEBUG] [Thread-199674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:29:45.003 [DEBUG] [Thread-199674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:29:45.004 [DEBUG] [Thread-199674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:29:45.004 [DEBUG] [Thread-199674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:29:45.004 [DEBUG] [Thread-199674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:29:45.004 [DEBUG] [Thread-199674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:29:45.004 [DEBUG] [Thread-199674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:29:45.004 [DEBUG] [Thread-199674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:29:45.004 [DEBUG] [Thread-199674] [transport.py] [_log()] client lang: <none>
2025-11-25T00:29:45.004 [DEBUG] [Thread-199674] [transport.py] [_log()] server lang: <none>
2025-11-25T00:29:45.004 [DEBUG] [Thread-199674] [transport.py] [_log()] kex follows: False
2025-11-25T00:29:45.004 [DEBUG] [Thread-199674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:29:45.005 [DEBUG] [Thread-199674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:29:45.006 [DEBUG] [Thread-199674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:29:45.006 [DEBUG] [Thread-199674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:29:45.006 [DEBUG] [Thread-199674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:29:45.006 [DEBUG] [Thread-199674] [transport.py] [_log()] Compression: none
2025-11-25T00:29:45.007 [DEBUG] [Thread-199674] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:29:45.039 [DEBUG] [Thread-199674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:29:45.044 [DEBUG] [Thread-199674] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:29:45.045 [DEBUG] [Thread-199674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:29:45.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:29:45.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:29:45.049 [DEBUG] [Thread-199674] [transport.py] [_log()] userauth is OK
2025-11-25T00:29:45.049 [DEBUG] [Thread-199674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:29:45.049 [DEBUG] [Thread-199674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:29:45.049 [DEBUG] [Thread-199674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:29:45.049 [DEBUG] [Thread-199674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:29:45.069 [INFO] [Thread-199674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:29:45.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:29:45.717 [DEBUG] [Thread-199676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:29:45.839 [DEBUG] [Thread-199674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:29:45.839 [DEBUG] [Thread-199674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:29:45.841 [DEBUG] [Thread-199674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:29:45.880 [DEBUG] [Thread-199674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:29:45.881 [DEBUG] [Thread-199674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:29:45.884 [DEBUG] [Thread-199674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:29:45.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:29:45.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:29:45.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:29:45.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:29:45.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:29:45.909 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:29:45.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:29:45.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:29:45.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:29:45.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.936850 -999.00  +13.20  17.96     44   +1.50 1 1 1 1 1     0    0 10.33 -56.77 ZNESW 18.1 18.0 149.6 23.0 13.4 -25.2 13.3 -24.6 13.0 -23.5 13.3 -24.4
2025-11-25T00:29:45.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:29:45.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:29:45.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.936850
2025-11-25T00:29:45.918 [DEBUG] [Thread-199674] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:29:45.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:29:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:29:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:29:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:29:45.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:29:45.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:29:40', tmtdew=13.41, humidity=39.84, cloud=0.0, wind=30.58, temperature=13.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:29:40', seeing=0.76, atlas_timestamp='2025-11-24T22:29:03.840', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:28:00')
2025-11-25T00:29:46.020 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:29:46.032 [DEBUG] [Thread-199678] [transport.py] [_log()] starting thread (client mode): 0xd317dba0
2025-11-25T00:29:46.032 [DEBUG] [Thread-199678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:29:46.046 [DEBUG] [Thread-199678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:29:46.047 [INFO] [Thread-199678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:29:46.054 [DEBUG] [Thread-199678] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:29:46.054 [DEBUG] [Thread-199678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:29:46.054 [DEBUG] [Thread-199678] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:29:46.054 [DEBUG] [Thread-199678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:29:46.054 [DEBUG] [Thread-199678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:29:46.054 [DEBUG] [Thread-199678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:29:46.054 [DEBUG] [Thread-199678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:29:46.054 [DEBUG] [Thread-199678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:29:46.054 [DEBUG] [Thread-199678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:29:46.055 [DEBUG] [Thread-199678] [transport.py] [_log()] client lang: <none>
2025-11-25T00:29:46.055 [DEBUG] [Thread-199678] [transport.py] [_log()] server lang: <none>
2025-11-25T00:29:46.055 [DEBUG] [Thread-199678] [transport.py] [_log()] kex follows: False
2025-11-25T00:29:46.055 [DEBUG] [Thread-199678] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:29:46.055 [DEBUG] [Thread-199678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:29:46.055 [DEBUG] [Thread-199678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:29:46.055 [DEBUG] [Thread-199678] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:29:46.055 [DEBUG] [Thread-199678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:29:46.055 [DEBUG] [Thread-199678] [transport.py] [_log()] Compression: none
2025-11-25T00:29:46.055 [DEBUG] [Thread-199678] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:29:46.113 [DEBUG] [Thread-199678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:29:46.113 [DEBUG] [Thread-199678] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:29:46.114 [DEBUG] [Thread-199678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:29:46.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:29:46.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:29:46.169 [DEBUG] [Thread-199678] [transport.py] [_log()] userauth is OK
2025-11-25T00:29:46.169 [DEBUG] [Thread-199678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:29:46.169 [DEBUG] [Thread-199678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:29:46.170 [DEBUG] [Thread-199678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:29:46.170 [DEBUG] [Thread-199678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:29:46.188 [INFO] [Thread-199678] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:29:46.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:29:46.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:29:47.106 [DEBUG] [Thread-199678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:29:47.106 [DEBUG] [Thread-199678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:29:47.154 [DEBUG] [Thread-199678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:29:47.154 [DEBUG] [Thread-199678] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:29:47.162 [DEBUG] [Thread-199678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:29:47.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:29:47.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-11-25T00:29:47.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-11-25T00:29:47.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:29:47.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:29:47.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:29:47.207 [DEBUG] [Thread-199678] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:30:00.806 [DEBUG] [Thread-199680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:30:09.656 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:30:09.658 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:30:15.941 [DEBUG] [Thread-199681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:30:17.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:30:17.228 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:30:17.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-11-25T00:30:18.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 30, 12), 13.4, 39.89, 0.0, 28.18, 13.26, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:30:18.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:30:12
2025-11-25T00:30:18.140 [DEBUG] [Thread-199682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:30:18.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:30:18.432 [DEBUG] [Thread-199683] [transport.py] [_log()] starting thread (client mode): 0xd3193ac0
2025-11-25T00:30:18.432 [DEBUG] [Thread-199683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:30:18.434 [DEBUG] [Thread-199683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:30:18.434 [INFO] [Thread-199683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] client lang: <none>
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] server lang: <none>
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] kex follows: False
2025-11-25T00:30:18.438 [DEBUG] [Thread-199683] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:30:18.439 [DEBUG] [Thread-199683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:30:18.439 [DEBUG] [Thread-199683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:30:18.439 [DEBUG] [Thread-199683] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:30:18.439 [DEBUG] [Thread-199683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:30:18.439 [DEBUG] [Thread-199683] [transport.py] [_log()] Compression: none
2025-11-25T00:30:18.439 [DEBUG] [Thread-199683] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:30:18.469 [DEBUG] [Thread-199683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:30:18.472 [DEBUG] [Thread-199683] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:30:18.473 [DEBUG] [Thread-199683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:30:18.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:30:18.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:30:18.476 [DEBUG] [Thread-199683] [transport.py] [_log()] userauth is OK
2025-11-25T00:30:18.477 [DEBUG] [Thread-199683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:30:18.477 [DEBUG] [Thread-199683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:30:18.477 [DEBUG] [Thread-199683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:30:18.477 [DEBUG] [Thread-199683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:30:18.497 [INFO] [Thread-199683] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:30:18.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:30:19.097 [DEBUG] [Thread-199683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:30:19.098 [DEBUG] [Thread-199683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:30:19.098 [DEBUG] [Thread-199683] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:30:19.138 [DEBUG] [Thread-199683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:30:19.138 [DEBUG] [Thread-199683] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:30:19.140 [DEBUG] [Thread-199683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:30:19.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:30:19.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:30:19.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:30:19.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:30:19.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:30:19.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:30:19.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:30:19.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:30:19.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:30:19.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.937197 -999.00  +13.20  16.16     44   +1.40 1 1 1 1 1     0    0 10.71 -51.38 ZNESW 14.8 16.2 157.0 25.8 13.4 -25.2 13.3 -24.7 13.0 -23.5 13.3 -24.5
2025-11-25T00:30:19.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:30:19.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:30:19.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.937197
2025-11-25T00:30:19.171 [DEBUG] [Thread-199683] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:30:19.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:30:19.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:30:19.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:30:19.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:30:19.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:30:19.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:30:12', tmtdew=13.4, humidity=39.89, cloud=0.0, wind=28.18, temperature=13.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:30:13', seeing=0.79, atlas_timestamp='2025-11-24T22:29:33.821', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:28:00')
2025-11-25T00:30:19.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:30:19.284 [DEBUG] [Thread-199686] [transport.py] [_log()] starting thread (client mode): 0xd3192b30
2025-11-25T00:30:19.285 [DEBUG] [Thread-199686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:30:19.303 [DEBUG] [Thread-199686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:30:19.303 [INFO] [Thread-199686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] client lang: <none>
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] server lang: <none>
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] kex follows: False
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] Compression: none
2025-11-25T00:30:19.314 [DEBUG] [Thread-199686] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:30:19.371 [DEBUG] [Thread-199686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:30:19.372 [DEBUG] [Thread-199686] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:30:19.372 [DEBUG] [Thread-199686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:30:19.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:30:19.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:30:19.428 [DEBUG] [Thread-199686] [transport.py] [_log()] userauth is OK
2025-11-25T00:30:19.428 [DEBUG] [Thread-199686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:30:19.428 [DEBUG] [Thread-199686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:30:19.428 [DEBUG] [Thread-199686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:30:19.428 [DEBUG] [Thread-199686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:30:19.443 [INFO] [Thread-199686] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:30:19.443 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:30:19.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:30:20.269 [DEBUG] [Thread-199686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:30:20.269 [DEBUG] [Thread-199686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:30:20.317 [DEBUG] [Thread-199686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:30:20.317 [DEBUG] [Thread-199686] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:30:20.325 [DEBUG] [Thread-199686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:30:20.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:30:20.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-11-25T00:30: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') -> 00000000
2025-11-25T00:30:20.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:30:20.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:30:20.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:30:20.357 [DEBUG] [Thread-199686] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:30:31.007 [DEBUG] [Thread-199688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:30:46.176 [DEBUG] [Thread-199689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:30:50.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:30:50.411 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:30:50.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-11-25T00:30:51.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 30, 45), 13.36, 39.86, 0.0, 24.54, 13.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:30:51.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:30:45
2025-11-25T00:30:51.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:30:51.640 [DEBUG] [Thread-199690] [transport.py] [_log()] starting thread (client mode): 0xd31f56f0
2025-11-25T00:30:51.641 [DEBUG] [Thread-199690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:30:51.647 [DEBUG] [Thread-199690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:30:51.647 [INFO] [Thread-199690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:30:51.655 [DEBUG] [Thread-199690] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] client lang: <none>
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] server lang: <none>
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] kex follows: False
2025-11-25T00:30:51.656 [DEBUG] [Thread-199690] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:30:51.657 [DEBUG] [Thread-199690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:30:51.657 [DEBUG] [Thread-199690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:30:51.659 [DEBUG] [Thread-199690] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:30:51.659 [DEBUG] [Thread-199690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:30:51.659 [DEBUG] [Thread-199690] [transport.py] [_log()] Compression: none
2025-11-25T00:30:51.659 [DEBUG] [Thread-199690] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:30:51.695 [DEBUG] [Thread-199690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:30:51.701 [DEBUG] [Thread-199690] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:30:51.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:30:51.706 [DEBUG] [Thread-199690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:30:51.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:30:51.710 [DEBUG] [Thread-199690] [transport.py] [_log()] userauth is OK
2025-11-25T00:30:51.710 [DEBUG] [Thread-199690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:30:51.710 [DEBUG] [Thread-199690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:30:51.711 [DEBUG] [Thread-199690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:30:51.711 [DEBUG] [Thread-199690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:30:51.749 [INFO] [Thread-199690] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:30:51.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:30:52.488 [DEBUG] [Thread-199690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:30:52.488 [DEBUG] [Thread-199690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:30:52.489 [DEBUG] [Thread-199690] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:30:52.529 [DEBUG] [Thread-199690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:30:52.529 [DEBUG] [Thread-199690] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:30:52.532 [DEBUG] [Thread-199690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:30:52.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:30:52.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:30:52.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:30:52.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:30:52.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:30:52.553 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:30:52.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:30:52.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:30:52.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:30:52.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.937544 -999.00  +13.10  19.95     44   +1.40 1 1 1 1 1     0    0 10.83 -49.91 ZNESW 21.2 19.9 144.8 24.6 13.4 -25.2 13.3 -24.8 13.0 -23.6 13.3 -24.2
2025-11-25T00:30:52.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:30:52.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:30:52.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.937544
2025-11-25T00:30:52.561 [DEBUG] [Thread-199690] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:30:52.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:30:52.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:30:52.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:30:52.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:30:52.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:30:52.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:30:45', tmtdew=13.36, humidity=39.86, cloud=0.0, wind=24.54, temperature=13.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:30:45', seeing=0.85, atlas_timestamp='2025-11-24T22:30:03.802', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:28:00')
2025-11-25T00:30:52.642 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:30:52.653 [DEBUG] [Thread-199693] [transport.py] [_log()] starting thread (client mode): 0xc9b83b80
2025-11-25T00:30:52.653 [DEBUG] [Thread-199693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:30:52.668 [DEBUG] [Thread-199693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:30:52.668 [INFO] [Thread-199693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:30:52.675 [DEBUG] [Thread-199693] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:30:52.675 [DEBUG] [Thread-199693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] client lang: <none>
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] server lang: <none>
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] kex follows: False
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] Compression: none
2025-11-25T00:30:52.676 [DEBUG] [Thread-199693] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:30:52.731 [DEBUG] [Thread-199693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:30:52.731 [DEBUG] [Thread-199693] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:30:52.731 [DEBUG] [Thread-199693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:30:52.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:30:52.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:30:52.790 [DEBUG] [Thread-199693] [transport.py] [_log()] userauth is OK
2025-11-25T00:30:52.790 [DEBUG] [Thread-199693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:30:52.790 [DEBUG] [Thread-199693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:30:52.790 [DEBUG] [Thread-199693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:30:52.790 [DEBUG] [Thread-199693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:30:52.803 [INFO] [Thread-199693] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:30:52.804 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:30:52.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:30:53.704 [DEBUG] [Thread-199693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:30:53.704 [DEBUG] [Thread-199693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:30:53.752 [DEBUG] [Thread-199693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:30:53.752 [DEBUG] [Thread-199693] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:30:53.760 [DEBUG] [Thread-199693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:30:53.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:30:53.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-11-25T00:30: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') -> 00000000
2025-11-25T00:30:53.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:30:53.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:30:53.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:30:53.793 [DEBUG] [Thread-199693] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:31:01.246 [DEBUG] [Thread-199695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:31:09.870 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:31:09.873 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:31:16.379 [DEBUG] [Thread-199696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:31:18.402 [DEBUG] [Thread-199697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:31:23.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:31:23.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:31:23.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-11-25T00:31:24.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 31, 18), 13.34, 39.91, 0.0, 25.28, 13.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:31:24.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:31:18
2025-11-25T00:31:24.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:31:25.030 [DEBUG] [Thread-199698] [transport.py] [_log()] starting thread (client mode): 0xc9b83c10
2025-11-25T00:31:25.031 [DEBUG] [Thread-199698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:31:25.040 [DEBUG] [Thread-199698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:31:25.040 [INFO] [Thread-199698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:31:25.047 [DEBUG] [Thread-199698] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:31:25.047 [DEBUG] [Thread-199698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:31:25.047 [DEBUG] [Thread-199698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:31:25.047 [DEBUG] [Thread-199698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:31:25.047 [DEBUG] [Thread-199698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:31:25.047 [DEBUG] [Thread-199698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:31:25.047 [DEBUG] [Thread-199698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:31:25.047 [DEBUG] [Thread-199698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:31:25.048 [DEBUG] [Thread-199698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:31:25.048 [DEBUG] [Thread-199698] [transport.py] [_log()] client lang: <none>
2025-11-25T00:31:25.048 [DEBUG] [Thread-199698] [transport.py] [_log()] server lang: <none>
2025-11-25T00:31:25.048 [DEBUG] [Thread-199698] [transport.py] [_log()] kex follows: False
2025-11-25T00:31:25.048 [DEBUG] [Thread-199698] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:31:25.049 [DEBUG] [Thread-199698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:31:25.049 [DEBUG] [Thread-199698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:31:25.049 [DEBUG] [Thread-199698] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:31:25.049 [DEBUG] [Thread-199698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:31:25.049 [DEBUG] [Thread-199698] [transport.py] [_log()] Compression: none
2025-11-25T00:31:25.049 [DEBUG] [Thread-199698] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:31:25.087 [DEBUG] [Thread-199698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:31:25.093 [DEBUG] [Thread-199698] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:31:25.095 [DEBUG] [Thread-199698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:31:25.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:31:25.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:31:25.101 [DEBUG] [Thread-199698] [transport.py] [_log()] userauth is OK
2025-11-25T00:31:25.101 [DEBUG] [Thread-199698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:31:25.102 [DEBUG] [Thread-199698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:31:25.102 [DEBUG] [Thread-199698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:31:25.102 [DEBUG] [Thread-199698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:31:25.141 [INFO] [Thread-199698] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:31:25.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:31:25.775 [DEBUG] [Thread-199698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:31:25.775 [DEBUG] [Thread-199698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:31:25.776 [DEBUG] [Thread-199698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:31:25.816 [DEBUG] [Thread-199698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:31:25.816 [DEBUG] [Thread-199698] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:31:25.819 [DEBUG] [Thread-199698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:31:25.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:31:25.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:31:25.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:31:25.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:31:25.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:31:25.842 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:31:25.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:31:25.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:31:25.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:31:25.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.937892 -999.00  +13.10  18.95     44   +1.30 1 1 1 1 1     0    0 10.91 -46.70 ZNESW 17.8 18.9 157.0 26.6 13.4 -25.2 13.2 -24.8 13.1 -23.6 13.3 -24.5
2025-11-25T00:31:25.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:31:25.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:31:25.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.937892
2025-11-25T00:31:25.849 [DEBUG] [Thread-199698] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:31:25.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:31:25.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:31:25.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:31:25.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:31:25.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:31:25.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:31:18', tmtdew=13.34, humidity=39.91, cloud=0.0, wind=25.28, temperature=13.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:31:19', seeing=1.11, atlas_timestamp='2025-11-24T22:30:33.869', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:28:00')
2025-11-25T00:31:25.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:31:25.960 [DEBUG] [Thread-199701] [transport.py] [_log()] starting thread (client mode): 0xd314b7f0
2025-11-25T00:31:25.960 [DEBUG] [Thread-199701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:31:25.975 [DEBUG] [Thread-199701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:31:25.975 [INFO] [Thread-199701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] client lang: <none>
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] server lang: <none>
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] kex follows: False
2025-11-25T00:31:25.983 [DEBUG] [Thread-199701] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:31:25.984 [DEBUG] [Thread-199701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:31:25.984 [DEBUG] [Thread-199701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:31:25.984 [DEBUG] [Thread-199701] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:31:25.984 [DEBUG] [Thread-199701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:31:25.984 [DEBUG] [Thread-199701] [transport.py] [_log()] Compression: none
2025-11-25T00:31:25.984 [DEBUG] [Thread-199701] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:31:26.041 [DEBUG] [Thread-199701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:31:26.042 [DEBUG] [Thread-199701] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:31:26.042 [DEBUG] [Thread-199701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:31:26.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:31:26.043 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:31:26.097 [DEBUG] [Thread-199701] [transport.py] [_log()] userauth is OK
2025-11-25T00:31:26.097 [DEBUG] [Thread-199701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:31:26.098 [DEBUG] [Thread-199701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:31:26.098 [DEBUG] [Thread-199701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:31:26.098 [DEBUG] [Thread-199701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:31:26.117 [INFO] [Thread-199701] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:31:26.117 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:31:26.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:31:26.937 [DEBUG] [Thread-199701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:31:26.937 [DEBUG] [Thread-199701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:31:26.985 [DEBUG] [Thread-199701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:31:26.986 [DEBUG] [Thread-199701] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:31:26.995 [DEBUG] [Thread-199701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:31:27.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:31:27.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-11-25T00:31:27.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-11-25T00:31:27.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:31:27.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:31:27.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:31:27.041 [DEBUG] [Thread-199701] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:31:31.438 [DEBUG] [Thread-199703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:31:46.579 [DEBUG] [Thread-199704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:31:57.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:31:57.090 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:31:57.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-11-25T00:31:57.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 31, 52), 13.32, 39.96, 0.0, 24.23, 13.13, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:31:57.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:31:52
2025-11-25T00:31:58.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:31:58.302 [DEBUG] [Thread-199705] [transport.py] [_log()] starting thread (client mode): 0xd31515a0
2025-11-25T00:31:58.303 [DEBUG] [Thread-199705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:31:58.307 [DEBUG] [Thread-199705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:31:58.307 [INFO] [Thread-199705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:31:58.313 [DEBUG] [Thread-199705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:31:58.313 [DEBUG] [Thread-199705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:31:58.313 [DEBUG] [Thread-199705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:31:58.313 [DEBUG] [Thread-199705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:31:58.314 [DEBUG] [Thread-199705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:31:58.314 [DEBUG] [Thread-199705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:31:58.314 [DEBUG] [Thread-199705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:31:58.314 [DEBUG] [Thread-199705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:31:58.314 [DEBUG] [Thread-199705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:31:58.314 [DEBUG] [Thread-199705] [transport.py] [_log()] client lang: <none>
2025-11-25T00:31:58.314 [DEBUG] [Thread-199705] [transport.py] [_log()] server lang: <none>
2025-11-25T00:31:58.314 [DEBUG] [Thread-199705] [transport.py] [_log()] kex follows: False
2025-11-25T00:31:58.314 [DEBUG] [Thread-199705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:31:58.315 [DEBUG] [Thread-199705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:31:58.315 [DEBUG] [Thread-199705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:31:58.315 [DEBUG] [Thread-199705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:31:58.315 [DEBUG] [Thread-199705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:31:58.315 [DEBUG] [Thread-199705] [transport.py] [_log()] Compression: none
2025-11-25T00:31:58.315 [DEBUG] [Thread-199705] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:31:58.354 [DEBUG] [Thread-199705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:31:58.360 [DEBUG] [Thread-199705] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:31:58.362 [DEBUG] [Thread-199705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:31:58.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:31:58.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:31:58.366 [DEBUG] [Thread-199705] [transport.py] [_log()] userauth is OK
2025-11-25T00:31:58.367 [DEBUG] [Thread-199705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:31:58.367 [DEBUG] [Thread-199705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:31:58.367 [DEBUG] [Thread-199705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:31:58.367 [DEBUG] [Thread-199705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:31:58.394 [INFO] [Thread-199705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:31:58.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:31:59.077 [DEBUG] [Thread-199705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:31:59.077 [DEBUG] [Thread-199705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:31:59.079 [DEBUG] [Thread-199705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:31:59.119 [DEBUG] [Thread-199705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:31:59.119 [DEBUG] [Thread-199705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:31:59.123 [DEBUG] [Thread-199705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:31:59.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:31:59.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:31:59.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:31:59.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:31:59.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:31:59.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:31:59.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:31:59.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:31:59.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:31:59.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.938239 -999.00  +13.10  15.96     45   +1.40 1 1 1 1 1     0    0 10.76 -44.92 ZNESW 21.6 16.0 158.8 25.8 13.4 -25.2 13.2 -24.7 13.0 -23.5 13.3 -24.4
2025-11-25T00:31:59.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:31:59.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:31:59.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.938239
2025-11-25T00:31:59.157 [DEBUG] [Thread-199705] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:31:59.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:31:59.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:31:59.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:31:59.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:31:59.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:31:59.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:31:52', tmtdew=13.32, humidity=39.96, cloud=0.0, wind=24.23, temperature=13.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:31:52', seeing=0.86, atlas_timestamp='2025-11-24T22:31:03.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:28:00')
2025-11-25T00:31:59.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:31:59.273 [DEBUG] [Thread-199708] [transport.py] [_log()] starting thread (client mode): 0xd31510c0
2025-11-25T00:31:59.273 [DEBUG] [Thread-199708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:31:59.289 [DEBUG] [Thread-199708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:31:59.289 [INFO] [Thread-199708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:31:59.296 [DEBUG] [Thread-199708] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:31:59.296 [DEBUG] [Thread-199708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:31:59.296 [DEBUG] [Thread-199708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:31:59.296 [DEBUG] [Thread-199708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] client lang: <none>
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] server lang: <none>
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] kex follows: False
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] Compression: none
2025-11-25T00:31:59.297 [DEBUG] [Thread-199708] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:31:59.356 [DEBUG] [Thread-199708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:31:59.356 [DEBUG] [Thread-199708] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:31:59.357 [DEBUG] [Thread-199708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:31:59.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:31:59.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:31:59.413 [DEBUG] [Thread-199708] [transport.py] [_log()] userauth is OK
2025-11-25T00:31:59.413 [DEBUG] [Thread-199708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:31:59.413 [DEBUG] [Thread-199708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:31:59.413 [DEBUG] [Thread-199708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:31:59.413 [DEBUG] [Thread-199708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:31:59.432 [INFO] [Thread-199708] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:31:59.433 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:31:59.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:32:00.308 [DEBUG] [Thread-199708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:32:00.308 [DEBUG] [Thread-199708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:32:00.356 [DEBUG] [Thread-199708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:32:00.356 [DEBUG] [Thread-199708] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:32:00.365 [DEBUG] [Thread-199708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:32:00.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:32:00.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-11-25T00:32:00.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-11-25T00:32:00.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:32:00.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:32:00.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:32:00.401 [DEBUG] [Thread-199708] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:32:01.677 [DEBUG] [Thread-199710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:32:10.090 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:32:10.092 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:32:16.823 [DEBUG] [Thread-199711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:32:18.649 [DEBUG] [Thread-199712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:32:30.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:32:30.414 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:32:30.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-11-25T00:32:31.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 32, 25), 13.35, 39.89, 0.0, 22.36, 13.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:32:31.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:32:25
2025-11-25T00:32:31.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:32:31.545 [DEBUG] [Thread-199713] [transport.py] [_log()] starting thread (client mode): 0xd0739330
2025-11-25T00:32:31.545 [DEBUG] [Thread-199713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:32:31.557 [DEBUG] [Thread-199713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:32:31.557 [INFO] [Thread-199713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:32:31.564 [DEBUG] [Thread-199713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:32:31.565 [DEBUG] [Thread-199713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:32:31.565 [DEBUG] [Thread-199713] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:32:31.565 [DEBUG] [Thread-199713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:32:31.565 [DEBUG] [Thread-199713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:32:31.565 [DEBUG] [Thread-199713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:32:31.565 [DEBUG] [Thread-199713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:32:31.566 [DEBUG] [Thread-199713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:32:31.566 [DEBUG] [Thread-199713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:32:31.566 [DEBUG] [Thread-199713] [transport.py] [_log()] client lang: <none>
2025-11-25T00:32:31.566 [DEBUG] [Thread-199713] [transport.py] [_log()] server lang: <none>
2025-11-25T00:32:31.566 [DEBUG] [Thread-199713] [transport.py] [_log()] kex follows: False
2025-11-25T00:32:31.566 [DEBUG] [Thread-199713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:32:31.567 [DEBUG] [Thread-199713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:32:31.567 [DEBUG] [Thread-199713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:32:31.567 [DEBUG] [Thread-199713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:32:31.567 [DEBUG] [Thread-199713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:32:31.567 [DEBUG] [Thread-199713] [transport.py] [_log()] Compression: none
2025-11-25T00:32:31.567 [DEBUG] [Thread-199713] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:32:31.606 [DEBUG] [Thread-199713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:32:31.612 [DEBUG] [Thread-199713] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:32:31.613 [DEBUG] [Thread-199713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:32:31.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:32:31.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:32:31.618 [DEBUG] [Thread-199713] [transport.py] [_log()] userauth is OK
2025-11-25T00:32:31.619 [DEBUG] [Thread-199713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:32:31.619 [DEBUG] [Thread-199713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:32:31.619 [DEBUG] [Thread-199713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:32:31.619 [DEBUG] [Thread-199713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:32:31.660 [INFO] [Thread-199713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:32:31.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:32:31.889 [DEBUG] [Thread-199715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:32:32.291 [DEBUG] [Thread-199713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:32:32.291 [DEBUG] [Thread-199713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:32:32.292 [DEBUG] [Thread-199713] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:32:32.332 [DEBUG] [Thread-199713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:32:32.332 [DEBUG] [Thread-199713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:32:32.335 [DEBUG] [Thread-199713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:32:32.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:32:32.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:32:32.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:32:32.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:32:32.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:32:32.356 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:32:32.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:32:32.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:32:32.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:32:32.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.938933 -999.00  +13.10  22.26     45   +1.50 1 1 1 1 1     0    0 10.59 -45.58 ZNESW 21.3 22.3 162.3 27.7 13.3 -25.0 13.2 -24.6 13.0 -23.2 13.3 -24.3
2025-11-25T00:32:32.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:32:32.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:32:32.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.938933
2025-11-25T00:32:32.363 [DEBUG] [Thread-199713] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:32:32.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:32:32.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:32:32.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:32:32.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:32:32.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:32:32.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:32:25', tmtdew=13.35, humidity=39.89, cloud=0.0, wind=22.36, temperature=13.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:32:25', seeing=0.87, atlas_timestamp='2025-11-24T22:32:03.811', atlas_cloud=1, atlas_rain=1, zp_data=[-0.028249999999999886, -0.048749999999998295, -0.013249999999999318, -0.03200000000000003, 0.01750000000000007, 0.03725000000000023, 0.007999999999999119, -0.03074999999999939, -0.05550000000000033, -0.0039999999999995595, 0.03924999999999912, -0.05400000000000027, 0.08699999999999974, 0.05025000000000013, -0.0129999999999999, -0.02800000000000047, -0.00575000000000081, 0.005499999999999616, 0.023999999999999133, -0.03775000000000084, 0.022499999999999076, 0.053249999999998465, 0.04925000000000068, 0.006750000000000256, -0.025000000000000355, -0.009499999999999176, -0.017250000000000654, 0.0235000000000003, 0.1120000000000001, 0.02800000000000047, 0.09300000000000175, -0.022999999999999687, -0.022250000000001435], zp_timestamp='2025-11-24T22:28:00')
2025-11-25T00:32:32.464 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:32:32.476 [DEBUG] [Thread-199717] [transport.py] [_log()] starting thread (client mode): 0xd317cac0
2025-11-25T00:32:32.476 [DEBUG] [Thread-199717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:32:32.491 [DEBUG] [Thread-199717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:32:32.491 [INFO] [Thread-199717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] client lang: <none>
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] server lang: <none>
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] kex follows: False
2025-11-25T00:32:32.498 [DEBUG] [Thread-199717] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:32:32.499 [DEBUG] [Thread-199717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:32:32.499 [DEBUG] [Thread-199717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:32:32.499 [DEBUG] [Thread-199717] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:32:32.499 [DEBUG] [Thread-199717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:32:32.499 [DEBUG] [Thread-199717] [transport.py] [_log()] Compression: none
2025-11-25T00:32:32.499 [DEBUG] [Thread-199717] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:32:32.559 [DEBUG] [Thread-199717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:32:32.559 [DEBUG] [Thread-199717] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:32:32.560 [DEBUG] [Thread-199717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:32:32.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:32:32.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:32:32.616 [DEBUG] [Thread-199717] [transport.py] [_log()] userauth is OK
2025-11-25T00:32:32.616 [DEBUG] [Thread-199717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:32:32.616 [DEBUG] [Thread-199717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:32:32.616 [DEBUG] [Thread-199717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:32:32.616 [DEBUG] [Thread-199717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:32:32.631 [INFO] [Thread-199717] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:32:32.631 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:32:32.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:32:33.490 [DEBUG] [Thread-199717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:32:33.490 [DEBUG] [Thread-199717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:32:33.539 [DEBUG] [Thread-199717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:32:33.539 [DEBUG] [Thread-199717] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:32:33.548 [DEBUG] [Thread-199717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:32:33.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:32:33.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-11-25T00:32:33.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-11-25T00:32:33.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:32:33.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:32:33.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:32:33.583 [DEBUG] [Thread-199717] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:32:46.929 [DEBUG] [Thread-199719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:33:02.192 [DEBUG] [Thread-199720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:33:03.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:33:03.610 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:33:03.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:33:04.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 32, 58), 13.25, 39.89, 0.0, 25.41, 13.18, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:33:04.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:32:58
2025-11-25T00:33:05.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:33:05.354 [DEBUG] [Thread-199721] [transport.py] [_log()] starting thread (client mode): 0xd319f3a0
2025-11-25T00:33:05.355 [DEBUG] [Thread-199721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:33:05.355 [DEBUG] [Thread-199721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:33:05.355 [INFO] [Thread-199721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] client lang: <none>
2025-11-25T00:33:05.359 [DEBUG] [Thread-199721] [transport.py] [_log()] server lang: <none>
2025-11-25T00:33:05.360 [DEBUG] [Thread-199721] [transport.py] [_log()] kex follows: False
2025-11-25T00:33:05.360 [DEBUG] [Thread-199721] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:33:05.360 [DEBUG] [Thread-199721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:33:05.360 [DEBUG] [Thread-199721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:33:05.360 [DEBUG] [Thread-199721] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:33:05.360 [DEBUG] [Thread-199721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:33:05.360 [DEBUG] [Thread-199721] [transport.py] [_log()] Compression: none
2025-11-25T00:33:05.361 [DEBUG] [Thread-199721] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:33:05.398 [DEBUG] [Thread-199721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:33:05.403 [DEBUG] [Thread-199721] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:33:05.404 [DEBUG] [Thread-199721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:33:05.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:33:05.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:33:05.410 [DEBUG] [Thread-199721] [transport.py] [_log()] userauth is OK
2025-11-25T00:33:05.410 [DEBUG] [Thread-199721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:33:05.410 [DEBUG] [Thread-199721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:33:05.410 [DEBUG] [Thread-199721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:33:05.410 [DEBUG] [Thread-199721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:33:05.437 [INFO] [Thread-199721] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:33:05.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:33:06.061 [DEBUG] [Thread-199721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:33:06.061 [DEBUG] [Thread-199721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:33:06.063 [DEBUG] [Thread-199721] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:33:06.102 [DEBUG] [Thread-199721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:33:06.102 [DEBUG] [Thread-199721] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:33:06.105 [DEBUG] [Thread-199721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:33:06.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:33:06.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:33:06.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:33:06.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:33:06.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:33:06.131 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:33:06.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:33:06.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:33:06.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:33:06.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.939280 -999.00  +13.20  17.81     45   +1.50 1 1 1 1 1     0    0 10.73 -45.55 ZNESW 16.3 17.8 151.2 27.0 13.4 -25.2 13.2 -24.4 13.0 -23.4 13.3 -24.3
2025-11-25T00:33:06.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:33:06.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:33:06.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.939280
2025-11-25T00:33:06.139 [DEBUG] [Thread-199721] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:33:06.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:33:06.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:33:06.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:33:06.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:33:06.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:33:06.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:32:58', tmtdew=13.25, humidity=39.89, cloud=0.0, wind=25.41, temperature=13.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:32:58', seeing=0.97, atlas_timestamp='2025-11-24T22:32:33.792', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.01875000000000071, 0.03325000000000067, 0.028499999999999304, 0.05450000000000088, 0.10575000000000045, 0.05999999999999872, 0.045249999999999346, 0.02949999999999875, 0.02200000000000024, 0.056250000000000355, 0.01550000000000118, 0.12150000000000105, 0.10324999999999918, 0.05699999999999861, 0.017999999999998906, 0.05325000000000024, 0.028499999999999304, 0.04099999999999859, 0.010249999999999204, 0.08499999999999908, 0.10774999999999935, 0.08275000000000077, 0.022250000000001435, 0.01750000000000007, 0.013500000000000512, 0.021750000000000824, 0.10200000000000031, 0.14250000000000007, 0.10900000000000176, 0.1620000000000008, 0.009000000000000341, -0.004250000000000753], zp_timestamp='2025-11-24T22:30:00')
2025-11-25T00:33:06.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:33:06.254 [DEBUG] [Thread-199724] [transport.py] [_log()] starting thread (client mode): 0xd319fa90
2025-11-25T00:33:06.254 [DEBUG] [Thread-199724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:33:06.269 [DEBUG] [Thread-199724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:33:06.269 [INFO] [Thread-199724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:33:06.276 [DEBUG] [Thread-199724] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:33:06.276 [DEBUG] [Thread-199724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:33:06.276 [DEBUG] [Thread-199724] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:33:06.276 [DEBUG] [Thread-199724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:33:06.276 [DEBUG] [Thread-199724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] client lang: <none>
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] server lang: <none>
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] kex follows: False
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] Compression: none
2025-11-25T00:33:06.277 [DEBUG] [Thread-199724] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:33:06.337 [DEBUG] [Thread-199724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:33:06.338 [DEBUG] [Thread-199724] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:33:06.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:33:06.339 [DEBUG] [Thread-199724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:33:06.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:33:06.397 [DEBUG] [Thread-199724] [transport.py] [_log()] userauth is OK
2025-11-25T00:33:06.397 [DEBUG] [Thread-199724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:33:06.397 [DEBUG] [Thread-199724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:33:06.398 [DEBUG] [Thread-199724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:33:06.398 [DEBUG] [Thread-199724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:33:06.423 [INFO] [Thread-199724] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:33:06.424 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:33:06.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:33:07.300 [DEBUG] [Thread-199724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:33:07.301 [DEBUG] [Thread-199724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:33:07.349 [DEBUG] [Thread-199724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:33:07.349 [DEBUG] [Thread-199724] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:33:07.364 [DEBUG] [Thread-199724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:33:07.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:33:07.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-11-25T00:33:07.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-11-25T00:33:07.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:33:07.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:33:07.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:33:07.412 [DEBUG] [Thread-199724] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:33:10.304 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:33:10.305 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:33:17.291 [DEBUG] [Thread-199726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:33:18.869 [DEBUG] [Thread-199727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:33:32.413 [DEBUG] [Thread-199728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:33:37.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:33:37.438 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:33:37.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-11-25T00:33:38.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 33, 30), 13.24, 39.89, 0.0, 26.57, 13.13, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:33:38.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:33:30
2025-11-25T00:33:38.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:33:38.621 [DEBUG] [Thread-199729] [transport.py] [_log()] starting thread (client mode): 0xd3151180
2025-11-25T00:33:38.622 [DEBUG] [Thread-199729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:33:38.632 [DEBUG] [Thread-199729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:33:38.632 [INFO] [Thread-199729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:33:38.637 [DEBUG] [Thread-199729] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] client lang: <none>
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] server lang: <none>
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] kex follows: False
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:33:38.638 [DEBUG] [Thread-199729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:33:38.639 [DEBUG] [Thread-199729] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:33:38.639 [DEBUG] [Thread-199729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:33:38.639 [DEBUG] [Thread-199729] [transport.py] [_log()] Compression: none
2025-11-25T00:33:38.639 [DEBUG] [Thread-199729] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:33:38.672 [DEBUG] [Thread-199729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:33:38.676 [DEBUG] [Thread-199729] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:33:38.678 [DEBUG] [Thread-199729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:33:38.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:33:38.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:33:38.682 [DEBUG] [Thread-199729] [transport.py] [_log()] userauth is OK
2025-11-25T00:33:38.682 [DEBUG] [Thread-199729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:33:38.682 [DEBUG] [Thread-199729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:33:38.682 [DEBUG] [Thread-199729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:33:38.682 [DEBUG] [Thread-199729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:33:38.700 [INFO] [Thread-199729] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:33:38.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:33:39.354 [DEBUG] [Thread-199729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:33:39.354 [DEBUG] [Thread-199729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:33:39.355 [DEBUG] [Thread-199729] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:33:39.395 [DEBUG] [Thread-199729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:33:39.395 [DEBUG] [Thread-199729] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:33:39.398 [DEBUG] [Thread-199729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:33:39.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:33:39.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:33:39.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:33:39.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:33:39.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:33:39.419 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:33:39.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:33:39.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:33:39.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:33:39.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.939628 -999.00  +13.10  16.46     45   +1.40 1 1 1 1 1     0    0 10.60 -43.48 ZNESW 19.9 16.5 150.3 22.4 13.4 -25.2 13.2 -24.6 13.0 -23.6 13.3 -24.3
2025-11-25T00:33:39.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:33:39.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:33:39.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.939628
2025-11-25T00:33:39.426 [DEBUG] [Thread-199729] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:33:39.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:33:39.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:33:39.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:33:39.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:33:39.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:33:39.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:33:30', tmtdew=13.24, humidity=39.89, cloud=0.0, wind=26.57, temperature=13.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:33:31', seeing=0.97, atlas_timestamp='2025-11-24T22:33:03.859', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.01875000000000071, 0.03325000000000067, 0.028499999999999304, 0.05450000000000088, 0.10575000000000045, 0.05999999999999872, 0.045249999999999346, 0.02949999999999875, 0.02200000000000024, 0.056250000000000355, 0.01550000000000118, 0.12150000000000105, 0.10324999999999918, 0.05699999999999861, 0.017999999999998906, 0.05325000000000024, 0.028499999999999304, 0.04099999999999859, 0.010249999999999204, 0.08499999999999908, 0.10774999999999935, 0.08275000000000077, 0.022250000000001435, 0.01750000000000007, 0.013500000000000512, 0.021750000000000824, 0.10200000000000031, 0.14250000000000007, 0.10900000000000176, 0.1620000000000008, 0.009000000000000341, -0.004250000000000753], zp_timestamp='2025-11-24T22:30:00')
2025-11-25T00:33:39.513 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:33:39.525 [DEBUG] [Thread-199732] [transport.py] [_log()] starting thread (client mode): 0xd3152320
2025-11-25T00:33:39.526 [DEBUG] [Thread-199732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:33:39.541 [DEBUG] [Thread-199732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:33:39.541 [INFO] [Thread-199732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] client lang: <none>
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] server lang: <none>
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] kex follows: False
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:33:39.549 [DEBUG] [Thread-199732] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:33:39.550 [DEBUG] [Thread-199732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:33:39.550 [DEBUG] [Thread-199732] [transport.py] [_log()] Compression: none
2025-11-25T00:33:39.550 [DEBUG] [Thread-199732] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:33:39.607 [DEBUG] [Thread-199732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:33:39.607 [DEBUG] [Thread-199732] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:33:39.607 [DEBUG] [Thread-199732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:33:39.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:33:39.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:33:39.664 [DEBUG] [Thread-199732] [transport.py] [_log()] userauth is OK
2025-11-25T00:33:39.664 [DEBUG] [Thread-199732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:33:39.664 [DEBUG] [Thread-199732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:33:39.664 [DEBUG] [Thread-199732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:33:39.664 [DEBUG] [Thread-199732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:33:39.678 [INFO] [Thread-199732] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:33:39.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:33:39.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:33:40.516 [DEBUG] [Thread-199732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:33:40.516 [DEBUG] [Thread-199732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:33:40.563 [DEBUG] [Thread-199732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:33:40.563 [DEBUG] [Thread-199732] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:33:40.571 [DEBUG] [Thread-199732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:33:40.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:33:40.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-11-25T00:33:40.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-11-25T00:33:40.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:33:40.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:33:40.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:33:40.605 [DEBUG] [Thread-199732] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:33:47.477 [DEBUG] [Thread-199734 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:34:02.601 [DEBUG] [Thread-199735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:34:03.463 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:34:06.001 [DEBUG] [Thread-195937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:34:10.513 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:34:10.514 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:34:10.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:34:10.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:34:10.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-11-25T00:34:11.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 34, 3), 13.22, 39.94, 0.0, 25.41, 13.1, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:34:11.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:34:03
2025-11-25T00:34:11.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:34:11.875 [DEBUG] [Thread-199736] [transport.py] [_log()] starting thread (client mode): 0xd31520e0
2025-11-25T00:34:11.875 [DEBUG] [Thread-199736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:34:11.890 [DEBUG] [Thread-199736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:34:11.890 [INFO] [Thread-199736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:34:11.894 [DEBUG] [Thread-199736] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:34:11.894 [DEBUG] [Thread-199736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:34:11.894 [DEBUG] [Thread-199736] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:34:11.894 [DEBUG] [Thread-199736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:34:11.894 [DEBUG] [Thread-199736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:34:11.894 [DEBUG] [Thread-199736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:34:11.894 [DEBUG] [Thread-199736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:34:11.894 [DEBUG] [Thread-199736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] client lang: <none>
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] server lang: <none>
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] kex follows: False
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] Compression: none
2025-11-25T00:34:11.895 [DEBUG] [Thread-199736] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:34:11.913 [DEBUG] [Thread-199736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:34:11.916 [DEBUG] [Thread-199736] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:34:11.918 [DEBUG] [Thread-199736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:34:11.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:34:11.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:34:11.923 [DEBUG] [Thread-199736] [transport.py] [_log()] userauth is OK
2025-11-25T00:34:11.923 [DEBUG] [Thread-199736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:34:11.923 [DEBUG] [Thread-199736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:34:11.923 [DEBUG] [Thread-199736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:34:11.924 [DEBUG] [Thread-199736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:34:11.949 [INFO] [Thread-199736] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:34:11.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:34:12.562 [DEBUG] [Thread-199736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:34:12.562 [DEBUG] [Thread-199736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:34:12.565 [DEBUG] [Thread-199736] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:34:12.604 [DEBUG] [Thread-199736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:34:12.604 [DEBUG] [Thread-199736] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:34:12.607 [DEBUG] [Thread-199736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:34:12.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:34:12.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:34:12.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:34:12.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:34:12.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:34:12.628 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:34:12.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:34:12.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:34:12.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:34:12.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.939975 -999.00  +13.10  19.66     45   +1.40 1 1 1 1 1     0    0 10.86 -41.00 ZNESW 17.2 19.7 148.0 23.1 13.4 -25.1 13.2 -24.6 13.0 -23.5 13.3 -24.4
2025-11-25T00:34:12.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:34:12.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:34:12.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.939975
2025-11-25T00:34:12.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:34:12.635 [DEBUG] [Thread-199736] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:34:12.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:34:12.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:34:12.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:34:12.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:34:12.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:34:03', tmtdew=13.22, humidity=39.94, cloud=0.0, wind=25.41, temperature=13.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:34:04', seeing=0.98, atlas_timestamp='2025-11-24T22:33:33.840', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.01875000000000071, 0.03325000000000067, 0.028499999999999304, 0.05450000000000088, 0.10575000000000045, 0.05999999999999872, 0.045249999999999346, 0.02949999999999875, 0.02200000000000024, 0.056250000000000355, 0.01550000000000118, 0.12150000000000105, 0.10324999999999918, 0.05699999999999861, 0.017999999999998906, 0.05325000000000024, 0.028499999999999304, 0.04099999999999859, 0.010249999999999204, 0.08499999999999908, 0.10774999999999935, 0.08275000000000077, 0.022250000000001435, 0.01750000000000007, 0.013500000000000512, 0.021750000000000824, 0.10200000000000031, 0.14250000000000007, 0.10900000000000176, 0.1620000000000008, 0.009000000000000341, -0.004250000000000753], zp_timestamp='2025-11-24T22:30:00')
2025-11-25T00:34:12.719 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:34:12.731 [DEBUG] [Thread-199739] [transport.py] [_log()] starting thread (client mode): 0xd319fbe0
2025-11-25T00:34:12.731 [DEBUG] [Thread-199739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:34:12.745 [DEBUG] [Thread-199739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:34:12.745 [INFO] [Thread-199739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:34:12.753 [DEBUG] [Thread-199739] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:34:12.753 [DEBUG] [Thread-199739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:34:12.754 [DEBUG] [Thread-199739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:34:12.754 [DEBUG] [Thread-199739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:34:12.754 [DEBUG] [Thread-199739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:34:12.754 [DEBUG] [Thread-199739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:34:12.754 [DEBUG] [Thread-199739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:34:12.754 [DEBUG] [Thread-199739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:34:12.754 [DEBUG] [Thread-199739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:34:12.754 [DEBUG] [Thread-199739] [transport.py] [_log()] client lang: <none>
2025-11-25T00:34:12.755 [DEBUG] [Thread-199739] [transport.py] [_log()] server lang: <none>
2025-11-25T00:34:12.755 [DEBUG] [Thread-199739] [transport.py] [_log()] kex follows: False
2025-11-25T00:34:12.755 [DEBUG] [Thread-199739] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:34:12.755 [DEBUG] [Thread-199739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:34:12.755 [DEBUG] [Thread-199739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:34:12.755 [DEBUG] [Thread-199739] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:34:12.756 [DEBUG] [Thread-199739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:34:12.756 [DEBUG] [Thread-199739] [transport.py] [_log()] Compression: none
2025-11-25T00:34:12.756 [DEBUG] [Thread-199739] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:34:12.814 [DEBUG] [Thread-199739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:34:12.815 [DEBUG] [Thread-199739] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:34:12.817 [DEBUG] [Thread-199739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:34:12.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:34:12.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:34:12.873 [DEBUG] [Thread-199739] [transport.py] [_log()] userauth is OK
2025-11-25T00:34:12.873 [DEBUG] [Thread-199739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:34:12.873 [DEBUG] [Thread-199739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:34:12.874 [DEBUG] [Thread-199739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:34:12.874 [DEBUG] [Thread-199739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:34:12.895 [INFO] [Thread-199739] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:34:12.896 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:34:12.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:34:13.680 [DEBUG] [Thread-195937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:34:13.722 [DEBUG] [Thread-199739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:34:13.722 [DEBUG] [Thread-199739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:34:13.770 [DEBUG] [Thread-199739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:34:13.770 [DEBUG] [Thread-199739] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:34:13.778 [DEBUG] [Thread-199739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:34:13.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:34:13.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-11-25T00:34:13.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-11-25T00:34:13.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:34:13.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:34:13.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:34:13.814 [DEBUG] [Thread-199739] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:34:17.634 [DEBUG] [Thread-199741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:34:19.116 [DEBUG] [Thread-199742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:34:32.738 [DEBUG] [Thread-199743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:34:43.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:34:43.842 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:34:43.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-11-25T00:34:45.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 34, 37), 13.26, 39.99, 0.0, 23.4, 13.14, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:34:45.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:34:37
2025-11-25T00:34:45.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:34:45.519 [DEBUG] [Thread-199744] [transport.py] [_log()] starting thread (client mode): 0xd319f370
2025-11-25T00:34:45.519 [DEBUG] [Thread-199744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:34:45.530 [DEBUG] [Thread-199744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:34:45.530 [INFO] [Thread-199744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:34:45.537 [DEBUG] [Thread-199744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:34:45.537 [DEBUG] [Thread-199744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:34:45.537 [DEBUG] [Thread-199744] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:34:45.537 [DEBUG] [Thread-199744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:34:45.537 [DEBUG] [Thread-199744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:34:45.538 [DEBUG] [Thread-199744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:34:45.538 [DEBUG] [Thread-199744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:34:45.538 [DEBUG] [Thread-199744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:34:45.538 [DEBUG] [Thread-199744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:34:45.538 [DEBUG] [Thread-199744] [transport.py] [_log()] client lang: <none>
2025-11-25T00:34:45.538 [DEBUG] [Thread-199744] [transport.py] [_log()] server lang: <none>
2025-11-25T00:34:45.538 [DEBUG] [Thread-199744] [transport.py] [_log()] kex follows: False
2025-11-25T00:34:45.538 [DEBUG] [Thread-199744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:34:45.539 [DEBUG] [Thread-199744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:34:45.539 [DEBUG] [Thread-199744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:34:45.539 [DEBUG] [Thread-199744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:34:45.539 [DEBUG] [Thread-199744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:34:45.540 [DEBUG] [Thread-199744] [transport.py] [_log()] Compression: none
2025-11-25T00:34:45.540 [DEBUG] [Thread-199744] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:34:45.579 [DEBUG] [Thread-199744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:34:45.585 [DEBUG] [Thread-199744] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:34:45.587 [DEBUG] [Thread-199744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:34:45.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:34:45.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:34:45.591 [DEBUG] [Thread-199744] [transport.py] [_log()] userauth is OK
2025-11-25T00:34:45.592 [DEBUG] [Thread-199744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:34:45.592 [DEBUG] [Thread-199744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:34:45.592 [DEBUG] [Thread-199744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:34:45.592 [DEBUG] [Thread-199744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:34:45.622 [INFO] [Thread-199744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:34:45.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:34:46.257 [DEBUG] [Thread-199744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:34:46.257 [DEBUG] [Thread-199744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:34:46.258 [DEBUG] [Thread-199744] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:34:46.298 [DEBUG] [Thread-199744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:34:46.298 [DEBUG] [Thread-199744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:34:46.300 [DEBUG] [Thread-199744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:34:46.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:34:46.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:34:46.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:34:46.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:34:46.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:34:46.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:34:46.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:34:46.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:34:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:34:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.940322 -999.00  +13.10  19.56     44   +1.40 1 1 1 1 1     0    0 10.77 -42.88 ZNESW 17.8 19.6 140.6 24.7 13.4 -25.1 13.2 -24.5 13.0 -23.5 13.3 -24.4
2025-11-25T00:34:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:34:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:34:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.940322
2025-11-25T00:34:46.327 [DEBUG] [Thread-199744] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:34:46.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:34:46.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:34:46.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:34:46.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:34:46.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:34:46.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:34:37', tmtdew=13.26, humidity=39.99, cloud=0.0, wind=23.4, temperature=13.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:34:37', seeing=1.0, atlas_timestamp='2025-11-24T22:34:03.821', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.01875000000000071, 0.03325000000000067, 0.028499999999999304, 0.05450000000000088, 0.10575000000000045, 0.05999999999999872, 0.045249999999999346, 0.02949999999999875, 0.02200000000000024, 0.056250000000000355, 0.01550000000000118, 0.12150000000000105, 0.10324999999999918, 0.05699999999999861, 0.017999999999998906, 0.05325000000000024, 0.028499999999999304, 0.04099999999999859, 0.010249999999999204, 0.08499999999999908, 0.10774999999999935, 0.08275000000000077, 0.022250000000001435, 0.01750000000000007, 0.013500000000000512, 0.021750000000000824, 0.10200000000000031, 0.14250000000000007, 0.10900000000000176, 0.1620000000000008, 0.009000000000000341, -0.004250000000000753], zp_timestamp='2025-11-24T22:30:00')
2025-11-25T00:34:46.417 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:34:46.429 [DEBUG] [Thread-199747] [transport.py] [_log()] starting thread (client mode): 0xd07870d0
2025-11-25T00:34:46.429 [DEBUG] [Thread-199747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:34:46.443 [DEBUG] [Thread-199747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:34:46.444 [INFO] [Thread-199747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:34:46.451 [DEBUG] [Thread-199747] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:34:46.451 [DEBUG] [Thread-199747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:34:46.451 [DEBUG] [Thread-199747] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:34:46.451 [DEBUG] [Thread-199747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:34:46.452 [DEBUG] [Thread-199747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:34:46.452 [DEBUG] [Thread-199747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:34:46.452 [DEBUG] [Thread-199747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:34:46.452 [DEBUG] [Thread-199747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:34:46.452 [DEBUG] [Thread-199747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:34:46.452 [DEBUG] [Thread-199747] [transport.py] [_log()] client lang: <none>
2025-11-25T00:34:46.452 [DEBUG] [Thread-199747] [transport.py] [_log()] server lang: <none>
2025-11-25T00:34:46.452 [DEBUG] [Thread-199747] [transport.py] [_log()] kex follows: False
2025-11-25T00:34:46.452 [DEBUG] [Thread-199747] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:34:46.453 [DEBUG] [Thread-199747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:34:46.453 [DEBUG] [Thread-199747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:34:46.453 [DEBUG] [Thread-199747] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:34:46.453 [DEBUG] [Thread-199747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:34:46.453 [DEBUG] [Thread-199747] [transport.py] [_log()] Compression: none
2025-11-25T00:34:46.453 [DEBUG] [Thread-199747] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:34:46.509 [DEBUG] [Thread-199747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:34:46.510 [DEBUG] [Thread-199747] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:34:46.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:34:46.511 [DEBUG] [Thread-199747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:34:46.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:34:46.565 [DEBUG] [Thread-199747] [transport.py] [_log()] userauth is OK
2025-11-25T00:34:46.565 [DEBUG] [Thread-199747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:34:46.565 [DEBUG] [Thread-199747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:34:46.565 [DEBUG] [Thread-199747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:34:46.565 [DEBUG] [Thread-199747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:34:46.587 [INFO] [Thread-199747] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:34:46.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:34:46.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:34:47.461 [DEBUG] [Thread-199747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:34:47.461 [DEBUG] [Thread-199747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:34:47.510 [DEBUG] [Thread-199747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:34:47.510 [DEBUG] [Thread-199747] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:34:47.519 [DEBUG] [Thread-199747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:34:47.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:34:47.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-11-25T00:34:47.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-11-25T00:34:47.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:34:47.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:34:47.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:34:47.557 [DEBUG] [Thread-199747] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:34:47.782 [DEBUG] [Thread-199749 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:02.958 [DEBUG] [Thread-199750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:10.044 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:10.720 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:10.721 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:13.277 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:17.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:35:17.582 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:35:17.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:35:18.058 [DEBUG] [Thread-199751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:18.344 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:18.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 35, 10), 13.24, 40.04, 0.0, 23.75, 13.1, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:35:18.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:35:10
2025-11-25T00:35:18.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:35:18.877 [DEBUG] [Thread-199752] [transport.py] [_log()] starting thread (client mode): 0xd31508e0
2025-11-25T00:35:18.877 [DEBUG] [Thread-199752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:35:18.890 [DEBUG] [Thread-199752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:35:18.890 [INFO] [Thread-199752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:35:18.895 [DEBUG] [Thread-199752] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] client lang: <none>
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] server lang: <none>
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] kex follows: False
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:35:18.896 [DEBUG] [Thread-199752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:35:18.897 [DEBUG] [Thread-199752] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:35:18.897 [DEBUG] [Thread-199752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:35:18.897 [DEBUG] [Thread-199752] [transport.py] [_log()] Compression: none
2025-11-25T00:35:18.897 [DEBUG] [Thread-199752] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:35:18.933 [DEBUG] [Thread-199752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:35:18.938 [DEBUG] [Thread-199752] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:35:18.940 [DEBUG] [Thread-199752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:35:18.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:35:18.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:35:18.945 [DEBUG] [Thread-199752] [transport.py] [_log()] userauth is OK
2025-11-25T00:35:18.946 [DEBUG] [Thread-199752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:35:18.946 [DEBUG] [Thread-199752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:35:18.946 [DEBUG] [Thread-199752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:35:18.946 [DEBUG] [Thread-199752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:35:18.973 [INFO] [Thread-199752] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:35:18.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:35:19.460 [DEBUG] [Thread-199754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:19.602 [DEBUG] [Thread-199752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:35:19.602 [DEBUG] [Thread-199752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:35:19.611 [DEBUG] [Thread-199752] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:35:19.643 [DEBUG] [Thread-199752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:35:19.643 [DEBUG] [Thread-199752] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:35:19.646 [DEBUG] [Thread-199752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:35:19.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:35:19.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:35:19.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:35:19.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:35:19.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:35:19.672 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:35:19.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:35:19.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:35:19.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:35:19.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.940669 -999.00  +13.10  19.30     45   +1.40 1 1 1 1 1     0    0 10.62 -41.10 ZNESW 14.7 19.3 153.6 24.8 13.4 -25.0 13.2 -24.7 13.0 -23.5 13.3 -24.4
2025-11-25T00:35:19.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:35:19.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:35:19.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.940669
2025-11-25T00:35:19.679 [DEBUG] [Thread-199752] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:35:19.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:35:19.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:35:19.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:35:19.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:35:19.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:35:19.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:35:10', tmtdew=13.24, humidity=40.04, cloud=0.0, wind=23.75, temperature=13.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:35:10', seeing=0.79, atlas_timestamp='2025-11-24T22:34:33.802', atlas_cloud=1, atlas_rain=1, zp_data=[0.019249999999999545, 0.01875000000000071, 0.03325000000000067, 0.028499999999999304, 0.05450000000000088, 0.10575000000000045, 0.05999999999999872, 0.045249999999999346, 0.02949999999999875, 0.02200000000000024, 0.056250000000000355, 0.01550000000000118, 0.12150000000000105, 0.10324999999999918, 0.05699999999999861, 0.017999999999998906, 0.05325000000000024, 0.028499999999999304, 0.04099999999999859, 0.010249999999999204, 0.08499999999999908, 0.10774999999999935, 0.08275000000000077, 0.022250000000001435, 0.01750000000000007, 0.013500000000000512, 0.021750000000000824, 0.10200000000000031, 0.14250000000000007, 0.10900000000000176, 0.1620000000000008, 0.009000000000000341, -0.004250000000000753], zp_timestamp='2025-11-24T22:30:00')
2025-11-25T00:35:19.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:35:19.777 [DEBUG] [Thread-199756] [transport.py] [_log()] starting thread (client mode): 0xd3152260
2025-11-25T00:35:19.777 [DEBUG] [Thread-199756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:35:19.791 [DEBUG] [Thread-199756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:35:19.791 [INFO] [Thread-199756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] client lang: <none>
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] server lang: <none>
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] kex follows: False
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] Compression: none
2025-11-25T00:35:19.799 [DEBUG] [Thread-199756] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:35:19.856 [DEBUG] [Thread-199756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:35:19.857 [DEBUG] [Thread-199756] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:35:19.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:35:19.857 [DEBUG] [Thread-199756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:35:19.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:35:19.912 [DEBUG] [Thread-199756] [transport.py] [_log()] userauth is OK
2025-11-25T00:35:19.912 [DEBUG] [Thread-199756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:35:19.912 [DEBUG] [Thread-199756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:35:19.912 [DEBUG] [Thread-199756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:35:19.912 [DEBUG] [Thread-199756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:35:19.926 [INFO] [Thread-199756] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:35:19.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:35:19.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:35:20.781 [DEBUG] [Thread-199756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:35:20.781 [DEBUG] [Thread-199756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:35:20.829 [DEBUG] [Thread-199756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:35:20.830 [DEBUG] [Thread-199756] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:35:20.839 [DEBUG] [Thread-199756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:35:20.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:35:20.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-11-25T00:35:20.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-11-25T00:35:20.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:35:20.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:35:20.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:35:20.877 [DEBUG] [Thread-199756] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:35:24.739 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:33.100 [DEBUG] [Thread-199758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:43.132 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:47.786 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:48.255 [DEBUG] [Thread-199759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:35:50.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:35:50.901 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:35:50.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-11-25T00:35:51.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 35, 43), 13.25, 39.99, 0.0, 26.22, 13.1, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:35:51.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:35:43
2025-11-25T00:35:51.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:35:52.132 [DEBUG] [Thread-199760] [transport.py] [_log()] starting thread (client mode): 0xd314a830
2025-11-25T00:35:52.133 [DEBUG] [Thread-199760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:35:52.139 [DEBUG] [Thread-199760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:35:52.140 [INFO] [Thread-199760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:35:52.144 [DEBUG] [Thread-199760] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:35:52.144 [DEBUG] [Thread-199760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:35:52.144 [DEBUG] [Thread-199760] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:35:52.144 [DEBUG] [Thread-199760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:35:52.144 [DEBUG] [Thread-199760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:35:52.144 [DEBUG] [Thread-199760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:35:52.144 [DEBUG] [Thread-199760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:35:52.144 [DEBUG] [Thread-199760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:35:52.144 [DEBUG] [Thread-199760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:35:52.144 [DEBUG] [Thread-199760] [transport.py] [_log()] client lang: <none>
2025-11-25T00:35:52.145 [DEBUG] [Thread-199760] [transport.py] [_log()] server lang: <none>
2025-11-25T00:35:52.145 [DEBUG] [Thread-199760] [transport.py] [_log()] kex follows: False
2025-11-25T00:35:52.145 [DEBUG] [Thread-199760] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:35:52.145 [DEBUG] [Thread-199760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:35:52.145 [DEBUG] [Thread-199760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:35:52.146 [DEBUG] [Thread-199760] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:35:52.146 [DEBUG] [Thread-199760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:35:52.146 [DEBUG] [Thread-199760] [transport.py] [_log()] Compression: none
2025-11-25T00:35:52.146 [DEBUG] [Thread-199760] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:35:52.181 [DEBUG] [Thread-199760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:35:52.185 [DEBUG] [Thread-199760] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:35:52.187 [DEBUG] [Thread-199760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:35:52.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:35:52.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:35:52.192 [DEBUG] [Thread-199760] [transport.py] [_log()] userauth is OK
2025-11-25T00:35:52.192 [DEBUG] [Thread-199760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:35:52.192 [DEBUG] [Thread-199760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:35:52.192 [DEBUG] [Thread-199760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:35:52.192 [DEBUG] [Thread-199760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:35:52.217 [INFO] [Thread-199760] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:35:52.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:35:52.849 [DEBUG] [Thread-199760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:35:52.849 [DEBUG] [Thread-199760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:35:52.850 [DEBUG] [Thread-199760] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:35:52.890 [DEBUG] [Thread-199760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:35:52.890 [DEBUG] [Thread-199760] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:35:52.893 [DEBUG] [Thread-199760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:35:52.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:35:52.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:35:52.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:35:52.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:35:52.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:35:52.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:35:52.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:35:52.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:35:52.917 [DEBUG] [Thread-199760] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:35:52.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:35:52.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.941364 -999.00  +13.10  22.66     45   +1.50 1 1 1 1 1     0    0 10.85 -40.93 ZNESW 16.8 22.7 153.8 24.3 13.3 -25.2 13.2 -24.6 12.9 -23.5 13.2 -24.3
2025-11-25T00:35:52.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:35:52.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:35:52.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.941364
2025-11-25T00:35:52.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:35:52.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:35:52.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:35:52.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:35:52.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:35:52.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:35:43', tmtdew=13.25, humidity=39.99, cloud=0.0, wind=26.22, temperature=13.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:35:43', seeing=0.82, atlas_timestamp='2025-11-24T22:35:33.850', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:34:00')
2025-11-25T00:35:53.010 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:35:53.022 [DEBUG] [Thread-199763] [transport.py] [_log()] starting thread (client mode): 0xd314be80
2025-11-25T00:35:53.022 [DEBUG] [Thread-199763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:35:53.037 [DEBUG] [Thread-199763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:35:53.037 [INFO] [Thread-199763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] client lang: <none>
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] server lang: <none>
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] kex follows: False
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] Compression: none
2025-11-25T00:35:53.045 [DEBUG] [Thread-199763] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:35:53.103 [DEBUG] [Thread-199763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:35:53.103 [DEBUG] [Thread-199763] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:35:53.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:35:53.104 [DEBUG] [Thread-199763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:35:53.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:35:53.161 [DEBUG] [Thread-199763] [transport.py] [_log()] userauth is OK
2025-11-25T00:35:53.161 [DEBUG] [Thread-199763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:35:53.161 [DEBUG] [Thread-199763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:35:53.161 [DEBUG] [Thread-199763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:35:53.161 [DEBUG] [Thread-199763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:35:53.175 [INFO] [Thread-199763] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:35:53.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:35:53.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:35:54.032 [DEBUG] [Thread-199763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:35:54.032 [DEBUG] [Thread-199763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:35:54.079 [DEBUG] [Thread-199763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:35:54.079 [DEBUG] [Thread-199763] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:35:54.088 [DEBUG] [Thread-199763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:35:54.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:35:54.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-11-25T00:35:54.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-11-25T00:35:54.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:35:54.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:35:54.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:35:54.126 [DEBUG] [Thread-199763] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:36:03.341 [DEBUG] [Thread-199765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:07.887 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:10.923 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:10.924 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:12.297 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:18.405 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:18.495 [DEBUG] [Thread-199766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:19.735 [DEBUG] [Thread-199767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:23.179 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:24.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:36:24.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:36:24.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:36:24.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 36, 16), 13.26, 39.99, 0.0, 25.36, 13.11, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:36:24.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:36:16
2025-11-25T00:36:25.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:36:25.274 [DEBUG] [Thread-199768] [transport.py] [_log()] starting thread (client mode): 0xd31f52a0
2025-11-25T00:36:25.275 [DEBUG] [Thread-199768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:36:25.284 [DEBUG] [Thread-199768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:36:25.285 [INFO] [Thread-199768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:36:25.290 [DEBUG] [Thread-199768] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:36:25.290 [DEBUG] [Thread-199768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:36:25.290 [DEBUG] [Thread-199768] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:36:25.290 [DEBUG] [Thread-199768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:36:25.290 [DEBUG] [Thread-199768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:36:25.290 [DEBUG] [Thread-199768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:36:25.290 [DEBUG] [Thread-199768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:36:25.291 [DEBUG] [Thread-199768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:36:25.291 [DEBUG] [Thread-199768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:36:25.291 [DEBUG] [Thread-199768] [transport.py] [_log()] client lang: <none>
2025-11-25T00:36:25.291 [DEBUG] [Thread-199768] [transport.py] [_log()] server lang: <none>
2025-11-25T00:36:25.291 [DEBUG] [Thread-199768] [transport.py] [_log()] kex follows: False
2025-11-25T00:36:25.291 [DEBUG] [Thread-199768] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:36:25.292 [DEBUG] [Thread-199768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:36:25.292 [DEBUG] [Thread-199768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:36:25.292 [DEBUG] [Thread-199768] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:36:25.292 [DEBUG] [Thread-199768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:36:25.292 [DEBUG] [Thread-199768] [transport.py] [_log()] Compression: none
2025-11-25T00:36:25.292 [DEBUG] [Thread-199768] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:36:25.331 [DEBUG] [Thread-199768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:36:25.337 [DEBUG] [Thread-199768] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:36:25.340 [DEBUG] [Thread-199768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:36:25.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:36:25.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:36:25.345 [DEBUG] [Thread-199768] [transport.py] [_log()] userauth is OK
2025-11-25T00:36:25.345 [DEBUG] [Thread-199768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:36:25.345 [DEBUG] [Thread-199768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:36:25.345 [DEBUG] [Thread-199768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:36:25.345 [DEBUG] [Thread-199768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:36:25.372 [INFO] [Thread-199768] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:36:25.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:36:26.018 [DEBUG] [Thread-199768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:36:26.018 [DEBUG] [Thread-199768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:36:26.020 [DEBUG] [Thread-199768] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:36:26.058 [DEBUG] [Thread-199768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:36:26.058 [DEBUG] [Thread-199768] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:36:26.061 [DEBUG] [Thread-199768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:36:26.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:36:26.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:36:26.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:36:26.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:36:26.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:36:26.085 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:36:26.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:36:26.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:36:26.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:36:26.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.941711 -999.00  +13.10  15.00     45   +1.50 1 1 1 1 1     0    0 10.81 -42.64 ZNESW 15.8 15.0 156.0 22.2 13.3 -25.2 13.2 -24.7 13.0 -23.6 13.3 -24.3
2025-11-25T00:36:26.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:36:26.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:36:26.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.941711
2025-11-25T00:36:26.092 [DEBUG] [Thread-199768] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:36:26.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:36:26.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:36:26.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:36:26.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:36:26.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:36:26.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:36:16', tmtdew=13.26, humidity=39.99, cloud=0.0, wind=25.36, temperature=13.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:36:16', seeing=1.03, atlas_timestamp='2025-11-24T22:36:03.830', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:34:00')
2025-11-25T00:36:26.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:36:26.192 [DEBUG] [Thread-199771] [transport.py] [_log()] starting thread (client mode): 0xd3150c40
2025-11-25T00:36:26.192 [DEBUG] [Thread-199771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:36:26.206 [DEBUG] [Thread-199771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:36:26.207 [INFO] [Thread-199771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:36:26.217 [DEBUG] [Thread-199771] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:36:26.217 [DEBUG] [Thread-199771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:36:26.217 [DEBUG] [Thread-199771] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:36:26.217 [DEBUG] [Thread-199771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:36:26.217 [DEBUG] [Thread-199771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:36:26.217 [DEBUG] [Thread-199771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:36:26.218 [DEBUG] [Thread-199771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:36:26.218 [DEBUG] [Thread-199771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:36:26.218 [DEBUG] [Thread-199771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:36:26.218 [DEBUG] [Thread-199771] [transport.py] [_log()] client lang: <none>
2025-11-25T00:36:26.218 [DEBUG] [Thread-199771] [transport.py] [_log()] server lang: <none>
2025-11-25T00:36:26.218 [DEBUG] [Thread-199771] [transport.py] [_log()] kex follows: False
2025-11-25T00:36:26.218 [DEBUG] [Thread-199771] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:36:26.218 [DEBUG] [Thread-199771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:36:26.218 [DEBUG] [Thread-199771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:36:26.218 [DEBUG] [Thread-199771] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:36:26.219 [DEBUG] [Thread-199771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:36:26.219 [DEBUG] [Thread-199771] [transport.py] [_log()] Compression: none
2025-11-25T00:36:26.219 [DEBUG] [Thread-199771] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:36:26.273 [DEBUG] [Thread-199771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:36:26.273 [DEBUG] [Thread-199771] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:36:26.274 [DEBUG] [Thread-199771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:36:26.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:36:26.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:36:26.334 [DEBUG] [Thread-199771] [transport.py] [_log()] userauth is OK
2025-11-25T00:36:26.334 [DEBUG] [Thread-199771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:36:26.334 [DEBUG] [Thread-199771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:36:26.335 [DEBUG] [Thread-199771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:36:26.335 [DEBUG] [Thread-199771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:36:26.353 [INFO] [Thread-199771] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:36:26.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:36:26.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:36:27.211 [DEBUG] [Thread-199771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:36:27.211 [DEBUG] [Thread-199771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:36:27.260 [DEBUG] [Thread-199771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:36:27.260 [DEBUG] [Thread-199771] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:36:27.271 [DEBUG] [Thread-199771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:36:27.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:36:27.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-11-25T00:36:27.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-11-25T00:36:27.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:36:27.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:36:27.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:36:27.310 [DEBUG] [Thread-199771] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:36:33.583 [DEBUG] [Thread-199773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:48.696 [DEBUG] [Thread-199774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:36:57.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:36:57.356 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:36:57.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-11-25T00:36:58.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 36, 48), 13.28, 39.93, 0.0, 26.59, 13.13, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:36:58.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:36:48
2025-11-25T00:36:58.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:36:58.500 [DEBUG] [Thread-199775] [transport.py] [_log()] starting thread (client mode): 0xd07845b0
2025-11-25T00:36:58.501 [DEBUG] [Thread-199775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:36:58.508 [DEBUG] [Thread-199775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:36:58.508 [INFO] [Thread-199775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] client lang: <none>
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] server lang: <none>
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] kex follows: False
2025-11-25T00:36:58.513 [DEBUG] [Thread-199775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:36:58.514 [DEBUG] [Thread-199775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:36:58.514 [DEBUG] [Thread-199775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:36:58.514 [DEBUG] [Thread-199775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:36:58.514 [DEBUG] [Thread-199775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:36:58.514 [DEBUG] [Thread-199775] [transport.py] [_log()] Compression: none
2025-11-25T00:36:58.514 [DEBUG] [Thread-199775] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:36:58.544 [DEBUG] [Thread-199775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:36:58.548 [DEBUG] [Thread-199775] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:36:58.550 [DEBUG] [Thread-199775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:36:58.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:36:58.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:36:58.553 [DEBUG] [Thread-199775] [transport.py] [_log()] userauth is OK
2025-11-25T00:36:58.554 [DEBUG] [Thread-199775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:36:58.554 [DEBUG] [Thread-199775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:36:58.554 [DEBUG] [Thread-199775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:36:58.554 [DEBUG] [Thread-199775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:36:58.572 [INFO] [Thread-199775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:36:58.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:36:59.209 [DEBUG] [Thread-199775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:36:59.209 [DEBUG] [Thread-199775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:36:59.210 [DEBUG] [Thread-199775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:36:59.250 [DEBUG] [Thread-199775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:36:59.250 [DEBUG] [Thread-199775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:36:59.252 [DEBUG] [Thread-199775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:36:59.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:36:59.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:36:59.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:36:59.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:36:59.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:36:59.272 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:36:59.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:36:59.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:36:59.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:36:59.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.942058 -999.00  +13.10  18.21     45   +1.40 1 1 1 1 1     0    0 10.85 -39.89 ZNESW 18.4 18.2 156.3 25.0 13.3 -25.3 13.2 -24.9 13.0 -23.8 13.2 -24.5
2025-11-25T00:36:59.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:36:59.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:36:59.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.942058
2025-11-25T00:36:59.279 [DEBUG] [Thread-199775] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:36:59.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:36:59.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:36:59.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:36:59.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:36:59.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:36:59.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:36:48', tmtdew=13.28, humidity=39.93, cloud=0.0, wind=26.59, temperature=13.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:36:49', seeing=1.0, atlas_timestamp='2025-11-24T22:36:33.811', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:34:00')
2025-11-25T00:36:59.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:36:59.383 [DEBUG] [Thread-199778] [transport.py] [_log()] starting thread (client mode): 0xd3153c40
2025-11-25T00:36:59.384 [DEBUG] [Thread-199778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:36:59.397 [DEBUG] [Thread-199778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:36:59.397 [INFO] [Thread-199778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] client lang: <none>
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] server lang: <none>
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] kex follows: False
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:36:59.405 [DEBUG] [Thread-199778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:36:59.406 [DEBUG] [Thread-199778] [transport.py] [_log()] Compression: none
2025-11-25T00:36:59.406 [DEBUG] [Thread-199778] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:36:59.463 [DEBUG] [Thread-199778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:36:59.464 [DEBUG] [Thread-199778] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:36:59.464 [DEBUG] [Thread-199778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:36:59.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:36:59.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:36:59.520 [DEBUG] [Thread-199778] [transport.py] [_log()] userauth is OK
2025-11-25T00:36:59.520 [DEBUG] [Thread-199778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:36:59.520 [DEBUG] [Thread-199778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:36:59.520 [DEBUG] [Thread-199778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:36:59.520 [DEBUG] [Thread-199778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:36:59.538 [INFO] [Thread-199778] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:36:59.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:36:59.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:37:00.374 [DEBUG] [Thread-199778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:37:00.374 [DEBUG] [Thread-199778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:37:00.421 [DEBUG] [Thread-199778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:37:00.421 [DEBUG] [Thread-199778] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:37:00.429 [DEBUG] [Thread-199778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:37:00.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:37:00.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-11-25T00:37:00.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-11-25T00:37:00.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:37:00.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:37:00.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:37:00.464 [DEBUG] [Thread-199778] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:37:03.744 [DEBUG] [Thread-199780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:37:11.137 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:37:11.150 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:37:18.887 [DEBUG] [Thread-199781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:37:20.046 [DEBUG] [Thread-199782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:37:30.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:37:30.510 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:37:30.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:37:31.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 37, 21), 13.26, 39.98, 0.0, 26.11, 13.16, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:37:31.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:37:21
2025-11-25T00:37:31.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:37:31.749 [DEBUG] [Thread-199783] [transport.py] [_log()] starting thread (client mode): 0xd314a710
2025-11-25T00:37:31.751 [DEBUG] [Thread-199783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:37:31.752 [DEBUG] [Thread-199783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:37:31.752 [INFO] [Thread-199783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:37:31.757 [DEBUG] [Thread-199783] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:37:31.757 [DEBUG] [Thread-199783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] client lang: <none>
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] server lang: <none>
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] kex follows: False
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] Compression: none
2025-11-25T00:37:31.758 [DEBUG] [Thread-199783] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:37:31.784 [DEBUG] [Thread-199783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:37:31.787 [DEBUG] [Thread-199783] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:37:31.789 [DEBUG] [Thread-199783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:37:31.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:37:31.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:37:31.792 [DEBUG] [Thread-199783] [transport.py] [_log()] userauth is OK
2025-11-25T00:37:31.792 [DEBUG] [Thread-199783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:37:31.792 [DEBUG] [Thread-199783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:37:31.792 [DEBUG] [Thread-199783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:37:31.792 [DEBUG] [Thread-199783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:37:31.809 [INFO] [Thread-199783] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:37:31.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:37:32.388 [DEBUG] [Thread-199783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:37:32.388 [DEBUG] [Thread-199783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:37:32.390 [DEBUG] [Thread-199783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:37:32.430 [DEBUG] [Thread-199783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:37:32.430 [DEBUG] [Thread-199783] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:37:32.433 [DEBUG] [Thread-199783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:37:32.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:37:32.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:37:32.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:37:32.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:37:32.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:37:32.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:37:32.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:37:32.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:37:32.462 [DEBUG] [Thread-199783] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:37:32.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:37:32.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.942405 -999.00  +13.10  16.93     45   +1.50 1 1 1 1 1     0    0 10.72 -38.88 ZNESW 17.3 16.9 150.0 24.4 13.3 -25.2 13.2 -24.8 12.9 -23.6 13.2 -24.5
2025-11-25T00:37:32.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:37:32.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:37:32.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.942405
2025-11-25T00:37:32.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:37:32.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:37:32.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:37:32.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:37:32.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:37:32.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:37:21', tmtdew=13.26, humidity=39.98, cloud=0.0, wind=26.11, temperature=13.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:37:22', seeing=1.0, atlas_timestamp='2025-11-24T22:37:03.792', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:34:00')
2025-11-25T00:37:32.571 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:37:32.583 [DEBUG] [Thread-199786] [transport.py] [_log()] starting thread (client mode): 0xd31916c0
2025-11-25T00:37:32.583 [DEBUG] [Thread-199786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:37:32.598 [DEBUG] [Thread-199786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:37:32.599 [INFO] [Thread-199786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:37:32.606 [DEBUG] [Thread-199786] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:37:32.606 [DEBUG] [Thread-199786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] client lang: <none>
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] server lang: <none>
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] kex follows: False
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] Compression: none
2025-11-25T00:37:32.607 [DEBUG] [Thread-199786] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:37:32.665 [DEBUG] [Thread-199786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:37:32.665 [DEBUG] [Thread-199786] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:37:32.666 [DEBUG] [Thread-199786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:37:32.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:37:32.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:37:32.720 [DEBUG] [Thread-199786] [transport.py] [_log()] userauth is OK
2025-11-25T00:37:32.720 [DEBUG] [Thread-199786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:37:32.720 [DEBUG] [Thread-199786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:37:32.720 [DEBUG] [Thread-199786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:37:32.720 [DEBUG] [Thread-199786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:37:32.734 [INFO] [Thread-199786] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:37:32.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:37:32.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:37:33.550 [DEBUG] [Thread-199786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:37:33.550 [DEBUG] [Thread-199786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:37:33.598 [DEBUG] [Thread-199786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:37:33.598 [DEBUG] [Thread-199786] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:37:33.606 [DEBUG] [Thread-199786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:37:33.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:37:33.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-11-25T00:37:33.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:37:33.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:37:33.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:37:33.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:37:33.649 [DEBUG] [Thread-199786] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:37:33.940 [DEBUG] [Thread-199788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:37:35.307 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:37:39.475 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:37:49.075 [DEBUG] [Thread-199789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:38:03.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:38:03.713 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:38:03.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-11-25T00:38:04.125 [DEBUG] [Thread-199790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:38:04.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 37, 55), 13.26, 39.99, 0.0, 23.73, 13.11, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:38:04.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:37:55
2025-11-25T00:38:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:38:05.057 [DEBUG] [Thread-199791] [transport.py] [_log()] starting thread (client mode): 0xd319ff70
2025-11-25T00:38:05.058 [DEBUG] [Thread-199791] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:38:05.070 [DEBUG] [Thread-199791] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:38:05.070 [INFO] [Thread-199791] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] client lang: <none>
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] server lang: <none>
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] kex follows: False
2025-11-25T00:38:05.076 [DEBUG] [Thread-199791] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:38:05.077 [DEBUG] [Thread-199791] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:38:05.077 [DEBUG] [Thread-199791] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:38:05.077 [DEBUG] [Thread-199791] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:38:05.078 [DEBUG] [Thread-199791] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:38:05.078 [DEBUG] [Thread-199791] [transport.py] [_log()] Compression: none
2025-11-25T00:38:05.078 [DEBUG] [Thread-199791] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:38:05.117 [DEBUG] [Thread-199791] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:38:05.123 [DEBUG] [Thread-199791] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:38:05.125 [DEBUG] [Thread-199791] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:38:05.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:38:05.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:38:05.131 [DEBUG] [Thread-199791] [transport.py] [_log()] userauth is OK
2025-11-25T00:38:05.131 [DEBUG] [Thread-199791] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:38:05.131 [DEBUG] [Thread-199791] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:38:05.132 [DEBUG] [Thread-199791] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:38:05.132 [DEBUG] [Thread-199791] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:38:05.159 [INFO] [Thread-199791] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:38:05.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:38:05.707 [DEBUG] [Thread-199791] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:38:05.707 [DEBUG] [Thread-199791] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:38:05.708 [DEBUG] [Thread-199791] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:38:05.748 [DEBUG] [Thread-199791] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:38:05.748 [DEBUG] [Thread-199791] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:38:05.750 [DEBUG] [Thread-199791] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:38:05.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:38:05.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:38:05.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:38:05.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:38:05.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:38:05.767 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:38:05.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:38:05.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:38:05.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:38:05.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.942753 -999.00  +13.10  17.00     45   +1.50 1 1 1 1 1     0    0 10.85 -34.72 ZNESW 16.2 17.0 151.0 22.0 13.3 -25.3 13.2 -24.7 13.0 -23.6 13.2 -24.4
2025-11-25T00:38:05.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:38:05.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:38:05.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.942753
2025-11-25T00:38:05.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:38:05.785 [DEBUG] [Thread-199791] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:38:05.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:38:05.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:38:05.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:38:05.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:38:05.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:37:55', tmtdew=13.26, humidity=39.99, cloud=0.0, wind=23.73, temperature=13.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:37:55', seeing=1.0, atlas_timestamp='2025-11-24T22:37:33.859', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:34:00')
2025-11-25T00:38:05.861 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:38:05.873 [DEBUG] [Thread-199794] [transport.py] [_log()] starting thread (client mode): 0xd3151db0
2025-11-25T00:38:05.873 [DEBUG] [Thread-199794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:38:05.887 [DEBUG] [Thread-199794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:38:05.888 [INFO] [Thread-199794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] client lang: <none>
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] server lang: <none>
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] kex follows: False
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:38:05.895 [DEBUG] [Thread-199794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:38:05.896 [DEBUG] [Thread-199794] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:38:05.896 [DEBUG] [Thread-199794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:38:05.896 [DEBUG] [Thread-199794] [transport.py] [_log()] Compression: none
2025-11-25T00:38:05.896 [DEBUG] [Thread-199794] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:38:05.952 [DEBUG] [Thread-199794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:38:05.953 [DEBUG] [Thread-199794] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:38:05.953 [DEBUG] [Thread-199794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:38:05.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:38:05.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:38:06.009 [DEBUG] [Thread-199794] [transport.py] [_log()] userauth is OK
2025-11-25T00:38:06.009 [DEBUG] [Thread-199794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:38:06.009 [DEBUG] [Thread-199794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:38:06.009 [DEBUG] [Thread-199794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:38:06.009 [DEBUG] [Thread-199794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:38:06.035 [INFO] [Thread-199794] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:38:06.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:38:06.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:38:06.896 [DEBUG] [Thread-199794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:38:06.897 [DEBUG] [Thread-199794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:38:06.945 [DEBUG] [Thread-199794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:38:06.945 [DEBUG] [Thread-199794] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:38:06.954 [DEBUG] [Thread-199794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:38:06.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:38:06.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-11-25T00:38:06.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-11-25T00:38:06.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:38:06.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:38:06.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:38:06.991 [DEBUG] [Thread-199794] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:38:11.352 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:38:11.354 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:38:19.167 [DEBUG] [Thread-199796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:38:20.305 [DEBUG] [Thread-199797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:38:34.316 [DEBUG] [Thread-199798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:38:37.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:38:37.024 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:38:37.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-11-25T00:38:37.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 38, 28), 13.19, 40.17, 0.0, 24.31, 13.08, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:38:37.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:38:28
2025-11-25T00:38:38.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:38:38.286 [DEBUG] [Thread-199799] [transport.py] [_log()] starting thread (client mode): 0xd3151870
2025-11-25T00:38:38.287 [DEBUG] [Thread-199799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:38:38.291 [DEBUG] [Thread-199799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:38:38.292 [INFO] [Thread-199799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:38:38.295 [DEBUG] [Thread-199799] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:38:38.295 [DEBUG] [Thread-199799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:38:38.295 [DEBUG] [Thread-199799] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:38:38.295 [DEBUG] [Thread-199799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:38:38.295 [DEBUG] [Thread-199799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:38:38.295 [DEBUG] [Thread-199799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:38:38.295 [DEBUG] [Thread-199799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:38:38.296 [DEBUG] [Thread-199799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:38:38.296 [DEBUG] [Thread-199799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:38:38.296 [DEBUG] [Thread-199799] [transport.py] [_log()] client lang: <none>
2025-11-25T00:38:38.296 [DEBUG] [Thread-199799] [transport.py] [_log()] server lang: <none>
2025-11-25T00:38:38.296 [DEBUG] [Thread-199799] [transport.py] [_log()] kex follows: False
2025-11-25T00:38:38.296 [DEBUG] [Thread-199799] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:38:38.296 [DEBUG] [Thread-199799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:38:38.296 [DEBUG] [Thread-199799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:38:38.297 [DEBUG] [Thread-199799] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:38:38.297 [DEBUG] [Thread-199799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:38:38.297 [DEBUG] [Thread-199799] [transport.py] [_log()] Compression: none
2025-11-25T00:38:38.297 [DEBUG] [Thread-199799] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:38:38.325 [DEBUG] [Thread-199799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:38:38.329 [DEBUG] [Thread-199799] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:38:38.331 [DEBUG] [Thread-199799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:38:38.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:38:38.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:38:38.336 [DEBUG] [Thread-199799] [transport.py] [_log()] userauth is OK
2025-11-25T00:38:38.336 [DEBUG] [Thread-199799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:38:38.337 [DEBUG] [Thread-199799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:38:38.337 [DEBUG] [Thread-199799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:38:38.337 [DEBUG] [Thread-199799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:38:38.364 [INFO] [Thread-199799] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:38:38.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:38:38.921 [DEBUG] [Thread-199799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:38:38.922 [DEBUG] [Thread-199799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:38:38.924 [DEBUG] [Thread-199799] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:38:38.963 [DEBUG] [Thread-199799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:38:38.963 [DEBUG] [Thread-199799] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:38:38.966 [DEBUG] [Thread-199799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:38:38.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:38:38.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:38:38.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:38:38.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:38:38.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:38:38.992 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:38:38.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:38:38.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:38:38.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:38:38.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.943100 -999.00  +13.10  18.45     44   +1.40 1 1 1 1 1     0    0 10.87 -33.46 ZNESW 16.2 18.4 144.1 27.4 13.3 -25.2 13.2 -24.9 13.0 -23.8 13.3 -24.5
2025-11-25T00:38:38.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:38:38.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:38:38.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.943100
2025-11-25T00:38:39.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:38:39.010 [DEBUG] [Thread-199799] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:38:39.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:38:39.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:38:39.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:38:39.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:38:39.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:38:28', tmtdew=13.19, humidity=40.17, cloud=0.0, wind=24.31, temperature=13.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:38:28', seeing=0.93, atlas_timestamp='2025-11-24T22:38:03.840', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:37:00')
2025-11-25T00:38: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-11-25T00:38:39.098 [DEBUG] [Thread-199802] [transport.py] [_log()] starting thread (client mode): 0xd31532b0
2025-11-25T00:38:39.098 [DEBUG] [Thread-199802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:38:39.113 [DEBUG] [Thread-199802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:38:39.114 [INFO] [Thread-199802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:38:39.121 [DEBUG] [Thread-199802] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:38:39.121 [DEBUG] [Thread-199802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:38:39.121 [DEBUG] [Thread-199802] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:38:39.121 [DEBUG] [Thread-199802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:38:39.121 [DEBUG] [Thread-199802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:38:39.121 [DEBUG] [Thread-199802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:38:39.121 [DEBUG] [Thread-199802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] client lang: <none>
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] server lang: <none>
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] kex follows: False
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] Compression: none
2025-11-25T00:38:39.122 [DEBUG] [Thread-199802] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:38:39.180 [DEBUG] [Thread-199802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:38:39.180 [DEBUG] [Thread-199802] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:38:39.180 [DEBUG] [Thread-199802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:38:39.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:38:39.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:38:39.237 [DEBUG] [Thread-199802] [transport.py] [_log()] userauth is OK
2025-11-25T00:38:39.237 [DEBUG] [Thread-199802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:38:39.237 [DEBUG] [Thread-199802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:38:39.237 [DEBUG] [Thread-199802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:38:39.238 [DEBUG] [Thread-199802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:38:39.256 [INFO] [Thread-199802] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:38:39.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:38:39.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:38:40.101 [DEBUG] [Thread-199802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:38:40.101 [DEBUG] [Thread-199802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:38:40.148 [DEBUG] [Thread-199802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:38:40.148 [DEBUG] [Thread-199802] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:38:40.158 [DEBUG] [Thread-199802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:38:40.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:38:40.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:38:40.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:38:40.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:38:40.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:38:40.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:38:40.195 [DEBUG] [Thread-199802] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:38:49.396 [DEBUG] [Thread-199804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:39:04.523 [DEBUG] [Thread-199805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:39:10.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:39:10.230 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:39:10.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-11-25T00:39:11.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 39, 1), 13.15, 40.66, 0.0, 25.6, 13.05, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:39:11.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:39:01
2025-11-25T00:39:11.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:39:11.518 [DEBUG] [Thread-199806] [transport.py] [_log()] starting thread (client mode): 0xd314b850
2025-11-25T00:39:11.519 [DEBUG] [Thread-199806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:39:11.532 [DEBUG] [Thread-199806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:39:11.532 [INFO] [Thread-199806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:39:11.537 [DEBUG] [Thread-199806] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:39:11.537 [DEBUG] [Thread-199806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:39:11.537 [DEBUG] [Thread-199806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:39:11.537 [DEBUG] [Thread-199806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:39:11.537 [DEBUG] [Thread-199806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:39:11.538 [DEBUG] [Thread-199806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:39:11.538 [DEBUG] [Thread-199806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:39:11.538 [DEBUG] [Thread-199806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:39:11.538 [DEBUG] [Thread-199806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:39:11.538 [DEBUG] [Thread-199806] [transport.py] [_log()] client lang: <none>
2025-11-25T00:39:11.538 [DEBUG] [Thread-199806] [transport.py] [_log()] server lang: <none>
2025-11-25T00:39:11.538 [DEBUG] [Thread-199806] [transport.py] [_log()] kex follows: False
2025-11-25T00:39:11.538 [DEBUG] [Thread-199806] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:39:11.539 [DEBUG] [Thread-199806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:39:11.539 [DEBUG] [Thread-199806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:39:11.539 [DEBUG] [Thread-199806] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:39:11.539 [DEBUG] [Thread-199806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:39:11.539 [DEBUG] [Thread-199806] [transport.py] [_log()] Compression: none
2025-11-25T00:39:11.539 [DEBUG] [Thread-199806] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:39:11.555 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:39:11.557 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:39:11.571 [DEBUG] [Thread-199806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:39:11.576 [DEBUG] [Thread-199806] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:39:11.578 [DEBUG] [Thread-199806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:39:11.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:39:11.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:39:11.582 [DEBUG] [Thread-199806] [transport.py] [_log()] userauth is OK
2025-11-25T00:39:11.583 [DEBUG] [Thread-199806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:39:11.583 [DEBUG] [Thread-199806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:39:11.583 [DEBUG] [Thread-199806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:39:11.583 [DEBUG] [Thread-199806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:39:11.607 [INFO] [Thread-199806] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:39:11.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:39:12.258 [DEBUG] [Thread-199806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:39:12.258 [DEBUG] [Thread-199806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:39:12.259 [DEBUG] [Thread-199806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:39:12.299 [DEBUG] [Thread-199806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:39:12.299 [DEBUG] [Thread-199806] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:39:12.302 [DEBUG] [Thread-199806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:39:12.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:39:12.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:39:12.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:39:12.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:39:12.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:39:12.324 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:39:12.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:39:12.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:39:12.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:39:12.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.943100 -999.00  +13.10  18.45     44   +1.40 1 1 1 1 1     0    0 10.87 -33.46 ZNESW 16.2 18.4 144.1 27.4 13.3 -25.2 13.2 -24.9 13.0 -23.8 13.3 -24.5
2025-11-25T00:39:12.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:39:12.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:39:12.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.943100
2025-11-25T00:39:12.331 [DEBUG] [Thread-199806] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:39:12.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:39:12.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:39:12.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:39:12.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:39:12.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:39:12.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:39:01', tmtdew=13.15, humidity=40.66, cloud=0.0, wind=25.6, temperature=13.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:39:01', seeing=1.33, atlas_timestamp='2025-11-24T22:38:03.840', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:37:00')
2025-11-25T00:39:12.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:39:12.427 [DEBUG] [Thread-199809] [transport.py] [_log()] starting thread (client mode): 0xd0787dc0
2025-11-25T00:39:12.427 [DEBUG] [Thread-199809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:39:12.442 [DEBUG] [Thread-199809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:39:12.442 [INFO] [Thread-199809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] client lang: <none>
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] server lang: <none>
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] kex follows: False
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] Compression: none
2025-11-25T00:39:12.450 [DEBUG] [Thread-199809] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:39:12.509 [DEBUG] [Thread-199809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:39:12.510 [DEBUG] [Thread-199809] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:39:12.510 [DEBUG] [Thread-199809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:39:12.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:39:12.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:39:12.565 [DEBUG] [Thread-199809] [transport.py] [_log()] userauth is OK
2025-11-25T00:39:12.566 [DEBUG] [Thread-199809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:39:12.566 [DEBUG] [Thread-199809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:39:12.566 [DEBUG] [Thread-199809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:39:12.566 [DEBUG] [Thread-199809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:39:12.587 [INFO] [Thread-199809] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:39:12.587 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:39:12.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:39:13.447 [DEBUG] [Thread-199809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:39:13.447 [DEBUG] [Thread-199809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:39:13.496 [DEBUG] [Thread-199809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:39:13.496 [DEBUG] [Thread-199809] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:39:13.506 [DEBUG] [Thread-199809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:39:13.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:39:13.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-11-25T00:39:13.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-11-25T00:39:13.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:39:13.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:39:13.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:39:13.544 [DEBUG] [Thread-199809] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:39:19.632 [DEBUG] [Thread-199811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:39:20.596 [DEBUG] [Thread-199812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:39:34.772 [DEBUG] [Thread-199813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:39:43.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:39:43.588 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:39:43.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-11-25T00:39:44.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 39, 34), 13.16, 40.11, 0.0, 23.94, 12.98, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:39:44.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:39:34
2025-11-25T00:39:44.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:39:44.765 [DEBUG] [Thread-199814] [transport.py] [_log()] starting thread (client mode): 0xd3191540
2025-11-25T00:39:44.767 [DEBUG] [Thread-199814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:39:44.773 [DEBUG] [Thread-199814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:39:44.773 [INFO] [Thread-199814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] client lang: <none>
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] server lang: <none>
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] kex follows: False
2025-11-25T00:39:44.778 [DEBUG] [Thread-199814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:39:44.779 [DEBUG] [Thread-199814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:39:44.779 [DEBUG] [Thread-199814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:39:44.779 [DEBUG] [Thread-199814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:39:44.779 [DEBUG] [Thread-199814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:39:44.779 [DEBUG] [Thread-199814] [transport.py] [_log()] Compression: none
2025-11-25T00:39:44.779 [DEBUG] [Thread-199814] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:39:44.812 [DEBUG] [Thread-199814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:39:44.817 [DEBUG] [Thread-199814] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:39:44.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:39:44.819 [DEBUG] [Thread-199814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:39:44.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:39:44.821 [DEBUG] [Thread-199814] [transport.py] [_log()] userauth is OK
2025-11-25T00:39:44.822 [DEBUG] [Thread-199814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:39:44.822 [DEBUG] [Thread-199814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:39:44.822 [DEBUG] [Thread-199814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:39:44.822 [DEBUG] [Thread-199814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:39:44.840 [INFO] [Thread-199814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:39:44.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:39:45.469 [DEBUG] [Thread-199814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:39:45.469 [DEBUG] [Thread-199814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:39:45.470 [DEBUG] [Thread-199814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:39:45.510 [DEBUG] [Thread-199814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:39:45.510 [DEBUG] [Thread-199814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:39:45.512 [DEBUG] [Thread-199814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:39:45.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:39:45.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:39:45.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:39:45.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:39:45.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:39:45.532 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:39:45.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:39:45.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:39:45.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:39:45.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.943794 -999.00  +13.10  22.57     45   +1.50 1 1 1 1 1     0    0 10.86 -33.06 ZNESW 19.7 22.6 146.2 32.2 13.3 -25.3 13.2 -24.9 12.9 -23.7 13.2 -24.6
2025-11-25T00:39:45.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:39:45.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:39:45.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.943794
2025-11-25T00:39:45.538 [DEBUG] [Thread-199814] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:39:45.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:39:45.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:39:45.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:39:45.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:39:45.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:39:45.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:39:34', tmtdew=13.16, humidity=40.11, cloud=0.0, wind=23.94, temperature=12.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:39:34', seeing=1.14, atlas_timestamp='2025-11-24T22:39:03.802', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:37:00')
2025-11-25T00:39:45.627 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:39:45.639 [DEBUG] [Thread-199817] [transport.py] [_log()] starting thread (client mode): 0xd3192440
2025-11-25T00:39:45.640 [DEBUG] [Thread-199817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:39:45.655 [DEBUG] [Thread-199817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:39:45.655 [INFO] [Thread-199817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:39:45.663 [DEBUG] [Thread-199817] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:39:45.663 [DEBUG] [Thread-199817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:39:45.663 [DEBUG] [Thread-199817] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:39:45.663 [DEBUG] [Thread-199817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:39:45.664 [DEBUG] [Thread-199817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:39:45.664 [DEBUG] [Thread-199817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:39:45.664 [DEBUG] [Thread-199817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:39:45.664 [DEBUG] [Thread-199817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:39:45.664 [DEBUG] [Thread-199817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:39:45.664 [DEBUG] [Thread-199817] [transport.py] [_log()] client lang: <none>
2025-11-25T00:39:45.664 [DEBUG] [Thread-199817] [transport.py] [_log()] server lang: <none>
2025-11-25T00:39:45.665 [DEBUG] [Thread-199817] [transport.py] [_log()] kex follows: False
2025-11-25T00:39:45.665 [DEBUG] [Thread-199817] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:39:45.665 [DEBUG] [Thread-199817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:39:45.665 [DEBUG] [Thread-199817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:39:45.665 [DEBUG] [Thread-199817] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:39:45.665 [DEBUG] [Thread-199817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:39:45.665 [DEBUG] [Thread-199817] [transport.py] [_log()] Compression: none
2025-11-25T00:39:45.666 [DEBUG] [Thread-199817] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:39:45.719 [DEBUG] [Thread-199817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:39:45.719 [DEBUG] [Thread-199817] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:39:45.719 [DEBUG] [Thread-199817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:39:45.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:39:45.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:39:45.779 [DEBUG] [Thread-199817] [transport.py] [_log()] userauth is OK
2025-11-25T00:39:45.779 [DEBUG] [Thread-199817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:39:45.779 [DEBUG] [Thread-199817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:39:45.779 [DEBUG] [Thread-199817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:39:45.779 [DEBUG] [Thread-199817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:39:45.794 [INFO] [Thread-199817] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:39:45.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:39:45.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:39:46.698 [DEBUG] [Thread-199817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:39:46.699 [DEBUG] [Thread-199817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:39:46.745 [DEBUG] [Thread-199817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:39:46.745 [DEBUG] [Thread-199817] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:39:46.754 [DEBUG] [Thread-199817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:39:46.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:39:46.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-11-25T00:39:46.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:39:46.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:39:46.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:39:46.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:39:46.793 [DEBUG] [Thread-199817] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:39:49.844 [DEBUG] [Thread-199819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:40:05.010 [DEBUG] [Thread-199820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:40:11.758 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:40:11.760 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:40:16.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:40:16.826 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:40:16.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-11-25T00:40:17.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 40, 7), 13.12, 40.26, 0.0, 23.24, 13.01, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:40:17.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:40:07
2025-11-25T00:40:17.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:40:18.021 [DEBUG] [Thread-199821] [transport.py] [_log()] starting thread (client mode): 0xd3149c90
2025-11-25T00:40:18.022 [DEBUG] [Thread-199821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:40:18.032 [DEBUG] [Thread-199821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:40:18.033 [INFO] [Thread-199821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:40:18.037 [DEBUG] [Thread-199821] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:40:18.037 [DEBUG] [Thread-199821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:40:18.037 [DEBUG] [Thread-199821] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] client lang: <none>
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] server lang: <none>
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] kex follows: False
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:40:18.038 [DEBUG] [Thread-199821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:40:18.039 [DEBUG] [Thread-199821] [transport.py] [_log()] Compression: none
2025-11-25T00:40:18.039 [DEBUG] [Thread-199821] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:40:18.076 [DEBUG] [Thread-199821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:40:18.081 [DEBUG] [Thread-199821] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:40:18.083 [DEBUG] [Thread-199821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:40:18.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:40:18.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:40:18.088 [DEBUG] [Thread-199821] [transport.py] [_log()] userauth is OK
2025-11-25T00:40:18.089 [DEBUG] [Thread-199821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:40:18.089 [DEBUG] [Thread-199821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:40:18.089 [DEBUG] [Thread-199821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:40:18.089 [DEBUG] [Thread-199821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:40:18.116 [INFO] [Thread-199821] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:40:18.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:40:18.759 [DEBUG] [Thread-199821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:40:18.760 [DEBUG] [Thread-199821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:40:18.761 [DEBUG] [Thread-199821] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:40:18.801 [DEBUG] [Thread-199821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:40:18.801 [DEBUG] [Thread-199821] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:40:18.804 [DEBUG] [Thread-199821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:40:18.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:40:18.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:40:18.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:40:18.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:40:18.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:40:18.829 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:40:18.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:40:18.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:40:18.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:40:18.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.944141 -999.00  +13.10  17.79     45   +1.50 1 1 1 1 1     0    0 11.04 -33.24 ZNESW 15.5 17.8 157.0 22.9 13.3 -25.3 13.2 -24.9 12.9 -23.6 13.2 -24.6
2025-11-25T00:40:18.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:40:18.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:40:18.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.944141
2025-11-25T00:40:18.836 [DEBUG] [Thread-199821] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:40:18.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:40:18.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:40:18.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:40:18.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:40:18.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:40:18.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:40:07', tmtdew=13.12, humidity=40.26, cloud=0.0, wind=23.24, temperature=13.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:40:07', seeing=0.98, atlas_timestamp='2025-11-24T22:39:33.782', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:37:00')
2025-11-25T00:40:18.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:40:18.930 [DEBUG] [Thread-199824] [transport.py] [_log()] starting thread (client mode): 0xd07cf0a0
2025-11-25T00:40:18.930 [DEBUG] [Thread-199824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:40:18.944 [DEBUG] [Thread-199824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:40:18.944 [INFO] [Thread-199824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] client lang: <none>
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] server lang: <none>
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] kex follows: False
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] Compression: none
2025-11-25T00:40:18.952 [DEBUG] [Thread-199824] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:40:19.013 [DEBUG] [Thread-199824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:40:19.013 [DEBUG] [Thread-199824] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:40:19.013 [DEBUG] [Thread-199824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:40:19.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:40:19.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:40:19.069 [DEBUG] [Thread-199824] [transport.py] [_log()] userauth is OK
2025-11-25T00:40:19.069 [DEBUG] [Thread-199824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:40:19.069 [DEBUG] [Thread-199824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:40:19.069 [DEBUG] [Thread-199824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:40:19.069 [DEBUG] [Thread-199824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:40:19.083 [INFO] [Thread-199824] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:40:19.083 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:40:19.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:40:19.926 [DEBUG] [Thread-199824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:40:19.926 [DEBUG] [Thread-199824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:40:19.974 [DEBUG] [Thread-199824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:40:19.974 [DEBUG] [Thread-199824] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:40:19.982 [DEBUG] [Thread-199824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:40:19.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:40:19.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-11-25T00:40:19.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-11-25T00:40:20.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:40:20.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:40:20.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:40:20.014 [DEBUG] [Thread-199824] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:40:20.071 [DEBUG] [Thread-199826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:40:20.852 [DEBUG] [Thread-199827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:40:35.204 [DEBUG] [Thread-199828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:40:50.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:40:50.064 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:40:50.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-11-25T00:40:50.257 [DEBUG] [Thread-199829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:40:50.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 40, 40), 13.05, 40.67, 0.0, 25.83, 13.08, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:40:50.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:40:40
2025-11-25T00:40:51.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:40:51.316 [DEBUG] [Thread-199830] [transport.py] [_log()] starting thread (client mode): 0xd0787370
2025-11-25T00:40:51.317 [DEBUG] [Thread-199830] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:40:51.332 [DEBUG] [Thread-199830] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:40:51.333 [INFO] [Thread-199830] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:40:51.338 [DEBUG] [Thread-199830] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:40:51.338 [DEBUG] [Thread-199830] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:40:51.338 [DEBUG] [Thread-199830] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:40:51.338 [DEBUG] [Thread-199830] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:40:51.338 [DEBUG] [Thread-199830] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:40:51.338 [DEBUG] [Thread-199830] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:40:51.339 [DEBUG] [Thread-199830] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:40:51.339 [DEBUG] [Thread-199830] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:40:51.339 [DEBUG] [Thread-199830] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:40:51.339 [DEBUG] [Thread-199830] [transport.py] [_log()] client lang: <none>
2025-11-25T00:40:51.339 [DEBUG] [Thread-199830] [transport.py] [_log()] server lang: <none>
2025-11-25T00:40:51.339 [DEBUG] [Thread-199830] [transport.py] [_log()] kex follows: False
2025-11-25T00:40:51.339 [DEBUG] [Thread-199830] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:40:51.339 [DEBUG] [Thread-199830] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:40:51.339 [DEBUG] [Thread-199830] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:40:51.340 [DEBUG] [Thread-199830] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:40:51.340 [DEBUG] [Thread-199830] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:40:51.340 [DEBUG] [Thread-199830] [transport.py] [_log()] Compression: none
2025-11-25T00:40:51.340 [DEBUG] [Thread-199830] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:40:51.375 [DEBUG] [Thread-199830] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:40:51.381 [DEBUG] [Thread-199830] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:40:51.383 [DEBUG] [Thread-199830] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:40:51.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:40:51.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:40:51.389 [DEBUG] [Thread-199830] [transport.py] [_log()] userauth is OK
2025-11-25T00:40:51.389 [DEBUG] [Thread-199830] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:40:51.390 [DEBUG] [Thread-199830] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:40:51.390 [DEBUG] [Thread-199830] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:40:51.390 [DEBUG] [Thread-199830] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:40:51.428 [INFO] [Thread-199830] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:40:51.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:40:52.091 [DEBUG] [Thread-199830] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:40:52.091 [DEBUG] [Thread-199830] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:40:52.093 [DEBUG] [Thread-199830] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:40:52.131 [DEBUG] [Thread-199830] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:40:52.132 [DEBUG] [Thread-199830] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:40:52.135 [DEBUG] [Thread-199830] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:40:52.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:40:52.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:40:52.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:40:52.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:40:52.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:40:52.160 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:40:52.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:40:52.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:40:52.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:40:52.162 [DEBUG] [Thread-199830] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:40:52.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.944488 -999.00  +13.10  14.56     45   +1.50 1 1 1 1 1     0    0 10.97 -30.30 ZNESW 14.0 14.6 157.0 24.9 13.3 -25.5 13.2 -24.9 12.9 -23.7 13.2 -24.5
2025-11-25T00:40:52.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:40:52.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:40:52.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.944488
2025-11-25T00:40:52.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:40:52.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:40:52.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:40:52.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:40:52.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:40:52.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:40:40', tmtdew=13.05, humidity=40.67, cloud=0.0, wind=25.83, temperature=13.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:40:40', seeing=0.92, atlas_timestamp='2025-11-24T22:40:03.763', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:37:00')
2025-11-25T00:40:52.266 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:40:52.277 [DEBUG] [Thread-199833] [transport.py] [_log()] starting thread (client mode): 0xd31f60b0
2025-11-25T00:40:52.277 [DEBUG] [Thread-199833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:40:52.293 [DEBUG] [Thread-199833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:40:52.293 [INFO] [Thread-199833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:40:52.300 [DEBUG] [Thread-199833] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:40:52.300 [DEBUG] [Thread-199833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:40:52.300 [DEBUG] [Thread-199833] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:40:52.300 [DEBUG] [Thread-199833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:40:52.300 [DEBUG] [Thread-199833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:40:52.300 [DEBUG] [Thread-199833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:40:52.300 [DEBUG] [Thread-199833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:40:52.300 [DEBUG] [Thread-199833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] client lang: <none>
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] server lang: <none>
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] kex follows: False
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] Compression: none
2025-11-25T00:40:52.301 [DEBUG] [Thread-199833] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:40:52.363 [DEBUG] [Thread-199833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:40:52.363 [DEBUG] [Thread-199833] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:40:52.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:40:52.364 [DEBUG] [Thread-199833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:40:52.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:40:52.425 [DEBUG] [Thread-199833] [transport.py] [_log()] userauth is OK
2025-11-25T00:40:52.425 [DEBUG] [Thread-199833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:40:52.425 [DEBUG] [Thread-199833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:40:52.426 [DEBUG] [Thread-199833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:40:52.426 [DEBUG] [Thread-199833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:40:52.445 [INFO] [Thread-199833] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:40:52.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:40:52.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:40:53.318 [DEBUG] [Thread-199833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:40:53.319 [DEBUG] [Thread-199833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:40:53.367 [DEBUG] [Thread-199833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:40:53.367 [DEBUG] [Thread-199833] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:40:53.376 [DEBUG] [Thread-199833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:40:53.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:40:53.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:40:53.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-11-25T00:40:53.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:40:53.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:40:53.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:40:53.422 [DEBUG] [Thread-199833] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:41:05.330 [DEBUG] [Thread-199835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:41:11.964 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:41:11.967 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:41:20.520 [DEBUG] [Thread-199836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:41:21.181 [DEBUG] [Thread-199837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:41:23.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:41:23.448 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:41:23.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-11-25T00:41:24.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 41, 13), 13.1, 40.52, 0.0, 26.66, 13.03, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:41:24.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:41:13
2025-11-25T00:41:24.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:41:24.693 [DEBUG] [Thread-199838] [transport.py] [_log()] starting thread (client mode): 0xd317c190
2025-11-25T00:41:24.694 [DEBUG] [Thread-199838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:41:24.695 [DEBUG] [Thread-199838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:41:24.696 [INFO] [Thread-199838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:41:24.699 [DEBUG] [Thread-199838] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:41:24.699 [DEBUG] [Thread-199838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] client lang: <none>
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] server lang: <none>
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] kex follows: False
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:41:24.700 [DEBUG] [Thread-199838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:41:24.701 [DEBUG] [Thread-199838] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:41:24.701 [DEBUG] [Thread-199838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:41:24.701 [DEBUG] [Thread-199838] [transport.py] [_log()] Compression: none
2025-11-25T00:41:24.701 [DEBUG] [Thread-199838] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:41:24.739 [DEBUG] [Thread-199838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:41:24.743 [DEBUG] [Thread-199838] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:41:24.745 [DEBUG] [Thread-199838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:41:24.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:41:24.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:41:24.750 [DEBUG] [Thread-199838] [transport.py] [_log()] userauth is OK
2025-11-25T00:41:24.750 [DEBUG] [Thread-199838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:41:24.750 [DEBUG] [Thread-199838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:41:24.750 [DEBUG] [Thread-199838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:41:24.750 [DEBUG] [Thread-199838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:41:24.789 [INFO] [Thread-199838] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:41:24.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:41:25.432 [DEBUG] [Thread-199838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:41:25.432 [DEBUG] [Thread-199838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:41:25.434 [DEBUG] [Thread-199838] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:41:25.473 [DEBUG] [Thread-199838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:41:25.473 [DEBUG] [Thread-199838] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:41:25.476 [DEBUG] [Thread-199838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:41:25.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:41:25.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:41:25.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:41:25.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:41:25.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:41:25.501 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:41:25.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:41:25.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:41:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:41:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.944836 -999.00  +13.10  17.37     45   +1.50 1 1 1 1 1     0    0 10.66 -27.87 ZNESW 16.6 17.4 158.4 27.6 13.3 -25.5 13.1 -24.9 12.9 -23.6 13.2 -24.7
2025-11-25T00:41:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:41:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:41:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.944836
2025-11-25T00:41:25.508 [DEBUG] [Thread-199838] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:41:25.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:41:25.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:41:25.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:41:25.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:41:25.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:41:25.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:41:13', tmtdew=13.1, humidity=40.52, cloud=0.0, wind=26.66, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:41:13', seeing=0.85, atlas_timestamp='2025-11-24T22:40:33.830', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03125, 0.03225000000000122, -0.011499999999999844, 0.05349999999999966, 0.08525000000000027, -0.010500000000000398, -0.02474999999999916, 0.022999999999999687, 0.014000000000001123, 0.06824999999999903, 0.006000000000000227, 0.08699999999999974, 0.08424999999999905, 0.02049999999999841, -0.021000000000000796, 0.017250000000000654, 0.01249999999999929, 0.021999999999998465, -0.023750000000001492, 0.03399999999999892, 0.06274999999999942, 0.015750000000000597, -0.0022500000000000853, 0.010999999999999233, -0.037499999999999645, 0.004249999999998977, 0.054499999999999105, 0.09850000000000136, 0.10550000000000104, 0.12200000000000166, 0.002500000000001279, -0.02325000000000088], zp_timestamp='2025-11-24T22:37:00')
2025-11-25T00:41:25.606 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:41:25.618 [DEBUG] [Thread-199841] [transport.py] [_log()] starting thread (client mode): 0xd3150670
2025-11-25T00:41:25.618 [DEBUG] [Thread-199841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:41:25.634 [DEBUG] [Thread-199841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:41:25.634 [INFO] [Thread-199841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:41:25.641 [DEBUG] [Thread-199841] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] client lang: <none>
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] server lang: <none>
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] kex follows: False
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:41:25.642 [DEBUG] [Thread-199841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:41:25.643 [DEBUG] [Thread-199841] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:41:25.643 [DEBUG] [Thread-199841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:41:25.643 [DEBUG] [Thread-199841] [transport.py] [_log()] Compression: none
2025-11-25T00:41:25.643 [DEBUG] [Thread-199841] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:41:25.701 [DEBUG] [Thread-199841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:41:25.701 [DEBUG] [Thread-199841] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:41:25.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:41:25.702 [DEBUG] [Thread-199841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:41:25.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:41:25.757 [DEBUG] [Thread-199841] [transport.py] [_log()] userauth is OK
2025-11-25T00:41:25.757 [DEBUG] [Thread-199841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:41:25.757 [DEBUG] [Thread-199841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:41:25.757 [DEBUG] [Thread-199841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:41:25.757 [DEBUG] [Thread-199841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:41:25.776 [INFO] [Thread-199841] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:41:25.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:41:25.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:41:26.599 [DEBUG] [Thread-199841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:41:26.599 [DEBUG] [Thread-199841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:41:26.646 [DEBUG] [Thread-199841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:41:26.647 [DEBUG] [Thread-199841] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:41:26.656 [DEBUG] [Thread-199841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:41:26.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:41:26.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-11-25T00:41:26.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-11-25T00:41:26.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:41:26.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:41:26.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:41:26.694 [DEBUG] [Thread-199841] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:41:35.596 [DEBUG] [Thread-199843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:41:50.755 [DEBUG] [Thread-199844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:41:56.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:41:56.727 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:41:56.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-11-25T00:41:57.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 41, 46), 13.12, 40.61, 0.0, 27.28, 13.01, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:41:57.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:41:46
2025-11-25T00:41:57.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:41:57.917 [DEBUG] [Thread-199845] [transport.py] [_log()] starting thread (client mode): 0xd317ca00
2025-11-25T00:41:57.917 [DEBUG] [Thread-199845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:41:57.930 [DEBUG] [Thread-199845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:41:57.930 [INFO] [Thread-199845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:41:57.935 [DEBUG] [Thread-199845] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:41:57.935 [DEBUG] [Thread-199845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:41:57.935 [DEBUG] [Thread-199845] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:41:57.935 [DEBUG] [Thread-199845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:41:57.935 [DEBUG] [Thread-199845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:41:57.935 [DEBUG] [Thread-199845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:41:57.935 [DEBUG] [Thread-199845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:41:57.936 [DEBUG] [Thread-199845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:41:57.936 [DEBUG] [Thread-199845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:41:57.936 [DEBUG] [Thread-199845] [transport.py] [_log()] client lang: <none>
2025-11-25T00:41:57.936 [DEBUG] [Thread-199845] [transport.py] [_log()] server lang: <none>
2025-11-25T00:41:57.936 [DEBUG] [Thread-199845] [transport.py] [_log()] kex follows: False
2025-11-25T00:41:57.936 [DEBUG] [Thread-199845] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:41:57.936 [DEBUG] [Thread-199845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:41:57.936 [DEBUG] [Thread-199845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:41:57.937 [DEBUG] [Thread-199845] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:41:57.937 [DEBUG] [Thread-199845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:41:57.937 [DEBUG] [Thread-199845] [transport.py] [_log()] Compression: none
2025-11-25T00:41:57.937 [DEBUG] [Thread-199845] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:41:57.971 [DEBUG] [Thread-199845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:41:57.974 [DEBUG] [Thread-199845] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:41:57.976 [DEBUG] [Thread-199845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:41:57.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:41:57.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:41:57.982 [DEBUG] [Thread-199845] [transport.py] [_log()] userauth is OK
2025-11-25T00:41:57.982 [DEBUG] [Thread-199845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:41:57.982 [DEBUG] [Thread-199845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:41:57.982 [DEBUG] [Thread-199845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:41:57.982 [DEBUG] [Thread-199845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:41:58.009 [INFO] [Thread-199845] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:41:58.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:41:58.661 [DEBUG] [Thread-199845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:41:58.670 [DEBUG] [Thread-199845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:41:58.672 [DEBUG] [Thread-199845] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:41:58.702 [DEBUG] [Thread-199845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:41:58.702 [DEBUG] [Thread-199845] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:41:58.706 [DEBUG] [Thread-199845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:41:58.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:41:58.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:41:58.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:41:58.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:41:58.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:41:58.735 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:41:58.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:41:58.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:41:58.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:41:58.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.945183 -999.00  +13.10  21.52     45   +1.60 1 1 1 1 1     0    0 11.01 -27.09 ZNESW 16.9 21.5 143.4 26.0 13.3 -25.4 13.2 -24.9 12.9 -23.7 13.2 -24.6
2025-11-25T00:41:58.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:41:58.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:41:58.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.945183
2025-11-25T00:41:58.742 [DEBUG] [Thread-199845] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:41:58.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:41:58.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:41:58.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:41:58.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:41:58.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:41:58.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:41:46', tmtdew=13.12, humidity=40.61, cloud=0.0, wind=27.28, temperature=13.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:41:46', seeing=0.85, atlas_timestamp='2025-11-24T22:41:03.811', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:40:00')
2025-11-25T00:41:58.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:41:58.841 [DEBUG] [Thread-199848] [transport.py] [_log()] starting thread (client mode): 0xd31939d0
2025-11-25T00:41:58.842 [DEBUG] [Thread-199848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:41:58.856 [DEBUG] [Thread-199848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:41:58.856 [INFO] [Thread-199848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:41:58.864 [DEBUG] [Thread-199848] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:41:58.864 [DEBUG] [Thread-199848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:41:58.864 [DEBUG] [Thread-199848] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:41:58.864 [DEBUG] [Thread-199848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:41:58.864 [DEBUG] [Thread-199848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:41:58.864 [DEBUG] [Thread-199848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:41:58.864 [DEBUG] [Thread-199848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:41:58.864 [DEBUG] [Thread-199848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] client lang: <none>
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] server lang: <none>
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] kex follows: False
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] Compression: none
2025-11-25T00:41:58.865 [DEBUG] [Thread-199848] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:41:58.920 [DEBUG] [Thread-199848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:41:58.921 [DEBUG] [Thread-199848] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:41:58.921 [DEBUG] [Thread-199848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:41:58.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:41:58.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:41:58.977 [DEBUG] [Thread-199848] [transport.py] [_log()] userauth is OK
2025-11-25T00:41:58.977 [DEBUG] [Thread-199848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:41:58.977 [DEBUG] [Thread-199848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:41:58.977 [DEBUG] [Thread-199848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:41:58.977 [DEBUG] [Thread-199848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:41:58.997 [INFO] [Thread-199848] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:41:58.997 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:41:59.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:41:59.819 [DEBUG] [Thread-199848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:41:59.819 [DEBUG] [Thread-199848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:41:59.867 [DEBUG] [Thread-199848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:41:59.867 [DEBUG] [Thread-199848] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:41:59.875 [DEBUG] [Thread-199848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:41:59.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:41:59.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-11-25T00:41:59.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-11-25T00:41:59.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:41:59.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:41:59.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:41:59.918 [DEBUG] [Thread-199848] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:42:05.837 [DEBUG] [Thread-199850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:42:12.180 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:42:12.182 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:42:20.953 [DEBUG] [Thread-199851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:42:21.432 [DEBUG] [Thread-199852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:42:29.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:42:29.943 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:42:29.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-11-25T00:42:30.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 42, 19), 13.13, 40.54, 0.0, 26.77, 12.93, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:42:30.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:42:19
2025-11-25T00:42:30.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:42:31.124 [DEBUG] [Thread-199853] [transport.py] [_log()] starting thread (client mode): 0xd07ce3e0
2025-11-25T00:42:31.125 [DEBUG] [Thread-199853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:42:31.131 [DEBUG] [Thread-199853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:42:31.132 [INFO] [Thread-199853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:42:31.138 [DEBUG] [Thread-199853] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:42:31.138 [DEBUG] [Thread-199853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:42:31.138 [DEBUG] [Thread-199853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:42:31.138 [DEBUG] [Thread-199853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:42:31.138 [DEBUG] [Thread-199853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:42:31.138 [DEBUG] [Thread-199853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:42:31.138 [DEBUG] [Thread-199853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:42:31.138 [DEBUG] [Thread-199853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:42:31.138 [DEBUG] [Thread-199853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:42:31.138 [DEBUG] [Thread-199853] [transport.py] [_log()] client lang: <none>
2025-11-25T00:42:31.139 [DEBUG] [Thread-199853] [transport.py] [_log()] server lang: <none>
2025-11-25T00:42:31.139 [DEBUG] [Thread-199853] [transport.py] [_log()] kex follows: False
2025-11-25T00:42:31.139 [DEBUG] [Thread-199853] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:42:31.140 [DEBUG] [Thread-199853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:42:31.140 [DEBUG] [Thread-199853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:42:31.140 [DEBUG] [Thread-199853] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:42:31.140 [DEBUG] [Thread-199853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:42:31.140 [DEBUG] [Thread-199853] [transport.py] [_log()] Compression: none
2025-11-25T00:42:31.140 [DEBUG] [Thread-199853] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:42:31.173 [DEBUG] [Thread-199853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:42:31.179 [DEBUG] [Thread-199853] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:42:31.181 [DEBUG] [Thread-199853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:42:31.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:42:31.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:42:31.186 [DEBUG] [Thread-199853] [transport.py] [_log()] userauth is OK
2025-11-25T00:42:31.186 [DEBUG] [Thread-199853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:42:31.187 [DEBUG] [Thread-199853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:42:31.187 [DEBUG] [Thread-199853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:42:31.187 [DEBUG] [Thread-199853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:42:31.211 [INFO] [Thread-199853] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:42:31.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:42:31.839 [DEBUG] [Thread-199853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:42:31.839 [DEBUG] [Thread-199853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:42:31.840 [DEBUG] [Thread-199853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:42:31.880 [DEBUG] [Thread-199853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:42:31.880 [DEBUG] [Thread-199853] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:42:31.883 [DEBUG] [Thread-199853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:42:31.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:42:31.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:42:31.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:42:31.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:42:31.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:42:31.904 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:42:31.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:42:31.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:42:31.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:42:31.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.945530 -999.00  +13.10  19.38     45   +1.50 1 1 1 1 1     0    0 10.85 -25.94 ZNESW 18.3 19.4 162.1 25.9 13.3 -25.4 13.2 -25.0 12.9 -23.8 13.2 -24.5
2025-11-25T00:42:31.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:42:31.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:42:31.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.945530
2025-11-25T00:42:31.912 [DEBUG] [Thread-199853] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:42:31.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:42:31.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:42:31.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:42:31.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:42:31.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:42:31.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:42:19', tmtdew=13.13, humidity=40.54, cloud=0.0, wind=26.77, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:42:19', seeing=0.85, atlas_timestamp='2025-11-24T22:41:33.792', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:40:00')
2025-11-25T00:42:32.002 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:42:32.014 [DEBUG] [Thread-199856] [transport.py] [_log()] starting thread (client mode): 0xd3151f00
2025-11-25T00:42:32.014 [DEBUG] [Thread-199856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:42:32.029 [DEBUG] [Thread-199856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:42:32.029 [INFO] [Thread-199856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:42:32.036 [DEBUG] [Thread-199856] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] client lang: <none>
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] server lang: <none>
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] kex follows: False
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] Compression: none
2025-11-25T00:42:32.037 [DEBUG] [Thread-199856] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:42:32.095 [DEBUG] [Thread-199856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:42:32.095 [DEBUG] [Thread-199856] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:42:32.095 [DEBUG] [Thread-199856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:42:32.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:42:32.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:42:32.153 [DEBUG] [Thread-199856] [transport.py] [_log()] userauth is OK
2025-11-25T00:42:32.153 [DEBUG] [Thread-199856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:42:32.153 [DEBUG] [Thread-199856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:42:32.153 [DEBUG] [Thread-199856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:42:32.153 [DEBUG] [Thread-199856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:42:32.167 [INFO] [Thread-199856] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:42:32.167 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:42:32.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:42:33.002 [DEBUG] [Thread-199856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:42:33.002 [DEBUG] [Thread-199856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:42:33.050 [DEBUG] [Thread-199856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:42:33.051 [DEBUG] [Thread-199856] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:42:33.060 [DEBUG] [Thread-199856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:42:33.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:42:33.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-11-25T00:42:33.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') -> 00000000
2025-11-25T00:42:33.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:42:33.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:42:33.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:42:33.097 [DEBUG] [Thread-199856] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:42:36.038 [DEBUG] [Thread-199858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:42:51.196 [DEBUG] [Thread-199859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:43:03.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:43:03.143 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:43:03.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-11-25T00:43:03.541 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:43:03.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 42, 52), 13.11, 40.61, 0.0, 23.98, 12.96, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:43:03.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:42:52
2025-11-25T00:43:04.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:43:04.322 [DEBUG] [Thread-199860] [transport.py] [_log()] starting thread (client mode): 0xd317f940
2025-11-25T00:43:04.323 [DEBUG] [Thread-199860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:43:04.333 [DEBUG] [Thread-199860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:43:04.333 [INFO] [Thread-199860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:43:04.338 [DEBUG] [Thread-199860] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] client lang: <none>
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] server lang: <none>
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] kex follows: False
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:43:04.339 [DEBUG] [Thread-199860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:43:04.340 [DEBUG] [Thread-199860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:43:04.340 [DEBUG] [Thread-199860] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:43:04.340 [DEBUG] [Thread-199860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:43:04.340 [DEBUG] [Thread-199860] [transport.py] [_log()] Compression: none
2025-11-25T00:43:04.340 [DEBUG] [Thread-199860] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:43:04.368 [DEBUG] [Thread-199860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:43:04.371 [DEBUG] [Thread-199860] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:43:04.372 [DEBUG] [Thread-199860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:43:04.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:43:04.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:43:04.376 [DEBUG] [Thread-199860] [transport.py] [_log()] userauth is OK
2025-11-25T00:43:04.376 [DEBUG] [Thread-199860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:43:04.376 [DEBUG] [Thread-199860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:43:04.376 [DEBUG] [Thread-199860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:43:04.376 [DEBUG] [Thread-199860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:43:04.388 [INFO] [Thread-199860] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:43:04.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:43:05.055 [DEBUG] [Thread-199860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:43:05.055 [DEBUG] [Thread-199860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:43:05.055 [DEBUG] [Thread-199860] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:43:05.096 [DEBUG] [Thread-199860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:43:05.096 [DEBUG] [Thread-199860] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:43:05.099 [DEBUG] [Thread-199860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:43:05.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:43:05.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:43:05.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:43:05.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:43:05.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:43:05.120 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:43:05.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:43:05.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:43:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:43:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.946225 -999.00  +13.20  17.93     45   +1.60 1 1 1 1 1     0    0 10.88 -26.65 ZNESW 15.9 17.9 146.0 31.3 13.3 -25.6 13.2 -24.9 12.9 -24.0 13.2 -24.6
2025-11-25T00:43:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:43:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:43:05.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.946225
2025-11-25T00:43:05.127 [DEBUG] [Thread-199860] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:43:05.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:43:05.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:43:05.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:43:05.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:43:05.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:43:05.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:42:52', tmtdew=13.11, humidity=40.61, cloud=0.0, wind=23.98, temperature=12.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:42:52', seeing=0.8, atlas_timestamp='2025-11-24T22:42:33.840', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:40:00')
2025-11-25T00:43:05.209 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:43:05.221 [DEBUG] [Thread-199863] [transport.py] [_log()] starting thread (client mode): 0xd3150670
2025-11-25T00:43:05.221 [DEBUG] [Thread-199863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:43:05.236 [DEBUG] [Thread-199863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:43:05.236 [INFO] [Thread-199863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] client lang: <none>
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] server lang: <none>
2025-11-25T00:43:05.243 [DEBUG] [Thread-199863] [transport.py] [_log()] kex follows: False
2025-11-25T00:43:05.244 [DEBUG] [Thread-199863] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:43:05.244 [DEBUG] [Thread-199863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:43:05.244 [DEBUG] [Thread-199863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:43:05.244 [DEBUG] [Thread-199863] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:43:05.244 [DEBUG] [Thread-199863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:43:05.244 [DEBUG] [Thread-199863] [transport.py] [_log()] Compression: none
2025-11-25T00:43:05.244 [DEBUG] [Thread-199863] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:43:05.300 [DEBUG] [Thread-199863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:43:05.300 [DEBUG] [Thread-199863] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:43:05.300 [DEBUG] [Thread-199863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:43:05.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:43:05.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:43:05.356 [DEBUG] [Thread-199863] [transport.py] [_log()] userauth is OK
2025-11-25T00:43:05.356 [DEBUG] [Thread-199863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:43:05.356 [DEBUG] [Thread-199863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:43:05.356 [DEBUG] [Thread-199863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:43:05.356 [DEBUG] [Thread-199863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:43:05.370 [INFO] [Thread-199863] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:43:05.370 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:43:05.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:43:06.223 [DEBUG] [Thread-199863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:43:06.223 [DEBUG] [Thread-199863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:43:06.244 [DEBUG] [Thread-199865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:43:06.271 [DEBUG] [Thread-199863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:43:06.271 [DEBUG] [Thread-199863] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:43:06.279 [DEBUG] [Thread-199863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:43:06.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:43:06.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:43:06.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-11-25T00:43:06.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:43:06.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:43:06.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:43:06.313 [DEBUG] [Thread-199863] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:43:12.392 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:43:12.394 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:43:21.393 [DEBUG] [Thread-199866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:43:21.698 [DEBUG] [Thread-199867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:43:36.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:43:36.338 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:43: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-11-25T00:43:36.459 [DEBUG] [Thread-199868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:43:37.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 43, 25), 13.04, 40.79, 0.0, 26.2, 12.91, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:43:37.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:43:25
2025-11-25T00:43:37.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:43:37.527 [DEBUG] [Thread-199869] [transport.py] [_log()] starting thread (client mode): 0xd3149300
2025-11-25T00:43:37.528 [DEBUG] [Thread-199869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:43:37.540 [DEBUG] [Thread-199869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:43:37.540 [INFO] [Thread-199869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:43:37.547 [DEBUG] [Thread-199869] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:43:37.547 [DEBUG] [Thread-199869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:43:37.547 [DEBUG] [Thread-199869] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:43:37.547 [DEBUG] [Thread-199869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:43:37.547 [DEBUG] [Thread-199869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:43:37.547 [DEBUG] [Thread-199869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:43:37.547 [DEBUG] [Thread-199869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:43:37.548 [DEBUG] [Thread-199869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:43:37.548 [DEBUG] [Thread-199869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:43:37.548 [DEBUG] [Thread-199869] [transport.py] [_log()] client lang: <none>
2025-11-25T00:43:37.548 [DEBUG] [Thread-199869] [transport.py] [_log()] server lang: <none>
2025-11-25T00:43:37.548 [DEBUG] [Thread-199869] [transport.py] [_log()] kex follows: False
2025-11-25T00:43:37.548 [DEBUG] [Thread-199869] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:43:37.549 [DEBUG] [Thread-199869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:43:37.549 [DEBUG] [Thread-199869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:43:37.549 [DEBUG] [Thread-199869] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:43:37.549 [DEBUG] [Thread-199869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:43:37.550 [DEBUG] [Thread-199869] [transport.py] [_log()] Compression: none
2025-11-25T00:43:37.550 [DEBUG] [Thread-199869] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:43:37.585 [DEBUG] [Thread-199869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:43:37.590 [DEBUG] [Thread-199869] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:43:37.591 [DEBUG] [Thread-199869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:43:37.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:43:37.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:43:37.596 [DEBUG] [Thread-199869] [transport.py] [_log()] userauth is OK
2025-11-25T00:43:37.597 [DEBUG] [Thread-199869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:43:37.597 [DEBUG] [Thread-199869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:43:37.597 [DEBUG] [Thread-199869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:43:37.597 [DEBUG] [Thread-199869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:43:37.623 [INFO] [Thread-199869] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:43:37.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:43:38.281 [DEBUG] [Thread-199869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:43:38.281 [DEBUG] [Thread-199869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:43:38.288 [DEBUG] [Thread-199869] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:43:38.321 [DEBUG] [Thread-199869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:43:38.321 [DEBUG] [Thread-199869] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:43:38.325 [DEBUG] [Thread-199869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:43:38.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:43:38.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:43:38.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:43:38.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:43:38.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:43:38.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:43:38.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:43:38.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:43:38.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:43:38.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.946572 -999.00  +13.10  19.99     45   +1.50 1 1 1 1 1     0    0 11.06 -25.73 ZNESW 17.8 20.0 150.8 23.8 13.3 -25.7 13.1 -24.9 12.9 -23.9 13.2 -24.7
2025-11-25T00:43:38.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:43:38.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:43:38.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.946572
2025-11-25T00:43:38.358 [DEBUG] [Thread-199869] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:43:38.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:43:38.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:43:38.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:43:38.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:43:38.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:43:38.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:43:25', tmtdew=13.04, humidity=40.79, cloud=0.0, wind=26.2, temperature=12.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:43:26', seeing=0.85, atlas_timestamp='2025-11-24T22:43:03.821', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:40:00')
2025-11-25T00:43:38.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:43:38.489 [DEBUG] [Thread-199872] [transport.py] [_log()] starting thread (client mode): 0xd31498d0
2025-11-25T00:43:38.489 [DEBUG] [Thread-199872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:43:38.504 [DEBUG] [Thread-199872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:43:38.505 [INFO] [Thread-199872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] client lang: <none>
2025-11-25T00:43:38.512 [DEBUG] [Thread-199872] [transport.py] [_log()] server lang: <none>
2025-11-25T00:43:38.513 [DEBUG] [Thread-199872] [transport.py] [_log()] kex follows: False
2025-11-25T00:43:38.513 [DEBUG] [Thread-199872] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:43:38.513 [DEBUG] [Thread-199872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:43:38.513 [DEBUG] [Thread-199872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:43:38.513 [DEBUG] [Thread-199872] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:43:38.513 [DEBUG] [Thread-199872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:43:38.513 [DEBUG] [Thread-199872] [transport.py] [_log()] Compression: none
2025-11-25T00:43:38.513 [DEBUG] [Thread-199872] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:43:38.573 [DEBUG] [Thread-199872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:43:38.573 [DEBUG] [Thread-199872] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:43:38.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:43:38.575 [DEBUG] [Thread-199872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:43:38.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:43:38.629 [DEBUG] [Thread-199872] [transport.py] [_log()] userauth is OK
2025-11-25T00:43:38.629 [DEBUG] [Thread-199872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:43:38.629 [DEBUG] [Thread-199872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:43:38.630 [DEBUG] [Thread-199872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:43:38.630 [DEBUG] [Thread-199872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:43:38.649 [INFO] [Thread-199872] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:43:38.649 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:43:38.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:43:39.524 [DEBUG] [Thread-199872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:43:39.525 [DEBUG] [Thread-199872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:43:39.572 [DEBUG] [Thread-199872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:43:39.572 [DEBUG] [Thread-199872] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:43:39.580 [DEBUG] [Thread-199872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:43:39.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:43:39.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:43:39.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-11-25T00:43:39.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:43:39.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:43:39.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:43:39.612 [DEBUG] [Thread-199872] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:43:51.568 [DEBUG] [Thread-199874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:44:06.721 [DEBUG] [Thread-199875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:44:09.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:44:09.611 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:44:09.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-11-25T00:44:10.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 43, 58), 12.96, 40.77, 0.0, 24.97, 12.93, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:44:10.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:43:58
2025-11-25T00:44:10.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:44:10.985 [DEBUG] [Thread-199876] [transport.py] [_log()] starting thread (client mode): 0xd0711330
2025-11-25T00:44:10.986 [DEBUG] [Thread-199876] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:44:10.995 [DEBUG] [Thread-199876] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:44:10.995 [INFO] [Thread-199876] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] client lang: <none>
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] server lang: <none>
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] kex follows: False
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:44:10.999 [DEBUG] [Thread-199876] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:44:11.000 [DEBUG] [Thread-199876] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:44:11.000 [DEBUG] [Thread-199876] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:44:11.000 [DEBUG] [Thread-199876] [transport.py] [_log()] Compression: none
2025-11-25T00:44:11.000 [DEBUG] [Thread-199876] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:44:11.030 [DEBUG] [Thread-199876] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:44:11.033 [DEBUG] [Thread-199876] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:44:11.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:44:11.036 [DEBUG] [Thread-199876] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:44:11.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:44:11.037 [DEBUG] [Thread-199876] [transport.py] [_log()] userauth is OK
2025-11-25T00:44:11.038 [DEBUG] [Thread-199876] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:44:11.038 [DEBUG] [Thread-199876] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:44:11.038 [DEBUG] [Thread-199876] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:44:11.038 [DEBUG] [Thread-199876] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:44:11.057 [INFO] [Thread-199876] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:44:11.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:44:11.869 [DEBUG] [Thread-199876] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:44:11.869 [DEBUG] [Thread-199876] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:44:11.873 [DEBUG] [Thread-199876] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:44:11.911 [DEBUG] [Thread-199876] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:44:11.911 [DEBUG] [Thread-199876] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:44:11.915 [DEBUG] [Thread-199876] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:44:11.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:44:11.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:44:11.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:44:11.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:44:11.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:44:11.942 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:44:11.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:44:11.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:44:11.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:44:11.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.946919 -999.00  +13.00  17.79     45   +1.50 1 1 1 1 1     0    0 10.93 -25.78 ZNESW 19.0 17.8 145.2 22.4 13.2 -25.6 13.1 -25.1 12.9 -24.0 13.2 -24.7
2025-11-25T00:44:11.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:44:11.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:44:11.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.946919
2025-11-25T00:44:11.951 [DEBUG] [Thread-199876] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:44:11.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:44:11.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:44:11.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:44:11.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:44:11.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:44:11.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:43:58', tmtdew=12.96, humidity=40.77, cloud=0.0, wind=24.97, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:43:59', seeing=0.85, atlas_timestamp='2025-11-24T22:43:33.802', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:40:00')
2025-11-25T00:44:12.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:44:12.068 [DEBUG] [Thread-199879] [transport.py] [_log()] starting thread (client mode): 0xc9b83970
2025-11-25T00:44:12.068 [DEBUG] [Thread-199879] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:44:12.084 [DEBUG] [Thread-199879] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:44:12.085 [INFO] [Thread-199879] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:44:12.093 [DEBUG] [Thread-199879] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:44:12.093 [DEBUG] [Thread-199879] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:44:12.093 [DEBUG] [Thread-199879] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:44:12.094 [DEBUG] [Thread-199879] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:44:12.094 [DEBUG] [Thread-199879] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:44:12.094 [DEBUG] [Thread-199879] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:44:12.094 [DEBUG] [Thread-199879] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:44:12.094 [DEBUG] [Thread-199879] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:44:12.094 [DEBUG] [Thread-199879] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:44:12.094 [DEBUG] [Thread-199879] [transport.py] [_log()] client lang: <none>
2025-11-25T00:44:12.094 [DEBUG] [Thread-199879] [transport.py] [_log()] server lang: <none>
2025-11-25T00:44:12.094 [DEBUG] [Thread-199879] [transport.py] [_log()] kex follows: False
2025-11-25T00:44:12.095 [DEBUG] [Thread-199879] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:44:12.095 [DEBUG] [Thread-199879] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:44:12.095 [DEBUG] [Thread-199879] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:44:12.095 [DEBUG] [Thread-199879] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:44:12.095 [DEBUG] [Thread-199879] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:44:12.095 [DEBUG] [Thread-199879] [transport.py] [_log()] Compression: none
2025-11-25T00:44:12.095 [DEBUG] [Thread-199879] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:44:12.154 [DEBUG] [Thread-199879] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:44:12.155 [DEBUG] [Thread-199879] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:44:12.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:44:12.156 [DEBUG] [Thread-199879] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:44:12.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:44:12.213 [DEBUG] [Thread-199879] [transport.py] [_log()] userauth is OK
2025-11-25T00:44:12.213 [DEBUG] [Thread-199879] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:44:12.213 [DEBUG] [Thread-199879] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:44:12.214 [DEBUG] [Thread-199879] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:44:12.214 [DEBUG] [Thread-199879] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:44:12.232 [INFO] [Thread-199879] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:44:12.233 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:44:12.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:44:12.605 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:44:12.606 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:44:13.121 [DEBUG] [Thread-199879] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:44:13.121 [DEBUG] [Thread-199879] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:44:13.170 [DEBUG] [Thread-199879] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:44:13.170 [DEBUG] [Thread-199879] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:44:13.179 [DEBUG] [Thread-199879] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:44:13.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:44:13.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-11-25T00:44:13.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-11-25T00:44:13.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:44:13.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:44:13.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:44:13.218 [DEBUG] [Thread-199879] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:44:21.771 [DEBUG] [Thread-199881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:44:21.973 [DEBUG] [Thread-199882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:44:36.923 [DEBUG] [Thread-199883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:44:43.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:44:43.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:44:43.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-11-25T00:44:44.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 44, 31), 13.04, 40.56, 0.0, 24.46, 13.03, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:44:44.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:44:31
2025-11-25T00:44:44.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:44:44.913 [DEBUG] [Thread-199884] [transport.py] [_log()] starting thread (client mode): 0xc9b83760
2025-11-25T00:44:44.914 [DEBUG] [Thread-199884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:44:44.926 [DEBUG] [Thread-199884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:44:44.926 [INFO] [Thread-199884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:44:44.932 [DEBUG] [Thread-199884] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] client lang: <none>
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] server lang: <none>
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] kex follows: False
2025-11-25T00:44:44.933 [DEBUG] [Thread-199884] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:44:44.934 [DEBUG] [Thread-199884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:44:44.934 [DEBUG] [Thread-199884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:44:44.934 [DEBUG] [Thread-199884] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:44:44.934 [DEBUG] [Thread-199884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:44:44.934 [DEBUG] [Thread-199884] [transport.py] [_log()] Compression: none
2025-11-25T00:44:44.934 [DEBUG] [Thread-199884] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:44:44.969 [DEBUG] [Thread-199884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:44:44.974 [DEBUG] [Thread-199884] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:44:44.976 [DEBUG] [Thread-199884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:44:44.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:44:44.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:44:44.982 [DEBUG] [Thread-199884] [transport.py] [_log()] userauth is OK
2025-11-25T00:44:44.983 [DEBUG] [Thread-199884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:44:44.983 [DEBUG] [Thread-199884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:44:44.983 [DEBUG] [Thread-199884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:44:44.983 [DEBUG] [Thread-199884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:44:45.022 [INFO] [Thread-199884] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:44:45.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:44:45.647 [DEBUG] [Thread-199884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:44:45.647 [DEBUG] [Thread-199884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:44:45.648 [DEBUG] [Thread-199884] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:44:45.679 [DEBUG] [Thread-199884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:44:45.679 [DEBUG] [Thread-199884] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:44:45.681 [DEBUG] [Thread-199884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:44:45.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:44:45.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:44:45.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:44:45.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:44:45.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:44:45.703 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:44:45.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:44:45.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:44:45.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:44:45.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.947266 -999.00  +13.00  20.10     46   +1.70 1 1 1 1 1     0    0 10.74 -26.41 ZNESW 20.2 20.1 153.7 27.4 13.2 -25.6 13.1 -25.0 12.9 -23.8 13.2 -24.6
2025-11-25T00:44:45.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:44:45.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:44:45.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.947266
2025-11-25T00:44:45.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:44:45.715 [DEBUG] [Thread-199884] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:44:45.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:44:45.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:44:45.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:44:45.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:44:45.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:44:31', tmtdew=13.04, humidity=40.56, cloud=0.0, wind=24.46, temperature=13.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:44:31', seeing=0.81, atlas_timestamp='2025-11-24T22:44:03.782', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:43:00')
2025-11-25T00:44:45.801 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:44:45.814 [DEBUG] [Thread-199887] [transport.py] [_log()] starting thread (client mode): 0xd07ce320
2025-11-25T00:44:45.814 [DEBUG] [Thread-199887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:44:45.829 [DEBUG] [Thread-199887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:44:45.829 [INFO] [Thread-199887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:44:45.836 [DEBUG] [Thread-199887] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:44:45.836 [DEBUG] [Thread-199887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:44:45.836 [DEBUG] [Thread-199887] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:44:45.837 [DEBUG] [Thread-199887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:44:45.837 [DEBUG] [Thread-199887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:44:45.837 [DEBUG] [Thread-199887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:44:45.837 [DEBUG] [Thread-199887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:44:45.837 [DEBUG] [Thread-199887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:44:45.837 [DEBUG] [Thread-199887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:44:45.837 [DEBUG] [Thread-199887] [transport.py] [_log()] client lang: <none>
2025-11-25T00:44:45.837 [DEBUG] [Thread-199887] [transport.py] [_log()] server lang: <none>
2025-11-25T00:44:45.837 [DEBUG] [Thread-199887] [transport.py] [_log()] kex follows: False
2025-11-25T00:44:45.838 [DEBUG] [Thread-199887] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:44:45.838 [DEBUG] [Thread-199887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:44:45.838 [DEBUG] [Thread-199887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:44:45.838 [DEBUG] [Thread-199887] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:44:45.838 [DEBUG] [Thread-199887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:44:45.838 [DEBUG] [Thread-199887] [transport.py] [_log()] Compression: none
2025-11-25T00:44:45.839 [DEBUG] [Thread-199887] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:44:45.897 [DEBUG] [Thread-199887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:44:45.898 [DEBUG] [Thread-199887] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:44:45.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:44:45.899 [DEBUG] [Thread-199887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:44:45.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:44:45.953 [DEBUG] [Thread-199887] [transport.py] [_log()] userauth is OK
2025-11-25T00:44:45.953 [DEBUG] [Thread-199887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:44:45.954 [DEBUG] [Thread-199887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:44:45.954 [DEBUG] [Thread-199887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:44:45.954 [DEBUG] [Thread-199887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:44:45.973 [INFO] [Thread-199887] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:44:45.974 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:44:45.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:44:46.809 [DEBUG] [Thread-199887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:44:46.809 [DEBUG] [Thread-199887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:44:46.857 [DEBUG] [Thread-199887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:44:46.857 [DEBUG] [Thread-199887] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:44:46.865 [DEBUG] [Thread-199887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:44:46.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:44: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-11-25T00:44: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-11-25T00:44:46.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:44:46.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:44:46.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:44:46.907 [DEBUG] [Thread-199887] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:44:52.009 [DEBUG] [Thread-199889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:45:07.173 [DEBUG] [Thread-199890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:45:12.808 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:45:12.810 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:45:16.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:45:16.919 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:45:16.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-11-25T00:45:18.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 45, 4), 13.02, 40.61, 0.0, 22.96, 12.98, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:45:18.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:45:04
2025-11-25T00:45:18.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:45:18.512 [DEBUG] [Thread-199891] [transport.py] [_log()] starting thread (client mode): 0xd07ccee0
2025-11-25T00:45:18.513 [DEBUG] [Thread-199891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:45:18.523 [DEBUG] [Thread-199891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:45:18.523 [INFO] [Thread-199891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] client lang: <none>
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] server lang: <none>
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] kex follows: False
2025-11-25T00:45:18.528 [DEBUG] [Thread-199891] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:45:18.529 [DEBUG] [Thread-199891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:45:18.529 [DEBUG] [Thread-199891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:45:18.529 [DEBUG] [Thread-199891] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:45:18.529 [DEBUG] [Thread-199891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:45:18.529 [DEBUG] [Thread-199891] [transport.py] [_log()] Compression: none
2025-11-25T00:45:18.529 [DEBUG] [Thread-199891] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:45:18.556 [DEBUG] [Thread-199891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:45:18.560 [DEBUG] [Thread-199891] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:45:18.561 [DEBUG] [Thread-199891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:45:18.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:45:18.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:45:18.564 [DEBUG] [Thread-199891] [transport.py] [_log()] userauth is OK
2025-11-25T00:45:18.565 [DEBUG] [Thread-199891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:45:18.565 [DEBUG] [Thread-199891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:45:18.565 [DEBUG] [Thread-199891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:45:18.565 [DEBUG] [Thread-199891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:45:18.583 [INFO] [Thread-199891] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:45:18.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:45:19.607 [DEBUG] [Thread-199891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:45:19.607 [DEBUG] [Thread-199891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:45:19.609 [DEBUG] [Thread-199891] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:45:19.647 [DEBUG] [Thread-199891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:45:19.647 [DEBUG] [Thread-199891] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:45:19.651 [DEBUG] [Thread-199891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:45:19.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:45:19.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:45:19.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:45:19.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:45:19.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:45:19.679 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:45:19.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:45:19.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:45:19.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:45:19.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.947613 -999.00  +13.10  16.06     45   +1.70 1 1 1 1 1     0    0 10.58 -30.46 ZNESW 18.3 16.1 152.2 31.0 13.3 -25.5 13.1 -24.9 12.9 -23.9 13.2 -24.7
2025-11-25T00:45:19.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:45:19.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:45:19.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.947613
2025-11-25T00:45:19.687 [DEBUG] [Thread-199891] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:45:19.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:45:19.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:45:19.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:45:19.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:45:19.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:45:19.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:45:04', tmtdew=13.02, humidity=40.61, cloud=0.0, wind=22.96, temperature=12.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:45:04', seeing=0.79, atlas_timestamp='2025-11-24T22:44:33.763', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:43:00')
2025-11-25T00:45:19.794 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:45:19.805 [DEBUG] [Thread-199894] [transport.py] [_log()] starting thread (client mode): 0xc9b80e20
2025-11-25T00:45:19.805 [DEBUG] [Thread-199894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:45:19.820 [DEBUG] [Thread-199894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:45:19.820 [INFO] [Thread-199894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:45:19.827 [DEBUG] [Thread-199894] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:45:19.827 [DEBUG] [Thread-199894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] client lang: <none>
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] server lang: <none>
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] kex follows: False
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] Compression: none
2025-11-25T00:45:19.828 [DEBUG] [Thread-199894] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:45:19.883 [DEBUG] [Thread-199894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:45:19.883 [DEBUG] [Thread-199894] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:45:19.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:45:19.883 [DEBUG] [Thread-199894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:45:19.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:45:19.940 [DEBUG] [Thread-199894] [transport.py] [_log()] userauth is OK
2025-11-25T00:45:19.940 [DEBUG] [Thread-199894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:45:19.940 [DEBUG] [Thread-199894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:45:19.940 [DEBUG] [Thread-199894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:45:19.940 [DEBUG] [Thread-199894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:45:19.954 [INFO] [Thread-199894] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:45:19.955 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:45:19.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:45:20.798 [DEBUG] [Thread-199894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:45:20.799 [DEBUG] [Thread-199894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:45:20.846 [DEBUG] [Thread-199894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:45:20.847 [DEBUG] [Thread-199894] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:45:20.862 [DEBUG] [Thread-199894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:45:20.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:45:20.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-11-25T00:45:20.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-11-25T00:45:20.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:45:20.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:45:20.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:45:20.903 [DEBUG] [Thread-199894] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:45:22.224 [DEBUG] [Thread-199896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:45:22.263 [DEBUG] [Thread-199897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:45:37.366 [DEBUG] [Thread-199898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:45:50.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:45:50.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:45:50.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-11-25T00:45:51.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 45, 36), 13.02, 40.59, 0.0, 25.58, 12.91, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:45:51.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:45:36
2025-11-25T00:45:51.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:45:51.982 [DEBUG] [Thread-199899] [transport.py] [_log()] starting thread (client mode): 0xd07cd540
2025-11-25T00:45:51.983 [DEBUG] [Thread-199899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:45:51.991 [DEBUG] [Thread-199899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:45:51.991 [INFO] [Thread-199899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] client lang: <none>
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] server lang: <none>
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] kex follows: False
2025-11-25T00:45:51.996 [DEBUG] [Thread-199899] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:45:51.997 [DEBUG] [Thread-199899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:45:51.997 [DEBUG] [Thread-199899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:45:51.997 [DEBUG] [Thread-199899] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:45:51.997 [DEBUG] [Thread-199899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:45:51.997 [DEBUG] [Thread-199899] [transport.py] [_log()] Compression: none
2025-11-25T00:45:51.997 [DEBUG] [Thread-199899] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:45:52.030 [DEBUG] [Thread-199899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:45:52.034 [DEBUG] [Thread-199899] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:45:52.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:45:52.037 [DEBUG] [Thread-199899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:45:52.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:45:52.039 [DEBUG] [Thread-199899] [transport.py] [_log()] userauth is OK
2025-11-25T00:45:52.039 [DEBUG] [Thread-199899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:45:52.039 [DEBUG] [Thread-199899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:45:52.039 [DEBUG] [Thread-199899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:45:52.039 [DEBUG] [Thread-199899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:45:52.061 [INFO] [Thread-199899] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:45:52.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:45:52.422 [DEBUG] [Thread-199901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:45:52.688 [DEBUG] [Thread-199899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:45:52.688 [DEBUG] [Thread-199899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:45:52.689 [DEBUG] [Thread-199899] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:45:52.729 [DEBUG] [Thread-199899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:45:52.729 [DEBUG] [Thread-199899] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:45:52.732 [DEBUG] [Thread-199899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:45:52.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:45:52.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:45:52.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:45:52.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:45:52.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:45:52.754 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:45:52.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:45:52.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:45:52.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:45:52.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.947960 -999.00  +13.10  17.94     45   +1.60 1 1 1 1 1     0    0 10.63 -28.18 ZNESW 19.5 17.9 156.5 23.8 13.2 -25.5 13.1 -25.2 12.9 -23.8 13.2 -24.8
2025-11-25T00:45:52.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:45:52.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:45:52.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.947960
2025-11-25T00:45:52.761 [DEBUG] [Thread-199899] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:45:52.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:45:52.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:45:52.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:45:52.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:45:52.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:45:52.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:45:36', tmtdew=13.02, humidity=40.59, cloud=0.0, wind=25.58, temperature=12.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:45:37', seeing=0.85, atlas_timestamp='2025-11-24T22:45:03.744', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:43:00')
2025-11-25T00:45:52.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:45:52.862 [DEBUG] [Thread-199903] [transport.py] [_log()] starting thread (client mode): 0xd31495a0
2025-11-25T00:45:52.862 [DEBUG] [Thread-199903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:45:52.879 [DEBUG] [Thread-199903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:45:52.879 [INFO] [Thread-199903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] client lang: <none>
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] server lang: <none>
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] kex follows: False
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] Compression: none
2025-11-25T00:45:52.887 [DEBUG] [Thread-199903] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:45:52.943 [DEBUG] [Thread-199903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:45:52.943 [DEBUG] [Thread-199903] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:45:52.944 [DEBUG] [Thread-199903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:45:52.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:45:52.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:45:53.004 [DEBUG] [Thread-199903] [transport.py] [_log()] userauth is OK
2025-11-25T00:45:53.005 [DEBUG] [Thread-199903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:45:53.005 [DEBUG] [Thread-199903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:45:53.005 [DEBUG] [Thread-199903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:45:53.005 [DEBUG] [Thread-199903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:45:53.030 [INFO] [Thread-199903] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:45:53.030 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:45:53.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:45:53.947 [DEBUG] [Thread-199903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:45:53.947 [DEBUG] [Thread-199903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:45:53.996 [DEBUG] [Thread-199903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:45:53.996 [DEBUG] [Thread-199903] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:45:54.004 [DEBUG] [Thread-199903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:45:54.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:45:54.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-11-25T00:45:54.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-11-25T00:45:54.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:45:54.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:45:54.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:45:54.038 [DEBUG] [Thread-199903] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:46:07.511 [DEBUG] [Thread-199905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:46:13.010 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:46:13.012 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:46:22.532 [DEBUG] [Thread-199906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:46:22.626 [DEBUG] [Thread-199907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:46:24.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:46:24.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:46:24.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:46:25.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 46, 10), 12.96, 40.77, 0.0, 24.83, 12.91, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:46:25.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:46:10
2025-11-25T00:46:25.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:46:25.363 [DEBUG] [Thread-199908] [transport.py] [_log()] starting thread (client mode): 0xd3149cf0
2025-11-25T00:46:25.364 [DEBUG] [Thread-199908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:46:25.375 [DEBUG] [Thread-199908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:46:25.376 [INFO] [Thread-199908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:46:25.381 [DEBUG] [Thread-199908] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] client lang: <none>
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] server lang: <none>
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] kex follows: False
2025-11-25T00:46:25.382 [DEBUG] [Thread-199908] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:46:25.383 [DEBUG] [Thread-199908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:46:25.383 [DEBUG] [Thread-199908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:46:25.383 [DEBUG] [Thread-199908] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:46:25.383 [DEBUG] [Thread-199908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:46:25.383 [DEBUG] [Thread-199908] [transport.py] [_log()] Compression: none
2025-11-25T00:46:25.383 [DEBUG] [Thread-199908] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:46:25.417 [DEBUG] [Thread-199908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:46:25.423 [DEBUG] [Thread-199908] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:46:25.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:46:25.426 [DEBUG] [Thread-199908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:46:25.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:46:25.430 [DEBUG] [Thread-199908] [transport.py] [_log()] userauth is OK
2025-11-25T00:46:25.430 [DEBUG] [Thread-199908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:46:25.430 [DEBUG] [Thread-199908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:46:25.431 [DEBUG] [Thread-199908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:46:25.431 [DEBUG] [Thread-199908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:46:25.458 [INFO] [Thread-199908] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:46:25.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:46:26.033 [DEBUG] [Thread-199908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:46:26.033 [DEBUG] [Thread-199908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:46:26.034 [DEBUG] [Thread-199908] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:46:26.074 [DEBUG] [Thread-199908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:46:26.074 [DEBUG] [Thread-199908] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:46:26.076 [DEBUG] [Thread-199908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:46:26.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:46:26.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:46:26.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:46:26.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:46:26.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:46:26.098 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:46:26.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:46:26.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:46:26.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:46:26.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.948655 -999.00  +13.10  17.97     45   +1.60 1 1 1 1 1     0    0 10.87 -26.90 ZNESW 18.7 18.0 155.6 25.4 13.3 -25.6 13.1 -25.0 -999.0 -999.0 13.2 -24.8
2025-11-25T00:46:26.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:46:26.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:46:26.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.948655
2025-11-25T00:46:26.106 [DEBUG] [Thread-199908] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:46:26.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:46:26.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:46:26.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:46:26.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:46:26.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:46:26.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:46:10', tmtdew=12.96, humidity=40.77, cloud=0.0, wind=24.83, temperature=12.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:46:10', seeing=0.85, atlas_timestamp='2025-11-24T22:46:03.792', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:43:00')
2025-11-25T00:46:26.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:46:26.209 [DEBUG] [Thread-199911] [transport.py] [_log()] starting thread (client mode): 0xd0710a90
2025-11-25T00:46:26.210 [DEBUG] [Thread-199911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:46:26.226 [DEBUG] [Thread-199911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:46:26.227 [INFO] [Thread-199911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:46:26.239 [DEBUG] [Thread-199911] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:46:26.239 [DEBUG] [Thread-199911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:46:26.239 [DEBUG] [Thread-199911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:46:26.239 [DEBUG] [Thread-199911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:46:26.239 [DEBUG] [Thread-199911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:46:26.239 [DEBUG] [Thread-199911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:46:26.239 [DEBUG] [Thread-199911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:46:26.239 [DEBUG] [Thread-199911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:46:26.239 [DEBUG] [Thread-199911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:46:26.239 [DEBUG] [Thread-199911] [transport.py] [_log()] client lang: <none>
2025-11-25T00:46:26.240 [DEBUG] [Thread-199911] [transport.py] [_log()] server lang: <none>
2025-11-25T00:46:26.240 [DEBUG] [Thread-199911] [transport.py] [_log()] kex follows: False
2025-11-25T00:46:26.240 [DEBUG] [Thread-199911] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:46:26.240 [DEBUG] [Thread-199911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:46:26.240 [DEBUG] [Thread-199911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:46:26.240 [DEBUG] [Thread-199911] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:46:26.240 [DEBUG] [Thread-199911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:46:26.240 [DEBUG] [Thread-199911] [transport.py] [_log()] Compression: none
2025-11-25T00:46:26.240 [DEBUG] [Thread-199911] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:46:26.295 [DEBUG] [Thread-199911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:46:26.296 [DEBUG] [Thread-199911] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:46:26.296 [DEBUG] [Thread-199911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:46:26.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:46:26.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:46:26.353 [DEBUG] [Thread-199911] [transport.py] [_log()] userauth is OK
2025-11-25T00:46:26.353 [DEBUG] [Thread-199911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:46:26.353 [DEBUG] [Thread-199911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:46:26.353 [DEBUG] [Thread-199911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:46:26.353 [DEBUG] [Thread-199911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:46:26.367 [INFO] [Thread-199911] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:46:26.368 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:46:26.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:46:27.214 [DEBUG] [Thread-199911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:46:27.214 [DEBUG] [Thread-199911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:46:27.267 [DEBUG] [Thread-199911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:46:27.267 [DEBUG] [Thread-199911] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:46:27.279 [DEBUG] [Thread-199911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:46:27.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:46:27.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-11-25T00:46:27.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-11-25T00:46:27.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:46:27.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:46:27.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:46:27.327 [DEBUG] [Thread-199911] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:46:37.715 [DEBUG] [Thread-199913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:46:52.899 [DEBUG] [Thread-199914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:46:57.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:46:57.348 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:46:57.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-11-25T00:46:58.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 46, 43), 12.96, 40.91, 0.0, 27.4, 12.95, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:46:58.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:46:43
2025-11-25T00:46:58.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:46:58.658 [DEBUG] [Thread-199915] [transport.py] [_log()] starting thread (client mode): 0xd0713340
2025-11-25T00:46:58.658 [DEBUG] [Thread-199915] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:46:58.668 [DEBUG] [Thread-199915] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:46:58.668 [INFO] [Thread-199915] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] client lang: <none>
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] server lang: <none>
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] kex follows: False
2025-11-25T00:46:58.672 [DEBUG] [Thread-199915] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:46:58.673 [DEBUG] [Thread-199915] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:46:58.673 [DEBUG] [Thread-199915] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:46:58.674 [DEBUG] [Thread-199915] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:46:58.674 [DEBUG] [Thread-199915] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:46:58.674 [DEBUG] [Thread-199915] [transport.py] [_log()] Compression: none
2025-11-25T00:46:58.674 [DEBUG] [Thread-199915] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:46:58.702 [DEBUG] [Thread-199915] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:46:58.705 [DEBUG] [Thread-199915] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:46:58.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:46:58.708 [DEBUG] [Thread-199915] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:46:58.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:46:58.745 [DEBUG] [Thread-199915] [transport.py] [_log()] userauth is OK
2025-11-25T00:46:58.745 [DEBUG] [Thread-199915] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:46:58.746 [DEBUG] [Thread-199915] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:46:58.746 [DEBUG] [Thread-199915] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:46:58.746 [DEBUG] [Thread-199915] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:46:58.784 [INFO] [Thread-199915] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:46:58.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:46:59.400 [DEBUG] [Thread-199915] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:46:59.400 [DEBUG] [Thread-199915] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:46:59.410 [DEBUG] [Thread-199915] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:46:59.441 [DEBUG] [Thread-199915] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:46:59.441 [DEBUG] [Thread-199915] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:46:59.443 [DEBUG] [Thread-199915] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:46:59.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:46:59.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:46:59.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:46:59.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:46:59.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:46:59.464 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:46:59.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:46:59.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:46:59.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:46:59.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.949002 -999.00  +13.10  22.74     45   +1.50 1 1 1 1 1     0    0 10.89 -26.74 ZNESW 19.5 22.7 149.0 26.9 13.2 -25.3 13.2 -24.9 12.9 -23.7 13.2 -24.8
2025-11-25T00:46:59.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:46:59.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:46:59.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.949002
2025-11-25T00:46:59.471 [DEBUG] [Thread-199915] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:46:59.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:46:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:46:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:46:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:46:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:46:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:46:43', tmtdew=12.96, humidity=40.91, cloud=0.0, wind=27.4, temperature=12.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:46:43', seeing=0.78, atlas_timestamp='2025-11-24T22:46:33.773', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:43:00')
2025-11-25T00:46:59.551 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:46:59.563 [DEBUG] [Thread-199918] [transport.py] [_log()] starting thread (client mode): 0xc9b81300
2025-11-25T00:46:59.563 [DEBUG] [Thread-199918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:46:59.577 [DEBUG] [Thread-199918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:46:59.577 [INFO] [Thread-199918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:46:59.585 [DEBUG] [Thread-199918] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:46:59.585 [DEBUG] [Thread-199918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:46:59.585 [DEBUG] [Thread-199918] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] client lang: <none>
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] server lang: <none>
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] kex follows: False
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] Compression: none
2025-11-25T00:46:59.586 [DEBUG] [Thread-199918] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:46:59.645 [DEBUG] [Thread-199918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:46:59.645 [DEBUG] [Thread-199918] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:46:59.645 [DEBUG] [Thread-199918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:46:59.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:46:59.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:46:59.704 [DEBUG] [Thread-199918] [transport.py] [_log()] userauth is OK
2025-11-25T00:46:59.704 [DEBUG] [Thread-199918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:46:59.704 [DEBUG] [Thread-199918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:46:59.704 [DEBUG] [Thread-199918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:46:59.705 [DEBUG] [Thread-199918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:46:59.718 [INFO] [Thread-199918] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:46:59.718 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:46:59.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:47:00.557 [DEBUG] [Thread-199918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:47:00.557 [DEBUG] [Thread-199918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:47:00.605 [DEBUG] [Thread-199918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:47:00.605 [DEBUG] [Thread-199918] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:47:00.614 [DEBUG] [Thread-199918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:47:00.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:47:00.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-11-25T00:47:00.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-11-25T00:47:00.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:47:00.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:47:00.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:47:00.649 [DEBUG] [Thread-199918] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:47:07.949 [DEBUG] [Thread-199920 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:47:13.220 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:47:13.223 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:47:22.810 [DEBUG] [Thread-199921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:47:23.058 [DEBUG] [Thread-199922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:47:30.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:47:30.645 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:47:30.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-11-25T00:47:31.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 47, 16), 12.97, 40.87, 0.0, 26.33, 12.91, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:47:31.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:47:16
2025-11-25T00:47:31.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:47:31.904 [DEBUG] [Thread-199923] [transport.py] [_log()] starting thread (client mode): 0xd0713160
2025-11-25T00:47:31.905 [DEBUG] [Thread-199923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:47:31.916 [DEBUG] [Thread-199923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:47:31.916 [INFO] [Thread-199923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] client lang: <none>
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] server lang: <none>
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] kex follows: False
2025-11-25T00:47:31.922 [DEBUG] [Thread-199923] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:47:31.923 [DEBUG] [Thread-199923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:47:31.923 [DEBUG] [Thread-199923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:47:31.923 [DEBUG] [Thread-199923] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:47:31.923 [DEBUG] [Thread-199923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:47:31.923 [DEBUG] [Thread-199923] [transport.py] [_log()] Compression: none
2025-11-25T00:47:31.923 [DEBUG] [Thread-199923] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:47:31.961 [DEBUG] [Thread-199923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:47:31.966 [DEBUG] [Thread-199923] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:47:31.968 [DEBUG] [Thread-199923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:47:31.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:47:31.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:47:31.974 [DEBUG] [Thread-199923] [transport.py] [_log()] userauth is OK
2025-11-25T00:47:31.974 [DEBUG] [Thread-199923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:47:31.974 [DEBUG] [Thread-199923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:47:31.975 [DEBUG] [Thread-199923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:47:31.975 [DEBUG] [Thread-199923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:47:32.001 [INFO] [Thread-199923] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:47:32.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:47:32.612 [DEBUG] [Thread-199923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:47:32.612 [DEBUG] [Thread-199923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:47:32.622 [DEBUG] [Thread-199923] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:47:32.652 [DEBUG] [Thread-199923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:47:32.652 [DEBUG] [Thread-199923] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:47:32.655 [DEBUG] [Thread-199923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:47:32.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:47:32.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:47:32.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:47:32.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:47:32.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:47:32.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:47:32.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:47:32.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:47:32.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:47:32.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.949349 -999.00  +13.10  18.15     45   +1.60 1 1 1 1 1     0    0 10.74 -30.54 ZNESW 16.8 18.1 151.0 30.9 13.2 -25.2 13.1 -24.9 12.9 -23.8 13.2 -24.6
2025-11-25T00:47:32.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:47:32.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:47:32.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.949349
2025-11-25T00:47:32.690 [DEBUG] [Thread-199923] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:47:32.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:47:32.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:47:32.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:47:32.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:47:32.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:47:32.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:47:16', tmtdew=12.97, humidity=40.87, cloud=0.0, wind=26.33, temperature=12.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:47:16', seeing=0.84, atlas_timestamp='2025-11-24T22:47:03.754', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025750000000000384, -0.004249999999998977, 0.0012500000000006395, -0.009000000000000341, 0.03250000000000064, 0.0782500000000006, 0.0035000000000007248, 0.005250000000000199, -0.013500000000000512, 0.005000000000000782, 0.04224999999999923, 0.015000000000000568, 0.07199999999999918, 0.09924999999999962, 0.038999999999997925, -0.010500000000000398, 0.02674999999999983, 0.0045000000000001705, 0.03500000000000014, -0.010750000000001592, 0.0799999999999983, 0.08474999999999788, 0.03125, -0.017249999999998877, -0.008000000000000895, 0.029500000000000526, -0.0072499999999990905, 0.049000000000001265, 0.11050000000000004, 0.11400000000000077, 0.08450000000000202, -0.007999999999999119, -0.026250000000000995], zp_timestamp='2025-11-24T22:43:00')
2025-11-25T00:47:32.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:47:32.793 [DEBUG] [Thread-199926] [transport.py] [_log()] starting thread (client mode): 0xd314ada0
2025-11-25T00:47:32.794 [DEBUG] [Thread-199926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:47:32.808 [DEBUG] [Thread-199926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:47:32.808 [INFO] [Thread-199926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:47:32.815 [DEBUG] [Thread-199926] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] client lang: <none>
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] server lang: <none>
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] kex follows: False
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] Compression: none
2025-11-25T00:47:32.816 [DEBUG] [Thread-199926] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:47:32.871 [DEBUG] [Thread-199926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:47:32.871 [DEBUG] [Thread-199926] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:47:32.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:47:32.872 [DEBUG] [Thread-199926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:47:32.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:47:32.928 [DEBUG] [Thread-199926] [transport.py] [_log()] userauth is OK
2025-11-25T00:47:32.929 [DEBUG] [Thread-199926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:47:32.929 [DEBUG] [Thread-199926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:47:32.929 [DEBUG] [Thread-199926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:47:32.929 [DEBUG] [Thread-199926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:47:32.944 [INFO] [Thread-199926] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:47:32.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:47:32.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:47:33.777 [DEBUG] [Thread-199926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:47:33.778 [DEBUG] [Thread-199926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:47:33.825 [DEBUG] [Thread-199926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:47:33.826 [DEBUG] [Thread-199926] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:47:33.835 [DEBUG] [Thread-199926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:47:33.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:47:33.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-11-25T00:47:33.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-11-25T00:47:33.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:47:33.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:47:33.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:47:33.873 [DEBUG] [Thread-199926] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:47:38.135 [DEBUG] [Thread-199928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:47:53.294 [DEBUG] [Thread-199929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:48:03.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:48:03.898 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:48:03.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-11-25T00:48:05.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 47, 49), 13.02, 40.86, 0.0, 24.19, 12.88, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:48:05.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:47:49
2025-11-25T00:48:05.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:48:05.479 [DEBUG] [Thread-199930] [transport.py] [_log()] starting thread (client mode): 0xd3149900
2025-11-25T00:48:05.480 [DEBUG] [Thread-199930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:48:05.492 [DEBUG] [Thread-199930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:48:05.492 [INFO] [Thread-199930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:48:05.498 [DEBUG] [Thread-199930] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:48:05.498 [DEBUG] [Thread-199930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:48:05.498 [DEBUG] [Thread-199930] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:48:05.498 [DEBUG] [Thread-199930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:48:05.498 [DEBUG] [Thread-199930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:48:05.499 [DEBUG] [Thread-199930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:48:05.499 [DEBUG] [Thread-199930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:48:05.499 [DEBUG] [Thread-199930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:48:05.499 [DEBUG] [Thread-199930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:48:05.499 [DEBUG] [Thread-199930] [transport.py] [_log()] client lang: <none>
2025-11-25T00:48:05.499 [DEBUG] [Thread-199930] [transport.py] [_log()] server lang: <none>
2025-11-25T00:48:05.499 [DEBUG] [Thread-199930] [transport.py] [_log()] kex follows: False
2025-11-25T00:48:05.499 [DEBUG] [Thread-199930] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:48:05.500 [DEBUG] [Thread-199930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:48:05.500 [DEBUG] [Thread-199930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:48:05.500 [DEBUG] [Thread-199930] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:48:05.500 [DEBUG] [Thread-199930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:48:05.500 [DEBUG] [Thread-199930] [transport.py] [_log()] Compression: none
2025-11-25T00:48:05.501 [DEBUG] [Thread-199930] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:48:05.540 [DEBUG] [Thread-199930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:48:05.545 [DEBUG] [Thread-199930] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:48:05.547 [DEBUG] [Thread-199930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:48:05.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:48:05.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:48:05.552 [DEBUG] [Thread-199930] [transport.py] [_log()] userauth is OK
2025-11-25T00:48:05.552 [DEBUG] [Thread-199930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:48:05.552 [DEBUG] [Thread-199930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:48:05.553 [DEBUG] [Thread-199930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:48:05.553 [DEBUG] [Thread-199930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:48:05.592 [INFO] [Thread-199930] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:48:05.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:48:06.245 [DEBUG] [Thread-199930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:48:06.245 [DEBUG] [Thread-199930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:48:06.247 [DEBUG] [Thread-199930] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:48:06.287 [DEBUG] [Thread-199930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:48:06.287 [DEBUG] [Thread-199930] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:48:06.291 [DEBUG] [Thread-199930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:48:06.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:48:06.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:48:06.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:48:06.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:48:06.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:48:06.320 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:48:06.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:48:06.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:48:06.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:48:06.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.949697 -999.00  +13.10  17.91     45   +1.50 1 1 1 1 1     0    0 10.79 -28.85 ZNESW 15.4 17.9 149.2 23.3 13.3 -25.5 13.2 -25.1 12.9 -24.0 13.2 -24.7
2025-11-25T00:48:06.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:48:06.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:48:06.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.949697
2025-11-25T00:48:06.329 [DEBUG] [Thread-199930] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:48:06.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:48:06.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:48:06.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:48:06.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:48:06.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:48:06.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:47:49', tmtdew=13.02, humidity=40.86, cloud=0.0, wind=24.19, temperature=12.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:47:49', seeing=0.81, atlas_timestamp='2025-11-24T22:47:33.821', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, 0.0032500000000013074, 0.034750000000000725, 0.009000000000000341, 0.04749999999999943, 0.09425000000000061, 0.0235000000000003, -0.011749999999999261, -0.0065000000000008384, 0.02200000000000024, 0.056250000000000355, -0.005000000000000782, 0.1014999999999997, 0.10524999999999984, 0.016500000000000625, -0.01150000000000162, 0.015249999999999986, 0.009500000000000952, 0.019000000000000128, -0.05325000000000202, 0.06649999999999778, 0.061749999999998195, 0.043250000000000455, 0.016250000000001208, 0.0009999999999994458, 0.04249999999999865, -0.01774999999999949, 0.07249999999999979, 0.13899999999999935, 0.13200000000000145, 0.09800000000000075, 0.008000000000000895, -0.008250000000000313], zp_timestamp='2025-11-24T22:46:00')
2025-11-25T00:48:06.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:48:06.440 [DEBUG] [Thread-199933] [transport.py] [_log()] starting thread (client mode): 0xd07102e0
2025-11-25T00:48:06.441 [DEBUG] [Thread-199933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:48:06.455 [DEBUG] [Thread-199933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:48:06.455 [INFO] [Thread-199933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:48:06.462 [DEBUG] [Thread-199933] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:48:06.463 [DEBUG] [Thread-199933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:48:06.463 [DEBUG] [Thread-199933] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:48:06.463 [DEBUG] [Thread-199933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:48:06.463 [DEBUG] [Thread-199933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:48:06.463 [DEBUG] [Thread-199933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:48:06.463 [DEBUG] [Thread-199933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:48:06.463 [DEBUG] [Thread-199933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:48:06.463 [DEBUG] [Thread-199933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:48:06.463 [DEBUG] [Thread-199933] [transport.py] [_log()] client lang: <none>
2025-11-25T00:48:06.464 [DEBUG] [Thread-199933] [transport.py] [_log()] server lang: <none>
2025-11-25T00:48:06.464 [DEBUG] [Thread-199933] [transport.py] [_log()] kex follows: False
2025-11-25T00:48:06.464 [DEBUG] [Thread-199933] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:48:06.464 [DEBUG] [Thread-199933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:48:06.464 [DEBUG] [Thread-199933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:48:06.465 [DEBUG] [Thread-199933] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:48:06.465 [DEBUG] [Thread-199933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:48:06.465 [DEBUG] [Thread-199933] [transport.py] [_log()] Compression: none
2025-11-25T00:48:06.465 [DEBUG] [Thread-199933] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:48:06.521 [DEBUG] [Thread-199933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:48:06.522 [DEBUG] [Thread-199933] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:48:06.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:48:06.523 [DEBUG] [Thread-199933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:48:06.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:48:06.577 [DEBUG] [Thread-199933] [transport.py] [_log()] userauth is OK
2025-11-25T00:48:06.577 [DEBUG] [Thread-199933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:48:06.577 [DEBUG] [Thread-199933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:48:06.578 [DEBUG] [Thread-199933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:48:06.578 [DEBUG] [Thread-199933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:48:06.596 [INFO] [Thread-199933] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:48:06.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:48:06.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:48:07.455 [DEBUG] [Thread-199933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:48:07.455 [DEBUG] [Thread-199933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:48:07.502 [DEBUG] [Thread-199933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:48:07.502 [DEBUG] [Thread-199933] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:48:07.511 [DEBUG] [Thread-199933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:48:07.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:48:07.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:48:07.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:48:07.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:48:07.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:48:07.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:48:07.544 [DEBUG] [Thread-199933] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:48:08.369 [DEBUG] [Thread-199935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:48:13.424 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:48:13.425 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:48:23.035 [DEBUG] [Thread-199936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:48:23.487 [DEBUG] [Thread-199937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:48:26.658 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:48:37.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:48:37.570 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:48:37.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:48:38.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 48, 22), 13.03, 40.84, 0.0, 23.86, 12.93, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:48:38.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:48:22
2025-11-25T00:48:38.560 [DEBUG] [Thread-199938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:48:38.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:48:38.738 [DEBUG] [Thread-199939] [transport.py] [_log()] starting thread (client mode): 0xd3149a20
2025-11-25T00:48:38.739 [DEBUG] [Thread-199939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:48:38.750 [DEBUG] [Thread-199939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:48:38.750 [INFO] [Thread-199939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] client lang: <none>
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] server lang: <none>
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] kex follows: False
2025-11-25T00:48:38.755 [DEBUG] [Thread-199939] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:48:38.756 [DEBUG] [Thread-199939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:48:38.756 [DEBUG] [Thread-199939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:48:38.756 [DEBUG] [Thread-199939] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:48:38.756 [DEBUG] [Thread-199939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:48:38.756 [DEBUG] [Thread-199939] [transport.py] [_log()] Compression: none
2025-11-25T00:48:38.756 [DEBUG] [Thread-199939] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:48:38.787 [DEBUG] [Thread-199939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:48:38.792 [DEBUG] [Thread-199939] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:48:38.793 [DEBUG] [Thread-199939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:48:38.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:48:38.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:48:38.798 [DEBUG] [Thread-199939] [transport.py] [_log()] userauth is OK
2025-11-25T00:48:38.799 [DEBUG] [Thread-199939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:48:38.799 [DEBUG] [Thread-199939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:48:38.799 [DEBUG] [Thread-199939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:48:38.799 [DEBUG] [Thread-199939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:48:38.823 [INFO] [Thread-199939] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:48:38.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:48:39.460 [DEBUG] [Thread-199939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:48:39.461 [DEBUG] [Thread-199939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:48:39.462 [DEBUG] [Thread-199939] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:48:39.502 [DEBUG] [Thread-199939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:48:39.502 [DEBUG] [Thread-199939] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:48:39.505 [DEBUG] [Thread-199939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:48:39.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:48:39.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:48:39.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:48:39.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:48:39.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:48:39.521 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:48:39.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:48:39.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:48:39.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:48:39.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.950044 -999.00  +13.00  17.41     45   +1.50 1 1 1 1 1     0    0 10.75 -31.38 ZNESW 18.5 17.4 149.0 25.4 13.2 -25.7 13.1 -25.0 12.9 -23.9 13.2 -24.8
2025-11-25T00:48:39.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:48:39.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:48:39.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.950044
2025-11-25T00:48:39.528 [DEBUG] [Thread-199939] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:48:39.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:48:39.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:48:39.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:48:39.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:48:39.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:48:39.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:48:22', tmtdew=13.03, humidity=40.84, cloud=0.0, wind=23.86, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:48:22', seeing=0.77, atlas_timestamp='2025-11-24T22:48:03.802', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, 0.0032500000000013074, 0.034750000000000725, 0.009000000000000341, 0.04749999999999943, 0.09425000000000061, 0.0235000000000003, -0.011749999999999261, -0.0065000000000008384, 0.02200000000000024, 0.056250000000000355, -0.005000000000000782, 0.1014999999999997, 0.10524999999999984, 0.016500000000000625, -0.01150000000000162, 0.015249999999999986, 0.009500000000000952, 0.019000000000000128, -0.05325000000000202, 0.06649999999999778, 0.061749999999998195, 0.043250000000000455, 0.016250000000001208, 0.0009999999999994458, 0.04249999999999865, -0.01774999999999949, 0.07249999999999979, 0.13899999999999935, 0.13200000000000145, 0.09800000000000075, 0.008000000000000895, -0.008250000000000313], zp_timestamp='2025-11-24T22:46:00')
2025-11-25T00:48:39.606 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:48:39.618 [DEBUG] [Thread-199942] [transport.py] [_log()] starting thread (client mode): 0xd0738880
2025-11-25T00:48:39.619 [DEBUG] [Thread-199942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:48:39.637 [DEBUG] [Thread-199942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:48:39.637 [INFO] [Thread-199942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] client lang: <none>
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] server lang: <none>
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] kex follows: False
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:48:39.645 [DEBUG] [Thread-199942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:48:39.646 [DEBUG] [Thread-199942] [transport.py] [_log()] Compression: none
2025-11-25T00:48:39.646 [DEBUG] [Thread-199942] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:48:39.703 [DEBUG] [Thread-199942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:48:39.703 [DEBUG] [Thread-199942] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:48:39.704 [DEBUG] [Thread-199942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:48:39.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:48:39.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:48:39.761 [DEBUG] [Thread-199942] [transport.py] [_log()] userauth is OK
2025-11-25T00:48:39.762 [DEBUG] [Thread-199942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:48:39.762 [DEBUG] [Thread-199942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:48:39.762 [DEBUG] [Thread-199942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:48:39.762 [DEBUG] [Thread-199942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:48:39.781 [INFO] [Thread-199942] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00: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-11-25T00:48:39.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:48:40.603 [DEBUG] [Thread-199942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:48:40.603 [DEBUG] [Thread-199942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:48:40.651 [DEBUG] [Thread-199942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:48:40.651 [DEBUG] [Thread-199942] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:48:40.660 [DEBUG] [Thread-199942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:48:40.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:48:40.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-11-25T00:48:40.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-11-25T00:48:40.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:48:40.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:48:40.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:48:40.706 [DEBUG] [Thread-199942] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:48:53.629 [DEBUG] [Thread-199944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:49:08.797 [DEBUG] [Thread-199945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:49:10.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:49:10.731 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:49:10.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-11-25T00:49:11.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 48, 55), 12.93, 40.82, 0.0, 24.9, 12.86, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:49:11.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:48:55
2025-11-25T00:49:11.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:49:11.968 [DEBUG] [Thread-199946] [transport.py] [_log()] starting thread (client mode): 0xd07105e0
2025-11-25T00:49:11.968 [DEBUG] [Thread-199946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:49:11.980 [DEBUG] [Thread-199946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:49:11.980 [INFO] [Thread-199946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:49:11.985 [DEBUG] [Thread-199946] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:49:11.985 [DEBUG] [Thread-199946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:49:11.985 [DEBUG] [Thread-199946] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:49:11.985 [DEBUG] [Thread-199946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:49:11.985 [DEBUG] [Thread-199946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:49:11.985 [DEBUG] [Thread-199946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:49:11.985 [DEBUG] [Thread-199946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:49:11.986 [DEBUG] [Thread-199946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:49:11.986 [DEBUG] [Thread-199946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:49:11.986 [DEBUG] [Thread-199946] [transport.py] [_log()] client lang: <none>
2025-11-25T00:49:11.986 [DEBUG] [Thread-199946] [transport.py] [_log()] server lang: <none>
2025-11-25T00:49:11.986 [DEBUG] [Thread-199946] [transport.py] [_log()] kex follows: False
2025-11-25T00:49:11.986 [DEBUG] [Thread-199946] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:49:11.986 [DEBUG] [Thread-199946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:49:11.986 [DEBUG] [Thread-199946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:49:11.986 [DEBUG] [Thread-199946] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:49:11.986 [DEBUG] [Thread-199946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:49:11.987 [DEBUG] [Thread-199946] [transport.py] [_log()] Compression: none
2025-11-25T00:49:11.987 [DEBUG] [Thread-199946] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:49:12.017 [DEBUG] [Thread-199946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:49:12.020 [DEBUG] [Thread-199946] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:49:12.022 [DEBUG] [Thread-199946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:49:12.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:49:12.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:49:12.025 [DEBUG] [Thread-199946] [transport.py] [_log()] userauth is OK
2025-11-25T00:49:12.025 [DEBUG] [Thread-199946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:49:12.025 [DEBUG] [Thread-199946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:49:12.025 [DEBUG] [Thread-199946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:49:12.025 [DEBUG] [Thread-199946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:49:12.037 [INFO] [Thread-199946] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:49:12.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:49:12.617 [DEBUG] [Thread-199946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:49:12.617 [DEBUG] [Thread-199946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:49:12.618 [DEBUG] [Thread-199946] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:49:12.658 [DEBUG] [Thread-199946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:49:12.658 [DEBUG] [Thread-199946] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:49:12.660 [DEBUG] [Thread-199946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:49:12.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:49:12.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:49:12.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:49:12.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:49:12.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:49:12.675 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:49:12.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:49:12.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:49:12.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:49:12.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.950391 -999.00  +13.00  19.52     45   +1.60 1 1 1 1 1     0    0 10.88 -30.45 ZNESW 18.8 19.5 151.2 23.6 13.2 -25.6 13.1 -25.0 12.9 -24.0 13.2 -24.7
2025-11-25T00:49:12.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:49:12.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:49:12.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.950391
2025-11-25T00:49:12.682 [DEBUG] [Thread-199946] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:49:12.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:49:12.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:49:12.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:49:12.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:49:12.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:49:12.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:48:55', tmtdew=12.93, humidity=40.82, cloud=0.0, wind=24.9, temperature=12.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:48:55', seeing=0.68, atlas_timestamp='2025-11-24T22:48:33.782', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, 0.0032500000000013074, 0.034750000000000725, 0.009000000000000341, 0.04749999999999943, 0.09425000000000061, 0.0235000000000003, -0.011749999999999261, -0.0065000000000008384, 0.02200000000000024, 0.056250000000000355, -0.005000000000000782, 0.1014999999999997, 0.10524999999999984, 0.016500000000000625, -0.01150000000000162, 0.015249999999999986, 0.009500000000000952, 0.019000000000000128, -0.05325000000000202, 0.06649999999999778, 0.061749999999998195, 0.043250000000000455, 0.016250000000001208, 0.0009999999999994458, 0.04249999999999865, -0.01774999999999949, 0.07249999999999979, 0.13899999999999935, 0.13200000000000145, 0.09800000000000075, 0.008000000000000895, -0.008250000000000313], zp_timestamp='2025-11-24T22:46:00')
2025-11-25T00:49:12.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:49:12.784 [DEBUG] [Thread-199949] [transport.py] [_log()] starting thread (client mode): 0xd317c700
2025-11-25T00:49:12.784 [DEBUG] [Thread-199949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:49:12.798 [DEBUG] [Thread-199949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:49:12.798 [INFO] [Thread-199949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] client lang: <none>
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] server lang: <none>
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] kex follows: False
2025-11-25T00:49:12.806 [DEBUG] [Thread-199949] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:49:12.807 [DEBUG] [Thread-199949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:49:12.807 [DEBUG] [Thread-199949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:49:12.807 [DEBUG] [Thread-199949] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:49:12.807 [DEBUG] [Thread-199949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:49:12.807 [DEBUG] [Thread-199949] [transport.py] [_log()] Compression: none
2025-11-25T00:49:12.807 [DEBUG] [Thread-199949] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:49:12.863 [DEBUG] [Thread-199949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:49:12.863 [DEBUG] [Thread-199949] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:49:12.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:49:12.864 [DEBUG] [Thread-199949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:49:12.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:49:12.920 [DEBUG] [Thread-199949] [transport.py] [_log()] userauth is OK
2025-11-25T00:49:12.920 [DEBUG] [Thread-199949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:49:12.920 [DEBUG] [Thread-199949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:49:12.921 [DEBUG] [Thread-199949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:49:12.921 [DEBUG] [Thread-199949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:49:12.935 [INFO] [Thread-199949] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:49: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-11-25T00:49:12.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:49:13.627 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:49:13.628 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:49:13.774 [DEBUG] [Thread-199949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:49:13.774 [DEBUG] [Thread-199949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:49:13.822 [DEBUG] [Thread-199949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:49:13.822 [DEBUG] [Thread-199949] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:49:13.831 [DEBUG] [Thread-199949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:49:13.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:49:13.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-11-25T00:49:13.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-11-25T00:49:13.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:49:13.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:49:13.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:49:13.865 [DEBUG] [Thread-199949] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:49:23.338 [DEBUG] [Thread-199951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:49:23.895 [DEBUG] [Thread-199952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:49:39.075 [DEBUG] [Thread-199953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:49:43.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:49:43.893 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:49:43.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-11-25T00:49:44.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 49, 28), 12.88, 40.99, 0.0, 22.66, 12.86, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:49:44.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:49:28
2025-11-25T00:49:44.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:49:45.166 [DEBUG] [Thread-199954] [transport.py] [_log()] starting thread (client mode): 0xd0712770
2025-11-25T00:49:45.166 [DEBUG] [Thread-199954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:49:45.171 [DEBUG] [Thread-199954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:49:45.171 [INFO] [Thread-199954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:49:45.175 [DEBUG] [Thread-199954] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:49:45.175 [DEBUG] [Thread-199954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] client lang: <none>
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] server lang: <none>
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] kex follows: False
2025-11-25T00:49:45.176 [DEBUG] [Thread-199954] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:49:45.177 [DEBUG] [Thread-199954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:49:45.177 [DEBUG] [Thread-199954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:49:45.177 [DEBUG] [Thread-199954] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:49:45.177 [DEBUG] [Thread-199954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:49:45.177 [DEBUG] [Thread-199954] [transport.py] [_log()] Compression: none
2025-11-25T00:49:45.177 [DEBUG] [Thread-199954] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:49:45.206 [DEBUG] [Thread-199954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:49:45.210 [DEBUG] [Thread-199954] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:49:45.213 [DEBUG] [Thread-199954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:49:45.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:49:45.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:49:45.218 [DEBUG] [Thread-199954] [transport.py] [_log()] userauth is OK
2025-11-25T00:49:45.218 [DEBUG] [Thread-199954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:49:45.219 [DEBUG] [Thread-199954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:49:45.219 [DEBUG] [Thread-199954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:49:45.219 [DEBUG] [Thread-199954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:49:45.246 [INFO] [Thread-199954] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:49:45.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:49:45.797 [DEBUG] [Thread-199954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:49:45.798 [DEBUG] [Thread-199954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:49:45.798 [DEBUG] [Thread-199954] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:49:45.839 [DEBUG] [Thread-199954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:49:45.839 [DEBUG] [Thread-199954] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:49:45.840 [DEBUG] [Thread-199954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:49:45.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:49:45.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:49:45.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:49:45.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:49:45.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:49:45.861 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:49:45.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:49:45.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:49:45.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:49:45.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.951085 -999.00  +13.00  19.89     45   +1.50 1 1 1 1 1     0    0 10.91 -27.69 ZNESW 14.4 19.9 146.6 26.7 13.2 -25.8 13.1 -25.1 12.9 -24.1 13.2 -25.0
2025-11-25T00:49:45.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:49:45.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:49:45.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.951085
2025-11-25T00:49:45.867 [DEBUG] [Thread-199954] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:49:45.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:49:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:49:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:49:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:49:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:49:45.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:49:28', tmtdew=12.88, humidity=40.99, cloud=0.0, wind=22.66, temperature=12.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:49:28', seeing=0.68, atlas_timestamp='2025-11-24T22:49:33.744', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, 0.0032500000000013074, 0.034750000000000725, 0.009000000000000341, 0.04749999999999943, 0.09425000000000061, 0.0235000000000003, -0.011749999999999261, -0.0065000000000008384, 0.02200000000000024, 0.056250000000000355, -0.005000000000000782, 0.1014999999999997, 0.10524999999999984, 0.016500000000000625, -0.01150000000000162, 0.015249999999999986, 0.009500000000000952, 0.019000000000000128, -0.05325000000000202, 0.06649999999999778, 0.061749999999998195, 0.043250000000000455, 0.016250000000001208, 0.0009999999999994458, 0.04249999999999865, -0.01774999999999949, 0.07249999999999979, 0.13899999999999935, 0.13200000000000145, 0.09800000000000075, 0.008000000000000895, -0.008250000000000313], zp_timestamp='2025-11-24T22:46:00')
2025-11-25T00:49:45.951 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:49:45.962 [DEBUG] [Thread-199957] [transport.py] [_log()] starting thread (client mode): 0xd3191e10
2025-11-25T00:49:45.962 [DEBUG] [Thread-199957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:49:45.977 [DEBUG] [Thread-199957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:49:45.977 [INFO] [Thread-199957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:49:45.984 [DEBUG] [Thread-199957] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:49:45.984 [DEBUG] [Thread-199957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:49:45.984 [DEBUG] [Thread-199957] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:49:45.984 [DEBUG] [Thread-199957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:49:45.984 [DEBUG] [Thread-199957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:49:45.984 [DEBUG] [Thread-199957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:49:45.984 [DEBUG] [Thread-199957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:49:45.984 [DEBUG] [Thread-199957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:49:45.984 [DEBUG] [Thread-199957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:49:45.984 [DEBUG] [Thread-199957] [transport.py] [_log()] client lang: <none>
2025-11-25T00:49:45.985 [DEBUG] [Thread-199957] [transport.py] [_log()] server lang: <none>
2025-11-25T00:49:45.985 [DEBUG] [Thread-199957] [transport.py] [_log()] kex follows: False
2025-11-25T00:49:45.985 [DEBUG] [Thread-199957] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:49:45.985 [DEBUG] [Thread-199957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:49:45.985 [DEBUG] [Thread-199957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:49:45.985 [DEBUG] [Thread-199957] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:49:45.985 [DEBUG] [Thread-199957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:49:45.985 [DEBUG] [Thread-199957] [transport.py] [_log()] Compression: none
2025-11-25T00:49:45.985 [DEBUG] [Thread-199957] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:49:46.041 [DEBUG] [Thread-199957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:49:46.041 [DEBUG] [Thread-199957] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:49:46.041 [DEBUG] [Thread-199957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:49:46.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:49:46.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:49:46.101 [DEBUG] [Thread-199957] [transport.py] [_log()] userauth is OK
2025-11-25T00:49:46.101 [DEBUG] [Thread-199957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:49:46.101 [DEBUG] [Thread-199957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:49:46.101 [DEBUG] [Thread-199957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:49:46.101 [DEBUG] [Thread-199957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:49:46.119 [INFO] [Thread-199957] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:49:46.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:49:46.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:49:46.983 [DEBUG] [Thread-199957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:49:46.987 [DEBUG] [Thread-199957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:49:47.035 [DEBUG] [Thread-199957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:49:47.035 [DEBUG] [Thread-199957] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:49:47.045 [DEBUG] [Thread-199957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:49:47.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:49:47.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-11-25T00:49:47.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-11-25T00:49:47.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:49:47.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:49:47.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:49:47.090 [DEBUG] [Thread-199957] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:49:54.125 [DEBUG] [Thread-199959 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:50:09.263 [DEBUG] [Thread-199960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:50:13.831 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:50:13.834 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:50:17.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:50:17.124 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:50:17.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-11-25T00:50:18.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 50, 1), 12.83, 41.49, 0.0, 24.54, 12.8, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:50:18.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:50:01
2025-11-25T00:50:18.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:50:18.405 [DEBUG] [Thread-199961] [transport.py] [_log()] starting thread (client mode): 0xc9b82710
2025-11-25T00:50:18.405 [DEBUG] [Thread-199961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:50:18.418 [DEBUG] [Thread-199961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:50:18.418 [INFO] [Thread-199961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] client lang: <none>
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] server lang: <none>
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] kex follows: False
2025-11-25T00:50:18.424 [DEBUG] [Thread-199961] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:50:18.425 [DEBUG] [Thread-199961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:50:18.425 [DEBUG] [Thread-199961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:50:18.425 [DEBUG] [Thread-199961] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:50:18.425 [DEBUG] [Thread-199961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:50:18.425 [DEBUG] [Thread-199961] [transport.py] [_log()] Compression: none
2025-11-25T00:50:18.425 [DEBUG] [Thread-199961] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:50:18.461 [DEBUG] [Thread-199961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:50:18.466 [DEBUG] [Thread-199961] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:50:18.468 [DEBUG] [Thread-199961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:50:18.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:50:18.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:50:18.473 [DEBUG] [Thread-199961] [transport.py] [_log()] userauth is OK
2025-11-25T00:50:18.474 [DEBUG] [Thread-199961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:50:18.474 [DEBUG] [Thread-199961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:50:18.474 [DEBUG] [Thread-199961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:50:18.474 [DEBUG] [Thread-199961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:50:18.511 [INFO] [Thread-199961] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:50:18.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:50:19.112 [DEBUG] [Thread-199961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:50:19.112 [DEBUG] [Thread-199961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:50:19.113 [DEBUG] [Thread-199961] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:50:19.153 [DEBUG] [Thread-199961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:50:19.153 [DEBUG] [Thread-199961] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:50:19.157 [DEBUG] [Thread-199961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:50:19.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:50:19.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:50:19.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:50:19.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:50:19.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:50:19.183 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:50:19.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:50:19.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:50:19.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:50:19.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.951433 -999.00  +12.90  18.61     45   +1.50 1 1 1 1 1     0    0 10.70 -28.22 ZNESW 19.3 18.6 146.4 29.6 13.2 -25.8 13.1 -25.2 12.8 -24.0 13.1 -24.9
2025-11-25T00:50:19.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:50:19.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:50:19.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.951433
2025-11-25T00:50:19.191 [DEBUG] [Thread-199961] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:50:19.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:50:19.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:50:19.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:50:19.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:50:19.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:50:19.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:50:01', tmtdew=12.83, humidity=41.49, cloud=0.0, wind=24.54, temperature=12.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:50:01', seeing=0.93, atlas_timestamp='2025-11-24T22:50:03.811', atlas_cloud=1, atlas_rain=1, zp_data=[-0.016250000000001208, 0.0032500000000013074, 0.034750000000000725, 0.009000000000000341, 0.04749999999999943, 0.09425000000000061, 0.0235000000000003, -0.011749999999999261, -0.0065000000000008384, 0.02200000000000024, 0.056250000000000355, -0.005000000000000782, 0.1014999999999997, 0.10524999999999984, 0.016500000000000625, -0.01150000000000162, 0.015249999999999986, 0.009500000000000952, 0.019000000000000128, -0.05325000000000202, 0.06649999999999778, 0.061749999999998195, 0.043250000000000455, 0.016250000000001208, 0.0009999999999994458, 0.04249999999999865, -0.01774999999999949, 0.07249999999999979, 0.13899999999999935, 0.13200000000000145, 0.09800000000000075, 0.008000000000000895, -0.008250000000000313], zp_timestamp='2025-11-24T22:46:00')
2025-11-25T00:50:19.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:50:19.306 [DEBUG] [Thread-199964] [transport.py] [_log()] starting thread (client mode): 0xd317e200
2025-11-25T00:50:19.306 [DEBUG] [Thread-199964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:50:19.321 [DEBUG] [Thread-199964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:50:19.321 [INFO] [Thread-199964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:50:19.331 [DEBUG] [Thread-199964] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] client lang: <none>
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] server lang: <none>
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] kex follows: False
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:50:19.332 [DEBUG] [Thread-199964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:50:19.333 [DEBUG] [Thread-199964] [transport.py] [_log()] Compression: none
2025-11-25T00:50:19.333 [DEBUG] [Thread-199964] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:50:19.397 [DEBUG] [Thread-199964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:50:19.398 [DEBUG] [Thread-199964] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:50:19.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:50:19.399 [DEBUG] [Thread-199964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:50:19.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:50:19.454 [DEBUG] [Thread-199964] [transport.py] [_log()] userauth is OK
2025-11-25T00:50:19.455 [DEBUG] [Thread-199964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:50:19.455 [DEBUG] [Thread-199964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:50:19.455 [DEBUG] [Thread-199964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:50:19.455 [DEBUG] [Thread-199964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:50:19.476 [INFO] [Thread-199964] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:50:19.477 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:50:19.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:50:20.341 [DEBUG] [Thread-199964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:50:20.341 [DEBUG] [Thread-199964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:50:20.389 [DEBUG] [Thread-199964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:50:20.389 [DEBUG] [Thread-199964] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:50:20.398 [DEBUG] [Thread-199964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:50:20.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:50:20.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:50:20.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-11-25T00:50:20.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:50:20.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:50:20.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:50:20.436 [DEBUG] [Thread-199964] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:50:23.654 [DEBUG] [Thread-199966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:50:24.312 [DEBUG] [Thread-199967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:50:39.478 [DEBUG] [Thread-199968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:50:50.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:50:50.437 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:50:50.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-11-25T00:50:51.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 50, 34), 12.88, 40.97, 0.0, 23.94, 12.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:50:51.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:50:34
2025-11-25T00:50:51.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:50:52.047 [DEBUG] [Thread-199969] [transport.py] [_log()] starting thread (client mode): 0xd07cf580
2025-11-25T00:50:52.048 [DEBUG] [Thread-199969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:50:52.057 [DEBUG] [Thread-199969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:50:52.058 [INFO] [Thread-199969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:50:52.063 [DEBUG] [Thread-199969] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] client lang: <none>
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] server lang: <none>
2025-11-25T00:50:52.064 [DEBUG] [Thread-199969] [transport.py] [_log()] kex follows: False
2025-11-25T00:50:52.065 [DEBUG] [Thread-199969] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:50:52.065 [DEBUG] [Thread-199969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:50:52.065 [DEBUG] [Thread-199969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:50:52.066 [DEBUG] [Thread-199969] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:50:52.066 [DEBUG] [Thread-199969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:50:52.066 [DEBUG] [Thread-199969] [transport.py] [_log()] Compression: none
2025-11-25T00:50:52.066 [DEBUG] [Thread-199969] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:50:52.104 [DEBUG] [Thread-199969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:50:52.110 [DEBUG] [Thread-199969] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:50:52.112 [DEBUG] [Thread-199969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:50:52.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:50:52.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:50:52.118 [DEBUG] [Thread-199969] [transport.py] [_log()] userauth is OK
2025-11-25T00:50:52.118 [DEBUG] [Thread-199969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:50:52.118 [DEBUG] [Thread-199969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:50:52.118 [DEBUG] [Thread-199969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:50:52.118 [DEBUG] [Thread-199969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:50:52.145 [INFO] [Thread-199969] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:50:52.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:50:52.916 [DEBUG] [Thread-199969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:50:52.917 [DEBUG] [Thread-199969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:50:52.919 [DEBUG] [Thread-199969] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:50:52.957 [DEBUG] [Thread-199969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:50:52.958 [DEBUG] [Thread-199969] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:50:52.961 [DEBUG] [Thread-199969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:50:52.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:50:52.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:50:52.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:50:52.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:50:52.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:50:52.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:50:52.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:50:52.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:50:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:50:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.951780 -999.00  +13.00  15.34     45   +1.50 1 1 1 1 1     0    0 10.53 -25.36 ZNESW 17.4 15.3 153.2 27.7 13.2 -25.7 13.1 -25.1 12.8 -24.0 13.1 -24.9
2025-11-25T00:50:52.991 [DEBUG] [Thread-199969] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:50:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:50:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:50:52.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.951780
2025-11-25T00:50:53.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:50:53.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:50:53.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:50:53.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:50:53.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:50:53.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:50:34', tmtdew=12.88, humidity=40.97, cloud=0.0, wind=23.94, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:50:34', seeing=0.79, atlas_timestamp='2025-11-24T22:50:33.792', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:49:00')
2025-11-25T00:50:53.085 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:50:53.097 [DEBUG] [Thread-199972] [transport.py] [_log()] starting thread (client mode): 0xd073aef0
2025-11-25T00:50:53.097 [DEBUG] [Thread-199972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:50:53.111 [DEBUG] [Thread-199972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:50:53.111 [INFO] [Thread-199972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:50:53.119 [DEBUG] [Thread-199972] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:50:53.119 [DEBUG] [Thread-199972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:50:53.119 [DEBUG] [Thread-199972] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:50:53.119 [DEBUG] [Thread-199972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:50:53.119 [DEBUG] [Thread-199972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:50:53.119 [DEBUG] [Thread-199972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:50:53.119 [DEBUG] [Thread-199972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:50:53.120 [DEBUG] [Thread-199972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:50:53.120 [DEBUG] [Thread-199972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:50:53.120 [DEBUG] [Thread-199972] [transport.py] [_log()] client lang: <none>
2025-11-25T00:50:53.120 [DEBUG] [Thread-199972] [transport.py] [_log()] server lang: <none>
2025-11-25T00:50:53.120 [DEBUG] [Thread-199972] [transport.py] [_log()] kex follows: False
2025-11-25T00:50:53.120 [DEBUG] [Thread-199972] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:50:53.120 [DEBUG] [Thread-199972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:50:53.120 [DEBUG] [Thread-199972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:50:53.120 [DEBUG] [Thread-199972] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:50:53.120 [DEBUG] [Thread-199972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:50:53.121 [DEBUG] [Thread-199972] [transport.py] [_log()] Compression: none
2025-11-25T00:50:53.121 [DEBUG] [Thread-199972] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:50:53.177 [DEBUG] [Thread-199972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:50:53.178 [DEBUG] [Thread-199972] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:50:53.179 [DEBUG] [Thread-199972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:50:53.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:50:53.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:50:53.233 [DEBUG] [Thread-199972] [transport.py] [_log()] userauth is OK
2025-11-25T00:50:53.234 [DEBUG] [Thread-199972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:50:53.234 [DEBUG] [Thread-199972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:50:53.234 [DEBUG] [Thread-199972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:50:53.234 [DEBUG] [Thread-199972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:50:53.255 [INFO] [Thread-199972] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:50:53.256 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:50:53.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:50:54.123 [DEBUG] [Thread-199972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:50:54.124 [DEBUG] [Thread-199972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:50:54.171 [DEBUG] [Thread-199972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:50:54.171 [DEBUG] [Thread-199972] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:50:54.180 [DEBUG] [Thread-199972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:50:54.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:50:54.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-11-25T00:50:54.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-11-25T00:50:54.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:50:54.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:50:54.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:50:54.214 [DEBUG] [Thread-199972] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:50:54.555 [DEBUG] [Thread-199974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:51:09.712 [DEBUG] [Thread-199975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:51:14.046 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:51:14.048 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:51:24.001 [DEBUG] [Thread-199976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:51:24.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:51:24.247 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:51:24.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-11-25T00:51:24.756 [DEBUG] [Thread-199977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:51:25.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 51, 7), 12.87, 40.99, 0.0, 25.34, 12.81, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:51:25.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:51:07
2025-11-25T00:51:25.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:51:25.847 [DEBUG] [Thread-199978] [transport.py] [_log()] starting thread (client mode): 0xd3191db0
2025-11-25T00:51:25.848 [DEBUG] [Thread-199978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:51:25.861 [DEBUG] [Thread-199978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:51:25.861 [INFO] [Thread-199978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:51:25.868 [DEBUG] [Thread-199978] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:51:25.868 [DEBUG] [Thread-199978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:51:25.869 [DEBUG] [Thread-199978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:51:25.869 [DEBUG] [Thread-199978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:51:25.869 [DEBUG] [Thread-199978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:51:25.869 [DEBUG] [Thread-199978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:51:25.869 [DEBUG] [Thread-199978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:51:25.869 [DEBUG] [Thread-199978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:51:25.869 [DEBUG] [Thread-199978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:51:25.869 [DEBUG] [Thread-199978] [transport.py] [_log()] client lang: <none>
2025-11-25T00:51:25.870 [DEBUG] [Thread-199978] [transport.py] [_log()] server lang: <none>
2025-11-25T00:51:25.870 [DEBUG] [Thread-199978] [transport.py] [_log()] kex follows: False
2025-11-25T00:51:25.870 [DEBUG] [Thread-199978] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:51:25.870 [DEBUG] [Thread-199978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:51:25.871 [DEBUG] [Thread-199978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:51:25.871 [DEBUG] [Thread-199978] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:51:25.871 [DEBUG] [Thread-199978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:51:25.872 [DEBUG] [Thread-199978] [transport.py] [_log()] Compression: none
2025-11-25T00:51:25.872 [DEBUG] [Thread-199978] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:51:25.910 [DEBUG] [Thread-199978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:51:25.916 [DEBUG] [Thread-199978] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:51:25.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:51:25.919 [DEBUG] [Thread-199978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:51:25.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:51:25.923 [DEBUG] [Thread-199978] [transport.py] [_log()] userauth is OK
2025-11-25T00:51:25.924 [DEBUG] [Thread-199978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:51:25.924 [DEBUG] [Thread-199978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:51:25.924 [DEBUG] [Thread-199978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:51:25.924 [DEBUG] [Thread-199978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:51:25.955 [INFO] [Thread-199978] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:51:25.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:51:26.567 [DEBUG] [Thread-199978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:51:26.568 [DEBUG] [Thread-199978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:51:26.569 [DEBUG] [Thread-199978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:51:26.609 [DEBUG] [Thread-199978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:51:26.609 [DEBUG] [Thread-199978] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:51:26.612 [DEBUG] [Thread-199978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:51:26.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:51:26.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:51:26.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:51:26.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:51:26.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:51:26.639 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:51:26.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:51:26.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:51:26.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:51:26.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.951780 -999.00  +13.00  15.34     45   +1.50 1 1 1 1 1     0    0 10.53 -25.36 ZNESW 17.4 15.3 153.2 27.7 13.2 -25.7 13.1 -25.1 12.8 -24.0 13.1 -24.9
2025-11-25T00:51:26.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:51:26.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:51:26.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.951780
2025-11-25T00:51:26.647 [DEBUG] [Thread-199978] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:51:26.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:51:26.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:51:26.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:51:26.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:51:26.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:51:26.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:51:07', tmtdew=12.87, humidity=40.99, cloud=0.0, wind=25.34, temperature=12.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:51:07', seeing=0.78, atlas_timestamp='2025-11-24T22:50:33.792', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:49:00')
2025-11-25T00:51:26.751 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:51:26.763 [DEBUG] [Thread-199981] [transport.py] [_log()] starting thread (client mode): 0xd3149990
2025-11-25T00:51:26.763 [DEBUG] [Thread-199981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:51:26.778 [DEBUG] [Thread-199981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:51:26.779 [INFO] [Thread-199981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] client lang: <none>
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] server lang: <none>
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] kex follows: False
2025-11-25T00:51:26.786 [DEBUG] [Thread-199981] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:51:26.787 [DEBUG] [Thread-199981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:51:26.787 [DEBUG] [Thread-199981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:51:26.787 [DEBUG] [Thread-199981] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:51:26.787 [DEBUG] [Thread-199981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:51:26.787 [DEBUG] [Thread-199981] [transport.py] [_log()] Compression: none
2025-11-25T00:51:26.787 [DEBUG] [Thread-199981] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:51:26.845 [DEBUG] [Thread-199981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:51:26.845 [DEBUG] [Thread-199981] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:51:26.846 [DEBUG] [Thread-199981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:51:26.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:51:26.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:51:26.901 [DEBUG] [Thread-199981] [transport.py] [_log()] userauth is OK
2025-11-25T00:51:26.901 [DEBUG] [Thread-199981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:51:26.901 [DEBUG] [Thread-199981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:51:26.901 [DEBUG] [Thread-199981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:51:26.901 [DEBUG] [Thread-199981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:51:26.920 [INFO] [Thread-199981] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:51:26.921 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:51:26.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:51:27.764 [DEBUG] [Thread-199981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:51:27.764 [DEBUG] [Thread-199981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:51:27.812 [DEBUG] [Thread-199981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:51:27.812 [DEBUG] [Thread-199981] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:51:27.821 [DEBUG] [Thread-199981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:51:27.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:51:27.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:51:27.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-11-25T00:51:27.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:51:27.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:51:27.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:51:27.858 [DEBUG] [Thread-199981] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:51:39.807 [DEBUG] [Thread-199983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:51:54.966 [DEBUG] [Thread-199984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:51:57.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:51:57.884 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:51:57.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:51:58.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 51, 40), 8.51, 61.01, 0.0, 27.6, 8.34, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:51:58.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:51:40
2025-11-25T00:51:58.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:51:59.042 [DEBUG] [Thread-199985] [transport.py] [_log()] starting thread (client mode): 0xd0713d30
2025-11-25T00:51:59.042 [DEBUG] [Thread-199985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:51:59.054 [DEBUG] [Thread-199985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:51:59.054 [INFO] [Thread-199985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:51:59.060 [DEBUG] [Thread-199985] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] client lang: <none>
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] server lang: <none>
2025-11-25T00:51:59.061 [DEBUG] [Thread-199985] [transport.py] [_log()] kex follows: False
2025-11-25T00:51:59.062 [DEBUG] [Thread-199985] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:51:59.062 [DEBUG] [Thread-199985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:51:59.062 [DEBUG] [Thread-199985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:51:59.063 [DEBUG] [Thread-199985] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:51:59.063 [DEBUG] [Thread-199985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:51:59.063 [DEBUG] [Thread-199985] [transport.py] [_log()] Compression: none
2025-11-25T00:51:59.063 [DEBUG] [Thread-199985] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:51:59.103 [DEBUG] [Thread-199985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:51:59.108 [DEBUG] [Thread-199985] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:51:59.110 [DEBUG] [Thread-199985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:51:59.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:51:59.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:51:59.116 [DEBUG] [Thread-199985] [transport.py] [_log()] userauth is OK
2025-11-25T00:51:59.116 [DEBUG] [Thread-199985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:51:59.117 [DEBUG] [Thread-199985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:51:59.117 [DEBUG] [Thread-199985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:51:59.117 [DEBUG] [Thread-199985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:51:59.144 [INFO] [Thread-199985] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:51:59.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:51:59.892 [DEBUG] [Thread-199985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:51:59.892 [DEBUG] [Thread-199985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:51:59.903 [DEBUG] [Thread-199985] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:51:59.933 [DEBUG] [Thread-199985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:51:59.933 [DEBUG] [Thread-199985] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:51:59.936 [DEBUG] [Thread-199985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:51:59.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:51:59.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:51:59.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:51:59.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:51:59.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:51:59.953 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:51:59.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:51:59.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:51:59.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:51:59.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.952127 -999.00  +12.90  18.71     45   +1.60 1 1 1 1 1     0    0 11.02 -23.08 ZNESW 22.1 18.7 143.5 28.9 13.2 -25.8 13.1 -25.1 12.8 -24.0 13.1 -24.8
2025-11-25T00:51:59.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:51:59.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:51:59.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.952127
2025-11-25T00:51:59.960 [DEBUG] [Thread-199985] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:51:59.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:51:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:51:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:51:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:51:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:51:59.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:51:40', tmtdew=8.51, humidity=61.01, cloud=0.0, wind=27.6, temperature=8.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:51:40', seeing=0.68, atlas_timestamp='2025-11-24T22:51:03.773', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:49:00')
2025-11-25T00:52:00.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:52:00.063 [DEBUG] [Thread-199988] [transport.py] [_log()] starting thread (client mode): 0xd073b850
2025-11-25T00:52:00.064 [DEBUG] [Thread-199988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:52:00.078 [DEBUG] [Thread-199988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:52:00.078 [INFO] [Thread-199988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:52:00.085 [DEBUG] [Thread-199988] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] client lang: <none>
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] server lang: <none>
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] kex follows: False
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] Compression: none
2025-11-25T00:52:00.086 [DEBUG] [Thread-199988] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:52:00.144 [DEBUG] [Thread-199988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:52:00.145 [DEBUG] [Thread-199988] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:52:00.145 [DEBUG] [Thread-199988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:52:00.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:52:00.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:52:00.200 [DEBUG] [Thread-199988] [transport.py] [_log()] userauth is OK
2025-11-25T00:52:00.201 [DEBUG] [Thread-199988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:52:00.201 [DEBUG] [Thread-199988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:52:00.201 [DEBUG] [Thread-199988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:52:00.201 [DEBUG] [Thread-199988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:52:00.222 [INFO] [Thread-199988] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:52:00.223 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:52:00.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:52:01.081 [DEBUG] [Thread-199988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:52:01.081 [DEBUG] [Thread-199988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:52:01.128 [DEBUG] [Thread-199988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:52:01.128 [DEBUG] [Thread-199988] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:52:01.137 [DEBUG] [Thread-199988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:52:01.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:52:01.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-11-25T00:52:01.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-11-25T00:52:01.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:52:01.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:52:01.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:52:01.173 [DEBUG] [Thread-199988] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:52:10.054 [DEBUG] [Thread-199990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:52:14.249 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:52:14.251 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:52:24.307 [DEBUG] [Thread-199991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:52:25.165 [DEBUG] [Thread-199992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:52:31.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:52:31.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:52:31.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-11-25T00:52:32.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 52, 13), 8.51, 61.02, 0.0, 26.7, 8.38, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:52:32.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:52:13
2025-11-25T00:52:32.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:52:32.427 [DEBUG] [Thread-199993] [transport.py] [_log()] starting thread (client mode): 0xd31939a0
2025-11-25T00:52:32.428 [DEBUG] [Thread-199993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:52:32.428 [DEBUG] [Thread-199993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:52:32.428 [INFO] [Thread-199993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] client lang: <none>
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] server lang: <none>
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] kex follows: False
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:52:32.432 [DEBUG] [Thread-199993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:52:32.433 [DEBUG] [Thread-199993] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:52:32.433 [DEBUG] [Thread-199993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:52:32.433 [DEBUG] [Thread-199993] [transport.py] [_log()] Compression: none
2025-11-25T00:52:32.433 [DEBUG] [Thread-199993] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:52:32.463 [DEBUG] [Thread-199993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:52:32.466 [DEBUG] [Thread-199993] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:52:32.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:52:32.468 [DEBUG] [Thread-199993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:52:32.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:52:32.471 [DEBUG] [Thread-199993] [transport.py] [_log()] userauth is OK
2025-11-25T00:52:32.471 [DEBUG] [Thread-199993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:52:32.471 [DEBUG] [Thread-199993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:52:32.471 [DEBUG] [Thread-199993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:52:32.471 [DEBUG] [Thread-199993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:52:32.490 [INFO] [Thread-199993] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:52:32.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:52:33.086 [DEBUG] [Thread-199993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:52:33.086 [DEBUG] [Thread-199993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:52:33.087 [DEBUG] [Thread-199993] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:52:33.128 [DEBUG] [Thread-199993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:52:33.128 [DEBUG] [Thread-199993] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:52:33.130 [DEBUG] [Thread-199993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:52:33.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:52:33.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:52:33.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:52:33.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:52:33.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:52:33.151 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:52:33.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:52:33.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:52:33.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:52:33.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.952474 -999.00  +12.90  21.59     45   +1.60 1 1 1 1 1     0    0 10.64 -25.68 ZNESW 20.5 21.6 149.0 26.9 13.2 -25.8 13.1 -25.2 12.8 -24.1 13.1 -24.9
2025-11-25T00:52:33.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:52:33.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:52:33.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.952474
2025-11-25T00:52:33.159 [DEBUG] [Thread-199993] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:52:33.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:52:33.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:52:33.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:52:33.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:52:33.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:52:33.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:52:13', tmtdew=8.51, humidity=61.02, cloud=0.0, wind=26.7, temperature=8.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:52:13', seeing=0.74, atlas_timestamp='2025-11-24T22:51:33.754', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:49:00')
2025-11-25T00:52:33.246 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:52:33.259 [DEBUG] [Thread-199996] [transport.py] [_log()] starting thread (client mode): 0xd0738be0
2025-11-25T00:52:33.259 [DEBUG] [Thread-199996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:52:33.274 [DEBUG] [Thread-199996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:52:33.274 [INFO] [Thread-199996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:52:33.281 [DEBUG] [Thread-199996] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:52:33.281 [DEBUG] [Thread-199996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:52:33.281 [DEBUG] [Thread-199996] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:52:33.281 [DEBUG] [Thread-199996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:52:33.281 [DEBUG] [Thread-199996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] client lang: <none>
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] server lang: <none>
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] kex follows: False
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] Compression: none
2025-11-25T00:52:33.282 [DEBUG] [Thread-199996] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:52:33.339 [DEBUG] [Thread-199996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:52:33.340 [DEBUG] [Thread-199996] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:52:33.340 [DEBUG] [Thread-199996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:52:33.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:52:33.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:52:33.396 [DEBUG] [Thread-199996] [transport.py] [_log()] userauth is OK
2025-11-25T00:52:33.396 [DEBUG] [Thread-199996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:52:33.396 [DEBUG] [Thread-199996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:52:33.396 [DEBUG] [Thread-199996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:52:33.396 [DEBUG] [Thread-199996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:52:33.412 [INFO] [Thread-199996] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:52:33.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:52:33.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:52:34.307 [DEBUG] [Thread-199996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:52:34.307 [DEBUG] [Thread-199996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:52:34.355 [DEBUG] [Thread-199996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:52:34.355 [DEBUG] [Thread-199996] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:52:34.363 [DEBUG] [Thread-199996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:52:34.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:52:34.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-11-25T00:52:34.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-11-25T00:52:34.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:52:34.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:52:34.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:52:34.403 [DEBUG] [Thread-199996] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:52:40.231 [DEBUG] [Thread-199998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:52:55.421 [DEBUG] [Thread-199999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:53:04.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:53:04.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:53:04.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-11-25T00:53:05.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 52, 46), 8.53, 60.95, 0.0, 27.49, 8.41, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:53:05.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:52:46
2025-11-25T00:53:05.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:53:05.743 [DEBUG] [Thread-200000] [transport.py] [_log()] starting thread (client mode): 0xc9b81e40
2025-11-25T00:53:05.743 [DEBUG] [Thread-200000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:53:05.757 [DEBUG] [Thread-200000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:53:05.757 [INFO] [Thread-200000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] client lang: <none>
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] server lang: <none>
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] kex follows: False
2025-11-25T00:53:05.762 [DEBUG] [Thread-200000] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:53:05.763 [DEBUG] [Thread-200000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:53:05.763 [DEBUG] [Thread-200000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:53:05.763 [DEBUG] [Thread-200000] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:53:05.764 [DEBUG] [Thread-200000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:53:05.764 [DEBUG] [Thread-200000] [transport.py] [_log()] Compression: none
2025-11-25T00:53:05.764 [DEBUG] [Thread-200000] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:53:05.801 [DEBUG] [Thread-200000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:53:05.805 [DEBUG] [Thread-200000] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:53:05.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:53:05.809 [DEBUG] [Thread-200000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:53:05.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:53:05.811 [DEBUG] [Thread-200000] [transport.py] [_log()] userauth is OK
2025-11-25T00:53:05.811 [DEBUG] [Thread-200000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:53:05.811 [DEBUG] [Thread-200000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:53:05.811 [DEBUG] [Thread-200000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:53:05.811 [DEBUG] [Thread-200000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:53:05.834 [INFO] [Thread-200000] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:53:05.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:53:06.618 [DEBUG] [Thread-200000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:53:06.627 [DEBUG] [Thread-200000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:53:06.629 [DEBUG] [Thread-200000] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:53:06.660 [DEBUG] [Thread-200000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:53:06.660 [DEBUG] [Thread-200000] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:53:06.664 [DEBUG] [Thread-200000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:53:06.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:53:06.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:53:06.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:53:06.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:53:06.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:53:06.691 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:53:06.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:53:06.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:53:06.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:53:06.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.952822 -999.00  +12.90  18.37     45   +1.50 1 1 1 1 1     0    0 10.91 -23.48 ZNESW 18.4 18.4 146.4 24.2 13.2 -25.7 13.1 -25.1 12.8 -24.1 13.1 -25.1
2025-11-25T00:53:06.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:53:06.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:53:06.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.952822
2025-11-25T00:53:06.699 [DEBUG] [Thread-200000] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:53:06.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:53:06.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:53:06.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:53:06.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:53:06.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:53:06.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:52:46', tmtdew=8.53, humidity=60.95, cloud=0.0, wind=27.49, temperature=8.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:52:46', seeing=0.85, atlas_timestamp='2025-11-24T22:52:03.821', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:49:00')
2025-11-25T00:53:06.803 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:53:06.815 [DEBUG] [Thread-200003] [transport.py] [_log()] starting thread (client mode): 0xd314a770
2025-11-25T00:53:06.815 [DEBUG] [Thread-200003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:53:06.830 [DEBUG] [Thread-200003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:53:06.830 [INFO] [Thread-200003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:53:06.837 [DEBUG] [Thread-200003] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:53:06.837 [DEBUG] [Thread-200003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:53:06.837 [DEBUG] [Thread-200003] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:53:06.837 [DEBUG] [Thread-200003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:53:06.837 [DEBUG] [Thread-200003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:53:06.837 [DEBUG] [Thread-200003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] client lang: <none>
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] server lang: <none>
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] kex follows: False
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] Compression: none
2025-11-25T00:53:06.838 [DEBUG] [Thread-200003] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:53:06.896 [DEBUG] [Thread-200003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:53:06.897 [DEBUG] [Thread-200003] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:53:06.898 [DEBUG] [Thread-200003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:53:06.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:53:06.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:53:06.952 [DEBUG] [Thread-200003] [transport.py] [_log()] userauth is OK
2025-11-25T00:53:06.953 [DEBUG] [Thread-200003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:53:06.953 [DEBUG] [Thread-200003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:53:06.953 [DEBUG] [Thread-200003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:53:06.953 [DEBUG] [Thread-200003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:53:06.967 [INFO] [Thread-200003] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:53: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-11-25T00:53:06.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:53:07.820 [DEBUG] [Thread-200003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:53:07.821 [DEBUG] [Thread-200003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:53:07.868 [DEBUG] [Thread-200003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:53:07.868 [DEBUG] [Thread-200003] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:53:07.877 [DEBUG] [Thread-200003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:53:07.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:53:07.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:53:07.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-11-25T00:53:07.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:53:07.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:53:07.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:53:07.913 [DEBUG] [Thread-200003] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:53:10.500 [DEBUG] [Thread-200005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:53:14.454 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:53:14.455 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:53:24.630 [DEBUG] [Thread-200006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:53:25.621 [DEBUG] [Thread-200007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:53:37.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:53:37.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:53:37.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-11-25T00:53:38.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 53, 19), 8.53, 60.96, 0.0, 26.5, 8.42, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:53:38.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:53:19
2025-11-25T00:53:38.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:53:39.148 [DEBUG] [Thread-200008] [transport.py] [_log()] starting thread (client mode): 0xd3149600
2025-11-25T00:53:39.148 [DEBUG] [Thread-200008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:53:39.160 [DEBUG] [Thread-200008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:53:39.161 [INFO] [Thread-200008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:53:39.167 [DEBUG] [Thread-200008] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:53:39.167 [DEBUG] [Thread-200008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] client lang: <none>
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] server lang: <none>
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] kex follows: False
2025-11-25T00:53:39.168 [DEBUG] [Thread-200008] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:53:39.169 [DEBUG] [Thread-200008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:53:39.169 [DEBUG] [Thread-200008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:53:39.170 [DEBUG] [Thread-200008] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:53:39.170 [DEBUG] [Thread-200008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:53:39.170 [DEBUG] [Thread-200008] [transport.py] [_log()] Compression: none
2025-11-25T00:53:39.170 [DEBUG] [Thread-200008] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:53:39.207 [DEBUG] [Thread-200008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:53:39.213 [DEBUG] [Thread-200008] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:53:39.215 [DEBUG] [Thread-200008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:53:39.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:53:39.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:53:39.220 [DEBUG] [Thread-200008] [transport.py] [_log()] userauth is OK
2025-11-25T00:53:39.221 [DEBUG] [Thread-200008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:53:39.221 [DEBUG] [Thread-200008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:53:39.221 [DEBUG] [Thread-200008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:53:39.221 [DEBUG] [Thread-200008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:53:39.248 [INFO] [Thread-200008] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:53:39.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:53:39.907 [DEBUG] [Thread-200008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:53:39.907 [DEBUG] [Thread-200008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:53:39.918 [DEBUG] [Thread-200008] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:53:39.948 [DEBUG] [Thread-200008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:53:39.948 [DEBUG] [Thread-200008] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:53:39.952 [DEBUG] [Thread-200008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:53:39.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:53:39.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:53:39.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:53:39.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:53:39.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:53:39.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:53:39.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:53:39.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:53:39.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:53:39.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.953516 -999.00  +12.90  21.61     46   +1.60 1 1 1 1 1     0    0 10.93 -20.88 ZNESW 20.1 21.6 141.4 28.2 13.2 -25.8 13.0 -25.1 12.8 -24.2 13.1 -24.7
2025-11-25T00:53:39.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:53:39.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:53:39.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.953516
2025-11-25T00:53:39.988 [DEBUG] [Thread-200008] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:53:39.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:53:40.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:53:40.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:53:40.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:53:40.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:53:40.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:53:19', tmtdew=8.53, humidity=60.96, cloud=0.0, wind=26.5, temperature=8.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:53:19', seeing=0.77, atlas_timestamp='2025-11-24T22:53:03.782', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:49:00')
2025-11-25T00:53:40.091 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:53:40.105 [DEBUG] [Thread-200011] [transport.py] [_log()] starting thread (client mode): 0xd0785d80
2025-11-25T00:53:40.106 [DEBUG] [Thread-200011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:53:40.121 [DEBUG] [Thread-200011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:53:40.121 [INFO] [Thread-200011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:53:40.128 [DEBUG] [Thread-200011] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] client lang: <none>
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] server lang: <none>
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] kex follows: False
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] Compression: none
2025-11-25T00:53:40.129 [DEBUG] [Thread-200011] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:53:40.183 [DEBUG] [Thread-200011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:53:40.183 [DEBUG] [Thread-200011] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:53:40.183 [DEBUG] [Thread-200011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:53:40.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:53:40.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:53:40.240 [DEBUG] [Thread-200011] [transport.py] [_log()] userauth is OK
2025-11-25T00:53:40.240 [DEBUG] [Thread-200011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:53:40.240 [DEBUG] [Thread-200011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:53:40.241 [DEBUG] [Thread-200011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:53:40.241 [DEBUG] [Thread-200011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:53:40.254 [INFO] [Thread-200011] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:53:40.255 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:53:40.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:53:40.716 [DEBUG] [Thread-200013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:53:41.104 [DEBUG] [Thread-200011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:53:41.104 [DEBUG] [Thread-200011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:53:41.153 [DEBUG] [Thread-200011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:53:41.153 [DEBUG] [Thread-200011] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:53:41.162 [DEBUG] [Thread-200011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:53:41.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:53:41.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-11-25T00:53:41.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-11-25T00:53:41.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:53:41.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:53:41.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:53:41.199 [DEBUG] [Thread-200011] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:53:49.634 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:53:55.812 [DEBUG] [Thread-200014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:54:10.867 [DEBUG] [Thread-200015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:54:11.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:54:11.210 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:54:11.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-11-25T00:54:12.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 53, 52), 8.61, 60.6, 0.0, 27.95, 8.53, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:54:12.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:53:52
2025-11-25T00:54:12.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:54:13.019 [DEBUG] [Thread-200016] [transport.py] [_log()] starting thread (client mode): 0xd31f7550
2025-11-25T00:54:13.020 [DEBUG] [Thread-200016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:54:13.036 [DEBUG] [Thread-200016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:54:13.037 [INFO] [Thread-200016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] client lang: <none>
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] server lang: <none>
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] kex follows: False
2025-11-25T00:54:13.042 [DEBUG] [Thread-200016] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:54:13.043 [DEBUG] [Thread-200016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:54:13.043 [DEBUG] [Thread-200016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:54:13.043 [DEBUG] [Thread-200016] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:54:13.043 [DEBUG] [Thread-200016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:54:13.043 [DEBUG] [Thread-200016] [transport.py] [_log()] Compression: none
2025-11-25T00:54:13.043 [DEBUG] [Thread-200016] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:54:13.081 [DEBUG] [Thread-200016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:54:13.087 [DEBUG] [Thread-200016] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:54:13.089 [DEBUG] [Thread-200016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:54:13.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:54:13.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:54:13.094 [DEBUG] [Thread-200016] [transport.py] [_log()] userauth is OK
2025-11-25T00:54:13.094 [DEBUG] [Thread-200016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:54:13.094 [DEBUG] [Thread-200016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:54:13.095 [DEBUG] [Thread-200016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:54:13.095 [DEBUG] [Thread-200016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:54:13.115 [INFO] [Thread-200016] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:54:13.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:54:13.757 [DEBUG] [Thread-200016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:54:13.757 [DEBUG] [Thread-200016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:54:13.758 [DEBUG] [Thread-200016] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:54:13.799 [DEBUG] [Thread-200016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:54:13.799 [DEBUG] [Thread-200016] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:54:13.803 [DEBUG] [Thread-200016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:54:13.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:54:13.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:54:13.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:54:13.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:54:13.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:54:13.826 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:54:13.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:54:13.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:54:13.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:54:13.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.953863 -999.00  +12.90  21.03     46   +1.70 1 1 1 1 1     0    0 11.11 -19.55 ZNESW 23.2 21.0 138.5 30.7 13.2 -25.9 13.1 -25.2 12.8 -24.0 13.1 -24.9
2025-11-25T00:54:13.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:54:13.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:54:13.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.953863
2025-11-25T00:54:13.833 [DEBUG] [Thread-200016] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:54:13.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:54:13.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:54:13.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:54:13.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:54:13.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:54:13.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:53:52', tmtdew=8.61, humidity=60.6, cloud=0.0, wind=27.95, temperature=8.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:53:52', seeing=0.77, atlas_timestamp='2025-11-24T22:53:33.763', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:52:00')
2025-11-25T00:54:13.919 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:54:13.928 [DEBUG] [Thread-200019] [transport.py] [_log()] starting thread (client mode): 0xd3150490
2025-11-25T00:54:13.929 [DEBUG] [Thread-200019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:54:13.945 [DEBUG] [Thread-200019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:54:13.945 [INFO] [Thread-200019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] client lang: <none>
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] server lang: <none>
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] kex follows: False
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:54:13.953 [DEBUG] [Thread-200019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:54:13.954 [DEBUG] [Thread-200019] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:54:13.954 [DEBUG] [Thread-200019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:54:13.954 [DEBUG] [Thread-200019] [transport.py] [_log()] Compression: none
2025-11-25T00:54:13.954 [DEBUG] [Thread-200019] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:54:14.013 [DEBUG] [Thread-200019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:54:14.013 [DEBUG] [Thread-200019] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:54:14.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:54:14.014 [DEBUG] [Thread-200019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:54:14.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:54:14.074 [DEBUG] [Thread-200019] [transport.py] [_log()] userauth is OK
2025-11-25T00:54:14.074 [DEBUG] [Thread-200019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:54:14.074 [DEBUG] [Thread-200019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:54:14.074 [DEBUG] [Thread-200019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:54:14.074 [DEBUG] [Thread-200019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:54:14.095 [INFO] [Thread-200019] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:54:14.095 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:54:14.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:54:14.658 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:54:14.661 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:54:14.974 [DEBUG] [Thread-200019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:54:14.974 [DEBUG] [Thread-200019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:54:15.023 [DEBUG] [Thread-200019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:54:15.023 [DEBUG] [Thread-200019] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:54:15.032 [DEBUG] [Thread-200019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:54:15.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:54:15.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-11-25T00:54:15.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-11-25T00:54:15.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:54:15.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:54:15.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:54:15.069 [DEBUG] [Thread-200019] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:54:24.937 [DEBUG] [Thread-200021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:54:25.930 [DEBUG] [Thread-200022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:54:41.073 [DEBUG] [Thread-200023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:54:45.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:54:45.092 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:54:45.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-11-25T00:54:46.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 54, 25), 8.6, 60.64, 0.0, 27.1, 8.54, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:54:46.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:54:25
2025-11-25T00:54:46.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:54:46.441 [DEBUG] [Thread-200024] [transport.py] [_log()] starting thread (client mode): 0xc9b83ac0
2025-11-25T00:54:46.442 [DEBUG] [Thread-200024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:54:46.455 [DEBUG] [Thread-200024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:54:46.455 [INFO] [Thread-200024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:54:46.461 [DEBUG] [Thread-200024] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:54:46.461 [DEBUG] [Thread-200024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:54:46.461 [DEBUG] [Thread-200024] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:54:46.462 [DEBUG] [Thread-200024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:54:46.462 [DEBUG] [Thread-200024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:54:46.462 [DEBUG] [Thread-200024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:54:46.462 [DEBUG] [Thread-200024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:54:46.462 [DEBUG] [Thread-200024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:54:46.462 [DEBUG] [Thread-200024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:54:46.462 [DEBUG] [Thread-200024] [transport.py] [_log()] client lang: <none>
2025-11-25T00:54:46.462 [DEBUG] [Thread-200024] [transport.py] [_log()] server lang: <none>
2025-11-25T00:54:46.462 [DEBUG] [Thread-200024] [transport.py] [_log()] kex follows: False
2025-11-25T00:54:46.462 [DEBUG] [Thread-200024] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:54:46.463 [DEBUG] [Thread-200024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:54:46.463 [DEBUG] [Thread-200024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:54:46.464 [DEBUG] [Thread-200024] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:54:46.464 [DEBUG] [Thread-200024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:54:46.464 [DEBUG] [Thread-200024] [transport.py] [_log()] Compression: none
2025-11-25T00:54:46.464 [DEBUG] [Thread-200024] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:54:46.504 [DEBUG] [Thread-200024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:54:46.511 [DEBUG] [Thread-200024] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:54:46.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:54:46.515 [DEBUG] [Thread-200024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:54:46.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:54:46.519 [DEBUG] [Thread-200024] [transport.py] [_log()] userauth is OK
2025-11-25T00:54:46.520 [DEBUG] [Thread-200024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:54:46.520 [DEBUG] [Thread-200024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:54:46.520 [DEBUG] [Thread-200024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:54:46.521 [DEBUG] [Thread-200024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:54:46.564 [INFO] [Thread-200024] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:54:46.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:54:47.190 [DEBUG] [Thread-200024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:54:47.190 [DEBUG] [Thread-200024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:54:47.192 [DEBUG] [Thread-200024] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:54:47.231 [DEBUG] [Thread-200024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:54:47.231 [DEBUG] [Thread-200024] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:54:47.235 [DEBUG] [Thread-200024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:54:47.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:54:47.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:54:47.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:54:47.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:54:47.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:54:47.261 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:54:47.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:54:47.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:54:47.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:54:47.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.954210 -999.00  +12.90  18.61     46   +1.60 1 1 1 1 1     0    0 10.82 -21.51 ZNESW 25.6 18.6 144.0 26.5 13.2 -25.7 13.0 -25.0 12.8 -24.0 13.1 -24.8
2025-11-25T00:54:47.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:54:47.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:54:47.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.954210
2025-11-25T00:54:47.269 [DEBUG] [Thread-200024] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:54:47.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:54:47.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:54:47.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:54:47.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:54:47.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:54:47.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:54:25', tmtdew=8.6, humidity=60.64, cloud=0.0, wind=27.1, temperature=8.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:54:25', seeing=0.95, atlas_timestamp='2025-11-24T22:54:03.744', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:52:00')
2025-11-25T00:54:47.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:54:47.385 [DEBUG] [Thread-200027] [transport.py] [_log()] starting thread (client mode): 0xd073ba00
2025-11-25T00:54:47.385 [DEBUG] [Thread-200027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:54:47.400 [DEBUG] [Thread-200027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:54:47.400 [INFO] [Thread-200027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] client lang: <none>
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] server lang: <none>
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] kex follows: False
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:54:47.408 [DEBUG] [Thread-200027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:54:47.409 [DEBUG] [Thread-200027] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:54:47.409 [DEBUG] [Thread-200027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:54:47.409 [DEBUG] [Thread-200027] [transport.py] [_log()] Compression: none
2025-11-25T00:54:47.409 [DEBUG] [Thread-200027] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:54:47.469 [DEBUG] [Thread-200027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:54:47.469 [DEBUG] [Thread-200027] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:54:47.470 [DEBUG] [Thread-200027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:54:47.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:54:47.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:54:47.525 [DEBUG] [Thread-200027] [transport.py] [_log()] userauth is OK
2025-11-25T00:54:47.525 [DEBUG] [Thread-200027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:54:47.525 [DEBUG] [Thread-200027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:54:47.525 [DEBUG] [Thread-200027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:54:47.525 [DEBUG] [Thread-200027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:54:47.548 [INFO] [Thread-200027] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:54:47.548 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:54:47.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:54:48.455 [DEBUG] [Thread-200027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:54:48.455 [DEBUG] [Thread-200027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:54:48.503 [DEBUG] [Thread-200027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:54:48.503 [DEBUG] [Thread-200027] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:54:48.512 [DEBUG] [Thread-200027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:54:48.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:54:48.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:54:48.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:54:48.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:54:48.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:54:48.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:54:48.554 [DEBUG] [Thread-200027] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:54:54.108 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:54:56.149 [DEBUG] [Thread-200029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:54:57.283 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:02.307 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:08.684 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:11.307 [DEBUG] [Thread-200030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:14.867 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:14.868 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:18.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:55:18.567 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:55:18.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-11-25T00:55:19.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 54, 57), 8.6, 60.64, 0.0, 30.15, 8.52, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:55:19.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:54:57
2025-11-25T00:55:19.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:55:19.883 [DEBUG] [Thread-200031] [transport.py] [_log()] starting thread (client mode): 0xd31f4640
2025-11-25T00:55:19.884 [DEBUG] [Thread-200031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:55:19.886 [DEBUG] [Thread-200031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:55:19.886 [INFO] [Thread-200031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] client lang: <none>
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] server lang: <none>
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] kex follows: False
2025-11-25T00:55:19.890 [DEBUG] [Thread-200031] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:55:19.891 [DEBUG] [Thread-200031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:55:19.891 [DEBUG] [Thread-200031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:55:19.891 [DEBUG] [Thread-200031] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:55:19.891 [DEBUG] [Thread-200031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:55:19.891 [DEBUG] [Thread-200031] [transport.py] [_log()] Compression: none
2025-11-25T00:55:19.891 [DEBUG] [Thread-200031] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:55:19.921 [DEBUG] [Thread-200031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:55:19.925 [DEBUG] [Thread-200031] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:55:19.926 [DEBUG] [Thread-200031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:55:19.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:55:19.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:55:19.928 [DEBUG] [Thread-200031] [transport.py] [_log()] userauth is OK
2025-11-25T00:55:19.929 [DEBUG] [Thread-200031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:55:19.929 [DEBUG] [Thread-200031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:55:19.929 [DEBUG] [Thread-200031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:55:19.929 [DEBUG] [Thread-200031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:55:19.946 [INFO] [Thread-200031] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:55:19.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:55:21.269 [DEBUG] [Thread-200031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:55:21.269 [DEBUG] [Thread-200031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:55:21.272 [DEBUG] [Thread-200031] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:55:21.310 [DEBUG] [Thread-200031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:55:21.310 [DEBUG] [Thread-200031] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:55:21.314 [DEBUG] [Thread-200031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:55:21.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:55:21.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:55:21.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:55:21.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:55:21.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:55:21.339 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:55:21.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:55:21.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:55:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:55:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.954558 -999.00  +12.90  22.52     46   +1.60 1 1 1 1 1     0    0 10.85 -21.75 ZNESW 21.1 22.5 139.8 27.5 13.1 -25.8 13.1 -25.1 12.8 -24.1 13.1 -24.9
2025-11-25T00:55:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:55:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:55:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.954558
2025-11-25T00:55:21.353 [DEBUG] [Thread-200031] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:55:21.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:55:21.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:55:21.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:55:21.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:55:21.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:55:21.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:54:57', tmtdew=8.6, humidity=60.64, cloud=0.0, wind=30.15, temperature=8.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:54:58', seeing=0.71, atlas_timestamp='2025-11-24T22:54:33.811', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:52:00')
2025-11-25T00:55:21.439 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:55:21.451 [DEBUG] [Thread-200034] [transport.py] [_log()] starting thread (client mode): 0xd31512d0
2025-11-25T00:55:21.451 [DEBUG] [Thread-200034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:55:21.466 [DEBUG] [Thread-200034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:55:21.466 [INFO] [Thread-200034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:55:21.473 [DEBUG] [Thread-200034] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:55:21.473 [DEBUG] [Thread-200034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] client lang: <none>
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] server lang: <none>
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] kex follows: False
2025-11-25T00:55:21.474 [DEBUG] [Thread-200034] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:55:21.475 [DEBUG] [Thread-200034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:55:21.475 [DEBUG] [Thread-200034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:55:21.475 [DEBUG] [Thread-200034] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:55:21.475 [DEBUG] [Thread-200034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:55:21.475 [DEBUG] [Thread-200034] [transport.py] [_log()] Compression: none
2025-11-25T00:55:21.475 [DEBUG] [Thread-200034] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:55:21.532 [DEBUG] [Thread-200034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:55:21.532 [DEBUG] [Thread-200034] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:55:21.532 [DEBUG] [Thread-200034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:55:21.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:55:21.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:55:21.589 [DEBUG] [Thread-200034] [transport.py] [_log()] userauth is OK
2025-11-25T00:55:21.589 [DEBUG] [Thread-200034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:55:21.589 [DEBUG] [Thread-200034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:55:21.589 [DEBUG] [Thread-200034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:55:21.589 [DEBUG] [Thread-200034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:55:21.604 [INFO] [Thread-200034] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:55:21.604 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:55:21.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:55:22.448 [DEBUG] [Thread-200034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:55:22.448 [DEBUG] [Thread-200034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:55:22.496 [DEBUG] [Thread-200034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:55:22.496 [DEBUG] [Thread-200034] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:55:22.504 [DEBUG] [Thread-200034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:55:22.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:55:22.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-11-25T00:55:22.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-11-25T00:55:22.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:55:22.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:55:22.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:55:22.546 [DEBUG] [Thread-200034] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:55:25.170 [DEBUG] [Thread-200036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:26.380 [DEBUG] [Thread-200037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:27.111 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:31.509 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:41.572 [DEBUG] [Thread-200038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:50.899 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:52.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:55:52.571 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:55:52.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:55:53.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 55, 31), 8.62, 60.56, 0.0, 28.67, 8.52, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:55:53.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:55:31
2025-11-25T00:55:53.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:55:54.054 [DEBUG] [Thread-200039] [transport.py] [_log()] starting thread (client mode): 0xd31f5600
2025-11-25T00:55:54.055 [DEBUG] [Thread-200039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:55:54.063 [DEBUG] [Thread-200039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:55:54.063 [INFO] [Thread-200039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] client lang: <none>
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] server lang: <none>
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] kex follows: False
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:55:54.068 [DEBUG] [Thread-200039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:55:54.069 [DEBUG] [Thread-200039] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:55:54.069 [DEBUG] [Thread-200039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:55:54.069 [DEBUG] [Thread-200039] [transport.py] [_log()] Compression: none
2025-11-25T00:55:54.069 [DEBUG] [Thread-200039] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:55:54.104 [DEBUG] [Thread-200039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:55:54.108 [DEBUG] [Thread-200039] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:55:54.109 [DEBUG] [Thread-200039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:55:54.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:55:54.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:55:54.113 [DEBUG] [Thread-200039] [transport.py] [_log()] userauth is OK
2025-11-25T00:55:54.113 [DEBUG] [Thread-200039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:55:54.114 [DEBUG] [Thread-200039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:55:54.114 [DEBUG] [Thread-200039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:55:54.114 [DEBUG] [Thread-200039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:55:54.148 [INFO] [Thread-200039] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:55:54.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:55:54.799 [DEBUG] [Thread-200039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:55:54.799 [DEBUG] [Thread-200039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:55:54.800 [DEBUG] [Thread-200039] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:55:54.840 [DEBUG] [Thread-200039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:55:54.840 [DEBUG] [Thread-200039] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:55:54.842 [DEBUG] [Thread-200039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:55:54.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:55:54.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:55:54.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:55:54.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:55:54.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:55:54.862 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:55:54.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:55:54.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:55:54.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:55:54.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.954904 -999.00  +12.90  22.02     46   +1.60 1 1 1 1 1     0    0 10.94 -23.24 ZNESW 25.2 22.0 146.4 27.2 13.2 -25.7 13.1 -25.4 12.8 -24.1 13.1 -24.7
2025-11-25T00:55:54.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:55:54.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:55:54.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.954904
2025-11-25T00:55:54.869 [DEBUG] [Thread-200039] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:55:54.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:55:54.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:55:54.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:55:54.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:55:54.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:55:54.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:55:31', tmtdew=8.62, humidity=60.56, cloud=0.0, wind=28.67, temperature=8.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:55:31', seeing=0.75, atlas_timestamp='2025-11-24T22:55:03.706', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:52:00')
2025-11-25T00:55:54.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:55:54.977 [DEBUG] [Thread-200042] [transport.py] [_log()] starting thread (client mode): 0xd31f4d00
2025-11-25T00:55:54.977 [DEBUG] [Thread-200042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:55:54.992 [DEBUG] [Thread-200042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:55:54.992 [INFO] [Thread-200042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] client lang: <none>
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] server lang: <none>
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] kex follows: False
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:55:55.000 [DEBUG] [Thread-200042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:55:55.001 [DEBUG] [Thread-200042] [transport.py] [_log()] Compression: none
2025-11-25T00:55:55.001 [DEBUG] [Thread-200042] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:55:55.056 [DEBUG] [Thread-200042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:55:55.056 [DEBUG] [Thread-200042] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:55:55.056 [DEBUG] [Thread-200042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:55:55.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:55:55.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:55:55.112 [DEBUG] [Thread-200042] [transport.py] [_log()] userauth is OK
2025-11-25T00:55:55.112 [DEBUG] [Thread-200042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:55:55.112 [DEBUG] [Thread-200042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:55:55.112 [DEBUG] [Thread-200042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:55:55.112 [DEBUG] [Thread-200042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:55:55.126 [INFO] [Thread-200042] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:55:55.127 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:55:55.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:55:55.275 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:55:55.973 [DEBUG] [Thread-200042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:55:55.973 [DEBUG] [Thread-200042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:55:56.022 [DEBUG] [Thread-200042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:55:56.022 [DEBUG] [Thread-200042] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:55:56.031 [DEBUG] [Thread-200042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:55:56.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:55:56.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-11-25T00:55:56.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T00:55:56.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:55:56.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:55:56.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:55:56.064 [DEBUG] [Thread-200042] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:55:56.648 [DEBUG] [Thread-200044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:56:01.429 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:56:05.804 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:56:11.805 [DEBUG] [Thread-200045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:56:15.070 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:56:15.072 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:56:25.545 [DEBUG] [Thread-200046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:56:26.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:56:26.090 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:56:26.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-11-25T00:56:26.892 [DEBUG] [Thread-200047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:56:27.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 56, 4), 8.63, 60.55, 0.0, 30.12, 8.51, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:56:27.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:56:04
2025-11-25T00:56:27.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:56:27.703 [DEBUG] [Thread-200048] [transport.py] [_log()] starting thread (client mode): 0xd3192410
2025-11-25T00:56:27.704 [DEBUG] [Thread-200048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:56:27.714 [DEBUG] [Thread-200048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:56:27.714 [INFO] [Thread-200048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:56:27.719 [DEBUG] [Thread-200048] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:56:27.719 [DEBUG] [Thread-200048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] client lang: <none>
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] server lang: <none>
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] kex follows: False
2025-11-25T00:56:27.720 [DEBUG] [Thread-200048] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:56:27.721 [DEBUG] [Thread-200048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:56:27.721 [DEBUG] [Thread-200048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:56:27.722 [DEBUG] [Thread-200048] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:56:27.722 [DEBUG] [Thread-200048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:56:27.722 [DEBUG] [Thread-200048] [transport.py] [_log()] Compression: none
2025-11-25T00:56:27.722 [DEBUG] [Thread-200048] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:56:27.758 [DEBUG] [Thread-200048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:56:27.764 [DEBUG] [Thread-200048] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:56:27.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:56:27.768 [DEBUG] [Thread-200048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:56:27.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:56:27.771 [DEBUG] [Thread-200048] [transport.py] [_log()] userauth is OK
2025-11-25T00:56:27.772 [DEBUG] [Thread-200048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:56:27.772 [DEBUG] [Thread-200048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:56:27.772 [DEBUG] [Thread-200048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:56:27.772 [DEBUG] [Thread-200048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:56:27.807 [INFO] [Thread-200048] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:56:27.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:56:28.576 [DEBUG] [Thread-200048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:56:28.577 [DEBUG] [Thread-200048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:56:28.578 [DEBUG] [Thread-200048] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:56:28.618 [DEBUG] [Thread-200048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:56:28.618 [DEBUG] [Thread-200048] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:56:28.622 [DEBUG] [Thread-200048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:56:28.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:56:28.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:56:28.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:56:28.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:56:28.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:56:28.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:56:28.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:56:28.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:56:28.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:56:28.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.955252 -999.00  +13.00  21.07     46   +1.60 1 1 1 1 1     0    0 10.73 -21.95 ZNESW 19.5 21.1 158.8 28.0 13.2 -25.7 13.1 -25.1 12.8 -24.1 13.1 -24.8
2025-11-25T00:56:28.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:56:28.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:56:28.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.955252
2025-11-25T00:56:28.655 [DEBUG] [Thread-200048] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:56:28.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:56:28.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:56:28.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:56:28.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:56:28.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:56:28.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:56:04', tmtdew=8.63, humidity=60.55, cloud=0.0, wind=30.12, temperature=8.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:56:04', seeing=0.78, atlas_timestamp='2025-11-24T22:55:33.773', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.006750000000000256, -0.004749999999999588, -0.015000000000000568, 0.0235000000000003, 0.05725000000000158, 0.0129999999999999, -0.029749999999999943, -0.03950000000000031, -0.010999999999999233, 0.030249999999998778, -0.011999999999998678, 0.11149999999999949, 0.10074999999999967, 0.010999999999999233, -0.027000000000001023, 0.0022500000000000853, 0.00849999999999973, 0.03200000000000003, -0.056750000000000966, 0.06199999999999939, 0.09024999999999928, 0.028250000000001663, -0.00024999999999941735, -0.006000000000000227, 0.0005000000000006111, -0.017250000000000654, 0.026999999999999247, 0.12750000000000128, 0.07500000000000107, 0.11899999999999977, 0.014000000000001123, 0.006750000000000256], zp_timestamp='2025-11-24T22:52:00')
2025-11-25T00:56: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-11-25T00:56:28.768 [DEBUG] [Thread-200051] [transport.py] [_log()] starting thread (client mode): 0xd3192e00
2025-11-25T00:56:28.768 [DEBUG] [Thread-200051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:56:28.783 [DEBUG] [Thread-200051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:56:28.783 [INFO] [Thread-200051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:56:28.790 [DEBUG] [Thread-200051] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:56:28.791 [DEBUG] [Thread-200051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:56:28.791 [DEBUG] [Thread-200051] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:56:28.791 [DEBUG] [Thread-200051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:56:28.791 [DEBUG] [Thread-200051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:56:28.791 [DEBUG] [Thread-200051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:56:28.791 [DEBUG] [Thread-200051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:56:28.791 [DEBUG] [Thread-200051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:56:28.791 [DEBUG] [Thread-200051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:56:28.792 [DEBUG] [Thread-200051] [transport.py] [_log()] client lang: <none>
2025-11-25T00:56:28.792 [DEBUG] [Thread-200051] [transport.py] [_log()] server lang: <none>
2025-11-25T00:56:28.792 [DEBUG] [Thread-200051] [transport.py] [_log()] kex follows: False
2025-11-25T00:56:28.792 [DEBUG] [Thread-200051] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:56:28.792 [DEBUG] [Thread-200051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:56:28.792 [DEBUG] [Thread-200051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:56:28.792 [DEBUG] [Thread-200051] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:56:28.793 [DEBUG] [Thread-200051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:56:28.793 [DEBUG] [Thread-200051] [transport.py] [_log()] Compression: none
2025-11-25T00:56:28.793 [DEBUG] [Thread-200051] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:56:28.850 [DEBUG] [Thread-200051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:56:28.851 [DEBUG] [Thread-200051] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:56:28.852 [DEBUG] [Thread-200051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:56:28.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:56:28.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:56:28.909 [DEBUG] [Thread-200051] [transport.py] [_log()] userauth is OK
2025-11-25T00:56:28.909 [DEBUG] [Thread-200051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:56:28.909 [DEBUG] [Thread-200051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:56:28.909 [DEBUG] [Thread-200051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:56:28.910 [DEBUG] [Thread-200051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:56:28.929 [INFO] [Thread-200051] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:56: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-11-25T00:56:28.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:56:29.791 [DEBUG] [Thread-200051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:56:29.791 [DEBUG] [Thread-200051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:56:29.839 [DEBUG] [Thread-200051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:56:29.839 [DEBUG] [Thread-200051] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:56:29.848 [DEBUG] [Thread-200051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:56:29.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:56:29.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-11-25T00:56:29.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-11-25T00:56:29.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:56:29.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:56:29.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:56:29.882 [DEBUG] [Thread-200051] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:56:41.943 [DEBUG] [Thread-200053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:56:57.073 [DEBUG] [Thread-200054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:56:59.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:56:59.900 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:56:59.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:57:01.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 56, 37), 8.69, 60.54, 0.0, 29.55, 8.53, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:57:01.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:56:37
2025-11-25T00:57:01.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:57:01.736 [DEBUG] [Thread-200055] [transport.py] [_log()] starting thread (client mode): 0xd31936d0
2025-11-25T00:57:01.737 [DEBUG] [Thread-200055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:57:01.749 [DEBUG] [Thread-200055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:57:01.749 [INFO] [Thread-200055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:57:01.755 [DEBUG] [Thread-200055] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:57:01.756 [DEBUG] [Thread-200055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:57:01.756 [DEBUG] [Thread-200055] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:57:01.756 [DEBUG] [Thread-200055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:57:01.756 [DEBUG] [Thread-200055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:57:01.756 [DEBUG] [Thread-200055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:57:01.756 [DEBUG] [Thread-200055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:57:01.756 [DEBUG] [Thread-200055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:57:01.756 [DEBUG] [Thread-200055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:57:01.757 [DEBUG] [Thread-200055] [transport.py] [_log()] client lang: <none>
2025-11-25T00:57:01.757 [DEBUG] [Thread-200055] [transport.py] [_log()] server lang: <none>
2025-11-25T00:57:01.757 [DEBUG] [Thread-200055] [transport.py] [_log()] kex follows: False
2025-11-25T00:57:01.757 [DEBUG] [Thread-200055] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:57:01.758 [DEBUG] [Thread-200055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:57:01.758 [DEBUG] [Thread-200055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:57:01.758 [DEBUG] [Thread-200055] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:57:01.758 [DEBUG] [Thread-200055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:57:01.758 [DEBUG] [Thread-200055] [transport.py] [_log()] Compression: none
2025-11-25T00:57:01.758 [DEBUG] [Thread-200055] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:57:01.797 [DEBUG] [Thread-200055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:57:01.803 [DEBUG] [Thread-200055] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:57:01.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:57:01.807 [DEBUG] [Thread-200055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:57:01.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:57:01.812 [DEBUG] [Thread-200055] [transport.py] [_log()] userauth is OK
2025-11-25T00:57:01.812 [DEBUG] [Thread-200055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:57:01.812 [DEBUG] [Thread-200055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:57:01.813 [DEBUG] [Thread-200055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:57:01.813 [DEBUG] [Thread-200055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:57:01.840 [INFO] [Thread-200055] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:57:01.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:57:02.478 [DEBUG] [Thread-200055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:57:02.479 [DEBUG] [Thread-200055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:57:02.481 [DEBUG] [Thread-200055] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:57:02.520 [DEBUG] [Thread-200055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:57:02.520 [DEBUG] [Thread-200055] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:57:02.523 [DEBUG] [Thread-200055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:57:02.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:57:02.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:57:02.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:57:02.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:57:02.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:57:02.550 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:57:02.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:57:02.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:57:02.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:57:02.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.955946 -999.00  +12.90  25.35     45   +1.50 1 1 1 1 1     0    0 10.98 -23.83 ZNESW 23.5 25.4 138.6 30.8 13.2 -25.8 13.1 -25.2 12.8 -24.0 13.1 -25.1
2025-11-25T00:57:02.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:57:02.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:57:02.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.955946
2025-11-25T00:57:02.558 [DEBUG] [Thread-200055] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:57:02.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:57:02.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:57:02.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:57:02.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:57:02.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:57:02.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:56:37', tmtdew=8.69, humidity=60.54, cloud=0.0, wind=29.55, temperature=8.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:56:37', seeing=0.79, atlas_timestamp='2025-11-24T22:56:33.734', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:55:00')
2025-11-25T00:57:02.659 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:57:02.670 [DEBUG] [Thread-200058] [transport.py] [_log()] starting thread (client mode): 0xd07843a0
2025-11-25T00:57:02.670 [DEBUG] [Thread-200058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:57:02.688 [DEBUG] [Thread-200058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:57:02.688 [INFO] [Thread-200058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:57:02.696 [DEBUG] [Thread-200058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:57:02.696 [DEBUG] [Thread-200058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:57:02.696 [DEBUG] [Thread-200058] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:57:02.696 [DEBUG] [Thread-200058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] client lang: <none>
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] server lang: <none>
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] kex follows: False
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] Compression: none
2025-11-25T00:57:02.697 [DEBUG] [Thread-200058] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:57:02.751 [DEBUG] [Thread-200058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:57:02.751 [DEBUG] [Thread-200058] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:57:02.751 [DEBUG] [Thread-200058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:57:02.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:57:02.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:57:02.809 [DEBUG] [Thread-200058] [transport.py] [_log()] userauth is OK
2025-11-25T00:57:02.809 [DEBUG] [Thread-200058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:57:02.809 [DEBUG] [Thread-200058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:57:02.809 [DEBUG] [Thread-200058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:57:02.809 [DEBUG] [Thread-200058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:57:02.828 [INFO] [Thread-200058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:57:02.829 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:57:02.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:57:03.725 [DEBUG] [Thread-200058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:57:03.725 [DEBUG] [Thread-200058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:57:03.773 [DEBUG] [Thread-200058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:57:03.773 [DEBUG] [Thread-200058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:57:03.781 [DEBUG] [Thread-200058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:57:03.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:57:03.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-11-25T00:57:03.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-11-25T00:57:03.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:57:03.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:57:03.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:57:03.824 [DEBUG] [Thread-200058] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:57:12.107 [DEBUG] [Thread-200060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:57:15.276 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:57:15.278 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:57:17.314 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:57:21.452 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:57:25.787 [DEBUG] [Thread-200061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:57:27.172 [DEBUG] [Thread-200062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:57:33.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:57:33.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:57:33.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-11-25T00:57:34.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 57, 9), 8.71, 60.49, 0.0, 27.72, 8.53, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:57:34.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:57:09
2025-11-25T00:57:35.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:57:35.241 [DEBUG] [Thread-200063] [transport.py] [_log()] starting thread (client mode): 0xd3152650
2025-11-25T00:57:35.242 [DEBUG] [Thread-200063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:57:35.255 [DEBUG] [Thread-200063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:57:35.255 [INFO] [Thread-200063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:57:35.261 [DEBUG] [Thread-200063] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] client lang: <none>
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] server lang: <none>
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] kex follows: False
2025-11-25T00:57:35.262 [DEBUG] [Thread-200063] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:57:35.263 [DEBUG] [Thread-200063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:57:35.263 [DEBUG] [Thread-200063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:57:35.264 [DEBUG] [Thread-200063] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:57:35.264 [DEBUG] [Thread-200063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:57:35.264 [DEBUG] [Thread-200063] [transport.py] [_log()] Compression: none
2025-11-25T00:57:35.264 [DEBUG] [Thread-200063] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:57:35.297 [DEBUG] [Thread-200063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:57:35.302 [DEBUG] [Thread-200063] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:57:35.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:57:35.306 [DEBUG] [Thread-200063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:57:35.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:57:35.310 [DEBUG] [Thread-200063] [transport.py] [_log()] userauth is OK
2025-11-25T00:57:35.310 [DEBUG] [Thread-200063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:57:35.310 [DEBUG] [Thread-200063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:57:35.310 [DEBUG] [Thread-200063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:57:35.311 [DEBUG] [Thread-200063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:57:35.356 [INFO] [Thread-200063] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:57:35.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:57:35.982 [DEBUG] [Thread-200063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:57:35.982 [DEBUG] [Thread-200063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:57:35.984 [DEBUG] [Thread-200063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:57:36.022 [DEBUG] [Thread-200063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:57:36.022 [DEBUG] [Thread-200063] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:57:36.026 [DEBUG] [Thread-200063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:57:36.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:57:36.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:57:36.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:57:36.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:57:36.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:57:36.052 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:57:36.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:57:36.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:57:36.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:57:36.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.956294 -999.00  +13.00  25.10     45   +1.50 1 1 1 1 1     0    0 11.03 -22.67 ZNESW 22.4 25.1 143.6 32.6 13.2 -25.6 13.1 -25.1 12.8 -24.1 13.1 -24.7
2025-11-25T00:57:36.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:57:36.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:57:36.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.956294
2025-11-25T00:57:36.055 [DEBUG] [Thread-200063] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:57:36.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:57:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:57:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:57:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:57:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:57:36.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:57:09', tmtdew=8.71, humidity=60.49, cloud=0.0, wind=27.72, temperature=8.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:57:10', seeing=0.77, atlas_timestamp='2025-11-24T22:57:03.802', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:55:00')
2025-11-25T00:57:36.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:57:36.162 [DEBUG] [Thread-200066] [transport.py] [_log()] starting thread (client mode): 0xd3150400
2025-11-25T00:57:36.162 [DEBUG] [Thread-200066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:57:36.179 [DEBUG] [Thread-200066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:57:36.179 [INFO] [Thread-200066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:57:36.187 [DEBUG] [Thread-200066] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:57:36.187 [DEBUG] [Thread-200066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:57:36.187 [DEBUG] [Thread-200066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:57:36.187 [DEBUG] [Thread-200066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:57:36.187 [DEBUG] [Thread-200066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:57:36.187 [DEBUG] [Thread-200066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:57:36.187 [DEBUG] [Thread-200066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] client lang: <none>
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] server lang: <none>
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] kex follows: False
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] Compression: none
2025-11-25T00:57:36.188 [DEBUG] [Thread-200066] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:57:36.249 [DEBUG] [Thread-200066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:57:36.250 [DEBUG] [Thread-200066] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:57:36.250 [DEBUG] [Thread-200066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:57:36.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:57:36.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:57:36.305 [DEBUG] [Thread-200066] [transport.py] [_log()] userauth is OK
2025-11-25T00:57:36.305 [DEBUG] [Thread-200066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:57:36.305 [DEBUG] [Thread-200066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:57:36.305 [DEBUG] [Thread-200066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:57:36.306 [DEBUG] [Thread-200066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:57:36.326 [INFO] [Thread-200066] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:57:36.326 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:57:36.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:57:37.218 [DEBUG] [Thread-200066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:57:37.220 [DEBUG] [Thread-200066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:57:37.266 [DEBUG] [Thread-200066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:57:37.267 [DEBUG] [Thread-200066] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:57:37.276 [DEBUG] [Thread-200066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:57:37.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:57:37.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-11-25T00:57:37.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-11-25T00:57:37.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:57:37.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:57:37.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:57:37.315 [DEBUG] [Thread-200066] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:57:42.215 [DEBUG] [Thread-200068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:57:57.343 [DEBUG] [Thread-200069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:58:07.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:58:07.348 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:58:07.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-11-25T00:58:08.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 57, 42), 8.79, 60.11, 0.0, 32.84, 8.55, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:58:08.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:57:42
2025-11-25T00:58:08.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:58:08.586 [DEBUG] [Thread-200070] [transport.py] [_log()] starting thread (client mode): 0xd3153a60
2025-11-25T00:58:08.586 [DEBUG] [Thread-200070] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:58:08.587 [DEBUG] [Thread-200070] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:58:08.587 [INFO] [Thread-200070] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:58:08.591 [DEBUG] [Thread-200070] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:58:08.591 [DEBUG] [Thread-200070] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:58:08.591 [DEBUG] [Thread-200070] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:58:08.591 [DEBUG] [Thread-200070] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] client lang: <none>
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] server lang: <none>
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] kex follows: False
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] Compression: none
2025-11-25T00:58:08.592 [DEBUG] [Thread-200070] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:58:08.620 [DEBUG] [Thread-200070] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:58:08.622 [DEBUG] [Thread-200070] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:58:08.624 [DEBUG] [Thread-200070] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:58:08.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:58:08.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:58:08.627 [DEBUG] [Thread-200070] [transport.py] [_log()] userauth is OK
2025-11-25T00:58:08.627 [DEBUG] [Thread-200070] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:58:08.627 [DEBUG] [Thread-200070] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:58:08.627 [DEBUG] [Thread-200070] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:58:08.627 [DEBUG] [Thread-200070] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:58:08.648 [INFO] [Thread-200070] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:58:08.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:58:09.270 [DEBUG] [Thread-200070] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:58:09.270 [DEBUG] [Thread-200070] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:58:09.281 [DEBUG] [Thread-200070] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:58:09.310 [DEBUG] [Thread-200070] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:58:09.310 [DEBUG] [Thread-200070] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:58:09.313 [DEBUG] [Thread-200070] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:58:09.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:58:09.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:58:09.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:58:09.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:58:09.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:58:09.334 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:58:09.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:58:09.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:58:09.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:58:09.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.956641 -999.00  +13.10  22.72     45   +1.50 1 1 1 1 1     0    0 10.97 -21.18 ZNESW 26.8 22.7 146.6 34.0 13.2 -25.4 13.1 -25.0 12.8 -24.0 13.1 -24.8
2025-11-25T00:58:09.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:58:09.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:58:09.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.956641
2025-11-25T00:58:09.341 [DEBUG] [Thread-200070] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:58:09.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:58:09.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:58:09.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:58:09.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:58:09.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:58:09.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:57:42', tmtdew=8.79, humidity=60.11, cloud=0.0, wind=32.84, temperature=8.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:57:42', seeing=0.77, atlas_timestamp='2025-11-24T22:57:33.782', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:55:00')
2025-11-25T00:58:09.428 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:58:09.440 [DEBUG] [Thread-200073] [transport.py] [_log()] starting thread (client mode): 0xd0739e70
2025-11-25T00:58:09.440 [DEBUG] [Thread-200073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:58:09.454 [DEBUG] [Thread-200073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:58:09.454 [INFO] [Thread-200073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] client lang: <none>
2025-11-25T00:58:09.461 [DEBUG] [Thread-200073] [transport.py] [_log()] server lang: <none>
2025-11-25T00:58:09.462 [DEBUG] [Thread-200073] [transport.py] [_log()] kex follows: False
2025-11-25T00:58:09.462 [DEBUG] [Thread-200073] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:58:09.462 [DEBUG] [Thread-200073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:58:09.462 [DEBUG] [Thread-200073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:58:09.462 [DEBUG] [Thread-200073] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:58:09.462 [DEBUG] [Thread-200073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:58:09.462 [DEBUG] [Thread-200073] [transport.py] [_log()] Compression: none
2025-11-25T00:58:09.462 [DEBUG] [Thread-200073] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:58:09.526 [DEBUG] [Thread-200073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:58:09.526 [DEBUG] [Thread-200073] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:58:09.527 [DEBUG] [Thread-200073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:58:09.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:58:09.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:58:09.584 [DEBUG] [Thread-200073] [transport.py] [_log()] userauth is OK
2025-11-25T00:58:09.584 [DEBUG] [Thread-200073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:58:09.584 [DEBUG] [Thread-200073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:58:09.584 [DEBUG] [Thread-200073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:58:09.584 [DEBUG] [Thread-200073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:58:09.600 [INFO] [Thread-200073] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:58:09.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:58:09.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:58:10.424 [DEBUG] [Thread-200073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:58:10.424 [DEBUG] [Thread-200073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:58:10.472 [DEBUG] [Thread-200073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:58:10.472 [DEBUG] [Thread-200073] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:58:10.481 [DEBUG] [Thread-200073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:58:10.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:58:10.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-11-25T00:58:10.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-11-25T00:58:10.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:58:10.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:58:10.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:58:10.518 [DEBUG] [Thread-200073] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:58:12.438 [DEBUG] [Thread-200075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:58:15.487 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:58:15.488 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:58:26.109 [DEBUG] [Thread-200076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:58:27.581 [DEBUG] [Thread-200077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:58:40.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:58:40.562 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:58:40.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T00:58:41.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 58, 15), 8.81, 60.06, 0.0, 32.29, 8.6, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:58:41.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:58:15
2025-11-25T00:58:41.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:58:41.765 [DEBUG] [Thread-200078] [transport.py] [_log()] starting thread (client mode): 0xd31f6980
2025-11-25T00:58:41.766 [DEBUG] [Thread-200078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:58:41.774 [DEBUG] [Thread-200078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:58:41.774 [INFO] [Thread-200078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] client lang: <none>
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] server lang: <none>
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] kex follows: False
2025-11-25T00:58:41.780 [DEBUG] [Thread-200078] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:58:41.781 [DEBUG] [Thread-200078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:58:41.781 [DEBUG] [Thread-200078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:58:41.781 [DEBUG] [Thread-200078] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:58:41.781 [DEBUG] [Thread-200078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:58:41.781 [DEBUG] [Thread-200078] [transport.py] [_log()] Compression: none
2025-11-25T00:58:41.781 [DEBUG] [Thread-200078] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:58:41.812 [DEBUG] [Thread-200078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:58:41.815 [DEBUG] [Thread-200078] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:58:41.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:58:41.818 [DEBUG] [Thread-200078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:58:41.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:58:41.820 [DEBUG] [Thread-200078] [transport.py] [_log()] userauth is OK
2025-11-25T00:58:41.820 [DEBUG] [Thread-200078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:58:41.821 [DEBUG] [Thread-200078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:58:41.821 [DEBUG] [Thread-200078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:58:41.821 [DEBUG] [Thread-200078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:58:41.850 [INFO] [Thread-200078] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:58:41.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:58:42.451 [DEBUG] [Thread-200078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:58:42.451 [DEBUG] [Thread-200078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:58:42.452 [DEBUG] [Thread-200078] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:58:42.492 [DEBUG] [Thread-200078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:58:42.492 [DEBUG] [Thread-200078] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:58:42.495 [DEBUG] [Thread-200078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:58:42.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:58:42.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:58:42.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:58:42.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:58:42.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:58:42.518 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:58:42.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:58:42.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:58:42.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:58:42.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.956988 -999.00  +13.10  25.29     45   +1.50 1 1 1 1 1     0    0 10.93 -20.12 ZNESW 24.8 25.3 141.8 32.4 13.2 -25.8 13.1 -25.4 12.8 -24.1 13.1 -24.8
2025-11-25T00:58:42.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:58:42.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:58:42.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.956988
2025-11-25T00:58:42.525 [DEBUG] [Thread-200078] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:58:42.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:58:42.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:58:42.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:58:42.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:58:42.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:58:42.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:58:15', tmtdew=8.81, humidity=60.06, cloud=0.0, wind=32.29, temperature=8.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:58:15', seeing=0.77, atlas_timestamp='2025-11-24T22:58:03.763', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:55:00')
2025-11-25T00:58:42.617 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:58:42.636 [DEBUG] [Thread-200081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:58:42.636 [DEBUG] [Thread-200082] [transport.py] [_log()] starting thread (client mode): 0xd0739030
2025-11-25T00:58:42.637 [DEBUG] [Thread-200082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:58:42.646 [DEBUG] [Thread-200082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:58:42.646 [INFO] [Thread-200082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:58:42.653 [DEBUG] [Thread-200082] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:58:42.653 [DEBUG] [Thread-200082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:58:42.653 [DEBUG] [Thread-200082] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:58:42.653 [DEBUG] [Thread-200082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:58:42.653 [DEBUG] [Thread-200082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] client lang: <none>
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] server lang: <none>
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] kex follows: False
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] Compression: none
2025-11-25T00:58:42.654 [DEBUG] [Thread-200082] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:58:42.711 [DEBUG] [Thread-200082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:58:42.711 [DEBUG] [Thread-200082] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:58:42.711 [DEBUG] [Thread-200082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:58:42.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:58:42.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:58:42.768 [DEBUG] [Thread-200082] [transport.py] [_log()] userauth is OK
2025-11-25T00:58:42.768 [DEBUG] [Thread-200082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:58:42.768 [DEBUG] [Thread-200082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:58:42.768 [DEBUG] [Thread-200082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:58:42.768 [DEBUG] [Thread-200082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:58:42.783 [INFO] [Thread-200082] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:58:42.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:58:42.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:58:43.611 [DEBUG] [Thread-200082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:58:43.611 [DEBUG] [Thread-200082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:58:43.660 [DEBUG] [Thread-200082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:58:43.660 [DEBUG] [Thread-200082] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:58:43.669 [DEBUG] [Thread-200082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:58:43.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:58:43.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-11-25T00:58:43.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-11-25T00:58:43.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:58:43.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:58:43.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:58:43.718 [DEBUG] [Thread-200082] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:58:57.777 [DEBUG] [Thread-200084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:59:12.858 [DEBUG] [Thread-200085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:59:13.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:59:13.744 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:59:13.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-11-25T00:59:15.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 58, 48), 8.74, 60.42, 0.0, 33.84, 8.51, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:59:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:58:48
2025-11-25T00:59:15.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:59:15.431 [DEBUG] [Thread-200086] [transport.py] [_log()] starting thread (client mode): 0xd07843a0
2025-11-25T00:59:15.431 [DEBUG] [Thread-200086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:59:15.442 [DEBUG] [Thread-200086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:59:15.442 [INFO] [Thread-200086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] client lang: <none>
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] server lang: <none>
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] kex follows: False
2025-11-25T00:59:15.449 [DEBUG] [Thread-200086] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:59:15.450 [DEBUG] [Thread-200086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:59:15.450 [DEBUG] [Thread-200086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:59:15.450 [DEBUG] [Thread-200086] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:59:15.450 [DEBUG] [Thread-200086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:59:15.450 [DEBUG] [Thread-200086] [transport.py] [_log()] Compression: none
2025-11-25T00:59:15.450 [DEBUG] [Thread-200086] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:59:15.486 [DEBUG] [Thread-200086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:59:15.491 [DEBUG] [Thread-200086] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:59:15.493 [DEBUG] [Thread-200086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:59:15.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:59:15.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:59:15.499 [DEBUG] [Thread-200086] [transport.py] [_log()] userauth is OK
2025-11-25T00:59:15.499 [DEBUG] [Thread-200086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:59:15.500 [DEBUG] [Thread-200086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:59:15.500 [DEBUG] [Thread-200086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:59:15.500 [DEBUG] [Thread-200086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:59:15.527 [INFO] [Thread-200086] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:59:15.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:59:15.694 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:59:15.696 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:59:16.158 [DEBUG] [Thread-200086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:59:16.158 [DEBUG] [Thread-200086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:59:16.159 [DEBUG] [Thread-200086] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:59:16.199 [DEBUG] [Thread-200086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:59:16.199 [DEBUG] [Thread-200086] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:59:16.201 [DEBUG] [Thread-200086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:59:16.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:59:16.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:59:16.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:59:16.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:59:16.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:59:16.225 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:59:16.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:59:16.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:59:16.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:59:16.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.957335 -999.00  +13.00  24.26     45   +1.40 1 1 1 1 1     0    0 10.86 -17.58 ZNESW 27.1 24.3 143.4 30.4 13.2 -25.7 13.1 -25.2 12.8 -24.0 13.1 -25.0
2025-11-25T00:59:16.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:59:16.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:59:16.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.957335
2025-11-25T00:59:16.231 [DEBUG] [Thread-200086] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:59:16.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:59:16.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:59:16.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:59:16.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:59:16.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:59:16.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:58:48', tmtdew=8.74, humidity=60.42, cloud=0.0, wind=33.84, temperature=8.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:58:49', seeing=0.83, atlas_timestamp='2025-11-24T22:58:33.744', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:55:00')
2025-11-25T00:59:16.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:59:16.331 [DEBUG] [Thread-200089] [transport.py] [_log()] starting thread (client mode): 0xd0785420
2025-11-25T00:59:16.331 [DEBUG] [Thread-200089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:59:16.346 [DEBUG] [Thread-200089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:59:16.346 [INFO] [Thread-200089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] client lang: <none>
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] server lang: <none>
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] kex follows: False
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:59:16.354 [DEBUG] [Thread-200089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:59:16.355 [DEBUG] [Thread-200089] [transport.py] [_log()] Compression: none
2025-11-25T00:59:16.355 [DEBUG] [Thread-200089] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:59:16.412 [DEBUG] [Thread-200089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:59:16.413 [DEBUG] [Thread-200089] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:59:16.413 [DEBUG] [Thread-200089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:59:16.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:59:16.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:59:16.468 [DEBUG] [Thread-200089] [transport.py] [_log()] userauth is OK
2025-11-25T00:59:16.468 [DEBUG] [Thread-200089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:59:16.468 [DEBUG] [Thread-200089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:59:16.468 [DEBUG] [Thread-200089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:59:16.468 [DEBUG] [Thread-200089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:59:16.482 [INFO] [Thread-200089] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:59:16.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:59:16.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:59:17.316 [DEBUG] [Thread-200089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:59:17.316 [DEBUG] [Thread-200089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:59:17.364 [DEBUG] [Thread-200089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:59:17.364 [DEBUG] [Thread-200089] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:59:17.372 [DEBUG] [Thread-200089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:59:17.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:59:17.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T00:59:17.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-11-25T00:59:17.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:59:17.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:59:17.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:59:17.405 [DEBUG] [Thread-200089] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:59:26.380 [DEBUG] [Thread-200091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:59:27.954 [DEBUG] [Thread-200092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:59:43.121 [DEBUG] [Thread-200093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T00:59:47.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T00:59:47.418 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T00:59:47.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-11-25T00:59:48.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 59, 21), 8.77, 60.33, 0.0, 33.81, 8.51, 0, 0, 0, 2, 0, 0),)
2025-11-25T00:59:48.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:59:21
2025-11-25T00:59:48.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T00:59:49.082 [DEBUG] [Thread-200094] [transport.py] [_log()] starting thread (client mode): 0xd0712350
2025-11-25T00:59:49.083 [DEBUG] [Thread-200094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:59:49.092 [DEBUG] [Thread-200094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T00:59:49.093 [INFO] [Thread-200094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] client lang: <none>
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] server lang: <none>
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] kex follows: False
2025-11-25T00:59:49.098 [DEBUG] [Thread-200094] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:59:49.099 [DEBUG] [Thread-200094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:59:49.099 [DEBUG] [Thread-200094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:59:49.099 [DEBUG] [Thread-200094] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:59:49.099 [DEBUG] [Thread-200094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:59:49.099 [DEBUG] [Thread-200094] [transport.py] [_log()] Compression: none
2025-11-25T00:59:49.099 [DEBUG] [Thread-200094] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:59:49.135 [DEBUG] [Thread-200094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:59:49.140 [DEBUG] [Thread-200094] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:59:49.141 [DEBUG] [Thread-200094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T00:59:49.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T00:59:49.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:59:49.144 [DEBUG] [Thread-200094] [transport.py] [_log()] userauth is OK
2025-11-25T00:59:49.145 [DEBUG] [Thread-200094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:59:49.145 [DEBUG] [Thread-200094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:59:49.145 [DEBUG] [Thread-200094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T00:59:49.145 [DEBUG] [Thread-200094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:59:49.169 [INFO] [Thread-200094] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:59:49.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:59:49.778 [DEBUG] [Thread-200094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:59:49.778 [DEBUG] [Thread-200094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:59:49.789 [DEBUG] [Thread-200094] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T00:59:49.819 [DEBUG] [Thread-200094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:59:49.819 [DEBUG] [Thread-200094] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:59:49.823 [DEBUG] [Thread-200094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:59:49.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:59:49.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T00:59:49.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T00:59:49.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T00:59:49.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:59:49.849 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T00:59:49.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:59:49.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:59:49.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T00:59:49.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.957682 -999.00  +13.00  22.10     45   +1.50 1 1 1 1 1     0    0 11.28 -18.01 ZNESW 24.1 22.1 144.0 35.3 13.2 -25.8 13.1 -25.2 12.9 -24.2 13.2 -25.1
2025-11-25T00:59:49.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T00:59:49.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T00:59:49.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.957682
2025-11-25T00:59:49.862 [DEBUG] [Thread-200094] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:59:49.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T00:59:49.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T00:59:49.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T00:59:49.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T00:59:49.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T00:59:49.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:59:21', tmtdew=8.77, humidity=60.33, cloud=0.0, wind=33.81, temperature=8.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:59:22', seeing=0.89, atlas_timestamp='2025-11-24T22:59:03.725', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:59:00')
2025-11-25T00:59:49.944 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T00:59:49.957 [DEBUG] [Thread-200097] [transport.py] [_log()] starting thread (client mode): 0xd07134c0
2025-11-25T00:59:49.957 [DEBUG] [Thread-200097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T00:59:49.972 [DEBUG] [Thread-200097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T00:59:49.972 [INFO] [Thread-200097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] client lang: <none>
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] server lang: <none>
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] kex follows: False
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] Compression: none
2025-11-25T00:59:49.980 [DEBUG] [Thread-200097] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T00:59:50.035 [DEBUG] [Thread-200097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T00:59:50.035 [DEBUG] [Thread-200097] [transport.py] [_log()] Switch to new keys ...
2025-11-25T00:59:50.035 [DEBUG] [Thread-200097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T00:59:50.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T00:59:50.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T00:59:50.092 [DEBUG] [Thread-200097] [transport.py] [_log()] userauth is OK
2025-11-25T00:59:50.092 [DEBUG] [Thread-200097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T00:59:50.092 [DEBUG] [Thread-200097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T00:59:50.092 [DEBUG] [Thread-200097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T00:59:50.092 [DEBUG] [Thread-200097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T00:59:50.108 [INFO] [Thread-200097] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T00:59:50.108 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T00:59:50.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T00:59:50.979 [DEBUG] [Thread-200097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T00:59:50.979 [DEBUG] [Thread-200097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T00:59:51.027 [DEBUG] [Thread-200097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T00:59:51.028 [DEBUG] [Thread-200097] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T00:59:51.037 [DEBUG] [Thread-200097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T00:59:51.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T00:59:51.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-11-25T00:59:51.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-11-25T00:59:51.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T00:59:51.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T00:59:51.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T00:59:51.075 [DEBUG] [Thread-200097] [transport.py] [_log()] EOF in transport thread
2025-11-25T00:59:58.194 [DEBUG] [Thread-200099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:00:13.314 [DEBUG] [Thread-200100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:00:15.906 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:00:15.908 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:00:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:00:21.102 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:00:21.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-11-25T01:00:22.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 0, 59, 54), 8.8, 60.01, 0.0, 31.74, 8.54, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:00:22.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 00:59:54
2025-11-25T01:00:22.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:00:22.734 [DEBUG] [Thread-200101] [transport.py] [_log()] starting thread (client mode): 0xd0784490
2025-11-25T01:00:22.736 [DEBUG] [Thread-200101] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:00:22.745 [DEBUG] [Thread-200101] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:00:22.745 [INFO] [Thread-200101] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] client lang: <none>
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] server lang: <none>
2025-11-25T01:00:22.750 [DEBUG] [Thread-200101] [transport.py] [_log()] kex follows: False
2025-11-25T01:00:22.751 [DEBUG] [Thread-200101] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:00:22.751 [DEBUG] [Thread-200101] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:00:22.751 [DEBUG] [Thread-200101] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:00:22.751 [DEBUG] [Thread-200101] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:00:22.751 [DEBUG] [Thread-200101] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:00:22.751 [DEBUG] [Thread-200101] [transport.py] [_log()] Compression: none
2025-11-25T01:00:22.751 [DEBUG] [Thread-200101] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:00:22.782 [DEBUG] [Thread-200101] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:00:22.787 [DEBUG] [Thread-200101] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:00:22.788 [DEBUG] [Thread-200101] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:00:22.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:00:22.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:00:22.794 [DEBUG] [Thread-200101] [transport.py] [_log()] userauth is OK
2025-11-25T01:00:22.794 [DEBUG] [Thread-200101] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:00:22.795 [DEBUG] [Thread-200101] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:00:22.795 [DEBUG] [Thread-200101] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:00:22.795 [DEBUG] [Thread-200101] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:00:22.832 [INFO] [Thread-200101] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:00:22.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:00:23.472 [DEBUG] [Thread-200101] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:00:23.472 [DEBUG] [Thread-200101] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:00:23.474 [DEBUG] [Thread-200101] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:00:23.512 [DEBUG] [Thread-200101] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:00:23.513 [DEBUG] [Thread-200101] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:00:23.516 [DEBUG] [Thread-200101] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:00:23.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:00:23.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:00:23.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:00:23.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:00:23.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:00:23.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:00:23.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:00:23.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:00:23.547 [DEBUG] [Thread-200101] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:00:23.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:00:23.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.958376 -999.00  +12.90  24.77     45   +1.50 1 1 1 1 1     0    0 10.86 -15.82 ZNESW 25.7 24.8 143.2 30.1 13.2 -25.9 13.0 -25.3 12.8 -24.2 13.1 -25.1
2025-11-25T01:00:23.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:00:23.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:00:23.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.958376
2025-11-25T01:00:23.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:00:23.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:00:23.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:00:23.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:00:23.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:00:23.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T00:59:54', tmtdew=8.8, humidity=60.01, cloud=0.0, wind=31.74, temperature=8.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T00:59:55', seeing=0.89, atlas_timestamp='2025-11-24T23:00:03.686', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:59:00')
2025-11-25T01:00:23.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:00:23.674 [DEBUG] [Thread-200104] [transport.py] [_log()] starting thread (client mode): 0xd0787040
2025-11-25T01:00:23.674 [DEBUG] [Thread-200104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:00:23.688 [DEBUG] [Thread-200104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:00:23.689 [INFO] [Thread-200104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:00:23.696 [DEBUG] [Thread-200104] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] client lang: <none>
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] server lang: <none>
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] kex follows: False
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] Compression: none
2025-11-25T01:00:23.697 [DEBUG] [Thread-200104] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:00:23.761 [DEBUG] [Thread-200104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:00:23.762 [DEBUG] [Thread-200104] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:00:23.763 [DEBUG] [Thread-200104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:00:23.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:00:23.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:00:23.817 [DEBUG] [Thread-200104] [transport.py] [_log()] userauth is OK
2025-11-25T01:00:23.817 [DEBUG] [Thread-200104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:00:23.817 [DEBUG] [Thread-200104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:00:23.817 [DEBUG] [Thread-200104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:00:23.818 [DEBUG] [Thread-200104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:00:23.837 [INFO] [Thread-200104] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:00:23.837 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:00:23.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:00:24.689 [DEBUG] [Thread-200104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:00:24.690 [DEBUG] [Thread-200104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:00:24.737 [DEBUG] [Thread-200104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:00:24.738 [DEBUG] [Thread-200104] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:00:24.747 [DEBUG] [Thread-200104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:00:24.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:00:24.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-11-25T01:00:24.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-11-25T01:00:24.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:00:24.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:00:24.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:00:24.788 [DEBUG] [Thread-200104] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:00:26.682 [DEBUG] [Thread-200106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:00:28.374 [DEBUG] [Thread-200107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:00:43.538 [DEBUG] [Thread-200108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:00:54.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:00:54.814 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:00:54.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-11-25T01:00:55.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 0, 27), 8.82, 59.95, 0.0, 30.21, 8.54, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:00:55.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:00:27
2025-11-25T01:00:55.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:00:56.184 [DEBUG] [Thread-200109] [transport.py] [_log()] starting thread (client mode): 0xd07866e0
2025-11-25T01:00:56.185 [DEBUG] [Thread-200109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:00:56.191 [DEBUG] [Thread-200109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:00:56.191 [INFO] [Thread-200109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:00:56.195 [DEBUG] [Thread-200109] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:00:56.195 [DEBUG] [Thread-200109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:00:56.195 [DEBUG] [Thread-200109] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:00:56.195 [DEBUG] [Thread-200109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:00:56.196 [DEBUG] [Thread-200109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:00:56.196 [DEBUG] [Thread-200109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:00:56.196 [DEBUG] [Thread-200109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:00:56.196 [DEBUG] [Thread-200109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:00:56.196 [DEBUG] [Thread-200109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:00:56.196 [DEBUG] [Thread-200109] [transport.py] [_log()] client lang: <none>
2025-11-25T01:00:56.196 [DEBUG] [Thread-200109] [transport.py] [_log()] server lang: <none>
2025-11-25T01:00:56.196 [DEBUG] [Thread-200109] [transport.py] [_log()] kex follows: False
2025-11-25T01:00:56.196 [DEBUG] [Thread-200109] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:00:56.196 [DEBUG] [Thread-200109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:00:56.197 [DEBUG] [Thread-200109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:00:56.197 [DEBUG] [Thread-200109] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:00:56.197 [DEBUG] [Thread-200109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:00:56.197 [DEBUG] [Thread-200109] [transport.py] [_log()] Compression: none
2025-11-25T01:00:56.197 [DEBUG] [Thread-200109] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:00:56.236 [DEBUG] [Thread-200109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:00:56.239 [DEBUG] [Thread-200109] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:00:56.241 [DEBUG] [Thread-200109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:00:56.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:00:56.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:00:56.246 [DEBUG] [Thread-200109] [transport.py] [_log()] userauth is OK
2025-11-25T01:00:56.246 [DEBUG] [Thread-200109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:00:56.246 [DEBUG] [Thread-200109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:00:56.246 [DEBUG] [Thread-200109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:00:56.246 [DEBUG] [Thread-200109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:00:56.287 [INFO] [Thread-200109] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:00:56.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:00:56.925 [DEBUG] [Thread-200109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:00:56.925 [DEBUG] [Thread-200109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:00:56.927 [DEBUG] [Thread-200109] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:00:56.966 [DEBUG] [Thread-200109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:00:56.966 [DEBUG] [Thread-200109] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:00:56.969 [DEBUG] [Thread-200109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:00:56.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:00:56.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:00:56.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:00:56.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:00:56.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:00:56.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:00:56.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:00:56.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:00:56.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:00:56.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.958724 -999.00  +12.90  21.58     45   +1.50 1 1 1 1 1     0    0 10.94 -15.44 ZNESW 22.1 21.6 143.2 32.3 13.2 -25.9 13.1 -25.4 12.8 -24.3 13.1 -25.1
2025-11-25T01:00:56.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:00:56.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:00:56.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.958724
2025-11-25T01:00:57.005 [DEBUG] [Thread-200109] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:00:57.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:00:57.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:00:57.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:00:57.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:00:57.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:00:57.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:00:27', tmtdew=8.82, humidity=59.95, cloud=0.0, wind=30.21, temperature=8.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:00:28', seeing=0.92, atlas_timestamp='2025-11-24T23:00:33.754', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:59:00')
2025-11-25T01:00:57.104 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:00:57.116 [DEBUG] [Thread-200112] [transport.py] [_log()] starting thread (client mode): 0xd317fa60
2025-11-25T01:00:57.116 [DEBUG] [Thread-200112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:00:57.132 [DEBUG] [Thread-200112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:00:57.132 [INFO] [Thread-200112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:00:57.139 [DEBUG] [Thread-200112] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:00:57.139 [DEBUG] [Thread-200112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] client lang: <none>
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] server lang: <none>
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] kex follows: False
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] Compression: none
2025-11-25T01:00:57.140 [DEBUG] [Thread-200112] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:00:57.197 [DEBUG] [Thread-200112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:00:57.197 [DEBUG] [Thread-200112] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:00:57.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:00:57.198 [DEBUG] [Thread-200112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:00:57.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:00:57.253 [DEBUG] [Thread-200112] [transport.py] [_log()] userauth is OK
2025-11-25T01:00:57.253 [DEBUG] [Thread-200112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:00:57.253 [DEBUG] [Thread-200112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:00:57.253 [DEBUG] [Thread-200112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:00:57.254 [DEBUG] [Thread-200112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:00:57.273 [INFO] [Thread-200112] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:00:57.273 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:00:57.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:00:58.136 [DEBUG] [Thread-200112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:00:58.136 [DEBUG] [Thread-200112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:00:58.183 [DEBUG] [Thread-200112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:00:58.183 [DEBUG] [Thread-200112] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:00:58.192 [DEBUG] [Thread-200112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:00:58.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:00:58.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-11-25T01:00:58.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-11-25T01:00:58.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:00:58.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:00:58.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:00:58.228 [DEBUG] [Thread-200112] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:00:58.612 [DEBUG] [Thread-200114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:01:05.202 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:01:13.765 [DEBUG] [Thread-200115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:01:16.116 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:01:16.119 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:01:27.004 [DEBUG] [Thread-200116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:01:28.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:01:28.252 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:01:28.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-11-25T01:01:28.824 [DEBUG] [Thread-200117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:01:29.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 1), 8.73, 60.34, 0.0, 30.6, 8.5, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:01:29.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:01:00
2025-11-25T01:01:29.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:01:29.501 [DEBUG] [Thread-200118] [transport.py] [_log()] starting thread (client mode): 0xd073a7a0
2025-11-25T01:01:29.502 [DEBUG] [Thread-200118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:01:29.514 [DEBUG] [Thread-200118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:01:29.514 [INFO] [Thread-200118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:01:29.519 [DEBUG] [Thread-200118] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:01:29.519 [DEBUG] [Thread-200118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] client lang: <none>
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] server lang: <none>
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] kex follows: False
2025-11-25T01:01:29.520 [DEBUG] [Thread-200118] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:01:29.521 [DEBUG] [Thread-200118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:01:29.521 [DEBUG] [Thread-200118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:01:29.521 [DEBUG] [Thread-200118] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:01:29.521 [DEBUG] [Thread-200118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:01:29.522 [DEBUG] [Thread-200118] [transport.py] [_log()] Compression: none
2025-11-25T01:01:29.522 [DEBUG] [Thread-200118] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:01:29.560 [DEBUG] [Thread-200118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:01:29.566 [DEBUG] [Thread-200118] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:01:29.567 [DEBUG] [Thread-200118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:01:29.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:01:29.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:01:29.573 [DEBUG] [Thread-200118] [transport.py] [_log()] userauth is OK
2025-11-25T01:01:29.573 [DEBUG] [Thread-200118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:01:29.574 [DEBUG] [Thread-200118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:01:29.574 [DEBUG] [Thread-200118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:01:29.574 [DEBUG] [Thread-200118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:01:29.600 [INFO] [Thread-200118] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:01:29.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:01:30.231 [DEBUG] [Thread-200118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:01:30.231 [DEBUG] [Thread-200118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:01:30.233 [DEBUG] [Thread-200118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:01:30.273 [DEBUG] [Thread-200118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:01:30.273 [DEBUG] [Thread-200118] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:01:30.277 [DEBUG] [Thread-200118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:01:30.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:01:30.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:01:30.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:01:30.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:01:30.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:01:30.304 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:01:30.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:01:30.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:01:30.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:01:30.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.959071 -999.00  +12.90  24.06     45   +1.50 1 1 1 1 1     0    0 11.25 -15.83 ZNESW 24.8 24.1 147.4 29.9 13.2 -25.9 13.0 -25.4 12.7 -24.1 13.1 -25.0
2025-11-25T01:01:30.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:01:30.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:01:30.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.959071
2025-11-25T01:01:30.306 [DEBUG] [Thread-200118] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:01:30.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:01:30.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:01:30.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:01:30.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:01:30.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:01:30.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:01:00', tmtdew=8.73, humidity=60.34, cloud=0.0, wind=30.6, temperature=8.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:01:01', seeing=0.83, atlas_timestamp='2025-11-24T23:01:03.734', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:59:00')
2025-11-25T01:01:30.410 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:01:30.423 [DEBUG] [Thread-200121] [transport.py] [_log()] starting thread (client mode): 0xd317fc10
2025-11-25T01:01:30.423 [DEBUG] [Thread-200121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:01:30.437 [DEBUG] [Thread-200121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:01:30.437 [INFO] [Thread-200121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:01:30.445 [DEBUG] [Thread-200121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:01:30.445 [DEBUG] [Thread-200121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:01:30.445 [DEBUG] [Thread-200121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:01:30.445 [DEBUG] [Thread-200121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:01:30.445 [DEBUG] [Thread-200121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:01:30.445 [DEBUG] [Thread-200121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:01:30.445 [DEBUG] [Thread-200121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:01:30.446 [DEBUG] [Thread-200121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:01:30.446 [DEBUG] [Thread-200121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:01:30.446 [DEBUG] [Thread-200121] [transport.py] [_log()] client lang: <none>
2025-11-25T01:01:30.446 [DEBUG] [Thread-200121] [transport.py] [_log()] server lang: <none>
2025-11-25T01:01:30.446 [DEBUG] [Thread-200121] [transport.py] [_log()] kex follows: False
2025-11-25T01:01:30.446 [DEBUG] [Thread-200121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:01:30.446 [DEBUG] [Thread-200121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:01:30.446 [DEBUG] [Thread-200121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:01:30.446 [DEBUG] [Thread-200121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:01:30.447 [DEBUG] [Thread-200121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:01:30.447 [DEBUG] [Thread-200121] [transport.py] [_log()] Compression: none
2025-11-25T01:01:30.447 [DEBUG] [Thread-200121] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:01:30.505 [DEBUG] [Thread-200121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:01:30.506 [DEBUG] [Thread-200121] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:01:30.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:01:30.507 [DEBUG] [Thread-200121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:01:30.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:01:30.560 [DEBUG] [Thread-200121] [transport.py] [_log()] userauth is OK
2025-11-25T01:01:30.561 [DEBUG] [Thread-200121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:01:30.561 [DEBUG] [Thread-200121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:01:30.561 [DEBUG] [Thread-200121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:01:30.561 [DEBUG] [Thread-200121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:01:30.580 [INFO] [Thread-200121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:01:30.580 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:01:30.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:01:31.415 [DEBUG] [Thread-200121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:01:31.416 [DEBUG] [Thread-200121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:01:31.464 [DEBUG] [Thread-200121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:01:31.464 [DEBUG] [Thread-200121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:01:31.473 [DEBUG] [Thread-200121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:01:31.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:01:31.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-11-25T01:01:31.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-11-25T01:01:31.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:01:31.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:01:31.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:01:31.510 [DEBUG] [Thread-200121] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:01:43.892 [DEBUG] [Thread-200123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:01:59.040 [DEBUG] [Thread-200124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:02:01.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:02:01.545 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:02:01.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-11-25T01:02:02.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 1, 33), 8.76, 60.44, 0.0, 30.44, 8.54, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:02:02.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:01:33
2025-11-25T01:02:02.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:02:02.785 [DEBUG] [Thread-200125] [transport.py] [_log()] starting thread (client mode): 0xd0713670
2025-11-25T01:02:02.787 [DEBUG] [Thread-200125] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:02:02.790 [DEBUG] [Thread-200125] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:02:02.790 [INFO] [Thread-200125] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] client lang: <none>
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] server lang: <none>
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] kex follows: False
2025-11-25T01:02:02.795 [DEBUG] [Thread-200125] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:02:02.796 [DEBUG] [Thread-200125] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:02:02.796 [DEBUG] [Thread-200125] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:02:02.796 [DEBUG] [Thread-200125] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:02:02.796 [DEBUG] [Thread-200125] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:02:02.796 [DEBUG] [Thread-200125] [transport.py] [_log()] Compression: none
2025-11-25T01:02:02.796 [DEBUG] [Thread-200125] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:02:02.823 [DEBUG] [Thread-200125] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:02:02.826 [DEBUG] [Thread-200125] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:02:02.828 [DEBUG] [Thread-200125] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:02:02.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:02:02.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:02:02.831 [DEBUG] [Thread-200125] [transport.py] [_log()] userauth is OK
2025-11-25T01:02:02.831 [DEBUG] [Thread-200125] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:02:02.832 [DEBUG] [Thread-200125] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:02:02.832 [DEBUG] [Thread-200125] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:02:02.832 [DEBUG] [Thread-200125] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:02:02.844 [INFO] [Thread-200125] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:02:02.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:02:03.409 [DEBUG] [Thread-200125] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:02:03.409 [DEBUG] [Thread-200125] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:02:03.410 [DEBUG] [Thread-200125] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:02:03.450 [DEBUG] [Thread-200125] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:02:03.450 [DEBUG] [Thread-200125] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:02:03.453 [DEBUG] [Thread-200125] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:02:03.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:02:03.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:02:03.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:02:03.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:02:03.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:02:03.475 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:02:03.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:02:03.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:02:03.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:02:03.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.959419 -999.00  +12.90  24.11     46   +1.50 1 1 1 1 1     0    0 10.96 -15.41 ZNESW 23.9 24.1 147.2 28.6 13.2 -25.8 13.0 -25.3 12.8 -24.2 -999.0 -999.0
2025-11-25T01:02:03.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:02:03.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:02:03.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.959419
2025-11-25T01:02:03.482 [DEBUG] [Thread-200125] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:02:03.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:02:03.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:02:03.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:02:03.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:02:03.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:02:03.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:01:33', tmtdew=8.76, humidity=60.44, cloud=0.0, wind=30.44, temperature=8.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:01:34', seeing=0.71, atlas_timestamp='2025-11-24T23:01:33.802', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:59:00')
2025-11-25T01:02:03.573 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:02:03.583 [DEBUG] [Thread-200128] [transport.py] [_log()] starting thread (client mode): 0xd0712aa0
2025-11-25T01:02:03.584 [DEBUG] [Thread-200128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:02:03.598 [DEBUG] [Thread-200128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:02:03.598 [INFO] [Thread-200128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] client lang: <none>
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] server lang: <none>
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] kex follows: False
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] Compression: none
2025-11-25T01:02:03.606 [DEBUG] [Thread-200128] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:02:03.665 [DEBUG] [Thread-200128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:02:03.665 [DEBUG] [Thread-200128] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:02:03.665 [DEBUG] [Thread-200128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:02:03.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:02:03.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:02:03.720 [DEBUG] [Thread-200128] [transport.py] [_log()] userauth is OK
2025-11-25T01:02:03.720 [DEBUG] [Thread-200128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:02:03.720 [DEBUG] [Thread-200128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:02:03.720 [DEBUG] [Thread-200128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:02:03.720 [DEBUG] [Thread-200128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:02:03.734 [INFO] [Thread-200128] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:02:03.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:02:03.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:02:04.614 [DEBUG] [Thread-200128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:02:04.614 [DEBUG] [Thread-200128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:02:04.662 [DEBUG] [Thread-200128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:02:04.662 [DEBUG] [Thread-200128] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:02:04.670 [DEBUG] [Thread-200128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:02:04.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:02:04.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:02:04.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-11-25T01:02:04.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:02:04.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:02:04.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:02:04.702 [DEBUG] [Thread-200128] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:02:14.149 [DEBUG] [Thread-200130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:02:16.324 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:02:16.326 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:02:27.289 [DEBUG] [Thread-200131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:02:29.330 [DEBUG] [Thread-200132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:02:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:02:34.728 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:02:34.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-11-25T01:02:36.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 2, 6), 8.74, 60.52, 0.0, 29.33, 8.53, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:02:36.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:02:06
2025-11-25T01:02:36.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:02:36.384 [DEBUG] [Thread-200133] [transport.py] [_log()] starting thread (client mode): 0xd3151540
2025-11-25T01:02:36.385 [DEBUG] [Thread-200133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:02:36.397 [DEBUG] [Thread-200133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:02:36.398 [INFO] [Thread-200133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:02:36.404 [DEBUG] [Thread-200133] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:02:36.404 [DEBUG] [Thread-200133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:02:36.404 [DEBUG] [Thread-200133] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:02:36.404 [DEBUG] [Thread-200133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:02:36.404 [DEBUG] [Thread-200133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:02:36.404 [DEBUG] [Thread-200133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:02:36.404 [DEBUG] [Thread-200133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:02:36.404 [DEBUG] [Thread-200133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:02:36.404 [DEBUG] [Thread-200133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:02:36.404 [DEBUG] [Thread-200133] [transport.py] [_log()] client lang: <none>
2025-11-25T01:02:36.405 [DEBUG] [Thread-200133] [transport.py] [_log()] server lang: <none>
2025-11-25T01:02:36.405 [DEBUG] [Thread-200133] [transport.py] [_log()] kex follows: False
2025-11-25T01:02:36.405 [DEBUG] [Thread-200133] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:02:36.405 [DEBUG] [Thread-200133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:02:36.405 [DEBUG] [Thread-200133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:02:36.405 [DEBUG] [Thread-200133] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:02:36.406 [DEBUG] [Thread-200133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:02:36.406 [DEBUG] [Thread-200133] [transport.py] [_log()] Compression: none
2025-11-25T01:02:36.406 [DEBUG] [Thread-200133] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:02:36.440 [DEBUG] [Thread-200133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:02:36.445 [DEBUG] [Thread-200133] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:02:36.447 [DEBUG] [Thread-200133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:02:36.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:02:36.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:02:36.452 [DEBUG] [Thread-200133] [transport.py] [_log()] userauth is OK
2025-11-25T01:02:36.453 [DEBUG] [Thread-200133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:02:36.453 [DEBUG] [Thread-200133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:02:36.453 [DEBUG] [Thread-200133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:02:36.453 [DEBUG] [Thread-200133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:02:36.491 [INFO] [Thread-200133] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:02:36.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:02:37.101 [DEBUG] [Thread-200133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:02:37.101 [DEBUG] [Thread-200133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:02:37.102 [DEBUG] [Thread-200133] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:02:37.141 [DEBUG] [Thread-200133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:02:37.142 [DEBUG] [Thread-200133] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:02:37.145 [DEBUG] [Thread-200133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:02:37.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:02:37.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:02:37.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:02:37.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:02:37.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:02:37.175 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:02:37.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:02:37.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:02:37.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:02:37.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.959766 -999.00  +12.80  23.15     46   +1.50 1 1 1 1 1     0    0 10.99 -15.06 ZNESW 23.1 23.1 140.0 32.0 13.2 -26.0 13.0 -25.4 12.8 -24.3 13.1 -25.0
2025-11-25T01:02:37.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:02:37.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:02:37.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.959766
2025-11-25T01:02:37.182 [DEBUG] [Thread-200133] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:02:37.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:02:37.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:02:37.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:02:37.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:02:37.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:02:37.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:02:06', tmtdew=8.74, humidity=60.52, cloud=0.0, wind=29.33, temperature=8.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:02:07', seeing=0.72, atlas_timestamp='2025-11-24T23:02:03.782', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04124999999999979, -0.021749999999999048, 0.0032500000000013074, -0.022500000000000853, 0.015499999999999403, 0.052250000000000796, 0.022499999999999076, -0.06524999999999892, -0.0030000000000001137, 0.018000000000000682, 0.04925000000000068, 0.0030000000000001137, 0.1169999999999991, 0.1067499999999999, -0.0129999999999999, -0.014000000000001123, 0.023249999999999105, -0.0045000000000001705, 0.03599999999999959, -0.0417500000000004, 0.0799999999999983, 0.07974999999999888, 0.03225000000000122, 0.004250000000000753, 0.0009999999999994458, -0.0129999999999999, -0.005749999999999034, 0.06850000000000023, 0.09600000000000009, 0.06800000000000139, 0.09350000000000236, -0.011499999999998067, 0.01974999999999838], zp_timestamp='2025-11-24T22:59:00')
2025-11-25T01:02:37.271 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:02:37.283 [DEBUG] [Thread-200136] [transport.py] [_log()] starting thread (client mode): 0xd3149f60
2025-11-25T01:02:37.283 [DEBUG] [Thread-200136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:02:37.299 [DEBUG] [Thread-200136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:02:37.299 [INFO] [Thread-200136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] client lang: <none>
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] server lang: <none>
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] kex follows: False
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:02:37.307 [DEBUG] [Thread-200136] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:02:37.308 [DEBUG] [Thread-200136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:02:37.308 [DEBUG] [Thread-200136] [transport.py] [_log()] Compression: none
2025-11-25T01:02:37.308 [DEBUG] [Thread-200136] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:02:37.365 [DEBUG] [Thread-200136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:02:37.365 [DEBUG] [Thread-200136] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:02:37.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:02:37.366 [DEBUG] [Thread-200136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:02:37.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:02:37.421 [DEBUG] [Thread-200136] [transport.py] [_log()] userauth is OK
2025-11-25T01:02:37.421 [DEBUG] [Thread-200136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:02:37.421 [DEBUG] [Thread-200136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:02:37.421 [DEBUG] [Thread-200136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:02:37.422 [DEBUG] [Thread-200136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:02:37.441 [INFO] [Thread-200136] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:02:37.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:02:37.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:02:38.258 [DEBUG] [Thread-200136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:02:38.258 [DEBUG] [Thread-200136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:02:38.306 [DEBUG] [Thread-200136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:02:38.306 [DEBUG] [Thread-200136] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:02:38.314 [DEBUG] [Thread-200136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:02:38.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:02:38.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-11-25T01:02:38.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-11-25T01:02:38.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:02:38.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:02:38.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:02:38.347 [DEBUG] [Thread-200136] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:02:44.385 [DEBUG] [Thread-200138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:02:59.524 [DEBUG] [Thread-200139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:03:08.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:03:08.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:03:08.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-11-25T01:03:09.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 2, 39), 8.66, 60.54, 0.0, 29.77, 8.44, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:03:09.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:02:39
2025-11-25T01:03:09.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:03:09.990 [DEBUG] [Thread-200140] [transport.py] [_log()] starting thread (client mode): 0xd0739e70
2025-11-25T01:03:09.991 [DEBUG] [Thread-200140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:03:10.003 [DEBUG] [Thread-200140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:03:10.003 [INFO] [Thread-200140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] client lang: <none>
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] server lang: <none>
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] kex follows: False
2025-11-25T01:03:10.008 [DEBUG] [Thread-200140] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:03:10.009 [DEBUG] [Thread-200140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:03:10.009 [DEBUG] [Thread-200140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:03:10.009 [DEBUG] [Thread-200140] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:03:10.009 [DEBUG] [Thread-200140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:03:10.009 [DEBUG] [Thread-200140] [transport.py] [_log()] Compression: none
2025-11-25T01:03:10.009 [DEBUG] [Thread-200140] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:03:10.041 [DEBUG] [Thread-200140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:03:10.045 [DEBUG] [Thread-200140] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:03:10.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:03:10.047 [DEBUG] [Thread-200140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:03:10.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:03:10.050 [DEBUG] [Thread-200140] [transport.py] [_log()] userauth is OK
2025-11-25T01:03:10.050 [DEBUG] [Thread-200140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:03:10.050 [DEBUG] [Thread-200140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:03:10.050 [DEBUG] [Thread-200140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:03:10.050 [DEBUG] [Thread-200140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:03:10.072 [INFO] [Thread-200140] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:03:10.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:03:10.667 [DEBUG] [Thread-200140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:03:10.667 [DEBUG] [Thread-200140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:03:10.669 [DEBUG] [Thread-200140] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:03:10.709 [DEBUG] [Thread-200140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:03:10.709 [DEBUG] [Thread-200140] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:03:10.713 [DEBUG] [Thread-200140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:03:10.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:03:10.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:03:10.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:03:10.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:03:10.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:03:10.741 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:03:10.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:03:10.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:03:10.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:03:10.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.960113 -999.00  +12.80  21.97     46   +1.50 1 1 1 1 1     0    0 10.89 -14.71 ZNESW 26.7 22.0 143.2 28.4 13.2 -26.0 13.0 -25.6 12.8 -24.3 13.0 -24.8
2025-11-25T01:03:10.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:03:10.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:03:10.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.960113
2025-11-25T01:03:10.749 [DEBUG] [Thread-200140] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:03:10.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:03:10.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:03:10.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:03:10.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:03:10.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:03:10.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:02:39', tmtdew=8.66, humidity=60.54, cloud=0.0, wind=29.77, temperature=8.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:02:39', seeing=0.72, atlas_timestamp='2025-11-24T23:02:33.763', atlas_cloud=1, atlas_rain=1, zp_data=[-0.043250000000000455, -0.044749999999998735, -0.025249999999997996, -0.04300000000000104, 0.0129999999999999, 0.06375000000000064, 0.010999999999999233, -0.04974999999999952, -0.021500000000001407, -0.006999999999999673, -0.004749999999999588, -0.024499999999999744, 0.04550000000000054, 0.08274999999999899, -0.06750000000000078, -0.036000000000001364, -0.004749999999999588, -0.011499999999999844, 0.009999999999999787, -0.06025000000000169, 0.03599999999999959, 0.04174999999999862, 0.005250000000000199, -0.013249999999999318, -0.015000000000000568, -0.024499999999999744, -0.0442499999999999, 0.026500000000000412, 0.09800000000000075, 0.06150000000000233, 0.06900000000000084, -0.02549999999999919, -0.028750000000002274], zp_timestamp='2025-11-24T23:01:00')
2025-11-25T01:03:10.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:03:10.866 [DEBUG] [Thread-200143] [transport.py] [_log()] starting thread (client mode): 0xd0710280
2025-11-25T01:03:10.866 [DEBUG] [Thread-200143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:03:10.881 [DEBUG] [Thread-200143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:03:10.881 [INFO] [Thread-200143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] client lang: <none>
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] server lang: <none>
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] kex follows: False
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:03:10.889 [DEBUG] [Thread-200143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:03:10.890 [DEBUG] [Thread-200143] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:03:10.890 [DEBUG] [Thread-200143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:03:10.890 [DEBUG] [Thread-200143] [transport.py] [_log()] Compression: none
2025-11-25T01:03:10.890 [DEBUG] [Thread-200143] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:03:10.947 [DEBUG] [Thread-200143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:03:10.948 [DEBUG] [Thread-200143] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:03:10.948 [DEBUG] [Thread-200143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:03:10.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:03:10.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:03:11.005 [DEBUG] [Thread-200143] [transport.py] [_log()] userauth is OK
2025-11-25T01:03:11.005 [DEBUG] [Thread-200143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:03:11.005 [DEBUG] [Thread-200143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:03:11.005 [DEBUG] [Thread-200143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:03:11.005 [DEBUG] [Thread-200143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:03:11.025 [INFO] [Thread-200143] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:03:11.025 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:03:11.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:03:11.856 [DEBUG] [Thread-200143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:03:11.857 [DEBUG] [Thread-200143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:03:11.907 [DEBUG] [Thread-200143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:03:11.907 [DEBUG] [Thread-200143] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:03:11.916 [DEBUG] [Thread-200143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:03:11.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:03:11.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:03:11.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-11-25T01:03:11.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:03:11.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:03:11.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:03:11.953 [DEBUG] [Thread-200143] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:03:14.577 [DEBUG] [Thread-200145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:03:16.591 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:03:16.593 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:03:27.578 [DEBUG] [Thread-200146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:03:29.715 [DEBUG] [Thread-200147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:03:41.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:03:41.951 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:03:42.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:03:42.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 3, 12), 8.7, 60.42, 0.0, 31.02, 8.43, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:03:42.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:03:12
2025-11-25T01:03:43.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:03:43.278 [DEBUG] [Thread-200148] [transport.py] [_log()] starting thread (client mode): 0xd073bc10
2025-11-25T01:03:43.278 [DEBUG] [Thread-200148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:03:43.282 [DEBUG] [Thread-200148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:03:43.283 [INFO] [Thread-200148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:03:43.286 [DEBUG] [Thread-200148] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] client lang: <none>
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] server lang: <none>
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] kex follows: False
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] Compression: none
2025-11-25T01:03:43.287 [DEBUG] [Thread-200148] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:03:43.307 [DEBUG] [Thread-200148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:03:43.309 [DEBUG] [Thread-200148] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:03:43.311 [DEBUG] [Thread-200148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:03:43.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:03:43.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:03:43.313 [DEBUG] [Thread-200148] [transport.py] [_log()] userauth is OK
2025-11-25T01:03:43.313 [DEBUG] [Thread-200148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:03:43.313 [DEBUG] [Thread-200148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:03:43.313 [DEBUG] [Thread-200148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:03:43.313 [DEBUG] [Thread-200148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:03:43.325 [INFO] [Thread-200148] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:03:43.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:03:43.894 [DEBUG] [Thread-200148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:03:43.895 [DEBUG] [Thread-200148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:03:43.896 [DEBUG] [Thread-200148] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:03:43.935 [DEBUG] [Thread-200148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:03:43.935 [DEBUG] [Thread-200148] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:03:43.938 [DEBUG] [Thread-200148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:03:43.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:03:43.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:03:43.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:03:43.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:03:43.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:03:43.960 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:03:43.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:03:43.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:03:43.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:03:43.963 [DEBUG] [Thread-200148] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:03:43.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.960807 -999.00  +12.80  25.98     45   +1.40 1 1 1 1 1     0    0 10.95 -14.45 ZNESW 23.4 26.0 148.4 31.1 13.2 -25.9 13.0 -25.2 12.7 -24.2 13.1 -24.7
2025-11-25T01:03:43.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:03:43.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:03:43.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.960807
2025-11-25T01:03:43.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:03:43.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:03:43.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:03:43.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:03:43.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:03:43.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:03:12', tmtdew=8.7, humidity=60.42, cloud=0.0, wind=31.02, temperature=8.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:03:12', seeing=0.8, atlas_timestamp='2025-11-24T23:03:33.725', atlas_cloud=1, atlas_rain=1, zp_data=[-0.043250000000000455, -0.044749999999998735, -0.025249999999997996, -0.04300000000000104, 0.0129999999999999, 0.06375000000000064, 0.010999999999999233, -0.04974999999999952, -0.021500000000001407, -0.006999999999999673, -0.004749999999999588, -0.024499999999999744, 0.04550000000000054, 0.08274999999999899, -0.06750000000000078, -0.036000000000001364, -0.004749999999999588, -0.011499999999999844, 0.009999999999999787, -0.06025000000000169, 0.03599999999999959, 0.04174999999999862, 0.005250000000000199, -0.013249999999999318, -0.015000000000000568, -0.024499999999999744, -0.0442499999999999, 0.026500000000000412, 0.09800000000000075, 0.06150000000000233, 0.06900000000000084, -0.02549999999999919, -0.028750000000002274], zp_timestamp='2025-11-24T23:01:00')
2025-11-25T01:03:44.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:03:44.089 [DEBUG] [Thread-200151] [transport.py] [_log()] starting thread (client mode): 0xc9b811b0
2025-11-25T01:03:44.089 [DEBUG] [Thread-200151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:03:44.103 [DEBUG] [Thread-200151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:03:44.104 [INFO] [Thread-200151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] client lang: <none>
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] server lang: <none>
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] kex follows: False
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:03:44.111 [DEBUG] [Thread-200151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:03:44.112 [DEBUG] [Thread-200151] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:03:44.112 [DEBUG] [Thread-200151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:03:44.112 [DEBUG] [Thread-200151] [transport.py] [_log()] Compression: none
2025-11-25T01:03:44.112 [DEBUG] [Thread-200151] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:03:44.169 [DEBUG] [Thread-200151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:03:44.170 [DEBUG] [Thread-200151] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:03:44.170 [DEBUG] [Thread-200151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:03:44.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:03:44.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:03:44.227 [DEBUG] [Thread-200151] [transport.py] [_log()] userauth is OK
2025-11-25T01:03:44.227 [DEBUG] [Thread-200151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:03:44.227 [DEBUG] [Thread-200151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:03:44.228 [DEBUG] [Thread-200151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:03:44.228 [DEBUG] [Thread-200151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:03:44.251 [INFO] [Thread-200151] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:03:44.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:03:44.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:03:44.774 [DEBUG] [Thread-200153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:03:45.147 [DEBUG] [Thread-200151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:03:45.147 [DEBUG] [Thread-200151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:03:45.195 [DEBUG] [Thread-200151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:03:45.195 [DEBUG] [Thread-200151] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:03:45.203 [DEBUG] [Thread-200151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:03:45.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:03:45.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:03:45.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-11-25T01:03:45.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:03:45.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:03:45.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:03:45.245 [DEBUG] [Thread-200151] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:03:59.896 [DEBUG] [Thread-200154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:04:15.014 [DEBUG] [Thread-200155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:04:15.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:04:15.280 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:04:15.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-11-25T01:04:16.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 3, 45), 8.71, 60.48, 0.0, 29.24, 8.46, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:04:16.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:03:45
2025-11-25T01:04:16.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:04:16.794 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:04:16.796 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:04:16.906 [DEBUG] [Thread-200156] [transport.py] [_log()] starting thread (client mode): 0xd07139a0
2025-11-25T01:04:16.906 [DEBUG] [Thread-200156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:04:16.919 [DEBUG] [Thread-200156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:04:16.920 [INFO] [Thread-200156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:04:16.925 [DEBUG] [Thread-200156] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:04:16.925 [DEBUG] [Thread-200156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] client lang: <none>
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] server lang: <none>
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] kex follows: False
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] Compression: none
2025-11-25T01:04:16.926 [DEBUG] [Thread-200156] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:04:16.960 [DEBUG] [Thread-200156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:04:16.964 [DEBUG] [Thread-200156] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:04:16.965 [DEBUG] [Thread-200156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:04:16.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:04:16.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:04:16.968 [DEBUG] [Thread-200156] [transport.py] [_log()] userauth is OK
2025-11-25T01:04:16.968 [DEBUG] [Thread-200156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:04:16.968 [DEBUG] [Thread-200156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:04:16.968 [DEBUG] [Thread-200156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:04:16.968 [DEBUG] [Thread-200156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:04:16.998 [INFO] [Thread-200156] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:04:17.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:04:17.639 [DEBUG] [Thread-200156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:04:17.639 [DEBUG] [Thread-200156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:04:17.641 [DEBUG] [Thread-200156] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:04:17.680 [DEBUG] [Thread-200156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:04:17.681 [DEBUG] [Thread-200156] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:04:17.685 [DEBUG] [Thread-200156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:04:17.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:04:17.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:04:17.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:04:17.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:04:17.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:04:17.711 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:04:17.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:04:17.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:04:17.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:04:17.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.960807 -999.00  +12.80  25.98     45   +1.40 1 1 1 1 1     0    0 10.95 -14.45 ZNESW 23.4 26.0 148.4 31.1 13.2 -25.9 13.0 -25.2 12.7 -24.2 13.1 -24.7
2025-11-25T01:04:17.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:04:17.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:04:17.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.960807
2025-11-25T01:04:17.719 [DEBUG] [Thread-200156] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:04:17.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:04:17.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:04:17.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:04:17.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:04:17.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:04:17.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:03:45', tmtdew=8.71, humidity=60.48, cloud=0.0, wind=29.24, temperature=8.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:03:45', seeing=0.79, atlas_timestamp='2025-11-24T23:03:33.725', atlas_cloud=1, atlas_rain=1, zp_data=[-0.043250000000000455, -0.044749999999998735, -0.025249999999997996, -0.04300000000000104, 0.0129999999999999, 0.06375000000000064, 0.010999999999999233, -0.04974999999999952, -0.021500000000001407, -0.006999999999999673, -0.004749999999999588, -0.024499999999999744, 0.04550000000000054, 0.08274999999999899, -0.06750000000000078, -0.036000000000001364, -0.004749999999999588, -0.011499999999999844, 0.009999999999999787, -0.06025000000000169, 0.03599999999999959, 0.04174999999999862, 0.005250000000000199, -0.013249999999999318, -0.015000000000000568, -0.024499999999999744, -0.0442499999999999, 0.026500000000000412, 0.09800000000000075, 0.06150000000000233, 0.06900000000000084, -0.02549999999999919, -0.028750000000002274], zp_timestamp='2025-11-24T23:01:00')
2025-11-25T01:04:17.822 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:04:17.832 [DEBUG] [Thread-200159] [transport.py] [_log()] starting thread (client mode): 0xd317e500
2025-11-25T01:04:17.832 [DEBUG] [Thread-200159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:04:17.846 [DEBUG] [Thread-200159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:04:17.847 [INFO] [Thread-200159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] client lang: <none>
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] server lang: <none>
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] kex follows: False
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:04:17.854 [DEBUG] [Thread-200159] [transport.py] [_log()] Compression: none
2025-11-25T01:04:17.855 [DEBUG] [Thread-200159] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:04:17.914 [DEBUG] [Thread-200159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:04:17.914 [DEBUG] [Thread-200159] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:04:17.915 [DEBUG] [Thread-200159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:04:17.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:04:17.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:04:17.973 [DEBUG] [Thread-200159] [transport.py] [_log()] userauth is OK
2025-11-25T01:04:17.973 [DEBUG] [Thread-200159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:04:17.973 [DEBUG] [Thread-200159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:04:17.973 [DEBUG] [Thread-200159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:04:17.973 [DEBUG] [Thread-200159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:04:17.996 [INFO] [Thread-200159] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:04: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-11-25T01:04:18.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:04:18.807 [DEBUG] [Thread-200159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:04:18.807 [DEBUG] [Thread-200159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:04:18.855 [DEBUG] [Thread-200159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:04:18.855 [DEBUG] [Thread-200159] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:04:18.863 [DEBUG] [Thread-200159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:04:18.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:04:18.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:04:18.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-11-25T01:04:18.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:04:18.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:04:18.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:04:18.896 [DEBUG] [Thread-200159] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:04:27.834 [DEBUG] [Thread-200161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:04:30.112 [DEBUG] [Thread-200162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:04:45.247 [DEBUG] [Thread-200163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:04:47.938 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:04:48.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:04:48.920 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:04:48.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-11-25T01:04:49.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 4, 17), 8.7, 60.52, 0.0, 30.45, 8.43, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:04:49.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:04:17
2025-11-25T01:04:49.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:04:50.094 [DEBUG] [Thread-200164] [transport.py] [_log()] starting thread (client mode): 0xd0739b40
2025-11-25T01:04:50.095 [DEBUG] [Thread-200164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:04:50.107 [DEBUG] [Thread-200164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:04:50.107 [INFO] [Thread-200164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:04:50.114 [DEBUG] [Thread-200164] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:04:50.114 [DEBUG] [Thread-200164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:04:50.114 [DEBUG] [Thread-200164] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:04:50.114 [DEBUG] [Thread-200164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:04:50.114 [DEBUG] [Thread-200164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:04:50.114 [DEBUG] [Thread-200164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:04:50.114 [DEBUG] [Thread-200164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:04:50.114 [DEBUG] [Thread-200164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:04:50.115 [DEBUG] [Thread-200164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:04:50.115 [DEBUG] [Thread-200164] [transport.py] [_log()] client lang: <none>
2025-11-25T01:04:50.115 [DEBUG] [Thread-200164] [transport.py] [_log()] server lang: <none>
2025-11-25T01:04:50.115 [DEBUG] [Thread-200164] [transport.py] [_log()] kex follows: False
2025-11-25T01:04:50.115 [DEBUG] [Thread-200164] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:04:50.116 [DEBUG] [Thread-200164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:04:50.116 [DEBUG] [Thread-200164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:04:50.116 [DEBUG] [Thread-200164] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:04:50.116 [DEBUG] [Thread-200164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:04:50.116 [DEBUG] [Thread-200164] [transport.py] [_log()] Compression: none
2025-11-25T01:04:50.116 [DEBUG] [Thread-200164] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:04:50.154 [DEBUG] [Thread-200164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:04:50.158 [DEBUG] [Thread-200164] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:04:50.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:04:50.161 [DEBUG] [Thread-200164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:04:50.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:04:50.163 [DEBUG] [Thread-200164] [transport.py] [_log()] userauth is OK
2025-11-25T01:04:50.164 [DEBUG] [Thread-200164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:04:50.164 [DEBUG] [Thread-200164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:04:50.164 [DEBUG] [Thread-200164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:04:50.164 [DEBUG] [Thread-200164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:04:50.193 [INFO] [Thread-200164] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:04:50.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:04:50.800 [DEBUG] [Thread-200164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:04:50.800 [DEBUG] [Thread-200164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:04:50.801 [DEBUG] [Thread-200164] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:04:50.841 [DEBUG] [Thread-200164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:04:50.841 [DEBUG] [Thread-200164] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:04:50.844 [DEBUG] [Thread-200164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:04:50.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:04:50.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:04:50.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:04:50.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:04:50.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:04:50.868 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:04:50.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:04:50.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:04:50.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:04:50.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.961155 -999.00  +12.90  25.32     45   +1.40 1 1 1 1 1     0    0 11.20 -13.99 ZNESW 29.5 25.3 135.6 35.5 13.1 -25.8 13.0 -25.2 12.7 -24.2 13.1 -25.0
2025-11-25T01:04:50.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:04:50.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:04:50.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.961155
2025-11-25T01:04:50.876 [DEBUG] [Thread-200164] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:04:50.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:04:50.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:04:50.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:04:50.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:04:50.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:04:50.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:04:17', tmtdew=8.7, humidity=60.52, cloud=0.0, wind=30.45, temperature=8.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:04:18', seeing=0.72, atlas_timestamp='2025-11-24T23:04:03.792', atlas_cloud=1, atlas_rain=1, zp_data=[-0.043250000000000455, -0.044749999999998735, -0.025249999999997996, -0.04300000000000104, 0.0129999999999999, 0.06375000000000064, 0.010999999999999233, -0.04974999999999952, -0.021500000000001407, -0.006999999999999673, -0.004749999999999588, -0.024499999999999744, 0.04550000000000054, 0.08274999999999899, -0.06750000000000078, -0.036000000000001364, -0.004749999999999588, -0.011499999999999844, 0.009999999999999787, -0.06025000000000169, 0.03599999999999959, 0.04174999999999862, 0.005250000000000199, -0.013249999999999318, -0.015000000000000568, -0.024499999999999744, -0.0442499999999999, 0.026500000000000412, 0.09800000000000075, 0.06150000000000233, 0.06900000000000084, -0.02549999999999919, -0.028750000000002274], zp_timestamp='2025-11-24T23:01:00')
2025-11-25T01:04:50.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:04:51.069 [DEBUG] [Thread-200167] [transport.py] [_log()] starting thread (client mode): 0xd3153550
2025-11-25T01:04:51.070 [DEBUG] [Thread-200167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:04:51.084 [DEBUG] [Thread-200167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:04:51.084 [INFO] [Thread-200167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:04:51.091 [DEBUG] [Thread-200167] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] client lang: <none>
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] server lang: <none>
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] kex follows: False
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] Compression: none
2025-11-25T01:04:51.092 [DEBUG] [Thread-200167] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:04:51.147 [DEBUG] [Thread-200167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:04:51.147 [DEBUG] [Thread-200167] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:04:51.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:04:51.147 [DEBUG] [Thread-200167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:04:51.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:04:51.204 [DEBUG] [Thread-200167] [transport.py] [_log()] userauth is OK
2025-11-25T01:04:51.204 [DEBUG] [Thread-200167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:04:51.204 [DEBUG] [Thread-200167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:04:51.204 [DEBUG] [Thread-200167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:04:51.204 [DEBUG] [Thread-200167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:04:51.220 [INFO] [Thread-200167] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:04:51.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:04:51.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:04:52.057 [DEBUG] [Thread-200167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:04:52.057 [DEBUG] [Thread-200167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:04:52.105 [DEBUG] [Thread-200167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:04:52.105 [DEBUG] [Thread-200167] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:04:52.113 [DEBUG] [Thread-200167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:04:52.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:04:52.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')
2025-11-25T01:04:52.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-11-25T01:04:52.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:04:52.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:04:52.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:04:52.148 [DEBUG] [Thread-200167] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:05:00.300 [DEBUG] [Thread-200169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:05:15.454 [DEBUG] [Thread-200170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:05:17.002 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:05:17.003 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:05:22.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:05:22.172 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:05:22.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-11-25T01:05:23.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 4, 50), 8.65, 60.56, 0.0, 28.04, 8.41, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:05:23.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:04:50
2025-11-25T01:05:23.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:05:23.787 [DEBUG] [Thread-200171] [transport.py] [_log()] starting thread (client mode): 0xc9b83340
2025-11-25T01:05:23.788 [DEBUG] [Thread-200171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:05:23.796 [DEBUG] [Thread-200171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:05:23.796 [INFO] [Thread-200171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:05:23.800 [DEBUG] [Thread-200171] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:05:23.800 [DEBUG] [Thread-200171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:05:23.800 [DEBUG] [Thread-200171] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:05:23.800 [DEBUG] [Thread-200171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] client lang: <none>
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] server lang: <none>
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] kex follows: False
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:05:23.801 [DEBUG] [Thread-200171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:05:23.802 [DEBUG] [Thread-200171] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:05:23.802 [DEBUG] [Thread-200171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:05:23.802 [DEBUG] [Thread-200171] [transport.py] [_log()] Compression: none
2025-11-25T01:05:23.802 [DEBUG] [Thread-200171] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:05:23.831 [DEBUG] [Thread-200171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:05:23.835 [DEBUG] [Thread-200171] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:05:23.836 [DEBUG] [Thread-200171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:05:23.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:05:23.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:05:23.839 [DEBUG] [Thread-200171] [transport.py] [_log()] userauth is OK
2025-11-25T01:05:23.839 [DEBUG] [Thread-200171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:05:23.839 [DEBUG] [Thread-200171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:05:23.839 [DEBUG] [Thread-200171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:05:23.839 [DEBUG] [Thread-200171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:05:23.857 [INFO] [Thread-200171] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:05:23.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:05:24.496 [DEBUG] [Thread-200171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:05:24.496 [DEBUG] [Thread-200171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:05:24.498 [DEBUG] [Thread-200171] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:05:24.537 [DEBUG] [Thread-200171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:05:24.537 [DEBUG] [Thread-200171] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:05:24.539 [DEBUG] [Thread-200171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:05:24.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:05:24.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:05:24.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:05:24.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:05:24.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:05:24.561 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:05:24.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:05:24.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:05:24.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:05:24.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.961502 -999.00  +12.90  26.74     45   +1.40 1 1 1 1 1     0    0 10.98 -14.14 ZNESW 22.1 26.7 139.6 36.3 13.1 -25.9 13.0 -25.4 12.7 -24.1 13.1 -24.9
2025-11-25T01:05:24.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:05:24.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:05:24.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.961502
2025-11-25T01:05:24.568 [DEBUG] [Thread-200171] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:05:24.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:05:24.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:05:24.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:05:24.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:05:24.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:05:24.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:04:50', tmtdew=8.65, humidity=60.56, cloud=0.0, wind=28.04, temperature=8.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:04:51', seeing=0.79, atlas_timestamp='2025-11-24T23:04:33.773', atlas_cloud=1, atlas_rain=1, zp_data=[-0.043250000000000455, -0.044749999999998735, -0.025249999999997996, -0.04300000000000104, 0.0129999999999999, 0.06375000000000064, 0.010999999999999233, -0.04974999999999952, -0.021500000000001407, -0.006999999999999673, -0.004749999999999588, -0.024499999999999744, 0.04550000000000054, 0.08274999999999899, -0.06750000000000078, -0.036000000000001364, -0.004749999999999588, -0.011499999999999844, 0.009999999999999787, -0.06025000000000169, 0.03599999999999959, 0.04174999999999862, 0.005250000000000199, -0.013249999999999318, -0.015000000000000568, -0.024499999999999744, -0.0442499999999999, 0.026500000000000412, 0.09800000000000075, 0.06150000000000233, 0.06900000000000084, -0.02549999999999919, -0.028750000000002274], zp_timestamp='2025-11-24T23:01:00')
2025-11-25T01:05:24.652 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:05:24.663 [DEBUG] [Thread-200174] [transport.py] [_log()] starting thread (client mode): 0xd07cd150
2025-11-25T01:05:24.663 [DEBUG] [Thread-200174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:05:24.677 [DEBUG] [Thread-200174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:05:24.677 [INFO] [Thread-200174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] client lang: <none>
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] server lang: <none>
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] kex follows: False
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] Compression: none
2025-11-25T01:05:24.686 [DEBUG] [Thread-200174] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:05:24.743 [DEBUG] [Thread-200174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:05:24.744 [DEBUG] [Thread-200174] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:05:24.744 [DEBUG] [Thread-200174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:05:24.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:05:24.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:05:24.800 [DEBUG] [Thread-200174] [transport.py] [_log()] userauth is OK
2025-11-25T01:05:24.800 [DEBUG] [Thread-200174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:05:24.800 [DEBUG] [Thread-200174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:05:24.800 [DEBUG] [Thread-200174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:05:24.800 [DEBUG] [Thread-200174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:05:24.816 [INFO] [Thread-200174] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:05:24.816 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:05:24.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:05:25.659 [DEBUG] [Thread-200174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:05:25.659 [DEBUG] [Thread-200174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:05:25.707 [DEBUG] [Thread-200174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:05:25.707 [DEBUG] [Thread-200174] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:05:25.715 [DEBUG] [Thread-200174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:05:25.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:05:25.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-11-25T01:05:25.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-11-25T01:05:25.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:05:25.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:05:25.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:05:25.747 [DEBUG] [Thread-200174] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:05:28.097 [DEBUG] [Thread-200176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:05:30.508 [DEBUG] [Thread-200177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:05:45.614 [DEBUG] [Thread-200178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:05:55.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:05:55.779 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:05:55.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-11-25T01:05:57.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 5, 23), 8.67, 60.51, 0.0, 28.48, 8.46, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:05:57.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:05:23
2025-11-25T01:05:57.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:05:57.676 [DEBUG] [Thread-200179] [transport.py] [_log()] starting thread (client mode): 0xd317d8a0
2025-11-25T01:05:57.677 [DEBUG] [Thread-200179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:05:57.679 [DEBUG] [Thread-200179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:05:57.679 [INFO] [Thread-200179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:05:57.686 [DEBUG] [Thread-200179] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:05:57.686 [DEBUG] [Thread-200179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:05:57.686 [DEBUG] [Thread-200179] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:05:57.686 [DEBUG] [Thread-200179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:05:57.686 [DEBUG] [Thread-200179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:05:57.686 [DEBUG] [Thread-200179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:05:57.687 [DEBUG] [Thread-200179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:05:57.687 [DEBUG] [Thread-200179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:05:57.687 [DEBUG] [Thread-200179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:05:57.687 [DEBUG] [Thread-200179] [transport.py] [_log()] client lang: <none>
2025-11-25T01:05:57.687 [DEBUG] [Thread-200179] [transport.py] [_log()] server lang: <none>
2025-11-25T01:05:57.687 [DEBUG] [Thread-200179] [transport.py] [_log()] kex follows: False
2025-11-25T01:05:57.687 [DEBUG] [Thread-200179] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:05:57.687 [DEBUG] [Thread-200179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:05:57.687 [DEBUG] [Thread-200179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:05:57.688 [DEBUG] [Thread-200179] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:05:57.688 [DEBUG] [Thread-200179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:05:57.688 [DEBUG] [Thread-200179] [transport.py] [_log()] Compression: none
2025-11-25T01:05:57.688 [DEBUG] [Thread-200179] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:05:57.720 [DEBUG] [Thread-200179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:05:57.725 [DEBUG] [Thread-200179] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:05:57.726 [DEBUG] [Thread-200179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:05:57.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:05:57.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:05:57.730 [DEBUG] [Thread-200179] [transport.py] [_log()] userauth is OK
2025-11-25T01:05:57.730 [DEBUG] [Thread-200179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:05:57.730 [DEBUG] [Thread-200179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:05:57.731 [DEBUG] [Thread-200179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:05:57.731 [DEBUG] [Thread-200179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:05:57.748 [INFO] [Thread-200179] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:05:57.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:05:58.378 [DEBUG] [Thread-200179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:05:58.378 [DEBUG] [Thread-200179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:05:58.379 [DEBUG] [Thread-200179] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:05:58.419 [DEBUG] [Thread-200179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:05:58.419 [DEBUG] [Thread-200179] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:05:58.421 [DEBUG] [Thread-200179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:05:58.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:05:58.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:05:58.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:05:58.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:05:58.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:05:58.442 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:05:58.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:05:58.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:05:58.443 [DEBUG] [Thread-200179] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:05:58.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:05:58.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.961849 -999.00  +12.90  26.46     45   +1.40 1 1 1 1 1     0    0 11.20 -13.53 ZNESW 26.9 26.5 140.8 32.4 13.2 -25.7 12.9 -25.3 12.8 -24.0 13.1 -24.6
2025-11-25T01:05:58.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:05:58.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:05:58.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.961849
2025-11-25T01:05:58.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:05:58.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:05:58.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:05:58.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:05:58.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:05:58.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:05:23', tmtdew=8.67, humidity=60.51, cloud=0.0, wind=28.48, temperature=8.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:05:23', seeing=0.76, atlas_timestamp='2025-11-24T23:05:03.754', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:04:00')
2025-11-25T01:05:58.541 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:05:58.552 [DEBUG] [Thread-200182] [transport.py] [_log()] starting thread (client mode): 0xd31f49a0
2025-11-25T01:05:58.552 [DEBUG] [Thread-200182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:05:58.567 [DEBUG] [Thread-200182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:05:58.567 [INFO] [Thread-200182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:05:58.574 [DEBUG] [Thread-200182] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:05:58.574 [DEBUG] [Thread-200182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:05:58.574 [DEBUG] [Thread-200182] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:05:58.574 [DEBUG] [Thread-200182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:05:58.574 [DEBUG] [Thread-200182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:05:58.574 [DEBUG] [Thread-200182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:05:58.574 [DEBUG] [Thread-200182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:05:58.574 [DEBUG] [Thread-200182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] client lang: <none>
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] server lang: <none>
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] kex follows: False
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] Compression: none
2025-11-25T01:05:58.575 [DEBUG] [Thread-200182] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:05:58.631 [DEBUG] [Thread-200182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:05:58.631 [DEBUG] [Thread-200182] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:05:58.632 [DEBUG] [Thread-200182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:05:58.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:05:58.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:05:58.692 [DEBUG] [Thread-200182] [transport.py] [_log()] userauth is OK
2025-11-25T01:05:58.692 [DEBUG] [Thread-200182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:05:58.692 [DEBUG] [Thread-200182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:05:58.692 [DEBUG] [Thread-200182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:05:58.692 [DEBUG] [Thread-200182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:05:58.710 [INFO] [Thread-200182] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:05:58.710 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:05:58.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:05:59.633 [DEBUG] [Thread-200182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:05:59.633 [DEBUG] [Thread-200182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:05:59.681 [DEBUG] [Thread-200182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:05:59.681 [DEBUG] [Thread-200182] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:05:59.691 [DEBUG] [Thread-200182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:05:59.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:05:59.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-11-25T01:05: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') -> 00000000
2025-11-25T01:05:59.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:05:59.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:05:59.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:05:59.730 [DEBUG] [Thread-200182] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:06:00.683 [DEBUG] [Thread-200184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:06:15.898 [DEBUG] [Thread-200185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:06:17.205 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:06:17.206 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:06:28.337 [DEBUG] [Thread-200186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:06:29.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:06:29.754 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:06:29.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-11-25T01:06:30.992 [DEBUG] [Thread-200187 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:06:31.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 5, 56), 8.73, 60.42, 0.0, 28.83, 8.43, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:06:31.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:05:56
2025-11-25T01:06:31.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:06:31.362 [DEBUG] [Thread-200188] [transport.py] [_log()] starting thread (client mode): 0xd3191870
2025-11-25T01:06:31.363 [DEBUG] [Thread-200188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:06:31.378 [DEBUG] [Thread-200188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:06:31.378 [INFO] [Thread-200188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:06:31.381 [DEBUG] [Thread-200188] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] client lang: <none>
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] server lang: <none>
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] kex follows: False
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:06:31.382 [DEBUG] [Thread-200188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:06:31.383 [DEBUG] [Thread-200188] [transport.py] [_log()] Compression: none
2025-11-25T01:06:31.383 [DEBUG] [Thread-200188] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:06:31.413 [DEBUG] [Thread-200188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:06:31.415 [DEBUG] [Thread-200188] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:06:31.416 [DEBUG] [Thread-200188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:06:31.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:06:31.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:06:31.418 [DEBUG] [Thread-200188] [transport.py] [_log()] userauth is OK
2025-11-25T01:06:31.419 [DEBUG] [Thread-200188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:06:31.419 [DEBUG] [Thread-200188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:06:31.419 [DEBUG] [Thread-200188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:06:31.419 [DEBUG] [Thread-200188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:06:31.436 [INFO] [Thread-200188] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:06:31.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:06:32.043 [DEBUG] [Thread-200188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:06:32.043 [DEBUG] [Thread-200188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:06:32.043 [DEBUG] [Thread-200188] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:06:32.084 [DEBUG] [Thread-200188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:06:32.084 [DEBUG] [Thread-200188] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:06:32.087 [DEBUG] [Thread-200188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:06:32.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:06:32.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:06:32.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:06:32.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:06:32.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:06:32.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:06:32.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:06:32.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:06:32.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:06:32.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.962197 -999.00  +12.90  26.13     45   +1.40 1 1 1 1 1     0    0 11.10 -12.54 ZNESW 25.2 26.1 143.0 34.4 13.2 -25.8 13.0 -25.1 12.8 -24.0 13.1 -24.7
2025-11-25T01:06:32.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:06:32.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:06:32.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.962197
2025-11-25T01:06:32.113 [DEBUG] [Thread-200188] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:06:32.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:06:32.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:06:32.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:06:32.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:06:32.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:06:32.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:05:56', tmtdew=8.73, humidity=60.42, cloud=0.0, wind=28.83, temperature=8.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:06:29', seeing=0.83, atlas_timestamp='2025-11-24T23:05:33.821', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:04:00')
2025-11-25T01:06:32.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:06:32.215 [DEBUG] [Thread-200191] [transport.py] [_log()] starting thread (client mode): 0xd07cdc00
2025-11-25T01:06:32.216 [DEBUG] [Thread-200191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:06:32.235 [DEBUG] [Thread-200191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:06:32.235 [INFO] [Thread-200191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] client lang: <none>
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] server lang: <none>
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] kex follows: False
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] Compression: none
2025-11-25T01:06:32.245 [DEBUG] [Thread-200191] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:06:32.306 [DEBUG] [Thread-200191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:06:32.306 [DEBUG] [Thread-200191] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:06:32.306 [DEBUG] [Thread-200191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:06:32.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:06:32.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:06:32.372 [DEBUG] [Thread-200191] [transport.py] [_log()] userauth is OK
2025-11-25T01:06:32.372 [DEBUG] [Thread-200191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:06:32.372 [DEBUG] [Thread-200191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:06:32.372 [DEBUG] [Thread-200191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:06:32.372 [DEBUG] [Thread-200191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:06:32.392 [INFO] [Thread-200191] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:06:32.392 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:06:32.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:06:33.269 [DEBUG] [Thread-200191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:06:33.269 [DEBUG] [Thread-200191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:06:33.317 [DEBUG] [Thread-200191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:06:33.317 [DEBUG] [Thread-200191] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:06:33.325 [DEBUG] [Thread-200191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:06:33.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:06:33.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-11-25T01:06:33.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-11-25T01:06:33.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:06:33.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:06:33.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:06:33.359 [DEBUG] [Thread-200191] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:06:46.068 [DEBUG] [Thread-200193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:07:01.219 [DEBUG] [Thread-200194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:07:03.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:07:03.368 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:07:03.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-11-25T01:07:04.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 6, 29), 13.19, 40.38, 0.0, 30.21, 12.95, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:07:04.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:06:29
2025-11-25T01:07:04.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:07:04.813 [DEBUG] [Thread-200195] [transport.py] [_log()] starting thread (client mode): 0xc9b82590
2025-11-25T01:07:04.814 [DEBUG] [Thread-200195] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:07:04.826 [DEBUG] [Thread-200195] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:07:04.827 [INFO] [Thread-200195] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:07:04.832 [DEBUG] [Thread-200195] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:07:04.832 [DEBUG] [Thread-200195] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:07:04.832 [DEBUG] [Thread-200195] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:07:04.832 [DEBUG] [Thread-200195] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:07:04.832 [DEBUG] [Thread-200195] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] client lang: <none>
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] server lang: <none>
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] kex follows: False
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:07:04.833 [DEBUG] [Thread-200195] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:07:04.834 [DEBUG] [Thread-200195] [transport.py] [_log()] Compression: none
2025-11-25T01:07:04.834 [DEBUG] [Thread-200195] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:07:04.867 [DEBUG] [Thread-200195] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:07:04.870 [DEBUG] [Thread-200195] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:07:04.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:07:04.873 [DEBUG] [Thread-200195] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:07:04.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:07:04.875 [DEBUG] [Thread-200195] [transport.py] [_log()] userauth is OK
2025-11-25T01:07:04.875 [DEBUG] [Thread-200195] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:07:04.875 [DEBUG] [Thread-200195] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:07:04.875 [DEBUG] [Thread-200195] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:07:04.875 [DEBUG] [Thread-200195] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:07:04.906 [INFO] [Thread-200195] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:07:04.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:07:05.560 [DEBUG] [Thread-200195] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:07:05.560 [DEBUG] [Thread-200195] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:07:05.562 [DEBUG] [Thread-200195] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:07:05.601 [DEBUG] [Thread-200195] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:07:05.602 [DEBUG] [Thread-200195] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:07:05.605 [DEBUG] [Thread-200195] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:07:05.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:07:05.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:07:05.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:07:05.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:07:05.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:07:05.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:07:05.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:07:05.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:07:05.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:07:05.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.962543 -999.00  +12.90  27.04     45   +1.40 1 1 1 1 1     0    0 11.01 -12.41 ZNESW 28.0 27.0 146.2 35.5 13.2 -25.7 13.0 -25.1 12.8 -24.1 13.1 -24.9
2025-11-25T01:07:05.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:07:05.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:07:05.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.962543
2025-11-25T01:07:05.640 [DEBUG] [Thread-200195] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:07:05.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:07:05.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:07:05.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:07:05.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:07:05.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:07:05.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:06:29', tmtdew=13.19, humidity=40.38, cloud=0.0, wind=30.21, temperature=12.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:07:02', seeing=0.83, atlas_timestamp='2025-11-24T23:06:03.715', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:04:00')
2025-11-25T01:07:05.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:07:05.754 [DEBUG] [Thread-200198] [transport.py] [_log()] starting thread (client mode): 0xd0739570
2025-11-25T01:07:05.754 [DEBUG] [Thread-200198] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:07:05.771 [DEBUG] [Thread-200198] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:07:05.771 [INFO] [Thread-200198] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:07:05.778 [DEBUG] [Thread-200198] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] client lang: <none>
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] server lang: <none>
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] kex follows: False
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:07:05.779 [DEBUG] [Thread-200198] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:07:05.780 [DEBUG] [Thread-200198] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:07:05.780 [DEBUG] [Thread-200198] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:07:05.780 [DEBUG] [Thread-200198] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:07:05.780 [DEBUG] [Thread-200198] [transport.py] [_log()] Compression: none
2025-11-25T01:07:05.780 [DEBUG] [Thread-200198] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:07:05.842 [DEBUG] [Thread-200198] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:07:05.843 [DEBUG] [Thread-200198] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:07:05.843 [DEBUG] [Thread-200198] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:07:05.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:07:05.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:07:05.900 [DEBUG] [Thread-200198] [transport.py] [_log()] userauth is OK
2025-11-25T01:07:05.900 [DEBUG] [Thread-200198] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:07:05.901 [DEBUG] [Thread-200198] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:07:05.901 [DEBUG] [Thread-200198] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:07:05.901 [DEBUG] [Thread-200198] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:07:05.917 [INFO] [Thread-200198] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:07:05.917 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:07:05.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:07:06.840 [DEBUG] [Thread-200198] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:07:06.840 [DEBUG] [Thread-200198] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:07:06.888 [DEBUG] [Thread-200198] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:07:06.888 [DEBUG] [Thread-200198] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:07:06.897 [DEBUG] [Thread-200198] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:07:06.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:07:06.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-11-25T01:07:06.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-11-25T01:07:06.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:07:06.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:07:06.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:07:06.935 [DEBUG] [Thread-200198] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:07:16.305 [DEBUG] [Thread-200200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:07:17.408 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:07:17.410 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:07:28.595 [DEBUG] [Thread-200201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:07:31.424 [DEBUG] [Thread-200202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:07:36.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:07:36.957 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:07:36.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-11-25T01:07:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 7, 2), 13.18, 40.43, 0.0, 28.21, 13.0, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:07:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:07:02
2025-11-25T01:07:38.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:07:38.361 [DEBUG] [Thread-200203] [transport.py] [_log()] starting thread (client mode): 0xd07397b0
2025-11-25T01:07:38.363 [DEBUG] [Thread-200203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:07:38.373 [DEBUG] [Thread-200203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:07:38.373 [INFO] [Thread-200203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:07:38.378 [DEBUG] [Thread-200203] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:07:38.378 [DEBUG] [Thread-200203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:07:38.378 [DEBUG] [Thread-200203] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:07:38.378 [DEBUG] [Thread-200203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:07:38.378 [DEBUG] [Thread-200203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:07:38.378 [DEBUG] [Thread-200203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:07:38.378 [DEBUG] [Thread-200203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:07:38.378 [DEBUG] [Thread-200203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:07:38.378 [DEBUG] [Thread-200203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:07:38.378 [DEBUG] [Thread-200203] [transport.py] [_log()] client lang: <none>
2025-11-25T01:07:38.379 [DEBUG] [Thread-200203] [transport.py] [_log()] server lang: <none>
2025-11-25T01:07:38.379 [DEBUG] [Thread-200203] [transport.py] [_log()] kex follows: False
2025-11-25T01:07:38.379 [DEBUG] [Thread-200203] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:07:38.379 [DEBUG] [Thread-200203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:07:38.379 [DEBUG] [Thread-200203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:07:38.379 [DEBUG] [Thread-200203] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:07:38.379 [DEBUG] [Thread-200203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:07:38.379 [DEBUG] [Thread-200203] [transport.py] [_log()] Compression: none
2025-11-25T01:07:38.379 [DEBUG] [Thread-200203] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:07:38.410 [DEBUG] [Thread-200203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:07:38.413 [DEBUG] [Thread-200203] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:07:38.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:07:38.416 [DEBUG] [Thread-200203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:07:38.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:07:38.418 [DEBUG] [Thread-200203] [transport.py] [_log()] userauth is OK
2025-11-25T01:07:38.419 [DEBUG] [Thread-200203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:07:38.419 [DEBUG] [Thread-200203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:07:38.419 [DEBUG] [Thread-200203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:07:38.419 [DEBUG] [Thread-200203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:07:38.436 [INFO] [Thread-200203] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:07:38.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:07:39.069 [DEBUG] [Thread-200203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:07:39.070 [DEBUG] [Thread-200203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:07:39.071 [DEBUG] [Thread-200203] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:07:39.110 [DEBUG] [Thread-200203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:07:39.110 [DEBUG] [Thread-200203] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:07:39.112 [DEBUG] [Thread-200203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:07:39.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:07:39.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:07:39.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:07:39.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:07:39.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:07:39.134 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:07:39.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:07:39.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:07:39.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:07:39.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.963238 -999.00  +12.80  25.06     45   +1.20 1 1 1 1 1     0    0 11.10 -9.58 ZNESW 24.3 25.1 146.0 32.2 13.1 -25.8 12.9 -25.1 12.7 -24.0 13.0 -24.7
2025-11-25T01:07:39.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:07:39.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:07:39.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.963238
2025-11-25T01:07:39.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:07:39.152 [DEBUG] [Thread-200203] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:07:39.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:07:39.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:07:39.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:07:39.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:07:39.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:07:02', tmtdew=13.18, humidity=40.43, cloud=0.0, wind=28.21, temperature=13.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:07:35', seeing=0.83, atlas_timestamp='2025-11-24T23:07:03.763', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:04:00')
2025-11-25T01:07:39.226 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:07:39.239 [DEBUG] [Thread-200206] [transport.py] [_log()] starting thread (client mode): 0xd073b280
2025-11-25T01:07:39.239 [DEBUG] [Thread-200206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:07:39.254 [DEBUG] [Thread-200206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:07:39.254 [INFO] [Thread-200206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] client lang: <none>
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] server lang: <none>
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] kex follows: False
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:07:39.262 [DEBUG] [Thread-200206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:07:39.263 [DEBUG] [Thread-200206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:07:39.263 [DEBUG] [Thread-200206] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:07:39.263 [DEBUG] [Thread-200206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:07:39.263 [DEBUG] [Thread-200206] [transport.py] [_log()] Compression: none
2025-11-25T01:07:39.263 [DEBUG] [Thread-200206] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:07:39.322 [DEBUG] [Thread-200206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:07:39.323 [DEBUG] [Thread-200206] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:07:39.323 [DEBUG] [Thread-200206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:07:39.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:07:39.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:07:39.381 [DEBUG] [Thread-200206] [transport.py] [_log()] userauth is OK
2025-11-25T01:07:39.382 [DEBUG] [Thread-200206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:07:39.382 [DEBUG] [Thread-200206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:07:39.382 [DEBUG] [Thread-200206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:07:39.382 [DEBUG] [Thread-200206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:07:39.401 [INFO] [Thread-200206] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:07:39.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:07:39.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:07:40.260 [DEBUG] [Thread-200206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:07:40.260 [DEBUG] [Thread-200206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:07:40.308 [DEBUG] [Thread-200206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:07:40.309 [DEBUG] [Thread-200206] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:07:40.318 [DEBUG] [Thread-200206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:07:40.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:07:40.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-11-25T01:07:40.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-11-25T01:07:40.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:07:40.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:07:40.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:07:40.356 [DEBUG] [Thread-200206] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:07:46.494 [DEBUG] [Thread-200208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:08:01.645 [DEBUG] [Thread-200209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:08:10.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:08:10.364 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:08:10.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-11-25T01:08:11.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 7, 35), 13.32, 39.91, 0.0, 31.69, 12.93, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:08:11.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:07:35
2025-11-25T01:08:11.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:08:11.659 [DEBUG] [Thread-200210] [transport.py] [_log()] starting thread (client mode): 0xc9b826b0
2025-11-25T01:08:11.660 [DEBUG] [Thread-200210] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:08:11.673 [DEBUG] [Thread-200210] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:08:11.674 [INFO] [Thread-200210] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] client lang: <none>
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] server lang: <none>
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] kex follows: False
2025-11-25T01:08:11.679 [DEBUG] [Thread-200210] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:08:11.680 [DEBUG] [Thread-200210] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:08:11.680 [DEBUG] [Thread-200210] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:08:11.680 [DEBUG] [Thread-200210] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:08:11.680 [DEBUG] [Thread-200210] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:08:11.680 [DEBUG] [Thread-200210] [transport.py] [_log()] Compression: none
2025-11-25T01:08:11.680 [DEBUG] [Thread-200210] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:08:11.711 [DEBUG] [Thread-200210] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:08:11.714 [DEBUG] [Thread-200210] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:08:11.715 [DEBUG] [Thread-200210] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:08:11.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:08:11.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:08:11.719 [DEBUG] [Thread-200210] [transport.py] [_log()] userauth is OK
2025-11-25T01:08:11.719 [DEBUG] [Thread-200210] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:08:11.719 [DEBUG] [Thread-200210] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:08:11.719 [DEBUG] [Thread-200210] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:08:11.719 [DEBUG] [Thread-200210] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:08:11.737 [INFO] [Thread-200210] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:08:11.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:08:12.362 [DEBUG] [Thread-200210] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:08:12.362 [DEBUG] [Thread-200210] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:08:12.362 [DEBUG] [Thread-200210] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:08:12.403 [DEBUG] [Thread-200210] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:08:12.403 [DEBUG] [Thread-200210] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:08:12.405 [DEBUG] [Thread-200210] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:08:12.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:08:12.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:08:12.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:08:12.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:08:12.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:08:12.427 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:08:12.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:08:12.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:08:12.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:08:12.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.963585 -999.00  +12.90  23.05     45   +1.20 1 1 1 1 1     0    0 11.08 -7.90 ZNESW 23.8 23.1 142.0 29.1 13.1 -25.8 12.9 -25.1 12.7 -24.0 13.1 -24.9
2025-11-25T01:08:12.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:08:12.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:08:12.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.963585
2025-11-25T01:08:12.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:08:12.433 [DEBUG] [Thread-200210] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:08:12.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:08:12.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:08:12.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:08:12.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:08:12.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:07:35', tmtdew=13.32, humidity=39.91, cloud=0.0, wind=31.69, temperature=12.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:08:08', seeing=0.86, atlas_timestamp='2025-11-24T23:07:33.744', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:04:00')
2025-11-25T01:08:12.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:08:12.523 [DEBUG] [Thread-200213] [transport.py] [_log()] starting thread (client mode): 0xd3149ae0
2025-11-25T01:08:12.523 [DEBUG] [Thread-200213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:08:12.539 [DEBUG] [Thread-200213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:08:12.539 [INFO] [Thread-200213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] client lang: <none>
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] server lang: <none>
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] kex follows: False
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] Compression: none
2025-11-25T01:08:12.547 [DEBUG] [Thread-200213] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:08:12.603 [DEBUG] [Thread-200213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:08:12.604 [DEBUG] [Thread-200213] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:08:12.604 [DEBUG] [Thread-200213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:08:12.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:08:12.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:08:12.660 [DEBUG] [Thread-200213] [transport.py] [_log()] userauth is OK
2025-11-25T01:08:12.660 [DEBUG] [Thread-200213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:08:12.660 [DEBUG] [Thread-200213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:08:12.660 [DEBUG] [Thread-200213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:08:12.660 [DEBUG] [Thread-200213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:08:12.674 [INFO] [Thread-200213] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:08:12.674 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:08:12.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:08:13.517 [DEBUG] [Thread-200213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:08:13.517 [DEBUG] [Thread-200213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:08:13.565 [DEBUG] [Thread-200213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:08:13.565 [DEBUG] [Thread-200213] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:08:13.574 [DEBUG] [Thread-200213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:08:13.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:08:13.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-11-25T01:08:13.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-11-25T01:08:13.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:08:13.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:08:13.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:08:13.608 [DEBUG] [Thread-200213] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:08:16.708 [DEBUG] [Thread-200215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:08:17.621 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:08:17.622 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:08:28.837 [DEBUG] [Thread-200216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:08:30.837 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:08:31.832 [DEBUG] [Thread-200217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:08:43.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:08:43.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:08:43.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-11-25T01:08:44.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 8, 8), 13.32, 39.93, 0.0, 30.75, 12.95, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:08:44.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:08:08
2025-11-25T01:08:44.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:08:44.934 [DEBUG] [Thread-200218] [transport.py] [_log()] starting thread (client mode): 0xd073a2f0
2025-11-25T01:08:44.934 [DEBUG] [Thread-200218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:08:44.943 [DEBUG] [Thread-200218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:08:44.943 [INFO] [Thread-200218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:08:44.949 [DEBUG] [Thread-200218] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] client lang: <none>
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] server lang: <none>
2025-11-25T01:08:44.950 [DEBUG] [Thread-200218] [transport.py] [_log()] kex follows: False
2025-11-25T01:08:44.951 [DEBUG] [Thread-200218] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:08:44.951 [DEBUG] [Thread-200218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:08:44.951 [DEBUG] [Thread-200218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:08:44.952 [DEBUG] [Thread-200218] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:08:44.952 [DEBUG] [Thread-200218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:08:44.952 [DEBUG] [Thread-200218] [transport.py] [_log()] Compression: none
2025-11-25T01:08:44.952 [DEBUG] [Thread-200218] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:08:44.988 [DEBUG] [Thread-200218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:08:44.992 [DEBUG] [Thread-200218] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:08:44.994 [DEBUG] [Thread-200218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:08:44.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:08:44.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:08:45.000 [DEBUG] [Thread-200218] [transport.py] [_log()] userauth is OK
2025-11-25T01:08:45.000 [DEBUG] [Thread-200218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:08:45.000 [DEBUG] [Thread-200218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:08:45.001 [DEBUG] [Thread-200218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:08:45.001 [DEBUG] [Thread-200218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:08:45.028 [INFO] [Thread-200218] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:08:45.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:08:45.660 [DEBUG] [Thread-200218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:08:45.660 [DEBUG] [Thread-200218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:08:45.662 [DEBUG] [Thread-200218] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:08:45.702 [DEBUG] [Thread-200218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:08:45.702 [DEBUG] [Thread-200218] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:08:45.706 [DEBUG] [Thread-200218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:08:45.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:08:45.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:08:45.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:08:45.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:08:45.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:08:45.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:08:45.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:08:45.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:08:45.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:08:45.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.963932 -999.00  +12.90  20.77     45   +1.30 1 1 1 1 1     0    0 11.41 -5.45 ZNESW 24.1 20.8 152.0 34.2 13.1 -25.8 12.9 -25.2 12.8 -23.9 13.1 -24.8
2025-11-25T01:08:45.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:08:45.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:08:45.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.963932
2025-11-25T01:08:45.741 [DEBUG] [Thread-200218] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:08:45.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:08:45.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:08:45.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:08:45.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:08:45.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:08:45.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:08:08', tmtdew=13.32, humidity=39.93, cloud=0.0, wind=30.75, temperature=12.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:08:41', seeing=0.76, atlas_timestamp='2025-11-24T23:08:03.725', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:04:00')
2025-11-25T01:08:45.842 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:08:45.854 [DEBUG] [Thread-200221] [transport.py] [_log()] starting thread (client mode): 0xd073b370
2025-11-25T01:08:45.854 [DEBUG] [Thread-200221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:08:45.869 [DEBUG] [Thread-200221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:08:45.869 [INFO] [Thread-200221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:08:45.876 [DEBUG] [Thread-200221] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:08:45.876 [DEBUG] [Thread-200221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:08:45.876 [DEBUG] [Thread-200221] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:08:45.877 [DEBUG] [Thread-200221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:08:45.877 [DEBUG] [Thread-200221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:08:45.877 [DEBUG] [Thread-200221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:08:45.877 [DEBUG] [Thread-200221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:08:45.877 [DEBUG] [Thread-200221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:08:45.877 [DEBUG] [Thread-200221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:08:45.877 [DEBUG] [Thread-200221] [transport.py] [_log()] client lang: <none>
2025-11-25T01:08:45.877 [DEBUG] [Thread-200221] [transport.py] [_log()] server lang: <none>
2025-11-25T01:08:45.877 [DEBUG] [Thread-200221] [transport.py] [_log()] kex follows: False
2025-11-25T01:08:45.878 [DEBUG] [Thread-200221] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:08:45.878 [DEBUG] [Thread-200221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:08:45.878 [DEBUG] [Thread-200221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:08:45.878 [DEBUG] [Thread-200221] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:08:45.878 [DEBUG] [Thread-200221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:08:45.879 [DEBUG] [Thread-200221] [transport.py] [_log()] Compression: none
2025-11-25T01:08:45.879 [DEBUG] [Thread-200221] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:08:45.937 [DEBUG] [Thread-200221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:08:45.937 [DEBUG] [Thread-200221] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:08:45.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:08:45.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:08:45.939 [DEBUG] [Thread-200221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:08:45.996 [DEBUG] [Thread-200221] [transport.py] [_log()] userauth is OK
2025-11-25T01:08:45.996 [DEBUG] [Thread-200221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:08:45.997 [DEBUG] [Thread-200221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:08:45.997 [DEBUG] [Thread-200221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:08:45.997 [DEBUG] [Thread-200221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:08:46.023 [INFO] [Thread-200221] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:08:46.023 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:08:46.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:08:46.879 [DEBUG] [Thread-200223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:08:46.958 [DEBUG] [Thread-200221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:08:46.958 [DEBUG] [Thread-200221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:08:47.005 [DEBUG] [Thread-200221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:08:47.005 [DEBUG] [Thread-200221] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:08:47.017 [DEBUG] [Thread-200221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:08:47.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:08:47.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-11-25T01:08:47.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:08:47.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:08:47.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:08:47.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:08:47.061 [DEBUG] [Thread-200221] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:09:01.995 [DEBUG] [Thread-200224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:09:17.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:09:17.101 [DEBUG] [Thread-200225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:09:17.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:09:17.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-11-25T01:09:17.827 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:09:17.829 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:09:17.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 8, 41), 13.42, 39.64, 0.0, 28.76, 13.0, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:09:17.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:08:41
2025-11-25T01:09:18.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:09:18.322 [DEBUG] [Thread-200226] [transport.py] [_log()] starting thread (client mode): 0xd0738df0
2025-11-25T01:09:18.323 [DEBUG] [Thread-200226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:09:18.330 [DEBUG] [Thread-200226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:09:18.330 [INFO] [Thread-200226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:09:18.335 [DEBUG] [Thread-200226] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:09:18.335 [DEBUG] [Thread-200226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:09:18.335 [DEBUG] [Thread-200226] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:09:18.335 [DEBUG] [Thread-200226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:09:18.335 [DEBUG] [Thread-200226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:09:18.335 [DEBUG] [Thread-200226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:09:18.335 [DEBUG] [Thread-200226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:09:18.335 [DEBUG] [Thread-200226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:09:18.336 [DEBUG] [Thread-200226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:09:18.336 [DEBUG] [Thread-200226] [transport.py] [_log()] client lang: <none>
2025-11-25T01:09:18.336 [DEBUG] [Thread-200226] [transport.py] [_log()] server lang: <none>
2025-11-25T01:09:18.336 [DEBUG] [Thread-200226] [transport.py] [_log()] kex follows: False
2025-11-25T01:09:18.336 [DEBUG] [Thread-200226] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:09:18.336 [DEBUG] [Thread-200226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:09:18.336 [DEBUG] [Thread-200226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:09:18.337 [DEBUG] [Thread-200226] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:09:18.337 [DEBUG] [Thread-200226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:09:18.337 [DEBUG] [Thread-200226] [transport.py] [_log()] Compression: none
2025-11-25T01:09:18.337 [DEBUG] [Thread-200226] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:09:18.373 [DEBUG] [Thread-200226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:09:18.377 [DEBUG] [Thread-200226] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:09:18.379 [DEBUG] [Thread-200226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:09:18.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:09:18.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:09:18.384 [DEBUG] [Thread-200226] [transport.py] [_log()] userauth is OK
2025-11-25T01:09:18.385 [DEBUG] [Thread-200226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:09:18.385 [DEBUG] [Thread-200226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:09:18.385 [DEBUG] [Thread-200226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:09:18.385 [DEBUG] [Thread-200226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:09:18.412 [INFO] [Thread-200226] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:09:18.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:09:19.061 [DEBUG] [Thread-200226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:09:19.061 [DEBUG] [Thread-200226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:09:19.071 [DEBUG] [Thread-200226] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:09:19.102 [DEBUG] [Thread-200226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:09:19.102 [DEBUG] [Thread-200226] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:09:19.106 [DEBUG] [Thread-200226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:09:19.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:09:19.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:09:19.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:09:19.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:09:19.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:09:19.133 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:09:19.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:09:19.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:09:19.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:09:19.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.964279 -999.00  +12.90  27.37     45   +1.40 1 1 1 1 1     0    0 11.68 -4.02 ZNESW 23.8 27.4 142.4 34.0 13.1 -25.6 13.0 -25.2 12.7 -24.1 13.1 -24.6
2025-11-25T01:09:19.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:09:19.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:09:19.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.964279
2025-11-25T01:09:19.141 [DEBUG] [Thread-200226] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:09:19.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:09:19.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:09:19.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:09:19.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:09:19.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:09:19.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:08:41', tmtdew=13.42, humidity=39.64, cloud=0.0, wind=28.76, temperature=13.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:09:14', seeing=0.8, atlas_timestamp='2025-11-24T23:08:33.706', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:07:00')
2025-11-25T01:09:19.243 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:09:19.253 [DEBUG] [Thread-200229] [transport.py] [_log()] starting thread (client mode): 0xd0739300
2025-11-25T01:09:19.253 [DEBUG] [Thread-200229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:09:19.266 [DEBUG] [Thread-200229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:09:19.267 [INFO] [Thread-200229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] client lang: <none>
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] server lang: <none>
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] kex follows: False
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] Compression: none
2025-11-25T01:09:19.274 [DEBUG] [Thread-200229] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:09:19.333 [DEBUG] [Thread-200229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:09:19.333 [DEBUG] [Thread-200229] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:09:19.333 [DEBUG] [Thread-200229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:09:19.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:09:19.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:09:19.393 [DEBUG] [Thread-200229] [transport.py] [_log()] userauth is OK
2025-11-25T01:09:19.393 [DEBUG] [Thread-200229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:09:19.393 [DEBUG] [Thread-200229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:09:19.393 [DEBUG] [Thread-200229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:09:19.393 [DEBUG] [Thread-200229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:09:19.416 [INFO] [Thread-200229] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:09:19.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:09:19.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:09:20.249 [DEBUG] [Thread-200229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:09:20.249 [DEBUG] [Thread-200229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:09:20.303 [DEBUG] [Thread-200229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:09:20.303 [DEBUG] [Thread-200229] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:09:20.316 [DEBUG] [Thread-200229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:09:20.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:09:20.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:09:20.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:09:20.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:09:20.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:09:20.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:09:20.374 [DEBUG] [Thread-200229] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:09:29.157 [DEBUG] [Thread-200231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:09:32.173 [DEBUG] [Thread-200232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:09:41.048 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:09:44.235 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:09:47.290 [DEBUG] [Thread-200233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:09:49.307 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:09:50.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:09:50.371 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:09:50.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-11-25T01:09:51.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 9, 14), 13.36, 39.83, 0.0, 29.4, 13.05, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:09:51.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:09:14
2025-11-25T01:09:51.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:09:51.555 [DEBUG] [Thread-200234] [transport.py] [_log()] starting thread (client mode): 0xd07ceb60
2025-11-25T01:09:51.555 [DEBUG] [Thread-200234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:09:51.567 [DEBUG] [Thread-200234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:09:51.567 [INFO] [Thread-200234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] client lang: <none>
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] server lang: <none>
2025-11-25T01:09:51.573 [DEBUG] [Thread-200234] [transport.py] [_log()] kex follows: False
2025-11-25T01:09:51.574 [DEBUG] [Thread-200234] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:09:51.574 [DEBUG] [Thread-200234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:09:51.574 [DEBUG] [Thread-200234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:09:51.575 [DEBUG] [Thread-200234] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:09:51.575 [DEBUG] [Thread-200234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:09:51.575 [DEBUG] [Thread-200234] [transport.py] [_log()] Compression: none
2025-11-25T01:09:51.575 [DEBUG] [Thread-200234] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:09:51.608 [DEBUG] [Thread-200234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:09:51.612 [DEBUG] [Thread-200234] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:09:51.613 [DEBUG] [Thread-200234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:09:51.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:09:51.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:09:51.617 [DEBUG] [Thread-200234] [transport.py] [_log()] userauth is OK
2025-11-25T01:09:51.618 [DEBUG] [Thread-200234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:09:51.618 [DEBUG] [Thread-200234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:09:51.618 [DEBUG] [Thread-200234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:09:51.618 [DEBUG] [Thread-200234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:09:51.636 [INFO] [Thread-200234] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:09:51.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:09:52.269 [DEBUG] [Thread-200234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:09:52.269 [DEBUG] [Thread-200234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:09:52.273 [DEBUG] [Thread-200234] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:09:52.310 [DEBUG] [Thread-200234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:09:52.310 [DEBUG] [Thread-200234] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:09:52.314 [DEBUG] [Thread-200234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:09:52.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:09:52.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:09:52.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:09:52.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:09:52.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:09:52.343 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:09:52.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:09:52.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:09:52.345 [DEBUG] [Thread-200234] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:09:52.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:09:52.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.964627 -999.00  +12.90  28.81     45   +1.30 1 1 1 1 1     0    0 11.42 -2.33 ZNESW 28.1 28.8 143.0 34.1 13.1 -25.8 13.0 -25.2 12.8 -24.0 13.0 -24.8
2025-11-25T01:09:52.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:09:52.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:09:52.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.964627
2025-11-25T01:09:52.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:09:52.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:09:52.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:09:52.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:09:52.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:09:52.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:09:14', tmtdew=13.36, humidity=39.83, cloud=0.0, wind=29.4, temperature=13.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:09:47', seeing=0.9, atlas_timestamp='2025-11-24T23:09:03.773', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:07:00')
2025-11-25T01:09:52.449 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:09:52.461 [DEBUG] [Thread-200237] [transport.py] [_log()] starting thread (client mode): 0xd31495d0
2025-11-25T01:09:52.461 [DEBUG] [Thread-200237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:09:52.477 [DEBUG] [Thread-200237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:09:52.477 [INFO] [Thread-200237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:09:52.486 [DEBUG] [Thread-200237] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:09:52.486 [DEBUG] [Thread-200237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:09:52.486 [DEBUG] [Thread-200237] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:09:52.487 [DEBUG] [Thread-200237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:09:52.487 [DEBUG] [Thread-200237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:09:52.487 [DEBUG] [Thread-200237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:09:52.487 [DEBUG] [Thread-200237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:09:52.487 [DEBUG] [Thread-200237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:09:52.487 [DEBUG] [Thread-200237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:09:52.487 [DEBUG] [Thread-200237] [transport.py] [_log()] client lang: <none>
2025-11-25T01:09:52.487 [DEBUG] [Thread-200237] [transport.py] [_log()] server lang: <none>
2025-11-25T01:09:52.487 [DEBUG] [Thread-200237] [transport.py] [_log()] kex follows: False
2025-11-25T01:09:52.488 [DEBUG] [Thread-200237] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:09:52.488 [DEBUG] [Thread-200237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:09:52.488 [DEBUG] [Thread-200237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:09:52.488 [DEBUG] [Thread-200237] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:09:52.488 [DEBUG] [Thread-200237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:09:52.488 [DEBUG] [Thread-200237] [transport.py] [_log()] Compression: none
2025-11-25T01:09:52.488 [DEBUG] [Thread-200237] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:09:52.546 [DEBUG] [Thread-200237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:09:52.547 [DEBUG] [Thread-200237] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:09:52.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:09:52.548 [DEBUG] [Thread-200237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:09:52.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:09:52.605 [DEBUG] [Thread-200237] [transport.py] [_log()] userauth is OK
2025-11-25T01:09:52.605 [DEBUG] [Thread-200237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:09:52.605 [DEBUG] [Thread-200237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:09:52.605 [DEBUG] [Thread-200237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:09:52.606 [DEBUG] [Thread-200237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:09:52.625 [INFO] [Thread-200237] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:09:52.625 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:09:52.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:09:53.470 [DEBUG] [Thread-200237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:09:53.470 [DEBUG] [Thread-200237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:09:53.519 [DEBUG] [Thread-200237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:09:53.519 [DEBUG] [Thread-200237] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:09:53.529 [DEBUG] [Thread-200237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:09:53.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:09:53.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-11-25T01:09:53.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-11-25T01:09:53.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:09:53.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:09:53.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:09:53.569 [DEBUG] [Thread-200237] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:09:55.700 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:02.340 [DEBUG] [Thread-200239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:14.096 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:17.487 [DEBUG] [Thread-200240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:18.031 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:18.032 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:18.512 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:23.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:10:23.600 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:10:23.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-11-25T01:10:24.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 9, 47), 13.38, 39.91, 0.0, 28.97, 12.98, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:10:24.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:09:47
2025-11-25T01:10:24.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:10:24.912 [DEBUG] [Thread-200241] [transport.py] [_log()] starting thread (client mode): 0xd31493f0
2025-11-25T01:10:24.913 [DEBUG] [Thread-200241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:10:24.922 [DEBUG] [Thread-200241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:10:24.922 [INFO] [Thread-200241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:10:24.928 [DEBUG] [Thread-200241] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] client lang: <none>
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] server lang: <none>
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] kex follows: False
2025-11-25T01:10:24.929 [DEBUG] [Thread-200241] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:10:24.930 [DEBUG] [Thread-200241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:10:24.930 [DEBUG] [Thread-200241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:10:24.931 [DEBUG] [Thread-200241] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:10:24.931 [DEBUG] [Thread-200241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:10:24.931 [DEBUG] [Thread-200241] [transport.py] [_log()] Compression: none
2025-11-25T01:10:24.931 [DEBUG] [Thread-200241] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:10:24.972 [DEBUG] [Thread-200241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:10:24.977 [DEBUG] [Thread-200241] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:10:24.979 [DEBUG] [Thread-200241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:10:24.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:10:24.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:10:24.984 [DEBUG] [Thread-200241] [transport.py] [_log()] userauth is OK
2025-11-25T01:10:24.985 [DEBUG] [Thread-200241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:10:24.985 [DEBUG] [Thread-200241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:10:24.985 [DEBUG] [Thread-200241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:10:24.985 [DEBUG] [Thread-200241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:10:25.024 [INFO] [Thread-200241] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:10:25.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:10:25.659 [DEBUG] [Thread-200241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:10:25.660 [DEBUG] [Thread-200241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:10:25.661 [DEBUG] [Thread-200241] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:10:25.701 [DEBUG] [Thread-200241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:10:25.701 [DEBUG] [Thread-200241] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:10:25.705 [DEBUG] [Thread-200241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:10:25.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:10:25.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:10:25.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:10:25.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:10:25.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:10:25.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:10:25.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:10:25.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:10:25.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:10:25.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.964974 -999.00  +12.90  23.82     45   +1.20 1 1 1 1 1     0    0 11.13 -0.50 ZNESW 23.6 23.8 148.0 31.0 13.2 -25.8 13.0 -25.1 12.8 -23.8 13.1 -24.8
2025-11-25T01:10:25.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:10:25.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:10:25.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.964974
2025-11-25T01:10:25.741 [DEBUG] [Thread-200241] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:10:25.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:10:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:10:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:10:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:10:25.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:10:25.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:09:47', tmtdew=13.38, humidity=39.91, cloud=0.0, wind=28.97, temperature=12.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:10:20', seeing=0.73, atlas_timestamp='2025-11-24T23:09:33.754', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:07:00')
2025-11-25T01:10:25.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:10:25.852 [DEBUG] [Thread-200244] [transport.py] [_log()] starting thread (client mode): 0xd073b280
2025-11-25T01:10:25.852 [DEBUG] [Thread-200244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:10:25.871 [DEBUG] [Thread-200244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:10:25.871 [INFO] [Thread-200244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:10:25.878 [DEBUG] [Thread-200244] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:10:25.878 [DEBUG] [Thread-200244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:10:25.878 [DEBUG] [Thread-200244] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:10:25.878 [DEBUG] [Thread-200244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:10:25.878 [DEBUG] [Thread-200244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:10:25.878 [DEBUG] [Thread-200244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:10:25.878 [DEBUG] [Thread-200244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:10:25.878 [DEBUG] [Thread-200244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:10:25.878 [DEBUG] [Thread-200244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:10:25.878 [DEBUG] [Thread-200244] [transport.py] [_log()] client lang: <none>
2025-11-25T01:10:25.879 [DEBUG] [Thread-200244] [transport.py] [_log()] server lang: <none>
2025-11-25T01:10:25.879 [DEBUG] [Thread-200244] [transport.py] [_log()] kex follows: False
2025-11-25T01:10:25.879 [DEBUG] [Thread-200244] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:10:25.879 [DEBUG] [Thread-200244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:10:25.879 [DEBUG] [Thread-200244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:10:25.879 [DEBUG] [Thread-200244] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:10:25.879 [DEBUG] [Thread-200244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:10:25.879 [DEBUG] [Thread-200244] [transport.py] [_log()] Compression: none
2025-11-25T01:10:25.879 [DEBUG] [Thread-200244] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:10:25.939 [DEBUG] [Thread-200244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:10:25.939 [DEBUG] [Thread-200244] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:10:25.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:10:25.939 [DEBUG] [Thread-200244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:10:25.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:10:26.004 [DEBUG] [Thread-200244] [transport.py] [_log()] userauth is OK
2025-11-25T01:10:26.004 [DEBUG] [Thread-200244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:10:26.004 [DEBUG] [Thread-200244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:10:26.004 [DEBUG] [Thread-200244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:10:26.004 [DEBUG] [Thread-200244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:10:26.028 [INFO] [Thread-200244] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:10:26.029 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:10:26.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:10:26.894 [DEBUG] [Thread-200244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:10:26.894 [DEBUG] [Thread-200244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:10:26.943 [DEBUG] [Thread-200244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:10:26.943 [DEBUG] [Thread-200244] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:10:26.953 [DEBUG] [Thread-200244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:10:26.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:10:26.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-11-25T01:10:26.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-11-25T01:10:26.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:10:26.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:10:26.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:10:26.997 [DEBUG] [Thread-200244] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:10:29.427 [DEBUG] [Thread-200246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:32.569 [DEBUG] [Thread-200247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:37.916 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:42.320 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:47.712 [DEBUG] [Thread-200248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:48.446 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:52.826 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:10:57.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:10:57.021 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:10:57.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-11-25T01:10:57.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 10, 53), 13.27, 40.06, 0.0, 31.11, 12.91, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:10:57.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:10:53
2025-11-25T01:10:58.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:10:58.214 [DEBUG] [Thread-200249] [transport.py] [_log()] starting thread (client mode): 0xd3149ae0
2025-11-25T01:10:58.215 [DEBUG] [Thread-200249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:10:58.222 [DEBUG] [Thread-200249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:10:58.222 [INFO] [Thread-200249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] client lang: <none>
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] server lang: <none>
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] kex follows: False
2025-11-25T01:10:58.228 [DEBUG] [Thread-200249] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:10:58.229 [DEBUG] [Thread-200249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:10:58.229 [DEBUG] [Thread-200249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:10:58.229 [DEBUG] [Thread-200249] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:10:58.229 [DEBUG] [Thread-200249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:10:58.229 [DEBUG] [Thread-200249] [transport.py] [_log()] Compression: none
2025-11-25T01:10:58.230 [DEBUG] [Thread-200249] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:10:58.259 [DEBUG] [Thread-200249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:10:58.263 [DEBUG] [Thread-200249] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:10:58.264 [DEBUG] [Thread-200249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:10:58.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:10:58.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:10:58.267 [DEBUG] [Thread-200249] [transport.py] [_log()] userauth is OK
2025-11-25T01:10:58.267 [DEBUG] [Thread-200249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:10:58.268 [DEBUG] [Thread-200249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:10:58.268 [DEBUG] [Thread-200249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:10:58.268 [DEBUG] [Thread-200249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:10:58.285 [INFO] [Thread-200249] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:10:58.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:10:58.929 [DEBUG] [Thread-200249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:10:58.929 [DEBUG] [Thread-200249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:10:58.930 [DEBUG] [Thread-200249] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:10:58.970 [DEBUG] [Thread-200249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:10:58.970 [DEBUG] [Thread-200249] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:10:58.974 [DEBUG] [Thread-200249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:10:58.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:10:58.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:10:58.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:10:58.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:10:58.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:10:58.994 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:10:58.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:10:58.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:10:58.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:10:58.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.965668 -999.00  +12.90  23.11     45   +1.30 1 1 1 1 1     0    0 11.58 3.52 ZNESW 28.5 23.1 140.4 33.3 13.1 -25.7 12.9 -25.1 12.7 -23.9 13.1 -24.7
2025-11-25T01:10:58.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:10:58.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:10:58.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.965668
2025-11-25T01:10:59.001 [DEBUG] [Thread-200249] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:10:59.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:10:59.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:10:59.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:10:59.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:10:59.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:10:59.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:10:53', tmtdew=13.27, humidity=40.06, cloud=0.0, wind=31.11, temperature=12.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:10:53', seeing=0.73, atlas_timestamp='2025-11-24T23:10:33.715', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:07:00')
2025-11-25T01:10:59.096 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:10:59.108 [DEBUG] [Thread-200252] [transport.py] [_log()] starting thread (client mode): 0xd3151f00
2025-11-25T01:10:59.108 [DEBUG] [Thread-200252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:10:59.122 [DEBUG] [Thread-200252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:10:59.123 [INFO] [Thread-200252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:10:59.130 [DEBUG] [Thread-200252] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:10:59.130 [DEBUG] [Thread-200252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:10:59.130 [DEBUG] [Thread-200252] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:10:59.130 [DEBUG] [Thread-200252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:10:59.130 [DEBUG] [Thread-200252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:10:59.130 [DEBUG] [Thread-200252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:10:59.130 [DEBUG] [Thread-200252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:10:59.131 [DEBUG] [Thread-200252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:10:59.131 [DEBUG] [Thread-200252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:10:59.131 [DEBUG] [Thread-200252] [transport.py] [_log()] client lang: <none>
2025-11-25T01:10:59.131 [DEBUG] [Thread-200252] [transport.py] [_log()] server lang: <none>
2025-11-25T01:10:59.131 [DEBUG] [Thread-200252] [transport.py] [_log()] kex follows: False
2025-11-25T01:10:59.131 [DEBUG] [Thread-200252] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:10:59.131 [DEBUG] [Thread-200252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:10:59.131 [DEBUG] [Thread-200252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:10:59.131 [DEBUG] [Thread-200252] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:10:59.131 [DEBUG] [Thread-200252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:10:59.132 [DEBUG] [Thread-200252] [transport.py] [_log()] Compression: none
2025-11-25T01:10:59.132 [DEBUG] [Thread-200252] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:10:59.189 [DEBUG] [Thread-200252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:10:59.189 [DEBUG] [Thread-200252] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:10:59.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:10:59.190 [DEBUG] [Thread-200252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:10:59.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:10:59.245 [DEBUG] [Thread-200252] [transport.py] [_log()] userauth is OK
2025-11-25T01:10:59.245 [DEBUG] [Thread-200252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:10:59.245 [DEBUG] [Thread-200252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:10:59.245 [DEBUG] [Thread-200252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:10:59.246 [DEBUG] [Thread-200252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:10:59.264 [INFO] [Thread-200252] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:10:59.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:10:59.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:11:00.096 [DEBUG] [Thread-200252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:11:00.096 [DEBUG] [Thread-200252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:11:00.144 [DEBUG] [Thread-200252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:11:00.144 [DEBUG] [Thread-200252] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:11:00.153 [DEBUG] [Thread-200252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:11:00.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:11:00.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-11-25T01:11:00.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-11-25T01:11:00.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:11:00.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:11:00.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:11:00.190 [DEBUG] [Thread-200252] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:11:02.766 [DEBUG] [Thread-200254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:11:17.899 [DEBUG] [Thread-200255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:11:18.237 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:11:18.240 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:11:29.707 [DEBUG] [Thread-200256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:11:30.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:11:30.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:11:30.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-11-25T01:11:31.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 10, 53), 13.27, 40.06, 0.0, 31.11, 12.91, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:11:31.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:10:53
2025-11-25T01:11:31.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:11:31.420 [DEBUG] [Thread-200257] [transport.py] [_log()] starting thread (client mode): 0xd07ceb60
2025-11-25T01:11:31.421 [DEBUG] [Thread-200257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:11:31.431 [DEBUG] [Thread-200257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:11:31.431 [INFO] [Thread-200257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] client lang: <none>
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] server lang: <none>
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] kex follows: False
2025-11-25T01:11:31.437 [DEBUG] [Thread-200257] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:11:31.438 [DEBUG] [Thread-200257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:11:31.438 [DEBUG] [Thread-200257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:11:31.438 [DEBUG] [Thread-200257] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:11:31.438 [DEBUG] [Thread-200257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:11:31.438 [DEBUG] [Thread-200257] [transport.py] [_log()] Compression: none
2025-11-25T01:11:31.438 [DEBUG] [Thread-200257] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:11:31.469 [DEBUG] [Thread-200257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:11:31.473 [DEBUG] [Thread-200257] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:11:31.474 [DEBUG] [Thread-200257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:11:31.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:11:31.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:11:31.477 [DEBUG] [Thread-200257] [transport.py] [_log()] userauth is OK
2025-11-25T01:11:31.477 [DEBUG] [Thread-200257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:11:31.477 [DEBUG] [Thread-200257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:11:31.477 [DEBUG] [Thread-200257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:11:31.477 [DEBUG] [Thread-200257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:11:31.497 [INFO] [Thread-200257] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:11:31.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:11:32.125 [DEBUG] [Thread-200257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:11:32.125 [DEBUG] [Thread-200257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:11:32.125 [DEBUG] [Thread-200257] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:11:32.166 [DEBUG] [Thread-200257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:11:32.166 [DEBUG] [Thread-200257] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:11:32.168 [DEBUG] [Thread-200257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:11:32.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:11:32.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:11:32.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:11:32.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:11:32.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:11:32.190 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:11:32.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:11:32.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:11:32.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:11:32.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.966016 -999.00  +12.90  25.38     45   +1.30 1 1 1 1 1     0    0 11.50 5.37 ZNESW 25.3 25.4 148.0 29.4 13.1 -25.7 13.0 -25.1 12.8 -23.8 13.0 -24.8
2025-11-25T01:11:32.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:11:32.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:11:32.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.966016
2025-11-25T01:11:32.196 [DEBUG] [Thread-200257] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:11:32.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:11:32.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:11:32.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:11:32.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:11:32.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:11:32.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:10:53', tmtdew=13.27, humidity=40.06, cloud=0.0, wind=31.11, temperature=12.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:11:27', seeing=0.74, atlas_timestamp='2025-11-24T23:11:03.782', atlas_cloud=1, atlas_rain=1, zp_data=[-0.020250000000000767, -0.03074999999999939, -0.003249999999999531, -0.0005000000000006111, 0.00849999999999973, 0.0627500000000012, -0.011499999999999844, -0.0337499999999995, -0.01750000000000007, 0.0, 0.029749999999999943, -0.028999999999999915, 0.07099999999999973, 0.10174999999999912, -0.004000000000001336, -0.031000000000000583, 0.00274999999999892, -0.009500000000000952, 0.006999999999999673, -0.03175000000000061, 0.0519999999999996, 0.044749999999998735, 0.03625000000000078, -0.004250000000000753, -0.0039999999999995595, 0.024499999999999744, -0.030250000000000554, 0.013500000000000512, 0.09299999999999997, 0.10800000000000054, 0.0860000000000003, -0.017999999999998906, -0.0012500000000006395], zp_timestamp='2025-11-24T23:07:00')
2025-11-25T01:11:32.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:11:32.301 [DEBUG] [Thread-200260] [transport.py] [_log()] starting thread (client mode): 0xd317cd30
2025-11-25T01:11:32.301 [DEBUG] [Thread-200260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:11:32.316 [DEBUG] [Thread-200260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:11:32.316 [INFO] [Thread-200260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:11:32.323 [DEBUG] [Thread-200260] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] client lang: <none>
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] server lang: <none>
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] kex follows: False
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] Compression: none
2025-11-25T01:11:32.324 [DEBUG] [Thread-200260] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:11:32.379 [DEBUG] [Thread-200260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:11:32.379 [DEBUG] [Thread-200260] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:11:32.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:11:32.379 [DEBUG] [Thread-200260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:11:32.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:11:32.443 [DEBUG] [Thread-200260] [transport.py] [_log()] userauth is OK
2025-11-25T01:11:32.443 [DEBUG] [Thread-200260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:11:32.443 [DEBUG] [Thread-200260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:11:32.443 [DEBUG] [Thread-200260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:11:32.443 [DEBUG] [Thread-200260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:11:32.456 [INFO] [Thread-200260] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:11:32.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:11:32.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:11:32.940 [DEBUG] [Thread-200262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:11:33.288 [DEBUG] [Thread-200260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:11:33.289 [DEBUG] [Thread-200260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:11:33.336 [DEBUG] [Thread-200260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:11:33.336 [DEBUG] [Thread-200260] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:11:33.344 [DEBUG] [Thread-200260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:11:33.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:11:33.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-11-25T01:11:33.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-11-25T01:11:33.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:11:33.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:11:33.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:11:33.378 [DEBUG] [Thread-200260] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:11:48.046 [DEBUG] [Thread-200263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:12:03.079 [DEBUG] [Thread-200264 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:12:03.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:12:03.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:12:03.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-11-25T01:12:04.175 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:12:04.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 11, 26), 13.26, 40.09, 0.0, 32.69, 12.98, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:12:04.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:11:26
2025-11-25T01:12:04.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:12:04.646 [DEBUG] [Thread-200265] [transport.py] [_log()] starting thread (client mode): 0xd3149630
2025-11-25T01:12:04.647 [DEBUG] [Thread-200265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:12:04.654 [DEBUG] [Thread-200265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:12:04.654 [INFO] [Thread-200265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:12:04.657 [DEBUG] [Thread-200265] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] client lang: <none>
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] server lang: <none>
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] kex follows: False
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] Compression: none
2025-11-25T01:12:04.658 [DEBUG] [Thread-200265] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:12:04.677 [DEBUG] [Thread-200265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:12:04.680 [DEBUG] [Thread-200265] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:12:04.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:12:04.682 [DEBUG] [Thread-200265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:12:04.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:12:04.684 [DEBUG] [Thread-200265] [transport.py] [_log()] userauth is OK
2025-11-25T01:12:04.684 [DEBUG] [Thread-200265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:12:04.684 [DEBUG] [Thread-200265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:12:04.684 [DEBUG] [Thread-200265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:12:04.684 [DEBUG] [Thread-200265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:12:04.706 [INFO] [Thread-200265] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:12:04.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:12:05.257 [DEBUG] [Thread-200265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:12:05.257 [DEBUG] [Thread-200265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:12:05.259 [DEBUG] [Thread-200265] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:12:05.298 [DEBUG] [Thread-200265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:12:05.298 [DEBUG] [Thread-200265] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:12:05.300 [DEBUG] [Thread-200265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:12:05.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:12:05.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:12:05.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:12:05.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:12:05.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:12:05.319 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:12:05.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:12:05.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:12:05.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:12:05.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.966363 -999.00  +12.90  22.00     44   +1.20 1 1 1 1 1     0    0 11.78 6.99 ZNESW 23.1 22.0 141.0 31.8 13.2 -25.7 13.0 -25.0 12.7 -24.0 13.1 -24.8
2025-11-25T01:12:05.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:12:05.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:12:05.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.966363
2025-11-25T01:12:05.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:12:05.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:12:05.330 [DEBUG] [Thread-200265] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:12:05.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:12:05.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:12:05.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:12:05.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:11:26', tmtdew=13.26, humidity=40.09, cloud=0.0, wind=32.69, temperature=12.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:12:00', seeing=0.7, atlas_timestamp='2025-11-24T23:11:33.763', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:10:00')
2025-11-25T01:12:05.403 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:12:05.415 [DEBUG] [Thread-200268] [transport.py] [_log()] starting thread (client mode): 0xd07131f0
2025-11-25T01:12:05.415 [DEBUG] [Thread-200268] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:12:05.430 [DEBUG] [Thread-200268] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:12:05.430 [INFO] [Thread-200268] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] client lang: <none>
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] server lang: <none>
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] kex follows: False
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:12:05.438 [DEBUG] [Thread-200268] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:12:05.439 [DEBUG] [Thread-200268] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:12:05.439 [DEBUG] [Thread-200268] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:12:05.439 [DEBUG] [Thread-200268] [transport.py] [_log()] Compression: none
2025-11-25T01:12:05.439 [DEBUG] [Thread-200268] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:12:05.495 [DEBUG] [Thread-200268] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:12:05.496 [DEBUG] [Thread-200268] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:12:05.496 [DEBUG] [Thread-200268] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:12:05.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:12:05.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:12:05.553 [DEBUG] [Thread-200268] [transport.py] [_log()] userauth is OK
2025-11-25T01:12:05.553 [DEBUG] [Thread-200268] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:12:05.553 [DEBUG] [Thread-200268] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:12:05.554 [DEBUG] [Thread-200268] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:12:05.554 [DEBUG] [Thread-200268] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:12:05.576 [INFO] [Thread-200268] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:12:05.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:12:05.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:12:06.436 [DEBUG] [Thread-200268] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:12:06.436 [DEBUG] [Thread-200268] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:12:06.484 [DEBUG] [Thread-200268] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:12:06.484 [DEBUG] [Thread-200268] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:12:06.492 [DEBUG] [Thread-200268] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:12:06.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:12:06.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-11-25T01:12:06.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-11-25T01:12:06.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:12:06.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:12:06.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:12:06.534 [DEBUG] [Thread-200268] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:12:08.267 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:12:18.147 [DEBUG] [Thread-200270 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:12:18.444 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:12:18.445 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:12:30.015 [DEBUG] [Thread-200271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:12:33.285 [DEBUG] [Thread-200272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:12:36.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:12:36.558 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:12:36.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-11-25T01:12:37.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 11, 26), 13.16, 40.59, 0.0, 32.69, 12.88, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:12:37.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:11:26
2025-11-25T01:12:37.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:12:37.768 [DEBUG] [Thread-200273] [transport.py] [_log()] starting thread (client mode): 0xd317c130
2025-11-25T01:12:37.769 [DEBUG] [Thread-200273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:12:37.780 [DEBUG] [Thread-200273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:12:37.781 [INFO] [Thread-200273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:12:37.785 [DEBUG] [Thread-200273] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:12:37.785 [DEBUG] [Thread-200273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:12:37.785 [DEBUG] [Thread-200273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:12:37.785 [DEBUG] [Thread-200273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:12:37.785 [DEBUG] [Thread-200273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:12:37.785 [DEBUG] [Thread-200273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:12:37.785 [DEBUG] [Thread-200273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:12:37.785 [DEBUG] [Thread-200273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:12:37.785 [DEBUG] [Thread-200273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:12:37.785 [DEBUG] [Thread-200273] [transport.py] [_log()] client lang: <none>
2025-11-25T01:12:37.786 [DEBUG] [Thread-200273] [transport.py] [_log()] server lang: <none>
2025-11-25T01:12:37.786 [DEBUG] [Thread-200273] [transport.py] [_log()] kex follows: False
2025-11-25T01:12:37.786 [DEBUG] [Thread-200273] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:12:37.786 [DEBUG] [Thread-200273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:12:37.786 [DEBUG] [Thread-200273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:12:37.786 [DEBUG] [Thread-200273] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:12:37.786 [DEBUG] [Thread-200273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:12:37.786 [DEBUG] [Thread-200273] [transport.py] [_log()] Compression: none
2025-11-25T01:12:37.786 [DEBUG] [Thread-200273] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:12:37.818 [DEBUG] [Thread-200273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:12:37.821 [DEBUG] [Thread-200273] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:12:37.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:12:37.823 [DEBUG] [Thread-200273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:12:37.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:12:37.826 [DEBUG] [Thread-200273] [transport.py] [_log()] userauth is OK
2025-11-25T01:12:37.826 [DEBUG] [Thread-200273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:12:37.826 [DEBUG] [Thread-200273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:12:37.826 [DEBUG] [Thread-200273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:12:37.826 [DEBUG] [Thread-200273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:12:37.859 [INFO] [Thread-200273] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:12:37.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:12:38.493 [DEBUG] [Thread-200273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:12:38.493 [DEBUG] [Thread-200273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:12:38.494 [DEBUG] [Thread-200273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:12:38.532 [DEBUG] [Thread-200273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:12:38.532 [DEBUG] [Thread-200273] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:12:38.534 [DEBUG] [Thread-200273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:12:38.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:12:38.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:12:38.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:12:38.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:12:38.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:12:38.556 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:12:38.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:12:38.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:12:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:12:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.966710 -999.00  +12.90  25.93     44   +1.20 1 1 1 1 1     0    0 12.06 9.41 ZNESW 21.7 25.9 144.8 33.5 13.2 -25.4 13.0 -24.9 12.7 -23.7 13.1 -24.6
2025-11-25T01:12:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:12:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:12:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.966710
2025-11-25T01:12:38.563 [DEBUG] [Thread-200273] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:12:38.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:12:38.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:12:38.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:12:38.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:12:38.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:12:38.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:11:26', tmtdew=13.16, humidity=40.59, cloud=0.0, wind=32.69, temperature=12.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:12:33', seeing=0.8, atlas_timestamp='2025-11-24T23:12:03.744', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:10:00')
2025-11-25T01:12:38.650 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:12:38.664 [DEBUG] [Thread-200276] [transport.py] [_log()] starting thread (client mode): 0xc9b83970
2025-11-25T01:12:38.664 [DEBUG] [Thread-200276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:12:38.683 [DEBUG] [Thread-200276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:12:38.683 [INFO] [Thread-200276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] client lang: <none>
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] server lang: <none>
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] kex follows: False
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] Compression: none
2025-11-25T01:12:38.694 [DEBUG] [Thread-200276] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:12:38.755 [DEBUG] [Thread-200276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:12:38.756 [DEBUG] [Thread-200276] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:12:38.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:12:38.756 [DEBUG] [Thread-200276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:12:38.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:12:38.812 [DEBUG] [Thread-200276] [transport.py] [_log()] userauth is OK
2025-11-25T01:12:38.812 [DEBUG] [Thread-200276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:12:38.812 [DEBUG] [Thread-200276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:12:38.812 [DEBUG] [Thread-200276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:12:38.812 [DEBUG] [Thread-200276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:12:38.826 [INFO] [Thread-200276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:12:38.827 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:12:38.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:12:39.666 [DEBUG] [Thread-200276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:12:39.667 [DEBUG] [Thread-200276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:12:39.714 [DEBUG] [Thread-200276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:12:39.714 [DEBUG] [Thread-200276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:12:39.722 [DEBUG] [Thread-200276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:12:39.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:12:39.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-11-25T01:12:39.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-11-25T01:12:39.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:12:39.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:12:39.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:12:39.764 [DEBUG] [Thread-200276] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:12:48.341 [DEBUG] [Thread-200278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:13:03.540 [DEBUG] [Thread-200279 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:13:09.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:13:09.789 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:13:09.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-11-25T01:13:10.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 12, 33), 13.27, 39.79, 0.0, 27.44, 12.88, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:13:10.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:12:33
2025-11-25T01:13:10.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:13:10.982 [DEBUG] [Thread-200280] [transport.py] [_log()] starting thread (client mode): 0xd31494b0
2025-11-25T01:13:10.983 [DEBUG] [Thread-200280] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:13:10.992 [DEBUG] [Thread-200280] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:13:10.992 [INFO] [Thread-200280] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] client lang: <none>
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] server lang: <none>
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] kex follows: False
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] Compression: none
2025-11-25T01:13:10.998 [DEBUG] [Thread-200280] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:13:11.031 [DEBUG] [Thread-200280] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:13:11.034 [DEBUG] [Thread-200280] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:13:11.035 [DEBUG] [Thread-200280] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:13:11.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:13:11.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:13:11.039 [DEBUG] [Thread-200280] [transport.py] [_log()] userauth is OK
2025-11-25T01:13:11.039 [DEBUG] [Thread-200280] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:13:11.039 [DEBUG] [Thread-200280] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:13:11.039 [DEBUG] [Thread-200280] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:13:11.039 [DEBUG] [Thread-200280] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:13:11.058 [INFO] [Thread-200280] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:13:11.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:13:11.706 [DEBUG] [Thread-200280] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:13:11.706 [DEBUG] [Thread-200280] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:13:11.707 [DEBUG] [Thread-200280] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:13:11.747 [DEBUG] [Thread-200280] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:13:11.747 [DEBUG] [Thread-200280] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:13:11.749 [DEBUG] [Thread-200280] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:13:11.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:13:11.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:13:11.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:13:11.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:13:11.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:13:11.770 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:13:11.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:13:11.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:13:11.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:13:11.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.967057 -999.00  +12.90  20.05     44   +1.20 1 1 1 1 1     0    0 11.78 10.54 ZNESW 19.1 20.1 141.6 25.9 13.2 -25.7 13.0 -25.0 12.7 -23.7 13.0 -24.8
2025-11-25T01:13:11.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:13:11.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:13:11.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.967057
2025-11-25T01:13:11.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:13:11.789 [DEBUG] [Thread-200280] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:13:11.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:13:11.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:13:11.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:13:11.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:13:11.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:12:33', tmtdew=13.27, humidity=39.79, cloud=0.0, wind=27.44, temperature=12.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:13:07', seeing=0.72, atlas_timestamp='2025-11-24T23:12:33.725', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:10:00')
2025-11-25T01:13:11.864 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:13:11.876 [DEBUG] [Thread-200283] [transport.py] [_log()] starting thread (client mode): 0xc9b80e50
2025-11-25T01:13:11.876 [DEBUG] [Thread-200283] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:13:11.891 [DEBUG] [Thread-200283] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:13:11.891 [INFO] [Thread-200283] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:13:11.899 [DEBUG] [Thread-200283] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:13:11.899 [DEBUG] [Thread-200283] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:13:11.899 [DEBUG] [Thread-200283] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:13:11.899 [DEBUG] [Thread-200283] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:13:11.899 [DEBUG] [Thread-200283] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:13:11.899 [DEBUG] [Thread-200283] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:13:11.899 [DEBUG] [Thread-200283] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:13:11.899 [DEBUG] [Thread-200283] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] client lang: <none>
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] server lang: <none>
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] kex follows: False
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] Compression: none
2025-11-25T01:13:11.900 [DEBUG] [Thread-200283] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:13:11.959 [DEBUG] [Thread-200283] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:13:11.959 [DEBUG] [Thread-200283] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:13:11.959 [DEBUG] [Thread-200283] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:13:11.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:13:11.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:13:12.016 [DEBUG] [Thread-200283] [transport.py] [_log()] userauth is OK
2025-11-25T01:13:12.016 [DEBUG] [Thread-200283] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:13:12.016 [DEBUG] [Thread-200283] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:13:12.016 [DEBUG] [Thread-200283] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:13:12.016 [DEBUG] [Thread-200283] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:13:12.033 [INFO] [Thread-200283] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:13:12.033 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:13:12.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:13:12.868 [DEBUG] [Thread-200283] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:13:12.869 [DEBUG] [Thread-200283] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:13:12.917 [DEBUG] [Thread-200283] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:13:12.917 [DEBUG] [Thread-200283] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:13:12.926 [DEBUG] [Thread-200283] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:13:12.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:13:12.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-11-25T01:13:12.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-11-25T01:13:12.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:13:12.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:13:12.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:13:12.965 [DEBUG] [Thread-200283] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:13:18.657 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:13:18.659 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:13:18.659 [DEBUG] [Thread-200285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:13:30.392 [DEBUG] [Thread-200286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:13:33.813 [DEBUG] [Thread-200287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:13:42.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:13:42.975 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:13:42.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:13:43.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 13, 40), 13.26, 39.81, 0.0, 28.97, 12.86, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:13:43.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:13:40
2025-11-25T01:13:44.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:13:44.235 [DEBUG] [Thread-200288] [transport.py] [_log()] starting thread (client mode): 0xd0713d30
2025-11-25T01:13:44.236 [DEBUG] [Thread-200288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:13:44.248 [DEBUG] [Thread-200288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:13:44.248 [INFO] [Thread-200288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:13:44.258 [DEBUG] [Thread-200288] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:13:44.258 [DEBUG] [Thread-200288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:13:44.259 [DEBUG] [Thread-200288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:13:44.259 [DEBUG] [Thread-200288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:13:44.259 [DEBUG] [Thread-200288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:13:44.259 [DEBUG] [Thread-200288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:13:44.259 [DEBUG] [Thread-200288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:13:44.260 [DEBUG] [Thread-200288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:13:44.260 [DEBUG] [Thread-200288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:13:44.260 [DEBUG] [Thread-200288] [transport.py] [_log()] client lang: <none>
2025-11-25T01:13:44.260 [DEBUG] [Thread-200288] [transport.py] [_log()] server lang: <none>
2025-11-25T01:13:44.260 [DEBUG] [Thread-200288] [transport.py] [_log()] kex follows: False
2025-11-25T01:13:44.260 [DEBUG] [Thread-200288] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:13:44.261 [DEBUG] [Thread-200288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:13:44.261 [DEBUG] [Thread-200288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:13:44.262 [DEBUG] [Thread-200288] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:13:44.262 [DEBUG] [Thread-200288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:13:44.262 [DEBUG] [Thread-200288] [transport.py] [_log()] Compression: none
2025-11-25T01:13:44.262 [DEBUG] [Thread-200288] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:13:44.302 [DEBUG] [Thread-200288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:13:44.307 [DEBUG] [Thread-200288] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:13:44.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:13:44.311 [DEBUG] [Thread-200288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:13:44.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:13:44.314 [DEBUG] [Thread-200288] [transport.py] [_log()] userauth is OK
2025-11-25T01:13:44.315 [DEBUG] [Thread-200288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:13:44.315 [DEBUG] [Thread-200288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:13:44.315 [DEBUG] [Thread-200288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:13:44.315 [DEBUG] [Thread-200288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:13:44.343 [INFO] [Thread-200288] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:13:44.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:13:44.959 [DEBUG] [Thread-200288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:13:44.960 [DEBUG] [Thread-200288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:13:44.961 [DEBUG] [Thread-200288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:13:45.000 [DEBUG] [Thread-200288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:13:45.001 [DEBUG] [Thread-200288] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:13:45.004 [DEBUG] [Thread-200288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:13:45.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:13:45.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:13:45.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:13:45.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:13:45.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:13:45.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:13:45.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:13:45.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:13:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:13:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.967752 -999.00  +12.80  19.78     44   +1.10 1 1 1 1 1     0    0 12.29 14.10 ZNESW 18.4 19.8 135.0 25.3 13.1 -25.6 12.9 -25.0 12.7 -23.8 13.1 -24.7
2025-11-25T01:13:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:13:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:13:45.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.967752
2025-11-25T01:13:45.037 [DEBUG] [Thread-200288] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:13:45.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:13:45.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:13:45.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:13:45.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:13:45.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:13:45.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:13:40', tmtdew=13.26, humidity=39.81, cloud=0.0, wind=28.97, temperature=12.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:13:40', seeing=0.76, atlas_timestamp='2025-11-24T23:13:33.773', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:10:00')
2025-11-25T01:13:45.143 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:13:45.154 [DEBUG] [Thread-200291] [transport.py] [_log()] starting thread (client mode): 0xd07871c0
2025-11-25T01:13:45.154 [DEBUG] [Thread-200291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:13:45.169 [DEBUG] [Thread-200291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:13:45.169 [INFO] [Thread-200291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] client lang: <none>
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] server lang: <none>
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] kex follows: False
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:13:45.177 [DEBUG] [Thread-200291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:13:45.178 [DEBUG] [Thread-200291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:13:45.178 [DEBUG] [Thread-200291] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:13:45.178 [DEBUG] [Thread-200291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:13:45.178 [DEBUG] [Thread-200291] [transport.py] [_log()] Compression: none
2025-11-25T01:13:45.178 [DEBUG] [Thread-200291] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:13:45.237 [DEBUG] [Thread-200291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:13:45.237 [DEBUG] [Thread-200291] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:13:45.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:13:45.238 [DEBUG] [Thread-200291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:13:45.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:13:45.293 [DEBUG] [Thread-200291] [transport.py] [_log()] userauth is OK
2025-11-25T01:13:45.293 [DEBUG] [Thread-200291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:13:45.302 [DEBUG] [Thread-200291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:13:45.303 [DEBUG] [Thread-200291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:13:45.303 [DEBUG] [Thread-200291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:13:45.321 [INFO] [Thread-200291] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:13:45.322 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:13:45.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:13:46.185 [DEBUG] [Thread-200291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:13:46.185 [DEBUG] [Thread-200291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:13:46.233 [DEBUG] [Thread-200291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:13:46.233 [DEBUG] [Thread-200291] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:13:46.242 [DEBUG] [Thread-200291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:13:46.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:13:46.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-11-25T01:13:46.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-11-25T01:13:46.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:13:46.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:13:46.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:13:46.276 [DEBUG] [Thread-200291] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:13:48.885 [DEBUG] [Thread-200293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:14:04.005 [DEBUG] [Thread-200294 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:14:16.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:14:16.321 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:14:16.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:14:17.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 14, 12), 13.31, 39.68, 0.0, 26.56, 12.86, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:14:17.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:14:12
2025-11-25T01:14:17.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:14:17.438 [DEBUG] [Thread-200295] [transport.py] [_log()] starting thread (client mode): 0xd07845e0
2025-11-25T01:14:17.439 [DEBUG] [Thread-200295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:14:17.445 [DEBUG] [Thread-200295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:14:17.445 [INFO] [Thread-200295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] client lang: <none>
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] server lang: <none>
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] kex follows: False
2025-11-25T01:14:17.451 [DEBUG] [Thread-200295] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:14:17.452 [DEBUG] [Thread-200295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:14:17.452 [DEBUG] [Thread-200295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:14:17.452 [DEBUG] [Thread-200295] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:14:17.452 [DEBUG] [Thread-200295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:14:17.452 [DEBUG] [Thread-200295] [transport.py] [_log()] Compression: none
2025-11-25T01:14:17.452 [DEBUG] [Thread-200295] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:14:17.476 [DEBUG] [Thread-200295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:14:17.480 [DEBUG] [Thread-200295] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:14:17.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:14:17.483 [DEBUG] [Thread-200295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:14:17.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:14:17.485 [DEBUG] [Thread-200295] [transport.py] [_log()] userauth is OK
2025-11-25T01:14:17.485 [DEBUG] [Thread-200295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:14:17.485 [DEBUG] [Thread-200295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:14:17.485 [DEBUG] [Thread-200295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:14:17.485 [DEBUG] [Thread-200295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:14:17.503 [INFO] [Thread-200295] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:14:17.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:14:18.127 [DEBUG] [Thread-200295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:14:18.127 [DEBUG] [Thread-200295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:14:18.128 [DEBUG] [Thread-200295] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:14:18.168 [DEBUG] [Thread-200295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:14:18.168 [DEBUG] [Thread-200295] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:14:18.171 [DEBUG] [Thread-200295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:14:18.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:14:18.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:14:18.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:14:18.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:14:18.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:14:18.194 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:14:18.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:14:18.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:14:18.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:14:18.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.968099 -999.00  +12.90  21.54     45   +1.20 1 1 1 1 1     0    0 11.92 14.59 ZNESW 22.1 21.5 146.6 25.6 13.1 -25.5 12.9 -24.9 12.8 -23.9 13.1 -24.8
2025-11-25T01:14:18.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:14:18.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:14:18.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.968099
2025-11-25T01:14:18.201 [DEBUG] [Thread-200295] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:14:18.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:14:18.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:14:18.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:14:18.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:14:18.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:14:18.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:14:12', tmtdew=13.31, humidity=39.68, cloud=0.0, wind=26.56, temperature=12.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:14:13', seeing=0.79, atlas_timestamp='2025-11-24T23:14:03.754', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:10:00')
2025-11-25T01:14:18.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:14:18.306 [DEBUG] [Thread-200298] [transport.py] [_log()] starting thread (client mode): 0xc9b80130
2025-11-25T01:14:18.306 [DEBUG] [Thread-200298] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:14:18.321 [DEBUG] [Thread-200298] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:14:18.321 [INFO] [Thread-200298] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] client lang: <none>
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] server lang: <none>
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] kex follows: False
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] Compression: none
2025-11-25T01:14:18.329 [DEBUG] [Thread-200298] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:14:18.387 [DEBUG] [Thread-200298] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:14:18.387 [DEBUG] [Thread-200298] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:14:18.387 [DEBUG] [Thread-200298] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:14:18.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:14:18.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:14:18.447 [DEBUG] [Thread-200298] [transport.py] [_log()] userauth is OK
2025-11-25T01:14:18.447 [DEBUG] [Thread-200298] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:14:18.448 [DEBUG] [Thread-200298] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:14:18.448 [DEBUG] [Thread-200298] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:14:18.448 [DEBUG] [Thread-200298] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:14:18.463 [INFO] [Thread-200298] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:14:18.463 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:14:18.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:14:18.861 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:14:18.863 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:14:19.052 [DEBUG] [Thread-200300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:14:19.308 [DEBUG] [Thread-200298] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:14:19.308 [DEBUG] [Thread-200298] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:14:19.356 [DEBUG] [Thread-200298] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:14:19.356 [DEBUG] [Thread-200298] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:14:19.364 [DEBUG] [Thread-200298] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:14:19.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:14:19.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-11-25T01:14:19.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-11-25T01:14:19.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:14:19.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:14:19.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:14:19.404 [DEBUG] [Thread-200298] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:14:30.732 [DEBUG] [Thread-200301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:14:34.170 [DEBUG] [Thread-200302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:14:49.240 [DEBUG] [Thread-200303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:14:49.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:14:49.422 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:14:49.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-11-25T01:14:50.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 14, 46), 13.28, 40.11, 0.0, 26.08, 12.81, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:14:50.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:14:46
2025-11-25T01:14:50.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:14:50.643 [DEBUG] [Thread-200304] [transport.py] [_log()] starting thread (client mode): 0xd3150bb0
2025-11-25T01:14:50.644 [DEBUG] [Thread-200304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:14:50.646 [DEBUG] [Thread-200304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:14:50.646 [INFO] [Thread-200304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:14:50.650 [DEBUG] [Thread-200304] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] client lang: <none>
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] server lang: <none>
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] kex follows: False
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:14:50.651 [DEBUG] [Thread-200304] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:14:50.652 [DEBUG] [Thread-200304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:14:50.652 [DEBUG] [Thread-200304] [transport.py] [_log()] Compression: none
2025-11-25T01:14:50.652 [DEBUG] [Thread-200304] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:14:50.681 [DEBUG] [Thread-200304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:14:50.684 [DEBUG] [Thread-200304] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:14:50.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:14:50.686 [DEBUG] [Thread-200304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:14:50.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:14:50.688 [DEBUG] [Thread-200304] [transport.py] [_log()] userauth is OK
2025-11-25T01:14:50.688 [DEBUG] [Thread-200304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:14:50.688 [DEBUG] [Thread-200304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:14:50.688 [DEBUG] [Thread-200304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:14:50.689 [DEBUG] [Thread-200304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:14:50.716 [INFO] [Thread-200304] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:14:50.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:14:51.296 [DEBUG] [Thread-200304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:14:51.296 [DEBUG] [Thread-200304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:14:51.307 [DEBUG] [Thread-200304] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:14:51.337 [DEBUG] [Thread-200304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:14:51.337 [DEBUG] [Thread-200304] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:14:51.340 [DEBUG] [Thread-200304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:14:51.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:14:51.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:14:51.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:14:51.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:14:51.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:14:51.367 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:14:51.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:14:51.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:14:51.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:14:51.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.968447 -999.00  +12.90  25.87     44   +1.10 1 1 1 1 1     0    0 11.77 15.62 ZNESW 18.6 25.9 143.4 33.2 13.1 -25.5 12.9 -24.9 12.7 -23.8 13.0 -24.5
2025-11-25T01:14:51.369 [DEBUG] [Thread-200304] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:14:51.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:14:51.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:14:51.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.968447
2025-11-25T01:14:51.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:14:51.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:14:51.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:14:51.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:14:51.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:14:51.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:14:46', tmtdew=13.28, humidity=40.11, cloud=0.0, wind=26.08, temperature=12.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:14:46', seeing=0.8, atlas_timestamp='2025-11-24T23:14:33.821', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:10:00')
2025-11-25T01:14:51.475 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:14:51.488 [DEBUG] [Thread-200307] [transport.py] [_log()] starting thread (client mode): 0xd07102b0
2025-11-25T01:14:51.488 [DEBUG] [Thread-200307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:14:51.503 [DEBUG] [Thread-200307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:14:51.503 [INFO] [Thread-200307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:14:51.511 [DEBUG] [Thread-200307] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:14:51.511 [DEBUG] [Thread-200307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:14:51.511 [DEBUG] [Thread-200307] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:14:51.511 [DEBUG] [Thread-200307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:14:51.512 [DEBUG] [Thread-200307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:14:51.512 [DEBUG] [Thread-200307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:14:51.512 [DEBUG] [Thread-200307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:14:51.512 [DEBUG] [Thread-200307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:14:51.512 [DEBUG] [Thread-200307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:14:51.512 [DEBUG] [Thread-200307] [transport.py] [_log()] client lang: <none>
2025-11-25T01:14:51.512 [DEBUG] [Thread-200307] [transport.py] [_log()] server lang: <none>
2025-11-25T01:14:51.512 [DEBUG] [Thread-200307] [transport.py] [_log()] kex follows: False
2025-11-25T01:14:51.513 [DEBUG] [Thread-200307] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:14:51.513 [DEBUG] [Thread-200307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:14:51.513 [DEBUG] [Thread-200307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:14:51.513 [DEBUG] [Thread-200307] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:14:51.513 [DEBUG] [Thread-200307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:14:51.513 [DEBUG] [Thread-200307] [transport.py] [_log()] Compression: none
2025-11-25T01:14:51.514 [DEBUG] [Thread-200307] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:14:51.569 [DEBUG] [Thread-200307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:14:51.569 [DEBUG] [Thread-200307] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:14:51.570 [DEBUG] [Thread-200307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:14:51.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:14:51.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:14:51.629 [DEBUG] [Thread-200307] [transport.py] [_log()] userauth is OK
2025-11-25T01:14:51.629 [DEBUG] [Thread-200307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:14:51.629 [DEBUG] [Thread-200307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:14:51.629 [DEBUG] [Thread-200307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:14:51.630 [DEBUG] [Thread-200307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:14:51.648 [INFO] [Thread-200307] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:14:51.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:14:51.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:14:52.479 [DEBUG] [Thread-200307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:14:52.479 [DEBUG] [Thread-200307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:14:52.527 [DEBUG] [Thread-200307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:14:52.528 [DEBUG] [Thread-200307] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:14:52.537 [DEBUG] [Thread-200307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:14:52.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:14:52.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-11-25T01:14:52.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-11-25T01:14:52.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:14:52.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:14:52.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:14:52.576 [DEBUG] [Thread-200307] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:15:04.353 [DEBUG] [Thread-200309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:15:19.085 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:15:19.095 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:15:19.531 [DEBUG] [Thread-200310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:15:22.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:15:22.580 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:15:22.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-11-25T01:15:23.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 15, 19), 13.29, 40.06, 0.0, 25.92, 12.76, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:15:23.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:15:19
2025-11-25T01:15:23.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:15:23.790 [DEBUG] [Thread-200311] [transport.py] [_log()] starting thread (client mode): 0xd31520e0
2025-11-25T01:15:23.790 [DEBUG] [Thread-200311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:15:23.802 [DEBUG] [Thread-200311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:15:23.803 [INFO] [Thread-200311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:15:23.809 [DEBUG] [Thread-200311] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:15:23.809 [DEBUG] [Thread-200311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:15:23.809 [DEBUG] [Thread-200311] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:15:23.809 [DEBUG] [Thread-200311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:15:23.809 [DEBUG] [Thread-200311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:15:23.809 [DEBUG] [Thread-200311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:15:23.809 [DEBUG] [Thread-200311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:15:23.809 [DEBUG] [Thread-200311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:15:23.809 [DEBUG] [Thread-200311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:15:23.810 [DEBUG] [Thread-200311] [transport.py] [_log()] client lang: <none>
2025-11-25T01:15:23.810 [DEBUG] [Thread-200311] [transport.py] [_log()] server lang: <none>
2025-11-25T01:15:23.810 [DEBUG] [Thread-200311] [transport.py] [_log()] kex follows: False
2025-11-25T01:15:23.810 [DEBUG] [Thread-200311] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:15:23.810 [DEBUG] [Thread-200311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:15:23.811 [DEBUG] [Thread-200311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:15:23.811 [DEBUG] [Thread-200311] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:15:23.811 [DEBUG] [Thread-200311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:15:23.811 [DEBUG] [Thread-200311] [transport.py] [_log()] Compression: none
2025-11-25T01:15:23.811 [DEBUG] [Thread-200311] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:15:23.848 [DEBUG] [Thread-200311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:15:23.853 [DEBUG] [Thread-200311] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:15:23.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:15:23.857 [DEBUG] [Thread-200311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:15:23.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:15:23.860 [DEBUG] [Thread-200311] [transport.py] [_log()] userauth is OK
2025-11-25T01:15:23.860 [DEBUG] [Thread-200311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:15:23.861 [DEBUG] [Thread-200311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:15:23.861 [DEBUG] [Thread-200311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:15:23.861 [DEBUG] [Thread-200311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:15:23.887 [INFO] [Thread-200311] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:15:23.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:15:24.473 [DEBUG] [Thread-200311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:15:24.473 [DEBUG] [Thread-200311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:15:24.474 [DEBUG] [Thread-200311] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:15:24.514 [DEBUG] [Thread-200311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:15:24.514 [DEBUG] [Thread-200311] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:15:24.517 [DEBUG] [Thread-200311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:15:24.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:15:24.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:15:24.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:15:24.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:15:24.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:15:24.544 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:15:24.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:15:24.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:15:24.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:15:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.968793 -999.00  +12.80  18.05     45   +1.20 1 1 1 1 1     0    0 11.61 15.94 ZNESW 23.0 18.1 141.0 31.5 13.1 -25.6 12.9 -24.9 12.7 -23.8 13.0 -24.8
2025-11-25T01:15:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:15:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:15:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.968793
2025-11-25T01:15:24.552 [DEBUG] [Thread-200311] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:15:24.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:15:24.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:15:24.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:15:24.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:15:24.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:15:24.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:15:19', tmtdew=13.29, humidity=40.06, cloud=0.0, wind=25.92, temperature=12.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:15:19', seeing=0.8, atlas_timestamp='2025-11-24T23:15:03.715', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:13:00')
2025-11-25T01:15:24.655 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:15:24.667 [DEBUG] [Thread-200314] [transport.py] [_log()] starting thread (client mode): 0xd319feb0
2025-11-25T01:15:24.667 [DEBUG] [Thread-200314] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:15:24.682 [DEBUG] [Thread-200314] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:15:24.682 [INFO] [Thread-200314] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:15:24.690 [DEBUG] [Thread-200314] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:15:24.690 [DEBUG] [Thread-200314] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:15:24.690 [DEBUG] [Thread-200314] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:15:24.690 [DEBUG] [Thread-200314] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:15:24.690 [DEBUG] [Thread-200314] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:15:24.690 [DEBUG] [Thread-200314] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:15:24.690 [DEBUG] [Thread-200314] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] client lang: <none>
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] server lang: <none>
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] kex follows: False
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] Compression: none
2025-11-25T01:15:24.691 [DEBUG] [Thread-200314] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:15:24.749 [DEBUG] [Thread-200314] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:15:24.750 [DEBUG] [Thread-200314] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:15:24.750 [DEBUG] [Thread-200314] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:15:24.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:15:24.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:15:24.809 [DEBUG] [Thread-200314] [transport.py] [_log()] userauth is OK
2025-11-25T01:15:24.809 [DEBUG] [Thread-200314] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:15:24.809 [DEBUG] [Thread-200314] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:15:24.809 [DEBUG] [Thread-200314] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:15:24.810 [DEBUG] [Thread-200314] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:15:24.829 [INFO] [Thread-200314] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:15:24.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:15:24.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:15:25.671 [DEBUG] [Thread-200314] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:15:25.671 [DEBUG] [Thread-200314] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:15:25.719 [DEBUG] [Thread-200314] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:15:25.720 [DEBUG] [Thread-200314] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:15:25.728 [DEBUG] [Thread-200314] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:15:25.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:15:25.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:15:25.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:15:25.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:15:25.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:15:25.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:15:25.765 [DEBUG] [Thread-200314] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:15:31.058 [DEBUG] [Thread-200316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:15:34.592 [DEBUG] [Thread-200317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:15:49.723 [DEBUG] [Thread-200318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:15:52.064 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:15:55.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:15:55.784 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:15:55.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-11-25T01:15:56.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 15, 52), 13.41, 39.54, 0.0, 27.67, 12.9, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:15:56.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:15:52
2025-11-25T01:15:56.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:15:57.012 [DEBUG] [Thread-200319] [transport.py] [_log()] starting thread (client mode): 0xd31535b0
2025-11-25T01:15:57.013 [DEBUG] [Thread-200319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:15:57.018 [DEBUG] [Thread-200319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:15:57.018 [INFO] [Thread-200319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:15:57.024 [DEBUG] [Thread-200319] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:15:57.024 [DEBUG] [Thread-200319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:15:57.024 [DEBUG] [Thread-200319] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:15:57.024 [DEBUG] [Thread-200319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:15:57.024 [DEBUG] [Thread-200319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:15:57.024 [DEBUG] [Thread-200319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:15:57.025 [DEBUG] [Thread-200319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:15:57.025 [DEBUG] [Thread-200319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:15:57.025 [DEBUG] [Thread-200319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:15:57.025 [DEBUG] [Thread-200319] [transport.py] [_log()] client lang: <none>
2025-11-25T01:15:57.025 [DEBUG] [Thread-200319] [transport.py] [_log()] server lang: <none>
2025-11-25T01:15:57.025 [DEBUG] [Thread-200319] [transport.py] [_log()] kex follows: False
2025-11-25T01:15:57.025 [DEBUG] [Thread-200319] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:15:57.026 [DEBUG] [Thread-200319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:15:57.026 [DEBUG] [Thread-200319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:15:57.026 [DEBUG] [Thread-200319] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:15:57.026 [DEBUG] [Thread-200319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:15:57.026 [DEBUG] [Thread-200319] [transport.py] [_log()] Compression: none
2025-11-25T01:15:57.027 [DEBUG] [Thread-200319] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:15:57.062 [DEBUG] [Thread-200319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:15:57.068 [DEBUG] [Thread-200319] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:15:57.070 [DEBUG] [Thread-200319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:15:57.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:15:57.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:15:57.076 [DEBUG] [Thread-200319] [transport.py] [_log()] userauth is OK
2025-11-25T01:15:57.077 [DEBUG] [Thread-200319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:15:57.077 [DEBUG] [Thread-200319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:15:57.077 [DEBUG] [Thread-200319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:15:57.077 [DEBUG] [Thread-200319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:15:57.117 [INFO] [Thread-200319] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:15:57.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:15:57.753 [DEBUG] [Thread-200319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:15:57.754 [DEBUG] [Thread-200319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:15:57.757 [DEBUG] [Thread-200319] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:15:57.794 [DEBUG] [Thread-200319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:15:57.794 [DEBUG] [Thread-200319] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:15:57.798 [DEBUG] [Thread-200319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:15:57.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:15:57.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:15:57.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:15:57.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:15:57.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:15:57.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:15:57.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:15:57.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:15:57.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:15:57.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.968793 -999.00  +12.80  18.05     45   +1.20 1 1 1 1 1     0    0 11.61 15.94 ZNESW 23.0 18.1 141.0 31.5 13.1 -25.6 12.9 -24.9 12.7 -23.8 13.0 -24.8
2025-11-25T01:15:57.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:15:57.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:15:57.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.968793
2025-11-25T01:15:57.839 [DEBUG] [Thread-200319] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:15:57.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:15:57.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:15:57.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:15:57.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:15:57.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:15:57.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:15:52', tmtdew=13.41, humidity=39.54, cloud=0.0, wind=27.67, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:15:52', seeing=0.8, atlas_timestamp='2025-11-24T23:15:03.715', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:13:00')
2025-11-25T01:15:57.943 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:15:57.955 [DEBUG] [Thread-200322] [transport.py] [_log()] starting thread (client mode): 0xd0786770
2025-11-25T01:15:57.955 [DEBUG] [Thread-200322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:15:57.974 [DEBUG] [Thread-200322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:15:57.974 [INFO] [Thread-200322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:15:57.983 [DEBUG] [Thread-200322] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:15:57.983 [DEBUG] [Thread-200322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:15:57.983 [DEBUG] [Thread-200322] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:15:57.983 [DEBUG] [Thread-200322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:15:57.983 [DEBUG] [Thread-200322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:15:57.983 [DEBUG] [Thread-200322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:15:57.983 [DEBUG] [Thread-200322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:15:57.983 [DEBUG] [Thread-200322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:15:57.984 [DEBUG] [Thread-200322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:15:57.984 [DEBUG] [Thread-200322] [transport.py] [_log()] client lang: <none>
2025-11-25T01:15:57.984 [DEBUG] [Thread-200322] [transport.py] [_log()] server lang: <none>
2025-11-25T01:15:57.984 [DEBUG] [Thread-200322] [transport.py] [_log()] kex follows: False
2025-11-25T01:15:57.984 [DEBUG] [Thread-200322] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:15:57.984 [DEBUG] [Thread-200322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:15:57.984 [DEBUG] [Thread-200322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:15:57.984 [DEBUG] [Thread-200322] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:15:57.985 [DEBUG] [Thread-200322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:15:57.985 [DEBUG] [Thread-200322] [transport.py] [_log()] Compression: none
2025-11-25T01:15:57.985 [DEBUG] [Thread-200322] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:15:58.043 [DEBUG] [Thread-200322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:15:58.044 [DEBUG] [Thread-200322] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:15:58.044 [DEBUG] [Thread-200322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:15:58.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:15:58.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:15:58.100 [DEBUG] [Thread-200322] [transport.py] [_log()] userauth is OK
2025-11-25T01:15:58.100 [DEBUG] [Thread-200322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:15:58.100 [DEBUG] [Thread-200322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:15:58.100 [DEBUG] [Thread-200322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:15:58.100 [DEBUG] [Thread-200322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:15:58.114 [INFO] [Thread-200322] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:15:58.115 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:15:58.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:15:58.962 [DEBUG] [Thread-200322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:15:58.962 [DEBUG] [Thread-200322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:15:59.015 [DEBUG] [Thread-200322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:15:59.015 [DEBUG] [Thread-200322] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:15:59.023 [DEBUG] [Thread-200322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:15:59.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:15:59.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-11-25T01:15: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') -> 00000000
2025-11-25T01:15:59.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:15:59.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:15:59.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:15:59.056 [DEBUG] [Thread-200322] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:16:04.811 [DEBUG] [Thread-200324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:16:19.311 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:16:19.326 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:16:19.978 [DEBUG] [Thread-200325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:16:29.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:16:29.075 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:16:29.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-11-25T01:16:29.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 16, 25), 13.43, 39.48, 0.0, 27.44, 12.86, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:16:29.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:16:25
2025-11-25T01:16:30.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:16:30.208 [DEBUG] [Thread-200326] [transport.py] [_log()] starting thread (client mode): 0xd317faf0
2025-11-25T01:16:30.209 [DEBUG] [Thread-200326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:16:30.220 [DEBUG] [Thread-200326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:16:30.221 [INFO] [Thread-200326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] client lang: <none>
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] server lang: <none>
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] kex follows: False
2025-11-25T01:16:30.225 [DEBUG] [Thread-200326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:16:30.226 [DEBUG] [Thread-200326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:16:30.226 [DEBUG] [Thread-200326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:16:30.226 [DEBUG] [Thread-200326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:16:30.226 [DEBUG] [Thread-200326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:16:30.226 [DEBUG] [Thread-200326] [transport.py] [_log()] Compression: none
2025-11-25T01:16:30.226 [DEBUG] [Thread-200326] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:16:30.250 [DEBUG] [Thread-200326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:16:30.254 [DEBUG] [Thread-200326] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:16:30.255 [DEBUG] [Thread-200326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:16:30.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:16:30.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:16:30.260 [DEBUG] [Thread-200326] [transport.py] [_log()] userauth is OK
2025-11-25T01:16:30.261 [DEBUG] [Thread-200326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:16:30.261 [DEBUG] [Thread-200326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:16:30.261 [DEBUG] [Thread-200326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:16:30.261 [DEBUG] [Thread-200326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:16:30.284 [INFO] [Thread-200326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:16:30.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:16:30.894 [DEBUG] [Thread-200326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:16:30.895 [DEBUG] [Thread-200326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:16:30.897 [DEBUG] [Thread-200326] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:16:30.936 [DEBUG] [Thread-200326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:16:30.936 [DEBUG] [Thread-200326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:16:30.940 [DEBUG] [Thread-200326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:16:30.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:16:30.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:16:30.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:16:30.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:16:30.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:16:30.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:16:30.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:16:30.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:16:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:16:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.969140 -999.00  +12.80  16.39     45   +1.20 1 1 1 1 1     0    0 11.89 15.85 ZNESW 16.7 16.4 137.6 25.1 13.1 -25.5 12.9 -25.0 12.7 -23.8 13.0 -24.7
2025-11-25T01:16:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:16:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:16:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.969140
2025-11-25T01:16:30.975 [DEBUG] [Thread-200326] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:16:30.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:16:30.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:16:30.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:16:30.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:16:30.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:16:30.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:16:25', tmtdew=13.43, humidity=39.48, cloud=0.0, wind=27.44, temperature=12.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:16:25', seeing=0.8, atlas_timestamp='2025-11-24T23:15:33.696', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:13:00')
2025-11-25T01:16:31.077 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:16:31.088 [DEBUG] [Thread-200329] [transport.py] [_log()] starting thread (client mode): 0xc9b82980
2025-11-25T01:16:31.089 [DEBUG] [Thread-200329] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:16:31.104 [DEBUG] [Thread-200329] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:16:31.104 [INFO] [Thread-200329] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:16:31.112 [DEBUG] [Thread-200329] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] client lang: <none>
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] server lang: <none>
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] kex follows: False
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:16:31.113 [DEBUG] [Thread-200329] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:16:31.114 [DEBUG] [Thread-200329] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:16:31.114 [DEBUG] [Thread-200329] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:16:31.114 [DEBUG] [Thread-200329] [transport.py] [_log()] Compression: none
2025-11-25T01:16:31.114 [DEBUG] [Thread-200329] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:16:31.168 [DEBUG] [Thread-200329] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:16:31.169 [DEBUG] [Thread-200329] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:16:31.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:16:31.170 [DEBUG] [Thread-200329] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:16:31.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:16:31.224 [DEBUG] [Thread-200329] [transport.py] [_log()] userauth is OK
2025-11-25T01:16:31.225 [DEBUG] [Thread-200329] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:16:31.225 [DEBUG] [Thread-200329] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:16:31.225 [DEBUG] [Thread-200329] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:16:31.225 [DEBUG] [Thread-200329] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:16:31.245 [INFO] [Thread-200329] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:16:31.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:16:31.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:16:31.413 [DEBUG] [Thread-200331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:16:32.091 [DEBUG] [Thread-200329] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:16:32.092 [DEBUG] [Thread-200329] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:16:32.140 [DEBUG] [Thread-200329] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:16:32.140 [DEBUG] [Thread-200329] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:16:32.149 [DEBUG] [Thread-200329] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:16:32.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:16:32.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-11-25T01:16:32.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-11-25T01:16:32.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:16:32.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:16:32.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:16:32.196 [DEBUG] [Thread-200329] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:16:35.059 [DEBUG] [Thread-200332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:16:50.210 [DEBUG] [Thread-200333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:17:02.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:17:02.219 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:17:02.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-11-25T01:17:02.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 16, 58), 13.42, 39.51, 0.0, 27.31, 12.83, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:17:02.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:16:58
2025-11-25T01:17:03.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:17:03.301 [DEBUG] [Thread-200334] [transport.py] [_log()] starting thread (client mode): 0xd31f57e0
2025-11-25T01:17:03.302 [DEBUG] [Thread-200334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:17:03.317 [DEBUG] [Thread-200334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:17:03.317 [INFO] [Thread-200334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] client lang: <none>
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] server lang: <none>
2025-11-25T01:17:03.321 [DEBUG] [Thread-200334] [transport.py] [_log()] kex follows: False
2025-11-25T01:17:03.322 [DEBUG] [Thread-200334] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:17:03.322 [DEBUG] [Thread-200334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:17:03.322 [DEBUG] [Thread-200334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:17:03.322 [DEBUG] [Thread-200334] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:17:03.322 [DEBUG] [Thread-200334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:17:03.322 [DEBUG] [Thread-200334] [transport.py] [_log()] Compression: none
2025-11-25T01:17:03.322 [DEBUG] [Thread-200334] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:17:03.346 [DEBUG] [Thread-200334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:17:03.347 [DEBUG] [Thread-200334] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:17:03.347 [DEBUG] [Thread-200334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:17:03.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:17:03.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:17:03.388 [DEBUG] [Thread-200334] [transport.py] [_log()] userauth is OK
2025-11-25T01:17:03.389 [DEBUG] [Thread-200334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:17:03.389 [DEBUG] [Thread-200334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:17:03.389 [DEBUG] [Thread-200334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:17:03.389 [DEBUG] [Thread-200334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:17:03.405 [INFO] [Thread-200334] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:17:03.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:17:04.047 [DEBUG] [Thread-200334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:17:04.048 [DEBUG] [Thread-200334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:17:04.048 [DEBUG] [Thread-200334] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:17:04.088 [DEBUG] [Thread-200334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:17:04.088 [DEBUG] [Thread-200334] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:17:04.091 [DEBUG] [Thread-200334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:17:04.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:17:04.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:17:04.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:17:04.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:17:04.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:17:04.112 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:17:04.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:17:04.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:17:04.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:17:04.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.969488 -999.00  +12.80  21.42     44   +1.10 1 1 1 1 1     0    0 11.98 17.02 ZNESW 19.3 21.4 130.8 24.7 13.1 -25.4 12.9 -24.9 12.7 -23.8 12.9 -24.5
2025-11-25T01:17:04.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:17:04.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:17:04.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.969488
2025-11-25T01:17:04.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:17:04.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:17:04.119 [DEBUG] [Thread-200334] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:17:04.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:17:04.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:17:04.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:17:04.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:16:58', tmtdew=13.42, humidity=39.51, cloud=0.0, wind=27.31, temperature=12.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:16:58', seeing=0.85, atlas_timestamp='2025-11-24T23:16:03.763', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:13:00')
2025-11-25T01:17:04.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:17:04.205 [DEBUG] [Thread-200337] [transport.py] [_log()] starting thread (client mode): 0xd31f5c60
2025-11-25T01:17:04.205 [DEBUG] [Thread-200337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:17:04.220 [DEBUG] [Thread-200337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:17:04.220 [INFO] [Thread-200337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] client lang: <none>
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] server lang: <none>
2025-11-25T01:17:04.228 [DEBUG] [Thread-200337] [transport.py] [_log()] kex follows: False
2025-11-25T01:17:04.229 [DEBUG] [Thread-200337] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:17:04.229 [DEBUG] [Thread-200337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:17:04.229 [DEBUG] [Thread-200337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:17:04.229 [DEBUG] [Thread-200337] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:17:04.229 [DEBUG] [Thread-200337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:17:04.229 [DEBUG] [Thread-200337] [transport.py] [_log()] Compression: none
2025-11-25T01:17:04.229 [DEBUG] [Thread-200337] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:17:04.286 [DEBUG] [Thread-200337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:17:04.287 [DEBUG] [Thread-200337] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:17:04.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:17:04.289 [DEBUG] [Thread-200337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:17:04.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:17:04.345 [DEBUG] [Thread-200337] [transport.py] [_log()] userauth is OK
2025-11-25T01:17:04.345 [DEBUG] [Thread-200337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:17:04.345 [DEBUG] [Thread-200337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:17:04.345 [DEBUG] [Thread-200337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:17:04.346 [DEBUG] [Thread-200337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:17:04.361 [INFO] [Thread-200337] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:17:04.361 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:17:04.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:17:05.226 [DEBUG] [Thread-200337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:17:05.226 [DEBUG] [Thread-200337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:17:05.250 [DEBUG] [Thread-200339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:17:05.277 [DEBUG] [Thread-200337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:17:05.278 [DEBUG] [Thread-200337] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:17:05.289 [DEBUG] [Thread-200337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:17:05.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:17:05.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-11-25T01:17:05.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:17:05.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:17:05.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:17:05.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:17:05.321 [DEBUG] [Thread-200337] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:17:19.551 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:17:19.570 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:17:20.362 [DEBUG] [Thread-200340 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:17:31.708 [DEBUG] [Thread-200341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:17:35.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:17:35.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:17:35.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-11-25T01:17:35.417 [DEBUG] [Thread-200342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:17:36.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 17, 31), 13.38, 39.63, 0.0, 25.37, 12.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:17:36.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:17:31
2025-11-25T01:17:36.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:17:36.635 [DEBUG] [Thread-200343] [transport.py] [_log()] starting thread (client mode): 0xd31f5b10
2025-11-25T01:17:36.636 [DEBUG] [Thread-200343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:17:36.636 [DEBUG] [Thread-200343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:17:36.636 [INFO] [Thread-200343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:17:36.640 [DEBUG] [Thread-200343] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:17:36.640 [DEBUG] [Thread-200343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:17:36.640 [DEBUG] [Thread-200343] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:17:36.640 [DEBUG] [Thread-200343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] client lang: <none>
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] server lang: <none>
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] kex follows: False
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:17:36.641 [DEBUG] [Thread-200343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:17:36.642 [DEBUG] [Thread-200343] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:17:36.642 [DEBUG] [Thread-200343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:17:36.642 [DEBUG] [Thread-200343] [transport.py] [_log()] Compression: none
2025-11-25T01:17:36.642 [DEBUG] [Thread-200343] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:17:36.675 [DEBUG] [Thread-200343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:17:36.680 [DEBUG] [Thread-200343] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:17:36.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:17:36.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:17:36.686 [DEBUG] [Thread-200343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:17:36.687 [DEBUG] [Thread-200343] [transport.py] [_log()] userauth is OK
2025-11-25T01:17:36.688 [DEBUG] [Thread-200343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:17:36.688 [DEBUG] [Thread-200343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:17:36.688 [DEBUG] [Thread-200343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:17:36.688 [DEBUG] [Thread-200343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:17:36.701 [INFO] [Thread-200343] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:17:36.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:17:37.318 [DEBUG] [Thread-200343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:17:37.318 [DEBUG] [Thread-200343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:17:37.327 [DEBUG] [Thread-200343] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:17:37.359 [DEBUG] [Thread-200343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:17:37.359 [DEBUG] [Thread-200343] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:17:37.362 [DEBUG] [Thread-200343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:17:37.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:17:37.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:17:37.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:17:37.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:17:37.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:17:37.392 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:17:37.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:17:37.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:17:37.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:17:37.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.969835 -999.00  +12.80  17.33     45   +1.10 1 1 1 1 1     0    0 12.00 17.22 ZNESW 19.4 17.3 134.8 24.3 13.1 -25.4 12.9 -24.9 12.7 -23.6 13.0 -24.7
2025-11-25T01:17:37.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:17:37.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:17:37.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.969835
2025-11-25T01:17:37.400 [DEBUG] [Thread-200343] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:17:37.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:17:37.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:17:37.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:17:37.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:17:37.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:17:37.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:17:31', tmtdew=13.38, humidity=39.63, cloud=0.0, wind=25.37, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:17:31', seeing=0.78, atlas_timestamp='2025-11-24T23:16:33.744', atlas_cloud=1, atlas_rain=1, zp_data=[-0.026250000000000995, -0.04574999999999996, 0.02224999999999966, -0.0235000000000003, 0.022999999999999687, 0.0892500000000016, 0.0039999999999995595, -0.029749999999999943, -0.005500000000001393, -0.0009999999999994458, 0.03524999999999956, -0.006000000000000227, 0.08399999999999963, 0.09424999999999883, 0.010999999999999233, -0.03200000000000003, 0.01624999999999943, 0.0035000000000007248, 0.013499999999998735, -0.04425000000000168, 0.08799999999999919, 0.0747499999999981, 0.026250000000000995, -0.02474999999999916, -0.00300000000000189, 0.010500000000000398, -0.02775000000000105, 0.027499999999999858, 0.09499999999999886, 0.049000000000001265, 0.06600000000000072, 0.03049999999999997, -0.01925000000000132], zp_timestamp='2025-11-24T23:13:00')
2025-11-25T01:17:37.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:17:37.520 [DEBUG] [Thread-200346] [transport.py] [_log()] starting thread (client mode): 0xd31f4ac0
2025-11-25T01:17:37.521 [DEBUG] [Thread-200346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:17:37.537 [DEBUG] [Thread-200346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:17:37.537 [INFO] [Thread-200346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:17:37.544 [DEBUG] [Thread-200346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:17:37.544 [DEBUG] [Thread-200346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] client lang: <none>
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] server lang: <none>
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] kex follows: False
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] Compression: none
2025-11-25T01:17:37.545 [DEBUG] [Thread-200346] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:17:37.605 [DEBUG] [Thread-200346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:17:37.605 [DEBUG] [Thread-200346] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:17:37.606 [DEBUG] [Thread-200346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:17:37.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:17:37.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:17:37.661 [DEBUG] [Thread-200346] [transport.py] [_log()] userauth is OK
2025-11-25T01:17:37.661 [DEBUG] [Thread-200346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:17:37.661 [DEBUG] [Thread-200346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:17:37.661 [DEBUG] [Thread-200346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:17:37.661 [DEBUG] [Thread-200346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:17:37.681 [INFO] [Thread-200346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:17:37.681 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:17:37.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:17:38.536 [DEBUG] [Thread-200346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:17:38.536 [DEBUG] [Thread-200346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:17:38.584 [DEBUG] [Thread-200346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:17:38.584 [DEBUG] [Thread-200346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:17:38.592 [DEBUG] [Thread-200346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:17:38.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:17:38.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:17:38.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-11-25T01:17:38.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:17:38.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:17:38.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:17:38.627 [DEBUG] [Thread-200346] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:17:50.511 [DEBUG] [Thread-200348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:18:05.669 [DEBUG] [Thread-200349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:18:08.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:18:08.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:18:08.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-11-25T01:18:09.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 18, 4), 13.37, 39.63, 0.0, 23.87, 12.78, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:18:09.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:18:04
2025-11-25T01:18:09.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:18:09.873 [DEBUG] [Thread-200350] [transport.py] [_log()] starting thread (client mode): 0xd31f69b0
2025-11-25T01:18:09.874 [DEBUG] [Thread-200350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:18:09.886 [DEBUG] [Thread-200350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:18:09.886 [INFO] [Thread-200350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:18:09.893 [DEBUG] [Thread-200350] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:18:09.894 [DEBUG] [Thread-200350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:18:09.894 [DEBUG] [Thread-200350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:18:09.894 [DEBUG] [Thread-200350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:18:09.894 [DEBUG] [Thread-200350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:18:09.894 [DEBUG] [Thread-200350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:18:09.894 [DEBUG] [Thread-200350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:18:09.894 [DEBUG] [Thread-200350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:18:09.894 [DEBUG] [Thread-200350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:18:09.894 [DEBUG] [Thread-200350] [transport.py] [_log()] client lang: <none>
2025-11-25T01:18:09.895 [DEBUG] [Thread-200350] [transport.py] [_log()] server lang: <none>
2025-11-25T01:18:09.895 [DEBUG] [Thread-200350] [transport.py] [_log()] kex follows: False
2025-11-25T01:18:09.895 [DEBUG] [Thread-200350] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:18:09.896 [DEBUG] [Thread-200350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:18:09.896 [DEBUG] [Thread-200350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:18:09.896 [DEBUG] [Thread-200350] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:18:09.896 [DEBUG] [Thread-200350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:18:09.897 [DEBUG] [Thread-200350] [transport.py] [_log()] Compression: none
2025-11-25T01:18:09.897 [DEBUG] [Thread-200350] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:18:09.937 [DEBUG] [Thread-200350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:18:09.944 [DEBUG] [Thread-200350] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:18:09.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:18:09.949 [DEBUG] [Thread-200350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:18:09.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:18:09.952 [DEBUG] [Thread-200350] [transport.py] [_log()] userauth is OK
2025-11-25T01:18:09.953 [DEBUG] [Thread-200350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:18:09.953 [DEBUG] [Thread-200350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:18:09.953 [DEBUG] [Thread-200350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:18:09.954 [DEBUG] [Thread-200350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:18:09.983 [INFO] [Thread-200350] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:18:09.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:18:10.581 [DEBUG] [Thread-200350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:18:10.581 [DEBUG] [Thread-200350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:18:10.582 [DEBUG] [Thread-200350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:18:10.622 [DEBUG] [Thread-200350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:18:10.622 [DEBUG] [Thread-200350] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:18:10.625 [DEBUG] [Thread-200350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:18:10.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:18:10.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:18:10.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:18:10.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:18:10.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:18:10.645 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:18:10.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:18:10.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:18:10.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:18:10.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.970529 -999.00  +12.80  17.41     44   +1.10 1 1 1 1 1     0    0 12.10 18.20 ZNESW 16.8 17.4 140.6 27.5 13.0 -25.0 12.9 -24.6 12.7 -23.6 12.9 -24.3
2025-11-25T01:18:10.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:18:10.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:18:10.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.970529
2025-11-25T01:18:10.652 [DEBUG] [Thread-200350] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:18:10.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:18:10.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:18:10.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:18:10.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:18:10.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:18:10.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:18:04', tmtdew=13.37, humidity=39.63, cloud=0.0, wind=23.87, temperature=12.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:18:04', seeing=0.79, atlas_timestamp='2025-11-24T23:17:33.706', atlas_cloud=1, atlas_rain=1, zp_data=[-0.038750000000000284, -0.02874999999999872, -0.011749999999999261, -0.0065000000000008384, 0.02149999999999963, 0.0832499999999996, 0.006999999999999673, -0.00274999999999892, 0.01699999999999946, -0.019000000000000128, 0.028249999999999886, -0.03200000000000003, 0.09600000000000009, 0.10174999999999912, 0.0365000000000002, -0.014000000000001123, 0.025249999999999773, -0.005499999999999616, 0.021999999999998465, -0.03725000000000023, 0.08249999999999957, 0.06824999999999903, 0.020250000000000767, 0.0007500000000000284, 0.02299999999999791, 0.005499999999999616, -0.04025000000000034, 0.0625, 0.09800000000000075, 0.11700000000000088, 0.06700000000000017, 0.01150000000000162, -0.02925000000000111], zp_timestamp='2025-11-24T23:16:00')
2025-11-25T01:18:10.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:18:10.748 [DEBUG] [Thread-200353] [transport.py] [_log()] starting thread (client mode): 0xd31f4700
2025-11-25T01:18:10.748 [DEBUG] [Thread-200353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:18:10.766 [DEBUG] [Thread-200353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:18:10.766 [INFO] [Thread-200353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] client lang: <none>
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] server lang: <none>
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] kex follows: False
2025-11-25T01:18:10.773 [DEBUG] [Thread-200353] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:18:10.774 [DEBUG] [Thread-200353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:18:10.774 [DEBUG] [Thread-200353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:18:10.774 [DEBUG] [Thread-200353] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:18:10.774 [DEBUG] [Thread-200353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:18:10.774 [DEBUG] [Thread-200353] [transport.py] [_log()] Compression: none
2025-11-25T01:18:10.774 [DEBUG] [Thread-200353] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:18:10.831 [DEBUG] [Thread-200353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:18:10.831 [DEBUG] [Thread-200353] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:18:10.831 [DEBUG] [Thread-200353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:18:10.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:18:10.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:18:10.892 [DEBUG] [Thread-200353] [transport.py] [_log()] userauth is OK
2025-11-25T01:18:10.892 [DEBUG] [Thread-200353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:18:10.892 [DEBUG] [Thread-200353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:18:10.892 [DEBUG] [Thread-200353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:18:10.892 [DEBUG] [Thread-200353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:18:10.906 [INFO] [Thread-200353] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:18:10.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:18:10.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:18:11.785 [DEBUG] [Thread-200353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:18:11.785 [DEBUG] [Thread-200353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:18:11.833 [DEBUG] [Thread-200353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:18:11.833 [DEBUG] [Thread-200353] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:18:11.843 [DEBUG] [Thread-200353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:18:11.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:18:11.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:18:11.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-11-25T01:18:11.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:18:11.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:18:11.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:18:11.880 [DEBUG] [Thread-200353] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:18:19.773 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:18:19.775 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:18:20.736 [DEBUG] [Thread-200355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:18:32.010 [DEBUG] [Thread-200356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:18:35.858 [DEBUG] [Thread-200357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:18:41.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:18:41.881 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:18:41.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-11-25T01:18:42.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 18, 37), 13.32, 39.78, 0.0, 26.15, 12.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:18:42.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:18:37
2025-11-25T01:18:42.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:18:43.166 [DEBUG] [Thread-200358] [transport.py] [_log()] starting thread (client mode): 0xd319ebf0
2025-11-25T01:18:43.167 [DEBUG] [Thread-200358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:18:43.178 [DEBUG] [Thread-200358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:18:43.178 [INFO] [Thread-200358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] client lang: <none>
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] server lang: <none>
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] kex follows: False
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:18:43.183 [DEBUG] [Thread-200358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:18:43.184 [DEBUG] [Thread-200358] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:18:43.184 [DEBUG] [Thread-200358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:18:43.184 [DEBUG] [Thread-200358] [transport.py] [_log()] Compression: none
2025-11-25T01:18:43.184 [DEBUG] [Thread-200358] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:18:43.213 [DEBUG] [Thread-200358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:18:43.217 [DEBUG] [Thread-200358] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:18:43.218 [DEBUG] [Thread-200358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:18:43.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:18:43.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:18:43.223 [DEBUG] [Thread-200358] [transport.py] [_log()] userauth is OK
2025-11-25T01:18:43.223 [DEBUG] [Thread-200358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:18:43.223 [DEBUG] [Thread-200358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:18:43.223 [DEBUG] [Thread-200358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:18:43.223 [DEBUG] [Thread-200358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:18:43.241 [INFO] [Thread-200358] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:18:43.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:18:43.883 [DEBUG] [Thread-200358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:18:43.883 [DEBUG] [Thread-200358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:18:43.884 [DEBUG] [Thread-200358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:18:43.924 [DEBUG] [Thread-200358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:18:43.925 [DEBUG] [Thread-200358] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:18:43.928 [DEBUG] [Thread-200358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:18:43.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:18:43.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:18:43.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:18:43.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:18:43.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:18:43.956 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:18:43.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:18:43.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:18:43.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:18:43.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.970876 -999.00  +12.70  18.70     45   +1.10 1 1 1 1 1     0    0 12.38 18.67 ZNESW 16.4 18.7 129.2 23.2 13.0 -25.2 12.9 -24.7 12.7 -23.5 12.9 -24.4
2025-11-25T01:18:43.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:18:43.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:18:43.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.970876
2025-11-25T01:18:43.964 [DEBUG] [Thread-200358] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:18:43.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:18:43.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:18:43.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:18:43.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:18:43.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:18:43.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:18:37', tmtdew=13.32, humidity=39.78, cloud=0.0, wind=26.15, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:18:37', seeing=0.79, atlas_timestamp='2025-11-24T23:18:03.686', atlas_cloud=1, atlas_rain=1, zp_data=[-0.038750000000000284, -0.02874999999999872, -0.011749999999999261, -0.0065000000000008384, 0.02149999999999963, 0.0832499999999996, 0.006999999999999673, -0.00274999999999892, 0.01699999999999946, -0.019000000000000128, 0.028249999999999886, -0.03200000000000003, 0.09600000000000009, 0.10174999999999912, 0.0365000000000002, -0.014000000000001123, 0.025249999999999773, -0.005499999999999616, 0.021999999999998465, -0.03725000000000023, 0.08249999999999957, 0.06824999999999903, 0.020250000000000767, 0.0007500000000000284, 0.02299999999999791, 0.005499999999999616, -0.04025000000000034, 0.0625, 0.09800000000000075, 0.11700000000000088, 0.06700000000000017, 0.01150000000000162, -0.02925000000000111], zp_timestamp='2025-11-24T23:16:00')
2025-11-25T01:18:44.078 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:18:44.090 [DEBUG] [Thread-200361] [transport.py] [_log()] starting thread (client mode): 0xd07871c0
2025-11-25T01:18:44.090 [DEBUG] [Thread-200361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:18:44.105 [DEBUG] [Thread-200361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:18:44.105 [INFO] [Thread-200361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:18:44.112 [DEBUG] [Thread-200361] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:18:44.112 [DEBUG] [Thread-200361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:18:44.112 [DEBUG] [Thread-200361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:18:44.112 [DEBUG] [Thread-200361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] client lang: <none>
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] server lang: <none>
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] kex follows: False
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:18:44.113 [DEBUG] [Thread-200361] [transport.py] [_log()] Compression: none
2025-11-25T01:18:44.114 [DEBUG] [Thread-200361] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:18:44.172 [DEBUG] [Thread-200361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:18:44.173 [DEBUG] [Thread-200361] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:18:44.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:18:44.173 [DEBUG] [Thread-200361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:18:44.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:18:44.229 [DEBUG] [Thread-200361] [transport.py] [_log()] userauth is OK
2025-11-25T01:18:44.229 [DEBUG] [Thread-200361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:18:44.229 [DEBUG] [Thread-200361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:18:44.229 [DEBUG] [Thread-200361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:18:44.229 [DEBUG] [Thread-200361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:18:44.253 [INFO] [Thread-200361] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:18:44.253 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:18:44.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:18:45.096 [DEBUG] [Thread-200361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:18:45.097 [DEBUG] [Thread-200361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:18:45.144 [DEBUG] [Thread-200361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:18:45.145 [DEBUG] [Thread-200361] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:18:45.154 [DEBUG] [Thread-200361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:18:45.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:18: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-11-25T01:18: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-11-25T01:18:45.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:18:45.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:18:45.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:18:45.197 [DEBUG] [Thread-200361] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:18:50.927 [DEBUG] [Thread-200363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:19:06.105 [DEBUG] [Thread-200364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:19:15.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:19:15.207 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:19:15.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-11-25T01:19:16.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 19, 10), 13.25, 39.94, 0.0, 27.38, 12.76, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:19:16.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:19:10
2025-11-25T01:19:16.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:19:16.510 [DEBUG] [Thread-200365] [transport.py] [_log()] starting thread (client mode): 0xd0785d80
2025-11-25T01:19:16.511 [DEBUG] [Thread-200365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:19:16.524 [DEBUG] [Thread-200365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:19:16.525 [INFO] [Thread-200365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:19:16.531 [DEBUG] [Thread-200365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:19:16.531 [DEBUG] [Thread-200365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:19:16.531 [DEBUG] [Thread-200365] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:19:16.531 [DEBUG] [Thread-200365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:19:16.531 [DEBUG] [Thread-200365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:19:16.531 [DEBUG] [Thread-200365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:19:16.531 [DEBUG] [Thread-200365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:19:16.531 [DEBUG] [Thread-200365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:19:16.531 [DEBUG] [Thread-200365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:19:16.532 [DEBUG] [Thread-200365] [transport.py] [_log()] client lang: <none>
2025-11-25T01:19:16.532 [DEBUG] [Thread-200365] [transport.py] [_log()] server lang: <none>
2025-11-25T01:19:16.532 [DEBUG] [Thread-200365] [transport.py] [_log()] kex follows: False
2025-11-25T01:19:16.532 [DEBUG] [Thread-200365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:19:16.533 [DEBUG] [Thread-200365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:19:16.533 [DEBUG] [Thread-200365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:19:16.533 [DEBUG] [Thread-200365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:19:16.533 [DEBUG] [Thread-200365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:19:16.533 [DEBUG] [Thread-200365] [transport.py] [_log()] Compression: none
2025-11-25T01:19:16.533 [DEBUG] [Thread-200365] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:19:16.568 [DEBUG] [Thread-200365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:19:16.574 [DEBUG] [Thread-200365] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:19:16.575 [DEBUG] [Thread-200365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:19:16.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:19:16.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:19:16.581 [DEBUG] [Thread-200365] [transport.py] [_log()] userauth is OK
2025-11-25T01:19:16.581 [DEBUG] [Thread-200365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:19:16.581 [DEBUG] [Thread-200365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:19:16.581 [DEBUG] [Thread-200365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:19:16.581 [DEBUG] [Thread-200365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:19:16.619 [INFO] [Thread-200365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:19:16.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:19:17.278 [DEBUG] [Thread-200365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:19:17.279 [DEBUG] [Thread-200365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:19:17.290 [DEBUG] [Thread-200365] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:19:17.320 [DEBUG] [Thread-200365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:19:17.320 [DEBUG] [Thread-200365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:19:17.324 [DEBUG] [Thread-200365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:19:17.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:19:17.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:19:17.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:19:17.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:19:17.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:19:17.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:19:17.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:19:17.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:19:17.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:19:17.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.971224 -999.00  +12.70  19.46     45   +1.20 1 1 1 1 1     0    0 11.78 16.65 ZNESW 15.6 19.5 132.6 22.2 13.1 -25.0 12.9 -24.8 12.7 -23.5 12.9 -24.4
2025-11-25T01:19:17.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:19:17.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:19:17.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.971224
2025-11-25T01:19:17.360 [DEBUG] [Thread-200365] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:19:17.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:19:17.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:19:17.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:19:17.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:19:17.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:19:17.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:19:10', tmtdew=13.25, humidity=39.94, cloud=0.0, wind=27.38, temperature=12.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:19:10', seeing=0.89, atlas_timestamp='2025-11-24T23:18:33.754', atlas_cloud=1, atlas_rain=1, zp_data=[-0.038750000000000284, -0.02874999999999872, -0.011749999999999261, -0.0065000000000008384, 0.02149999999999963, 0.0832499999999996, 0.006999999999999673, -0.00274999999999892, 0.01699999999999946, -0.019000000000000128, 0.028249999999999886, -0.03200000000000003, 0.09600000000000009, 0.10174999999999912, 0.0365000000000002, -0.014000000000001123, 0.025249999999999773, -0.005499999999999616, 0.021999999999998465, -0.03725000000000023, 0.08249999999999957, 0.06824999999999903, 0.020250000000000767, 0.0007500000000000284, 0.02299999999999791, 0.005499999999999616, -0.04025000000000034, 0.0625, 0.09800000000000075, 0.11700000000000088, 0.06700000000000017, 0.01150000000000162, -0.02925000000000111], zp_timestamp='2025-11-24T23:16:00')
2025-11-25T01:19:17.451 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:19:17.462 [DEBUG] [Thread-200368] [transport.py] [_log()] starting thread (client mode): 0xd0712b00
2025-11-25T01:19:17.462 [DEBUG] [Thread-200368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:19:17.478 [DEBUG] [Thread-200368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:19:17.478 [INFO] [Thread-200368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:19:17.488 [DEBUG] [Thread-200368] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:19:17.488 [DEBUG] [Thread-200368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:19:17.488 [DEBUG] [Thread-200368] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:19:17.488 [DEBUG] [Thread-200368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:19:17.488 [DEBUG] [Thread-200368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:19:17.489 [DEBUG] [Thread-200368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:19:17.489 [DEBUG] [Thread-200368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:19:17.489 [DEBUG] [Thread-200368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:19:17.489 [DEBUG] [Thread-200368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:19:17.489 [DEBUG] [Thread-200368] [transport.py] [_log()] client lang: <none>
2025-11-25T01:19:17.489 [DEBUG] [Thread-200368] [transport.py] [_log()] server lang: <none>
2025-11-25T01:19:17.489 [DEBUG] [Thread-200368] [transport.py] [_log()] kex follows: False
2025-11-25T01:19:17.489 [DEBUG] [Thread-200368] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:19:17.489 [DEBUG] [Thread-200368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:19:17.490 [DEBUG] [Thread-200368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:19:17.490 [DEBUG] [Thread-200368] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:19:17.490 [DEBUG] [Thread-200368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:19:17.490 [DEBUG] [Thread-200368] [transport.py] [_log()] Compression: none
2025-11-25T01:19:17.490 [DEBUG] [Thread-200368] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:19:17.544 [DEBUG] [Thread-200368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:19:17.545 [DEBUG] [Thread-200368] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:19:17.545 [DEBUG] [Thread-200368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:19:17.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:19:17.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:19:17.600 [DEBUG] [Thread-200368] [transport.py] [_log()] userauth is OK
2025-11-25T01:19:17.601 [DEBUG] [Thread-200368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:19:17.601 [DEBUG] [Thread-200368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:19:17.601 [DEBUG] [Thread-200368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:19:17.601 [DEBUG] [Thread-200368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:19:17.625 [INFO] [Thread-200368] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:19:17.625 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:19:17.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:19:18.474 [DEBUG] [Thread-200368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:19:18.474 [DEBUG] [Thread-200368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:19:18.522 [DEBUG] [Thread-200368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:19:18.522 [DEBUG] [Thread-200368] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:19:18.530 [DEBUG] [Thread-200368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:19:18.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:19:18.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-11-25T01:19:18.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-11-25T01:19:18.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:19:18.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:19:18.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:19:18.566 [DEBUG] [Thread-200368] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:19:19.993 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:19:19.995 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:19:21.166 [DEBUG] [Thread-200370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:19:32.328 [DEBUG] [Thread-200371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:19:34.928 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:19:36.255 [DEBUG] [Thread-200372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:19:48.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:19:48.598 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:19:48.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:19:49.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 19, 43), 13.19, 39.99, 0.0, 21.9, 12.75, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:19:49.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:19:43
2025-11-25T01:19:49.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:19:49.937 [DEBUG] [Thread-200373] [transport.py] [_log()] starting thread (client mode): 0xd319f670
2025-11-25T01:19:49.938 [DEBUG] [Thread-200373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:19:49.949 [DEBUG] [Thread-200373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:19:49.949 [INFO] [Thread-200373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:19:49.953 [DEBUG] [Thread-200373] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:19:49.953 [DEBUG] [Thread-200373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:19:49.953 [DEBUG] [Thread-200373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] client lang: <none>
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] server lang: <none>
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] kex follows: False
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] Compression: none
2025-11-25T01:19:49.954 [DEBUG] [Thread-200373] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:19:49.981 [DEBUG] [Thread-200373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:19:49.984 [DEBUG] [Thread-200373] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:19:49.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:19:49.986 [DEBUG] [Thread-200373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:19:49.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:19:49.988 [DEBUG] [Thread-200373] [transport.py] [_log()] userauth is OK
2025-11-25T01:19:49.988 [DEBUG] [Thread-200373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:19:49.988 [DEBUG] [Thread-200373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:19:49.988 [DEBUG] [Thread-200373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:19:49.988 [DEBUG] [Thread-200373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:19:50.006 [INFO] [Thread-200373] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:19:50.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:19:50.653 [DEBUG] [Thread-200373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:19:50.653 [DEBUG] [Thread-200373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:19:50.654 [DEBUG] [Thread-200373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:19:50.694 [DEBUG] [Thread-200373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:19:50.694 [DEBUG] [Thread-200373] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:19:50.697 [DEBUG] [Thread-200373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:19:50.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:19:50.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:19:50.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:19:50.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:19:50.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:19:50.727 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:19:50.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:19:50.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:19:50.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:19:50.730 [DEBUG] [Thread-200373] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:19:50.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.971571 -999.00  +12.60  15.59     45   +1.20 1 1 1 1 1     0    0 11.92 14.85 ZNESW 17.3 15.6 131.8 22.4 13.0 -25.1 12.9 -24.6 12.7 -23.5 12.9 -24.3
2025-11-25T01:19:50.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:19:50.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:19:50.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.971571
2025-11-25T01:19:50.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:19:50.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:19:50.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:19:50.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:19:50.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:19:50.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:19:43', tmtdew=13.19, humidity=39.99, cloud=0.0, wind=21.9, temperature=12.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:19:43', seeing=0.76, atlas_timestamp='2025-11-24T23:19:03.734', atlas_cloud=1, atlas_rain=1, zp_data=[-0.038750000000000284, -0.02874999999999872, -0.011749999999999261, -0.0065000000000008384, 0.02149999999999963, 0.0832499999999996, 0.006999999999999673, -0.00274999999999892, 0.01699999999999946, -0.019000000000000128, 0.028249999999999886, -0.03200000000000003, 0.09600000000000009, 0.10174999999999912, 0.0365000000000002, -0.014000000000001123, 0.025249999999999773, -0.005499999999999616, 0.021999999999998465, -0.03725000000000023, 0.08249999999999957, 0.06824999999999903, 0.020250000000000767, 0.0007500000000000284, 0.02299999999999791, 0.005499999999999616, -0.04025000000000034, 0.0625, 0.09800000000000075, 0.11700000000000088, 0.06700000000000017, 0.01150000000000162, -0.02925000000000111], zp_timestamp='2025-11-24T23:16:00')
2025-11-25T01:19:50.817 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:19:50.830 [DEBUG] [Thread-200376] [transport.py] [_log()] starting thread (client mode): 0xd0786770
2025-11-25T01:19:50.830 [DEBUG] [Thread-200376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:19:50.845 [DEBUG] [Thread-200376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:19:50.845 [INFO] [Thread-200376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] client lang: <none>
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] server lang: <none>
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] kex follows: False
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:19:50.853 [DEBUG] [Thread-200376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:19:50.854 [DEBUG] [Thread-200376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:19:50.854 [DEBUG] [Thread-200376] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:19:50.854 [DEBUG] [Thread-200376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:19:50.854 [DEBUG] [Thread-200376] [transport.py] [_log()] Compression: none
2025-11-25T01:19:50.854 [DEBUG] [Thread-200376] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:19:50.913 [DEBUG] [Thread-200376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:19:50.913 [DEBUG] [Thread-200376] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:19:50.914 [DEBUG] [Thread-200376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:19:50.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:19:50.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:19:50.969 [DEBUG] [Thread-200376] [transport.py] [_log()] userauth is OK
2025-11-25T01:19:50.969 [DEBUG] [Thread-200376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:19:50.969 [DEBUG] [Thread-200376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:19:50.969 [DEBUG] [Thread-200376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:19:50.969 [DEBUG] [Thread-200376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:19:50.987 [INFO] [Thread-200376] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:19:50.987 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:19:50.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:19:51.305 [DEBUG] [Thread-200378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:19:51.884 [DEBUG] [Thread-200376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:19:51.884 [DEBUG] [Thread-200376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:19:51.932 [DEBUG] [Thread-200376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:19:51.933 [DEBUG] [Thread-200376] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:19:51.941 [DEBUG] [Thread-200376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:19:51.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:19:51.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-11-25T01:19: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') -> 00000000
2025-11-25T01:19:51.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:19:51.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:19:51.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:19:51.977 [DEBUG] [Thread-200376] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:20:06.456 [DEBUG] [Thread-200379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:20:20.221 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:20:20.239 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:20:21.504 [DEBUG] [Thread-200380 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:20:22.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:20:22.001 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:20:22.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-11-25T01:20:22.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 20, 16), 13.19, 39.99, 0.0, 26.04, 12.75, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:20:22.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:20:16
2025-11-25T01:20:23.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:20:23.277 [DEBUG] [Thread-200381] [transport.py] [_log()] starting thread (client mode): 0xd07cf580
2025-11-25T01:20:23.278 [DEBUG] [Thread-200381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:20:23.282 [DEBUG] [Thread-200381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:20:23.282 [INFO] [Thread-200381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] client lang: <none>
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] server lang: <none>
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] kex follows: False
2025-11-25T01:20:23.286 [DEBUG] [Thread-200381] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:20:23.287 [DEBUG] [Thread-200381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:20:23.287 [DEBUG] [Thread-200381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:20:23.287 [DEBUG] [Thread-200381] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:20:23.287 [DEBUG] [Thread-200381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:20:23.287 [DEBUG] [Thread-200381] [transport.py] [_log()] Compression: none
2025-11-25T01:20:23.287 [DEBUG] [Thread-200381] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:20:23.317 [DEBUG] [Thread-200381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:20:23.320 [DEBUG] [Thread-200381] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:20:23.321 [DEBUG] [Thread-200381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:20:23.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:20:23.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:20:23.325 [DEBUG] [Thread-200381] [transport.py] [_log()] userauth is OK
2025-11-25T01:20:23.325 [DEBUG] [Thread-200381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:20:23.325 [DEBUG] [Thread-200381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:20:23.325 [DEBUG] [Thread-200381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:20:23.325 [DEBUG] [Thread-200381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:20:23.346 [INFO] [Thread-200381] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:20:23.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:20:23.980 [DEBUG] [Thread-200381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:20:23.980 [DEBUG] [Thread-200381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:20:23.981 [DEBUG] [Thread-200381] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:20:24.021 [DEBUG] [Thread-200381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:20:24.021 [DEBUG] [Thread-200381] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:20:24.023 [DEBUG] [Thread-200381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:20:24.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:20:24.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:20:24.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:20:24.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:20:24.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:20:24.046 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:20:24.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:20:24.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:20:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:20:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.971918 -999.00  +12.60  16.78     45   +1.10 1 1 1 1 1     0    0 11.73 15.71 ZNESW 20.1 16.8 137.6 21.9 13.0 -25.0 12.9 -24.6 12.6 -23.5 12.9 -24.1
2025-11-25T01:20:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:20:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:20:24.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.971918
2025-11-25T01:20:24.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:20:24.065 [DEBUG] [Thread-200381] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:20:24.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:20:24.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:20:24.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:20:24.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:20:24.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:20:16', tmtdew=13.19, humidity=39.99, cloud=0.0, wind=26.04, temperature=12.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:20:16', seeing=0.7, atlas_timestamp='2025-11-24T23:19:33.715', atlas_cloud=1, atlas_rain=1, zp_data=[-0.038750000000000284, -0.02874999999999872, -0.011749999999999261, -0.0065000000000008384, 0.02149999999999963, 0.0832499999999996, 0.006999999999999673, -0.00274999999999892, 0.01699999999999946, -0.019000000000000128, 0.028249999999999886, -0.03200000000000003, 0.09600000000000009, 0.10174999999999912, 0.0365000000000002, -0.014000000000001123, 0.025249999999999773, -0.005499999999999616, 0.021999999999998465, -0.03725000000000023, 0.08249999999999957, 0.06824999999999903, 0.020250000000000767, 0.0007500000000000284, 0.02299999999999791, 0.005499999999999616, -0.04025000000000034, 0.0625, 0.09800000000000075, 0.11700000000000088, 0.06700000000000017, 0.01150000000000162, -0.02925000000000111], zp_timestamp='2025-11-24T23:16:00')
2025-11-25T01:20:24.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:20:24.153 [DEBUG] [Thread-200384] [transport.py] [_log()] starting thread (client mode): 0xd07cf490
2025-11-25T01:20:24.153 [DEBUG] [Thread-200384] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:20:24.173 [DEBUG] [Thread-200384] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:20:24.173 [INFO] [Thread-200384] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:20:24.186 [DEBUG] [Thread-200384] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] client lang: <none>
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] server lang: <none>
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] kex follows: False
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] Compression: none
2025-11-25T01:20:24.187 [DEBUG] [Thread-200384] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:20:24.249 [DEBUG] [Thread-200384] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:20:24.249 [DEBUG] [Thread-200384] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:20:24.249 [DEBUG] [Thread-200384] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:20:24.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:20:24.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:20:24.311 [DEBUG] [Thread-200384] [transport.py] [_log()] userauth is OK
2025-11-25T01:20:24.311 [DEBUG] [Thread-200384] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:20:24.311 [DEBUG] [Thread-200384] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:20:24.312 [DEBUG] [Thread-200384] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:20:24.312 [DEBUG] [Thread-200384] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:20:24.329 [INFO] [Thread-200384] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:20:24.329 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:20:24.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:20:25.218 [DEBUG] [Thread-200384] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:20:25.219 [DEBUG] [Thread-200384] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:20:25.269 [DEBUG] [Thread-200384] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:20:25.269 [DEBUG] [Thread-200384] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:20:25.281 [DEBUG] [Thread-200384] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:20:25.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:20:25.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-11-25T01:20:25.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-11-25T01:20:25.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:20:25.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:20:25.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:20:25.317 [DEBUG] [Thread-200384] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:20:32.659 [DEBUG] [Thread-200386 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:20:36.555 [DEBUG] [Thread-200387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:20:51.695 [DEBUG] [Thread-200388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:20:55.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:20:55.350 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:20:55.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-11-25T01:20:56.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 20, 49), 13.24, 40.21, 0.0, 24.23, 12.7, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:20:56.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:20:49
2025-11-25T01:20:56.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:20:56.580 [DEBUG] [Thread-200389] [transport.py] [_log()] starting thread (client mode): 0xd31f57b0
2025-11-25T01:20:56.581 [DEBUG] [Thread-200389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:20:56.592 [DEBUG] [Thread-200389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:20:56.592 [INFO] [Thread-200389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:20:56.597 [DEBUG] [Thread-200389] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] client lang: <none>
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] server lang: <none>
2025-11-25T01:20:56.598 [DEBUG] [Thread-200389] [transport.py] [_log()] kex follows: False
2025-11-25T01:20:56.599 [DEBUG] [Thread-200389] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:20:56.599 [DEBUG] [Thread-200389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:20:56.600 [DEBUG] [Thread-200389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:20:56.600 [DEBUG] [Thread-200389] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:20:56.600 [DEBUG] [Thread-200389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:20:56.600 [DEBUG] [Thread-200389] [transport.py] [_log()] Compression: none
2025-11-25T01:20:56.600 [DEBUG] [Thread-200389] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:20:56.640 [DEBUG] [Thread-200389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:20:56.645 [DEBUG] [Thread-200389] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:20:56.647 [DEBUG] [Thread-200389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:20:56.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:20:56.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:20:56.653 [DEBUG] [Thread-200389] [transport.py] [_log()] userauth is OK
2025-11-25T01:20:56.653 [DEBUG] [Thread-200389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:20:56.653 [DEBUG] [Thread-200389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:20:56.654 [DEBUG] [Thread-200389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:20:56.654 [DEBUG] [Thread-200389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:20:56.680 [INFO] [Thread-200389] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:20:56.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:20:57.314 [DEBUG] [Thread-200389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:20:57.314 [DEBUG] [Thread-200389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:20:57.314 [DEBUG] [Thread-200389] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:20:57.355 [DEBUG] [Thread-200389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:20:57.355 [DEBUG] [Thread-200389] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:20:57.358 [DEBUG] [Thread-200389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:20:57.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:20:57.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:20:57.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:20:57.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:20:57.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:20:57.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:20:57.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:20:57.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:20:57.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:20:57.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.972612 -999.00  +12.70  19.54     44   +1.10 1 1 1 1 1     0    0 12.03 16.93 ZNESW 19.6 19.5 132.0 26.2 13.0 -24.8 12.8 -24.5 12.6 -23.3 12.9 -24.1
2025-11-25T01:20:57.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:20:57.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:20:57.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.972612
2025-11-25T01:20:57.386 [DEBUG] [Thread-200389] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:20:57.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:20:57.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:20:57.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:20:57.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:20:57.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:20:57.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:20:49', tmtdew=13.24, humidity=40.21, cloud=0.0, wind=24.23, temperature=12.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:20:49', seeing=0.73, atlas_timestamp='2025-11-24T23:20:33.677', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, -0.003750000000000142, 0.02075000000000138, -0.010000000000001563, 0.031000000000000583, 0.05525000000000091, 0.04349999999999987, 0.013249999999999318, -0.010000000000001563, 0.0039999999999995595, 0.05325000000000024, -0.005000000000000782, 0.08399999999999963, 0.10824999999999996, 0.018000000000000682, -0.009000000000000341, 0.03125, 0.014000000000001123, 0.04499999999999993, -0.025750000000000384, 0.10899999999999821, 0.09924999999999784, 0.05925000000000047, 0.00975000000000037, 0.021999999999998465, 0.026500000000000412, -0.011250000000000426, 0.05749999999999922, 0.12099999999999866, 0.13700000000000045, 0.09050000000000047, 0.04200000000000159, -0.008250000000000313], zp_timestamp='2025-11-24T23:19:00')
2025-11-25T01:20:57.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:20:57.481 [DEBUG] [Thread-200392] [transport.py] [_log()] starting thread (client mode): 0xd31f45e0
2025-11-25T01:20:57.481 [DEBUG] [Thread-200392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:20:57.496 [DEBUG] [Thread-200392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:20:57.496 [INFO] [Thread-200392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] client lang: <none>
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] server lang: <none>
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] kex follows: False
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:20:57.504 [DEBUG] [Thread-200392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:20:57.505 [DEBUG] [Thread-200392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:20:57.505 [DEBUG] [Thread-200392] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:20:57.505 [DEBUG] [Thread-200392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:20:57.505 [DEBUG] [Thread-200392] [transport.py] [_log()] Compression: none
2025-11-25T01:20:57.505 [DEBUG] [Thread-200392] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:20:57.565 [DEBUG] [Thread-200392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:20:57.565 [DEBUG] [Thread-200392] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:20:57.566 [DEBUG] [Thread-200392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:20:57.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:20:57.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:20:57.621 [DEBUG] [Thread-200392] [transport.py] [_log()] userauth is OK
2025-11-25T01:20:57.621 [DEBUG] [Thread-200392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:20:57.621 [DEBUG] [Thread-200392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:20:57.621 [DEBUG] [Thread-200392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:20:57.621 [DEBUG] [Thread-200392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:20:57.639 [INFO] [Thread-200392] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:20:57.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:20:57.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:20:58.497 [DEBUG] [Thread-200392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:20:58.497 [DEBUG] [Thread-200392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:20:58.545 [DEBUG] [Thread-200392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:20:58.545 [DEBUG] [Thread-200392] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:20:58.553 [DEBUG] [Thread-200392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:20:58.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:20:58.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-11-25T01:20:58.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-11-25T01:20:58.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:20:58.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:20:58.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:20:58.586 [DEBUG] [Thread-200392] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:21:06.784 [DEBUG] [Thread-200394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:21:20.451 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:21:20.454 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:21:21.890 [DEBUG] [Thread-200395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:21:28.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:21:28.615 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:21:28.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-11-25T01:21:29.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 21, 22), 13.23, 40.24, 0.0, 27.35, 12.71, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:21:29.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:21:22
2025-11-25T01:21:29.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:21:29.837 [DEBUG] [Thread-200396] [transport.py] [_log()] starting thread (client mode): 0xd07117b0
2025-11-25T01:21:29.838 [DEBUG] [Thread-200396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:21:29.848 [DEBUG] [Thread-200396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:21:29.848 [INFO] [Thread-200396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:21:29.855 [DEBUG] [Thread-200396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:21:29.856 [DEBUG] [Thread-200396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:21:29.856 [DEBUG] [Thread-200396] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:21:29.856 [DEBUG] [Thread-200396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:21:29.856 [DEBUG] [Thread-200396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:21:29.856 [DEBUG] [Thread-200396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:21:29.856 [DEBUG] [Thread-200396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:21:29.857 [DEBUG] [Thread-200396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:21:29.857 [DEBUG] [Thread-200396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:21:29.857 [DEBUG] [Thread-200396] [transport.py] [_log()] client lang: <none>
2025-11-25T01:21:29.857 [DEBUG] [Thread-200396] [transport.py] [_log()] server lang: <none>
2025-11-25T01:21:29.857 [DEBUG] [Thread-200396] [transport.py] [_log()] kex follows: False
2025-11-25T01:21:29.857 [DEBUG] [Thread-200396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:21:29.858 [DEBUG] [Thread-200396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:21:29.858 [DEBUG] [Thread-200396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:21:29.858 [DEBUG] [Thread-200396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:21:29.859 [DEBUG] [Thread-200396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:21:29.859 [DEBUG] [Thread-200396] [transport.py] [_log()] Compression: none
2025-11-25T01:21:29.859 [DEBUG] [Thread-200396] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:21:29.892 [DEBUG] [Thread-200396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:21:29.898 [DEBUG] [Thread-200396] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:21:29.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:21:29.901 [DEBUG] [Thread-200396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:21:29.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:21:29.905 [DEBUG] [Thread-200396] [transport.py] [_log()] userauth is OK
2025-11-25T01:21:29.906 [DEBUG] [Thread-200396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:21:29.906 [DEBUG] [Thread-200396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:21:29.906 [DEBUG] [Thread-200396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:21:29.906 [DEBUG] [Thread-200396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:21:29.933 [INFO] [Thread-200396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:21:29.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:21:30.586 [DEBUG] [Thread-200396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:21:30.586 [DEBUG] [Thread-200396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:21:30.587 [DEBUG] [Thread-200396] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:21:30.626 [DEBUG] [Thread-200396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:21:30.626 [DEBUG] [Thread-200396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:21:30.628 [DEBUG] [Thread-200396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:21:30.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:21:30.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:21:30.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:21:30.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:21:30.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:21:30.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:21:30.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:21:30.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:21:30.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:21:30.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.972960 -999.00  +12.80  18.21     45   +1.10 1 1 1 1 1     0    0 12.08 16.13 ZNESW 16.2 18.2 133.0 25.5 13.0 -24.8 12.9 -24.4 12.6 -23.3 12.9 -24.1
2025-11-25T01:21:30.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:21:30.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:21:30.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.972960
2025-11-25T01:21:30.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:21:30.668 [DEBUG] [Thread-200396] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:21:30.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:21:30.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:21:30.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:21:30.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:21:30.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:21:22', tmtdew=13.23, humidity=40.24, cloud=0.0, wind=27.35, temperature=12.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:21:22', seeing=0.78, atlas_timestamp='2025-11-24T23:21:03.744', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, -0.003750000000000142, 0.02075000000000138, -0.010000000000001563, 0.031000000000000583, 0.05525000000000091, 0.04349999999999987, 0.013249999999999318, -0.010000000000001563, 0.0039999999999995595, 0.05325000000000024, -0.005000000000000782, 0.08399999999999963, 0.10824999999999996, 0.018000000000000682, -0.009000000000000341, 0.03125, 0.014000000000001123, 0.04499999999999993, -0.025750000000000384, 0.10899999999999821, 0.09924999999999784, 0.05925000000000047, 0.00975000000000037, 0.021999999999998465, 0.026500000000000412, -0.011250000000000426, 0.05749999999999922, 0.12099999999999866, 0.13700000000000045, 0.09050000000000047, 0.04200000000000159, -0.008250000000000313], zp_timestamp='2025-11-24T23:19:00')
2025-11-25T01:21:30.744 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:21:30.756 [DEBUG] [Thread-200399] [transport.py] [_log()] starting thread (client mode): 0xd0710460
2025-11-25T01:21:30.756 [DEBUG] [Thread-200399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:21:30.776 [DEBUG] [Thread-200399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:21:30.776 [INFO] [Thread-200399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] client lang: <none>
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] server lang: <none>
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] kex follows: False
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:21:30.784 [DEBUG] [Thread-200399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:21:30.785 [DEBUG] [Thread-200399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:21:30.785 [DEBUG] [Thread-200399] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:21:30.785 [DEBUG] [Thread-200399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:21:30.785 [DEBUG] [Thread-200399] [transport.py] [_log()] Compression: none
2025-11-25T01:21:30.785 [DEBUG] [Thread-200399] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:21:30.841 [DEBUG] [Thread-200399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:21:30.841 [DEBUG] [Thread-200399] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:21:30.842 [DEBUG] [Thread-200399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:21:30.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:21:30.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:21:30.901 [DEBUG] [Thread-200399] [transport.py] [_log()] userauth is OK
2025-11-25T01:21:30.901 [DEBUG] [Thread-200399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:21:30.901 [DEBUG] [Thread-200399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:21:30.901 [DEBUG] [Thread-200399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:21:30.901 [DEBUG] [Thread-200399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:21:30.916 [INFO] [Thread-200399] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:21:30.916 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:21:30.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:21:31.769 [DEBUG] [Thread-200399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:21:31.769 [DEBUG] [Thread-200399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:21:31.817 [DEBUG] [Thread-200399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:21:31.817 [DEBUG] [Thread-200399] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:21:31.825 [DEBUG] [Thread-200399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:21:31.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:21:31.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-11-25T01:21:31.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-11-25T01:21:31.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:21:31.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:21:31.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:21:31.858 [DEBUG] [Thread-200399] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:21:32.956 [DEBUG] [Thread-200401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:21:36.947 [DEBUG] [Thread-200402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:21:52.128 [DEBUG] [Thread-200403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:22:01.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:22:01.895 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:22:01.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-11-25T01:22:02.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 21, 55), 13.39, 39.71, 0.0, 23.52, 12.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:22:02.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:21:55
2025-11-25T01:22:03.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:22:03.304 [DEBUG] [Thread-200404] [transport.py] [_log()] starting thread (client mode): 0xd07cef80
2025-11-25T01:22:03.305 [DEBUG] [Thread-200404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:22:03.314 [DEBUG] [Thread-200404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:22:03.314 [INFO] [Thread-200404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:22:03.320 [DEBUG] [Thread-200404] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:22:03.320 [DEBUG] [Thread-200404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:22:03.320 [DEBUG] [Thread-200404] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:22:03.320 [DEBUG] [Thread-200404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:22:03.320 [DEBUG] [Thread-200404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:22:03.320 [DEBUG] [Thread-200404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:22:03.320 [DEBUG] [Thread-200404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:22:03.320 [DEBUG] [Thread-200404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:22:03.320 [DEBUG] [Thread-200404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:22:03.321 [DEBUG] [Thread-200404] [transport.py] [_log()] client lang: <none>
2025-11-25T01:22:03.321 [DEBUG] [Thread-200404] [transport.py] [_log()] server lang: <none>
2025-11-25T01:22:03.321 [DEBUG] [Thread-200404] [transport.py] [_log()] kex follows: False
2025-11-25T01:22:03.321 [DEBUG] [Thread-200404] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:22:03.321 [DEBUG] [Thread-200404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:22:03.322 [DEBUG] [Thread-200404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:22:03.322 [DEBUG] [Thread-200404] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:22:03.322 [DEBUG] [Thread-200404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:22:03.322 [DEBUG] [Thread-200404] [transport.py] [_log()] Compression: none
2025-11-25T01:22:03.322 [DEBUG] [Thread-200404] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:22:03.363 [DEBUG] [Thread-200404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:22:03.369 [DEBUG] [Thread-200404] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:22:03.370 [DEBUG] [Thread-200404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:22:03.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:22:03.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:22:03.377 [DEBUG] [Thread-200404] [transport.py] [_log()] userauth is OK
2025-11-25T01:22:03.377 [DEBUG] [Thread-200404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:22:03.378 [DEBUG] [Thread-200404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:22:03.378 [DEBUG] [Thread-200404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:22:03.378 [DEBUG] [Thread-200404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:22:03.417 [INFO] [Thread-200404] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:22:03.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:22:04.033 [DEBUG] [Thread-200404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:22:04.033 [DEBUG] [Thread-200404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:22:04.044 [DEBUG] [Thread-200404] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:22:04.075 [DEBUG] [Thread-200404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:22:04.075 [DEBUG] [Thread-200404] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:22:04.078 [DEBUG] [Thread-200404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:22:04.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:22:04.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:22:04.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:22:04.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:22:04.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:22:04.105 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:22:04.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:22:04.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:22:04.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:22:04.109 [DEBUG] [Thread-200404] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:22:04.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.973307 -999.00  +12.70  20.01     45   +1.10 1 1 1 1 1     0    0 12.00 17.95 ZNESW 17.7 20.0 134.0 22.7 13.0 -24.9 12.9 -24.4 12.6 -23.4 12.9 -24.1
2025-11-25T01:22:04.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:22:04.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:22:04.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.973307
2025-11-25T01:22:04.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:22:04.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:22:04.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:22:04.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:22:04.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:22:04.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:21:55', tmtdew=13.39, humidity=39.71, cloud=0.0, wind=23.52, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:21:56', seeing=0.78, atlas_timestamp='2025-11-24T23:21:33.725', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, -0.003750000000000142, 0.02075000000000138, -0.010000000000001563, 0.031000000000000583, 0.05525000000000091, 0.04349999999999987, 0.013249999999999318, -0.010000000000001563, 0.0039999999999995595, 0.05325000000000024, -0.005000000000000782, 0.08399999999999963, 0.10824999999999996, 0.018000000000000682, -0.009000000000000341, 0.03125, 0.014000000000001123, 0.04499999999999993, -0.025750000000000384, 0.10899999999999821, 0.09924999999999784, 0.05925000000000047, 0.00975000000000037, 0.021999999999998465, 0.026500000000000412, -0.011250000000000426, 0.05749999999999922, 0.12099999999999866, 0.13700000000000045, 0.09050000000000047, 0.04200000000000159, -0.008250000000000313], zp_timestamp='2025-11-24T23:19:00')
2025-11-25T01:22:04.220 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:22:07.220 [DEBUG] [Thread-200407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:22:20.655 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:22:20.657 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:22:22.349 [DEBUG] [Thread-200408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:22:33.279 [DEBUG] [Thread-200409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:22:37.381 [DEBUG] [Thread-200410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:22:52.442 [DEBUG] [Thread-200411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:23:07.506 [DEBUG] [Thread-200412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:23:17.886 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:23:20.860 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:23:20.861 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:23:22.599 [DEBUG] [Thread-200413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:23:33.522 [DEBUG] [Thread-200414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:23:37.681 [DEBUG] [Thread-200415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:23:52.776 [DEBUG] [Thread-200416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:24:07.887 [DEBUG] [Thread-200417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:24:19.526 [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-11-25T01:24:21.075 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:24:21.078 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:24:22.948 [DEBUG] [Thread-200418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:24:33.874 [DEBUG] [Thread-200419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:24:38.004 [DEBUG] [Thread-200420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:24:46.428 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:24:49.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:24:49.569 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:24:49.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-11-25T01:24:49.639 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:24:50.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 24, 40), 13.25, 40.19, 0.0, 22.14, 12.73, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:24:50.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:24:40
2025-11-25T01:24:50.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:24:50.821 [DEBUG] [Thread-200421] [transport.py] [_log()] starting thread (client mode): 0xd317fb20
2025-11-25T01:24:50.822 [DEBUG] [Thread-200421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:24:50.830 [DEBUG] [Thread-200421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:24:50.830 [INFO] [Thread-200421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:24:50.837 [DEBUG] [Thread-200421] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:24:50.837 [DEBUG] [Thread-200421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:24:50.837 [DEBUG] [Thread-200421] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:24:50.837 [DEBUG] [Thread-200421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:24:50.837 [DEBUG] [Thread-200421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:24:50.837 [DEBUG] [Thread-200421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:24:50.837 [DEBUG] [Thread-200421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:24:50.838 [DEBUG] [Thread-200421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:24:50.838 [DEBUG] [Thread-200421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:24:50.838 [DEBUG] [Thread-200421] [transport.py] [_log()] client lang: <none>
2025-11-25T01:24:50.838 [DEBUG] [Thread-200421] [transport.py] [_log()] server lang: <none>
2025-11-25T01:24:50.838 [DEBUG] [Thread-200421] [transport.py] [_log()] kex follows: False
2025-11-25T01:24:50.838 [DEBUG] [Thread-200421] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:24:50.839 [DEBUG] [Thread-200421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:24:50.839 [DEBUG] [Thread-200421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:24:50.839 [DEBUG] [Thread-200421] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:24:50.840 [DEBUG] [Thread-200421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:24:50.840 [DEBUG] [Thread-200421] [transport.py] [_log()] Compression: none
2025-11-25T01:24:50.840 [DEBUG] [Thread-200421] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:24:50.881 [DEBUG] [Thread-200421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:24:50.887 [DEBUG] [Thread-200421] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:24:50.889 [DEBUG] [Thread-200421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:24:50.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:24:50.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:24:50.895 [DEBUG] [Thread-200421] [transport.py] [_log()] userauth is OK
2025-11-25T01:24:50.895 [DEBUG] [Thread-200421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:24:50.895 [DEBUG] [Thread-200421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:24:50.896 [DEBUG] [Thread-200421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:24:50.896 [DEBUG] [Thread-200421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:24:50.935 [INFO] [Thread-200421] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:24:50.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:24:51.596 [DEBUG] [Thread-200421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:24:51.596 [DEBUG] [Thread-200421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:24:51.605 [DEBUG] [Thread-200421] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:24:51.637 [DEBUG] [Thread-200421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:24:51.637 [DEBUG] [Thread-200421] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:24:51.640 [DEBUG] [Thread-200421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:24:51.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:24:51.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:24:51.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:24:51.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:24:51.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:24:51.661 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:24:51.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:24:51.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:24:51.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:24:51.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.975390 -999.00  +12.70  17.52     44   +1.00 1 1 1 1 1     0    0 12.40 18.94 ZNESW 17.9 17.5 132.8 28.6 13.0 -24.8 12.8 -24.5 12.6 -23.4 12.9 -24.2
2025-11-25T01:24:51.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:24:51.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:24:51.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.975390
2025-11-25T01:24:51.669 [DEBUG] [Thread-200421] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:24:51.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:24:51.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:24:51.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:24:51.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:24:51.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:24:51.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:24:40', tmtdew=13.25, humidity=40.19, cloud=0.0, wind=22.14, temperature=12.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:24:41', seeing=0.73, atlas_timestamp='2025-11-24T23:24:33.696', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, -0.003750000000000142, 0.02075000000000138, -0.010000000000001563, 0.031000000000000583, 0.05525000000000091, 0.04349999999999987, 0.013249999999999318, -0.010000000000001563, 0.0039999999999995595, 0.05325000000000024, -0.005000000000000782, 0.08399999999999963, 0.10824999999999996, 0.018000000000000682, -0.009000000000000341, 0.03125, 0.014000000000001123, 0.04499999999999993, -0.025750000000000384, 0.10899999999999821, 0.09924999999999784, 0.05925000000000047, 0.00975000000000037, 0.021999999999998465, 0.026500000000000412, -0.011250000000000426, 0.05749999999999922, 0.12099999999999866, 0.13700000000000045, 0.09050000000000047, 0.04200000000000159, -0.008250000000000313], zp_timestamp='2025-11-24T23:22:00')
2025-11-25T01:24:51.758 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:24:51.771 [DEBUG] [Thread-200424] [transport.py] [_log()] starting thread (client mode): 0xd31f4190
2025-11-25T01:24:51.771 [DEBUG] [Thread-200424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:24:51.787 [DEBUG] [Thread-200424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:24:51.787 [INFO] [Thread-200424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] client lang: <none>
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] server lang: <none>
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] kex follows: False
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:24:51.795 [DEBUG] [Thread-200424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:24:51.796 [DEBUG] [Thread-200424] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:24:51.796 [DEBUG] [Thread-200424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:24:51.796 [DEBUG] [Thread-200424] [transport.py] [_log()] Compression: none
2025-11-25T01:24:51.796 [DEBUG] [Thread-200424] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:24:51.857 [DEBUG] [Thread-200424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:24:51.858 [DEBUG] [Thread-200424] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:24:51.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:24:51.859 [DEBUG] [Thread-200424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:24:51.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:24:51.921 [DEBUG] [Thread-200424] [transport.py] [_log()] userauth is OK
2025-11-25T01:24:51.921 [DEBUG] [Thread-200424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:24:51.921 [DEBUG] [Thread-200424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:24:51.921 [DEBUG] [Thread-200424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:24:51.921 [DEBUG] [Thread-200424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:24:51.941 [INFO] [Thread-200424] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:24:51.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:24:51.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:24:52.781 [DEBUG] [Thread-200424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:24:52.782 [DEBUG] [Thread-200424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:24:52.829 [DEBUG] [Thread-200424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:24:52.829 [DEBUG] [Thread-200424] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:24:52.837 [DEBUG] [Thread-200424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:24:52.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:24:52.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-11-25T01:24:52.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-11-25T01:24:52.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:24:52.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:24:52.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:24:52.880 [DEBUG] [Thread-200424] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:24:53.078 [DEBUG] [Thread-200426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:24:54.736 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:01.141 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:08.224 [DEBUG] [Thread-200427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:20.535 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:21.294 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:21.297 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:22.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:25:22.896 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:25:22.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-11-25T01:25:23.298 [DEBUG] [Thread-200428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:23.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 25, 13), 13.19, 40.33, 0.0, 22.97, 12.66, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:25:23.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:25:13
2025-11-25T01:25:24.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:25:24.230 [DEBUG] [Thread-200429] [transport.py] [_log()] starting thread (client mode): 0xd317ec80
2025-11-25T01:25:24.231 [DEBUG] [Thread-200429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:25:24.244 [DEBUG] [Thread-200429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:25:24.245 [INFO] [Thread-200429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:25:24.251 [DEBUG] [Thread-200429] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:25:24.251 [DEBUG] [Thread-200429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:25:24.252 [DEBUG] [Thread-200429] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:25:24.252 [DEBUG] [Thread-200429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:25:24.252 [DEBUG] [Thread-200429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:25:24.252 [DEBUG] [Thread-200429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:25:24.252 [DEBUG] [Thread-200429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:25:24.252 [DEBUG] [Thread-200429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:25:24.252 [DEBUG] [Thread-200429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:25:24.252 [DEBUG] [Thread-200429] [transport.py] [_log()] client lang: <none>
2025-11-25T01:25:24.253 [DEBUG] [Thread-200429] [transport.py] [_log()] server lang: <none>
2025-11-25T01:25:24.253 [DEBUG] [Thread-200429] [transport.py] [_log()] kex follows: False
2025-11-25T01:25:24.253 [DEBUG] [Thread-200429] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:25:24.254 [DEBUG] [Thread-200429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:25:24.254 [DEBUG] [Thread-200429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:25:24.254 [DEBUG] [Thread-200429] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:25:24.254 [DEBUG] [Thread-200429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:25:24.254 [DEBUG] [Thread-200429] [transport.py] [_log()] Compression: none
2025-11-25T01:25:24.255 [DEBUG] [Thread-200429] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:25:24.293 [DEBUG] [Thread-200429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:25:24.299 [DEBUG] [Thread-200429] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:25:24.301 [DEBUG] [Thread-200429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:25:24.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:25:24.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:25:24.307 [DEBUG] [Thread-200429] [transport.py] [_log()] userauth is OK
2025-11-25T01:25:24.307 [DEBUG] [Thread-200429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:25:24.307 [DEBUG] [Thread-200429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:25:24.307 [DEBUG] [Thread-200429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:25:24.308 [DEBUG] [Thread-200429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:25:24.336 [INFO] [Thread-200429] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:25:24.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:25:24.962 [DEBUG] [Thread-200429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:25:24.962 [DEBUG] [Thread-200429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:25:24.963 [DEBUG] [Thread-200429] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:25:24.989 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:25.003 [DEBUG] [Thread-200429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:25:25.003 [DEBUG] [Thread-200429] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:25:25.006 [DEBUG] [Thread-200429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:25:25.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:25:25.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:25:25.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:25:25.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:25:25.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:25:25.025 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:25:25.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:25:25.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:25:25.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:25:25.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.975737 -999.00  +12.80  19.61     44   +1.00 1 1 1 1 1     0    0 12.14 17.87 ZNESW 20.6 19.6 132.8 24.0 13.0 -24.8 12.9 -24.4 12.6 -23.3 12.9 -24.0
2025-11-25T01:25:25.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:25:25.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:25:25.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.975737
2025-11-25T01:25:25.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:25:25.041 [DEBUG] [Thread-200429] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:25:25.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:25:25.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:25:25.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:25:25.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:25:25.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:25:13', tmtdew=13.19, humidity=40.33, cloud=0.0, wind=22.97, temperature=12.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:25:14', seeing=0.66, atlas_timestamp='2025-11-24T23:25:03.677', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, -0.003750000000000142, 0.02075000000000138, -0.010000000000001563, 0.031000000000000583, 0.05525000000000091, 0.04349999999999987, 0.013249999999999318, -0.010000000000001563, 0.0039999999999995595, 0.05325000000000024, -0.005000000000000782, 0.08399999999999963, 0.10824999999999996, 0.018000000000000682, -0.009000000000000341, 0.03125, 0.014000000000001123, 0.04499999999999993, -0.025750000000000384, 0.10899999999999821, 0.09924999999999784, 0.05925000000000047, 0.00975000000000037, 0.021999999999998465, 0.026500000000000412, -0.011250000000000426, 0.05749999999999922, 0.12099999999999866, 0.13700000000000045, 0.09050000000000047, 0.04200000000000159, -0.008250000000000313], zp_timestamp='2025-11-24T23:22:00')
2025-11-25T01:25:25.117 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:25:25.129 [DEBUG] [Thread-200432] [transport.py] [_log()] starting thread (client mode): 0xd319ffa0
2025-11-25T01:25:25.129 [DEBUG] [Thread-200432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:25:25.148 [DEBUG] [Thread-200432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:25:25.148 [INFO] [Thread-200432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:25:25.155 [DEBUG] [Thread-200432] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:25:25.155 [DEBUG] [Thread-200432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:25:25.155 [DEBUG] [Thread-200432] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] client lang: <none>
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] server lang: <none>
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] kex follows: False
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] Compression: none
2025-11-25T01:25:25.156 [DEBUG] [Thread-200432] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:25:25.211 [DEBUG] [Thread-200432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:25:25.211 [DEBUG] [Thread-200432] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:25:25.211 [DEBUG] [Thread-200432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:25:25.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:25:25.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:25:25.268 [DEBUG] [Thread-200432] [transport.py] [_log()] userauth is OK
2025-11-25T01:25:25.268 [DEBUG] [Thread-200432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:25:25.268 [DEBUG] [Thread-200432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:25:25.268 [DEBUG] [Thread-200432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:25:25.268 [DEBUG] [Thread-200432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:25:25.282 [INFO] [Thread-200432] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:25:25.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:25:25.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:25:26.116 [DEBUG] [Thread-200432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:25:26.117 [DEBUG] [Thread-200432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:25:26.165 [DEBUG] [Thread-200432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:25:26.165 [DEBUG] [Thread-200432] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:25:26.174 [DEBUG] [Thread-200432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:25:26.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:25:26.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-11-25T01:25:26.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-11-25T01:25:26.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:25:26.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:25:26.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:25:26.212 [DEBUG] [Thread-200432] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:25:34.123 [DEBUG] [Thread-200434 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:38.365 [DEBUG] [Thread-200435 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:44.297 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:48.692 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:53.513 [DEBUG] [Thread-200436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:54.807 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:56.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:25:56.238 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:25:56.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:25:57.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 25, 46), 13.23, 39.99, 0.0, 21.42, 12.68, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:25:57.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:25:46
2025-11-25T01:25:57.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:25:57.611 [DEBUG] [Thread-200437] [transport.py] [_log()] starting thread (client mode): 0xd07ce050
2025-11-25T01:25:57.611 [DEBUG] [Thread-200437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:25:57.623 [DEBUG] [Thread-200437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:25:57.623 [INFO] [Thread-200437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:25:57.629 [DEBUG] [Thread-200437] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] client lang: <none>
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] server lang: <none>
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] kex follows: False
2025-11-25T01:25:57.630 [DEBUG] [Thread-200437] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:25:57.631 [DEBUG] [Thread-200437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:25:57.631 [DEBUG] [Thread-200437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:25:57.632 [DEBUG] [Thread-200437] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:25:57.632 [DEBUG] [Thread-200437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:25:57.632 [DEBUG] [Thread-200437] [transport.py] [_log()] Compression: none
2025-11-25T01:25:57.632 [DEBUG] [Thread-200437] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:25:57.677 [DEBUG] [Thread-200437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:25:57.682 [DEBUG] [Thread-200437] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:25:57.685 [DEBUG] [Thread-200437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:25:57.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:25:57.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:25:57.692 [DEBUG] [Thread-200437] [transport.py] [_log()] userauth is OK
2025-11-25T01:25:57.692 [DEBUG] [Thread-200437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:25:57.692 [DEBUG] [Thread-200437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:25:57.692 [DEBUG] [Thread-200437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:25:57.693 [DEBUG] [Thread-200437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:25:57.734 [INFO] [Thread-200437] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:25:57.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:25:58.371 [DEBUG] [Thread-200437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:25:58.371 [DEBUG] [Thread-200437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:25:58.372 [DEBUG] [Thread-200437] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:25:58.412 [DEBUG] [Thread-200437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:25:58.412 [DEBUG] [Thread-200437] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:25:58.414 [DEBUG] [Thread-200437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:25:58.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:25:58.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:25:58.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:25:58.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:25:58.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:25:58.434 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:25:58.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:25:58.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:25:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:25:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.976085 -999.00  +12.80  19.76     44   +1.00 1 1 1 1 1     0    0 11.73 19.23 ZNESW 22.5 19.8 129.0 28.3 13.0 -24.9 12.9 -24.4 12.6 -23.3 12.9 -24.1
2025-11-25T01:25:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:25:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:25:58.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.976085
2025-11-25T01:25:58.442 [DEBUG] [Thread-200437] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:25:58.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:25:58.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:25:58.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:25:58.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:25:58.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:25:58.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:25:46', tmtdew=13.23, humidity=39.99, cloud=0.0, wind=21.42, temperature=12.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:25:46', seeing=0.67, atlas_timestamp='2025-11-24T23:25:33.744', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, -0.003750000000000142, 0.02075000000000138, -0.010000000000001563, 0.031000000000000583, 0.05525000000000091, 0.04349999999999987, 0.013249999999999318, -0.010000000000001563, 0.0039999999999995595, 0.05325000000000024, -0.005000000000000782, 0.08399999999999963, 0.10824999999999996, 0.018000000000000682, -0.009000000000000341, 0.03125, 0.014000000000001123, 0.04499999999999993, -0.025750000000000384, 0.10899999999999821, 0.09924999999999784, 0.05925000000000047, 0.00975000000000037, 0.021999999999998465, 0.026500000000000412, -0.011250000000000426, 0.05749999999999922, 0.12099999999999866, 0.13700000000000045, 0.09050000000000047, 0.04200000000000159, -0.008250000000000313], zp_timestamp='2025-11-24T23:22:00')
2025-11-25T01:25:58.526 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:25:58.537 [DEBUG] [Thread-200440] [transport.py] [_log()] starting thread (client mode): 0xd317e950
2025-11-25T01:25:58.537 [DEBUG] [Thread-200440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:25:58.552 [DEBUG] [Thread-200440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:25:58.552 [INFO] [Thread-200440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:25:58.559 [DEBUG] [Thread-200440] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] client lang: <none>
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] server lang: <none>
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] kex follows: False
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] Compression: none
2025-11-25T01:25:58.560 [DEBUG] [Thread-200440] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:25:58.618 [DEBUG] [Thread-200440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:25:58.619 [DEBUG] [Thread-200440] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:25:58.619 [DEBUG] [Thread-200440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:25:58.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:25:58.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:25:58.676 [DEBUG] [Thread-200440] [transport.py] [_log()] userauth is OK
2025-11-25T01:25:58.676 [DEBUG] [Thread-200440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:25:58.676 [DEBUG] [Thread-200440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:25:58.676 [DEBUG] [Thread-200440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:25:58.676 [DEBUG] [Thread-200440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:25:58.690 [INFO] [Thread-200440] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:25:58.690 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:25:58.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:25:59.190 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:25:59.515 [DEBUG] [Thread-200440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:25:59.515 [DEBUG] [Thread-200440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:25:59.563 [DEBUG] [Thread-200440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:25:59.563 [DEBUG] [Thread-200440] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:25:59.571 [DEBUG] [Thread-200440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:25:59.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:25:59.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-11-25T01:25:59.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-11-25T01:25:59.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:25:59.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:25:59.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:25:59.605 [DEBUG] [Thread-200440] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:26:08.624 [DEBUG] [Thread-200442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:26:21.500 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:26:21.503 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:26:23.806 [DEBUG] [Thread-200443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:26:29.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:26:29.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:26:29.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-11-25T01:26:30.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 26, 19), 13.25, 39.94, 0.0, 24.97, 12.7, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:26:30.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:26:19
2025-11-25T01:26:30.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:26:30.851 [DEBUG] [Thread-200444] [transport.py] [_log()] starting thread (client mode): 0xd317ea70
2025-11-25T01:26:30.852 [DEBUG] [Thread-200444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:26:30.852 [DEBUG] [Thread-200444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:26:30.852 [INFO] [Thread-200444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] client lang: <none>
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] server lang: <none>
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] kex follows: False
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:26:30.856 [DEBUG] [Thread-200444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:26:30.857 [DEBUG] [Thread-200444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:26:30.857 [DEBUG] [Thread-200444] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:26:30.857 [DEBUG] [Thread-200444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:26:30.857 [DEBUG] [Thread-200444] [transport.py] [_log()] Compression: none
2025-11-25T01:26:30.857 [DEBUG] [Thread-200444] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:26:30.878 [DEBUG] [Thread-200444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:26:30.881 [DEBUG] [Thread-200444] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:26:30.882 [DEBUG] [Thread-200444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:26:30.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:26:30.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:26:30.886 [DEBUG] [Thread-200444] [transport.py] [_log()] userauth is OK
2025-11-25T01:26:30.886 [DEBUG] [Thread-200444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:26:30.886 [DEBUG] [Thread-200444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:26:30.886 [DEBUG] [Thread-200444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:26:30.886 [DEBUG] [Thread-200444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:26:30.897 [INFO] [Thread-200444] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:26:30.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:26:31.484 [DEBUG] [Thread-200444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:26:31.484 [DEBUG] [Thread-200444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:26:31.485 [DEBUG] [Thread-200444] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:26:31.525 [DEBUG] [Thread-200444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:26:31.525 [DEBUG] [Thread-200444] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:26:31.526 [DEBUG] [Thread-200444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:26:31.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:26:31.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:26:31.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:26:31.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:26:31.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:26:31.547 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:26:31.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:26:31.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:26:31.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:26:31.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.976432 -999.00  +12.80  17.63     44   +1.00 1 1 1 1 1     0    0 12.21 19.64 ZNESW 19.3 17.6 130.6 27.8 13.0 -24.9 12.9 -24.4 12.6 -23.2 12.9 -24.2
2025-11-25T01:26:31.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:26:31.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:26:31.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.976432
2025-11-25T01:26:31.554 [DEBUG] [Thread-200444] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:26:31.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:26:31.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:26:31.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:26:31.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:26:31.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:26:31.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:26:19', tmtdew=13.25, humidity=39.94, cloud=0.0, wind=24.97, temperature=12.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:26:19', seeing=0.67, atlas_timestamp='2025-11-24T23:26:03.725', atlas_cloud=1, atlas_rain=1, zp_data=[-0.010750000000001592, -0.003750000000000142, 0.02075000000000138, -0.010000000000001563, 0.031000000000000583, 0.05525000000000091, 0.04349999999999987, 0.013249999999999318, -0.010000000000001563, 0.0039999999999995595, 0.05325000000000024, -0.005000000000000782, 0.08399999999999963, 0.10824999999999996, 0.018000000000000682, -0.009000000000000341, 0.03125, 0.014000000000001123, 0.04499999999999993, -0.025750000000000384, 0.10899999999999821, 0.09924999999999784, 0.05925000000000047, 0.00975000000000037, 0.021999999999998465, 0.026500000000000412, -0.011250000000000426, 0.05749999999999922, 0.12099999999999866, 0.13700000000000045, 0.09050000000000047, 0.04200000000000159, -0.008250000000000313], zp_timestamp='2025-11-24T23:22:00')
2025-11-25T01:26:31.647 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:26:31.659 [DEBUG] [Thread-200447] [transport.py] [_log()] starting thread (client mode): 0xd317e8c0
2025-11-25T01:26:31.659 [DEBUG] [Thread-200447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:26:31.674 [DEBUG] [Thread-200447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:26:31.674 [INFO] [Thread-200447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] client lang: <none>
2025-11-25T01:26:31.681 [DEBUG] [Thread-200447] [transport.py] [_log()] server lang: <none>
2025-11-25T01:26:31.682 [DEBUG] [Thread-200447] [transport.py] [_log()] kex follows: False
2025-11-25T01:26:31.682 [DEBUG] [Thread-200447] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:26:31.682 [DEBUG] [Thread-200447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:26:31.682 [DEBUG] [Thread-200447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:26:31.682 [DEBUG] [Thread-200447] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:26:31.682 [DEBUG] [Thread-200447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:26:31.682 [DEBUG] [Thread-200447] [transport.py] [_log()] Compression: none
2025-11-25T01:26:31.682 [DEBUG] [Thread-200447] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:26:31.740 [DEBUG] [Thread-200447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:26:31.740 [DEBUG] [Thread-200447] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:26:31.741 [DEBUG] [Thread-200447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:26:31.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:26:31.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:26:31.797 [DEBUG] [Thread-200447] [transport.py] [_log()] userauth is OK
2025-11-25T01:26:31.797 [DEBUG] [Thread-200447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:26:31.797 [DEBUG] [Thread-200447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:26:31.797 [DEBUG] [Thread-200447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:26:31.797 [DEBUG] [Thread-200447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:26:31.814 [INFO] [Thread-200447] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:26: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-11-25T01:26:31.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:26:32.680 [DEBUG] [Thread-200447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:26:32.680 [DEBUG] [Thread-200447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:26:32.733 [DEBUG] [Thread-200447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:26:32.733 [DEBUG] [Thread-200447] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:26:32.741 [DEBUG] [Thread-200447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:26:32.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:26:32.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-11-25T01:26:32.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-11-25T01:26:32.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:26:32.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:26:32.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:26:32.775 [DEBUG] [Thread-200447] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:26:34.364 [DEBUG] [Thread-200449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:26:38.892 [DEBUG] [Thread-200450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:26:54.041 [DEBUG] [Thread-200451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:02.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:27:02.811 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:27:02.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-11-25T01:27:03.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 26, 52), 13.46, 39.16, 0.0, 27.98, 12.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:27:03.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:26:52
2025-11-25T01:27:04.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:27:04.297 [DEBUG] [Thread-200452] [transport.py] [_log()] starting thread (client mode): 0xd07cd7e0
2025-11-25T01:27:04.298 [DEBUG] [Thread-200452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:27:04.310 [DEBUG] [Thread-200452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:27:04.311 [INFO] [Thread-200452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:27:04.317 [DEBUG] [Thread-200452] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:27:04.317 [DEBUG] [Thread-200452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:27:04.317 [DEBUG] [Thread-200452] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:27:04.317 [DEBUG] [Thread-200452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:27:04.317 [DEBUG] [Thread-200452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:27:04.317 [DEBUG] [Thread-200452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:27:04.317 [DEBUG] [Thread-200452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:27:04.318 [DEBUG] [Thread-200452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:27:04.318 [DEBUG] [Thread-200452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:27:04.318 [DEBUG] [Thread-200452] [transport.py] [_log()] client lang: <none>
2025-11-25T01:27:04.318 [DEBUG] [Thread-200452] [transport.py] [_log()] server lang: <none>
2025-11-25T01:27:04.318 [DEBUG] [Thread-200452] [transport.py] [_log()] kex follows: False
2025-11-25T01:27:04.318 [DEBUG] [Thread-200452] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:27:04.319 [DEBUG] [Thread-200452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:27:04.319 [DEBUG] [Thread-200452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:27:04.319 [DEBUG] [Thread-200452] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:27:04.319 [DEBUG] [Thread-200452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:27:04.319 [DEBUG] [Thread-200452] [transport.py] [_log()] Compression: none
2025-11-25T01:27:04.319 [DEBUG] [Thread-200452] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:27:04.358 [DEBUG] [Thread-200452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:27:04.362 [DEBUG] [Thread-200452] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:27:04.364 [DEBUG] [Thread-200452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:27:04.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:27:04.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:27:04.370 [DEBUG] [Thread-200452] [transport.py] [_log()] userauth is OK
2025-11-25T01:27:04.370 [DEBUG] [Thread-200452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:27:04.371 [DEBUG] [Thread-200452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:27:04.371 [DEBUG] [Thread-200452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:27:04.371 [DEBUG] [Thread-200452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:27:04.408 [INFO] [Thread-200452] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:27:04.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:27:05.010 [DEBUG] [Thread-200452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:27:05.010 [DEBUG] [Thread-200452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:27:05.011 [DEBUG] [Thread-200452] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:27:05.050 [DEBUG] [Thread-200452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:27:05.050 [DEBUG] [Thread-200452] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:27:05.053 [DEBUG] [Thread-200452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:27:05.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:27:05.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:27:05.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:27:05.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:27:05.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:27:05.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:27:05.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:27:05.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:27:05.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:27:05.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.976432 -999.00  +12.80  17.63     44   +1.00 1 1 1 1 1     0    0 12.21 19.64 ZNESW 19.3 17.6 130.6 27.8 13.0 -24.9 12.9 -24.4 12.6 -23.2 12.9 -24.2
2025-11-25T01:27:05.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:27:05.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:27:05.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.976432
2025-11-25T01:27:05.083 [DEBUG] [Thread-200452] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:27:05.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:27:05.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:27:05.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:27:05.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:27:05.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:27:05.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:26:52', tmtdew=13.46, humidity=39.16, cloud=0.0, wind=27.98, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:26:52', seeing=0.67, atlas_timestamp='2025-11-24T23:26:03.725', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011750000000001037, -0.02874999999999872, 0.023749999999999716, 0.012999999999998124, 0.03950000000000031, 0.034250000000000114, 0.009999999999999787, 0.006750000000000256, 0.020500000000000185, -0.007999999999999119, 0.040749999999999176, -0.006999999999999673, 0.06400000000000006, 0.10374999999999979, -0.021000000000000796, -0.0129999999999999, 0.020250000000000767, 0.009999999999999787, 0.0389999999999997, -0.039750000000001506, 0.10899999999999821, 0.12725000000000009, 0.06925000000000026, 0.03275000000000006, 0.03200000000000003, -0.0035000000000007248, -0.011250000000000426, 0.04749999999999943, 0.1379999999999999, 0.07700000000000173, 0.10000000000000142, -0.0019999999999988916, 0.028249999999999886], zp_timestamp='2025-11-24T23:25:00')
2025-11-25T01:27:05.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:27:05.184 [DEBUG] [Thread-200455] [transport.py] [_log()] starting thread (client mode): 0xd319ff40
2025-11-25T01:27:05.184 [DEBUG] [Thread-200455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:27:05.198 [DEBUG] [Thread-200455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:27:05.198 [INFO] [Thread-200455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:27:05.206 [DEBUG] [Thread-200455] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:27:05.206 [DEBUG] [Thread-200455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:27:05.206 [DEBUG] [Thread-200455] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:27:05.206 [DEBUG] [Thread-200455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:27:05.206 [DEBUG] [Thread-200455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:27:05.206 [DEBUG] [Thread-200455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:27:05.206 [DEBUG] [Thread-200455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:27:05.206 [DEBUG] [Thread-200455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:27:05.206 [DEBUG] [Thread-200455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:27:05.207 [DEBUG] [Thread-200455] [transport.py] [_log()] client lang: <none>
2025-11-25T01:27:05.207 [DEBUG] [Thread-200455] [transport.py] [_log()] server lang: <none>
2025-11-25T01:27:05.207 [DEBUG] [Thread-200455] [transport.py] [_log()] kex follows: False
2025-11-25T01:27:05.207 [DEBUG] [Thread-200455] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:27:05.207 [DEBUG] [Thread-200455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:27:05.207 [DEBUG] [Thread-200455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:27:05.207 [DEBUG] [Thread-200455] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:27:05.207 [DEBUG] [Thread-200455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:27:05.207 [DEBUG] [Thread-200455] [transport.py] [_log()] Compression: none
2025-11-25T01:27:05.207 [DEBUG] [Thread-200455] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:27:05.267 [DEBUG] [Thread-200455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:27:05.267 [DEBUG] [Thread-200455] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:27:05.267 [DEBUG] [Thread-200455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:27:05.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:27:05.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:27:05.324 [DEBUG] [Thread-200455] [transport.py] [_log()] userauth is OK
2025-11-25T01:27:05.325 [DEBUG] [Thread-200455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:27:05.325 [DEBUG] [Thread-200455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:27:05.325 [DEBUG] [Thread-200455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:27:05.325 [DEBUG] [Thread-200455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:27:05.350 [INFO] [Thread-200455] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:27:05.351 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:27:05.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:27:06.191 [DEBUG] [Thread-200455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:27:06.191 [DEBUG] [Thread-200455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:27:06.239 [DEBUG] [Thread-200455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:27:06.239 [DEBUG] [Thread-200455] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:27:06.247 [DEBUG] [Thread-200455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:27:06.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:27:06.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-11-25T01:27:06.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-11-25T01:27:06.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:27:06.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:27:06.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:27:06.280 [DEBUG] [Thread-200455] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:27:08.226 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:09.100 [DEBUG] [Thread-200457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:12.427 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:21.717 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:21.720 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:23.891 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:24.210 [DEBUG] [Thread-200458 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:34.629 [DEBUG] [Thread-200459 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:34.710 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:36.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:27:36.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:27:36.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-11-25T01:27:37.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 27, 25), 13.51, 39.03, 0.0, 29.68, 12.86, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:27:37.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:27:25
2025-11-25T01:27:37.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:27:37.533 [DEBUG] [Thread-200460] [transport.py] [_log()] starting thread (client mode): 0xd0786890
2025-11-25T01:27:37.534 [DEBUG] [Thread-200460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:27:37.545 [DEBUG] [Thread-200460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:27:37.545 [INFO] [Thread-200460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:27:37.551 [DEBUG] [Thread-200460] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:27:37.551 [DEBUG] [Thread-200460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:27:37.551 [DEBUG] [Thread-200460] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:27:37.551 [DEBUG] [Thread-200460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:27:37.552 [DEBUG] [Thread-200460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:27:37.552 [DEBUG] [Thread-200460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:27:37.552 [DEBUG] [Thread-200460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:27:37.552 [DEBUG] [Thread-200460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:27:37.552 [DEBUG] [Thread-200460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:27:37.552 [DEBUG] [Thread-200460] [transport.py] [_log()] client lang: <none>
2025-11-25T01:27:37.552 [DEBUG] [Thread-200460] [transport.py] [_log()] server lang: <none>
2025-11-25T01:27:37.552 [DEBUG] [Thread-200460] [transport.py] [_log()] kex follows: False
2025-11-25T01:27:37.552 [DEBUG] [Thread-200460] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:27:37.553 [DEBUG] [Thread-200460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:27:37.553 [DEBUG] [Thread-200460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:27:37.553 [DEBUG] [Thread-200460] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:27:37.553 [DEBUG] [Thread-200460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:27:37.553 [DEBUG] [Thread-200460] [transport.py] [_log()] Compression: none
2025-11-25T01:27:37.553 [DEBUG] [Thread-200460] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:27:37.592 [DEBUG] [Thread-200460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:27:37.597 [DEBUG] [Thread-200460] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:27:37.599 [DEBUG] [Thread-200460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:27:37.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:27:37.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:27:37.605 [DEBUG] [Thread-200460] [transport.py] [_log()] userauth is OK
2025-11-25T01:27:37.605 [DEBUG] [Thread-200460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:27:37.605 [DEBUG] [Thread-200460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:27:37.605 [DEBUG] [Thread-200460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:27:37.606 [DEBUG] [Thread-200460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:27:37.632 [INFO] [Thread-200460] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:27:37.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:27:38.393 [DEBUG] [Thread-200460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:27:38.393 [DEBUG] [Thread-200460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:27:38.405 [DEBUG] [Thread-200460] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:27:38.435 [DEBUG] [Thread-200460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:27:38.435 [DEBUG] [Thread-200460] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:27:38.439 [DEBUG] [Thread-200460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:27:38.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:27:38.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:27:38.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:27:38.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:27:38.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:27:38.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:27:38.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:27:38.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:27:38.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:27:38.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.976779 -999.00  +12.70  18.96     44   +1.10 1 1 1 1 1     0    0 12.39 18.87 ZNESW 20.2 19.0 134.6 26.2 13.0 -25.0 12.9 -24.5 12.6 -23.3 12.9 -24.2
2025-11-25T01:27:38.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:27:38.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:27:38.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.976779
2025-11-25T01:27:38.475 [DEBUG] [Thread-200460] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:27:38.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:27:38.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:27:38.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:27:38.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:27:38.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:27:38.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:27:25', tmtdew=13.51, humidity=39.03, cloud=0.0, wind=29.68, temperature=12.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:27:25', seeing=0.66, atlas_timestamp='2025-11-24T23:26:33.706', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011750000000001037, -0.02874999999999872, 0.023749999999999716, 0.012999999999998124, 0.03950000000000031, 0.034250000000000114, 0.009999999999999787, 0.006750000000000256, 0.020500000000000185, -0.007999999999999119, 0.040749999999999176, -0.006999999999999673, 0.06400000000000006, 0.10374999999999979, -0.021000000000000796, -0.0129999999999999, 0.020250000000000767, 0.009999999999999787, 0.0389999999999997, -0.039750000000001506, 0.10899999999999821, 0.12725000000000009, 0.06925000000000026, 0.03275000000000006, 0.03200000000000003, -0.0035000000000007248, -0.011250000000000426, 0.04749999999999943, 0.1379999999999999, 0.07700000000000173, 0.10000000000000142, -0.0019999999999988916, 0.028249999999999886], zp_timestamp='2025-11-24T23:25:00')
2025-11-25T01:27:38.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:27:38.601 [DEBUG] [Thread-200463] [transport.py] [_log()] starting thread (client mode): 0xd07ceec0
2025-11-25T01:27:38.601 [DEBUG] [Thread-200463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:27:38.614 [DEBUG] [Thread-200463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:27:38.614 [INFO] [Thread-200463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] client lang: <none>
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] server lang: <none>
2025-11-25T01:27:38.622 [DEBUG] [Thread-200463] [transport.py] [_log()] kex follows: False
2025-11-25T01:27:38.623 [DEBUG] [Thread-200463] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:27:38.623 [DEBUG] [Thread-200463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:27:38.623 [DEBUG] [Thread-200463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:27:38.623 [DEBUG] [Thread-200463] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:27:38.623 [DEBUG] [Thread-200463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:27:38.623 [DEBUG] [Thread-200463] [transport.py] [_log()] Compression: none
2025-11-25T01:27:38.623 [DEBUG] [Thread-200463] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:27:38.685 [DEBUG] [Thread-200463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:27:38.685 [DEBUG] [Thread-200463] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:27:38.685 [DEBUG] [Thread-200463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:27:38.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:27:38.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:27:38.740 [DEBUG] [Thread-200463] [transport.py] [_log()] userauth is OK
2025-11-25T01:27:38.740 [DEBUG] [Thread-200463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:27:38.740 [DEBUG] [Thread-200463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:27:38.740 [DEBUG] [Thread-200463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:27:38.740 [DEBUG] [Thread-200463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:27:38.754 [INFO] [Thread-200463] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:27:38.754 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:27:38.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:27:39.300 [DEBUG] [Thread-200465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:39.627 [DEBUG] [Thread-200463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:27:39.627 [DEBUG] [Thread-200463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:27:39.675 [DEBUG] [Thread-200463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:27:39.675 [DEBUG] [Thread-200463] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:27:39.683 [DEBUG] [Thread-200463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:27:39.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:27:39.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-11-25T01:27:39.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-11-25T01:27:39.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:27:39.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:27:39.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:27:39.717 [DEBUG] [Thread-200463] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:27:45.136 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:54.435 [DEBUG] [Thread-200466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:27:55.678 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:06.768 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:09.498 [DEBUG] [Thread-200467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:09.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:28:09.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:28:09.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:28:10.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 27, 58), 13.6, 38.91, 0.0, 25.6, 12.83, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:28:10.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:27:58
2025-11-25T01:28:10.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:28:11.153 [DEBUG] [Thread-200468] [transport.py] [_log()] starting thread (client mode): 0xd07cebf0
2025-11-25T01:28:11.153 [DEBUG] [Thread-200468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:28:11.168 [DEBUG] [Thread-200468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:28:11.168 [INFO] [Thread-200468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] client lang: <none>
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] server lang: <none>
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] kex follows: False
2025-11-25T01:28:11.173 [DEBUG] [Thread-200468] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:28:11.174 [DEBUG] [Thread-200468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:28:11.174 [DEBUG] [Thread-200468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:28:11.174 [DEBUG] [Thread-200468] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:28:11.174 [DEBUG] [Thread-200468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:28:11.174 [DEBUG] [Thread-200468] [transport.py] [_log()] Compression: none
2025-11-25T01:28:11.174 [DEBUG] [Thread-200468] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:28:11.206 [DEBUG] [Thread-200468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:28:11.209 [DEBUG] [Thread-200468] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:28:11.210 [DEBUG] [Thread-200468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:28:11.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:28:11.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:28:11.213 [DEBUG] [Thread-200468] [transport.py] [_log()] userauth is OK
2025-11-25T01:28:11.213 [DEBUG] [Thread-200468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:28:11.213 [DEBUG] [Thread-200468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:28:11.213 [DEBUG] [Thread-200468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:28:11.213 [DEBUG] [Thread-200468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:28:11.230 [INFO] [Thread-200468] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:28:11.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:28:11.856 [DEBUG] [Thread-200468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:28:11.856 [DEBUG] [Thread-200468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:28:11.856 [DEBUG] [Thread-200468] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:28:11.898 [DEBUG] [Thread-200468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:28:11.898 [DEBUG] [Thread-200468] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:28:11.901 [DEBUG] [Thread-200468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:28:11.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:28:11.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:28:11.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:28:11.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:28:11.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:28:11.930 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:28:11.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:28:11.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:28:11.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:28:11.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.977474 -999.00  +12.80  25.97     44   +0.90 1 1 1 1 1     0    0 12.37 21.57 ZNESW 25.9 26.0 139.6 30.5 13.0 -24.9 12.9 -24.2 12.6 -23.2 12.9 -23.8
2025-11-25T01:28:11.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:28:11.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:28:11.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.977474
2025-11-25T01:28:11.938 [DEBUG] [Thread-200468] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:28:11.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:28:11.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:28:11.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:28:11.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:28:11.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:28:11.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:27:58', tmtdew=13.6, humidity=38.91, cloud=0.0, wind=25.6, temperature=12.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:27:58', seeing=0.61, atlas_timestamp='2025-11-24T23:27:33.754', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011750000000001037, -0.02874999999999872, 0.023749999999999716, 0.012999999999998124, 0.03950000000000031, 0.034250000000000114, 0.009999999999999787, 0.006750000000000256, 0.020500000000000185, -0.007999999999999119, 0.040749999999999176, -0.006999999999999673, 0.06400000000000006, 0.10374999999999979, -0.021000000000000796, -0.0129999999999999, 0.020250000000000767, 0.009999999999999787, 0.0389999999999997, -0.039750000000001506, 0.10899999999999821, 0.12725000000000009, 0.06925000000000026, 0.03275000000000006, 0.03200000000000003, -0.0035000000000007248, -0.011250000000000426, 0.04749999999999943, 0.1379999999999999, 0.07700000000000173, 0.10000000000000142, -0.0019999999999988916, 0.028249999999999886], zp_timestamp='2025-11-24T23:25:00')
2025-11-25T01:28:12.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:28:12.064 [DEBUG] [Thread-200471] [transport.py] [_log()] starting thread (client mode): 0xd0786890
2025-11-25T01:28:12.064 [DEBUG] [Thread-200471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:28:12.079 [DEBUG] [Thread-200471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:28:12.079 [INFO] [Thread-200471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] client lang: <none>
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] server lang: <none>
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] kex follows: False
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] Compression: none
2025-11-25T01:28:12.087 [DEBUG] [Thread-200471] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:28:12.145 [DEBUG] [Thread-200471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:28:12.145 [DEBUG] [Thread-200471] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:28:12.146 [DEBUG] [Thread-200471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:28:12.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:28:12.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:28:12.201 [DEBUG] [Thread-200471] [transport.py] [_log()] userauth is OK
2025-11-25T01:28:12.201 [DEBUG] [Thread-200471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:28:12.201 [DEBUG] [Thread-200471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:28:12.201 [DEBUG] [Thread-200471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:28:12.201 [DEBUG] [Thread-200471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:28:12.221 [INFO] [Thread-200471] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:28:12.221 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:28:12.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:28:13.037 [DEBUG] [Thread-200471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:28:13.037 [DEBUG] [Thread-200471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:28:13.085 [DEBUG] [Thread-200471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:28:13.085 [DEBUG] [Thread-200471] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:28:13.095 [DEBUG] [Thread-200471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:28:13.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:28:13.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:28:13.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-11-25T01:28:13.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:28:13.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:28:13.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:28:13.133 [DEBUG] [Thread-200471] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:28:17.408 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:21.921 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:21.922 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:24.549 [DEBUG] [Thread-200473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:27.907 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:34.920 [DEBUG] [Thread-200474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:38.468 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:39.703 [DEBUG] [Thread-200475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:43.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:28:43.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:28:43.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:28:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 28, 31), 13.61, 38.88, 0.0, 25.0, 12.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:28:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:28:31
2025-11-25T01:28:44.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:28:44.752 [DEBUG] [Thread-200476] [transport.py] [_log()] starting thread (client mode): 0xd31926b0
2025-11-25T01:28:44.753 [DEBUG] [Thread-200476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:28:44.764 [DEBUG] [Thread-200476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:28:44.764 [INFO] [Thread-200476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:28:44.771 [DEBUG] [Thread-200476] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:28:44.771 [DEBUG] [Thread-200476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] client lang: <none>
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] server lang: <none>
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] kex follows: False
2025-11-25T01:28:44.772 [DEBUG] [Thread-200476] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:28:44.773 [DEBUG] [Thread-200476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:28:44.773 [DEBUG] [Thread-200476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:28:44.774 [DEBUG] [Thread-200476] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:28:44.774 [DEBUG] [Thread-200476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:28:44.774 [DEBUG] [Thread-200476] [transport.py] [_log()] Compression: none
2025-11-25T01:28:44.774 [DEBUG] [Thread-200476] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:28:44.811 [DEBUG] [Thread-200476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:28:44.817 [DEBUG] [Thread-200476] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:28:44.819 [DEBUG] [Thread-200476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:28:44.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:28:44.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:28:44.824 [DEBUG] [Thread-200476] [transport.py] [_log()] userauth is OK
2025-11-25T01:28:44.825 [DEBUG] [Thread-200476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:28:44.825 [DEBUG] [Thread-200476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:28:44.825 [DEBUG] [Thread-200476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:28:44.825 [DEBUG] [Thread-200476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:28:44.852 [INFO] [Thread-200476] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:28:44.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:28:45.640 [DEBUG] [Thread-200476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:28:45.640 [DEBUG] [Thread-200476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:28:45.641 [DEBUG] [Thread-200476] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:28:45.681 [DEBUG] [Thread-200476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:28:45.681 [DEBUG] [Thread-200476] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:28:45.684 [DEBUG] [Thread-200476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:28:45.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:28:45.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:28:45.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:28:45.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:28:45.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:28:45.710 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:28:45.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:28:45.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:28:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:28:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.977821 -999.00  +12.90  22.87     43   +0.90 1 1 1 1 1     0    0 12.42 25.13 ZNESW 16.5 22.9 134.6 26.8 13.1 -24.9 12.9 -24.3 12.6 -23.1 13.0 -24.0
2025-11-25T01:28:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:28:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:28:45.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.977821
2025-11-25T01:28:45.718 [DEBUG] [Thread-200476] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:28:45.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:28:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:28:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:28:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:28:45.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:28:45.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:28:31', tmtdew=13.61, humidity=38.88, cloud=0.0, wind=25.0, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:28:31', seeing=0.53, atlas_timestamp='2025-11-24T23:28:03.734', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011750000000001037, -0.02874999999999872, 0.023749999999999716, 0.012999999999998124, 0.03950000000000031, 0.034250000000000114, 0.009999999999999787, 0.006750000000000256, 0.020500000000000185, -0.007999999999999119, 0.040749999999999176, -0.006999999999999673, 0.06400000000000006, 0.10374999999999979, -0.021000000000000796, -0.0129999999999999, 0.020250000000000767, 0.009999999999999787, 0.0389999999999997, -0.039750000000001506, 0.10899999999999821, 0.12725000000000009, 0.06925000000000026, 0.03275000000000006, 0.03200000000000003, -0.0035000000000007248, -0.011250000000000426, 0.04749999999999943, 0.1379999999999999, 0.07700000000000173, 0.10000000000000142, -0.0019999999999988916, 0.028249999999999886], zp_timestamp='2025-11-24T23:25:00')
2025-11-25T01:28:45.825 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:28:45.838 [DEBUG] [Thread-200479] [transport.py] [_log()] starting thread (client mode): 0xd0786770
2025-11-25T01:28:45.838 [DEBUG] [Thread-200479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:28:45.854 [DEBUG] [Thread-200479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:28:45.855 [INFO] [Thread-200479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:28:45.863 [DEBUG] [Thread-200479] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:28:45.863 [DEBUG] [Thread-200479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:28:45.863 [DEBUG] [Thread-200479] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] client lang: <none>
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] server lang: <none>
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] kex follows: False
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] Compression: none
2025-11-25T01:28:45.864 [DEBUG] [Thread-200479] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:28:45.925 [DEBUG] [Thread-200479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:28:45.926 [DEBUG] [Thread-200479] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:28:45.926 [DEBUG] [Thread-200479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:28:45.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:28:45.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:28:45.985 [DEBUG] [Thread-200479] [transport.py] [_log()] userauth is OK
2025-11-25T01:28:45.985 [DEBUG] [Thread-200479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:28:45.985 [DEBUG] [Thread-200479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:28:45.985 [DEBUG] [Thread-200479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:28:45.985 [DEBUG] [Thread-200479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:28:46.005 [INFO] [Thread-200479] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:28:46.005 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:28:46.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:28:46.871 [DEBUG] [Thread-200479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:28:46.871 [DEBUG] [Thread-200479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:28:46.919 [DEBUG] [Thread-200479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:28:46.919 [DEBUG] [Thread-200479] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:28:46.927 [DEBUG] [Thread-200479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:28:46.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:28:46.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-11-25T01:28:46.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-11-25T01:28:46.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:28:46.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:28:46.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:28:46.965 [DEBUG] [Thread-200479] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:28:49.205 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:54.810 [DEBUG] [Thread-200481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:28:59.745 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:09.947 [DEBUG] [Thread-200482 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:10.250 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:16.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:29:16.985 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:29:17.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-11-25T01:29:17.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 29, 4), 13.56, 39.01, 0.0, 26.04, 12.78, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:29:17.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:29:04
2025-11-25T01:29:17.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:29:18.039 [DEBUG] [Thread-200483] [transport.py] [_log()] starting thread (client mode): 0xc9b81390
2025-11-25T01:29:18.040 [DEBUG] [Thread-200483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:29:18.040 [DEBUG] [Thread-200483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:29:18.040 [INFO] [Thread-200483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:29:18.044 [DEBUG] [Thread-200483] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:29:18.044 [DEBUG] [Thread-200483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:29:18.044 [DEBUG] [Thread-200483] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] client lang: <none>
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] server lang: <none>
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] kex follows: False
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:29:18.045 [DEBUG] [Thread-200483] [transport.py] [_log()] Compression: none
2025-11-25T01:29:18.046 [DEBUG] [Thread-200483] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:29:18.074 [DEBUG] [Thread-200483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:29:18.078 [DEBUG] [Thread-200483] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:29:18.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:29:18.080 [DEBUG] [Thread-200483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:29:18.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:29:18.082 [DEBUG] [Thread-200483] [transport.py] [_log()] userauth is OK
2025-11-25T01:29:18.082 [DEBUG] [Thread-200483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:29:18.082 [DEBUG] [Thread-200483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:29:18.082 [DEBUG] [Thread-200483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:29:18.082 [DEBUG] [Thread-200483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:29:18.112 [INFO] [Thread-200483] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:29:18.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:29:18.766 [DEBUG] [Thread-200483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:29:18.766 [DEBUG] [Thread-200483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:29:18.766 [DEBUG] [Thread-200483] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:29:18.807 [DEBUG] [Thread-200483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:29:18.807 [DEBUG] [Thread-200483] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:29:18.810 [DEBUG] [Thread-200483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:29:18.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:29:18.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:29:18.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:29:18.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:29:18.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:29:18.833 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:29:18.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:29:18.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:29:18.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:29:18.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.978168 -999.00  +12.90  18.98     44   +0.90 1 1 1 1 1     0    0 12.36 25.01 ZNESW 19.3 19.0 133.2 24.6 13.1 -25.0 12.9 -24.3 12.7 -23.4 12.9 -24.2
2025-11-25T01:29:18.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:29:18.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:29:18.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.978168
2025-11-25T01:29:18.840 [DEBUG] [Thread-200483] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:29:18.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:29:18.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:29:18.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:29:18.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:29:18.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:29:18.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:29:04', tmtdew=13.56, humidity=39.01, cloud=0.0, wind=26.04, temperature=12.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:29:04', seeing=0.61, atlas_timestamp='2025-11-24T23:28:33.715', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011750000000001037, -0.02874999999999872, 0.023749999999999716, 0.012999999999998124, 0.03950000000000031, 0.034250000000000114, 0.009999999999999787, 0.006750000000000256, 0.020500000000000185, -0.007999999999999119, 0.040749999999999176, -0.006999999999999673, 0.06400000000000006, 0.10374999999999979, -0.021000000000000796, -0.0129999999999999, 0.020250000000000767, 0.009999999999999787, 0.0389999999999997, -0.039750000000001506, 0.10899999999999821, 0.12725000000000009, 0.06925000000000026, 0.03275000000000006, 0.03200000000000003, -0.0035000000000007248, -0.011250000000000426, 0.04749999999999943, 0.1379999999999999, 0.07700000000000173, 0.10000000000000142, -0.0019999999999988916, 0.028249999999999886], zp_timestamp='2025-11-24T23:25:00')
2025-11-25T01:29:18.928 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:29:18.939 [DEBUG] [Thread-200486] [transport.py] [_log()] starting thread (client mode): 0xd0713640
2025-11-25T01:29:18.939 [DEBUG] [Thread-200486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:29:18.954 [DEBUG] [Thread-200486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:29:18.954 [INFO] [Thread-200486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] client lang: <none>
2025-11-25T01:29:18.961 [DEBUG] [Thread-200486] [transport.py] [_log()] server lang: <none>
2025-11-25T01:29:18.962 [DEBUG] [Thread-200486] [transport.py] [_log()] kex follows: False
2025-11-25T01:29:18.962 [DEBUG] [Thread-200486] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:29:18.962 [DEBUG] [Thread-200486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:29:18.962 [DEBUG] [Thread-200486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:29:18.962 [DEBUG] [Thread-200486] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:29:18.962 [DEBUG] [Thread-200486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:29:18.962 [DEBUG] [Thread-200486] [transport.py] [_log()] Compression: none
2025-11-25T01:29:18.962 [DEBUG] [Thread-200486] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:29:19.019 [DEBUG] [Thread-200486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:29:19.019 [DEBUG] [Thread-200486] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:29:19.019 [DEBUG] [Thread-200486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:29:19.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:29:19.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:29:19.076 [DEBUG] [Thread-200486] [transport.py] [_log()] userauth is OK
2025-11-25T01:29:19.076 [DEBUG] [Thread-200486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:29:19.076 [DEBUG] [Thread-200486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:29:19.076 [DEBUG] [Thread-200486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:29:19.076 [DEBUG] [Thread-200486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:29:19.090 [INFO] [Thread-200486] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:29:19.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:29:19.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:29:19.983 [DEBUG] [Thread-200486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:29:19.984 [DEBUG] [Thread-200486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:29:20.032 [DEBUG] [Thread-200486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:29:20.032 [DEBUG] [Thread-200486] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:29:20.041 [DEBUG] [Thread-200486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:29:20.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:29:20.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-11-25T01:29:20.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-11-25T01:29:20.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:29:20.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:29:20.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:29:20.077 [DEBUG] [Thread-200486] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:29:20.851 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:22.143 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:22.144 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:24.977 [DEBUG] [Thread-200488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:31.457 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:35.181 [DEBUG] [Thread-200489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:40.061 [DEBUG] [Thread-200490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:42.147 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:50.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:29:50.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:29:50.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-11-25T01:29:51.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 29, 37), 13.53, 39.09, 0.0, 26.98, 12.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:29:51.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:29:37
2025-11-25T01:29:51.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:29:51.434 [DEBUG] [Thread-200491] [transport.py] [_log()] starting thread (client mode): 0xd07ceec0
2025-11-25T01:29:51.435 [DEBUG] [Thread-200491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:29:51.446 [DEBUG] [Thread-200491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:29:51.446 [INFO] [Thread-200491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] client lang: <none>
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] server lang: <none>
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] kex follows: False
2025-11-25T01:29:51.449 [DEBUG] [Thread-200491] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:29:51.450 [DEBUG] [Thread-200491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:29:51.450 [DEBUG] [Thread-200491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:29:51.450 [DEBUG] [Thread-200491] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:29:51.450 [DEBUG] [Thread-200491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:29:51.450 [DEBUG] [Thread-200491] [transport.py] [_log()] Compression: none
2025-11-25T01:29:51.450 [DEBUG] [Thread-200491] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:29:51.475 [DEBUG] [Thread-200491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:29:51.479 [DEBUG] [Thread-200491] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:29:51.480 [DEBUG] [Thread-200491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:29:51.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:29:51.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:29:51.517 [DEBUG] [Thread-200491] [transport.py] [_log()] userauth is OK
2025-11-25T01:29:51.517 [DEBUG] [Thread-200491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:29:51.517 [DEBUG] [Thread-200491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:29:51.517 [DEBUG] [Thread-200491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:29:51.517 [DEBUG] [Thread-200491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:29:51.554 [INFO] [Thread-200491] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:29:51.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:29:52.281 [DEBUG] [Thread-200491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:29:52.281 [DEBUG] [Thread-200491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:29:52.281 [DEBUG] [Thread-200491] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:29:52.322 [DEBUG] [Thread-200491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:29:52.322 [DEBUG] [Thread-200491] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:29:52.325 [DEBUG] [Thread-200491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:29:52.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:29:52.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:29:52.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:29:52.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:29:52.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:29:52.346 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:29:52.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:29:52.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:29:52.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:29:52.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.978515 -999.00  +12.80  17.86     44   +1.00 1 1 1 1 1     0    0 12.33 23.36 ZNESW 17.5 17.9 133.0 21.4 13.1 -25.0 12.9 -24.5 12.7 -23.3 12.9 -24.3
2025-11-25T01:29:52.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:29:52.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:29:52.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.978515
2025-11-25T01:29:52.353 [DEBUG] [Thread-200491] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:29:52.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:29:52.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:29:52.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:29:52.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:29:52.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:29:52.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:29:37', tmtdew=13.53, humidity=39.09, cloud=0.0, wind=26.98, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:29:38', seeing=0.72, atlas_timestamp='2025-11-24T23:29:03.696', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011750000000001037, -0.02874999999999872, 0.023749999999999716, 0.012999999999998124, 0.03950000000000031, 0.034250000000000114, 0.009999999999999787, 0.006750000000000256, 0.020500000000000185, -0.007999999999999119, 0.040749999999999176, -0.006999999999999673, 0.06400000000000006, 0.10374999999999979, -0.021000000000000796, -0.0129999999999999, 0.020250000000000767, 0.009999999999999787, 0.0389999999999997, -0.039750000000001506, 0.10899999999999821, 0.12725000000000009, 0.06925000000000026, 0.03275000000000006, 0.03200000000000003, -0.0035000000000007248, -0.011250000000000426, 0.04749999999999943, 0.1379999999999999, 0.07700000000000173, 0.10000000000000142, -0.0019999999999988916, 0.028249999999999886], zp_timestamp='2025-11-24T23:25:00')
2025-11-25T01:29:52.438 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:29:52.450 [DEBUG] [Thread-200494] [transport.py] [_log()] starting thread (client mode): 0xd319e920
2025-11-25T01:29:52.450 [DEBUG] [Thread-200494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:29:52.466 [DEBUG] [Thread-200494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:29:52.466 [INFO] [Thread-200494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:29:52.473 [DEBUG] [Thread-200494] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:29:52.473 [DEBUG] [Thread-200494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] client lang: <none>
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] server lang: <none>
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] kex follows: False
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] Compression: none
2025-11-25T01:29:52.474 [DEBUG] [Thread-200494] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:29:52.535 [DEBUG] [Thread-200494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:29:52.535 [DEBUG] [Thread-200494] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:29:52.535 [DEBUG] [Thread-200494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:29:52.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:29:52.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:29:52.569 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:29:52.592 [DEBUG] [Thread-200494] [transport.py] [_log()] userauth is OK
2025-11-25T01:29:52.592 [DEBUG] [Thread-200494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:29:52.592 [DEBUG] [Thread-200494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:29:52.592 [DEBUG] [Thread-200494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:29:52.592 [DEBUG] [Thread-200494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:29:52.607 [INFO] [Thread-200494] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:29:52.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:29:52.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:29:53.462 [DEBUG] [Thread-200494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:29:53.462 [DEBUG] [Thread-200494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:29:53.510 [DEBUG] [Thread-200494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:29:53.510 [DEBUG] [Thread-200494] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:29:53.518 [DEBUG] [Thread-200494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:29:53.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:29:53.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-11-25T01:29:53.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-11-25T01:29:53.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:29:53.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:29:53.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:29:53.549 [DEBUG] [Thread-200494] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:29:55.109 [DEBUG] [Thread-200496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:03.345 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:10.249 [DEBUG] [Thread-200497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:13.895 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:22.354 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:22.357 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:23.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:30:23.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:30:23.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-11-25T01:30:24.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 30, 10), 13.54, 39.05, 0.0, 26.2, 12.83, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:30:24.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:30:10
2025-11-25T01:30:24.689 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:24.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:30:24.955 [DEBUG] [Thread-200498] [transport.py] [_log()] starting thread (client mode): 0xd31f52a0
2025-11-25T01:30:24.955 [DEBUG] [Thread-200498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:30:24.968 [DEBUG] [Thread-200498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:30:24.968 [INFO] [Thread-200498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:30:24.974 [DEBUG] [Thread-200498] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] client lang: <none>
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] server lang: <none>
2025-11-25T01:30:24.975 [DEBUG] [Thread-200498] [transport.py] [_log()] kex follows: False
2025-11-25T01:30:24.976 [DEBUG] [Thread-200498] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:30:24.976 [DEBUG] [Thread-200498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:30:24.977 [DEBUG] [Thread-200498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:30:24.977 [DEBUG] [Thread-200498] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:30:24.977 [DEBUG] [Thread-200498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:30:24.977 [DEBUG] [Thread-200498] [transport.py] [_log()] Compression: none
2025-11-25T01:30:24.977 [DEBUG] [Thread-200498] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:30:25.017 [DEBUG] [Thread-200498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:30:25.023 [DEBUG] [Thread-200498] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:30:25.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:30:25.026 [DEBUG] [Thread-200498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:30:25.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:30:25.029 [DEBUG] [Thread-200498] [transport.py] [_log()] userauth is OK
2025-11-25T01:30:25.029 [DEBUG] [Thread-200498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:30:25.029 [DEBUG] [Thread-200498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:30:25.030 [DEBUG] [Thread-200498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:30:25.030 [DEBUG] [Thread-200498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:30:25.056 [INFO] [Thread-200498] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:30:25.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:30:25.312 [DEBUG] [Thread-200500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:25.695 [DEBUG] [Thread-200498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:30:25.695 [DEBUG] [Thread-200498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:30:25.697 [DEBUG] [Thread-200498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:30:25.736 [DEBUG] [Thread-200498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:30:25.736 [DEBUG] [Thread-200498] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:30:25.740 [DEBUG] [Thread-200498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:30:25.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:30:25.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:30:25.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:30:25.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:30:25.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:30:25.766 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:30:25.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:30:25.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:30:25.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:30:25.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.978862 -999.00  +12.80  20.31     44   +1.00 1 1 1 1 1     0    0 12.21 21.19 ZNESW 20.8 20.3 130.4 25.9 13.0 -25.1 12.9 -24.5 12.7 -23.3 12.9 -24.3
2025-11-25T01:30:25.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:30:25.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:30:25.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.978862
2025-11-25T01:30:25.769 [DEBUG] [Thread-200498] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:30:25.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:30:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:30:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:30:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:30:25.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:30:25.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:30:10', tmtdew=13.54, humidity=39.05, cloud=0.0, wind=26.2, temperature=12.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:30:11', seeing=0.72, atlas_timestamp='2025-11-24T23:29:33.677', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011750000000001037, -0.02874999999999872, 0.023749999999999716, 0.012999999999998124, 0.03950000000000031, 0.034250000000000114, 0.009999999999999787, 0.006750000000000256, 0.020500000000000185, -0.007999999999999119, 0.040749999999999176, -0.006999999999999673, 0.06400000000000006, 0.10374999999999979, -0.021000000000000796, -0.0129999999999999, 0.020250000000000767, 0.009999999999999787, 0.0389999999999997, -0.039750000000001506, 0.10899999999999821, 0.12725000000000009, 0.06925000000000026, 0.03275000000000006, 0.03200000000000003, -0.0035000000000007248, -0.011250000000000426, 0.04749999999999943, 0.1379999999999999, 0.07700000000000173, 0.10000000000000142, -0.0019999999999988916, 0.028249999999999886], zp_timestamp='2025-11-24T23:28:00')
2025-11-25T01:30:25.882 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:30:25.895 [DEBUG] [Thread-200502] [transport.py] [_log()] starting thread (client mode): 0xd073b490
2025-11-25T01:30:25.895 [DEBUG] [Thread-200502] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:30:25.911 [DEBUG] [Thread-200502] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:30:25.911 [INFO] [Thread-200502] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] client lang: <none>
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] server lang: <none>
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] kex follows: False
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] Compression: none
2025-11-25T01:30:25.919 [DEBUG] [Thread-200502] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:30:25.977 [DEBUG] [Thread-200502] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:30:25.978 [DEBUG] [Thread-200502] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:30:25.978 [DEBUG] [Thread-200502] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:30:25.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:30:25.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:30:26.036 [DEBUG] [Thread-200502] [transport.py] [_log()] userauth is OK
2025-11-25T01:30:26.037 [DEBUG] [Thread-200502] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:30:26.037 [DEBUG] [Thread-200502] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:30:26.037 [DEBUG] [Thread-200502] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:30:26.037 [DEBUG] [Thread-200502] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:30:26.060 [INFO] [Thread-200502] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:30:26.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:30:26.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:30:26.931 [DEBUG] [Thread-200502] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:30:26.932 [DEBUG] [Thread-200502] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:30:26.979 [DEBUG] [Thread-200502] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:30:26.979 [DEBUG] [Thread-200502] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:30:26.989 [DEBUG] [Thread-200502] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:30:26.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:30:26.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-11-25T01:30:27.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-11-25T01:30:27.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:30:27.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:30:27.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:30:27.037 [DEBUG] [Thread-200502] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:30:35.102 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:35.458 [DEBUG] [Thread-200504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:40.377 [DEBUG] [Thread-200505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:45.742 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:55.501 [DEBUG] [Thread-200506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:56.632 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:30:57.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:30:57.070 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:30:57.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-11-25T01:30:58.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 30, 44), 13.57, 38.98, 0.0, 26.04, 12.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:30:58.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:30:44
2025-11-25T01:30:58.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:30:58.447 [DEBUG] [Thread-200507] [transport.py] [_log()] starting thread (client mode): 0xc9b769e0
2025-11-25T01:30:58.448 [DEBUG] [Thread-200507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:30:58.456 [DEBUG] [Thread-200507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:30:58.456 [INFO] [Thread-200507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:30:58.462 [DEBUG] [Thread-200507] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:30:58.462 [DEBUG] [Thread-200507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:30:58.462 [DEBUG] [Thread-200507] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:30:58.462 [DEBUG] [Thread-200507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:30:58.462 [DEBUG] [Thread-200507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:30:58.462 [DEBUG] [Thread-200507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:30:58.462 [DEBUG] [Thread-200507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:30:58.462 [DEBUG] [Thread-200507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:30:58.463 [DEBUG] [Thread-200507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:30:58.463 [DEBUG] [Thread-200507] [transport.py] [_log()] client lang: <none>
2025-11-25T01:30:58.463 [DEBUG] [Thread-200507] [transport.py] [_log()] server lang: <none>
2025-11-25T01:30:58.463 [DEBUG] [Thread-200507] [transport.py] [_log()] kex follows: False
2025-11-25T01:30:58.463 [DEBUG] [Thread-200507] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:30:58.463 [DEBUG] [Thread-200507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:30:58.464 [DEBUG] [Thread-200507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:30:58.464 [DEBUG] [Thread-200507] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:30:58.464 [DEBUG] [Thread-200507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:30:58.464 [DEBUG] [Thread-200507] [transport.py] [_log()] Compression: none
2025-11-25T01:30:58.464 [DEBUG] [Thread-200507] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:30:58.502 [DEBUG] [Thread-200507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:30:58.508 [DEBUG] [Thread-200507] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:30:58.510 [DEBUG] [Thread-200507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:30:58.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:30:58.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:30:58.516 [DEBUG] [Thread-200507] [transport.py] [_log()] userauth is OK
2025-11-25T01:30:58.516 [DEBUG] [Thread-200507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:30:58.516 [DEBUG] [Thread-200507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:30:58.516 [DEBUG] [Thread-200507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:30:58.516 [DEBUG] [Thread-200507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:30:58.543 [INFO] [Thread-200507] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:30:58.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:30:59.285 [DEBUG] [Thread-200507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:30:59.286 [DEBUG] [Thread-200507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:30:59.296 [DEBUG] [Thread-200507] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:30:59.327 [DEBUG] [Thread-200507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:30:59.327 [DEBUG] [Thread-200507] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:30:59.331 [DEBUG] [Thread-200507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:30:59.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:30:59.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:30:59.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:30:59.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:30:59.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:30:59.354 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:30:59.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:30:59.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:30:59.356 [DEBUG] [Thread-200507] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:30:59.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:30:59.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.979209 -999.00  +12.70  14.88     44   +1.00 1 1 1 1 1     0    0 12.23 24.14 ZNESW 18.8 14.9 136.0 23.8 13.0 -25.0 12.9 -24.4 12.7 -23.4 12.9 -24.1
2025-11-25T01:30:59.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:30:59.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:30:59.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.979209
2025-11-25T01:30:59.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:30:59.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:30:59.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:30:59.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:30:59.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:30:59.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:30:44', tmtdew=13.57, humidity=38.98, cloud=0.0, wind=26.04, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:30:44', seeing=0.65, atlas_timestamp='2025-11-24T23:30:03.658', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011750000000001037, -0.02874999999999872, 0.023749999999999716, 0.012999999999998124, 0.03950000000000031, 0.034250000000000114, 0.009999999999999787, 0.006750000000000256, 0.020500000000000185, -0.007999999999999119, 0.040749999999999176, -0.006999999999999673, 0.06400000000000006, 0.10374999999999979, -0.021000000000000796, -0.0129999999999999, 0.020250000000000767, 0.009999999999999787, 0.0389999999999997, -0.039750000000001506, 0.10899999999999821, 0.12725000000000009, 0.06925000000000026, 0.03275000000000006, 0.03200000000000003, -0.0035000000000007248, -0.011250000000000426, 0.04749999999999943, 0.1379999999999999, 0.07700000000000173, 0.10000000000000142, -0.0019999999999988916, 0.028249999999999886], zp_timestamp='2025-11-24T23:28:00')
2025-11-25T01:30:59.468 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:30:59.479 [DEBUG] [Thread-200510] [transport.py] [_log()] starting thread (client mode): 0xd073a620
2025-11-25T01:30:59.479 [DEBUG] [Thread-200510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:30:59.495 [DEBUG] [Thread-200510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:30:59.495 [INFO] [Thread-200510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:30:59.503 [DEBUG] [Thread-200510] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:30:59.503 [DEBUG] [Thread-200510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:30:59.503 [DEBUG] [Thread-200510] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:30:59.503 [DEBUG] [Thread-200510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:30:59.503 [DEBUG] [Thread-200510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:30:59.503 [DEBUG] [Thread-200510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:30:59.503 [DEBUG] [Thread-200510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:30:59.503 [DEBUG] [Thread-200510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:30:59.504 [DEBUG] [Thread-200510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:30:59.504 [DEBUG] [Thread-200510] [transport.py] [_log()] client lang: <none>
2025-11-25T01:30:59.504 [DEBUG] [Thread-200510] [transport.py] [_log()] server lang: <none>
2025-11-25T01:30:59.504 [DEBUG] [Thread-200510] [transport.py] [_log()] kex follows: False
2025-11-25T01:30:59.504 [DEBUG] [Thread-200510] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:30:59.504 [DEBUG] [Thread-200510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:30:59.504 [DEBUG] [Thread-200510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:30:59.504 [DEBUG] [Thread-200510] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:30:59.504 [DEBUG] [Thread-200510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:30:59.505 [DEBUG] [Thread-200510] [transport.py] [_log()] Compression: none
2025-11-25T01:30:59.505 [DEBUG] [Thread-200510] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:30:59.561 [DEBUG] [Thread-200510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:30:59.561 [DEBUG] [Thread-200510] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:30:59.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:30:59.562 [DEBUG] [Thread-200510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:30:59.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:30:59.620 [DEBUG] [Thread-200510] [transport.py] [_log()] userauth is OK
2025-11-25T01:30:59.620 [DEBUG] [Thread-200510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:30:59.621 [DEBUG] [Thread-200510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:30:59.621 [DEBUG] [Thread-200510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:30:59.621 [DEBUG] [Thread-200510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:30:59.644 [INFO] [Thread-200510] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:30:59.644 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:30:59.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:31:00.469 [DEBUG] [Thread-200510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:31:00.469 [DEBUG] [Thread-200510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:31:00.516 [DEBUG] [Thread-200510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:31:00.516 [DEBUG] [Thread-200510] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:31:00.525 [DEBUG] [Thread-200510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:31:00.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:31:00.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:31:00.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-11-25T01:31:00.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:31:00.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:31:00.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:31:00.565 [DEBUG] [Thread-200510] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:31:07.078 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:10.577 [DEBUG] [Thread-200512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:17.718 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:22.562 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:22.566 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:25.736 [DEBUG] [Thread-200513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:28.110 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:30.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:31:30.558 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:31: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-11-25T01:31:31.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 31, 16), 13.56, 39.03, 0.0, 25.41, 12.9, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:31:31.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:31:16
2025-11-25T01:31:31.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:31:31.936 [DEBUG] [Thread-200514] [transport.py] [_log()] starting thread (client mode): 0xd07cfd90
2025-11-25T01:31:31.937 [DEBUG] [Thread-200514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:31:31.950 [DEBUG] [Thread-200514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:31:31.950 [INFO] [Thread-200514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:31:31.957 [DEBUG] [Thread-200514] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:31:31.958 [DEBUG] [Thread-200514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:31:31.958 [DEBUG] [Thread-200514] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:31:31.958 [DEBUG] [Thread-200514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:31:31.958 [DEBUG] [Thread-200514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:31:31.958 [DEBUG] [Thread-200514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:31:31.958 [DEBUG] [Thread-200514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:31:31.958 [DEBUG] [Thread-200514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:31:31.958 [DEBUG] [Thread-200514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:31:31.958 [DEBUG] [Thread-200514] [transport.py] [_log()] client lang: <none>
2025-11-25T01:31:31.959 [DEBUG] [Thread-200514] [transport.py] [_log()] server lang: <none>
2025-11-25T01:31:31.959 [DEBUG] [Thread-200514] [transport.py] [_log()] kex follows: False
2025-11-25T01:31:31.959 [DEBUG] [Thread-200514] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:31:31.960 [DEBUG] [Thread-200514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:31:31.960 [DEBUG] [Thread-200514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:31:31.960 [DEBUG] [Thread-200514] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:31:31.960 [DEBUG] [Thread-200514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:31:31.961 [DEBUG] [Thread-200514] [transport.py] [_log()] Compression: none
2025-11-25T01:31:31.961 [DEBUG] [Thread-200514] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:31:31.999 [DEBUG] [Thread-200514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:31:32.006 [DEBUG] [Thread-200514] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:31:32.008 [DEBUG] [Thread-200514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:31:32.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:31:32.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:31:32.014 [DEBUG] [Thread-200514] [transport.py] [_log()] userauth is OK
2025-11-25T01:31:32.015 [DEBUG] [Thread-200514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:31:32.015 [DEBUG] [Thread-200514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:31:32.015 [DEBUG] [Thread-200514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:31:32.016 [DEBUG] [Thread-200514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:31:32.043 [INFO] [Thread-200514] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:31:32.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:31:32.704 [DEBUG] [Thread-200514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:31:32.704 [DEBUG] [Thread-200514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:31:32.714 [DEBUG] [Thread-200514] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:31:32.745 [DEBUG] [Thread-200514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:31:32.745 [DEBUG] [Thread-200514] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:31:32.748 [DEBUG] [Thread-200514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:31:32.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:31:32.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:31:32.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:31:32.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:31:32.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:31:32.770 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:31:32.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:31:32.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:31:32.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:31:32.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.979904 -999.00  +12.80  25.26     44   +0.90 1 1 1 1 1     0    0 12.30 19.11 ZNESW 27.8 25.3 128.2 29.6 13.0 -24.8 12.9 -24.4 12.6 -23.3 12.9 -23.9
2025-11-25T01:31:32.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:31:32.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:31:32.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.979904
2025-11-25T01:31:32.778 [DEBUG] [Thread-200514] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:31:32.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:31:32.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:31:32.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:31:32.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:31:32.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:31:32.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:31:16', tmtdew=13.56, humidity=39.03, cloud=0.0, wind=25.41, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:31:17', seeing=0.65, atlas_timestamp='2025-11-24T23:31:03.706', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011750000000001037, -0.02874999999999872, 0.023749999999999716, 0.012999999999998124, 0.03950000000000031, 0.034250000000000114, 0.009999999999999787, 0.006750000000000256, 0.020500000000000185, -0.007999999999999119, 0.040749999999999176, -0.006999999999999673, 0.06400000000000006, 0.10374999999999979, -0.021000000000000796, -0.0129999999999999, 0.020250000000000767, 0.009999999999999787, 0.0389999999999997, -0.039750000000001506, 0.10899999999999821, 0.12725000000000009, 0.06925000000000026, 0.03275000000000006, 0.03200000000000003, -0.0035000000000007248, -0.011250000000000426, 0.04749999999999943, 0.1379999999999999, 0.07700000000000173, 0.10000000000000142, -0.0019999999999988916, 0.028249999999999886], zp_timestamp='2025-11-24T23:28:00')
2025-11-25T01:31:32.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:31:32.878 [DEBUG] [Thread-200517] [transport.py] [_log()] starting thread (client mode): 0xd07cdfc0
2025-11-25T01:31:32.878 [DEBUG] [Thread-200517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:31:32.895 [DEBUG] [Thread-200517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:31:32.895 [INFO] [Thread-200517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] client lang: <none>
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] server lang: <none>
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] kex follows: False
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:31:32.903 [DEBUG] [Thread-200517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:31:32.904 [DEBUG] [Thread-200517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:31:32.904 [DEBUG] [Thread-200517] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:31:32.904 [DEBUG] [Thread-200517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:31:32.904 [DEBUG] [Thread-200517] [transport.py] [_log()] Compression: none
2025-11-25T01:31:32.904 [DEBUG] [Thread-200517] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:31:32.959 [DEBUG] [Thread-200517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:31:32.959 [DEBUG] [Thread-200517] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:31:32.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:31:32.960 [DEBUG] [Thread-200517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:31:32.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:31:33.016 [DEBUG] [Thread-200517] [transport.py] [_log()] userauth is OK
2025-11-25T01:31:33.016 [DEBUG] [Thread-200517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:31:33.017 [DEBUG] [Thread-200517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:31:33.017 [DEBUG] [Thread-200517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:31:33.017 [DEBUG] [Thread-200517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:31:33.042 [INFO] [Thread-200517] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:31:33.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:31:33.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:31:33.887 [DEBUG] [Thread-200517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:31:33.887 [DEBUG] [Thread-200517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:31:33.936 [DEBUG] [Thread-200517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:31:33.936 [DEBUG] [Thread-200517] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:31:33.945 [DEBUG] [Thread-200517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:31:33.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:31:33.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-11-25T01:31:33.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-11-25T01:31:33.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:31:33.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:31:33.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:31:33.991 [DEBUG] [Thread-200517] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:31:35.702 [DEBUG] [Thread-200519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:38.612 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:40.810 [DEBUG] [Thread-200520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:49.255 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:55.913 [DEBUG] [Thread-200521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:31:59.755 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:04.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:32:04.017 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:32:04.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-11-25T01:32:04.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 31, 49), 13.39, 39.69, 0.0, 23.77, 12.76, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:32:04.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:31:49
2025-11-25T01:32:05.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:32:05.244 [DEBUG] [Thread-200522] [transport.py] [_log()] starting thread (client mode): 0xc9b80340
2025-11-25T01:32:05.245 [DEBUG] [Thread-200522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:32:05.245 [DEBUG] [Thread-200522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:32:05.246 [INFO] [Thread-200522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] client lang: <none>
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] server lang: <none>
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] kex follows: False
2025-11-25T01:32:05.250 [DEBUG] [Thread-200522] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:32:05.251 [DEBUG] [Thread-200522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:32:05.251 [DEBUG] [Thread-200522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:32:05.251 [DEBUG] [Thread-200522] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:32:05.251 [DEBUG] [Thread-200522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:32:05.251 [DEBUG] [Thread-200522] [transport.py] [_log()] Compression: none
2025-11-25T01:32:05.251 [DEBUG] [Thread-200522] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:32:05.284 [DEBUG] [Thread-200522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:32:05.288 [DEBUG] [Thread-200522] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:32:05.290 [DEBUG] [Thread-200522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:32:05.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:32:05.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:32:05.295 [DEBUG] [Thread-200522] [transport.py] [_log()] userauth is OK
2025-11-25T01:32:05.295 [DEBUG] [Thread-200522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:32:05.295 [DEBUG] [Thread-200522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:32:05.295 [DEBUG] [Thread-200522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:32:05.295 [DEBUG] [Thread-200522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:32:05.323 [INFO] [Thread-200522] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:32:05.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:32:06.046 [DEBUG] [Thread-200522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:32:06.046 [DEBUG] [Thread-200522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:32:06.047 [DEBUG] [Thread-200522] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:32:06.088 [DEBUG] [Thread-200522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:32:06.088 [DEBUG] [Thread-200522] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:32:06.091 [DEBUG] [Thread-200522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:32:06.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:32:06.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:32:06.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:32:06.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:32:06.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:32:06.121 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:32:06.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:32:06.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:32:06.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:32:06.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.980251 -999.00  +12.90  18.91     44   +1.00 1 1 1 1 1     0    0 12.03 19.06 ZNESW 19.7 18.9 135.2 26.7 13.1 -24.9 12.9 -24.5 12.6 -23.2 12.9 -24.0
2025-11-25T01:32:06.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:32:06.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:32:06.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.980251
2025-11-25T01:32:06.129 [DEBUG] [Thread-200522] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:32:06.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:32:06.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:32:06.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:32:06.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:32:06.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:32:06.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:31:49', tmtdew=13.39, humidity=39.69, cloud=0.0, wind=23.77, temperature=12.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:31:49', seeing=0.77, atlas_timestamp='2025-11-24T23:31:33.686', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011750000000001037, -0.02874999999999872, 0.023749999999999716, 0.012999999999998124, 0.03950000000000031, 0.034250000000000114, 0.009999999999999787, 0.006750000000000256, 0.020500000000000185, -0.007999999999999119, 0.040749999999999176, -0.006999999999999673, 0.06400000000000006, 0.10374999999999979, -0.021000000000000796, -0.0129999999999999, 0.020250000000000767, 0.009999999999999787, 0.0389999999999997, -0.039750000000001506, 0.10899999999999821, 0.12725000000000009, 0.06925000000000026, 0.03275000000000006, 0.03200000000000003, -0.0035000000000007248, -0.011250000000000426, 0.04749999999999943, 0.1379999999999999, 0.07700000000000173, 0.10000000000000142, -0.0019999999999988916, 0.028249999999999886], zp_timestamp='2025-11-24T23:28:00')
2025-11-25T01:32:06.234 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:32:10.169 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:10.965 [DEBUG] [Thread-200525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:20.625 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:22.774 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:22.776 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:26.137 [DEBUG] [Thread-200526 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:31.027 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:35.967 [DEBUG] [Thread-200527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:41.233 [DEBUG] [Thread-200528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:41.673 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:52.297 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:32:56.277 [DEBUG] [Thread-200529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:02.898 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:11.336 [DEBUG] [Thread-200530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:13.473 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:22.994 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:23.006 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:23.888 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:26.418 [DEBUG] [Thread-200531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:34.612 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:36.199 [DEBUG] [Thread-200532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:41.497 [DEBUG] [Thread-200533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:45.402 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:56.191 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:33:56.532 [DEBUG] [Thread-200534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:06.924 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:11.587 [DEBUG] [Thread-200535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:17.914 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:21.633 [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-11-25T01:34:23.208 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:23.211 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:26.680 [DEBUG] [Thread-200536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:28.564 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:36.496 [DEBUG] [Thread-200537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:39.114 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:41.727 [DEBUG] [Thread-200538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:49.833 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:34:51.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:34:51.684 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:34:51.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:34:52.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 34, 34), 13.58, 39.08, 0.0, 24.61, 12.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:34:52.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:34:34
2025-11-25T01:34:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:34:53.213 [DEBUG] [Thread-200539] [transport.py] [_log()] starting thread (client mode): 0xc9b80d30
2025-11-25T01:34:53.214 [DEBUG] [Thread-200539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:34:53.221 [DEBUG] [Thread-200539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:34:53.221 [INFO] [Thread-200539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:34:53.227 [DEBUG] [Thread-200539] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:34:53.228 [DEBUG] [Thread-200539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:34:53.228 [DEBUG] [Thread-200539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:34:53.228 [DEBUG] [Thread-200539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:34:53.228 [DEBUG] [Thread-200539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:34:53.228 [DEBUG] [Thread-200539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:34:53.228 [DEBUG] [Thread-200539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:34:53.228 [DEBUG] [Thread-200539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:34:53.228 [DEBUG] [Thread-200539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:34:53.229 [DEBUG] [Thread-200539] [transport.py] [_log()] client lang: <none>
2025-11-25T01:34:53.229 [DEBUG] [Thread-200539] [transport.py] [_log()] server lang: <none>
2025-11-25T01:34:53.229 [DEBUG] [Thread-200539] [transport.py] [_log()] kex follows: False
2025-11-25T01:34:53.229 [DEBUG] [Thread-200539] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:34:53.229 [DEBUG] [Thread-200539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:34:53.230 [DEBUG] [Thread-200539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:34:53.230 [DEBUG] [Thread-200539] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:34:53.230 [DEBUG] [Thread-200539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:34:53.230 [DEBUG] [Thread-200539] [transport.py] [_log()] Compression: none
2025-11-25T01:34:53.230 [DEBUG] [Thread-200539] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:34:53.267 [DEBUG] [Thread-200539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:34:53.272 [DEBUG] [Thread-200539] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:34:53.274 [DEBUG] [Thread-200539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:34:53.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:34:53.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:34:53.281 [DEBUG] [Thread-200539] [transport.py] [_log()] userauth is OK
2025-11-25T01:34:53.281 [DEBUG] [Thread-200539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:34:53.282 [DEBUG] [Thread-200539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:34:53.282 [DEBUG] [Thread-200539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:34:53.282 [DEBUG] [Thread-200539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:34:53.309 [INFO] [Thread-200539] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:34:53.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:34:53.961 [DEBUG] [Thread-200539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:34:53.961 [DEBUG] [Thread-200539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:34:53.962 [DEBUG] [Thread-200539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:34:54.002 [DEBUG] [Thread-200539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:34:54.002 [DEBUG] [Thread-200539] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:34:54.005 [DEBUG] [Thread-200539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:34:54.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:34:54.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:34:54.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:34:54.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:34:54.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:34:54.027 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:34:54.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:34:54.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:34:54.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:34:54.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.982334 -999.00  +12.80  22.23     44   +0.90 1 1 1 1 1     0    0 12.04 16.49 ZNESW 22.3 22.2 127.4 28.1 13.1 -24.8 12.9 -24.4 12.7 -23.3 13.0 -24.1
2025-11-25T01:34:54.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:34:54.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:34:54.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.982334
2025-11-25T01:34:54.034 [DEBUG] [Thread-200539] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:34:54.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:34:54.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:34:54.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:34:54.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:34:54.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:34:54.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:34:34', tmtdew=13.58, humidity=39.08, cloud=0.0, wind=24.61, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:34:35', seeing=0.63, atlas_timestamp='2025-11-24T23:34:33.658', atlas_cloud=1, atlas_rain=1, zp_data=[0.003249999999999531, 0.008250000000000313, 0.0442499999999999, -0.03250000000000064, 0.027499999999999858, 0.0652500000000007, 0.03199999999999825, 0.006250000000001421, 0.013499999999998735, 0.002000000000000668, 0.04025000000000034, -0.018000000000000682, 0.12400000000000055, 0.1327499999999997, 0.03399999999999892, -0.01249999999999929, 0.04124999999999979, 0.033500000000000085, 0.022499999999999076, -0.03575000000000017, 0.10149999999999793, 0.09774999999999778, 0.06625000000000014, 0.02674999999999983, 0.04249999999999865, 0.012000000000000455, 0.0002500000000011937, 0.046499999999999986, 0.13949999999999996, 0.09700000000000131, 0.1070000000000011, 0.01699999999999946, 0.03074999999999939], zp_timestamp='2025-11-24T23:31:00')
2025-11-25T01:34:54.124 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:34:54.141 [DEBUG] [Thread-200542] [transport.py] [_log()] starting thread (client mode): 0xc9b82590
2025-11-25T01:34:54.141 [DEBUG] [Thread-200542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:34:54.156 [DEBUG] [Thread-200542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:34:54.156 [INFO] [Thread-200542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:34:54.164 [DEBUG] [Thread-200542] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:34:54.164 [DEBUG] [Thread-200542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:34:54.164 [DEBUG] [Thread-200542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:34:54.164 [DEBUG] [Thread-200542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:34:54.164 [DEBUG] [Thread-200542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:34:54.165 [DEBUG] [Thread-200542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:34:54.165 [DEBUG] [Thread-200542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:34:54.165 [DEBUG] [Thread-200542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:34:54.165 [DEBUG] [Thread-200542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:34:54.165 [DEBUG] [Thread-200542] [transport.py] [_log()] client lang: <none>
2025-11-25T01:34:54.165 [DEBUG] [Thread-200542] [transport.py] [_log()] server lang: <none>
2025-11-25T01:34:54.165 [DEBUG] [Thread-200542] [transport.py] [_log()] kex follows: False
2025-11-25T01:34:54.165 [DEBUG] [Thread-200542] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:34:54.165 [DEBUG] [Thread-200542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:34:54.165 [DEBUG] [Thread-200542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:34:54.166 [DEBUG] [Thread-200542] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:34:54.166 [DEBUG] [Thread-200542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:34:54.166 [DEBUG] [Thread-200542] [transport.py] [_log()] Compression: none
2025-11-25T01:34:54.166 [DEBUG] [Thread-200542] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:34:54.226 [DEBUG] [Thread-200542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:34:54.226 [DEBUG] [Thread-200542] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:34:54.227 [DEBUG] [Thread-200542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:34:54.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:34:54.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:34:54.285 [DEBUG] [Thread-200542] [transport.py] [_log()] userauth is OK
2025-11-25T01:34:54.285 [DEBUG] [Thread-200542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:34:54.285 [DEBUG] [Thread-200542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:34:54.285 [DEBUG] [Thread-200542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:34:54.285 [DEBUG] [Thread-200542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:34:54.304 [INFO] [Thread-200542] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:34:54.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:34:54.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:34:55.139 [DEBUG] [Thread-200542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:34:55.140 [DEBUG] [Thread-200542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:34:55.192 [DEBUG] [Thread-200542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:34:55.192 [DEBUG] [Thread-200542] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:34:55.202 [DEBUG] [Thread-200542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:34:55.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:34:55.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:34:55.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-11-25T01:34:55.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:34:55.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:34:55.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:34:55.248 [DEBUG] [Thread-200542] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:34:56.807 [DEBUG] [Thread-200544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:00.503 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:11.174 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:11.961 [DEBUG] [Thread-200545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:21.729 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:23.414 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:23.415 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:25.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:35:25.272 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:35:25.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-11-25T01:35:26.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 35, 8), 13.64, 38.95, 0.0, 25.6, 12.91, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:35:26.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:35:08
2025-11-25T01:35:26.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:35:26.455 [DEBUG] [Thread-200546] [transport.py] [_log()] starting thread (client mode): 0xc9b805b0
2025-11-25T01:35:26.456 [DEBUG] [Thread-200546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:35:26.464 [DEBUG] [Thread-200546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:35:26.464 [INFO] [Thread-200546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:35:26.477 [DEBUG] [Thread-200546] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:35:26.477 [DEBUG] [Thread-200546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:35:26.477 [DEBUG] [Thread-200546] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:35:26.477 [DEBUG] [Thread-200546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:35:26.477 [DEBUG] [Thread-200546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:35:26.477 [DEBUG] [Thread-200546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:35:26.477 [DEBUG] [Thread-200546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:35:26.478 [DEBUG] [Thread-200546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:35:26.478 [DEBUG] [Thread-200546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:35:26.478 [DEBUG] [Thread-200546] [transport.py] [_log()] client lang: <none>
2025-11-25T01:35:26.478 [DEBUG] [Thread-200546] [transport.py] [_log()] server lang: <none>
2025-11-25T01:35:26.478 [DEBUG] [Thread-200546] [transport.py] [_log()] kex follows: False
2025-11-25T01:35:26.478 [DEBUG] [Thread-200546] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:35:26.479 [DEBUG] [Thread-200546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:35:26.479 [DEBUG] [Thread-200546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:35:26.479 [DEBUG] [Thread-200546] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:35:26.479 [DEBUG] [Thread-200546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:35:26.479 [DEBUG] [Thread-200546] [transport.py] [_log()] Compression: none
2025-11-25T01:35:26.480 [DEBUG] [Thread-200546] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:35:26.508 [DEBUG] [Thread-200546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:35:26.512 [DEBUG] [Thread-200546] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:35:26.514 [DEBUG] [Thread-200546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:35:26.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:35:26.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:35:26.519 [DEBUG] [Thread-200546] [transport.py] [_log()] userauth is OK
2025-11-25T01:35:26.519 [DEBUG] [Thread-200546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:35:26.520 [DEBUG] [Thread-200546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:35:26.520 [DEBUG] [Thread-200546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:35:26.520 [DEBUG] [Thread-200546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:35:26.546 [INFO] [Thread-200546] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:35:26.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:35:27.009 [DEBUG] [Thread-200548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:27.186 [DEBUG] [Thread-200546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:35:27.186 [DEBUG] [Thread-200546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:35:27.188 [DEBUG] [Thread-200546] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:35:27.227 [DEBUG] [Thread-200546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:35:27.227 [DEBUG] [Thread-200546] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:35:27.231 [DEBUG] [Thread-200546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:35:27.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:35:27.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:35:27.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:35:27.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:35:27.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:35:27.260 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:35:27.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:35:27.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:35:27.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:35:27.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.982681 -999.00  +12.80  16.25     44   +0.90 1 1 1 1 1     0    0 12.27 18.38 ZNESW 21.9 16.2 138.6 25.1 13.1 -24.9 12.9 -24.4 12.7 -23.2 12.9 -24.2
2025-11-25T01:35:27.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:35:27.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:35:27.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.982681
2025-11-25T01:35:27.268 [DEBUG] [Thread-200546] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:35:27.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:35:27.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:35:27.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:35:27.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:35:27.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:35:27.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:35:08', tmtdew=13.64, humidity=38.95, cloud=0.0, wind=25.6, temperature=12.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:35:08', seeing=0.8, atlas_timestamp='2025-11-24T23:35:03.638', atlas_cloud=1, atlas_rain=1, zp_data=[0.003249999999999531, 0.008250000000000313, 0.0442499999999999, -0.03250000000000064, 0.027499999999999858, 0.0652500000000007, 0.03199999999999825, 0.006250000000001421, 0.013499999999998735, 0.002000000000000668, 0.04025000000000034, -0.018000000000000682, 0.12400000000000055, 0.1327499999999997, 0.03399999999999892, -0.01249999999999929, 0.04124999999999979, 0.033500000000000085, 0.022499999999999076, -0.03575000000000017, 0.10149999999999793, 0.09774999999999778, 0.06625000000000014, 0.02674999999999983, 0.04249999999999865, 0.012000000000000455, 0.0002500000000011937, 0.046499999999999986, 0.13949999999999996, 0.09700000000000131, 0.1070000000000011, 0.01699999999999946, 0.03074999999999939], zp_timestamp='2025-11-24T23:31:00')
2025-11-25T01:35:27.361 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:35:27.374 [DEBUG] [Thread-200550] [transport.py] [_log()] starting thread (client mode): 0xd314b820
2025-11-25T01:35:27.375 [DEBUG] [Thread-200550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:35:27.390 [DEBUG] [Thread-200550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:35:27.391 [INFO] [Thread-200550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:35:27.398 [DEBUG] [Thread-200550] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:35:27.398 [DEBUG] [Thread-200550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] client lang: <none>
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] server lang: <none>
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] kex follows: False
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:35:27.399 [DEBUG] [Thread-200550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:35:27.400 [DEBUG] [Thread-200550] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:35:27.400 [DEBUG] [Thread-200550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:35:27.400 [DEBUG] [Thread-200550] [transport.py] [_log()] Compression: none
2025-11-25T01:35:27.400 [DEBUG] [Thread-200550] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:35:27.461 [DEBUG] [Thread-200550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:35:27.462 [DEBUG] [Thread-200550] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:35:27.463 [DEBUG] [Thread-200550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:35:27.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:35:27.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:35:27.524 [DEBUG] [Thread-200550] [transport.py] [_log()] userauth is OK
2025-11-25T01:35:27.524 [DEBUG] [Thread-200550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:35:27.524 [DEBUG] [Thread-200550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:35:27.524 [DEBUG] [Thread-200550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:35:27.524 [DEBUG] [Thread-200550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:35:27.543 [INFO] [Thread-200550] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:35:27.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:35:27.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:35:28.441 [DEBUG] [Thread-200550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:35:28.441 [DEBUG] [Thread-200550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:35:28.490 [DEBUG] [Thread-200550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:35:28.490 [DEBUG] [Thread-200550] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:35:28.499 [DEBUG] [Thread-200550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:35:28.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:35:28.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-11-25T01:35:28.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-11-25T01:35:28.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:35:28.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:35:28.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:35:28.550 [DEBUG] [Thread-200550] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:35:32.393 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:36.778 [DEBUG] [Thread-200552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:42.057 [DEBUG] [Thread-200553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:42.962 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:53.570 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:57.149 [DEBUG] [Thread-200554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:35:58.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:35:58.574 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:35:58.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:35:59.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 35, 41), 13.6, 38.9, 0.0, 24.33, 12.86, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:35:59.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:35:41
2025-11-25T01:35:59.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:35:59.910 [DEBUG] [Thread-200555] [transport.py] [_log()] starting thread (client mode): 0xc9b817e0
2025-11-25T01:35:59.911 [DEBUG] [Thread-200555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:35:59.920 [DEBUG] [Thread-200555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:35:59.921 [INFO] [Thread-200555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] client lang: <none>
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] server lang: <none>
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] kex follows: False
2025-11-25T01:35:59.927 [DEBUG] [Thread-200555] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:35:59.928 [DEBUG] [Thread-200555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:35:59.928 [DEBUG] [Thread-200555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:35:59.928 [DEBUG] [Thread-200555] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:35:59.928 [DEBUG] [Thread-200555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:35:59.928 [DEBUG] [Thread-200555] [transport.py] [_log()] Compression: none
2025-11-25T01:35:59.928 [DEBUG] [Thread-200555] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:35:59.962 [DEBUG] [Thread-200555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:35:59.966 [DEBUG] [Thread-200555] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:35:59.968 [DEBUG] [Thread-200555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:35:59.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:35:59.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:35:59.972 [DEBUG] [Thread-200555] [transport.py] [_log()] userauth is OK
2025-11-25T01:35:59.972 [DEBUG] [Thread-200555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:35:59.972 [DEBUG] [Thread-200555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:35:59.972 [DEBUG] [Thread-200555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:35:59.972 [DEBUG] [Thread-200555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:36:00.003 [INFO] [Thread-200555] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:36:00.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:36:00.640 [DEBUG] [Thread-200555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:36:00.640 [DEBUG] [Thread-200555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:36:00.641 [DEBUG] [Thread-200555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:36:00.681 [DEBUG] [Thread-200555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:36:00.681 [DEBUG] [Thread-200555] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:36:00.684 [DEBUG] [Thread-200555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:36:00.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:36:00.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:36:00.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:36:00.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:36:00.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:36:00.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:36:00.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:36:00.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:36:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:36:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.983028 -999.00  +12.90  21.81     43   +0.90 1 1 1 1 1     0    0 12.25 17.17 ZNESW 21.6 21.8 141.6 31.6 13.1 -24.9 12.9 -24.4 12.6 -23.3 12.9 -24.2
2025-11-25T01:36:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:36:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:36:00.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.983028
2025-11-25T01:36:00.732 [DEBUG] [Thread-200555] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:36:00.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:36:00.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:36:00.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:36:00.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:36:00.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:36:00.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:35:41', tmtdew=13.6, humidity=38.9, cloud=0.0, wind=24.33, temperature=12.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:35:41', seeing=0.58, atlas_timestamp='2025-11-24T23:35:33.619', atlas_cloud=1, atlas_rain=1, zp_data=[0.003249999999999531, 0.008250000000000313, 0.0442499999999999, -0.03250000000000064, 0.027499999999999858, 0.0652500000000007, 0.03199999999999825, 0.006250000000001421, 0.013499999999998735, 0.002000000000000668, 0.04025000000000034, -0.018000000000000682, 0.12400000000000055, 0.1327499999999997, 0.03399999999999892, -0.01249999999999929, 0.04124999999999979, 0.033500000000000085, 0.022499999999999076, -0.03575000000000017, 0.10149999999999793, 0.09774999999999778, 0.06625000000000014, 0.02674999999999983, 0.04249999999999865, 0.012000000000000455, 0.0002500000000011937, 0.046499999999999986, 0.13949999999999996, 0.09700000000000131, 0.1070000000000011, 0.01699999999999946, 0.03074999999999939], zp_timestamp='2025-11-24T23:31:00')
2025-11-25T01:36:00.821 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:36:00.833 [DEBUG] [Thread-200558] [transport.py] [_log()] starting thread (client mode): 0xd07ce680
2025-11-25T01:36:00.833 [DEBUG] [Thread-200558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:36:00.847 [DEBUG] [Thread-200558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:36:00.847 [INFO] [Thread-200558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] client lang: <none>
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] server lang: <none>
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] kex follows: False
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:36:00.855 [DEBUG] [Thread-200558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:36:00.856 [DEBUG] [Thread-200558] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:36:00.856 [DEBUG] [Thread-200558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:36:00.856 [DEBUG] [Thread-200558] [transport.py] [_log()] Compression: none
2025-11-25T01:36:00.856 [DEBUG] [Thread-200558] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:36:00.914 [DEBUG] [Thread-200558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:36:00.914 [DEBUG] [Thread-200558] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:36:00.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:36:00.915 [DEBUG] [Thread-200558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:36:00.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:36:00.972 [DEBUG] [Thread-200558] [transport.py] [_log()] userauth is OK
2025-11-25T01:36:00.972 [DEBUG] [Thread-200558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:36:00.972 [DEBUG] [Thread-200558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:36:00.972 [DEBUG] [Thread-200558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:36:00.972 [DEBUG] [Thread-200558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:36:00.986 [INFO] [Thread-200558] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:36:00.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:36:00.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:36:01.822 [DEBUG] [Thread-200558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:36:01.822 [DEBUG] [Thread-200558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:36:01.870 [DEBUG] [Thread-200558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:36:01.870 [DEBUG] [Thread-200558] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:36:01.879 [DEBUG] [Thread-200558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:36:01.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:36:01.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:36:01.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-11-25T01:36:01.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:36:01.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:36:01.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:36:01.913 [DEBUG] [Thread-200558] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:36:04.385 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:12.215 [DEBUG] [Thread-200560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:15.131 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:23.626 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:23.629 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:25.666 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:27.409 [DEBUG] [Thread-200561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:31.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:36:31.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:36:31.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-11-25T01:36:32.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 36, 14), 13.59, 38.91, 0.0, 22.97, 12.81, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:36:32.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:36:14
2025-11-25T01:36:32.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:36:33.146 [DEBUG] [Thread-200562] [transport.py] [_log()] starting thread (client mode): 0xd319fe20
2025-11-25T01:36:33.147 [DEBUG] [Thread-200562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:36:33.147 [DEBUG] [Thread-200562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:36:33.148 [INFO] [Thread-200562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] client lang: <none>
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] server lang: <none>
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] kex follows: False
2025-11-25T01:36:33.152 [DEBUG] [Thread-200562] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:36:33.153 [DEBUG] [Thread-200562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:36:33.153 [DEBUG] [Thread-200562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:36:33.153 [DEBUG] [Thread-200562] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:36:33.153 [DEBUG] [Thread-200562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:36:33.153 [DEBUG] [Thread-200562] [transport.py] [_log()] Compression: none
2025-11-25T01:36:33.153 [DEBUG] [Thread-200562] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:36:33.180 [DEBUG] [Thread-200562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:36:33.185 [DEBUG] [Thread-200562] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:36:33.188 [DEBUG] [Thread-200562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:36:33.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:36:33.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:36:33.193 [DEBUG] [Thread-200562] [transport.py] [_log()] userauth is OK
2025-11-25T01:36:33.194 [DEBUG] [Thread-200562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:36:33.194 [DEBUG] [Thread-200562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:36:33.194 [DEBUG] [Thread-200562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:36:33.194 [DEBUG] [Thread-200562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:36:33.222 [INFO] [Thread-200562] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:36:33.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:36:33.851 [DEBUG] [Thread-200562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:36:33.851 [DEBUG] [Thread-200562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:36:33.853 [DEBUG] [Thread-200562] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:36:33.892 [DEBUG] [Thread-200562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:36:33.892 [DEBUG] [Thread-200562] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:36:33.895 [DEBUG] [Thread-200562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:36:33.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:36:33.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:36:33.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:36:33.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:36:33.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:36:33.924 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:36:33.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:36:33.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:36:33.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:36:33.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.983376 -999.00  +12.80  20.94     44   +0.90 1 1 1 1 1     0    0 12.07 15.92 ZNESW 19.5 20.9 134.6 23.8 13.1 -25.0 12.9 -24.3 12.7 -23.3 13.0 -24.3
2025-11-25T01:36:33.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:36:33.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:36:33.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.983376
2025-11-25T01:36:33.937 [DEBUG] [Thread-200562] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:36:33.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:36:33.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:36:33.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:36:33.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:36:33.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:36:33.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:36:14', tmtdew=13.59, humidity=38.91, cloud=0.0, wind=22.97, temperature=12.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:36:14', seeing=0.61, atlas_timestamp='2025-11-24T23:36:03.686', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0002500000000011937, -0.043250000000000455, -0.0017499999999994742, 0.005499999999999616, -0.0235000000000003, 0.04225000000000101, 0.006999999999999673, -0.014749999999999375, 0.0034999999999989484, -0.007999999999999119, 0.02874999999999872, -0.0065000000000008384, 0.04800000000000004, 0.06274999999999942, -0.012000000000000455, -0.031500000000001194, 0.024250000000000327, 0.002000000000000668, -0.008000000000000895, -0.035250000000001336, 0.08299999999999841, 0.10774999999999935, 0.043250000000000455, 0.012750000000000483, -0.0009999999999994458, 0.022500000000000853, -0.025749999999998607, 0.018499999999999517, 0.11800000000000033, 0.07500000000000107, 0.09100000000000108, 0.009500000000000952, -0.012750000000000483], zp_timestamp='2025-11-24T23:35:00')
2025-11-25T01:36:34.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:36:34.031 [DEBUG] [Thread-200565] [transport.py] [_log()] starting thread (client mode): 0xd319fb80
2025-11-25T01:36:34.031 [DEBUG] [Thread-200565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:36:34.045 [DEBUG] [Thread-200565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:36:34.046 [INFO] [Thread-200565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:36:34.053 [DEBUG] [Thread-200565] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:36:34.053 [DEBUG] [Thread-200565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:36:34.053 [DEBUG] [Thread-200565] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:36:34.053 [DEBUG] [Thread-200565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:36:34.053 [DEBUG] [Thread-200565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:36:34.053 [DEBUG] [Thread-200565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:36:34.053 [DEBUG] [Thread-200565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:36:34.053 [DEBUG] [Thread-200565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:36:34.053 [DEBUG] [Thread-200565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:36:34.053 [DEBUG] [Thread-200565] [transport.py] [_log()] client lang: <none>
2025-11-25T01:36:34.054 [DEBUG] [Thread-200565] [transport.py] [_log()] server lang: <none>
2025-11-25T01:36:34.054 [DEBUG] [Thread-200565] [transport.py] [_log()] kex follows: False
2025-11-25T01:36:34.054 [DEBUG] [Thread-200565] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:36:34.054 [DEBUG] [Thread-200565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:36:34.054 [DEBUG] [Thread-200565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:36:34.054 [DEBUG] [Thread-200565] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:36:34.054 [DEBUG] [Thread-200565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:36:34.054 [DEBUG] [Thread-200565] [transport.py] [_log()] Compression: none
2025-11-25T01:36:34.054 [DEBUG] [Thread-200565] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:36:34.112 [DEBUG] [Thread-200565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:36:34.113 [DEBUG] [Thread-200565] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:36:34.114 [DEBUG] [Thread-200565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:36:34.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:36:34.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:36:34.169 [DEBUG] [Thread-200565] [transport.py] [_log()] userauth is OK
2025-11-25T01:36:34.169 [DEBUG] [Thread-200565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:36:34.169 [DEBUG] [Thread-200565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:36:34.169 [DEBUG] [Thread-200565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:36:34.170 [DEBUG] [Thread-200565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:36:34.189 [INFO] [Thread-200565] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:36:34.189 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:36:34.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:36:35.016 [DEBUG] [Thread-200565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:36:35.016 [DEBUG] [Thread-200565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:36:35.065 [DEBUG] [Thread-200565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:36:35.065 [DEBUG] [Thread-200565] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:36:35.074 [DEBUG] [Thread-200565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:36:35.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:36:35.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-11-25T01:36:35.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-11-25T01:36:35.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:36:35.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:36:35.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:36:35.109 [DEBUG] [Thread-200565] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:36:36.178 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:36.985 [DEBUG] [Thread-200567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:42.475 [DEBUG] [Thread-200568 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:46.968 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:57.678 [DEBUG] [Thread-200569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:36:57.994 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:05.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:37:05.134 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:37:05.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-11-25T01:37:06.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 36, 47), 13.52, 39.5, 0.0, 25.05, 12.8, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:37:06.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:36:47
2025-11-25T01:37:06.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:37:06.595 [DEBUG] [Thread-200570] [transport.py] [_log()] starting thread (client mode): 0xd0739d50
2025-11-25T01:37:06.596 [DEBUG] [Thread-200570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:37:06.608 [DEBUG] [Thread-200570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:37:06.608 [INFO] [Thread-200570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:37:06.614 [DEBUG] [Thread-200570] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:37:06.614 [DEBUG] [Thread-200570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:37:06.614 [DEBUG] [Thread-200570] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:37:06.614 [DEBUG] [Thread-200570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:37:06.614 [DEBUG] [Thread-200570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:37:06.615 [DEBUG] [Thread-200570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:37:06.615 [DEBUG] [Thread-200570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:37:06.615 [DEBUG] [Thread-200570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:37:06.615 [DEBUG] [Thread-200570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:37:06.615 [DEBUG] [Thread-200570] [transport.py] [_log()] client lang: <none>
2025-11-25T01:37:06.615 [DEBUG] [Thread-200570] [transport.py] [_log()] server lang: <none>
2025-11-25T01:37:06.615 [DEBUG] [Thread-200570] [transport.py] [_log()] kex follows: False
2025-11-25T01:37:06.615 [DEBUG] [Thread-200570] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:37:06.616 [DEBUG] [Thread-200570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:37:06.616 [DEBUG] [Thread-200570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:37:06.616 [DEBUG] [Thread-200570] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:37:06.616 [DEBUG] [Thread-200570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:37:06.616 [DEBUG] [Thread-200570] [transport.py] [_log()] Compression: none
2025-11-25T01:37:06.616 [DEBUG] [Thread-200570] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:37:06.653 [DEBUG] [Thread-200570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:37:06.659 [DEBUG] [Thread-200570] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:37:06.660 [DEBUG] [Thread-200570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:37:06.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:37:06.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:37:06.665 [DEBUG] [Thread-200570] [transport.py] [_log()] userauth is OK
2025-11-25T01:37:06.665 [DEBUG] [Thread-200570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:37:06.665 [DEBUG] [Thread-200570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:37:06.665 [DEBUG] [Thread-200570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:37:06.665 [DEBUG] [Thread-200570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:37:06.691 [INFO] [Thread-200570] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:37:06.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:37:07.343 [DEBUG] [Thread-200570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:37:07.344 [DEBUG] [Thread-200570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:37:07.345 [DEBUG] [Thread-200570] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:37:07.386 [DEBUG] [Thread-200570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:37:07.386 [DEBUG] [Thread-200570] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:37:07.389 [DEBUG] [Thread-200570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:37:07.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:37:07.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:37:07.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:37:07.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:37:07.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:37:07.415 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:37:07.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:37:07.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:37:07.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:37:07.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.983723 -999.00  +12.80  19.79     44   +0.90 1 1 1 1 1     0    0 12.21 16.61 ZNESW 17.0 19.8 140.6 25.4 13.0 -25.0 12.9 -24.5 12.7 -23.4 13.0 -24.4
2025-11-25T01:37:07.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:37:07.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:37:07.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.983723
2025-11-25T01:37:07.422 [DEBUG] [Thread-200570] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:37:07.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:37:07.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:37:07.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:37:07.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:37:07.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:37:07.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:36:47', tmtdew=13.52, humidity=39.5, cloud=0.0, wind=25.05, temperature=12.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:36:48', seeing=0.69, atlas_timestamp='2025-11-24T23:36:33.667', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0002500000000011937, -0.043250000000000455, -0.0017499999999994742, 0.005499999999999616, -0.0235000000000003, 0.04225000000000101, 0.006999999999999673, -0.014749999999999375, 0.0034999999999989484, -0.007999999999999119, 0.02874999999999872, -0.0065000000000008384, 0.04800000000000004, 0.06274999999999942, -0.012000000000000455, -0.031500000000001194, 0.024250000000000327, 0.002000000000000668, -0.008000000000000895, -0.035250000000001336, 0.08299999999999841, 0.10774999999999935, 0.043250000000000455, 0.012750000000000483, -0.0009999999999994458, 0.022500000000000853, -0.025749999999998607, 0.018499999999999517, 0.11800000000000033, 0.07500000000000107, 0.09100000000000108, 0.009500000000000952, -0.012750000000000483], zp_timestamp='2025-11-24T23:35:00')
2025-11-25T01:37:07.524 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:37:07.535 [DEBUG] [Thread-200573] [transport.py] [_log()] starting thread (client mode): 0xc9b807f0
2025-11-25T01:37:07.535 [DEBUG] [Thread-200573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:37:07.551 [DEBUG] [Thread-200573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:37:07.551 [INFO] [Thread-200573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:37:07.559 [DEBUG] [Thread-200573] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:37:07.559 [DEBUG] [Thread-200573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:37:07.559 [DEBUG] [Thread-200573] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:37:07.559 [DEBUG] [Thread-200573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:37:07.559 [DEBUG] [Thread-200573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:37:07.559 [DEBUG] [Thread-200573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] client lang: <none>
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] server lang: <none>
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] kex follows: False
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] Compression: none
2025-11-25T01:37:07.560 [DEBUG] [Thread-200573] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:37:07.615 [DEBUG] [Thread-200573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:37:07.615 [DEBUG] [Thread-200573] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:37:07.615 [DEBUG] [Thread-200573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:37:07.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:37:07.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:37:07.673 [DEBUG] [Thread-200573] [transport.py] [_log()] userauth is OK
2025-11-25T01:37:07.673 [DEBUG] [Thread-200573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:37:07.673 [DEBUG] [Thread-200573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:37:07.673 [DEBUG] [Thread-200573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:37:07.673 [DEBUG] [Thread-200573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:37:07.691 [INFO] [Thread-200573] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:37:07.691 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:37:07.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:37:08.597 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:08.634 [DEBUG] [Thread-200573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:37:08.634 [DEBUG] [Thread-200573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:37:08.682 [DEBUG] [Thread-200573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:37:08.682 [DEBUG] [Thread-200573] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:37:08.691 [DEBUG] [Thread-200573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:37:08.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:37:08.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-11-25T01:37:08.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-11-25T01:37:08.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:37:08.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:37:08.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:37:08.728 [DEBUG] [Thread-200573] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:37:12.764 [DEBUG] [Thread-200575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:19.279 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:23.842 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:23.853 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:27.874 [DEBUG] [Thread-200576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:29.861 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:37.249 [DEBUG] [Thread-200577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:38.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:37:38.753 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:37:38.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-11-25T01:37:39.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 37, 20), 13.51, 39.51, 0.0, 24.95, 12.76, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:37:39.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:37:20
2025-11-25T01:37:40.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:37:40.262 [DEBUG] [Thread-200578] [transport.py] [_log()] starting thread (client mode): 0xc9b80130
2025-11-25T01:37:40.263 [DEBUG] [Thread-200578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:37:40.276 [DEBUG] [Thread-200578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:37:40.276 [INFO] [Thread-200578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:37:40.282 [DEBUG] [Thread-200578] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:37:40.282 [DEBUG] [Thread-200578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:37:40.282 [DEBUG] [Thread-200578] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:37:40.282 [DEBUG] [Thread-200578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:37:40.282 [DEBUG] [Thread-200578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:37:40.282 [DEBUG] [Thread-200578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:37:40.282 [DEBUG] [Thread-200578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:37:40.283 [DEBUG] [Thread-200578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:37:40.283 [DEBUG] [Thread-200578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:37:40.283 [DEBUG] [Thread-200578] [transport.py] [_log()] client lang: <none>
2025-11-25T01:37:40.283 [DEBUG] [Thread-200578] [transport.py] [_log()] server lang: <none>
2025-11-25T01:37:40.283 [DEBUG] [Thread-200578] [transport.py] [_log()] kex follows: False
2025-11-25T01:37:40.283 [DEBUG] [Thread-200578] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:37:40.283 [DEBUG] [Thread-200578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:37:40.283 [DEBUG] [Thread-200578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:37:40.283 [DEBUG] [Thread-200578] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:37:40.284 [DEBUG] [Thread-200578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:37:40.284 [DEBUG] [Thread-200578] [transport.py] [_log()] Compression: none
2025-11-25T01:37:40.284 [DEBUG] [Thread-200578] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:37:40.323 [DEBUG] [Thread-200578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:37:40.328 [DEBUG] [Thread-200578] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:37:40.330 [DEBUG] [Thread-200578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:37:40.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:37:40.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:37:40.336 [DEBUG] [Thread-200578] [transport.py] [_log()] userauth is OK
2025-11-25T01:37:40.337 [DEBUG] [Thread-200578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:37:40.337 [DEBUG] [Thread-200578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:37:40.337 [DEBUG] [Thread-200578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:37:40.337 [DEBUG] [Thread-200578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:37:40.364 [INFO] [Thread-200578] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:37:40.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:37:40.432 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:40.990 [DEBUG] [Thread-200578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:37:40.990 [DEBUG] [Thread-200578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:37:41.000 [DEBUG] [Thread-200578] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:37:41.032 [DEBUG] [Thread-200578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:37:41.032 [DEBUG] [Thread-200578] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:37:41.036 [DEBUG] [Thread-200578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:37:41.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:37:41.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:37:41.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:37:41.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:37:41.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:37:41.063 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:37:41.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:37:41.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:37:41.066 [DEBUG] [Thread-200578] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:37:41.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:37:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.984071 -999.00  +12.80  20.67     44   +0.80 1 1 1 1 1     0    0 12.15 15.84 ZNESW 17.9 20.7 145.8 23.4 13.0 -24.9 12.9 -24.6 12.7 -23.4 12.9 -24.2
2025-11-25T01:37:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:37:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:37:41.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.984071
2025-11-25T01:37:41.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:37:41.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:37:41.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:37:41.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:37:41.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:37:41.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:37:20', tmtdew=13.51, humidity=39.51, cloud=0.0, wind=24.95, temperature=12.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:37:21', seeing=0.62, atlas_timestamp='2025-11-24T23:37:03.734', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0002500000000011937, -0.043250000000000455, -0.0017499999999994742, 0.005499999999999616, -0.0235000000000003, 0.04225000000000101, 0.006999999999999673, -0.014749999999999375, 0.0034999999999989484, -0.007999999999999119, 0.02874999999999872, -0.0065000000000008384, 0.04800000000000004, 0.06274999999999942, -0.012000000000000455, -0.031500000000001194, 0.024250000000000327, 0.002000000000000668, -0.008000000000000895, -0.035250000000001336, 0.08299999999999841, 0.10774999999999935, 0.043250000000000455, 0.012750000000000483, -0.0009999999999994458, 0.022500000000000853, -0.025749999999998607, 0.018499999999999517, 0.11800000000000033, 0.07500000000000107, 0.09100000000000108, 0.009500000000000952, -0.012750000000000483], zp_timestamp='2025-11-24T23:35:00')
2025-11-25T01:37:41.162 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:37:41.175 [DEBUG] [Thread-200581] [transport.py] [_log()] starting thread (client mode): 0xd3149180
2025-11-25T01:37:41.175 [DEBUG] [Thread-200581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:37:41.190 [DEBUG] [Thread-200581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:37:41.190 [INFO] [Thread-200581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] client lang: <none>
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] server lang: <none>
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] kex follows: False
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] Compression: none
2025-11-25T01:37:41.198 [DEBUG] [Thread-200581] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:37:41.254 [DEBUG] [Thread-200581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:37:41.255 [DEBUG] [Thread-200581] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:37:41.255 [DEBUG] [Thread-200581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:37:41.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:37:41.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:37:41.312 [DEBUG] [Thread-200581] [transport.py] [_log()] userauth is OK
2025-11-25T01:37:41.312 [DEBUG] [Thread-200581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:37:41.313 [DEBUG] [Thread-200581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:37:41.313 [DEBUG] [Thread-200581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:37:41.313 [DEBUG] [Thread-200581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:37:41.334 [INFO] [Thread-200581] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:37:41.335 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:37:41.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:37:42.200 [DEBUG] [Thread-200581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:37:42.201 [DEBUG] [Thread-200581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:37:42.249 [DEBUG] [Thread-200581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:37:42.249 [DEBUG] [Thread-200581] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:37:42.258 [DEBUG] [Thread-200581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:37:42.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:37:42.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:37:42.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:37:42.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:37:42.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:37:42.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:37:42.306 [DEBUG] [Thread-200581] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:37:42.925 [DEBUG] [Thread-200583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:51.030 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:37:58.102 [DEBUG] [Thread-200584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:01.676 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:12.081 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:12.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:38:12.333 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:38:12.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-11-25T01:38:13.197 [DEBUG] [Thread-200585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:13.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 37, 53), 13.7, 39.03, 0.0, 26.4, 12.87, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:38:13.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:37:53
2025-11-25T01:38:13.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:38:13.777 [DEBUG] [Thread-200586] [transport.py] [_log()] starting thread (client mode): 0xc9b82260
2025-11-25T01:38:13.778 [DEBUG] [Thread-200586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:38:13.790 [DEBUG] [Thread-200586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:38:13.791 [INFO] [Thread-200586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:38:13.796 [DEBUG] [Thread-200586] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:38:13.796 [DEBUG] [Thread-200586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:38:13.797 [DEBUG] [Thread-200586] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:38:13.797 [DEBUG] [Thread-200586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:38:13.797 [DEBUG] [Thread-200586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:38:13.797 [DEBUG] [Thread-200586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:38:13.797 [DEBUG] [Thread-200586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:38:13.797 [DEBUG] [Thread-200586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:38:13.797 [DEBUG] [Thread-200586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:38:13.797 [DEBUG] [Thread-200586] [transport.py] [_log()] client lang: <none>
2025-11-25T01:38:13.797 [DEBUG] [Thread-200586] [transport.py] [_log()] server lang: <none>
2025-11-25T01:38:13.797 [DEBUG] [Thread-200586] [transport.py] [_log()] kex follows: False
2025-11-25T01:38:13.798 [DEBUG] [Thread-200586] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:38:13.798 [DEBUG] [Thread-200586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:38:13.798 [DEBUG] [Thread-200586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:38:13.799 [DEBUG] [Thread-200586] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:38:13.799 [DEBUG] [Thread-200586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:38:13.799 [DEBUG] [Thread-200586] [transport.py] [_log()] Compression: none
2025-11-25T01:38:13.799 [DEBUG] [Thread-200586] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:38:13.837 [DEBUG] [Thread-200586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:38:13.841 [DEBUG] [Thread-200586] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:38:13.843 [DEBUG] [Thread-200586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:38:13.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:38:13.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:38:13.848 [DEBUG] [Thread-200586] [transport.py] [_log()] userauth is OK
2025-11-25T01:38:13.848 [DEBUG] [Thread-200586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:38:13.849 [DEBUG] [Thread-200586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:38:13.849 [DEBUG] [Thread-200586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:38:13.849 [DEBUG] [Thread-200586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:38:13.887 [INFO] [Thread-200586] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:38:13.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:38:14.541 [DEBUG] [Thread-200586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:38:14.541 [DEBUG] [Thread-200586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:38:14.544 [DEBUG] [Thread-200586] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:38:14.582 [DEBUG] [Thread-200586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:38:14.582 [DEBUG] [Thread-200586] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:38:14.585 [DEBUG] [Thread-200586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:38:14.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:38:14.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:38:14.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:38:14.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:38:14.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:38:14.605 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:38:14.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:38:14.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:38:14.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:38:14.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.984418 -999.00  +12.80  18.50     44   +0.80 1 1 1 1 1     0    0 12.30 16.10 ZNESW 20.0 18.5 134.8 29.2 13.1 -25.0 12.9 -24.5 12.7 -23.5 12.9 -24.3
2025-11-25T01:38:14.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:38:14.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:38:14.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.984418
2025-11-25T01:38:14.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:38:14.622 [DEBUG] [Thread-200586] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:38:14.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:38:14.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:38:14.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:38:14.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:38:14.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:37:53', tmtdew=13.7, humidity=39.03, cloud=0.0, wind=26.4, temperature=12.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:37:53', seeing=0.62, atlas_timestamp='2025-11-24T23:37:33.715', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0002500000000011937, -0.043250000000000455, -0.0017499999999994742, 0.005499999999999616, -0.0235000000000003, 0.04225000000000101, 0.006999999999999673, -0.014749999999999375, 0.0034999999999989484, -0.007999999999999119, 0.02874999999999872, -0.0065000000000008384, 0.04800000000000004, 0.06274999999999942, -0.012000000000000455, -0.031500000000001194, 0.024250000000000327, 0.002000000000000668, -0.008000000000000895, -0.035250000000001336, 0.08299999999999841, 0.10774999999999935, 0.043250000000000455, 0.012750000000000483, -0.0009999999999994458, 0.022500000000000853, -0.025749999999998607, 0.018499999999999517, 0.11800000000000033, 0.07500000000000107, 0.09100000000000108, 0.009500000000000952, -0.012750000000000483], zp_timestamp='2025-11-24T23:35:00')
2025-11-25T01:38: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-11-25T01:38:14.708 [DEBUG] [Thread-200589] [transport.py] [_log()] starting thread (client mode): 0xd317f640
2025-11-25T01:38:14.708 [DEBUG] [Thread-200589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:38:14.724 [DEBUG] [Thread-200589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:38:14.724 [INFO] [Thread-200589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] client lang: <none>
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] server lang: <none>
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] kex follows: False
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:38:14.732 [DEBUG] [Thread-200589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:38:14.733 [DEBUG] [Thread-200589] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:38:14.733 [DEBUG] [Thread-200589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:38:14.733 [DEBUG] [Thread-200589] [transport.py] [_log()] Compression: none
2025-11-25T01:38:14.733 [DEBUG] [Thread-200589] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:38:14.789 [DEBUG] [Thread-200589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:38:14.790 [DEBUG] [Thread-200589] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:38:14.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:38:14.791 [DEBUG] [Thread-200589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:38:14.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:38:14.844 [DEBUG] [Thread-200589] [transport.py] [_log()] userauth is OK
2025-11-25T01:38:14.845 [DEBUG] [Thread-200589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:38:14.845 [DEBUG] [Thread-200589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:38:14.845 [DEBUG] [Thread-200589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:38:14.845 [DEBUG] [Thread-200589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:38:14.864 [INFO] [Thread-200589] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:38:14.864 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:38:14.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:38:15.755 [DEBUG] [Thread-200589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:38:15.756 [DEBUG] [Thread-200589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:38:15.803 [DEBUG] [Thread-200589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:38:15.804 [DEBUG] [Thread-200589] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:38:15.813 [DEBUG] [Thread-200589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:38:15.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:38:15.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-11-25T01:38:15.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-11-25T01:38:15.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:38:15.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:38:15.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:38:15.857 [DEBUG] [Thread-200589] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:38:22.669 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:24.066 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:24.068 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:28.260 [DEBUG] [Thread-200591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:33.392 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:37.520 [DEBUG] [Thread-200592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:43.421 [DEBUG] [Thread-200593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:44.030 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:45.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:38:45.881 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:38:45.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-11-25T01:38:46.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 38, 26), 13.7, 39.03, 0.0, 26.33, 12.9, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:38:46.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:38:26
2025-11-25T01:38:46.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:38:47.136 [DEBUG] [Thread-200594] [transport.py] [_log()] starting thread (client mode): 0xd317d930
2025-11-25T01:38:47.137 [DEBUG] [Thread-200594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:38:47.147 [DEBUG] [Thread-200594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:38:47.147 [INFO] [Thread-200594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:38:47.150 [DEBUG] [Thread-200594] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:38:47.150 [DEBUG] [Thread-200594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] client lang: <none>
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] server lang: <none>
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] kex follows: False
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:38:47.151 [DEBUG] [Thread-200594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:38:47.152 [DEBUG] [Thread-200594] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:38:47.152 [DEBUG] [Thread-200594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:38:47.152 [DEBUG] [Thread-200594] [transport.py] [_log()] Compression: none
2025-11-25T01:38:47.152 [DEBUG] [Thread-200594] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:38:47.181 [DEBUG] [Thread-200594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:38:47.185 [DEBUG] [Thread-200594] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:38:47.186 [DEBUG] [Thread-200594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:38:47.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:38:47.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:38:47.189 [DEBUG] [Thread-200594] [transport.py] [_log()] userauth is OK
2025-11-25T01:38:47.190 [DEBUG] [Thread-200594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:38:47.190 [DEBUG] [Thread-200594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:38:47.190 [DEBUG] [Thread-200594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:38:47.190 [DEBUG] [Thread-200594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:38:47.207 [INFO] [Thread-200594] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:38:47.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:38:47.885 [DEBUG] [Thread-200594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:38:47.885 [DEBUG] [Thread-200594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:38:47.886 [DEBUG] [Thread-200594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:38:47.927 [DEBUG] [Thread-200594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:38:47.927 [DEBUG] [Thread-200594] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:38:47.930 [DEBUG] [Thread-200594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:38:47.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:38:47.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:38:47.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:38:47.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:38:47.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:38:47.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:38:47.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:38:47.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:38:47.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:38:47.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.985112 -999.00  +12.80  20.86     44   +0.80 1 1 1 1 1     0    0 12.20 16.90 ZNESW 20.5 20.9 136.3 27.7 13.1 -25.1 12.9 -24.5 12.7 -23.5 12.9 -24.3
2025-11-25T01:38:47.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:38:47.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:38:47.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.985112
2025-11-25T01:38:47.953 [DEBUG] [Thread-200594] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:38:47.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:38:47.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:38:47.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:38:47.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:38:47.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:38:47.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:38:26', tmtdew=13.7, humidity=39.03, cloud=0.0, wind=26.33, temperature=12.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:38:27', seeing=0.61, atlas_timestamp='2025-11-24T23:38:33.677', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0002500000000011937, -0.043250000000000455, -0.0017499999999994742, 0.005499999999999616, -0.0235000000000003, 0.04225000000000101, 0.006999999999999673, -0.014749999999999375, 0.0034999999999989484, -0.007999999999999119, 0.02874999999999872, -0.0065000000000008384, 0.04800000000000004, 0.06274999999999942, -0.012000000000000455, -0.031500000000001194, 0.024250000000000327, 0.002000000000000668, -0.008000000000000895, -0.035250000000001336, 0.08299999999999841, 0.10774999999999935, 0.043250000000000455, 0.012750000000000483, -0.0009999999999994458, 0.022500000000000853, -0.025749999999998607, 0.018499999999999517, 0.11800000000000033, 0.07500000000000107, 0.09100000000000108, 0.009500000000000952, -0.012750000000000483], zp_timestamp='2025-11-24T23:35:00')
2025-11-25T01:38:48.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:38:48.070 [DEBUG] [Thread-200597] [transport.py] [_log()] starting thread (client mode): 0xd314a740
2025-11-25T01:38:48.070 [DEBUG] [Thread-200597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:38:48.085 [DEBUG] [Thread-200597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:38:48.085 [INFO] [Thread-200597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] client lang: <none>
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] server lang: <none>
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] kex follows: False
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] Compression: none
2025-11-25T01:38:48.093 [DEBUG] [Thread-200597] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:38:48.151 [DEBUG] [Thread-200597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:38:48.151 [DEBUG] [Thread-200597] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:38:48.151 [DEBUG] [Thread-200597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:38:48.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:38:48.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:38:48.208 [DEBUG] [Thread-200597] [transport.py] [_log()] userauth is OK
2025-11-25T01:38:48.208 [DEBUG] [Thread-200597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:38:48.208 [DEBUG] [Thread-200597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:38:48.208 [DEBUG] [Thread-200597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:38:48.208 [DEBUG] [Thread-200597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:38:48.222 [INFO] [Thread-200597] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:38:48.222 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:38:48.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:38:49.130 [DEBUG] [Thread-200597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:38:49.130 [DEBUG] [Thread-200597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:38:49.178 [DEBUG] [Thread-200597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:38:49.178 [DEBUG] [Thread-200597] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:38:49.186 [DEBUG] [Thread-200597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:38:49.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:38:49.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-11-25T01:38:49.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-11-25T01:38:49.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:38:49.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:38:49.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:38:49.219 [DEBUG] [Thread-200597] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:38:54.672 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:38:58.486 [DEBUG] [Thread-200599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:05.093 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:13.635 [DEBUG] [Thread-200600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:15.792 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:19.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:39:19.252 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:39:19.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-11-25T01:39:20.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 38, 59), 13.69, 38.56, 0.0, 25.88, 12.87, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:39:20.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:38:59
2025-11-25T01:39:20.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:39:20.716 [DEBUG] [Thread-200601] [transport.py] [_log()] starting thread (client mode): 0xc9b82530
2025-11-25T01:39:20.717 [DEBUG] [Thread-200601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:39:20.723 [DEBUG] [Thread-200601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:39:20.723 [INFO] [Thread-200601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:39:20.727 [DEBUG] [Thread-200601] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:39:20.727 [DEBUG] [Thread-200601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:39:20.727 [DEBUG] [Thread-200601] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] client lang: <none>
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] server lang: <none>
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] kex follows: False
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:39:20.728 [DEBUG] [Thread-200601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:39:20.729 [DEBUG] [Thread-200601] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:39:20.729 [DEBUG] [Thread-200601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:39:20.729 [DEBUG] [Thread-200601] [transport.py] [_log()] Compression: none
2025-11-25T01:39:20.729 [DEBUG] [Thread-200601] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:39:20.753 [DEBUG] [Thread-200601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:39:20.757 [DEBUG] [Thread-200601] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:39:20.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:39:20.761 [DEBUG] [Thread-200601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:39:20.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:39:20.764 [DEBUG] [Thread-200601] [transport.py] [_log()] userauth is OK
2025-11-25T01:39:20.764 [DEBUG] [Thread-200601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:39:20.764 [DEBUG] [Thread-200601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:39:20.764 [DEBUG] [Thread-200601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:39:20.764 [DEBUG] [Thread-200601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:39:20.791 [INFO] [Thread-200601] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:39:20.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:39:21.351 [DEBUG] [Thread-200601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:39:21.351 [DEBUG] [Thread-200601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:39:21.352 [DEBUG] [Thread-200601] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:39:21.392 [DEBUG] [Thread-200601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:39:21.392 [DEBUG] [Thread-200601] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:39:21.395 [DEBUG] [Thread-200601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:39:21.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:39:21.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:39:21.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:39:21.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:39:21.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:39:21.415 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:39:21.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:39:21.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:39:21.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:39:21.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.985459 -999.00  +12.80  24.36     44   +0.80 1 1 1 1 1     0    0 12.19 16.59 ZNESW 20.8 24.4 130.6 28.9 13.1 -25.2 12.9 -24.5 12.7 -23.5 12.9 -24.3
2025-11-25T01:39:21.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:39:21.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:39:21.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.985459
2025-11-25T01:39:21.422 [DEBUG] [Thread-200601] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:39:21.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:39:21.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:39:21.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:39:21.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:39:21.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:39:21.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:38:59', tmtdew=13.69, humidity=38.56, cloud=0.0, wind=25.88, temperature=12.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:38:59', seeing=0.61, atlas_timestamp='2025-11-24T23:39:03.658', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0002500000000011937, -0.043250000000000455, -0.0017499999999994742, 0.005499999999999616, -0.0235000000000003, 0.04225000000000101, 0.006999999999999673, -0.014749999999999375, 0.0034999999999989484, -0.007999999999999119, 0.02874999999999872, -0.0065000000000008384, 0.04800000000000004, 0.06274999999999942, -0.012000000000000455, -0.031500000000001194, 0.024250000000000327, 0.002000000000000668, -0.008000000000000895, -0.035250000000001336, 0.08299999999999841, 0.10774999999999935, 0.043250000000000455, 0.012750000000000483, -0.0009999999999994458, 0.022500000000000853, -0.025749999999998607, 0.018499999999999517, 0.11800000000000033, 0.07500000000000107, 0.09100000000000108, 0.009500000000000952, -0.012750000000000483], zp_timestamp='2025-11-24T23:38:00')
2025-11-25T01:39:21.510 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:39:21.523 [DEBUG] [Thread-200604] [transport.py] [_log()] starting thread (client mode): 0xc9b82860
2025-11-25T01:39:21.523 [DEBUG] [Thread-200604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:39:21.538 [DEBUG] [Thread-200604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:39:21.538 [INFO] [Thread-200604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:39:21.546 [DEBUG] [Thread-200604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:39:21.546 [DEBUG] [Thread-200604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:39:21.546 [DEBUG] [Thread-200604] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:39:21.546 [DEBUG] [Thread-200604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:39:21.547 [DEBUG] [Thread-200604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:39:21.547 [DEBUG] [Thread-200604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:39:21.547 [DEBUG] [Thread-200604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:39:21.547 [DEBUG] [Thread-200604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:39:21.547 [DEBUG] [Thread-200604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:39:21.547 [DEBUG] [Thread-200604] [transport.py] [_log()] client lang: <none>
2025-11-25T01:39:21.547 [DEBUG] [Thread-200604] [transport.py] [_log()] server lang: <none>
2025-11-25T01:39:21.547 [DEBUG] [Thread-200604] [transport.py] [_log()] kex follows: False
2025-11-25T01:39:21.547 [DEBUG] [Thread-200604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:39:21.548 [DEBUG] [Thread-200604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:39:21.548 [DEBUG] [Thread-200604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:39:21.548 [DEBUG] [Thread-200604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:39:21.548 [DEBUG] [Thread-200604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:39:21.548 [DEBUG] [Thread-200604] [transport.py] [_log()] Compression: none
2025-11-25T01:39:21.548 [DEBUG] [Thread-200604] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:39:21.608 [DEBUG] [Thread-200604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:39:21.609 [DEBUG] [Thread-200604] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:39:21.610 [DEBUG] [Thread-200604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:39:21.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:39:21.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:39:21.672 [DEBUG] [Thread-200604] [transport.py] [_log()] userauth is OK
2025-11-25T01:39:21.672 [DEBUG] [Thread-200604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:39:21.672 [DEBUG] [Thread-200604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:39:21.672 [DEBUG] [Thread-200604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:39:21.672 [DEBUG] [Thread-200604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:39:21.686 [INFO] [Thread-200604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:39:21.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:39:21.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:39:22.557 [DEBUG] [Thread-200604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:39:22.557 [DEBUG] [Thread-200604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:39:22.605 [DEBUG] [Thread-200604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:39:22.605 [DEBUG] [Thread-200604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:39:22.613 [DEBUG] [Thread-200604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:39:22.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:39:22.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-11-25T01:39:22.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-11-25T01:39:22.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:39:22.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:39:22.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:39:22.647 [DEBUG] [Thread-200604] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:39:24.274 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:24.276 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:26.337 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:28.711 [DEBUG] [Thread-200606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:36.904 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:37.827 [DEBUG] [Thread-200607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:43.838 [DEBUG] [Thread-200608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:47.553 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:52.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:39:52.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:39:52.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-11-25T01:39:53.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 39, 32), 13.68, 38.58, 0.0, 26.66, 12.88, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:39:53.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:39:32
2025-11-25T01:39:54.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:39:54.274 [DEBUG] [Thread-200609] [transport.py] [_log()] starting thread (client mode): 0xd073a440
2025-11-25T01:39:54.275 [DEBUG] [Thread-200609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:39:54.285 [DEBUG] [Thread-200609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:39:54.285 [INFO] [Thread-200609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:39:54.291 [DEBUG] [Thread-200609] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:39:54.291 [DEBUG] [Thread-200609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:39:54.291 [DEBUG] [Thread-200609] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:39:54.291 [DEBUG] [Thread-200609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:39:54.291 [DEBUG] [Thread-200609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:39:54.291 [DEBUG] [Thread-200609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:39:54.291 [DEBUG] [Thread-200609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:39:54.291 [DEBUG] [Thread-200609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:39:54.292 [DEBUG] [Thread-200609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:39:54.292 [DEBUG] [Thread-200609] [transport.py] [_log()] client lang: <none>
2025-11-25T01:39:54.292 [DEBUG] [Thread-200609] [transport.py] [_log()] server lang: <none>
2025-11-25T01:39:54.292 [DEBUG] [Thread-200609] [transport.py] [_log()] kex follows: False
2025-11-25T01:39:54.292 [DEBUG] [Thread-200609] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:39:54.293 [DEBUG] [Thread-200609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:39:54.293 [DEBUG] [Thread-200609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:39:54.293 [DEBUG] [Thread-200609] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:39:54.293 [DEBUG] [Thread-200609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:39:54.293 [DEBUG] [Thread-200609] [transport.py] [_log()] Compression: none
2025-11-25T01:39:54.293 [DEBUG] [Thread-200609] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:39:54.328 [DEBUG] [Thread-200609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:39:54.333 [DEBUG] [Thread-200609] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:39:54.335 [DEBUG] [Thread-200609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:39:54.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:39:54.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:39:54.341 [DEBUG] [Thread-200609] [transport.py] [_log()] userauth is OK
2025-11-25T01:39:54.342 [DEBUG] [Thread-200609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:39:54.342 [DEBUG] [Thread-200609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:39:54.342 [DEBUG] [Thread-200609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:39:54.342 [DEBUG] [Thread-200609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:39:54.369 [INFO] [Thread-200609] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:39:54.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:39:54.954 [DEBUG] [Thread-200609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:39:54.954 [DEBUG] [Thread-200609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:39:54.956 [DEBUG] [Thread-200609] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:39:54.994 [DEBUG] [Thread-200609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:39:54.995 [DEBUG] [Thread-200609] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:39:54.998 [DEBUG] [Thread-200609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:39:55.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:39:55.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:39:55.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:39:55.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:39:55.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:39:55.022 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:39:55.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:39:55.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:39:55.024 [DEBUG] [Thread-200609] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:39:55.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:39:55.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.985807 -999.00  +12.80  21.75     44   +0.80 1 1 1 1 1     0    0 12.34 16.87 ZNESW 19.2 21.8 142.8 26.9 13.0 -25.2 12.9 -24.6 12.6 -23.4 13.0 -24.2
2025-11-25T01:39:55.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:39:55.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:39:55.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.985807
2025-11-25T01:39:55.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:39:55.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:39:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:39:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:39:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:39:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:39:32', tmtdew=13.68, humidity=38.58, cloud=0.0, wind=26.66, temperature=12.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:39:33', seeing=0.63, atlas_timestamp='2025-11-24T23:39:33.725', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0002500000000011937, -0.043250000000000455, -0.0017499999999994742, 0.005499999999999616, -0.0235000000000003, 0.04225000000000101, 0.006999999999999673, -0.014749999999999375, 0.0034999999999989484, -0.007999999999999119, 0.02874999999999872, -0.0065000000000008384, 0.04800000000000004, 0.06274999999999942, -0.012000000000000455, -0.031500000000001194, 0.024250000000000327, 0.002000000000000668, -0.008000000000000895, -0.035250000000001336, 0.08299999999999841, 0.10774999999999935, 0.043250000000000455, 0.012750000000000483, -0.0009999999999994458, 0.022500000000000853, -0.025749999999998607, 0.018499999999999517, 0.11800000000000033, 0.07500000000000107, 0.09100000000000108, 0.009500000000000952, -0.012750000000000483], zp_timestamp='2025-11-24T23:38:00')
2025-11-25T01:39:55.131 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:39:55.142 [DEBUG] [Thread-200612] [transport.py] [_log()] starting thread (client mode): 0xd07cccd0
2025-11-25T01:39:55.142 [DEBUG] [Thread-200612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:39:55.157 [DEBUG] [Thread-200612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:39:55.158 [INFO] [Thread-200612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:39:55.166 [DEBUG] [Thread-200612] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:39:55.166 [DEBUG] [Thread-200612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:39:55.166 [DEBUG] [Thread-200612] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:39:55.166 [DEBUG] [Thread-200612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:39:55.166 [DEBUG] [Thread-200612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:39:55.167 [DEBUG] [Thread-200612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:39:55.167 [DEBUG] [Thread-200612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:39:55.167 [DEBUG] [Thread-200612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:39:55.167 [DEBUG] [Thread-200612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:39:55.167 [DEBUG] [Thread-200612] [transport.py] [_log()] client lang: <none>
2025-11-25T01:39:55.167 [DEBUG] [Thread-200612] [transport.py] [_log()] server lang: <none>
2025-11-25T01:39:55.167 [DEBUG] [Thread-200612] [transport.py] [_log()] kex follows: False
2025-11-25T01:39:55.167 [DEBUG] [Thread-200612] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:39:55.168 [DEBUG] [Thread-200612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:39:55.168 [DEBUG] [Thread-200612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:39:55.168 [DEBUG] [Thread-200612] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:39:55.169 [DEBUG] [Thread-200612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:39:55.169 [DEBUG] [Thread-200612] [transport.py] [_log()] Compression: none
2025-11-25T01:39:55.169 [DEBUG] [Thread-200612] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:39:55.223 [DEBUG] [Thread-200612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:39:55.223 [DEBUG] [Thread-200612] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:39:55.223 [DEBUG] [Thread-200612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:39:55.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:39:55.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:39:55.280 [DEBUG] [Thread-200612] [transport.py] [_log()] userauth is OK
2025-11-25T01:39:55.280 [DEBUG] [Thread-200612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:39:55.280 [DEBUG] [Thread-200612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:39:55.280 [DEBUG] [Thread-200612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:39:55.280 [DEBUG] [Thread-200612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:39:55.294 [INFO] [Thread-200612] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:39:55.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:39:55.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:39:56.153 [DEBUG] [Thread-200612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:39:56.154 [DEBUG] [Thread-200612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:39:56.203 [DEBUG] [Thread-200612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:39:56.203 [DEBUG] [Thread-200612] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:39:56.212 [DEBUG] [Thread-200612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:39:56.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:39:56.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-11-25T01:39:56.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-11-25T01:39:56.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:39:56.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:39:56.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:39:56.249 [DEBUG] [Thread-200612] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:39:58.139 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:39:58.904 [DEBUG] [Thread-200614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:08.621 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:14.040 [DEBUG] [Thread-200615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:19.218 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:24.489 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:24.491 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:26.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:40:26.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:40:26.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-11-25T01:40:27.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 40, 5), 13.68, 38.58, 0.0, 25.97, 12.88, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:40:27.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:40:05
2025-11-25T01:40:27.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:40:28.036 [DEBUG] [Thread-200616] [transport.py] [_log()] starting thread (client mode): 0xc9b80d30
2025-11-25T01:40:28.037 [DEBUG] [Thread-200616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:40:28.048 [DEBUG] [Thread-200616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:40:28.048 [INFO] [Thread-200616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] client lang: <none>
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] server lang: <none>
2025-11-25T01:40:28.053 [DEBUG] [Thread-200616] [transport.py] [_log()] kex follows: False
2025-11-25T01:40:28.054 [DEBUG] [Thread-200616] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:40:28.054 [DEBUG] [Thread-200616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:40:28.054 [DEBUG] [Thread-200616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:40:28.054 [DEBUG] [Thread-200616] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:40:28.055 [DEBUG] [Thread-200616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:40:28.055 [DEBUG] [Thread-200616] [transport.py] [_log()] Compression: none
2025-11-25T01:40:28.055 [DEBUG] [Thread-200616] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:40:28.081 [DEBUG] [Thread-200616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:40:28.086 [DEBUG] [Thread-200616] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:40:28.088 [DEBUG] [Thread-200616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:40:28.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:40:28.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:40:28.092 [DEBUG] [Thread-200616] [transport.py] [_log()] userauth is OK
2025-11-25T01:40:28.092 [DEBUG] [Thread-200616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:40:28.093 [DEBUG] [Thread-200616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:40:28.093 [DEBUG] [Thread-200616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:40:28.093 [DEBUG] [Thread-200616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:40:28.116 [INFO] [Thread-200616] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:40:28.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:40:28.705 [DEBUG] [Thread-200616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:40:28.705 [DEBUG] [Thread-200616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:40:28.707 [DEBUG] [Thread-200616] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:40:28.745 [DEBUG] [Thread-200616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:40:28.745 [DEBUG] [Thread-200616] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:40:28.749 [DEBUG] [Thread-200616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:40:28.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:40:28.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:40:28.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:40:28.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:40:28.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:40:28.772 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:40:28.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:40:28.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:40:28.774 [DEBUG] [Thread-200616] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:40:28.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:40:28.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.986153 -999.00  +12.80  25.23     44   +0.80 1 1 1 1 1     0    0 12.54 18.08 ZNESW 19.6 25.2 134.6 28.1 13.0 -25.1 12.9 -24.5 12.6 -23.5 12.9 -24.2
2025-11-25T01:40:28.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:40:28.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:40:28.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.986153
2025-11-25T01:40:28.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:40:28.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:40:28.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:40:28.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:40:28.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:40:28.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:40:05', tmtdew=13.68, humidity=38.58, cloud=0.0, wind=25.97, temperature=12.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:40:06', seeing=0.68, atlas_timestamp='2025-11-24T23:40:03.619', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0002500000000011937, -0.043250000000000455, -0.0017499999999994742, 0.005499999999999616, -0.0235000000000003, 0.04225000000000101, 0.006999999999999673, -0.014749999999999375, 0.0034999999999989484, -0.007999999999999119, 0.02874999999999872, -0.0065000000000008384, 0.04800000000000004, 0.06274999999999942, -0.012000000000000455, -0.031500000000001194, 0.024250000000000327, 0.002000000000000668, -0.008000000000000895, -0.035250000000001336, 0.08299999999999841, 0.10774999999999935, 0.043250000000000455, 0.012750000000000483, -0.0009999999999994458, 0.022500000000000853, -0.025749999999998607, 0.018499999999999517, 0.11800000000000033, 0.07500000000000107, 0.09100000000000108, 0.009500000000000952, -0.012750000000000483], zp_timestamp='2025-11-24T23:38:00')
2025-11-25T01:40:28.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:40:28.893 [DEBUG] [Thread-200619] [transport.py] [_log()] starting thread (client mode): 0xd3149f90
2025-11-25T01:40:28.894 [DEBUG] [Thread-200619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:40:28.908 [DEBUG] [Thread-200619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:40:28.908 [INFO] [Thread-200619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:40:28.916 [DEBUG] [Thread-200619] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:40:28.916 [DEBUG] [Thread-200619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] client lang: <none>
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] server lang: <none>
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] kex follows: False
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] Compression: none
2025-11-25T01:40:28.917 [DEBUG] [Thread-200619] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:40:28.981 [DEBUG] [Thread-200619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:40:28.981 [DEBUG] [Thread-200619] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:40:28.982 [DEBUG] [Thread-200619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:40:28.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:40:28.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:40:29.036 [DEBUG] [Thread-200619] [transport.py] [_log()] userauth is OK
2025-11-25T01:40:29.037 [DEBUG] [Thread-200619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:40:29.037 [DEBUG] [Thread-200619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:40:29.037 [DEBUG] [Thread-200619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:40:29.037 [DEBUG] [Thread-200619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:40:29.060 [INFO] [Thread-200619] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:40:29.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:40:29.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:40:29.143 [DEBUG] [Thread-200621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:29.750 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:29.896 [DEBUG] [Thread-200619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:40:29.896 [DEBUG] [Thread-200619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:40:29.945 [DEBUG] [Thread-200619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:40:29.945 [DEBUG] [Thread-200619] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:40:29.953 [DEBUG] [Thread-200619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:40:29.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:40:29.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-11-25T01:40:29.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-11-25T01:40:29.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:40:29.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:40:29.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:40:29.995 [DEBUG] [Thread-200619] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:40:38.110 [DEBUG] [Thread-200622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:40.346 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:44.273 [DEBUG] [Thread-200623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:50.783 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:40:59.334 [DEBUG] [Thread-200624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:00.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:41:00.006 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:41:00.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-11-25T01:41:01.231 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:01.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 40, 38), 13.72, 38.6, 0.0, 29.43, 12.87, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:41:01.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:40:38
2025-11-25T01:41:01.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:41:01.672 [DEBUG] [Thread-200625] [transport.py] [_log()] starting thread (client mode): 0xd073b2b0
2025-11-25T01:41:01.673 [DEBUG] [Thread-200625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:41:01.685 [DEBUG] [Thread-200625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:41:01.685 [INFO] [Thread-200625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:41:01.689 [DEBUG] [Thread-200625] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] client lang: <none>
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] server lang: <none>
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] kex follows: False
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:41:01.690 [DEBUG] [Thread-200625] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:41:01.691 [DEBUG] [Thread-200625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:41:01.691 [DEBUG] [Thread-200625] [transport.py] [_log()] Compression: none
2025-11-25T01:41:01.691 [DEBUG] [Thread-200625] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:41:01.722 [DEBUG] [Thread-200625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:41:01.725 [DEBUG] [Thread-200625] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:41:01.726 [DEBUG] [Thread-200625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:41:01.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:41:01.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:41:01.729 [DEBUG] [Thread-200625] [transport.py] [_log()] userauth is OK
2025-11-25T01:41:01.729 [DEBUG] [Thread-200625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:41:01.730 [DEBUG] [Thread-200625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:41:01.730 [DEBUG] [Thread-200625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:41:01.730 [DEBUG] [Thread-200625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:41:01.747 [INFO] [Thread-200625] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:41:01.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:41:02.448 [DEBUG] [Thread-200625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:41:02.448 [DEBUG] [Thread-200625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:41:02.450 [DEBUG] [Thread-200625] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:41:02.490 [DEBUG] [Thread-200625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:41:02.490 [DEBUG] [Thread-200625] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:41:02.493 [DEBUG] [Thread-200625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:41:02.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:41:02.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:41:02.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:41:02.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:41:02.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:41:02.520 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:41:02.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:41:02.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:41:02.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:41:02.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.986153 -999.00  +12.80  25.23     44   +0.80 1 1 1 1 1     0    0 12.54 18.08 ZNESW 19.6 25.2 134.6 28.1 13.0 -25.1 12.9 -24.5 12.6 -23.5 12.9 -24.2
2025-11-25T01:41:02.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:41:02.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:41:02.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.986153
2025-11-25T01:41:02.528 [DEBUG] [Thread-200625] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:41:02.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:41:02.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:41:02.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:41:02.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:41:02.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:41:02.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:40:38', tmtdew=13.72, humidity=38.6, cloud=0.0, wind=29.43, temperature=12.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:40:38', seeing=0.62, atlas_timestamp='2025-11-24T23:40:03.619', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0002500000000011937, -0.043250000000000455, -0.0017499999999994742, 0.005499999999999616, -0.0235000000000003, 0.04225000000000101, 0.006999999999999673, -0.014749999999999375, 0.0034999999999989484, -0.007999999999999119, 0.02874999999999872, -0.0065000000000008384, 0.04800000000000004, 0.06274999999999942, -0.012000000000000455, -0.031500000000001194, 0.024250000000000327, 0.002000000000000668, -0.008000000000000895, -0.035250000000001336, 0.08299999999999841, 0.10774999999999935, 0.043250000000000455, 0.012750000000000483, -0.0009999999999994458, 0.022500000000000853, -0.025749999999998607, 0.018499999999999517, 0.11800000000000033, 0.07500000000000107, 0.09100000000000108, 0.009500000000000952, -0.012750000000000483], zp_timestamp='2025-11-24T23:38:00')
2025-11-25T01:41:02.625 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:41:02.638 [DEBUG] [Thread-200628] [transport.py] [_log()] starting thread (client mode): 0xc9b83be0
2025-11-25T01:41:02.638 [DEBUG] [Thread-200628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:41:02.653 [DEBUG] [Thread-200628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:41:02.653 [INFO] [Thread-200628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:41:02.660 [DEBUG] [Thread-200628] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:41:02.660 [DEBUG] [Thread-200628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:41:02.660 [DEBUG] [Thread-200628] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:41:02.660 [DEBUG] [Thread-200628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:41:02.660 [DEBUG] [Thread-200628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:41:02.660 [DEBUG] [Thread-200628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] client lang: <none>
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] server lang: <none>
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] kex follows: False
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] Compression: none
2025-11-25T01:41:02.661 [DEBUG] [Thread-200628] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:41:02.721 [DEBUG] [Thread-200628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:41:02.721 [DEBUG] [Thread-200628] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:41:02.721 [DEBUG] [Thread-200628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:41:02.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:41:02.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:41:02.776 [DEBUG] [Thread-200628] [transport.py] [_log()] userauth is OK
2025-11-25T01:41:02.776 [DEBUG] [Thread-200628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:41:02.777 [DEBUG] [Thread-200628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:41:02.777 [DEBUG] [Thread-200628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:41:02.777 [DEBUG] [Thread-200628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:41:02.796 [INFO] [Thread-200628] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:41:02.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:41:02.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:41:03.719 [DEBUG] [Thread-200628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:41:03.719 [DEBUG] [Thread-200628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:41:03.768 [DEBUG] [Thread-200628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:41:03.768 [DEBUG] [Thread-200628] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:41:03.777 [DEBUG] [Thread-200628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:41:03.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:41:03.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-11-25T01:41:03.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:41:03.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:41:03.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:41:03.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:41:03.824 [DEBUG] [Thread-200628] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:41:11.842 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:14.407 [DEBUG] [Thread-200630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:22.526 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:24.693 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:24.694 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:29.541 [DEBUG] [Thread-200631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:33.148 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:33.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:41:33.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:41:33.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-11-25T01:41:34.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 41, 11), 13.73, 38.56, 0.0, 29.33, 12.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:41:34.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:41:11
2025-11-25T01:41:34.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:41:35.014 [DEBUG] [Thread-200632] [transport.py] [_log()] starting thread (client mode): 0xd07ccee0
2025-11-25T01:41:35.015 [DEBUG] [Thread-200632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:41:35.027 [DEBUG] [Thread-200632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:41:35.027 [INFO] [Thread-200632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] client lang: <none>
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] server lang: <none>
2025-11-25T01:41:35.033 [DEBUG] [Thread-200632] [transport.py] [_log()] kex follows: False
2025-11-25T01:41:35.034 [DEBUG] [Thread-200632] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:41:35.034 [DEBUG] [Thread-200632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:41:35.034 [DEBUG] [Thread-200632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:41:35.035 [DEBUG] [Thread-200632] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:41:35.035 [DEBUG] [Thread-200632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:41:35.035 [DEBUG] [Thread-200632] [transport.py] [_log()] Compression: none
2025-11-25T01:41:35.035 [DEBUG] [Thread-200632] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:41:35.076 [DEBUG] [Thread-200632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:41:35.082 [DEBUG] [Thread-200632] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:41:35.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:41:35.086 [DEBUG] [Thread-200632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:41:35.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:41:35.089 [DEBUG] [Thread-200632] [transport.py] [_log()] userauth is OK
2025-11-25T01:41:35.090 [DEBUG] [Thread-200632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:41:35.090 [DEBUG] [Thread-200632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:41:35.090 [DEBUG] [Thread-200632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:41:35.091 [DEBUG] [Thread-200632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:41:35.119 [INFO] [Thread-200632] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:41:35.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:41:35.750 [DEBUG] [Thread-200632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:41:35.750 [DEBUG] [Thread-200632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:41:35.751 [DEBUG] [Thread-200632] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:41:35.792 [DEBUG] [Thread-200632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:41:35.792 [DEBUG] [Thread-200632] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:41:35.795 [DEBUG] [Thread-200632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:41:35.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:41:35.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:41:35.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:41:35.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:41:35.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:41:35.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:41:35.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:41:35.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:41:35.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:41:35.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.986501 -999.00  +12.80  23.27     44   +0.80 1 1 1 1 1     0    0 12.23 18.75 ZNESW 20.2 23.3 138.6 29.8 13.0 -25.0 12.9 -24.6 12.7 -23.4 12.9 -24.2
2025-11-25T01:41:35.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:41:35.825 [DEBUG] [Thread-200632] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:41:35.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:41:35.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.986501
2025-11-25T01:41:35.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:41:35.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:41:35.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:41:35.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:41:35.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:41:35.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:41:11', tmtdew=13.73, humidity=38.56, cloud=0.0, wind=29.33, temperature=12.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:41:11', seeing=0.56, atlas_timestamp='2025-11-24T23:40:33.686', atlas_cloud=1, atlas_rain=1, zp_data=[-0.0002500000000011937, -0.043250000000000455, -0.0017499999999994742, 0.005499999999999616, -0.0235000000000003, 0.04225000000000101, 0.006999999999999673, -0.014749999999999375, 0.0034999999999989484, -0.007999999999999119, 0.02874999999999872, -0.0065000000000008384, 0.04800000000000004, 0.06274999999999942, -0.012000000000000455, -0.031500000000001194, 0.024250000000000327, 0.002000000000000668, -0.008000000000000895, -0.035250000000001336, 0.08299999999999841, 0.10774999999999935, 0.043250000000000455, 0.012750000000000483, -0.0009999999999994458, 0.022500000000000853, -0.025749999999998607, 0.018499999999999517, 0.11800000000000033, 0.07500000000000107, 0.09100000000000108, 0.009500000000000952, -0.012750000000000483], zp_timestamp='2025-11-24T23:38:00')
2025-11-25T01:41:35.926 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:41:35.945 [DEBUG] [Thread-200635] [transport.py] [_log()] starting thread (client mode): 0xd07105e0
2025-11-25T01:41:35.945 [DEBUG] [Thread-200635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:41:35.964 [DEBUG] [Thread-200635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:41:35.964 [INFO] [Thread-200635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:41:35.972 [DEBUG] [Thread-200635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:41:35.972 [DEBUG] [Thread-200635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] client lang: <none>
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] server lang: <none>
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] kex follows: False
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:41:35.973 [DEBUG] [Thread-200635] [transport.py] [_log()] Compression: none
2025-11-25T01:41:35.974 [DEBUG] [Thread-200635] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:41:36.052 [DEBUG] [Thread-200635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:41:36.052 [DEBUG] [Thread-200635] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:41:36.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:41:36.054 [DEBUG] [Thread-200635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:41:36.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:41:36.117 [DEBUG] [Thread-200635] [transport.py] [_log()] userauth is OK
2025-11-25T01:41:36.117 [DEBUG] [Thread-200635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:41:36.117 [DEBUG] [Thread-200635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:41:36.117 [DEBUG] [Thread-200635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:41:36.117 [DEBUG] [Thread-200635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:41:36.139 [INFO] [Thread-200635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:41:36.140 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:41:36.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:41:36.988 [DEBUG] [Thread-200635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:41:36.989 [DEBUG] [Thread-200635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:41:37.037 [DEBUG] [Thread-200635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:41:37.037 [DEBUG] [Thread-200635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:41:37.046 [DEBUG] [Thread-200635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:41:37.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:41:37.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-11-25T01:41: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-11-25T01:41:37.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:41:37.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:41:37.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:41:37.091 [DEBUG] [Thread-200635] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:41:38.404 [DEBUG] [Thread-200637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:43.739 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:44.600 [DEBUG] [Thread-200638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:54.335 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:41:59.717 [DEBUG] [Thread-200639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:05.119 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:07.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:42:07.116 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:42:07.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-11-25T01:42:07.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 41, 44), 13.64, 38.53, 0.0, 27.42, 12.77, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:42:07.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:41:44
2025-11-25T01:42:08.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:42:08.240 [DEBUG] [Thread-200640] [transport.py] [_log()] starting thread (client mode): 0xd3151cf0
2025-11-25T01:42:08.241 [DEBUG] [Thread-200640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:42:08.242 [DEBUG] [Thread-200640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:42:08.242 [INFO] [Thread-200640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] client lang: <none>
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] server lang: <none>
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] kex follows: False
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:42:08.246 [DEBUG] [Thread-200640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:42:08.247 [DEBUG] [Thread-200640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:42:08.247 [DEBUG] [Thread-200640] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:42:08.247 [DEBUG] [Thread-200640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:42:08.247 [DEBUG] [Thread-200640] [transport.py] [_log()] Compression: none
2025-11-25T01:42:08.247 [DEBUG] [Thread-200640] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:42:08.278 [DEBUG] [Thread-200640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:42:08.281 [DEBUG] [Thread-200640] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:42:08.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:42:08.283 [DEBUG] [Thread-200640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:42:08.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:42:08.285 [DEBUG] [Thread-200640] [transport.py] [_log()] userauth is OK
2025-11-25T01:42:08.285 [DEBUG] [Thread-200640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:42:08.285 [DEBUG] [Thread-200640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:42:08.286 [DEBUG] [Thread-200640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:42:08.286 [DEBUG] [Thread-200640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:42:08.318 [INFO] [Thread-200640] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:42:08.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:42:09.123 [DEBUG] [Thread-200640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:42:09.123 [DEBUG] [Thread-200640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:42:09.124 [DEBUG] [Thread-200640] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:42:09.164 [DEBUG] [Thread-200640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:42:09.164 [DEBUG] [Thread-200640] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:42:09.166 [DEBUG] [Thread-200640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:42:09.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:42:09.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:42:09.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:42:09.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:42:09.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:42:09.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:42:09.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:42:09.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:42:09.186 [DEBUG] [Thread-200640] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:42:09.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:42:09.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.986848 -999.00  +12.80  19.71     44   +0.80 1 1 1 1 1     0    0 12.28 19.49 ZNESW 17.9 19.7 131.8 28.4 13.0 -25.1 12.9 -24.5 12.6 -23.5 12.9 -24.5
2025-11-25T01:42:09.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:42:09.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:42:09.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.986848
2025-11-25T01:42:09.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:42:09.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:42:09.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:42:09.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:42:09.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:42:09.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:41:44', tmtdew=13.64, humidity=38.53, cloud=0.0, wind=27.42, temperature=12.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:41:44', seeing=0.56, atlas_timestamp='2025-11-24T23:41:03.667', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:40:00')
2025-11-25T01:42:09.282 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:42:09.293 [DEBUG] [Thread-200643] [transport.py] [_log()] starting thread (client mode): 0xd31f5900
2025-11-25T01:42:09.294 [DEBUG] [Thread-200643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:42:09.307 [DEBUG] [Thread-200643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:42:09.307 [INFO] [Thread-200643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] client lang: <none>
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] server lang: <none>
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] kex follows: False
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:42:09.315 [DEBUG] [Thread-200643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:42:09.316 [DEBUG] [Thread-200643] [transport.py] [_log()] Compression: none
2025-11-25T01:42:09.316 [DEBUG] [Thread-200643] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:42:09.370 [DEBUG] [Thread-200643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:42:09.370 [DEBUG] [Thread-200643] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:42:09.370 [DEBUG] [Thread-200643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:42:09.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:42:09.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:42:09.428 [DEBUG] [Thread-200643] [transport.py] [_log()] userauth is OK
2025-11-25T01:42:09.428 [DEBUG] [Thread-200643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:42:09.428 [DEBUG] [Thread-200643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:42:09.428 [DEBUG] [Thread-200643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:42:09.428 [DEBUG] [Thread-200643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:42:09.441 [INFO] [Thread-200643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:42:09.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:42:09.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:42:10.257 [DEBUG] [Thread-200643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:42:10.257 [DEBUG] [Thread-200643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:42:10.305 [DEBUG] [Thread-200643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:42:10.305 [DEBUG] [Thread-200643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:42:10.320 [DEBUG] [Thread-200643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:42:10.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:42:10.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:42:10.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:42:10.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:42:10.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:42:10.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:42:10.354 [DEBUG] [Thread-200643] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:42:14.790 [DEBUG] [Thread-200645 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:15.648 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:24.897 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:24.899 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:26.223 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:29.940 [DEBUG] [Thread-200646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:36.835 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:38.713 [DEBUG] [Thread-200647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:40.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:42:40.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:42:40.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-11-25T01:42:41.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 42, 17), 13.65, 38.53, 0.0, 27.14, 12.8, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:42:41.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:42:17
2025-11-25T01:42:41.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:42:41.697 [DEBUG] [Thread-200648] [transport.py] [_log()] starting thread (client mode): 0xd319ffd0
2025-11-25T01:42:41.698 [DEBUG] [Thread-200648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:42:41.710 [DEBUG] [Thread-200648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:42:41.710 [INFO] [Thread-200648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:42:41.717 [DEBUG] [Thread-200648] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:42:41.717 [DEBUG] [Thread-200648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] client lang: <none>
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] server lang: <none>
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] kex follows: False
2025-11-25T01:42:41.718 [DEBUG] [Thread-200648] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:42:41.719 [DEBUG] [Thread-200648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:42:41.719 [DEBUG] [Thread-200648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:42:41.720 [DEBUG] [Thread-200648] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:42:41.720 [DEBUG] [Thread-200648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:42:41.720 [DEBUG] [Thread-200648] [transport.py] [_log()] Compression: none
2025-11-25T01:42:41.720 [DEBUG] [Thread-200648] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:42:41.760 [DEBUG] [Thread-200648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:42:41.766 [DEBUG] [Thread-200648] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:42:41.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:42:41.769 [DEBUG] [Thread-200648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:42:41.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:42:41.774 [DEBUG] [Thread-200648] [transport.py] [_log()] userauth is OK
2025-11-25T01:42:41.775 [DEBUG] [Thread-200648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:42:41.775 [DEBUG] [Thread-200648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:42:41.775 [DEBUG] [Thread-200648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:42:41.775 [DEBUG] [Thread-200648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:42:41.798 [INFO] [Thread-200648] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:42:41.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:42:42.427 [DEBUG] [Thread-200648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:42:42.427 [DEBUG] [Thread-200648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:42:42.428 [DEBUG] [Thread-200648] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:42:42.468 [DEBUG] [Thread-200648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:42:42.468 [DEBUG] [Thread-200648] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:42:42.471 [DEBUG] [Thread-200648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:42:42.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:42:42.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:42:42.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:42:42.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:42:42.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:42:42.493 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:42:42.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:42:42.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:42:42.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:42:42.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.987543 -999.00  +12.70  20.49     44   +0.80 1 1 1 1 1     0    0 12.43 19.10 ZNESW 21.5 20.5 135.2 26.1 13.0 -25.3 12.9 -24.7 12.6 -23.6 12.9 -24.6
2025-11-25T01:42:42.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:42:42.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:42:42.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.987543
2025-11-25T01:42:42.500 [DEBUG] [Thread-200648] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:42:42.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:42:42.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:42:42.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:42:42.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:42:42.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:42:42.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:42:17', tmtdew=13.65, humidity=38.53, cloud=0.0, wind=27.14, temperature=12.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:42:17', seeing=0.66, atlas_timestamp='2025-11-24T23:42:03.715', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:40:00')
2025-11-25T01:42:42.586 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:42:42.599 [DEBUG] [Thread-200651] [transport.py] [_log()] starting thread (client mode): 0xd317eda0
2025-11-25T01:42:42.599 [DEBUG] [Thread-200651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:42:42.617 [DEBUG] [Thread-200651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:42:42.617 [INFO] [Thread-200651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:42:42.624 [DEBUG] [Thread-200651] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:42:42.624 [DEBUG] [Thread-200651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:42:42.624 [DEBUG] [Thread-200651] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:42:42.624 [DEBUG] [Thread-200651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:42:42.624 [DEBUG] [Thread-200651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] client lang: <none>
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] server lang: <none>
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] kex follows: False
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] Compression: none
2025-11-25T01:42:42.625 [DEBUG] [Thread-200651] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:42:42.683 [DEBUG] [Thread-200651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:42:42.684 [DEBUG] [Thread-200651] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:42:42.684 [DEBUG] [Thread-200651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:42:42.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:42:42.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:42:42.740 [DEBUG] [Thread-200651] [transport.py] [_log()] userauth is OK
2025-11-25T01:42:42.740 [DEBUG] [Thread-200651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:42:42.740 [DEBUG] [Thread-200651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:42:42.740 [DEBUG] [Thread-200651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:42:42.740 [DEBUG] [Thread-200651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:42:42.760 [INFO] [Thread-200651] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:42:42.761 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:42:42.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:42:43.589 [DEBUG] [Thread-200651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:42:43.589 [DEBUG] [Thread-200651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:42:43.637 [DEBUG] [Thread-200651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:42:43.637 [DEBUG] [Thread-200651] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:42:43.645 [DEBUG] [Thread-200651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:42:43.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:42:43.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-11-25T01:42:43.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-11-25T01:42:43.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:42:43.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:42:43.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:42:43.680 [DEBUG] [Thread-200651] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:42:44.980 [DEBUG] [Thread-200653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:47.317 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:42:57.759 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:00.094 [DEBUG] [Thread-200654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:08.448 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:13.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:43:13.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:43:13.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-11-25T01:43:15.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 42, 50), 13.6, 39.01, 0.0, 27.24, 12.77, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:43:15.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:42:50
2025-11-25T01:43:15.169 [DEBUG] [Thread-200655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:15.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:43:15.408 [DEBUG] [Thread-200656] [transport.py] [_log()] starting thread (client mode): 0xd073a2f0
2025-11-25T01:43:15.409 [DEBUG] [Thread-200656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:43:15.422 [DEBUG] [Thread-200656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:43:15.422 [INFO] [Thread-200656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:43:15.427 [DEBUG] [Thread-200656] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] client lang: <none>
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] server lang: <none>
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] kex follows: False
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:43:15.428 [DEBUG] [Thread-200656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:43:15.429 [DEBUG] [Thread-200656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:43:15.429 [DEBUG] [Thread-200656] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:43:15.429 [DEBUG] [Thread-200656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:43:15.429 [DEBUG] [Thread-200656] [transport.py] [_log()] Compression: none
2025-11-25T01:43:15.429 [DEBUG] [Thread-200656] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:43:15.459 [DEBUG] [Thread-200656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:43:15.462 [DEBUG] [Thread-200656] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:43:15.464 [DEBUG] [Thread-200656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:43:15.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:43:15.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:43:15.467 [DEBUG] [Thread-200656] [transport.py] [_log()] userauth is OK
2025-11-25T01:43:15.467 [DEBUG] [Thread-200656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:43:15.467 [DEBUG] [Thread-200656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:43:15.467 [DEBUG] [Thread-200656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:43:15.467 [DEBUG] [Thread-200656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:43:15.487 [INFO] [Thread-200656] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:43:15.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:43:16.148 [DEBUG] [Thread-200656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:43:16.148 [DEBUG] [Thread-200656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:43:16.158 [DEBUG] [Thread-200656] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:43:16.189 [DEBUG] [Thread-200656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:43:16.189 [DEBUG] [Thread-200656] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:43:16.192 [DEBUG] [Thread-200656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:43:16.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:43:16.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:43:16.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:43:16.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:43:16.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:43:16.214 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:43:16.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:43:16.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:43:16.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:43:16.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.987890 -999.00  +12.70  18.43     44   +0.80 1 1 1 1 1     0    0 12.28 19.64 ZNESW 22.0 18.4 138.0 26.2 13.0 -25.0 12.9 -24.6 12.6 -23.6 12.9 -24.5
2025-11-25T01:43:16.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:43:16.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:43:16.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.987890
2025-11-25T01:43:16.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:43:16.225 [DEBUG] [Thread-200656] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:43:16.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:43:16.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:43:16.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:43:16.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:43:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:42:50', tmtdew=13.6, humidity=39.01, cloud=0.0, wind=27.24, temperature=12.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:42:50', seeing=0.61, atlas_timestamp='2025-11-24T23:42:33.696', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:40:00')
2025-11-25T01:43: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-11-25T01:43:16.318 [DEBUG] [Thread-200659] [transport.py] [_log()] starting thread (client mode): 0xd0784310
2025-11-25T01:43:16.318 [DEBUG] [Thread-200659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:43:16.333 [DEBUG] [Thread-200659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:43:16.333 [INFO] [Thread-200659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] client lang: <none>
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] server lang: <none>
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] kex follows: False
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:43:16.341 [DEBUG] [Thread-200659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:43:16.342 [DEBUG] [Thread-200659] [transport.py] [_log()] Compression: none
2025-11-25T01:43:16.342 [DEBUG] [Thread-200659] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:43:16.400 [DEBUG] [Thread-200659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:43:16.401 [DEBUG] [Thread-200659] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:43:16.401 [DEBUG] [Thread-200659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:43:16.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:43:16.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:43:16.459 [DEBUG] [Thread-200659] [transport.py] [_log()] userauth is OK
2025-11-25T01:43:16.459 [DEBUG] [Thread-200659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:43:16.459 [DEBUG] [Thread-200659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:43:16.459 [DEBUG] [Thread-200659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:43:16.459 [DEBUG] [Thread-200659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:43:16.478 [INFO] [Thread-200659] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:43:16.479 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:43:16.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:43:17.320 [DEBUG] [Thread-200659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:43:17.320 [DEBUG] [Thread-200659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:43:17.368 [DEBUG] [Thread-200659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:43:17.368 [DEBUG] [Thread-200659] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:43:17.377 [DEBUG] [Thread-200659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:43:17.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:43:17.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-11-25T01:43:17.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-11-25T01:43:17.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:43:17.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:43:17.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:43:17.425 [DEBUG] [Thread-200659] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:43:19.417 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:25.101 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:25.103 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:29.998 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:30.214 [DEBUG] [Thread-200661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:39.019 [DEBUG] [Thread-200662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:40.689 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:45.328 [DEBUG] [Thread-200663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:43:47.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:43:47.438 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:43:47.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-11-25T01:43:48.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 43, 23), 13.57, 39.1, 0.0, 26.38, 12.73, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:43:48.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:43:23
2025-11-25T01:43:48.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:43:48.979 [DEBUG] [Thread-200664] [transport.py] [_log()] starting thread (client mode): 0xd31f4910
2025-11-25T01:43:48.980 [DEBUG] [Thread-200664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:43:48.992 [DEBUG] [Thread-200664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:43:48.992 [INFO] [Thread-200664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] client lang: <none>
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] server lang: <none>
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] kex follows: False
2025-11-25T01:43:48.998 [DEBUG] [Thread-200664] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:43:48.999 [DEBUG] [Thread-200664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:43:48.999 [DEBUG] [Thread-200664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:43:48.999 [DEBUG] [Thread-200664] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:43:48.999 [DEBUG] [Thread-200664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:43:48.999 [DEBUG] [Thread-200664] [transport.py] [_log()] Compression: none
2025-11-25T01:43:48.999 [DEBUG] [Thread-200664] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:43:49.030 [DEBUG] [Thread-200664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:43:49.034 [DEBUG] [Thread-200664] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:43:49.035 [DEBUG] [Thread-200664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:43:49.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:43:49.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:43:49.039 [DEBUG] [Thread-200664] [transport.py] [_log()] userauth is OK
2025-11-25T01:43:49.039 [DEBUG] [Thread-200664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:43:49.039 [DEBUG] [Thread-200664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:43:49.039 [DEBUG] [Thread-200664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:43:49.039 [DEBUG] [Thread-200664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:43:49.057 [INFO] [Thread-200664] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:43:49.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:43:49.676 [DEBUG] [Thread-200664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:43:49.676 [DEBUG] [Thread-200664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:43:49.677 [DEBUG] [Thread-200664] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:43:49.717 [DEBUG] [Thread-200664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:43:49.717 [DEBUG] [Thread-200664] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:43:49.720 [DEBUG] [Thread-200664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:43:49.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:43:49.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:43:49.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:43:49.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:43:49.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:43:49.738 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:43:49.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:43:49.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:43:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:43:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.988237 -999.00  +12.70  16.28     44   +0.80 1 1 1 1 1     0    0 12.40 20.40 ZNESW 19.3 16.3 134.0 26.7 13.0 -25.2 12.9 -24.6 12.6 -23.5 12.9 -24.4
2025-11-25T01:43:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:43:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:43:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.988237
2025-11-25T01:43:49.749 [DEBUG] [Thread-200664] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:43:49.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:43:49.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:43:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:43:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:43:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:43:49.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:43:23', tmtdew=13.57, humidity=39.1, cloud=0.0, wind=26.38, temperature=12.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:43:23', seeing=0.58, atlas_timestamp='2025-11-24T23:43:03.677', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:40:00')
2025-11-25T01:43:49.843 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:43:49.855 [DEBUG] [Thread-200667] [transport.py] [_log()] starting thread (client mode): 0xc9b82860
2025-11-25T01:43:49.855 [DEBUG] [Thread-200667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:43:49.870 [DEBUG] [Thread-200667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:43:49.871 [INFO] [Thread-200667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:43:49.878 [DEBUG] [Thread-200667] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] client lang: <none>
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] server lang: <none>
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] kex follows: False
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:43:49.879 [DEBUG] [Thread-200667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:43:49.880 [DEBUG] [Thread-200667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:43:49.880 [DEBUG] [Thread-200667] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:43:49.880 [DEBUG] [Thread-200667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:43:49.880 [DEBUG] [Thread-200667] [transport.py] [_log()] Compression: none
2025-11-25T01:43:49.880 [DEBUG] [Thread-200667] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:43:49.936 [DEBUG] [Thread-200667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:43:49.937 [DEBUG] [Thread-200667] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:43:49.937 [DEBUG] [Thread-200667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:43:49.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:43:49.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:43:49.992 [DEBUG] [Thread-200667] [transport.py] [_log()] userauth is OK
2025-11-25T01:43:49.993 [DEBUG] [Thread-200667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:43:49.993 [DEBUG] [Thread-200667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:43:49.993 [DEBUG] [Thread-200667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:43:49.993 [DEBUG] [Thread-200667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:43:50.012 [INFO] [Thread-200667] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:43:50.013 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:43:50.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:43:50.884 [DEBUG] [Thread-200667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:43:50.885 [DEBUG] [Thread-200667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:43:50.932 [DEBUG] [Thread-200667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:43:50.932 [DEBUG] [Thread-200667] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:43:50.940 [DEBUG] [Thread-200667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:43:50.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:43:50.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:43:50.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:43:50.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:43:50.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:43:50.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:43:50.973 [DEBUG] [Thread-200667] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:43:51.451 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:00.394 [DEBUG] [Thread-200669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:02.231 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:13.098 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:15.560 [DEBUG] [Thread-200670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:20.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:44:20.997 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:44:21.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-11-25T01:44:21.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 43, 56), 13.46, 39.13, 0.0, 25.9, 12.7, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:44:21.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:43:56
2025-11-25T01:44:22.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:44:22.240 [DEBUG] [Thread-200671] [transport.py] [_log()] starting thread (client mode): 0xd07cf730
2025-11-25T01:44:22.241 [DEBUG] [Thread-200671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:44:22.253 [DEBUG] [Thread-200671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:44:22.253 [INFO] [Thread-200671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:44:22.259 [DEBUG] [Thread-200671] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] client lang: <none>
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] server lang: <none>
2025-11-25T01:44:22.260 [DEBUG] [Thread-200671] [transport.py] [_log()] kex follows: False
2025-11-25T01:44:22.261 [DEBUG] [Thread-200671] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:44:22.261 [DEBUG] [Thread-200671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:44:22.261 [DEBUG] [Thread-200671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:44:22.262 [DEBUG] [Thread-200671] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:44:22.262 [DEBUG] [Thread-200671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:44:22.262 [DEBUG] [Thread-200671] [transport.py] [_log()] Compression: none
2025-11-25T01:44:22.262 [DEBUG] [Thread-200671] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:44:22.304 [DEBUG] [Thread-200671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:44:22.309 [DEBUG] [Thread-200671] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:44:22.312 [DEBUG] [Thread-200671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:44:22.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:44:22.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:44:22.317 [DEBUG] [Thread-200671] [transport.py] [_log()] userauth is OK
2025-11-25T01:44:22.318 [DEBUG] [Thread-200671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:44:22.318 [DEBUG] [Thread-200671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:44:22.318 [DEBUG] [Thread-200671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:44:22.318 [DEBUG] [Thread-200671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:44:22.346 [INFO] [Thread-200671] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:44:22.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:44:23.000 [DEBUG] [Thread-200671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:44:23.000 [DEBUG] [Thread-200671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:44:23.001 [DEBUG] [Thread-200671] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:44:23.040 [DEBUG] [Thread-200671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:44:23.041 [DEBUG] [Thread-200671] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:44:23.044 [DEBUG] [Thread-200671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:44:23.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:44:23.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:44:23.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:44:23.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:44:23.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:44:23.070 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:44:23.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:44:23.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:44:23.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:44:23.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.988584 -999.00  +12.70  21.74     44   +0.90 1 1 1 1 1     0    0 12.40 19.80 ZNESW 21.3 21.7 129.2 25.4 13.0 -25.2 12.8 -24.6 12.6 -23.7 12.9 -24.4
2025-11-25T01:44:23.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:44:23.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:44:23.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.988584
2025-11-25T01:44:23.077 [DEBUG] [Thread-200671] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:44:23.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:44:23.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:44:23.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:44:23.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:44:23.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:44:23.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:43:56', tmtdew=13.46, humidity=39.13, cloud=0.0, wind=25.9, temperature=12.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:43:56', seeing=0.52, atlas_timestamp='2025-11-24T23:43:33.658', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:40:00')
2025-11-25T01:44:23.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:44:23.195 [DEBUG] [Thread-200674] [transport.py] [_log()] starting thread (client mode): 0xd31f5060
2025-11-25T01:44:23.196 [DEBUG] [Thread-200674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:44:23.211 [DEBUG] [Thread-200674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:44:23.211 [INFO] [Thread-200674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:44:23.218 [DEBUG] [Thread-200674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:44:23.218 [DEBUG] [Thread-200674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:44:23.218 [DEBUG] [Thread-200674] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] client lang: <none>
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] server lang: <none>
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] kex follows: False
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:44:23.219 [DEBUG] [Thread-200674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:44:23.220 [DEBUG] [Thread-200674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:44:23.220 [DEBUG] [Thread-200674] [transport.py] [_log()] Compression: none
2025-11-25T01:44:23.220 [DEBUG] [Thread-200674] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:44:23.280 [DEBUG] [Thread-200674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:44:23.281 [DEBUG] [Thread-200674] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:44:23.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:44:23.282 [DEBUG] [Thread-200674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:44:23.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:44:23.336 [DEBUG] [Thread-200674] [transport.py] [_log()] userauth is OK
2025-11-25T01:44:23.336 [DEBUG] [Thread-200674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:44:23.336 [DEBUG] [Thread-200674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:44:23.336 [DEBUG] [Thread-200674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:44:23.337 [DEBUG] [Thread-200674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:44:23.357 [INFO] [Thread-200674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:44:23.358 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:44:23.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:44:23.515 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:24.188 [DEBUG] [Thread-200674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:44:24.188 [DEBUG] [Thread-200674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:44:24.236 [DEBUG] [Thread-200674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:44:24.236 [DEBUG] [Thread-200674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:44:24.245 [DEBUG] [Thread-200674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:44:24.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:44:24.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-11-25T01:44:24.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-11-25T01:44:24.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:44:24.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:44:24.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:44:24.290 [DEBUG] [Thread-200674] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:44:25.306 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:25.307 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:30.647 [DEBUG] [Thread-200676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:34.104 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:39.308 [DEBUG] [Thread-200677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:44.616 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:45.758 [DEBUG] [Thread-200678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:54.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:44:54.328 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:44:54.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-11-25T01:44:55.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 44, 29), 13.45, 39.16, 0.0, 25.88, 12.7, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:44:55.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:44:29
2025-11-25T01:44:55.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:44:55.422 [DEBUG] [Thread-200679] [transport.py] [_log()] starting thread (client mode): 0xd319f640
2025-11-25T01:44:55.425 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:44:55.428 [DEBUG] [Thread-200679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:44:55.436 [DEBUG] [Thread-200679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:44:55.436 [INFO] [Thread-200679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] client lang: <none>
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] server lang: <none>
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] kex follows: False
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:44:55.440 [DEBUG] [Thread-200679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:44:55.441 [DEBUG] [Thread-200679] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:44:55.441 [DEBUG] [Thread-200679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:44:55.441 [DEBUG] [Thread-200679] [transport.py] [_log()] Compression: none
2025-11-25T01:44:55.441 [DEBUG] [Thread-200679] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:44:55.472 [DEBUG] [Thread-200679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:44:55.474 [DEBUG] [Thread-200679] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:44:55.475 [DEBUG] [Thread-200679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:44:55.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:44:55.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:44:55.478 [DEBUG] [Thread-200679] [transport.py] [_log()] userauth is OK
2025-11-25T01:44:55.479 [DEBUG] [Thread-200679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:44:55.479 [DEBUG] [Thread-200679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:44:55.479 [DEBUG] [Thread-200679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:44:55.479 [DEBUG] [Thread-200679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:44:55.497 [INFO] [Thread-200679] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:44:55.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:44:56.098 [DEBUG] [Thread-200679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:44:56.098 [DEBUG] [Thread-200679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:44:56.098 [DEBUG] [Thread-200679] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:44:56.139 [DEBUG] [Thread-200679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:44:56.139 [DEBUG] [Thread-200679] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:44:56.142 [DEBUG] [Thread-200679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:44:56.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:44:56.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:44:56.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:44:56.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:44:56.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:44:56.165 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:44:56.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:44:56.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:44:56.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:44:56.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.988931 -999.00  +12.70  20.02     44   +0.80 1 1 1 1 1     0    0 12.40 19.92 ZNESW 26.9 20.0 133.4 27.6 13.0 -25.1 12.8 -24.6 12.6 -23.7 12.9 -24.4
2025-11-25T01:44:56.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:44:56.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:44:56.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.988931
2025-11-25T01:44:56.172 [DEBUG] [Thread-200679] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:44:56.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:44:56.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:44:56.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:44:56.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:44:56.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:44:56.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:44:29', tmtdew=13.45, humidity=39.16, cloud=0.0, wind=25.88, temperature=12.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:44:29', seeing=0.66, atlas_timestamp='2025-11-24T23:44:03.638', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:40:00')
2025-11-25T01:44:56.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:44:56.279 [DEBUG] [Thread-200682] [transport.py] [_log()] starting thread (client mode): 0xc9b77fa0
2025-11-25T01:44:56.279 [DEBUG] [Thread-200682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:44:56.293 [DEBUG] [Thread-200682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:44:56.293 [INFO] [Thread-200682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:44:56.300 [DEBUG] [Thread-200682] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] client lang: <none>
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] server lang: <none>
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] kex follows: False
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] Compression: none
2025-11-25T01:44:56.301 [DEBUG] [Thread-200682] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:44:56.358 [DEBUG] [Thread-200682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:44:56.358 [DEBUG] [Thread-200682] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:44:56.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:44:56.359 [DEBUG] [Thread-200682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:44:56.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:44:56.415 [DEBUG] [Thread-200682] [transport.py] [_log()] userauth is OK
2025-11-25T01:44:56.415 [DEBUG] [Thread-200682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:44:56.415 [DEBUG] [Thread-200682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:44:56.415 [DEBUG] [Thread-200682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:44:56.415 [DEBUG] [Thread-200682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:44:56.429 [INFO] [Thread-200682] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:44:56.429 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:44:56.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:44:57.302 [DEBUG] [Thread-200682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:44:57.302 [DEBUG] [Thread-200682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:44:57.350 [DEBUG] [Thread-200682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:44:57.351 [DEBUG] [Thread-200682] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:44:57.360 [DEBUG] [Thread-200682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:44:57.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:44:57.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-11-25T01:44:57.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:44:57.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:44:57.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:44:57.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:44:57.395 [DEBUG] [Thread-200682] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:45:00.816 [DEBUG] [Thread-200684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:05.885 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:16.001 [DEBUG] [Thread-200685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:16.449 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:25.511 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:25.514 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:26.984 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:27.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:45:27.421 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:45:27.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-11-25T01:45:28.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 45, 2), 13.47, 39.08, 0.0, 26.93, 12.67, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:45:28.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:45:02
2025-11-25T01:45:28.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:45:28.931 [DEBUG] [Thread-200686] [transport.py] [_log()] starting thread (client mode): 0xc9b75f90
2025-11-25T01:45:28.931 [DEBUG] [Thread-200686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:45:28.943 [DEBUG] [Thread-200686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:45:28.943 [INFO] [Thread-200686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] client lang: <none>
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] server lang: <none>
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] kex follows: False
2025-11-25T01:45:28.949 [DEBUG] [Thread-200686] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:45:28.950 [DEBUG] [Thread-200686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:45:28.950 [DEBUG] [Thread-200686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:45:28.950 [DEBUG] [Thread-200686] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:45:28.950 [DEBUG] [Thread-200686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:45:28.950 [DEBUG] [Thread-200686] [transport.py] [_log()] Compression: none
2025-11-25T01:45:28.950 [DEBUG] [Thread-200686] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:45:28.988 [DEBUG] [Thread-200686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:45:28.994 [DEBUG] [Thread-200686] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:45:28.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:45:28.998 [DEBUG] [Thread-200686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:45:28.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:45:29.001 [DEBUG] [Thread-200686] [transport.py] [_log()] userauth is OK
2025-11-25T01:45:29.002 [DEBUG] [Thread-200686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:45:29.002 [DEBUG] [Thread-200686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:45:29.002 [DEBUG] [Thread-200686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:45:29.002 [DEBUG] [Thread-200686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:45:29.029 [INFO] [Thread-200686] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:45:29.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:45:29.657 [DEBUG] [Thread-200686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:45:29.657 [DEBUG] [Thread-200686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:45:29.658 [DEBUG] [Thread-200686] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:45:29.698 [DEBUG] [Thread-200686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:45:29.698 [DEBUG] [Thread-200686] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:45:29.700 [DEBUG] [Thread-200686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:45:29.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:45:29.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:45:29.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:45:29.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:45:29.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:45:29.720 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:45:29.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:45:29.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:45:29.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:45:29.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.989279 -999.00  +12.70  24.66     44   +0.80 1 1 1 1 1     0    0 12.42 21.40 ZNESW 23.2 24.7 137.6 31.0 12.9 -25.2 12.8 -24.7 12.6 -23.5 12.9 -24.4
2025-11-25T01:45:29.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:45:29.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:45:29.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.989279
2025-11-25T01:45:29.726 [DEBUG] [Thread-200686] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:45:29.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:45:29.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:45:29.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:45:29.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:45:29.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:45:29.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:45:02', tmtdew=13.47, humidity=39.08, cloud=0.0, wind=26.93, temperature=12.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:45:02', seeing=0.54, atlas_timestamp='2025-11-24T23:44:33.706', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:43:00')
2025-11-25T01:45:29.820 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:45:29.832 [DEBUG] [Thread-200689] [transport.py] [_log()] starting thread (client mode): 0xc9b75420
2025-11-25T01:45:29.832 [DEBUG] [Thread-200689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:45:29.846 [DEBUG] [Thread-200689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:45:29.847 [INFO] [Thread-200689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:45:29.854 [DEBUG] [Thread-200689] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:45:29.854 [DEBUG] [Thread-200689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:45:29.854 [DEBUG] [Thread-200689] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:45:29.854 [DEBUG] [Thread-200689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:45:29.854 [DEBUG] [Thread-200689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:45:29.854 [DEBUG] [Thread-200689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:45:29.854 [DEBUG] [Thread-200689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] client lang: <none>
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] server lang: <none>
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] kex follows: False
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] Compression: none
2025-11-25T01:45:29.855 [DEBUG] [Thread-200689] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:45:29.910 [DEBUG] [Thread-200689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:45:29.910 [DEBUG] [Thread-200689] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:45:29.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:45:29.910 [DEBUG] [Thread-200689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:45:29.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:45:29.975 [DEBUG] [Thread-200689] [transport.py] [_log()] userauth is OK
2025-11-25T01:45:29.975 [DEBUG] [Thread-200689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:45:29.976 [DEBUG] [Thread-200689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:45:29.976 [DEBUG] [Thread-200689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:45:29.976 [DEBUG] [Thread-200689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:45:29.989 [INFO] [Thread-200689] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:45:29.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:45:29.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:45:30.835 [DEBUG] [Thread-200689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:45:30.835 [DEBUG] [Thread-200689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:45:30.883 [DEBUG] [Thread-200689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:45:30.883 [DEBUG] [Thread-200689] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:45:30.892 [DEBUG] [Thread-200689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:45:30.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:45:30.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')
2025-11-25T01:45:30.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') -> 00000000
2025-11-25T01:45:30.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:45:30.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:45:30.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:45:30.931 [DEBUG] [Thread-200689] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:45:31.037 [DEBUG] [Thread-200691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:37.595 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:39.557 [DEBUG] [Thread-200692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:46.127 [DEBUG] [Thread-200693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:48.271 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:45:59.014 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:00.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:46:00.955 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:46:01.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-11-25T01:46:01.197 [DEBUG] [Thread-200694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:02.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 45, 35), 13.54, 39.06, 0.0, 24.24, 12.72, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:46:02.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:45:35
2025-11-25T01:46:02.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:46:02.707 [DEBUG] [Thread-200695] [transport.py] [_log()] starting thread (client mode): 0xd319fbb0
2025-11-25T01:46:02.707 [DEBUG] [Thread-200695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:46:02.718 [DEBUG] [Thread-200695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:46:02.718 [INFO] [Thread-200695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:46:02.725 [DEBUG] [Thread-200695] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:46:02.725 [DEBUG] [Thread-200695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:46:02.725 [DEBUG] [Thread-200695] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:46:02.725 [DEBUG] [Thread-200695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:46:02.725 [DEBUG] [Thread-200695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:46:02.725 [DEBUG] [Thread-200695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:46:02.726 [DEBUG] [Thread-200695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:46:02.726 [DEBUG] [Thread-200695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:46:02.726 [DEBUG] [Thread-200695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:46:02.726 [DEBUG] [Thread-200695] [transport.py] [_log()] client lang: <none>
2025-11-25T01:46:02.726 [DEBUG] [Thread-200695] [transport.py] [_log()] server lang: <none>
2025-11-25T01:46:02.726 [DEBUG] [Thread-200695] [transport.py] [_log()] kex follows: False
2025-11-25T01:46:02.726 [DEBUG] [Thread-200695] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:46:02.727 [DEBUG] [Thread-200695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:46:02.727 [DEBUG] [Thread-200695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:46:02.727 [DEBUG] [Thread-200695] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:46:02.727 [DEBUG] [Thread-200695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:46:02.727 [DEBUG] [Thread-200695] [transport.py] [_log()] Compression: none
2025-11-25T01:46:02.727 [DEBUG] [Thread-200695] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:46:02.764 [DEBUG] [Thread-200695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:46:02.770 [DEBUG] [Thread-200695] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:46:02.772 [DEBUG] [Thread-200695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:46:02.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:46:02.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:46:02.778 [DEBUG] [Thread-200695] [transport.py] [_log()] userauth is OK
2025-11-25T01:46:02.778 [DEBUG] [Thread-200695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:46:02.778 [DEBUG] [Thread-200695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:46:02.779 [DEBUG] [Thread-200695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:46:02.779 [DEBUG] [Thread-200695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:46:02.804 [INFO] [Thread-200695] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:46:02.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:46:03.423 [DEBUG] [Thread-200695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:46:03.423 [DEBUG] [Thread-200695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:46:03.425 [DEBUG] [Thread-200695] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:46:03.463 [DEBUG] [Thread-200695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:46:03.463 [DEBUG] [Thread-200695] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:46:03.467 [DEBUG] [Thread-200695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:46:03.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:46:03.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:46:03.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:46:03.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:46:03.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:46:03.497 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:46:03.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:46:03.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:46:03.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:46:03.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.989973 -999.00  +12.70  22.46     44   +0.80 1 1 1 1 1     0    0 12.26 18.73 ZNESW 23.7 22.5 130.8 25.3 13.0 -25.2 12.8 -24.8 12.6 -23.6 12.9 -24.5
2025-11-25T01:46:03.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:46:03.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:46:03.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.989973
2025-11-25T01:46:03.505 [DEBUG] [Thread-200695] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:46:03.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:46:03.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:46:03.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:46:03.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:46:03.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:46:03.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:45:35', tmtdew=13.54, humidity=39.06, cloud=0.0, wind=24.24, temperature=12.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:45:36', seeing=0.55, atlas_timestamp='2025-11-24T23:45:33.667', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:43:00')
2025-11-25T01:46:03.609 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:46:03.621 [DEBUG] [Thread-200698] [transport.py] [_log()] starting thread (client mode): 0xd319ffa0
2025-11-25T01:46:03.621 [DEBUG] [Thread-200698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:46:03.636 [DEBUG] [Thread-200698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:46:03.636 [INFO] [Thread-200698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:46:03.644 [DEBUG] [Thread-200698] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] client lang: <none>
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] server lang: <none>
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] kex follows: False
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:46:03.645 [DEBUG] [Thread-200698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:46:03.646 [DEBUG] [Thread-200698] [transport.py] [_log()] Compression: none
2025-11-25T01:46:03.646 [DEBUG] [Thread-200698] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:46:03.702 [DEBUG] [Thread-200698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:46:03.702 [DEBUG] [Thread-200698] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:46:03.702 [DEBUG] [Thread-200698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:46:03.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:46:03.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:46:03.759 [DEBUG] [Thread-200698] [transport.py] [_log()] userauth is OK
2025-11-25T01:46:03.759 [DEBUG] [Thread-200698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:46:03.759 [DEBUG] [Thread-200698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:46:03.760 [DEBUG] [Thread-200698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:46:03.760 [DEBUG] [Thread-200698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:46:03.779 [INFO] [Thread-200698] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:46:03.779 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:46:03.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:46:04.632 [DEBUG] [Thread-200698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:46:04.632 [DEBUG] [Thread-200698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:46:04.682 [DEBUG] [Thread-200698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:46:04.682 [DEBUG] [Thread-200698] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:46:04.694 [DEBUG] [Thread-200698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:46:04.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:46:04.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-11-25T01:46:04.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-11-25T01:46:04.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:46:04.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:46:04.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:46:04.741 [DEBUG] [Thread-200698] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:46:09.518 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:16.241 [DEBUG] [Thread-200700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:20.090 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:25.715 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:25.718 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:30.528 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:31.372 [DEBUG] [Thread-200701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:34.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:46:34.771 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:46:34.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-11-25T01:46:36.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 46, 8), 13.53, 39.08, 0.0, 24.28, 12.68, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:46:36.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:46:08
2025-11-25T01:46:36.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:46:36.413 [DEBUG] [Thread-200702] [transport.py] [_log()] starting thread (client mode): 0xc9b77e80
2025-11-25T01:46:36.414 [DEBUG] [Thread-200702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:46:36.426 [DEBUG] [Thread-200702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:46:36.426 [INFO] [Thread-200702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:46:36.432 [DEBUG] [Thread-200702] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:46:36.432 [DEBUG] [Thread-200702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:46:36.432 [DEBUG] [Thread-200702] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:46:36.432 [DEBUG] [Thread-200702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:46:36.433 [DEBUG] [Thread-200702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:46:36.433 [DEBUG] [Thread-200702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:46:36.433 [DEBUG] [Thread-200702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:46:36.433 [DEBUG] [Thread-200702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:46:36.433 [DEBUG] [Thread-200702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:46:36.433 [DEBUG] [Thread-200702] [transport.py] [_log()] client lang: <none>
2025-11-25T01:46:36.433 [DEBUG] [Thread-200702] [transport.py] [_log()] server lang: <none>
2025-11-25T01:46:36.433 [DEBUG] [Thread-200702] [transport.py] [_log()] kex follows: False
2025-11-25T01:46:36.433 [DEBUG] [Thread-200702] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:46:36.434 [DEBUG] [Thread-200702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:46:36.434 [DEBUG] [Thread-200702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:46:36.434 [DEBUG] [Thread-200702] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:46:36.434 [DEBUG] [Thread-200702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:46:36.434 [DEBUG] [Thread-200702] [transport.py] [_log()] Compression: none
2025-11-25T01:46:36.434 [DEBUG] [Thread-200702] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:46:36.465 [DEBUG] [Thread-200702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:46:36.468 [DEBUG] [Thread-200702] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:46:36.470 [DEBUG] [Thread-200702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:46:36.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:46:36.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:46:36.475 [DEBUG] [Thread-200702] [transport.py] [_log()] userauth is OK
2025-11-25T01:46:36.475 [DEBUG] [Thread-200702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:46:36.475 [DEBUG] [Thread-200702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:46:36.475 [DEBUG] [Thread-200702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:46:36.475 [DEBUG] [Thread-200702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:46:36.501 [INFO] [Thread-200702] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:46:36.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:46:37.155 [DEBUG] [Thread-200702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:46:37.155 [DEBUG] [Thread-200702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:46:37.156 [DEBUG] [Thread-200702] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:46:37.195 [DEBUG] [Thread-200702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:46:37.196 [DEBUG] [Thread-200702] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:46:37.199 [DEBUG] [Thread-200702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:46:37.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:46:37.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:46:37.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:46:37.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:46:37.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:46:37.227 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:46:37.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:46:37.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:46:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:46:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.990320 -999.00  +12.70  21.00     44   +0.80 1 1 1 1 1     0    0 12.41 17.53 ZNESW 20.9 21.0 132.6 30.3 13.0 -25.3 12.8 -24.8 12.6 -23.6 12.9 -24.6
2025-11-25T01:46:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:46:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:46:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.990320
2025-11-25T01:46:37.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:46:37.245 [DEBUG] [Thread-200702] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:46:37.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:46:37.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:46:37.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:46:37.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:46:37.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:46:08', tmtdew=13.53, humidity=39.08, cloud=0.0, wind=24.28, temperature=12.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:46:08', seeing=0.55, atlas_timestamp='2025-11-24T23:46:03.648', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:43:00')
2025-11-25T01:46:37.325 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:46:37.337 [DEBUG] [Thread-200705] [transport.py] [_log()] starting thread (client mode): 0xd31f67a0
2025-11-25T01:46:37.337 [DEBUG] [Thread-200705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:46:37.357 [DEBUG] [Thread-200705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:46:37.357 [INFO] [Thread-200705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] client lang: <none>
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] server lang: <none>
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] kex follows: False
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] Compression: none
2025-11-25T01:46:37.365 [DEBUG] [Thread-200705] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:46:37.424 [DEBUG] [Thread-200705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:46:37.425 [DEBUG] [Thread-200705] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:46:37.425 [DEBUG] [Thread-200705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:46:37.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:46:37.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:46:37.488 [DEBUG] [Thread-200705] [transport.py] [_log()] userauth is OK
2025-11-25T01:46:37.488 [DEBUG] [Thread-200705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:46:37.488 [DEBUG] [Thread-200705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:46:37.488 [DEBUG] [Thread-200705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:46:37.488 [DEBUG] [Thread-200705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:46:37.508 [INFO] [Thread-200705] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:46:37.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:46:37.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:46:38.389 [DEBUG] [Thread-200705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:46:38.389 [DEBUG] [Thread-200705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:46:38.437 [DEBUG] [Thread-200705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:46:38.437 [DEBUG] [Thread-200705] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:46:38.447 [DEBUG] [Thread-200705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:46:38.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:46:38.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-11-25T01:46:38.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-11-25T01:46:38.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:46:38.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:46:38.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:46:38.487 [DEBUG] [Thread-200705] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:46:39.797 [DEBUG] [Thread-200707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:41.057 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:46.456 [DEBUG] [Thread-200708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:46:51.562 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:01.621 [DEBUG] [Thread-200709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:02.172 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:08.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:47:08.493 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:47:08.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-11-25T01:47:09.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 46, 41), 13.52, 39.08, 0.0, 26.87, 12.67, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:47:09.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:46:41
2025-11-25T01:47:10.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:47:10.221 [DEBUG] [Thread-200710] [transport.py] [_log()] starting thread (client mode): 0xd319f640
2025-11-25T01:47:10.221 [DEBUG] [Thread-200710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:47:10.228 [DEBUG] [Thread-200710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:47:10.228 [INFO] [Thread-200710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] client lang: <none>
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] server lang: <none>
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] kex follows: False
2025-11-25T01:47:10.233 [DEBUG] [Thread-200710] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:47:10.234 [DEBUG] [Thread-200710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:47:10.234 [DEBUG] [Thread-200710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:47:10.234 [DEBUG] [Thread-200710] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:47:10.234 [DEBUG] [Thread-200710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:47:10.234 [DEBUG] [Thread-200710] [transport.py] [_log()] Compression: none
2025-11-25T01:47:10.234 [DEBUG] [Thread-200710] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:47:10.266 [DEBUG] [Thread-200710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:47:10.270 [DEBUG] [Thread-200710] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:47:10.272 [DEBUG] [Thread-200710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:47:10.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:47:10.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:47:10.278 [DEBUG] [Thread-200710] [transport.py] [_log()] userauth is OK
2025-11-25T01:47:10.278 [DEBUG] [Thread-200710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:47:10.278 [DEBUG] [Thread-200710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:47:10.278 [DEBUG] [Thread-200710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:47:10.278 [DEBUG] [Thread-200710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:47:10.306 [INFO] [Thread-200710] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:47:10.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:47:10.959 [DEBUG] [Thread-200710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:47:10.959 [DEBUG] [Thread-200710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:47:10.960 [DEBUG] [Thread-200710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:47:11.000 [DEBUG] [Thread-200710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:47:11.000 [DEBUG] [Thread-200710] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:47:11.003 [DEBUG] [Thread-200710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:47:11.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:47:11.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:47:11.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:47:11.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:47:11.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:47:11.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:47:11.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:47:11.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:47:11.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:47:11.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.990667 -999.00  +12.60  19.76     44   +0.80 1 1 1 1 1     0    0 12.25 17.28 ZNESW 21.6 19.8 135.4 25.6 13.0 -25.3 12.8 -24.7 12.6 -23.7 12.9 -24.5
2025-11-25T01:47:11.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:47:11.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:47:11.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.990667
2025-11-25T01:47:11.039 [DEBUG] [Thread-200710] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:47:11.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:47:11.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:47:11.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:47:11.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:47:11.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:47:11.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:46:41', tmtdew=13.52, humidity=39.08, cloud=0.0, wind=26.87, temperature=12.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:46:41', seeing=0.59, atlas_timestamp='2025-11-24T23:46:33.629', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:43:00')
2025-11-25T01:47:11.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:47:11.161 [DEBUG] [Thread-200713] [transport.py] [_log()] starting thread (client mode): 0xd319fd90
2025-11-25T01:47:11.161 [DEBUG] [Thread-200713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:47:11.176 [DEBUG] [Thread-200713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:47:11.176 [INFO] [Thread-200713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:47:11.184 [DEBUG] [Thread-200713] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:47:11.184 [DEBUG] [Thread-200713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:47:11.184 [DEBUG] [Thread-200713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:47:11.184 [DEBUG] [Thread-200713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:47:11.184 [DEBUG] [Thread-200713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:47:11.184 [DEBUG] [Thread-200713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:47:11.184 [DEBUG] [Thread-200713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:47:11.184 [DEBUG] [Thread-200713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:47:11.184 [DEBUG] [Thread-200713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:47:11.184 [DEBUG] [Thread-200713] [transport.py] [_log()] client lang: <none>
2025-11-25T01:47:11.185 [DEBUG] [Thread-200713] [transport.py] [_log()] server lang: <none>
2025-11-25T01:47:11.185 [DEBUG] [Thread-200713] [transport.py] [_log()] kex follows: False
2025-11-25T01:47:11.185 [DEBUG] [Thread-200713] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:47:11.185 [DEBUG] [Thread-200713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:47:11.185 [DEBUG] [Thread-200713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:47:11.185 [DEBUG] [Thread-200713] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:47:11.185 [DEBUG] [Thread-200713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:47:11.185 [DEBUG] [Thread-200713] [transport.py] [_log()] Compression: none
2025-11-25T01:47:11.186 [DEBUG] [Thread-200713] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:47:11.241 [DEBUG] [Thread-200713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:47:11.242 [DEBUG] [Thread-200713] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:47:11.242 [DEBUG] [Thread-200713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:47:11.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:47:11.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:47:11.299 [DEBUG] [Thread-200713] [transport.py] [_log()] userauth is OK
2025-11-25T01:47:11.299 [DEBUG] [Thread-200713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:47:11.299 [DEBUG] [Thread-200713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:47:11.299 [DEBUG] [Thread-200713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:47:11.299 [DEBUG] [Thread-200713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:47:11.319 [INFO] [Thread-200713] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:47:11.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:47:11.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:47:12.147 [DEBUG] [Thread-200713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:47:12.147 [DEBUG] [Thread-200713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:47:12.195 [DEBUG] [Thread-200713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:47:12.195 [DEBUG] [Thread-200713] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:47:12.203 [DEBUG] [Thread-200713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:47:12.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:47:12.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:47:12.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-11-25T01:47:12.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:47:12.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:47:12.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:47:12.236 [DEBUG] [Thread-200713] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:47:12.717 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:16.674 [DEBUG] [Thread-200715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:23.450 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:25.920 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:25.922 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:31.806 [DEBUG] [Thread-200716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:34.228 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:40.038 [DEBUG] [Thread-200717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:42.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:47:42.261 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:47:42.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-11-25T01:47:43.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 47, 14), 13.54, 39.06, 0.0, 27.75, 12.72, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:47:43.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:47:14
2025-11-25T01:47:43.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:47:43.479 [DEBUG] [Thread-200718] [transport.py] [_log()] starting thread (client mode): 0xc9b763b0
2025-11-25T01:47:43.479 [DEBUG] [Thread-200718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:47:43.483 [DEBUG] [Thread-200718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:47:43.483 [INFO] [Thread-200718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] client lang: <none>
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] server lang: <none>
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] kex follows: False
2025-11-25T01:47:43.487 [DEBUG] [Thread-200718] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:47:43.488 [DEBUG] [Thread-200718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:47:43.488 [DEBUG] [Thread-200718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:47:43.488 [DEBUG] [Thread-200718] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:47:43.488 [DEBUG] [Thread-200718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:47:43.488 [DEBUG] [Thread-200718] [transport.py] [_log()] Compression: none
2025-11-25T01:47:43.488 [DEBUG] [Thread-200718] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:47:43.520 [DEBUG] [Thread-200718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:47:43.523 [DEBUG] [Thread-200718] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:47:43.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:47:43.575 [DEBUG] [Thread-200718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:47:43.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:47:43.577 [DEBUG] [Thread-200718] [transport.py] [_log()] userauth is OK
2025-11-25T01:47:43.577 [DEBUG] [Thread-200718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:47:43.578 [DEBUG] [Thread-200718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:47:43.578 [DEBUG] [Thread-200718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:47:43.578 [DEBUG] [Thread-200718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:47:43.607 [INFO] [Thread-200718] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:47:43.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:47:44.233 [DEBUG] [Thread-200718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:47:44.233 [DEBUG] [Thread-200718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:47:44.235 [DEBUG] [Thread-200718] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:47:44.274 [DEBUG] [Thread-200718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:47:44.275 [DEBUG] [Thread-200718] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:47:44.278 [DEBUG] [Thread-200718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:47:44.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:47:44.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:47:44.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:47:44.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:47:44.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:47:44.302 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:47:44.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:47:44.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:47:44.304 [DEBUG] [Thread-200718] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:47:44.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:47:44.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.991015 -999.00  +12.60  21.92     44   +0.80 1 1 1 1 1     0    0 12.30 16.16 ZNESW 22.1 21.9 133.2 29.2 13.0 -25.3 12.8 -24.7 12.6 -23.6 12.9 -24.5
2025-11-25T01:47:44.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:47:44.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:47:44.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.991015
2025-11-25T01:47:44.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:47:44.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:47:44.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:47:44.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:47:44.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:47:44.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:47:14', tmtdew=13.54, humidity=39.06, cloud=0.0, wind=27.75, temperature=12.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:47:14', seeing=0.59, atlas_timestamp='2025-11-24T23:47:03.696', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02674999999999983, -0.03474999999999895, 0.0022500000000000853, 0.01750000000000007, 0.01249999999999929, 0.0762500000000017, -0.0235000000000003, -0.023749999999999716, 0.01899999999999835, -0.019000000000000128, 0.024250000000000327, -0.05000000000000071, 0.08599999999999852, 0.09124999999999872, -0.007500000000000284, -0.027000000000001023, -0.019750000000000156, 0.01950000000000074, 0.0009999999999994458, -0.028250000000001663, 0.08299999999999841, 0.06974999999999909, 0.07425000000000104, 0.011749999999999261, -0.002000000000000668, 0.026500000000000412, -0.02275000000000027, 0.0625, 0.09750000000000014, 0.06300000000000239, 0.08000000000000185, -0.0019999999999988916, 0.02424999999999855], zp_timestamp='2025-11-24T23:43:00')
2025-11-25T01:47:44.419 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:47:44.432 [DEBUG] [Thread-200721] [transport.py] [_log()] starting thread (client mode): 0xd0784fd0
2025-11-25T01:47:44.432 [DEBUG] [Thread-200721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:47:44.446 [DEBUG] [Thread-200721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:47:44.447 [INFO] [Thread-200721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] client lang: <none>
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] server lang: <none>
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] kex follows: False
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:47:44.454 [DEBUG] [Thread-200721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:47:44.455 [DEBUG] [Thread-200721] [transport.py] [_log()] Compression: none
2025-11-25T01:47:44.455 [DEBUG] [Thread-200721] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:47:44.511 [DEBUG] [Thread-200721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:47:44.512 [DEBUG] [Thread-200721] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:47:44.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:47:44.512 [DEBUG] [Thread-200721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:47:44.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:47:44.568 [DEBUG] [Thread-200721] [transport.py] [_log()] userauth is OK
2025-11-25T01:47:44.568 [DEBUG] [Thread-200721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:47:44.568 [DEBUG] [Thread-200721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:47:44.568 [DEBUG] [Thread-200721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:47:44.568 [DEBUG] [Thread-200721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:47:44.588 [INFO] [Thread-200721] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:47:44.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:47:44.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:47:44.796 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:45.466 [DEBUG] [Thread-200721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:47:45.466 [DEBUG] [Thread-200721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:47:45.514 [DEBUG] [Thread-200721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:47:45.514 [DEBUG] [Thread-200721] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:47:45.522 [DEBUG] [Thread-200721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:47:45.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:47:45.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-11-25T01:47:45.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-11-25T01:47:45.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:47:45.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:47:45.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:47:45.556 [DEBUG] [Thread-200721] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:47:46.860 [DEBUG] [Thread-200723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:47:55.401 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:02.040 [DEBUG] [Thread-200724 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:06.199 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:15.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:48:15.601 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:48:15.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-11-25T01:48:16.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 47, 46), 13.44, 39.55, 0.0, 24.98, 12.67, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:48:16.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:47:46
2025-11-25T01:48:16.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:48:16.768 [DEBUG] [Thread-200725] [transport.py] [_log()] starting thread (client mode): 0xc9b744c0
2025-11-25T01:48:16.769 [DEBUG] [Thread-200725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:48:16.776 [DEBUG] [Thread-200725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:48:16.776 [INFO] [Thread-200725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] client lang: <none>
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] server lang: <none>
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] kex follows: False
2025-11-25T01:48:16.782 [DEBUG] [Thread-200725] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:48:16.783 [DEBUG] [Thread-200725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:48:16.783 [DEBUG] [Thread-200725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:48:16.783 [DEBUG] [Thread-200725] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:48:16.783 [DEBUG] [Thread-200725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:48:16.783 [DEBUG] [Thread-200725] [transport.py] [_log()] Compression: none
2025-11-25T01:48:16.783 [DEBUG] [Thread-200725] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:48:16.815 [DEBUG] [Thread-200725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:48:16.819 [DEBUG] [Thread-200725] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:48:16.820 [DEBUG] [Thread-200725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:48:16.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:48:16.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:48:16.824 [DEBUG] [Thread-200725] [transport.py] [_log()] userauth is OK
2025-11-25T01:48:16.824 [DEBUG] [Thread-200725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:48:16.824 [DEBUG] [Thread-200725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:48:16.824 [DEBUG] [Thread-200725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:48:16.824 [DEBUG] [Thread-200725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:48:16.854 [INFO] [Thread-200725] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:48:16.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:48:16.894 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:17.126 [DEBUG] [Thread-200727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:17.530 [DEBUG] [Thread-200725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:48:17.530 [DEBUG] [Thread-200725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:48:17.531 [DEBUG] [Thread-200725] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:48:17.571 [DEBUG] [Thread-200725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:48:17.571 [DEBUG] [Thread-200725] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:48:17.574 [DEBUG] [Thread-200725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:48:17.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:48:17.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:48:17.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:48:17.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:48:17.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:48:17.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:48:17.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:48:17.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:48:17.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:48:17.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.991362 -999.00  +12.70  26.23     44   +0.80 1 1 1 1 1     0    0 12.31 16.13 ZNESW 25.2 26.2 130.2 31.1 13.0 -25.2 12.8 -24.6 12.6 -23.6 12.9 -24.5
2025-11-25T01:48:17.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:48:17.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:48:17.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.991362
2025-11-25T01:48:17.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:48:17.612 [DEBUG] [Thread-200725] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:48:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:48:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:48:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:48:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:48:17.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:47:46', tmtdew=13.44, humidity=39.55, cloud=0.0, wind=24.98, temperature=12.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:47:47', seeing=0.63, atlas_timestamp='2025-11-24T23:47:33.677', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04574999999999996, 0.0022500000000018616, -0.042500000000000426, -0.04049999999999976, 0.047250000000000014, -0.0005000000000006111, -0.019750000000000156, 0.013499999999998735, -0.038000000000000256, 0.02024999999999899, -0.045499999999998764, 0.09149999999999991, 0.08975000000000044, -0.009499999999999176, -0.042500000000000426, -0.03774999999999906, 0.0035000000000007248, -0.008000000000000895, -0.019750000000001933, 0.032999999999999474, 0.048749999999998295, 0.052250000000000796, -0.005250000000000199, -0.015000000000000568, 0.0024999999999995026, -0.04224999999999923, 0.012500000000001066, 0.07199999999999918, 0.059499999999999886, 0.09550000000000125, -0.010500000000000398, -0.01675000000000182], zp_timestamp='2025-11-24T23:46:00')
2025-11-25T01:48:17.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:48:17.698 [DEBUG] [Thread-200729] [transport.py] [_log()] starting thread (client mode): 0xd319f280
2025-11-25T01:48:17.698 [DEBUG] [Thread-200729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:48:17.712 [DEBUG] [Thread-200729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:48:17.712 [INFO] [Thread-200729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:48:17.719 [DEBUG] [Thread-200729] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] client lang: <none>
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] server lang: <none>
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] kex follows: False
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] Compression: none
2025-11-25T01:48:17.720 [DEBUG] [Thread-200729] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:48:17.778 [DEBUG] [Thread-200729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:48:17.778 [DEBUG] [Thread-200729] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:48:17.778 [DEBUG] [Thread-200729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:48:17.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:48:17.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:48:17.835 [DEBUG] [Thread-200729] [transport.py] [_log()] userauth is OK
2025-11-25T01:48:17.835 [DEBUG] [Thread-200729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:48:17.835 [DEBUG] [Thread-200729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:48:17.835 [DEBUG] [Thread-200729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:48:17.835 [DEBUG] [Thread-200729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:48:17.848 [INFO] [Thread-200729] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:48:17.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:48:17.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:48:18.732 [DEBUG] [Thread-200729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:48:18.732 [DEBUG] [Thread-200729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:48:18.780 [DEBUG] [Thread-200729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:48:18.780 [DEBUG] [Thread-200729] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:48:18.788 [DEBUG] [Thread-200729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:48:18.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:48:18.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-11-25T01:48:18.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-11-25T01:48:18.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:48:18.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:48:18.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:48:18.822 [DEBUG] [Thread-200729] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:48:26.165 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:26.169 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:27.769 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:32.206 [DEBUG] [Thread-200731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:38.236 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:40.342 [DEBUG] [Thread-200732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:47.308 [DEBUG] [Thread-200733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:48.845 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:48:48.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:48:48.856 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:48:48.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:48:50.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 48, 19), 13.46, 39.5, 0.0, 25.28, 12.68, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:48:50.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:48:19
2025-11-25T01:48:50.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:48:50.438 [DEBUG] [Thread-200734] [transport.py] [_log()] starting thread (client mode): 0xd31f4910
2025-11-25T01:48:50.439 [DEBUG] [Thread-200734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:48:50.454 [DEBUG] [Thread-200734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:48:50.454 [INFO] [Thread-200734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:48:50.459 [DEBUG] [Thread-200734] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] client lang: <none>
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] server lang: <none>
2025-11-25T01:48:50.460 [DEBUG] [Thread-200734] [transport.py] [_log()] kex follows: False
2025-11-25T01:48:50.461 [DEBUG] [Thread-200734] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:48:50.461 [DEBUG] [Thread-200734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:48:50.461 [DEBUG] [Thread-200734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:48:50.462 [DEBUG] [Thread-200734] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:48:50.462 [DEBUG] [Thread-200734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:48:50.462 [DEBUG] [Thread-200734] [transport.py] [_log()] Compression: none
2025-11-25T01:48:50.462 [DEBUG] [Thread-200734] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:48:50.498 [DEBUG] [Thread-200734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:48:50.504 [DEBUG] [Thread-200734] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:48:50.506 [DEBUG] [Thread-200734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:48:50.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:48:50.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:48:50.511 [DEBUG] [Thread-200734] [transport.py] [_log()] userauth is OK
2025-11-25T01:48:50.512 [DEBUG] [Thread-200734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:48:50.512 [DEBUG] [Thread-200734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:48:50.512 [DEBUG] [Thread-200734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:48:50.512 [DEBUG] [Thread-200734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:48:50.550 [INFO] [Thread-200734] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:48:50.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:48:51.200 [DEBUG] [Thread-200734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:48:51.200 [DEBUG] [Thread-200734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:48:51.201 [DEBUG] [Thread-200734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:48:51.241 [DEBUG] [Thread-200734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:48:51.241 [DEBUG] [Thread-200734] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:48:51.243 [DEBUG] [Thread-200734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:48:51.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:48:51.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:48:51.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:48:51.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:48:51.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:48:51.264 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:48:51.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:48:51.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:48:51.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:48:51.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.992056 -999.00  +12.70  21.51     44   +0.80 1 1 1 1 1     0    0 12.36 14.58 ZNESW 21.4 21.5 129.4 27.4 12.9 -25.3 12.8 -24.7 12.6 -23.7 12.9 -24.5
2025-11-25T01:48:51.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:48:51.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:48:51.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.992056
2025-11-25T01:48:51.270 [DEBUG] [Thread-200734] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:48:51.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:48:51.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:48:51.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:48:51.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:48:51.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:48:51.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:48:19', tmtdew=13.46, humidity=39.5, cloud=0.0, wind=25.28, temperature=12.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:48:20', seeing=0.63, atlas_timestamp='2025-11-24T23:48:33.638', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04574999999999996, 0.0022500000000018616, -0.042500000000000426, -0.04049999999999976, 0.047250000000000014, -0.0005000000000006111, -0.019750000000000156, 0.013499999999998735, -0.038000000000000256, 0.02024999999999899, -0.045499999999998764, 0.09149999999999991, 0.08975000000000044, -0.009499999999999176, -0.042500000000000426, -0.03774999999999906, 0.0035000000000007248, -0.008000000000000895, -0.019750000000001933, 0.032999999999999474, 0.048749999999998295, 0.052250000000000796, -0.005250000000000199, -0.015000000000000568, 0.0024999999999995026, -0.04224999999999923, 0.012500000000001066, 0.07199999999999918, 0.059499999999999886, 0.09550000000000125, -0.010500000000000398, -0.01675000000000182], zp_timestamp='2025-11-24T23:46:00')
2025-11-25T01:48:51.356 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:48:51.368 [DEBUG] [Thread-200737] [transport.py] [_log()] starting thread (client mode): 0xc9b74220
2025-11-25T01:48:51.368 [DEBUG] [Thread-200737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:48:51.383 [DEBUG] [Thread-200737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:48:51.383 [INFO] [Thread-200737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] client lang: <none>
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] server lang: <none>
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] kex follows: False
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] Compression: none
2025-11-25T01:48:51.391 [DEBUG] [Thread-200737] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:48:51.450 [DEBUG] [Thread-200737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:48:51.450 [DEBUG] [Thread-200737] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:48:51.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:48:51.450 [DEBUG] [Thread-200737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:48:51.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:48:51.507 [DEBUG] [Thread-200737] [transport.py] [_log()] userauth is OK
2025-11-25T01:48:51.507 [DEBUG] [Thread-200737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:48:51.507 [DEBUG] [Thread-200737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:48:51.507 [DEBUG] [Thread-200737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:48:51.507 [DEBUG] [Thread-200737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:48:51.521 [INFO] [Thread-200737] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:48:51.521 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:48:51.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:48:52.356 [DEBUG] [Thread-200737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:48:52.357 [DEBUG] [Thread-200737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:48:52.404 [DEBUG] [Thread-200737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:48:52.405 [DEBUG] [Thread-200737] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:48:52.414 [DEBUG] [Thread-200737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:48:52.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:48:52.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-11-25T01:48:52.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-11-25T01:48:52.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:48:52.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:48:52.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:48:52.453 [DEBUG] [Thread-200737] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:48:59.550 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:02.372 [DEBUG] [Thread-200739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:10.195 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:17.527 [DEBUG] [Thread-200740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:20.822 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:22.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:49:22.478 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:49:22.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-11-25T01:49:23.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 48, 52), 13.38, 39.58, 0.0, 27.33, 12.6, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:49:23.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:48:52
2025-11-25T01:49:24.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:49:24.215 [DEBUG] [Thread-200741] [transport.py] [_log()] starting thread (client mode): 0xd31f76d0
2025-11-25T01:49:24.216 [DEBUG] [Thread-200741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:49:24.230 [DEBUG] [Thread-200741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:49:24.230 [INFO] [Thread-200741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:49:24.236 [DEBUG] [Thread-200741] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:49:24.237 [DEBUG] [Thread-200741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:49:24.237 [DEBUG] [Thread-200741] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:49:24.237 [DEBUG] [Thread-200741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:49:24.237 [DEBUG] [Thread-200741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:49:24.237 [DEBUG] [Thread-200741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:49:24.237 [DEBUG] [Thread-200741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:49:24.237 [DEBUG] [Thread-200741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:49:24.238 [DEBUG] [Thread-200741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:49:24.238 [DEBUG] [Thread-200741] [transport.py] [_log()] client lang: <none>
2025-11-25T01:49:24.238 [DEBUG] [Thread-200741] [transport.py] [_log()] server lang: <none>
2025-11-25T01:49:24.238 [DEBUG] [Thread-200741] [transport.py] [_log()] kex follows: False
2025-11-25T01:49:24.238 [DEBUG] [Thread-200741] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:49:24.239 [DEBUG] [Thread-200741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:49:24.239 [DEBUG] [Thread-200741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:49:24.239 [DEBUG] [Thread-200741] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:49:24.239 [DEBUG] [Thread-200741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:49:24.240 [DEBUG] [Thread-200741] [transport.py] [_log()] Compression: none
2025-11-25T01:49:24.240 [DEBUG] [Thread-200741] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:49:24.276 [DEBUG] [Thread-200741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:49:24.281 [DEBUG] [Thread-200741] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:49:24.283 [DEBUG] [Thread-200741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:49:24.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:49:24.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:49:24.288 [DEBUG] [Thread-200741] [transport.py] [_log()] userauth is OK
2025-11-25T01:49:24.289 [DEBUG] [Thread-200741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:49:24.289 [DEBUG] [Thread-200741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:49:24.289 [DEBUG] [Thread-200741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:49:24.289 [DEBUG] [Thread-200741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:49:24.316 [INFO] [Thread-200741] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:49:24.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:49:24.960 [DEBUG] [Thread-200741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:49:24.961 [DEBUG] [Thread-200741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:49:24.971 [DEBUG] [Thread-200741] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:49:25.002 [DEBUG] [Thread-200741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:49:25.002 [DEBUG] [Thread-200741] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:49:25.006 [DEBUG] [Thread-200741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:49:25.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:49:25.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:49:25.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:49:25.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:49:25.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:49:25.034 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:49:25.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:49:25.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:49:25.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:49:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.992403 -999.00  +12.60  19.47     44   +0.90 1 1 1 1 1     0    0 12.27 12.60 ZNESW 24.2 19.5 133.4 28.5 12.9 -25.3 12.8 -24.8 12.6 -23.7 12.9 -24.6
2025-11-25T01:49:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:49:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:49:25.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.992403
2025-11-25T01:49:25.043 [DEBUG] [Thread-200741] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:49:25.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:49:25.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:49:25.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:49:25.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:49:25.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:49:25.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:48:52', tmtdew=13.38, humidity=39.58, cloud=0.0, wind=27.33, temperature=12.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:48:52', seeing=0.6, atlas_timestamp='2025-11-24T23:49:03.619', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04574999999999996, 0.0022500000000018616, -0.042500000000000426, -0.04049999999999976, 0.047250000000000014, -0.0005000000000006111, -0.019750000000000156, 0.013499999999998735, -0.038000000000000256, 0.02024999999999899, -0.045499999999998764, 0.09149999999999991, 0.08975000000000044, -0.009499999999999176, -0.042500000000000426, -0.03774999999999906, 0.0035000000000007248, -0.008000000000000895, -0.019750000000001933, 0.032999999999999474, 0.048749999999998295, 0.052250000000000796, -0.005250000000000199, -0.015000000000000568, 0.0024999999999995026, -0.04224999999999923, 0.012500000000001066, 0.07199999999999918, 0.059499999999999886, 0.09550000000000125, -0.010500000000000398, -0.01675000000000182], zp_timestamp='2025-11-24T23:46:00')
2025-11-25T01:49:25.148 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:49:25.166 [DEBUG] [Thread-200744] [transport.py] [_log()] starting thread (client mode): 0xd3151cf0
2025-11-25T01:49:25.167 [DEBUG] [Thread-200744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:49:25.181 [DEBUG] [Thread-200744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:49:25.181 [INFO] [Thread-200744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:49:25.189 [DEBUG] [Thread-200744] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:49:25.189 [DEBUG] [Thread-200744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:49:25.189 [DEBUG] [Thread-200744] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:49:25.189 [DEBUG] [Thread-200744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:49:25.189 [DEBUG] [Thread-200744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:49:25.189 [DEBUG] [Thread-200744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] client lang: <none>
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] server lang: <none>
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] kex follows: False
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] Compression: none
2025-11-25T01:49:25.190 [DEBUG] [Thread-200744] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:49:25.252 [DEBUG] [Thread-200744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:49:25.253 [DEBUG] [Thread-200744] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:49:25.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:49:25.254 [DEBUG] [Thread-200744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:49:25.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:49:25.311 [DEBUG] [Thread-200744] [transport.py] [_log()] userauth is OK
2025-11-25T01:49:25.312 [DEBUG] [Thread-200744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:49:25.312 [DEBUG] [Thread-200744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:49:25.312 [DEBUG] [Thread-200744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:49:25.312 [DEBUG] [Thread-200744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:49:25.331 [INFO] [Thread-200744] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:49:25.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:49:25.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:49:26.153 [DEBUG] [Thread-200744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:49:26.153 [DEBUG] [Thread-200744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:49:26.201 [DEBUG] [Thread-200744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:49:26.201 [DEBUG] [Thread-200744] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:49:26.209 [DEBUG] [Thread-200744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:49:26.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:49:26.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-11-25T01:49:26.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:49:26.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:49:26.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:49:26.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:49:26.242 [DEBUG] [Thread-200744] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:49:26.372 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:26.373 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:31.890 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:32.575 [DEBUG] [Thread-200746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:40.625 [DEBUG] [Thread-200747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:42.607 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:47.691 [DEBUG] [Thread-200748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:53.174 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:49:56.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:49:56.275 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:49:56.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-11-25T01:49:57.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 49, 25), 13.4, 39.53, 0.0, 27.53, 12.6, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:49:57.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:49:25
2025-11-25T01:49:57.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:49:58.044 [DEBUG] [Thread-200749] [transport.py] [_log()] starting thread (client mode): 0xd0710a90
2025-11-25T01:49:58.045 [DEBUG] [Thread-200749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:49:58.057 [DEBUG] [Thread-200749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:49:58.057 [INFO] [Thread-200749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:49:58.062 [DEBUG] [Thread-200749] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:49:58.063 [DEBUG] [Thread-200749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:49:58.063 [DEBUG] [Thread-200749] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:49:58.063 [DEBUG] [Thread-200749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:49:58.063 [DEBUG] [Thread-200749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:49:58.063 [DEBUG] [Thread-200749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:49:58.063 [DEBUG] [Thread-200749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:49:58.063 [DEBUG] [Thread-200749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:49:58.063 [DEBUG] [Thread-200749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:49:58.063 [DEBUG] [Thread-200749] [transport.py] [_log()] client lang: <none>
2025-11-25T01:49:58.063 [DEBUG] [Thread-200749] [transport.py] [_log()] server lang: <none>
2025-11-25T01:49:58.064 [DEBUG] [Thread-200749] [transport.py] [_log()] kex follows: False
2025-11-25T01:49:58.064 [DEBUG] [Thread-200749] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:49:58.065 [DEBUG] [Thread-200749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:49:58.065 [DEBUG] [Thread-200749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:49:58.065 [DEBUG] [Thread-200749] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:49:58.065 [DEBUG] [Thread-200749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:49:58.065 [DEBUG] [Thread-200749] [transport.py] [_log()] Compression: none
2025-11-25T01:49:58.065 [DEBUG] [Thread-200749] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:49:58.101 [DEBUG] [Thread-200749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:49:58.106 [DEBUG] [Thread-200749] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:49:58.108 [DEBUG] [Thread-200749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:49:58.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:49:58.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:49:58.114 [DEBUG] [Thread-200749] [transport.py] [_log()] userauth is OK
2025-11-25T01:49:58.114 [DEBUG] [Thread-200749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:49:58.115 [DEBUG] [Thread-200749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:49:58.115 [DEBUG] [Thread-200749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:49:58.115 [DEBUG] [Thread-200749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:49:58.150 [INFO] [Thread-200749] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:49:58.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:49:58.792 [DEBUG] [Thread-200749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:49:58.792 [DEBUG] [Thread-200749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:49:58.793 [DEBUG] [Thread-200749] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:49:58.833 [DEBUG] [Thread-200749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:49:58.833 [DEBUG] [Thread-200749] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:49:58.835 [DEBUG] [Thread-200749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:49:58.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:49:58.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:49:58.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:49:58.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:49:58.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:49:58.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:49:58.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:49:58.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:49:58.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:49:58.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.992751 -999.00  +12.60  24.08     44   +0.80 1 1 1 1 1     0    0 12.06 10.44 ZNESW 24.4 24.1 127.0 30.1 12.9 -25.2 12.8 -24.7 12.5 -23.7 12.9 -24.5
2025-11-25T01:49:58.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:49:58.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:49:58.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.992751
2025-11-25T01:49:58.870 [DEBUG] [Thread-200749] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:49:58.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:49:58.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:49:58.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:49:58.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:49:58.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:49:58.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:49:25', tmtdew=13.4, humidity=39.53, cloud=0.0, wind=27.53, temperature=12.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:49:26', seeing=0.7, atlas_timestamp='2025-11-24T23:49:33.686', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04574999999999996, 0.0022500000000018616, -0.042500000000000426, -0.04049999999999976, 0.047250000000000014, -0.0005000000000006111, -0.019750000000000156, 0.013499999999998735, -0.038000000000000256, 0.02024999999999899, -0.045499999999998764, 0.09149999999999991, 0.08975000000000044, -0.009499999999999176, -0.042500000000000426, -0.03774999999999906, 0.0035000000000007248, -0.008000000000000895, -0.019750000000001933, 0.032999999999999474, 0.048749999999998295, 0.052250000000000796, -0.005250000000000199, -0.015000000000000568, 0.0024999999999995026, -0.04224999999999923, 0.012500000000001066, 0.07199999999999918, 0.059499999999999886, 0.09550000000000125, -0.010500000000000398, -0.01675000000000182], zp_timestamp='2025-11-24T23:46:00')
2025-11-25T01:49:58.955 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:49:58.966 [DEBUG] [Thread-200752] [transport.py] [_log()] starting thread (client mode): 0xd31f4be0
2025-11-25T01:49:58.966 [DEBUG] [Thread-200752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:49:58.981 [DEBUG] [Thread-200752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:49:58.981 [INFO] [Thread-200752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] client lang: <none>
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] server lang: <none>
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] kex follows: False
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] Compression: none
2025-11-25T01:49:58.989 [DEBUG] [Thread-200752] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:49:59.046 [DEBUG] [Thread-200752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:49:59.046 [DEBUG] [Thread-200752] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:49:59.046 [DEBUG] [Thread-200752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:49:59.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:49:59.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:49:59.103 [DEBUG] [Thread-200752] [transport.py] [_log()] userauth is OK
2025-11-25T01:49:59.103 [DEBUG] [Thread-200752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:49:59.103 [DEBUG] [Thread-200752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:49:59.103 [DEBUG] [Thread-200752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:49:59.103 [DEBUG] [Thread-200752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:49:59.117 [INFO] [Thread-200752] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:49:59.117 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:49:59.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:49:59.980 [DEBUG] [Thread-200752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:49:59.980 [DEBUG] [Thread-200752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:50:00.028 [DEBUG] [Thread-200752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:50:00.028 [DEBUG] [Thread-200752] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:50:00.036 [DEBUG] [Thread-200752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:50:00.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:50:00.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:50:00.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') -> 00000000
2025-11-25T01:50:00.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:50:00.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:50:00.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:50:00.069 [DEBUG] [Thread-200752] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:50:02.771 [DEBUG] [Thread-200754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:03.599 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:14.303 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:17.921 [DEBUG] [Thread-200755 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:24.963 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:26.583 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:26.585 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:30.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:50:30.095 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:50:30.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-11-25T01:50:31.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 49, 58), 13.39, 39.55, 0.0, 25.11, 12.55, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:50:31.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:49:58
2025-11-25T01:50:31.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:50:31.651 [DEBUG] [Thread-200756] [transport.py] [_log()] starting thread (client mode): 0xd07cd270
2025-11-25T01:50:31.652 [DEBUG] [Thread-200756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:50:31.652 [DEBUG] [Thread-200756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:50:31.652 [INFO] [Thread-200756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] client lang: <none>
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] server lang: <none>
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] kex follows: False
2025-11-25T01:50:31.657 [DEBUG] [Thread-200756] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:50:31.658 [DEBUG] [Thread-200756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:50:31.658 [DEBUG] [Thread-200756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:50:31.658 [DEBUG] [Thread-200756] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:50:31.658 [DEBUG] [Thread-200756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:50:31.658 [DEBUG] [Thread-200756] [transport.py] [_log()] Compression: none
2025-11-25T01:50:31.658 [DEBUG] [Thread-200756] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:50:31.690 [DEBUG] [Thread-200756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:50:31.693 [DEBUG] [Thread-200756] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:50:31.694 [DEBUG] [Thread-200756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:50:31.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:50:31.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:50:31.697 [DEBUG] [Thread-200756] [transport.py] [_log()] userauth is OK
2025-11-25T01:50:31.697 [DEBUG] [Thread-200756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:50:31.697 [DEBUG] [Thread-200756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:50:31.697 [DEBUG] [Thread-200756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:50:31.697 [DEBUG] [Thread-200756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:50:31.727 [INFO] [Thread-200756] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:50:31.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:50:32.390 [DEBUG] [Thread-200756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:50:32.390 [DEBUG] [Thread-200756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:50:32.391 [DEBUG] [Thread-200756] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:50:32.431 [DEBUG] [Thread-200756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:50:32.431 [DEBUG] [Thread-200756] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:50:32.434 [DEBUG] [Thread-200756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:50:32.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:50:32.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:50:32.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:50:32.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:50:32.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:50:32.453 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:50:32.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:50:32.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:50:32.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:50:32.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.993097 -999.00  +12.60  21.97     44   +0.80 1 1 1 1 1     0    0 12.22 9.09 ZNESW 21.1 22.0 134.0 30.5 13.0 -25.3 12.8 -24.7 12.6 -23.7 12.8 -24.6
2025-11-25T01:50:32.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:50:32.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:50:32.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.993097
2025-11-25T01:50:32.460 [DEBUG] [Thread-200756] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:50:32.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:50:32.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:50:32.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:50:32.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:50:32.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:50:32.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:49:58', tmtdew=13.39, humidity=39.55, cloud=0.0, wind=25.11, temperature=12.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:49:58', seeing=0.7, atlas_timestamp='2025-11-24T23:50:03.581', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04574999999999996, 0.0022500000000018616, -0.042500000000000426, -0.04049999999999976, 0.047250000000000014, -0.0005000000000006111, -0.019750000000000156, 0.013499999999998735, -0.038000000000000256, 0.02024999999999899, -0.045499999999998764, 0.09149999999999991, 0.08975000000000044, -0.009499999999999176, -0.042500000000000426, -0.03774999999999906, 0.0035000000000007248, -0.008000000000000895, -0.019750000000001933, 0.032999999999999474, 0.048749999999998295, 0.052250000000000796, -0.005250000000000199, -0.015000000000000568, 0.0024999999999995026, -0.04224999999999923, 0.012500000000001066, 0.07199999999999918, 0.059499999999999886, 0.09550000000000125, -0.010500000000000398, -0.01675000000000182], zp_timestamp='2025-11-24T23:46:00')
2025-11-25T01:50:32.550 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:50:32.562 [DEBUG] [Thread-200759] [transport.py] [_log()] starting thread (client mode): 0xd07cc3d0
2025-11-25T01:50:32.562 [DEBUG] [Thread-200759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:50:32.576 [DEBUG] [Thread-200759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:50:32.576 [INFO] [Thread-200759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] client lang: <none>
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] server lang: <none>
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] kex follows: False
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] Compression: none
2025-11-25T01:50:32.588 [DEBUG] [Thread-200759] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:50:32.645 [DEBUG] [Thread-200759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:50:32.645 [DEBUG] [Thread-200759] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:50:32.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:50:32.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:50:32.646 [DEBUG] [Thread-200759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:50:32.702 [DEBUG] [Thread-200759] [transport.py] [_log()] userauth is OK
2025-11-25T01:50:32.702 [DEBUG] [Thread-200759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:50:32.702 [DEBUG] [Thread-200759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:50:32.702 [DEBUG] [Thread-200759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:50:32.703 [DEBUG] [Thread-200759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:50:32.717 [INFO] [Thread-200759] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:50:32.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:50:32.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:50:32.994 [DEBUG] [Thread-200761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:33.591 [DEBUG] [Thread-200759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:50:33.591 [DEBUG] [Thread-200759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:50:33.639 [DEBUG] [Thread-200759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:50:33.639 [DEBUG] [Thread-200759] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:50:33.647 [DEBUG] [Thread-200759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:50:33.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:50:33.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-11-25T01:50:33.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:50:33.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:50:33.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:50:33.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:50:33.680 [DEBUG] [Thread-200759] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:50:36.126 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:40.968 [DEBUG] [Thread-200762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:46.915 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:48.114 [DEBUG] [Thread-200763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:50:57.696 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:03.181 [DEBUG] [Thread-200764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:03.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:51:03.706 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:51:03.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:51:04.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 50, 31), 13.36, 39.63, 0.0, 22.99, 12.55, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:51:04.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:50:31
2025-11-25T01:51:05.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:51:05.200 [DEBUG] [Thread-200765] [transport.py] [_log()] starting thread (client mode): 0xd0784fd0
2025-11-25T01:51:05.201 [DEBUG] [Thread-200765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:51:05.203 [DEBUG] [Thread-200765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:51:05.203 [INFO] [Thread-200765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] client lang: <none>
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] server lang: <none>
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] kex follows: False
2025-11-25T01:51:05.210 [DEBUG] [Thread-200765] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:51:05.211 [DEBUG] [Thread-200765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:51:05.211 [DEBUG] [Thread-200765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:51:05.211 [DEBUG] [Thread-200765] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:51:05.211 [DEBUG] [Thread-200765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:51:05.211 [DEBUG] [Thread-200765] [transport.py] [_log()] Compression: none
2025-11-25T01:51:05.211 [DEBUG] [Thread-200765] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:51:05.244 [DEBUG] [Thread-200765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:51:05.248 [DEBUG] [Thread-200765] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:51:05.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:51:05.250 [DEBUG] [Thread-200765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:51:05.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:51:05.253 [DEBUG] [Thread-200765] [transport.py] [_log()] userauth is OK
2025-11-25T01:51:05.253 [DEBUG] [Thread-200765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:51:05.253 [DEBUG] [Thread-200765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:51:05.253 [DEBUG] [Thread-200765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:51:05.253 [DEBUG] [Thread-200765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:51:05.271 [INFO] [Thread-200765] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:51:05.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:51:05.924 [DEBUG] [Thread-200765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:51:05.924 [DEBUG] [Thread-200765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:51:05.925 [DEBUG] [Thread-200765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:51:05.965 [DEBUG] [Thread-200765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:51:05.965 [DEBUG] [Thread-200765] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:51:05.967 [DEBUG] [Thread-200765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:51:05.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:51:05.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:51:05.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:51:05.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:51:05.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:51:05.991 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:51:05.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:51:05.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:51:05.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:51:05.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.993445 -999.00  +12.60  23.47     44   +0.80 1 1 1 1 1     0    0 12.26 8.44 ZNESW 23.7 23.5 133.0 27.2 12.9 -25.4 12.8 -24.7 12.5 -23.5 12.9 -24.4
2025-11-25T01:51:05.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:51:05.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:51:05.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.993445
2025-11-25T01:51:06.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:51:06.003 [DEBUG] [Thread-200765] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:51:06.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:51:06.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:51:06.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:51:06.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:51:06.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:50:31', tmtdew=13.36, humidity=39.63, cloud=0.0, wind=22.99, temperature=12.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:50:31', seeing=0.64, atlas_timestamp='2025-11-24T23:50:33.648', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04574999999999996, 0.0022500000000018616, -0.042500000000000426, -0.04049999999999976, 0.047250000000000014, -0.0005000000000006111, -0.019750000000000156, 0.013499999999998735, -0.038000000000000256, 0.02024999999999899, -0.045499999999998764, 0.09149999999999991, 0.08975000000000044, -0.009499999999999176, -0.042500000000000426, -0.03774999999999906, 0.0035000000000007248, -0.008000000000000895, -0.019750000000001933, 0.032999999999999474, 0.048749999999998295, 0.052250000000000796, -0.005250000000000199, -0.015000000000000568, 0.0024999999999995026, -0.04224999999999923, 0.012500000000001066, 0.07199999999999918, 0.059499999999999886, 0.09550000000000125, -0.010500000000000398, -0.01675000000000182], zp_timestamp='2025-11-24T23:46:00')
2025-11-25T01:51:06.088 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:51:06.100 [DEBUG] [Thread-200768] [transport.py] [_log()] starting thread (client mode): 0xd0785d20
2025-11-25T01:51:06.101 [DEBUG] [Thread-200768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:51:06.119 [DEBUG] [Thread-200768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:51:06.119 [INFO] [Thread-200768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] client lang: <none>
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] server lang: <none>
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] kex follows: False
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] Compression: none
2025-11-25T01:51:06.128 [DEBUG] [Thread-200768] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:51:06.186 [DEBUG] [Thread-200768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:51:06.186 [DEBUG] [Thread-200768] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:51:06.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:51:06.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:51:06.187 [DEBUG] [Thread-200768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:51:06.242 [DEBUG] [Thread-200768] [transport.py] [_log()] userauth is OK
2025-11-25T01:51:06.242 [DEBUG] [Thread-200768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:51:06.242 [DEBUG] [Thread-200768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:51:06.242 [DEBUG] [Thread-200768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:51:06.243 [DEBUG] [Thread-200768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:51:06.258 [INFO] [Thread-200768] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:51:06.258 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:51:06.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:51:07.138 [DEBUG] [Thread-200768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:51:07.138 [DEBUG] [Thread-200768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:51:07.187 [DEBUG] [Thread-200768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:51:07.187 [DEBUG] [Thread-200768] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:51:07.197 [DEBUG] [Thread-200768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:51:07.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:51:07.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-11-25T01:51:07.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-11-25T01:51:07.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:51:07.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:51:07.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:51:07.235 [DEBUG] [Thread-200768] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:51:08.405 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:18.274 [DEBUG] [Thread-200770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:18.974 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:26.790 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:26.792 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:29.616 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:33.407 [DEBUG] [Thread-200771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:37.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:51:37.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:51:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:51:38.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 51, 4), 13.32, 39.71, 0.0, 25.25, 12.47, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:51:38.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:51:04
2025-11-25T01:51:38.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:51:38.460 [DEBUG] [Thread-200772] [transport.py] [_log()] starting thread (client mode): 0xd0784700
2025-11-25T01:51:38.461 [DEBUG] [Thread-200772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:51:38.468 [DEBUG] [Thread-200772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:51:38.468 [INFO] [Thread-200772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] client lang: <none>
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] server lang: <none>
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] kex follows: False
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:51:38.474 [DEBUG] [Thread-200772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:51:38.475 [DEBUG] [Thread-200772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:51:38.475 [DEBUG] [Thread-200772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:51:38.475 [DEBUG] [Thread-200772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:51:38.475 [DEBUG] [Thread-200772] [transport.py] [_log()] Compression: none
2025-11-25T01:51:38.475 [DEBUG] [Thread-200772] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:51:38.509 [DEBUG] [Thread-200772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:51:38.513 [DEBUG] [Thread-200772] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:51:38.514 [DEBUG] [Thread-200772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:51:38.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:51:38.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:51:38.517 [DEBUG] [Thread-200772] [transport.py] [_log()] userauth is OK
2025-11-25T01:51:38.518 [DEBUG] [Thread-200772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:51:38.518 [DEBUG] [Thread-200772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:51:38.518 [DEBUG] [Thread-200772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:51:38.518 [DEBUG] [Thread-200772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:51:38.539 [INFO] [Thread-200772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:51:38.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:51:39.184 [DEBUG] [Thread-200772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:51:39.184 [DEBUG] [Thread-200772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:51:39.186 [DEBUG] [Thread-200772] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:51:39.225 [DEBUG] [Thread-200772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:51:39.225 [DEBUG] [Thread-200772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:51:39.228 [DEBUG] [Thread-200772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:51:39.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:51:39.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:51:39.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:51:39.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:51:39.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:51:39.250 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:51:39.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:51:39.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:51:39.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:51:39.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.993792 -999.00  +12.60  19.87     44   +0.80 1 1 1 1 1     0    0 11.91 7.01 ZNESW 20.7 19.9 131.2 25.9 12.9 -25.2 12.8 -24.7 12.5 -23.7 12.8 -24.4
2025-11-25T01:51:39.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:51:39.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:51:39.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.993792
2025-11-25T01:51:39.256 [DEBUG] [Thread-200772] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:51:39.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:51:39.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:51:39.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:51:39.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:51:39.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:51:39.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:51:04', tmtdew=13.32, humidity=39.71, cloud=0.0, wind=25.25, temperature=12.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:51:04', seeing=0.65, atlas_timestamp='2025-11-24T23:51:03.629', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.020749999999999602, 0.016250000000001208, -0.021000000000000796, -0.01249999999999929, 0.035250000000001336, -0.01750000000000007, -0.01774999999999949, 0.006499999999999062, -0.0129999999999999, 0.01624999999999943, -0.008000000000000895, 0.0860000000000003, 0.08424999999999905, -0.0045000000000001705, -0.03200000000000003, -0.016750000000000043, 0.007500000000000284, -0.0065000000000008384, -0.02775000000000105, 0.05699999999999861, 0.09774999999999778, 0.05825000000000102, 0.014749999999999375, 0.022499999999999076, -0.002000000000000668, -0.0182500000000001, 0.012500000000001066, 0.13950000000000173, 0.12400000000000055, 0.07500000000000107, 0.04350000000000165, 0.008250000000000313], zp_timestamp='2025-11-24T23:49:00')
2025-11-25T01:51:39.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:51:39.360 [DEBUG] [Thread-200775] [transport.py] [_log()] starting thread (client mode): 0xd31503a0
2025-11-25T01:51:39.360 [DEBUG] [Thread-200775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:51:39.375 [DEBUG] [Thread-200775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:51:39.375 [INFO] [Thread-200775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:51:39.382 [DEBUG] [Thread-200775] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] client lang: <none>
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] server lang: <none>
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] kex follows: False
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] Compression: none
2025-11-25T01:51:39.383 [DEBUG] [Thread-200775] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:51:39.441 [DEBUG] [Thread-200775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:51:39.441 [DEBUG] [Thread-200775] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:51:39.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:51:39.442 [DEBUG] [Thread-200775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:51:39.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:51:39.498 [DEBUG] [Thread-200775] [transport.py] [_log()] userauth is OK
2025-11-25T01:51:39.499 [DEBUG] [Thread-200775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:51:39.499 [DEBUG] [Thread-200775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:51:39.499 [DEBUG] [Thread-200775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:51:39.499 [DEBUG] [Thread-200775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:51:39.514 [INFO] [Thread-200775] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:51:39.514 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:51:39.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:51:40.200 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:40.356 [DEBUG] [Thread-200775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:51:40.356 [DEBUG] [Thread-200775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:51:40.404 [DEBUG] [Thread-200775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:51:40.404 [DEBUG] [Thread-200775] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:51:40.412 [DEBUG] [Thread-200775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:51:40.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:51:40.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-11-25T01:51:40.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-11-25T01:51:40.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:51:40.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:51:40.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:51:40.448 [DEBUG] [Thread-200775] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:51:41.240 [DEBUG] [Thread-200777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:48.483 [DEBUG] [Thread-200778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:51:50.620 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:01.166 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:03.660 [DEBUG] [Thread-200779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:52:10.444 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:52:10.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-11-25T01:52:11.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 51, 37), 13.35, 39.78, 0.0, 26.47, 12.53, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:52:11.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:51:37
2025-11-25T01:52:11.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:52:11.864 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:11.963 [DEBUG] [Thread-200780] [transport.py] [_log()] starting thread (client mode): 0xc9b77c40
2025-11-25T01:52:11.964 [DEBUG] [Thread-200780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:52:11.975 [DEBUG] [Thread-200780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:52:11.975 [INFO] [Thread-200780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] client lang: <none>
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] server lang: <none>
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] kex follows: False
2025-11-25T01:52:11.980 [DEBUG] [Thread-200780] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:52:11.981 [DEBUG] [Thread-200780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:52:11.981 [DEBUG] [Thread-200780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:52:11.981 [DEBUG] [Thread-200780] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:52:11.981 [DEBUG] [Thread-200780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:52:11.981 [DEBUG] [Thread-200780] [transport.py] [_log()] Compression: none
2025-11-25T01:52:11.981 [DEBUG] [Thread-200780] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:52:12.013 [DEBUG] [Thread-200780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:52:12.017 [DEBUG] [Thread-200780] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:52:12.018 [DEBUG] [Thread-200780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:52:12.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:52:12.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:52:12.022 [DEBUG] [Thread-200780] [transport.py] [_log()] userauth is OK
2025-11-25T01:52:12.022 [DEBUG] [Thread-200780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:52:12.022 [DEBUG] [Thread-200780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:52:12.022 [DEBUG] [Thread-200780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:52:12.022 [DEBUG] [Thread-200780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:52:12.040 [INFO] [Thread-200780] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:52:12.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:52:12.620 [DEBUG] [Thread-200780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:52:12.621 [DEBUG] [Thread-200780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:52:12.622 [DEBUG] [Thread-200780] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:52:12.661 [DEBUG] [Thread-200780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:52:12.661 [DEBUG] [Thread-200780] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:52:12.665 [DEBUG] [Thread-200780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:52:12.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:52:12.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:52:12.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:52:12.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:52:12.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:52:12.687 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:52:12.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:52:12.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:52:12.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:52:12.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.994140 -999.00  +12.60  23.49     44   +0.80 1 1 1 1 1     0    0 11.89 6.40 ZNESW 18.5 23.5 130.6 31.4 12.9 -25.2 12.8 -24.7 12.6 -23.6 12.8 -24.4
2025-11-25T01:52:12.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:52:12.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:52:12.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.994140
2025-11-25T01:52:12.693 [DEBUG] [Thread-200780] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:52:12.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:52:12.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:52:12.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:52:12.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:52:12.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:52:12.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:51:37', tmtdew=13.35, humidity=39.78, cloud=0.0, wind=26.47, temperature=12.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:52:10', seeing=0.61, atlas_timestamp='2025-11-24T23:51:33.696', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.020749999999999602, 0.016250000000001208, -0.021000000000000796, -0.01249999999999929, 0.035250000000001336, -0.01750000000000007, -0.01774999999999949, 0.006499999999999062, -0.0129999999999999, 0.01624999999999943, -0.008000000000000895, 0.0860000000000003, 0.08424999999999905, -0.0045000000000001705, -0.03200000000000003, -0.016750000000000043, 0.007500000000000284, -0.0065000000000008384, -0.02775000000000105, 0.05699999999999861, 0.09774999999999778, 0.05825000000000102, 0.014749999999999375, 0.022499999999999076, -0.002000000000000668, -0.0182500000000001, 0.012500000000001066, 0.13950000000000173, 0.12400000000000055, 0.07500000000000107, 0.04350000000000165, 0.008250000000000313], zp_timestamp='2025-11-24T23:49:00')
2025-11-25T01:52:12.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:52:12.794 [DEBUG] [Thread-200783] [transport.py] [_log()] starting thread (client mode): 0xd0712350
2025-11-25T01:52:12.794 [DEBUG] [Thread-200783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:52:12.809 [DEBUG] [Thread-200783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:52:12.809 [INFO] [Thread-200783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] client lang: <none>
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] server lang: <none>
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] kex follows: False
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] Compression: none
2025-11-25T01:52:12.817 [DEBUG] [Thread-200783] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:52:12.873 [DEBUG] [Thread-200783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:52:12.873 [DEBUG] [Thread-200783] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:52:12.874 [DEBUG] [Thread-200783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:52:12.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:52:12.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:52:12.931 [DEBUG] [Thread-200783] [transport.py] [_log()] userauth is OK
2025-11-25T01:52:12.931 [DEBUG] [Thread-200783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:52:12.931 [DEBUG] [Thread-200783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:52:12.931 [DEBUG] [Thread-200783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:52:12.932 [DEBUG] [Thread-200783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:52:12.950 [INFO] [Thread-200783] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:52:12.950 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:52:12.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:52:13.792 [DEBUG] [Thread-200783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:52:13.792 [DEBUG] [Thread-200783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:52:13.840 [DEBUG] [Thread-200783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:52:13.840 [DEBUG] [Thread-200783] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:52:13.848 [DEBUG] [Thread-200783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:52:13.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:52:13.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-11-25T01:52:13.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-11-25T01:52:13.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:52:13.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:52:13.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:52:13.881 [DEBUG] [Thread-200783] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:52:18.715 [DEBUG] [Thread-200785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:22.568 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:27.002 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:27.005 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:33.186 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:33.846 [DEBUG] [Thread-200786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:41.573 [DEBUG] [Thread-200787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:43.837 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:43.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:52:43.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:52:43.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-11-25T01:52:44.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 52, 9), 13.35, 39.79, 0.0, 26.57, 12.55, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:52:44.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:52:09
2025-11-25T01:52:45.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:52:45.318 [DEBUG] [Thread-200788] [transport.py] [_log()] starting thread (client mode): 0xd317e890
2025-11-25T01:52:45.319 [DEBUG] [Thread-200788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:52:45.329 [DEBUG] [Thread-200788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:52:45.329 [INFO] [Thread-200788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] client lang: <none>
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] server lang: <none>
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] kex follows: False
2025-11-25T01:52:45.334 [DEBUG] [Thread-200788] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:52:45.335 [DEBUG] [Thread-200788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:52:45.335 [DEBUG] [Thread-200788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:52:45.335 [DEBUG] [Thread-200788] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:52:45.335 [DEBUG] [Thread-200788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:52:45.335 [DEBUG] [Thread-200788] [transport.py] [_log()] Compression: none
2025-11-25T01:52:45.335 [DEBUG] [Thread-200788] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:52:45.366 [DEBUG] [Thread-200788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:52:45.370 [DEBUG] [Thread-200788] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:52:45.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:52:45.374 [DEBUG] [Thread-200788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:52:45.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:52:45.377 [DEBUG] [Thread-200788] [transport.py] [_log()] userauth is OK
2025-11-25T01:52:45.377 [DEBUG] [Thread-200788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:52:45.377 [DEBUG] [Thread-200788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:52:45.377 [DEBUG] [Thread-200788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:52:45.377 [DEBUG] [Thread-200788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:52:45.396 [INFO] [Thread-200788] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:52:45.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:52:46.021 [DEBUG] [Thread-200788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:52:46.021 [DEBUG] [Thread-200788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:52:46.022 [DEBUG] [Thread-200788] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:52:46.062 [DEBUG] [Thread-200788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:52:46.062 [DEBUG] [Thread-200788] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:52:46.065 [DEBUG] [Thread-200788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:52:46.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:52:46.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:52:46.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:52:46.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:52:46.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:52:46.080 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:52:46.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:52:46.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:52:46.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:52:46.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.994834 -999.00  +12.60  21.34     44   +0.80 1 1 1 1 1     0    0 11.91 4.78 ZNESW 20.2 21.3 132.0 29.1 12.9 -25.2 12.8 -24.6 12.6 -23.5 12.9 -24.4
2025-11-25T01:52:46.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:52:46.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:52:46.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.994834
2025-11-25T01:52:46.087 [DEBUG] [Thread-200788] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:52:46.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:52:46.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:52:46.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:52:46.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:52:46.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:52:46.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:52:09', tmtdew=13.35, humidity=39.79, cloud=0.0, wind=26.57, temperature=12.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:52:43', seeing=0.76, atlas_timestamp='2025-11-24T23:52:33.658', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.020749999999999602, 0.016250000000001208, -0.021000000000000796, -0.01249999999999929, 0.035250000000001336, -0.01750000000000007, -0.01774999999999949, 0.006499999999999062, -0.0129999999999999, 0.01624999999999943, -0.008000000000000895, 0.0860000000000003, 0.08424999999999905, -0.0045000000000001705, -0.03200000000000003, -0.016750000000000043, 0.007500000000000284, -0.0065000000000008384, -0.02775000000000105, 0.05699999999999861, 0.09774999999999778, 0.05825000000000102, 0.014749999999999375, 0.022499999999999076, -0.002000000000000668, -0.0182500000000001, 0.012500000000001066, 0.13950000000000173, 0.12400000000000055, 0.07500000000000107, 0.04350000000000165, 0.008250000000000313], zp_timestamp='2025-11-24T23:49:00')
2025-11-25T01:52:46.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:52:46.191 [DEBUG] [Thread-200791] [transport.py] [_log()] starting thread (client mode): 0xd31f6440
2025-11-25T01:52:46.191 [DEBUG] [Thread-200791] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:52:46.205 [DEBUG] [Thread-200791] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:52:46.205 [INFO] [Thread-200791] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:52:46.215 [DEBUG] [Thread-200791] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] client lang: <none>
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] server lang: <none>
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] kex follows: False
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] Compression: none
2025-11-25T01:52:46.216 [DEBUG] [Thread-200791] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:52:46.275 [DEBUG] [Thread-200791] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:52:46.275 [DEBUG] [Thread-200791] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:52:46.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:52:46.276 [DEBUG] [Thread-200791] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:52:46.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:52:46.330 [DEBUG] [Thread-200791] [transport.py] [_log()] userauth is OK
2025-11-25T01:52:46.330 [DEBUG] [Thread-200791] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:52:46.330 [DEBUG] [Thread-200791] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:52:46.330 [DEBUG] [Thread-200791] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:52:46.330 [DEBUG] [Thread-200791] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:52:46.345 [INFO] [Thread-200791] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:52:46.345 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:52:46.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:52:47.244 [DEBUG] [Thread-200791] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:52:47.244 [DEBUG] [Thread-200791] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:52:47.292 [DEBUG] [Thread-200791] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:52:47.292 [DEBUG] [Thread-200791] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:52:47.300 [DEBUG] [Thread-200791] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:52:47.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:52:47.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-11-25T01:52:47.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-11-25T01:52:47.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:52:47.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:52:47.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:52:47.336 [DEBUG] [Thread-200791] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:52:48.907 [DEBUG] [Thread-200793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:52:54.805 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:04.061 [DEBUG] [Thread-200794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:05.393 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:16.144 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:17.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:53:17.360 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:53:17.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-11-25T01:53:18.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 52, 42), 13.36, 39.74, 0.0, 26.78, 12.53, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:53:18.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:52:42
2025-11-25T01:53:18.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:53:18.755 [DEBUG] [Thread-200795] [transport.py] [_log()] starting thread (client mode): 0xd31f5000
2025-11-25T01:53:18.755 [DEBUG] [Thread-200795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:53:18.756 [DEBUG] [Thread-200795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:53:18.756 [INFO] [Thread-200795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] client lang: <none>
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] server lang: <none>
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] kex follows: False
2025-11-25T01:53:18.760 [DEBUG] [Thread-200795] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:53:18.761 [DEBUG] [Thread-200795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:53:18.761 [DEBUG] [Thread-200795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:53:18.761 [DEBUG] [Thread-200795] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:53:18.761 [DEBUG] [Thread-200795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:53:18.761 [DEBUG] [Thread-200795] [transport.py] [_log()] Compression: none
2025-11-25T01:53:18.761 [DEBUG] [Thread-200795] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:53:18.783 [DEBUG] [Thread-200795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:53:18.786 [DEBUG] [Thread-200795] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:53:18.786 [DEBUG] [Thread-200795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:53:18.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:53:18.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:53:18.789 [DEBUG] [Thread-200795] [transport.py] [_log()] userauth is OK
2025-11-25T01:53:18.789 [DEBUG] [Thread-200795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:53:18.790 [DEBUG] [Thread-200795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:53:18.790 [DEBUG] [Thread-200795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:53:18.790 [DEBUG] [Thread-200795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:53:18.809 [INFO] [Thread-200795] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:53:18.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:53:19.113 [DEBUG] [Thread-200797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:19.373 [DEBUG] [Thread-200795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:53:19.373 [DEBUG] [Thread-200795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:53:19.374 [DEBUG] [Thread-200795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:53:19.414 [DEBUG] [Thread-200795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:53:19.414 [DEBUG] [Thread-200795] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:53:19.416 [DEBUG] [Thread-200795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:53:19.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:53:19.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:53:19.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:53:19.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:53:19.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:53:19.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:53:19.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:53:19.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:53:19.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:53:19.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.995181 -999.00  +12.60  17.93     44   +0.80 1 1 1 1 1     0    0 12.16 3.65 ZNESW 17.7 17.9 124.4 24.7 12.9 -25.3 12.8 -24.6 12.5 -23.5 12.9 -24.5
2025-11-25T01:53:19.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:53:19.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:53:19.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.995181
2025-11-25T01:53:19.439 [DEBUG] [Thread-200795] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:53:19.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:53:19.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:53:19.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:53:19.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:53:19.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:53:19.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:52:42', tmtdew=13.36, humidity=39.74, cloud=0.0, wind=26.78, temperature=12.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:53:16', seeing=0.74, atlas_timestamp='2025-11-24T23:53:03.638', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.020749999999999602, 0.016250000000001208, -0.021000000000000796, -0.01249999999999929, 0.035250000000001336, -0.01750000000000007, -0.01774999999999949, 0.006499999999999062, -0.0129999999999999, 0.01624999999999943, -0.008000000000000895, 0.0860000000000003, 0.08424999999999905, -0.0045000000000001705, -0.03200000000000003, -0.016750000000000043, 0.007500000000000284, -0.0065000000000008384, -0.02775000000000105, 0.05699999999999861, 0.09774999999999778, 0.05825000000000102, 0.014749999999999375, 0.022499999999999076, -0.002000000000000668, -0.0182500000000001, 0.012500000000001066, 0.13950000000000173, 0.12400000000000055, 0.07500000000000107, 0.04350000000000165, 0.008250000000000313], zp_timestamp='2025-11-24T23:49:00')
2025-11-25T01:53: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-11-25T01:53:19.541 [DEBUG] [Thread-200799] [transport.py] [_log()] starting thread (client mode): 0xd073b370
2025-11-25T01:53:19.542 [DEBUG] [Thread-200799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:53:19.556 [DEBUG] [Thread-200799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:53:19.556 [INFO] [Thread-200799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:53:19.564 [DEBUG] [Thread-200799] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:53:19.564 [DEBUG] [Thread-200799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:53:19.564 [DEBUG] [Thread-200799] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:53:19.565 [DEBUG] [Thread-200799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:53:19.565 [DEBUG] [Thread-200799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:53:19.565 [DEBUG] [Thread-200799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:53:19.565 [DEBUG] [Thread-200799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:53:19.565 [DEBUG] [Thread-200799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:53:19.565 [DEBUG] [Thread-200799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:53:19.565 [DEBUG] [Thread-200799] [transport.py] [_log()] client lang: <none>
2025-11-25T01:53:19.565 [DEBUG] [Thread-200799] [transport.py] [_log()] server lang: <none>
2025-11-25T01:53:19.565 [DEBUG] [Thread-200799] [transport.py] [_log()] kex follows: False
2025-11-25T01:53:19.565 [DEBUG] [Thread-200799] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:53:19.566 [DEBUG] [Thread-200799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:53:19.566 [DEBUG] [Thread-200799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:53:19.566 [DEBUG] [Thread-200799] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:53:19.566 [DEBUG] [Thread-200799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:53:19.566 [DEBUG] [Thread-200799] [transport.py] [_log()] Compression: none
2025-11-25T01:53:19.566 [DEBUG] [Thread-200799] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:53:19.623 [DEBUG] [Thread-200799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:53:19.624 [DEBUG] [Thread-200799] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:53:19.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:53:19.625 [DEBUG] [Thread-200799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:53:19.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:53:19.683 [DEBUG] [Thread-200799] [transport.py] [_log()] userauth is OK
2025-11-25T01:53:19.683 [DEBUG] [Thread-200799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:53:19.683 [DEBUG] [Thread-200799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:53:19.683 [DEBUG] [Thread-200799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:53:19.684 [DEBUG] [Thread-200799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:53:19.702 [INFO] [Thread-200799] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:53:19.702 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:53:19.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:53:20.531 [DEBUG] [Thread-200799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:53:20.532 [DEBUG] [Thread-200799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:53:20.579 [DEBUG] [Thread-200799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:53:20.579 [DEBUG] [Thread-200799] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:53:20.588 [DEBUG] [Thread-200799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:53:20.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:53:20.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-11-25T01:53:20.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-11-25T01:53:20.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:53:20.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:53:20.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:53:20.625 [DEBUG] [Thread-200799] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:53:26.549 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:27.209 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:27.210 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:34.168 [DEBUG] [Thread-200801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:37.106 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:41.857 [DEBUG] [Thread-200802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:47.867 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:49.294 [DEBUG] [Thread-200803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:53:50.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:53:50.623 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:53:50.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-11-25T01:53:51.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 53, 16), 13.37, 39.73, 0.0, 26.29, 12.55, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:53:51.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:53:16
2025-11-25T01:53:51.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:53:51.956 [DEBUG] [Thread-200804] [transport.py] [_log()] starting thread (client mode): 0xd3153c10
2025-11-25T01:53:51.957 [DEBUG] [Thread-200804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:53:51.967 [DEBUG] [Thread-200804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:53:51.967 [INFO] [Thread-200804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] client lang: <none>
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] server lang: <none>
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] kex follows: False
2025-11-25T01:53:51.972 [DEBUG] [Thread-200804] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:53:51.973 [DEBUG] [Thread-200804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:53:51.973 [DEBUG] [Thread-200804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:53:51.973 [DEBUG] [Thread-200804] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:53:51.973 [DEBUG] [Thread-200804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:53:51.974 [DEBUG] [Thread-200804] [transport.py] [_log()] Compression: none
2025-11-25T01:53:51.974 [DEBUG] [Thread-200804] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:53:52.006 [DEBUG] [Thread-200804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:53:52.011 [DEBUG] [Thread-200804] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:53:52.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:53:52.012 [DEBUG] [Thread-200804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:53:52.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:53:52.015 [DEBUG] [Thread-200804] [transport.py] [_log()] userauth is OK
2025-11-25T01:53:52.015 [DEBUG] [Thread-200804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:53:52.015 [DEBUG] [Thread-200804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:53:52.015 [DEBUG] [Thread-200804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:53:52.015 [DEBUG] [Thread-200804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:53:52.044 [INFO] [Thread-200804] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:53:52.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:53:52.707 [DEBUG] [Thread-200804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:53:52.707 [DEBUG] [Thread-200804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:53:52.708 [DEBUG] [Thread-200804] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:53:52.748 [DEBUG] [Thread-200804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:53:52.748 [DEBUG] [Thread-200804] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:53:52.752 [DEBUG] [Thread-200804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:53:52.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:53:52.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:53:52.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:53:52.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:53:52.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:53:52.779 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:53:52.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:53:52.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:53:52.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:53:52.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.995181 -999.00  +12.60  17.93     44   +0.80 1 1 1 1 1     0    0 12.16 3.65 ZNESW 17.7 17.9 124.4 24.7 12.9 -25.3 12.8 -24.6 12.5 -23.5 12.9 -24.5
2025-11-25T01:53:52.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:53:52.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:53:52.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.995181
2025-11-25T01:53:52.787 [DEBUG] [Thread-200804] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:53:52.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:53:52.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:53:52.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:53:52.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:53:52.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:53:52.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:53:16', tmtdew=13.37, humidity=39.73, cloud=0.0, wind=26.29, temperature=12.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:53:49', seeing=0.7, atlas_timestamp='2025-11-24T23:53:03.638', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.020749999999999602, 0.016250000000001208, -0.021000000000000796, -0.01249999999999929, 0.035250000000001336, -0.01750000000000007, -0.01774999999999949, 0.006499999999999062, -0.0129999999999999, 0.01624999999999943, -0.008000000000000895, 0.0860000000000003, 0.08424999999999905, -0.0045000000000001705, -0.03200000000000003, -0.016750000000000043, 0.007500000000000284, -0.0065000000000008384, -0.02775000000000105, 0.05699999999999861, 0.09774999999999778, 0.05825000000000102, 0.014749999999999375, 0.022499999999999076, -0.002000000000000668, -0.0182500000000001, 0.012500000000001066, 0.13950000000000173, 0.12400000000000055, 0.07500000000000107, 0.04350000000000165, 0.008250000000000313], zp_timestamp='2025-11-24T23:49:00')
2025-11-25T01:53:52.889 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:53:52.901 [DEBUG] [Thread-200807] [transport.py] [_log()] starting thread (client mode): 0xc9b75f00
2025-11-25T01:53:52.901 [DEBUG] [Thread-200807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:53:52.916 [DEBUG] [Thread-200807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:53:52.917 [INFO] [Thread-200807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:53:52.924 [DEBUG] [Thread-200807] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] client lang: <none>
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] server lang: <none>
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] kex follows: False
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:53:52.925 [DEBUG] [Thread-200807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:53:52.926 [DEBUG] [Thread-200807] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:53:52.926 [DEBUG] [Thread-200807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:53:52.926 [DEBUG] [Thread-200807] [transport.py] [_log()] Compression: none
2025-11-25T01:53:52.926 [DEBUG] [Thread-200807] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:53:52.983 [DEBUG] [Thread-200807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:53:52.983 [DEBUG] [Thread-200807] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:53:52.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:53:52.985 [DEBUG] [Thread-200807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:53:52.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:53:53.038 [DEBUG] [Thread-200807] [transport.py] [_log()] userauth is OK
2025-11-25T01:53:53.039 [DEBUG] [Thread-200807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:53:53.039 [DEBUG] [Thread-200807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:53:53.039 [DEBUG] [Thread-200807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:53:53.039 [DEBUG] [Thread-200807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:53:53.058 [INFO] [Thread-200807] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:53:53.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:53:53.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:53:53.902 [DEBUG] [Thread-200807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:53:53.902 [DEBUG] [Thread-200807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:53:53.949 [DEBUG] [Thread-200807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:53:53.949 [DEBUG] [Thread-200807] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:53:53.958 [DEBUG] [Thread-200807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:53:53.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:53:53.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-11-25T01:53:53.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-11-25T01:53:53.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:53:53.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:53:53.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:53:53.993 [DEBUG] [Thread-200807] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:53:58.386 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:04.377 [DEBUG] [Thread-200809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:08.874 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:19.448 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:19.529 [DEBUG] [Thread-200810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:24.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:54:24.016 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:54:24.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T01:54:24.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 53, 49), 13.35, 39.66, 0.0, 27.31, 12.57, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:54:24.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:53:49
2025-11-25T01:54:24.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:54:25.178 [DEBUG] [Thread-200811] [transport.py] [_log()] starting thread (client mode): 0xd0784700
2025-11-25T01:54:25.179 [DEBUG] [Thread-200811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:54:25.191 [DEBUG] [Thread-200811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:54:25.191 [INFO] [Thread-200811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] client lang: <none>
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] server lang: <none>
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] kex follows: False
2025-11-25T01:54:25.196 [DEBUG] [Thread-200811] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:54:25.197 [DEBUG] [Thread-200811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:54:25.197 [DEBUG] [Thread-200811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:54:25.197 [DEBUG] [Thread-200811] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:54:25.197 [DEBUG] [Thread-200811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:54:25.197 [DEBUG] [Thread-200811] [transport.py] [_log()] Compression: none
2025-11-25T01:54:25.197 [DEBUG] [Thread-200811] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:54:25.228 [DEBUG] [Thread-200811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:54:25.232 [DEBUG] [Thread-200811] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:54:25.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:54:25.234 [DEBUG] [Thread-200811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:54:25.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:54:25.236 [DEBUG] [Thread-200811] [transport.py] [_log()] userauth is OK
2025-11-25T01:54:25.237 [DEBUG] [Thread-200811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:54:25.237 [DEBUG] [Thread-200811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:54:25.237 [DEBUG] [Thread-200811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:54:25.237 [DEBUG] [Thread-200811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:54:25.266 [INFO] [Thread-200811] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:54:25.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:54:25.900 [DEBUG] [Thread-200811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:54:25.900 [DEBUG] [Thread-200811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:54:25.901 [DEBUG] [Thread-200811] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:54:25.941 [DEBUG] [Thread-200811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:54:25.941 [DEBUG] [Thread-200811] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:54:25.944 [DEBUG] [Thread-200811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:54:25.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:54:25.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:54:25.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:54:25.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:54:25.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:54:25.965 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:54:25.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:54:25.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:54:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:54:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.995528 -999.00  +12.60  22.77     44   +0.80 1 1 1 1 1     0    0 11.93 2.35 ZNESW 21.9 22.8 128.8 26.0 12.9 -25.2 12.8 -24.5 12.5 -23.6 12.9 -24.4
2025-11-25T01:54:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:54:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:54:25.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.995528
2025-11-25T01:54:25.972 [DEBUG] [Thread-200811] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:54:25.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:54:25.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:54:25.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:54:25.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:54:25.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:54:25.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:53:49', tmtdew=13.35, humidity=39.66, cloud=0.0, wind=27.31, temperature=12.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:54:22', seeing=0.65, atlas_timestamp='2025-11-24T23:53:33.619', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.020749999999999602, 0.016250000000001208, -0.021000000000000796, -0.01249999999999929, 0.035250000000001336, -0.01750000000000007, -0.01774999999999949, 0.006499999999999062, -0.0129999999999999, 0.01624999999999943, -0.008000000000000895, 0.0860000000000003, 0.08424999999999905, -0.0045000000000001705, -0.03200000000000003, -0.016750000000000043, 0.007500000000000284, -0.0065000000000008384, -0.02775000000000105, 0.05699999999999861, 0.09774999999999778, 0.05825000000000102, 0.014749999999999375, 0.022499999999999076, -0.002000000000000668, -0.0182500000000001, 0.012500000000001066, 0.13950000000000173, 0.12400000000000055, 0.07500000000000107, 0.04350000000000165, 0.008250000000000313], zp_timestamp='2025-11-24T23:53:00')
2025-11-25T01:54:26.054 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:54:26.070 [DEBUG] [Thread-200814] [transport.py] [_log()] starting thread (client mode): 0xd3152a10
2025-11-25T01:54:26.070 [DEBUG] [Thread-200814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:54:26.090 [DEBUG] [Thread-200814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:54:26.090 [INFO] [Thread-200814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] client lang: <none>
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] server lang: <none>
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] kex follows: False
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] Compression: none
2025-11-25T01:54:26.098 [DEBUG] [Thread-200814] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:54:26.158 [DEBUG] [Thread-200814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:54:26.158 [DEBUG] [Thread-200814] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:54:26.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:54:26.158 [DEBUG] [Thread-200814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:54:26.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:54:26.221 [DEBUG] [Thread-200814] [transport.py] [_log()] userauth is OK
2025-11-25T01:54:26.221 [DEBUG] [Thread-200814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:54:26.221 [DEBUG] [Thread-200814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:54:26.221 [DEBUG] [Thread-200814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:54:26.221 [DEBUG] [Thread-200814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:54:26.240 [INFO] [Thread-200814] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:54:26.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:54:26.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:54:27.080 [DEBUG] [Thread-200814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:54:27.080 [DEBUG] [Thread-200814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:54:27.127 [DEBUG] [Thread-200814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:54:27.127 [DEBUG] [Thread-200814] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:54:27.136 [DEBUG] [Thread-200814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:54:27.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:54:27.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-11-25T01:54:27.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-11-25T01:54:27.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:54:27.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:54:27.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:54:27.175 [DEBUG] [Thread-200814] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:54:27.417 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:27.420 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:29.938 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:34.600 [DEBUG] [Thread-200816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:40.634 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:42.184 [DEBUG] [Thread-200817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:49.729 [DEBUG] [Thread-200818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:51.224 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:54:57.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:54:57.199 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:54:57.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-11-25T01:54:58.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 54, 22), 13.36, 39.63, 0.0, 26.04, 12.57, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:54:58.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:54:22
2025-11-25T01:54:58.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:54:58.493 [DEBUG] [Thread-200819] [transport.py] [_log()] starting thread (client mode): 0xd317c670
2025-11-25T01:54:58.493 [DEBUG] [Thread-200819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:54:58.506 [DEBUG] [Thread-200819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:54:58.506 [INFO] [Thread-200819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] client lang: <none>
2025-11-25T01:54:58.511 [DEBUG] [Thread-200819] [transport.py] [_log()] server lang: <none>
2025-11-25T01:54:58.512 [DEBUG] [Thread-200819] [transport.py] [_log()] kex follows: False
2025-11-25T01:54:58.512 [DEBUG] [Thread-200819] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:54:58.512 [DEBUG] [Thread-200819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:54:58.512 [DEBUG] [Thread-200819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:54:58.512 [DEBUG] [Thread-200819] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:54:58.512 [DEBUG] [Thread-200819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:54:58.513 [DEBUG] [Thread-200819] [transport.py] [_log()] Compression: none
2025-11-25T01:54:58.513 [DEBUG] [Thread-200819] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:54:58.539 [DEBUG] [Thread-200819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:54:58.544 [DEBUG] [Thread-200819] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:54:58.545 [DEBUG] [Thread-200819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:54:58.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:54:58.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:54:58.548 [DEBUG] [Thread-200819] [transport.py] [_log()] userauth is OK
2025-11-25T01:54:58.548 [DEBUG] [Thread-200819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:54:58.548 [DEBUG] [Thread-200819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:54:58.548 [DEBUG] [Thread-200819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:54:58.548 [DEBUG] [Thread-200819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:54:58.560 [INFO] [Thread-200819] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:54:58.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:54:59.210 [DEBUG] [Thread-200819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:54:59.210 [DEBUG] [Thread-200819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:54:59.211 [DEBUG] [Thread-200819] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:54:59.251 [DEBUG] [Thread-200819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:54:59.251 [DEBUG] [Thread-200819] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:54:59.254 [DEBUG] [Thread-200819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:54:59.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:54:59.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:54:59.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:54:59.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:54:59.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:54:59.277 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:54:59.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:54:59.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:54:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:54:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.995876 -999.00  +12.50  20.64     44   +0.80 1 1 1 1 1     0    0 11.84 0.55 ZNESW 21.0 20.6 120.6 27.9 13.0 -25.1 12.8 -24.5 12.5 -23.5 12.8 -24.4
2025-11-25T01:54:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:54:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:54:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.995876
2025-11-25T01:54:59.285 [DEBUG] [Thread-200819] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:54:59.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:54:59.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:54:59.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:54:59.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:54:59.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:54:59.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:54:22', tmtdew=13.36, humidity=39.63, cloud=0.0, wind=26.04, temperature=12.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:54:55', seeing=0.72, atlas_timestamp='2025-11-24T23:54:03.686', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.020749999999999602, 0.016250000000001208, -0.021000000000000796, -0.01249999999999929, 0.035250000000001336, -0.01750000000000007, -0.01774999999999949, 0.006499999999999062, -0.0129999999999999, 0.01624999999999943, -0.008000000000000895, 0.0860000000000003, 0.08424999999999905, -0.0045000000000001705, -0.03200000000000003, -0.016750000000000043, 0.007500000000000284, -0.0065000000000008384, -0.02775000000000105, 0.05699999999999861, 0.09774999999999778, 0.05825000000000102, 0.014749999999999375, 0.022499999999999076, -0.002000000000000668, -0.0182500000000001, 0.012500000000001066, 0.13950000000000173, 0.12400000000000055, 0.07500000000000107, 0.04350000000000165, 0.008250000000000313], zp_timestamp='2025-11-24T23:53:00')
2025-11-25T01:54:59.376 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:54:59.391 [DEBUG] [Thread-200822] [transport.py] [_log()] starting thread (client mode): 0xd0713640
2025-11-25T01:54:59.391 [DEBUG] [Thread-200822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:54:59.406 [DEBUG] [Thread-200822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:54:59.406 [INFO] [Thread-200822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:54:59.413 [DEBUG] [Thread-200822] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:54:59.413 [DEBUG] [Thread-200822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:54:59.413 [DEBUG] [Thread-200822] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:54:59.413 [DEBUG] [Thread-200822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:54:59.413 [DEBUG] [Thread-200822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:54:59.413 [DEBUG] [Thread-200822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] client lang: <none>
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] server lang: <none>
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] kex follows: False
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] Compression: none
2025-11-25T01:54:59.414 [DEBUG] [Thread-200822] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:54:59.469 [DEBUG] [Thread-200822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:54:59.469 [DEBUG] [Thread-200822] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:54:59.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:54:59.469 [DEBUG] [Thread-200822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:54:59.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:54:59.526 [DEBUG] [Thread-200822] [transport.py] [_log()] userauth is OK
2025-11-25T01:54:59.526 [DEBUG] [Thread-200822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:54:59.526 [DEBUG] [Thread-200822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:54:59.526 [DEBUG] [Thread-200822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:54:59.526 [DEBUG] [Thread-200822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:54:59.540 [INFO] [Thread-200822] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:54:59.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:54:59.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:55:00.390 [DEBUG] [Thread-200822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:55:00.390 [DEBUG] [Thread-200822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:55:00.438 [DEBUG] [Thread-200822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:55:00.438 [DEBUG] [Thread-200822] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:55:00.446 [DEBUG] [Thread-200822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:55:00.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:55:00.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-11-25T01:55:00.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-11-25T01:55:00.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:55:00.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:55:00.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:55:00.479 [DEBUG] [Thread-200822] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:55:01.731 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:04.779 [DEBUG] [Thread-200824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:12.460 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:19.917 [DEBUG] [Thread-200825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:23.100 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:27.634 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:27.636 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:30.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:55:30.503 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:55:30.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-11-25T01:55:31.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 54, 55), 13.34, 39.68, 0.0, 22.58, 12.5, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:55:31.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:54:55
2025-11-25T01:55:31.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:55:31.860 [DEBUG] [Thread-200826] [transport.py] [_log()] starting thread (client mode): 0xd0786890
2025-11-25T01:55:31.861 [DEBUG] [Thread-200826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:55:31.871 [DEBUG] [Thread-200826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:55:31.871 [INFO] [Thread-200826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:55:31.876 [DEBUG] [Thread-200826] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:55:31.876 [DEBUG] [Thread-200826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:55:31.876 [DEBUG] [Thread-200826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:55:31.876 [DEBUG] [Thread-200826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:55:31.876 [DEBUG] [Thread-200826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:55:31.876 [DEBUG] [Thread-200826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:55:31.876 [DEBUG] [Thread-200826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:55:31.876 [DEBUG] [Thread-200826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] client lang: <none>
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] server lang: <none>
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] kex follows: False
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] Compression: none
2025-11-25T01:55:31.877 [DEBUG] [Thread-200826] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:55:31.908 [DEBUG] [Thread-200826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:55:31.912 [DEBUG] [Thread-200826] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:55:31.913 [DEBUG] [Thread-200826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:55:31.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:55:31.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:55:31.916 [DEBUG] [Thread-200826] [transport.py] [_log()] userauth is OK
2025-11-25T01:55:31.916 [DEBUG] [Thread-200826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:55:31.916 [DEBUG] [Thread-200826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:55:31.916 [DEBUG] [Thread-200826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:55:31.916 [DEBUG] [Thread-200826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:55:31.945 [INFO] [Thread-200826] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:55:31.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:55:32.595 [DEBUG] [Thread-200826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:55:32.595 [DEBUG] [Thread-200826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:55:32.597 [DEBUG] [Thread-200826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:55:32.637 [DEBUG] [Thread-200826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:55:32.637 [DEBUG] [Thread-200826] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:55:32.641 [DEBUG] [Thread-200826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:55:32.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:55:32.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:55:32.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:55:32.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:55:32.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:55:32.670 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:55:32.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:55:32.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:55:32.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:55:32.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.996223 -999.00  +12.50  19.72     44   +0.80 1 1 1 1 1     0    0 11.79 -1.86 ZNESW 20.9 19.7 128.6 25.5 12.9 -25.1 12.8 -24.5 12.5 -23.5 12.8 -24.3
2025-11-25T01:55:32.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:55:32.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:55:32.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.996223
2025-11-25T01:55:32.679 [DEBUG] [Thread-200826] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:55:32.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:55:32.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:55:32.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:55:32.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:55:32.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:55:32.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:54:55', tmtdew=13.34, humidity=39.68, cloud=0.0, wind=22.58, temperature=12.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:55:29', seeing=0.68, atlas_timestamp='2025-11-24T23:54:33.667', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.020749999999999602, 0.016250000000001208, -0.021000000000000796, -0.01249999999999929, 0.035250000000001336, -0.01750000000000007, -0.01774999999999949, 0.006499999999999062, -0.0129999999999999, 0.01624999999999943, -0.008000000000000895, 0.0860000000000003, 0.08424999999999905, -0.0045000000000001705, -0.03200000000000003, -0.016750000000000043, 0.007500000000000284, -0.0065000000000008384, -0.02775000000000105, 0.05699999999999861, 0.09774999999999778, 0.05825000000000102, 0.014749999999999375, 0.022499999999999076, -0.002000000000000668, -0.0182500000000001, 0.012500000000001066, 0.13950000000000173, 0.12400000000000055, 0.07500000000000107, 0.04350000000000165, 0.008250000000000313], zp_timestamp='2025-11-24T23:53:00')
2025-11-25T01:55:32.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:55:32.798 [DEBUG] [Thread-200829] [transport.py] [_log()] starting thread (client mode): 0xc9b80700
2025-11-25T01:55:32.798 [DEBUG] [Thread-200829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:55:32.811 [DEBUG] [Thread-200829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:55:32.812 [INFO] [Thread-200829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:55:32.819 [DEBUG] [Thread-200829] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] client lang: <none>
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] server lang: <none>
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] kex follows: False
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] Compression: none
2025-11-25T01:55:32.820 [DEBUG] [Thread-200829] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:55:32.877 [DEBUG] [Thread-200829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:55:32.878 [DEBUG] [Thread-200829] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:55:32.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:55:32.879 [DEBUG] [Thread-200829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:55:32.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:55:32.934 [DEBUG] [Thread-200829] [transport.py] [_log()] userauth is OK
2025-11-25T01:55:32.935 [DEBUG] [Thread-200829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:55:32.935 [DEBUG] [Thread-200829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:55:32.935 [DEBUG] [Thread-200829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:55:32.935 [DEBUG] [Thread-200829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:55:32.959 [INFO] [Thread-200829] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:55:32.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:55:32.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:55:33.774 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:33.803 [DEBUG] [Thread-200829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:55:33.803 [DEBUG] [Thread-200829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:55:33.851 [DEBUG] [Thread-200829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:55:33.852 [DEBUG] [Thread-200829] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:55:33.860 [DEBUG] [Thread-200829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:55:33.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:55:33.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:55:33.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-11-25T01:55:33.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:55:33.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:55:33.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:55:33.898 [DEBUG] [Thread-200829] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:55:34.965 [DEBUG] [Thread-200831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:42.457 [DEBUG] [Thread-200832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:44.284 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:50.078 [DEBUG] [Thread-200833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:55:54.951 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:03.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:56:03.923 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:56:03.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-11-25T01:56:04.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 55, 28), 13.3, 39.76, 0.0, 23.41, 12.43, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:56:04.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:55:28
2025-11-25T01:56:05.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:56:05.184 [DEBUG] [Thread-200834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:05.211 [DEBUG] [Thread-200835] [transport.py] [_log()] starting thread (client mode): 0xd314b730
2025-11-25T01:56:05.211 [DEBUG] [Thread-200835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:56:05.224 [DEBUG] [Thread-200835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:56:05.224 [INFO] [Thread-200835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:56:05.228 [DEBUG] [Thread-200835] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:56:05.228 [DEBUG] [Thread-200835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:56:05.228 [DEBUG] [Thread-200835] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:56:05.228 [DEBUG] [Thread-200835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:56:05.228 [DEBUG] [Thread-200835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:56:05.228 [DEBUG] [Thread-200835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:56:05.228 [DEBUG] [Thread-200835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:56:05.228 [DEBUG] [Thread-200835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:56:05.229 [DEBUG] [Thread-200835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:56:05.229 [DEBUG] [Thread-200835] [transport.py] [_log()] client lang: <none>
2025-11-25T01:56:05.229 [DEBUG] [Thread-200835] [transport.py] [_log()] server lang: <none>
2025-11-25T01:56:05.229 [DEBUG] [Thread-200835] [transport.py] [_log()] kex follows: False
2025-11-25T01:56:05.229 [DEBUG] [Thread-200835] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:56:05.229 [DEBUG] [Thread-200835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:56:05.229 [DEBUG] [Thread-200835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:56:05.229 [DEBUG] [Thread-200835] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:56:05.229 [DEBUG] [Thread-200835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:56:05.230 [DEBUG] [Thread-200835] [transport.py] [_log()] Compression: none
2025-11-25T01:56:05.230 [DEBUG] [Thread-200835] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:56:05.258 [DEBUG] [Thread-200835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:56:05.261 [DEBUG] [Thread-200835] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:56:05.262 [DEBUG] [Thread-200835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:56:05.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:56:05.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:56:05.264 [DEBUG] [Thread-200835] [transport.py] [_log()] userauth is OK
2025-11-25T01:56:05.264 [DEBUG] [Thread-200835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:56:05.265 [DEBUG] [Thread-200835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:56:05.265 [DEBUG] [Thread-200835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:56:05.265 [DEBUG] [Thread-200835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:56:05.293 [INFO] [Thread-200835] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:56:05.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:56:05.529 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:05.945 [DEBUG] [Thread-200835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:56:05.945 [DEBUG] [Thread-200835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:56:05.947 [DEBUG] [Thread-200835] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:56:05.986 [DEBUG] [Thread-200835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:56:05.987 [DEBUG] [Thread-200835] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:56:05.990 [DEBUG] [Thread-200835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:56:06.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:56:06.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:56:06.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:56:06.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:56:06.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:56:06.010 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:56:06.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:56:06.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:56:06.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:56:06.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.996917 -999.00  +12.50  21.95     44   +0.80 1 1 1 1 1     0    0 11.52 -4.81 ZNESW 19.9 21.9 126.0 32.5 12.9 -24.9 12.8 -24.5 12.5 -23.4 12.8 -24.2
2025-11-25T01:56:06.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:56:06.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:56:06.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.996917
2025-11-25T01:56:06.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:56:06.028 [DEBUG] [Thread-200835] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:56:06.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:56:06.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:56:06.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:56:06.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:56:06.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:55:28', tmtdew=13.3, humidity=39.76, cloud=0.0, wind=23.41, temperature=12.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:56:02', seeing=0.68, atlas_timestamp='2025-11-24T23:55:33.629', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.020749999999999602, 0.016250000000001208, -0.021000000000000796, -0.01249999999999929, 0.035250000000001336, -0.01750000000000007, -0.01774999999999949, 0.006499999999999062, -0.0129999999999999, 0.01624999999999943, -0.008000000000000895, 0.0860000000000003, 0.08424999999999905, -0.0045000000000001705, -0.03200000000000003, -0.016750000000000043, 0.007500000000000284, -0.0065000000000008384, -0.02775000000000105, 0.05699999999999861, 0.09774999999999778, 0.05825000000000102, 0.014749999999999375, 0.022499999999999076, -0.002000000000000668, -0.0182500000000001, 0.012500000000001066, 0.13950000000000173, 0.12400000000000055, 0.07500000000000107, 0.04350000000000165, 0.008250000000000313], zp_timestamp='2025-11-24T23:53:00')
2025-11-25T01:56: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-11-25T01:56:06.126 [DEBUG] [Thread-200838] [transport.py] [_log()] starting thread (client mode): 0xd3149750
2025-11-25T01:56:06.126 [DEBUG] [Thread-200838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:56:06.140 [DEBUG] [Thread-200838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:56:06.141 [INFO] [Thread-200838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:56:06.148 [DEBUG] [Thread-200838] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:56:06.148 [DEBUG] [Thread-200838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:56:06.148 [DEBUG] [Thread-200838] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:56:06.148 [DEBUG] [Thread-200838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:56:06.148 [DEBUG] [Thread-200838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:56:06.148 [DEBUG] [Thread-200838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:56:06.148 [DEBUG] [Thread-200838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] client lang: <none>
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] server lang: <none>
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] kex follows: False
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] Compression: none
2025-11-25T01:56:06.149 [DEBUG] [Thread-200838] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:56:06.208 [DEBUG] [Thread-200838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:56:06.208 [DEBUG] [Thread-200838] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:56:06.209 [DEBUG] [Thread-200838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:56:06.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:56:06.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:56:06.267 [DEBUG] [Thread-200838] [transport.py] [_log()] userauth is OK
2025-11-25T01:56:06.267 [DEBUG] [Thread-200838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:56:06.267 [DEBUG] [Thread-200838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:56:06.267 [DEBUG] [Thread-200838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:56:06.268 [DEBUG] [Thread-200838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:56:06.288 [INFO] [Thread-200838] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:56:06.288 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:56:06.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:56:07.119 [DEBUG] [Thread-200838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:56:07.119 [DEBUG] [Thread-200838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:56:07.167 [DEBUG] [Thread-200838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:56:07.167 [DEBUG] [Thread-200838] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:56:07.176 [DEBUG] [Thread-200838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:56:07.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:56:07.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-11-25T01:56:07.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-11-25T01:56:07.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:56:07.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:56:07.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:56:07.212 [DEBUG] [Thread-200838] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:56:16.218 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:20.220 [DEBUG] [Thread-200840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:26.738 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:27.838 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:27.840 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:35.378 [DEBUG] [Thread-200841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:37.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:56:37.237 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:56:37.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-11-25T01:56:37.312 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:38.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 56, 2), 13.31, 39.76, 0.0, 21.88, 12.48, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:56:38.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:56:02
2025-11-25T01:56:38.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:56:38.556 [DEBUG] [Thread-200842] [transport.py] [_log()] starting thread (client mode): 0xc9b83ac0
2025-11-25T01:56:38.556 [DEBUG] [Thread-200842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:56:38.569 [DEBUG] [Thread-200842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:56:38.569 [INFO] [Thread-200842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:56:38.574 [DEBUG] [Thread-200842] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:56:38.574 [DEBUG] [Thread-200842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:56:38.574 [DEBUG] [Thread-200842] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:56:38.574 [DEBUG] [Thread-200842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] client lang: <none>
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] server lang: <none>
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] kex follows: False
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:56:38.575 [DEBUG] [Thread-200842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:56:38.576 [DEBUG] [Thread-200842] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:56:38.576 [DEBUG] [Thread-200842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:56:38.576 [DEBUG] [Thread-200842] [transport.py] [_log()] Compression: none
2025-11-25T01:56:38.576 [DEBUG] [Thread-200842] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:56:38.610 [DEBUG] [Thread-200842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:56:38.615 [DEBUG] [Thread-200842] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:56:38.617 [DEBUG] [Thread-200842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:56:38.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:56:38.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:56:38.623 [DEBUG] [Thread-200842] [transport.py] [_log()] userauth is OK
2025-11-25T01:56:38.623 [DEBUG] [Thread-200842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:56:38.624 [DEBUG] [Thread-200842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:56:38.624 [DEBUG] [Thread-200842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:56:38.624 [DEBUG] [Thread-200842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:56:38.650 [INFO] [Thread-200842] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:56:38.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:56:39.324 [DEBUG] [Thread-200842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:56:39.325 [DEBUG] [Thread-200842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:56:39.336 [DEBUG] [Thread-200842] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:56:39.366 [DEBUG] [Thread-200842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:56:39.366 [DEBUG] [Thread-200842] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:56:39.370 [DEBUG] [Thread-200842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:56:39.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:56:39.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:56:39.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:56:39.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:56:39.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:56:39.399 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:56:39.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:56:39.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:56:39.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:56:39.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.997265 -999.00  +12.40  21.01     45   +0.90 1 1 1 1 1     0    0 11.77 -5.91 ZNESW 17.8 21.0 125.4 24.8 12.9 -24.9 12.8 -24.4 12.5 -23.3 12.8 -24.3
2025-11-25T01:56:39.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:56:39.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:56:39.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.997265
2025-11-25T01:56:39.407 [DEBUG] [Thread-200842] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:56:39.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:56:39.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:56:39.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:56:39.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:56:39.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:56:39.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:56:02', tmtdew=13.31, humidity=39.76, cloud=0.0, wind=21.88, temperature=12.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:56:35', seeing=0.69, atlas_timestamp='2025-11-24T23:56:03.696', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.020749999999999602, 0.016250000000001208, -0.021000000000000796, -0.01249999999999929, 0.035250000000001336, -0.01750000000000007, -0.01774999999999949, 0.006499999999999062, -0.0129999999999999, 0.01624999999999943, -0.008000000000000895, 0.0860000000000003, 0.08424999999999905, -0.0045000000000001705, -0.03200000000000003, -0.016750000000000043, 0.007500000000000284, -0.0065000000000008384, -0.02775000000000105, 0.05699999999999861, 0.09774999999999778, 0.05825000000000102, 0.014749999999999375, 0.022499999999999076, -0.002000000000000668, -0.0182500000000001, 0.012500000000001066, 0.13950000000000173, 0.12400000000000055, 0.07500000000000107, 0.04350000000000165, 0.008250000000000313], zp_timestamp='2025-11-24T23:53:00')
2025-11-25T01:56:39.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:56:39.519 [DEBUG] [Thread-200845] [transport.py] [_log()] starting thread (client mode): 0xd073bc10
2025-11-25T01:56:39.520 [DEBUG] [Thread-200845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:56:39.533 [DEBUG] [Thread-200845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:56:39.533 [INFO] [Thread-200845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] client lang: <none>
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] server lang: <none>
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] kex follows: False
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:56:39.541 [DEBUG] [Thread-200845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:56:39.542 [DEBUG] [Thread-200845] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:56:39.542 [DEBUG] [Thread-200845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:56:39.542 [DEBUG] [Thread-200845] [transport.py] [_log()] Compression: none
2025-11-25T01:56:39.542 [DEBUG] [Thread-200845] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:56:39.601 [DEBUG] [Thread-200845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:56:39.601 [DEBUG] [Thread-200845] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:56:39.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:56:39.601 [DEBUG] [Thread-200845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:56:39.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:56:39.658 [DEBUG] [Thread-200845] [transport.py] [_log()] userauth is OK
2025-11-25T01:56:39.658 [DEBUG] [Thread-200845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:56:39.658 [DEBUG] [Thread-200845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:56:39.658 [DEBUG] [Thread-200845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:56:39.658 [DEBUG] [Thread-200845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:56:39.672 [INFO] [Thread-200845] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:56:39.672 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:56:39.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:56:40.501 [DEBUG] [Thread-200845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:56:40.501 [DEBUG] [Thread-200845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:56:40.548 [DEBUG] [Thread-200845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:56:40.548 [DEBUG] [Thread-200845] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:56:40.556 [DEBUG] [Thread-200845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:56:40.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:56:40.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T01:56: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') -> 00000000
2025-11-25T01:56:40.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:56:40.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:56:40.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:56:40.590 [DEBUG] [Thread-200845] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:56:42.768 [DEBUG] [Thread-200847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:47.941 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:50.461 [DEBUG] [Thread-200848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:56:58.347 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:05.551 [DEBUG] [Thread-200849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:08.818 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:10.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:57:10.585 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:57:10.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-11-25T01:57:11.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 56, 35), 13.3, 39.76, 0.0, 23.24, 12.5, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:57:11.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:56:35
2025-11-25T01:57:11.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:57:11.889 [DEBUG] [Thread-200850] [transport.py] [_log()] starting thread (client mode): 0xd0738be0
2025-11-25T01:57:11.890 [DEBUG] [Thread-200850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:57:11.898 [DEBUG] [Thread-200850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:57:11.898 [INFO] [Thread-200850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:57:11.903 [DEBUG] [Thread-200850] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:57:11.903 [DEBUG] [Thread-200850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:57:11.903 [DEBUG] [Thread-200850] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:57:11.903 [DEBUG] [Thread-200850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:57:11.903 [DEBUG] [Thread-200850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:57:11.903 [DEBUG] [Thread-200850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:57:11.903 [DEBUG] [Thread-200850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:57:11.903 [DEBUG] [Thread-200850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:57:11.903 [DEBUG] [Thread-200850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:57:11.904 [DEBUG] [Thread-200850] [transport.py] [_log()] client lang: <none>
2025-11-25T01:57:11.904 [DEBUG] [Thread-200850] [transport.py] [_log()] server lang: <none>
2025-11-25T01:57:11.904 [DEBUG] [Thread-200850] [transport.py] [_log()] kex follows: False
2025-11-25T01:57:11.904 [DEBUG] [Thread-200850] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:57:11.904 [DEBUG] [Thread-200850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:57:11.904 [DEBUG] [Thread-200850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:57:11.904 [DEBUG] [Thread-200850] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:57:11.904 [DEBUG] [Thread-200850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:57:11.904 [DEBUG] [Thread-200850] [transport.py] [_log()] Compression: none
2025-11-25T01:57:11.904 [DEBUG] [Thread-200850] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:57:11.936 [DEBUG] [Thread-200850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:57:11.941 [DEBUG] [Thread-200850] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:57:11.942 [DEBUG] [Thread-200850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:57:11.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:57:11.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:57:11.945 [DEBUG] [Thread-200850] [transport.py] [_log()] userauth is OK
2025-11-25T01:57:11.945 [DEBUG] [Thread-200850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:57:11.946 [DEBUG] [Thread-200850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:57:11.946 [DEBUG] [Thread-200850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:57:11.946 [DEBUG] [Thread-200850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:57:11.964 [INFO] [Thread-200850] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:57:11.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:57:12.605 [DEBUG] [Thread-200850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:57:12.605 [DEBUG] [Thread-200850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:57:12.607 [DEBUG] [Thread-200850] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:57:12.645 [DEBUG] [Thread-200850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:57:12.645 [DEBUG] [Thread-200850] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:57:12.649 [DEBUG] [Thread-200850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:57:12.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:57:12.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:57:12.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:57:12.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:57:12.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:57:12.674 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:57:12.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:57:12.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:57:12.676 [DEBUG] [Thread-200850] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:57:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:57:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.997612 -999.00  +12.40  20.53     45   +0.80 1 1 1 1 1     0    0 11.59 -8.69 ZNESW 22.3 20.5 128.3 25.2 12.9 -24.9 12.7 -24.3 12.5 -23.4 12.8 -24.4
2025-11-25T01:57:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:57:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:57:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.997612
2025-11-25T01:57:12.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:57:12.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:57:12.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:57:12.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:57:12.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:57:12.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:56:35', tmtdew=13.3, humidity=39.76, cloud=0.0, wind=23.24, temperature=12.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:57:08', seeing=0.69, atlas_timestamp='2025-11-24T23:56:33.677', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:56:00')
2025-11-25T01:57:12.783 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:57:12.795 [DEBUG] [Thread-200853] [transport.py] [_log()] starting thread (client mode): 0xd073aef0
2025-11-25T01:57:12.795 [DEBUG] [Thread-200853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:57:12.812 [DEBUG] [Thread-200853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:57:12.812 [INFO] [Thread-200853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:57:12.819 [DEBUG] [Thread-200853] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] client lang: <none>
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] server lang: <none>
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] kex follows: False
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:57:12.820 [DEBUG] [Thread-200853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:57:12.821 [DEBUG] [Thread-200853] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:57:12.821 [DEBUG] [Thread-200853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:57:12.821 [DEBUG] [Thread-200853] [transport.py] [_log()] Compression: none
2025-11-25T01:57:12.821 [DEBUG] [Thread-200853] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:57:12.879 [DEBUG] [Thread-200853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:57:12.879 [DEBUG] [Thread-200853] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:57:12.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:57:12.880 [DEBUG] [Thread-200853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:57:12.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:57:12.934 [DEBUG] [Thread-200853] [transport.py] [_log()] userauth is OK
2025-11-25T01:57:12.935 [DEBUG] [Thread-200853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:57:12.935 [DEBUG] [Thread-200853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:57:12.935 [DEBUG] [Thread-200853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:57:12.935 [DEBUG] [Thread-200853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:57:12.954 [INFO] [Thread-200853] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:57:12.954 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:57:12.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:57:13.789 [DEBUG] [Thread-200853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:57:13.789 [DEBUG] [Thread-200853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:57:13.837 [DEBUG] [Thread-200853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:57:13.837 [DEBUG] [Thread-200853] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:57:13.845 [DEBUG] [Thread-200853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:57:13.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:57:13.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-11-25T01:57:13.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-11-25T01:57:13.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:57:13.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:57:13.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:57:13.879 [DEBUG] [Thread-200853] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:57:19.485 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:20.610 [DEBUG] [Thread-200855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:28.049 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:28.050 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:30.085 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:35.758 [DEBUG] [Thread-200856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:40.535 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:43.079 [DEBUG] [Thread-200857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:43.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:57:43.903 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:57:43.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-11-25T01:57:44.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 57, 8), 13.26, 39.89, 0.0, 22.97, 12.48, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:57:44.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:57:08
2025-11-25T01:57:45.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:57:45.197 [DEBUG] [Thread-200858] [transport.py] [_log()] starting thread (client mode): 0xc9b800a0
2025-11-25T01:57:45.197 [DEBUG] [Thread-200858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:57:45.210 [DEBUG] [Thread-200858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:57:45.210 [INFO] [Thread-200858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] client lang: <none>
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] server lang: <none>
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] kex follows: False
2025-11-25T01:57:45.215 [DEBUG] [Thread-200858] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:57:45.216 [DEBUG] [Thread-200858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:57:45.216 [DEBUG] [Thread-200858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:57:45.216 [DEBUG] [Thread-200858] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:57:45.216 [DEBUG] [Thread-200858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:57:45.216 [DEBUG] [Thread-200858] [transport.py] [_log()] Compression: none
2025-11-25T01:57:45.216 [DEBUG] [Thread-200858] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:57:45.243 [DEBUG] [Thread-200858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:57:45.247 [DEBUG] [Thread-200858] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:57:45.248 [DEBUG] [Thread-200858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:57:45.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:57:45.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:57:45.251 [DEBUG] [Thread-200858] [transport.py] [_log()] userauth is OK
2025-11-25T01:57:45.251 [DEBUG] [Thread-200858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:57:45.251 [DEBUG] [Thread-200858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:57:45.251 [DEBUG] [Thread-200858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:57:45.251 [DEBUG] [Thread-200858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:57:45.268 [INFO] [Thread-200858] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:57:45.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:57:45.926 [DEBUG] [Thread-200858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:57:45.926 [DEBUG] [Thread-200858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:57:45.927 [DEBUG] [Thread-200858] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:57:45.967 [DEBUG] [Thread-200858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:57:45.967 [DEBUG] [Thread-200858] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:57:45.969 [DEBUG] [Thread-200858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:57:45.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:57:45.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:57:45.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:57:45.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:57:45.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:57:45.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:57:45.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:57:45.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:57:45.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:57:45.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.997959 -999.00  +12.50  21.18     45   +0.80 1 1 1 1 1     0    0 11.76 -10.17 ZNESW 17.6 21.2 127.8 26.4 12.9 -24.8 12.7 -24.3 12.5 -23.2 12.8 -24.2
2025-11-25T01:57:45.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:57:45.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:57:45.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.997959
2025-11-25T01:57:45.989 [DEBUG] [Thread-200858] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:57:45.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:57:45.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:57:45.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:57:45.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:57:45.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:57:45.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:57:08', tmtdew=13.26, humidity=39.89, cloud=0.0, wind=22.97, temperature=12.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:57:41', seeing=0.77, atlas_timestamp='2025-11-24T23:57:03.658', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:56:00')
2025-11-25T01:57:46.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:57:46.082 [DEBUG] [Thread-200861] [transport.py] [_log()] starting thread (client mode): 0xd3149030
2025-11-25T01:57:46.082 [DEBUG] [Thread-200861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:57:46.097 [DEBUG] [Thread-200861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:57:46.097 [INFO] [Thread-200861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] client lang: <none>
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] server lang: <none>
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] kex follows: False
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:57:46.104 [DEBUG] [Thread-200861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:57:46.105 [DEBUG] [Thread-200861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:57:46.105 [DEBUG] [Thread-200861] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:57:46.105 [DEBUG] [Thread-200861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:57:46.105 [DEBUG] [Thread-200861] [transport.py] [_log()] Compression: none
2025-11-25T01:57:46.105 [DEBUG] [Thread-200861] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:57:46.161 [DEBUG] [Thread-200861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:57:46.161 [DEBUG] [Thread-200861] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:57:46.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:57:46.161 [DEBUG] [Thread-200861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:57:46.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:57:46.218 [DEBUG] [Thread-200861] [transport.py] [_log()] userauth is OK
2025-11-25T01:57:46.218 [DEBUG] [Thread-200861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:57:46.218 [DEBUG] [Thread-200861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:57:46.218 [DEBUG] [Thread-200861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:57:46.218 [DEBUG] [Thread-200861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:57:46.232 [INFO] [Thread-200861] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:57:46.232 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:57:46.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:57:47.073 [DEBUG] [Thread-200861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:57:47.073 [DEBUG] [Thread-200861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:57:47.121 [DEBUG] [Thread-200861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:57:47.121 [DEBUG] [Thread-200861] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:57:47.129 [DEBUG] [Thread-200861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:57:47.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:57:47.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-11-25T01:57:47.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T01:57:47.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:57:47.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:57:47.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:57:47.160 [DEBUG] [Thread-200861] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:57:50.810 [DEBUG] [Thread-200863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:57:51.204 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:01.612 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:05.945 [DEBUG] [Thread-200864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:12.230 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:17.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:58:17.190 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:58:17.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-11-25T01:58:18.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 57, 41), 13.23, 39.94, 0.0, 25.02, 12.43, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:58:18.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:57:41
2025-11-25T01:58:18.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:58:18.409 [DEBUG] [Thread-200865] [transport.py] [_log()] starting thread (client mode): 0xd0738a90
2025-11-25T01:58:18.410 [DEBUG] [Thread-200865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:58:18.418 [DEBUG] [Thread-200865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:58:18.418 [INFO] [Thread-200865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:58:18.426 [DEBUG] [Thread-200865] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:58:18.426 [DEBUG] [Thread-200865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:58:18.426 [DEBUG] [Thread-200865] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:58:18.426 [DEBUG] [Thread-200865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:58:18.426 [DEBUG] [Thread-200865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:58:18.426 [DEBUG] [Thread-200865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:58:18.426 [DEBUG] [Thread-200865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:58:18.427 [DEBUG] [Thread-200865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:58:18.427 [DEBUG] [Thread-200865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:58:18.427 [DEBUG] [Thread-200865] [transport.py] [_log()] client lang: <none>
2025-11-25T01:58:18.427 [DEBUG] [Thread-200865] [transport.py] [_log()] server lang: <none>
2025-11-25T01:58:18.427 [DEBUG] [Thread-200865] [transport.py] [_log()] kex follows: False
2025-11-25T01:58:18.427 [DEBUG] [Thread-200865] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:58:18.428 [DEBUG] [Thread-200865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:58:18.428 [DEBUG] [Thread-200865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:58:18.428 [DEBUG] [Thread-200865] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:58:18.428 [DEBUG] [Thread-200865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:58:18.429 [DEBUG] [Thread-200865] [transport.py] [_log()] Compression: none
2025-11-25T01:58:18.429 [DEBUG] [Thread-200865] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:58:18.467 [DEBUG] [Thread-200865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:58:18.472 [DEBUG] [Thread-200865] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:58:18.474 [DEBUG] [Thread-200865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:58:18.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:58:18.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:58:18.478 [DEBUG] [Thread-200865] [transport.py] [_log()] userauth is OK
2025-11-25T01:58:18.479 [DEBUG] [Thread-200865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:58:18.479 [DEBUG] [Thread-200865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:58:18.479 [DEBUG] [Thread-200865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:58:18.479 [DEBUG] [Thread-200865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:58:18.498 [INFO] [Thread-200865] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:58:18.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:58:19.105 [DEBUG] [Thread-200865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:58:19.106 [DEBUG] [Thread-200865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:58:19.108 [DEBUG] [Thread-200865] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:58:19.147 [DEBUG] [Thread-200865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:58:19.147 [DEBUG] [Thread-200865] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:58:19.151 [DEBUG] [Thread-200865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:58:19.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:58:19.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:58:19.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:58:19.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:58:19.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:58:19.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:58:19.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:58:19.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:58:19.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:58:19.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.998307 -999.00  +12.50  18.63     45   +0.80 1 1 1 1 1     0    0 11.41 -10.50 ZNESW 19.2 18.6 131.0 25.1 12.9 -25.0 12.8 -24.4 12.5 -23.2 12.8 -24.2
2025-11-25T01:58:19.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:58:19.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:58:19.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.998307
2025-11-25T01:58:19.188 [DEBUG] [Thread-200865] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:58:19.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:58:19.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:58:19.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:58:19.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:58:19.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:58:19.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:57:41', tmtdew=13.23, humidity=39.94, cloud=0.0, wind=25.02, temperature=12.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:58:15', seeing=0.75, atlas_timestamp='2025-11-24T23:57:33.725', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:56:00')
2025-11-25T01:58:19.309 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:58:19.323 [DEBUG] [Thread-200868] [transport.py] [_log()] starting thread (client mode): 0xd073a920
2025-11-25T01:58:19.323 [DEBUG] [Thread-200868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:58:19.337 [DEBUG] [Thread-200868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:58:19.337 [INFO] [Thread-200868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] client lang: <none>
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] server lang: <none>
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] kex follows: False
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:58:19.345 [DEBUG] [Thread-200868] [transport.py] [_log()] Compression: none
2025-11-25T01:58:19.346 [DEBUG] [Thread-200868] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:58:19.409 [DEBUG] [Thread-200868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:58:19.409 [DEBUG] [Thread-200868] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:58:19.409 [DEBUG] [Thread-200868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:58:19.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:58:19.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:58:19.466 [DEBUG] [Thread-200868] [transport.py] [_log()] userauth is OK
2025-11-25T01:58:19.467 [DEBUG] [Thread-200868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:58:19.467 [DEBUG] [Thread-200868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:58:19.467 [DEBUG] [Thread-200868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:58:19.467 [DEBUG] [Thread-200868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:58:19.487 [INFO] [Thread-200868] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:58:19.487 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:58:19.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:58:20.309 [DEBUG] [Thread-200868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:58:20.309 [DEBUG] [Thread-200868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:58:20.364 [DEBUG] [Thread-200868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:58:20.365 [DEBUG] [Thread-200868] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:58:20.374 [DEBUG] [Thread-200868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:58:20.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:58:20.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-11-25T01:58:20.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-11-25T01:58:20.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:58:20.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:58:20.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:58:20.418 [DEBUG] [Thread-200868] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:58:21.008 [DEBUG] [Thread-200870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:22.876 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:28.252 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:28.253 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:33.948 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:36.175 [DEBUG] [Thread-200871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:43.375 [DEBUG] [Thread-200872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:44.525 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:58:50.448 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:58:50.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-11-25T01:58:51.235 [DEBUG] [Thread-200873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:58:51.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 58, 14), 13.24, 39.93, 0.0, 24.77, 12.42, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:58:51.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:58:14
2025-11-25T01:58:51.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:58:51.666 [DEBUG] [Thread-200874] [transport.py] [_log()] starting thread (client mode): 0xd0738ac0
2025-11-25T01:58:51.667 [DEBUG] [Thread-200874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:58:51.670 [DEBUG] [Thread-200874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:58:51.671 [INFO] [Thread-200874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] client lang: <none>
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] server lang: <none>
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] kex follows: False
2025-11-25T01:58:51.675 [DEBUG] [Thread-200874] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:58:51.676 [DEBUG] [Thread-200874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:58:51.676 [DEBUG] [Thread-200874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:58:51.676 [DEBUG] [Thread-200874] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:58:51.676 [DEBUG] [Thread-200874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:58:51.676 [DEBUG] [Thread-200874] [transport.py] [_log()] Compression: none
2025-11-25T01:58:51.677 [DEBUG] [Thread-200874] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:58:51.710 [DEBUG] [Thread-200874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:58:51.714 [DEBUG] [Thread-200874] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:58:51.717 [DEBUG] [Thread-200874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:58:51.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:58:51.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:58:51.721 [DEBUG] [Thread-200874] [transport.py] [_log()] userauth is OK
2025-11-25T01:58:51.721 [DEBUG] [Thread-200874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:58:51.722 [DEBUG] [Thread-200874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:58:51.722 [DEBUG] [Thread-200874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:58:51.722 [DEBUG] [Thread-200874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:58:51.749 [INFO] [Thread-200874] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:58:51.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:58:52.382 [DEBUG] [Thread-200874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:58:52.382 [DEBUG] [Thread-200874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:58:52.385 [DEBUG] [Thread-200874] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:58:52.423 [DEBUG] [Thread-200874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:58:52.423 [DEBUG] [Thread-200874] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:58:52.427 [DEBUG] [Thread-200874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:58:52.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:58:52.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:58:52.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:58:52.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:58:52.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:58:52.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:58:52.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:58:52.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:58:52.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:58:52.460 [DEBUG] [Thread-200874] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:58:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.998653 -999.00  +12.40  23.20     45   +0.80 1 1 1 1 1     0    0 11.88 -11.89 ZNESW 23.2 23.2 126.6 26.7 12.9 -25.0 12.7 -24.5 12.5 -23.4 12.8 -24.3
2025-11-25T01:58:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:58:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:58:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.998653
2025-11-25T01:58:52.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:58:52.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:58:52.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:58:52.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:58:52.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:58:52.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:58:14', tmtdew=13.24, humidity=39.93, cloud=0.0, wind=24.77, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:58:48', seeing=0.66, atlas_timestamp='2025-11-24T23:58:03.619', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:56:00')
2025-11-25T01:58:52.557 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:58:52.568 [DEBUG] [Thread-200877] [transport.py] [_log()] starting thread (client mode): 0xd073b070
2025-11-25T01:58:52.568 [DEBUG] [Thread-200877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:58:52.583 [DEBUG] [Thread-200877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:58:52.583 [INFO] [Thread-200877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:58:52.590 [DEBUG] [Thread-200877] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] client lang: <none>
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] server lang: <none>
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] kex follows: False
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] Compression: none
2025-11-25T01:58:52.591 [DEBUG] [Thread-200877] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:58:52.649 [DEBUG] [Thread-200877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:58:52.650 [DEBUG] [Thread-200877] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:58:52.650 [DEBUG] [Thread-200877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:58:52.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:58:52.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:58:52.706 [DEBUG] [Thread-200877] [transport.py] [_log()] userauth is OK
2025-11-25T01:58:52.706 [DEBUG] [Thread-200877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:58:52.706 [DEBUG] [Thread-200877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:58:52.706 [DEBUG] [Thread-200877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:58:52.706 [DEBUG] [Thread-200877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:58:52.720 [INFO] [Thread-200877] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:58: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-11-25T01:58:52.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:58:53.557 [DEBUG] [Thread-200877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:58:53.557 [DEBUG] [Thread-200877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:58:53.605 [DEBUG] [Thread-200877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:58:53.605 [DEBUG] [Thread-200877] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:58:53.613 [DEBUG] [Thread-200877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:58:53.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:58:53.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-11-25T01:58:53.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-11-25T01:58:53.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:58:53.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:58:53.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:58:53.652 [DEBUG] [Thread-200877] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:58:55.206 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:05.808 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:06.310 [DEBUG] [Thread-200879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:16.508 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:21.424 [DEBUG] [Thread-200880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:23.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:59:23.656 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:59:23.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-11-25T01:59:24.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 58, 48), 13.14, 39.94, 0.0, 24.21, 12.4, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:59:24.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:58:48
2025-11-25T01:59:24.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:59:24.890 [DEBUG] [Thread-200881] [transport.py] [_log()] starting thread (client mode): 0xc9b82d40
2025-11-25T01:59:24.892 [DEBUG] [Thread-200881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:59:24.902 [DEBUG] [Thread-200881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:59:24.902 [INFO] [Thread-200881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:59:24.909 [DEBUG] [Thread-200881] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] client lang: <none>
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] server lang: <none>
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] kex follows: False
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:59:24.910 [DEBUG] [Thread-200881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:59:24.911 [DEBUG] [Thread-200881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:59:24.911 [DEBUG] [Thread-200881] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:59:24.911 [DEBUG] [Thread-200881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:59:24.912 [DEBUG] [Thread-200881] [transport.py] [_log()] Compression: none
2025-11-25T01:59:24.912 [DEBUG] [Thread-200881] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:59:24.947 [DEBUG] [Thread-200881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:59:24.954 [DEBUG] [Thread-200881] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:59:24.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:59:24.959 [DEBUG] [Thread-200881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:59:24.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:59:24.963 [DEBUG] [Thread-200881] [transport.py] [_log()] userauth is OK
2025-11-25T01:59:24.963 [DEBUG] [Thread-200881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:59:24.964 [DEBUG] [Thread-200881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:59:24.964 [DEBUG] [Thread-200881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:59:24.964 [DEBUG] [Thread-200881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:59:24.992 [INFO] [Thread-200881] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:59:24.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:59:25.600 [DEBUG] [Thread-200881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:59:25.601 [DEBUG] [Thread-200881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:59:25.602 [DEBUG] [Thread-200881] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:59:25.642 [DEBUG] [Thread-200881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:59:25.642 [DEBUG] [Thread-200881] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:59:25.646 [DEBUG] [Thread-200881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:59:25.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:59:25.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:59:25.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:59:25.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:59:25.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:59:25.674 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:59:25.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:59:25.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:59:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:59:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.999348 -999.00  +12.50  18.48     44   +0.80 1 1 1 1 1     0    0 11.52 -14.10 ZNESW 18.5 18.5 133.8 24.9 12.9 -25.0 12.7 -24.5 12.5 -23.3 12.8 -24.3
2025-11-25T01:59:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:59:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:59:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.999348
2025-11-25T01:59:25.682 [DEBUG] [Thread-200881] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:59:25.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:59:25.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:59:25.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:59:25.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:59:25.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:59:25.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:58:48', tmtdew=13.14, humidity=39.94, cloud=0.0, wind=24.21, temperature=12.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:59:21', seeing=0.65, atlas_timestamp='2025-11-24T23:59:03.667', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:56:00')
2025-11-25T01:59:25.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:59:25.796 [DEBUG] [Thread-200884] [transport.py] [_log()] starting thread (client mode): 0xd3149ba0
2025-11-25T01:59:25.796 [DEBUG] [Thread-200884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:59:25.811 [DEBUG] [Thread-200884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:59:25.811 [INFO] [Thread-200884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] client lang: <none>
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] server lang: <none>
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] kex follows: False
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:59:25.819 [DEBUG] [Thread-200884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:59:25.820 [DEBUG] [Thread-200884] [transport.py] [_log()] Compression: none
2025-11-25T01:59:25.820 [DEBUG] [Thread-200884] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:59:25.878 [DEBUG] [Thread-200884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:59:25.879 [DEBUG] [Thread-200884] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:59:25.880 [DEBUG] [Thread-200884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:59:25.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:59:25.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:59:25.934 [DEBUG] [Thread-200884] [transport.py] [_log()] userauth is OK
2025-11-25T01:59:25.934 [DEBUG] [Thread-200884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:59:25.934 [DEBUG] [Thread-200884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:59:25.934 [DEBUG] [Thread-200884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:59:25.934 [DEBUG] [Thread-200884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:59:25.949 [INFO] [Thread-200884] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:59:25.949 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:59:25.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:59:26.832 [DEBUG] [Thread-200884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:59:26.832 [DEBUG] [Thread-200884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:59:26.881 [DEBUG] [Thread-200884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:59:26.881 [DEBUG] [Thread-200884] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:59:26.890 [DEBUG] [Thread-200884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:59:26.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:59:26.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')
2025-11-25T01:59:26.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-11-25T01:59:26.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:59:26.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:59:26.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:59:26.936 [DEBUG] [Thread-200884] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:59:27.177 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:28.457 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:28.458 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:36.517 [DEBUG] [Thread-200886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:37.893 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:43.653 [DEBUG] [Thread-200887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:48.454 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:51.673 [DEBUG] [Thread-200888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:56.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T01:59:56.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T01:59:56.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-11-25T01:59:57.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 59, 21), 13.15, 39.91, 0.0, 24.38, 12.4, 0, 0, 0, 2, 0, 0),)
2025-11-25T01:59:57.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:59:21
2025-11-25T01:59:58.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T01:59:58.208 [DEBUG] [Thread-200889] [transport.py] [_log()] starting thread (client mode): 0xd31499c0
2025-11-25T01:59:58.209 [DEBUG] [Thread-200889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:59:58.220 [DEBUG] [Thread-200889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T01:59:58.220 [INFO] [Thread-200889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T01:59:58.225 [DEBUG] [Thread-200889] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] client lang: <none>
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] server lang: <none>
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] kex follows: False
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:59:58.226 [DEBUG] [Thread-200889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:59:58.227 [DEBUG] [Thread-200889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:59:58.227 [DEBUG] [Thread-200889] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:59:58.227 [DEBUG] [Thread-200889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:59:58.227 [DEBUG] [Thread-200889] [transport.py] [_log()] Compression: none
2025-11-25T01:59:58.227 [DEBUG] [Thread-200889] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:59:58.260 [DEBUG] [Thread-200889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:59:58.265 [DEBUG] [Thread-200889] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:59:58.267 [DEBUG] [Thread-200889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T01:59:58.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T01:59:58.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:59:58.273 [DEBUG] [Thread-200889] [transport.py] [_log()] userauth is OK
2025-11-25T01:59:58.274 [DEBUG] [Thread-200889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:59:58.274 [DEBUG] [Thread-200889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:59:58.275 [DEBUG] [Thread-200889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T01:59:58.275 [DEBUG] [Thread-200889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:59:58.318 [INFO] [Thread-200889] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:59:58.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T01:59:58.965 [DEBUG] [Thread-200889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T01:59:58.965 [DEBUG] [Thread-200889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T01:59:58.966 [DEBUG] [Thread-200889] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T01:59:59.007 [DEBUG] [Thread-200889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T01:59:59.007 [DEBUG] [Thread-200889] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T01:59:59.010 [DEBUG] [Thread-200889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T01:59:59.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T01:59:59.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T01:59:59.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T01:59:59.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T01:59:59.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T01:59:59.041 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T01:59:59.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T01:59:59.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T01:59:59.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T01:59:59.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61003.999695 -999.00  +12.40  20.80     44   +0.80 1 1 1 1 1     0    0 11.28 -15.30 ZNESW 20.8 20.8 131.6 27.5 12.9 -25.2 12.7 -24.4 12.4 -23.3 12.8 -24.3
2025-11-25T01:59:59.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T01:59:59.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T01:59:59.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61003.999695
2025-11-25T01:59:59.049 [DEBUG] [Thread-200889] [transport.py] [_log()] EOF in transport thread
2025-11-25T01:59:59.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T01:59:59.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T01:59:59.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T01:59:59.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T01:59:59.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T01:59:59.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:59:21', tmtdew=13.15, humidity=39.91, cloud=0.0, wind=24.38, temperature=12.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T01:59:55', seeing=0.73, atlas_timestamp='2025-11-24T23:59:33.648', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:56:00')
2025-11-25T01:59:59.158 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T01:59:59.169 [DEBUG] [Thread-200892] [transport.py] [_log()] starting thread (client mode): 0xc9b83550
2025-11-25T01:59:59.170 [DEBUG] [Thread-200892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T01:59:59.185 [DEBUG] [Thread-200892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T01:59:59.185 [INFO] [Thread-200892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T01:59:59.196 [DEBUG] [Thread-200892] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] client lang: <none>
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] server lang: <none>
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] kex follows: False
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T01:59:59.197 [DEBUG] [Thread-200892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T01:59:59.198 [DEBUG] [Thread-200892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T01:59:59.198 [DEBUG] [Thread-200892] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T01:59:59.198 [DEBUG] [Thread-200892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T01:59:59.198 [DEBUG] [Thread-200892] [transport.py] [_log()] Compression: none
2025-11-25T01:59:59.198 [DEBUG] [Thread-200892] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T01:59:59.198 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T01:59:59.266 [DEBUG] [Thread-200892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T01:59:59.266 [DEBUG] [Thread-200892] [transport.py] [_log()] Switch to new keys ...
2025-11-25T01:59:59.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T01:59:59.267 [DEBUG] [Thread-200892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T01:59:59.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T01:59:59.322 [DEBUG] [Thread-200892] [transport.py] [_log()] userauth is OK
2025-11-25T01:59:59.322 [DEBUG] [Thread-200892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T01:59:59.323 [DEBUG] [Thread-200892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T01:59:59.323 [DEBUG] [Thread-200892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T01:59:59.323 [DEBUG] [Thread-200892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T01:59:59.346 [INFO] [Thread-200892] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T01:59:59.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T01:59:59.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:00:00.194 [DEBUG] [Thread-200892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:00:00.194 [DEBUG] [Thread-200892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:00:00.242 [DEBUG] [Thread-200892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:00:00.242 [DEBUG] [Thread-200892] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:00:00.251 [DEBUG] [Thread-200892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:00:00.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:00:00.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-11-25T02:00:00.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:00:00.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:00:00.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:00:00.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:00:00.288 [DEBUG] [Thread-200892] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:00:06.763 [DEBUG] [Thread-200894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:09.898 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:20.304 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:21.893 [DEBUG] [Thread-200895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:28.679 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:28.697 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:30.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:00:30.304 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:00:30.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-11-25T02:00:30.912 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:31.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 1, 59, 54), 13.19, 39.93, 0.0, 23.13, 12.33, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:00:31.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 01:59:54
2025-11-25T02:00:31.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:00:31.515 [DEBUG] [Thread-200896] [transport.py] [_log()] starting thread (client mode): 0xd07cdcc0
2025-11-25T02:00:31.516 [DEBUG] [Thread-200896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:00:31.522 [DEBUG] [Thread-200896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:00:31.522 [INFO] [Thread-200896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:00:31.527 [DEBUG] [Thread-200896] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:00:31.527 [DEBUG] [Thread-200896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:00:31.527 [DEBUG] [Thread-200896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:00:31.527 [DEBUG] [Thread-200896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:00:31.527 [DEBUG] [Thread-200896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:00:31.527 [DEBUG] [Thread-200896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:00:31.527 [DEBUG] [Thread-200896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:00:31.527 [DEBUG] [Thread-200896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:00:31.527 [DEBUG] [Thread-200896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:00:31.527 [DEBUG] [Thread-200896] [transport.py] [_log()] client lang: <none>
2025-11-25T02:00:31.528 [DEBUG] [Thread-200896] [transport.py] [_log()] server lang: <none>
2025-11-25T02:00:31.528 [DEBUG] [Thread-200896] [transport.py] [_log()] kex follows: False
2025-11-25T02:00:31.528 [DEBUG] [Thread-200896] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:00:31.528 [DEBUG] [Thread-200896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:00:31.528 [DEBUG] [Thread-200896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:00:31.529 [DEBUG] [Thread-200896] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:00:31.529 [DEBUG] [Thread-200896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:00:31.529 [DEBUG] [Thread-200896] [transport.py] [_log()] Compression: none
2025-11-25T02:00:31.529 [DEBUG] [Thread-200896] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:00:31.553 [DEBUG] [Thread-200896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:00:31.558 [DEBUG] [Thread-200896] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:00:31.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:00:31.560 [DEBUG] [Thread-200896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:00:31.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:00:31.562 [DEBUG] [Thread-200896] [transport.py] [_log()] userauth is OK
2025-11-25T02:00:31.563 [DEBUG] [Thread-200896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:00:31.563 [DEBUG] [Thread-200896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:00:31.563 [DEBUG] [Thread-200896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:00:31.563 [DEBUG] [Thread-200896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:00:31.574 [INFO] [Thread-200896] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:00:31.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:00:32.196 [DEBUG] [Thread-200896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:00:32.196 [DEBUG] [Thread-200896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:00:32.197 [DEBUG] [Thread-200896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:00:32.237 [DEBUG] [Thread-200896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:00:32.237 [DEBUG] [Thread-200896] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:00:32.240 [DEBUG] [Thread-200896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:00:32.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:00:32.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:00:32.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:00:32.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:00:32.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:00:32.261 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:00:32.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:00:32.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:00:32.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:00:32.263 [DEBUG] [Thread-200896] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:00:32.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.000042 -999.00  +12.50  24.02     44   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 24.0 24.0 130.2 27.6 12.8 -25.0 12.7 -24.5 12.5 -23.4 12.8 -24.3
2025-11-25T02:00:32.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:00:32.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:00:32.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.000042
2025-11-25T02:00:32.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:00:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:00:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:00:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:00:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:00:32.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T01:59:54', tmtdew=13.19, humidity=39.93, cloud=0.0, wind=23.13, temperature=12.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:00:28', seeing=0.73, atlas_timestamp='2025-11-25T00:00:03.629', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:59:00')
2025-11-25T02:00:32.379 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:00:32.390 [DEBUG] [Thread-200899] [transport.py] [_log()] starting thread (client mode): 0xd3153b50
2025-11-25T02:00:32.390 [DEBUG] [Thread-200899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:00:32.407 [DEBUG] [Thread-200899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:00:32.407 [INFO] [Thread-200899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:00:32.414 [DEBUG] [Thread-200899] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] client lang: <none>
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] server lang: <none>
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] kex follows: False
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:00:32.415 [DEBUG] [Thread-200899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:00:32.416 [DEBUG] [Thread-200899] [transport.py] [_log()] Compression: none
2025-11-25T02:00:32.416 [DEBUG] [Thread-200899] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:00:32.474 [DEBUG] [Thread-200899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:00:32.474 [DEBUG] [Thread-200899] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:00:32.474 [DEBUG] [Thread-200899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:00:32.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:00:32.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:00:32.530 [DEBUG] [Thread-200899] [transport.py] [_log()] userauth is OK
2025-11-25T02:00:32.530 [DEBUG] [Thread-200899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:00:32.530 [DEBUG] [Thread-200899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:00:32.530 [DEBUG] [Thread-200899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:00:32.530 [DEBUG] [Thread-200899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:00:32.544 [INFO] [Thread-200899] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:00:32.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:00:32.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:00:33.420 [DEBUG] [Thread-200899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:00:33.421 [DEBUG] [Thread-200899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:00:33.468 [DEBUG] [Thread-200899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:00:33.468 [DEBUG] [Thread-200899] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:00:33.476 [DEBUG] [Thread-200899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:00:33.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:00:33.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')
2025-11-25T02:00:33.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-11-25T02:00:33.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:00:33.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:00:33.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:00:33.511 [DEBUG] [Thread-200899] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:00:36.954 [DEBUG] [Thread-200901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:41.420 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:43.981 [DEBUG] [Thread-200902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:52.084 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:00:52.122 [DEBUG] [Thread-200903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:02.720 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:03.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:01:03.535 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:01:03.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-11-25T02:01:04.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 0, 28), 13.2, 39.93, 0.0, 24.38, 12.42, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:01:04.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:00:28
2025-11-25T02:01:04.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:01:04.804 [DEBUG] [Thread-200904] [transport.py] [_log()] starting thread (client mode): 0xd31490f0
2025-11-25T02:01:04.805 [DEBUG] [Thread-200904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:01:04.819 [DEBUG] [Thread-200904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:01:04.819 [INFO] [Thread-200904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:01:04.825 [DEBUG] [Thread-200904] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:01:04.825 [DEBUG] [Thread-200904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:01:04.825 [DEBUG] [Thread-200904] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:01:04.825 [DEBUG] [Thread-200904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:01:04.826 [DEBUG] [Thread-200904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:01:04.826 [DEBUG] [Thread-200904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:01:04.826 [DEBUG] [Thread-200904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:01:04.826 [DEBUG] [Thread-200904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:01:04.826 [DEBUG] [Thread-200904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:01:04.826 [DEBUG] [Thread-200904] [transport.py] [_log()] client lang: <none>
2025-11-25T02:01:04.826 [DEBUG] [Thread-200904] [transport.py] [_log()] server lang: <none>
2025-11-25T02:01:04.826 [DEBUG] [Thread-200904] [transport.py] [_log()] kex follows: False
2025-11-25T02:01:04.826 [DEBUG] [Thread-200904] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:01:04.827 [DEBUG] [Thread-200904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:01:04.827 [DEBUG] [Thread-200904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:01:04.827 [DEBUG] [Thread-200904] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:01:04.827 [DEBUG] [Thread-200904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:01:04.827 [DEBUG] [Thread-200904] [transport.py] [_log()] Compression: none
2025-11-25T02:01:04.827 [DEBUG] [Thread-200904] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:01:04.855 [DEBUG] [Thread-200904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:01:04.857 [DEBUG] [Thread-200904] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:01:04.857 [DEBUG] [Thread-200904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:01:04.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:01:04.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:01:04.861 [DEBUG] [Thread-200904] [transport.py] [_log()] userauth is OK
2025-11-25T02:01:04.861 [DEBUG] [Thread-200904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:01:04.861 [DEBUG] [Thread-200904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:01:04.861 [DEBUG] [Thread-200904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:01:04.861 [DEBUG] [Thread-200904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:01:04.889 [INFO] [Thread-200904] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:01:04.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:01:05.510 [DEBUG] [Thread-200904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:01:05.510 [DEBUG] [Thread-200904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:01:05.511 [DEBUG] [Thread-200904] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:01:05.551 [DEBUG] [Thread-200904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:01:05.551 [DEBUG] [Thread-200904] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:01:05.555 [DEBUG] [Thread-200904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:01:05.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:01:05.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:01:05.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:01:05.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:01:05.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:01:05.576 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:01:05.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:01:05.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:01:05.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:01:05.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.000389 -999.00  +12.50  20.84     44   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 20.8 20.8 132.6 28.9 12.8 -25.1 12.7 -24.4 12.4 -23.4 12.8 -24.5
2025-11-25T02:01:05.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:01:05.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:01:05.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.000389
2025-11-25T02:01:05.583 [DEBUG] [Thread-200904] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:01:05.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:01:05.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:01:05.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:01:05.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:01:05.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:01:05.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:00:28', tmtdew=13.2, humidity=39.93, cloud=0.0, wind=24.38, temperature=12.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:01:01', seeing=0.81, atlas_timestamp='2025-11-25T00:00:33.610', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:59:00')
2025-11-25T02:01:05.678 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:01:05.690 [DEBUG] [Thread-200907] [transport.py] [_log()] starting thread (client mode): 0xd317e890
2025-11-25T02:01:05.690 [DEBUG] [Thread-200907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:01:05.705 [DEBUG] [Thread-200907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:01:05.705 [INFO] [Thread-200907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:01:05.712 [DEBUG] [Thread-200907] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:01:05.713 [DEBUG] [Thread-200907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:01:05.713 [DEBUG] [Thread-200907] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:01:05.713 [DEBUG] [Thread-200907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:01:05.713 [DEBUG] [Thread-200907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:01:05.713 [DEBUG] [Thread-200907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:01:05.713 [DEBUG] [Thread-200907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:01:05.713 [DEBUG] [Thread-200907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:01:05.713 [DEBUG] [Thread-200907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:01:05.713 [DEBUG] [Thread-200907] [transport.py] [_log()] client lang: <none>
2025-11-25T02:01:05.714 [DEBUG] [Thread-200907] [transport.py] [_log()] server lang: <none>
2025-11-25T02:01:05.714 [DEBUG] [Thread-200907] [transport.py] [_log()] kex follows: False
2025-11-25T02:01:05.714 [DEBUG] [Thread-200907] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:01:05.714 [DEBUG] [Thread-200907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:01:05.714 [DEBUG] [Thread-200907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:01:05.714 [DEBUG] [Thread-200907] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:01:05.714 [DEBUG] [Thread-200907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:01:05.715 [DEBUG] [Thread-200907] [transport.py] [_log()] Compression: none
2025-11-25T02:01:05.715 [DEBUG] [Thread-200907] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:01:05.774 [DEBUG] [Thread-200907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:01:05.775 [DEBUG] [Thread-200907] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:01:05.776 [DEBUG] [Thread-200907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:01:05.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:01:05.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:01:05.830 [DEBUG] [Thread-200907] [transport.py] [_log()] userauth is OK
2025-11-25T02:01:05.831 [DEBUG] [Thread-200907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:01:05.831 [DEBUG] [Thread-200907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:01:05.831 [DEBUG] [Thread-200907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:01:05.831 [DEBUG] [Thread-200907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:01:05.857 [INFO] [Thread-200907] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:01: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-11-25T02:01:05.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:01:06.695 [DEBUG] [Thread-200907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:01:06.695 [DEBUG] [Thread-200907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:01:06.746 [DEBUG] [Thread-200907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:01:06.746 [DEBUG] [Thread-200907] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:01:06.754 [DEBUG] [Thread-200907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:01:06.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:01:06.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-11-25T02:01:06.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-11-25T02:01:06.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:01:06.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:01:06.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:01:06.787 [DEBUG] [Thread-200907] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:01:07.162 [DEBUG] [Thread-200909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:13.514 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:22.297 [DEBUG] [Thread-200910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:24.049 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:28.953 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:28.954 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:34.754 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:36.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:01:36.812 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:01:36.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-11-25T02:01:37.388 [DEBUG] [Thread-200911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:37.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 1), 13.22, 39.84, 0.0, 24.63, 12.43, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:01:37.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:01:00
2025-11-25T02:01:37.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:01:38.079 [DEBUG] [Thread-200912] [transport.py] [_log()] starting thread (client mode): 0xd07cc8b0
2025-11-25T02:01:38.080 [DEBUG] [Thread-200912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:01:38.083 [DEBUG] [Thread-200912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:01:38.084 [INFO] [Thread-200912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:01:38.087 [DEBUG] [Thread-200912] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:01:38.087 [DEBUG] [Thread-200912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] client lang: <none>
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] server lang: <none>
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] kex follows: False
2025-11-25T02:01:38.088 [DEBUG] [Thread-200912] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:01:38.089 [DEBUG] [Thread-200912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:01:38.089 [DEBUG] [Thread-200912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:01:38.089 [DEBUG] [Thread-200912] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:01:38.089 [DEBUG] [Thread-200912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:01:38.089 [DEBUG] [Thread-200912] [transport.py] [_log()] Compression: none
2025-11-25T02:01:38.089 [DEBUG] [Thread-200912] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:01:38.120 [DEBUG] [Thread-200912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:01:38.127 [DEBUG] [Thread-200912] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:01:38.129 [DEBUG] [Thread-200912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:01:38.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:01:38.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:01:38.134 [DEBUG] [Thread-200912] [transport.py] [_log()] userauth is OK
2025-11-25T02:01:38.134 [DEBUG] [Thread-200912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:01:38.134 [DEBUG] [Thread-200912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:01:38.134 [DEBUG] [Thread-200912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:01:38.134 [DEBUG] [Thread-200912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:01:38.173 [INFO] [Thread-200912] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:01:38.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:01:38.801 [DEBUG] [Thread-200912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:01:38.801 [DEBUG] [Thread-200912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:01:38.811 [DEBUG] [Thread-200912] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:01:38.842 [DEBUG] [Thread-200912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:01:38.842 [DEBUG] [Thread-200912] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:01:38.845 [DEBUG] [Thread-200912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:01:38.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:01:38.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:01:38.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:01:38.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:01:38.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:01:38.866 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:01:38.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:01:38.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:01:38.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:01:38.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.000737 -999.00  +12.50  22.92     44   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.9 22.9 134.8 27.4 12.9 -25.1 12.7 -24.5 12.4 -23.5 12.7 -24.5
2025-11-25T02:01:38.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:01:38.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:01:38.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.000737
2025-11-25T02:01:38.873 [DEBUG] [Thread-200912] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:01:38.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:01:38.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:01:38.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:01:38.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:01:38.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:01:38.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:01:00', tmtdew=13.22, humidity=39.84, cloud=0.0, wind=24.63, temperature=12.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:01:34', seeing=0.72, atlas_timestamp='2025-11-25T00:01:03.677', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:59:00')
2025-11-25T02:01:38.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:01:38.971 [DEBUG] [Thread-200915] [transport.py] [_log()] starting thread (client mode): 0xd07134c0
2025-11-25T02:01:38.972 [DEBUG] [Thread-200915] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:01:38.986 [DEBUG] [Thread-200915] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:01:38.986 [INFO] [Thread-200915] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] client lang: <none>
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] server lang: <none>
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] kex follows: False
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] Compression: none
2025-11-25T02:01:38.994 [DEBUG] [Thread-200915] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:01:39.052 [DEBUG] [Thread-200915] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:01:39.052 [DEBUG] [Thread-200915] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:01:39.052 [DEBUG] [Thread-200915] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:01:39.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:01:39.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:01:39.110 [DEBUG] [Thread-200915] [transport.py] [_log()] userauth is OK
2025-11-25T02:01:39.110 [DEBUG] [Thread-200915] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:01:39.110 [DEBUG] [Thread-200915] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:01:39.110 [DEBUG] [Thread-200915] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:01:39.110 [DEBUG] [Thread-200915] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:01:39.124 [INFO] [Thread-200915] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:01:39.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:01:39.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:01:39.965 [DEBUG] [Thread-200915] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:01:39.965 [DEBUG] [Thread-200915] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:01:40.012 [DEBUG] [Thread-200915] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:01:40.012 [DEBUG] [Thread-200915] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:01:40.021 [DEBUG] [Thread-200915] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:01:40.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:01: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')
2025-11-25T02:01:40.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:01:40.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:01:40.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:01:40.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:01:40.056 [DEBUG] [Thread-200915] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:01:44.285 [DEBUG] [Thread-200917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:45.312 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:52.438 [DEBUG] [Thread-200918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:01:56.022 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:06.592 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:07.565 [DEBUG] [Thread-200919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:10.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:02:10.084 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:02:10.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-11-25T02:02:11.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 1, 34), 13.21, 39.88, 0.0, 24.46, 12.37, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:02:11.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:01:34
2025-11-25T02:02:11.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:02:11.339 [DEBUG] [Thread-200920] [transport.py] [_log()] starting thread (client mode): 0xd0712e30
2025-11-25T02:02:11.340 [DEBUG] [Thread-200920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:02:11.354 [DEBUG] [Thread-200920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:02:11.354 [INFO] [Thread-200920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] client lang: <none>
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] server lang: <none>
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] kex follows: False
2025-11-25T02:02:11.361 [DEBUG] [Thread-200920] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:02:11.362 [DEBUG] [Thread-200920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:02:11.362 [DEBUG] [Thread-200920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:02:11.362 [DEBUG] [Thread-200920] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:02:11.362 [DEBUG] [Thread-200920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:02:11.363 [DEBUG] [Thread-200920] [transport.py] [_log()] Compression: none
2025-11-25T02:02:11.363 [DEBUG] [Thread-200920] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:02:11.397 [DEBUG] [Thread-200920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:02:11.401 [DEBUG] [Thread-200920] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:02:11.403 [DEBUG] [Thread-200920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:02:11.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:02:11.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:02:11.406 [DEBUG] [Thread-200920] [transport.py] [_log()] userauth is OK
2025-11-25T02:02:11.407 [DEBUG] [Thread-200920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:02:11.407 [DEBUG] [Thread-200920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:02:11.407 [DEBUG] [Thread-200920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:02:11.407 [DEBUG] [Thread-200920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:02:11.428 [INFO] [Thread-200920] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:02:11.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:02:12.023 [DEBUG] [Thread-200920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:02:12.023 [DEBUG] [Thread-200920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:02:12.025 [DEBUG] [Thread-200920] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:02:12.064 [DEBUG] [Thread-200920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:02:12.064 [DEBUG] [Thread-200920] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:02:12.068 [DEBUG] [Thread-200920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:02:12.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:02:12.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:02:12.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:02:12.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:02:12.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:02:12.089 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:02:12.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:02:12.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:02:12.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:02:12.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.001083 -999.00  +12.50  21.12     44   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.1 21.1 132.6 27.0 12.8 -25.1 12.7 -24.5 12.4 -23.5 12.8 -24.3
2025-11-25T02:02:12.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:02:12.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:02:12.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.001083
2025-11-25T02:02:12.096 [DEBUG] [Thread-200920] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:02:12.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:02:12.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:02:12.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:02:12.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:02:12.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:02:12.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:01:34', tmtdew=13.21, humidity=39.88, cloud=0.0, wind=24.46, temperature=12.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:02:07', seeing=0.68, atlas_timestamp='2025-11-25T00:01:33.571', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:59:00')
2025-11-25T02:02: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-11-25T02:02:12.212 [DEBUG] [Thread-200923] [transport.py] [_log()] starting thread (client mode): 0xc9b80bb0
2025-11-25T02:02:12.212 [DEBUG] [Thread-200923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:02:12.226 [DEBUG] [Thread-200923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:02:12.226 [INFO] [Thread-200923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] client lang: <none>
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] server lang: <none>
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] kex follows: False
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] Compression: none
2025-11-25T02:02:12.235 [DEBUG] [Thread-200923] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:02:12.293 [DEBUG] [Thread-200923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:02:12.293 [DEBUG] [Thread-200923] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:02:12.293 [DEBUG] [Thread-200923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:02:12.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:02:12.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:02:12.350 [DEBUG] [Thread-200923] [transport.py] [_log()] userauth is OK
2025-11-25T02:02:12.350 [DEBUG] [Thread-200923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:02:12.350 [DEBUG] [Thread-200923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:02:12.350 [DEBUG] [Thread-200923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:02:12.350 [DEBUG] [Thread-200923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:02:12.364 [INFO] [Thread-200923] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:02:12.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:02:12.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:02:13.220 [DEBUG] [Thread-200923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:02:13.220 [DEBUG] [Thread-200923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:02:13.268 [DEBUG] [Thread-200923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:02:13.268 [DEBUG] [Thread-200923] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:02:13.276 [DEBUG] [Thread-200923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:02:13.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:02:13.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-11-25T02:02:13.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-11-25T02:02:13.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:02:13.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:02:13.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:02:13.314 [DEBUG] [Thread-200923] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:02:17.291 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:22.625 [DEBUG] [Thread-200925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:27.697 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:29.162 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:29.164 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:37.813 [DEBUG] [Thread-200926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:38.516 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:43.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:02:43.311 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:02:43.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:02:44.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 2, 7), 13.2, 39.91, 0.0, 23.57, 12.38, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:02:44.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:02:07
2025-11-25T02:02:44.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:02:44.538 [DEBUG] [Thread-200927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:44.558 [DEBUG] [Thread-200928] [transport.py] [_log()] starting thread (client mode): 0xd317d0c0
2025-11-25T02:02:44.559 [DEBUG] [Thread-200928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:02:44.572 [DEBUG] [Thread-200928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:02:44.572 [INFO] [Thread-200928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:02:44.578 [DEBUG] [Thread-200928] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:02:44.578 [DEBUG] [Thread-200928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:02:44.578 [DEBUG] [Thread-200928] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:02:44.578 [DEBUG] [Thread-200928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:02:44.578 [DEBUG] [Thread-200928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:02:44.579 [DEBUG] [Thread-200928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:02:44.579 [DEBUG] [Thread-200928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:02:44.579 [DEBUG] [Thread-200928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:02:44.579 [DEBUG] [Thread-200928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:02:44.579 [DEBUG] [Thread-200928] [transport.py] [_log()] client lang: <none>
2025-11-25T02:02:44.579 [DEBUG] [Thread-200928] [transport.py] [_log()] server lang: <none>
2025-11-25T02:02:44.579 [DEBUG] [Thread-200928] [transport.py] [_log()] kex follows: False
2025-11-25T02:02:44.579 [DEBUG] [Thread-200928] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:02:44.579 [DEBUG] [Thread-200928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:02:44.580 [DEBUG] [Thread-200928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:02:44.580 [DEBUG] [Thread-200928] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:02:44.580 [DEBUG] [Thread-200928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:02:44.580 [DEBUG] [Thread-200928] [transport.py] [_log()] Compression: none
2025-11-25T02:02:44.580 [DEBUG] [Thread-200928] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:02:44.618 [DEBUG] [Thread-200928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:02:44.624 [DEBUG] [Thread-200928] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:02:44.626 [DEBUG] [Thread-200928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:02:44.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:02:44.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:02:44.632 [DEBUG] [Thread-200928] [transport.py] [_log()] userauth is OK
2025-11-25T02:02:44.632 [DEBUG] [Thread-200928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:02:44.632 [DEBUG] [Thread-200928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:02:44.632 [DEBUG] [Thread-200928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:02:44.632 [DEBUG] [Thread-200928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:02:44.670 [INFO] [Thread-200928] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:02:44.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:02:45.313 [DEBUG] [Thread-200928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:02:45.314 [DEBUG] [Thread-200928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:02:45.324 [DEBUG] [Thread-200928] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:02:45.354 [DEBUG] [Thread-200928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:02:45.355 [DEBUG] [Thread-200928] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:02:45.358 [DEBUG] [Thread-200928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:02:45.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:02:45.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:02:45.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:02:45.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:02:45.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:02:45.388 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:02:45.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:02:45.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:02:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:02:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.001431 -999.00  +12.50  22.23     44   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.2 22.2 134.0 28.1 12.8 -25.1 12.7 -24.5 12.5 -23.4 12.7 -24.2
2025-11-25T02:02:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:02:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:02:45.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.001431
2025-11-25T02:02:45.396 [DEBUG] [Thread-200928] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:02:45.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:02:45.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:02:45.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:02:45.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:02:45.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:02:45.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:02:07', tmtdew=13.2, humidity=39.91, cloud=0.0, wind=23.57, temperature=12.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:02:41', seeing=0.69, atlas_timestamp='2025-11-25T00:02:03.638', atlas_cloud=1, atlas_rain=1, zp_data=[-0.019249999999999545, -0.03824999999999967, 0.009249999999999758, 0.026499999999998636, -0.03049999999999997, 0.03725000000000023, -0.011499999999999844, 0.0032500000000013074, -0.002500000000001279, -0.004999999999999005, 0.03474999999999895, -0.007500000000000284, 0.09399999999999942, 0.1092499999999994, 0.007999999999999119, -0.018000000000000682, 0.019249999999999545, 0.014999999999998792, -0.006000000000000227, -0.017750000000001265, 0.0804999999999989, 0.07824999999999882, 0.05325000000000024, -0.003249999999999531, 0.023999999999999133, 0.048500000000000654, 0.006750000000000256, 0.018500000000001293, 0.15799999999999947, 0.07800000000000118, 0.03300000000000125, 0.017000000000001236, 0.01774999999999949], zp_timestamp='2025-11-24T23:59:00')
2025-11-25T02:02:45.499 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:02:45.512 [DEBUG] [Thread-200931] [transport.py] [_log()] starting thread (client mode): 0xd07ccfa0
2025-11-25T02:02:45.512 [DEBUG] [Thread-200931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:02:45.526 [DEBUG] [Thread-200931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:02:45.527 [INFO] [Thread-200931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:02:45.534 [DEBUG] [Thread-200931] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:02:45.534 [DEBUG] [Thread-200931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:02:45.534 [DEBUG] [Thread-200931] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:02:45.534 [DEBUG] [Thread-200931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] client lang: <none>
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] server lang: <none>
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] kex follows: False
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] Compression: none
2025-11-25T02:02:45.535 [DEBUG] [Thread-200931] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:02:45.597 [DEBUG] [Thread-200931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:02:45.598 [DEBUG] [Thread-200931] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:02:45.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:02:45.599 [DEBUG] [Thread-200931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:02:45.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:02:45.654 [DEBUG] [Thread-200931] [transport.py] [_log()] userauth is OK
2025-11-25T02:02:45.655 [DEBUG] [Thread-200931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:02:45.655 [DEBUG] [Thread-200931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:02:45.655 [DEBUG] [Thread-200931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:02:45.655 [DEBUG] [Thread-200931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:02:45.674 [INFO] [Thread-200931] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:02:45.675 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:02:45.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:02:46.541 [DEBUG] [Thread-200931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:02:46.541 [DEBUG] [Thread-200931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:02:46.590 [DEBUG] [Thread-200931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:02:46.590 [DEBUG] [Thread-200931] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:02:46.599 [DEBUG] [Thread-200931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:02:46.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:02:46.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:02:46.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:02:46.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:02:46.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:02:46.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:02:46.633 [DEBUG] [Thread-200931] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:02:49.004 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:52.905 [DEBUG] [Thread-200933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:02:59.483 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:08.039 [DEBUG] [Thread-200934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:09.893 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:16.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:03:16.679 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:03:16.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-11-25T02:03:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 2, 40), 13.17, 39.86, 0.0, 24.23, 12.37, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:03:17.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:02:40
2025-11-25T02:03:17.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:03:17.965 [DEBUG] [Thread-200935] [transport.py] [_log()] starting thread (client mode): 0xd0711b10
2025-11-25T02:03:17.966 [DEBUG] [Thread-200935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:03:17.973 [DEBUG] [Thread-200935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:03:17.973 [INFO] [Thread-200935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:03:17.980 [DEBUG] [Thread-200935] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] client lang: <none>
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] server lang: <none>
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] kex follows: False
2025-11-25T02:03:17.981 [DEBUG] [Thread-200935] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:03:17.982 [DEBUG] [Thread-200935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:03:17.982 [DEBUG] [Thread-200935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:03:17.982 [DEBUG] [Thread-200935] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:03:17.982 [DEBUG] [Thread-200935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:03:17.982 [DEBUG] [Thread-200935] [transport.py] [_log()] Compression: none
2025-11-25T02:03:17.982 [DEBUG] [Thread-200935] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:03:18.021 [DEBUG] [Thread-200935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:03:18.026 [DEBUG] [Thread-200935] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:03:18.028 [DEBUG] [Thread-200935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:03:18.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:03:18.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:03:18.034 [DEBUG] [Thread-200935] [transport.py] [_log()] userauth is OK
2025-11-25T02:03:18.034 [DEBUG] [Thread-200935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:03:18.034 [DEBUG] [Thread-200935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:03:18.035 [DEBUG] [Thread-200935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:03:18.035 [DEBUG] [Thread-200935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:03:18.062 [INFO] [Thread-200935] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:03:18.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:03:18.667 [DEBUG] [Thread-200935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:03:18.667 [DEBUG] [Thread-200935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:03:18.669 [DEBUG] [Thread-200935] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:03:18.708 [DEBUG] [Thread-200935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:03:18.708 [DEBUG] [Thread-200935] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:03:18.714 [DEBUG] [Thread-200935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:03:18.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:03:18.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:03:18.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:03:18.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:03:18.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:03:18.744 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:03:18.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:03:18.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:03:18.746 [DEBUG] [Thread-200935] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:03:18.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:03:18.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.002125 -999.00  +12.40  21.52     44   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.5 21.5 135.2 25.7 12.8 -25.1 12.7 -24.7 12.4 -23.5 12.7 -24.3
2025-11-25T02:03:18.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:03:18.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:03:18.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.002125
2025-11-25T02:03:18.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:03:18.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:03:18.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:03:18.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:03:18.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:03:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:02:40', tmtdew=13.17, humidity=39.86, cloud=0.0, wind=24.23, temperature=12.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:03:14', seeing=0.81, atlas_timestamp='2025-11-25T00:03:03.600', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.008250000000000313, 0.03125, -0.02850000000000108, -0.020500000000000185, 0.05775000000000219, -0.019000000000000128, 0.025750000000000384, 0.009499999999999176, -0.0039999999999995595, 0.004249999999998977, 0.019000000000000128, 0.10050000000000026, 0.12325000000000053, -0.008500000000001506, -0.02800000000000047, 0.005749999999999034, -0.006000000000000227, 0.0014999999999982805, -0.023750000000001492, 0.0779999999999994, 0.1117499999999989, 0.052250000000000796, 0.025750000000000384, 0.007999999999999119, 0.06049999999999933, 0.003750000000000142, 0.021500000000001407, 0.1404999999999994, 0.07200000000000095, 0.07600000000000051, 0.012500000000001066, 0.01974999999999838], zp_timestamp='2025-11-25T00:02:00')
2025-11-25T02:03:18.856 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:03:18.867 [DEBUG] [Thread-200938] [transport.py] [_log()] starting thread (client mode): 0xd0787e50
2025-11-25T02:03:18.867 [DEBUG] [Thread-200938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:03:18.885 [DEBUG] [Thread-200938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:03:18.885 [INFO] [Thread-200938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:03:18.893 [DEBUG] [Thread-200938] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:03:18.893 [DEBUG] [Thread-200938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:03:18.894 [DEBUG] [Thread-200938] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:03:18.894 [DEBUG] [Thread-200938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:03:18.894 [DEBUG] [Thread-200938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:03:18.894 [DEBUG] [Thread-200938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:03:18.894 [DEBUG] [Thread-200938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:03:18.894 [DEBUG] [Thread-200938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:03:18.894 [DEBUG] [Thread-200938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:03:18.894 [DEBUG] [Thread-200938] [transport.py] [_log()] client lang: <none>
2025-11-25T02:03:18.894 [DEBUG] [Thread-200938] [transport.py] [_log()] server lang: <none>
2025-11-25T02:03:18.895 [DEBUG] [Thread-200938] [transport.py] [_log()] kex follows: False
2025-11-25T02:03:18.895 [DEBUG] [Thread-200938] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:03:18.895 [DEBUG] [Thread-200938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:03:18.895 [DEBUG] [Thread-200938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:03:18.895 [DEBUG] [Thread-200938] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:03:18.895 [DEBUG] [Thread-200938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:03:18.895 [DEBUG] [Thread-200938] [transport.py] [_log()] Compression: none
2025-11-25T02:03:18.896 [DEBUG] [Thread-200938] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:03:18.950 [DEBUG] [Thread-200938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:03:18.951 [DEBUG] [Thread-200938] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:03:18.951 [DEBUG] [Thread-200938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:03:18.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:03:18.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:03:19.010 [DEBUG] [Thread-200938] [transport.py] [_log()] userauth is OK
2025-11-25T02:03:19.010 [DEBUG] [Thread-200938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:03:19.011 [DEBUG] [Thread-200938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:03:19.011 [DEBUG] [Thread-200938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:03:19.011 [DEBUG] [Thread-200938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:03:19.031 [INFO] [Thread-200938] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:03:19.031 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:03:19.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:03:19.893 [DEBUG] [Thread-200938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:03:19.893 [DEBUG] [Thread-200938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:03:19.942 [DEBUG] [Thread-200938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:03:19.942 [DEBUG] [Thread-200938] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:03:19.951 [DEBUG] [Thread-200938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:03:19.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:03:19.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-11-25T02:03:19.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:03:19.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:03:19.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:03:19.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:03:19.987 [DEBUG] [Thread-200938] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:03:20.587 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:23.099 [DEBUG] [Thread-200940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:29.368 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:29.369 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:31.017 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:38.225 [DEBUG] [Thread-200941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:41.577 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:44.827 [DEBUG] [Thread-200942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:50.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:03:50.033 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:03:50.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:03:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 3, 14), 13.14, 39.94, 0.0, 24.77, 12.37, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:03:50.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:03:14
2025-11-25T02:03:51.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:03:51.286 [DEBUG] [Thread-200943] [transport.py] [_log()] starting thread (client mode): 0xc9b82290
2025-11-25T02:03:51.287 [DEBUG] [Thread-200943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:03:51.294 [DEBUG] [Thread-200943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:03:51.295 [INFO] [Thread-200943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] client lang: <none>
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] server lang: <none>
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] kex follows: False
2025-11-25T02:03:51.299 [DEBUG] [Thread-200943] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:03:51.300 [DEBUG] [Thread-200943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:03:51.300 [DEBUG] [Thread-200943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:03:51.300 [DEBUG] [Thread-200943] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:03:51.300 [DEBUG] [Thread-200943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:03:51.300 [DEBUG] [Thread-200943] [transport.py] [_log()] Compression: none
2025-11-25T02:03:51.300 [DEBUG] [Thread-200943] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:03:51.329 [DEBUG] [Thread-200943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:03:51.332 [DEBUG] [Thread-200943] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:03:51.333 [DEBUG] [Thread-200943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:03:51.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:03:51.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:03:51.337 [DEBUG] [Thread-200943] [transport.py] [_log()] userauth is OK
2025-11-25T02:03:51.337 [DEBUG] [Thread-200943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:03:51.337 [DEBUG] [Thread-200943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:03:51.337 [DEBUG] [Thread-200943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:03:51.337 [DEBUG] [Thread-200943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:03:51.355 [INFO] [Thread-200943] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:03:51.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:03:51.948 [DEBUG] [Thread-200943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:03:51.948 [DEBUG] [Thread-200943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:03:51.948 [DEBUG] [Thread-200943] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:03:51.989 [DEBUG] [Thread-200943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:03:51.989 [DEBUG] [Thread-200943] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:03:51.990 [DEBUG] [Thread-200943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:03:51.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:03:52.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:03:52.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:03:52.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:03:52.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:03:52.008 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:03:52.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:03:52.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:03:52.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:03:52.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.002473 -999.00  +12.40  23.41     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.4 23.4 136.6 29.1 12.8 -25.2 12.7 -24.5 12.4 -23.5 12.8 -24.4
2025-11-25T02:03:52.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:03:52.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:03:52.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.002473
2025-11-25T02:03:52.014 [DEBUG] [Thread-200943] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:03:52.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:03:52.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:03:52.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:03:52.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:03:52.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:03:52.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:03:14', tmtdew=13.14, humidity=39.94, cloud=0.0, wind=24.77, temperature=12.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:03:47', seeing=0.85, atlas_timestamp='2025-11-25T00:03:33.667', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.008250000000000313, 0.03125, -0.02850000000000108, -0.020500000000000185, 0.05775000000000219, -0.019000000000000128, 0.025750000000000384, 0.009499999999999176, -0.0039999999999995595, 0.004249999999998977, 0.019000000000000128, 0.10050000000000026, 0.12325000000000053, -0.008500000000001506, -0.02800000000000047, 0.005749999999999034, -0.006000000000000227, 0.0014999999999982805, -0.023750000000001492, 0.0779999999999994, 0.1117499999999989, 0.052250000000000796, 0.025750000000000384, 0.007999999999999119, 0.06049999999999933, 0.003750000000000142, 0.021500000000001407, 0.1404999999999994, 0.07200000000000095, 0.07600000000000051, 0.012500000000001066, 0.01974999999999838], zp_timestamp='2025-11-25T00:02:00')
2025-11-25T02:03:52.089 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:03:52.107 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:03:52.118 [DEBUG] [Thread-200946] [transport.py] [_log()] starting thread (client mode): 0xd31506a0
2025-11-25T02:03:52.118 [DEBUG] [Thread-200946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:03:52.134 [DEBUG] [Thread-200946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:03:52.134 [INFO] [Thread-200946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] client lang: <none>
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] server lang: <none>
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] kex follows: False
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:03:52.141 [DEBUG] [Thread-200946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:03:52.142 [DEBUG] [Thread-200946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:03:52.142 [DEBUG] [Thread-200946] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:03:52.142 [DEBUG] [Thread-200946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:03:52.142 [DEBUG] [Thread-200946] [transport.py] [_log()] Compression: none
2025-11-25T02:03:52.142 [DEBUG] [Thread-200946] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:03:52.201 [DEBUG] [Thread-200946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:03:52.201 [DEBUG] [Thread-200946] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:03:52.201 [DEBUG] [Thread-200946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:03:52.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:03:52.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:03:52.257 [DEBUG] [Thread-200946] [transport.py] [_log()] userauth is OK
2025-11-25T02:03:52.258 [DEBUG] [Thread-200946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:03:52.258 [DEBUG] [Thread-200946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:03:52.258 [DEBUG] [Thread-200946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:03:52.258 [DEBUG] [Thread-200946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:03:52.272 [INFO] [Thread-200946] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:03:52.272 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:03:52.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:03:53.109 [DEBUG] [Thread-200946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:03:53.109 [DEBUG] [Thread-200946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:03:53.157 [DEBUG] [Thread-200946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:03:53.157 [DEBUG] [Thread-200946] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:03:53.166 [DEBUG] [Thread-200946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:03:53.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:03:53.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-11-25T02:03:53.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-11-25T02:03:53.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:03:53.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:03:53.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:03:53.198 [DEBUG] [Thread-200946] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:03:53.271 [DEBUG] [Thread-200948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:02.722 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:08.406 [DEBUG] [Thread-200949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:13.280 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:23.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:04:23.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:04:23.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-11-25T02:04:23.461 [DEBUG] [Thread-200950 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:23.823 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:24.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 3, 47), 13.18, 39.98, 0.0, 25.18, 12.4, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:04:24.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:03:47
2025-11-25T02:04:24.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:04:24.502 [DEBUG] [Thread-200951] [transport.py] [_log()] starting thread (client mode): 0xd073aef0
2025-11-25T02:04:24.503 [DEBUG] [Thread-200951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:04:24.508 [DEBUG] [Thread-200951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:04:24.508 [INFO] [Thread-200951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:04:24.512 [DEBUG] [Thread-200951] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:04:24.512 [DEBUG] [Thread-200951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:04:24.512 [DEBUG] [Thread-200951] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:04:24.512 [DEBUG] [Thread-200951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:04:24.512 [DEBUG] [Thread-200951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:04:24.513 [DEBUG] [Thread-200951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:04:24.513 [DEBUG] [Thread-200951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:04:24.513 [DEBUG] [Thread-200951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:04:24.513 [DEBUG] [Thread-200951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:04:24.513 [DEBUG] [Thread-200951] [transport.py] [_log()] client lang: <none>
2025-11-25T02:04:24.513 [DEBUG] [Thread-200951] [transport.py] [_log()] server lang: <none>
2025-11-25T02:04:24.513 [DEBUG] [Thread-200951] [transport.py] [_log()] kex follows: False
2025-11-25T02:04:24.513 [DEBUG] [Thread-200951] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:04:24.513 [DEBUG] [Thread-200951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:04:24.514 [DEBUG] [Thread-200951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:04:24.514 [DEBUG] [Thread-200951] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:04:24.514 [DEBUG] [Thread-200951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:04:24.514 [DEBUG] [Thread-200951] [transport.py] [_log()] Compression: none
2025-11-25T02:04:24.514 [DEBUG] [Thread-200951] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:04:24.542 [DEBUG] [Thread-200951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:04:24.546 [DEBUG] [Thread-200951] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:04:24.547 [DEBUG] [Thread-200951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:04:24.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:04:24.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:04:24.552 [DEBUG] [Thread-200951] [transport.py] [_log()] userauth is OK
2025-11-25T02:04:24.552 [DEBUG] [Thread-200951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:04:24.553 [DEBUG] [Thread-200951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:04:24.553 [DEBUG] [Thread-200951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:04:24.553 [DEBUG] [Thread-200951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:04:24.573 [INFO] [Thread-200951] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:04:24.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:04:25.179 [DEBUG] [Thread-200951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:04:25.179 [DEBUG] [Thread-200951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:04:25.180 [DEBUG] [Thread-200951] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:04:25.220 [DEBUG] [Thread-200951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:04:25.220 [DEBUG] [Thread-200951] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:04:25.225 [DEBUG] [Thread-200951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:04:25.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:04:25.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:04:25.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:04:25.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:04:25.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:04:25.243 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:04:25.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:04:25.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:04:25.245 [DEBUG] [Thread-200951] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:04:25.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:04:25.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.002820 -999.00  +12.40  23.72     44   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.7 23.7 132.2 28.7 12.8 -25.2 12.7 -24.6 12.4 -23.5 12.7 -24.2
2025-11-25T02:04:25.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:04:25.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:04:25.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.002820
2025-11-25T02:04:25.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:04:25.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:04:25.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:04:25.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:04:25.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:04:25.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:03:47', tmtdew=13.18, humidity=39.98, cloud=0.0, wind=25.18, temperature=12.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:04:21', seeing=0.72, atlas_timestamp='2025-11-25T00:04:03.648', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.008250000000000313, 0.03125, -0.02850000000000108, -0.020500000000000185, 0.05775000000000219, -0.019000000000000128, 0.025750000000000384, 0.009499999999999176, -0.0039999999999995595, 0.004249999999998977, 0.019000000000000128, 0.10050000000000026, 0.12325000000000053, -0.008500000000001506, -0.02800000000000047, 0.005749999999999034, -0.006000000000000227, 0.0014999999999982805, -0.023750000000001492, 0.0779999999999994, 0.1117499999999989, 0.052250000000000796, 0.025750000000000384, 0.007999999999999119, 0.06049999999999933, 0.003750000000000142, 0.021500000000001407, 0.1404999999999994, 0.07200000000000095, 0.07600000000000051, 0.012500000000001066, 0.01974999999999838], zp_timestamp='2025-11-25T00:02:00')
2025-11-25T02:04:25.356 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:04:25.368 [DEBUG] [Thread-200954] [transport.py] [_log()] starting thread (client mode): 0xd31f5150
2025-11-25T02:04:25.368 [DEBUG] [Thread-200954] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:04:25.383 [DEBUG] [Thread-200954] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:04:25.384 [INFO] [Thread-200954] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] client lang: <none>
2025-11-25T02:04:25.391 [DEBUG] [Thread-200954] [transport.py] [_log()] server lang: <none>
2025-11-25T02:04:25.392 [DEBUG] [Thread-200954] [transport.py] [_log()] kex follows: False
2025-11-25T02:04:25.392 [DEBUG] [Thread-200954] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:04:25.392 [DEBUG] [Thread-200954] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:04:25.392 [DEBUG] [Thread-200954] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:04:25.392 [DEBUG] [Thread-200954] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:04:25.392 [DEBUG] [Thread-200954] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:04:25.392 [DEBUG] [Thread-200954] [transport.py] [_log()] Compression: none
2025-11-25T02:04:25.392 [DEBUG] [Thread-200954] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:04:25.454 [DEBUG] [Thread-200954] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:04:25.454 [DEBUG] [Thread-200954] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:04:25.455 [DEBUG] [Thread-200954] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:04:25.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:04:25.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:04:25.510 [DEBUG] [Thread-200954] [transport.py] [_log()] userauth is OK
2025-11-25T02:04:25.510 [DEBUG] [Thread-200954] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:04:25.510 [DEBUG] [Thread-200954] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:04:25.510 [DEBUG] [Thread-200954] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:04:25.510 [DEBUG] [Thread-200954] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:04:25.530 [INFO] [Thread-200954] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:04:25.530 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:04:25.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:04:26.387 [DEBUG] [Thread-200954] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:04:26.387 [DEBUG] [Thread-200954] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:04:26.435 [DEBUG] [Thread-200954] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:04:26.435 [DEBUG] [Thread-200954] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:04:26.444 [DEBUG] [Thread-200954] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:04:26.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:04:26.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-11-25T02:04:26.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-11-25T02:04:26.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:04:26.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:04:26.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:04:26.492 [DEBUG] [Thread-200954] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:04:29.573 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:29.574 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:34.243 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:38.525 [DEBUG] [Thread-200956 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:44.999 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:45.084 [DEBUG] [Thread-200957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:53.645 [DEBUG] [Thread-200958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:55.834 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:04:56.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:04:56.517 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:04:56.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:04:57.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 4, 20), 13.18, 39.94, 0.0, 24.49, 12.38, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:04:57.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:04:20
2025-11-25T02:04:57.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:04:57.764 [DEBUG] [Thread-200959] [transport.py] [_log()] starting thread (client mode): 0xd07cc3d0
2025-11-25T02:04:57.765 [DEBUG] [Thread-200959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:04:57.774 [DEBUG] [Thread-200959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:04:57.774 [INFO] [Thread-200959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:04:57.780 [DEBUG] [Thread-200959] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:04:57.780 [DEBUG] [Thread-200959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:04:57.780 [DEBUG] [Thread-200959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:04:57.780 [DEBUG] [Thread-200959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] client lang: <none>
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] server lang: <none>
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] kex follows: False
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:04:57.781 [DEBUG] [Thread-200959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:04:57.782 [DEBUG] [Thread-200959] [transport.py] [_log()] Compression: none
2025-11-25T02:04:57.782 [DEBUG] [Thread-200959] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:04:57.808 [DEBUG] [Thread-200959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:04:57.813 [DEBUG] [Thread-200959] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:04:57.815 [DEBUG] [Thread-200959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:04:57.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:04:57.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:04:57.821 [DEBUG] [Thread-200959] [transport.py] [_log()] userauth is OK
2025-11-25T02:04:57.821 [DEBUG] [Thread-200959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:04:57.822 [DEBUG] [Thread-200959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:04:57.822 [DEBUG] [Thread-200959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:04:57.822 [DEBUG] [Thread-200959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:04:57.859 [INFO] [Thread-200959] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:04:57.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:04:58.472 [DEBUG] [Thread-200959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:04:58.473 [DEBUG] [Thread-200959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:04:58.474 [DEBUG] [Thread-200959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:04:58.513 [DEBUG] [Thread-200959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:04:58.514 [DEBUG] [Thread-200959] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:04:58.518 [DEBUG] [Thread-200959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:04:58.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:04:58.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:04:58.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:04:58.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:04:58.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:04:58.552 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:04:58.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:04:58.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:04:58.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:04:58.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.002820 -999.00  +12.40  23.72     44   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.7 23.7 132.2 28.7 12.8 -25.2 12.7 -24.6 12.4 -23.5 12.7 -24.2
2025-11-25T02:04:58.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:04:58.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:04:58.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.002820
2025-11-25T02:04:58.560 [DEBUG] [Thread-200959] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:04:58.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:04:58.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:04:58.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:04:58.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:04:58.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:04:58.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:04:20', tmtdew=13.18, humidity=39.94, cloud=0.0, wind=24.49, temperature=12.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:04:54', seeing=0.72, atlas_timestamp='2025-11-25T00:04:03.648', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.008250000000000313, 0.03125, -0.02850000000000108, -0.020500000000000185, 0.05775000000000219, -0.019000000000000128, 0.025750000000000384, 0.009499999999999176, -0.0039999999999995595, 0.004249999999998977, 0.019000000000000128, 0.10050000000000026, 0.12325000000000053, -0.008500000000001506, -0.02800000000000047, 0.005749999999999034, -0.006000000000000227, 0.0014999999999982805, -0.023750000000001492, 0.0779999999999994, 0.1117499999999989, 0.052250000000000796, 0.025750000000000384, 0.007999999999999119, 0.06049999999999933, 0.003750000000000142, 0.021500000000001407, 0.1404999999999994, 0.07200000000000095, 0.07600000000000051, 0.012500000000001066, 0.01974999999999838], zp_timestamp='2025-11-25T00:02:00')
2025-11-25T02:04:58.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:04:58.673 [DEBUG] [Thread-200962] [transport.py] [_log()] starting thread (client mode): 0xd07ced40
2025-11-25T02:04:58.674 [DEBUG] [Thread-200962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:04:58.688 [DEBUG] [Thread-200962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:04:58.689 [INFO] [Thread-200962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] client lang: <none>
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] server lang: <none>
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] kex follows: False
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:04:58.696 [DEBUG] [Thread-200962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:04:58.697 [DEBUG] [Thread-200962] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:04:58.697 [DEBUG] [Thread-200962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:04:58.697 [DEBUG] [Thread-200962] [transport.py] [_log()] Compression: none
2025-11-25T02:04:58.697 [DEBUG] [Thread-200962] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:04:58.754 [DEBUG] [Thread-200962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:04:58.755 [DEBUG] [Thread-200962] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:04:58.755 [DEBUG] [Thread-200962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:04:58.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:04:58.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:04:58.811 [DEBUG] [Thread-200962] [transport.py] [_log()] userauth is OK
2025-11-25T02:04:58.811 [DEBUG] [Thread-200962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:04:58.811 [DEBUG] [Thread-200962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:04:58.811 [DEBUG] [Thread-200962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:04:58.812 [DEBUG] [Thread-200962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:04:58.830 [INFO] [Thread-200962] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:04:58.831 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:04:58.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:04:59.701 [DEBUG] [Thread-200962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:04:59.701 [DEBUG] [Thread-200962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:04:59.749 [DEBUG] [Thread-200962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:04:59.749 [DEBUG] [Thread-200962] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:04:59.758 [DEBUG] [Thread-200962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:04:59.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:04:59.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-11-25T02:04:59.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-11-25T02:04:59.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:04:59.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:04:59.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:04:59.796 [DEBUG] [Thread-200962] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:05:06.252 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:08.707 [DEBUG] [Thread-200964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:16.857 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:23.838 [DEBUG] [Thread-200965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:27.334 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:29.779 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:29.781 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:29.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:05:29.820 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:05:29.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-11-25T02:05:30.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 4, 54), 13.19, 39.94, 0.0, 24.77, 12.35, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:05:30.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:04:54
2025-11-25T02:05:30.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:05:31.037 [DEBUG] [Thread-200966] [transport.py] [_log()] starting thread (client mode): 0xd07860b0
2025-11-25T02:05:31.038 [DEBUG] [Thread-200966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:05:31.050 [DEBUG] [Thread-200966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:05:31.051 [INFO] [Thread-200966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:05:31.057 [DEBUG] [Thread-200966] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:05:31.057 [DEBUG] [Thread-200966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:05:31.057 [DEBUG] [Thread-200966] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:05:31.058 [DEBUG] [Thread-200966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:05:31.058 [DEBUG] [Thread-200966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:05:31.058 [DEBUG] [Thread-200966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:05:31.058 [DEBUG] [Thread-200966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:05:31.058 [DEBUG] [Thread-200966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:05:31.058 [DEBUG] [Thread-200966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:05:31.058 [DEBUG] [Thread-200966] [transport.py] [_log()] client lang: <none>
2025-11-25T02:05:31.058 [DEBUG] [Thread-200966] [transport.py] [_log()] server lang: <none>
2025-11-25T02:05:31.058 [DEBUG] [Thread-200966] [transport.py] [_log()] kex follows: False
2025-11-25T02:05:31.058 [DEBUG] [Thread-200966] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:05:31.059 [DEBUG] [Thread-200966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:05:31.059 [DEBUG] [Thread-200966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:05:31.060 [DEBUG] [Thread-200966] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:05:31.060 [DEBUG] [Thread-200966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:05:31.060 [DEBUG] [Thread-200966] [transport.py] [_log()] Compression: none
2025-11-25T02:05:31.060 [DEBUG] [Thread-200966] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:05:31.098 [DEBUG] [Thread-200966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:05:31.103 [DEBUG] [Thread-200966] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:05:31.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:05:31.106 [DEBUG] [Thread-200966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:05:31.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:05:31.109 [DEBUG] [Thread-200966] [transport.py] [_log()] userauth is OK
2025-11-25T02:05:31.110 [DEBUG] [Thread-200966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:05:31.110 [DEBUG] [Thread-200966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:05:31.110 [DEBUG] [Thread-200966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:05:31.110 [DEBUG] [Thread-200966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:05:31.136 [INFO] [Thread-200966] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:05:31.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:05:31.768 [DEBUG] [Thread-200966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:05:31.769 [DEBUG] [Thread-200966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:05:31.778 [DEBUG] [Thread-200966] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:05:31.810 [DEBUG] [Thread-200966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:05:31.810 [DEBUG] [Thread-200966] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:05:31.813 [DEBUG] [Thread-200966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:05:31.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:05:31.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:05:31.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:05:31.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:05:31.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:05:31.834 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:05:31.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:05:31.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:05:31.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:05:31.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.003167 -999.00  +12.40  19.66     44   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 19.7 19.7 135.4 26.1 12.8 -25.1 12.7 -24.6 12.4 -23.5 12.7 -24.3
2025-11-25T02:05:31.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:05:31.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:05:31.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.003167
2025-11-25T02:05:31.841 [DEBUG] [Thread-200966] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:05:31.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:05:31.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:05:31.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:05:31.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:05:31.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:05:31.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:04:54', tmtdew=13.19, humidity=39.94, cloud=0.0, wind=24.77, temperature=12.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:05:28', seeing=0.81, atlas_timestamp='2025-11-25T00:04:33.629', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.008250000000000313, 0.03125, -0.02850000000000108, -0.020500000000000185, 0.05775000000000219, -0.019000000000000128, 0.025750000000000384, 0.009499999999999176, -0.0039999999999995595, 0.004249999999998977, 0.019000000000000128, 0.10050000000000026, 0.12325000000000053, -0.008500000000001506, -0.02800000000000047, 0.005749999999999034, -0.006000000000000227, 0.0014999999999982805, -0.023750000000001492, 0.0779999999999994, 0.1117499999999989, 0.052250000000000796, 0.025750000000000384, 0.007999999999999119, 0.06049999999999933, 0.003750000000000142, 0.021500000000001407, 0.1404999999999994, 0.07200000000000095, 0.07600000000000051, 0.012500000000001066, 0.01974999999999838], zp_timestamp='2025-11-25T00:02:00')
2025-11-25T02:05:31.923 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:05:31.935 [DEBUG] [Thread-200969] [transport.py] [_log()] starting thread (client mode): 0xd0786c20
2025-11-25T02:05:31.935 [DEBUG] [Thread-200969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:05:31.951 [DEBUG] [Thread-200969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:05:31.952 [INFO] [Thread-200969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:05:31.959 [DEBUG] [Thread-200969] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:05:31.959 [DEBUG] [Thread-200969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:05:31.959 [DEBUG] [Thread-200969] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:05:31.959 [DEBUG] [Thread-200969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:05:31.959 [DEBUG] [Thread-200969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:05:31.959 [DEBUG] [Thread-200969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:05:31.959 [DEBUG] [Thread-200969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] client lang: <none>
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] server lang: <none>
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] kex follows: False
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] Compression: none
2025-11-25T02:05:31.960 [DEBUG] [Thread-200969] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:05:32.019 [DEBUG] [Thread-200969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:05:32.020 [DEBUG] [Thread-200969] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:05:32.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:05:32.021 [DEBUG] [Thread-200969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:05:32.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:05:32.083 [DEBUG] [Thread-200969] [transport.py] [_log()] userauth is OK
2025-11-25T02:05:32.084 [DEBUG] [Thread-200969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:05:32.084 [DEBUG] [Thread-200969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:05:32.084 [DEBUG] [Thread-200969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:05:32.084 [DEBUG] [Thread-200969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:05:32.113 [INFO] [Thread-200969] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:05:32.114 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:05:32.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:05:33.006 [DEBUG] [Thread-200969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:05:33.006 [DEBUG] [Thread-200969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:05:33.055 [DEBUG] [Thread-200969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:05:33.055 [DEBUG] [Thread-200969] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:05:33.066 [DEBUG] [Thread-200969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:05:33.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:05:33.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-11-25T02:05:33.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-11-25T02:05:33.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:05:33.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:05:33.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:05:33.108 [DEBUG] [Thread-200969] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:05:38.032 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:38.923 [DEBUG] [Thread-200971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:45.362 [DEBUG] [Thread-200972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:48.480 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:54.015 [DEBUG] [Thread-200973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:05:58.992 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:03.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:06:03.129 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:06:03.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:06:04.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 5, 27), 13.19, 39.93, 0.0, 24.61, 12.33, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:06:04.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:05:27
2025-11-25T02:06:04.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:06:04.395 [DEBUG] [Thread-200974] [transport.py] [_log()] starting thread (client mode): 0xd31f6500
2025-11-25T02:06:04.396 [DEBUG] [Thread-200974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:06:04.405 [DEBUG] [Thread-200974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:06:04.405 [INFO] [Thread-200974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:06:04.413 [DEBUG] [Thread-200974] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:06:04.413 [DEBUG] [Thread-200974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] client lang: <none>
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] server lang: <none>
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] kex follows: False
2025-11-25T02:06:04.414 [DEBUG] [Thread-200974] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:06:04.415 [DEBUG] [Thread-200974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:06:04.415 [DEBUG] [Thread-200974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:06:04.416 [DEBUG] [Thread-200974] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:06:04.416 [DEBUG] [Thread-200974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:06:04.416 [DEBUG] [Thread-200974] [transport.py] [_log()] Compression: none
2025-11-25T02:06:04.416 [DEBUG] [Thread-200974] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:06:04.454 [DEBUG] [Thread-200974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:06:04.460 [DEBUG] [Thread-200974] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:06:04.462 [DEBUG] [Thread-200974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:06:04.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:06:04.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:06:04.468 [DEBUG] [Thread-200974] [transport.py] [_log()] userauth is OK
2025-11-25T02:06:04.468 [DEBUG] [Thread-200974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:06:04.469 [DEBUG] [Thread-200974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:06:04.469 [DEBUG] [Thread-200974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:06:04.469 [DEBUG] [Thread-200974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:06:04.496 [INFO] [Thread-200974] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:06:04.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:06:05.153 [DEBUG] [Thread-200974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:06:05.153 [DEBUG] [Thread-200974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:06:05.154 [DEBUG] [Thread-200974] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:06:05.194 [DEBUG] [Thread-200974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:06:05.194 [DEBUG] [Thread-200974] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:06:05.197 [DEBUG] [Thread-200974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:06:05.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:06:05.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:06:05.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:06:05.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:06:05.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:06:05.220 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:06:05.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:06:05.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:06:05.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:06:05.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.003514 -999.00  +12.40  22.05     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.1 22.1 131.6 24.5 12.8 -25.2 12.7 -24.8 12.4 -23.6 12.7 -24.4
2025-11-25T02:06:05.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:06:05.222 [DEBUG] [Thread-200974] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:06:05.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:06:05.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.003514
2025-11-25T02:06:05.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:06:05.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:06:05.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:06:05.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:06:05.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:06:05.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:05:27', tmtdew=13.19, humidity=39.93, cloud=0.0, wind=24.61, temperature=12.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:06:01', seeing=0.86, atlas_timestamp='2025-11-25T00:05:03.610', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.008250000000000313, 0.03125, -0.02850000000000108, -0.020500000000000185, 0.05775000000000219, -0.019000000000000128, 0.025750000000000384, 0.009499999999999176, -0.0039999999999995595, 0.004249999999998977, 0.019000000000000128, 0.10050000000000026, 0.12325000000000053, -0.008500000000001506, -0.02800000000000047, 0.005749999999999034, -0.006000000000000227, 0.0014999999999982805, -0.023750000000001492, 0.0779999999999994, 0.1117499999999989, 0.052250000000000796, 0.025750000000000384, 0.007999999999999119, 0.06049999999999933, 0.003750000000000142, 0.021500000000001407, 0.1404999999999994, 0.07200000000000095, 0.07600000000000051, 0.012500000000001066, 0.01974999999999838], zp_timestamp='2025-11-25T00:02:00')
2025-11-25T02:06:05.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:06:05.351 [DEBUG] [Thread-200977] [transport.py] [_log()] starting thread (client mode): 0xd07cdd20
2025-11-25T02:06:05.351 [DEBUG] [Thread-200977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:06:05.369 [DEBUG] [Thread-200977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:06:05.369 [INFO] [Thread-200977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] client lang: <none>
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] server lang: <none>
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] kex follows: False
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] Compression: none
2025-11-25T02:06:05.377 [DEBUG] [Thread-200977] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:06:05.433 [DEBUG] [Thread-200977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:06:05.433 [DEBUG] [Thread-200977] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:06:05.433 [DEBUG] [Thread-200977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:06:05.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:06:05.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:06:05.494 [DEBUG] [Thread-200977] [transport.py] [_log()] userauth is OK
2025-11-25T02:06:05.494 [DEBUG] [Thread-200977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:06:05.494 [DEBUG] [Thread-200977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:06:05.494 [DEBUG] [Thread-200977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:06:05.494 [DEBUG] [Thread-200977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:06:05.513 [INFO] [Thread-200977] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:06:05.513 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:06:05.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:06:06.432 [DEBUG] [Thread-200977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:06:06.432 [DEBUG] [Thread-200977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:06:06.481 [DEBUG] [Thread-200977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:06:06.482 [DEBUG] [Thread-200977] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:06:06.491 [DEBUG] [Thread-200977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:06:06.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:06:06.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-11-25T02:06:06.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-11-25T02:06:06.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:06:06.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:06:06.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:06:06.529 [DEBUG] [Thread-200977] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:06:09.074 [DEBUG] [Thread-200979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:09.586 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:20.132 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:24.270 [DEBUG] [Thread-200980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:29.985 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:29.987 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:30.657 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:36.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:06:36.554 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:06:36.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-11-25T02:06:37.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 6), 13.13, 39.94, 0.0, 23.52, 12.28, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:06:37.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:06:00
2025-11-25T02:06:37.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:06:37.728 [DEBUG] [Thread-200981] [transport.py] [_log()] starting thread (client mode): 0xd31508e0
2025-11-25T02:06:37.729 [DEBUG] [Thread-200981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:06:37.742 [DEBUG] [Thread-200981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:06:37.742 [INFO] [Thread-200981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:06:37.747 [DEBUG] [Thread-200981] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] client lang: <none>
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] server lang: <none>
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] kex follows: False
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:06:37.748 [DEBUG] [Thread-200981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:06:37.749 [DEBUG] [Thread-200981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:06:37.749 [DEBUG] [Thread-200981] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:06:37.749 [DEBUG] [Thread-200981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:06:37.749 [DEBUG] [Thread-200981] [transport.py] [_log()] Compression: none
2025-11-25T02:06:37.749 [DEBUG] [Thread-200981] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:06:37.780 [DEBUG] [Thread-200981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:06:37.783 [DEBUG] [Thread-200981] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:06:37.785 [DEBUG] [Thread-200981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:06:37.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:06:37.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:06:37.787 [DEBUG] [Thread-200981] [transport.py] [_log()] userauth is OK
2025-11-25T02:06:37.787 [DEBUG] [Thread-200981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:06:37.788 [DEBUG] [Thread-200981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:06:37.788 [DEBUG] [Thread-200981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:06:37.788 [DEBUG] [Thread-200981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:06:37.805 [INFO] [Thread-200981] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:06:37.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:06:38.456 [DEBUG] [Thread-200981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:06:38.456 [DEBUG] [Thread-200981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:06:38.457 [DEBUG] [Thread-200981] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:06:38.497 [DEBUG] [Thread-200981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:06:38.497 [DEBUG] [Thread-200981] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:06:38.500 [DEBUG] [Thread-200981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:06:38.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:06:38.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:06:38.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:06:38.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:06:38.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:06:38.524 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:06:38.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:06:38.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:06:38.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:06:38.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.003862 -999.00  +12.30  20.86     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 20.9 20.9 131.2 29.0 12.8 -25.2 12.7 -24.8 12.3 -23.6 12.7 -24.5
2025-11-25T02:06:38.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:06:38.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:06:38.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.003862
2025-11-25T02:06:38.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:06:38.534 [DEBUG] [Thread-200981] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:06:38.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:06:38.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:06:38.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:06:38.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:06:38.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:06:00', tmtdew=13.13, humidity=39.94, cloud=0.0, wind=23.52, temperature=12.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:06:34', seeing=0.83, atlas_timestamp='2025-11-25T00:05:33.677', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:04:00')
2025-11-25T02:06:38.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:06:38.632 [DEBUG] [Thread-200984] [transport.py] [_log()] starting thread (client mode): 0xd31f4d30
2025-11-25T02:06:38.632 [DEBUG] [Thread-200984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:06:38.647 [DEBUG] [Thread-200984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:06:38.647 [INFO] [Thread-200984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:06:38.654 [DEBUG] [Thread-200984] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] client lang: <none>
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] server lang: <none>
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] kex follows: False
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] Compression: none
2025-11-25T02:06:38.655 [DEBUG] [Thread-200984] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:06:38.713 [DEBUG] [Thread-200984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:06:38.714 [DEBUG] [Thread-200984] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:06:38.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:06:38.714 [DEBUG] [Thread-200984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:06:38.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:06:38.769 [DEBUG] [Thread-200984] [transport.py] [_log()] userauth is OK
2025-11-25T02:06:38.769 [DEBUG] [Thread-200984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:06:38.769 [DEBUG] [Thread-200984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:06:38.769 [DEBUG] [Thread-200984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:06:38.769 [DEBUG] [Thread-200984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:06:38.784 [INFO] [Thread-200984] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:06:38.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:06:38.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:06:39.341 [DEBUG] [Thread-200986 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:39.626 [DEBUG] [Thread-200984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:06:39.626 [DEBUG] [Thread-200984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:06:39.674 [DEBUG] [Thread-200984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:06:39.674 [DEBUG] [Thread-200984] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:06:39.682 [DEBUG] [Thread-200984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:06:39.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:06:39.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-11-25T02:06:39.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-11-25T02:06:39.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:06:39.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:06:39.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:06:39.717 [DEBUG] [Thread-200984] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:06:41.060 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:45.649 [DEBUG] [Thread-200987 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:51.475 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:06:54.444 [DEBUG] [Thread-200988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:01.881 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:09.515 [DEBUG] [Thread-200989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:09.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:07:09.741 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:07:09.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-11-25T02:07:10.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 6, 34), 13.13, 40.48, 0.0, 24.12, 12.3, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:07:10.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:06:34
2025-11-25T02:07:10.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:07:10.998 [DEBUG] [Thread-200990] [transport.py] [_log()] starting thread (client mode): 0xd0784190
2025-11-25T02:07:10.999 [DEBUG] [Thread-200990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:07:10.999 [DEBUG] [Thread-200990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:07:10.999 [INFO] [Thread-200990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] client lang: <none>
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] server lang: <none>
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] kex follows: False
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] Compression: none
2025-11-25T02:07:11.004 [DEBUG] [Thread-200990] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:07:11.032 [DEBUG] [Thread-200990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:07:11.035 [DEBUG] [Thread-200990] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:07:11.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:07:11.037 [DEBUG] [Thread-200990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:07:11.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:07:11.039 [DEBUG] [Thread-200990] [transport.py] [_log()] userauth is OK
2025-11-25T02:07:11.039 [DEBUG] [Thread-200990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:07:11.039 [DEBUG] [Thread-200990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:07:11.039 [DEBUG] [Thread-200990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:07:11.039 [DEBUG] [Thread-200990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:07:11.052 [INFO] [Thread-200990] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:07:11.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:07:11.679 [DEBUG] [Thread-200990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:07:11.679 [DEBUG] [Thread-200990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:07:11.681 [DEBUG] [Thread-200990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:07:11.720 [DEBUG] [Thread-200990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:07:11.720 [DEBUG] [Thread-200990] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:07:11.723 [DEBUG] [Thread-200990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:07:11.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:07:11.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:07:11.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:07:11.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:07:11.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:07:11.751 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:07:11.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:07:11.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:07:11.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:07:11.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.004556 -999.00  +12.40  22.27     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.3 22.3 130.6 26.4 12.8 -25.2 12.6 -24.5 12.3 -23.6 12.7 -24.4
2025-11-25T02:07:11.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:07:11.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:07:11.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.004556
2025-11-25T02:07:11.759 [DEBUG] [Thread-200990] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:07:11.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:07:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:07:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:07:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:07:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:07:11.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:06:34', tmtdew=13.13, humidity=40.48, cloud=0.0, wind=24.12, temperature=12.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:07:07', seeing=0.79, atlas_timestamp='2025-11-25T00:06:33.638', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:04:00')
2025-11-25T02:07:11.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:07:11.871 [DEBUG] [Thread-200993] [transport.py] [_log()] starting thread (client mode): 0xc9b764a0
2025-11-25T02:07:11.871 [DEBUG] [Thread-200993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:07:11.887 [DEBUG] [Thread-200993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:07:11.887 [INFO] [Thread-200993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:07:11.895 [DEBUG] [Thread-200993] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:07:11.895 [DEBUG] [Thread-200993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:07:11.895 [DEBUG] [Thread-200993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:07:11.895 [DEBUG] [Thread-200993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:07:11.895 [DEBUG] [Thread-200993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:07:11.895 [DEBUG] [Thread-200993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:07:11.896 [DEBUG] [Thread-200993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:07:11.896 [DEBUG] [Thread-200993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:07:11.896 [DEBUG] [Thread-200993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:07:11.896 [DEBUG] [Thread-200993] [transport.py] [_log()] client lang: <none>
2025-11-25T02:07:11.896 [DEBUG] [Thread-200993] [transport.py] [_log()] server lang: <none>
2025-11-25T02:07:11.896 [DEBUG] [Thread-200993] [transport.py] [_log()] kex follows: False
2025-11-25T02:07:11.896 [DEBUG] [Thread-200993] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:07:11.896 [DEBUG] [Thread-200993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:07:11.896 [DEBUG] [Thread-200993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:07:11.897 [DEBUG] [Thread-200993] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:07:11.897 [DEBUG] [Thread-200993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:07:11.897 [DEBUG] [Thread-200993] [transport.py] [_log()] Compression: none
2025-11-25T02:07:11.897 [DEBUG] [Thread-200993] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:07:11.959 [DEBUG] [Thread-200993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:07:11.959 [DEBUG] [Thread-200993] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:07:11.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:07:11.960 [DEBUG] [Thread-200993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:07:11.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:07:12.018 [DEBUG] [Thread-200993] [transport.py] [_log()] userauth is OK
2025-11-25T02:07:12.018 [DEBUG] [Thread-200993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:07:12.018 [DEBUG] [Thread-200993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:07:12.018 [DEBUG] [Thread-200993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:07:12.018 [DEBUG] [Thread-200993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:07:12.039 [INFO] [Thread-200993] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:07:12.039 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:07:12.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:07:12.316 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:12.943 [DEBUG] [Thread-200993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:07:12.943 [DEBUG] [Thread-200993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:07:12.991 [DEBUG] [Thread-200993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:07:12.991 [DEBUG] [Thread-200993] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:07:13.001 [DEBUG] [Thread-200993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:07:13.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:07:13.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-11-25T02:07:13.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-11-25T02:07:13.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:07:13.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:07:13.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:07:13.036 [DEBUG] [Thread-200993] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:07:22.767 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:24.618 [DEBUG] [Thread-200995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:30.201 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:30.204 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:33.335 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:39.788 [DEBUG] [Thread-200996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:43.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:07:43.036 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:07:43.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-11-25T02:07:43.893 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:43.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 7, 7), 13.13, 40.46, 0.0, 22.81, 12.3, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:07:43.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:07:07
2025-11-25T02:07:44.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:07:44.302 [DEBUG] [Thread-200997] [transport.py] [_log()] starting thread (client mode): 0xc9b74670
2025-11-25T02:07:44.303 [DEBUG] [Thread-200997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:07:44.315 [DEBUG] [Thread-200997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:07:44.315 [INFO] [Thread-200997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] client lang: <none>
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] server lang: <none>
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] kex follows: False
2025-11-25T02:07:44.321 [DEBUG] [Thread-200997] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:07:44.322 [DEBUG] [Thread-200997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:07:44.322 [DEBUG] [Thread-200997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:07:44.322 [DEBUG] [Thread-200997] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:07:44.322 [DEBUG] [Thread-200997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:07:44.322 [DEBUG] [Thread-200997] [transport.py] [_log()] Compression: none
2025-11-25T02:07:44.322 [DEBUG] [Thread-200997] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:07:44.359 [DEBUG] [Thread-200997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:07:44.363 [DEBUG] [Thread-200997] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:07:44.365 [DEBUG] [Thread-200997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:07:44.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:07:44.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:07:44.370 [DEBUG] [Thread-200997] [transport.py] [_log()] userauth is OK
2025-11-25T02:07:44.371 [DEBUG] [Thread-200997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:07:44.371 [DEBUG] [Thread-200997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:07:44.371 [DEBUG] [Thread-200997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:07:44.371 [DEBUG] [Thread-200997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:07:44.410 [INFO] [Thread-200997] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:07:44.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:07:45.224 [DEBUG] [Thread-200997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:07:45.224 [DEBUG] [Thread-200997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:07:45.225 [DEBUG] [Thread-200997] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:07:45.264 [DEBUG] [Thread-200997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:07:45.265 [DEBUG] [Thread-200997] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:07:45.268 [DEBUG] [Thread-200997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:07:45.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:07:45.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:07:45.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:07:45.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:07:45.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:07:45.298 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:07:45.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:07:45.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:07:45.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:07:45.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.004903 -999.00  +12.30  24.19     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 24.2 24.2 132.6 27.8 12.8 -25.1 12.6 -24.5 12.3 -23.5 12.7 -24.4
2025-11-25T02:07:45.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:07:45.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:07:45.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.004903
2025-11-25T02:07:45.300 [DEBUG] [Thread-200997] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:07:45.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:07:45.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:07:45.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:07:45.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:07:45.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:07:45.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:07:07', tmtdew=13.13, humidity=40.46, cloud=0.0, wind=22.81, temperature=12.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:07:40', seeing=0.9, atlas_timestamp='2025-11-25T00:07:03.619', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:04:00')
2025-11-25T02:07:45.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:07:45.433 [DEBUG] [Thread-201000] [transport.py] [_log()] starting thread (client mode): 0xd31f6290
2025-11-25T02:07:45.433 [DEBUG] [Thread-201000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:07:45.447 [DEBUG] [Thread-201000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:07:45.447 [INFO] [Thread-201000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:07:45.455 [DEBUG] [Thread-201000] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:07:45.455 [DEBUG] [Thread-201000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:07:45.455 [DEBUG] [Thread-201000] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:07:45.455 [DEBUG] [Thread-201000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] client lang: <none>
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] server lang: <none>
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] kex follows: False
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:07:45.456 [DEBUG] [Thread-201000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:07:45.457 [DEBUG] [Thread-201000] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:07:45.457 [DEBUG] [Thread-201000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:07:45.457 [DEBUG] [Thread-201000] [transport.py] [_log()] Compression: none
2025-11-25T02:07:45.457 [DEBUG] [Thread-201000] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:07:45.514 [DEBUG] [Thread-201000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:07:45.515 [DEBUG] [Thread-201000] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:07:45.515 [DEBUG] [Thread-201000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:07:45.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:07:45.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:07:45.569 [DEBUG] [Thread-201000] [transport.py] [_log()] userauth is OK
2025-11-25T02:07:45.569 [DEBUG] [Thread-201000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:07:45.569 [DEBUG] [Thread-201000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:07:45.569 [DEBUG] [Thread-201000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:07:45.569 [DEBUG] [Thread-201000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:07:45.583 [INFO] [Thread-201000] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:07:45.583 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:07:45.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:07:45.899 [DEBUG] [Thread-201002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:46.480 [DEBUG] [Thread-201000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:07:46.481 [DEBUG] [Thread-201000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:07:46.529 [DEBUG] [Thread-201000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:07:46.529 [DEBUG] [Thread-201000] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:07:46.538 [DEBUG] [Thread-201000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:07:46.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:07:46.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:07:46.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:07:46.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:07:46.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:07:46.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:07:46.577 [DEBUG] [Thread-201000] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:07:54.555 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:07:54.847 [DEBUG] [Thread-201003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:05.036 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:10.000 [DEBUG] [Thread-201004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:15.610 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:16.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:08:16.601 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:08:16.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-11-25T02:08:17.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 7, 40), 13.1, 40.38, 0.0, 25.11, 12.2, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:08:17.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:07:40
2025-11-25T02:08:17.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:08:17.804 [DEBUG] [Thread-201005] [transport.py] [_log()] starting thread (client mode): 0xd31f66b0
2025-11-25T02:08:17.805 [DEBUG] [Thread-201005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:08:17.812 [DEBUG] [Thread-201005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:08:17.812 [INFO] [Thread-201005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:08:17.817 [DEBUG] [Thread-201005] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] client lang: <none>
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] server lang: <none>
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] kex follows: False
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:08:17.818 [DEBUG] [Thread-201005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:08:17.819 [DEBUG] [Thread-201005] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:08:17.819 [DEBUG] [Thread-201005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:08:17.819 [DEBUG] [Thread-201005] [transport.py] [_log()] Compression: none
2025-11-25T02:08:17.819 [DEBUG] [Thread-201005] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:08:17.844 [DEBUG] [Thread-201005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:08:17.849 [DEBUG] [Thread-201005] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:08:17.851 [DEBUG] [Thread-201005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:08:17.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:08:17.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:08:17.857 [DEBUG] [Thread-201005] [transport.py] [_log()] userauth is OK
2025-11-25T02:08:17.857 [DEBUG] [Thread-201005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:08:17.858 [DEBUG] [Thread-201005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:08:17.858 [DEBUG] [Thread-201005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:08:17.858 [DEBUG] [Thread-201005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:08:17.887 [INFO] [Thread-201005] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:08:17.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:08:18.454 [DEBUG] [Thread-201005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:08:18.454 [DEBUG] [Thread-201005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:08:18.456 [DEBUG] [Thread-201005] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:08:18.495 [DEBUG] [Thread-201005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:08:18.495 [DEBUG] [Thread-201005] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:08:18.498 [DEBUG] [Thread-201005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:08:18.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:08:18.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:08:18.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:08:18.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:08:18.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:08:18.522 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:08:18.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:08:18.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:08:18.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:08:18.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.005250 -999.00  +12.30  21.94     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.9 21.9 132.6 24.8 12.8 -25.0 12.7 -24.5 12.3 -23.5 12.7 -24.3
2025-11-25T02:08:18.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:08:18.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:08:18.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.005250
2025-11-25T02:08:18.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:08:18.540 [DEBUG] [Thread-201005] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:08:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:08:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:08:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:08:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:08:18.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:07:40', tmtdew=13.1, humidity=40.38, cloud=0.0, wind=25.11, temperature=12.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:08:14', seeing=0.83, atlas_timestamp='2025-11-25T00:07:33.600', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:04:00')
2025-11-25T02:08:18.621 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:08:18.632 [DEBUG] [Thread-201008] [transport.py] [_log()] starting thread (client mode): 0xd31f5060
2025-11-25T02:08:18.633 [DEBUG] [Thread-201008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:08:18.646 [DEBUG] [Thread-201008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:08:18.646 [INFO] [Thread-201008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] client lang: <none>
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] server lang: <none>
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] kex follows: False
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:08:18.654 [DEBUG] [Thread-201008] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:08:18.655 [DEBUG] [Thread-201008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:08:18.655 [DEBUG] [Thread-201008] [transport.py] [_log()] Compression: none
2025-11-25T02:08:18.655 [DEBUG] [Thread-201008] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:08:18.712 [DEBUG] [Thread-201008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:08:18.712 [DEBUG] [Thread-201008] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:08:18.713 [DEBUG] [Thread-201008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:08:18.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:08:18.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:08:18.771 [DEBUG] [Thread-201008] [transport.py] [_log()] userauth is OK
2025-11-25T02:08:18.771 [DEBUG] [Thread-201008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:08:18.771 [DEBUG] [Thread-201008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:08:18.771 [DEBUG] [Thread-201008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:08:18.771 [DEBUG] [Thread-201008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:08:18.786 [INFO] [Thread-201008] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:08:18.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:08:18.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:08:19.649 [DEBUG] [Thread-201008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:08:19.649 [DEBUG] [Thread-201008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:08:19.697 [DEBUG] [Thread-201008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:08:19.697 [DEBUG] [Thread-201008] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:08:19.705 [DEBUG] [Thread-201008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:08:19.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:08:19.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:08:19.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-11-25T02:08:19.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:08:19.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:08:19.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:08:19.747 [DEBUG] [Thread-201008] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:08:25.077 [DEBUG] [Thread-201010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:26.276 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:30.407 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:30.409 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:36.722 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:40.213 [DEBUG] [Thread-201011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:46.216 [DEBUG] [Thread-201012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:47.178 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:49.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:08:49.753 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:08:49.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:08:50.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 8, 13), 13.07, 40.49, 0.0, 25.11, 12.22, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:08:50.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:08:13
2025-11-25T02:08:50.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:08:50.977 [DEBUG] [Thread-201013] [transport.py] [_log()] starting thread (client mode): 0xd31f48e0
2025-11-25T02:08:50.978 [DEBUG] [Thread-201013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:08:50.987 [DEBUG] [Thread-201013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:08:50.987 [INFO] [Thread-201013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] client lang: <none>
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] server lang: <none>
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] kex follows: False
2025-11-25T02:08:50.992 [DEBUG] [Thread-201013] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:08:50.993 [DEBUG] [Thread-201013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:08:50.993 [DEBUG] [Thread-201013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:08:50.993 [DEBUG] [Thread-201013] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:08:50.993 [DEBUG] [Thread-201013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:08:50.993 [DEBUG] [Thread-201013] [transport.py] [_log()] Compression: none
2025-11-25T02:08:50.993 [DEBUG] [Thread-201013] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:08:51.025 [DEBUG] [Thread-201013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:08:51.029 [DEBUG] [Thread-201013] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:08:51.030 [DEBUG] [Thread-201013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:08:51.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:08:51.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:08:51.034 [DEBUG] [Thread-201013] [transport.py] [_log()] userauth is OK
2025-11-25T02:08:51.034 [DEBUG] [Thread-201013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:08:51.034 [DEBUG] [Thread-201013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:08:51.034 [DEBUG] [Thread-201013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:08:51.034 [DEBUG] [Thread-201013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:08:51.046 [INFO] [Thread-201013] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:08:51.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:08:51.850 [DEBUG] [Thread-201013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:08:51.850 [DEBUG] [Thread-201013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:08:51.851 [DEBUG] [Thread-201013] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:08:51.891 [DEBUG] [Thread-201013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:08:51.891 [DEBUG] [Thread-201013] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:08:51.894 [DEBUG] [Thread-201013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:08:51.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:08:51.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:08:51.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:08:51.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:08:51.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:08:51.914 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:08:51.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:08:51.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:08:51.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:08:51.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.005598 -999.00  +12.30  19.32     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 19.3 19.3 120.6 27.2 12.8 -25.1 12.6 -24.5 12.3 -23.4 12.7 -24.3
2025-11-25T02:08:51.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:08:51.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:08:51.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.005598
2025-11-25T02:08:51.926 [DEBUG] [Thread-201013] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:08:51.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:08:51.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:08:51.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:08:51.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:08:51.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:08:51.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:08:13', tmtdew=13.07, humidity=40.49, cloud=0.0, wind=25.11, temperature=12.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:08:47', seeing=0.95, atlas_timestamp='2025-11-25T00:08:03.667', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:04:00')
2025-11-25T02:08:52.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:08:52.029 [DEBUG] [Thread-201016] [transport.py] [_log()] starting thread (client mode): 0xd0787be0
2025-11-25T02:08:52.029 [DEBUG] [Thread-201016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:08:52.044 [DEBUG] [Thread-201016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:08:52.044 [INFO] [Thread-201016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:08:52.051 [DEBUG] [Thread-201016] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:08:52.051 [DEBUG] [Thread-201016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:08:52.051 [DEBUG] [Thread-201016] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:08:52.051 [DEBUG] [Thread-201016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] client lang: <none>
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] server lang: <none>
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] kex follows: False
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] Compression: none
2025-11-25T02:08:52.052 [DEBUG] [Thread-201016] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:08:52.109 [DEBUG] [Thread-201016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:08:52.109 [DEBUG] [Thread-201016] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:08:52.110 [DEBUG] [Thread-201016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:08:52.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:08:52.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:08:52.165 [DEBUG] [Thread-201016] [transport.py] [_log()] userauth is OK
2025-11-25T02:08:52.165 [DEBUG] [Thread-201016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:08:52.165 [DEBUG] [Thread-201016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:08:52.165 [DEBUG] [Thread-201016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:08:52.166 [DEBUG] [Thread-201016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:08:52.187 [INFO] [Thread-201016] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:08:52.187 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:08:52.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:08:52.991 [DEBUG] [Thread-201016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:08:52.991 [DEBUG] [Thread-201016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:08:53.039 [DEBUG] [Thread-201016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:08:53.040 [DEBUG] [Thread-201016] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:08:53.049 [DEBUG] [Thread-201016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:08:53.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:08:53.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-11-25T02:08:53.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-11-25T02:08:53.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:08:53.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:08:53.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:08:53.088 [DEBUG] [Thread-201016] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:08:55.277 [DEBUG] [Thread-201018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:08:57.716 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:08.242 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:10.469 [DEBUG] [Thread-201019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:18.743 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:23.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:09:23.084 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:09:23.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-11-25T02:09:23.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 9, 20), 13.1, 40.54, 0.0, 25.39, 12.3, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:09:23.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:09:20
2025-11-25T02:09:23.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:09:24.147 [DEBUG] [Thread-201020] [transport.py] [_log()] starting thread (client mode): 0xd31f4370
2025-11-25T02:09:24.149 [DEBUG] [Thread-201020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:09:24.156 [DEBUG] [Thread-201020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:09:24.156 [INFO] [Thread-201020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:09:24.161 [DEBUG] [Thread-201020] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] client lang: <none>
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] server lang: <none>
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] kex follows: False
2025-11-25T02:09:24.162 [DEBUG] [Thread-201020] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:09:24.163 [DEBUG] [Thread-201020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:09:24.163 [DEBUG] [Thread-201020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:09:24.163 [DEBUG] [Thread-201020] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:09:24.163 [DEBUG] [Thread-201020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:09:24.163 [DEBUG] [Thread-201020] [transport.py] [_log()] Compression: none
2025-11-25T02:09:24.163 [DEBUG] [Thread-201020] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:09:24.196 [DEBUG] [Thread-201020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:09:24.200 [DEBUG] [Thread-201020] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:09:24.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:09:24.204 [DEBUG] [Thread-201020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:09:24.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:09:24.206 [DEBUG] [Thread-201020] [transport.py] [_log()] userauth is OK
2025-11-25T02:09:24.206 [DEBUG] [Thread-201020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:09:24.206 [DEBUG] [Thread-201020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:09:24.206 [DEBUG] [Thread-201020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:09:24.206 [DEBUG] [Thread-201020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:09:24.239 [INFO] [Thread-201020] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:09:24.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:09:24.816 [DEBUG] [Thread-201020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:09:24.816 [DEBUG] [Thread-201020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:09:24.817 [DEBUG] [Thread-201020] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:09:24.857 [DEBUG] [Thread-201020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:09:24.857 [DEBUG] [Thread-201020] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:09:24.859 [DEBUG] [Thread-201020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:09:24.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:09:24.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:09:24.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:09:24.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:09:24.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:09:24.880 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:09:24.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:09:24.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:09:24.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:09:24.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.005945 -999.00  +12.30  21.68     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.7 21.7 130.0 26.8 12.8 -25.0 12.6 -24.6 12.3 -23.3 12.7 -24.3
2025-11-25T02:09:24.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:09:24.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:09:24.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.005945
2025-11-25T02:09:24.887 [DEBUG] [Thread-201020] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:09:24.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:09:24.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:09:24.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:09:24.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:09:24.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:09:24.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:09:20', tmtdew=13.1, humidity=40.54, cloud=0.0, wind=25.39, temperature=12.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:09:20', seeing=1.2, atlas_timestamp='2025-11-25T00:08:33.648', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:08:00')
2025-11-25T02:09:24.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:09:24.993 [DEBUG] [Thread-201023] [transport.py] [_log()] starting thread (client mode): 0xd31f6830
2025-11-25T02:09:24.993 [DEBUG] [Thread-201023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:09:25.008 [DEBUG] [Thread-201023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:09:25.008 [INFO] [Thread-201023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] client lang: <none>
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] server lang: <none>
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] kex follows: False
2025-11-25T02:09:25.016 [DEBUG] [Thread-201023] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:09:25.017 [DEBUG] [Thread-201023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:09:25.017 [DEBUG] [Thread-201023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:09:25.017 [DEBUG] [Thread-201023] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:09:25.017 [DEBUG] [Thread-201023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:09:25.017 [DEBUG] [Thread-201023] [transport.py] [_log()] Compression: none
2025-11-25T02:09:25.017 [DEBUG] [Thread-201023] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:09:25.077 [DEBUG] [Thread-201023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:09:25.078 [DEBUG] [Thread-201023] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:09:25.078 [DEBUG] [Thread-201023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:09:25.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:09:25.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:09:25.148 [DEBUG] [Thread-201023] [transport.py] [_log()] userauth is OK
2025-11-25T02:09:25.148 [DEBUG] [Thread-201023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:09:25.148 [DEBUG] [Thread-201023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:09:25.148 [DEBUG] [Thread-201023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:09:25.149 [DEBUG] [Thread-201023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:09:25.173 [INFO] [Thread-201023] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:09:25.174 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:09:25.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:09:25.566 [DEBUG] [Thread-201025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:26.039 [DEBUG] [Thread-201023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:09:26.039 [DEBUG] [Thread-201023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:09:26.087 [DEBUG] [Thread-201023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:09:26.087 [DEBUG] [Thread-201023] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:09:26.095 [DEBUG] [Thread-201023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:09:26.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:09:26.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-11-25T02:09:26.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-11-25T02:09:26.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:09:26.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:09:26.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:09:26.130 [DEBUG] [Thread-201023] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:09:29.367 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:30.620 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:30.621 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:39.800 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:40.725 [DEBUG] [Thread-201026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:46.526 [DEBUG] [Thread-201027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:50.500 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:55.775 [DEBUG] [Thread-201028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:09:56.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:09:56.155 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:09:56.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-11-25T02:09:57.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 9, 20), 13.1, 40.54, 0.0, 25.39, 12.3, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:09:57.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:09:20
2025-11-25T02:09:57.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:09:57.406 [DEBUG] [Thread-201029] [transport.py] [_log()] starting thread (client mode): 0xd31f4f70
2025-11-25T02:09:57.407 [DEBUG] [Thread-201029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:09:57.409 [DEBUG] [Thread-201029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:09:57.409 [INFO] [Thread-201029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] client lang: <none>
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] server lang: <none>
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] kex follows: False
2025-11-25T02:09:57.414 [DEBUG] [Thread-201029] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:09:57.415 [DEBUG] [Thread-201029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:09:57.415 [DEBUG] [Thread-201029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:09:57.415 [DEBUG] [Thread-201029] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:09:57.415 [DEBUG] [Thread-201029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:09:57.415 [DEBUG] [Thread-201029] [transport.py] [_log()] Compression: none
2025-11-25T02:09:57.415 [DEBUG] [Thread-201029] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:09:57.449 [DEBUG] [Thread-201029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:09:57.452 [DEBUG] [Thread-201029] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:09:57.454 [DEBUG] [Thread-201029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:09:57.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:09:57.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:09:57.457 [DEBUG] [Thread-201029] [transport.py] [_log()] userauth is OK
2025-11-25T02:09:57.458 [DEBUG] [Thread-201029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:09:57.458 [DEBUG] [Thread-201029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:09:57.458 [DEBUG] [Thread-201029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:09:57.458 [DEBUG] [Thread-201029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:09:57.479 [INFO] [Thread-201029] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:09:57.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:09:58.280 [DEBUG] [Thread-201029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:09:58.280 [DEBUG] [Thread-201029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:09:58.281 [DEBUG] [Thread-201029] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:09:58.321 [DEBUG] [Thread-201029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:09:58.321 [DEBUG] [Thread-201029] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:09:58.324 [DEBUG] [Thread-201029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:09:58.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:09:58.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:09:58.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:09:58.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:09:58.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:09:58.348 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:09:58.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:09:58.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:09:58.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:09:58.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.006292 -999.00  +12.30  20.09     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 20.1 20.1 128.2 27.9 12.8 -24.9 12.6 -24.6 12.3 -23.4 12.7 -24.0
2025-11-25T02:09:58.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:09:58.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:09:58.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.006292
2025-11-25T02:09:58.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:09:58.366 [DEBUG] [Thread-201029] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:09:58.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:09:58.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:09:58.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:09:58.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:09:58.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:09:20', tmtdew=13.1, humidity=40.54, cloud=0.0, wind=25.39, temperature=12.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:09:53', seeing=1.2, atlas_timestamp='2025-11-25T00:09:03.629', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:08:00')
2025-11-25T02:09:58.446 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:09:58.457 [DEBUG] [Thread-201032] [transport.py] [_log()] starting thread (client mode): 0xd319fc40
2025-11-25T02:09:58.457 [DEBUG] [Thread-201032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:09:58.471 [DEBUG] [Thread-201032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:09:58.471 [INFO] [Thread-201032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] client lang: <none>
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] server lang: <none>
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] kex follows: False
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] Compression: none
2025-11-25T02:09:58.479 [DEBUG] [Thread-201032] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:09:58.536 [DEBUG] [Thread-201032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:09:58.536 [DEBUG] [Thread-201032] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:09:58.536 [DEBUG] [Thread-201032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:09:58.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:09:58.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:09:58.593 [DEBUG] [Thread-201032] [transport.py] [_log()] userauth is OK
2025-11-25T02:09:58.593 [DEBUG] [Thread-201032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:09:58.593 [DEBUG] [Thread-201032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:09:58.593 [DEBUG] [Thread-201032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:09:58.593 [DEBUG] [Thread-201032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:09:58.607 [INFO] [Thread-201032] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:09:58.607 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:09:58.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:09:59.449 [DEBUG] [Thread-201032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:09:59.449 [DEBUG] [Thread-201032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:09:59.497 [DEBUG] [Thread-201032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:09:59.497 [DEBUG] [Thread-201032] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:09:59.506 [DEBUG] [Thread-201032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:09:59.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:09: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')
2025-11-25T02:09:59.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-11-25T02:09:59.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:09:59.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:09:59.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:09:59.539 [DEBUG] [Thread-201032] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:10:00.941 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:10.840 [DEBUG] [Thread-201034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:11.410 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:22.207 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:25.949 [DEBUG] [Thread-201035 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:29.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:10:29.574 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:10:29.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:10:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 9, 52), 13.13, 40.06, 0.0, 24.95, 12.22, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:10:30.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:09:52
2025-11-25T02:10:30.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:10:30.759 [DEBUG] [Thread-201036] [transport.py] [_log()] starting thread (client mode): 0xc9b76aa0
2025-11-25T02:10:30.760 [DEBUG] [Thread-201036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:10:30.770 [DEBUG] [Thread-201036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:10:30.771 [INFO] [Thread-201036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:10:30.777 [DEBUG] [Thread-201036] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:10:30.777 [DEBUG] [Thread-201036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:10:30.777 [DEBUG] [Thread-201036] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:10:30.777 [DEBUG] [Thread-201036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:10:30.777 [DEBUG] [Thread-201036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:10:30.777 [DEBUG] [Thread-201036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:10:30.778 [DEBUG] [Thread-201036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:10:30.778 [DEBUG] [Thread-201036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:10:30.778 [DEBUG] [Thread-201036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:10:30.778 [DEBUG] [Thread-201036] [transport.py] [_log()] client lang: <none>
2025-11-25T02:10:30.778 [DEBUG] [Thread-201036] [transport.py] [_log()] server lang: <none>
2025-11-25T02:10:30.778 [DEBUG] [Thread-201036] [transport.py] [_log()] kex follows: False
2025-11-25T02:10:30.778 [DEBUG] [Thread-201036] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:10:30.779 [DEBUG] [Thread-201036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:10:30.779 [DEBUG] [Thread-201036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:10:30.779 [DEBUG] [Thread-201036] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:10:30.779 [DEBUG] [Thread-201036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:10:30.779 [DEBUG] [Thread-201036] [transport.py] [_log()] Compression: none
2025-11-25T02:10:30.780 [DEBUG] [Thread-201036] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:10:30.817 [DEBUG] [Thread-201036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:10:30.823 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:30.826 [DEBUG] [Thread-201036] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:10:30.827 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:30.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:10:30.832 [DEBUG] [Thread-201036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:10:30.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:10:30.835 [DEBUG] [Thread-201036] [transport.py] [_log()] userauth is OK
2025-11-25T02:10:30.836 [DEBUG] [Thread-201036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:10:30.836 [DEBUG] [Thread-201036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:10:30.836 [DEBUG] [Thread-201036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:10:30.836 [DEBUG] [Thread-201036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:10:30.875 [INFO] [Thread-201036] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:10:30.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:10:31.478 [DEBUG] [Thread-201036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:10:31.479 [DEBUG] [Thread-201036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:10:31.480 [DEBUG] [Thread-201036] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:10:31.519 [DEBUG] [Thread-201036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:10:31.519 [DEBUG] [Thread-201036] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:10:31.522 [DEBUG] [Thread-201036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:10:31.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:10:31.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:10:31.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:10:31.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:10:31.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:10:31.547 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:10:31.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:10:31.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:10:31.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:10:31.549 [DEBUG] [Thread-201036] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:10:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.006987 -999.00  +12.30  16.48     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 16.5 16.5 127.2 26.9 12.8 -25.0 12.6 -24.4 12.3 -23.3 12.6 -24.2
2025-11-25T02:10:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:10:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:10:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.006987
2025-11-25T02:10:31.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:10:31.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:10:31.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:10:31.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:10:31.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:10:31.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:09:52', tmtdew=13.13, humidity=40.06, cloud=0.0, wind=24.95, temperature=12.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:10:26', seeing=1.08, atlas_timestamp='2025-11-25T00:10:03.677', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:08:00')
2025-11-25T02:10:31.654 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:10:31.665 [DEBUG] [Thread-201039] [transport.py] [_log()] starting thread (client mode): 0xc9b76ad0
2025-11-25T02:10:31.665 [DEBUG] [Thread-201039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:10:31.681 [DEBUG] [Thread-201039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:10:31.681 [INFO] [Thread-201039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] client lang: <none>
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] server lang: <none>
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] kex follows: False
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:10:31.689 [DEBUG] [Thread-201039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:10:31.690 [DEBUG] [Thread-201039] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:10:31.690 [DEBUG] [Thread-201039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:10:31.690 [DEBUG] [Thread-201039] [transport.py] [_log()] Compression: none
2025-11-25T02:10:31.690 [DEBUG] [Thread-201039] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:10:31.749 [DEBUG] [Thread-201039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:10:31.750 [DEBUG] [Thread-201039] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:10:31.750 [DEBUG] [Thread-201039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:10:31.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:10:31.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:10:31.805 [DEBUG] [Thread-201039] [transport.py] [_log()] userauth is OK
2025-11-25T02:10:31.805 [DEBUG] [Thread-201039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:10:31.806 [DEBUG] [Thread-201039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:10:31.806 [DEBUG] [Thread-201039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:10:31.806 [DEBUG] [Thread-201039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:10:31.825 [INFO] [Thread-201039] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:10:31.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:10:31.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:10:32.733 [DEBUG] [Thread-201039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:10:32.733 [DEBUG] [Thread-201039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:10:32.781 [DEBUG] [Thread-201039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:10:32.781 [DEBUG] [Thread-201039] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:10:32.790 [DEBUG] [Thread-201039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:10:32.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:10:32.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-11-25T02:10:32.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-11-25T02:10:32.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:10:32.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:10:32.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:10:32.826 [DEBUG] [Thread-201039] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:10:32.960 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:41.002 [DEBUG] [Thread-201041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:43.373 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:46.817 [DEBUG] [Thread-201042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:53.793 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:10:56.135 [DEBUG] [Thread-201043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:02.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:11:02.855 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:11:02.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-11-25T02:11:03.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 10, 26), 13.1, 40.18, 0.0, 25.48, 12.23, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:11:03.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:10:26
2025-11-25T02:11:03.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:11:04.016 [DEBUG] [Thread-201044] [transport.py] [_log()] starting thread (client mode): 0xd0712110
2025-11-25T02:11:04.017 [DEBUG] [Thread-201044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:11:04.027 [DEBUG] [Thread-201044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:11:04.027 [INFO] [Thread-201044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:11:04.034 [DEBUG] [Thread-201044] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:11:04.034 [DEBUG] [Thread-201044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:11:04.034 [DEBUG] [Thread-201044] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:11:04.034 [DEBUG] [Thread-201044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:11:04.034 [DEBUG] [Thread-201044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:11:04.034 [DEBUG] [Thread-201044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:11:04.034 [DEBUG] [Thread-201044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:11:04.035 [DEBUG] [Thread-201044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:11:04.035 [DEBUG] [Thread-201044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:11:04.035 [DEBUG] [Thread-201044] [transport.py] [_log()] client lang: <none>
2025-11-25T02:11:04.035 [DEBUG] [Thread-201044] [transport.py] [_log()] server lang: <none>
2025-11-25T02:11:04.035 [DEBUG] [Thread-201044] [transport.py] [_log()] kex follows: False
2025-11-25T02:11:04.035 [DEBUG] [Thread-201044] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:11:04.036 [DEBUG] [Thread-201044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:11:04.036 [DEBUG] [Thread-201044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:11:04.036 [DEBUG] [Thread-201044] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:11:04.037 [DEBUG] [Thread-201044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:11:04.037 [DEBUG] [Thread-201044] [transport.py] [_log()] Compression: none
2025-11-25T02:11:04.037 [DEBUG] [Thread-201044] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:11:04.079 [DEBUG] [Thread-201044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:11:04.084 [DEBUG] [Thread-201044] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:11:04.086 [DEBUG] [Thread-201044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:11:04.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:11:04.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:11:04.092 [DEBUG] [Thread-201044] [transport.py] [_log()] userauth is OK
2025-11-25T02:11:04.092 [DEBUG] [Thread-201044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:11:04.093 [DEBUG] [Thread-201044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:11:04.093 [DEBUG] [Thread-201044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:11:04.093 [DEBUG] [Thread-201044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:11:04.131 [INFO] [Thread-201044] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:11:04.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:11:04.321 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:04.739 [DEBUG] [Thread-201044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:11:04.739 [DEBUG] [Thread-201044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:11:04.741 [DEBUG] [Thread-201044] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:11:04.780 [DEBUG] [Thread-201044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:11:04.780 [DEBUG] [Thread-201044] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:11:04.784 [DEBUG] [Thread-201044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:11:04.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:11:04.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:11:04.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:11:04.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:11:04.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:11:04.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:11:04.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:11:04.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:11:04.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:11:04.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.007334 -999.00  +12.30  19.86     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 19.9 19.9 127.0 27.1 12.8 -24.9 12.6 -24.5 12.3 -23.3 12.6 -24.3
2025-11-25T02:11:04.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:11:04.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:11:04.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.007334
2025-11-25T02:11:04.819 [DEBUG] [Thread-201044] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:11:04.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:11:04.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:11:04.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:11:04.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:11:04.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:11:04.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:10:26', tmtdew=13.1, humidity=40.18, cloud=0.0, wind=25.48, temperature=12.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:10:59', seeing=1.26, atlas_timestamp='2025-11-25T00:10:33.658', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:08:00')
2025-11-25T02:11:04.925 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:11:04.937 [DEBUG] [Thread-201047] [transport.py] [_log()] starting thread (client mode): 0xd0787220
2025-11-25T02:11:04.937 [DEBUG] [Thread-201047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:11:04.951 [DEBUG] [Thread-201047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:11:04.952 [INFO] [Thread-201047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:11:04.959 [DEBUG] [Thread-201047] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:11:04.959 [DEBUG] [Thread-201047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:11:04.959 [DEBUG] [Thread-201047] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:11:04.959 [DEBUG] [Thread-201047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:11:04.959 [DEBUG] [Thread-201047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:11:04.959 [DEBUG] [Thread-201047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] client lang: <none>
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] server lang: <none>
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] kex follows: False
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] Compression: none
2025-11-25T02:11:04.960 [DEBUG] [Thread-201047] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:11:05.022 [DEBUG] [Thread-201047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:11:05.023 [DEBUG] [Thread-201047] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:11:05.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:11:05.024 [DEBUG] [Thread-201047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:11:05.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:11:05.082 [DEBUG] [Thread-201047] [transport.py] [_log()] userauth is OK
2025-11-25T02:11:05.082 [DEBUG] [Thread-201047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:11:05.082 [DEBUG] [Thread-201047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:11:05.083 [DEBUG] [Thread-201047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:11:05.083 [DEBUG] [Thread-201047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:11:05.101 [INFO] [Thread-201047] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:11:05.102 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:11:05.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:11:05.929 [DEBUG] [Thread-201047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:11:05.930 [DEBUG] [Thread-201047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:11:05.978 [DEBUG] [Thread-201047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:11:05.978 [DEBUG] [Thread-201047] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:11:05.987 [DEBUG] [Thread-201047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:11:05.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:11:05.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-11-25T02:11:06.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-11-25T02:11:06.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:11:06.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:11:06.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:11:06.023 [DEBUG] [Thread-201047] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:11:11.185 [DEBUG] [Thread-201049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:14.888 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:25.327 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:26.323 [DEBUG] [Thread-201050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:31.033 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:31.036 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:35.897 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:36.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:11:36.048 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:11:36.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:11:36.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 11, 33), 13.0, 40.31, 0.0, 26.04, 12.23, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:11:36.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:11:33
2025-11-25T02:11:36.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:11:37.178 [DEBUG] [Thread-201051] [transport.py] [_log()] starting thread (client mode): 0xd0711ea0
2025-11-25T02:11:37.179 [DEBUG] [Thread-201051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:11:37.191 [DEBUG] [Thread-201051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:11:37.191 [INFO] [Thread-201051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:11:37.197 [DEBUG] [Thread-201051] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:11:37.197 [DEBUG] [Thread-201051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] client lang: <none>
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] server lang: <none>
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] kex follows: False
2025-11-25T02:11:37.198 [DEBUG] [Thread-201051] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:11:37.199 [DEBUG] [Thread-201051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:11:37.199 [DEBUG] [Thread-201051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:11:37.200 [DEBUG] [Thread-201051] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:11:37.200 [DEBUG] [Thread-201051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:11:37.200 [DEBUG] [Thread-201051] [transport.py] [_log()] Compression: none
2025-11-25T02:11:37.200 [DEBUG] [Thread-201051] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:11:37.236 [DEBUG] [Thread-201051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:11:37.242 [DEBUG] [Thread-201051] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:11:37.244 [DEBUG] [Thread-201051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:11:37.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:11:37.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:11:37.249 [DEBUG] [Thread-201051] [transport.py] [_log()] userauth is OK
2025-11-25T02:11:37.249 [DEBUG] [Thread-201051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:11:37.250 [DEBUG] [Thread-201051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:11:37.250 [DEBUG] [Thread-201051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:11:37.250 [DEBUG] [Thread-201051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:11:37.288 [INFO] [Thread-201051] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:11:37.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:11:37.902 [DEBUG] [Thread-201051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:11:37.902 [DEBUG] [Thread-201051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:11:37.912 [DEBUG] [Thread-201051] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:11:37.943 [DEBUG] [Thread-201051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:11:37.943 [DEBUG] [Thread-201051] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:11:37.946 [DEBUG] [Thread-201051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:11:37.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:11:37.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:11:37.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:11:37.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:11:37.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:11:37.971 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:11:37.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:11:37.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:11:37.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:11:37.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.007681 -999.00  +12.30  19.28     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 19.3 19.3 123.8 24.3 12.7 -24.9 12.6 -24.4 12.3 -23.4 12.6 -24.2
2025-11-25T02:11:37.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:11:37.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:11:37.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.007681
2025-11-25T02:11:37.979 [DEBUG] [Thread-201051] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:11:37.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:11:37.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:11:37.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:11:38.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:11:38.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:11:38.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:11:33', tmtdew=13.0, humidity=40.31, cloud=0.0, wind=26.04, temperature=12.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:11:33', seeing=0.98, atlas_timestamp='2025-11-25T00:11:03.638', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:08:00')
2025-11-25T02:11:38.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:11:38.093 [DEBUG] [Thread-201054] [transport.py] [_log()] starting thread (client mode): 0xd3150c40
2025-11-25T02:11:38.093 [DEBUG] [Thread-201054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:11:38.107 [DEBUG] [Thread-201054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:11:38.108 [INFO] [Thread-201054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:11:38.115 [DEBUG] [Thread-201054] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:11:38.115 [DEBUG] [Thread-201054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:11:38.115 [DEBUG] [Thread-201054] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:11:38.115 [DEBUG] [Thread-201054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:11:38.115 [DEBUG] [Thread-201054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] client lang: <none>
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] server lang: <none>
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] kex follows: False
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] Compression: none
2025-11-25T02:11:38.116 [DEBUG] [Thread-201054] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:11:38.173 [DEBUG] [Thread-201054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:11:38.174 [DEBUG] [Thread-201054] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:11:38.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:11:38.175 [DEBUG] [Thread-201054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:11:38.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:11:38.230 [DEBUG] [Thread-201054] [transport.py] [_log()] userauth is OK
2025-11-25T02:11:38.231 [DEBUG] [Thread-201054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:11:38.231 [DEBUG] [Thread-201054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:11:38.231 [DEBUG] [Thread-201054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:11:38.231 [DEBUG] [Thread-201054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:11:38.250 [INFO] [Thread-201054] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:11:38.251 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:11:38.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:11:39.081 [DEBUG] [Thread-201054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:11:39.081 [DEBUG] [Thread-201054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:11:39.128 [DEBUG] [Thread-201054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:11:39.128 [DEBUG] [Thread-201054] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:11:39.137 [DEBUG] [Thread-201054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:11:39.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:11:39.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-11-25T02:11:39.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:11:39.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:11:39.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:11:39.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:11:39.182 [DEBUG] [Thread-201054] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:11:41.404 [DEBUG] [Thread-201056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:46.441 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:47.155 [DEBUG] [Thread-201057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:56.520 [DEBUG] [Thread-201058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:11:56.871 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:07.390 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:09.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:12:09.209 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:12:09.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-11-25T02:12:10.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 12, 6), 13.02, 40.26, 0.0, 25.8, 12.22, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:12:10.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:12:06
2025-11-25T02:12:10.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:12:10.369 [DEBUG] [Thread-201059] [transport.py] [_log()] starting thread (client mode): 0xd07857e0
2025-11-25T02:12:10.370 [DEBUG] [Thread-201059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:12:10.380 [DEBUG] [Thread-201059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:12:10.381 [INFO] [Thread-201059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:12:10.387 [DEBUG] [Thread-201059] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] client lang: <none>
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] server lang: <none>
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] kex follows: False
2025-11-25T02:12:10.388 [DEBUG] [Thread-201059] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:12:10.389 [DEBUG] [Thread-201059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:12:10.389 [DEBUG] [Thread-201059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:12:10.390 [DEBUG] [Thread-201059] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:12:10.390 [DEBUG] [Thread-201059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:12:10.390 [DEBUG] [Thread-201059] [transport.py] [_log()] Compression: none
2025-11-25T02:12:10.390 [DEBUG] [Thread-201059] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:12:10.432 [DEBUG] [Thread-201059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:12:10.437 [DEBUG] [Thread-201059] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:12:10.439 [DEBUG] [Thread-201059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:12:10.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:12:10.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:12:10.445 [DEBUG] [Thread-201059] [transport.py] [_log()] userauth is OK
2025-11-25T02:12:10.445 [DEBUG] [Thread-201059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:12:10.445 [DEBUG] [Thread-201059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:12:10.445 [DEBUG] [Thread-201059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:12:10.446 [DEBUG] [Thread-201059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:12:10.473 [INFO] [Thread-201059] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:12:10.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:12:11.118 [DEBUG] [Thread-201059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:12:11.118 [DEBUG] [Thread-201059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:12:11.119 [DEBUG] [Thread-201059] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:12:11.159 [DEBUG] [Thread-201059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:12:11.159 [DEBUG] [Thread-201059] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:12:11.162 [DEBUG] [Thread-201059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:12:11.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:12:11.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:12:11.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:12:11.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:12:11.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:12:11.184 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:12:11.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:12:11.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:12:11.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:12:11.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.008028 -999.00  +12.30  21.64     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.6 21.6 122.8 25.0 12.7 -24.8 12.6 -24.4 12.3 -23.3 12.6 -24.1
2025-11-25T02:12:11.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:12:11.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:12:11.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.008028
2025-11-25T02:12:11.190 [DEBUG] [Thread-201059] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:12:11.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:12:11.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:12:11.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:12:11.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:12:11.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:12:11.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:12:06', tmtdew=13.02, humidity=40.26, cloud=0.0, wind=25.8, temperature=12.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:12:06', seeing=1.06, atlas_timestamp='2025-11-25T00:11:33.619', atlas_cloud=1, atlas_rain=1, zp_data=[-0.012249999999999872, -0.007749999999999702, 0.01925000000000132, -0.027000000000001023, 0.007999999999999119, 0.054250000000001464, -0.002000000000000668, -0.03474999999999895, 0.00849999999999973, -0.017999999999998906, 0.003249999999999531, -0.0039999999999995595, 0.06799999999999962, 0.09724999999999895, -0.025500000000000966, -0.028999999999999915, 0.015249999999999986, 0.015499999999999403, -0.004000000000001336, -0.025750000000000384, 0.0804999999999989, 0.06524999999999892, 0.048250000000001236, -0.01574999999999882, 0.0034999999999989484, 0.046499999999999986, -0.003750000000000142, 0.015499999999999403, 0.1335000000000015, 0.05349999999999966, 0.07850000000000179, 0.0070000000000014495, -0.021250000000000213], zp_timestamp='2025-11-25T00:08:00')
2025-11-25T02:12:11.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:12:11.287 [DEBUG] [Thread-201062] [transport.py] [_log()] starting thread (client mode): 0xd0786f80
2025-11-25T02:12:11.287 [DEBUG] [Thread-201062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:12:11.303 [DEBUG] [Thread-201062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:12:11.303 [INFO] [Thread-201062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] client lang: <none>
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] server lang: <none>
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] kex follows: False
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:12:11.311 [DEBUG] [Thread-201062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:12:11.312 [DEBUG] [Thread-201062] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:12:11.312 [DEBUG] [Thread-201062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:12:11.312 [DEBUG] [Thread-201062] [transport.py] [_log()] Compression: none
2025-11-25T02:12:11.312 [DEBUG] [Thread-201062] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:12:11.368 [DEBUG] [Thread-201062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:12:11.368 [DEBUG] [Thread-201062] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:12:11.369 [DEBUG] [Thread-201062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:12:11.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:12:11.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:12:11.427 [DEBUG] [Thread-201062] [transport.py] [_log()] userauth is OK
2025-11-25T02:12:11.427 [DEBUG] [Thread-201062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:12:11.427 [DEBUG] [Thread-201062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:12:11.427 [DEBUG] [Thread-201062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:12:11.427 [DEBUG] [Thread-201062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:12:11.441 [INFO] [Thread-201062] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:12:11.441 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:12:11.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:12:11.573 [DEBUG] [Thread-201064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:12.280 [DEBUG] [Thread-201062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:12:12.281 [DEBUG] [Thread-201062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:12:12.329 [DEBUG] [Thread-201062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:12:12.329 [DEBUG] [Thread-201062] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:12:12.338 [DEBUG] [Thread-201062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:12:12.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:12:12.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-11-25T02:12:12.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-11-25T02:12:12.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:12:12.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:12:12.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:12:12.378 [DEBUG] [Thread-201062] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:12:17.796 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:26.710 [DEBUG] [Thread-201065 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:28.329 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:31.241 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:31.244 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:38.741 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:41.775 [DEBUG] [Thread-201066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:42.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:12:42.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:12:42.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:12:43.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 12, 39), 13.02, 40.26, 0.0, 25.67, 12.22, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:12:43.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:12:39
2025-11-25T02:12:43.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:12:43.653 [DEBUG] [Thread-201067] [transport.py] [_log()] starting thread (client mode): 0xd07849a0
2025-11-25T02:12:43.654 [DEBUG] [Thread-201067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:12:43.654 [DEBUG] [Thread-201067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:12:43.654 [INFO] [Thread-201067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] client lang: <none>
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] server lang: <none>
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] kex follows: False
2025-11-25T02:12:43.669 [DEBUG] [Thread-201067] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:12:43.670 [DEBUG] [Thread-201067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:12:43.670 [DEBUG] [Thread-201067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:12:43.670 [DEBUG] [Thread-201067] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:12:43.670 [DEBUG] [Thread-201067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:12:43.670 [DEBUG] [Thread-201067] [transport.py] [_log()] Compression: none
2025-11-25T02:12:43.670 [DEBUG] [Thread-201067] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:12:43.719 [DEBUG] [Thread-201067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:12:43.724 [DEBUG] [Thread-201067] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:12:43.726 [DEBUG] [Thread-201067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:12:43.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:12:43.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:12:43.730 [DEBUG] [Thread-201067] [transport.py] [_log()] userauth is OK
2025-11-25T02:12:43.730 [DEBUG] [Thread-201067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:12:43.730 [DEBUG] [Thread-201067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:12:43.730 [DEBUG] [Thread-201067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:12:43.730 [DEBUG] [Thread-201067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:12:43.751 [INFO] [Thread-201067] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:12:43.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:12:44.404 [DEBUG] [Thread-201067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:12:44.404 [DEBUG] [Thread-201067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:12:44.405 [DEBUG] [Thread-201067] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:12:44.445 [DEBUG] [Thread-201067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:12:44.445 [DEBUG] [Thread-201067] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:12:44.448 [DEBUG] [Thread-201067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:12:44.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:12:44.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:12:44.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:12:44.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:12:44.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:12:44.469 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:12:44.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:12:44.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:12:44.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:12:44.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.008375 -999.00  +12.30  18.40     45   +0.80 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 18.4 18.4 125.4 23.1 12.7 -24.9 12.6 -24.4 12.3 -23.3 12.7 -24.2
2025-11-25T02:12:44.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:12:44.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:12:44.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.008375
2025-11-25T02:12:44.476 [DEBUG] [Thread-201067] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:12:44.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:12:44.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:12:44.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:12:44.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:12:44.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:12:44.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:12:39', tmtdew=13.02, humidity=40.26, cloud=0.0, wind=25.67, temperature=12.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:12:39', seeing=0.9, atlas_timestamp='2025-11-25T00:12:03.600', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03625000000000078, -0.055749999999999744, -0.024250000000000327, -0.06350000000000122, 0.0005000000000006111, 0.03825000000000145, -0.03200000000000003, -0.020749999999999602, -0.012500000000001066, -0.03149999999999942, -0.02224999999999966, 0.002000000000000668, 0.054999999999999716, 0.06675000000000075, -0.051000000000000156, -0.05900000000000105, 0.006249999999999645, -0.03200000000000003, -0.025000000000000355, -0.05375000000000085, 0.06449999999999889, 0.05424999999999969, 0.01025000000000098, -0.027749999999999275, -0.014000000000001123, 0.04049999999999976, -0.03725000000000023, -0.005499999999999616, 0.11500000000000021, 0.05850000000000222, 0.034000000000000696, -0.014499999999998181, -0.016250000000001208], zp_timestamp='2025-11-25T00:11:00')
2025-11-25T02:12:44.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:12:44.577 [DEBUG] [Thread-201070] [transport.py] [_log()] starting thread (client mode): 0xd07ceec0
2025-11-25T02:12:44.577 [DEBUG] [Thread-201070] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:12:44.591 [DEBUG] [Thread-201070] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:12:44.591 [INFO] [Thread-201070] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] client lang: <none>
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] server lang: <none>
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] kex follows: False
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] Compression: none
2025-11-25T02:12:44.599 [DEBUG] [Thread-201070] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:12:44.657 [DEBUG] [Thread-201070] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:12:44.657 [DEBUG] [Thread-201070] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:12:44.657 [DEBUG] [Thread-201070] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:12:44.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:12:44.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:12:44.713 [DEBUG] [Thread-201070] [transport.py] [_log()] userauth is OK
2025-11-25T02:12:44.713 [DEBUG] [Thread-201070] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:12:44.714 [DEBUG] [Thread-201070] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:12:44.714 [DEBUG] [Thread-201070] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:12:44.714 [DEBUG] [Thread-201070] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:12:44.727 [INFO] [Thread-201070] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:12:44.727 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:12:44.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:12:45.577 [DEBUG] [Thread-201070] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:12:45.577 [DEBUG] [Thread-201070] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:12:45.625 [DEBUG] [Thread-201070] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:12:45.625 [DEBUG] [Thread-201070] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:12:45.633 [DEBUG] [Thread-201070] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:12:45.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:12:45.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-11-25T02:12:45.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-11-25T02:12:45.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:12:45.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:12:45.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:12:45.668 [DEBUG] [Thread-201070] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:12:47.434 [DEBUG] [Thread-201072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:49.271 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:56.848 [DEBUG] [Thread-201073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:12:59.721 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:10.185 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:12.052 [DEBUG] [Thread-201074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:15.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:13:15.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:13:15.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-11-25T02:13:16.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 13, 12), 13.01, 40.29, 0.0, 25.78, 12.23, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:13:16.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:13:12
2025-11-25T02:13:16.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:13:16.923 [DEBUG] [Thread-201075] [transport.py] [_log()] starting thread (client mode): 0xc9b765c0
2025-11-25T02:13:16.924 [DEBUG] [Thread-201075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:13:16.932 [DEBUG] [Thread-201075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:13:16.933 [INFO] [Thread-201075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] client lang: <none>
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] server lang: <none>
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] kex follows: False
2025-11-25T02:13:16.939 [DEBUG] [Thread-201075] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:13:16.940 [DEBUG] [Thread-201075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:13:16.940 [DEBUG] [Thread-201075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:13:16.940 [DEBUG] [Thread-201075] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:13:16.940 [DEBUG] [Thread-201075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:13:16.940 [DEBUG] [Thread-201075] [transport.py] [_log()] Compression: none
2025-11-25T02:13:16.940 [DEBUG] [Thread-201075] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:13:16.974 [DEBUG] [Thread-201075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:13:16.978 [DEBUG] [Thread-201075] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:13:16.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:13:16.981 [DEBUG] [Thread-201075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:13:16.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:13:16.984 [DEBUG] [Thread-201075] [transport.py] [_log()] userauth is OK
2025-11-25T02:13:16.984 [DEBUG] [Thread-201075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:13:16.984 [DEBUG] [Thread-201075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:13:16.984 [DEBUG] [Thread-201075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:13:16.984 [DEBUG] [Thread-201075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:13:17.004 [INFO] [Thread-201075] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:13:17.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:13:17.633 [DEBUG] [Thread-201075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:13:17.633 [DEBUG] [Thread-201075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:13:17.634 [DEBUG] [Thread-201075] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:13:17.674 [DEBUG] [Thread-201075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:13:17.674 [DEBUG] [Thread-201075] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:13:17.677 [DEBUG] [Thread-201075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:13:17.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:13:17.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:13:17.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:13:17.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:13:17.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:13:17.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:13:17.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:13:17.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:13:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:13:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.009070 -999.00  +12.30  21.68     45   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.7 21.7 120.8 25.1 12.7 -24.8 12.6 -24.4 12.3 -23.3 12.6 -24.3
2025-11-25T02:13:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:13:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:13:17.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.009070
2025-11-25T02:13:17.707 [DEBUG] [Thread-201075] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:13:17.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:13:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:13:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:13:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:13:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:13:17.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:13:12', tmtdew=13.01, humidity=40.29, cloud=0.0, wind=25.78, temperature=12.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:13:12', seeing=0.93, atlas_timestamp='2025-11-25T00:13:03.648', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03625000000000078, -0.055749999999999744, -0.024250000000000327, -0.06350000000000122, 0.0005000000000006111, 0.03825000000000145, -0.03200000000000003, -0.020749999999999602, -0.012500000000001066, -0.03149999999999942, -0.02224999999999966, 0.002000000000000668, 0.054999999999999716, 0.06675000000000075, -0.051000000000000156, -0.05900000000000105, 0.006249999999999645, -0.03200000000000003, -0.025000000000000355, -0.05375000000000085, 0.06449999999999889, 0.05424999999999969, 0.01025000000000098, -0.027749999999999275, -0.014000000000001123, 0.04049999999999976, -0.03725000000000023, -0.005499999999999616, 0.11500000000000021, 0.05850000000000222, 0.034000000000000696, -0.014499999999998181, -0.016250000000001208], zp_timestamp='2025-11-25T00:11:00')
2025-11-25T02:13:17.796 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:13:17.808 [DEBUG] [Thread-201078] [transport.py] [_log()] starting thread (client mode): 0xd319efe0
2025-11-25T02:13:17.808 [DEBUG] [Thread-201078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:13:17.823 [DEBUG] [Thread-201078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:13:17.823 [INFO] [Thread-201078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] client lang: <none>
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] server lang: <none>
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] kex follows: False
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] Compression: none
2025-11-25T02:13:17.831 [DEBUG] [Thread-201078] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:13:17.889 [DEBUG] [Thread-201078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:13:17.889 [DEBUG] [Thread-201078] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:13:17.889 [DEBUG] [Thread-201078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:13:17.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:13:17.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:13:17.945 [DEBUG] [Thread-201078] [transport.py] [_log()] userauth is OK
2025-11-25T02:13:17.945 [DEBUG] [Thread-201078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:13:17.945 [DEBUG] [Thread-201078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:13:17.945 [DEBUG] [Thread-201078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:13:17.945 [DEBUG] [Thread-201078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:13:17.959 [INFO] [Thread-201078] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:13:17.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:13:17.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:13:18.784 [DEBUG] [Thread-201078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:13:18.785 [DEBUG] [Thread-201078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:13:18.833 [DEBUG] [Thread-201078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:13:18.833 [DEBUG] [Thread-201078] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:13:18.842 [DEBUG] [Thread-201078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:13:18.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:13:18.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:13:18.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-11-25T02:13:18.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:13:18.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:13:18.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:13:18.882 [DEBUG] [Thread-201078] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:13:20.616 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:27.119 [DEBUG] [Thread-201080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:31.090 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:31.454 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:31.456 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:41.565 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:42.271 [DEBUG] [Thread-201081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:47.722 [DEBUG] [Thread-201082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:48.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:13:48.907 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:13:48.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-11-25T02:13:49.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 13, 45), 12.93, 40.86, 0.0, 26.71, 12.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:13:49.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:13:45
2025-11-25T02:13:49.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:13:50.081 [DEBUG] [Thread-201083] [transport.py] [_log()] starting thread (client mode): 0xd07115d0
2025-11-25T02:13:50.082 [DEBUG] [Thread-201083] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:13:50.093 [DEBUG] [Thread-201083] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:13:50.093 [INFO] [Thread-201083] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:13:50.099 [DEBUG] [Thread-201083] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:13:50.099 [DEBUG] [Thread-201083] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:13:50.099 [DEBUG] [Thread-201083] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:13:50.099 [DEBUG] [Thread-201083] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:13:50.099 [DEBUG] [Thread-201083] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:13:50.099 [DEBUG] [Thread-201083] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:13:50.100 [DEBUG] [Thread-201083] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:13:50.100 [DEBUG] [Thread-201083] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:13:50.100 [DEBUG] [Thread-201083] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:13:50.100 [DEBUG] [Thread-201083] [transport.py] [_log()] client lang: <none>
2025-11-25T02:13:50.100 [DEBUG] [Thread-201083] [transport.py] [_log()] server lang: <none>
2025-11-25T02:13:50.100 [DEBUG] [Thread-201083] [transport.py] [_log()] kex follows: False
2025-11-25T02:13:50.100 [DEBUG] [Thread-201083] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:13:50.101 [DEBUG] [Thread-201083] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:13:50.101 [DEBUG] [Thread-201083] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:13:50.101 [DEBUG] [Thread-201083] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:13:50.101 [DEBUG] [Thread-201083] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:13:50.101 [DEBUG] [Thread-201083] [transport.py] [_log()] Compression: none
2025-11-25T02:13:50.101 [DEBUG] [Thread-201083] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:13:50.132 [DEBUG] [Thread-201083] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:13:50.137 [DEBUG] [Thread-201083] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:13:50.139 [DEBUG] [Thread-201083] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:13:50.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:13:50.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:13:50.145 [DEBUG] [Thread-201083] [transport.py] [_log()] userauth is OK
2025-11-25T02:13:50.146 [DEBUG] [Thread-201083] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:13:50.146 [DEBUG] [Thread-201083] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:13:50.146 [DEBUG] [Thread-201083] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:13:50.146 [DEBUG] [Thread-201083] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:13:50.185 [INFO] [Thread-201083] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:13:50.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:13:50.813 [DEBUG] [Thread-201083] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:13:50.813 [DEBUG] [Thread-201083] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:13:50.816 [DEBUG] [Thread-201083] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:13:50.854 [DEBUG] [Thread-201083] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:13:50.855 [DEBUG] [Thread-201083] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:13:50.859 [DEBUG] [Thread-201083] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:13:50.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:13:50.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:13:50.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:13:50.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:13:50.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:13:50.888 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:13:50.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:13:50.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:13:50.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:13:50.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.009417 -999.00  +12.30  19.28     45   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 19.3 19.3 128.8 23.7 12.7 -25.0 12.5 -24.5 12.3 -23.4 12.6 -24.3
2025-11-25T02:13:50.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:13:50.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:13:50.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.009417
2025-11-25T02:13:50.896 [DEBUG] [Thread-201083] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:13:50.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:13:50.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:13:50.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:13:50.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:13:50.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:13:50.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:13:45', tmtdew=12.93, humidity=40.86, cloud=0.0, wind=26.71, temperature=12.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:13:45', seeing=0.93, atlas_timestamp='2025-11-25T00:13:33.629', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03625000000000078, -0.055749999999999744, -0.024250000000000327, -0.06350000000000122, 0.0005000000000006111, 0.03825000000000145, -0.03200000000000003, -0.020749999999999602, -0.012500000000001066, -0.03149999999999942, -0.02224999999999966, 0.002000000000000668, 0.054999999999999716, 0.06675000000000075, -0.051000000000000156, -0.05900000000000105, 0.006249999999999645, -0.03200000000000003, -0.025000000000000355, -0.05375000000000085, 0.06449999999999889, 0.05424999999999969, 0.01025000000000098, -0.027749999999999275, -0.014000000000001123, 0.04049999999999976, -0.03725000000000023, -0.005499999999999616, 0.11500000000000021, 0.05850000000000222, 0.034000000000000696, -0.014499999999998181, -0.016250000000001208], zp_timestamp='2025-11-25T00:11:00')
2025-11-25T02:13:51.001 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:13:51.013 [DEBUG] [Thread-201086] [transport.py] [_log()] starting thread (client mode): 0xd31510c0
2025-11-25T02:13:51.014 [DEBUG] [Thread-201086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:13:51.028 [DEBUG] [Thread-201086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:13:51.028 [INFO] [Thread-201086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:13:51.036 [DEBUG] [Thread-201086] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:13:51.036 [DEBUG] [Thread-201086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:13:51.036 [DEBUG] [Thread-201086] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:13:51.036 [DEBUG] [Thread-201086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:13:51.036 [DEBUG] [Thread-201086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:13:51.036 [DEBUG] [Thread-201086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:13:51.036 [DEBUG] [Thread-201086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:13:51.036 [DEBUG] [Thread-201086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] client lang: <none>
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] server lang: <none>
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] kex follows: False
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] Compression: none
2025-11-25T02:13:51.037 [DEBUG] [Thread-201086] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:13:51.097 [DEBUG] [Thread-201086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:13:51.098 [DEBUG] [Thread-201086] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:13:51.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:13:51.099 [DEBUG] [Thread-201086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:13:51.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:13:51.154 [DEBUG] [Thread-201086] [transport.py] [_log()] userauth is OK
2025-11-25T02:13:51.154 [DEBUG] [Thread-201086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:13:51.154 [DEBUG] [Thread-201086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:13:51.154 [DEBUG] [Thread-201086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:13:51.154 [DEBUG] [Thread-201086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:13:51.173 [INFO] [Thread-201086] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:13:51.173 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:13:51.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:13:51.995 [DEBUG] [Thread-201086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:13:51.995 [DEBUG] [Thread-201086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:13:52.043 [DEBUG] [Thread-201086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:13:52.043 [DEBUG] [Thread-201086] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:13:52.052 [DEBUG] [Thread-201086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:13:52.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:13:52.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-11-25T02:13:52.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-11-25T02:13:52.079 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:13:52.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:13:52.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:13:52.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:13:52.095 [DEBUG] [Thread-201086] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:13:57.341 [DEBUG] [Thread-201088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:02.533 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:12.498 [DEBUG] [Thread-201089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:13.008 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:22.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:14:22.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:14:22.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-11-25T02:14:22.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 14, 18), 12.95, 40.81, 0.0, 26.11, 12.17, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:14:22.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:14:18
2025-11-25T02:14:23.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:14:23.250 [DEBUG] [Thread-201090] [transport.py] [_log()] starting thread (client mode): 0xc9b74ac0
2025-11-25T02:14:23.251 [DEBUG] [Thread-201090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:14:23.261 [DEBUG] [Thread-201090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:14:23.261 [INFO] [Thread-201090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:14:23.267 [DEBUG] [Thread-201090] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:14:23.267 [DEBUG] [Thread-201090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:14:23.267 [DEBUG] [Thread-201090] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:14:23.268 [DEBUG] [Thread-201090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:14:23.268 [DEBUG] [Thread-201090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:14:23.268 [DEBUG] [Thread-201090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:14:23.268 [DEBUG] [Thread-201090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:14:23.268 [DEBUG] [Thread-201090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:14:23.268 [DEBUG] [Thread-201090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:14:23.268 [DEBUG] [Thread-201090] [transport.py] [_log()] client lang: <none>
2025-11-25T02:14:23.268 [DEBUG] [Thread-201090] [transport.py] [_log()] server lang: <none>
2025-11-25T02:14:23.268 [DEBUG] [Thread-201090] [transport.py] [_log()] kex follows: False
2025-11-25T02:14:23.268 [DEBUG] [Thread-201090] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:14:23.269 [DEBUG] [Thread-201090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:14:23.269 [DEBUG] [Thread-201090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:14:23.270 [DEBUG] [Thread-201090] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:14:23.270 [DEBUG] [Thread-201090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:14:23.270 [DEBUG] [Thread-201090] [transport.py] [_log()] Compression: none
2025-11-25T02:14:23.270 [DEBUG] [Thread-201090] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:14:23.301 [DEBUG] [Thread-201090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:14:23.307 [DEBUG] [Thread-201090] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:14:23.309 [DEBUG] [Thread-201090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:14:23.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:14:23.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:14:23.314 [DEBUG] [Thread-201090] [transport.py] [_log()] userauth is OK
2025-11-25T02:14:23.315 [DEBUG] [Thread-201090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:14:23.315 [DEBUG] [Thread-201090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:14:23.315 [DEBUG] [Thread-201090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:14:23.315 [DEBUG] [Thread-201090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:14:23.342 [INFO] [Thread-201090] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:14:23.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:14:23.605 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:23.950 [DEBUG] [Thread-201090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:14:23.950 [DEBUG] [Thread-201090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:14:23.951 [DEBUG] [Thread-201090] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:14:23.990 [DEBUG] [Thread-201090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:14:23.991 [DEBUG] [Thread-201090] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:14:23.994 [DEBUG] [Thread-201090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:14:24.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:14:24.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:14:24.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:14:24.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:14:24.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:14:24.023 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:14:24.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:14:24.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:14:24.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:14:24.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.009764 -999.00  +12.30  23.41     45   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.4 23.4 126.6 27.8 12.7 -25.0 12.6 -24.6 12.3 -23.4 12.6 -24.3
2025-11-25T02:14:24.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:14:24.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:14:24.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.009764
2025-11-25T02:14:24.030 [DEBUG] [Thread-201090] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:14:24.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:14:24.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:14:24.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:14:24.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:14:24.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:14:24.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:14:18', tmtdew=12.95, humidity=40.81, cloud=0.0, wind=26.11, temperature=12.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:14:18', seeing=0.68, atlas_timestamp='2025-11-25T00:14:03.610', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03625000000000078, -0.055749999999999744, -0.024250000000000327, -0.06350000000000122, 0.0005000000000006111, 0.03825000000000145, -0.03200000000000003, -0.020749999999999602, -0.012500000000001066, -0.03149999999999942, -0.02224999999999966, 0.002000000000000668, 0.054999999999999716, 0.06675000000000075, -0.051000000000000156, -0.05900000000000105, 0.006249999999999645, -0.03200000000000003, -0.025000000000000355, -0.05375000000000085, 0.06449999999999889, 0.05424999999999969, 0.01025000000000098, -0.027749999999999275, -0.014000000000001123, 0.04049999999999976, -0.03725000000000023, -0.005499999999999616, 0.11500000000000021, 0.05850000000000222, 0.034000000000000696, -0.014499999999998181, -0.016250000000001208], zp_timestamp='2025-11-25T00:11:00')
2025-11-25T02:14:24.130 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:14:24.143 [DEBUG] [Thread-201093] [transport.py] [_log()] starting thread (client mode): 0xd317dea0
2025-11-25T02:14:24.143 [DEBUG] [Thread-201093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:14:24.162 [DEBUG] [Thread-201093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:14:24.163 [INFO] [Thread-201093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] client lang: <none>
2025-11-25T02:14:24.170 [DEBUG] [Thread-201093] [transport.py] [_log()] server lang: <none>
2025-11-25T02:14:24.171 [DEBUG] [Thread-201093] [transport.py] [_log()] kex follows: False
2025-11-25T02:14:24.171 [DEBUG] [Thread-201093] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:14:24.171 [DEBUG] [Thread-201093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:14:24.171 [DEBUG] [Thread-201093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:14:24.171 [DEBUG] [Thread-201093] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:14:24.171 [DEBUG] [Thread-201093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:14:24.171 [DEBUG] [Thread-201093] [transport.py] [_log()] Compression: none
2025-11-25T02:14:24.171 [DEBUG] [Thread-201093] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:14:24.230 [DEBUG] [Thread-201093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:14:24.231 [DEBUG] [Thread-201093] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:14:24.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:14:24.232 [DEBUG] [Thread-201093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:14:24.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:14:24.290 [DEBUG] [Thread-201093] [transport.py] [_log()] userauth is OK
2025-11-25T02:14:24.290 [DEBUG] [Thread-201093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:14:24.290 [DEBUG] [Thread-201093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:14:24.290 [DEBUG] [Thread-201093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:14:24.290 [DEBUG] [Thread-201093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:14:24.310 [INFO] [Thread-201093] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:14:24.310 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:14:24.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:14:25.176 [DEBUG] [Thread-201093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:14:25.176 [DEBUG] [Thread-201093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:14:25.223 [DEBUG] [Thread-201093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:14:25.223 [DEBUG] [Thread-201093] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:14:25.232 [DEBUG] [Thread-201093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:14:25.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:14:25.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-11-25T02:14:25.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:14:25.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:14:25.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:14:25.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:14:25.267 [DEBUG] [Thread-201093] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:14:27.601 [DEBUG] [Thread-201095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:31.672 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:31.673 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:34.134 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:42.737 [DEBUG] [Thread-201096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:44.849 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:47.990 [DEBUG] [Thread-201097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:55.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:14:55.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:14:55.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-11-25T02:14:55.398 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:56.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 14, 51), 13.0, 40.81, 0.0, 25.73, 12.25, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:14:56.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:14:51
2025-11-25T02:14:56.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:14:56.444 [DEBUG] [Thread-201098] [transport.py] [_log()] starting thread (client mode): 0xc9b74f70
2025-11-25T02:14:56.445 [DEBUG] [Thread-201098] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:14:56.453 [DEBUG] [Thread-201098] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:14:56.453 [INFO] [Thread-201098] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:14:56.458 [DEBUG] [Thread-201098] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] client lang: <none>
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] server lang: <none>
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] kex follows: False
2025-11-25T02:14:56.459 [DEBUG] [Thread-201098] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:14:56.460 [DEBUG] [Thread-201098] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:14:56.460 [DEBUG] [Thread-201098] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:14:56.460 [DEBUG] [Thread-201098] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:14:56.461 [DEBUG] [Thread-201098] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:14:56.461 [DEBUG] [Thread-201098] [transport.py] [_log()] Compression: none
2025-11-25T02:14:56.461 [DEBUG] [Thread-201098] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:14:56.497 [DEBUG] [Thread-201098] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:14:56.501 [DEBUG] [Thread-201098] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:14:56.503 [DEBUG] [Thread-201098] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:14:56.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:14:56.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:14:56.508 [DEBUG] [Thread-201098] [transport.py] [_log()] userauth is OK
2025-11-25T02:14:56.509 [DEBUG] [Thread-201098] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:14:56.509 [DEBUG] [Thread-201098] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:14:56.509 [DEBUG] [Thread-201098] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:14:56.509 [DEBUG] [Thread-201098] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:14:56.536 [INFO] [Thread-201098] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:14:56.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:14:57.128 [DEBUG] [Thread-201098] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:14:57.128 [DEBUG] [Thread-201098] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:14:57.130 [DEBUG] [Thread-201098] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:14:57.169 [DEBUG] [Thread-201098] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:14:57.169 [DEBUG] [Thread-201098] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:14:57.173 [DEBUG] [Thread-201098] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:14:57.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:14:57.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:14:57.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:14:57.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:14:57.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:14:57.198 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:14:57.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:14:57.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:14:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:14:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.010111 -999.00  +12.30  25.00     45   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 25.0 25.0 131.6 29.6 12.7 -25.0 12.6 -24.4 12.3 -23.3 12.6 -24.5
2025-11-25T02:14:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:14:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:14:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.010111
2025-11-25T02:14:57.206 [DEBUG] [Thread-201098] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:14:57.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:14:57.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:14:57.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:14:57.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:14:57.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:14:57.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:14:51', tmtdew=13.0, humidity=40.81, cloud=0.0, wind=25.73, temperature=12.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:14:52', seeing=0.98, atlas_timestamp='2025-11-25T00:14:33.590', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03625000000000078, -0.055749999999999744, -0.024250000000000327, -0.06350000000000122, 0.0005000000000006111, 0.03825000000000145, -0.03200000000000003, -0.020749999999999602, -0.012500000000001066, -0.03149999999999942, -0.02224999999999966, 0.002000000000000668, 0.054999999999999716, 0.06675000000000075, -0.051000000000000156, -0.05900000000000105, 0.006249999999999645, -0.03200000000000003, -0.025000000000000355, -0.05375000000000085, 0.06449999999999889, 0.05424999999999969, 0.01025000000000098, -0.027749999999999275, -0.014000000000001123, 0.04049999999999976, -0.03725000000000023, -0.005499999999999616, 0.11500000000000021, 0.05850000000000222, 0.034000000000000696, -0.014499999999998181, -0.016250000000001208], zp_timestamp='2025-11-25T00:11:00')
2025-11-25T02:14:57.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:14:57.318 [DEBUG] [Thread-201101] [transport.py] [_log()] starting thread (client mode): 0xc9b746d0
2025-11-25T02:14:57.318 [DEBUG] [Thread-201101] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:14:57.333 [DEBUG] [Thread-201101] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:14:57.333 [INFO] [Thread-201101] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] client lang: <none>
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] server lang: <none>
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] kex follows: False
2025-11-25T02:14:57.341 [DEBUG] [Thread-201101] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:14:57.342 [DEBUG] [Thread-201101] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:14:57.342 [DEBUG] [Thread-201101] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:14:57.342 [DEBUG] [Thread-201101] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:14:57.342 [DEBUG] [Thread-201101] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:14:57.342 [DEBUG] [Thread-201101] [transport.py] [_log()] Compression: none
2025-11-25T02:14:57.342 [DEBUG] [Thread-201101] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:14:57.402 [DEBUG] [Thread-201101] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:14:57.402 [DEBUG] [Thread-201101] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:14:57.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:14:57.403 [DEBUG] [Thread-201101] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:14:57.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:14:57.457 [DEBUG] [Thread-201101] [transport.py] [_log()] userauth is OK
2025-11-25T02:14:57.457 [DEBUG] [Thread-201101] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:14:57.458 [DEBUG] [Thread-201101] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:14:57.458 [DEBUG] [Thread-201101] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:14:57.458 [DEBUG] [Thread-201101] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:14:57.478 [INFO] [Thread-201101] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:14:57.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:14:57.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:14:57.791 [DEBUG] [Thread-201103 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:14:58.318 [DEBUG] [Thread-201101] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:14:58.318 [DEBUG] [Thread-201101] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:14:58.368 [DEBUG] [Thread-201101] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:14:58.368 [DEBUG] [Thread-201101] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:14:58.377 [DEBUG] [Thread-201101] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:14:58.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:14:58.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-11-25T02:14:58.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-11-25T02:14:58.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:14:58.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:14:58.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:14:58.412 [DEBUG] [Thread-201101] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:15:05.845 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:12.987 [DEBUG] [Thread-201104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:16.310 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:26.776 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:28.101 [DEBUG] [Thread-201105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:28.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:15:28.436 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:15:28.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-11-25T02:15:29.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 15, 24), 12.97, 40.91, 0.0, 26.45, 12.22, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:15:29.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:15:24
2025-11-25T02:15:29.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:15:29.632 [DEBUG] [Thread-201106] [transport.py] [_log()] starting thread (client mode): 0xc9b76a70
2025-11-25T02:15:29.633 [DEBUG] [Thread-201106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:15:29.633 [DEBUG] [Thread-201106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:15:29.633 [INFO] [Thread-201106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] client lang: <none>
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] server lang: <none>
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] kex follows: False
2025-11-25T02:15:29.637 [DEBUG] [Thread-201106] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:15:29.638 [DEBUG] [Thread-201106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:15:29.638 [DEBUG] [Thread-201106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:15:29.638 [DEBUG] [Thread-201106] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:15:29.638 [DEBUG] [Thread-201106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:15:29.638 [DEBUG] [Thread-201106] [transport.py] [_log()] Compression: none
2025-11-25T02:15:29.638 [DEBUG] [Thread-201106] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:15:29.667 [DEBUG] [Thread-201106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:15:29.669 [DEBUG] [Thread-201106] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:15:29.671 [DEBUG] [Thread-201106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:15:29.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:15:29.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:15:29.673 [DEBUG] [Thread-201106] [transport.py] [_log()] userauth is OK
2025-11-25T02:15:29.674 [DEBUG] [Thread-201106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:15:29.674 [DEBUG] [Thread-201106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:15:29.674 [DEBUG] [Thread-201106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:15:29.674 [DEBUG] [Thread-201106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:15:29.691 [INFO] [Thread-201106] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:15:29.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:15:30.275 [DEBUG] [Thread-201106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:15:30.275 [DEBUG] [Thread-201106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:15:30.276 [DEBUG] [Thread-201106] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:15:30.316 [DEBUG] [Thread-201106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:15:30.316 [DEBUG] [Thread-201106] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:15:30.319 [DEBUG] [Thread-201106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:15:30.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:15:30.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:15:30.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:15:30.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:15:30.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:15:30.341 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:15:30.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:15:30.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:15:30.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:15:30.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.010459 -999.00  +12.30  22.53     45   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.5 22.5 126.0 26.4 12.7 -25.1 12.6 -24.6 12.2 -23.4 12.6 -24.3
2025-11-25T02:15:30.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:15:30.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:15:30.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.010459
2025-11-25T02:15:30.348 [DEBUG] [Thread-201106] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:15:30.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:15:30.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:15:30.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:15:30.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:15:30.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:15:30.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:15:24', tmtdew=12.97, humidity=40.91, cloud=0.0, wind=26.45, temperature=12.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:15:25', seeing=0.87, atlas_timestamp='2025-11-25T00:15:03.658', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:14:00')
2025-11-25T02:15:30.445 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:15:30.457 [DEBUG] [Thread-201109] [transport.py] [_log()] starting thread (client mode): 0xc9b75330
2025-11-25T02:15:30.457 [DEBUG] [Thread-201109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:15:30.473 [DEBUG] [Thread-201109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:15:30.473 [INFO] [Thread-201109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] client lang: <none>
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] server lang: <none>
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] kex follows: False
2025-11-25T02:15:30.481 [DEBUG] [Thread-201109] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:15:30.482 [DEBUG] [Thread-201109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:15:30.482 [DEBUG] [Thread-201109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:15:30.482 [DEBUG] [Thread-201109] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:15:30.482 [DEBUG] [Thread-201109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:15:30.482 [DEBUG] [Thread-201109] [transport.py] [_log()] Compression: none
2025-11-25T02:15:30.482 [DEBUG] [Thread-201109] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:15:30.545 [DEBUG] [Thread-201109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:15:30.546 [DEBUG] [Thread-201109] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:15:30.547 [DEBUG] [Thread-201109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:15:30.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:15:30.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:15:30.605 [DEBUG] [Thread-201109] [transport.py] [_log()] userauth is OK
2025-11-25T02:15:30.605 [DEBUG] [Thread-201109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:15:30.606 [DEBUG] [Thread-201109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:15:30.606 [DEBUG] [Thread-201109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:15:30.606 [DEBUG] [Thread-201109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:15:30.625 [INFO] [Thread-201109] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:15:30.626 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:15:30.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:15:31.500 [DEBUG] [Thread-201109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:15:31.500 [DEBUG] [Thread-201109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:15:31.548 [DEBUG] [Thread-201109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:15:31.548 [DEBUG] [Thread-201109] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:15:31.556 [DEBUG] [Thread-201109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:15:31.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:15:31.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-11-25T02:15:31.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-11-25T02:15:31.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:15:31.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:15:31.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:15:31.591 [DEBUG] [Thread-201109] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:15:31.878 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:31.879 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:37.345 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:43.181 [DEBUG] [Thread-201111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:47.996 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:48.252 [DEBUG] [Thread-201112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:58.294 [DEBUG] [Thread-201113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:15:58.432 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:01.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:16:01.627 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:16:01.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:16:02.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 15, 57), 12.96, 40.43, 0.0, 26.71, 12.27, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:16:02.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:15:57
2025-11-25T02:16:02.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:16:02.915 [DEBUG] [Thread-201114] [transport.py] [_log()] starting thread (client mode): 0xd3151db0
2025-11-25T02:16:02.916 [DEBUG] [Thread-201114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:16:02.928 [DEBUG] [Thread-201114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:16:02.928 [INFO] [Thread-201114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:16:02.935 [DEBUG] [Thread-201114] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:16:02.936 [DEBUG] [Thread-201114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:16:02.936 [DEBUG] [Thread-201114] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:16:02.936 [DEBUG] [Thread-201114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:16:02.936 [DEBUG] [Thread-201114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:16:02.936 [DEBUG] [Thread-201114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:16:02.936 [DEBUG] [Thread-201114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:16:02.936 [DEBUG] [Thread-201114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:16:02.936 [DEBUG] [Thread-201114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:16:02.936 [DEBUG] [Thread-201114] [transport.py] [_log()] client lang: <none>
2025-11-25T02:16:02.937 [DEBUG] [Thread-201114] [transport.py] [_log()] server lang: <none>
2025-11-25T02:16:02.937 [DEBUG] [Thread-201114] [transport.py] [_log()] kex follows: False
2025-11-25T02:16:02.937 [DEBUG] [Thread-201114] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:16:02.937 [DEBUG] [Thread-201114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:16:02.938 [DEBUG] [Thread-201114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:16:02.938 [DEBUG] [Thread-201114] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:16:02.938 [DEBUG] [Thread-201114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:16:02.938 [DEBUG] [Thread-201114] [transport.py] [_log()] Compression: none
2025-11-25T02:16:02.938 [DEBUG] [Thread-201114] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:16:02.975 [DEBUG] [Thread-201114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:16:02.981 [DEBUG] [Thread-201114] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:16:02.983 [DEBUG] [Thread-201114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:16:02.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:16:02.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:16:02.989 [DEBUG] [Thread-201114] [transport.py] [_log()] userauth is OK
2025-11-25T02:16:02.989 [DEBUG] [Thread-201114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:16:02.990 [DEBUG] [Thread-201114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:16:02.990 [DEBUG] [Thread-201114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:16:02.990 [DEBUG] [Thread-201114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:16:03.017 [INFO] [Thread-201114] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:16:03.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:16:03.582 [DEBUG] [Thread-201114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:16:03.591 [DEBUG] [Thread-201114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:16:03.593 [DEBUG] [Thread-201114] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:16:03.624 [DEBUG] [Thread-201114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:16:03.624 [DEBUG] [Thread-201114] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:16:03.628 [DEBUG] [Thread-201114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:16:03.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:16:03.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:16:03.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:16:03.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:16:03.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:16:03.653 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:16:03.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:16:03.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:16:03.655 [DEBUG] [Thread-201114] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:16:03.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:16:03.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.010459 -999.00  +12.30  22.53     45   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.5 22.5 126.0 26.4 12.7 -25.1 12.6 -24.6 12.2 -23.4 12.6 -24.3
2025-11-25T02:16:03.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:16:03.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:16:03.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.010459
2025-11-25T02:16:03.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:16:03.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:16:03.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:16:03.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:16:03.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:16:03.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:15:57', tmtdew=12.96, humidity=40.43, cloud=0.0, wind=26.71, temperature=12.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:15:57', seeing=0.98, atlas_timestamp='2025-11-25T00:15:03.658', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:14:00')
2025-11-25T02:16:03.769 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:16:03.781 [DEBUG] [Thread-201117] [transport.py] [_log()] starting thread (client mode): 0xd317e560
2025-11-25T02:16:03.781 [DEBUG] [Thread-201117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:16:03.796 [DEBUG] [Thread-201117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:16:03.796 [INFO] [Thread-201117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:16:03.804 [DEBUG] [Thread-201117] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:16:03.804 [DEBUG] [Thread-201117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:16:03.804 [DEBUG] [Thread-201117] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] client lang: <none>
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] server lang: <none>
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] kex follows: False
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:16:03.805 [DEBUG] [Thread-201117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:16:03.806 [DEBUG] [Thread-201117] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:16:03.806 [DEBUG] [Thread-201117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:16:03.806 [DEBUG] [Thread-201117] [transport.py] [_log()] Compression: none
2025-11-25T02:16:03.806 [DEBUG] [Thread-201117] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:16:03.862 [DEBUG] [Thread-201117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:16:03.863 [DEBUG] [Thread-201117] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:16:03.863 [DEBUG] [Thread-201117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:16:03.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:16:03.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:16:03.922 [DEBUG] [Thread-201117] [transport.py] [_log()] userauth is OK
2025-11-25T02:16:03.922 [DEBUG] [Thread-201117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:16:03.922 [DEBUG] [Thread-201117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:16:03.922 [DEBUG] [Thread-201117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:16:03.922 [DEBUG] [Thread-201117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:16:03.941 [INFO] [Thread-201117] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:16:03.942 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:16:03.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:16:04.867 [DEBUG] [Thread-201117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:16:04.867 [DEBUG] [Thread-201117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:16:04.915 [DEBUG] [Thread-201117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:16:04.915 [DEBUG] [Thread-201117] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:16:04.923 [DEBUG] [Thread-201117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:16:04.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:16:04.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-11-25T02:16:04.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-11-25T02:16:04.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:16:04.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:16:04.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:16:04.957 [DEBUG] [Thread-201117] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:16:08.974 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:13.365 [DEBUG] [Thread-201119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:19.363 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:28.545 [DEBUG] [Thread-201120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:29.913 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:32.089 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:32.092 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:34.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:16:34.978 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:16:34.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:16:35.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 16, 30), 12.92, 40.54, 0.0, 26.7, 12.29, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:16:35.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:16:30
2025-11-25T02:16:35.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:16:36.169 [DEBUG] [Thread-201121] [transport.py] [_log()] starting thread (client mode): 0xd07cc9a0
2025-11-25T02:16:36.170 [DEBUG] [Thread-201121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:16:36.178 [DEBUG] [Thread-201121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:16:36.178 [INFO] [Thread-201121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:16:36.183 [DEBUG] [Thread-201121] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:16:36.183 [DEBUG] [Thread-201121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:16:36.183 [DEBUG] [Thread-201121] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:16:36.183 [DEBUG] [Thread-201121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:16:36.183 [DEBUG] [Thread-201121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:16:36.183 [DEBUG] [Thread-201121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:16:36.183 [DEBUG] [Thread-201121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:16:36.184 [DEBUG] [Thread-201121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:16:36.184 [DEBUG] [Thread-201121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:16:36.184 [DEBUG] [Thread-201121] [transport.py] [_log()] client lang: <none>
2025-11-25T02:16:36.184 [DEBUG] [Thread-201121] [transport.py] [_log()] server lang: <none>
2025-11-25T02:16:36.184 [DEBUG] [Thread-201121] [transport.py] [_log()] kex follows: False
2025-11-25T02:16:36.184 [DEBUG] [Thread-201121] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:16:36.184 [DEBUG] [Thread-201121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:16:36.184 [DEBUG] [Thread-201121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:16:36.184 [DEBUG] [Thread-201121] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:16:36.184 [DEBUG] [Thread-201121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:16:36.185 [DEBUG] [Thread-201121] [transport.py] [_log()] Compression: none
2025-11-25T02:16:36.185 [DEBUG] [Thread-201121] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:16:36.216 [DEBUG] [Thread-201121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:16:36.222 [DEBUG] [Thread-201121] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:16:36.224 [DEBUG] [Thread-201121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:16:36.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:16:36.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:16:36.229 [DEBUG] [Thread-201121] [transport.py] [_log()] userauth is OK
2025-11-25T02:16:36.230 [DEBUG] [Thread-201121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:16:36.230 [DEBUG] [Thread-201121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:16:36.230 [DEBUG] [Thread-201121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:16:36.230 [DEBUG] [Thread-201121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:16:36.255 [INFO] [Thread-201121] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:16:36.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:16:36.901 [DEBUG] [Thread-201121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:16:36.901 [DEBUG] [Thread-201121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:16:36.903 [DEBUG] [Thread-201121] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:16:36.943 [DEBUG] [Thread-201121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:16:36.943 [DEBUG] [Thread-201121] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:16:36.947 [DEBUG] [Thread-201121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:16:36.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:16:36.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:16:36.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:16:36.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:16:36.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:16:36.975 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:16:36.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:16:36.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:16:36.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:16:36.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.010806 -999.00  +12.30  20.33     45   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 20.3 20.3 129.2 27.4 12.8 -25.3 12.6 -24.6 12.3 -23.5 12.6 -24.3
2025-11-25T02:16:36.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:16:36.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:16:36.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.010806
2025-11-25T02:16:36.984 [DEBUG] [Thread-201121] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:16:36.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:16:37.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:16:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:16:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:16:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:16:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:16:30', tmtdew=12.92, humidity=40.54, cloud=0.0, wind=26.7, temperature=12.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:16:31', seeing=0.8, atlas_timestamp='2025-11-25T00:15:33.638', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:14:00')
2025-11-25T02:16:37.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:16:37.105 [DEBUG] [Thread-201124] [transport.py] [_log()] starting thread (client mode): 0xd317c0d0
2025-11-25T02:16:37.105 [DEBUG] [Thread-201124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:16:37.122 [DEBUG] [Thread-201124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:16:37.123 [INFO] [Thread-201124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:16:37.130 [DEBUG] [Thread-201124] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:16:37.130 [DEBUG] [Thread-201124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:16:37.130 [DEBUG] [Thread-201124] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:16:37.130 [DEBUG] [Thread-201124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] client lang: <none>
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] server lang: <none>
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] kex follows: False
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] Compression: none
2025-11-25T02:16:37.131 [DEBUG] [Thread-201124] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:16:37.194 [DEBUG] [Thread-201124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:16:37.195 [DEBUG] [Thread-201124] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:16:37.196 [DEBUG] [Thread-201124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:16:37.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:16:37.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:16:37.258 [DEBUG] [Thread-201124] [transport.py] [_log()] userauth is OK
2025-11-25T02:16:37.259 [DEBUG] [Thread-201124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:16:37.259 [DEBUG] [Thread-201124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:16:37.259 [DEBUG] [Thread-201124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:16:37.259 [DEBUG] [Thread-201124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:16:37.281 [INFO] [Thread-201124] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:16:37.281 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:16:37.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:16:38.143 [DEBUG] [Thread-201124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:16:38.143 [DEBUG] [Thread-201124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:16:38.191 [DEBUG] [Thread-201124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:16:38.191 [DEBUG] [Thread-201124] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:16:38.200 [DEBUG] [Thread-201124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:16:38.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:16:38.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-11-25T02:16:38.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:16:38.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:16:38.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:16:38.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:16:38.238 [DEBUG] [Thread-201124] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:16:40.366 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:43.596 [DEBUG] [Thread-201126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:48.523 [DEBUG] [Thread-201127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:50.797 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:16:58.737 [DEBUG] [Thread-201128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:01.352 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:08.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:17:08.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:17:08.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-11-25T02:17:09.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 17, 3), 12.97, 40.41, 0.0, 26.24, 12.27, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:17:09.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:17:03
2025-11-25T02:17:09.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:17:09.508 [DEBUG] [Thread-201129] [transport.py] [_log()] starting thread (client mode): 0xd07cccd0
2025-11-25T02:17:09.509 [DEBUG] [Thread-201129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:17:09.517 [DEBUG] [Thread-201129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:17:09.517 [INFO] [Thread-201129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:17:09.522 [DEBUG] [Thread-201129] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:17:09.522 [DEBUG] [Thread-201129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:17:09.522 [DEBUG] [Thread-201129] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:17:09.522 [DEBUG] [Thread-201129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:17:09.522 [DEBUG] [Thread-201129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:17:09.523 [DEBUG] [Thread-201129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:17:09.523 [DEBUG] [Thread-201129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:17:09.523 [DEBUG] [Thread-201129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:17:09.523 [DEBUG] [Thread-201129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:17:09.523 [DEBUG] [Thread-201129] [transport.py] [_log()] client lang: <none>
2025-11-25T02:17:09.523 [DEBUG] [Thread-201129] [transport.py] [_log()] server lang: <none>
2025-11-25T02:17:09.523 [DEBUG] [Thread-201129] [transport.py] [_log()] kex follows: False
2025-11-25T02:17:09.523 [DEBUG] [Thread-201129] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:17:09.524 [DEBUG] [Thread-201129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:17:09.524 [DEBUG] [Thread-201129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:17:09.524 [DEBUG] [Thread-201129] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:17:09.524 [DEBUG] [Thread-201129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:17:09.524 [DEBUG] [Thread-201129] [transport.py] [_log()] Compression: none
2025-11-25T02:17:09.524 [DEBUG] [Thread-201129] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:17:09.565 [DEBUG] [Thread-201129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:17:09.570 [DEBUG] [Thread-201129] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:17:09.572 [DEBUG] [Thread-201129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:17:09.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:17:09.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:17:09.578 [DEBUG] [Thread-201129] [transport.py] [_log()] userauth is OK
2025-11-25T02:17:09.578 [DEBUG] [Thread-201129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:17:09.579 [DEBUG] [Thread-201129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:17:09.579 [DEBUG] [Thread-201129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:17:09.579 [DEBUG] [Thread-201129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:17:09.607 [INFO] [Thread-201129] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:17:09.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:17:10.236 [DEBUG] [Thread-201129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:17:10.236 [DEBUG] [Thread-201129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:17:10.245 [DEBUG] [Thread-201129] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:17:10.277 [DEBUG] [Thread-201129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:17:10.277 [DEBUG] [Thread-201129] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:17:10.279 [DEBUG] [Thread-201129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:17:10.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:17:10.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:17:10.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:17:10.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:17:10.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:17:10.301 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:17:10.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:17:10.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:17:10.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:17:10.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.011500 -999.00  +12.30  23.75     45   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.8 23.8 131.2 26.0 12.7 -25.2 12.5 -24.7 12.3 -23.6 12.6 -24.5
2025-11-25T02:17:10.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:17:10.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:17:10.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.011500
2025-11-25T02:17:10.308 [DEBUG] [Thread-201129] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:17:10.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:17:10.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:17:10.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:17:10.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:17:10.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:17:10.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:17:03', tmtdew=12.97, humidity=40.41, cloud=0.0, wind=26.24, temperature=12.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:17:04', seeing=0.85, atlas_timestamp='2025-11-25T00:16:33.600', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:14:00')
2025-11-25T02:17:10.396 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:17:10.407 [DEBUG] [Thread-201132] [transport.py] [_log()] starting thread (client mode): 0xd073ab60
2025-11-25T02:17:10.408 [DEBUG] [Thread-201132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:17:10.423 [DEBUG] [Thread-201132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:17:10.423 [INFO] [Thread-201132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] client lang: <none>
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] server lang: <none>
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] kex follows: False
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] Compression: none
2025-11-25T02:17:10.431 [DEBUG] [Thread-201132] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:17:10.488 [DEBUG] [Thread-201132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:17:10.488 [DEBUG] [Thread-201132] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:17:10.488 [DEBUG] [Thread-201132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:17:10.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:17:10.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:17:10.545 [DEBUG] [Thread-201132] [transport.py] [_log()] userauth is OK
2025-11-25T02:17:10.545 [DEBUG] [Thread-201132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:17:10.545 [DEBUG] [Thread-201132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:17:10.545 [DEBUG] [Thread-201132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:17:10.545 [DEBUG] [Thread-201132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:17:10.559 [INFO] [Thread-201132] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:17:10.560 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:17:10.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:17:11.395 [DEBUG] [Thread-201132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:17:11.395 [DEBUG] [Thread-201132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:17:11.443 [DEBUG] [Thread-201132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:17:11.443 [DEBUG] [Thread-201132] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:17:11.452 [DEBUG] [Thread-201132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:17:11.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:17:11.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-11-25T02:17:11.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-11-25T02:17:11.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:17:11.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:17:11.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:17:11.489 [DEBUG] [Thread-201132] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:17:11.918 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:13.824 [DEBUG] [Thread-201134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:22.321 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:28.965 [DEBUG] [Thread-201135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:32.295 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:32.297 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:32.771 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:41.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:17:41.506 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:17:41.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:17:42.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 17, 37), 12.91, 40.93, 0.0, 24.53, 12.24, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:17:42.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:17:37
2025-11-25T02:17:42.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:17:42.829 [DEBUG] [Thread-201136] [transport.py] [_log()] starting thread (client mode): 0xd317cfa0
2025-11-25T02:17:42.831 [DEBUG] [Thread-201136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:17:42.837 [DEBUG] [Thread-201136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:17:42.837 [INFO] [Thread-201136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] client lang: <none>
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] server lang: <none>
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] kex follows: False
2025-11-25T02:17:42.843 [DEBUG] [Thread-201136] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:17:42.844 [DEBUG] [Thread-201136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:17:42.844 [DEBUG] [Thread-201136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:17:42.844 [DEBUG] [Thread-201136] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:17:42.844 [DEBUG] [Thread-201136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:17:42.844 [DEBUG] [Thread-201136] [transport.py] [_log()] Compression: none
2025-11-25T02:17:42.844 [DEBUG] [Thread-201136] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:17:42.881 [DEBUG] [Thread-201136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:17:42.887 [DEBUG] [Thread-201136] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:17:42.889 [DEBUG] [Thread-201136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:17:42.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:17:42.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:17:42.895 [DEBUG] [Thread-201136] [transport.py] [_log()] userauth is OK
2025-11-25T02:17:42.895 [DEBUG] [Thread-201136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:17:42.895 [DEBUG] [Thread-201136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:17:42.895 [DEBUG] [Thread-201136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:17:42.895 [DEBUG] [Thread-201136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:17:42.934 [INFO] [Thread-201136] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:17:42.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:17:43.233 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:43.599 [DEBUG] [Thread-201136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:17:43.599 [DEBUG] [Thread-201136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:17:43.600 [DEBUG] [Thread-201136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:17:43.640 [DEBUG] [Thread-201136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:17:43.640 [DEBUG] [Thread-201136] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:17:43.643 [DEBUG] [Thread-201136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:17:43.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:17:43.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:17:43.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:17:43.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:17:43.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:17:43.666 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:17:43.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:17:43.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:17:43.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:17:43.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.011847 -999.00  +12.30  26.88     45   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 26.9 26.9 135.4 31.1 12.7 -25.2 12.6 -24.6 12.3 -23.6 12.6 -24.4
2025-11-25T02:17:43.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:17:43.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:17:43.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.011847
2025-11-25T02:17:43.673 [DEBUG] [Thread-201136] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:17:43.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:17:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:17:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:17:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:17:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:17:43.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:17:37', tmtdew=12.91, humidity=40.93, cloud=0.0, wind=24.53, temperature=12.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:17:37', seeing=0.85, atlas_timestamp='2025-11-25T00:17:03.581', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:14:00')
2025-11-25T02:17: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-11-25T02:17:43.772 [DEBUG] [Thread-201139] [transport.py] [_log()] starting thread (client mode): 0xd3149810
2025-11-25T02:17:43.772 [DEBUG] [Thread-201139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:17:43.787 [DEBUG] [Thread-201139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:17:43.788 [INFO] [Thread-201139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:17:43.795 [DEBUG] [Thread-201139] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:17:43.795 [DEBUG] [Thread-201139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:17:43.795 [DEBUG] [Thread-201139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:17:43.795 [DEBUG] [Thread-201139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:17:43.795 [DEBUG] [Thread-201139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:17:43.795 [DEBUG] [Thread-201139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:17:43.795 [DEBUG] [Thread-201139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:17:43.795 [DEBUG] [Thread-201139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:17:43.795 [DEBUG] [Thread-201139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:17:43.796 [DEBUG] [Thread-201139] [transport.py] [_log()] client lang: <none>
2025-11-25T02:17:43.796 [DEBUG] [Thread-201139] [transport.py] [_log()] server lang: <none>
2025-11-25T02:17:43.796 [DEBUG] [Thread-201139] [transport.py] [_log()] kex follows: False
2025-11-25T02:17:43.796 [DEBUG] [Thread-201139] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:17:43.796 [DEBUG] [Thread-201139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:17:43.796 [DEBUG] [Thread-201139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:17:43.796 [DEBUG] [Thread-201139] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:17:43.796 [DEBUG] [Thread-201139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:17:43.796 [DEBUG] [Thread-201139] [transport.py] [_log()] Compression: none
2025-11-25T02:17:43.796 [DEBUG] [Thread-201139] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:17:43.856 [DEBUG] [Thread-201139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:17:43.857 [DEBUG] [Thread-201139] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:17:43.857 [DEBUG] [Thread-201139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:17:43.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:17:43.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:17:43.914 [DEBUG] [Thread-201139] [transport.py] [_log()] userauth is OK
2025-11-25T02:17:43.915 [DEBUG] [Thread-201139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:17:43.915 [DEBUG] [Thread-201139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:17:43.915 [DEBUG] [Thread-201139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:17:43.915 [DEBUG] [Thread-201139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:17:43.934 [INFO] [Thread-201139] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:17:43.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:17:43.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:17:44.032 [DEBUG] [Thread-201141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:44.821 [DEBUG] [Thread-201139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:17:44.822 [DEBUG] [Thread-201139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:17:44.870 [DEBUG] [Thread-201139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:17:44.870 [DEBUG] [Thread-201139] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:17:44.879 [DEBUG] [Thread-201139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:17:44.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:17:44.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:17:44.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-11-25T02:17:44.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:17:44.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:17:44.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:17:44.913 [DEBUG] [Thread-201139] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:17:48.853 [DEBUG] [Thread-201142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:53.876 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:17:59.181 [DEBUG] [Thread-201143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:04.299 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:14.264 [DEBUG] [Thread-201144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:14.722 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:14.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:18:14.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:18:14.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-11-25T02:18:15.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 18, 10), 12.9, 40.96, 0.0, 26.24, 12.22, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:18:15.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:18:10
2025-11-25T02:18:16.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:18:16.301 [DEBUG] [Thread-201145] [transport.py] [_log()] starting thread (client mode): 0xd0787dc0
2025-11-25T02:18:16.302 [DEBUG] [Thread-201145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:18:16.302 [DEBUG] [Thread-201145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:18:16.302 [INFO] [Thread-201145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] client lang: <none>
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] server lang: <none>
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] kex follows: False
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:18:16.306 [DEBUG] [Thread-201145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:18:16.307 [DEBUG] [Thread-201145] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:18:16.307 [DEBUG] [Thread-201145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:18:16.307 [DEBUG] [Thread-201145] [transport.py] [_log()] Compression: none
2025-11-25T02:18:16.307 [DEBUG] [Thread-201145] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:18:16.328 [DEBUG] [Thread-201145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:18:16.330 [DEBUG] [Thread-201145] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:18:16.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:18:16.333 [DEBUG] [Thread-201145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:18:16.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:18:16.334 [DEBUG] [Thread-201145] [transport.py] [_log()] userauth is OK
2025-11-25T02:18:16.335 [DEBUG] [Thread-201145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:18:16.335 [DEBUG] [Thread-201145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:18:16.335 [DEBUG] [Thread-201145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:18:16.335 [DEBUG] [Thread-201145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:18:16.356 [INFO] [Thread-201145] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:18:16.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:18:16.936 [DEBUG] [Thread-201145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:18:16.936 [DEBUG] [Thread-201145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:18:16.938 [DEBUG] [Thread-201145] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:18:16.978 [DEBUG] [Thread-201145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:18:16.978 [DEBUG] [Thread-201145] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:18:16.980 [DEBUG] [Thread-201145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:18:16.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:18:16.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:18:16.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:18:16.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:18:16.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:18:17.000 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:18:17.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:18:17.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:18:17.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:18:17.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.012252 -999.00  +12.30  24.00     45   +1.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.9 24.0 129.0 27.8 12.7 -25.2 12.5 -24.7 12.3 -23.6 12.6 -24.3
2025-11-25T02:18:17.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:18:17.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:18:17.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.012252
2025-11-25T02:18:17.008 [DEBUG] [Thread-201145] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:18:17.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:18:17.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:18:17.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:18:17.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:18:17.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:18:17.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:18:10', tmtdew=12.9, humidity=40.96, cloud=0.0, wind=26.24, temperature=12.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:18:10', seeing=0.85, atlas_timestamp='2025-11-25T00:17:38.573', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:14:00')
2025-11-25T02:18:17.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:18:17.112 [DEBUG] [Thread-201148] [transport.py] [_log()] starting thread (client mode): 0xd0738e80
2025-11-25T02:18:17.112 [DEBUG] [Thread-201148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:18:17.129 [DEBUG] [Thread-201148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:18:17.130 [INFO] [Thread-201148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] client lang: <none>
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] server lang: <none>
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] kex follows: False
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] Compression: none
2025-11-25T02:18:17.137 [DEBUG] [Thread-201148] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:18:17.193 [DEBUG] [Thread-201148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:18:17.193 [DEBUG] [Thread-201148] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:18:17.193 [DEBUG] [Thread-201148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:18:17.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:18:17.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:18:17.250 [DEBUG] [Thread-201148] [transport.py] [_log()] userauth is OK
2025-11-25T02:18:17.250 [DEBUG] [Thread-201148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:18:17.250 [DEBUG] [Thread-201148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:18:17.250 [DEBUG] [Thread-201148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:18:17.250 [DEBUG] [Thread-201148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:18:17.265 [INFO] [Thread-201148] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:18:17.265 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:18:17.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:18:18.117 [DEBUG] [Thread-201148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:18:18.117 [DEBUG] [Thread-201148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:18:18.164 [DEBUG] [Thread-201148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:18:18.164 [DEBUG] [Thread-201148] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:18:18.173 [DEBUG] [Thread-201148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:18:18.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:18:18.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-11-25T02:18:18.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:18:18.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:18:18.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:18:18.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:18:18.209 [DEBUG] [Thread-201148] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:18:25.271 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:29.349 [DEBUG] [Thread-201150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:32.499 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:32.501 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:35.697 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:44.437 [DEBUG] [Thread-201151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:46.221 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:48.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:18:48.204 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:18:48.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-11-25T02:18:49.111 [DEBUG] [Thread-201152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:49.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 18, 42), 12.84, 40.99, 0.0, 25.9, 12.2, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:18:49.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:18:42
2025-11-25T02:18:49.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:18:49.771 [DEBUG] [Thread-201153] [transport.py] [_log()] starting thread (client mode): 0xd073bcd0
2025-11-25T02:18:49.772 [DEBUG] [Thread-201153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:18:49.785 [DEBUG] [Thread-201153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:18:49.785 [INFO] [Thread-201153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:18:49.789 [DEBUG] [Thread-201153] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] client lang: <none>
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] server lang: <none>
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] kex follows: False
2025-11-25T02:18:49.790 [DEBUG] [Thread-201153] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:18:49.791 [DEBUG] [Thread-201153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:18:49.791 [DEBUG] [Thread-201153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:18:49.791 [DEBUG] [Thread-201153] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:18:49.791 [DEBUG] [Thread-201153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:18:49.791 [DEBUG] [Thread-201153] [transport.py] [_log()] Compression: none
2025-11-25T02:18:49.791 [DEBUG] [Thread-201153] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:18:49.822 [DEBUG] [Thread-201153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:18:49.825 [DEBUG] [Thread-201153] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:18:49.826 [DEBUG] [Thread-201153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:18:49.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:18:49.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:18:49.830 [DEBUG] [Thread-201153] [transport.py] [_log()] userauth is OK
2025-11-25T02:18:49.830 [DEBUG] [Thread-201153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:18:49.830 [DEBUG] [Thread-201153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:18:49.830 [DEBUG] [Thread-201153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:18:49.830 [DEBUG] [Thread-201153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:18:49.848 [INFO] [Thread-201153] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:18:49.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:18:50.457 [DEBUG] [Thread-201153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:18:50.457 [DEBUG] [Thread-201153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:18:50.457 [DEBUG] [Thread-201153] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:18:50.498 [DEBUG] [Thread-201153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:18:50.498 [DEBUG] [Thread-201153] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:18:50.501 [DEBUG] [Thread-201153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:18:50.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:18:50.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:18:50.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:18:50.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:18:50.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:18:50.522 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:18:50.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:18:50.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:18:50.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:18:50.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.012542 -999.00  +12.30  25.06     45   +1.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 25.1 25.1 127.8 27.0 12.7 -25.2 12.5 -24.8 12.3 -23.7 12.6 -24.6
2025-11-25T02:18:50.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:18:50.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:18:50.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.012542
2025-11-25T02:18:50.528 [DEBUG] [Thread-201153] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:18:50.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:18:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:18:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:18:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:18:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:18:50.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:18:42', tmtdew=12.84, humidity=40.99, cloud=0.0, wind=25.9, temperature=12.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:18:43', seeing=0.86, atlas_timestamp='2025-11-25T00:18:03.629', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:16:00')
2025-11-25T02:18:50.615 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:18:50.628 [DEBUG] [Thread-201156] [transport.py] [_log()] starting thread (client mode): 0xc9b814e0
2025-11-25T02:18:50.628 [DEBUG] [Thread-201156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:18:50.645 [DEBUG] [Thread-201156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:18:50.645 [INFO] [Thread-201156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] client lang: <none>
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] server lang: <none>
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] kex follows: False
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] Compression: none
2025-11-25T02:18:50.653 [DEBUG] [Thread-201156] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:18:50.709 [DEBUG] [Thread-201156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:18:50.709 [DEBUG] [Thread-201156] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:18:50.709 [DEBUG] [Thread-201156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:18:50.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:18:50.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:18:50.766 [DEBUG] [Thread-201156] [transport.py] [_log()] userauth is OK
2025-11-25T02:18:50.766 [DEBUG] [Thread-201156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:18:50.766 [DEBUG] [Thread-201156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:18:50.766 [DEBUG] [Thread-201156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:18:50.766 [DEBUG] [Thread-201156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:18:50.781 [INFO] [Thread-201156] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:18:50.781 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:18:50.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:18:51.622 [DEBUG] [Thread-201156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:18:51.622 [DEBUG] [Thread-201156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:18:51.670 [DEBUG] [Thread-201156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:18:51.670 [DEBUG] [Thread-201156] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:18:51.678 [DEBUG] [Thread-201156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:18:51.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:18:51.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:18:51.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-11-25T02:18:51.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:18:51.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:18:51.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:18:51.712 [DEBUG] [Thread-201156] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:18:56.948 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:18:59.489 [DEBUG] [Thread-201158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:07.483 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:14.639 [DEBUG] [Thread-201159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:17.879 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:21.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:19:21.739 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:19:21.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-11-25T02:19:22.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 19, 16), 12.84, 40.98, 0.0, 26.22, 12.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:19:22.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:19:16
2025-11-25T02:19:22.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:19:23.021 [DEBUG] [Thread-201160] [transport.py] [_log()] starting thread (client mode): 0xc9b82650
2025-11-25T02:19:23.022 [DEBUG] [Thread-201160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:19:23.034 [DEBUG] [Thread-201160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:19:23.034 [INFO] [Thread-201160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:19:23.040 [DEBUG] [Thread-201160] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] client lang: <none>
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] server lang: <none>
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] kex follows: False
2025-11-25T02:19:23.041 [DEBUG] [Thread-201160] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:19:23.042 [DEBUG] [Thread-201160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:19:23.042 [DEBUG] [Thread-201160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:19:23.043 [DEBUG] [Thread-201160] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:19:23.043 [DEBUG] [Thread-201160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:19:23.043 [DEBUG] [Thread-201160] [transport.py] [_log()] Compression: none
2025-11-25T02:19:23.043 [DEBUG] [Thread-201160] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:19:23.082 [DEBUG] [Thread-201160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:19:23.087 [DEBUG] [Thread-201160] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:19:23.089 [DEBUG] [Thread-201160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:19:23.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:19:23.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:19:23.095 [DEBUG] [Thread-201160] [transport.py] [_log()] userauth is OK
2025-11-25T02:19:23.096 [DEBUG] [Thread-201160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:19:23.096 [DEBUG] [Thread-201160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:19:23.096 [DEBUG] [Thread-201160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:19:23.096 [DEBUG] [Thread-201160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:19:23.135 [INFO] [Thread-201160] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:19:23.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:19:23.769 [DEBUG] [Thread-201160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:19:23.769 [DEBUG] [Thread-201160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:19:23.780 [DEBUG] [Thread-201160] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:19:23.811 [DEBUG] [Thread-201160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:19:23.811 [DEBUG] [Thread-201160] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:19:23.815 [DEBUG] [Thread-201160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:19:23.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:19:23.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:19:23.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:19:23.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:19:23.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:19:23.846 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:19:23.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:19:23.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:19:23.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:19:23.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.012946 -999.00  +12.30  26.65     46   +1.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 25.4 26.6 135.6 29.4 12.7 -25.1 12.6 -24.8 12.2 -23.6 12.6 -24.5
2025-11-25T02:19:23.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:19:23.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:19:23.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.012946
2025-11-25T02:19:23.854 [DEBUG] [Thread-201160] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:19:23.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:19:23.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:19:23.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:19:23.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:19:23.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:19:23.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:19:16', tmtdew=12.84, humidity=40.98, cloud=0.0, wind=26.22, temperature=12.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:19:16', seeing=0.86, atlas_timestamp='2025-11-25T00:18:38.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:16:00')
2025-11-25T02:19:23.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:19:23.967 [DEBUG] [Thread-201163] [transport.py] [_log()] starting thread (client mode): 0xc9b81180
2025-11-25T02:19:23.967 [DEBUG] [Thread-201163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:19:23.980 [DEBUG] [Thread-201163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:19:23.981 [INFO] [Thread-201163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] client lang: <none>
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] server lang: <none>
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] kex follows: False
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:19:23.989 [DEBUG] [Thread-201163] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:19:23.990 [DEBUG] [Thread-201163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:19:23.990 [DEBUG] [Thread-201163] [transport.py] [_log()] Compression: none
2025-11-25T02:19:23.990 [DEBUG] [Thread-201163] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:19:24.046 [DEBUG] [Thread-201163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:19:24.047 [DEBUG] [Thread-201163] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:19:24.048 [DEBUG] [Thread-201163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:19:24.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:19:24.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:19:24.102 [DEBUG] [Thread-201163] [transport.py] [_log()] userauth is OK
2025-11-25T02:19:24.102 [DEBUG] [Thread-201163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:19:24.103 [DEBUG] [Thread-201163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:19:24.103 [DEBUG] [Thread-201163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:19:24.103 [DEBUG] [Thread-201163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:19:24.121 [INFO] [Thread-201163] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:19:24.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:19:24.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:19:24.931 [DEBUG] [Thread-201163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:19:24.931 [DEBUG] [Thread-201163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:19:24.979 [DEBUG] [Thread-201163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:19:24.979 [DEBUG] [Thread-201163] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:19:24.987 [DEBUG] [Thread-201163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:19:24.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:19:24.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-11-25T02:19:25.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-11-25T02:19:25.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:19:25.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:19:25.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:19:25.030 [DEBUG] [Thread-201163] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:19:28.349 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:29.690 [DEBUG] [Thread-201165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:32.705 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:32.706 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:38.757 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:44.838 [DEBUG] [Thread-201166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:49.180 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:49.371 [DEBUG] [Thread-201167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:55.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:19:55.070 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:19:55.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-11-25T02:19:55.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 19, 49), 12.84, 40.88, 0.0, 25.99, 12.22, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:19:55.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:19:49
2025-11-25T02:19:56.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:19:56.264 [DEBUG] [Thread-201168] [transport.py] [_log()] starting thread (client mode): 0xd319fbb0
2025-11-25T02:19:56.265 [DEBUG] [Thread-201168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:19:56.276 [DEBUG] [Thread-201168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:19:56.277 [INFO] [Thread-201168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:19:56.283 [DEBUG] [Thread-201168] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:19:56.283 [DEBUG] [Thread-201168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:19:56.284 [DEBUG] [Thread-201168] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:19:56.284 [DEBUG] [Thread-201168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:19:56.284 [DEBUG] [Thread-201168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:19:56.284 [DEBUG] [Thread-201168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:19:56.284 [DEBUG] [Thread-201168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:19:56.284 [DEBUG] [Thread-201168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:19:56.284 [DEBUG] [Thread-201168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:19:56.284 [DEBUG] [Thread-201168] [transport.py] [_log()] client lang: <none>
2025-11-25T02:19:56.284 [DEBUG] [Thread-201168] [transport.py] [_log()] server lang: <none>
2025-11-25T02:19:56.285 [DEBUG] [Thread-201168] [transport.py] [_log()] kex follows: False
2025-11-25T02:19:56.285 [DEBUG] [Thread-201168] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:19:56.285 [DEBUG] [Thread-201168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:19:56.286 [DEBUG] [Thread-201168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:19:56.286 [DEBUG] [Thread-201168] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:19:56.286 [DEBUG] [Thread-201168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:19:56.286 [DEBUG] [Thread-201168] [transport.py] [_log()] Compression: none
2025-11-25T02:19:56.286 [DEBUG] [Thread-201168] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:19:56.327 [DEBUG] [Thread-201168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:19:56.333 [DEBUG] [Thread-201168] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:19:56.335 [DEBUG] [Thread-201168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:19:56.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:19:56.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:19:56.341 [DEBUG] [Thread-201168] [transport.py] [_log()] userauth is OK
2025-11-25T02:19:56.341 [DEBUG] [Thread-201168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:19:56.341 [DEBUG] [Thread-201168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:19:56.341 [DEBUG] [Thread-201168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:19:56.341 [DEBUG] [Thread-201168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:19:56.371 [INFO] [Thread-201168] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:19:56.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:19:57.003 [DEBUG] [Thread-201168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:19:57.003 [DEBUG] [Thread-201168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:19:57.014 [DEBUG] [Thread-201168] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:19:57.044 [DEBUG] [Thread-201168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:19:57.044 [DEBUG] [Thread-201168] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:19:57.048 [DEBUG] [Thread-201168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:19:57.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:19:57.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:19:57.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:19:57.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:19:57.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:19:57.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:19:57.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:19:57.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:19:57.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:19:57.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.013294 -999.00  +12.30  25.04     46   +1.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 25.4 25.0 128.4 30.9 12.7 -25.1 12.5 -24.7 12.2 -23.6 12.6 -24.4
2025-11-25T02:19:57.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:19:57.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:19:57.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.013294
2025-11-25T02:19:57.083 [DEBUG] [Thread-201168] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:19:57.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:19:57.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:19:57.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:19:57.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:19:57.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:19:57.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:19:49', tmtdew=12.84, humidity=40.88, cloud=0.0, wind=25.99, temperature=12.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:19:49', seeing=0.85, atlas_timestamp='2025-11-25T00:19:08.602', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:16:00')
2025-11-25T02:19:57.188 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:19:57.200 [DEBUG] [Thread-201171] [transport.py] [_log()] starting thread (client mode): 0xd317f0a0
2025-11-25T02:19:57.200 [DEBUG] [Thread-201171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:19:57.214 [DEBUG] [Thread-201171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:19:57.215 [INFO] [Thread-201171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:19:57.222 [DEBUG] [Thread-201171] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:19:57.222 [DEBUG] [Thread-201171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:19:57.222 [DEBUG] [Thread-201171] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:19:57.222 [DEBUG] [Thread-201171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:19:57.222 [DEBUG] [Thread-201171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:19:57.222 [DEBUG] [Thread-201171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] client lang: <none>
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] server lang: <none>
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] kex follows: False
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] Compression: none
2025-11-25T02:19:57.223 [DEBUG] [Thread-201171] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:19:57.284 [DEBUG] [Thread-201171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:19:57.285 [DEBUG] [Thread-201171] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:19:57.285 [DEBUG] [Thread-201171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:19:57.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:19:57.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:19:57.345 [DEBUG] [Thread-201171] [transport.py] [_log()] userauth is OK
2025-11-25T02:19:57.345 [DEBUG] [Thread-201171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:19:57.345 [DEBUG] [Thread-201171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:19:57.345 [DEBUG] [Thread-201171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:19:57.345 [DEBUG] [Thread-201171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:19:57.363 [INFO] [Thread-201171] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:19:57.364 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:19:57.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:19:58.197 [DEBUG] [Thread-201171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:19:58.197 [DEBUG] [Thread-201171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:19:58.245 [DEBUG] [Thread-201171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:19:58.245 [DEBUG] [Thread-201171] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:19:58.253 [DEBUG] [Thread-201171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:19:58.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:19:58.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-11-25T02:19:58.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-11-25T02:19:58.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:19:58.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:19:58.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:19:58.288 [DEBUG] [Thread-201171] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:19:59.714 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:19:59.912 [DEBUG] [Thread-201173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:10.409 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:15.081 [DEBUG] [Thread-201174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:21.232 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:28.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:20:28.292 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:20:28.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-11-25T02:20:29.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 20, 22), 12.85, 40.83, 0.0, 25.99, 12.18, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:20:29.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:20:22
2025-11-25T02:20:29.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:20:29.590 [DEBUG] [Thread-201175] [transport.py] [_log()] starting thread (client mode): 0xd0738a00
2025-11-25T02:20:29.591 [DEBUG] [Thread-201175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:20:29.601 [DEBUG] [Thread-201175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:20:29.601 [INFO] [Thread-201175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:20:29.608 [DEBUG] [Thread-201175] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:20:29.609 [DEBUG] [Thread-201175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:20:29.609 [DEBUG] [Thread-201175] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:20:29.609 [DEBUG] [Thread-201175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:20:29.609 [DEBUG] [Thread-201175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:20:29.609 [DEBUG] [Thread-201175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:20:29.609 [DEBUG] [Thread-201175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:20:29.609 [DEBUG] [Thread-201175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:20:29.610 [DEBUG] [Thread-201175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:20:29.610 [DEBUG] [Thread-201175] [transport.py] [_log()] client lang: <none>
2025-11-25T02:20:29.610 [DEBUG] [Thread-201175] [transport.py] [_log()] server lang: <none>
2025-11-25T02:20:29.610 [DEBUG] [Thread-201175] [transport.py] [_log()] kex follows: False
2025-11-25T02:20:29.610 [DEBUG] [Thread-201175] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:20:29.611 [DEBUG] [Thread-201175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:20:29.611 [DEBUG] [Thread-201175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:20:29.611 [DEBUG] [Thread-201175] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:20:29.611 [DEBUG] [Thread-201175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:20:29.611 [DEBUG] [Thread-201175] [transport.py] [_log()] Compression: none
2025-11-25T02:20:29.611 [DEBUG] [Thread-201175] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:20:29.651 [DEBUG] [Thread-201175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:20:29.656 [DEBUG] [Thread-201175] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:20:29.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:20:29.659 [DEBUG] [Thread-201175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:20:29.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:20:29.666 [DEBUG] [Thread-201175] [transport.py] [_log()] userauth is OK
2025-11-25T02:20:29.666 [DEBUG] [Thread-201175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:20:29.666 [DEBUG] [Thread-201175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:20:29.666 [DEBUG] [Thread-201175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:20:29.666 [DEBUG] [Thread-201175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:20:29.704 [INFO] [Thread-201175] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:20:29.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:20:30.188 [DEBUG] [Thread-201177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:30.346 [DEBUG] [Thread-201175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:20:30.346 [DEBUG] [Thread-201175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:20:30.357 [DEBUG] [Thread-201175] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:20:30.387 [DEBUG] [Thread-201175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:20:30.387 [DEBUG] [Thread-201175] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:20:30.391 [DEBUG] [Thread-201175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:20:30.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:20:30.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:20:30.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:20:30.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:20:30.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:20:30.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:20:30.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:20:30.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:20:30.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:20:30.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.013583 -999.00  +12.30  23.03     45   +1.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.0 23.0 131.2 31.9 12.7 -25.3 12.5 -24.6 12.2 -23.6 12.6 -24.4
2025-11-25T02:20:30.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:20:30.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:20:30.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.013583
2025-11-25T02:20:30.426 [DEBUG] [Thread-201175] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:20:30.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:20:30.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:20:30.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:20:30.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:20:30.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:20:30.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:20:22', tmtdew=12.85, humidity=40.83, cloud=0.0, wind=25.99, temperature=12.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:20:22', seeing=0.91, atlas_timestamp='2025-11-25T00:19:33.571', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:16:00')
2025-11-25T02:20:30.537 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:20:30.551 [DEBUG] [Thread-201179] [transport.py] [_log()] starting thread (client mode): 0xd0738e80
2025-11-25T02:20:30.551 [DEBUG] [Thread-201179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:20:30.565 [DEBUG] [Thread-201179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:20:30.565 [INFO] [Thread-201179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] client lang: <none>
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] server lang: <none>
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] kex follows: False
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:20:30.573 [DEBUG] [Thread-201179] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:20:30.574 [DEBUG] [Thread-201179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:20:30.574 [DEBUG] [Thread-201179] [transport.py] [_log()] Compression: none
2025-11-25T02:20:30.574 [DEBUG] [Thread-201179] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:20:30.631 [DEBUG] [Thread-201179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:20:30.632 [DEBUG] [Thread-201179] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:20:30.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:20:30.633 [DEBUG] [Thread-201179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:20:30.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:20:30.687 [DEBUG] [Thread-201179] [transport.py] [_log()] userauth is OK
2025-11-25T02:20:30.687 [DEBUG] [Thread-201179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:20:30.687 [DEBUG] [Thread-201179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:20:30.687 [DEBUG] [Thread-201179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:20:30.688 [DEBUG] [Thread-201179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:20:30.707 [INFO] [Thread-201179] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:20:30.708 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:20:30.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:20:31.555 [DEBUG] [Thread-201179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:20:31.555 [DEBUG] [Thread-201179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:20:31.603 [DEBUG] [Thread-201179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:20:31.603 [DEBUG] [Thread-201179] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:20:31.611 [DEBUG] [Thread-201179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:20:31.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:20:31.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:20: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-11-25T02:20:31.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:20:31.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:20:31.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:20:31.640 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:31.645 [DEBUG] [Thread-201179] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:20:32.920 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:32.922 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:42.058 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:45.253 [DEBUG] [Thread-201181 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:49.667 [DEBUG] [Thread-201182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:20:52.548 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:00.409 [DEBUG] [Thread-201183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:01.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:21:01.670 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:21:01.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-11-25T02:21:02.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 20, 55), 12.86, 41.29, 0.0, 29.91, 12.2, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:21:02.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:20:55
2025-11-25T02:21:02.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:21:02.995 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:03.173 [DEBUG] [Thread-201184] [transport.py] [_log()] starting thread (client mode): 0xc9b834f0
2025-11-25T02:21:03.175 [DEBUG] [Thread-201184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:21:03.180 [DEBUG] [Thread-201184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:21:03.180 [INFO] [Thread-201184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] client lang: <none>
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] server lang: <none>
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] kex follows: False
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:21:03.184 [DEBUG] [Thread-201184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:21:03.185 [DEBUG] [Thread-201184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:21:03.185 [DEBUG] [Thread-201184] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:21:03.185 [DEBUG] [Thread-201184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:21:03.185 [DEBUG] [Thread-201184] [transport.py] [_log()] Compression: none
2025-11-25T02:21:03.185 [DEBUG] [Thread-201184] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:21:03.219 [DEBUG] [Thread-201184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:21:03.223 [DEBUG] [Thread-201184] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:21:03.225 [DEBUG] [Thread-201184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:21:03.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:21:03.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:21:03.230 [DEBUG] [Thread-201184] [transport.py] [_log()] userauth is OK
2025-11-25T02:21:03.230 [DEBUG] [Thread-201184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:21:03.230 [DEBUG] [Thread-201184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:21:03.230 [DEBUG] [Thread-201184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:21:03.230 [DEBUG] [Thread-201184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:21:03.269 [INFO] [Thread-201184] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:21:03.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:21:03.884 [DEBUG] [Thread-201184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:21:03.884 [DEBUG] [Thread-201184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:21:03.886 [DEBUG] [Thread-201184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:21:03.925 [DEBUG] [Thread-201184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:21:03.926 [DEBUG] [Thread-201184] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:21:03.929 [DEBUG] [Thread-201184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:21:03.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:21:03.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:21:03.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:21:03.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:21:03.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:21:03.957 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:21:03.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:21:03.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:21:03.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:21:03.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.014278 -999.00  +12.20  25.10     46   +1.00 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 25.1 25.1 132.8 28.6 12.7 -25.1 12.5 -24.7 12.2 -23.5 12.6 -24.4
2025-11-25T02:21:03.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:21:03.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:21:03.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.014278
2025-11-25T02:21:03.964 [DEBUG] [Thread-201184] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:21:03.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:21:03.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:21:03.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:21:03.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:21:03.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:21:03.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:20:55', tmtdew=12.86, humidity=41.29, cloud=0.0, wind=29.91, temperature=12.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:20:55', seeing=0.9, atlas_timestamp='2025-11-25T00:20:33.619', atlas_cloud=1, atlas_rain=1, zp_data=[-0.021250000000000213, -0.03074999999999939, -0.015249999999999986, -0.050499999999999545, -0.014499999999999957, 0.03625000000000078, -0.06300000000000061, -0.03074999999999939, -0.016000000000000014, -0.03500000000000014, 0.005250000000000199, -0.002000000000000668, 0.0600000000000005, 0.1092499999999994, -0.03900000000000148, -0.04300000000000104, -0.010749999999999815, -0.020500000000000185, -0.023000000000001464, -0.0547500000000003, 0.06449999999999889, 0.08374999999999844, 0.02725000000000044, -0.02474999999999916, 0.011999999999998678, 0.006999999999999673, 0.0017499999999994742, 0.027499999999999858, 0.1280000000000001, 0.022500000000000853, 0.07900000000000063, 0.002000000000000668, -0.012750000000000483], zp_timestamp='2025-11-25T00:16:00')
2025-11-25T02:21:04.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:21:04.083 [DEBUG] [Thread-201187] [transport.py] [_log()] starting thread (client mode): 0xd073b700
2025-11-25T02:21:04.083 [DEBUG] [Thread-201187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:21:04.097 [DEBUG] [Thread-201187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:21:04.098 [INFO] [Thread-201187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:21:04.105 [DEBUG] [Thread-201187] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:21:04.105 [DEBUG] [Thread-201187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:21:04.105 [DEBUG] [Thread-201187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] client lang: <none>
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] server lang: <none>
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] kex follows: False
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:21:04.106 [DEBUG] [Thread-201187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:21:04.107 [DEBUG] [Thread-201187] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:21:04.107 [DEBUG] [Thread-201187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:21:04.107 [DEBUG] [Thread-201187] [transport.py] [_log()] Compression: none
2025-11-25T02:21:04.107 [DEBUG] [Thread-201187] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:21:04.163 [DEBUG] [Thread-201187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:21:04.164 [DEBUG] [Thread-201187] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:21:04.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:21:04.165 [DEBUG] [Thread-201187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:21:04.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:21:04.219 [DEBUG] [Thread-201187] [transport.py] [_log()] userauth is OK
2025-11-25T02:21:04.219 [DEBUG] [Thread-201187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:21:04.219 [DEBUG] [Thread-201187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:21:04.220 [DEBUG] [Thread-201187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:21:04.220 [DEBUG] [Thread-201187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:21:04.240 [INFO] [Thread-201187] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:21:04.240 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:21:04.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:21:05.107 [DEBUG] [Thread-201187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:21:05.107 [DEBUG] [Thread-201187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:21:05.155 [DEBUG] [Thread-201187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:21:05.155 [DEBUG] [Thread-201187] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:21:05.163 [DEBUG] [Thread-201187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:21:05.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:21:05.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-11-25T02:21:05.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-11-25T02:21:05.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:21:05.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:21:05.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:21:05.200 [DEBUG] [Thread-201187] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:21:13.454 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:15.510 [DEBUG] [Thread-201189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:24.075 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:30.687 [DEBUG] [Thread-201190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:33.123 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:33.125 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:34.746 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:35.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:21:35.223 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:21:35.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-11-25T02:21:36.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 21, 28), 12.83, 41.39, 0.0, 29.5, 12.2, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:21:36.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:21:28
2025-11-25T02:21:36.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:21:36.393 [DEBUG] [Thread-201191] [transport.py] [_log()] starting thread (client mode): 0xd319fa90
2025-11-25T02:21:36.394 [DEBUG] [Thread-201191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:21:36.406 [DEBUG] [Thread-201191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:21:36.407 [INFO] [Thread-201191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:21:36.412 [DEBUG] [Thread-201191] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:21:36.412 [DEBUG] [Thread-201191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:21:36.412 [DEBUG] [Thread-201191] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:21:36.412 [DEBUG] [Thread-201191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:21:36.412 [DEBUG] [Thread-201191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:21:36.412 [DEBUG] [Thread-201191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:21:36.412 [DEBUG] [Thread-201191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:21:36.413 [DEBUG] [Thread-201191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:21:36.413 [DEBUG] [Thread-201191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:21:36.413 [DEBUG] [Thread-201191] [transport.py] [_log()] client lang: <none>
2025-11-25T02:21:36.413 [DEBUG] [Thread-201191] [transport.py] [_log()] server lang: <none>
2025-11-25T02:21:36.413 [DEBUG] [Thread-201191] [transport.py] [_log()] kex follows: False
2025-11-25T02:21:36.413 [DEBUG] [Thread-201191] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:21:36.413 [DEBUG] [Thread-201191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:21:36.413 [DEBUG] [Thread-201191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:21:36.413 [DEBUG] [Thread-201191] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:21:36.414 [DEBUG] [Thread-201191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:21:36.414 [DEBUG] [Thread-201191] [transport.py] [_log()] Compression: none
2025-11-25T02:21:36.414 [DEBUG] [Thread-201191] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:21:36.444 [DEBUG] [Thread-201191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:21:36.447 [DEBUG] [Thread-201191] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:21:36.448 [DEBUG] [Thread-201191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:21:36.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:21:36.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:21:36.451 [DEBUG] [Thread-201191] [transport.py] [_log()] userauth is OK
2025-11-25T02:21:36.452 [DEBUG] [Thread-201191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:21:36.452 [DEBUG] [Thread-201191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:21:36.452 [DEBUG] [Thread-201191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:21:36.452 [DEBUG] [Thread-201191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:21:36.473 [INFO] [Thread-201191] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:21:36.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:21:37.145 [DEBUG] [Thread-201191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:21:37.145 [DEBUG] [Thread-201191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:21:37.146 [DEBUG] [Thread-201191] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:21:37.186 [DEBUG] [Thread-201191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:21:37.186 [DEBUG] [Thread-201191] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:21:37.189 [DEBUG] [Thread-201191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:21:37.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:21:37.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:21:37.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:21:37.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:21:37.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:21:37.210 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:21:37.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:21:37.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:21:37.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:21:37.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.014625 -999.00  +12.20  21.30     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.3 21.3 124.2 27.1 12.7 -25.1 12.5 -24.6 12.2 -23.5 12.6 -24.4
2025-11-25T02:21:37.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:21:37.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:21:37.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.014625
2025-11-25T02:21:37.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:21:37.228 [DEBUG] [Thread-201191] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:21:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:21:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:21:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:21:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:21:37.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:21:28', tmtdew=12.83, humidity=41.39, cloud=0.0, wind=29.5, temperature=12.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:21:28', seeing=0.85, atlas_timestamp='2025-11-25T00:21:03.600', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:19:00')
2025-11-25T02:21:37.305 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:21:37.316 [DEBUG] [Thread-201194] [transport.py] [_log()] starting thread (client mode): 0xd07397b0
2025-11-25T02:21:37.317 [DEBUG] [Thread-201194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:21:37.331 [DEBUG] [Thread-201194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:21:37.331 [INFO] [Thread-201194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] client lang: <none>
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] server lang: <none>
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] kex follows: False
2025-11-25T02:21:37.338 [DEBUG] [Thread-201194] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:21:37.339 [DEBUG] [Thread-201194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:21:37.339 [DEBUG] [Thread-201194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:21:37.339 [DEBUG] [Thread-201194] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:21:37.339 [DEBUG] [Thread-201194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:21:37.339 [DEBUG] [Thread-201194] [transport.py] [_log()] Compression: none
2025-11-25T02:21:37.339 [DEBUG] [Thread-201194] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:21:37.398 [DEBUG] [Thread-201194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:21:37.398 [DEBUG] [Thread-201194] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:21:37.398 [DEBUG] [Thread-201194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:21:37.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:21:37.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:21:37.455 [DEBUG] [Thread-201194] [transport.py] [_log()] userauth is OK
2025-11-25T02:21:37.455 [DEBUG] [Thread-201194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:21:37.455 [DEBUG] [Thread-201194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:21:37.455 [DEBUG] [Thread-201194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:21:37.455 [DEBUG] [Thread-201194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:21:37.469 [INFO] [Thread-201194] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:21:37.469 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:21:37.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:21:38.341 [DEBUG] [Thread-201194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:21:38.341 [DEBUG] [Thread-201194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:21:38.391 [DEBUG] [Thread-201194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:21:38.391 [DEBUG] [Thread-201194] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:21:38.399 [DEBUG] [Thread-201194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:21:38.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:21:38.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-11-25T02:21:38.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-11-25T02:21:38.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:21:38.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:21:38.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:21:38.432 [DEBUG] [Thread-201194] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:21:45.267 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:45.773 [DEBUG] [Thread-201196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:49.977 [DEBUG] [Thread-201197 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:21:55.667 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:00.948 [DEBUG] [Thread-201198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:06.088 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:08.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:22:08.458 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:22: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-11-25T02:22:09.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 22, 1), 12.84, 41.36, 0.0, 30.0, 12.19, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:22:09.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:22:01
2025-11-25T02:22:09.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:22:09.742 [DEBUG] [Thread-201199] [transport.py] [_log()] starting thread (client mode): 0xd073a7a0
2025-11-25T02:22:09.743 [DEBUG] [Thread-201199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:22:09.751 [DEBUG] [Thread-201199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:22:09.751 [INFO] [Thread-201199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:22:09.757 [DEBUG] [Thread-201199] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:22:09.757 [DEBUG] [Thread-201199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] client lang: <none>
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] server lang: <none>
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] kex follows: False
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:22:09.758 [DEBUG] [Thread-201199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:22:09.759 [DEBUG] [Thread-201199] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:22:09.759 [DEBUG] [Thread-201199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:22:09.759 [DEBUG] [Thread-201199] [transport.py] [_log()] Compression: none
2025-11-25T02:22:09.759 [DEBUG] [Thread-201199] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:22:09.796 [DEBUG] [Thread-201199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:22:09.802 [DEBUG] [Thread-201199] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:22:09.804 [DEBUG] [Thread-201199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:22:09.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:22:09.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:22:09.809 [DEBUG] [Thread-201199] [transport.py] [_log()] userauth is OK
2025-11-25T02:22:09.810 [DEBUG] [Thread-201199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:22:09.810 [DEBUG] [Thread-201199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:22:09.810 [DEBUG] [Thread-201199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:22:09.810 [DEBUG] [Thread-201199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:22:09.849 [INFO] [Thread-201199] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:22:09.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:22:10.484 [DEBUG] [Thread-201199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:22:10.484 [DEBUG] [Thread-201199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:22:10.485 [DEBUG] [Thread-201199] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:22:10.524 [DEBUG] [Thread-201199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:22:10.524 [DEBUG] [Thread-201199] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:22:10.526 [DEBUG] [Thread-201199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:22:10.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:22:10.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:22:10.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:22:10.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:22:10.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:22:10.549 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:22:10.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:22:10.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:22:10.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:22:10.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.014972 -999.00  +12.10  25.29     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 25.3 25.3 130.8 26.8 12.6 -25.1 12.5 -24.6 12.2 -23.4 12.5 -24.3
2025-11-25T02:22:10.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:22:10.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:22:10.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.014972
2025-11-25T02:22:10.557 [DEBUG] [Thread-201199] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:22:10.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:22:10.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:22:10.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:22:10.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:22:10.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:22:10.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:22:01', tmtdew=12.84, humidity=41.36, cloud=0.0, wind=30.0, temperature=12.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:22:01', seeing=0.85, atlas_timestamp='2025-11-25T00:21:33.581', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:19:00')
2025-11-25T02:22:10.666 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:22:10.681 [DEBUG] [Thread-201202] [transport.py] [_log()] starting thread (client mode): 0xd319f9d0
2025-11-25T02:22:10.682 [DEBUG] [Thread-201202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:22:10.699 [DEBUG] [Thread-201202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:22:10.700 [INFO] [Thread-201202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:22:10.710 [DEBUG] [Thread-201202] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:22:10.710 [DEBUG] [Thread-201202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:22:10.710 [DEBUG] [Thread-201202] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:22:10.710 [DEBUG] [Thread-201202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:22:10.710 [DEBUG] [Thread-201202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:22:10.710 [DEBUG] [Thread-201202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:22:10.710 [DEBUG] [Thread-201202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:22:10.710 [DEBUG] [Thread-201202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:22:10.710 [DEBUG] [Thread-201202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:22:10.710 [DEBUG] [Thread-201202] [transport.py] [_log()] client lang: <none>
2025-11-25T02:22:10.711 [DEBUG] [Thread-201202] [transport.py] [_log()] server lang: <none>
2025-11-25T02:22:10.711 [DEBUG] [Thread-201202] [transport.py] [_log()] kex follows: False
2025-11-25T02:22:10.711 [DEBUG] [Thread-201202] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:22:10.711 [DEBUG] [Thread-201202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:22:10.711 [DEBUG] [Thread-201202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:22:10.711 [DEBUG] [Thread-201202] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:22:10.711 [DEBUG] [Thread-201202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:22:10.711 [DEBUG] [Thread-201202] [transport.py] [_log()] Compression: none
2025-11-25T02:22:10.711 [DEBUG] [Thread-201202] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:22:10.768 [DEBUG] [Thread-201202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:22:10.768 [DEBUG] [Thread-201202] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:22:10.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:22:10.769 [DEBUG] [Thread-201202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:22:10.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:22:10.824 [DEBUG] [Thread-201202] [transport.py] [_log()] userauth is OK
2025-11-25T02:22:10.825 [DEBUG] [Thread-201202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:22:10.825 [DEBUG] [Thread-201202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:22:10.825 [DEBUG] [Thread-201202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:22:10.825 [DEBUG] [Thread-201202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:22:10.852 [INFO] [Thread-201202] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:22:10.852 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:22:10.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:22:11.785 [DEBUG] [Thread-201202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:22:11.785 [DEBUG] [Thread-201202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:22:11.833 [DEBUG] [Thread-201202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:22:11.833 [DEBUG] [Thread-201202] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:22:11.842 [DEBUG] [Thread-201202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:22:11.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:22:11.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-11-25T02:22:11.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-11-25T02:22:11.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:22:11.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:22:11.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:22:11.880 [DEBUG] [Thread-201202] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:22:16.051 [DEBUG] [Thread-201204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:17.006 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:27.458 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:31.197 [DEBUG] [Thread-201205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:33.337 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:33.338 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:37.995 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:41.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:22:41.906 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:22:41.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-11-25T02:22:42.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 22, 34), 12.79, 41.36, 0.0, 26.59, 12.12, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:22:42.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:22:34
2025-11-25T02:22:43.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:22:43.222 [DEBUG] [Thread-201206] [transport.py] [_log()] starting thread (client mode): 0xc9b81d80
2025-11-25T02:22:43.223 [DEBUG] [Thread-201206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:22:43.234 [DEBUG] [Thread-201206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:22:43.234 [INFO] [Thread-201206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] client lang: <none>
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] server lang: <none>
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] kex follows: False
2025-11-25T02:22:43.240 [DEBUG] [Thread-201206] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:22:43.241 [DEBUG] [Thread-201206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:22:43.241 [DEBUG] [Thread-201206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:22:43.241 [DEBUG] [Thread-201206] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:22:43.241 [DEBUG] [Thread-201206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:22:43.241 [DEBUG] [Thread-201206] [transport.py] [_log()] Compression: none
2025-11-25T02:22:43.242 [DEBUG] [Thread-201206] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:22:43.278 [DEBUG] [Thread-201206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:22:43.282 [DEBUG] [Thread-201206] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:22:43.283 [DEBUG] [Thread-201206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:22:43.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:22:43.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:22:43.286 [DEBUG] [Thread-201206] [transport.py] [_log()] userauth is OK
2025-11-25T02:22:43.286 [DEBUG] [Thread-201206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:22:43.287 [DEBUG] [Thread-201206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:22:43.287 [DEBUG] [Thread-201206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:22:43.287 [DEBUG] [Thread-201206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:22:43.315 [INFO] [Thread-201206] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:22:43.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:22:43.934 [DEBUG] [Thread-201206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:22:43.935 [DEBUG] [Thread-201206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:22:43.936 [DEBUG] [Thread-201206] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:22:43.975 [DEBUG] [Thread-201206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:22:43.975 [DEBUG] [Thread-201206] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:22:43.979 [DEBUG] [Thread-201206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:22:43.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:22:43.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:22:43.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:22:43.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:22:44.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:22:44.000 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:22:44.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:22:44.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:22:44.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:22:44.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.015319 -999.00  +12.10  23.49     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.5 23.5 128.8 27.5 12.6 -24.9 12.5 -24.5 12.2 -23.3 12.5 -24.3
2025-11-25T02:22:44.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:22:44.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:22:44.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.015319
2025-11-25T02:22:44.013 [DEBUG] [Thread-201206] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:22:44.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:22:44.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:22:44.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:22:44.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:22:44.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:22:44.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:22:34', tmtdew=12.79, humidity=41.36, cloud=0.0, wind=26.59, temperature=12.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:22:34', seeing=0.8, atlas_timestamp='2025-11-25T00:22:03.562', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:19:00')
2025-11-25T02:22:44.099 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:22:44.112 [DEBUG] [Thread-201209] [transport.py] [_log()] starting thread (client mode): 0xd0785c60
2025-11-25T02:22:44.112 [DEBUG] [Thread-201209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:22:44.126 [DEBUG] [Thread-201209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:22:44.126 [INFO] [Thread-201209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] client lang: <none>
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] server lang: <none>
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] kex follows: False
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:22:44.134 [DEBUG] [Thread-201209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:22:44.135 [DEBUG] [Thread-201209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:22:44.135 [DEBUG] [Thread-201209] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:22:44.135 [DEBUG] [Thread-201209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:22:44.135 [DEBUG] [Thread-201209] [transport.py] [_log()] Compression: none
2025-11-25T02:22:44.135 [DEBUG] [Thread-201209] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:22:44.191 [DEBUG] [Thread-201209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:22:44.191 [DEBUG] [Thread-201209] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:22:44.191 [DEBUG] [Thread-201209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:22:44.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:22:44.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:22:44.247 [DEBUG] [Thread-201209] [transport.py] [_log()] userauth is OK
2025-11-25T02:22:44.247 [DEBUG] [Thread-201209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:22:44.247 [DEBUG] [Thread-201209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:22:44.247 [DEBUG] [Thread-201209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:22:44.247 [DEBUG] [Thread-201209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:22:44.261 [INFO] [Thread-201209] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:22:44.261 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:22:44.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:22:45.076 [DEBUG] [Thread-201209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:22:45.076 [DEBUG] [Thread-201209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:22:45.124 [DEBUG] [Thread-201209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:22:45.124 [DEBUG] [Thread-201209] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:22:45.132 [DEBUG] [Thread-201209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:22:45.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:22:45.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:22:45.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-11-25T02:22:45.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:22:45.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:22:45.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:22:45.167 [DEBUG] [Thread-201209] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:22:46.256 [DEBUG] [Thread-201211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:48.436 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:50.277 [DEBUG] [Thread-201212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:22:58.885 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:01.421 [DEBUG] [Thread-201213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:09.365 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:15.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:23:15.167 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:23:15.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-11-25T02:23:16.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 23, 7), 12.78, 41.39, 0.0, 26.96, 12.12, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:23:16.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:23:07
2025-11-25T02:23:16.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:23:16.463 [DEBUG] [Thread-201214] [transport.py] [_log()] starting thread (client mode): 0xc9b81c30
2025-11-25T02:23:16.464 [DEBUG] [Thread-201214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:23:16.474 [DEBUG] [Thread-201214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:23:16.475 [INFO] [Thread-201214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:23:16.481 [DEBUG] [Thread-201214] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:23:16.481 [DEBUG] [Thread-201214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:23:16.481 [DEBUG] [Thread-201214] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:23:16.482 [DEBUG] [Thread-201214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:23:16.482 [DEBUG] [Thread-201214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:23:16.482 [DEBUG] [Thread-201214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:23:16.482 [DEBUG] [Thread-201214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:23:16.482 [DEBUG] [Thread-201214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:23:16.482 [DEBUG] [Thread-201214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:23:16.482 [DEBUG] [Thread-201214] [transport.py] [_log()] client lang: <none>
2025-11-25T02:23:16.482 [DEBUG] [Thread-201214] [transport.py] [_log()] server lang: <none>
2025-11-25T02:23:16.482 [DEBUG] [Thread-201214] [transport.py] [_log()] kex follows: False
2025-11-25T02:23:16.482 [DEBUG] [Thread-201214] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:23:16.483 [DEBUG] [Thread-201214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:23:16.483 [DEBUG] [Thread-201214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:23:16.484 [DEBUG] [Thread-201214] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:23:16.484 [DEBUG] [Thread-201214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:23:16.484 [DEBUG] [Thread-201214] [transport.py] [_log()] Compression: none
2025-11-25T02:23:16.484 [DEBUG] [Thread-201214] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:23:16.518 [DEBUG] [Thread-201216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:16.526 [DEBUG] [Thread-201214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:23:16.532 [DEBUG] [Thread-201214] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:23:16.534 [DEBUG] [Thread-201214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:23:16.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:23:16.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:23:16.538 [DEBUG] [Thread-201214] [transport.py] [_log()] userauth is OK
2025-11-25T02:23:16.539 [DEBUG] [Thread-201214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:23:16.539 [DEBUG] [Thread-201214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:23:16.539 [DEBUG] [Thread-201214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:23:16.539 [DEBUG] [Thread-201214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:23:16.564 [INFO] [Thread-201214] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:23:16.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:23:17.209 [DEBUG] [Thread-201214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:23:17.209 [DEBUG] [Thread-201214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:23:17.210 [DEBUG] [Thread-201214] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:23:17.250 [DEBUG] [Thread-201214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:23:17.250 [DEBUG] [Thread-201214] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:23:17.253 [DEBUG] [Thread-201214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:23:17.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:23:17.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:23:17.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:23:17.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:23:17.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:23:17.278 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:23:17.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:23:17.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:23:17.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:23:17.280 [DEBUG] [Thread-201214] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:23:17.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.015667 -999.00  +12.10  21.79     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.8 21.8 125.4 27.6 12.6 -24.9 12.5 -24.5 12.2 -23.4 12.5 -24.1
2025-11-25T02:23:17.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:23:17.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:23:17.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.015667
2025-11-25T02:23:17.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:23:17.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:23:17.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:23:17.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:23:17.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:23:17.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:23:07', tmtdew=12.78, humidity=41.39, cloud=0.0, wind=26.96, temperature=12.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:23:08', seeing=0.92, atlas_timestamp='2025-11-25T00:22:33.629', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:19:00')
2025-11-25T02:23:17.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:23:17.396 [DEBUG] [Thread-201218] [transport.py] [_log()] starting thread (client mode): 0xc9b81f30
2025-11-25T02:23:17.397 [DEBUG] [Thread-201218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:23:17.411 [DEBUG] [Thread-201218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:23:17.411 [INFO] [Thread-201218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] client lang: <none>
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] server lang: <none>
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] kex follows: False
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:23:17.419 [DEBUG] [Thread-201218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:23:17.420 [DEBUG] [Thread-201218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:23:17.420 [DEBUG] [Thread-201218] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:23:17.420 [DEBUG] [Thread-201218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:23:17.420 [DEBUG] [Thread-201218] [transport.py] [_log()] Compression: none
2025-11-25T02:23:17.420 [DEBUG] [Thread-201218] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:23:17.479 [DEBUG] [Thread-201218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:23:17.479 [DEBUG] [Thread-201218] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:23:17.480 [DEBUG] [Thread-201218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:23:17.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:23:17.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:23:17.535 [DEBUG] [Thread-201218] [transport.py] [_log()] userauth is OK
2025-11-25T02:23:17.535 [DEBUG] [Thread-201218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:23:17.535 [DEBUG] [Thread-201218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:23:17.535 [DEBUG] [Thread-201218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:23:17.535 [DEBUG] [Thread-201218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:23:17.553 [INFO] [Thread-201218] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:23:17.553 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:23:17.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:23:18.395 [DEBUG] [Thread-201218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:23:18.395 [DEBUG] [Thread-201218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:23:18.443 [DEBUG] [Thread-201218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:23:18.443 [DEBUG] [Thread-201218] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:23:18.452 [DEBUG] [Thread-201218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:23:18.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:23:18.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-11-25T02:23:18.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-11-25T02:23:18.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:23:18.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:23:18.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:23:18.488 [DEBUG] [Thread-201218] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:23:19.802 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:30.203 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:31.585 [DEBUG] [Thread-201220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:33.541 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:33.543 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:40.638 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:46.755 [DEBUG] [Thread-201221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:48.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:23:48.502 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:23:48.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-11-25T02:23:49.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 23, 40), 12.76, 41.46, 0.0, 25.27, 12.14, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:23:49.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:23:40
2025-11-25T02:23:49.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:23:49.919 [DEBUG] [Thread-201222] [transport.py] [_log()] starting thread (client mode): 0xd3151cf0
2025-11-25T02:23:49.920 [DEBUG] [Thread-201222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:23:49.923 [DEBUG] [Thread-201222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:23:49.923 [INFO] [Thread-201222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] client lang: <none>
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] server lang: <none>
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] kex follows: False
2025-11-25T02:23:49.927 [DEBUG] [Thread-201222] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:23:49.928 [DEBUG] [Thread-201222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:23:49.928 [DEBUG] [Thread-201222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:23:49.928 [DEBUG] [Thread-201222] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:23:49.928 [DEBUG] [Thread-201222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:23:49.928 [DEBUG] [Thread-201222] [transport.py] [_log()] Compression: none
2025-11-25T02:23:49.928 [DEBUG] [Thread-201222] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:23:49.960 [DEBUG] [Thread-201222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:23:49.964 [DEBUG] [Thread-201222] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:23:49.966 [DEBUG] [Thread-201222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:23:49.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:23:49.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:23:49.971 [DEBUG] [Thread-201222] [transport.py] [_log()] userauth is OK
2025-11-25T02:23:49.971 [DEBUG] [Thread-201222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:23:49.972 [DEBUG] [Thread-201222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:23:49.972 [DEBUG] [Thread-201222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:23:49.972 [DEBUG] [Thread-201222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:23:50.009 [INFO] [Thread-201222] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:23:50.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:23:50.595 [DEBUG] [Thread-201224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:50.667 [DEBUG] [Thread-201222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:23:50.667 [DEBUG] [Thread-201222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:23:50.668 [DEBUG] [Thread-201222] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:23:50.709 [DEBUG] [Thread-201222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:23:50.709 [DEBUG] [Thread-201222] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:23:50.711 [DEBUG] [Thread-201222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:23:50.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:23:50.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:23:50.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:23:50.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:23:50.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:23:50.731 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:23:50.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:23:50.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:23:50.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:23:50.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.016014 -999.00  +12.10  23.60     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.6 23.6 128.2 26.2 12.6 -24.9 12.5 -24.5 12.2 -23.3 12.5 -24.1
2025-11-25T02:23:50.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:23:50.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:23:50.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.016014
2025-11-25T02:23:50.738 [DEBUG] [Thread-201222] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:23:50.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:23:50.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:23:50.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:23:50.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:23:50.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:23:50.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:23:40', tmtdew=12.76, humidity=41.46, cloud=0.0, wind=25.27, temperature=12.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:23:41', seeing=0.91, atlas_timestamp='2025-11-25T00:23:03.610', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:19:00')
2025-11-25T02:23:50.824 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:23:50.837 [DEBUG] [Thread-201226] [transport.py] [_log()] starting thread (client mode): 0xd3151480
2025-11-25T02:23:50.837 [DEBUG] [Thread-201226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:23:50.852 [DEBUG] [Thread-201226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:23:50.852 [INFO] [Thread-201226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] client lang: <none>
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] server lang: <none>
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] kex follows: False
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] Compression: none
2025-11-25T02:23:50.860 [DEBUG] [Thread-201226] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:23:50.918 [DEBUG] [Thread-201226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:23:50.918 [DEBUG] [Thread-201226] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:23:50.918 [DEBUG] [Thread-201226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:23:50.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:23:50.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:23:50.979 [DEBUG] [Thread-201226] [transport.py] [_log()] userauth is OK
2025-11-25T02:23:50.980 [DEBUG] [Thread-201226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:23:50.980 [DEBUG] [Thread-201226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:23:50.980 [DEBUG] [Thread-201226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:23:50.980 [DEBUG] [Thread-201226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:23:51.000 [INFO] [Thread-201226] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:23:51.000 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:23:51.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:23:51.138 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:23:51.864 [DEBUG] [Thread-201226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:23:51.864 [DEBUG] [Thread-201226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:23:51.912 [DEBUG] [Thread-201226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:23:51.912 [DEBUG] [Thread-201226] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:23:51.920 [DEBUG] [Thread-201226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:23:51.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:23:51.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-11-25T02:23:51.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:23:51.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:23:51.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:23:51.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:23:51.954 [DEBUG] [Thread-201226] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:24:01.549 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:01.864 [DEBUG] [Thread-201228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:12.020 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:17.043 [DEBUG] [Thread-201229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:21.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:24:21.978 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:24:21.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:24:22.537 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:23.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 24, 13), 12.72, 41.53, 0.0, 24.91, 12.04, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:24:23.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:24:13
2025-11-25T02:24:23.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:24:23.409 [DEBUG] [Thread-201230] [transport.py] [_log()] starting thread (client mode): 0xd317d930
2025-11-25T02:24:23.410 [DEBUG] [Thread-201230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:24:23.421 [DEBUG] [Thread-201230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:24:23.422 [INFO] [Thread-201230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] client lang: <none>
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] server lang: <none>
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] kex follows: False
2025-11-25T02:24:23.427 [DEBUG] [Thread-201230] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:24:23.428 [DEBUG] [Thread-201230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:24:23.428 [DEBUG] [Thread-201230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:24:23.428 [DEBUG] [Thread-201230] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:24:23.428 [DEBUG] [Thread-201230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:24:23.428 [DEBUG] [Thread-201230] [transport.py] [_log()] Compression: none
2025-11-25T02:24:23.428 [DEBUG] [Thread-201230] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:24:23.464 [DEBUG] [Thread-201230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:24:23.469 [DEBUG] [Thread-201230] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:24:23.471 [DEBUG] [Thread-201230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:24:23.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:24:23.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:24:23.477 [DEBUG] [Thread-201230] [transport.py] [_log()] userauth is OK
2025-11-25T02:24:23.477 [DEBUG] [Thread-201230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:24:23.477 [DEBUG] [Thread-201230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:24:23.477 [DEBUG] [Thread-201230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:24:23.478 [DEBUG] [Thread-201230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:24:23.516 [INFO] [Thread-201230] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:24:23.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:24:24.143 [DEBUG] [Thread-201230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:24:24.143 [DEBUG] [Thread-201230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:24:24.144 [DEBUG] [Thread-201230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:24:24.184 [DEBUG] [Thread-201230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:24:24.184 [DEBUG] [Thread-201230] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:24:24.187 [DEBUG] [Thread-201230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:24:24.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:24:24.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:24:24.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:24:24.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:24:24.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:24:24.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:24:24.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:24:24.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:24:24.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:24:24.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.016708 -999.00  +12.10  21.90     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.9 21.9 124.0 25.6 12.6 -24.9 12.4 -24.3 12.2 -23.2 12.5 -24.3
2025-11-25T02:24:24.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:24:24.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:24:24.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.016708
2025-11-25T02:24:24.215 [DEBUG] [Thread-201230] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:24:24.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:24:24.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:24:24.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:24:24.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:24:24.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:24:24.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:24:13', tmtdew=12.72, humidity=41.53, cloud=0.0, wind=24.91, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:24:14', seeing=0.92, atlas_timestamp='2025-11-25T00:24:03.571', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:22:00')
2025-11-25T02:24:24.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:24:24.317 [DEBUG] [Thread-201233] [transport.py] [_log()] starting thread (client mode): 0xd073b700
2025-11-25T02:24:24.318 [DEBUG] [Thread-201233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:24:24.332 [DEBUG] [Thread-201233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:24:24.332 [INFO] [Thread-201233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:24:24.339 [DEBUG] [Thread-201233] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] client lang: <none>
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] server lang: <none>
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] kex follows: False
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:24:24.340 [DEBUG] [Thread-201233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:24:24.341 [DEBUG] [Thread-201233] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:24:24.341 [DEBUG] [Thread-201233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:24:24.341 [DEBUG] [Thread-201233] [transport.py] [_log()] Compression: none
2025-11-25T02:24:24.341 [DEBUG] [Thread-201233] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:24:24.400 [DEBUG] [Thread-201233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:24:24.400 [DEBUG] [Thread-201233] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:24:24.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:24:24.401 [DEBUG] [Thread-201233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:24:24.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:24:24.456 [DEBUG] [Thread-201233] [transport.py] [_log()] userauth is OK
2025-11-25T02:24:24.456 [DEBUG] [Thread-201233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:24:24.456 [DEBUG] [Thread-201233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:24:24.457 [DEBUG] [Thread-201233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:24:24.457 [DEBUG] [Thread-201233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:24:24.475 [INFO] [Thread-201233] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:24:24.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:24:24.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:24:25.348 [DEBUG] [Thread-201233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:24:25.349 [DEBUG] [Thread-201233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:24:25.396 [DEBUG] [Thread-201233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:24:25.397 [DEBUG] [Thread-201233] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:24:25.405 [DEBUG] [Thread-201233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:24:25.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:24:25.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-11-25T02:24:25.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-11-25T02:24:25.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:24:25.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:24:25.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:24:25.443 [DEBUG] [Thread-201233] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:24:32.145 [DEBUG] [Thread-201235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:33.114 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:33.753 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:33.754 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:43.559 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:47.296 [DEBUG] [Thread-201236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:50.909 [DEBUG] [Thread-201237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:53.988 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:24:55.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:24:55.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:24:55.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-11-25T02:24:56.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 24, 46), 12.7, 41.59, 0.0, 26.04, 12.05, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:24:56.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:24:46
2025-11-25T02:24:56.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:24:56.714 [DEBUG] [Thread-201238] [transport.py] [_log()] starting thread (client mode): 0xd319f9d0
2025-11-25T02:24:56.715 [DEBUG] [Thread-201238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:24:56.725 [DEBUG] [Thread-201238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:24:56.726 [INFO] [Thread-201238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:24:56.730 [DEBUG] [Thread-201238] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:24:56.730 [DEBUG] [Thread-201238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:24:56.730 [DEBUG] [Thread-201238] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:24:56.730 [DEBUG] [Thread-201238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:24:56.730 [DEBUG] [Thread-201238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:24:56.730 [DEBUG] [Thread-201238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:24:56.730 [DEBUG] [Thread-201238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:24:56.730 [DEBUG] [Thread-201238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:24:56.731 [DEBUG] [Thread-201238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:24:56.731 [DEBUG] [Thread-201238] [transport.py] [_log()] client lang: <none>
2025-11-25T02:24:56.731 [DEBUG] [Thread-201238] [transport.py] [_log()] server lang: <none>
2025-11-25T02:24:56.731 [DEBUG] [Thread-201238] [transport.py] [_log()] kex follows: False
2025-11-25T02:24:56.731 [DEBUG] [Thread-201238] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:24:56.731 [DEBUG] [Thread-201238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:24:56.731 [DEBUG] [Thread-201238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:24:56.732 [DEBUG] [Thread-201238] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:24:56.732 [DEBUG] [Thread-201238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:24:56.732 [DEBUG] [Thread-201238] [transport.py] [_log()] Compression: none
2025-11-25T02:24:56.732 [DEBUG] [Thread-201238] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:24:56.763 [DEBUG] [Thread-201238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:24:56.767 [DEBUG] [Thread-201238] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:24:56.769 [DEBUG] [Thread-201238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:24:56.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:24:56.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:24:56.772 [DEBUG] [Thread-201238] [transport.py] [_log()] userauth is OK
2025-11-25T02:24:56.772 [DEBUG] [Thread-201238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:24:56.772 [DEBUG] [Thread-201238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:24:56.772 [DEBUG] [Thread-201238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:24:56.773 [DEBUG] [Thread-201238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:24:56.792 [INFO] [Thread-201238] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:24:56.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:24:57.390 [DEBUG] [Thread-201238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:24:57.390 [DEBUG] [Thread-201238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:24:57.391 [DEBUG] [Thread-201238] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:24:57.431 [DEBUG] [Thread-201238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:24:57.431 [DEBUG] [Thread-201238] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:24:57.433 [DEBUG] [Thread-201238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:24:57.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:24:57.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:24:57.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:24:57.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:24:57.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:24:57.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:24:57.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:24:57.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:24:57.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:24:57.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.017056 -999.00  +12.10  19.08     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 19.1 19.1 122.4 24.3 12.6 -24.8 12.4 -24.3 12.2 -23.2 12.5 -24.0
2025-11-25T02:24:57.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:24:57.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:24:57.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.017056
2025-11-25T02:24:57.464 [DEBUG] [Thread-201238] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:24:57.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:24:57.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:24:57.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:24:57.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:24:57.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:24:57.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:24:46', tmtdew=12.7, humidity=41.59, cloud=0.0, wind=26.04, temperature=12.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:24:46', seeing=0.89, atlas_timestamp='2025-11-25T00:24:33.638', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:22:00')
2025-11-25T02:24:57.555 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:24:57.565 [DEBUG] [Thread-201241] [transport.py] [_log()] starting thread (client mode): 0xd0784820
2025-11-25T02:24:57.566 [DEBUG] [Thread-201241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:24:57.580 [DEBUG] [Thread-201241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:24:57.580 [INFO] [Thread-201241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] client lang: <none>
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] server lang: <none>
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] kex follows: False
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:24:57.588 [DEBUG] [Thread-201241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:24:57.589 [DEBUG] [Thread-201241] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:24:57.589 [DEBUG] [Thread-201241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:24:57.589 [DEBUG] [Thread-201241] [transport.py] [_log()] Compression: none
2025-11-25T02:24:57.589 [DEBUG] [Thread-201241] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:24:57.646 [DEBUG] [Thread-201241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:24:57.646 [DEBUG] [Thread-201241] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:24:57.646 [DEBUG] [Thread-201241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:24:57.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:24:57.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:24:57.703 [DEBUG] [Thread-201241] [transport.py] [_log()] userauth is OK
2025-11-25T02:24:57.703 [DEBUG] [Thread-201241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:24:57.703 [DEBUG] [Thread-201241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:24:57.703 [DEBUG] [Thread-201241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:24:57.703 [DEBUG] [Thread-201241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:24:57.717 [INFO] [Thread-201241] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:24:57.717 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:24:57.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:24:58.558 [DEBUG] [Thread-201241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:24:58.558 [DEBUG] [Thread-201241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:24:58.606 [DEBUG] [Thread-201241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:24:58.606 [DEBUG] [Thread-201241] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:24:58.614 [DEBUG] [Thread-201241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:24:58.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:24:58.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-11-25T02:24: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') -> 00000000
2025-11-25T02:24:58.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:24:58.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:24:58.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:24:58.648 [DEBUG] [Thread-201241] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:25:02.352 [DEBUG] [Thread-201243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:04.599 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:15.002 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:17.548 [DEBUG] [Thread-201244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:25.455 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:28.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:25:28.673 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:25:28.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-11-25T02:25:29.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 25, 19), 12.7, 41.61, 0.0, 25.88, 12.07, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:25:29.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:25:19
2025-11-25T02:25:29.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:25:29.944 [DEBUG] [Thread-201245] [transport.py] [_log()] starting thread (client mode): 0xd07874f0
2025-11-25T02:25:29.945 [DEBUG] [Thread-201245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:25:29.953 [DEBUG] [Thread-201245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:25:29.953 [INFO] [Thread-201245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:25:29.958 [DEBUG] [Thread-201245] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] client lang: <none>
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] server lang: <none>
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] kex follows: False
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:25:29.959 [DEBUG] [Thread-201245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:25:29.960 [DEBUG] [Thread-201245] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:25:29.960 [DEBUG] [Thread-201245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:25:29.960 [DEBUG] [Thread-201245] [transport.py] [_log()] Compression: none
2025-11-25T02:25:29.960 [DEBUG] [Thread-201245] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:25:29.994 [DEBUG] [Thread-201245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:25:30.000 [DEBUG] [Thread-201245] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:25:30.002 [DEBUG] [Thread-201245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:25:30.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:25:30.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:25:30.008 [DEBUG] [Thread-201245] [transport.py] [_log()] userauth is OK
2025-11-25T02:25:30.008 [DEBUG] [Thread-201245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:25:30.008 [DEBUG] [Thread-201245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:25:30.008 [DEBUG] [Thread-201245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:25:30.009 [DEBUG] [Thread-201245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:25:30.035 [INFO] [Thread-201245] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:25:30.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:25:30.687 [DEBUG] [Thread-201245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:25:30.687 [DEBUG] [Thread-201245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:25:30.697 [DEBUG] [Thread-201245] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:25:30.728 [DEBUG] [Thread-201245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:25:30.728 [DEBUG] [Thread-201245] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:25:30.731 [DEBUG] [Thread-201245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:25:30.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:25:30.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:25:30.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:25:30.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:25:30.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:25:30.757 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:25:30.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:25:30.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:25:30.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:25:30.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.017403 -999.00  +12.10  20.36     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 20.4 20.4 127.2 24.1 12.6 -24.8 12.4 -24.4 12.2 -23.3 12.5 -24.0
2025-11-25T02:25:30.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:25:30.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:25:30.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.017403
2025-11-25T02:25:30.766 [DEBUG] [Thread-201245] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:25:30.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:25:30.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:25:30.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:25:30.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:25:30.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:25:30.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:25:19', tmtdew=12.7, humidity=41.61, cloud=0.0, wind=25.88, temperature=12.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:25:20', seeing=0.89, atlas_timestamp='2025-11-25T00:25:03.619', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:22:00')
2025-11-25T02:25:30.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:25:30.893 [DEBUG] [Thread-201248] [transport.py] [_log()] starting thread (client mode): 0xc9b76320
2025-11-25T02:25:30.893 [DEBUG] [Thread-201248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:25:30.910 [DEBUG] [Thread-201248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:25:30.910 [INFO] [Thread-201248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:25:30.918 [DEBUG] [Thread-201248] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:25:30.918 [DEBUG] [Thread-201248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:25:30.918 [DEBUG] [Thread-201248] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:25:30.918 [DEBUG] [Thread-201248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:25:30.918 [DEBUG] [Thread-201248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:25:30.918 [DEBUG] [Thread-201248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:25:30.919 [DEBUG] [Thread-201248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:25:30.919 [DEBUG] [Thread-201248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:25:30.919 [DEBUG] [Thread-201248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:25:30.919 [DEBUG] [Thread-201248] [transport.py] [_log()] client lang: <none>
2025-11-25T02:25:30.919 [DEBUG] [Thread-201248] [transport.py] [_log()] server lang: <none>
2025-11-25T02:25:30.919 [DEBUG] [Thread-201248] [transport.py] [_log()] kex follows: False
2025-11-25T02:25:30.919 [DEBUG] [Thread-201248] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:25:30.919 [DEBUG] [Thread-201248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:25:30.919 [DEBUG] [Thread-201248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:25:30.920 [DEBUG] [Thread-201248] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:25:30.920 [DEBUG] [Thread-201248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:25:30.920 [DEBUG] [Thread-201248] [transport.py] [_log()] Compression: none
2025-11-25T02:25:30.920 [DEBUG] [Thread-201248] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:25:30.975 [DEBUG] [Thread-201248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:25:30.976 [DEBUG] [Thread-201248] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:25:30.976 [DEBUG] [Thread-201248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:25:30.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:25:30.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:25:31.031 [DEBUG] [Thread-201248] [transport.py] [_log()] userauth is OK
2025-11-25T02:25:31.031 [DEBUG] [Thread-201248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:25:31.032 [DEBUG] [Thread-201248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:25:31.032 [DEBUG] [Thread-201248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:25:31.032 [DEBUG] [Thread-201248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:25:31.058 [INFO] [Thread-201248] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:25:31.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:25:31.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:25:31.898 [DEBUG] [Thread-201248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:25:31.898 [DEBUG] [Thread-201248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:25:31.946 [DEBUG] [Thread-201248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:25:31.946 [DEBUG] [Thread-201248] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:25:31.955 [DEBUG] [Thread-201248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:25:31.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:25:31.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:25:31.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') -> 00000000
2025-11-25T02:25:31.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:25:31.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:25:31.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:25:32.002 [DEBUG] [Thread-201248] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:25:32.619 [DEBUG] [Thread-201250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:33.958 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:33.960 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:36.058 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:46.483 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:47.774 [DEBUG] [Thread-201251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:51.185 [DEBUG] [Thread-201252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:25:57.480 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:02.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:26:02.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:26:02.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-11-25T02:26:02.869 [DEBUG] [Thread-201253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:03.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 25, 52), 12.71, 41.56, 0.0, 26.31, 12.04, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:26:03.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:25:52
2025-11-25T02:26:03.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:26:03.605 [DEBUG] [Thread-201254] [transport.py] [_log()] starting thread (client mode): 0xd319eef0
2025-11-25T02:26:03.606 [DEBUG] [Thread-201254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:26:03.619 [DEBUG] [Thread-201254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:26:03.619 [INFO] [Thread-201254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:26:03.624 [DEBUG] [Thread-201254] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] client lang: <none>
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] server lang: <none>
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] kex follows: False
2025-11-25T02:26:03.625 [DEBUG] [Thread-201254] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:26:03.626 [DEBUG] [Thread-201254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:26:03.626 [DEBUG] [Thread-201254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:26:03.626 [DEBUG] [Thread-201254] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:26:03.626 [DEBUG] [Thread-201254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:26:03.626 [DEBUG] [Thread-201254] [transport.py] [_log()] Compression: none
2025-11-25T02:26:03.626 [DEBUG] [Thread-201254] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:26:03.664 [DEBUG] [Thread-201254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:26:03.669 [DEBUG] [Thread-201254] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:26:03.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:26:03.673 [DEBUG] [Thread-201254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:26:03.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:26:03.677 [DEBUG] [Thread-201254] [transport.py] [_log()] userauth is OK
2025-11-25T02:26:03.677 [DEBUG] [Thread-201254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:26:03.678 [DEBUG] [Thread-201254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:26:03.678 [DEBUG] [Thread-201254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:26:03.678 [DEBUG] [Thread-201254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:26:03.715 [INFO] [Thread-201254] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:26:03.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:26:04.340 [DEBUG] [Thread-201254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:26:04.340 [DEBUG] [Thread-201254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:26:04.351 [DEBUG] [Thread-201254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:26:04.381 [DEBUG] [Thread-201254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:26:04.382 [DEBUG] [Thread-201254] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:26:04.385 [DEBUG] [Thread-201254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:26:04.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:26:04.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:26:04.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:26:04.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:26:04.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:26:04.414 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:26:04.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:26:04.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:26:04.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:26:04.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.017750 -999.00  +12.10  21.35     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 21.4 21.4 125.4 27.2 12.6 -24.9 12.5 -24.5 12.2 -23.1 12.5 -24.1
2025-11-25T02:26:04.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:26:04.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:26:04.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.017750
2025-11-25T02:26:04.422 [DEBUG] [Thread-201254] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:26:04.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:26:04.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:26:04.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:26:04.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:26:04.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:26:04.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:25:52', tmtdew=12.71, humidity=41.56, cloud=0.0, wind=26.31, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:25:53', seeing=0.79, atlas_timestamp='2025-11-25T00:25:33.600', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:22:00')
2025-11-25T02:26:04.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:26:04.538 [DEBUG] [Thread-201257] [transport.py] [_log()] starting thread (client mode): 0xc9b83760
2025-11-25T02:26:04.538 [DEBUG] [Thread-201257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:26:04.554 [DEBUG] [Thread-201257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:26:04.554 [INFO] [Thread-201257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:26:04.562 [DEBUG] [Thread-201257] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:26:04.562 [DEBUG] [Thread-201257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:26:04.562 [DEBUG] [Thread-201257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:26:04.562 [DEBUG] [Thread-201257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:26:04.562 [DEBUG] [Thread-201257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:26:04.562 [DEBUG] [Thread-201257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] client lang: <none>
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] server lang: <none>
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] kex follows: False
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] Compression: none
2025-11-25T02:26:04.563 [DEBUG] [Thread-201257] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:26:04.620 [DEBUG] [Thread-201257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:26:04.621 [DEBUG] [Thread-201257] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:26:04.621 [DEBUG] [Thread-201257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:26:04.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:26:04.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:26:04.680 [DEBUG] [Thread-201257] [transport.py] [_log()] userauth is OK
2025-11-25T02:26:04.681 [DEBUG] [Thread-201257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:26:04.681 [DEBUG] [Thread-201257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:26:04.681 [DEBUG] [Thread-201257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:26:04.681 [DEBUG] [Thread-201257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:26:04.700 [INFO] [Thread-201257] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:26:04.700 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:26:04.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:26:05.580 [DEBUG] [Thread-201257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:26:05.580 [DEBUG] [Thread-201257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:26:05.628 [DEBUG] [Thread-201257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:26:05.628 [DEBUG] [Thread-201257] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:26:05.636 [DEBUG] [Thread-201257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:26:05.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:26:05.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-11-25T02:26:05.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-11-25T02:26:05.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:26:05.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:26:05.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:26:05.676 [DEBUG] [Thread-201257] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:26:08.213 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:17.960 [DEBUG] [Thread-201259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:18.765 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:29.302 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:33.112 [DEBUG] [Thread-201260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:34.170 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:34.172 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:35.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:26:35.704 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:26:35.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:26:36.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 26, 26), 12.69, 41.61, 0.0, 25.53, 12.02, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:26:36.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:26:26
2025-11-25T02:26:36.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:26:36.984 [DEBUG] [Thread-201261] [transport.py] [_log()] starting thread (client mode): 0xc9b75870
2025-11-25T02:26:36.984 [DEBUG] [Thread-201261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:26:36.989 [DEBUG] [Thread-201261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:26:36.989 [INFO] [Thread-201261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] client lang: <none>
2025-11-25T02:26:36.993 [DEBUG] [Thread-201261] [transport.py] [_log()] server lang: <none>
2025-11-25T02:26:36.994 [DEBUG] [Thread-201261] [transport.py] [_log()] kex follows: False
2025-11-25T02:26:36.994 [DEBUG] [Thread-201261] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:26:36.994 [DEBUG] [Thread-201261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:26:36.994 [DEBUG] [Thread-201261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:26:36.995 [DEBUG] [Thread-201261] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:26:36.995 [DEBUG] [Thread-201261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:26:36.995 [DEBUG] [Thread-201261] [transport.py] [_log()] Compression: none
2025-11-25T02:26:36.995 [DEBUG] [Thread-201261] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:26:37.029 [DEBUG] [Thread-201261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:26:37.033 [DEBUG] [Thread-201261] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:26:37.035 [DEBUG] [Thread-201261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:26:37.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:26:37.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:26:37.040 [DEBUG] [Thread-201261] [transport.py] [_log()] userauth is OK
2025-11-25T02:26:37.040 [DEBUG] [Thread-201261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:26:37.040 [DEBUG] [Thread-201261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:26:37.040 [DEBUG] [Thread-201261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:26:37.040 [DEBUG] [Thread-201261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:26:37.066 [INFO] [Thread-201261] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:26:37.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:26:37.693 [DEBUG] [Thread-201261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:26:37.693 [DEBUG] [Thread-201261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:26:37.704 [DEBUG] [Thread-201261] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:26:37.733 [DEBUG] [Thread-201261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:26:37.734 [DEBUG] [Thread-201261] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:26:37.738 [DEBUG] [Thread-201261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:26:37.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:26:37.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:26:37.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:26:37.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:26:37.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:26:37.773 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:26:37.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:26:37.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:26:37.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:26:37.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.018097 -999.00  +12.10  23.26     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.3 23.3 124.2 27.5 12.6 -24.9 12.5 -24.3 12.2 -23.2 12.5 -24.0
2025-11-25T02:26:37.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:26:37.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:26:37.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.018097
2025-11-25T02:26:37.781 [DEBUG] [Thread-201261] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:26:37.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:26:37.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:26:37.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:26:37.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:26:37.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:26:37.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:26:26', tmtdew=12.69, humidity=41.61, cloud=0.0, wind=25.53, temperature=12.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:26:26', seeing=0.82, atlas_timestamp='2025-11-25T00:26:03.581', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:22:00')
2025-11-25T02:26:37.895 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:26:37.907 [DEBUG] [Thread-201264] [transport.py] [_log()] starting thread (client mode): 0xd3148f40
2025-11-25T02:26:37.908 [DEBUG] [Thread-201264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:26:37.923 [DEBUG] [Thread-201264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:26:37.923 [INFO] [Thread-201264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:26:37.931 [DEBUG] [Thread-201264] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:26:37.931 [DEBUG] [Thread-201264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:26:37.931 [DEBUG] [Thread-201264] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:26:37.931 [DEBUG] [Thread-201264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:26:37.931 [DEBUG] [Thread-201264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:26:37.931 [DEBUG] [Thread-201264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] client lang: <none>
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] server lang: <none>
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] kex follows: False
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] Compression: none
2025-11-25T02:26:37.932 [DEBUG] [Thread-201264] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:26:37.991 [DEBUG] [Thread-201264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:26:37.991 [DEBUG] [Thread-201264] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:26:37.992 [DEBUG] [Thread-201264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:26:37.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:26:37.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:26:38.048 [DEBUG] [Thread-201264] [transport.py] [_log()] userauth is OK
2025-11-25T02:26:38.048 [DEBUG] [Thread-201264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:26:38.048 [DEBUG] [Thread-201264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:26:38.048 [DEBUG] [Thread-201264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:26:38.048 [DEBUG] [Thread-201264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:26:38.069 [INFO] [Thread-201264] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:26:38.070 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:26:38.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:26:38.917 [DEBUG] [Thread-201264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:26:38.917 [DEBUG] [Thread-201264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:26:38.964 [DEBUG] [Thread-201264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:26:38.964 [DEBUG] [Thread-201264] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:26:38.974 [DEBUG] [Thread-201264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:26:38.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:26:38.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-11-25T02:26:38.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-11-25T02:26:39.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:26:39.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:26:39.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:26:39.013 [DEBUG] [Thread-201264] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:26:39.812 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:48.188 [DEBUG] [Thread-201266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:50.334 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:26:51.441 [DEBUG] [Thread-201267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:00.773 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:03.340 [DEBUG] [Thread-201268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:09.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:27:09.038 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:27:09.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-11-25T02:27:09.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 26, 59), 12.73, 41.66, 0.0, 26.13, 12.09, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:27:09.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:26:59
2025-11-25T02:27:10.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:27:10.293 [DEBUG] [Thread-201269] [transport.py] [_log()] starting thread (client mode): 0xd0711e70
2025-11-25T02:27:10.294 [DEBUG] [Thread-201269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:27:10.306 [DEBUG] [Thread-201269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:27:10.306 [INFO] [Thread-201269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] client lang: <none>
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] server lang: <none>
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] kex follows: False
2025-11-25T02:27:10.311 [DEBUG] [Thread-201269] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:27:10.312 [DEBUG] [Thread-201269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:27:10.312 [DEBUG] [Thread-201269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:27:10.312 [DEBUG] [Thread-201269] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:27:10.312 [DEBUG] [Thread-201269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:27:10.313 [DEBUG] [Thread-201269] [transport.py] [_log()] Compression: none
2025-11-25T02:27:10.313 [DEBUG] [Thread-201269] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:27:10.344 [DEBUG] [Thread-201269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:27:10.348 [DEBUG] [Thread-201269] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:27:10.349 [DEBUG] [Thread-201269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:27:10.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:27:10.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:27:10.354 [DEBUG] [Thread-201269] [transport.py] [_log()] userauth is OK
2025-11-25T02:27:10.354 [DEBUG] [Thread-201269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:27:10.355 [DEBUG] [Thread-201269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:27:10.355 [DEBUG] [Thread-201269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:27:10.355 [DEBUG] [Thread-201269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:27:10.394 [INFO] [Thread-201269] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:27:10.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:27:11.020 [DEBUG] [Thread-201269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:27:11.020 [DEBUG] [Thread-201269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:27:11.021 [DEBUG] [Thread-201269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:27:11.060 [DEBUG] [Thread-201269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:27:11.060 [DEBUG] [Thread-201269] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:27:11.063 [DEBUG] [Thread-201269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:27:11.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:27:11.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:27:11.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:27:11.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:27:11.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:27:11.086 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:27:11.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:27:11.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:27:11.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:27:11.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.018444 -999.00  +12.10  17.06     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 17.1 17.1 119.8 24.0 12.6 -24.9 12.4 -24.3 12.2 -23.1 12.5 -24.2
2025-11-25T02:27:11.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:27:11.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:27:11.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.018444
2025-11-25T02:27:11.093 [DEBUG] [Thread-201269] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:27:11.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:27:11.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:27:11.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:27:11.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:27:11.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:27:11.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:26:59', tmtdew=12.73, humidity=41.66, cloud=0.0, wind=26.13, temperature=12.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:26:59', seeing=0.96, atlas_timestamp='2025-11-25T00:26:33.562', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024750000000000938, -0.038750000000000284, -0.019750000000000156, -0.042500000000000426, 0.01249999999999929, 0.01425000000000054, -0.014000000000001123, 0.0007500000000000284, 0.0004999999999988347, -0.03049999999999997, -0.011750000000001037, -0.021000000000000796, 0.0779999999999994, 0.10024999999999906, -0.012000000000000455, -0.015000000000000568, 0.02024999999999899, -0.018499999999999517, -0.0235000000000003, -0.017750000000001265, 0.07299999999999862, 0.11024999999999885, 0.006750000000000256, -0.013249999999999318, 0.004999999999999005, 0.017000000000001236, -0.035250000000001336, 0.02000000000000135, 0.11749999999999972, 0.09450000000000003, 0.03750000000000142, -0.007999999999999119, -0.006250000000001421], zp_timestamp='2025-11-25T00:22:00')
2025-11-25T02:27:11.182 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:11.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:27:11.196 [DEBUG] [Thread-201272] [transport.py] [_log()] starting thread (client mode): 0xc9b74a00
2025-11-25T02:27:11.196 [DEBUG] [Thread-201272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:27:11.211 [DEBUG] [Thread-201272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:27:11.211 [INFO] [Thread-201272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:27:11.218 [DEBUG] [Thread-201272] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] client lang: <none>
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] server lang: <none>
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] kex follows: False
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] Compression: none
2025-11-25T02:27:11.219 [DEBUG] [Thread-201272] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:27:11.274 [DEBUG] [Thread-201272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:27:11.274 [DEBUG] [Thread-201272] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:27:11.274 [DEBUG] [Thread-201272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:27:11.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:27:11.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:27:11.332 [DEBUG] [Thread-201272] [transport.py] [_log()] userauth is OK
2025-11-25T02:27:11.332 [DEBUG] [Thread-201272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:27:11.332 [DEBUG] [Thread-201272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:27:11.332 [DEBUG] [Thread-201272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:27:11.332 [DEBUG] [Thread-201272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:27:11.346 [INFO] [Thread-201272] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:27:11.346 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:27:11.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:27:12.169 [DEBUG] [Thread-201272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:27:12.169 [DEBUG] [Thread-201272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:27:12.216 [DEBUG] [Thread-201272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:27:12.217 [DEBUG] [Thread-201272] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:27:12.226 [DEBUG] [Thread-201272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:27:12.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:27:12.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-11-25T02:27:12.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:27:12.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:27:12.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:27:12.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:27:12.277 [DEBUG] [Thread-201272] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:27:18.438 [DEBUG] [Thread-201274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:21.651 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:32.077 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:33.599 [DEBUG] [Thread-201275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:34.376 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:34.378 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:42.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:27:42.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:27:42.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-11-25T02:27:42.622 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:43.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 27, 32), 12.73, 41.64, 0.0, 26.1, 12.04, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:27:43.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:27:32
2025-11-25T02:27:43.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:27:43.544 [DEBUG] [Thread-201276] [transport.py] [_log()] starting thread (client mode): 0xc9b81fc0
2025-11-25T02:27:43.545 [DEBUG] [Thread-201276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:27:43.555 [DEBUG] [Thread-201276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:27:43.555 [INFO] [Thread-201276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] client lang: <none>
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] server lang: <none>
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] kex follows: False
2025-11-25T02:27:43.560 [DEBUG] [Thread-201276] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:27:43.561 [DEBUG] [Thread-201276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:27:43.561 [DEBUG] [Thread-201276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:27:43.562 [DEBUG] [Thread-201276] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:27:43.562 [DEBUG] [Thread-201276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:27:43.562 [DEBUG] [Thread-201276] [transport.py] [_log()] Compression: none
2025-11-25T02:27:43.562 [DEBUG] [Thread-201276] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:27:43.593 [DEBUG] [Thread-201276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:27:43.597 [DEBUG] [Thread-201276] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:27:43.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:27:43.599 [DEBUG] [Thread-201276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:27:43.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:27:43.601 [DEBUG] [Thread-201276] [transport.py] [_log()] userauth is OK
2025-11-25T02:27:43.601 [DEBUG] [Thread-201276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:27:43.601 [DEBUG] [Thread-201276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:27:43.601 [DEBUG] [Thread-201276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:27:43.601 [DEBUG] [Thread-201276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:27:43.618 [INFO] [Thread-201276] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:27:43.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:27:44.216 [DEBUG] [Thread-201276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:27:44.216 [DEBUG] [Thread-201276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:27:44.217 [DEBUG] [Thread-201276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:27:44.257 [DEBUG] [Thread-201276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:27:44.257 [DEBUG] [Thread-201276] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:27:44.259 [DEBUG] [Thread-201276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:27:44.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:27:44.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:27:44.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:27:44.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:27:44.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:27:44.280 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:27:44.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:27:44.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:27:44.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:27:44.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.019196 -999.00  +12.10  19.35     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.2 19.4 122.4 23.8 12.6 -24.8 12.4 -24.5 12.2 -23.3 12.5 -24.1
2025-11-25T02:27:44.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:27:44.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:27:44.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.019196
2025-11-25T02:27:44.287 [DEBUG] [Thread-201276] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:27:44.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:27:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:27:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:27:44.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:27:44.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:27:44.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:27:32', tmtdew=12.73, humidity=41.64, cloud=0.0, wind=26.1, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:27:32', seeing=1.04, atlas_timestamp='2025-11-25T00:27:38.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03675000000000139, -0.03725000000000023, -0.007749999999999702, -0.0705000000000009, -0.030000000000001137, 0.020250000000000767, -0.021500000000001407, -0.04624999999999879, -0.009500000000000952, -0.04899999999999949, -0.03175000000000061, -0.009999999999999787, 0.0365000000000002, 0.07324999999999982, -0.03900000000000148, -0.034000000000000696, -0.0022500000000000853, -0.0005000000000006111, -0.03350000000000186, -0.04875000000000185, 0.0649999999999995, 0.08674999999999855, 0.028250000000001663, -0.009249999999999758, -0.017000000000001236, 0.03049999999999997, -0.045249999999999346, 0.015499999999999403, 0.06850000000000023, 0.07500000000000107, 0.03300000000000125, 0.03200000000000003, -0.00975000000000037], zp_timestamp='2025-11-25T00:26:00')
2025-11-25T02:27:44.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:27:44.389 [DEBUG] [Thread-201279] [transport.py] [_log()] starting thread (client mode): 0xd3150490
2025-11-25T02:27:44.390 [DEBUG] [Thread-201279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:27:44.405 [DEBUG] [Thread-201279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:27:44.405 [INFO] [Thread-201279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:27:44.412 [DEBUG] [Thread-201279] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:27:44.412 [DEBUG] [Thread-201279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:27:44.412 [DEBUG] [Thread-201279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] client lang: <none>
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] server lang: <none>
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] kex follows: False
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] Compression: none
2025-11-25T02:27:44.413 [DEBUG] [Thread-201279] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:27:44.473 [DEBUG] [Thread-201279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:27:44.473 [DEBUG] [Thread-201279] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:27:44.473 [DEBUG] [Thread-201279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:27:44.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:27:44.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:27:44.532 [DEBUG] [Thread-201279] [transport.py] [_log()] userauth is OK
2025-11-25T02:27:44.532 [DEBUG] [Thread-201279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:27:44.532 [DEBUG] [Thread-201279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:27:44.532 [DEBUG] [Thread-201279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:27:44.532 [DEBUG] [Thread-201279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:27:44.546 [INFO] [Thread-201279] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:27:44.546 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:27:44.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:27:45.435 [DEBUG] [Thread-201279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:27:45.435 [DEBUG] [Thread-201279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:27:45.483 [DEBUG] [Thread-201279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:27:45.483 [DEBUG] [Thread-201279] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:27:45.492 [DEBUG] [Thread-201279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:27:45.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:27:45.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:27:45.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-11-25T02:27:45.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:27:45.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:27:45.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:27:45.531 [DEBUG] [Thread-201279] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:27:48.669 [DEBUG] [Thread-201281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:51.700 [DEBUG] [Thread-201282 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:27:53.073 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:03.512 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:03.838 [DEBUG] [Thread-201283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:13.971 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:15.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:28:15.560 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:28:15.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-11-25T02:28:16.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 28, 5), 12.69, 41.77, 0.0, 25.37, 12.07, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:28:16.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:28:05
2025-11-25T02:28:16.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:28:16.897 [DEBUG] [Thread-201284] [transport.py] [_log()] starting thread (client mode): 0xd0711bd0
2025-11-25T02:28:16.898 [DEBUG] [Thread-201284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:28:16.906 [DEBUG] [Thread-201284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:28:16.906 [INFO] [Thread-201284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:28:16.912 [DEBUG] [Thread-201284] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:28:16.912 [DEBUG] [Thread-201284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:28:16.912 [DEBUG] [Thread-201284] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] client lang: <none>
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] server lang: <none>
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] kex follows: False
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:28:16.913 [DEBUG] [Thread-201284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:28:16.914 [DEBUG] [Thread-201284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:28:16.914 [DEBUG] [Thread-201284] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:28:16.914 [DEBUG] [Thread-201284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:28:16.914 [DEBUG] [Thread-201284] [transport.py] [_log()] Compression: none
2025-11-25T02:28:16.914 [DEBUG] [Thread-201284] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:28:16.953 [DEBUG] [Thread-201284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:28:16.959 [DEBUG] [Thread-201284] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:28:16.961 [DEBUG] [Thread-201284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:28:16.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:28:16.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:28:16.966 [DEBUG] [Thread-201284] [transport.py] [_log()] userauth is OK
2025-11-25T02:28:16.967 [DEBUG] [Thread-201284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:28:16.967 [DEBUG] [Thread-201284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:28:16.967 [DEBUG] [Thread-201284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:28:16.967 [DEBUG] [Thread-201284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:28:17.005 [INFO] [Thread-201284] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:28:17.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:28:17.640 [DEBUG] [Thread-201284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:28:17.640 [DEBUG] [Thread-201284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:28:17.642 [DEBUG] [Thread-201284] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:28:17.681 [DEBUG] [Thread-201284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:28:17.681 [DEBUG] [Thread-201284] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:28:17.685 [DEBUG] [Thread-201284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:28:17.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:28:17.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:28:17.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:28:17.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:28:17.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:28:17.712 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:28:17.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:28:17.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:28:17.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:28:17.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.019196 -999.00  +12.10  19.35     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.2 19.4 122.4 23.8 12.6 -24.8 12.4 -24.5 12.2 -23.3 12.5 -24.1
2025-11-25T02:28:17.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:28:17.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:28:17.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.019196
2025-11-25T02:28:17.720 [DEBUG] [Thread-201284] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:28:17.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:28:17.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:28:17.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:28:17.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:28:17.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:28:17.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:28:05', tmtdew=12.69, humidity=41.77, cloud=0.0, wind=25.37, temperature=12.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:28:05', seeing=1.04, atlas_timestamp='2025-11-25T00:27:38.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03675000000000139, -0.03725000000000023, -0.007749999999999702, -0.0705000000000009, -0.030000000000001137, 0.020250000000000767, -0.021500000000001407, -0.04624999999999879, -0.009500000000000952, -0.04899999999999949, -0.03175000000000061, -0.009999999999999787, 0.0365000000000002, 0.07324999999999982, -0.03900000000000148, -0.034000000000000696, -0.0022500000000000853, -0.0005000000000006111, -0.03350000000000186, -0.04875000000000185, 0.0649999999999995, 0.08674999999999855, 0.028250000000001663, -0.009249999999999758, -0.017000000000001236, 0.03049999999999997, -0.045249999999999346, 0.015499999999999403, 0.06850000000000023, 0.07500000000000107, 0.03300000000000125, 0.03200000000000003, -0.00975000000000037], zp_timestamp='2025-11-25T00:26:00')
2025-11-25T02:28:17.826 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:28:17.835 [DEBUG] [Thread-201287] [transport.py] [_log()] starting thread (client mode): 0xd07125c0
2025-11-25T02:28:17.835 [DEBUG] [Thread-201287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:28:17.850 [DEBUG] [Thread-201287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:28:17.850 [INFO] [Thread-201287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:28:17.857 [DEBUG] [Thread-201287] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:28:17.857 [DEBUG] [Thread-201287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:28:17.857 [DEBUG] [Thread-201287] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:28:17.857 [DEBUG] [Thread-201287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:28:17.857 [DEBUG] [Thread-201287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] client lang: <none>
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] server lang: <none>
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] kex follows: False
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] Compression: none
2025-11-25T02:28:17.858 [DEBUG] [Thread-201287] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:28:17.915 [DEBUG] [Thread-201287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:28:17.916 [DEBUG] [Thread-201287] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:28:17.916 [DEBUG] [Thread-201287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:28:17.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:28:17.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:28:17.971 [DEBUG] [Thread-201287] [transport.py] [_log()] userauth is OK
2025-11-25T02:28:17.972 [DEBUG] [Thread-201287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:28:17.972 [DEBUG] [Thread-201287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:28:17.972 [DEBUG] [Thread-201287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:28:17.972 [DEBUG] [Thread-201287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:28:17.987 [INFO] [Thread-201287] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:28:17.988 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:28:17.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:28:18.858 [DEBUG] [Thread-201287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:28:18.858 [DEBUG] [Thread-201287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:28:18.906 [DEBUG] [Thread-201287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:28:18.910 [DEBUG] [Thread-201287] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:28:18.913 [DEBUG] [Thread-201289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:18.921 [DEBUG] [Thread-201287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:28:18.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:28:18.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-11-25T02:28:18.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-11-25T02:28:18.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:28:18.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:28:18.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:28:18.957 [DEBUG] [Thread-201287] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:28:24.411 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:34.102 [DEBUG] [Thread-201290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:34.591 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:34.593 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:34.868 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:45.344 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:48.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:28:48.983 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:28:49.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-11-25T02:28:49.171 [DEBUG] [Thread-201291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:50.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 28, 38), 12.7, 41.24, 0.0, 24.44, 11.97, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:28:50.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:28:38
2025-11-25T02:28:50.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:28:50.428 [DEBUG] [Thread-201292] [transport.py] [_log()] starting thread (client mode): 0xc9b83490
2025-11-25T02:28:50.429 [DEBUG] [Thread-201292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:28:50.440 [DEBUG] [Thread-201292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:28:50.440 [INFO] [Thread-201292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:28:50.447 [DEBUG] [Thread-201292] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:28:50.447 [DEBUG] [Thread-201292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:28:50.447 [DEBUG] [Thread-201292] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:28:50.447 [DEBUG] [Thread-201292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:28:50.448 [DEBUG] [Thread-201292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:28:50.448 [DEBUG] [Thread-201292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:28:50.448 [DEBUG] [Thread-201292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:28:50.448 [DEBUG] [Thread-201292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:28:50.448 [DEBUG] [Thread-201292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:28:50.448 [DEBUG] [Thread-201292] [transport.py] [_log()] client lang: <none>
2025-11-25T02:28:50.448 [DEBUG] [Thread-201292] [transport.py] [_log()] server lang: <none>
2025-11-25T02:28:50.448 [DEBUG] [Thread-201292] [transport.py] [_log()] kex follows: False
2025-11-25T02:28:50.448 [DEBUG] [Thread-201292] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:28:50.449 [DEBUG] [Thread-201292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:28:50.449 [DEBUG] [Thread-201292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:28:50.449 [DEBUG] [Thread-201292] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:28:50.450 [DEBUG] [Thread-201292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:28:50.450 [DEBUG] [Thread-201292] [transport.py] [_log()] Compression: none
2025-11-25T02:28:50.450 [DEBUG] [Thread-201292] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:28:50.492 [DEBUG] [Thread-201292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:28:50.497 [DEBUG] [Thread-201292] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:28:50.499 [DEBUG] [Thread-201292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:28:50.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:28:50.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:28:50.504 [DEBUG] [Thread-201292] [transport.py] [_log()] userauth is OK
2025-11-25T02:28:50.505 [DEBUG] [Thread-201292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:28:50.505 [DEBUG] [Thread-201292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:28:50.505 [DEBUG] [Thread-201292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:28:50.505 [DEBUG] [Thread-201292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:28:50.544 [INFO] [Thread-201292] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:28:50.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:28:51.195 [DEBUG] [Thread-201292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:28:51.195 [DEBUG] [Thread-201292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:28:51.206 [DEBUG] [Thread-201292] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:28:51.236 [DEBUG] [Thread-201292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:28:51.236 [DEBUG] [Thread-201292] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:28:51.240 [DEBUG] [Thread-201292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:28:51.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:28:51.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:28:51.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:28:51.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:28:51.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:28:51.266 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:28:51.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:28:51.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:28:51.269 [DEBUG] [Thread-201292] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:28:51.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:28:51.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.019486 -999.00  +12.10  19.96     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 20.0 20.0 127.4 25.5 12.5 -24.9 12.4 -24.4 12.2 -23.3 12.5 -24.2
2025-11-25T02:28:51.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:28:51.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:28:51.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.019486
2025-11-25T02:28:51.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:28:51.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:28:51.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:28:51.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:28:51.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:28:51.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:28:38', tmtdew=12.7, humidity=41.24, cloud=0.0, wind=24.44, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:28:38', seeing=0.97, atlas_timestamp='2025-11-25T00:28:03.590', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03675000000000139, -0.03725000000000023, -0.007749999999999702, -0.0705000000000009, -0.030000000000001137, 0.020250000000000767, -0.021500000000001407, -0.04624999999999879, -0.009500000000000952, -0.04899999999999949, -0.03175000000000061, -0.009999999999999787, 0.0365000000000002, 0.07324999999999982, -0.03900000000000148, -0.034000000000000696, -0.0022500000000000853, -0.0005000000000006111, -0.03350000000000186, -0.04875000000000185, 0.0649999999999995, 0.08674999999999855, 0.028250000000001663, -0.009249999999999758, -0.017000000000001236, 0.03049999999999997, -0.045249999999999346, 0.015499999999999403, 0.06850000000000023, 0.07500000000000107, 0.03300000000000125, 0.03200000000000003, -0.00975000000000037], zp_timestamp='2025-11-25T00:26:00')
2025-11-25T02:28:51.377 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:28:51.390 [DEBUG] [Thread-201295] [transport.py] [_log()] starting thread (client mode): 0xd314b430
2025-11-25T02:28:51.391 [DEBUG] [Thread-201295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:28:51.406 [DEBUG] [Thread-201295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:28:51.406 [INFO] [Thread-201295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:28:51.413 [DEBUG] [Thread-201295] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:28:51.414 [DEBUG] [Thread-201295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:28:51.414 [DEBUG] [Thread-201295] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:28:51.414 [DEBUG] [Thread-201295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:28:51.414 [DEBUG] [Thread-201295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:28:51.414 [DEBUG] [Thread-201295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:28:51.414 [DEBUG] [Thread-201295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:28:51.414 [DEBUG] [Thread-201295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:28:51.414 [DEBUG] [Thread-201295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:28:51.414 [DEBUG] [Thread-201295] [transport.py] [_log()] client lang: <none>
2025-11-25T02:28:51.415 [DEBUG] [Thread-201295] [transport.py] [_log()] server lang: <none>
2025-11-25T02:28:51.415 [DEBUG] [Thread-201295] [transport.py] [_log()] kex follows: False
2025-11-25T02:28:51.415 [DEBUG] [Thread-201295] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:28:51.415 [DEBUG] [Thread-201295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:28:51.415 [DEBUG] [Thread-201295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:28:51.415 [DEBUG] [Thread-201295] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:28:51.415 [DEBUG] [Thread-201295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:28:51.416 [DEBUG] [Thread-201295] [transport.py] [_log()] Compression: none
2025-11-25T02:28:51.416 [DEBUG] [Thread-201295] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:28:51.476 [DEBUG] [Thread-201295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:28:51.477 [DEBUG] [Thread-201295] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:28:51.478 [DEBUG] [Thread-201295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:28:51.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:28:51.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:28:51.532 [DEBUG] [Thread-201295] [transport.py] [_log()] userauth is OK
2025-11-25T02:28:51.532 [DEBUG] [Thread-201295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:28:51.533 [DEBUG] [Thread-201295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:28:51.533 [DEBUG] [Thread-201295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:28:51.533 [DEBUG] [Thread-201295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:28:51.555 [INFO] [Thread-201295] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:28:51.555 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:28:51.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:28:52.057 [DEBUG] [Thread-201297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:28:52.355 [DEBUG] [Thread-201295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:28:52.355 [DEBUG] [Thread-201295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:28:52.404 [DEBUG] [Thread-201295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:28:52.404 [DEBUG] [Thread-201295] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:28:52.414 [DEBUG] [Thread-201295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:28:52.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:28:52.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:28:52.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-11-25T02:28:52.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:28:52.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:28:52.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:28:52.463 [DEBUG] [Thread-201295] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:28:55.785 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:04.273 [DEBUG] [Thread-201298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:06.203 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:16.708 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:19.433 [DEBUG] [Thread-201299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:22.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:29:22.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:29:22.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:29:23.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 29, 11), 12.69, 41.27, 0.0, 24.74, 12.0, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:29:23.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:29:11
2025-11-25T02:29:23.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:29:23.797 [DEBUG] [Thread-201300] [transport.py] [_log()] starting thread (client mode): 0xd31f5480
2025-11-25T02:29:23.798 [DEBUG] [Thread-201300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:29:23.812 [DEBUG] [Thread-201300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:29:23.813 [INFO] [Thread-201300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] client lang: <none>
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] server lang: <none>
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] kex follows: False
2025-11-25T02:29:23.817 [DEBUG] [Thread-201300] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:29:23.818 [DEBUG] [Thread-201300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:29:23.818 [DEBUG] [Thread-201300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:29:23.818 [DEBUG] [Thread-201300] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:29:23.818 [DEBUG] [Thread-201300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:29:23.818 [DEBUG] [Thread-201300] [transport.py] [_log()] Compression: none
2025-11-25T02:29:23.818 [DEBUG] [Thread-201300] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:29:23.851 [DEBUG] [Thread-201300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:29:23.855 [DEBUG] [Thread-201300] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:29:23.857 [DEBUG] [Thread-201300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:29:23.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:29:23.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:29:23.862 [DEBUG] [Thread-201300] [transport.py] [_log()] userauth is OK
2025-11-25T02:29:23.863 [DEBUG] [Thread-201300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:29:23.863 [DEBUG] [Thread-201300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:29:23.863 [DEBUG] [Thread-201300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:29:23.863 [DEBUG] [Thread-201300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:29:23.901 [INFO] [Thread-201300] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:29:23.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:29:24.518 [DEBUG] [Thread-201300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:29:24.519 [DEBUG] [Thread-201300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:29:24.520 [DEBUG] [Thread-201300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:29:24.559 [DEBUG] [Thread-201300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:29:24.560 [DEBUG] [Thread-201300] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:29:24.564 [DEBUG] [Thread-201300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:29:24.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:29:24.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:29:24.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:29:24.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:29:24.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:29:24.593 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:29:24.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:29:24.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:29:24.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:29:24.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.019833 -999.00  +12.10  22.21     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 22.2 22.2 126.0 29.0 12.6 -24.9 12.4 -24.4 12.2 -23.3 12.4 -24.2
2025-11-25T02:29:24.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:29:24.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:29:24.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.019833
2025-11-25T02:29:24.601 [DEBUG] [Thread-201300] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:29:24.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:29:24.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:29:24.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:29:24.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:29:24.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:29:24.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:29:11', tmtdew=12.69, humidity=41.27, cloud=0.0, wind=24.74, temperature=12.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:29:11', seeing=0.98, atlas_timestamp='2025-11-25T00:28:33.571', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03675000000000139, -0.03725000000000023, -0.007749999999999702, -0.0705000000000009, -0.030000000000001137, 0.020250000000000767, -0.021500000000001407, -0.04624999999999879, -0.009500000000000952, -0.04899999999999949, -0.03175000000000061, -0.009999999999999787, 0.0365000000000002, 0.07324999999999982, -0.03900000000000148, -0.034000000000000696, -0.0022500000000000853, -0.0005000000000006111, -0.03350000000000186, -0.04875000000000185, 0.0649999999999995, 0.08674999999999855, 0.028250000000001663, -0.009249999999999758, -0.017000000000001236, 0.03049999999999997, -0.045249999999999346, 0.015499999999999403, 0.06850000000000023, 0.07500000000000107, 0.03300000000000125, 0.03200000000000003, -0.00975000000000037], zp_timestamp='2025-11-25T00:26:00')
2025-11-25T02:29:24.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:29:24.715 [DEBUG] [Thread-201303] [transport.py] [_log()] starting thread (client mode): 0xd31f4430
2025-11-25T02:29:24.715 [DEBUG] [Thread-201303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:29:24.730 [DEBUG] [Thread-201303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:29:24.730 [INFO] [Thread-201303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:29:24.737 [DEBUG] [Thread-201303] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:29:24.738 [DEBUG] [Thread-201303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:29:24.738 [DEBUG] [Thread-201303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:29:24.738 [DEBUG] [Thread-201303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:29:24.738 [DEBUG] [Thread-201303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:29:24.738 [DEBUG] [Thread-201303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:29:24.738 [DEBUG] [Thread-201303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:29:24.738 [DEBUG] [Thread-201303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:29:24.739 [DEBUG] [Thread-201303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:29:24.739 [DEBUG] [Thread-201303] [transport.py] [_log()] client lang: <none>
2025-11-25T02:29:24.739 [DEBUG] [Thread-201303] [transport.py] [_log()] server lang: <none>
2025-11-25T02:29:24.739 [DEBUG] [Thread-201303] [transport.py] [_log()] kex follows: False
2025-11-25T02:29:24.739 [DEBUG] [Thread-201303] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:29:24.739 [DEBUG] [Thread-201303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:29:24.739 [DEBUG] [Thread-201303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:29:24.739 [DEBUG] [Thread-201303] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:29:24.740 [DEBUG] [Thread-201303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:29:24.740 [DEBUG] [Thread-201303] [transport.py] [_log()] Compression: none
2025-11-25T02:29:24.740 [DEBUG] [Thread-201303] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:29:24.797 [DEBUG] [Thread-201303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:29:24.798 [DEBUG] [Thread-201303] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:29:24.798 [DEBUG] [Thread-201303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:29:24.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:29:24.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:29:24.856 [DEBUG] [Thread-201303] [transport.py] [_log()] userauth is OK
2025-11-25T02:29:24.856 [DEBUG] [Thread-201303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:29:24.857 [DEBUG] [Thread-201303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:29:24.857 [DEBUG] [Thread-201303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:29:24.857 [DEBUG] [Thread-201303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:29:24.875 [INFO] [Thread-201303] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:29:24.875 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:29:24.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:29:25.763 [DEBUG] [Thread-201303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:29:25.763 [DEBUG] [Thread-201303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:29:25.811 [DEBUG] [Thread-201303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:29:25.811 [DEBUG] [Thread-201303] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:29:25.820 [DEBUG] [Thread-201303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:29:25.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:29:25.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:29:25.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-11-25T02:29:25.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:29:25.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:29:25.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:29:25.853 [DEBUG] [Thread-201303] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:29:27.176 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:34.520 [DEBUG] [Thread-201305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:34.809 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:34.812 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:37.610 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:48.045 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:49.671 [DEBUG] [Thread-201306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:52.312 [DEBUG] [Thread-201307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:55.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:29:55.886 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:29:55.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-11-25T02:29:56.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 29, 44), 12.65, 41.74, 0.0, 27.14, 12.04, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:29:56.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:29:44
2025-11-25T02:29:56.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:29:57.132 [DEBUG] [Thread-201308] [transport.py] [_log()] starting thread (client mode): 0xd31f4c10
2025-11-25T02:29:57.133 [DEBUG] [Thread-201308] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:29:57.146 [DEBUG] [Thread-201308] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:29:57.147 [INFO] [Thread-201308] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] client lang: <none>
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] server lang: <none>
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] kex follows: False
2025-11-25T02:29:57.153 [DEBUG] [Thread-201308] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:29:57.154 [DEBUG] [Thread-201308] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:29:57.154 [DEBUG] [Thread-201308] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:29:57.154 [DEBUG] [Thread-201308] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:29:57.154 [DEBUG] [Thread-201308] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:29:57.154 [DEBUG] [Thread-201308] [transport.py] [_log()] Compression: none
2025-11-25T02:29:57.154 [DEBUG] [Thread-201308] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:29:57.192 [DEBUG] [Thread-201308] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:29:57.197 [DEBUG] [Thread-201308] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:29:57.199 [DEBUG] [Thread-201308] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:29:57.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:29:57.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:29:57.205 [DEBUG] [Thread-201308] [transport.py] [_log()] userauth is OK
2025-11-25T02:29:57.206 [DEBUG] [Thread-201308] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:29:57.206 [DEBUG] [Thread-201308] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:29:57.206 [DEBUG] [Thread-201308] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:29:57.206 [DEBUG] [Thread-201308] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:29:57.233 [INFO] [Thread-201308] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:29:57.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:29:57.865 [DEBUG] [Thread-201308] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:29:57.865 [DEBUG] [Thread-201308] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:29:57.866 [DEBUG] [Thread-201308] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:29:57.906 [DEBUG] [Thread-201308] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:29:57.906 [DEBUG] [Thread-201308] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:29:57.909 [DEBUG] [Thread-201308] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:29:57.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:29:57.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:29:57.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:29:57.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:29:57.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:29:57.931 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:29:57.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:29:57.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:29:57.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:29:57.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.020180 -999.00  +12.10  19.35     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 19.4 19.4 120.8 22.6 12.6 -24.9 12.4 -24.4 12.2 -23.3 12.5 -24.1
2025-11-25T02:29:57.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:29:57.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:29:57.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.020180
2025-11-25T02:29:57.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:29:57.942 [DEBUG] [Thread-201308] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:29:57.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:29:57.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:29:57.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:29:57.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:29:57.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:29:44', tmtdew=12.65, humidity=41.74, cloud=0.0, wind=27.14, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:29:44', seeing=1.16, atlas_timestamp='2025-11-25T00:29:03.552', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03675000000000139, -0.03725000000000023, -0.007749999999999702, -0.0705000000000009, -0.030000000000001137, 0.020250000000000767, -0.021500000000001407, -0.04624999999999879, -0.009500000000000952, -0.04899999999999949, -0.03175000000000061, -0.009999999999999787, 0.0365000000000002, 0.07324999999999982, -0.03900000000000148, -0.034000000000000696, -0.0022500000000000853, -0.0005000000000006111, -0.03350000000000186, -0.04875000000000185, 0.0649999999999995, 0.08674999999999855, 0.028250000000001663, -0.009249999999999758, -0.017000000000001236, 0.03049999999999997, -0.045249999999999346, 0.015499999999999403, 0.06850000000000023, 0.07500000000000107, 0.03300000000000125, 0.03200000000000003, -0.00975000000000037], zp_timestamp='2025-11-25T00:26:00')
2025-11-25T02:29:58.027 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:29:58.041 [DEBUG] [Thread-201311] [transport.py] [_log()] starting thread (client mode): 0xd0713880
2025-11-25T02:29:58.041 [DEBUG] [Thread-201311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:29:58.056 [DEBUG] [Thread-201311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:29:58.056 [INFO] [Thread-201311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:29:58.064 [DEBUG] [Thread-201311] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:29:58.064 [DEBUG] [Thread-201311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:29:58.064 [DEBUG] [Thread-201311] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:29:58.064 [DEBUG] [Thread-201311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:29:58.064 [DEBUG] [Thread-201311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:29:58.064 [DEBUG] [Thread-201311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:29:58.065 [DEBUG] [Thread-201311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:29:58.065 [DEBUG] [Thread-201311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:29:58.065 [DEBUG] [Thread-201311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:29:58.065 [DEBUG] [Thread-201311] [transport.py] [_log()] client lang: <none>
2025-11-25T02:29:58.065 [DEBUG] [Thread-201311] [transport.py] [_log()] server lang: <none>
2025-11-25T02:29:58.065 [DEBUG] [Thread-201311] [transport.py] [_log()] kex follows: False
2025-11-25T02:29:58.065 [DEBUG] [Thread-201311] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:29:58.065 [DEBUG] [Thread-201311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:29:58.065 [DEBUG] [Thread-201311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:29:58.066 [DEBUG] [Thread-201311] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:29:58.066 [DEBUG] [Thread-201311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:29:58.066 [DEBUG] [Thread-201311] [transport.py] [_log()] Compression: none
2025-11-25T02:29:58.066 [DEBUG] [Thread-201311] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:29:58.125 [DEBUG] [Thread-201311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:29:58.125 [DEBUG] [Thread-201311] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:29:58.126 [DEBUG] [Thread-201311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:29:58.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:29:58.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:29:58.184 [DEBUG] [Thread-201311] [transport.py] [_log()] userauth is OK
2025-11-25T02:29:58.185 [DEBUG] [Thread-201311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:29:58.185 [DEBUG] [Thread-201311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:29:58.185 [DEBUG] [Thread-201311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:29:58.185 [DEBUG] [Thread-201311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:29:58.203 [INFO] [Thread-201311] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:29:58.203 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:29:58.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:29:58.485 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:29:59.057 [DEBUG] [Thread-201311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:29:59.057 [DEBUG] [Thread-201311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:29:59.105 [DEBUG] [Thread-201311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:29:59.105 [DEBUG] [Thread-201311] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:29:59.113 [DEBUG] [Thread-201311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:29:59.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:29:59.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-11-25T02:29:59.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-11-25T02:29:59.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:29:59.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:29:59.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:29:59.149 [DEBUG] [Thread-201311] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:30:04.761 [DEBUG] [Thread-201313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:08.898 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:19.486 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:19.884 [DEBUG] [Thread-201314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:29.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:30:29.190 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:30:29.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-11-25T02:30:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 30, 17), 12.67, 41.71, 0.0, 25.69, 12.09, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:30:30.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:30:17
2025-11-25T02:30:30.139 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:30.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:30:30.400 [DEBUG] [Thread-201315] [transport.py] [_log()] starting thread (client mode): 0xd07111e0
2025-11-25T02:30:30.401 [DEBUG] [Thread-201315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:30:30.409 [DEBUG] [Thread-201315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:30:30.409 [INFO] [Thread-201315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:30:30.414 [DEBUG] [Thread-201315] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:30:30.414 [DEBUG] [Thread-201315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:30:30.414 [DEBUG] [Thread-201315] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:30:30.414 [DEBUG] [Thread-201315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:30:30.414 [DEBUG] [Thread-201315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:30:30.414 [DEBUG] [Thread-201315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:30:30.415 [DEBUG] [Thread-201315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:30:30.415 [DEBUG] [Thread-201315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:30:30.415 [DEBUG] [Thread-201315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:30:30.415 [DEBUG] [Thread-201315] [transport.py] [_log()] client lang: <none>
2025-11-25T02:30:30.415 [DEBUG] [Thread-201315] [transport.py] [_log()] server lang: <none>
2025-11-25T02:30:30.415 [DEBUG] [Thread-201315] [transport.py] [_log()] kex follows: False
2025-11-25T02:30:30.415 [DEBUG] [Thread-201315] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:30:30.415 [DEBUG] [Thread-201315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:30:30.415 [DEBUG] [Thread-201315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:30:30.416 [DEBUG] [Thread-201315] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:30:30.416 [DEBUG] [Thread-201315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:30:30.416 [DEBUG] [Thread-201315] [transport.py] [_log()] Compression: none
2025-11-25T02:30:30.416 [DEBUG] [Thread-201315] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:30:30.447 [DEBUG] [Thread-201315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:30:30.449 [DEBUG] [Thread-201315] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:30:30.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:30:30.451 [DEBUG] [Thread-201315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:30:30.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:30:30.453 [DEBUG] [Thread-201315] [transport.py] [_log()] userauth is OK
2025-11-25T02:30:30.453 [DEBUG] [Thread-201315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:30:30.453 [DEBUG] [Thread-201315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:30:30.453 [DEBUG] [Thread-201315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:30:30.453 [DEBUG] [Thread-201315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:30:30.474 [INFO] [Thread-201315] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:30:30.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:30:31.138 [DEBUG] [Thread-201315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:30:31.138 [DEBUG] [Thread-201315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:30:31.139 [DEBUG] [Thread-201315] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:30:31.179 [DEBUG] [Thread-201315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:30:31.180 [DEBUG] [Thread-201315] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:30:31.184 [DEBUG] [Thread-201315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:30:31.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:30:31.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:30:31.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:30:31.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:30:31.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:30:31.210 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:30:31.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:30:31.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:30:31.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:30:31.213 [DEBUG] [Thread-201315] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:30:31.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.020528 -999.00  +12.10  23.10     46   +0.90 1 1 1 1 1     0    0 -999.00 0.00 ZNESW 23.1 23.1 128.0 25.6 12.6 -24.9 12.4 -24.5 12.2 -23.1 12.5 -24.2
2025-11-25T02:30:31.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:30:31.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:30:31.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.020528
2025-11-25T02:30:31.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:30:31.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:30:31.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:30:31.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:30:31.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:30:31.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:30:17', tmtdew=12.67, humidity=41.71, cloud=0.0, wind=25.69, temperature=12.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:30:17', seeing=1.03, atlas_timestamp='2025-11-25T00:29:33.619', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:29:00')
2025-11-25T02:30:31.319 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:30:31.331 [DEBUG] [Thread-201318] [transport.py] [_log()] starting thread (client mode): 0xc9b760b0
2025-11-25T02:30:31.331 [DEBUG] [Thread-201318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:30:31.346 [DEBUG] [Thread-201318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:30:31.346 [INFO] [Thread-201318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:30:31.354 [DEBUG] [Thread-201318] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:30:31.354 [DEBUG] [Thread-201318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:30:31.354 [DEBUG] [Thread-201318] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:30:31.354 [DEBUG] [Thread-201318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:30:31.355 [DEBUG] [Thread-201318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:30:31.355 [DEBUG] [Thread-201318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:30:31.355 [DEBUG] [Thread-201318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:30:31.355 [DEBUG] [Thread-201318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:30:31.355 [DEBUG] [Thread-201318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:30:31.355 [DEBUG] [Thread-201318] [transport.py] [_log()] client lang: <none>
2025-11-25T02:30:31.355 [DEBUG] [Thread-201318] [transport.py] [_log()] server lang: <none>
2025-11-25T02:30:31.355 [DEBUG] [Thread-201318] [transport.py] [_log()] kex follows: False
2025-11-25T02:30:31.356 [DEBUG] [Thread-201318] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:30:31.356 [DEBUG] [Thread-201318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:30:31.356 [DEBUG] [Thread-201318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:30:31.356 [DEBUG] [Thread-201318] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:30:31.357 [DEBUG] [Thread-201318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:30:31.357 [DEBUG] [Thread-201318] [transport.py] [_log()] Compression: none
2025-11-25T02:30:31.357 [DEBUG] [Thread-201318] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:30:31.413 [DEBUG] [Thread-201318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:30:31.414 [DEBUG] [Thread-201318] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:30:31.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:30:31.415 [DEBUG] [Thread-201318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:30:31.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:30:31.472 [DEBUG] [Thread-201318] [transport.py] [_log()] userauth is OK
2025-11-25T02:30:31.473 [DEBUG] [Thread-201318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:30:31.473 [DEBUG] [Thread-201318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:30:31.473 [DEBUG] [Thread-201318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:30:31.473 [DEBUG] [Thread-201318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:30:31.500 [INFO] [Thread-201318] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:30:31.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:30:31.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:30:32.332 [DEBUG] [Thread-201318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:30:32.332 [DEBUG] [Thread-201318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:30:32.380 [DEBUG] [Thread-201318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:30:32.380 [DEBUG] [Thread-201318] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:30:32.388 [DEBUG] [Thread-201318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:30:32.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:30:32.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:30:32.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-11-25T02:30:32.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:30:32.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:30:32.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:30:32.423 [DEBUG] [Thread-201318] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:30:34.944 [DEBUG] [Thread-201320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:35.014 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:35.015 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:40.653 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:50.128 [DEBUG] [Thread-201321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:51.075 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:30:52.602 [DEBUG] [Thread-201322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:01.724 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:02.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:31:02.427 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:31:02.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-11-25T02:31:03.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 30, 50), 12.68, 41.67, 0.0, 24.24, 12.12, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:31:03.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:30:50
2025-11-25T02:31:04.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:31:04.206 [DEBUG] [Thread-201323] [transport.py] [_log()] starting thread (client mode): 0xc9b746a0
2025-11-25T02:31:04.206 [DEBUG] [Thread-201323] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:31:04.215 [DEBUG] [Thread-201323] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:31:04.215 [INFO] [Thread-201323] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:31:04.220 [DEBUG] [Thread-201323] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] client lang: <none>
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] server lang: <none>
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] kex follows: False
2025-11-25T02:31:04.221 [DEBUG] [Thread-201323] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:31:04.222 [DEBUG] [Thread-201323] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:31:04.222 [DEBUG] [Thread-201323] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:31:04.222 [DEBUG] [Thread-201323] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:31:04.222 [DEBUG] [Thread-201323] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:31:04.222 [DEBUG] [Thread-201323] [transport.py] [_log()] Compression: none
2025-11-25T02:31:04.222 [DEBUG] [Thread-201323] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:31:04.258 [DEBUG] [Thread-201323] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:31:04.262 [DEBUG] [Thread-201323] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:31:04.263 [DEBUG] [Thread-201323] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:31:04.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:31:04.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:31:04.266 [DEBUG] [Thread-201323] [transport.py] [_log()] userauth is OK
2025-11-25T02:31:04.267 [DEBUG] [Thread-201323] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:31:04.267 [DEBUG] [Thread-201323] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:31:04.267 [DEBUG] [Thread-201323] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:31:04.267 [DEBUG] [Thread-201323] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:31:04.297 [INFO] [Thread-201323] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:31:04.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:31:04.937 [DEBUG] [Thread-201323] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:31:04.938 [DEBUG] [Thread-201323] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:31:04.939 [DEBUG] [Thread-201323] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:31:04.979 [DEBUG] [Thread-201323] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:31:04.979 [DEBUG] [Thread-201323] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:31:04.982 [DEBUG] [Thread-201323] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:31:04.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:31:04.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:31:04.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:31:05.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:31:05.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:31:05.006 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:31:05.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:31:05.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:31:05.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:31:05.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.021280 -999.00  +12.20  20.76     46   +1.00 1 1 1 1 1     0    0 10.42 -23.15 ZNESW 21.4 20.8 123.2 23.9 12.6 -25.0 12.4 -24.5 12.2 -23.4 12.5 -24.1
2025-11-25T02:31:05.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:31:05.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:31:05.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.021280
2025-11-25T02:31:05.019 [DEBUG] [Thread-201323] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:31:05.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:31:05.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:31:05.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:31:05.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:31:05.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:31:05.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:30:50', tmtdew=12.68, humidity=41.67, cloud=0.0, wind=24.24, temperature=12.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:30:50', seeing=1.16, atlas_timestamp='2025-11-25T00:30:38.592', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:29:00')
2025-11-25T02:31:05.103 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:31:05.116 [DEBUG] [Thread-201326] [transport.py] [_log()] starting thread (client mode): 0xd31504c0
2025-11-25T02:31:05.116 [DEBUG] [Thread-201326] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:31:05.131 [DEBUG] [Thread-201326] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:31:05.131 [INFO] [Thread-201326] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:31:05.138 [DEBUG] [Thread-201326] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:31:05.138 [DEBUG] [Thread-201326] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:31:05.138 [DEBUG] [Thread-201326] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:31:05.138 [DEBUG] [Thread-201326] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:31:05.138 [DEBUG] [Thread-201326] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:31:05.138 [DEBUG] [Thread-201326] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] client lang: <none>
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] server lang: <none>
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] kex follows: False
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] Compression: none
2025-11-25T02:31:05.139 [DEBUG] [Thread-201326] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:31:05.195 [DEBUG] [Thread-201326] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:31:05.195 [DEBUG] [Thread-201326] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:31:05.195 [DEBUG] [Thread-201326] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:31:05.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:31:05.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:31:05.215 [DEBUG] [Thread-201328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:05.251 [DEBUG] [Thread-201326] [transport.py] [_log()] userauth is OK
2025-11-25T02:31:05.251 [DEBUG] [Thread-201326] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:31:05.251 [DEBUG] [Thread-201326] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:31:05.252 [DEBUG] [Thread-201326] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:31:05.252 [DEBUG] [Thread-201326] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:31:05.267 [INFO] [Thread-201326] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:31:05.267 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:31:05.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:31:06.184 [DEBUG] [Thread-201326] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:31:06.184 [DEBUG] [Thread-201326] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:31:06.232 [DEBUG] [Thread-201326] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:31:06.232 [DEBUG] [Thread-201326] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:31:06.240 [DEBUG] [Thread-201326] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:31:06.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:31: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-11-25T02:31:06.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-11-25T02:31:06.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:31:06.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:31:06.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:31:06.280 [DEBUG] [Thread-201326] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:31:12.406 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:20.357 [DEBUG] [Thread-201329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:22.884 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:33.336 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:35.218 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:35.220 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:35.427 [DEBUG] [Thread-201330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:36.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:31:36.315 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:31:36.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-11-25T02:31:37.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 31, 23), 12.66, 41.71, 0.0, 23.86, 12.05, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:31:37.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:31:23
2025-11-25T02:31:37.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:31:37.589 [DEBUG] [Thread-201331] [transport.py] [_log()] starting thread (client mode): 0xd3153c10
2025-11-25T02:31:37.590 [DEBUG] [Thread-201331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:31:37.605 [DEBUG] [Thread-201331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:31:37.605 [INFO] [Thread-201331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:31:37.610 [DEBUG] [Thread-201331] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] client lang: <none>
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] server lang: <none>
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] kex follows: False
2025-11-25T02:31:37.611 [DEBUG] [Thread-201331] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:31:37.612 [DEBUG] [Thread-201331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:31:37.612 [DEBUG] [Thread-201331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:31:37.612 [DEBUG] [Thread-201331] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:31:37.613 [DEBUG] [Thread-201331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:31:37.613 [DEBUG] [Thread-201331] [transport.py] [_log()] Compression: none
2025-11-25T02:31:37.613 [DEBUG] [Thread-201331] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:31:37.651 [DEBUG] [Thread-201331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:31:37.656 [DEBUG] [Thread-201331] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:31:37.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:31:37.661 [DEBUG] [Thread-201331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:31:37.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:31:37.664 [DEBUG] [Thread-201331] [transport.py] [_log()] userauth is OK
2025-11-25T02:31:37.664 [DEBUG] [Thread-201331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:31:37.664 [DEBUG] [Thread-201331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:31:37.665 [DEBUG] [Thread-201331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:31:37.665 [DEBUG] [Thread-201331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:31:37.703 [INFO] [Thread-201331] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:31:37.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:31:38.378 [DEBUG] [Thread-201331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:31:38.378 [DEBUG] [Thread-201331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:31:38.381 [DEBUG] [Thread-201331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:31:38.420 [DEBUG] [Thread-201331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:31:38.420 [DEBUG] [Thread-201331] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:31:38.424 [DEBUG] [Thread-201331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:31:38.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:31:38.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:31:38.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:31:38.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:31:38.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:31:38.453 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:31:38.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:31:38.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:31:38.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:31:38.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.021569 -999.00  +12.20  18.96     46   +1.00 1 1 1 1 1     0    0 10.57 -22.89 ZNESW 19.0 19.0 126.6 26.8 12.6 -24.9 12.4 -24.6 12.2 -23.3 12.5 -24.3
2025-11-25T02:31:38.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:31:38.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:31:38.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.021569
2025-11-25T02:31:38.461 [DEBUG] [Thread-201331] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:31:38.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:31:38.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:31:38.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:31:38.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:31:38.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:31:38.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:31:23', tmtdew=12.66, humidity=41.71, cloud=0.0, wind=23.86, temperature=12.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:31:24', seeing=1.16, atlas_timestamp='2025-11-25T00:31:03.562', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:29:00')
2025-11-25T02:31:38.559 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:31:38.572 [DEBUG] [Thread-201334] [transport.py] [_log()] starting thread (client mode): 0xd31f76a0
2025-11-25T02:31:38.572 [DEBUG] [Thread-201334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:31:38.586 [DEBUG] [Thread-201334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:31:38.587 [INFO] [Thread-201334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:31:38.594 [DEBUG] [Thread-201334] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:31:38.595 [DEBUG] [Thread-201334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:31:38.595 [DEBUG] [Thread-201334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:31:38.595 [DEBUG] [Thread-201334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:31:38.595 [DEBUG] [Thread-201334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:31:38.595 [DEBUG] [Thread-201334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:31:38.595 [DEBUG] [Thread-201334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:31:38.595 [DEBUG] [Thread-201334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:31:38.596 [DEBUG] [Thread-201334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:31:38.596 [DEBUG] [Thread-201334] [transport.py] [_log()] client lang: <none>
2025-11-25T02:31:38.596 [DEBUG] [Thread-201334] [transport.py] [_log()] server lang: <none>
2025-11-25T02:31:38.596 [DEBUG] [Thread-201334] [transport.py] [_log()] kex follows: False
2025-11-25T02:31:38.596 [DEBUG] [Thread-201334] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:31:38.596 [DEBUG] [Thread-201334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:31:38.597 [DEBUG] [Thread-201334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:31:38.597 [DEBUG] [Thread-201334] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:31:38.597 [DEBUG] [Thread-201334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:31:38.597 [DEBUG] [Thread-201334] [transport.py] [_log()] Compression: none
2025-11-25T02:31:38.597 [DEBUG] [Thread-201334] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:31:38.652 [DEBUG] [Thread-201334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:31:38.652 [DEBUG] [Thread-201334] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:31:38.653 [DEBUG] [Thread-201334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:31:38.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:31:38.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:31:38.708 [DEBUG] [Thread-201334] [transport.py] [_log()] userauth is OK
2025-11-25T02:31:38.709 [DEBUG] [Thread-201334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:31:38.709 [DEBUG] [Thread-201334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:31:38.709 [DEBUG] [Thread-201334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:31:38.709 [DEBUG] [Thread-201334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:31:38.734 [INFO] [Thread-201334] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:31:38.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:31:38.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:31:39.629 [DEBUG] [Thread-201334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:31:39.629 [DEBUG] [Thread-201334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:31:39.677 [DEBUG] [Thread-201334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:31:39.677 [DEBUG] [Thread-201334] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:31:39.685 [DEBUG] [Thread-201334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:31:39.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:31:39.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-11-25T02:31: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') -> 00000000
2025-11-25T02:31:39.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:31:39.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:31:39.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:31:39.727 [DEBUG] [Thread-201334] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:31:43.878 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:50.526 [DEBUG] [Thread-201336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:52.886 [DEBUG] [Thread-201337 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:31:54.358 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:04.831 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:05.697 [DEBUG] [Thread-201338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:09.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:32:09.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:32:09.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-11-25T02:32:10.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 31, 56), 12.69, 41.76, 0.0, 26.5, 12.12, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:32:10.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:31:56
2025-11-25T02:32:11.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:32:11.316 [DEBUG] [Thread-201339] [transport.py] [_log()] starting thread (client mode): 0xd319e8c0
2025-11-25T02:32:11.317 [DEBUG] [Thread-201339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:32:11.320 [DEBUG] [Thread-201339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:32:11.321 [INFO] [Thread-201339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:32:11.324 [DEBUG] [Thread-201339] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] client lang: <none>
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] server lang: <none>
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] kex follows: False
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:32:11.325 [DEBUG] [Thread-201339] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:32:11.326 [DEBUG] [Thread-201339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:32:11.326 [DEBUG] [Thread-201339] [transport.py] [_log()] Compression: none
2025-11-25T02:32:11.326 [DEBUG] [Thread-201339] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:32:11.355 [DEBUG] [Thread-201339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:32:11.358 [DEBUG] [Thread-201339] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:32:11.360 [DEBUG] [Thread-201339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:32:11.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:32:11.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:32:11.363 [DEBUG] [Thread-201339] [transport.py] [_log()] userauth is OK
2025-11-25T02:32:11.363 [DEBUG] [Thread-201339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:32:11.363 [DEBUG] [Thread-201339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:32:11.363 [DEBUG] [Thread-201339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:32:11.363 [DEBUG] [Thread-201339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:32:11.381 [INFO] [Thread-201339] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:32:11.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:32:12.033 [DEBUG] [Thread-201339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:32:12.034 [DEBUG] [Thread-201339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:32:12.044 [DEBUG] [Thread-201339] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:32:12.074 [DEBUG] [Thread-201339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:32:12.075 [DEBUG] [Thread-201339] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:32:12.079 [DEBUG] [Thread-201339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:32:12.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:32:12.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:32:12.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:32:12.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:32:12.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:32:12.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:32:12.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:32:12.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:32:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:32:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.021916 -999.00  +12.20  20.04     46   +1.00 1 1 1 1 1     0    0 10.64 -22.65 ZNESW 20.0 20.0 123.2 25.9 12.6 -24.9 12.4 -24.4 12.2 -23.2 12.5 -24.1
2025-11-25T02:32:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:32:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:32:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.021916
2025-11-25T02:32:12.114 [DEBUG] [Thread-201339] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:32:12.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:32:12.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:32:12.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:32:12.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:32:12.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:32:12.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:31:56', tmtdew=12.69, humidity=41.76, cloud=0.0, wind=26.5, temperature=12.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:31:57', seeing=0.97, atlas_timestamp='2025-11-25T00:31:33.542', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:29:00')
2025-11-25T02:32:12.219 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:32:12.232 [DEBUG] [Thread-201342] [transport.py] [_log()] starting thread (client mode): 0xd319c190
2025-11-25T02:32:12.232 [DEBUG] [Thread-201342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:32:12.248 [DEBUG] [Thread-201342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:32:12.248 [INFO] [Thread-201342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:32:12.255 [DEBUG] [Thread-201342] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:32:12.255 [DEBUG] [Thread-201342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:32:12.255 [DEBUG] [Thread-201342] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] client lang: <none>
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] server lang: <none>
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] kex follows: False
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:32:12.256 [DEBUG] [Thread-201342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:32:12.257 [DEBUG] [Thread-201342] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:32:12.257 [DEBUG] [Thread-201342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:32:12.257 [DEBUG] [Thread-201342] [transport.py] [_log()] Compression: none
2025-11-25T02:32:12.257 [DEBUG] [Thread-201342] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:32:12.312 [DEBUG] [Thread-201342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:32:12.313 [DEBUG] [Thread-201342] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:32:12.313 [DEBUG] [Thread-201342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:32:12.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:32:12.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:32:12.368 [DEBUG] [Thread-201342] [transport.py] [_log()] userauth is OK
2025-11-25T02:32:12.368 [DEBUG] [Thread-201342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:32:12.369 [DEBUG] [Thread-201342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:32:12.369 [DEBUG] [Thread-201342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:32:12.369 [DEBUG] [Thread-201342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:32:12.387 [INFO] [Thread-201342] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:32:12.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:32:12.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:32:13.212 [DEBUG] [Thread-201342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:32:13.212 [DEBUG] [Thread-201342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:32:13.260 [DEBUG] [Thread-201342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:32:13.260 [DEBUG] [Thread-201342] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:32:13.268 [DEBUG] [Thread-201342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:32:13.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:32:13.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-11-25T02:32:13.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-11-25T02:32:13.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:32:13.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:32:13.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:32:13.314 [DEBUG] [Thread-201342] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:32:15.288 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:20.773 [DEBUG] [Thread-201344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:25.727 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:35.446 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:35.466 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:35.886 [DEBUG] [Thread-201345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:36.245 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:43.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:32:43.311 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:32:43.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-11-25T02:32:44.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 32, 29), 12.71, 41.72, 0.0, 27.1, 12.15, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:32:44.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:32:29
2025-11-25T02:32:44.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:32:45.014 [DEBUG] [Thread-201346] [transport.py] [_log()] starting thread (client mode): 0xd319ea40
2025-11-25T02:32:45.015 [DEBUG] [Thread-201346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:32:45.024 [DEBUG] [Thread-201346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:32:45.024 [INFO] [Thread-201346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:32:45.031 [DEBUG] [Thread-201346] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:32:45.031 [DEBUG] [Thread-201346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:32:45.032 [DEBUG] [Thread-201346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:32:45.032 [DEBUG] [Thread-201346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:32:45.032 [DEBUG] [Thread-201346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:32:45.032 [DEBUG] [Thread-201346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:32:45.032 [DEBUG] [Thread-201346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:32:45.032 [DEBUG] [Thread-201346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:32:45.032 [DEBUG] [Thread-201346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:32:45.032 [DEBUG] [Thread-201346] [transport.py] [_log()] client lang: <none>
2025-11-25T02:32:45.032 [DEBUG] [Thread-201346] [transport.py] [_log()] server lang: <none>
2025-11-25T02:32:45.032 [DEBUG] [Thread-201346] [transport.py] [_log()] kex follows: False
2025-11-25T02:32:45.033 [DEBUG] [Thread-201346] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:32:45.033 [DEBUG] [Thread-201346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:32:45.033 [DEBUG] [Thread-201346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:32:45.034 [DEBUG] [Thread-201346] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:32:45.034 [DEBUG] [Thread-201346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:32:45.034 [DEBUG] [Thread-201346] [transport.py] [_log()] Compression: none
2025-11-25T02:32:45.034 [DEBUG] [Thread-201346] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:32:45.075 [DEBUG] [Thread-201346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:32:45.080 [DEBUG] [Thread-201346] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:32:45.083 [DEBUG] [Thread-201346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:32:45.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:32:45.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:32:45.090 [DEBUG] [Thread-201346] [transport.py] [_log()] userauth is OK
2025-11-25T02:32:45.090 [DEBUG] [Thread-201346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:32:45.091 [DEBUG] [Thread-201346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:32:45.091 [DEBUG] [Thread-201346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:32:45.091 [DEBUG] [Thread-201346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:32:45.119 [INFO] [Thread-201346] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:32:45.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:32:45.739 [DEBUG] [Thread-201346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:32:45.739 [DEBUG] [Thread-201346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:32:45.740 [DEBUG] [Thread-201346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:32:45.780 [DEBUG] [Thread-201346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:32:45.780 [DEBUG] [Thread-201346] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:32:45.784 [DEBUG] [Thread-201346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:32:45.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:32:45.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:32:45.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:32:45.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:32:45.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:32:45.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:32:45.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:32:45.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:32:45.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:32:45.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.022321 -999.00  +12.20  20.77     46   +1.00 1 1 1 1 1     0    0 10.50 -22.07 ZNESW 23.1 20.8 129.8 25.2 12.6 -25.0 12.4 -24.4 12.2 -23.4 12.5 -24.1
2025-11-25T02:32:45.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:32:45.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:32:45.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.022321
2025-11-25T02:32:45.821 [DEBUG] [Thread-201346] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:32:45.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:32:45.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:32:45.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:32:45.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:32:45.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:32:45.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:32:29', tmtdew=12.71, humidity=41.72, cloud=0.0, wind=27.1, temperature=12.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:32:30', seeing=0.97, atlas_timestamp='2025-11-25T00:32:08.534', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:29:00')
2025-11-25T02:32:45.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:32:45.940 [DEBUG] [Thread-201349] [transport.py] [_log()] starting thread (client mode): 0xd3153220
2025-11-25T02:32:45.940 [DEBUG] [Thread-201349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:32:45.954 [DEBUG] [Thread-201349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:32:45.954 [INFO] [Thread-201349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:32:45.962 [DEBUG] [Thread-201349] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:32:45.963 [DEBUG] [Thread-201349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:32:45.963 [DEBUG] [Thread-201349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:32:45.963 [DEBUG] [Thread-201349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:32:45.963 [DEBUG] [Thread-201349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:32:45.963 [DEBUG] [Thread-201349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:32:45.963 [DEBUG] [Thread-201349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:32:45.963 [DEBUG] [Thread-201349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:32:45.964 [DEBUG] [Thread-201349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:32:45.964 [DEBUG] [Thread-201349] [transport.py] [_log()] client lang: <none>
2025-11-25T02:32:45.964 [DEBUG] [Thread-201349] [transport.py] [_log()] server lang: <none>
2025-11-25T02:32:45.964 [DEBUG] [Thread-201349] [transport.py] [_log()] kex follows: False
2025-11-25T02:32:45.964 [DEBUG] [Thread-201349] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:32:45.964 [DEBUG] [Thread-201349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:32:45.964 [DEBUG] [Thread-201349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:32:45.965 [DEBUG] [Thread-201349] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:32:45.965 [DEBUG] [Thread-201349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:32:45.965 [DEBUG] [Thread-201349] [transport.py] [_log()] Compression: none
2025-11-25T02:32:45.965 [DEBUG] [Thread-201349] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:32:46.021 [DEBUG] [Thread-201349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:32:46.022 [DEBUG] [Thread-201349] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:32:46.022 [DEBUG] [Thread-201349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:32:46.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:32:46.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:32:46.080 [DEBUG] [Thread-201349] [transport.py] [_log()] userauth is OK
2025-11-25T02:32:46.080 [DEBUG] [Thread-201349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:32:46.081 [DEBUG] [Thread-201349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:32:46.081 [DEBUG] [Thread-201349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:32:46.081 [DEBUG] [Thread-201349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:32:46.100 [INFO] [Thread-201349] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:32:46.100 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:32:46.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:32:46.719 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:46.968 [DEBUG] [Thread-201349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:32:46.968 [DEBUG] [Thread-201349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:32:47.016 [DEBUG] [Thread-201349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:32:47.016 [DEBUG] [Thread-201349] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:32:47.024 [DEBUG] [Thread-201349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:32:47.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:32:47.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-11-25T02:32:47.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-11-25T02:32:47.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:32:47.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:32:47.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:32:47.068 [DEBUG] [Thread-201349] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:32:50.972 [DEBUG] [Thread-201351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:53.147 [DEBUG] [Thread-201352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:32:57.265 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:06.098 [DEBUG] [Thread-201353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:07.689 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:17.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:33:17.096 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:33:17.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:33:18.121 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:18.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 33, 2), 12.74, 41.62, 0.0, 25.04, 12.17, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:33:18.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:33:02
2025-11-25T02:33:18.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:33:18.478 [DEBUG] [Thread-201354] [transport.py] [_log()] starting thread (client mode): 0xd0710280
2025-11-25T02:33:18.479 [DEBUG] [Thread-201354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:33:18.486 [DEBUG] [Thread-201354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:33:18.486 [INFO] [Thread-201354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:33:18.493 [DEBUG] [Thread-201354] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] client lang: <none>
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] server lang: <none>
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] kex follows: False
2025-11-25T02:33:18.494 [DEBUG] [Thread-201354] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:33:18.495 [DEBUG] [Thread-201354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:33:18.495 [DEBUG] [Thread-201354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:33:18.495 [DEBUG] [Thread-201354] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:33:18.495 [DEBUG] [Thread-201354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:33:18.495 [DEBUG] [Thread-201354] [transport.py] [_log()] Compression: none
2025-11-25T02:33:18.495 [DEBUG] [Thread-201354] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:33:18.533 [DEBUG] [Thread-201354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:33:18.538 [DEBUG] [Thread-201354] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:33:18.540 [DEBUG] [Thread-201354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:33:18.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:33:18.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:33:18.546 [DEBUG] [Thread-201354] [transport.py] [_log()] userauth is OK
2025-11-25T02:33:18.546 [DEBUG] [Thread-201354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:33:18.547 [DEBUG] [Thread-201354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:33:18.547 [DEBUG] [Thread-201354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:33:18.547 [DEBUG] [Thread-201354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:33:18.573 [INFO] [Thread-201354] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:33:18.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:33:19.176 [DEBUG] [Thread-201354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:33:19.176 [DEBUG] [Thread-201354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:33:19.186 [DEBUG] [Thread-201354] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:33:19.217 [DEBUG] [Thread-201354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:33:19.217 [DEBUG] [Thread-201354] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:33:19.220 [DEBUG] [Thread-201354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:33:19.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:33:19.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:33:19.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:33:19.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:33:19.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:33:19.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:33:19.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:33:19.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:33:19.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:33:19.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.022611 -999.00  +12.20  18.91     46   +1.00 1 1 1 1 1     0    0 10.74 -21.18 ZNESW 18.9 18.9 125.4 22.9 12.6 -24.9 12.4 -24.5 12.2 -23.2 12.5 -24.2
2025-11-25T02:33:19.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:33:19.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:33:19.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.022611
2025-11-25T02:33:19.249 [DEBUG] [Thread-201354] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:33:19.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:33:19.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:33:19.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:33:19.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:33:19.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:33:19.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:33:02', tmtdew=12.74, humidity=41.62, cloud=0.0, wind=25.04, temperature=12.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:33:02', seeing=0.8, atlas_timestamp='2025-11-25T00:32:33.590', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:29:00')
2025-11-25T02:33:19.337 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:33:19.348 [DEBUG] [Thread-201357] [transport.py] [_log()] starting thread (client mode): 0xd07397b0
2025-11-25T02:33:19.349 [DEBUG] [Thread-201357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:33:19.363 [DEBUG] [Thread-201357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:33:19.363 [INFO] [Thread-201357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:33:19.370 [DEBUG] [Thread-201357] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:33:19.370 [DEBUG] [Thread-201357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:33:19.370 [DEBUG] [Thread-201357] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:33:19.370 [DEBUG] [Thread-201357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:33:19.370 [DEBUG] [Thread-201357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] client lang: <none>
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] server lang: <none>
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] kex follows: False
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] Compression: none
2025-11-25T02:33:19.371 [DEBUG] [Thread-201357] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:33:19.426 [DEBUG] [Thread-201357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:33:19.426 [DEBUG] [Thread-201357] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:33:19.427 [DEBUG] [Thread-201357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:33:19.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:33:19.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:33:19.484 [DEBUG] [Thread-201357] [transport.py] [_log()] userauth is OK
2025-11-25T02:33:19.484 [DEBUG] [Thread-201357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:33:19.484 [DEBUG] [Thread-201357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:33:19.484 [DEBUG] [Thread-201357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:33:19.484 [DEBUG] [Thread-201357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:33:19.500 [INFO] [Thread-201357] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:33:19.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:33:19.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:33:20.378 [DEBUG] [Thread-201357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:33:20.379 [DEBUG] [Thread-201357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:33:20.427 [DEBUG] [Thread-201357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:33:20.427 [DEBUG] [Thread-201357] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:33:20.436 [DEBUG] [Thread-201357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:33:20.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:33:20.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-11-25T02:33:20.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:33:20.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:33:20.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:33:20.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:33:20.488 [DEBUG] [Thread-201357] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:33:21.166 [DEBUG] [Thread-201359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:28.549 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:35.679 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:35.681 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:36.323 [DEBUG] [Thread-201360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:38.997 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:49.694 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:50.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:33:50.513 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:33:50.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-11-25T02:33:51.380 [DEBUG] [Thread-201361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:51.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 33, 35), 12.76, 41.06, 0.0, 23.54, 12.14, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:33:51.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:33:35
2025-11-25T02:33:51.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:33:51.740 [DEBUG] [Thread-201362] [transport.py] [_log()] starting thread (client mode): 0xd073b400
2025-11-25T02:33:51.741 [DEBUG] [Thread-201362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:33:51.752 [DEBUG] [Thread-201362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:33:51.752 [INFO] [Thread-201362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:33:51.757 [DEBUG] [Thread-201362] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] client lang: <none>
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] server lang: <none>
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] kex follows: False
2025-11-25T02:33:51.758 [DEBUG] [Thread-201362] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:33:51.759 [DEBUG] [Thread-201362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:33:51.759 [DEBUG] [Thread-201362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:33:51.759 [DEBUG] [Thread-201362] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:33:51.759 [DEBUG] [Thread-201362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:33:51.759 [DEBUG] [Thread-201362] [transport.py] [_log()] Compression: none
2025-11-25T02:33:51.759 [DEBUG] [Thread-201362] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:33:51.791 [DEBUG] [Thread-201362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:33:51.795 [DEBUG] [Thread-201362] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:33:51.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:33:51.797 [DEBUG] [Thread-201362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:33:51.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:33:51.800 [DEBUG] [Thread-201362] [transport.py] [_log()] userauth is OK
2025-11-25T02:33:51.800 [DEBUG] [Thread-201362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:33:51.800 [DEBUG] [Thread-201362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:33:51.800 [DEBUG] [Thread-201362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:33:51.800 [DEBUG] [Thread-201362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:33:51.821 [INFO] [Thread-201362] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:33:51.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:33:52.463 [DEBUG] [Thread-201362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:33:52.463 [DEBUG] [Thread-201362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:33:52.464 [DEBUG] [Thread-201362] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:33:52.504 [DEBUG] [Thread-201362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:33:52.504 [DEBUG] [Thread-201362] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:33:52.506 [DEBUG] [Thread-201362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:33:52.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:33:52.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:33:52.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:33:52.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:33:52.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:33:52.528 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:33:52.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:33:52.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:33:52.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:33:52.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.022958 -999.00  +12.20  18.98     46   +1.00 1 1 1 1 1     0    0 10.74 -20.00 ZNESW 19.0 19.0 126.6 24.2 12.6 -24.8 12.5 -24.5 12.2 -23.2 12.5 -23.9
2025-11-25T02:33:52.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:33:52.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:33:52.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.022958
2025-11-25T02:33:52.536 [DEBUG] [Thread-201362] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:33:52.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:33:52.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:33:52.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:33:52.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:33:52.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:33:52.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:33:35', tmtdew=12.76, humidity=41.06, cloud=0.0, wind=23.54, temperature=12.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:33:36', seeing=0.8, atlas_timestamp='2025-11-25T00:33:03.571', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:32:00')
2025-11-25T02:33:52.624 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:33:52.636 [DEBUG] [Thread-201365] [transport.py] [_log()] starting thread (client mode): 0xd3152e00
2025-11-25T02:33:52.636 [DEBUG] [Thread-201365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:33:52.651 [DEBUG] [Thread-201365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:33:52.651 [INFO] [Thread-201365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] client lang: <none>
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] server lang: <none>
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] kex follows: False
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] Compression: none
2025-11-25T02:33:52.659 [DEBUG] [Thread-201365] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:33:52.714 [DEBUG] [Thread-201365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:33:52.714 [DEBUG] [Thread-201365] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:33:52.715 [DEBUG] [Thread-201365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:33:52.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:33:52.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:33:52.772 [DEBUG] [Thread-201365] [transport.py] [_log()] userauth is OK
2025-11-25T02:33:52.772 [DEBUG] [Thread-201365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:33:52.772 [DEBUG] [Thread-201365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:33:52.772 [DEBUG] [Thread-201365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:33:52.772 [DEBUG] [Thread-201365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:33:52.785 [INFO] [Thread-201365] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:33:52.786 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:33:52.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:33:53.416 [DEBUG] [Thread-201367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:33:53.625 [DEBUG] [Thread-201365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:33:53.625 [DEBUG] [Thread-201365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:33:53.673 [DEBUG] [Thread-201365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:33:53.673 [DEBUG] [Thread-201365] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:33:53.681 [DEBUG] [Thread-201365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:33:53.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:33:53.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-11-25T02:33:53.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-11-25T02:33:53.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:33:53.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:33:53.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:33:53.714 [DEBUG] [Thread-201365] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:34:00.222 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:06.470 [DEBUG] [Thread-201368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:10.668 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:21.127 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:21.623 [DEBUG] [Thread-201369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:23.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:34:23.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:34:23.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-11-25T02:34:24.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 34, 8), 12.71, 41.21, 0.0, 22.81, 12.1, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:34:24.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:34:08
2025-11-25T02:34:24.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:34:25.099 [DEBUG] [Thread-201370] [transport.py] [_log()] starting thread (client mode): 0xd319ff70
2025-11-25T02:34:25.100 [DEBUG] [Thread-201370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:34:25.110 [DEBUG] [Thread-201370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:34:25.110 [INFO] [Thread-201370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] client lang: <none>
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] server lang: <none>
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] kex follows: False
2025-11-25T02:34:25.117 [DEBUG] [Thread-201370] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:34:25.118 [DEBUG] [Thread-201370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:34:25.118 [DEBUG] [Thread-201370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:34:25.118 [DEBUG] [Thread-201370] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:34:25.118 [DEBUG] [Thread-201370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:34:25.118 [DEBUG] [Thread-201370] [transport.py] [_log()] Compression: none
2025-11-25T02:34:25.118 [DEBUG] [Thread-201370] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:34:25.160 [DEBUG] [Thread-201370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:34:25.166 [DEBUG] [Thread-201370] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:34:25.168 [DEBUG] [Thread-201370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:34:25.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:34:25.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:34:25.173 [DEBUG] [Thread-201370] [transport.py] [_log()] userauth is OK
2025-11-25T02:34:25.173 [DEBUG] [Thread-201370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:34:25.173 [DEBUG] [Thread-201370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:34:25.173 [DEBUG] [Thread-201370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:34:25.174 [DEBUG] [Thread-201370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:34:25.210 [INFO] [Thread-201370] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:34:25.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:34:25.851 [DEBUG] [Thread-201370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:34:25.852 [DEBUG] [Thread-201370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:34:25.853 [DEBUG] [Thread-201370] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:34:25.892 [DEBUG] [Thread-201370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:34:25.892 [DEBUG] [Thread-201370] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:34:25.895 [DEBUG] [Thread-201370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:34:25.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:34:25.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:34:25.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:34:25.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:34:25.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:34:25.924 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:34:25.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:34:25.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:34:25.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:34:25.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.023652 -999.00  +12.20  19.95     46   +1.00 1 1 1 1 1     0    0 10.56 -20.20 ZNESW 19.9 19.9 125.4 27.0 12.6 -24.8 12.4 -24.3 12.2 -23.3 12.5 -24.0
2025-11-25T02:34:25.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:34:25.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:34:25.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.023652
2025-11-25T02:34:25.931 [DEBUG] [Thread-201370] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:34:25.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:34:25.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:34:25.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:34:25.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:34:25.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:34:25.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:34:08', tmtdew=12.71, humidity=41.21, cloud=0.0, wind=22.81, temperature=12.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:34:09', seeing=0.84, atlas_timestamp='2025-11-25T00:34:03.533', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:32:00')
2025-11-25T02:34:26.035 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:34:26.047 [DEBUG] [Thread-201373] [transport.py] [_log()] starting thread (client mode): 0xd073bcd0
2025-11-25T02:34:26.047 [DEBUG] [Thread-201373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:34:26.061 [DEBUG] [Thread-201373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:34:26.061 [INFO] [Thread-201373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] client lang: <none>
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] server lang: <none>
2025-11-25T02:34:26.069 [DEBUG] [Thread-201373] [transport.py] [_log()] kex follows: False
2025-11-25T02:34:26.070 [DEBUG] [Thread-201373] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:34:26.070 [DEBUG] [Thread-201373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:34:26.070 [DEBUG] [Thread-201373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:34:26.070 [DEBUG] [Thread-201373] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:34:26.070 [DEBUG] [Thread-201373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:34:26.070 [DEBUG] [Thread-201373] [transport.py] [_log()] Compression: none
2025-11-25T02:34:26.070 [DEBUG] [Thread-201373] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:34:26.127 [DEBUG] [Thread-201373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:34:26.127 [DEBUG] [Thread-201373] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:34:26.127 [DEBUG] [Thread-201373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:34:26.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:34:26.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:34:26.188 [DEBUG] [Thread-201373] [transport.py] [_log()] userauth is OK
2025-11-25T02:34:26.188 [DEBUG] [Thread-201373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:34:26.188 [DEBUG] [Thread-201373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:34:26.188 [DEBUG] [Thread-201373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:34:26.188 [DEBUG] [Thread-201373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:34:26.206 [INFO] [Thread-201373] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:34: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-11-25T02:34:26.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:34:27.029 [DEBUG] [Thread-201373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:34:27.029 [DEBUG] [Thread-201373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:34:27.077 [DEBUG] [Thread-201373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:34:27.078 [DEBUG] [Thread-201373] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:34:27.087 [DEBUG] [Thread-201373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:34:27.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:34:27.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-11-25T02:34:27.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-11-25T02:34:27.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:34:27.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:34:27.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:34:27.122 [DEBUG] [Thread-201373] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:34:31.754 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:35.884 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:35.886 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:36.713 [DEBUG] [Thread-201375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:42.174 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:51.863 [DEBUG] [Thread-201376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:52.601 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:53.723 [DEBUG] [Thread-201377 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:34:57.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:34:57.157 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:34:57.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:34:58.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 34, 42), 12.7, 41.24, 0.0, 26.33, 12.09, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:34:58.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:34:42
2025-11-25T02:34:58.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:34:58.428 [DEBUG] [Thread-201378] [transport.py] [_log()] starting thread (client mode): 0xd3148f10
2025-11-25T02:34:58.429 [DEBUG] [Thread-201378] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:34:58.434 [DEBUG] [Thread-201378] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:34:58.434 [INFO] [Thread-201378] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:34:58.439 [DEBUG] [Thread-201378] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:34:58.439 [DEBUG] [Thread-201378] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:34:58.439 [DEBUG] [Thread-201378] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:34:58.439 [DEBUG] [Thread-201378] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:34:58.439 [DEBUG] [Thread-201378] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:34:58.439 [DEBUG] [Thread-201378] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:34:58.439 [DEBUG] [Thread-201378] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:34:58.439 [DEBUG] [Thread-201378] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:34:58.439 [DEBUG] [Thread-201378] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:34:58.440 [DEBUG] [Thread-201378] [transport.py] [_log()] client lang: <none>
2025-11-25T02:34:58.440 [DEBUG] [Thread-201378] [transport.py] [_log()] server lang: <none>
2025-11-25T02:34:58.440 [DEBUG] [Thread-201378] [transport.py] [_log()] kex follows: False
2025-11-25T02:34:58.440 [DEBUG] [Thread-201378] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:34:58.440 [DEBUG] [Thread-201378] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:34:58.440 [DEBUG] [Thread-201378] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:34:58.441 [DEBUG] [Thread-201378] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:34:58.441 [DEBUG] [Thread-201378] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:34:58.441 [DEBUG] [Thread-201378] [transport.py] [_log()] Compression: none
2025-11-25T02:34:58.441 [DEBUG] [Thread-201378] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:34:58.478 [DEBUG] [Thread-201378] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:34:58.483 [DEBUG] [Thread-201378] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:34:58.485 [DEBUG] [Thread-201378] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:34:58.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:34:58.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:34:58.490 [DEBUG] [Thread-201378] [transport.py] [_log()] userauth is OK
2025-11-25T02:34:58.490 [DEBUG] [Thread-201378] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:34:58.490 [DEBUG] [Thread-201378] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:34:58.490 [DEBUG] [Thread-201378] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:34:58.490 [DEBUG] [Thread-201378] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:34:58.529 [INFO] [Thread-201378] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:34:58.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:34:59.165 [DEBUG] [Thread-201378] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:34:59.165 [DEBUG] [Thread-201378] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:34:59.176 [DEBUG] [Thread-201378] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:34:59.205 [DEBUG] [Thread-201378] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:34:59.205 [DEBUG] [Thread-201378] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:34:59.208 [DEBUG] [Thread-201378] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:34:59.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:34:59.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:34:59.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:34:59.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:34:59.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:34:59.226 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:34:59.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:34:59.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:34:59.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:34:59.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.024000 -999.00  +12.10  18.84     46   +1.00 1 1 1 1 1     0    0 10.79 -19.78 ZNESW 18.8 18.8 128.4 21.7 12.6 -24.7 12.4 -24.4 12.1 -23.0 12.5 -24.0
2025-11-25T02:34:59.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:34:59.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:34:59.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.024000
2025-11-25T02:34:59.233 [DEBUG] [Thread-201378] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:34:59.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:34:59.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:34:59.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:34:59.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:34:59.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:34:59.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:34:42', tmtdew=12.7, humidity=41.24, cloud=0.0, wind=26.33, temperature=12.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:34:42', seeing=0.77, atlas_timestamp='2025-11-25T00:34:33.600', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:32:00')
2025-11-25T02:34:59.320 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:34:59.332 [DEBUG] [Thread-201381] [transport.py] [_log()] starting thread (client mode): 0xd0738e80
2025-11-25T02:34:59.332 [DEBUG] [Thread-201381] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:34:59.347 [DEBUG] [Thread-201381] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:34:59.347 [INFO] [Thread-201381] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:34:59.354 [DEBUG] [Thread-201381] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:34:59.354 [DEBUG] [Thread-201381] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:34:59.354 [DEBUG] [Thread-201381] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:34:59.354 [DEBUG] [Thread-201381] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:34:59.354 [DEBUG] [Thread-201381] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:34:59.354 [DEBUG] [Thread-201381] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] client lang: <none>
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] server lang: <none>
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] kex follows: False
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] Compression: none
2025-11-25T02:34:59.355 [DEBUG] [Thread-201381] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:34:59.410 [DEBUG] [Thread-201381] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:34:59.410 [DEBUG] [Thread-201381] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:34:59.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:34:59.411 [DEBUG] [Thread-201381] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:34:59.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:34:59.468 [DEBUG] [Thread-201381] [transport.py] [_log()] userauth is OK
2025-11-25T02:34:59.468 [DEBUG] [Thread-201381] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:34:59.468 [DEBUG] [Thread-201381] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:34:59.468 [DEBUG] [Thread-201381] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:34:59.468 [DEBUG] [Thread-201381] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:34:59.481 [INFO] [Thread-201381] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:34:59.481 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:34:59.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:35:00.372 [DEBUG] [Thread-201381] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:35:00.372 [DEBUG] [Thread-201381] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:35:00.420 [DEBUG] [Thread-201381] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:35:00.421 [DEBUG] [Thread-201381] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:35:00.430 [DEBUG] [Thread-201381] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:35:00.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:35: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')
2025-11-25T02:35:00.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-11-25T02:35:00.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:35:00.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:35:00.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:35:00.466 [DEBUG] [Thread-201381] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:35:03.018 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:06.923 [DEBUG] [Thread-201383 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:13.461 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:22.119 [DEBUG] [Thread-201384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:23.923 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:30.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:35:30.489 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:35:30.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-11-25T02:35:31.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 35, 15), 12.68, 41.29, 0.0, 25.85, 12.07, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:35:31.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:35:15
2025-11-25T02:35:31.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:35:31.947 [DEBUG] [Thread-201385] [transport.py] [_log()] starting thread (client mode): 0xc9b745b0
2025-11-25T02:35:31.947 [DEBUG] [Thread-201385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:35:31.960 [DEBUG] [Thread-201385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:35:31.960 [INFO] [Thread-201385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] client lang: <none>
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] server lang: <none>
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] kex follows: False
2025-11-25T02:35:31.966 [DEBUG] [Thread-201385] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:35:31.967 [DEBUG] [Thread-201385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:35:31.967 [DEBUG] [Thread-201385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:35:31.967 [DEBUG] [Thread-201385] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:35:31.967 [DEBUG] [Thread-201385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:35:31.967 [DEBUG] [Thread-201385] [transport.py] [_log()] Compression: none
2025-11-25T02:35:31.967 [DEBUG] [Thread-201385] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:35:32.004 [DEBUG] [Thread-201385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:35:32.009 [DEBUG] [Thread-201385] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:35:32.011 [DEBUG] [Thread-201385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:35:32.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:35:32.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:35:32.017 [DEBUG] [Thread-201385] [transport.py] [_log()] userauth is OK
2025-11-25T02:35:32.017 [DEBUG] [Thread-201385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:35:32.017 [DEBUG] [Thread-201385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:35:32.017 [DEBUG] [Thread-201385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:35:32.017 [DEBUG] [Thread-201385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:35:32.056 [INFO] [Thread-201385] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:35:32.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:35:32.700 [DEBUG] [Thread-201385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:35:32.700 [DEBUG] [Thread-201385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:35:32.702 [DEBUG] [Thread-201385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:35:32.741 [DEBUG] [Thread-201385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:35:32.741 [DEBUG] [Thread-201385] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:35:32.745 [DEBUG] [Thread-201385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:35:32.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:35:32.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:35:32.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:35:32.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:35:32.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:35:32.773 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:35:32.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:35:32.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:35:32.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:35:32.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.024347 -999.00  +12.20  20.05     46   +1.00 1 1 1 1 1     0    0 10.80 -20.39 ZNESW 20.1 20.1 120.6 24.3 12.6 -24.6 12.4 -24.2 12.2 -23.1 12.4 -23.9
2025-11-25T02:35:32.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:35:32.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:35:32.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.024347
2025-11-25T02:35:32.781 [DEBUG] [Thread-201385] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:35:32.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:35:32.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:35:32.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:35:32.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:35:32.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:35:32.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:35:15', tmtdew=12.68, humidity=41.29, cloud=0.0, wind=25.85, temperature=12.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:35:15', seeing=0.78, atlas_timestamp='2025-11-25T00:35:03.581', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:32:00')
2025-11-25T02:35:32.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:35:32.894 [DEBUG] [Thread-201388] [transport.py] [_log()] starting thread (client mode): 0xc9b763e0
2025-11-25T02:35:32.894 [DEBUG] [Thread-201388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:35:32.909 [DEBUG] [Thread-201388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:35:32.909 [INFO] [Thread-201388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:35:32.917 [DEBUG] [Thread-201388] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:35:32.917 [DEBUG] [Thread-201388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:35:32.917 [DEBUG] [Thread-201388] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:35:32.917 [DEBUG] [Thread-201388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:35:32.917 [DEBUG] [Thread-201388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:35:32.918 [DEBUG] [Thread-201388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:35:32.918 [DEBUG] [Thread-201388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:35:32.918 [DEBUG] [Thread-201388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:35:32.918 [DEBUG] [Thread-201388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:35:32.918 [DEBUG] [Thread-201388] [transport.py] [_log()] client lang: <none>
2025-11-25T02:35:32.918 [DEBUG] [Thread-201388] [transport.py] [_log()] server lang: <none>
2025-11-25T02:35:32.918 [DEBUG] [Thread-201388] [transport.py] [_log()] kex follows: False
2025-11-25T02:35:32.918 [DEBUG] [Thread-201388] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:35:32.918 [DEBUG] [Thread-201388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:35:32.919 [DEBUG] [Thread-201388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:35:32.919 [DEBUG] [Thread-201388] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:35:32.919 [DEBUG] [Thread-201388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:35:32.919 [DEBUG] [Thread-201388] [transport.py] [_log()] Compression: none
2025-11-25T02:35:32.919 [DEBUG] [Thread-201388] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:35:32.978 [DEBUG] [Thread-201388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:35:32.979 [DEBUG] [Thread-201388] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:35:32.980 [DEBUG] [Thread-201388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:35:32.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:35:32.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:35:33.036 [DEBUG] [Thread-201388] [transport.py] [_log()] userauth is OK
2025-11-25T02:35:33.037 [DEBUG] [Thread-201388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:35:33.037 [DEBUG] [Thread-201388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:35:33.037 [DEBUG] [Thread-201388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:35:33.037 [DEBUG] [Thread-201388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:35:33.060 [INFO] [Thread-201388] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:35:33.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:35:33.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:35:33.895 [DEBUG] [Thread-201388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:35:33.896 [DEBUG] [Thread-201388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:35:33.944 [DEBUG] [Thread-201388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:35:33.944 [DEBUG] [Thread-201388] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:35:33.953 [DEBUG] [Thread-201388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:35:33.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:35:33.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-11-25T02:35:33.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-11-25T02:35:33.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:35:33.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:35:33.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:35:34.002 [DEBUG] [Thread-201388] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:35:34.347 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:36.091 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:36.093 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:37.206 [DEBUG] [Thread-201390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:44.769 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:52.326 [DEBUG] [Thread-201391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:53.957 [DEBUG] [Thread-201392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:35:55.207 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:04.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:36:04.029 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:36:04.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-11-25T02:36:05.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 35, 48), 12.7, 41.24, 0.0, 22.96, 12.1, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:36:05.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:35:48
2025-11-25T02:36:05.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:36:05.713 [DEBUG] [Thread-201393] [transport.py] [_log()] starting thread (client mode): 0xd07864a0
2025-11-25T02:36:05.714 [DEBUG] [Thread-201393] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:36:05.723 [DEBUG] [Thread-201393] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:36:05.723 [INFO] [Thread-201393] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:36:05.729 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:05.731 [DEBUG] [Thread-201393] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] client lang: <none>
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] server lang: <none>
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] kex follows: False
2025-11-25T02:36:05.732 [DEBUG] [Thread-201393] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:36:05.733 [DEBUG] [Thread-201393] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:36:05.733 [DEBUG] [Thread-201393] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:36:05.733 [DEBUG] [Thread-201393] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:36:05.733 [DEBUG] [Thread-201393] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:36:05.733 [DEBUG] [Thread-201393] [transport.py] [_log()] Compression: none
2025-11-25T02:36:05.733 [DEBUG] [Thread-201393] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:36:05.763 [DEBUG] [Thread-201393] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:36:05.768 [DEBUG] [Thread-201393] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:36:05.770 [DEBUG] [Thread-201393] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:36:05.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:36:05.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:36:05.775 [DEBUG] [Thread-201393] [transport.py] [_log()] userauth is OK
2025-11-25T02:36:05.775 [DEBUG] [Thread-201393] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:36:05.775 [DEBUG] [Thread-201393] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:36:05.775 [DEBUG] [Thread-201393] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:36:05.776 [DEBUG] [Thread-201393] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:36:05.813 [INFO] [Thread-201393] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:36:05.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:36:06.423 [DEBUG] [Thread-201393] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:36:06.423 [DEBUG] [Thread-201393] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:36:06.424 [DEBUG] [Thread-201393] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:36:06.464 [DEBUG] [Thread-201393] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:36:06.464 [DEBUG] [Thread-201393] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:36:06.467 [DEBUG] [Thread-201393] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:36:06.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:36:06.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:36:06.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:36:06.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:36:06.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:36:06.493 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:36:06.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:36:06.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:36:06.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:36:06.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.024694 -999.00  +12.20  18.45     46   +1.00 1 1 1 1 1     0    0 10.65 -21.38 ZNESW 18.4 18.4 124.4 22.8 12.6 -24.7 12.4 -24.2 12.2 -23.1 12.5 -24.0
2025-11-25T02:36:06.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:36:06.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:36:06.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.024694
2025-11-25T02:36:06.502 [DEBUG] [Thread-201393] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:36:06.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:36:06.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:36:06.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:36:06.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:36:06.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:36:06.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:35:48', tmtdew=12.7, humidity=41.24, cloud=0.0, wind=22.96, temperature=12.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:35:48', seeing=0.79, atlas_timestamp='2025-11-25T00:35:33.562', atlas_cloud=1, atlas_rain=1, zp_data=[-0.011250000000000426, -0.025750000000000384, 0.01925000000000132, -0.0625, -0.007500000000000284, 0.01425000000000054, -0.018000000000000682, -0.02474999999999916, 0.0024999999999995026, -0.010999999999999233, -0.008750000000000924, -0.0259999999999998, 0.09600000000000009, 0.0727499999999992, -0.03300000000000125, -0.024499999999999744, 0.011250000000000426, -0.0015000000000000568, 0.0035000000000007248, -0.039750000000001506, 0.09399999999999942, 0.05874999999999808, 0.03325000000000067, 0.0012500000000006395, 0.019499999999998963, 0.026500000000000412, -0.015249999999999986, 0.0035000000000007248, 0.03599999999999959, 0.058000000000001606, 0.05900000000000105, 0.0030000000000001137, 0.00975000000000037], zp_timestamp='2025-11-25T00:32:00')
2025-11-25T02:36:06.618 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:36:06.630 [DEBUG] [Thread-201396] [transport.py] [_log()] starting thread (client mode): 0xd3149b40
2025-11-25T02:36:06.630 [DEBUG] [Thread-201396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:36:06.644 [DEBUG] [Thread-201396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:36:06.644 [INFO] [Thread-201396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:36:06.652 [DEBUG] [Thread-201396] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:36:06.652 [DEBUG] [Thread-201396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:36:06.653 [DEBUG] [Thread-201396] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:36:06.653 [DEBUG] [Thread-201396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:36:06.653 [DEBUG] [Thread-201396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:36:06.653 [DEBUG] [Thread-201396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:36:06.653 [DEBUG] [Thread-201396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:36:06.653 [DEBUG] [Thread-201396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:36:06.653 [DEBUG] [Thread-201396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:36:06.653 [DEBUG] [Thread-201396] [transport.py] [_log()] client lang: <none>
2025-11-25T02:36:06.653 [DEBUG] [Thread-201396] [transport.py] [_log()] server lang: <none>
2025-11-25T02:36:06.653 [DEBUG] [Thread-201396] [transport.py] [_log()] kex follows: False
2025-11-25T02:36:06.654 [DEBUG] [Thread-201396] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:36:06.654 [DEBUG] [Thread-201396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:36:06.654 [DEBUG] [Thread-201396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:36:06.654 [DEBUG] [Thread-201396] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:36:06.654 [DEBUG] [Thread-201396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:36:06.654 [DEBUG] [Thread-201396] [transport.py] [_log()] Compression: none
2025-11-25T02:36:06.654 [DEBUG] [Thread-201396] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:36:06.711 [DEBUG] [Thread-201396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:36:06.712 [DEBUG] [Thread-201396] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:36:06.712 [DEBUG] [Thread-201396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:36:06.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:36:06.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:36:06.768 [DEBUG] [Thread-201396] [transport.py] [_log()] userauth is OK
2025-11-25T02:36:06.768 [DEBUG] [Thread-201396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:36:06.768 [DEBUG] [Thread-201396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:36:06.768 [DEBUG] [Thread-201396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:36:06.768 [DEBUG] [Thread-201396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:36:06.789 [INFO] [Thread-201396] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:36:06.790 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:36:06.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:36:07.399 [DEBUG] [Thread-201398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:07.662 [DEBUG] [Thread-201396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:36:07.662 [DEBUG] [Thread-201396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:36:07.713 [DEBUG] [Thread-201396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:36:07.714 [DEBUG] [Thread-201396] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:36:07.726 [DEBUG] [Thread-201396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:36:07.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:36: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-11-25T02:36:07.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-11-25T02:36:07.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:36:07.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:36:07.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:36:07.775 [DEBUG] [Thread-201396] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:36:16.166 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:22.564 [DEBUG] [Thread-201399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:26.567 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:36.311 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:36.321 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:37.014 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:37.622 [DEBUG] [Thread-201400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:37.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:36:37.796 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:36:37.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-11-25T02:36:38.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 36, 21), 12.68, 41.29, 0.0, 22.36, 12.09, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:36:38.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:36:21
2025-11-25T02:36:38.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:36:38.959 [DEBUG] [Thread-201401] [transport.py] [_log()] starting thread (client mode): 0xd3153c10
2025-11-25T02:36:38.960 [DEBUG] [Thread-201401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:36:38.972 [DEBUG] [Thread-201401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:36:38.972 [INFO] [Thread-201401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] client lang: <none>
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] server lang: <none>
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] kex follows: False
2025-11-25T02:36:38.978 [DEBUG] [Thread-201401] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:36:38.979 [DEBUG] [Thread-201401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:36:38.979 [DEBUG] [Thread-201401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:36:38.979 [DEBUG] [Thread-201401] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:36:38.979 [DEBUG] [Thread-201401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:36:38.979 [DEBUG] [Thread-201401] [transport.py] [_log()] Compression: none
2025-11-25T02:36:38.979 [DEBUG] [Thread-201401] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:36:39.013 [DEBUG] [Thread-201401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:36:39.018 [DEBUG] [Thread-201401] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:36:39.020 [DEBUG] [Thread-201401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:36:39.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:36:39.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:36:39.026 [DEBUG] [Thread-201401] [transport.py] [_log()] userauth is OK
2025-11-25T02:36:39.026 [DEBUG] [Thread-201401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:36:39.027 [DEBUG] [Thread-201401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:36:39.027 [DEBUG] [Thread-201401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:36:39.027 [DEBUG] [Thread-201401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:36:39.053 [INFO] [Thread-201401] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:36:39.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:36:39.701 [DEBUG] [Thread-201401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:36:39.701 [DEBUG] [Thread-201401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:36:39.710 [DEBUG] [Thread-201401] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:36:39.742 [DEBUG] [Thread-201401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:36:39.742 [DEBUG] [Thread-201401] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:36:39.745 [DEBUG] [Thread-201401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:36:39.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:36:39.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:36:39.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:36:39.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:36:39.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:36:39.767 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:36:39.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:36:39.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:36:39.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:36:39.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.025099 -999.00  +12.20  18.54     46   +1.00 1 1 1 1 1     0    0 10.64 -22.50 ZNESW 17.1 18.5 123.2 30.9 12.6 -24.6 12.5 -24.2 12.2 -23.0 12.5 -23.8
2025-11-25T02:36:39.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:36:39.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:36:39.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.025099
2025-11-25T02:36:39.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:36:39.784 [DEBUG] [Thread-201401] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:36:39.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:36:39.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:36:39.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:36:39.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:36:39.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:36:21', tmtdew=12.68, humidity=41.29, cloud=0.0, wind=22.36, temperature=12.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:36:22', seeing=0.79, atlas_timestamp='2025-11-25T00:36:08.554', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:34:00')
2025-11-25T02:36:39.866 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:36:39.880 [DEBUG] [Thread-201404] [transport.py] [_log()] starting thread (client mode): 0xd0739c60
2025-11-25T02:36:39.880 [DEBUG] [Thread-201404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:36:39.896 [DEBUG] [Thread-201404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:36:39.896 [INFO] [Thread-201404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] client lang: <none>
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] server lang: <none>
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] kex follows: False
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] Compression: none
2025-11-25T02:36:39.908 [DEBUG] [Thread-201404] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:36:39.967 [DEBUG] [Thread-201404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:36:39.967 [DEBUG] [Thread-201404] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:36:39.967 [DEBUG] [Thread-201404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:36:39.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:36:39.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:36:40.024 [DEBUG] [Thread-201404] [transport.py] [_log()] userauth is OK
2025-11-25T02:36:40.024 [DEBUG] [Thread-201404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:36:40.024 [DEBUG] [Thread-201404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:36:40.024 [DEBUG] [Thread-201404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:36:40.024 [DEBUG] [Thread-201404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:36:40.042 [INFO] [Thread-201404] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:36:40.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:36:40.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:36:40.880 [DEBUG] [Thread-201404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:36:40.881 [DEBUG] [Thread-201404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:36:40.929 [DEBUG] [Thread-201404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:36:40.929 [DEBUG] [Thread-201404] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:36:40.937 [DEBUG] [Thread-201404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:36:40.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:36: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-11-25T02:36:40.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-11-25T02:36:40.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:36:40.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:36:40.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:36:40.971 [DEBUG] [Thread-201404] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:36:47.453 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:52.695 [DEBUG] [Thread-201406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:54.233 [DEBUG] [Thread-201407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:36:57.981 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:07.843 [DEBUG] [Thread-201408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:08.489 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:10.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:37:10.995 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:37: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-11-25T02:37:12.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 36, 55), 12.63, 41.77, 0.0, 24.05, 12.0, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:37:12.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:36:55
2025-11-25T02:37:12.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:37:12.505 [DEBUG] [Thread-201409] [transport.py] [_log()] starting thread (client mode): 0xd3152e00
2025-11-25T02:37:12.506 [DEBUG] [Thread-201409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:37:12.511 [DEBUG] [Thread-201409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:37:12.512 [INFO] [Thread-201409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:37:12.517 [DEBUG] [Thread-201409] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:37:12.517 [DEBUG] [Thread-201409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:37:12.517 [DEBUG] [Thread-201409] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:37:12.517 [DEBUG] [Thread-201409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:37:12.517 [DEBUG] [Thread-201409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:37:12.517 [DEBUG] [Thread-201409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:37:12.518 [DEBUG] [Thread-201409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:37:12.518 [DEBUG] [Thread-201409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:37:12.518 [DEBUG] [Thread-201409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:37:12.518 [DEBUG] [Thread-201409] [transport.py] [_log()] client lang: <none>
2025-11-25T02:37:12.518 [DEBUG] [Thread-201409] [transport.py] [_log()] server lang: <none>
2025-11-25T02:37:12.518 [DEBUG] [Thread-201409] [transport.py] [_log()] kex follows: False
2025-11-25T02:37:12.518 [DEBUG] [Thread-201409] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:37:12.519 [DEBUG] [Thread-201409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:37:12.519 [DEBUG] [Thread-201409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:37:12.519 [DEBUG] [Thread-201409] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:37:12.519 [DEBUG] [Thread-201409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:37:12.519 [DEBUG] [Thread-201409] [transport.py] [_log()] Compression: none
2025-11-25T02:37:12.519 [DEBUG] [Thread-201409] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:37:12.554 [DEBUG] [Thread-201409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:37:12.558 [DEBUG] [Thread-201409] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:37:12.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:37:12.560 [DEBUG] [Thread-201409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:37:12.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:37:12.563 [DEBUG] [Thread-201409] [transport.py] [_log()] userauth is OK
2025-11-25T02:37:12.563 [DEBUG] [Thread-201409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:37:12.563 [DEBUG] [Thread-201409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:37:12.563 [DEBUG] [Thread-201409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:37:12.563 [DEBUG] [Thread-201409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:37:12.582 [INFO] [Thread-201409] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:37:12.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:37:13.189 [DEBUG] [Thread-201409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:37:13.189 [DEBUG] [Thread-201409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:37:13.190 [DEBUG] [Thread-201409] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:37:13.230 [DEBUG] [Thread-201409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:37:13.230 [DEBUG] [Thread-201409] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:37:13.233 [DEBUG] [Thread-201409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:37:13.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:37:13.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:37:13.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:37:13.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:37:13.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:37:13.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:37:13.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:37:13.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:37:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:37:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.025389 -999.00  +12.10  19.56     46   +1.00 1 1 1 1 1     0    0 10.71 -21.43 ZNESW 19.6 19.6 121.0 24.6 12.6 -24.7 12.4 -24.3 12.2 -23.1 12.5 -23.9
2025-11-25T02:37:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:37:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:37:13.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.025389
2025-11-25T02:37:13.260 [DEBUG] [Thread-201409] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:37:13.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:37:13.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:37:13.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:37:13.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:37:13.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:37:13.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:36:55', tmtdew=12.63, humidity=41.77, cloud=0.0, wind=24.05, temperature=12.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:36:56', seeing=0.79, atlas_timestamp='2025-11-25T00:36:33.610', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:34:00')
2025-11-25T02:37:13.350 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:37:13.363 [DEBUG] [Thread-201412] [transport.py] [_log()] starting thread (client mode): 0xd0784e50
2025-11-25T02:37:13.363 [DEBUG] [Thread-201412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:37:13.378 [DEBUG] [Thread-201412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:37:13.378 [INFO] [Thread-201412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] client lang: <none>
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] server lang: <none>
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] kex follows: False
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] Compression: none
2025-11-25T02:37:13.386 [DEBUG] [Thread-201412] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:37:13.443 [DEBUG] [Thread-201412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:37:13.443 [DEBUG] [Thread-201412] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:37:13.443 [DEBUG] [Thread-201412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:37:13.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:37:13.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:37:13.500 [DEBUG] [Thread-201412] [transport.py] [_log()] userauth is OK
2025-11-25T02:37:13.500 [DEBUG] [Thread-201412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:37:13.500 [DEBUG] [Thread-201412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:37:13.500 [DEBUG] [Thread-201412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:37:13.500 [DEBUG] [Thread-201412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:37:13.514 [INFO] [Thread-201412] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:37:13.514 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:37:13.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:37:14.372 [DEBUG] [Thread-201412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:37:14.372 [DEBUG] [Thread-201412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:37:14.425 [DEBUG] [Thread-201412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:37:14.426 [DEBUG] [Thread-201412] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:37:14.434 [DEBUG] [Thread-201412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:37:14.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:37:14.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-11-25T02:37:14.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-11-25T02:37:14.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:37:14.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:37:14.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:37:14.469 [DEBUG] [Thread-201412] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:37:19.336 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:22.931 [DEBUG] [Thread-201414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:29.740 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:36.525 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:36.528 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:38.062 [DEBUG] [Thread-201415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:40.287 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:44.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:37:44.489 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:37:44.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-11-25T02:37:45.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 37, 28), 12.62, 41.81, 0.0, 25.9, 12.02, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:37:45.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:37:28
2025-11-25T02:37:45.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:37:46.029 [DEBUG] [Thread-201416] [transport.py] [_log()] starting thread (client mode): 0xd3149750
2025-11-25T02:37:46.030 [DEBUG] [Thread-201416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:37:46.032 [DEBUG] [Thread-201416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:37:46.032 [INFO] [Thread-201416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] client lang: <none>
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] server lang: <none>
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] kex follows: False
2025-11-25T02:37:46.036 [DEBUG] [Thread-201416] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:37:46.037 [DEBUG] [Thread-201416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:37:46.037 [DEBUG] [Thread-201416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:37:46.037 [DEBUG] [Thread-201416] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:37:46.037 [DEBUG] [Thread-201416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:37:46.037 [DEBUG] [Thread-201416] [transport.py] [_log()] Compression: none
2025-11-25T02:37:46.037 [DEBUG] [Thread-201416] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:37:46.069 [DEBUG] [Thread-201416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:37:46.074 [DEBUG] [Thread-201416] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:37:46.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:37:46.078 [DEBUG] [Thread-201416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:37:46.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:37:46.081 [DEBUG] [Thread-201416] [transport.py] [_log()] userauth is OK
2025-11-25T02:37:46.081 [DEBUG] [Thread-201416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:37:46.082 [DEBUG] [Thread-201416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:37:46.082 [DEBUG] [Thread-201416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:37:46.082 [DEBUG] [Thread-201416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:37:46.108 [INFO] [Thread-201416] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:37:46.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:37:46.776 [DEBUG] [Thread-201416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:37:46.776 [DEBUG] [Thread-201416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:37:46.786 [DEBUG] [Thread-201416] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:37:46.817 [DEBUG] [Thread-201416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:37:46.817 [DEBUG] [Thread-201416] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:37:46.819 [DEBUG] [Thread-201416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:37:46.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:37:46.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:37:46.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:37:46.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:37:46.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:37:46.841 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:37:46.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:37:46.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:37:46.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:37:46.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.026083 -999.00  +12.10  20.64     46   +1.00 1 1 1 1 1     0    0 10.72 -19.12 ZNESW 20.6 20.6 121.8 22.3 12.6 -24.8 12.4 -24.2 12.1 -23.0 12.5 -23.9
2025-11-25T02:37:46.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:37:46.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:37:46.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.026083
2025-11-25T02:37:46.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:37:46.859 [DEBUG] [Thread-201416] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:37:46.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:37:46.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:37:46.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:37:46.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:37:46.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:37:28', tmtdew=12.62, humidity=41.81, cloud=0.0, wind=25.9, temperature=12.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:37:29', seeing=0.88, atlas_timestamp='2025-11-25T00:37:33.571', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:34:00')
2025-11-25T02:37:46.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:37:46.950 [DEBUG] [Thread-201419] [transport.py] [_log()] starting thread (client mode): 0xd0786320
2025-11-25T02:37:46.950 [DEBUG] [Thread-201419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:37:46.966 [DEBUG] [Thread-201419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:37:46.966 [INFO] [Thread-201419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:37:46.974 [DEBUG] [Thread-201419] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] client lang: <none>
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] server lang: <none>
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] kex follows: False
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] Compression: none
2025-11-25T02:37:46.975 [DEBUG] [Thread-201419] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:37:47.031 [DEBUG] [Thread-201419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:37:47.031 [DEBUG] [Thread-201419] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:37:47.031 [DEBUG] [Thread-201419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:37:47.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:37:47.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:37:47.094 [DEBUG] [Thread-201419] [transport.py] [_log()] userauth is OK
2025-11-25T02:37:47.094 [DEBUG] [Thread-201419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:37:47.094 [DEBUG] [Thread-201419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:37:47.094 [DEBUG] [Thread-201419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:37:47.094 [DEBUG] [Thread-201419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:37:47.110 [INFO] [Thread-201419] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:37:47.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:37:47.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:37:47.998 [DEBUG] [Thread-201419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:37:48.007 [DEBUG] [Thread-201419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:37:48.049 [DEBUG] [Thread-201419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:37:48.049 [DEBUG] [Thread-201419] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:37:48.062 [DEBUG] [Thread-201419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:37:48.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:37:48.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-11-25T02:37:48.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-11-25T02:37:48.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:37:48.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:37:48.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:37:48.108 [DEBUG] [Thread-201419] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:37:50.703 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:53.109 [DEBUG] [Thread-201421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:37:54.482 [DEBUG] [Thread-201422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:01.133 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:08.281 [DEBUG] [Thread-201423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:11.571 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:18.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:38:18.135 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:38:18.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-11-25T02:38:19.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 38, 2), 12.62, 41.82, 0.0, 25.67, 12.07, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:38:19.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:38:02
2025-11-25T02:38:19.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:38:19.792 [DEBUG] [Thread-201424] [transport.py] [_log()] starting thread (client mode): 0xd3150670
2025-11-25T02:38:19.793 [DEBUG] [Thread-201424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:38:19.802 [DEBUG] [Thread-201424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:38:19.802 [INFO] [Thread-201424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:38:19.808 [DEBUG] [Thread-201424] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:38:19.808 [DEBUG] [Thread-201424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:38:19.808 [DEBUG] [Thread-201424] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:38:19.808 [DEBUG] [Thread-201424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:38:19.808 [DEBUG] [Thread-201424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:38:19.808 [DEBUG] [Thread-201424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:38:19.808 [DEBUG] [Thread-201424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:38:19.808 [DEBUG] [Thread-201424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:38:19.808 [DEBUG] [Thread-201424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:38:19.809 [DEBUG] [Thread-201424] [transport.py] [_log()] client lang: <none>
2025-11-25T02:38:19.809 [DEBUG] [Thread-201424] [transport.py] [_log()] server lang: <none>
2025-11-25T02:38:19.809 [DEBUG] [Thread-201424] [transport.py] [_log()] kex follows: False
2025-11-25T02:38:19.809 [DEBUG] [Thread-201424] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:38:19.809 [DEBUG] [Thread-201424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:38:19.809 [DEBUG] [Thread-201424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:38:19.810 [DEBUG] [Thread-201424] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:38:19.810 [DEBUG] [Thread-201424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:38:19.810 [DEBUG] [Thread-201424] [transport.py] [_log()] Compression: none
2025-11-25T02:38:19.810 [DEBUG] [Thread-201424] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:38:19.841 [DEBUG] [Thread-201424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:38:19.847 [DEBUG] [Thread-201424] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:38:19.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:38:19.851 [DEBUG] [Thread-201424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:38:19.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:38:19.854 [DEBUG] [Thread-201424] [transport.py] [_log()] userauth is OK
2025-11-25T02:38:19.855 [DEBUG] [Thread-201424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:38:19.855 [DEBUG] [Thread-201424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:38:19.855 [DEBUG] [Thread-201424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:38:19.855 [DEBUG] [Thread-201424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:38:19.884 [INFO] [Thread-201424] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:38:19.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:38:20.525 [DEBUG] [Thread-201424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:38:20.525 [DEBUG] [Thread-201424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:38:20.526 [DEBUG] [Thread-201424] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:38:20.565 [DEBUG] [Thread-201424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:38:20.565 [DEBUG] [Thread-201424] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:38:20.569 [DEBUG] [Thread-201424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:38:20.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:38:20.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:38:20.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:38:20.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:38:20.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:38:20.598 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:38:20.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:38:20.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:38:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:38:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.026488 -999.00  +12.10  21.90     46   +1.00 1 1 1 1 1     0    0 10.81 -18.34 ZNESW 18.8 21.9 126.6 25.4 12.6 -24.7 12.4 -24.4 12.2 -23.0 12.5 -23.9
2025-11-25T02:38:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:38:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:38:20.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.026488
2025-11-25T02:38:20.605 [DEBUG] [Thread-201424] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:38:20.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:38:20.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:38:20.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:38:20.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:38:20.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:38:20.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:38:02', tmtdew=12.62, humidity=41.82, cloud=0.0, wind=25.67, temperature=12.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:38:02', seeing=0.8, atlas_timestamp='2025-11-25T00:38:08.563', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:34:00')
2025-11-25T02:38:20.693 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:38:20.709 [DEBUG] [Thread-201427] [transport.py] [_log()] starting thread (client mode): 0xd317c280
2025-11-25T02:38:20.709 [DEBUG] [Thread-201427] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:38:20.730 [DEBUG] [Thread-201427] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:38:20.730 [INFO] [Thread-201427] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:38:20.742 [DEBUG] [Thread-201427] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:38:20.742 [DEBUG] [Thread-201427] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:38:20.742 [DEBUG] [Thread-201427] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:38:20.742 [DEBUG] [Thread-201427] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:38:20.742 [DEBUG] [Thread-201427] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:38:20.742 [DEBUG] [Thread-201427] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:38:20.742 [DEBUG] [Thread-201427] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:38:20.743 [DEBUG] [Thread-201427] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:38:20.743 [DEBUG] [Thread-201427] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:38:20.743 [DEBUG] [Thread-201427] [transport.py] [_log()] client lang: <none>
2025-11-25T02:38:20.743 [DEBUG] [Thread-201427] [transport.py] [_log()] server lang: <none>
2025-11-25T02:38:20.743 [DEBUG] [Thread-201427] [transport.py] [_log()] kex follows: False
2025-11-25T02:38:20.743 [DEBUG] [Thread-201427] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:38:20.743 [DEBUG] [Thread-201427] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:38:20.743 [DEBUG] [Thread-201427] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:38:20.744 [DEBUG] [Thread-201427] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:38:20.744 [DEBUG] [Thread-201427] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:38:20.744 [DEBUG] [Thread-201427] [transport.py] [_log()] Compression: none
2025-11-25T02:38:20.744 [DEBUG] [Thread-201427] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:38:20.802 [DEBUG] [Thread-201427] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:38:20.803 [DEBUG] [Thread-201427] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:38:20.804 [DEBUG] [Thread-201427] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:38:20.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:38:20.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:38:20.864 [DEBUG] [Thread-201427] [transport.py] [_log()] userauth is OK
2025-11-25T02:38:20.865 [DEBUG] [Thread-201427] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:38:20.865 [DEBUG] [Thread-201427] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:38:20.865 [DEBUG] [Thread-201427] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:38:20.865 [DEBUG] [Thread-201427] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:38:20.893 [INFO] [Thread-201427] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:38:20.894 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:38:20.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:38:21.757 [DEBUG] [Thread-201427] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:38:21.757 [DEBUG] [Thread-201427] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:38:21.806 [DEBUG] [Thread-201427] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:38:21.806 [DEBUG] [Thread-201427] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:38:21.814 [DEBUG] [Thread-201427] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:38:21.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:38:21.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-11-25T02:38:21.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-11-25T02:38:21.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:38:21.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:38:21.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:38:21.847 [DEBUG] [Thread-201427] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:38:22.000 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:23.361 [DEBUG] [Thread-201429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:32.441 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:36.732 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:36.733 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:38.503 [DEBUG] [Thread-201430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:42.955 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:51.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:38:51.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:38:51.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-11-25T02:38:53.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 38, 35), 12.64, 41.76, 0.0, 25.27, 11.99, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:38:53.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:38:35
2025-11-25T02:38:53.433 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:53.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:38:53.586 [DEBUG] [Thread-201431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:53.738 [DEBUG] [Thread-201432] [transport.py] [_log()] starting thread (client mode): 0xd0710ac0
2025-11-25T02:38:53.739 [DEBUG] [Thread-201432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:38:53.751 [DEBUG] [Thread-201432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:38:53.751 [INFO] [Thread-201432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:38:53.756 [DEBUG] [Thread-201432] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] client lang: <none>
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] server lang: <none>
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] kex follows: False
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:38:53.757 [DEBUG] [Thread-201432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:38:53.758 [DEBUG] [Thread-201432] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:38:53.758 [DEBUG] [Thread-201432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:38:53.758 [DEBUG] [Thread-201432] [transport.py] [_log()] Compression: none
2025-11-25T02:38:53.758 [DEBUG] [Thread-201432] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:38:53.792 [DEBUG] [Thread-201432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:38:53.797 [DEBUG] [Thread-201432] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:38:53.799 [DEBUG] [Thread-201432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:38:53.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:38:53.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:38:53.805 [DEBUG] [Thread-201432] [transport.py] [_log()] userauth is OK
2025-11-25T02:38:53.805 [DEBUG] [Thread-201432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:38:53.805 [DEBUG] [Thread-201432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:38:53.805 [DEBUG] [Thread-201432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:38:53.805 [DEBUG] [Thread-201432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:38:53.831 [INFO] [Thread-201432] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:38:53.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:38:54.401 [DEBUG] [Thread-201432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:38:54.402 [DEBUG] [Thread-201432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:38:54.404 [DEBUG] [Thread-201432] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:38:54.442 [DEBUG] [Thread-201432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:38:54.442 [DEBUG] [Thread-201432] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:38:54.446 [DEBUG] [Thread-201432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:38:54.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:38:54.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:38:54.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:38:54.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:38:54.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:38:54.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:38:54.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:38:54.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:38:54.463 [DEBUG] [Thread-201432] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:38:54.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:38:54.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.026777 -999.00  +12.00  18.76     46   +0.90 1 1 1 1 1     0    0 10.59 -19.59 ZNESW 18.8 18.8 115.2 24.2 12.6 -24.8 12.4 -24.2 12.1 -23.1 12.5 -24.0
2025-11-25T02:38:54.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:38:54.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:38:54.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.026777
2025-11-25T02:38:54.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:38:54.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:38:54.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:38:54.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:38:54.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:38:54.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:38:35', tmtdew=12.64, humidity=41.76, cloud=0.0, wind=25.27, temperature=11.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:38:35', seeing=0.75, atlas_timestamp='2025-11-25T00:38:33.533', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:34:00')
2025-11-25T02:38:54.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:38:54.581 [DEBUG] [Thread-201435] [transport.py] [_log()] starting thread (client mode): 0xc9b76890
2025-11-25T02:38:54.581 [DEBUG] [Thread-201435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:38:54.596 [DEBUG] [Thread-201435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:38:54.596 [INFO] [Thread-201435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] client lang: <none>
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] server lang: <none>
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] kex follows: False
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:38:54.604 [DEBUG] [Thread-201435] [transport.py] [_log()] Compression: none
2025-11-25T02:38:54.605 [DEBUG] [Thread-201435] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:38:54.663 [DEBUG] [Thread-201435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:38:54.664 [DEBUG] [Thread-201435] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:38:54.664 [DEBUG] [Thread-201435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:38:54.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:38:54.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:38:54.720 [DEBUG] [Thread-201435] [transport.py] [_log()] userauth is OK
2025-11-25T02:38:54.720 [DEBUG] [Thread-201435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:38:54.720 [DEBUG] [Thread-201435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:38:54.720 [DEBUG] [Thread-201435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:38:54.720 [DEBUG] [Thread-201435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:38:54.735 [INFO] [Thread-201435] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:38:54.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:38:54.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:38:54.772 [DEBUG] [Thread-201437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:38:55.597 [DEBUG] [Thread-201435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:38:55.597 [DEBUG] [Thread-201435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:38:55.644 [DEBUG] [Thread-201435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:38:55.645 [DEBUG] [Thread-201435] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:38:55.654 [DEBUG] [Thread-201435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:38:55.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:38:55.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-11-25T02:38:55.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:38:55.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:38:55.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:38:55.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:38:55.695 [DEBUG] [Thread-201435] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:39:03.897 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:08.632 [DEBUG] [Thread-201438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:14.361 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:23.757 [DEBUG] [Thread-201439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:24.820 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:25.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:39:25.718 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:39:25.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-11-25T02:39:26.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 39, 7), 12.66, 41.71, 0.0, 24.79, 12.04, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:39:26.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:39:07
2025-11-25T02:39:27.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:39:27.262 [DEBUG] [Thread-201440] [transport.py] [_log()] starting thread (client mode): 0xc9b75420
2025-11-25T02:39:27.263 [DEBUG] [Thread-201440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:39:27.273 [DEBUG] [Thread-201440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:39:27.273 [INFO] [Thread-201440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] client lang: <none>
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] server lang: <none>
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] kex follows: False
2025-11-25T02:39:27.279 [DEBUG] [Thread-201440] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:39:27.280 [DEBUG] [Thread-201440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:39:27.280 [DEBUG] [Thread-201440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:39:27.280 [DEBUG] [Thread-201440] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:39:27.280 [DEBUG] [Thread-201440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:39:27.280 [DEBUG] [Thread-201440] [transport.py] [_log()] Compression: none
2025-11-25T02:39:27.280 [DEBUG] [Thread-201440] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:39:27.314 [DEBUG] [Thread-201440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:39:27.318 [DEBUG] [Thread-201440] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:39:27.320 [DEBUG] [Thread-201440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:39:27.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:39:27.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:39:27.326 [DEBUG] [Thread-201440] [transport.py] [_log()] userauth is OK
2025-11-25T02:39:27.326 [DEBUG] [Thread-201440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:39:27.327 [DEBUG] [Thread-201440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:39:27.327 [DEBUG] [Thread-201440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:39:27.327 [DEBUG] [Thread-201440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:39:27.354 [INFO] [Thread-201440] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:39:27.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:39:27.972 [DEBUG] [Thread-201440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:39:27.972 [DEBUG] [Thread-201440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:39:27.981 [DEBUG] [Thread-201440] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:39:28.013 [DEBUG] [Thread-201440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:39:28.013 [DEBUG] [Thread-201440] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:39:28.016 [DEBUG] [Thread-201440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:39:28.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:39:28.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:39:28.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:39:28.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:39:28.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:39:28.030 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:39:28.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:39:28.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:39:28.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:39:28.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.027125 -999.00  +12.00  20.42     46   +0.90 1 1 1 1 1     0    0 10.74 -19.51 ZNESW 20.4 20.4 123.6 25.2 12.5 -24.8 12.4 -24.3 12.2 -23.1 12.4 -23.9
2025-11-25T02:39:28.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:39:28.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:39:28.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.027125
2025-11-25T02:39:28.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:39:28.048 [DEBUG] [Thread-201440] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:39:28.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:39:28.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:39:28.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:39:28.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:39:28.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:39:07', tmtdew=12.66, humidity=41.71, cloud=0.0, wind=24.79, temperature=12.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:39:08', seeing=0.81, atlas_timestamp='2025-11-25T00:39:03.600', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:34:00')
2025-11-25T02:39:28.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:39:28.137 [DEBUG] [Thread-201443] [transport.py] [_log()] starting thread (client mode): 0xc9b74ca0
2025-11-25T02:39:28.138 [DEBUG] [Thread-201443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:39:28.152 [DEBUG] [Thread-201443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:39:28.152 [INFO] [Thread-201443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:39:28.160 [DEBUG] [Thread-201443] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:39:28.160 [DEBUG] [Thread-201443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] client lang: <none>
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] server lang: <none>
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] kex follows: False
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:39:28.161 [DEBUG] [Thread-201443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:39:28.162 [DEBUG] [Thread-201443] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:39:28.162 [DEBUG] [Thread-201443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:39:28.162 [DEBUG] [Thread-201443] [transport.py] [_log()] Compression: none
2025-11-25T02:39:28.162 [DEBUG] [Thread-201443] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:39:28.221 [DEBUG] [Thread-201443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:39:28.231 [DEBUG] [Thread-201443] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:39:28.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:39:28.232 [DEBUG] [Thread-201443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:39:28.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:39:28.280 [DEBUG] [Thread-201443] [transport.py] [_log()] userauth is OK
2025-11-25T02:39:28.281 [DEBUG] [Thread-201443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:39:28.281 [DEBUG] [Thread-201443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:39:28.281 [DEBUG] [Thread-201443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:39:28.281 [DEBUG] [Thread-201443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:39:28.300 [INFO] [Thread-201443] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:39:28.301 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:39:28.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:39:29.148 [DEBUG] [Thread-201443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:39:29.149 [DEBUG] [Thread-201443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:39:29.197 [DEBUG] [Thread-201443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:39:29.198 [DEBUG] [Thread-201443] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:39:29.208 [DEBUG] [Thread-201443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:39:29.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:39:29.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:39:29.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:39:29.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:39:29.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:39:29.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:39:29.253 [DEBUG] [Thread-201443] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:39:35.357 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:36.949 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:36.950 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:38.833 [DEBUG] [Thread-201445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:45.909 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:53.933 [DEBUG] [Thread-201446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:55.012 [DEBUG] [Thread-201447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:56.350 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:39:59.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:39:59.260 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:39:59.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-11-25T02:40:00.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 39, 40), 12.63, 41.66, 0.0, 26.45, 12.05, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:40:00.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:39:40
2025-11-25T02:40:00.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:40:00.491 [DEBUG] [Thread-201448] [transport.py] [_log()] starting thread (client mode): 0xc9b808b0
2025-11-25T02:40:00.492 [DEBUG] [Thread-201448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:40:00.504 [DEBUG] [Thread-201448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:40:00.504 [INFO] [Thread-201448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:40:00.508 [DEBUG] [Thread-201448] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:40:00.508 [DEBUG] [Thread-201448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:40:00.508 [DEBUG] [Thread-201448] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] client lang: <none>
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] server lang: <none>
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] kex follows: False
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:40:00.509 [DEBUG] [Thread-201448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:40:00.510 [DEBUG] [Thread-201448] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:40:00.510 [DEBUG] [Thread-201448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:40:00.510 [DEBUG] [Thread-201448] [transport.py] [_log()] Compression: none
2025-11-25T02:40:00.510 [DEBUG] [Thread-201448] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:40:00.538 [DEBUG] [Thread-201448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:40:00.542 [DEBUG] [Thread-201448] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:40:00.544 [DEBUG] [Thread-201448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:40:00.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:40:00.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:40:00.546 [DEBUG] [Thread-201448] [transport.py] [_log()] userauth is OK
2025-11-25T02:40:00.547 [DEBUG] [Thread-201448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:40:00.547 [DEBUG] [Thread-201448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:40:00.547 [DEBUG] [Thread-201448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:40:00.547 [DEBUG] [Thread-201448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:40:00.564 [INFO] [Thread-201448] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:40:00.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:40:01.175 [DEBUG] [Thread-201448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:40:01.175 [DEBUG] [Thread-201448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:40:01.176 [DEBUG] [Thread-201448] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:40:01.216 [DEBUG] [Thread-201448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:40:01.216 [DEBUG] [Thread-201448] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:40:01.218 [DEBUG] [Thread-201448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:40:01.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:40:01.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:40:01.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:40:01.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:40:01.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:40:01.240 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:40:01.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:40:01.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:40:01.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:40:01.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.027529 -999.00  +12.00  18.70     46   +0.90 1 1 1 1 1     0    0 10.42 -19.57 ZNESW 19.1 18.7 121.8 24.8 12.5 -24.7 12.4 -24.3 12.1 -23.3 12.5 -24.0
2025-11-25T02:40:01.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:40:01.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:40:01.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.027529
2025-11-25T02:40:01.247 [DEBUG] [Thread-201448] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:40:01.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:40:01.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:40:01.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:40:01.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:40:01.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:40:01.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:39:40', tmtdew=12.63, humidity=41.66, cloud=0.0, wind=26.45, temperature=12.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:39:41', seeing=0.79, atlas_timestamp='2025-11-25T00:39:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:37:00')
2025-11-25T02:40:01.348 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:40:01.360 [DEBUG] [Thread-201451] [transport.py] [_log()] starting thread (client mode): 0xd31f61d0
2025-11-25T02:40:01.360 [DEBUG] [Thread-201451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:40:01.374 [DEBUG] [Thread-201451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:40:01.374 [INFO] [Thread-201451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:40:01.381 [DEBUG] [Thread-201451] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] client lang: <none>
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] server lang: <none>
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] kex follows: False
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] Compression: none
2025-11-25T02:40:01.382 [DEBUG] [Thread-201451] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:40:01.442 [DEBUG] [Thread-201451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:40:01.442 [DEBUG] [Thread-201451] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:40:01.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:40:01.444 [DEBUG] [Thread-201451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:40:01.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:40:01.500 [DEBUG] [Thread-201451] [transport.py] [_log()] userauth is OK
2025-11-25T02:40:01.500 [DEBUG] [Thread-201451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:40:01.500 [DEBUG] [Thread-201451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:40:01.501 [DEBUG] [Thread-201451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:40:01.501 [DEBUG] [Thread-201451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:40:01.520 [INFO] [Thread-201451] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:40:01.520 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:40:01.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:40:02.417 [DEBUG] [Thread-201451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:40:02.417 [DEBUG] [Thread-201451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:40:02.465 [DEBUG] [Thread-201451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:40:02.465 [DEBUG] [Thread-201451] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:40:02.473 [DEBUG] [Thread-201451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:40:02.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:40:02.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:40:02.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-11-25T02:40:02.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:40:02.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:40:02.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:40:02.507 [DEBUG] [Thread-201451] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:40:06.795 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:09.004 [DEBUG] [Thread-201453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:17.268 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:24.164 [DEBUG] [Thread-201454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:27.669 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:32.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:40:32.532 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:40:32.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-11-25T02:40:33.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 40, 13), 12.6, 41.72, 0.0, 27.08, 12.0, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:40:33.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:40:13
2025-11-25T02:40:34.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:40:34.237 [DEBUG] [Thread-201455] [transport.py] [_log()] starting thread (client mode): 0xc9b83d00
2025-11-25T02:40:34.238 [DEBUG] [Thread-201455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:40:34.238 [DEBUG] [Thread-201455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:40:34.239 [INFO] [Thread-201455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:40:34.243 [DEBUG] [Thread-201455] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:40:34.243 [DEBUG] [Thread-201455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:40:34.243 [DEBUG] [Thread-201455] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:40:34.243 [DEBUG] [Thread-201455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:40:34.243 [DEBUG] [Thread-201455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:40:34.243 [DEBUG] [Thread-201455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:40:34.244 [DEBUG] [Thread-201455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:40:34.244 [DEBUG] [Thread-201455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:40:34.244 [DEBUG] [Thread-201455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:40:34.244 [DEBUG] [Thread-201455] [transport.py] [_log()] client lang: <none>
2025-11-25T02:40:34.244 [DEBUG] [Thread-201455] [transport.py] [_log()] server lang: <none>
2025-11-25T02:40:34.244 [DEBUG] [Thread-201455] [transport.py] [_log()] kex follows: False
2025-11-25T02:40:34.244 [DEBUG] [Thread-201455] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:40:34.244 [DEBUG] [Thread-201455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:40:34.245 [DEBUG] [Thread-201455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:40:34.245 [DEBUG] [Thread-201455] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:40:34.245 [DEBUG] [Thread-201455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:40:34.245 [DEBUG] [Thread-201455] [transport.py] [_log()] Compression: none
2025-11-25T02:40:34.245 [DEBUG] [Thread-201455] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:40:34.283 [DEBUG] [Thread-201455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:40:34.288 [DEBUG] [Thread-201455] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:40:34.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:40:34.292 [DEBUG] [Thread-201455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:40:34.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:40:34.296 [DEBUG] [Thread-201455] [transport.py] [_log()] userauth is OK
2025-11-25T02:40:34.296 [DEBUG] [Thread-201455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:40:34.296 [DEBUG] [Thread-201455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:40:34.297 [DEBUG] [Thread-201455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:40:34.297 [DEBUG] [Thread-201455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:40:34.336 [INFO] [Thread-201455] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:40:34.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:40:34.952 [DEBUG] [Thread-201455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:40:34.952 [DEBUG] [Thread-201455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:40:34.953 [DEBUG] [Thread-201455] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:40:34.993 [DEBUG] [Thread-201455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:40:34.993 [DEBUG] [Thread-201455] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:40:34.995 [DEBUG] [Thread-201455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:40:35.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:40:35.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:40:35.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:40:35.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:40:35.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:40:35.017 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:40:35.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:40:35.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:40:35.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:40:35.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.027529 -999.00  +12.00  18.70     46   +0.90 1 1 1 1 1     0    0 10.42 -19.57 ZNESW 19.1 18.7 121.8 24.8 12.5 -24.7 12.4 -24.3 12.1 -23.3 12.5 -24.0
2025-11-25T02:40:35.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:40:35.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:40:35.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.027529
2025-11-25T02:40:35.024 [DEBUG] [Thread-201455] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:40:35.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:40:35.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:40:35.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:40:35.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:40:35.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:40:35.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:40:13', tmtdew=12.6, humidity=41.72, cloud=0.0, wind=27.08, temperature=12.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:40:14', seeing=0.86, atlas_timestamp='2025-11-25T00:39:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:37:00')
2025-11-25T02:40:35.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:40:35.122 [DEBUG] [Thread-201458] [transport.py] [_log()] starting thread (client mode): 0xc9b820b0
2025-11-25T02:40:35.122 [DEBUG] [Thread-201458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:40:35.137 [DEBUG] [Thread-201458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:40:35.137 [INFO] [Thread-201458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] client lang: <none>
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] server lang: <none>
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] kex follows: False
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:40:35.144 [DEBUG] [Thread-201458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:40:35.145 [DEBUG] [Thread-201458] [transport.py] [_log()] Compression: none
2025-11-25T02:40:35.145 [DEBUG] [Thread-201458] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:40:35.207 [DEBUG] [Thread-201458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:40:35.207 [DEBUG] [Thread-201458] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:40:35.207 [DEBUG] [Thread-201458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:40:35.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:40:35.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:40:35.264 [DEBUG] [Thread-201458] [transport.py] [_log()] userauth is OK
2025-11-25T02:40:35.264 [DEBUG] [Thread-201458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:40:35.264 [DEBUG] [Thread-201458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:40:35.264 [DEBUG] [Thread-201458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:40:35.264 [DEBUG] [Thread-201458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:40:35.278 [INFO] [Thread-201458] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:40:35.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:40:35.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:40:36.128 [DEBUG] [Thread-201458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:40:36.128 [DEBUG] [Thread-201458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:40:36.176 [DEBUG] [Thread-201458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:40:36.176 [DEBUG] [Thread-201458] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:40:36.184 [DEBUG] [Thread-201458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:40:36.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:40: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')
2025-11-25T02:40:36.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-11-25T02:40:36.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:40:36.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:40:36.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:40:36.218 [DEBUG] [Thread-201458] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:40:37.151 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:37.152 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:38.215 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:39.258 [DEBUG] [Thread-201460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:48.638 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:54.402 [DEBUG] [Thread-201461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:55.331 [DEBUG] [Thread-201462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:40:59.352 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:06.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:41:06.251 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:41:06.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-11-25T02:41:07.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 40, 46), 12.58, 41.77, 0.0, 22.21, 11.9, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:41:07.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:40:46
2025-11-25T02:41:07.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:41:07.836 [DEBUG] [Thread-201463] [transport.py] [_log()] starting thread (client mode): 0xd317c6d0
2025-11-25T02:41:07.837 [DEBUG] [Thread-201463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:41:07.845 [DEBUG] [Thread-201463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:41:07.845 [INFO] [Thread-201463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] client lang: <none>
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] server lang: <none>
2025-11-25T02:41:07.851 [DEBUG] [Thread-201463] [transport.py] [_log()] kex follows: False
2025-11-25T02:41:07.852 [DEBUG] [Thread-201463] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:41:07.852 [DEBUG] [Thread-201463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:41:07.852 [DEBUG] [Thread-201463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:41:07.852 [DEBUG] [Thread-201463] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:41:07.853 [DEBUG] [Thread-201463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:41:07.853 [DEBUG] [Thread-201463] [transport.py] [_log()] Compression: none
2025-11-25T02:41:07.853 [DEBUG] [Thread-201463] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:41:07.881 [DEBUG] [Thread-201463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:41:07.883 [DEBUG] [Thread-201463] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:41:07.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:41:07.886 [DEBUG] [Thread-201463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:41:07.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:41:07.889 [DEBUG] [Thread-201463] [transport.py] [_log()] userauth is OK
2025-11-25T02:41:07.889 [DEBUG] [Thread-201463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:41:07.889 [DEBUG] [Thread-201463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:41:07.889 [DEBUG] [Thread-201463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:41:07.889 [DEBUG] [Thread-201463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:41:07.905 [INFO] [Thread-201463] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:41:07.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:41:08.694 [DEBUG] [Thread-201463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:41:08.694 [DEBUG] [Thread-201463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:41:08.695 [DEBUG] [Thread-201463] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:41:08.726 [DEBUG] [Thread-201463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:41:08.726 [DEBUG] [Thread-201463] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:41:08.729 [DEBUG] [Thread-201463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:41:08.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:41:08.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:41:08.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:41:08.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:41:08.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:41:08.751 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:41:08.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:41:08.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:41:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:41:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.027819 -999.00  +12.00  24.96     46   +0.90 1 1 1 1 1     0    0 10.52 -21.56 ZNESW 25.0 25.0 122.2 29.6 12.5 -24.6 12.4 -24.1 12.2 -23.0 12.4 -24.0
2025-11-25T02:41:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:41:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:41:08.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.027819
2025-11-25T02:41:08.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:41:08.768 [DEBUG] [Thread-201463] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:41:08.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:41:08.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:41:08.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:41:08.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:41:08.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:40:46', tmtdew=12.58, humidity=41.77, cloud=0.0, wind=22.21, temperature=11.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:40:47', seeing=0.86, atlas_timestamp='2025-11-25T00:40:03.562', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:37:00')
2025-11-25T02:41:08.845 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:41:08.857 [DEBUG] [Thread-201466] [transport.py] [_log()] starting thread (client mode): 0xd317ca90
2025-11-25T02:41:08.857 [DEBUG] [Thread-201466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:41:08.872 [DEBUG] [Thread-201466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:41:08.872 [INFO] [Thread-201466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] client lang: <none>
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] server lang: <none>
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] kex follows: False
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] Compression: none
2025-11-25T02:41:08.880 [DEBUG] [Thread-201466] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:41:08.934 [DEBUG] [Thread-201466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:41:08.934 [DEBUG] [Thread-201466] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:41:08.934 [DEBUG] [Thread-201466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:41:08.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:41:08.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:41:08.992 [DEBUG] [Thread-201466] [transport.py] [_log()] userauth is OK
2025-11-25T02:41:08.992 [DEBUG] [Thread-201466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:41:08.992 [DEBUG] [Thread-201466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:41:08.992 [DEBUG] [Thread-201466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:41:08.992 [DEBUG] [Thread-201466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:41:09.007 [INFO] [Thread-201466] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:41:09.007 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:41:09.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:41:09.498 [DEBUG] [Thread-201468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:09.792 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:09.872 [DEBUG] [Thread-201466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:41:09.872 [DEBUG] [Thread-201466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:41:09.920 [DEBUG] [Thread-201466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:41:09.920 [DEBUG] [Thread-201466] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:41:09.928 [DEBUG] [Thread-201466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:41:09.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:41: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-11-25T02:41:09.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-11-25T02:41:09.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:41:09.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:41:09.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:41:09.963 [DEBUG] [Thread-201466] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:41:20.268 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:24.646 [DEBUG] [Thread-201469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:30.879 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:37.367 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:37.369 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:39.750 [DEBUG] [Thread-201470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:39.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:41:39.995 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:41:40.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-11-25T02:41:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 41, 20), 12.56, 41.84, 0.0, 23.22, 11.9, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:41:41.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:41:20
2025-11-25T02:41:41.331 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:41.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:41:41.523 [DEBUG] [Thread-201471] [transport.py] [_log()] starting thread (client mode): 0xd317dd80
2025-11-25T02:41:41.524 [DEBUG] [Thread-201471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:41:41.537 [DEBUG] [Thread-201471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:41:41.537 [INFO] [Thread-201471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] client lang: <none>
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] server lang: <none>
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] kex follows: False
2025-11-25T02:41:41.542 [DEBUG] [Thread-201471] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:41:41.543 [DEBUG] [Thread-201471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:41:41.543 [DEBUG] [Thread-201471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:41:41.543 [DEBUG] [Thread-201471] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:41:41.543 [DEBUG] [Thread-201471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:41:41.543 [DEBUG] [Thread-201471] [transport.py] [_log()] Compression: none
2025-11-25T02:41:41.543 [DEBUG] [Thread-201471] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:41:41.573 [DEBUG] [Thread-201471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:41:41.577 [DEBUG] [Thread-201471] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:41:41.578 [DEBUG] [Thread-201471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:41:41.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:41:41.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:41:41.581 [DEBUG] [Thread-201471] [transport.py] [_log()] userauth is OK
2025-11-25T02:41:41.582 [DEBUG] [Thread-201471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:41:41.582 [DEBUG] [Thread-201471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:41:41.582 [DEBUG] [Thread-201471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:41:41.582 [DEBUG] [Thread-201471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:41:41.602 [INFO] [Thread-201471] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:41:41.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:41:42.230 [DEBUG] [Thread-201471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:41:42.230 [DEBUG] [Thread-201471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:41:42.231 [DEBUG] [Thread-201471] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:41:42.271 [DEBUG] [Thread-201471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:41:42.271 [DEBUG] [Thread-201471] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:41:42.274 [DEBUG] [Thread-201471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:41:42.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:41:42.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:41:42.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:41:42.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:41:42.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:41:42.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:41:42.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:41:42.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:41:42.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:41:42.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.028513 -999.00  +12.00  15.31     46   +0.90 1 1 1 1 1     0    0 10.67 -20.26 ZNESW 15.3 15.3 121.6 22.2 12.6 -24.5 12.4 -24.1 12.2 -23.0 12.4 -23.8
2025-11-25T02:41:42.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:41:42.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:41:42.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.028513
2025-11-25T02:41:42.301 [DEBUG] [Thread-201471] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:41:42.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:41:42.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:41:42.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:41:42.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:41:42.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:41:42.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:41:20', tmtdew=12.56, humidity=41.84, cloud=0.0, wind=23.22, temperature=11.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:41:20', seeing=0.93, atlas_timestamp='2025-11-25T00:41:03.523', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:37:00')
2025-11-25T02:41:42.387 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:41:42.401 [DEBUG] [Thread-201474] [transport.py] [_log()] starting thread (client mode): 0xd317f7f0
2025-11-25T02:41:42.401 [DEBUG] [Thread-201474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:41:42.420 [DEBUG] [Thread-201474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:41:42.420 [INFO] [Thread-201474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:41:42.428 [DEBUG] [Thread-201474] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:41:42.428 [DEBUG] [Thread-201474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] client lang: <none>
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] server lang: <none>
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] kex follows: False
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:41:42.429 [DEBUG] [Thread-201474] [transport.py] [_log()] Compression: none
2025-11-25T02:41:42.430 [DEBUG] [Thread-201474] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:41:42.489 [DEBUG] [Thread-201474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:41:42.489 [DEBUG] [Thread-201474] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:41:42.490 [DEBUG] [Thread-201474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:41:42.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:41:42.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:41:42.545 [DEBUG] [Thread-201474] [transport.py] [_log()] userauth is OK
2025-11-25T02:41:42.545 [DEBUG] [Thread-201474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:41:42.545 [DEBUG] [Thread-201474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:41:42.545 [DEBUG] [Thread-201474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:41:42.545 [DEBUG] [Thread-201474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:41:42.564 [INFO] [Thread-201474] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:41:42.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:41:42.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:41:43.411 [DEBUG] [Thread-201474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:41:43.411 [DEBUG] [Thread-201474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:41:43.459 [DEBUG] [Thread-201474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:41:43.459 [DEBUG] [Thread-201474] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:41:43.467 [DEBUG] [Thread-201474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:41:43.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:41:43.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-11-25T02:41:43.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-11-25T02:41:43.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:41:43.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:41:43.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:41:43.501 [DEBUG] [Thread-201474] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:41:51.834 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:54.792 [DEBUG] [Thread-201476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:41:55.582 [DEBUG] [Thread-201477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:02.258 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:09.901 [DEBUG] [Thread-201478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:12.673 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:13.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:42:13.502 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:42:13.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:42:14.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 41, 52), 12.49, 41.89, 0.0, 21.63, 11.89, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:42:14.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:41:52
2025-11-25T02:42:15.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:42:15.295 [DEBUG] [Thread-201479] [transport.py] [_log()] starting thread (client mode): 0xd314b820
2025-11-25T02:42:15.296 [DEBUG] [Thread-201479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:42:15.308 [DEBUG] [Thread-201479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:42:15.308 [INFO] [Thread-201479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:42:15.314 [DEBUG] [Thread-201479] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] client lang: <none>
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] server lang: <none>
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] kex follows: False
2025-11-25T02:42:15.315 [DEBUG] [Thread-201479] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:42:15.316 [DEBUG] [Thread-201479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:42:15.317 [DEBUG] [Thread-201479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:42:15.317 [DEBUG] [Thread-201479] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:42:15.317 [DEBUG] [Thread-201479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:42:15.317 [DEBUG] [Thread-201479] [transport.py] [_log()] Compression: none
2025-11-25T02:42:15.317 [DEBUG] [Thread-201479] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:42:15.354 [DEBUG] [Thread-201479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:42:15.360 [DEBUG] [Thread-201479] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:42:15.362 [DEBUG] [Thread-201479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:42:15.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:42:15.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:42:15.368 [DEBUG] [Thread-201479] [transport.py] [_log()] userauth is OK
2025-11-25T02:42:15.368 [DEBUG] [Thread-201479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:42:15.369 [DEBUG] [Thread-201479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:42:15.369 [DEBUG] [Thread-201479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:42:15.369 [DEBUG] [Thread-201479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:42:15.395 [INFO] [Thread-201479] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:42:15.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:42:16.195 [DEBUG] [Thread-201479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:42:16.195 [DEBUG] [Thread-201479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:42:16.197 [DEBUG] [Thread-201479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:42:16.236 [DEBUG] [Thread-201479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:42:16.237 [DEBUG] [Thread-201479] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:42:16.240 [DEBUG] [Thread-201479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:42:16.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:42:16.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:42:16.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:42:16.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:42:16.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:42:16.268 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:42:16.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:42:16.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:42:16.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:42:16.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.028861 -999.00  +12.00  17.34     46   +0.90 1 1 1 1 1     0    0 10.70 -18.62 ZNESW 17.3 17.3 123.8 23.4 12.5 -24.6 12.4 -24.1 12.1 -23.0 12.4 -23.7
2025-11-25T02:42:16.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:42:16.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:42:16.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.028861
2025-11-25T02:42:16.276 [DEBUG] [Thread-201479] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:42:16.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:42:16.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:42:16.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:42:16.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:42:16.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:42:16.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:41:52', tmtdew=12.49, humidity=41.89, cloud=0.0, wind=21.63, temperature=11.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:41:53', seeing=0.93, atlas_timestamp='2025-11-25T00:41:33.590', atlas_cloud=1, atlas_rain=1, zp_data=[-0.030250000000000554, -0.036749999999999616, -0.003750000000000142, -0.04550000000000054, -0.03849999999999909, 0.02725000000000044, -0.023999999999999133, -0.005250000000000199, 0.0034999999999989484, -0.019999999999999574, -0.02725000000000044, -0.028999999999999915, 0.06099999999999994, 0.06724999999999959, -0.04749999999999943, -0.017000000000001236, 0.00024999999999941735, -0.0039999999999995595, -0.04049999999999976, -0.025750000000000384, 0.08299999999999841, 0.08274999999999899, 0.034250000000000114, -0.0022500000000000853, 0.010499999999998622, 0.020500000000000185, 0.014749999999999375, -0.005499999999999616, 0.10749999999999993, 0.07900000000000063, 0.05349999999999966, 0.018000000000000682, 0.0012499999999988631], zp_timestamp='2025-11-25T00:37:00')
2025-11-25T02:42:16.378 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:42:16.390 [DEBUG] [Thread-201482] [transport.py] [_log()] starting thread (client mode): 0xd314b910
2025-11-25T02:42:16.390 [DEBUG] [Thread-201482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:42:16.405 [DEBUG] [Thread-201482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:42:16.405 [INFO] [Thread-201482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] client lang: <none>
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] server lang: <none>
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] kex follows: False
2025-11-25T02:42:16.412 [DEBUG] [Thread-201482] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:42:16.413 [DEBUG] [Thread-201482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:42:16.413 [DEBUG] [Thread-201482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:42:16.413 [DEBUG] [Thread-201482] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:42:16.413 [DEBUG] [Thread-201482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:42:16.413 [DEBUG] [Thread-201482] [transport.py] [_log()] Compression: none
2025-11-25T02:42:16.413 [DEBUG] [Thread-201482] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:42:16.471 [DEBUG] [Thread-201482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:42:16.471 [DEBUG] [Thread-201482] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:42:16.471 [DEBUG] [Thread-201482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:42:16.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:42:16.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:42:16.528 [DEBUG] [Thread-201482] [transport.py] [_log()] userauth is OK
2025-11-25T02:42:16.528 [DEBUG] [Thread-201482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:42:16.528 [DEBUG] [Thread-201482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:42:16.528 [DEBUG] [Thread-201482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:42:16.528 [DEBUG] [Thread-201482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:42:16.541 [INFO] [Thread-201482] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:42:16.542 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:42:16.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:42:17.413 [DEBUG] [Thread-201482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:42:17.413 [DEBUG] [Thread-201482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:42:17.462 [DEBUG] [Thread-201482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:42:17.462 [DEBUG] [Thread-201482] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:42:17.471 [DEBUG] [Thread-201482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:42:17.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:42:17.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-11-25T02:42:17.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-11-25T02:42:17.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:42:17.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:42:17.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:42:17.519 [DEBUG] [Thread-201482] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:42:23.077 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:24.946 [DEBUG] [Thread-201484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:33.525 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:37.594 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:37.596 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:40.093 [DEBUG] [Thread-201485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:43.959 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:47.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:42:47.536 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:42:47.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-11-25T02:42:48.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 42, 25), 12.49, 41.91, 0.0, 20.93, 11.89, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:42:48.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:42:25
2025-11-25T02:42:48.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:42:48.764 [DEBUG] [Thread-201486] [transport.py] [_log()] starting thread (client mode): 0xd317f2b0
2025-11-25T02:42:48.765 [DEBUG] [Thread-201486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:42:48.769 [DEBUG] [Thread-201486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:42:48.769 [INFO] [Thread-201486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:42:48.774 [DEBUG] [Thread-201486] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] client lang: <none>
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] server lang: <none>
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] kex follows: False
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:42:48.775 [DEBUG] [Thread-201486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:42:48.776 [DEBUG] [Thread-201486] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:42:48.776 [DEBUG] [Thread-201486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:42:48.776 [DEBUG] [Thread-201486] [transport.py] [_log()] Compression: none
2025-11-25T02:42:48.776 [DEBUG] [Thread-201486] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:42:48.806 [DEBUG] [Thread-201486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:42:48.809 [DEBUG] [Thread-201486] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:42:48.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:42:48.812 [DEBUG] [Thread-201486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:42:48.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:42:48.815 [DEBUG] [Thread-201486] [transport.py] [_log()] userauth is OK
2025-11-25T02:42:48.815 [DEBUG] [Thread-201486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:42:48.815 [DEBUG] [Thread-201486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:42:48.815 [DEBUG] [Thread-201486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:42:48.815 [DEBUG] [Thread-201486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:42:48.834 [INFO] [Thread-201486] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:42:48.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:42:49.492 [DEBUG] [Thread-201486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:42:49.492 [DEBUG] [Thread-201486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:42:49.493 [DEBUG] [Thread-201486] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:42:49.533 [DEBUG] [Thread-201486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:42:49.534 [DEBUG] [Thread-201486] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:42:49.538 [DEBUG] [Thread-201486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:42:49.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:42:49.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:42:49.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:42:49.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:42:49.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:42:49.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:42:49.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:42:49.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:42:49.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:42:49.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.029265 -999.00  +12.00  18.34     46   +1.00 1 1 1 1 1     0    0 10.69 -19.08 ZNESW 20.2 18.3 123.6 24.2 12.5 -24.6 12.4 -24.1 12.1 -23.0 12.4 -23.8
2025-11-25T02:42:49.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:42:49.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:42:49.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.029265
2025-11-25T02:42:49.576 [DEBUG] [Thread-201486] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:42:49.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:42:49.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:42:49.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:42:49.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:42:49.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:42:49.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:42:25', tmtdew=12.49, humidity=41.91, cloud=0.0, wind=20.93, temperature=11.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:42:26', seeing=0.97, atlas_timestamp='2025-11-25T00:42:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.036249999999999005, 0.0012500000000006395, -0.03850000000000087, 0.010500000000000398, 0.0012500000000006395, -0.017000000000001236, -0.029249999999999332, -0.031500000000001194, -0.024499999999999744, -0.004749999999999588, -0.02400000000000091, 0.07249999999999979, 0.030249999999998778, -0.02200000000000024, -0.011000000000001009, 0.013249999999999318, -0.011499999999999844, -0.02400000000000091, -0.01675000000000182, 0.08299999999999841, 0.07174999999999798, 0.04525000000000112, 0.003750000000000142, 0.007499999999998508, 0.04349999999999987, 0.010749999999999815, 0.017000000000001236, 0.12549999999999883, 0.06700000000000017, 0.036000000000001364, -0.0009999999999994458, -0.011750000000001037], zp_timestamp='2025-11-25T00:41:00')
2025-11-25T02:42:49.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:42:49.701 [DEBUG] [Thread-201489] [transport.py] [_log()] starting thread (client mode): 0xd317d690
2025-11-25T02:42:49.702 [DEBUG] [Thread-201489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:42:49.715 [DEBUG] [Thread-201489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:42:49.715 [INFO] [Thread-201489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:42:49.723 [DEBUG] [Thread-201489] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:42:49.723 [DEBUG] [Thread-201489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:42:49.723 [DEBUG] [Thread-201489] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:42:49.724 [DEBUG] [Thread-201489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:42:49.724 [DEBUG] [Thread-201489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:42:49.724 [DEBUG] [Thread-201489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:42:49.724 [DEBUG] [Thread-201489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:42:49.724 [DEBUG] [Thread-201489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:42:49.724 [DEBUG] [Thread-201489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:42:49.724 [DEBUG] [Thread-201489] [transport.py] [_log()] client lang: <none>
2025-11-25T02:42:49.724 [DEBUG] [Thread-201489] [transport.py] [_log()] server lang: <none>
2025-11-25T02:42:49.724 [DEBUG] [Thread-201489] [transport.py] [_log()] kex follows: False
2025-11-25T02:42:49.725 [DEBUG] [Thread-201489] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:42:49.725 [DEBUG] [Thread-201489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:42:49.725 [DEBUG] [Thread-201489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:42:49.725 [DEBUG] [Thread-201489] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:42:49.726 [DEBUG] [Thread-201489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:42:49.726 [DEBUG] [Thread-201489] [transport.py] [_log()] Compression: none
2025-11-25T02:42:49.726 [DEBUG] [Thread-201489] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:42:49.781 [DEBUG] [Thread-201489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:42:49.782 [DEBUG] [Thread-201489] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:42:49.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:42:49.783 [DEBUG] [Thread-201489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:42:49.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:42:49.836 [DEBUG] [Thread-201489] [transport.py] [_log()] userauth is OK
2025-11-25T02:42:49.836 [DEBUG] [Thread-201489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:42:49.837 [DEBUG] [Thread-201489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:42:49.837 [DEBUG] [Thread-201489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:42:49.837 [DEBUG] [Thread-201489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:42:49.858 [INFO] [Thread-201489] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:42:49.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:42:49.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:42:50.693 [DEBUG] [Thread-201489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:42:50.694 [DEBUG] [Thread-201489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:42:50.744 [DEBUG] [Thread-201489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:42:50.744 [DEBUG] [Thread-201489] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:42:50.752 [DEBUG] [Thread-201489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:42:50.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:42:50.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-11-25T02:42:50.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:42:50.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:42:50.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:42:50.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:42:50.788 [DEBUG] [Thread-201489] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:42:54.401 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:55.188 [DEBUG] [Thread-201491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:42:55.901 [DEBUG] [Thread-201492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:04.809 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:10.295 [DEBUG] [Thread-201493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:15.233 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:20.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:43:20.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:43:20.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-11-25T02:43:21.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 42, 58), 12.5, 41.86, 0.0, 21.74, 11.84, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:43:21.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:42:58
2025-11-25T02:43:21.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:43:22.108 [DEBUG] [Thread-201494] [transport.py] [_log()] starting thread (client mode): 0xd31f58d0
2025-11-25T02:43:22.109 [DEBUG] [Thread-201494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:43:22.110 [DEBUG] [Thread-201494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:43:22.110 [INFO] [Thread-201494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] client lang: <none>
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] server lang: <none>
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] kex follows: False
2025-11-25T02:43:22.115 [DEBUG] [Thread-201494] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:43:22.116 [DEBUG] [Thread-201494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:43:22.116 [DEBUG] [Thread-201494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:43:22.116 [DEBUG] [Thread-201494] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:43:22.116 [DEBUG] [Thread-201494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:43:22.116 [DEBUG] [Thread-201494] [transport.py] [_log()] Compression: none
2025-11-25T02:43:22.116 [DEBUG] [Thread-201494] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:43:22.146 [DEBUG] [Thread-201494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:43:22.149 [DEBUG] [Thread-201494] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:43:22.151 [DEBUG] [Thread-201494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:43:22.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:43:22.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:43:22.154 [DEBUG] [Thread-201494] [transport.py] [_log()] userauth is OK
2025-11-25T02:43:22.154 [DEBUG] [Thread-201494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:43:22.154 [DEBUG] [Thread-201494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:43:22.155 [DEBUG] [Thread-201494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:43:22.155 [DEBUG] [Thread-201494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:43:22.173 [INFO] [Thread-201494] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:43:22.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:43:23.012 [DEBUG] [Thread-201494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:43:23.012 [DEBUG] [Thread-201494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:43:23.012 [DEBUG] [Thread-201494] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:43:23.053 [DEBUG] [Thread-201494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:43:23.053 [DEBUG] [Thread-201494] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:43:23.056 [DEBUG] [Thread-201494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:43:23.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:43:23.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:43:23.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:43:23.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:43:23.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:43:23.079 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:43:23.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:43:23.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:43:23.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:43:23.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.029612 -999.00  +12.00  19.83     46   +1.00 1 1 1 1 1     0    0 10.72 -19.31 ZNESW 19.3 19.8 122.0 23.3 12.5 -24.6 12.4 -24.0 12.1 -22.8 12.4 -23.8
2025-11-25T02:43:23.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:43:23.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:43:23.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.029612
2025-11-25T02:43:23.091 [DEBUG] [Thread-201494] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:43:23.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:43:23.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:43:23.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:43:23.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:43:23.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:43:23.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:42:58', tmtdew=12.5, humidity=41.86, cloud=0.0, wind=21.74, temperature=11.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:42:59', seeing=0.9, atlas_timestamp='2025-11-25T00:42:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.036249999999999005, 0.0012500000000006395, -0.03850000000000087, 0.010500000000000398, 0.0012500000000006395, -0.017000000000001236, -0.029249999999999332, -0.031500000000001194, -0.024499999999999744, -0.004749999999999588, -0.02400000000000091, 0.07249999999999979, 0.030249999999998778, -0.02200000000000024, -0.011000000000001009, 0.013249999999999318, -0.011499999999999844, -0.02400000000000091, -0.01675000000000182, 0.08299999999999841, 0.07174999999999798, 0.04525000000000112, 0.003750000000000142, 0.007499999999998508, 0.04349999999999987, 0.010749999999999815, 0.017000000000001236, 0.12549999999999883, 0.06700000000000017, 0.036000000000001364, -0.0009999999999994458, -0.011750000000001037], zp_timestamp='2025-11-25T00:41:00')
2025-11-25T02:43:23.178 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:43:23.190 [DEBUG] [Thread-201497] [transport.py] [_log()] starting thread (client mode): 0xd31f52a0
2025-11-25T02:43:23.190 [DEBUG] [Thread-201497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:43:23.203 [DEBUG] [Thread-201497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:43:23.204 [INFO] [Thread-201497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] client lang: <none>
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] server lang: <none>
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] kex follows: False
2025-11-25T02:43:23.211 [DEBUG] [Thread-201497] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:43:23.212 [DEBUG] [Thread-201497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:43:23.212 [DEBUG] [Thread-201497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:43:23.212 [DEBUG] [Thread-201497] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:43:23.212 [DEBUG] [Thread-201497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:43:23.212 [DEBUG] [Thread-201497] [transport.py] [_log()] Compression: none
2025-11-25T02:43:23.212 [DEBUG] [Thread-201497] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:43:23.267 [DEBUG] [Thread-201497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:43:23.267 [DEBUG] [Thread-201497] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:43:23.268 [DEBUG] [Thread-201497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:43:23.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:43:23.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:43:23.324 [DEBUG] [Thread-201497] [transport.py] [_log()] userauth is OK
2025-11-25T02:43:23.324 [DEBUG] [Thread-201497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:43:23.324 [DEBUG] [Thread-201497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:43:23.324 [DEBUG] [Thread-201497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:43:23.324 [DEBUG] [Thread-201497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:43:23.339 [INFO] [Thread-201497] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:43:23.339 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:43:23.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:43:24.175 [DEBUG] [Thread-201497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:43:24.175 [DEBUG] [Thread-201497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:43:24.223 [DEBUG] [Thread-201497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:43:24.223 [DEBUG] [Thread-201497] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:43:24.233 [DEBUG] [Thread-201497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:43:24.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:43:24.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-11-25T02:43:24.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-11-25T02:43:24.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:43:24.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:43:24.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:43:24.269 [DEBUG] [Thread-201497] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:43:25.355 [DEBUG] [Thread-201499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:25.650 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:36.214 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:37.797 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:37.798 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:40.500 [DEBUG] [Thread-201500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:46.722 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:54.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:43:54.303 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:43:54.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-11-25T02:43:55.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 43, 31), 12.48, 41.92, 0.0, 21.21, 11.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:43:55.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:43:31
2025-11-25T02:43:55.551 [DEBUG] [Thread-201501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:55.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:43:55.761 [DEBUG] [Thread-201502] [transport.py] [_log()] starting thread (client mode): 0xd317c0d0
2025-11-25T02:43:55.761 [DEBUG] [Thread-201502] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:43:55.774 [DEBUG] [Thread-201502] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:43:55.775 [INFO] [Thread-201502] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:43:55.781 [DEBUG] [Thread-201502] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] client lang: <none>
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] server lang: <none>
2025-11-25T02:43:55.782 [DEBUG] [Thread-201502] [transport.py] [_log()] kex follows: False
2025-11-25T02:43:55.783 [DEBUG] [Thread-201502] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:43:55.783 [DEBUG] [Thread-201502] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:43:55.784 [DEBUG] [Thread-201502] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:43:55.784 [DEBUG] [Thread-201502] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:43:55.784 [DEBUG] [Thread-201502] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:43:55.784 [DEBUG] [Thread-201502] [transport.py] [_log()] Compression: none
2025-11-25T02:43:55.784 [DEBUG] [Thread-201502] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:43:55.821 [DEBUG] [Thread-201502] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:43:55.826 [DEBUG] [Thread-201502] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:43:55.828 [DEBUG] [Thread-201502] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:43:55.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:43:55.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:43:55.834 [DEBUG] [Thread-201502] [transport.py] [_log()] userauth is OK
2025-11-25T02:43:55.834 [DEBUG] [Thread-201502] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:43:55.835 [DEBUG] [Thread-201502] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:43:55.835 [DEBUG] [Thread-201502] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:43:55.835 [DEBUG] [Thread-201502] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:43:55.860 [INFO] [Thread-201502] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:43:55.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:43:56.219 [DEBUG] [Thread-201504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:56.481 [DEBUG] [Thread-201502] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:43:56.482 [DEBUG] [Thread-201502] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:43:56.484 [DEBUG] [Thread-201502] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:43:56.523 [DEBUG] [Thread-201502] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:43:56.523 [DEBUG] [Thread-201502] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:43:56.526 [DEBUG] [Thread-201502] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:43:56.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:43:56.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:43:56.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:43:56.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:43:56.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:43:56.551 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:43:56.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:43:56.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:43:56.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:43:56.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.029902 -999.00  +12.00  15.71     46   +1.00 1 1 1 1 1     0    0 10.79 -19.64 ZNESW 15.7 15.7 122.2 21.6 12.6 -24.6 12.3 -24.0 12.1 -22.9 12.4 -23.7
2025-11-25T02:43:56.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:43:56.554 [DEBUG] [Thread-201502] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:43:56.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:43:56.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.029902
2025-11-25T02:43:56.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:43:56.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:43:56.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:43:56.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:43:56.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:43:56.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:43:31', tmtdew=12.48, humidity=41.92, cloud=0.0, wind=21.21, temperature=11.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:43:32', seeing=0.87, atlas_timestamp='2025-11-25T00:43:03.533', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.036249999999999005, 0.0012500000000006395, -0.03850000000000087, 0.010500000000000398, 0.0012500000000006395, -0.017000000000001236, -0.029249999999999332, -0.031500000000001194, -0.024499999999999744, -0.004749999999999588, -0.02400000000000091, 0.07249999999999979, 0.030249999999998778, -0.02200000000000024, -0.011000000000001009, 0.013249999999999318, -0.011499999999999844, -0.02400000000000091, -0.01675000000000182, 0.08299999999999841, 0.07174999999999798, 0.04525000000000112, 0.003750000000000142, 0.007499999999998508, 0.04349999999999987, 0.010749999999999815, 0.017000000000001236, 0.12549999999999883, 0.06700000000000017, 0.036000000000001364, -0.0009999999999994458, -0.011750000000001037], zp_timestamp='2025-11-25T00:41:00')
2025-11-25T02:43:56.658 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:43:56.670 [DEBUG] [Thread-201506] [transport.py] [_log()] starting thread (client mode): 0xd31f5ba0
2025-11-25T02:43:56.670 [DEBUG] [Thread-201506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:43:56.685 [DEBUG] [Thread-201506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:43:56.685 [INFO] [Thread-201506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:43:56.693 [DEBUG] [Thread-201506] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:43:56.693 [DEBUG] [Thread-201506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:43:56.693 [DEBUG] [Thread-201506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:43:56.694 [DEBUG] [Thread-201506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:43:56.694 [DEBUG] [Thread-201506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:43:56.694 [DEBUG] [Thread-201506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:43:56.694 [DEBUG] [Thread-201506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:43:56.694 [DEBUG] [Thread-201506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:43:56.694 [DEBUG] [Thread-201506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:43:56.694 [DEBUG] [Thread-201506] [transport.py] [_log()] client lang: <none>
2025-11-25T02:43:56.694 [DEBUG] [Thread-201506] [transport.py] [_log()] server lang: <none>
2025-11-25T02:43:56.694 [DEBUG] [Thread-201506] [transport.py] [_log()] kex follows: False
2025-11-25T02:43:56.694 [DEBUG] [Thread-201506] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:43:56.695 [DEBUG] [Thread-201506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:43:56.695 [DEBUG] [Thread-201506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:43:56.695 [DEBUG] [Thread-201506] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:43:56.695 [DEBUG] [Thread-201506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:43:56.695 [DEBUG] [Thread-201506] [transport.py] [_log()] Compression: none
2025-11-25T02:43:56.695 [DEBUG] [Thread-201506] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:43:56.757 [DEBUG] [Thread-201506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:43:56.757 [DEBUG] [Thread-201506] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:43:56.758 [DEBUG] [Thread-201506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:43:56.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:43:56.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:43:56.813 [DEBUG] [Thread-201506] [transport.py] [_log()] userauth is OK
2025-11-25T02:43:56.813 [DEBUG] [Thread-201506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:43:56.813 [DEBUG] [Thread-201506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:43:56.813 [DEBUG] [Thread-201506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:43:56.813 [DEBUG] [Thread-201506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:43:56.832 [INFO] [Thread-201506] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:43:56.833 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:43:56.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:43:57.224 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:43:57.673 [DEBUG] [Thread-201506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:43:57.673 [DEBUG] [Thread-201506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:43:57.721 [DEBUG] [Thread-201506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:43:57.721 [DEBUG] [Thread-201506] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:43:57.729 [DEBUG] [Thread-201506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:43:57.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:43:57.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-11-25T02:43:57.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:43:57.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:43:57.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:43:57.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:43:57.764 [DEBUG] [Thread-201506] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:44:07.742 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:10.623 [DEBUG] [Thread-201508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:18.246 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:25.784 [DEBUG] [Thread-201509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:27.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:44:27.783 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:44:27.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-11-25T02:44:28.786 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:29.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 44, 4), 12.45, 42.01, 0.0, 20.73, 11.84, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:44:29.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:44:04
2025-11-25T02:44:29.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:44:29.540 [DEBUG] [Thread-201510] [transport.py] [_log()] starting thread (client mode): 0xd314a770
2025-11-25T02:44:29.541 [DEBUG] [Thread-201510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:44:29.549 [DEBUG] [Thread-201510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:44:29.549 [INFO] [Thread-201510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:44:29.556 [DEBUG] [Thread-201510] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:44:29.556 [DEBUG] [Thread-201510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:44:29.556 [DEBUG] [Thread-201510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:44:29.556 [DEBUG] [Thread-201510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:44:29.556 [DEBUG] [Thread-201510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:44:29.556 [DEBUG] [Thread-201510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:44:29.556 [DEBUG] [Thread-201510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:44:29.557 [DEBUG] [Thread-201510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:44:29.557 [DEBUG] [Thread-201510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:44:29.557 [DEBUG] [Thread-201510] [transport.py] [_log()] client lang: <none>
2025-11-25T02:44:29.557 [DEBUG] [Thread-201510] [transport.py] [_log()] server lang: <none>
2025-11-25T02:44:29.557 [DEBUG] [Thread-201510] [transport.py] [_log()] kex follows: False
2025-11-25T02:44:29.557 [DEBUG] [Thread-201510] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:44:29.557 [DEBUG] [Thread-201510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:44:29.557 [DEBUG] [Thread-201510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:44:29.558 [DEBUG] [Thread-201510] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:44:29.558 [DEBUG] [Thread-201510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:44:29.558 [DEBUG] [Thread-201510] [transport.py] [_log()] Compression: none
2025-11-25T02:44:29.558 [DEBUG] [Thread-201510] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:44:29.595 [DEBUG] [Thread-201510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:44:29.601 [DEBUG] [Thread-201510] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:44:29.603 [DEBUG] [Thread-201510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:44:29.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:44:29.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:44:29.610 [DEBUG] [Thread-201510] [transport.py] [_log()] userauth is OK
2025-11-25T02:44:29.610 [DEBUG] [Thread-201510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:44:29.611 [DEBUG] [Thread-201510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:44:29.611 [DEBUG] [Thread-201510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:44:29.611 [DEBUG] [Thread-201510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:44:29.649 [INFO] [Thread-201510] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:44:29.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:44:30.437 [DEBUG] [Thread-201510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:44:30.437 [DEBUG] [Thread-201510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:44:30.438 [DEBUG] [Thread-201510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:44:30.478 [DEBUG] [Thread-201510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:44:30.478 [DEBUG] [Thread-201510] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:44:30.481 [DEBUG] [Thread-201510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:44:30.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:44:30.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:44:30.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:44:30.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:44:30.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:44:30.510 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:44:30.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:44:30.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:44:30.515 [DEBUG] [Thread-201510] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:44:30.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:44:30.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.030249 -999.00  +12.00  15.11     46   +0.90 1 1 1 1 1     0    0 10.62 -19.07 ZNESW 15.1 15.1 116.4 22.8 12.5 -24.6 12.4 -24.0 12.1 -23.0 12.4 -23.8
2025-11-25T02:44:30.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:44:30.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:44:30.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.030249
2025-11-25T02:44:30.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:44:30.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:44:30.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:44:30.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:44:30.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:44:30.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:44:04', tmtdew=12.45, humidity=42.01, cloud=0.0, wind=20.73, temperature=11.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:44:05', seeing=0.87, atlas_timestamp='2025-11-25T00:43:33.514', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.036249999999999005, 0.0012500000000006395, -0.03850000000000087, 0.010500000000000398, 0.0012500000000006395, -0.017000000000001236, -0.029249999999999332, -0.031500000000001194, -0.024499999999999744, -0.004749999999999588, -0.02400000000000091, 0.07249999999999979, 0.030249999999998778, -0.02200000000000024, -0.011000000000001009, 0.013249999999999318, -0.011499999999999844, -0.02400000000000091, -0.01675000000000182, 0.08299999999999841, 0.07174999999999798, 0.04525000000000112, 0.003750000000000142, 0.007499999999998508, 0.04349999999999987, 0.010749999999999815, 0.017000000000001236, 0.12549999999999883, 0.06700000000000017, 0.036000000000001364, -0.0009999999999994458, -0.011750000000001037], zp_timestamp='2025-11-25T00:41:00')
2025-11-25T02:44:30.625 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:44:30.639 [DEBUG] [Thread-201513] [transport.py] [_log()] starting thread (client mode): 0xc9b818d0
2025-11-25T02:44:30.639 [DEBUG] [Thread-201513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:44:30.653 [DEBUG] [Thread-201513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:44:30.654 [INFO] [Thread-201513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:44:30.661 [DEBUG] [Thread-201513] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:44:30.661 [DEBUG] [Thread-201513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] client lang: <none>
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] server lang: <none>
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] kex follows: False
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:44:30.662 [DEBUG] [Thread-201513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:44:30.663 [DEBUG] [Thread-201513] [transport.py] [_log()] Compression: none
2025-11-25T02:44:30.663 [DEBUG] [Thread-201513] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:44:30.722 [DEBUG] [Thread-201513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:44:30.723 [DEBUG] [Thread-201513] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:44:30.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:44:30.724 [DEBUG] [Thread-201513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:44:30.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:44:30.785 [DEBUG] [Thread-201513] [transport.py] [_log()] userauth is OK
2025-11-25T02:44:30.785 [DEBUG] [Thread-201513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:44:30.785 [DEBUG] [Thread-201513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:44:30.785 [DEBUG] [Thread-201513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:44:30.785 [DEBUG] [Thread-201513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:44:30.805 [INFO] [Thread-201513] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:44:30.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:44:30.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:44:31.658 [DEBUG] [Thread-201513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:44:31.658 [DEBUG] [Thread-201513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:44:31.707 [DEBUG] [Thread-201513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:44:31.707 [DEBUG] [Thread-201513] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:44:31.716 [DEBUG] [Thread-201513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:44:31.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:44:31.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-11-25T02:44:31.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-11-25T02:44:31.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:44:31.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:44:31.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:44:31.757 [DEBUG] [Thread-201513] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:44:38.009 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:38.011 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:39.300 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:40.850 [DEBUG] [Thread-201515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:49.882 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:56.026 [DEBUG] [Thread-201516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:44:56.556 [DEBUG] [Thread-201517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:00.408 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:01.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:45:01.783 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:45:01.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-11-25T02:45:03.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 44, 37), 12.44, 42.04, 0.0, 22.51, 11.87, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:45:03.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:44:37
2025-11-25T02:45:04.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:45:04.320 [DEBUG] [Thread-201518] [transport.py] [_log()] starting thread (client mode): 0xd3149ba0
2025-11-25T02:45:04.321 [DEBUG] [Thread-201518] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:45:04.328 [DEBUG] [Thread-201518] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:45:04.329 [INFO] [Thread-201518] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] client lang: <none>
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] server lang: <none>
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] kex follows: False
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:45:04.337 [DEBUG] [Thread-201518] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:45:04.338 [DEBUG] [Thread-201518] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:45:04.338 [DEBUG] [Thread-201518] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:45:04.338 [DEBUG] [Thread-201518] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:45:04.338 [DEBUG] [Thread-201518] [transport.py] [_log()] Compression: none
2025-11-25T02:45:04.338 [DEBUG] [Thread-201518] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:45:04.444 [DEBUG] [Thread-201518] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:45:04.448 [DEBUG] [Thread-201518] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:45:04.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:45:04.451 [DEBUG] [Thread-201518] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:45:04.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:45:04.454 [DEBUG] [Thread-201518] [transport.py] [_log()] userauth is OK
2025-11-25T02:45:04.454 [DEBUG] [Thread-201518] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:45:04.454 [DEBUG] [Thread-201518] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:45:04.454 [DEBUG] [Thread-201518] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:45:04.454 [DEBUG] [Thread-201518] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:45:04.473 [INFO] [Thread-201518] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:45:04.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:45:07.261 [DEBUG] [Thread-201518] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:45:07.261 [DEBUG] [Thread-201518] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:45:07.262 [DEBUG] [Thread-201518] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:45:07.302 [DEBUG] [Thread-201518] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:45:07.302 [DEBUG] [Thread-201518] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:45:07.305 [DEBUG] [Thread-201518] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:45:07.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:45:07.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:45:07.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:45:07.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:45:07.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:45:07.393 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:45:07.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:45:07.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:45:07.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:45:07.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.030944 -999.00  +12.00  15.16     46   +1.00 1 1 1 1 1     0    0 10.59 -19.29 ZNESW 15.2 15.2 123.0 20.4 12.5 -24.5 12.3 -24.0 12.1 -22.9 12.4 -23.6
2025-11-25T02:45:07.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:45:07.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:45:07.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.030944
2025-11-25T02:45:07.400 [DEBUG] [Thread-201518] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:45:07.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:45:07.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:45:07.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:45:07.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:45:07.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:45:07.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:44:37', tmtdew=12.44, humidity=42.04, cloud=0.0, wind=22.51, temperature=11.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:44:38', seeing=0.8, atlas_timestamp='2025-11-25T00:44:33.562', atlas_cloud=1, atlas_rain=1, zp_data=[-0.025249999999999773, -0.036249999999999005, 0.0012500000000006395, -0.03850000000000087, 0.010500000000000398, 0.0012500000000006395, -0.017000000000001236, -0.029249999999999332, -0.031500000000001194, -0.024499999999999744, -0.004749999999999588, -0.02400000000000091, 0.07249999999999979, 0.030249999999998778, -0.02200000000000024, -0.011000000000001009, 0.013249999999999318, -0.011499999999999844, -0.02400000000000091, -0.01675000000000182, 0.08299999999999841, 0.07174999999999798, 0.04525000000000112, 0.003750000000000142, 0.007499999999998508, 0.04349999999999987, 0.010749999999999815, 0.017000000000001236, 0.12549999999999883, 0.06700000000000017, 0.036000000000001364, -0.0009999999999994458, -0.011750000000001037], zp_timestamp='2025-11-25T00:41:00')
2025-11-25T02:45:07.490 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:45:07.502 [DEBUG] [Thread-201521] [transport.py] [_log()] starting thread (client mode): 0xd07389a0
2025-11-25T02:45:07.502 [DEBUG] [Thread-201521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:45:07.517 [DEBUG] [Thread-201521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:45:07.517 [INFO] [Thread-201521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] client lang: <none>
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] server lang: <none>
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] kex follows: False
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:45:07.525 [DEBUG] [Thread-201521] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:45:07.526 [DEBUG] [Thread-201521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:45:07.526 [DEBUG] [Thread-201521] [transport.py] [_log()] Compression: none
2025-11-25T02:45:07.526 [DEBUG] [Thread-201521] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:45:07.585 [DEBUG] [Thread-201521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:45:07.585 [DEBUG] [Thread-201521] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:45:07.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:45:07.587 [DEBUG] [Thread-201521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:45:07.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:45:07.645 [DEBUG] [Thread-201521] [transport.py] [_log()] userauth is OK
2025-11-25T02:45:07.645 [DEBUG] [Thread-201521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:45:07.646 [DEBUG] [Thread-201521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:45:07.646 [DEBUG] [Thread-201521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:45:07.646 [DEBUG] [Thread-201521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:45:07.668 [INFO] [Thread-201521] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:45:07.669 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:45:07.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:45:08.514 [DEBUG] [Thread-201521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:45:08.514 [DEBUG] [Thread-201521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:45:08.562 [DEBUG] [Thread-201521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:45:08.563 [DEBUG] [Thread-201521] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:45:08.572 [DEBUG] [Thread-201521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:45:08.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:45:08.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-11-25T02:45:08.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-11-25T02:45:08.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:45:08.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:45:08.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:45:08.607 [DEBUG] [Thread-201521] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:45:10.849 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:11.110 [DEBUG] [Thread-201523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:21.344 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:26.235 [DEBUG] [Thread-201524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:31.780 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:38.217 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:38.219 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:38.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:45:38.616 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:45:38.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-11-25T02:45:39.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 45, 10), 12.46, 41.97, 0.0, 22.11, 11.87, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:45:39.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:45:10
2025-11-25T02:45:40.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:45:40.347 [DEBUG] [Thread-201525] [transport.py] [_log()] starting thread (client mode): 0xd07849a0
2025-11-25T02:45:40.349 [DEBUG] [Thread-201525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:45:40.355 [DEBUG] [Thread-201525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:45:40.355 [INFO] [Thread-201525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:45:40.360 [DEBUG] [Thread-201525] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] client lang: <none>
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] server lang: <none>
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] kex follows: False
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:45:40.361 [DEBUG] [Thread-201525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:45:40.362 [DEBUG] [Thread-201525] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:45:40.362 [DEBUG] [Thread-201525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:45:40.362 [DEBUG] [Thread-201525] [transport.py] [_log()] Compression: none
2025-11-25T02:45:40.362 [DEBUG] [Thread-201525] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:45:40.392 [DEBUG] [Thread-201525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:45:40.396 [DEBUG] [Thread-201525] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:45:40.397 [DEBUG] [Thread-201525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:45:40.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:45:40.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:45:40.401 [DEBUG] [Thread-201525] [transport.py] [_log()] userauth is OK
2025-11-25T02:45:40.401 [DEBUG] [Thread-201525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:45:40.401 [DEBUG] [Thread-201525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:45:40.401 [DEBUG] [Thread-201525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:45:40.401 [DEBUG] [Thread-201525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:45:40.419 [INFO] [Thread-201525] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:45:40.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:45:41.051 [DEBUG] [Thread-201525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:45:41.052 [DEBUG] [Thread-201525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:45:41.053 [DEBUG] [Thread-201525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:45:41.093 [DEBUG] [Thread-201525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:45:41.093 [DEBUG] [Thread-201525] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:45:41.097 [DEBUG] [Thread-201525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:45:41.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:45:41.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:45:41.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:45:41.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:45:41.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:45:41.123 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:45:41.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:45:41.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:45:41.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:45:41.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.031291 -999.00  +12.00  17.06     46   +0.90 1 1 1 1 1     0    0 10.58 -18.47 ZNESW 17.1 17.1 118.6 19.8 12.5 -24.4 12.3 -23.9 12.1 -22.9 12.4 -23.7
2025-11-25T02:45:41.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:45:41.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:45:41.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.031291
2025-11-25T02:45:41.132 [DEBUG] [Thread-201525] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:45:41.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:45:41.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:45:41.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:45:41.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:45:41.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:45:41.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:45:10', tmtdew=12.46, humidity=41.97, cloud=0.0, wind=22.11, temperature=11.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:45:10', seeing=0.76, atlas_timestamp='2025-11-25T00:45:03.542', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:43:00')
2025-11-25T02:45:41.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:45:41.254 [DEBUG] [Thread-201528] [transport.py] [_log()] starting thread (client mode): 0xd317d900
2025-11-25T02:45:41.254 [DEBUG] [Thread-201528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:45:41.272 [DEBUG] [Thread-201528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:45:41.272 [INFO] [Thread-201528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:45:41.282 [DEBUG] [Thread-201528] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:45:41.283 [DEBUG] [Thread-201528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:45:41.283 [DEBUG] [Thread-201528] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:45:41.283 [DEBUG] [Thread-201528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:45:41.283 [DEBUG] [Thread-201528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:45:41.283 [DEBUG] [Thread-201528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:45:41.283 [DEBUG] [Thread-201528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:45:41.283 [DEBUG] [Thread-201528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:45:41.283 [DEBUG] [Thread-201528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:45:41.283 [DEBUG] [Thread-201528] [transport.py] [_log()] client lang: <none>
2025-11-25T02:45:41.284 [DEBUG] [Thread-201528] [transport.py] [_log()] server lang: <none>
2025-11-25T02:45:41.284 [DEBUG] [Thread-201528] [transport.py] [_log()] kex follows: False
2025-11-25T02:45:41.284 [DEBUG] [Thread-201528] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:45:41.284 [DEBUG] [Thread-201528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:45:41.284 [DEBUG] [Thread-201528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:45:41.284 [DEBUG] [Thread-201528] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:45:41.284 [DEBUG] [Thread-201528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:45:41.284 [DEBUG] [Thread-201528] [transport.py] [_log()] Compression: none
2025-11-25T02:45:41.285 [DEBUG] [Thread-201528] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:45:41.331 [DEBUG] [Thread-201530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:41.339 [DEBUG] [Thread-201528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:45:41.339 [DEBUG] [Thread-201528] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:45:41.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:45:41.340 [DEBUG] [Thread-201528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:45:41.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:45:41.396 [DEBUG] [Thread-201528] [transport.py] [_log()] userauth is OK
2025-11-25T02:45:41.396 [DEBUG] [Thread-201528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:45:41.396 [DEBUG] [Thread-201528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:45:41.396 [DEBUG] [Thread-201528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:45:41.396 [DEBUG] [Thread-201528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:45:41.410 [INFO] [Thread-201528] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:45:41.410 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:45:41.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:45:42.221 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:42.292 [DEBUG] [Thread-201528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:45:42.292 [DEBUG] [Thread-201528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:45:42.341 [DEBUG] [Thread-201528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:45:42.341 [DEBUG] [Thread-201528] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:45:42.350 [DEBUG] [Thread-201528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:45:42.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:45:42.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-11-25T02:45:42.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-11-25T02:45:42.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:45:42.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:45:42.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:45:42.390 [DEBUG] [Thread-201528] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:45:52.753 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:56.508 [DEBUG] [Thread-201531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:45:56.857 [DEBUG] [Thread-201532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:03.190 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:11.679 [DEBUG] [Thread-201533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:12.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:46:12.414 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:46: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-11-25T02:46:13.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 45, 43), 12.52, 41.96, 0.0, 22.41, 11.87, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:46:13.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:45:43
2025-11-25T02:46:13.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:46:13.663 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:13.716 [DEBUG] [Thread-201534] [transport.py] [_log()] starting thread (client mode): 0xd3151cf0
2025-11-25T02:46:13.717 [DEBUG] [Thread-201534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:46:13.729 [DEBUG] [Thread-201534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:46:13.729 [INFO] [Thread-201534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:46:13.734 [DEBUG] [Thread-201534] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:46:13.734 [DEBUG] [Thread-201534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] client lang: <none>
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] server lang: <none>
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] kex follows: False
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:46:13.735 [DEBUG] [Thread-201534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:46:13.736 [DEBUG] [Thread-201534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:46:13.736 [DEBUG] [Thread-201534] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:46:13.736 [DEBUG] [Thread-201534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:46:13.736 [DEBUG] [Thread-201534] [transport.py] [_log()] Compression: none
2025-11-25T02:46:13.736 [DEBUG] [Thread-201534] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:46:13.769 [DEBUG] [Thread-201534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:46:13.772 [DEBUG] [Thread-201534] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:46:13.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:46:13.775 [DEBUG] [Thread-201534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:46:13.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:46:13.777 [DEBUG] [Thread-201534] [transport.py] [_log()] userauth is OK
2025-11-25T02:46:13.778 [DEBUG] [Thread-201534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:46:13.778 [DEBUG] [Thread-201534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:46:13.778 [DEBUG] [Thread-201534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:46:13.778 [DEBUG] [Thread-201534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:46:13.795 [INFO] [Thread-201534] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:46:13.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:46:14.419 [DEBUG] [Thread-201534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:46:14.419 [DEBUG] [Thread-201534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:46:14.421 [DEBUG] [Thread-201534] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:46:14.460 [DEBUG] [Thread-201534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:46:14.460 [DEBUG] [Thread-201534] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:46:14.464 [DEBUG] [Thread-201534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:46:14.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:46:14.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:46:14.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:46:14.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:46:14.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:46:14.491 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:46:14.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:46:14.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:46:14.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:46:14.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.031638 -999.00  +11.90  16.81     46   +0.90 1 1 1 1 1     0    0 10.39 -17.12 ZNESW 16.8 16.8 121.4 21.1 12.5 -24.4 12.4 -23.9 12.0 -22.7 12.4 -23.8
2025-11-25T02:46:14.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:46:14.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:46:14.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.031638
2025-11-25T02:46:14.504 [DEBUG] [Thread-201534] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:46:14.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:46:14.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:46:14.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:46:14.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:46:14.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:46:14.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:45:43', tmtdew=12.52, humidity=41.96, cloud=0.0, wind=22.41, temperature=11.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:45:44', seeing=0.76, atlas_timestamp='2025-11-25T00:45:33.523', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:43:00')
2025-11-25T02:46:14.588 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:46:14.599 [DEBUG] [Thread-201537] [transport.py] [_log()] starting thread (client mode): 0xd3152650
2025-11-25T02:46:14.600 [DEBUG] [Thread-201537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:46:14.614 [DEBUG] [Thread-201537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:46:14.614 [INFO] [Thread-201537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] client lang: <none>
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] server lang: <none>
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] kex follows: False
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] Compression: none
2025-11-25T02:46:14.622 [DEBUG] [Thread-201537] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:46:14.681 [DEBUG] [Thread-201537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:46:14.681 [DEBUG] [Thread-201537] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:46:14.682 [DEBUG] [Thread-201537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:46:14.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:46:14.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:46:14.740 [DEBUG] [Thread-201537] [transport.py] [_log()] userauth is OK
2025-11-25T02:46:14.740 [DEBUG] [Thread-201537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:46:14.740 [DEBUG] [Thread-201537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:46:14.740 [DEBUG] [Thread-201537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:46:14.740 [DEBUG] [Thread-201537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:46:14.756 [INFO] [Thread-201537] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:46:14.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:46:14.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:46:15.576 [DEBUG] [Thread-201537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:46:15.576 [DEBUG] [Thread-201537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:46:15.625 [DEBUG] [Thread-201537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:46:15.625 [DEBUG] [Thread-201537] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:46:15.634 [DEBUG] [Thread-201537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:46:15.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:46:15.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-11-25T02:46:15.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-11-25T02:46:15.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:46:15.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:46:15.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:46:15.674 [DEBUG] [Thread-201537] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:46:24.075 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:26.844 [DEBUG] [Thread-201539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:34.590 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:38.432 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:38.434 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:41.962 [DEBUG] [Thread-201540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:45.026 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:45.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:46:45.708 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:46:45.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-11-25T02:46:47.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 46, 16), 12.51, 41.99, 0.0, 21.44, 11.87, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:46:47.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:46:16
2025-11-25T02:46:47.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:46:47.405 [DEBUG] [Thread-201541] [transport.py] [_log()] starting thread (client mode): 0xc9b83d30
2025-11-25T02:46:47.406 [DEBUG] [Thread-201541] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:46:47.417 [DEBUG] [Thread-201541] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:46:47.417 [INFO] [Thread-201541] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] client lang: <none>
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] server lang: <none>
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] kex follows: False
2025-11-25T02:46:47.422 [DEBUG] [Thread-201541] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:46:47.423 [DEBUG] [Thread-201541] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:46:47.423 [DEBUG] [Thread-201541] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:46:47.423 [DEBUG] [Thread-201541] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:46:47.423 [DEBUG] [Thread-201541] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:46:47.423 [DEBUG] [Thread-201541] [transport.py] [_log()] Compression: none
2025-11-25T02:46:47.423 [DEBUG] [Thread-201541] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:46:47.454 [DEBUG] [Thread-201541] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:46:47.458 [DEBUG] [Thread-201541] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:46:47.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:46:47.461 [DEBUG] [Thread-201541] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:46:47.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:46:47.463 [DEBUG] [Thread-201541] [transport.py] [_log()] userauth is OK
2025-11-25T02:46:47.463 [DEBUG] [Thread-201541] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:46:47.463 [DEBUG] [Thread-201541] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:46:47.463 [DEBUG] [Thread-201541] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:46:47.464 [DEBUG] [Thread-201541] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:46:47.483 [INFO] [Thread-201541] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:46:47.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:46:48.097 [DEBUG] [Thread-201541] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:46:48.097 [DEBUG] [Thread-201541] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:46:48.098 [DEBUG] [Thread-201541] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:46:48.138 [DEBUG] [Thread-201541] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:46:48.138 [DEBUG] [Thread-201541] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:46:48.141 [DEBUG] [Thread-201541] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:46:48.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:46:48.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:46:48.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:46:48.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:46:48.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:46:48.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:46:48.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:46:48.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:46:48.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:46:48.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.031985 -999.00  +11.90  18.89     47   +1.00 1 1 1 1 1     0    0 10.85 -16.11 ZNESW 18.9 18.9 115.4 23.0 12.5 -24.4 12.3 -23.9 12.1 -22.8 12.4 -23.6
2025-11-25T02:46:48.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:46:48.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:46:48.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.031985
2025-11-25T02:46:48.170 [DEBUG] [Thread-201541] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:46:48.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:46:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:46:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:46:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:46:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:46:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:46:16', tmtdew=12.51, humidity=41.99, cloud=0.0, wind=21.44, temperature=11.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:46:17', seeing=0.86, atlas_timestamp='2025-11-25T00:46:03.504', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:43:00')
2025-11-25T02:46:48.259 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:46:48.270 [DEBUG] [Thread-201544] [transport.py] [_log()] starting thread (client mode): 0xd314b850
2025-11-25T02:46:48.270 [DEBUG] [Thread-201544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:46:48.285 [DEBUG] [Thread-201544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:46:48.285 [INFO] [Thread-201544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] client lang: <none>
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] server lang: <none>
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] kex follows: False
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:46:48.292 [DEBUG] [Thread-201544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:46:48.293 [DEBUG] [Thread-201544] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:46:48.293 [DEBUG] [Thread-201544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:46:48.293 [DEBUG] [Thread-201544] [transport.py] [_log()] Compression: none
2025-11-25T02:46:48.293 [DEBUG] [Thread-201544] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:46:48.351 [DEBUG] [Thread-201544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:46:48.351 [DEBUG] [Thread-201544] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:46:48.351 [DEBUG] [Thread-201544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:46:48.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:46:48.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:46:48.408 [DEBUG] [Thread-201544] [transport.py] [_log()] userauth is OK
2025-11-25T02:46:48.409 [DEBUG] [Thread-201544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:46:48.409 [DEBUG] [Thread-201544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:46:48.409 [DEBUG] [Thread-201544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:46:48.409 [DEBUG] [Thread-201544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:46:48.423 [INFO] [Thread-201544] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:46:48.423 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:46:48.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:46:49.267 [DEBUG] [Thread-201544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:46:49.267 [DEBUG] [Thread-201544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:46:49.315 [DEBUG] [Thread-201544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:46:49.315 [DEBUG] [Thread-201544] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:46:49.323 [DEBUG] [Thread-201544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:46:49.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:46:49.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-11-25T02:46:49.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-11-25T02:46:49.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:46:49.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:46:49.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:46:49.359 [DEBUG] [Thread-201544] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:46:55.456 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:57.037 [DEBUG] [Thread-201546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:46:57.177 [DEBUG] [Thread-201547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:05.908 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:12.178 [DEBUG] [Thread-201548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:16.375 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:19.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:47:19.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:47:19.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-11-25T02:47:20.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 46, 49), 12.45, 42.01, 0.0, 22.8, 11.75, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:47:20.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:46:49
2025-11-25T02:47:20.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:47:21.133 [DEBUG] [Thread-201549] [transport.py] [_log()] starting thread (client mode): 0xd073a770
2025-11-25T02:47:21.134 [DEBUG] [Thread-201549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:47:21.144 [DEBUG] [Thread-201549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:47:21.145 [INFO] [Thread-201549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:47:21.151 [DEBUG] [Thread-201549] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:47:21.151 [DEBUG] [Thread-201549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:47:21.151 [DEBUG] [Thread-201549] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:47:21.151 [DEBUG] [Thread-201549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:47:21.151 [DEBUG] [Thread-201549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:47:21.152 [DEBUG] [Thread-201549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:47:21.152 [DEBUG] [Thread-201549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:47:21.152 [DEBUG] [Thread-201549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:47:21.152 [DEBUG] [Thread-201549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:47:21.152 [DEBUG] [Thread-201549] [transport.py] [_log()] client lang: <none>
2025-11-25T02:47:21.152 [DEBUG] [Thread-201549] [transport.py] [_log()] server lang: <none>
2025-11-25T02:47:21.152 [DEBUG] [Thread-201549] [transport.py] [_log()] kex follows: False
2025-11-25T02:47:21.152 [DEBUG] [Thread-201549] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:47:21.153 [DEBUG] [Thread-201549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:47:21.153 [DEBUG] [Thread-201549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:47:21.153 [DEBUG] [Thread-201549] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:47:21.153 [DEBUG] [Thread-201549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:47:21.153 [DEBUG] [Thread-201549] [transport.py] [_log()] Compression: none
2025-11-25T02:47:21.153 [DEBUG] [Thread-201549] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:47:21.181 [DEBUG] [Thread-201549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:47:21.185 [DEBUG] [Thread-201549] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:47:21.186 [DEBUG] [Thread-201549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:47:21.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:47:21.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:47:21.191 [DEBUG] [Thread-201549] [transport.py] [_log()] userauth is OK
2025-11-25T02:47:21.191 [DEBUG] [Thread-201549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:47:21.191 [DEBUG] [Thread-201549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:47:21.191 [DEBUG] [Thread-201549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:47:21.192 [DEBUG] [Thread-201549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:47:21.217 [INFO] [Thread-201549] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:47:21.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:47:22.005 [DEBUG] [Thread-201549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:47:22.005 [DEBUG] [Thread-201549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:47:22.007 [DEBUG] [Thread-201549] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:47:22.045 [DEBUG] [Thread-201549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:47:22.045 [DEBUG] [Thread-201549] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:47:22.048 [DEBUG] [Thread-201549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:47:22.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:47:22.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:47:22.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:47:22.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:47:22.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:47:22.070 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:47:22.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:47:22.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:47:22.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:47:22.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.032333 -999.00  +11.90  20.33     47   +1.00 1 1 1 1 1     0    0 10.34 -18.29 ZNESW 20.3 20.3 122.6 23.4 12.5 -24.3 12.3 -23.9 12.1 -22.7 12.4 -23.5
2025-11-25T02:47:22.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:47:22.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:47:22.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.032333
2025-11-25T02:47:22.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:47:22.089 [DEBUG] [Thread-201549] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:47:22.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:47:22.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:47:22.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:47:22.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:47:22.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:46:49', tmtdew=12.45, humidity=42.01, cloud=0.0, wind=22.8, temperature=11.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:46:50', seeing=0.73, atlas_timestamp='2025-11-25T00:46:33.571', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:43:00')
2025-11-25T02:47:22.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:47:22.180 [DEBUG] [Thread-201552] [transport.py] [_log()] starting thread (client mode): 0xd31f54e0
2025-11-25T02:47:22.180 [DEBUG] [Thread-201552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:47:22.193 [DEBUG] [Thread-201552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:47:22.193 [INFO] [Thread-201552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:47:22.201 [DEBUG] [Thread-201552] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:47:22.201 [DEBUG] [Thread-201552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:47:22.201 [DEBUG] [Thread-201552] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] client lang: <none>
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] server lang: <none>
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] kex follows: False
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] Compression: none
2025-11-25T02:47:22.202 [DEBUG] [Thread-201552] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:47:22.262 [DEBUG] [Thread-201552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:47:22.262 [DEBUG] [Thread-201552] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:47:22.263 [DEBUG] [Thread-201552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:47:22.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:47:22.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:47:22.321 [DEBUG] [Thread-201552] [transport.py] [_log()] userauth is OK
2025-11-25T02:47:22.321 [DEBUG] [Thread-201552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:47:22.321 [DEBUG] [Thread-201552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:47:22.321 [DEBUG] [Thread-201552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:47:22.321 [DEBUG] [Thread-201552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:47:22.339 [INFO] [Thread-201552] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:47: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-11-25T02:47:22.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:47:23.157 [DEBUG] [Thread-201552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:47:23.157 [DEBUG] [Thread-201552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:47:23.205 [DEBUG] [Thread-201552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:47:23.205 [DEBUG] [Thread-201552] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:47:23.213 [DEBUG] [Thread-201552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:47:23.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:47:23.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-11-25T02:47:23.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-11-25T02:47:23.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:47:23.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:47:23.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:47:23.247 [DEBUG] [Thread-201552] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:47:26.807 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:27.240 [DEBUG] [Thread-201554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:37.234 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:38.645 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:38.647 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:42.375 [DEBUG] [Thread-201555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:47.702 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:53.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:47:53.271 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:47:53.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-11-25T02:47:54.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 47, 22), 12.43, 42.09, 0.0, 22.69, 11.82, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:47:54.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:47:22
2025-11-25T02:47:54.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:47:55.054 [DEBUG] [Thread-201556] [transport.py] [_log()] starting thread (client mode): 0xd0784700
2025-11-25T02:47:55.056 [DEBUG] [Thread-201556] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:47:55.064 [DEBUG] [Thread-201556] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:47:55.065 [INFO] [Thread-201556] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:47:55.070 [DEBUG] [Thread-201556] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] client lang: <none>
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] server lang: <none>
2025-11-25T02:47:55.071 [DEBUG] [Thread-201556] [transport.py] [_log()] kex follows: False
2025-11-25T02:47:55.072 [DEBUG] [Thread-201556] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:47:55.072 [DEBUG] [Thread-201556] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:47:55.072 [DEBUG] [Thread-201556] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:47:55.073 [DEBUG] [Thread-201556] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:47:55.073 [DEBUG] [Thread-201556] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:47:55.073 [DEBUG] [Thread-201556] [transport.py] [_log()] Compression: none
2025-11-25T02:47:55.073 [DEBUG] [Thread-201556] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:47:55.108 [DEBUG] [Thread-201556] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:47:55.112 [DEBUG] [Thread-201556] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:47:55.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:47:55.115 [DEBUG] [Thread-201556] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:47:55.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:47:55.117 [DEBUG] [Thread-201556] [transport.py] [_log()] userauth is OK
2025-11-25T02:47:55.117 [DEBUG] [Thread-201556] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:47:55.118 [DEBUG] [Thread-201556] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:47:55.118 [DEBUG] [Thread-201556] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:47:55.118 [DEBUG] [Thread-201556] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:47:55.145 [INFO] [Thread-201556] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:47:55.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:47:55.784 [DEBUG] [Thread-201556] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:47:55.785 [DEBUG] [Thread-201556] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:47:55.785 [DEBUG] [Thread-201556] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:47:55.825 [DEBUG] [Thread-201556] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:47:55.825 [DEBUG] [Thread-201556] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:47:55.827 [DEBUG] [Thread-201556] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:47:55.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:47:55.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:47:55.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:47:55.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:47:55.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:47:55.849 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:47:55.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:47:55.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:47:55.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:47:55.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.032737 -999.00  +12.00  17.09     46   +1.00 1 1 1 1 1     0    0 10.26 -17.56 ZNESW 16.2 17.1 117.2 21.0 12.5 -24.4 12.3 -23.7 12.0 -22.7 12.4 -23.6
2025-11-25T02:47:55.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:47:55.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:47:55.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.032737
2025-11-25T02:47:55.861 [DEBUG] [Thread-201556] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:47:55.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:47:55.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:47:55.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:47:55.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:47:55.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:47:55.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:47:22', tmtdew=12.43, humidity=42.09, cloud=0.0, wind=22.69, temperature=11.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:47:22', seeing=0.84, atlas_timestamp='2025-11-25T00:47:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:43:00')
2025-11-25T02:47:55.947 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:47:55.958 [DEBUG] [Thread-201559] [transport.py] [_log()] starting thread (client mode): 0xd317e110
2025-11-25T02:47:55.958 [DEBUG] [Thread-201559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:47:55.975 [DEBUG] [Thread-201559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:47:55.975 [INFO] [Thread-201559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:47:55.982 [DEBUG] [Thread-201559] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:47:55.982 [DEBUG] [Thread-201559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:47:55.982 [DEBUG] [Thread-201559] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] client lang: <none>
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] server lang: <none>
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] kex follows: False
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] Compression: none
2025-11-25T02:47:55.983 [DEBUG] [Thread-201559] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:47:56.038 [DEBUG] [Thread-201559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:47:56.039 [DEBUG] [Thread-201559] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:47:56.039 [DEBUG] [Thread-201559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:47:56.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:47:56.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:47:56.096 [DEBUG] [Thread-201559] [transport.py] [_log()] userauth is OK
2025-11-25T02:47:56.096 [DEBUG] [Thread-201559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:47:56.096 [DEBUG] [Thread-201559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:47:56.096 [DEBUG] [Thread-201559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:47:56.096 [DEBUG] [Thread-201559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:47:56.110 [INFO] [Thread-201559] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:47:56.110 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:47:56.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:47:56.967 [DEBUG] [Thread-201559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:47:56.967 [DEBUG] [Thread-201559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:47:57.015 [DEBUG] [Thread-201559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:47:57.015 [DEBUG] [Thread-201559] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:47:57.023 [DEBUG] [Thread-201559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:47:57.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:47:57.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-11-25T02:47:57.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-11-25T02:47:57.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:47:57.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:47:57.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:47:57.057 [DEBUG] [Thread-201559] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:47:57.430 [DEBUG] [Thread-201561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:57.438 [DEBUG] [Thread-201562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:47:58.146 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:08.785 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:12.593 [DEBUG] [Thread-201563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:19.212 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:27.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:48:27.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:48: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-11-25T02:48:27.673 [DEBUG] [Thread-201564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:28.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 47, 55), 12.45, 41.99, 0.0, 22.9, 11.82, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:48:28.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:47:55
2025-11-25T02:48:28.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:48:28.779 [DEBUG] [Thread-201565] [transport.py] [_log()] starting thread (client mode): 0xd31498a0
2025-11-25T02:48:28.780 [DEBUG] [Thread-201565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:48:28.791 [DEBUG] [Thread-201565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:48:28.791 [INFO] [Thread-201565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:48:28.797 [DEBUG] [Thread-201565] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] client lang: <none>
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] server lang: <none>
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] kex follows: False
2025-11-25T02:48:28.798 [DEBUG] [Thread-201565] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:48:28.799 [DEBUG] [Thread-201565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:48:28.799 [DEBUG] [Thread-201565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:48:28.799 [DEBUG] [Thread-201565] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:48:28.799 [DEBUG] [Thread-201565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:48:28.799 [DEBUG] [Thread-201565] [transport.py] [_log()] Compression: none
2025-11-25T02:48:28.799 [DEBUG] [Thread-201565] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:48:28.825 [DEBUG] [Thread-201565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:48:28.830 [DEBUG] [Thread-201565] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:48:28.831 [DEBUG] [Thread-201565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:48:28.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:48:28.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:48:28.836 [DEBUG] [Thread-201565] [transport.py] [_log()] userauth is OK
2025-11-25T02:48:28.836 [DEBUG] [Thread-201565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:48:28.837 [DEBUG] [Thread-201565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:48:28.837 [DEBUG] [Thread-201565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:48:28.837 [DEBUG] [Thread-201565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:48:28.849 [INFO] [Thread-201565] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:48:28.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:48:29.628 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:29.635 [DEBUG] [Thread-201565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:48:29.636 [DEBUG] [Thread-201565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:48:29.636 [DEBUG] [Thread-201565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:48:29.676 [DEBUG] [Thread-201565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:48:29.676 [DEBUG] [Thread-201565] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:48:29.678 [DEBUG] [Thread-201565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:48:29.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:48:29.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:48:29.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:48:29.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:48:29.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:48:29.698 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:48:29.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:48:29.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:48:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:48:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.033432 -999.00  +12.00  15.16     46   +1.00 1 1 1 1 1     0    0 10.60 -15.43 ZNESW 18.1 15.2 124.6 25.0 12.5 -24.3 12.3 -23.8 12.1 -22.7 12.4 -23.7
2025-11-25T02:48:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:48:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:48:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.033432
2025-11-25T02:48:29.705 [DEBUG] [Thread-201565] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:48:29.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:48:29.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:48:29.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:48:29.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:48:29.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:48:29.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:47:55', tmtdew=12.45, humidity=41.99, cloud=0.0, wind=22.9, temperature=11.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:47:55', seeing=0.71, atlas_timestamp='2025-11-25T00:48:08.525', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:43:00')
2025-11-25T02:48:29.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:48:29.817 [DEBUG] [Thread-201568] [transport.py] [_log()] starting thread (client mode): 0xd317c280
2025-11-25T02:48:29.817 [DEBUG] [Thread-201568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:48:29.831 [DEBUG] [Thread-201568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:48:29.831 [INFO] [Thread-201568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] client lang: <none>
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] server lang: <none>
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] kex follows: False
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] Compression: none
2025-11-25T02:48:29.839 [DEBUG] [Thread-201568] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:48:29.895 [DEBUG] [Thread-201568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:48:29.895 [DEBUG] [Thread-201568] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:48:29.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:48:29.895 [DEBUG] [Thread-201568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:48:29.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:48:29.952 [DEBUG] [Thread-201568] [transport.py] [_log()] userauth is OK
2025-11-25T02:48:29.952 [DEBUG] [Thread-201568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:48:29.952 [DEBUG] [Thread-201568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:48:29.952 [DEBUG] [Thread-201568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:48:29.952 [DEBUG] [Thread-201568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:48:29.968 [INFO] [Thread-201568] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:48: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-11-25T02:48:29.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:48:30.837 [DEBUG] [Thread-201568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:48:30.837 [DEBUG] [Thread-201568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:48:30.885 [DEBUG] [Thread-201568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:48:30.885 [DEBUG] [Thread-201568] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:48:30.893 [DEBUG] [Thread-201568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:48:30.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:48:30.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-11-25T02:48:30.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-11-25T02:48:30.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:48:30.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:48:30.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:48:30.926 [DEBUG] [Thread-201568] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:48:38.860 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:38.862 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:40.024 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:42.719 [DEBUG] [Thread-201570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:50.473 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:57.743 [DEBUG] [Thread-201571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:48:57.844 [DEBUG] [Thread-201572 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:00.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:49:00.930 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:49:00.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-11-25T02:49:01.010 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:02.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 48, 28), 12.43, 42.06, 0.0, 23.27, 11.84, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:49:02.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:48:28
2025-11-25T02:49:02.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:49:02.859 [DEBUG] [Thread-201573] [transport.py] [_log()] starting thread (client mode): 0xd3153550
2025-11-25T02:49:02.859 [DEBUG] [Thread-201573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:49:02.864 [DEBUG] [Thread-201573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:49:02.865 [INFO] [Thread-201573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] client lang: <none>
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] server lang: <none>
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] kex follows: False
2025-11-25T02:49:02.869 [DEBUG] [Thread-201573] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:49:02.870 [DEBUG] [Thread-201573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:49:02.870 [DEBUG] [Thread-201573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:49:02.870 [DEBUG] [Thread-201573] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:49:02.870 [DEBUG] [Thread-201573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:49:02.870 [DEBUG] [Thread-201573] [transport.py] [_log()] Compression: none
2025-11-25T02:49:02.870 [DEBUG] [Thread-201573] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:49:02.890 [DEBUG] [Thread-201573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:49:02.893 [DEBUG] [Thread-201573] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:49:02.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:49:02.895 [DEBUG] [Thread-201573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:49:02.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:49:02.898 [DEBUG] [Thread-201573] [transport.py] [_log()] userauth is OK
2025-11-25T02:49:02.898 [DEBUG] [Thread-201573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:49:02.898 [DEBUG] [Thread-201573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:49:02.898 [DEBUG] [Thread-201573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:49:02.898 [DEBUG] [Thread-201573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:49:02.918 [INFO] [Thread-201573] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:49:02.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:49:03.580 [DEBUG] [Thread-201573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:49:03.580 [DEBUG] [Thread-201573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:49:03.581 [DEBUG] [Thread-201573] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:49:03.621 [DEBUG] [Thread-201573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:49:03.621 [DEBUG] [Thread-201573] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:49:03.624 [DEBUG] [Thread-201573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:49:03.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:49:03.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:49:03.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:49:03.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:49:03.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:49:03.646 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:49:03.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:49:03.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:49:03.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:49:03.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.033722 -999.00  +12.00  19.72     47   +1.00 1 1 1 1 1     0    0 10.48 -14.75 ZNESW 19.7 19.7 125.8 22.0 12.5 -24.3 12.3 -23.8 12.1 -22.7 12.4 -23.6
2025-11-25T02:49:03.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:49:03.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:49:03.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.033722
2025-11-25T02:49:03.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:49:03.657 [DEBUG] [Thread-201573] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:49:03.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:49:03.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:49:03.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:49:03.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:49:03.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:48:28', tmtdew=12.43, humidity=42.06, cloud=0.0, wind=23.27, temperature=11.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:48:28', seeing=0.7, atlas_timestamp='2025-11-25T00:48:33.581', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:46:00')
2025-11-25T02:49:03.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:49:03.753 [DEBUG] [Thread-201576] [transport.py] [_log()] starting thread (client mode): 0xc9b76a40
2025-11-25T02:49:03.753 [DEBUG] [Thread-201576] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:49:03.768 [DEBUG] [Thread-201576] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:49:03.768 [INFO] [Thread-201576] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] client lang: <none>
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] server lang: <none>
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] kex follows: False
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] Compression: none
2025-11-25T02:49:03.776 [DEBUG] [Thread-201576] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:49:03.831 [DEBUG] [Thread-201576] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:49:03.831 [DEBUG] [Thread-201576] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:49:03.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:49:03.831 [DEBUG] [Thread-201576] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:49:03.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:49:03.888 [DEBUG] [Thread-201576] [transport.py] [_log()] userauth is OK
2025-11-25T02:49:03.888 [DEBUG] [Thread-201576] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:49:03.888 [DEBUG] [Thread-201576] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:49:03.888 [DEBUG] [Thread-201576] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:49:03.888 [DEBUG] [Thread-201576] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:49:03.902 [INFO] [Thread-201576] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:49:03.902 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:49:03.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:49:04.814 [DEBUG] [Thread-201576] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:49:04.815 [DEBUG] [Thread-201576] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:49:04.862 [DEBUG] [Thread-201576] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:49:04.863 [DEBUG] [Thread-201576] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:49:04.872 [DEBUG] [Thread-201576] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:49:04.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:49:04.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-11-25T02:49: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') -> 00000000
2025-11-25T02:49:04.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:49:04.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:49:04.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:49:04.912 [DEBUG] [Thread-201576] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:49:11.497 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:12.927 [DEBUG] [Thread-201578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:21.904 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:28.031 [DEBUG] [Thread-201579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:32.339 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:34.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:49:34.916 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:49:34.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-11-25T02:49:35.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 49), 12.42, 42.12, 0.0, 24.49, 11.87, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:49:35.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:49:00
2025-11-25T02:49:35.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:49:36.163 [DEBUG] [Thread-201580] [transport.py] [_log()] starting thread (client mode): 0xd31f4fa0
2025-11-25T02:49:36.164 [DEBUG] [Thread-201580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:49:36.169 [DEBUG] [Thread-201580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:49:36.170 [INFO] [Thread-201580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] client lang: <none>
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] server lang: <none>
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] kex follows: False
2025-11-25T02:49:36.175 [DEBUG] [Thread-201580] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:49:36.176 [DEBUG] [Thread-201580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:49:36.176 [DEBUG] [Thread-201580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:49:36.176 [DEBUG] [Thread-201580] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:49:36.176 [DEBUG] [Thread-201580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:49:36.176 [DEBUG] [Thread-201580] [transport.py] [_log()] Compression: none
2025-11-25T02:49:36.176 [DEBUG] [Thread-201580] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:49:36.206 [DEBUG] [Thread-201580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:49:36.211 [DEBUG] [Thread-201580] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:49:36.212 [DEBUG] [Thread-201580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:49:36.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:49:36.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:49:36.216 [DEBUG] [Thread-201580] [transport.py] [_log()] userauth is OK
2025-11-25T02:49:36.216 [DEBUG] [Thread-201580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:49:36.216 [DEBUG] [Thread-201580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:49:36.216 [DEBUG] [Thread-201580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:49:36.216 [DEBUG] [Thread-201580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:49:36.235 [INFO] [Thread-201580] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:49:36.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:49:36.854 [DEBUG] [Thread-201580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:49:36.854 [DEBUG] [Thread-201580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:49:36.854 [DEBUG] [Thread-201580] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:49:36.896 [DEBUG] [Thread-201580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:49:36.896 [DEBUG] [Thread-201580] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:49:36.899 [DEBUG] [Thread-201580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:49:36.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:49:36.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:49:36.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:49:36.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:49:36.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:49:36.923 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:49:36.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:49:36.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:49:36.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:49:36.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.034126 -999.00  +12.00  17.54     47   +1.00 1 1 1 1 1     0    0 10.86 -15.24 ZNESW 18.8 17.5 127.0 22.2 12.5 -24.2 12.3 -23.7 12.1 -22.5 12.4 -23.5
2025-11-25T02:49:36.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:49:36.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:49:36.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.034126
2025-11-25T02:49:36.931 [DEBUG] [Thread-201580] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:49:36.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:49:36.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:49:36.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:49:36.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:49:36.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:49:36.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:49:00', tmtdew=12.42, humidity=42.12, cloud=0.0, wind=24.49, temperature=11.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:49:34', seeing=0.7, atlas_timestamp='2025-11-25T00:49:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:46:00')
2025-11-25T02:49:37.019 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:49:37.030 [DEBUG] [Thread-201583] [transport.py] [_log()] starting thread (client mode): 0xd3153a90
2025-11-25T02:49:37.030 [DEBUG] [Thread-201583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:49:37.046 [DEBUG] [Thread-201583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:49:37.046 [INFO] [Thread-201583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] client lang: <none>
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] server lang: <none>
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] kex follows: False
2025-11-25T02:49:37.053 [DEBUG] [Thread-201583] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:49:37.054 [DEBUG] [Thread-201583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:49:37.054 [DEBUG] [Thread-201583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:49:37.054 [DEBUG] [Thread-201583] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:49:37.054 [DEBUG] [Thread-201583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:49:37.054 [DEBUG] [Thread-201583] [transport.py] [_log()] Compression: none
2025-11-25T02:49:37.054 [DEBUG] [Thread-201583] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:49:37.111 [DEBUG] [Thread-201583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:49:37.111 [DEBUG] [Thread-201583] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:49:37.111 [DEBUG] [Thread-201583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:49:37.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:49:37.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:49:37.169 [DEBUG] [Thread-201583] [transport.py] [_log()] userauth is OK
2025-11-25T02:49:37.169 [DEBUG] [Thread-201583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:49:37.169 [DEBUG] [Thread-201583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:49:37.169 [DEBUG] [Thread-201583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:49:37.169 [DEBUG] [Thread-201583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:49:37.184 [INFO] [Thread-201583] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:49:37.184 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:49:37.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:49:38.027 [DEBUG] [Thread-201583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:49:38.027 [DEBUG] [Thread-201583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:49:38.075 [DEBUG] [Thread-201583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:49:38.075 [DEBUG] [Thread-201583] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:49:38.083 [DEBUG] [Thread-201583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:49:38.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:49:38.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:49:38.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-11-25T02:49:38.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:49:38.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:49:38.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:49:38.118 [DEBUG] [Thread-201583] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:49:39.066 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:39.068 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:42.762 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:43.083 [DEBUG] [Thread-201585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:53.166 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:58.084 [DEBUG] [Thread-201586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:49:58.225 [DEBUG] [Thread-201587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:03.711 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:08.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:50:08.143 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:50:08.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-11-25T02:50:09.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 49, 34), 12.51, 41.99, 0.0, 23.29, 11.94, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:50:09.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:49:34
2025-11-25T02:50:09.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:50:09.552 [DEBUG] [Thread-201588] [transport.py] [_log()] starting thread (client mode): 0xd319f9d0
2025-11-25T02:50:09.553 [DEBUG] [Thread-201588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:50:09.562 [DEBUG] [Thread-201588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:50:09.562 [INFO] [Thread-201588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:50:09.568 [DEBUG] [Thread-201588] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] client lang: <none>
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] server lang: <none>
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] kex follows: False
2025-11-25T02:50:09.569 [DEBUG] [Thread-201588] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:50:09.570 [DEBUG] [Thread-201588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:50:09.570 [DEBUG] [Thread-201588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:50:09.570 [DEBUG] [Thread-201588] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:50:09.570 [DEBUG] [Thread-201588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:50:09.570 [DEBUG] [Thread-201588] [transport.py] [_log()] Compression: none
2025-11-25T02:50:09.570 [DEBUG] [Thread-201588] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:50:09.601 [DEBUG] [Thread-201588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:50:09.605 [DEBUG] [Thread-201588] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:50:09.606 [DEBUG] [Thread-201588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:50:09.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:50:09.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:50:09.609 [DEBUG] [Thread-201588] [transport.py] [_log()] userauth is OK
2025-11-25T02:50:09.609 [DEBUG] [Thread-201588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:50:09.609 [DEBUG] [Thread-201588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:50:09.610 [DEBUG] [Thread-201588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:50:09.610 [DEBUG] [Thread-201588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:50:09.629 [INFO] [Thread-201588] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:50:09.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:50:10.579 [DEBUG] [Thread-201588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:50:10.579 [DEBUG] [Thread-201588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:50:10.581 [DEBUG] [Thread-201588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:50:10.621 [DEBUG] [Thread-201588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:50:10.621 [DEBUG] [Thread-201588] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:50:10.624 [DEBUG] [Thread-201588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:50:10.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:50:10.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:50:10.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:50:10.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:50:10.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:50:10.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:50:10.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:50:10.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:50:10.653 [DEBUG] [Thread-201588] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:50:10.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:50:10.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.034416 -999.00  +12.00  20.82     46   +1.00 1 1 1 1 1     0    0 10.67 -14.38 ZNESW 20.8 20.8 128.2 24.4 12.5 -24.2 12.3 -23.7 12.1 -22.7 12.4 -23.5
2025-11-25T02:50:10.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:50:10.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:50:10.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.034416
2025-11-25T02:50:10.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:50:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:50:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:50:10.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:50:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:50:10.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:49:34', tmtdew=12.51, humidity=41.99, cloud=0.0, wind=23.29, temperature=11.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:50:07', seeing=0.71, atlas_timestamp='2025-11-25T00:49:33.542', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:46:00')
2025-11-25T02:50:10.759 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:50:10.773 [DEBUG] [Thread-201591] [transport.py] [_log()] starting thread (client mode): 0xd317c0d0
2025-11-25T02:50:10.773 [DEBUG] [Thread-201591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:50:10.788 [DEBUG] [Thread-201591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:50:10.788 [INFO] [Thread-201591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] client lang: <none>
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] server lang: <none>
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] kex follows: False
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:50:10.796 [DEBUG] [Thread-201591] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:50:10.797 [DEBUG] [Thread-201591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:50:10.797 [DEBUG] [Thread-201591] [transport.py] [_log()] Compression: none
2025-11-25T02:50:10.797 [DEBUG] [Thread-201591] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:50:10.855 [DEBUG] [Thread-201591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:50:10.856 [DEBUG] [Thread-201591] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:50:10.856 [DEBUG] [Thread-201591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:50:10.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:50:10.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:50:10.913 [DEBUG] [Thread-201591] [transport.py] [_log()] userauth is OK
2025-11-25T02:50:10.913 [DEBUG] [Thread-201591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:50:10.913 [DEBUG] [Thread-201591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:50:10.913 [DEBUG] [Thread-201591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:50:10.913 [DEBUG] [Thread-201591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:50:10.927 [INFO] [Thread-201591] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:50:10.927 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:50:10.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:50:11.822 [DEBUG] [Thread-201591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:50:11.823 [DEBUG] [Thread-201591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:50:11.870 [DEBUG] [Thread-201591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:50:11.870 [DEBUG] [Thread-201591] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:50:11.878 [DEBUG] [Thread-201591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:50:11.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:50:11.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-11-25T02:50:11.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-11-25T02:50:11.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:50:11.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:50:11.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:50:11.912 [DEBUG] [Thread-201591] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:50:13.272 [DEBUG] [Thread-201593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:14.247 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:24.769 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:28.417 [DEBUG] [Thread-201594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:35.297 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:39.281 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:39.283 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:41.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:50:41.936 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:50:41.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-11-25T02:50:42.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 50, 7), 12.51, 41.99, 0.0, 23.17, 11.97, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:50:42.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:50:07
2025-11-25T02:50:43.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:50:43.215 [DEBUG] [Thread-201595] [transport.py] [_log()] starting thread (client mode): 0xc9b83550
2025-11-25T02:50:43.217 [DEBUG] [Thread-201595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:50:43.226 [DEBUG] [Thread-201595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:50:43.226 [INFO] [Thread-201595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:50:43.230 [DEBUG] [Thread-201595] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] client lang: <none>
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] server lang: <none>
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] kex follows: False
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:50:43.231 [DEBUG] [Thread-201595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:50:43.232 [DEBUG] [Thread-201595] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:50:43.232 [DEBUG] [Thread-201595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:50:43.232 [DEBUG] [Thread-201595] [transport.py] [_log()] Compression: none
2025-11-25T02:50:43.232 [DEBUG] [Thread-201595] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:50:43.263 [DEBUG] [Thread-201595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:50:43.267 [DEBUG] [Thread-201595] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:50:43.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:50:43.269 [DEBUG] [Thread-201595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:50:43.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:50:43.272 [DEBUG] [Thread-201595] [transport.py] [_log()] userauth is OK
2025-11-25T02:50:43.272 [DEBUG] [Thread-201595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:50:43.272 [DEBUG] [Thread-201595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:50:43.272 [DEBUG] [Thread-201595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:50:43.272 [DEBUG] [Thread-201595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:50:43.286 [INFO] [Thread-201595] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:50:43.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:50:43.505 [DEBUG] [Thread-201597 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:43.925 [DEBUG] [Thread-201595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:50:43.926 [DEBUG] [Thread-201595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:50:43.927 [DEBUG] [Thread-201595] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:50:43.966 [DEBUG] [Thread-201595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:50:43.966 [DEBUG] [Thread-201595] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:50:43.970 [DEBUG] [Thread-201595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:50:43.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:50:43.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:50:43.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:50:43.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:50:43.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:50:43.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:50:43.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:50:43.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:50:43.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:50:43.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.034763 -999.00  +12.00  19.07     46   +1.00 1 1 1 1 1     0    0 10.76 -14.33 ZNESW 19.1 19.1 130.2 25.2 12.5 -24.4 12.4 -23.8 12.1 -22.7 12.3 -23.5
2025-11-25T02:50:43.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:50:43.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:50:43.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.034763
2025-11-25T02:50:44.006 [DEBUG] [Thread-201595] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:50:44.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:50:44.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:50:44.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:50:44.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:50:44.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:50:44.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:50:07', tmtdew=12.51, humidity=41.99, cloud=0.0, wind=23.17, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:50:40', seeing=0.73, atlas_timestamp='2025-11-25T00:50:03.523', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:46:00')
2025-11-25T02:50:44.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:50:44.132 [DEBUG] [Thread-201599] [transport.py] [_log()] starting thread (client mode): 0xd0712980
2025-11-25T02:50:44.133 [DEBUG] [Thread-201599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:50:44.147 [DEBUG] [Thread-201599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:50:44.147 [INFO] [Thread-201599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:50:44.156 [DEBUG] [Thread-201599] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:50:44.156 [DEBUG] [Thread-201599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] client lang: <none>
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] server lang: <none>
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] kex follows: False
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:50:44.157 [DEBUG] [Thread-201599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:50:44.158 [DEBUG] [Thread-201599] [transport.py] [_log()] Compression: none
2025-11-25T02:50:44.158 [DEBUG] [Thread-201599] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:50:44.212 [DEBUG] [Thread-201599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:50:44.213 [DEBUG] [Thread-201599] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:50:44.213 [DEBUG] [Thread-201599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:50:44.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:50:44.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:50:44.270 [DEBUG] [Thread-201599] [transport.py] [_log()] userauth is OK
2025-11-25T02:50:44.270 [DEBUG] [Thread-201599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:50:44.271 [DEBUG] [Thread-201599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:50:44.271 [DEBUG] [Thread-201599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:50:44.271 [DEBUG] [Thread-201599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:50:44.291 [INFO] [Thread-201599] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:50:44.291 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:50:44.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:50:45.183 [DEBUG] [Thread-201599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:50:45.184 [DEBUG] [Thread-201599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:50:45.232 [DEBUG] [Thread-201599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:50:45.232 [DEBUG] [Thread-201599] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:50:45.241 [DEBUG] [Thread-201599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:50:45.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:50:45.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:50:45.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-11-25T02:50:45.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:50:45.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:50:45.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:50:45.274 [DEBUG] [Thread-201599] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:50:45.800 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:56.241 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:58.356 [DEBUG] [Thread-201601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:50:58.574 [DEBUG] [Thread-201602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:06.810 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:13.723 [DEBUG] [Thread-201603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:15.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:51:15.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:51:15.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-11-25T02:51:16.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 50, 40), 12.5, 42.02, 0.0, 23.22, 11.97, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:51:16.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:50:40
2025-11-25T02:51:16.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:51:16.621 [DEBUG] [Thread-201604] [transport.py] [_log()] starting thread (client mode): 0xd31f4f70
2025-11-25T02:51:16.622 [DEBUG] [Thread-201604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:51:16.633 [DEBUG] [Thread-201604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:51:16.633 [INFO] [Thread-201604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:51:16.640 [DEBUG] [Thread-201604] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:51:16.640 [DEBUG] [Thread-201604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:51:16.640 [DEBUG] [Thread-201604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:51:16.640 [DEBUG] [Thread-201604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:51:16.640 [DEBUG] [Thread-201604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:51:16.640 [DEBUG] [Thread-201604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:51:16.640 [DEBUG] [Thread-201604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:51:16.641 [DEBUG] [Thread-201604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:51:16.641 [DEBUG] [Thread-201604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:51:16.641 [DEBUG] [Thread-201604] [transport.py] [_log()] client lang: <none>
2025-11-25T02:51:16.641 [DEBUG] [Thread-201604] [transport.py] [_log()] server lang: <none>
2025-11-25T02:51:16.641 [DEBUG] [Thread-201604] [transport.py] [_log()] kex follows: False
2025-11-25T02:51:16.641 [DEBUG] [Thread-201604] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:51:16.641 [DEBUG] [Thread-201604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:51:16.641 [DEBUG] [Thread-201604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:51:16.642 [DEBUG] [Thread-201604] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:51:16.642 [DEBUG] [Thread-201604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:51:16.642 [DEBUG] [Thread-201604] [transport.py] [_log()] Compression: none
2025-11-25T02:51:16.642 [DEBUG] [Thread-201604] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:51:16.674 [DEBUG] [Thread-201604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:51:16.678 [DEBUG] [Thread-201604] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:51:16.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:51:16.681 [DEBUG] [Thread-201604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:51:16.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:51:16.683 [DEBUG] [Thread-201604] [transport.py] [_log()] userauth is OK
2025-11-25T02:51:16.684 [DEBUG] [Thread-201604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:51:16.684 [DEBUG] [Thread-201604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:51:16.684 [DEBUG] [Thread-201604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:51:16.684 [DEBUG] [Thread-201604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:51:16.704 [INFO] [Thread-201604] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:51:16.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:51:17.337 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:17.348 [DEBUG] [Thread-201604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:51:17.349 [DEBUG] [Thread-201604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:51:17.351 [DEBUG] [Thread-201604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:51:17.389 [DEBUG] [Thread-201604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:51:17.389 [DEBUG] [Thread-201604] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:51:17.393 [DEBUG] [Thread-201604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:51:17.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:51:17.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:51:17.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:51:17.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:51:17.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:51:17.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:51:17.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:51:17.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:51:17.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:51:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.035110 -999.00  +12.00  21.15     46   +1.00 1 1 1 1 1     0    0 10.88 -13.65 ZNESW 21.1 21.1 130.8 23.7 12.4 -24.2 12.3 -23.8 12.0 -22.7 12.4 -23.5
2025-11-25T02:51:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:51:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:51:17.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.035110
2025-11-25T02:51:17.429 [DEBUG] [Thread-201604] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:51:17.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:51:17.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:51:17.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:51:17.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:51:17.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:51:17.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:50:40', tmtdew=12.5, humidity=42.02, cloud=0.0, wind=23.22, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:51:14', seeing=0.72, atlas_timestamp='2025-11-25T00:50:33.504', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03824999999999967, -0.04974999999999952, 0.005250000000000199, -0.05250000000000021, 0.0005000000000006111, 0.01925000000000132, -0.03500000000000014, -0.008749999999999147, -0.015000000000000568, -0.05400000000000027, -0.0072499999999990905, -0.037499999999999645, 0.05599999999999916, 0.051750000000000185, -0.04400000000000048, -0.025000000000000355, -0.006249999999999645, -0.026500000000000412, -0.04750000000000121, -0.013750000000001705, 0.06349999999999767, 0.08274999999999899, 0.008250000000000313, 0.013749999999999929, 0.027999999999998693, 0.050499999999999545, 0.0027500000000006963, 0.0389999999999997, 0.10599999999999987, 0.11100000000000065, 0.018000000000000682, -0.01699999999999946, 0.005250000000000199], zp_timestamp='2025-11-25T00:46:00')
2025-11-25T02:51:17.540 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:51:17.549 [DEBUG] [Thread-201607] [transport.py] [_log()] starting thread (client mode): 0xc9b749d0
2025-11-25T02:51:17.549 [DEBUG] [Thread-201607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:51:17.564 [DEBUG] [Thread-201607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:51:17.564 [INFO] [Thread-201607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] client lang: <none>
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] server lang: <none>
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] kex follows: False
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:51:17.572 [DEBUG] [Thread-201607] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:51:17.573 [DEBUG] [Thread-201607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:51:17.573 [DEBUG] [Thread-201607] [transport.py] [_log()] Compression: none
2025-11-25T02:51:17.573 [DEBUG] [Thread-201607] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:51:17.633 [DEBUG] [Thread-201607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:51:17.634 [DEBUG] [Thread-201607] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:51:17.634 [DEBUG] [Thread-201607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:51:17.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:51:17.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:51:17.693 [DEBUG] [Thread-201607] [transport.py] [_log()] userauth is OK
2025-11-25T02:51:17.693 [DEBUG] [Thread-201607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:51:17.693 [DEBUG] [Thread-201607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:51:17.694 [DEBUG] [Thread-201607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:51:17.694 [DEBUG] [Thread-201607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:51:17.713 [INFO] [Thread-201607] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:51:17.713 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:51:17.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:51:18.557 [DEBUG] [Thread-201607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:51:18.557 [DEBUG] [Thread-201607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:51:18.605 [DEBUG] [Thread-201607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:51:18.605 [DEBUG] [Thread-201607] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:51:18.614 [DEBUG] [Thread-201607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:51:18.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:51:18.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-11-25T02:51:18.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-11-25T02:51:18.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:51:18.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:51:18.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:51:18.648 [DEBUG] [Thread-201607] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:51:27.879 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:28.781 [DEBUG] [Thread-201609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:38.428 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:39.486 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:39.487 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:43.922 [DEBUG] [Thread-201610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:48.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:51:48.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:51:48.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-11-25T02:51:48.938 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:49.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 51, 13), 12.51, 41.99, 0.0, 23.57, 11.94, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:51:49.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:51:13
2025-11-25T02:51:49.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:51:50.066 [DEBUG] [Thread-201611] [transport.py] [_log()] starting thread (client mode): 0xd0786230
2025-11-25T02:51:50.067 [DEBUG] [Thread-201611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:51:50.067 [DEBUG] [Thread-201611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:51:50.068 [INFO] [Thread-201611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] client lang: <none>
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] server lang: <none>
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] kex follows: False
2025-11-25T02:51:50.071 [DEBUG] [Thread-201611] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:51:50.072 [DEBUG] [Thread-201611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:51:50.072 [DEBUG] [Thread-201611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:51:50.072 [DEBUG] [Thread-201611] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:51:50.072 [DEBUG] [Thread-201611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:51:50.072 [DEBUG] [Thread-201611] [transport.py] [_log()] Compression: none
2025-11-25T02:51:50.072 [DEBUG] [Thread-201611] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:51:50.100 [DEBUG] [Thread-201611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:51:50.103 [DEBUG] [Thread-201611] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:51:50.105 [DEBUG] [Thread-201611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:51:50.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:51:50.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:51:50.108 [DEBUG] [Thread-201611] [transport.py] [_log()] userauth is OK
2025-11-25T02:51:50.108 [DEBUG] [Thread-201611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:51:50.108 [DEBUG] [Thread-201611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:51:50.108 [DEBUG] [Thread-201611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:51:50.108 [DEBUG] [Thread-201611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:51:50.120 [INFO] [Thread-201611] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:51:50.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:51:50.781 [DEBUG] [Thread-201611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:51:50.781 [DEBUG] [Thread-201611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:51:50.793 [DEBUG] [Thread-201611] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:51:50.822 [DEBUG] [Thread-201611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:51:50.822 [DEBUG] [Thread-201611] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:51:50.825 [DEBUG] [Thread-201611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:51:50.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:51:50.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:51:50.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:51:50.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:51:50.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:51:50.852 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:51:50.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:51:50.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:51:50.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:51:50.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.035862 -999.00  +12.00  21.65     47   +1.00 1 1 1 1 1     0    0 10.70 -13.19 ZNESW 16.4 21.6 129.0 25.1 12.5 -24.3 12.3 -23.9 12.0 -22.8 12.4 -23.5
2025-11-25T02:51:50.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:51:50.854 [DEBUG] [Thread-201611] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:51:50.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:51:50.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.035862
2025-11-25T02:51:50.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:51:50.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:51:50.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:51:50.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:51:50.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:51:50.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:51:13', tmtdew=12.51, humidity=41.99, cloud=0.0, wind=23.57, temperature=11.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:51:47', seeing=0.69, atlas_timestamp='2025-11-25T00:51:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.023749999999999716, -0.03824999999999967, 0.009249999999999758, -0.040500000000001535, 0.0019999999999988916, 0.007750000000001478, -0.01950000000000074, -0.0067499999999984794, 0.0034999999999989484, -0.026999999999999247, -0.016750000000000043, -0.040000000000000924, 0.07949999999999946, 0.07324999999999982, -0.03550000000000075, 0.0004999999999988347, 0.0017500000000012506, -0.010500000000000398, -0.03900000000000148, -0.024750000000000938, 0.08399999999999785, 0.10174999999999912, 0.039250000000000895, 0.016750000000000043, 0.01750000000000007, 0.018499999999999517, 0.009250000000001535, 0.0024999999999995026, 0.08300000000000018, 0.11149999999999949, 0.038000000000000256, -0.00549999999999784, 0.01974999999999838], zp_timestamp='2025-11-25T00:50:00')
2025-11-25T02:51:50.959 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:51:50.972 [DEBUG] [Thread-201614] [transport.py] [_log()] starting thread (client mode): 0xd31516f0
2025-11-25T02:51:50.972 [DEBUG] [Thread-201614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:51:50.987 [DEBUG] [Thread-201614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:51:50.987 [INFO] [Thread-201614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:51:50.995 [DEBUG] [Thread-201614] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:51:50.995 [DEBUG] [Thread-201614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:51:50.995 [DEBUG] [Thread-201614] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:51:50.995 [DEBUG] [Thread-201614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:51:50.995 [DEBUG] [Thread-201614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:51:50.995 [DEBUG] [Thread-201614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:51:50.996 [DEBUG] [Thread-201614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:51:50.996 [DEBUG] [Thread-201614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:51:50.996 [DEBUG] [Thread-201614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:51:50.996 [DEBUG] [Thread-201614] [transport.py] [_log()] client lang: <none>
2025-11-25T02:51:50.996 [DEBUG] [Thread-201614] [transport.py] [_log()] server lang: <none>
2025-11-25T02:51:50.996 [DEBUG] [Thread-201614] [transport.py] [_log()] kex follows: False
2025-11-25T02:51:50.996 [DEBUG] [Thread-201614] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:51:50.996 [DEBUG] [Thread-201614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:51:50.996 [DEBUG] [Thread-201614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:51:50.997 [DEBUG] [Thread-201614] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:51:50.997 [DEBUG] [Thread-201614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:51:50.997 [DEBUG] [Thread-201614] [transport.py] [_log()] Compression: none
2025-11-25T02:51:50.997 [DEBUG] [Thread-201614] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:51:51.053 [DEBUG] [Thread-201614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:51:51.054 [DEBUG] [Thread-201614] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:51:51.054 [DEBUG] [Thread-201614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:51:51.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:51:51.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:51:51.113 [DEBUG] [Thread-201614] [transport.py] [_log()] userauth is OK
2025-11-25T02:51:51.113 [DEBUG] [Thread-201614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:51:51.113 [DEBUG] [Thread-201614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:51:51.113 [DEBUG] [Thread-201614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:51:51.113 [DEBUG] [Thread-201614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:51:51.132 [INFO] [Thread-201614] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:51:51.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:51:51.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:51:52.040 [DEBUG] [Thread-201614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:51:52.040 [DEBUG] [Thread-201614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:51:52.088 [DEBUG] [Thread-201614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:51:52.088 [DEBUG] [Thread-201614] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:51:52.096 [DEBUG] [Thread-201614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:51:52.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:51:52.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:51: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') -> 00000000
2025-11-25T02:51:52.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:51:52.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:51:52.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:51:52.139 [DEBUG] [Thread-201614] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:51:58.571 [DEBUG] [Thread-201616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:59.011 [DEBUG] [Thread-201617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:51:59.467 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:10.004 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:14.159 [DEBUG] [Thread-201618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:20.459 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:22.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:52:22.163 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:52:22.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-11-25T02:52:23.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 51, 47), 12.51, 41.99, 0.0, 23.96, 11.97, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:52:23.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:51:47
2025-11-25T02:52:23.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:52:23.432 [DEBUG] [Thread-201619] [transport.py] [_log()] starting thread (client mode): 0xd0712b90
2025-11-25T02:52:23.433 [DEBUG] [Thread-201619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:52:23.441 [DEBUG] [Thread-201619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:52:23.442 [INFO] [Thread-201619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] client lang: <none>
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] server lang: <none>
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] kex follows: False
2025-11-25T02:52:23.447 [DEBUG] [Thread-201619] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:52:23.448 [DEBUG] [Thread-201619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:52:23.448 [DEBUG] [Thread-201619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:52:23.448 [DEBUG] [Thread-201619] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:52:23.448 [DEBUG] [Thread-201619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:52:23.448 [DEBUG] [Thread-201619] [transport.py] [_log()] Compression: none
2025-11-25T02:52:23.448 [DEBUG] [Thread-201619] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:52:23.480 [DEBUG] [Thread-201619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:52:23.483 [DEBUG] [Thread-201619] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:52:23.484 [DEBUG] [Thread-201619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:52:23.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:52:23.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:52:23.488 [DEBUG] [Thread-201619] [transport.py] [_log()] userauth is OK
2025-11-25T02:52:23.488 [DEBUG] [Thread-201619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:52:23.488 [DEBUG] [Thread-201619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:52:23.488 [DEBUG] [Thread-201619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:52:23.488 [DEBUG] [Thread-201619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:52:23.506 [INFO] [Thread-201619] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:52:23.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:52:24.144 [DEBUG] [Thread-201619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:52:24.144 [DEBUG] [Thread-201619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:52:24.145 [DEBUG] [Thread-201619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:52:24.185 [DEBUG] [Thread-201619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:52:24.186 [DEBUG] [Thread-201619] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:52:24.189 [DEBUG] [Thread-201619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:52:24.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:52:24.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:52:24.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:52:24.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:52:24.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:52:24.215 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:52:24.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:52:24.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:52:24.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:52:24.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.036210 -999.00  +12.00  19.78     47   +1.00 1 1 1 1 1     0    0 10.68 -15.08 ZNESW 20.4 19.8 132.4 22.3 12.5 -24.4 12.3 -23.9 12.0 -22.8 12.3 -23.7
2025-11-25T02:52:24.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:52:24.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:52:24.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.036210
2025-11-25T02:52:24.224 [DEBUG] [Thread-201619] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:52:24.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:52:24.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:52:24.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:52:24.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:52:24.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:52:24.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:51:47', tmtdew=12.51, humidity=41.99, cloud=0.0, wind=23.96, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:52:20', seeing=0.72, atlas_timestamp='2025-11-25T00:52:08.544', atlas_cloud=1, atlas_rain=1, zp_data=[-0.023749999999999716, -0.03824999999999967, 0.009249999999999758, -0.040500000000001535, 0.0019999999999988916, 0.007750000000001478, -0.01950000000000074, -0.0067499999999984794, 0.0034999999999989484, -0.026999999999999247, -0.016750000000000043, -0.040000000000000924, 0.07949999999999946, 0.07324999999999982, -0.03550000000000075, 0.0004999999999988347, 0.0017500000000012506, -0.010500000000000398, -0.03900000000000148, -0.024750000000000938, 0.08399999999999785, 0.10174999999999912, 0.039250000000000895, 0.016750000000000043, 0.01750000000000007, 0.018499999999999517, 0.009250000000001535, 0.0024999999999995026, 0.08300000000000018, 0.11149999999999949, 0.038000000000000256, -0.00549999999999784, 0.01974999999999838], zp_timestamp='2025-11-25T00:50:00')
2025-11-25T02:52:24.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:52:24.343 [DEBUG] [Thread-201622] [transport.py] [_log()] starting thread (client mode): 0xc9b76860
2025-11-25T02:52:24.343 [DEBUG] [Thread-201622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:52:24.358 [DEBUG] [Thread-201622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:52:24.358 [INFO] [Thread-201622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:52:24.367 [DEBUG] [Thread-201622] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:52:24.367 [DEBUG] [Thread-201622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:52:24.367 [DEBUG] [Thread-201622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:52:24.367 [DEBUG] [Thread-201622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] client lang: <none>
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] server lang: <none>
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] kex follows: False
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:52:24.368 [DEBUG] [Thread-201622] [transport.py] [_log()] Compression: none
2025-11-25T02:52:24.369 [DEBUG] [Thread-201622] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:52:24.424 [DEBUG] [Thread-201622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:52:24.425 [DEBUG] [Thread-201622] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:52:24.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:52:24.426 [DEBUG] [Thread-201622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:52:24.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:52:24.481 [DEBUG] [Thread-201622] [transport.py] [_log()] userauth is OK
2025-11-25T02:52:24.482 [DEBUG] [Thread-201622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:52:24.482 [DEBUG] [Thread-201622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:52:24.482 [DEBUG] [Thread-201622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:52:24.482 [DEBUG] [Thread-201622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:52:24.501 [INFO] [Thread-201622] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:52:24.501 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:52:24.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:52:25.412 [DEBUG] [Thread-201622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:52:25.412 [DEBUG] [Thread-201622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:52:25.460 [DEBUG] [Thread-201622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:52:25.460 [DEBUG] [Thread-201622] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:52:25.468 [DEBUG] [Thread-201622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:52:25.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:52:25.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-11-25T02:52:25.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-11-25T02:52:25.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:52:25.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:52:25.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:52:25.511 [DEBUG] [Thread-201622] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:52:29.250 [DEBUG] [Thread-201624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:30.949 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:39.688 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:39.690 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:41.408 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:44.397 [DEBUG] [Thread-201625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:51.845 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:55.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:52:55.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:52:55.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-11-25T02:52:56.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 52, 20), 12.51, 42.01, 0.0, 23.59, 11.97, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:52:56.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:52:20
2025-11-25T02:52:56.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:52:56.803 [DEBUG] [Thread-201626] [transport.py] [_log()] starting thread (client mode): 0xd319fe50
2025-11-25T02:52:56.805 [DEBUG] [Thread-201626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:52:56.812 [DEBUG] [Thread-201626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:52:56.812 [INFO] [Thread-201626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:52:56.817 [DEBUG] [Thread-201626] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:52:56.817 [DEBUG] [Thread-201626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:52:56.817 [DEBUG] [Thread-201626] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:52:56.817 [DEBUG] [Thread-201626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] client lang: <none>
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] server lang: <none>
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] kex follows: False
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:52:56.818 [DEBUG] [Thread-201626] [transport.py] [_log()] Compression: none
2025-11-25T02:52:56.819 [DEBUG] [Thread-201626] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:52:56.854 [DEBUG] [Thread-201626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:52:56.858 [DEBUG] [Thread-201626] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:52:56.860 [DEBUG] [Thread-201626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:52:56.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:52:56.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:52:56.863 [DEBUG] [Thread-201626] [transport.py] [_log()] userauth is OK
2025-11-25T02:52:56.863 [DEBUG] [Thread-201626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:52:56.863 [DEBUG] [Thread-201626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:52:56.863 [DEBUG] [Thread-201626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:52:56.863 [DEBUG] [Thread-201626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:52:56.891 [INFO] [Thread-201626] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:52:56.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:52:57.524 [DEBUG] [Thread-201626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:52:57.524 [DEBUG] [Thread-201626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:52:57.525 [DEBUG] [Thread-201626] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:52:57.565 [DEBUG] [Thread-201626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:52:57.565 [DEBUG] [Thread-201626] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:52:57.568 [DEBUG] [Thread-201626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:52:57.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:52:57.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:52:57.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:52:57.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:52:57.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:52:57.587 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:52:57.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:52:57.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:52:57.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:52:57.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.036557 -999.00  +12.00  19.95     47   +1.10 1 1 1 1 1     0    0 10.65 -15.28 ZNESW 17.6 19.9 126.2 28.9 12.5 -24.4 12.3 -23.8 12.0 -22.7 12.4 -23.7
2025-11-25T02:52:57.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:52:57.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:52:57.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.036557
2025-11-25T02:52:57.594 [DEBUG] [Thread-201626] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:52:57.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:52:57.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:52:57.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:52:57.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:52:57.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:52:57.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:52:20', tmtdew=12.51, humidity=42.01, cloud=0.0, wind=23.59, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:52:53', seeing=0.73, atlas_timestamp='2025-11-25T00:52:38.525', atlas_cloud=1, atlas_rain=1, zp_data=[-0.023749999999999716, -0.03824999999999967, 0.009249999999999758, -0.040500000000001535, 0.0019999999999988916, 0.007750000000001478, -0.01950000000000074, -0.0067499999999984794, 0.0034999999999989484, -0.026999999999999247, -0.016750000000000043, -0.040000000000000924, 0.07949999999999946, 0.07324999999999982, -0.03550000000000075, 0.0004999999999988347, 0.0017500000000012506, -0.010500000000000398, -0.03900000000000148, -0.024750000000000938, 0.08399999999999785, 0.10174999999999912, 0.039250000000000895, 0.016750000000000043, 0.01750000000000007, 0.018499999999999517, 0.009250000000001535, 0.0024999999999995026, 0.08300000000000018, 0.11149999999999949, 0.038000000000000256, -0.00549999999999784, 0.01974999999999838], zp_timestamp='2025-11-25T00:50:00')
2025-11-25T02:52:57.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:52:57.699 [DEBUG] [Thread-201629] [transport.py] [_log()] starting thread (client mode): 0xd319ebf0
2025-11-25T02:52:57.699 [DEBUG] [Thread-201629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:52:57.714 [DEBUG] [Thread-201629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:52:57.714 [INFO] [Thread-201629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] client lang: <none>
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] server lang: <none>
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] kex follows: False
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:52:57.721 [DEBUG] [Thread-201629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:52:57.722 [DEBUG] [Thread-201629] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:52:57.722 [DEBUG] [Thread-201629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:52:57.722 [DEBUG] [Thread-201629] [transport.py] [_log()] Compression: none
2025-11-25T02:52:57.722 [DEBUG] [Thread-201629] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:52:57.779 [DEBUG] [Thread-201629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:52:57.779 [DEBUG] [Thread-201629] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:52:57.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:52:57.780 [DEBUG] [Thread-201629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:52:57.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:52:57.836 [DEBUG] [Thread-201629] [transport.py] [_log()] userauth is OK
2025-11-25T02:52:57.836 [DEBUG] [Thread-201629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:52:57.836 [DEBUG] [Thread-201629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:52:57.836 [DEBUG] [Thread-201629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:52:57.836 [DEBUG] [Thread-201629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:52:57.854 [INFO] [Thread-201629] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:52:57.854 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:52:57.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:52:58.700 [DEBUG] [Thread-201629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:52:58.700 [DEBUG] [Thread-201629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:52:58.749 [DEBUG] [Thread-201629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:52:58.749 [DEBUG] [Thread-201629] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:52:58.757 [DEBUG] [Thread-201629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:52:58.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:52:58.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-11-25T02:52:58.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-11-25T02:52:58.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:52:58.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:52:58.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:52:58.790 [DEBUG] [Thread-201629] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:52:58.859 [DEBUG] [Thread-201631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:52:59.444 [DEBUG] [Thread-201632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:02.236 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:12.692 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:14.581 [DEBUG] [Thread-201633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:23.111 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:28.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:53:28.795 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:53:28.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T02:53:29.639 [DEBUG] [Thread-201634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:29.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 52, 53), 12.46, 41.99, 0.0, 25.9, 11.97, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:53:29.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:52:53
2025-11-25T02:53:29.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:53:30.089 [DEBUG] [Thread-201635] [transport.py] [_log()] starting thread (client mode): 0xd3150700
2025-11-25T02:53:30.090 [DEBUG] [Thread-201635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:53:30.096 [DEBUG] [Thread-201635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:53:30.096 [INFO] [Thread-201635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] client lang: <none>
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] server lang: <none>
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] kex follows: False
2025-11-25T02:53:30.102 [DEBUG] [Thread-201635] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:53:30.103 [DEBUG] [Thread-201635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:53:30.103 [DEBUG] [Thread-201635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:53:30.103 [DEBUG] [Thread-201635] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:53:30.103 [DEBUG] [Thread-201635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:53:30.103 [DEBUG] [Thread-201635] [transport.py] [_log()] Compression: none
2025-11-25T02:53:30.103 [DEBUG] [Thread-201635] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:53:30.136 [DEBUG] [Thread-201635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:53:30.139 [DEBUG] [Thread-201635] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:53:30.141 [DEBUG] [Thread-201635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:53:30.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:53:30.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:53:30.144 [DEBUG] [Thread-201635] [transport.py] [_log()] userauth is OK
2025-11-25T02:53:30.144 [DEBUG] [Thread-201635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:53:30.145 [DEBUG] [Thread-201635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:53:30.145 [DEBUG] [Thread-201635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:53:30.145 [DEBUG] [Thread-201635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:53:30.162 [INFO] [Thread-201635] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:53:30.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:53:30.818 [DEBUG] [Thread-201635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:53:30.818 [DEBUG] [Thread-201635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:53:30.828 [DEBUG] [Thread-201635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:53:30.859 [DEBUG] [Thread-201635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:53:30.859 [DEBUG] [Thread-201635] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:53:30.863 [DEBUG] [Thread-201635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:53:30.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:53:30.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:53:30.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:53:30.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:53:30.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:53:30.889 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:53:30.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:53:30.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:53:30.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:53:30.892 [DEBUG] [Thread-201635] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:53:30.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.036904 -999.00  +12.00  22.69     47   +1.10 1 1 1 1 1     0    0 10.61 -15.15 ZNESW 20.0 22.7 132.2 25.7 12.5 -24.4 12.3 -23.9 12.1 -22.9 12.4 -23.7
2025-11-25T02:53:30.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:53:30.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:53:30.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.036904
2025-11-25T02:53:30.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:53:30.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:53:30.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:53:30.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:53:30.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:53:30.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:52:53', tmtdew=12.46, humidity=41.99, cloud=0.0, wind=25.9, temperature=11.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:53:27', seeing=0.78, atlas_timestamp='2025-11-25T00:53:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.023749999999999716, -0.03824999999999967, 0.009249999999999758, -0.040500000000001535, 0.0019999999999988916, 0.007750000000001478, -0.01950000000000074, -0.0067499999999984794, 0.0034999999999989484, -0.026999999999999247, -0.016750000000000043, -0.040000000000000924, 0.07949999999999946, 0.07324999999999982, -0.03550000000000075, 0.0004999999999988347, 0.0017500000000012506, -0.010500000000000398, -0.03900000000000148, -0.024750000000000938, 0.08399999999999785, 0.10174999999999912, 0.039250000000000895, 0.016750000000000043, 0.01750000000000007, 0.018499999999999517, 0.009250000000001535, 0.0024999999999995026, 0.08300000000000018, 0.11149999999999949, 0.038000000000000256, -0.00549999999999784, 0.01974999999999838], zp_timestamp='2025-11-25T00:50:00')
2025-11-25T02:53:30.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:53:31.001 [DEBUG] [Thread-201638] [transport.py] [_log()] starting thread (client mode): 0xd073bf70
2025-11-25T02:53:31.001 [DEBUG] [Thread-201638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:53:31.016 [DEBUG] [Thread-201638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:53:31.016 [INFO] [Thread-201638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] client lang: <none>
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] server lang: <none>
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] kex follows: False
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] Compression: none
2025-11-25T02:53:31.023 [DEBUG] [Thread-201638] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:53:31.082 [DEBUG] [Thread-201638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:53:31.082 [DEBUG] [Thread-201638] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:53:31.083 [DEBUG] [Thread-201638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:53:31.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:53:31.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:53:31.140 [DEBUG] [Thread-201638] [transport.py] [_log()] userauth is OK
2025-11-25T02:53:31.140 [DEBUG] [Thread-201638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:53:31.141 [DEBUG] [Thread-201638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:53:31.141 [DEBUG] [Thread-201638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:53:31.141 [DEBUG] [Thread-201638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:53:31.160 [INFO] [Thread-201638] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:53:31.160 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:53:31.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:53:32.084 [DEBUG] [Thread-201638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:53:32.084 [DEBUG] [Thread-201638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:53:32.132 [DEBUG] [Thread-201638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:53:32.132 [DEBUG] [Thread-201638] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:53:32.142 [DEBUG] [Thread-201638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:53:32.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:53:32.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-11-25T02:53:32.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T02:53:32.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:53:32.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:53:32.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:53:32.180 [DEBUG] [Thread-201638] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:53:33.545 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:39.927 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:39.935 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:44.044 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:44.739 [DEBUG] [Thread-201640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:54.579 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:59.109 [DEBUG] [Thread-201641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:53:59.883 [DEBUG] [Thread-201642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:02.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:54:02.204 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:54:02.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-11-25T02:54:03.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 53, 26), 12.46, 42.01, 0.0, 25.55, 11.99, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:54:03.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:53:26
2025-11-25T02:54:03.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:54:03.481 [DEBUG] [Thread-201643] [transport.py] [_log()] starting thread (client mode): 0xd319f9a0
2025-11-25T02:54:03.482 [DEBUG] [Thread-201643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:54:03.493 [DEBUG] [Thread-201643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:54:03.494 [INFO] [Thread-201643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] client lang: <none>
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] server lang: <none>
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] kex follows: False
2025-11-25T02:54:03.498 [DEBUG] [Thread-201643] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:54:03.499 [DEBUG] [Thread-201643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:54:03.499 [DEBUG] [Thread-201643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:54:03.499 [DEBUG] [Thread-201643] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:54:03.499 [DEBUG] [Thread-201643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:54:03.499 [DEBUG] [Thread-201643] [transport.py] [_log()] Compression: none
2025-11-25T02:54:03.499 [DEBUG] [Thread-201643] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:54:03.525 [DEBUG] [Thread-201643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:54:03.528 [DEBUG] [Thread-201643] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:54:03.529 [DEBUG] [Thread-201643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:54:03.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:54:03.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:54:03.532 [DEBUG] [Thread-201643] [transport.py] [_log()] userauth is OK
2025-11-25T02:54:03.532 [DEBUG] [Thread-201643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:54:03.532 [DEBUG] [Thread-201643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:54:03.532 [DEBUG] [Thread-201643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:54:03.532 [DEBUG] [Thread-201643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:54:03.550 [INFO] [Thread-201643] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:54:03.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:54:04.200 [DEBUG] [Thread-201643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:54:04.200 [DEBUG] [Thread-201643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:54:04.201 [DEBUG] [Thread-201643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:54:04.241 [DEBUG] [Thread-201643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:54:04.241 [DEBUG] [Thread-201643] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:54:04.244 [DEBUG] [Thread-201643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:54:04.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:54:04.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:54:04.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:54:04.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:54:04.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:54:04.267 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:54:04.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:54:04.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:54:04.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:54:04.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.037194 -999.00  +11.90  22.04     47   +1.00 1 1 1 1 1     0    0 10.61 -14.42 ZNESW 22.0 22.0 127.2 25.3 12.5 -24.4 12.3 -23.9 12.0 -22.8 12.3 -23.7
2025-11-25T02:54:04.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:54:04.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:54:04.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.037194
2025-11-25T02:54:04.274 [DEBUG] [Thread-201643] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:54:04.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:54:04.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:54:04.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:54:04.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:54:04.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:54:04.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:53:26', tmtdew=12.46, humidity=42.01, cloud=0.0, wind=25.55, temperature=11.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:54:00', seeing=0.78, atlas_timestamp='2025-11-25T00:53:33.562', atlas_cloud=1, atlas_rain=1, zp_data=[-0.023749999999999716, -0.03824999999999967, 0.009249999999999758, -0.040500000000001535, 0.0019999999999988916, 0.007750000000001478, -0.01950000000000074, -0.0067499999999984794, 0.0034999999999989484, -0.026999999999999247, -0.016750000000000043, -0.040000000000000924, 0.07949999999999946, 0.07324999999999982, -0.03550000000000075, 0.0004999999999988347, 0.0017500000000012506, -0.010500000000000398, -0.03900000000000148, -0.024750000000000938, 0.08399999999999785, 0.10174999999999912, 0.039250000000000895, 0.016750000000000043, 0.01750000000000007, 0.018499999999999517, 0.009250000000001535, 0.0024999999999995026, 0.08300000000000018, 0.11149999999999949, 0.038000000000000256, -0.00549999999999784, 0.01974999999999838], zp_timestamp='2025-11-25T00:50:00')
2025-11-25T02:54:04.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:54:04.374 [DEBUG] [Thread-201646] [transport.py] [_log()] starting thread (client mode): 0xd0711bd0
2025-11-25T02:54:04.374 [DEBUG] [Thread-201646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:54:04.389 [DEBUG] [Thread-201646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:54:04.389 [INFO] [Thread-201646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:54:04.396 [DEBUG] [Thread-201646] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:54:04.396 [DEBUG] [Thread-201646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] client lang: <none>
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] server lang: <none>
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] kex follows: False
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] Compression: none
2025-11-25T02:54:04.397 [DEBUG] [Thread-201646] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:54:04.457 [DEBUG] [Thread-201646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:54:04.457 [DEBUG] [Thread-201646] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:54:04.458 [DEBUG] [Thread-201646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:54:04.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:54:04.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:54:04.512 [DEBUG] [Thread-201646] [transport.py] [_log()] userauth is OK
2025-11-25T02:54:04.513 [DEBUG] [Thread-201646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:54:04.513 [DEBUG] [Thread-201646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:54:04.513 [DEBUG] [Thread-201646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:54:04.513 [DEBUG] [Thread-201646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:54:04.531 [INFO] [Thread-201646] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:54:04.532 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:54:04.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:54:05.070 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:05.381 [DEBUG] [Thread-201646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:54:05.381 [DEBUG] [Thread-201646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:54:05.429 [DEBUG] [Thread-201646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:54:05.429 [DEBUG] [Thread-201646] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:54:05.438 [DEBUG] [Thread-201646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:54:05.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:54:05.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T02:54:05.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-11-25T02:54:05.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:54:05.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:54:05.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:54:05.486 [DEBUG] [Thread-201646] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:54:14.922 [DEBUG] [Thread-201648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:15.515 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:25.955 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:30.020 [DEBUG] [Thread-201649 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:35.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:54:35.506 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:54:35.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-11-25T02:54:36.402 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:36.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 53, 26), 12.51, 42.01, 0.0, 25.55, 11.99, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:54:36.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:53:26
2025-11-25T02:54:36.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:54:36.790 [DEBUG] [Thread-201650] [transport.py] [_log()] starting thread (client mode): 0xd07134f0
2025-11-25T02:54:36.791 [DEBUG] [Thread-201650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:54:36.792 [DEBUG] [Thread-201650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:54:36.792 [INFO] [Thread-201650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] client lang: <none>
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] server lang: <none>
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] kex follows: False
2025-11-25T02:54:36.796 [DEBUG] [Thread-201650] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:54:36.797 [DEBUG] [Thread-201650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:54:36.797 [DEBUG] [Thread-201650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:54:36.797 [DEBUG] [Thread-201650] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:54:36.797 [DEBUG] [Thread-201650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:54:36.797 [DEBUG] [Thread-201650] [transport.py] [_log()] Compression: none
2025-11-25T02:54:36.797 [DEBUG] [Thread-201650] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:54:36.818 [DEBUG] [Thread-201650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:54:36.821 [DEBUG] [Thread-201650] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:54:36.822 [DEBUG] [Thread-201650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:54:36.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:54:36.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:54:36.825 [DEBUG] [Thread-201650] [transport.py] [_log()] userauth is OK
2025-11-25T02:54:36.825 [DEBUG] [Thread-201650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:54:36.825 [DEBUG] [Thread-201650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:54:36.825 [DEBUG] [Thread-201650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:54:36.825 [DEBUG] [Thread-201650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:54:36.836 [INFO] [Thread-201650] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:54:36.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:54:37.402 [DEBUG] [Thread-201650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:54:37.402 [DEBUG] [Thread-201650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:54:37.402 [DEBUG] [Thread-201650] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:54:37.443 [DEBUG] [Thread-201650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:54:37.443 [DEBUG] [Thread-201650] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:54:37.445 [DEBUG] [Thread-201650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:54:37.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:54:37.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:54:37.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:54:37.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:54:37.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:54:37.467 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:54:37.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:54:37.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:54:37.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:54:37.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.037541 -999.00  +11.90  19.99     47   +1.00 1 1 1 1 1     0    0 10.41 -16.22 ZNESW 20.0 20.0 130.2 25.4 12.4 -24.5 12.3 -24.0 12.0 -22.7 12.3 -23.7
2025-11-25T02:54:37.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:54:37.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:54:37.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.037541
2025-11-25T02:54:37.476 [DEBUG] [Thread-201650] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:54:37.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:54:37.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:54:37.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:54:37.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:54:37.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:54:37.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:53:26', tmtdew=12.51, humidity=42.01, cloud=0.0, wind=25.55, temperature=11.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:54:34', seeing=0.71, atlas_timestamp='2025-11-25T00:54:03.542', atlas_cloud=1, atlas_rain=1, zp_data=[-0.023749999999999716, -0.03824999999999967, 0.009249999999999758, -0.040500000000001535, 0.0019999999999988916, 0.007750000000001478, -0.01950000000000074, -0.0067499999999984794, 0.0034999999999989484, -0.026999999999999247, -0.016750000000000043, -0.040000000000000924, 0.07949999999999946, 0.07324999999999982, -0.03550000000000075, 0.0004999999999988347, 0.0017500000000012506, -0.010500000000000398, -0.03900000000000148, -0.024750000000000938, 0.08399999999999785, 0.10174999999999912, 0.039250000000000895, 0.016750000000000043, 0.01750000000000007, 0.018499999999999517, 0.009250000000001535, 0.0024999999999995026, 0.08300000000000018, 0.11149999999999949, 0.038000000000000256, -0.00549999999999784, 0.01974999999999838], zp_timestamp='2025-11-25T00:52:00')
2025-11-25T02:54:37.564 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:54:37.575 [DEBUG] [Thread-201653] [transport.py] [_log()] starting thread (client mode): 0xc9b744f0
2025-11-25T02:54:37.575 [DEBUG] [Thread-201653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:54:37.590 [DEBUG] [Thread-201653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T02:54:37.591 [INFO] [Thread-201653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T02:54:37.598 [DEBUG] [Thread-201653] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:54:37.598 [DEBUG] [Thread-201653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T02:54:37.599 [DEBUG] [Thread-201653] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:54:37.599 [DEBUG] [Thread-201653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:54:37.599 [DEBUG] [Thread-201653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:54:37.599 [DEBUG] [Thread-201653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:54:37.599 [DEBUG] [Thread-201653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:54:37.599 [DEBUG] [Thread-201653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:54:37.599 [DEBUG] [Thread-201653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:54:37.599 [DEBUG] [Thread-201653] [transport.py] [_log()] client lang: <none>
2025-11-25T02:54:37.599 [DEBUG] [Thread-201653] [transport.py] [_log()] server lang: <none>
2025-11-25T02:54:37.599 [DEBUG] [Thread-201653] [transport.py] [_log()] kex follows: False
2025-11-25T02:54:37.600 [DEBUG] [Thread-201653] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:54:37.600 [DEBUG] [Thread-201653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:54:37.600 [DEBUG] [Thread-201653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:54:37.600 [DEBUG] [Thread-201653] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:54:37.600 [DEBUG] [Thread-201653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:54:37.600 [DEBUG] [Thread-201653] [transport.py] [_log()] Compression: none
2025-11-25T02:54:37.600 [DEBUG] [Thread-201653] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:54:37.656 [DEBUG] [Thread-201653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:54:37.656 [DEBUG] [Thread-201653] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:54:37.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T02:54:37.657 [DEBUG] [Thread-201653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T02:54:37.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:54:37.712 [DEBUG] [Thread-201653] [transport.py] [_log()] userauth is OK
2025-11-25T02:54:37.712 [DEBUG] [Thread-201653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:54:37.712 [DEBUG] [Thread-201653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:54:37.712 [DEBUG] [Thread-201653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T02:54:37.712 [DEBUG] [Thread-201653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:54:37.728 [INFO] [Thread-201653] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:54:37.728 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T02:54:37.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:54:38.572 [DEBUG] [Thread-201653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:54:38.573 [DEBUG] [Thread-201653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:54:38.621 [DEBUG] [Thread-201653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:54:38.622 [DEBUG] [Thread-201653] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:54:38.633 [DEBUG] [Thread-201653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:54:38.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:54:38.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-11-25T02:54:38.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-11-25T02:54:38.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:54:38.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:54:38.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:54:38.686 [DEBUG] [Thread-201653] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:54:40.140 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:40.141 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:45.106 [DEBUG] [Thread-201655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:46.853 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:57.304 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:54:59.380 [DEBUG] [Thread-201656 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:00.234 [DEBUG] [Thread-201657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:07.742 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:08.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:55:08.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:55:08.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-11-25T02:55:09.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 54, 34), 12.52, 41.99, 0.0, 24.47, 12.0, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:55:09.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:54:34
2025-11-25T02:55:09.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:55:10.001 [DEBUG] [Thread-201658] [transport.py] [_log()] starting thread (client mode): 0xd0713640
2025-11-25T02:55:10.002 [DEBUG] [Thread-201658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:55:10.003 [DEBUG] [Thread-201658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:55:10.003 [INFO] [Thread-201658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] client lang: <none>
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] server lang: <none>
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] kex follows: False
2025-11-25T02:55:10.009 [DEBUG] [Thread-201658] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:55:10.010 [DEBUG] [Thread-201658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:55:10.010 [DEBUG] [Thread-201658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:55:10.010 [DEBUG] [Thread-201658] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:55:10.011 [DEBUG] [Thread-201658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:55:10.011 [DEBUG] [Thread-201658] [transport.py] [_log()] Compression: none
2025-11-25T02:55:10.011 [DEBUG] [Thread-201658] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:55:10.031 [DEBUG] [Thread-201658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:55:10.034 [DEBUG] [Thread-201658] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:55:10.035 [DEBUG] [Thread-201658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:55:10.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:55:10.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:55:10.039 [DEBUG] [Thread-201658] [transport.py] [_log()] userauth is OK
2025-11-25T02:55:10.039 [DEBUG] [Thread-201658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:55:10.039 [DEBUG] [Thread-201658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:55:10.039 [DEBUG] [Thread-201658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:55:10.039 [DEBUG] [Thread-201658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:55:10.051 [INFO] [Thread-201658] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:55:10.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:55:12.900 [DEBUG] [Thread-201658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:55:12.901 [DEBUG] [Thread-201658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:55:12.902 [DEBUG] [Thread-201658] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:55:12.941 [DEBUG] [Thread-201658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:55:12.941 [DEBUG] [Thread-201658] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:55:12.943 [DEBUG] [Thread-201658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:55:12.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:55:12.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:55:12.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:55:12.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:55:12.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:55:12.963 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:55:12.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:55:12.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:55:12.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:55:12.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.038235 -999.00  +11.90  18.91     47   +1.00 1 1 1 1 1     0    0 10.38 -15.82 ZNESW 18.9 18.9 119.8 23.7 12.4 -24.5 12.2 -24.1 12.0 -22.9 12.3 -23.8
2025-11-25T02:55:12.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:55:12.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:55:12.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.038235
2025-11-25T02:55:12.975 [DEBUG] [Thread-201658] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:55:12.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:55:12.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:55:12.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:55:12.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:55:12.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:55:12.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:54:34', tmtdew=12.52, humidity=41.99, cloud=0.0, wind=24.47, temperature=12.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:55:07', seeing=0.73, atlas_timestamp='2025-11-25T00:55:03.504', atlas_cloud=1, atlas_rain=1, zp_data=[-0.023749999999999716, -0.03824999999999967, 0.009249999999999758, -0.040500000000001535, 0.0019999999999988916, 0.007750000000001478, -0.01950000000000074, -0.0067499999999984794, 0.0034999999999989484, -0.026999999999999247, -0.016750000000000043, -0.040000000000000924, 0.07949999999999946, 0.07324999999999982, -0.03550000000000075, 0.0004999999999988347, 0.0017500000000012506, -0.010500000000000398, -0.03900000000000148, -0.024750000000000938, 0.08399999999999785, 0.10174999999999912, 0.039250000000000895, 0.016750000000000043, 0.01750000000000007, 0.018499999999999517, 0.009250000000001535, 0.0024999999999995026, 0.08300000000000018, 0.11149999999999949, 0.038000000000000256, -0.00549999999999784, 0.01974999999999838], zp_timestamp='2025-11-25T00:52:00')
2025-11-25T02:55:13.061 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:55:15.324 [DEBUG] [Thread-201661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:18.131 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:28.546 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:30.510 [DEBUG] [Thread-201662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:38.988 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:40.416 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:40.430 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:45.583 [DEBUG] [Thread-201663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:49.423 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:59.731 [DEBUG] [Thread-201664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:55:59.848 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:00.663 [DEBUG] [Thread-201665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:10.262 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:15.757 [DEBUG] [Thread-201666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:20.669 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:30.863 [DEBUG] [Thread-201667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:31.100 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:40.645 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:40.648 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:41.531 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:45.944 [DEBUG] [Thread-201668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:56:51.979 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:00.061 [DEBUG] [Thread-201669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:00.971 [DEBUG] [Thread-201670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:02.394 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:12.819 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:16.035 [DEBUG] [Thread-201671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:23.248 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:26.463 [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-11-25T02:57:31.126 [DEBUG] [Thread-201672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:33.746 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:40.855 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:40.857 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:44.167 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:46.206 [DEBUG] [Thread-201673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:54.598 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:57:56.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T02:57:56.481 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T02:57:56.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-11-25T02:57:57.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 2, 57, 52), 12.4, 42.52, 0.0, 27.45, 11.87, 0, 0, 0, 2, 0, 0),)
2025-11-25T02:57:57.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 02:57:52
2025-11-25T02:57:57.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T02:57:57.629 [DEBUG] [Thread-201674] [transport.py] [_log()] starting thread (client mode): 0xd0710190
2025-11-25T02:57:57.630 [DEBUG] [Thread-201674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T02:57:57.638 [DEBUG] [Thread-201674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T02:57:57.638 [INFO] [Thread-201674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T02:57:57.652 [DEBUG] [Thread-201674] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T02:57:57.652 [DEBUG] [Thread-201674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T02:57:57.652 [DEBUG] [Thread-201674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T02:57:57.652 [DEBUG] [Thread-201674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:57:57.652 [DEBUG] [Thread-201674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T02:57:57.652 [DEBUG] [Thread-201674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:57:57.653 [DEBUG] [Thread-201674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T02:57:57.653 [DEBUG] [Thread-201674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T02:57:57.653 [DEBUG] [Thread-201674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T02:57:57.653 [DEBUG] [Thread-201674] [transport.py] [_log()] client lang: <none>
2025-11-25T02:57:57.653 [DEBUG] [Thread-201674] [transport.py] [_log()] server lang: <none>
2025-11-25T02:57:57.653 [DEBUG] [Thread-201674] [transport.py] [_log()] kex follows: False
2025-11-25T02:57:57.653 [DEBUG] [Thread-201674] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T02:57:57.653 [DEBUG] [Thread-201674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T02:57:57.653 [DEBUG] [Thread-201674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T02:57:57.654 [DEBUG] [Thread-201674] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T02:57:57.654 [DEBUG] [Thread-201674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T02:57:57.654 [DEBUG] [Thread-201674] [transport.py] [_log()] Compression: none
2025-11-25T02:57:57.654 [DEBUG] [Thread-201674] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T02:57:57.689 [DEBUG] [Thread-201674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T02:57:57.694 [DEBUG] [Thread-201674] [transport.py] [_log()] Switch to new keys ...
2025-11-25T02:57:57.696 [DEBUG] [Thread-201674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T02:57:57.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T02:57:57.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T02:57:57.701 [DEBUG] [Thread-201674] [transport.py] [_log()] userauth is OK
2025-11-25T02:57:57.701 [DEBUG] [Thread-201674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T02:57:57.701 [DEBUG] [Thread-201674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T02:57:57.701 [DEBUG] [Thread-201674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T02:57:57.701 [DEBUG] [Thread-201674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T02:57:57.739 [INFO] [Thread-201674] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T02:57:57.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T02:57:58.388 [DEBUG] [Thread-201674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T02:57:58.388 [DEBUG] [Thread-201674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T02:57:58.390 [DEBUG] [Thread-201674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T02:57:58.429 [DEBUG] [Thread-201674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T02:57:58.430 [DEBUG] [Thread-201674] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T02:57:58.432 [DEBUG] [Thread-201674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T02:57:58.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T02:57:58.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T02:57:58.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T02:57:58.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T02:57:58.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T02:57:58.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T02:57:58.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T02:57:58.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T02:57:58.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T02:57:58.461 [DEBUG] [Thread-201674] [transport.py] [_log()] EOF in transport thread
2025-11-25T02:57:58.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.039624 -999.00  +11.80  19.35     47   +1.00 1 1 1 1 1     0    0 10.59 -17.31 ZNESW 19.4 19.4 125.6 27.1 12.3 -24.5 12.2 -23.9 12.0 -22.9 12.3 -23.7
2025-11-25T02:57:58.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T02:57:58.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T02:57:58.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.039624
2025-11-25T02:57:58.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T02:57:58.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T02:57:58.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T02:57:58.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T02:57:58.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T02:57:58.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T02:57:52', tmtdew=12.4, humidity=42.52, cloud=0.0, wind=27.45, temperature=11.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T02:57:53', seeing=0.81, atlas_timestamp='2025-11-25T00:57:03.514', atlas_cloud=1, atlas_rain=1, zp_data=[-0.04374999999999929, -0.04374999999999929, 0.02474999999999916, -0.029500000000000526, -0.012000000000000455, 0.05025000000000013, -0.015000000000000568, -0.009749999999998593, -0.017500000000001847, -0.016000000000000014, -0.010749999999999815, -0.04699999999999882, 0.05000000000000071, 0.10125000000000028, -0.017000000000001236, 0.03500000000000014, 0.02624999999999922, 0.005499999999999616, -0.01950000000000074, -0.006750000000000256, 0.08699999999999797, 0.0902499999999975, 0.03375000000000128, 0.013250000000001094, 0.019000000000000128, 0.033500000000000085, 0.004749999999999588, 0.00849999999999973, 0.10200000000000031, 0.11600000000000144, 0.03700000000000081, 0.03200000000000003, 0.016750000000000043], zp_timestamp='2025-11-25T00:55:00')
2025-11-25T02:57:58.568 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T02:58:00.379 [DEBUG] [Thread-201677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:01.301 [DEBUG] [Thread-201678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:05.026 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:15.438 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:16.447 [DEBUG] [Thread-201679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:25.894 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:31.505 [DEBUG] [Thread-201680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:36.372 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:41.069 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:41.071 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:46.581 [DEBUG] [Thread-201681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:46.793 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:58:57.201 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:00.725 [DEBUG] [Thread-201682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:01.622 [DEBUG] [Thread-201683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:07.637 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:16.730 [DEBUG] [Thread-201684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:18.048 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:28.471 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:31.800 [DEBUG] [Thread-201685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:38.893 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:41.276 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:41.278 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:46.879 [DEBUG] [Thread-201686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:49.314 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T02:59:59.736 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:01.094 [DEBUG] [Thread-201687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:02.032 [DEBUG] [Thread-201688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:10.150 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:10.311 [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-11-25T03:00:17.103 [DEBUG] [Thread-201689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:20.586 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:31.053 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:32.215 [DEBUG] [Thread-201690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:40.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:00:40.358 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:00:40.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-11-25T03:00:41.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 0, 5), 12.3, 42.67, 0.0, 22.3, 11.82, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:00:41.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:00:05
2025-11-25T03:00:41.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:00:41.485 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:41.489 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:41.534 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:41.590 [DEBUG] [Thread-201691] [transport.py] [_log()] starting thread (client mode): 0xd3149570
2025-11-25T03:00:41.591 [DEBUG] [Thread-201691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:00:41.598 [DEBUG] [Thread-201691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:00:41.598 [INFO] [Thread-201691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:00:41.603 [DEBUG] [Thread-201691] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:00:41.603 [DEBUG] [Thread-201691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:00:41.603 [DEBUG] [Thread-201691] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:00:41.603 [DEBUG] [Thread-201691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:00:41.603 [DEBUG] [Thread-201691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:00:41.603 [DEBUG] [Thread-201691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:00:41.603 [DEBUG] [Thread-201691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:00:41.603 [DEBUG] [Thread-201691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:00:41.603 [DEBUG] [Thread-201691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:00:41.603 [DEBUG] [Thread-201691] [transport.py] [_log()] client lang: <none>
2025-11-25T03:00:41.604 [DEBUG] [Thread-201691] [transport.py] [_log()] server lang: <none>
2025-11-25T03:00:41.604 [DEBUG] [Thread-201691] [transport.py] [_log()] kex follows: False
2025-11-25T03:00:41.604 [DEBUG] [Thread-201691] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:00:41.604 [DEBUG] [Thread-201691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:00:41.604 [DEBUG] [Thread-201691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:00:41.604 [DEBUG] [Thread-201691] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:00:41.604 [DEBUG] [Thread-201691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:00:41.604 [DEBUG] [Thread-201691] [transport.py] [_log()] Compression: none
2025-11-25T03:00:41.604 [DEBUG] [Thread-201691] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:00:41.635 [DEBUG] [Thread-201691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:00:41.640 [DEBUG] [Thread-201691] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:00:41.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:00:41.642 [DEBUG] [Thread-201691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:00:41.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:00:41.644 [DEBUG] [Thread-201691] [transport.py] [_log()] userauth is OK
2025-11-25T03:00:41.644 [DEBUG] [Thread-201691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:00:41.644 [DEBUG] [Thread-201691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:00:41.644 [DEBUG] [Thread-201691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:00:41.645 [DEBUG] [Thread-201691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:00:41.663 [INFO] [Thread-201691] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:00:41.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:00:42.313 [DEBUG] [Thread-201691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:00:42.314 [DEBUG] [Thread-201691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:00:42.315 [DEBUG] [Thread-201691] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:00:42.354 [DEBUG] [Thread-201691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:00:42.355 [DEBUG] [Thread-201691] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:00:42.358 [DEBUG] [Thread-201691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:00:42.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:00:42.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:00:42.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:00:42.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:00:42.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:00:42.387 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:00:42.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:00:42.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:00:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:00:42.389 [DEBUG] [Thread-201691] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:00:42.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.041708 -999.00  +11.90  22.46     47   +1.10 1 1 1 1 1     0    0 10.26 -23.15 ZNESW 22.5 22.5 127.8 23.9 12.3 -24.4 12.2 -23.8 12.0 -22.9 12.3 -23.8
2025-11-25T03:00:42.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:00:42.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:00:42.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.041708
2025-11-25T03:00:42.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:00:42.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:00:42.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:00:42.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:00:42.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:00:42.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:00:05', tmtdew=12.3, humidity=42.67, cloud=0.0, wind=22.3, temperature=11.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:00:39', seeing=0.86, atlas_timestamp='2025-11-25T01:00:03.571', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T00:59:00')
2025-11-25T03:00:42.505 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:00:42.518 [DEBUG] [Thread-201694] [transport.py] [_log()] starting thread (client mode): 0xc9b81a80
2025-11-25T03:00:42.519 [DEBUG] [Thread-201694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:00:42.534 [DEBUG] [Thread-201694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:00:42.534 [INFO] [Thread-201694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:00:42.542 [DEBUG] [Thread-201694] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:00:42.542 [DEBUG] [Thread-201694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:00:42.542 [DEBUG] [Thread-201694] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:00:42.542 [DEBUG] [Thread-201694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:00:42.542 [DEBUG] [Thread-201694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:00:42.542 [DEBUG] [Thread-201694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:00:42.542 [DEBUG] [Thread-201694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] client lang: <none>
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] server lang: <none>
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] kex follows: False
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] Compression: none
2025-11-25T03:00:42.543 [DEBUG] [Thread-201694] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:00:42.600 [DEBUG] [Thread-201694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:00:42.601 [DEBUG] [Thread-201694] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:00:42.601 [DEBUG] [Thread-201694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:00:42.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:00:42.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:00:42.657 [DEBUG] [Thread-201694] [transport.py] [_log()] userauth is OK
2025-11-25T03:00:42.657 [DEBUG] [Thread-201694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:00:42.657 [DEBUG] [Thread-201694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:00:42.657 [DEBUG] [Thread-201694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:00:42.657 [DEBUG] [Thread-201694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:00:42.676 [INFO] [Thread-201694] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:00:42.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:00:42.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:00:43.514 [DEBUG] [Thread-201694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:00:43.514 [DEBUG] [Thread-201694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:00:43.562 [DEBUG] [Thread-201694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:00:43.562 [DEBUG] [Thread-201694] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:00:43.571 [DEBUG] [Thread-201694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:00:43.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:00:43.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-11-25T03:00:43.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-11-25T03:00:43.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:00:43.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:00:43.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:00:43.605 [DEBUG] [Thread-201694] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:00:47.278 [DEBUG] [Thread-201696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:00:51.921 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:01.463 [DEBUG] [Thread-201697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:02.353 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:02.377 [DEBUG] [Thread-201698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:12.782 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:13.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:01:13.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:01:13.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-11-25T03:01:14.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 0, 38), 12.33, 42.59, 0.0, 24.14, 11.9, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:01:14.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:00:38
2025-11-25T03:01:14.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:01:14.955 [DEBUG] [Thread-201699] [transport.py] [_log()] starting thread (client mode): 0xd3149cc0
2025-11-25T03:01:14.956 [DEBUG] [Thread-201699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:01:14.965 [DEBUG] [Thread-201699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:01:14.965 [INFO] [Thread-201699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] client lang: <none>
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] server lang: <none>
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] kex follows: False
2025-11-25T03:01:14.971 [DEBUG] [Thread-201699] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:01:14.972 [DEBUG] [Thread-201699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:01:14.972 [DEBUG] [Thread-201699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:01:14.972 [DEBUG] [Thread-201699] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:01:14.972 [DEBUG] [Thread-201699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:01:14.972 [DEBUG] [Thread-201699] [transport.py] [_log()] Compression: none
2025-11-25T03:01:14.972 [DEBUG] [Thread-201699] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:01:15.004 [DEBUG] [Thread-201699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:01:15.009 [DEBUG] [Thread-201699] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:01:15.010 [DEBUG] [Thread-201699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:01:15.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:01:15.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:01:15.014 [DEBUG] [Thread-201699] [transport.py] [_log()] userauth is OK
2025-11-25T03:01:15.014 [DEBUG] [Thread-201699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:01:15.014 [DEBUG] [Thread-201699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:01:15.014 [DEBUG] [Thread-201699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:01:15.014 [DEBUG] [Thread-201699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:01:15.036 [INFO] [Thread-201699] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:01:15.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:01:15.701 [DEBUG] [Thread-201699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:01:15.701 [DEBUG] [Thread-201699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:01:15.704 [DEBUG] [Thread-201699] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:01:15.742 [DEBUG] [Thread-201699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:01:15.742 [DEBUG] [Thread-201699] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:01:15.746 [DEBUG] [Thread-201699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:01:15.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:01:15.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:01:15.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:01:15.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:01:15.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:01:15.773 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:01:15.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:01:15.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:01:15.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:01:15.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.042055 -999.00  +11.90  18.75     47   +1.10 1 1 1 1 1     0    0 10.42 -24.78 ZNESW 18.8 18.8 128.4 25.9 12.3 -24.4 12.2 -24.0 11.9 -22.9 12.3 -23.7
2025-11-25T03:01:15.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:01:15.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:01:15.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.042055
2025-11-25T03:01:15.781 [DEBUG] [Thread-201699] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:01:15.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:01:15.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:01:15.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:01:15.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:01:15.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:01:15.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:00:38', tmtdew=12.33, humidity=42.59, cloud=0.0, wind=24.14, temperature=11.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:01:12', seeing=0.86, atlas_timestamp='2025-11-25T01:00:33.552', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T00:59:00')
2025-11-25T03:01:15.885 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:01:15.898 [DEBUG] [Thread-201702] [transport.py] [_log()] starting thread (client mode): 0xd0784fd0
2025-11-25T03:01:15.898 [DEBUG] [Thread-201702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:01:15.915 [DEBUG] [Thread-201702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:01:15.916 [INFO] [Thread-201702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:01:15.923 [DEBUG] [Thread-201702] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:01:15.923 [DEBUG] [Thread-201702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:01:15.924 [DEBUG] [Thread-201702] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:01:15.924 [DEBUG] [Thread-201702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:01:15.924 [DEBUG] [Thread-201702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:01:15.924 [DEBUG] [Thread-201702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:01:15.924 [DEBUG] [Thread-201702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:01:15.924 [DEBUG] [Thread-201702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:01:15.924 [DEBUG] [Thread-201702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:01:15.924 [DEBUG] [Thread-201702] [transport.py] [_log()] client lang: <none>
2025-11-25T03:01:15.925 [DEBUG] [Thread-201702] [transport.py] [_log()] server lang: <none>
2025-11-25T03:01:15.925 [DEBUG] [Thread-201702] [transport.py] [_log()] kex follows: False
2025-11-25T03:01:15.925 [DEBUG] [Thread-201702] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:01:15.925 [DEBUG] [Thread-201702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:01:15.925 [DEBUG] [Thread-201702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:01:15.925 [DEBUG] [Thread-201702] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:01:15.925 [DEBUG] [Thread-201702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:01:15.926 [DEBUG] [Thread-201702] [transport.py] [_log()] Compression: none
2025-11-25T03:01:15.926 [DEBUG] [Thread-201702] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:01:15.984 [DEBUG] [Thread-201702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:01:15.985 [DEBUG] [Thread-201702] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:01:15.985 [DEBUG] [Thread-201702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:01:15.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:01:15.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:01:16.040 [DEBUG] [Thread-201702] [transport.py] [_log()] userauth is OK
2025-11-25T03:01:16.041 [DEBUG] [Thread-201702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:01:16.041 [DEBUG] [Thread-201702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:01:16.041 [DEBUG] [Thread-201702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:01:16.041 [DEBUG] [Thread-201702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:01:16.057 [INFO] [Thread-201702] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:01:16.057 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:01:16.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:01:16.895 [DEBUG] [Thread-201702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:01:16.895 [DEBUG] [Thread-201702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:01:16.943 [DEBUG] [Thread-201702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:01:16.943 [DEBUG] [Thread-201702] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:01:16.951 [DEBUG] [Thread-201702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:01:16.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:01:16.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-11-25T03:01:16.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-11-25T03:01:16.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:01:16.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:01:16.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:01:16.998 [DEBUG] [Thread-201702] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:01:17.452 [DEBUG] [Thread-201704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:23.236 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:32.608 [DEBUG] [Thread-201705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:33.694 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:41.694 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:41.696 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:44.125 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:47.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:01:47.024 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:01:47.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-11-25T03:01:47.656 [DEBUG] [Thread-201706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:01:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 1, 12), 12.33, 42.61, 0.0, 23.5, 11.87, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:01:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:01:12
2025-11-25T03:01:48.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:01:48.393 [DEBUG] [Thread-201707] [transport.py] [_log()] starting thread (client mode): 0xd3149720
2025-11-25T03:01:48.394 [DEBUG] [Thread-201707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:01:48.404 [DEBUG] [Thread-201707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:01:48.404 [INFO] [Thread-201707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] client lang: <none>
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] server lang: <none>
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] kex follows: False
2025-11-25T03:01:48.409 [DEBUG] [Thread-201707] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:01:48.410 [DEBUG] [Thread-201707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:01:48.410 [DEBUG] [Thread-201707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:01:48.410 [DEBUG] [Thread-201707] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:01:48.410 [DEBUG] [Thread-201707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:01:48.410 [DEBUG] [Thread-201707] [transport.py] [_log()] Compression: none
2025-11-25T03:01:48.410 [DEBUG] [Thread-201707] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:01:48.442 [DEBUG] [Thread-201707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:01:48.446 [DEBUG] [Thread-201707] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:01:48.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:01:48.449 [DEBUG] [Thread-201707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:01:48.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:01:48.451 [DEBUG] [Thread-201707] [transport.py] [_log()] userauth is OK
2025-11-25T03:01:48.452 [DEBUG] [Thread-201707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:01:48.452 [DEBUG] [Thread-201707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:01:48.452 [DEBUG] [Thread-201707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:01:48.452 [DEBUG] [Thread-201707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:01:48.481 [INFO] [Thread-201707] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:01:48.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:01:49.127 [DEBUG] [Thread-201707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:01:49.128 [DEBUG] [Thread-201707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:01:49.129 [DEBUG] [Thread-201707] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:01:49.168 [DEBUG] [Thread-201707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:01:49.168 [DEBUG] [Thread-201707] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:01:49.170 [DEBUG] [Thread-201707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:01:49.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:01:49.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:01:49.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:01:49.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:01:49.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:01:49.191 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:01:49.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:01:49.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:01:49.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:01:49.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.042459 -999.00  +11.90  19.35     47   +1.10 1 1 1 1 1     0    0 10.18 -23.12 ZNESW 17.9 19.4 129.6 25.6 12.3 -24.6 12.2 -24.0 12.0 -22.8 12.2 -23.7
2025-11-25T03:01:49.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:01:49.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:01:49.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.042459
2025-11-25T03:01:49.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:01:49.203 [DEBUG] [Thread-201707] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:01:49.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:01:49.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:01:49.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:01:49.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:01:49.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:01:12', tmtdew=12.33, humidity=42.61, cloud=0.0, wind=23.5, temperature=11.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:01:45', seeing=0.8, atlas_timestamp='2025-11-25T01:01:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T00:59:00')
2025-11-25T03:01:49.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:01:49.300 [DEBUG] [Thread-201710] [transport.py] [_log()] starting thread (client mode): 0xc9b83940
2025-11-25T03:01:49.300 [DEBUG] [Thread-201710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:01:49.314 [DEBUG] [Thread-201710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:01:49.314 [INFO] [Thread-201710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:01:49.321 [DEBUG] [Thread-201710] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:01:49.321 [DEBUG] [Thread-201710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:01:49.321 [DEBUG] [Thread-201710] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:01:49.321 [DEBUG] [Thread-201710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:01:49.321 [DEBUG] [Thread-201710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:01:49.321 [DEBUG] [Thread-201710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:01:49.321 [DEBUG] [Thread-201710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:01:49.321 [DEBUG] [Thread-201710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:01:49.321 [DEBUG] [Thread-201710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:01:49.321 [DEBUG] [Thread-201710] [transport.py] [_log()] client lang: <none>
2025-11-25T03:01:49.322 [DEBUG] [Thread-201710] [transport.py] [_log()] server lang: <none>
2025-11-25T03:01:49.322 [DEBUG] [Thread-201710] [transport.py] [_log()] kex follows: False
2025-11-25T03:01:49.322 [DEBUG] [Thread-201710] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:01:49.322 [DEBUG] [Thread-201710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:01:49.322 [DEBUG] [Thread-201710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:01:49.322 [DEBUG] [Thread-201710] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:01:49.322 [DEBUG] [Thread-201710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:01:49.322 [DEBUG] [Thread-201710] [transport.py] [_log()] Compression: none
2025-11-25T03:01:49.322 [DEBUG] [Thread-201710] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:01:49.380 [DEBUG] [Thread-201710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:01:49.380 [DEBUG] [Thread-201710] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:01:49.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:01:49.381 [DEBUG] [Thread-201710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:01:49.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:01:49.436 [DEBUG] [Thread-201710] [transport.py] [_log()] userauth is OK
2025-11-25T03:01:49.437 [DEBUG] [Thread-201710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:01:49.437 [DEBUG] [Thread-201710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:01:49.437 [DEBUG] [Thread-201710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:01:49.437 [DEBUG] [Thread-201710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:01:49.451 [INFO] [Thread-201710] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:01:49.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:01:49.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:01:50.301 [DEBUG] [Thread-201710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:01:50.302 [DEBUG] [Thread-201710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:01:50.349 [DEBUG] [Thread-201710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:01:50.349 [DEBUG] [Thread-201710] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:01:50.357 [DEBUG] [Thread-201710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:01:50.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:01:50.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-11-25T03:01:50.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-11-25T03:01:50.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:01:50.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:01:50.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:01:50.390 [DEBUG] [Thread-201710] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:01:54.537 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:02.115 [DEBUG] [Thread-201712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:02.717 [DEBUG] [Thread-201713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:05.060 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:15.502 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:17.872 [DEBUG] [Thread-201714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:20.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:02:20.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:02:20.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-11-25T03:02:21.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 1, 45), 12.33, 42.61, 0.0, 22.53, 11.94, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:02:21.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:01:45
2025-11-25T03:02:21.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:02:21.669 [DEBUG] [Thread-201715] [transport.py] [_log()] starting thread (client mode): 0xd0710250
2025-11-25T03:02:21.670 [DEBUG] [Thread-201715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:02:21.671 [DEBUG] [Thread-201715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:02:21.671 [INFO] [Thread-201715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] client lang: <none>
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] server lang: <none>
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] kex follows: False
2025-11-25T03:02:21.675 [DEBUG] [Thread-201715] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:02:21.676 [DEBUG] [Thread-201715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:02:21.676 [DEBUG] [Thread-201715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:02:21.676 [DEBUG] [Thread-201715] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:02:21.676 [DEBUG] [Thread-201715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:02:21.676 [DEBUG] [Thread-201715] [transport.py] [_log()] Compression: none
2025-11-25T03:02:21.676 [DEBUG] [Thread-201715] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:02:21.703 [DEBUG] [Thread-201715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:02:21.706 [DEBUG] [Thread-201715] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:02:21.707 [DEBUG] [Thread-201715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:02:21.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:02:21.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:02:21.745 [DEBUG] [Thread-201715] [transport.py] [_log()] userauth is OK
2025-11-25T03:02:21.745 [DEBUG] [Thread-201715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:02:21.745 [DEBUG] [Thread-201715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:02:21.745 [DEBUG] [Thread-201715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:02:21.745 [DEBUG] [Thread-201715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:02:21.774 [INFO] [Thread-201715] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:02:21.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:02:22.405 [DEBUG] [Thread-201715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:02:22.405 [DEBUG] [Thread-201715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:02:22.409 [DEBUG] [Thread-201715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:02:22.446 [DEBUG] [Thread-201715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:02:22.446 [DEBUG] [Thread-201715] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:02:22.449 [DEBUG] [Thread-201715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:02:22.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:02:22.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:02:22.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:02:22.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:02:22.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:02:22.479 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:02:22.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:02:22.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:02:22.483 [DEBUG] [Thread-201715] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:02:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:02:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.043096 -999.00  +11.80  20.42     47   +1.10 1 1 1 1 1     0    0 10.41 -27.81 ZNESW 20.4 20.4 130.0 25.0 12.3 -24.5 12.2 -24.0 12.0 -22.9 12.3 -23.7
2025-11-25T03:02:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:02:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:02:22.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.043096
2025-11-25T03:02:22.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:02:22.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:02:22.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:02:22.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:02:22.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:02:22.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:01:45', tmtdew=12.33, humidity=42.61, cloud=0.0, wind=22.53, temperature=11.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:02:18', seeing=0.81, atlas_timestamp='2025-11-25T01:02:03.494', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T00:59:00')
2025-11-25T03:02:22.597 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:02:22.611 [DEBUG] [Thread-201718] [transport.py] [_log()] starting thread (client mode): 0xd31f5720
2025-11-25T03:02:22.611 [DEBUG] [Thread-201718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:02:22.625 [DEBUG] [Thread-201718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:02:22.626 [INFO] [Thread-201718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] client lang: <none>
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] server lang: <none>
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] kex follows: False
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:02:22.634 [DEBUG] [Thread-201718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:02:22.635 [DEBUG] [Thread-201718] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:02:22.635 [DEBUG] [Thread-201718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:02:22.635 [DEBUG] [Thread-201718] [transport.py] [_log()] Compression: none
2025-11-25T03:02:22.635 [DEBUG] [Thread-201718] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:02:22.693 [DEBUG] [Thread-201718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:02:22.693 [DEBUG] [Thread-201718] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:02:22.694 [DEBUG] [Thread-201718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:02:22.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:02:22.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:02:22.749 [DEBUG] [Thread-201718] [transport.py] [_log()] userauth is OK
2025-11-25T03:02:22.749 [DEBUG] [Thread-201718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:02:22.749 [DEBUG] [Thread-201718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:02:22.749 [DEBUG] [Thread-201718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:02:22.749 [DEBUG] [Thread-201718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:02:22.766 [INFO] [Thread-201718] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:02:22.768 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:02:22.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:02:23.615 [DEBUG] [Thread-201718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:02:23.615 [DEBUG] [Thread-201718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:02:23.663 [DEBUG] [Thread-201718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:02:23.663 [DEBUG] [Thread-201718] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:02:23.671 [DEBUG] [Thread-201718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:02:23.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:02:23.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-11-25T03:02:23.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-11-25T03:02:23.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:02:23.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:02:23.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:02:23.705 [DEBUG] [Thread-201718] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:02:25.900 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:32.929 [DEBUG] [Thread-201720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:36.337 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:41.899 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:41.901 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:46.765 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:48.059 [DEBUG] [Thread-201721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:02:53.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:02:53.729 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:02:53.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-11-25T03:02:54.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 2, 18), 12.3, 42.69, 0.0, 22.57, 11.9, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:02:54.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:02:18
2025-11-25T03:02:54.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:02:55.031 [DEBUG] [Thread-201722] [transport.py] [_log()] starting thread (client mode): 0xd073b700
2025-11-25T03:02:55.032 [DEBUG] [Thread-201722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:02:55.043 [DEBUG] [Thread-201722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:02:55.043 [INFO] [Thread-201722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:02:55.049 [DEBUG] [Thread-201722] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:02:55.049 [DEBUG] [Thread-201722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:02:55.049 [DEBUG] [Thread-201722] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:02:55.049 [DEBUG] [Thread-201722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:02:55.049 [DEBUG] [Thread-201722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:02:55.049 [DEBUG] [Thread-201722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:02:55.049 [DEBUG] [Thread-201722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:02:55.049 [DEBUG] [Thread-201722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:02:55.049 [DEBUG] [Thread-201722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:02:55.050 [DEBUG] [Thread-201722] [transport.py] [_log()] client lang: <none>
2025-11-25T03:02:55.050 [DEBUG] [Thread-201722] [transport.py] [_log()] server lang: <none>
2025-11-25T03:02:55.050 [DEBUG] [Thread-201722] [transport.py] [_log()] kex follows: False
2025-11-25T03:02:55.050 [DEBUG] [Thread-201722] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:02:55.050 [DEBUG] [Thread-201722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:02:55.050 [DEBUG] [Thread-201722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:02:55.051 [DEBUG] [Thread-201722] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:02:55.051 [DEBUG] [Thread-201722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:02:55.051 [DEBUG] [Thread-201722] [transport.py] [_log()] Compression: none
2025-11-25T03:02:55.051 [DEBUG] [Thread-201722] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:02:55.084 [DEBUG] [Thread-201722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:02:55.088 [DEBUG] [Thread-201722] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:02:55.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:02:55.091 [DEBUG] [Thread-201722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:02:55.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:02:55.093 [DEBUG] [Thread-201722] [transport.py] [_log()] userauth is OK
2025-11-25T03:02:55.094 [DEBUG] [Thread-201722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:02:55.094 [DEBUG] [Thread-201722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:02:55.094 [DEBUG] [Thread-201722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:02:55.094 [DEBUG] [Thread-201722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:02:55.112 [INFO] [Thread-201722] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:02:55.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:02:55.735 [DEBUG] [Thread-201722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:02:55.736 [DEBUG] [Thread-201722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:02:55.737 [DEBUG] [Thread-201722] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:02:55.776 [DEBUG] [Thread-201722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:02:55.776 [DEBUG] [Thread-201722] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:02:55.779 [DEBUG] [Thread-201722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:02:55.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:02:55.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:02:55.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:02:55.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:02:55.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:02:55.804 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:02:55.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:02:55.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:02:55.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:02:55.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.043443 -999.00  +11.90  19.74     47   +1.10 1 1 1 1 1     0    0 9.94 -27.03 ZNESW 19.7 19.7 125.2 26.1 12.4 -24.5 12.2 -24.0 12.0 -22.9 12.2 -23.6
2025-11-25T03:02:55.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:02:55.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:02:55.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.043443
2025-11-25T03:02:55.813 [DEBUG] [Thread-201722] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:02:55.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:02:55.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:02:55.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:02:55.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:02:55.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:02:55.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:02:18', tmtdew=12.3, humidity=42.69, cloud=0.0, wind=22.57, temperature=11.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:02:52', seeing=0.94, atlas_timestamp='2025-11-25T01:02:33.475', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T00:59:00')
2025-11-25T03:02:55.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:02:55.931 [DEBUG] [Thread-201725] [transport.py] [_log()] starting thread (client mode): 0xd31f42e0
2025-11-25T03:02:55.931 [DEBUG] [Thread-201725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:02:55.946 [DEBUG] [Thread-201725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:02:55.946 [INFO] [Thread-201725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] client lang: <none>
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] server lang: <none>
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] kex follows: False
2025-11-25T03:02:55.954 [DEBUG] [Thread-201725] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:02:55.955 [DEBUG] [Thread-201725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:02:55.955 [DEBUG] [Thread-201725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:02:55.955 [DEBUG] [Thread-201725] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:02:55.955 [DEBUG] [Thread-201725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:02:55.955 [DEBUG] [Thread-201725] [transport.py] [_log()] Compression: none
2025-11-25T03:02:55.955 [DEBUG] [Thread-201725] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:02:56.012 [DEBUG] [Thread-201725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:02:56.013 [DEBUG] [Thread-201725] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:02:56.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:02:56.014 [DEBUG] [Thread-201725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:02:56.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:02:56.068 [DEBUG] [Thread-201725] [transport.py] [_log()] userauth is OK
2025-11-25T03:02:56.069 [DEBUG] [Thread-201725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:02:56.069 [DEBUG] [Thread-201725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:02:56.069 [DEBUG] [Thread-201725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:02:56.069 [DEBUG] [Thread-201725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:02:56.092 [INFO] [Thread-201725] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:02:56.093 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:02:56.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:02:56.926 [DEBUG] [Thread-201725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:02:56.927 [DEBUG] [Thread-201725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:02:56.975 [DEBUG] [Thread-201725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:02:56.975 [DEBUG] [Thread-201725] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:02:56.984 [DEBUG] [Thread-201725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:02:56.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:02:56.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-11-25T03:02:57.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-11-25T03:02:57.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:02:57.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:02:57.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:02:57.023 [DEBUG] [Thread-201725] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:02:57.207 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:02.461 [DEBUG] [Thread-201727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:03.112 [DEBUG] [Thread-201728 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:07.701 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:18.211 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:18.264 [DEBUG] [Thread-201729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:03:27.068 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:03:27.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-11-25T03:03:28.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 2, 51), 12.25, 42.71, 0.0, 24.93, 11.92, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:03:28.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:02:51
2025-11-25T03:03:28.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:03:28.374 [DEBUG] [Thread-201730] [transport.py] [_log()] starting thread (client mode): 0xc9b769b0
2025-11-25T03:03:28.375 [DEBUG] [Thread-201730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:03:28.381 [DEBUG] [Thread-201730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:03:28.382 [INFO] [Thread-201730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] client lang: <none>
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] server lang: <none>
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] kex follows: False
2025-11-25T03:03:28.388 [DEBUG] [Thread-201730] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:03:28.389 [DEBUG] [Thread-201730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:03:28.389 [DEBUG] [Thread-201730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:03:28.390 [DEBUG] [Thread-201730] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:03:28.390 [DEBUG] [Thread-201730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:03:28.390 [DEBUG] [Thread-201730] [transport.py] [_log()] Compression: none
2025-11-25T03:03:28.390 [DEBUG] [Thread-201730] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:03:28.419 [DEBUG] [Thread-201730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:03:28.423 [DEBUG] [Thread-201730] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:03:28.425 [DEBUG] [Thread-201730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:03:28.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:03:28.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:03:28.428 [DEBUG] [Thread-201730] [transport.py] [_log()] userauth is OK
2025-11-25T03:03:28.428 [DEBUG] [Thread-201730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:03:28.429 [DEBUG] [Thread-201730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:03:28.429 [DEBUG] [Thread-201730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:03:28.429 [DEBUG] [Thread-201730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:03:28.446 [INFO] [Thread-201730] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:03:28.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:03:28.745 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:29.054 [DEBUG] [Thread-201730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:03:29.054 [DEBUG] [Thread-201730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:03:29.056 [DEBUG] [Thread-201730] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:03:29.095 [DEBUG] [Thread-201730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:03:29.095 [DEBUG] [Thread-201730] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:03:29.098 [DEBUG] [Thread-201730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:03:29.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:03:29.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:03:29.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:03:29.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:03:29.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:03:29.121 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:03:29.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:03:29.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:03:29.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:03:29.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.043848 -999.00  +11.80  18.27     47   +1.10 1 1 1 1 1     0    0 10.19 -25.94 ZNESW 19.1 18.3 126.4 22.3 12.3 -24.5 12.2 -24.0 11.9 -22.8 12.2 -23.7
2025-11-25T03:03:29.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:03:29.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:03:29.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.043848
2025-11-25T03:03:29.129 [DEBUG] [Thread-201730] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:03:29.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:03:29.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:03:29.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:03:29.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:03:29.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:03:29.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:02:51', tmtdew=12.25, humidity=42.71, cloud=0.0, wind=24.93, temperature=11.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:03:25', seeing=0.75, atlas_timestamp='2025-11-25T01:03:08.467', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T00:59:00')
2025-11-25T03:03:29.236 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:03:29.248 [DEBUG] [Thread-201733] [transport.py] [_log()] starting thread (client mode): 0xd0739c60
2025-11-25T03:03:29.248 [DEBUG] [Thread-201733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:03:29.263 [DEBUG] [Thread-201733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:03:29.263 [INFO] [Thread-201733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] client lang: <none>
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] server lang: <none>
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] kex follows: False
2025-11-25T03:03:29.270 [DEBUG] [Thread-201733] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:03:29.271 [DEBUG] [Thread-201733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:03:29.271 [DEBUG] [Thread-201733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:03:29.271 [DEBUG] [Thread-201733] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:03:29.271 [DEBUG] [Thread-201733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:03:29.271 [DEBUG] [Thread-201733] [transport.py] [_log()] Compression: none
2025-11-25T03:03:29.271 [DEBUG] [Thread-201733] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:03:29.329 [DEBUG] [Thread-201733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:03:29.329 [DEBUG] [Thread-201733] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:03:29.330 [DEBUG] [Thread-201733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:03:29.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:03:29.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:03:29.384 [DEBUG] [Thread-201733] [transport.py] [_log()] userauth is OK
2025-11-25T03:03:29.384 [DEBUG] [Thread-201733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:03:29.384 [DEBUG] [Thread-201733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:03:29.384 [DEBUG] [Thread-201733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:03:29.385 [DEBUG] [Thread-201733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:03:29.404 [INFO] [Thread-201733] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:03:29.404 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:03:29.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:03:30.345 [DEBUG] [Thread-201733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:03:30.345 [DEBUG] [Thread-201733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:03:30.393 [DEBUG] [Thread-201733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:03:30.393 [DEBUG] [Thread-201733] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:03:30.401 [DEBUG] [Thread-201733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:03:30.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:03:30.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-11-25T03:03:30.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-11-25T03:03:30.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:03:30.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:03:30.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:03:30.443 [DEBUG] [Thread-201733] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:03:33.371 [DEBUG] [Thread-201735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:39.302 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:42.104 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:42.105 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:48.530 [DEBUG] [Thread-201736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:03:49.822 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:00.402 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:00.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:04:00.468 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:04:00.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-11-25T03:04:01.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 3, 25), 12.3, 42.57, 0.0, 24.6, 11.92, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:04:01.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:03:25
2025-11-25T03:04:01.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:04:01.831 [DEBUG] [Thread-201737] [transport.py] [_log()] starting thread (client mode): 0xd31f5780
2025-11-25T03:04:01.832 [DEBUG] [Thread-201737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:04:01.842 [DEBUG] [Thread-201737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:04:01.843 [INFO] [Thread-201737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] client lang: <none>
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] server lang: <none>
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] kex follows: False
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:04:01.849 [DEBUG] [Thread-201737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:04:01.850 [DEBUG] [Thread-201737] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:04:01.850 [DEBUG] [Thread-201737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:04:01.850 [DEBUG] [Thread-201737] [transport.py] [_log()] Compression: none
2025-11-25T03:04:01.850 [DEBUG] [Thread-201737] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:04:01.882 [DEBUG] [Thread-201737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:04:01.885 [DEBUG] [Thread-201737] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:04:01.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:04:01.888 [DEBUG] [Thread-201737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:04:01.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:04:01.890 [DEBUG] [Thread-201737] [transport.py] [_log()] userauth is OK
2025-11-25T03:04:01.890 [DEBUG] [Thread-201737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:04:01.890 [DEBUG] [Thread-201737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:04:01.890 [DEBUG] [Thread-201737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:04:01.890 [DEBUG] [Thread-201737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:04:01.907 [INFO] [Thread-201737] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:04:01.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:04:02.501 [DEBUG] [Thread-201737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:04:02.502 [DEBUG] [Thread-201737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:04:02.503 [DEBUG] [Thread-201737] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:04:02.543 [DEBUG] [Thread-201737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:04:02.543 [DEBUG] [Thread-201737] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:04:02.546 [DEBUG] [Thread-201737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:04:02.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:04:02.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:04:02.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:04:02.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:04:02.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:04:02.578 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:04:02.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:04:02.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:04:02.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:04:02.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.044195 -999.00  +11.80  20.53     47   +1.10 1 1 1 1 1     0    0 9.81 -27.99 ZNESW 20.6 20.5 132.0 24.8 12.3 -24.5 12.2 -24.0 11.9 -23.0 12.2 -23.7
2025-11-25T03:04:02.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:04:02.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:04:02.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.044195
2025-11-25T03:04:02.585 [DEBUG] [Thread-201737] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:04:02.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:04:02.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:04:02.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:04:02.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:04:02.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:04:02.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:03:25', tmtdew=12.3, humidity=42.57, cloud=0.0, wind=24.6, temperature=11.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:03:58', seeing=0.89, atlas_timestamp='2025-11-25T01:03:38.448', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T01:02:00')
2025-11-25T03:04:02.688 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:04:02.699 [DEBUG] [Thread-201740] [transport.py] [_log()] starting thread (client mode): 0xd317f3a0
2025-11-25T03:04:02.699 [DEBUG] [Thread-201740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:04:02.717 [DEBUG] [Thread-201740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:04:02.717 [INFO] [Thread-201740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] client lang: <none>
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] server lang: <none>
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] kex follows: False
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] Compression: none
2025-11-25T03:04:02.725 [DEBUG] [Thread-201740] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:04:02.731 [DEBUG] [Thread-201742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:02.790 [DEBUG] [Thread-201740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:04:02.791 [DEBUG] [Thread-201740] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:04:02.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:04:02.792 [DEBUG] [Thread-201740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:04:02.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:04:02.858 [DEBUG] [Thread-201740] [transport.py] [_log()] userauth is OK
2025-11-25T03:04:02.859 [DEBUG] [Thread-201740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:04:02.859 [DEBUG] [Thread-201740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:04:02.859 [DEBUG] [Thread-201740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:04:02.859 [DEBUG] [Thread-201740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:04:02.881 [INFO] [Thread-201740] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:04:02.881 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:04:02.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:04:03.597 [DEBUG] [Thread-201743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:03.735 [DEBUG] [Thread-201740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:04:03.735 [DEBUG] [Thread-201740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:04:03.784 [DEBUG] [Thread-201740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:04:03.784 [DEBUG] [Thread-201740] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:04:03.793 [DEBUG] [Thread-201740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:04:03.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:04:03.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-11-25T03:04:03.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:04:03.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:04:03.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:04:03.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:04:03.840 [DEBUG] [Thread-201740] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:04:10.911 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:18.729 [DEBUG] [Thread-201744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:21.365 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:31.907 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:33.790 [DEBUG] [Thread-201745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:33.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:04:33.861 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:04:33.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-11-25T03:04:34.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 3, 58), 12.24, 42.59, 0.0, 24.07, 11.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:04:34.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:03:58
2025-11-25T03:04:34.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:04:35.080 [DEBUG] [Thread-201746] [transport.py] [_log()] starting thread (client mode): 0xc9b81150
2025-11-25T03:04:35.081 [DEBUG] [Thread-201746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:04:35.091 [DEBUG] [Thread-201746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:04:35.091 [INFO] [Thread-201746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] client lang: <none>
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] server lang: <none>
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] kex follows: False
2025-11-25T03:04:35.096 [DEBUG] [Thread-201746] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:04:35.097 [DEBUG] [Thread-201746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:04:35.097 [DEBUG] [Thread-201746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:04:35.097 [DEBUG] [Thread-201746] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:04:35.097 [DEBUG] [Thread-201746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:04:35.097 [DEBUG] [Thread-201746] [transport.py] [_log()] Compression: none
2025-11-25T03:04:35.098 [DEBUG] [Thread-201746] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:04:35.126 [DEBUG] [Thread-201746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:04:35.130 [DEBUG] [Thread-201746] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:04:35.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:04:35.132 [DEBUG] [Thread-201746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:04:35.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:04:35.135 [DEBUG] [Thread-201746] [transport.py] [_log()] userauth is OK
2025-11-25T03:04:35.135 [DEBUG] [Thread-201746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:04:35.136 [DEBUG] [Thread-201746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:04:35.136 [DEBUG] [Thread-201746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:04:35.136 [DEBUG] [Thread-201746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:04:35.166 [INFO] [Thread-201746] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:04:35.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:04:35.717 [DEBUG] [Thread-201746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:04:35.717 [DEBUG] [Thread-201746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:04:35.719 [DEBUG] [Thread-201746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:04:35.758 [DEBUG] [Thread-201746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:04:35.758 [DEBUG] [Thread-201746] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:04:35.759 [DEBUG] [Thread-201746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:04:35.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:04:35.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:04:35.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:04:35.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:04:35.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:04:35.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:04:35.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:04:35.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:04:35.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:04:35.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.044543 -999.00  +11.80  17.99     47   +1.10 1 1 1 1 1     0    0 10.39 -26.01 ZNESW 18.5 18.0 128.2 24.6 12.3 -24.4 12.2 -24.0 11.9 -22.9 12.2 -23.7
2025-11-25T03:04:35.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:04:35.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:04:35.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.044543
2025-11-25T03:04:35.780 [DEBUG] [Thread-201746] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:04:35.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:04:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:04:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:04:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:04:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:04:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:03:58', tmtdew=12.24, humidity=42.59, cloud=0.0, wind=24.07, temperature=11.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:04:31', seeing=0.97, atlas_timestamp='2025-11-25T01:04:08.515', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T01:02:00')
2025-11-25T03:04:35.868 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:04:35.881 [DEBUG] [Thread-201749] [transport.py] [_log()] starting thread (client mode): 0xd0785450
2025-11-25T03:04:35.881 [DEBUG] [Thread-201749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:04:35.896 [DEBUG] [Thread-201749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:04:35.896 [INFO] [Thread-201749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] client lang: <none>
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] server lang: <none>
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] kex follows: False
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] Compression: none
2025-11-25T03:04:35.904 [DEBUG] [Thread-201749] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:04:35.959 [DEBUG] [Thread-201749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:04:35.960 [DEBUG] [Thread-201749] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:04:35.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:04:35.960 [DEBUG] [Thread-201749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:04:35.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:04:36.018 [DEBUG] [Thread-201749] [transport.py] [_log()] userauth is OK
2025-11-25T03:04:36.018 [DEBUG] [Thread-201749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:04:36.018 [DEBUG] [Thread-201749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:04:36.018 [DEBUG] [Thread-201749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:04:36.018 [DEBUG] [Thread-201749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:04:36.036 [INFO] [Thread-201749] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:04:36.036 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:04:36.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:04:36.915 [DEBUG] [Thread-201749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:04:36.916 [DEBUG] [Thread-201749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:04:36.963 [DEBUG] [Thread-201749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:04:36.964 [DEBUG] [Thread-201749] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:04:36.973 [DEBUG] [Thread-201749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:04:36.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:04:36.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-11-25T03:04:36.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:04:37.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:04:37.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:04:37.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:04:37.011 [DEBUG] [Thread-201749] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:04:42.322 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:42.326 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:42.352 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:48.884 [DEBUG] [Thread-201751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:04:52.919 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:02.979 [DEBUG] [Thread-201752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:03.461 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:04.020 [DEBUG] [Thread-201753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:07.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:05:07.046 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:05:07.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-11-25T03:05:07.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 4, 31), 12.25, 42.54, 0.0, 23.24, 11.82, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:05:07.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:04:31
2025-11-25T03:05:08.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:05:08.305 [DEBUG] [Thread-201754] [transport.py] [_log()] starting thread (client mode): 0xd317d900
2025-11-25T03:05:08.306 [DEBUG] [Thread-201754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:05:08.307 [DEBUG] [Thread-201754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:05:08.307 [INFO] [Thread-201754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] client lang: <none>
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] server lang: <none>
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] kex follows: False
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:05:08.311 [DEBUG] [Thread-201754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:05:08.312 [DEBUG] [Thread-201754] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:05:08.312 [DEBUG] [Thread-201754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:05:08.312 [DEBUG] [Thread-201754] [transport.py] [_log()] Compression: none
2025-11-25T03:05:08.312 [DEBUG] [Thread-201754] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:05:08.337 [DEBUG] [Thread-201754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:05:08.341 [DEBUG] [Thread-201754] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:05:08.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:05:08.345 [DEBUG] [Thread-201754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:05:08.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:05:08.348 [DEBUG] [Thread-201754] [transport.py] [_log()] userauth is OK
2025-11-25T03:05:08.348 [DEBUG] [Thread-201754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:05:08.348 [DEBUG] [Thread-201754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:05:08.349 [DEBUG] [Thread-201754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:05:08.349 [DEBUG] [Thread-201754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:05:08.376 [INFO] [Thread-201754] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:05:08.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:05:08.962 [DEBUG] [Thread-201754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:05:08.962 [DEBUG] [Thread-201754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:05:08.964 [DEBUG] [Thread-201754] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:05:09.003 [DEBUG] [Thread-201754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:05:09.003 [DEBUG] [Thread-201754] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:05:09.008 [DEBUG] [Thread-201754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:05:09.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:05:09.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:05:09.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:05:09.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:05:09.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:05:09.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:05:09.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:05:09.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:05:09.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:05:09.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.044890 -999.00  +11.80  18.20     47   +1.10 1 1 1 1 1     0    0 9.82 -25.83 ZNESW 21.4 18.2 125.8 27.6 12.3 -24.4 12.2 -23.9 11.9 -22.8 12.2 -23.7
2025-11-25T03:05:09.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:05:09.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:05:09.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.044890
2025-11-25T03:05:09.040 [DEBUG] [Thread-201754] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:05:09.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:05:09.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:05:09.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:05:09.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:05:09.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:05:09.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:04:31', tmtdew=12.25, humidity=42.54, cloud=0.0, wind=23.24, temperature=11.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:05:04', seeing=0.92, atlas_timestamp='2025-11-25T01:04:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T01:02:00')
2025-11-25T03:05:09.138 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:05:09.150 [DEBUG] [Thread-201757] [transport.py] [_log()] starting thread (client mode): 0xd0785570
2025-11-25T03:05:09.151 [DEBUG] [Thread-201757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:05:09.165 [DEBUG] [Thread-201757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:05:09.165 [INFO] [Thread-201757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] client lang: <none>
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] server lang: <none>
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] kex follows: False
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:05:09.173 [DEBUG] [Thread-201757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:05:09.174 [DEBUG] [Thread-201757] [transport.py] [_log()] Compression: none
2025-11-25T03:05:09.174 [DEBUG] [Thread-201757] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:05:09.231 [DEBUG] [Thread-201757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:05:09.231 [DEBUG] [Thread-201757] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:05:09.232 [DEBUG] [Thread-201757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:05:09.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:05:09.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:05:09.289 [DEBUG] [Thread-201757] [transport.py] [_log()] userauth is OK
2025-11-25T03:05:09.289 [DEBUG] [Thread-201757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:05:09.289 [DEBUG] [Thread-201757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:05:09.290 [DEBUG] [Thread-201757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:05:09.290 [DEBUG] [Thread-201757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:05:09.315 [INFO] [Thread-201757] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:05:09.316 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:05:09.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:05:10.237 [DEBUG] [Thread-201757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:05:10.238 [DEBUG] [Thread-201757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:05:10.285 [DEBUG] [Thread-201757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:05:10.285 [DEBUG] [Thread-201757] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:05:10.293 [DEBUG] [Thread-201757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:05:10.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:05:10.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:05:10.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-11-25T03:05:10.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:05:10.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:05:10.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:05:10.328 [DEBUG] [Thread-201757] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:05:13.986 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:19.086 [DEBUG] [Thread-201759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:24.521 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:34.256 [DEBUG] [Thread-201760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:35.024 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:40.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:05:40.352 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:05:40.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-11-25T03:05:41.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 5, 4), 12.21, 42.69, 0.0, 23.45, 11.85, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:05:41.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:05:04
2025-11-25T03:05:41.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:05:41.566 [DEBUG] [Thread-201761] [transport.py] [_log()] starting thread (client mode): 0xc9b76ad0
2025-11-25T03:05:41.567 [DEBUG] [Thread-201761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:05:41.582 [DEBUG] [Thread-201761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:05:41.583 [INFO] [Thread-201761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:05:41.595 [DEBUG] [Thread-201761] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] client lang: <none>
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] server lang: <none>
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] kex follows: False
2025-11-25T03:05:41.596 [DEBUG] [Thread-201761] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:05:41.597 [DEBUG] [Thread-201761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:05:41.597 [DEBUG] [Thread-201761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:05:41.598 [DEBUG] [Thread-201761] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:05:41.598 [DEBUG] [Thread-201761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:05:41.598 [DEBUG] [Thread-201761] [transport.py] [_log()] Compression: none
2025-11-25T03:05:41.598 [DEBUG] [Thread-201761] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:05:41.638 [DEBUG] [Thread-201761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:05:41.644 [DEBUG] [Thread-201761] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:05:41.646 [DEBUG] [Thread-201761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:05:41.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:05:41.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:05:41.653 [DEBUG] [Thread-201761] [transport.py] [_log()] userauth is OK
2025-11-25T03:05:41.653 [DEBUG] [Thread-201761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:05:41.654 [DEBUG] [Thread-201761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:05:41.654 [DEBUG] [Thread-201761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:05:41.654 [DEBUG] [Thread-201761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:05:41.676 [INFO] [Thread-201761] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:05:41.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:05:42.368 [DEBUG] [Thread-201761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:05:42.368 [DEBUG] [Thread-201761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:05:42.370 [DEBUG] [Thread-201761] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:05:42.409 [DEBUG] [Thread-201761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:05:42.409 [DEBUG] [Thread-201761] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:05:42.414 [DEBUG] [Thread-201761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:05:42.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:05:42.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:05:42.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:05:42.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:05:42.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:05:42.438 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:05:42.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:05:42.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:05:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:05:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.044890 -999.00  +11.80  18.20     47   +1.10 1 1 1 1 1     0    0 9.82 -25.83 ZNESW 21.4 18.2 125.8 27.6 12.3 -24.4 12.2 -23.9 11.9 -22.8 12.2 -23.7
2025-11-25T03:05:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:05:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:05:42.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.044890
2025-11-25T03:05:42.444 [DEBUG] [Thread-201761] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:05:42.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:05:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:05:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:05:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:05:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:05:42.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:05:04', tmtdew=12.21, humidity=42.69, cloud=0.0, wind=23.45, temperature=11.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:05:37', seeing=0.92, atlas_timestamp='2025-11-25T01:04:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T01:02:00')
2025-11-25T03:05:42.528 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:42.529 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:05:42.530 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:42.541 [DEBUG] [Thread-201764] [transport.py] [_log()] starting thread (client mode): 0xd314a740
2025-11-25T03:05:42.541 [DEBUG] [Thread-201764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:05:42.555 [DEBUG] [Thread-201764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:05:42.556 [INFO] [Thread-201764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:05:42.563 [DEBUG] [Thread-201764] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:05:42.563 [DEBUG] [Thread-201764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] client lang: <none>
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] server lang: <none>
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] kex follows: False
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:05:42.564 [DEBUG] [Thread-201764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:05:42.565 [DEBUG] [Thread-201764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:05:42.565 [DEBUG] [Thread-201764] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:05:42.565 [DEBUG] [Thread-201764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:05:42.565 [DEBUG] [Thread-201764] [transport.py] [_log()] Compression: none
2025-11-25T03:05:42.565 [DEBUG] [Thread-201764] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:05:42.624 [DEBUG] [Thread-201764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:05:42.624 [DEBUG] [Thread-201764] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:05:42.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:05:42.625 [DEBUG] [Thread-201764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:05:42.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:05:42.680 [DEBUG] [Thread-201764] [transport.py] [_log()] userauth is OK
2025-11-25T03:05:42.681 [DEBUG] [Thread-201764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:05:42.681 [DEBUG] [Thread-201764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:05:42.681 [DEBUG] [Thread-201764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:05:42.681 [DEBUG] [Thread-201764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:05:42.704 [INFO] [Thread-201764] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:05:42.704 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:05:42.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:05:43.522 [DEBUG] [Thread-201764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:05:43.522 [DEBUG] [Thread-201764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:05:43.570 [DEBUG] [Thread-201764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:05:43.570 [DEBUG] [Thread-201764] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:05:43.579 [DEBUG] [Thread-201764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:05:43.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:05:43.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:05:43.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:05:43.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:05:43.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:05:43.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:05:43.612 [DEBUG] [Thread-201764] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:05:45.608 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:49.314 [DEBUG] [Thread-201766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:05:56.154 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:03.288 [DEBUG] [Thread-201767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:04.429 [DEBUG] [Thread-201768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:06.705 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:06:13.635 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:06:13.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-11-25T03:06:14.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 5, 37), 12.19, 43.22, 0.0, 23.84, 11.82, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:06:14.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:05:37
2025-11-25T03:06:14.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:06:14.855 [DEBUG] [Thread-201769] [transport.py] [_log()] starting thread (client mode): 0xd07872b0
2025-11-25T03:06:14.856 [DEBUG] [Thread-201769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:06:14.867 [DEBUG] [Thread-201769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:06:14.867 [INFO] [Thread-201769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:06:14.872 [DEBUG] [Thread-201769] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:06:14.872 [DEBUG] [Thread-201769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:06:14.872 [DEBUG] [Thread-201769] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:06:14.872 [DEBUG] [Thread-201769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:06:14.872 [DEBUG] [Thread-201769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:06:14.873 [DEBUG] [Thread-201769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:06:14.873 [DEBUG] [Thread-201769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:06:14.873 [DEBUG] [Thread-201769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:06:14.873 [DEBUG] [Thread-201769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:06:14.873 [DEBUG] [Thread-201769] [transport.py] [_log()] client lang: <none>
2025-11-25T03:06:14.873 [DEBUG] [Thread-201769] [transport.py] [_log()] server lang: <none>
2025-11-25T03:06:14.873 [DEBUG] [Thread-201769] [transport.py] [_log()] kex follows: False
2025-11-25T03:06:14.873 [DEBUG] [Thread-201769] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:06:14.873 [DEBUG] [Thread-201769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:06:14.873 [DEBUG] [Thread-201769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:06:14.874 [DEBUG] [Thread-201769] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:06:14.874 [DEBUG] [Thread-201769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:06:14.874 [DEBUG] [Thread-201769] [transport.py] [_log()] Compression: none
2025-11-25T03:06:14.874 [DEBUG] [Thread-201769] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:06:14.909 [DEBUG] [Thread-201769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:06:14.913 [DEBUG] [Thread-201769] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:06:14.914 [DEBUG] [Thread-201769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:06:14.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:06:14.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:06:14.918 [DEBUG] [Thread-201769] [transport.py] [_log()] userauth is OK
2025-11-25T03:06:14.919 [DEBUG] [Thread-201769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:06:14.919 [DEBUG] [Thread-201769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:06:14.919 [DEBUG] [Thread-201769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:06:14.919 [DEBUG] [Thread-201769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:06:14.948 [INFO] [Thread-201769] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:06:14.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:06:15.605 [DEBUG] [Thread-201769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:06:15.614 [DEBUG] [Thread-201769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:06:15.615 [DEBUG] [Thread-201769] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:06:15.646 [DEBUG] [Thread-201769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:06:15.646 [DEBUG] [Thread-201769] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:06:15.649 [DEBUG] [Thread-201769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:06:15.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:06:15.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:06:15.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:06:15.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:06:15.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:06:15.672 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:06:15.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:06:15.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:06:15.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:06:15.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.045527 -999.00  +11.70  20.32     48   +1.10 1 1 1 1 1     0    0 10.12 -28.51 ZNESW 20.3 20.3 130.6 23.7 12.2 -24.5 12.2 -24.0 11.9 -22.8 12.2 -23.6
2025-11-25T03:06:15.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:06:15.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:06:15.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.045527
2025-11-25T03:06:15.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:06:15.689 [DEBUG] [Thread-201769] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:06:15.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:06:15.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:06:15.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:06:15.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:06:15.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:05:37', tmtdew=12.19, humidity=43.22, cloud=0.0, wind=23.84, temperature=11.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:06:10', seeing=1.03, atlas_timestamp='2025-11-25T01:05:33.533', atlas_cloud=1, atlas_rain=1, zp_data=[-0.03725000000000023, -0.051249999999999574, 0.007250000000000867, -0.06550000000000011, -0.005499999999999616, 0.02525000000000155, -0.009000000000000341, -0.02874999999999872, 0.011499999999999844, -0.0259999999999998, -0.03974999999999973, -0.012000000000000455, 0.0470000000000006, 0.06825000000000081, -0.027000000000001023, 0.015499999999999403, 0.009249999999999758, -0.0039999999999995595, -0.03900000000000148, -0.03675000000000139, 0.07049999999999912, 0.05174999999999841, -0.008749999999999147, 0.010749999999999815, 0.022999999999999687, 0.04550000000000054, -0.012750000000000483, 0.04049999999999976, 0.11500000000000021, 0.0810000000000013, 0.030000000000001137, 0.018499999999999517, -0.004250000000000753], zp_timestamp='2025-11-25T01:02:00')
2025-11-25T03:06:15.764 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:06:15.775 [DEBUG] [Thread-201772] [transport.py] [_log()] starting thread (client mode): 0xd317ceb0
2025-11-25T03:06:15.776 [DEBUG] [Thread-201772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:06:15.790 [DEBUG] [Thread-201772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:06:15.790 [INFO] [Thread-201772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] client lang: <none>
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] server lang: <none>
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] kex follows: False
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] Compression: none
2025-11-25T03:06:15.798 [DEBUG] [Thread-201772] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:06:15.855 [DEBUG] [Thread-201772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:06:15.855 [DEBUG] [Thread-201772] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:06:15.855 [DEBUG] [Thread-201772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:06:15.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:06:15.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:06:15.913 [DEBUG] [Thread-201772] [transport.py] [_log()] userauth is OK
2025-11-25T03:06:15.914 [DEBUG] [Thread-201772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:06:15.914 [DEBUG] [Thread-201772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:06:15.914 [DEBUG] [Thread-201772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:06:15.914 [DEBUG] [Thread-201772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:06:15.936 [INFO] [Thread-201772] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:06:15.936 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:06:15.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:06:16.785 [DEBUG] [Thread-201772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:06:16.785 [DEBUG] [Thread-201772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:06:16.836 [DEBUG] [Thread-201772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:06:16.836 [DEBUG] [Thread-201772] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:06:16.848 [DEBUG] [Thread-201772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:06:16.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:06:16.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:06:16.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:06:16.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:06:16.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:06:16.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:06:16.896 [DEBUG] [Thread-201772] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:06:17.210 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:19.526 [DEBUG] [Thread-201774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:27.729 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:34.668 [DEBUG] [Thread-201775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:38.142 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:42.744 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:42.747 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:46.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:06:46.931 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:06:46.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-11-25T03:06:47.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 6, 10), 12.21, 43.14, 0.0, 23.04, 11.74, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:06:47.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:06:10
2025-11-25T03:06:47.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:06:48.142 [DEBUG] [Thread-201776] [transport.py] [_log()] starting thread (client mode): 0xd31f51b0
2025-11-25T03:06:48.143 [DEBUG] [Thread-201776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:06:48.144 [DEBUG] [Thread-201776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:06:48.144 [INFO] [Thread-201776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] client lang: <none>
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] server lang: <none>
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] kex follows: False
2025-11-25T03:06:48.150 [DEBUG] [Thread-201776] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:06:48.151 [DEBUG] [Thread-201776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:06:48.151 [DEBUG] [Thread-201776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:06:48.151 [DEBUG] [Thread-201776] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:06:48.151 [DEBUG] [Thread-201776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:06:48.151 [DEBUG] [Thread-201776] [transport.py] [_log()] Compression: none
2025-11-25T03:06:48.151 [DEBUG] [Thread-201776] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:06:48.177 [DEBUG] [Thread-201776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:06:48.181 [DEBUG] [Thread-201776] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:06:48.183 [DEBUG] [Thread-201776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:06:48.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:06:48.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:06:48.189 [DEBUG] [Thread-201776] [transport.py] [_log()] userauth is OK
2025-11-25T03:06:48.189 [DEBUG] [Thread-201776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:06:48.190 [DEBUG] [Thread-201776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:06:48.190 [DEBUG] [Thread-201776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:06:48.190 [DEBUG] [Thread-201776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:06:48.217 [INFO] [Thread-201776] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:06:48.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:06:48.724 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:48.803 [DEBUG] [Thread-201776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:06:48.803 [DEBUG] [Thread-201776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:06:48.804 [DEBUG] [Thread-201776] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:06:48.844 [DEBUG] [Thread-201776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:06:48.844 [DEBUG] [Thread-201776] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:06:48.846 [DEBUG] [Thread-201776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:06:48.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:06:48.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:06:48.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:06:48.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:06:48.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:06:48.867 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:06:48.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:06:48.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:06:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:06:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.045931 -999.00  +11.70  16.83     48   +1.10 1 1 1 1 1     0    0 10.01 -33.43 ZNESW 21.2 16.8 123.8 24.4 12.3 -24.4 12.2 -24.0 11.9 -22.9 12.2 -23.7
2025-11-25T03:06:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:06:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:06:48.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.045931
2025-11-25T03:06:48.880 [DEBUG] [Thread-201776] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:06:48.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:06:48.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:06:48.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:06:48.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:06:48.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:06:48.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:06:10', tmtdew=12.21, humidity=43.14, cloud=0.0, wind=23.04, temperature=11.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:06:44', seeing=0.88, atlas_timestamp='2025-11-25T01:06:08.438', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:05:00')
2025-11-25T03:06:48.964 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:06:48.976 [DEBUG] [Thread-201779] [transport.py] [_log()] starting thread (client mode): 0xd07872b0
2025-11-25T03:06:48.977 [DEBUG] [Thread-201779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:06:48.991 [DEBUG] [Thread-201779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:06:48.991 [INFO] [Thread-201779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:06:48.999 [DEBUG] [Thread-201779] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:06:48.999 [DEBUG] [Thread-201779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:06:48.999 [DEBUG] [Thread-201779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:06:48.999 [DEBUG] [Thread-201779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:06:49.000 [DEBUG] [Thread-201779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:06:49.000 [DEBUG] [Thread-201779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:06:49.000 [DEBUG] [Thread-201779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:06:49.000 [DEBUG] [Thread-201779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:06:49.000 [DEBUG] [Thread-201779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:06:49.000 [DEBUG] [Thread-201779] [transport.py] [_log()] client lang: <none>
2025-11-25T03:06:49.000 [DEBUG] [Thread-201779] [transport.py] [_log()] server lang: <none>
2025-11-25T03:06:49.000 [DEBUG] [Thread-201779] [transport.py] [_log()] kex follows: False
2025-11-25T03:06:49.000 [DEBUG] [Thread-201779] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:06:49.001 [DEBUG] [Thread-201779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:06:49.001 [DEBUG] [Thread-201779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:06:49.001 [DEBUG] [Thread-201779] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:06:49.001 [DEBUG] [Thread-201779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:06:49.002 [DEBUG] [Thread-201779] [transport.py] [_log()] Compression: none
2025-11-25T03:06:49.002 [DEBUG] [Thread-201779] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:06:49.061 [DEBUG] [Thread-201779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:06:49.062 [DEBUG] [Thread-201779] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:06:49.063 [DEBUG] [Thread-201779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:06:49.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:06:49.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:06:49.121 [DEBUG] [Thread-201779] [transport.py] [_log()] userauth is OK
2025-11-25T03:06:49.121 [DEBUG] [Thread-201779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:06:49.121 [DEBUG] [Thread-201779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:06:49.122 [DEBUG] [Thread-201779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:06:49.122 [DEBUG] [Thread-201779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:06:49.141 [INFO] [Thread-201779] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:06:49.141 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:06:49.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:06:49.753 [DEBUG] [Thread-201781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:06:49.972 [DEBUG] [Thread-201779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:06:49.972 [DEBUG] [Thread-201779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:06:50.020 [DEBUG] [Thread-201779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:06:50.020 [DEBUG] [Thread-201779] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:06:50.029 [DEBUG] [Thread-201779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:06:50.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:06:50.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-11-25T03:06:50.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-11-25T03:06:50.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:06:50.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:06:50.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:06:50.068 [DEBUG] [Thread-201779] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:06:59.270 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:03.546 [DEBUG] [Thread-201782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:04.917 [DEBUG] [Thread-201783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:09.775 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:20.001 [DEBUG] [Thread-201784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:20.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:07:20.094 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:07:20.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-11-25T03:07:20.271 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:20.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 6, 44), 12.16, 43.16, 0.0, 21.88, 11.79, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:07:20.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:06:44
2025-11-25T03:07:21.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:07:21.274 [DEBUG] [Thread-201785] [transport.py] [_log()] starting thread (client mode): 0xd07857e0
2025-11-25T03:07:21.274 [DEBUG] [Thread-201785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:07:21.287 [DEBUG] [Thread-201785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:07:21.287 [INFO] [Thread-201785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:07:21.294 [DEBUG] [Thread-201785] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:07:21.294 [DEBUG] [Thread-201785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:07:21.294 [DEBUG] [Thread-201785] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:07:21.294 [DEBUG] [Thread-201785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:07:21.295 [DEBUG] [Thread-201785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:07:21.295 [DEBUG] [Thread-201785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:07:21.295 [DEBUG] [Thread-201785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:07:21.295 [DEBUG] [Thread-201785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:07:21.295 [DEBUG] [Thread-201785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:07:21.295 [DEBUG] [Thread-201785] [transport.py] [_log()] client lang: <none>
2025-11-25T03:07:21.295 [DEBUG] [Thread-201785] [transport.py] [_log()] server lang: <none>
2025-11-25T03:07:21.295 [DEBUG] [Thread-201785] [transport.py] [_log()] kex follows: False
2025-11-25T03:07:21.295 [DEBUG] [Thread-201785] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:07:21.296 [DEBUG] [Thread-201785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:07:21.296 [DEBUG] [Thread-201785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:07:21.297 [DEBUG] [Thread-201785] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:07:21.297 [DEBUG] [Thread-201785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:07:21.297 [DEBUG] [Thread-201785] [transport.py] [_log()] Compression: none
2025-11-25T03:07:21.297 [DEBUG] [Thread-201785] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:07:21.336 [DEBUG] [Thread-201785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:07:21.341 [DEBUG] [Thread-201785] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:07:21.343 [DEBUG] [Thread-201785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:07:21.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:07:21.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:07:21.349 [DEBUG] [Thread-201785] [transport.py] [_log()] userauth is OK
2025-11-25T03:07:21.349 [DEBUG] [Thread-201785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:07:21.350 [DEBUG] [Thread-201785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:07:21.350 [DEBUG] [Thread-201785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:07:21.350 [DEBUG] [Thread-201785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:07:21.389 [INFO] [Thread-201785] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:07:21.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:07:22.041 [DEBUG] [Thread-201785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:07:22.041 [DEBUG] [Thread-201785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:07:22.042 [DEBUG] [Thread-201785] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:07:22.083 [DEBUG] [Thread-201785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:07:22.083 [DEBUG] [Thread-201785] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:07:22.086 [DEBUG] [Thread-201785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:07:22.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:07:22.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:07:22.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:07:22.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:07:22.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:07:22.115 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:07:22.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:07:22.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:07:22.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:07:22.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.046279 -999.00  +11.70  16.32     48   +1.10 1 1 1 1 1     0    0 9.58 -39.12 ZNESW 20.9 16.3 124.4 22.4 12.3 -24.5 12.1 -24.0 11.8 -22.9 12.2 -23.6
2025-11-25T03:07:22.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:07:22.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:07:22.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.046279
2025-11-25T03:07:22.123 [DEBUG] [Thread-201785] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:07:22.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:07:22.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:07:22.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:07:22.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:07:22.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:07:22.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:06:44', tmtdew=12.16, humidity=43.16, cloud=0.0, wind=21.88, temperature=11.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:07:17', seeing=0.88, atlas_timestamp='2025-11-25T01:06:38.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:05:00')
2025-11-25T03:07:22.226 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:07:22.238 [DEBUG] [Thread-201788] [transport.py] [_log()] starting thread (client mode): 0xd31f4220
2025-11-25T03:07:22.239 [DEBUG] [Thread-201788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:07:22.254 [DEBUG] [Thread-201788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:07:22.254 [INFO] [Thread-201788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:07:22.262 [DEBUG] [Thread-201788] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:07:22.263 [DEBUG] [Thread-201788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:07:22.263 [DEBUG] [Thread-201788] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:07:22.263 [DEBUG] [Thread-201788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:07:22.263 [DEBUG] [Thread-201788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:07:22.263 [DEBUG] [Thread-201788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:07:22.263 [DEBUG] [Thread-201788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:07:22.263 [DEBUG] [Thread-201788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:07:22.264 [DEBUG] [Thread-201788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:07:22.264 [DEBUG] [Thread-201788] [transport.py] [_log()] client lang: <none>
2025-11-25T03:07:22.264 [DEBUG] [Thread-201788] [transport.py] [_log()] server lang: <none>
2025-11-25T03:07:22.264 [DEBUG] [Thread-201788] [transport.py] [_log()] kex follows: False
2025-11-25T03:07:22.264 [DEBUG] [Thread-201788] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:07:22.264 [DEBUG] [Thread-201788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:07:22.264 [DEBUG] [Thread-201788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:07:22.265 [DEBUG] [Thread-201788] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:07:22.265 [DEBUG] [Thread-201788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:07:22.265 [DEBUG] [Thread-201788] [transport.py] [_log()] Compression: none
2025-11-25T03:07:22.265 [DEBUG] [Thread-201788] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:07:22.321 [DEBUG] [Thread-201788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:07:22.322 [DEBUG] [Thread-201788] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:07:22.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:07:22.324 [DEBUG] [Thread-201788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:07:22.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:07:22.381 [DEBUG] [Thread-201788] [transport.py] [_log()] userauth is OK
2025-11-25T03:07:22.381 [DEBUG] [Thread-201788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:07:22.381 [DEBUG] [Thread-201788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:07:22.381 [DEBUG] [Thread-201788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:07:22.381 [DEBUG] [Thread-201788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:07:22.400 [INFO] [Thread-201788] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:07:22.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:07:22.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:07:23.254 [DEBUG] [Thread-201788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:07:23.254 [DEBUG] [Thread-201788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:07:23.303 [DEBUG] [Thread-201788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:07:23.303 [DEBUG] [Thread-201788] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:07:23.312 [DEBUG] [Thread-201788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:07:23.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:07:23.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-11-25T03:07:23.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-11-25T03:07:23.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:07:23.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:07:23.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:07:23.350 [DEBUG] [Thread-201788] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:07:30.816 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:35.099 [DEBUG] [Thread-201790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:41.348 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:42.957 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:42.960 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:50.193 [DEBUG] [Thread-201791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:51.931 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:07:53.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:07:53.373 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:07:53.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-11-25T03:07:54.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 7, 17), 12.16, 43.14, 0.0, 21.88, 11.75, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:07:54.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:07:17
2025-11-25T03:07:54.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:07:54.625 [DEBUG] [Thread-201792] [transport.py] [_log()] starting thread (client mode): 0xd319fee0
2025-11-25T03:07:54.625 [DEBUG] [Thread-201792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:07:54.636 [DEBUG] [Thread-201792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:07:54.636 [INFO] [Thread-201792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:07:54.639 [DEBUG] [Thread-201792] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:07:54.639 [DEBUG] [Thread-201792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:07:54.639 [DEBUG] [Thread-201792] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:07:54.639 [DEBUG] [Thread-201792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:07:54.639 [DEBUG] [Thread-201792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:07:54.639 [DEBUG] [Thread-201792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:07:54.639 [DEBUG] [Thread-201792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:07:54.640 [DEBUG] [Thread-201792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:07:54.640 [DEBUG] [Thread-201792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:07:54.640 [DEBUG] [Thread-201792] [transport.py] [_log()] client lang: <none>
2025-11-25T03:07:54.640 [DEBUG] [Thread-201792] [transport.py] [_log()] server lang: <none>
2025-11-25T03:07:54.640 [DEBUG] [Thread-201792] [transport.py] [_log()] kex follows: False
2025-11-25T03:07:54.640 [DEBUG] [Thread-201792] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:07:54.640 [DEBUG] [Thread-201792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:07:54.640 [DEBUG] [Thread-201792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:07:54.640 [DEBUG] [Thread-201792] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:07:54.641 [DEBUG] [Thread-201792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:07:54.641 [DEBUG] [Thread-201792] [transport.py] [_log()] Compression: none
2025-11-25T03:07:54.641 [DEBUG] [Thread-201792] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:07:54.667 [DEBUG] [Thread-201792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:07:54.670 [DEBUG] [Thread-201792] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:07:54.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:07:54.673 [DEBUG] [Thread-201792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:07:54.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:07:54.674 [DEBUG] [Thread-201792] [transport.py] [_log()] userauth is OK
2025-11-25T03:07:54.674 [DEBUG] [Thread-201792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:07:54.675 [DEBUG] [Thread-201792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:07:54.675 [DEBUG] [Thread-201792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:07:54.675 [DEBUG] [Thread-201792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:07:54.692 [INFO] [Thread-201792] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:07:54.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:07:55.294 [DEBUG] [Thread-201792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:07:55.294 [DEBUG] [Thread-201792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:07:55.295 [DEBUG] [Thread-201792] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:07:55.335 [DEBUG] [Thread-201792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:07:55.335 [DEBUG] [Thread-201792] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:07:55.338 [DEBUG] [Thread-201792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:07:55.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:07:55.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:07:55.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:07:55.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:07:55.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:07:55.359 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:07:55.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:07:55.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:07:55.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:07:55.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.046626 -999.00  +11.70  20.82     48   +1.10 1 1 1 1 1     0    0 9.86 -37.38 ZNESW 18.9 20.8 118.8 24.7 12.3 -24.4 12.2 -23.9 11.8 -22.8 12.1 -23.6
2025-11-25T03:07:55.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:07:55.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:07:55.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.046626
2025-11-25T03:07:55.366 [DEBUG] [Thread-201792] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:07:55.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:07:55.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:07:55.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:07:55.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:07:55.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:07:55.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:07:17', tmtdew=12.16, humidity=43.14, cloud=0.0, wind=21.88, temperature=11.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:07:51', seeing=0.88, atlas_timestamp='2025-11-25T01:07:08.486', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:05:00')
2025-11-25T03:07:55.456 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:07:55.468 [DEBUG] [Thread-201795] [transport.py] [_log()] starting thread (client mode): 0xc9b9e500
2025-11-25T03:07:55.468 [DEBUG] [Thread-201795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:07:55.485 [DEBUG] [Thread-201795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:07:55.485 [INFO] [Thread-201795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] client lang: <none>
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] server lang: <none>
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] kex follows: False
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] Compression: none
2025-11-25T03:07:55.493 [DEBUG] [Thread-201795] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:07:55.551 [DEBUG] [Thread-201795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:07:55.551 [DEBUG] [Thread-201795] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:07:55.551 [DEBUG] [Thread-201795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:07:55.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:07:55.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:07:55.608 [DEBUG] [Thread-201795] [transport.py] [_log()] userauth is OK
2025-11-25T03:07:55.608 [DEBUG] [Thread-201795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:07:55.608 [DEBUG] [Thread-201795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:07:55.608 [DEBUG] [Thread-201795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:07:55.608 [DEBUG] [Thread-201795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:07:55.622 [INFO] [Thread-201795] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:07:55.623 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:07:55.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:07:56.462 [DEBUG] [Thread-201795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:07:56.462 [DEBUG] [Thread-201795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:07:56.510 [DEBUG] [Thread-201795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:07:56.510 [DEBUG] [Thread-201795] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:07:56.518 [DEBUG] [Thread-201795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:07:56.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:07:56.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:07: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-11-25T03:07:56.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:07:56.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:07:56.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:07:56.552 [DEBUG] [Thread-201795] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:08:02.491 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:03.910 [DEBUG] [Thread-201797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:05.248 [DEBUG] [Thread-201798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:12.925 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:20.402 [DEBUG] [Thread-201799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:23.376 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:26.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:08:26.591 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:08:26.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-11-25T03:08:27.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 7, 50), 12.13, 43.22, 0.0, 22.29, 11.69, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:08:27.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:07:50
2025-11-25T03:08:27.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:08:27.847 [DEBUG] [Thread-201800] [transport.py] [_log()] starting thread (client mode): 0xc9b9f760
2025-11-25T03:08:27.848 [DEBUG] [Thread-201800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:08:27.854 [DEBUG] [Thread-201800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:08:27.855 [INFO] [Thread-201800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:08:27.861 [DEBUG] [Thread-201800] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:08:27.861 [DEBUG] [Thread-201800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:08:27.861 [DEBUG] [Thread-201800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:08:27.861 [DEBUG] [Thread-201800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:08:27.862 [DEBUG] [Thread-201800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:08:27.862 [DEBUG] [Thread-201800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:08:27.862 [DEBUG] [Thread-201800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:08:27.862 [DEBUG] [Thread-201800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:08:27.862 [DEBUG] [Thread-201800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:08:27.862 [DEBUG] [Thread-201800] [transport.py] [_log()] client lang: <none>
2025-11-25T03:08:27.862 [DEBUG] [Thread-201800] [transport.py] [_log()] server lang: <none>
2025-11-25T03:08:27.862 [DEBUG] [Thread-201800] [transport.py] [_log()] kex follows: False
2025-11-25T03:08:27.862 [DEBUG] [Thread-201800] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:08:27.863 [DEBUG] [Thread-201800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:08:27.863 [DEBUG] [Thread-201800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:08:27.863 [DEBUG] [Thread-201800] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:08:27.863 [DEBUG] [Thread-201800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:08:27.863 [DEBUG] [Thread-201800] [transport.py] [_log()] Compression: none
2025-11-25T03:08:27.863 [DEBUG] [Thread-201800] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:08:27.902 [DEBUG] [Thread-201800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:08:27.907 [DEBUG] [Thread-201800] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:08:27.909 [DEBUG] [Thread-201800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:08:27.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:08:27.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:08:27.916 [DEBUG] [Thread-201800] [transport.py] [_log()] userauth is OK
2025-11-25T03:08:27.916 [DEBUG] [Thread-201800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:08:27.916 [DEBUG] [Thread-201800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:08:27.917 [DEBUG] [Thread-201800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:08:27.917 [DEBUG] [Thread-201800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:08:27.955 [INFO] [Thread-201800] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:08:27.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:08:28.626 [DEBUG] [Thread-201800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:08:28.626 [DEBUG] [Thread-201800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:08:28.630 [DEBUG] [Thread-201800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:08:28.667 [DEBUG] [Thread-201800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:08:28.667 [DEBUG] [Thread-201800] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:08:28.671 [DEBUG] [Thread-201800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:08:28.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:08:28.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:08:28.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:08:28.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:08:28.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:08:28.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:08:28.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:08:28.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:08:28.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:08:28.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.046973 -999.00  +11.70  19.01     48   +1.10 1 1 1 1 1     0    0 9.98 -35.95 ZNESW 18.8 19.0 122.8 21.4 12.2 -24.3 -999.0 -999.0 11.9 -22.8 12.1 -23.7
2025-11-25T03:08:28.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:08:28.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:08:28.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.046973
2025-11-25T03:08:28.707 [DEBUG] [Thread-201800] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:08:28.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:08:28.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:08:28.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:08:28.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:08:28.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:08:28.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:07:50', tmtdew=12.13, humidity=43.22, cloud=0.0, wind=22.29, temperature=11.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:08:24', seeing=0.88, atlas_timestamp='2025-11-25T01:07:38.467', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:05:00')
2025-11-25T03:08:28.798 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:08:28.809 [DEBUG] [Thread-201803] [transport.py] [_log()] starting thread (client mode): 0xc9b9c250
2025-11-25T03:08:28.809 [DEBUG] [Thread-201803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:08:28.824 [DEBUG] [Thread-201803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:08:28.824 [INFO] [Thread-201803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:08:28.831 [DEBUG] [Thread-201803] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] client lang: <none>
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] server lang: <none>
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] kex follows: False
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] Compression: none
2025-11-25T03:08:28.832 [DEBUG] [Thread-201803] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:08:28.887 [DEBUG] [Thread-201803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:08:28.887 [DEBUG] [Thread-201803] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:08:28.887 [DEBUG] [Thread-201803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:08:28.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:08:28.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:08:28.944 [DEBUG] [Thread-201803] [transport.py] [_log()] userauth is OK
2025-11-25T03:08:28.944 [DEBUG] [Thread-201803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:08:28.944 [DEBUG] [Thread-201803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:08:28.944 [DEBUG] [Thread-201803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:08:28.944 [DEBUG] [Thread-201803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:08:28.958 [INFO] [Thread-201803] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:08:28.958 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:08:28.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:08:29.807 [DEBUG] [Thread-201803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:08:29.807 [DEBUG] [Thread-201803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:08:29.855 [DEBUG] [Thread-201803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:08:29.855 [DEBUG] [Thread-201803] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:08:29.864 [DEBUG] [Thread-201803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:08:29.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:08:29.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-11-25T03:08:29.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-11-25T03:08:29.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:08:29.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:08:29.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:08:29.901 [DEBUG] [Thread-201803] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:08:33.803 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:35.456 [DEBUG] [Thread-201805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:43.204 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:43.206 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:44.221 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:50.585 [DEBUG] [Thread-201806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:54.646 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:08:59.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:08:59.940 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:08:59.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-11-25T03:09:00.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 8, 24), 12.13, 43.22, 0.0, 22.78, 11.64, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:09:00.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:08:24
2025-11-25T03:09:01.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:09:01.242 [DEBUG] [Thread-201807] [transport.py] [_log()] starting thread (client mode): 0xd319eef0
2025-11-25T03:09:01.243 [DEBUG] [Thread-201807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:09:01.251 [DEBUG] [Thread-201807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:09:01.251 [INFO] [Thread-201807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:09:01.256 [DEBUG] [Thread-201807] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:09:01.256 [DEBUG] [Thread-201807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:09:01.256 [DEBUG] [Thread-201807] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:09:01.256 [DEBUG] [Thread-201807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] client lang: <none>
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] server lang: <none>
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] kex follows: False
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:09:01.257 [DEBUG] [Thread-201807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:09:01.258 [DEBUG] [Thread-201807] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:09:01.258 [DEBUG] [Thread-201807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:09:01.258 [DEBUG] [Thread-201807] [transport.py] [_log()] Compression: none
2025-11-25T03:09:01.258 [DEBUG] [Thread-201807] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:09:01.288 [DEBUG] [Thread-201807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:09:01.292 [DEBUG] [Thread-201807] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:09:01.293 [DEBUG] [Thread-201807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:09:01.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:09:01.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:09:01.297 [DEBUG] [Thread-201807] [transport.py] [_log()] userauth is OK
2025-11-25T03:09:01.297 [DEBUG] [Thread-201807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:09:01.297 [DEBUG] [Thread-201807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:09:01.297 [DEBUG] [Thread-201807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:09:01.297 [DEBUG] [Thread-201807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:09:01.331 [INFO] [Thread-201807] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:09:01.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:09:01.975 [DEBUG] [Thread-201807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:09:01.975 [DEBUG] [Thread-201807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:09:01.976 [DEBUG] [Thread-201807] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:09:02.016 [DEBUG] [Thread-201807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:09:02.016 [DEBUG] [Thread-201807] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:09:02.019 [DEBUG] [Thread-201807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:09:02.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:09:02.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:09:02.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:09:02.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:09:02.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:09:02.045 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:09:02.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:09:02.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:09:02.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:09:02.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.047320 -999.00  +11.60  20.71     48   +1.10 1 1 1 1 1     0    0 9.57 -38.46 ZNESW 16.6 20.7 125.8 23.2 12.2 -24.5 12.1 -23.9 11.8 -22.8 12.2 -23.7
2025-11-25T03:09:02.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:09:02.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:09:02.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.047320
2025-11-25T03:09:02.054 [DEBUG] [Thread-201807] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:09:02.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:09:02.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:09:02.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:09:02.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:09:02.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:09:02.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:08:24', tmtdew=12.13, humidity=43.22, cloud=0.0, wind=22.78, temperature=11.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:08:57', seeing=0.88, atlas_timestamp='2025-11-25T01:08:08.448', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:05:00')
2025-11-25T03:09:02.156 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:09:02.168 [DEBUG] [Thread-201810] [transport.py] [_log()] starting thread (client mode): 0xd319f670
2025-11-25T03:09:02.168 [DEBUG] [Thread-201810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:09:02.183 [DEBUG] [Thread-201810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:09:02.183 [INFO] [Thread-201810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] client lang: <none>
2025-11-25T03:09:02.191 [DEBUG] [Thread-201810] [transport.py] [_log()] server lang: <none>
2025-11-25T03:09:02.192 [DEBUG] [Thread-201810] [transport.py] [_log()] kex follows: False
2025-11-25T03:09:02.192 [DEBUG] [Thread-201810] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:09:02.192 [DEBUG] [Thread-201810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:09:02.192 [DEBUG] [Thread-201810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:09:02.192 [DEBUG] [Thread-201810] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:09:02.192 [DEBUG] [Thread-201810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:09:02.192 [DEBUG] [Thread-201810] [transport.py] [_log()] Compression: none
2025-11-25T03:09:02.192 [DEBUG] [Thread-201810] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:09:02.251 [DEBUG] [Thread-201810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:09:02.251 [DEBUG] [Thread-201810] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:09:02.252 [DEBUG] [Thread-201810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:09:02.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:09:02.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:09:02.309 [DEBUG] [Thread-201810] [transport.py] [_log()] userauth is OK
2025-11-25T03:09:02.309 [DEBUG] [Thread-201810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:09:02.309 [DEBUG] [Thread-201810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:09:02.309 [DEBUG] [Thread-201810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:09:02.309 [DEBUG] [Thread-201810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:09:02.323 [INFO] [Thread-201810] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:09:02.323 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:09:02.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:09:03.262 [DEBUG] [Thread-201810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:09:03.262 [DEBUG] [Thread-201810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:09:03.309 [DEBUG] [Thread-201810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:09:03.309 [DEBUG] [Thread-201810] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:09:03.318 [DEBUG] [Thread-201810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:09:03.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:09:03.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-11-25T03:09:03.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-11-25T03:09:03.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:09:03.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:09:03.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:09:03.356 [DEBUG] [Thread-201810] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:09:04.298 [DEBUG] [Thread-201812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:05.078 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:05.666 [DEBUG] [Thread-201813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:15.552 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:20.831 [DEBUG] [Thread-201814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:26.028 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:33.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:09:33.391 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:09:33.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-11-25T03:09:34.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 8, 57), 12.03, 43.37, 0.0, 20.75, 11.65, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:09:34.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:08:57
2025-11-25T03:09:34.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:09:34.661 [DEBUG] [Thread-201815] [transport.py] [_log()] starting thread (client mode): 0xd319fd60
2025-11-25T03:09:34.662 [DEBUG] [Thread-201815] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:09:34.669 [DEBUG] [Thread-201815] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:09:34.669 [INFO] [Thread-201815] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] client lang: <none>
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] server lang: <none>
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] kex follows: False
2025-11-25T03:09:34.675 [DEBUG] [Thread-201815] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:09:34.676 [DEBUG] [Thread-201815] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:09:34.676 [DEBUG] [Thread-201815] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:09:34.676 [DEBUG] [Thread-201815] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:09:34.676 [DEBUG] [Thread-201815] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:09:34.676 [DEBUG] [Thread-201815] [transport.py] [_log()] Compression: none
2025-11-25T03:09:34.676 [DEBUG] [Thread-201815] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:09:34.711 [DEBUG] [Thread-201815] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:09:34.716 [DEBUG] [Thread-201815] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:09:34.718 [DEBUG] [Thread-201815] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:09:34.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:09:34.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:09:34.724 [DEBUG] [Thread-201815] [transport.py] [_log()] userauth is OK
2025-11-25T03:09:34.724 [DEBUG] [Thread-201815] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:09:34.725 [DEBUG] [Thread-201815] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:09:34.725 [DEBUG] [Thread-201815] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:09:34.725 [DEBUG] [Thread-201815] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:09:34.763 [INFO] [Thread-201815] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:09:34.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:09:35.375 [DEBUG] [Thread-201815] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:09:35.375 [DEBUG] [Thread-201815] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:09:35.377 [DEBUG] [Thread-201815] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:09:35.416 [DEBUG] [Thread-201815] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:09:35.416 [DEBUG] [Thread-201815] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:09:35.420 [DEBUG] [Thread-201815] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:09:35.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:09:35.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:09:35.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:09:35.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:09:35.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:09:35.448 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:09:35.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:09:35.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:09:35.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:09:35.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.048015 -999.00  +11.60  15.31     48   +1.20 1 1 1 1 1     0    0 9.61 -38.68 ZNESW 14.1 15.3 124.8 23.2 12.2 -24.4 12.1 -24.0 11.8 -22.9 12.1 -23.6
2025-11-25T03:09:35.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:09:35.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:09:35.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.048015
2025-11-25T03:09:35.456 [DEBUG] [Thread-201815] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:09:35.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:09:35.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:09:35.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:09:35.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:09:35.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:09:35.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:08:57', tmtdew=12.03, humidity=43.37, cloud=0.0, wind=20.75, temperature=11.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:09:31', seeing=0.97, atlas_timestamp='2025-11-25T01:09:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:05:00')
2025-11-25T03:09:35.558 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:09:35.570 [DEBUG] [Thread-201818] [transport.py] [_log()] starting thread (client mode): 0xd3150b80
2025-11-25T03:09:35.571 [DEBUG] [Thread-201818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:09:35.585 [DEBUG] [Thread-201818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:09:35.585 [INFO] [Thread-201818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:09:35.593 [DEBUG] [Thread-201818] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:09:35.594 [DEBUG] [Thread-201818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:09:35.594 [DEBUG] [Thread-201818] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:09:35.594 [DEBUG] [Thread-201818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:09:35.594 [DEBUG] [Thread-201818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:09:35.594 [DEBUG] [Thread-201818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:09:35.595 [DEBUG] [Thread-201818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:09:35.595 [DEBUG] [Thread-201818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:09:35.595 [DEBUG] [Thread-201818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:09:35.595 [DEBUG] [Thread-201818] [transport.py] [_log()] client lang: <none>
2025-11-25T03:09:35.595 [DEBUG] [Thread-201818] [transport.py] [_log()] server lang: <none>
2025-11-25T03:09:35.595 [DEBUG] [Thread-201818] [transport.py] [_log()] kex follows: False
2025-11-25T03:09:35.595 [DEBUG] [Thread-201818] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:09:35.595 [DEBUG] [Thread-201818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:09:35.595 [DEBUG] [Thread-201818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:09:35.595 [DEBUG] [Thread-201818] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:09:35.596 [DEBUG] [Thread-201818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:09:35.596 [DEBUG] [Thread-201818] [transport.py] [_log()] Compression: none
2025-11-25T03:09:35.596 [DEBUG] [Thread-201818] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:09:35.653 [DEBUG] [Thread-201818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:09:35.653 [DEBUG] [Thread-201818] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:09:35.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:09:35.654 [DEBUG] [Thread-201818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:09:35.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:09:35.709 [DEBUG] [Thread-201818] [transport.py] [_log()] userauth is OK
2025-11-25T03:09:35.709 [DEBUG] [Thread-201818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:09:35.711 [DEBUG] [Thread-201818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:09:35.711 [DEBUG] [Thread-201818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:09:35.711 [DEBUG] [Thread-201818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:09:35.736 [INFO] [Thread-201818] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:09:35.736 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:09:35.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:09:35.906 [DEBUG] [Thread-201820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:36.473 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:36.577 [DEBUG] [Thread-201818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:09:36.577 [DEBUG] [Thread-201818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:09:36.625 [DEBUG] [Thread-201818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:09:36.625 [DEBUG] [Thread-201818] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:09:36.633 [DEBUG] [Thread-201818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:09:36.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:09:36.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-11-25T03:09:36.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-11-25T03:09:36.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:09:36.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:09:36.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:09:36.668 [DEBUG] [Thread-201818] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:09:43.409 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:43.410 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:46.890 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:51.018 [DEBUG] [Thread-201821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:09:57.280 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:04.561 [DEBUG] [Thread-201822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:06.063 [DEBUG] [Thread-201823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:06.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:10:06.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:10:06.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-11-25T03:10:07.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 9, 30), 12.02, 43.39, 0.0, 20.17, 11.6, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:10:07.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:09:30
2025-11-25T03:10:07.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:10:07.714 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:07.873 [DEBUG] [Thread-201824] [transport.py] [_log()] starting thread (client mode): 0xc9b9d3f0
2025-11-25T03:10:07.874 [DEBUG] [Thread-201824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:10:07.886 [DEBUG] [Thread-201824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:10:07.887 [INFO] [Thread-201824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:10:07.892 [DEBUG] [Thread-201824] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] client lang: <none>
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] server lang: <none>
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] kex follows: False
2025-11-25T03:10:07.893 [DEBUG] [Thread-201824] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:10:07.894 [DEBUG] [Thread-201824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:10:07.894 [DEBUG] [Thread-201824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:10:07.895 [DEBUG] [Thread-201824] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:10:07.895 [DEBUG] [Thread-201824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:10:07.895 [DEBUG] [Thread-201824] [transport.py] [_log()] Compression: none
2025-11-25T03:10:07.895 [DEBUG] [Thread-201824] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:10:07.932 [DEBUG] [Thread-201824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:10:07.937 [DEBUG] [Thread-201824] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:10:07.939 [DEBUG] [Thread-201824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:10:07.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:10:07.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:10:07.944 [DEBUG] [Thread-201824] [transport.py] [_log()] userauth is OK
2025-11-25T03:10:07.944 [DEBUG] [Thread-201824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:10:07.944 [DEBUG] [Thread-201824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:10:07.944 [DEBUG] [Thread-201824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:10:07.944 [DEBUG] [Thread-201824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:10:07.972 [INFO] [Thread-201824] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:10:07.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:10:09.806 [DEBUG] [Thread-201824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:10:09.806 [DEBUG] [Thread-201824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:10:09.807 [DEBUG] [Thread-201824] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:10:09.847 [DEBUG] [Thread-201824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:10:09.847 [DEBUG] [Thread-201824] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:10:09.849 [DEBUG] [Thread-201824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:10:09.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:10:09.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:10:09.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:10:09.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:10:09.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:10:09.872 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:10:09.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:10:09.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:10:09.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:10:09.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.048362 -999.00  +11.60  17.11     48   +1.20 1 1 1 1 1     0    0 9.81 -35.55 ZNESW 17.1 17.1 123.4 21.9 12.2 -24.6 12.1 -23.9 11.8 -22.8 12.1 -23.7
2025-11-25T03:10:09.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:10:09.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:10:09.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.048362
2025-11-25T03:10:09.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:10:09.888 [DEBUG] [Thread-201824] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:10:09.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:10:09.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:10:09.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:10:09.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:10:09.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:09:30', tmtdew=12.02, humidity=43.39, cloud=0.0, wind=20.17, temperature=11.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:10:04', seeing=1.04, atlas_timestamp='2025-11-25T01:09:38.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:08:00')
2025-11-25T03:10:09.981 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:10:09.991 [DEBUG] [Thread-201827] [transport.py] [_log()] starting thread (client mode): 0xc9b9fbb0
2025-11-25T03:10:09.991 [DEBUG] [Thread-201827] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:10:10.006 [DEBUG] [Thread-201827] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:10:10.006 [INFO] [Thread-201827] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:10:10.016 [DEBUG] [Thread-201827] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:10:10.016 [DEBUG] [Thread-201827] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:10:10.016 [DEBUG] [Thread-201827] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:10:10.016 [DEBUG] [Thread-201827] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:10:10.016 [DEBUG] [Thread-201827] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] client lang: <none>
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] server lang: <none>
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] kex follows: False
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:10:10.017 [DEBUG] [Thread-201827] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:10:10.018 [DEBUG] [Thread-201827] [transport.py] [_log()] Compression: none
2025-11-25T03:10:10.018 [DEBUG] [Thread-201827] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:10:10.075 [DEBUG] [Thread-201827] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:10:10.075 [DEBUG] [Thread-201827] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:10:10.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:10:10.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:10:10.076 [DEBUG] [Thread-201827] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:10:10.132 [DEBUG] [Thread-201827] [transport.py] [_log()] userauth is OK
2025-11-25T03:10:10.132 [DEBUG] [Thread-201827] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:10:10.133 [DEBUG] [Thread-201827] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:10:10.133 [DEBUG] [Thread-201827] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:10:10.133 [DEBUG] [Thread-201827] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:10:10.156 [INFO] [Thread-201827] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:10:10.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:10:10.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:10:10.988 [DEBUG] [Thread-201827] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:10:10.988 [DEBUG] [Thread-201827] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:10:11.036 [DEBUG] [Thread-201827] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:10:11.036 [DEBUG] [Thread-201827] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:10:11.043 [DEBUG] [Thread-201827] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:10:11.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:10:11.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-11-25T03:10:11.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-11-25T03:10:11.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:10:11.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:10:11.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:10:11.076 [DEBUG] [Thread-201827] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:10:18.150 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:21.150 [DEBUG] [Thread-201829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:28.578 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:36.281 [DEBUG] [Thread-201830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:38.999 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:41.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:10:41.100 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:10:41.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-11-25T03:10:41.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 10, 37), 11.89, 43.64, 0.0, 24.09, 11.59, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:10:41.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:10:37
2025-11-25T03:10:42.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:10:42.303 [DEBUG] [Thread-201831] [transport.py] [_log()] starting thread (client mode): 0xd073a980
2025-11-25T03:10:42.303 [DEBUG] [Thread-201831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:10:42.307 [DEBUG] [Thread-201831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:10:42.307 [INFO] [Thread-201831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:10:42.311 [DEBUG] [Thread-201831] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:10:42.311 [DEBUG] [Thread-201831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:10:42.311 [DEBUG] [Thread-201831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:10:42.311 [DEBUG] [Thread-201831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:10:42.311 [DEBUG] [Thread-201831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:10:42.311 [DEBUG] [Thread-201831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:10:42.312 [DEBUG] [Thread-201831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:10:42.312 [DEBUG] [Thread-201831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:10:42.312 [DEBUG] [Thread-201831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:10:42.312 [DEBUG] [Thread-201831] [transport.py] [_log()] client lang: <none>
2025-11-25T03:10:42.312 [DEBUG] [Thread-201831] [transport.py] [_log()] server lang: <none>
2025-11-25T03:10:42.312 [DEBUG] [Thread-201831] [transport.py] [_log()] kex follows: False
2025-11-25T03:10:42.312 [DEBUG] [Thread-201831] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:10:42.312 [DEBUG] [Thread-201831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:10:42.312 [DEBUG] [Thread-201831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:10:42.312 [DEBUG] [Thread-201831] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:10:42.313 [DEBUG] [Thread-201831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:10:42.313 [DEBUG] [Thread-201831] [transport.py] [_log()] Compression: none
2025-11-25T03:10:42.313 [DEBUG] [Thread-201831] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:10:42.344 [DEBUG] [Thread-201831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:10:42.347 [DEBUG] [Thread-201831] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:10:42.348 [DEBUG] [Thread-201831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:10:42.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:10:42.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:10:42.351 [DEBUG] [Thread-201831] [transport.py] [_log()] userauth is OK
2025-11-25T03:10:42.351 [DEBUG] [Thread-201831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:10:42.351 [DEBUG] [Thread-201831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:10:42.351 [DEBUG] [Thread-201831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:10:42.351 [DEBUG] [Thread-201831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:10:42.380 [INFO] [Thread-201831] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:10:42.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:10:43.029 [DEBUG] [Thread-201831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:10:43.029 [DEBUG] [Thread-201831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:10:43.030 [DEBUG] [Thread-201831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:10:43.070 [DEBUG] [Thread-201831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:10:43.070 [DEBUG] [Thread-201831] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:10:43.074 [DEBUG] [Thread-201831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:10:43.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:10:43.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:10:43.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:10:43.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:10:43.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:10:43.103 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:10:43.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:10:43.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:10:43.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:10:43.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.048652 -999.00  +11.60  17.69     48   +1.20 1 1 1 1 1     0    0 9.94 -36.59 ZNESW 17.7 17.7 116.2 23.1 12.2 -24.5 12.1 -24.0 11.8 -22.7 12.1 -23.7
2025-11-25T03:10:43.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:10:43.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:10:43.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.048652
2025-11-25T03:10:43.111 [DEBUG] [Thread-201831] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:10:43.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:10:43.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:10:43.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:10:43.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:10:43.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:10:43.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:10:37', tmtdew=11.89, humidity=43.64, cloud=0.0, wind=24.09, temperature=11.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:10:37', seeing=1.26, atlas_timestamp='2025-11-25T01:10:03.533', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:08:00')
2025-11-25T03:10:43.206 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:10:43.220 [DEBUG] [Thread-201834] [transport.py] [_log()] starting thread (client mode): 0xd073a200
2025-11-25T03:10:43.220 [DEBUG] [Thread-201834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:10:43.234 [DEBUG] [Thread-201834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:10:43.234 [INFO] [Thread-201834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:10:43.242 [DEBUG] [Thread-201834] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:10:43.242 [DEBUG] [Thread-201834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:10:43.242 [DEBUG] [Thread-201834] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:10:43.242 [DEBUG] [Thread-201834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:10:43.242 [DEBUG] [Thread-201834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:10:43.242 [DEBUG] [Thread-201834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] client lang: <none>
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] server lang: <none>
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] kex follows: False
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] Compression: none
2025-11-25T03:10:43.243 [DEBUG] [Thread-201834] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:10:43.299 [DEBUG] [Thread-201834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:10:43.299 [DEBUG] [Thread-201834] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:10:43.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:10:43.300 [DEBUG] [Thread-201834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:10:43.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:10:43.356 [DEBUG] [Thread-201834] [transport.py] [_log()] userauth is OK
2025-11-25T03:10:43.356 [DEBUG] [Thread-201834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:10:43.356 [DEBUG] [Thread-201834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:10:43.356 [DEBUG] [Thread-201834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:10:43.356 [DEBUG] [Thread-201834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:10:43.370 [INFO] [Thread-201834] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:10:43.370 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:10:43.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:10:43.612 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:43.614 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:44.228 [DEBUG] [Thread-201834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:10:44.229 [DEBUG] [Thread-201834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:10:44.276 [DEBUG] [Thread-201834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:10:44.276 [DEBUG] [Thread-201834] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:10:44.285 [DEBUG] [Thread-201834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:10:44.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:10:44.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-11-25T03:10:44.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-11-25T03:10:44.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:10:44.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:10:44.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:10:44.322 [DEBUG] [Thread-201834] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:10:49.426 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:51.360 [DEBUG] [Thread-201836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:10:59.894 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:04.889 [DEBUG] [Thread-201837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:06.546 [DEBUG] [Thread-201838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:10.415 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:14.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:11:14.347 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:11:14.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-11-25T03:11:15.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 11, 9), 11.9, 43.62, 0.0, 24.26, 11.6, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:11:15.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:11:09
2025-11-25T03:11:15.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:11:15.599 [DEBUG] [Thread-201839] [transport.py] [_log()] starting thread (client mode): 0xc9b9fc40
2025-11-25T03:11:15.600 [DEBUG] [Thread-201839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:11:15.610 [DEBUG] [Thread-201839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:11:15.611 [INFO] [Thread-201839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] client lang: <none>
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] server lang: <none>
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] kex follows: False
2025-11-25T03:11:15.617 [DEBUG] [Thread-201839] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:11:15.618 [DEBUG] [Thread-201839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:11:15.618 [DEBUG] [Thread-201839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:11:15.618 [DEBUG] [Thread-201839] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:11:15.618 [DEBUG] [Thread-201839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:11:15.618 [DEBUG] [Thread-201839] [transport.py] [_log()] Compression: none
2025-11-25T03:11:15.618 [DEBUG] [Thread-201839] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:11:15.651 [DEBUG] [Thread-201839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:11:15.656 [DEBUG] [Thread-201839] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:11:15.657 [DEBUG] [Thread-201839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:11:15.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:11:15.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:11:15.661 [DEBUG] [Thread-201839] [transport.py] [_log()] userauth is OK
2025-11-25T03:11:15.661 [DEBUG] [Thread-201839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:11:15.661 [DEBUG] [Thread-201839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:11:15.661 [DEBUG] [Thread-201839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:11:15.661 [DEBUG] [Thread-201839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:11:15.680 [INFO] [Thread-201839] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:11:15.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:11:16.299 [DEBUG] [Thread-201839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:11:16.300 [DEBUG] [Thread-201839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:11:16.300 [DEBUG] [Thread-201839] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:11:16.340 [DEBUG] [Thread-201839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:11:16.340 [DEBUG] [Thread-201839] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:11:16.342 [DEBUG] [Thread-201839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:11:16.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:11:16.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:11:16.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:11:16.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:11:16.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:11:16.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:11:16.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:11:16.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:11:16.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:11:16.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.048999 -999.00  +11.60  15.77     48   +1.20 1 1 1 1 1     0    0 9.56 -37.09 ZNESW 15.8 15.8 120.8 19.3 12.2 -24.3 12.1 -24.0 11.8 -22.7 12.1 -23.6
2025-11-25T03:11:16.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:11:16.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:11:16.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.048999
2025-11-25T03:11:16.362 [DEBUG] [Thread-201839] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:11:16.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:11:16.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:11:16.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:11:16.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:11:16.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:11:16.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:11:09', tmtdew=11.9, humidity=43.62, cloud=0.0, wind=24.26, temperature=11.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:11:10', seeing=1.26, atlas_timestamp='2025-11-25T01:10:33.514', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:08:00')
2025-11-25T03:11:16.454 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:11:16.465 [DEBUG] [Thread-201842] [transport.py] [_log()] starting thread (client mode): 0xc9b9ff40
2025-11-25T03:11:16.465 [DEBUG] [Thread-201842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:11:16.480 [DEBUG] [Thread-201842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:11:16.480 [INFO] [Thread-201842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] client lang: <none>
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] server lang: <none>
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] kex follows: False
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] Compression: none
2025-11-25T03:11:16.488 [DEBUG] [Thread-201842] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:11:16.547 [DEBUG] [Thread-201842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:11:16.548 [DEBUG] [Thread-201842] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:11:16.548 [DEBUG] [Thread-201842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:11:16.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:11:16.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:11:16.604 [DEBUG] [Thread-201842] [transport.py] [_log()] userauth is OK
2025-11-25T03:11:16.604 [DEBUG] [Thread-201842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:11:16.604 [DEBUG] [Thread-201842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:11:16.604 [DEBUG] [Thread-201842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:11:16.604 [DEBUG] [Thread-201842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:11:16.619 [INFO] [Thread-201842] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:11:16.619 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:11:16.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:11:17.470 [DEBUG] [Thread-201842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:11:17.470 [DEBUG] [Thread-201842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:11:17.518 [DEBUG] [Thread-201842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:11:17.518 [DEBUG] [Thread-201842] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:11:17.526 [DEBUG] [Thread-201842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:11:17.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:11:17.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:11:17.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-11-25T03:11:17.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:11:17.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:11:17.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:11:17.560 [DEBUG] [Thread-201842] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:11:20.874 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:21.613 [DEBUG] [Thread-201844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:31.345 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:36.733 [DEBUG] [Thread-201845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:41.812 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:43.817 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:43.819 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:47.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:11:47.583 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:11:47.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T03:11:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 11, 43), 11.9, 43.64, 0.0, 24.4, 11.64, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:11:48.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:11:43
2025-11-25T03:11:48.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:11:48.859 [DEBUG] [Thread-201846] [transport.py] [_log()] starting thread (client mode): 0xd0713af0
2025-11-25T03:11:48.860 [DEBUG] [Thread-201846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:11:48.872 [DEBUG] [Thread-201846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:11:48.872 [INFO] [Thread-201846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:11:48.879 [DEBUG] [Thread-201846] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:11:48.879 [DEBUG] [Thread-201846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:11:48.880 [DEBUG] [Thread-201846] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:11:48.880 [DEBUG] [Thread-201846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:11:48.880 [DEBUG] [Thread-201846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:11:48.880 [DEBUG] [Thread-201846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:11:48.880 [DEBUG] [Thread-201846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:11:48.880 [DEBUG] [Thread-201846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:11:48.880 [DEBUG] [Thread-201846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:11:48.880 [DEBUG] [Thread-201846] [transport.py] [_log()] client lang: <none>
2025-11-25T03:11:48.881 [DEBUG] [Thread-201846] [transport.py] [_log()] server lang: <none>
2025-11-25T03:11:48.881 [DEBUG] [Thread-201846] [transport.py] [_log()] kex follows: False
2025-11-25T03:11:48.881 [DEBUG] [Thread-201846] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:11:48.882 [DEBUG] [Thread-201846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:11:48.882 [DEBUG] [Thread-201846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:11:48.882 [DEBUG] [Thread-201846] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:11:48.882 [DEBUG] [Thread-201846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:11:48.883 [DEBUG] [Thread-201846] [transport.py] [_log()] Compression: none
2025-11-25T03:11:48.883 [DEBUG] [Thread-201846] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:11:48.922 [DEBUG] [Thread-201846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:11:48.927 [DEBUG] [Thread-201846] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:11:48.929 [DEBUG] [Thread-201846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:11:48.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:11:48.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:11:48.935 [DEBUG] [Thread-201846] [transport.py] [_log()] userauth is OK
2025-11-25T03:11:48.935 [DEBUG] [Thread-201846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:11:48.935 [DEBUG] [Thread-201846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:11:48.935 [DEBUG] [Thread-201846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:11:48.935 [DEBUG] [Thread-201846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:11:48.965 [INFO] [Thread-201846] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:11:48.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:11:49.563 [DEBUG] [Thread-201846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:11:49.563 [DEBUG] [Thread-201846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:11:49.565 [DEBUG] [Thread-201846] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:11:49.596 [DEBUG] [Thread-201846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:11:49.596 [DEBUG] [Thread-201846] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:11:49.600 [DEBUG] [Thread-201846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:11:49.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:11:49.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:11:49.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:11:49.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:11:49.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:11:49.628 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:11:49.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:11:49.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:11:49.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:11:49.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.049404 -999.00  +11.60  17.29     49   +1.20 1 1 1 1 1     0    0 9.35 -40.88 ZNESW 19.4 17.3 119.0 22.4 12.2 -24.3 12.1 -23.9 11.8 -22.5 12.1 -23.7
2025-11-25T03:11:49.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:11:49.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:11:49.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.049404
2025-11-25T03:11:49.636 [DEBUG] [Thread-201846] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:11:49.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:11:49.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:11:49.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:11:49.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:11:49.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:11:49.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:11:43', tmtdew=11.9, humidity=43.64, cloud=0.0, wind=24.4, temperature=11.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:11:43', seeing=1.09, atlas_timestamp='2025-11-25T01:11:08.506', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:08:00')
2025-11-25T03:11:49.734 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:11:49.746 [DEBUG] [Thread-201849] [transport.py] [_log()] starting thread (client mode): 0xd3153370
2025-11-25T03:11:49.746 [DEBUG] [Thread-201849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:11:49.762 [DEBUG] [Thread-201849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:11:49.762 [INFO] [Thread-201849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:11:49.769 [DEBUG] [Thread-201849] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] client lang: <none>
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] server lang: <none>
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] kex follows: False
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] Compression: none
2025-11-25T03:11:49.770 [DEBUG] [Thread-201849] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:11:49.829 [DEBUG] [Thread-201849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:11:49.830 [DEBUG] [Thread-201849] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:11:49.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:11:49.831 [DEBUG] [Thread-201849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:11:49.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:11:49.885 [DEBUG] [Thread-201849] [transport.py] [_log()] userauth is OK
2025-11-25T03:11:49.885 [DEBUG] [Thread-201849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:11:49.885 [DEBUG] [Thread-201849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:11:49.886 [DEBUG] [Thread-201849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:11:49.886 [DEBUG] [Thread-201849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:11:49.907 [INFO] [Thread-201849] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:11:49.907 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:11:49.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:11:50.805 [DEBUG] [Thread-201849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:11:50.805 [DEBUG] [Thread-201849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:11:50.853 [DEBUG] [Thread-201849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:11:50.853 [DEBUG] [Thread-201849] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:11:50.863 [DEBUG] [Thread-201849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:11:50.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:11: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')
2025-11-25T03:11:50.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-11-25T03:11:50.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:11:50.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:11:50.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:11:50.909 [DEBUG] [Thread-201849] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:11:51.782 [DEBUG] [Thread-201851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:11:52.248 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:02.692 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:05.249 [DEBUG] [Thread-201852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:06.931 [DEBUG] [Thread-201853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:13.131 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:20.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:12:20.954 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:12:20.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-11-25T03:12:21.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 12, 16), 11.91, 43.6, 0.0, 24.16, 11.62, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:12:21.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:12:16
2025-11-25T03:12:22.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:12:22.053 [DEBUG] [Thread-201854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:22.218 [DEBUG] [Thread-201855] [transport.py] [_log()] starting thread (client mode): 0xc9b9c0a0
2025-11-25T03:12:22.219 [DEBUG] [Thread-201855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:12:22.230 [DEBUG] [Thread-201855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:12:22.230 [INFO] [Thread-201855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:12:22.235 [DEBUG] [Thread-201855] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] client lang: <none>
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] server lang: <none>
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] kex follows: False
2025-11-25T03:12:22.236 [DEBUG] [Thread-201855] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:12:22.237 [DEBUG] [Thread-201855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:12:22.237 [DEBUG] [Thread-201855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:12:22.237 [DEBUG] [Thread-201855] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:12:22.237 [DEBUG] [Thread-201855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:12:22.237 [DEBUG] [Thread-201855] [transport.py] [_log()] Compression: none
2025-11-25T03:12:22.237 [DEBUG] [Thread-201855] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:12:22.271 [DEBUG] [Thread-201855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:12:22.277 [DEBUG] [Thread-201855] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:12:22.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:12:22.280 [DEBUG] [Thread-201855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:12:22.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:12:22.284 [DEBUG] [Thread-201855] [transport.py] [_log()] userauth is OK
2025-11-25T03:12:22.284 [DEBUG] [Thread-201855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:12:22.284 [DEBUG] [Thread-201855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:12:22.284 [DEBUG] [Thread-201855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:12:22.284 [DEBUG] [Thread-201855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:12:22.310 [INFO] [Thread-201855] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:12:22.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:12:22.941 [DEBUG] [Thread-201855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:12:22.942 [DEBUG] [Thread-201855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:12:22.943 [DEBUG] [Thread-201855] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:12:22.982 [DEBUG] [Thread-201855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:12:22.982 [DEBUG] [Thread-201855] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:12:22.985 [DEBUG] [Thread-201855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:12:22.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:12:22.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:12:23.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:12:23.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:12:23.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:12:23.010 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:12:23.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:12:23.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:12:23.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:12:23.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.049693 -999.00  +11.70  17.70     48   +1.30 1 1 1 1 1     0    0 9.42 -38.54 ZNESW 17.7 17.7 123.6 22.6 12.2 -24.4 12.1 -23.9 11.8 -22.5 12.1 -23.5
2025-11-25T03:12:23.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:12:23.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:12:23.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.049693
2025-11-25T03:12:23.018 [DEBUG] [Thread-201855] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:12:23.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:12:23.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:12:23.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:12:23.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:12:23.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:12:23.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:12:16', tmtdew=11.91, humidity=43.6, cloud=0.0, wind=24.16, temperature=11.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:12:16', seeing=1.06, atlas_timestamp='2025-11-25T01:11:33.475', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02925000000000111, -0.04974999999999952, 0.012249999999999872, -0.027499999999999858, 0.0070000000000014495, 0.07525000000000048, -0.014499999999999957, -0.013749999999998153, 0.010500000000000398, 0.0039999999999995595, -0.028750000000000497, -0.0035000000000007248, 0.07750000000000057, 0.07125000000000092, -0.02800000000000047, -0.002000000000000668, 0.03175000000000061, 0.0235000000000003, -0.03049999999999997, -0.006250000000001421, 0.08199999999999896, 0.06374999999999886, 0.0002500000000011937, 0.00975000000000037, 0.0029999999999983373, 0.03049999999999997, 0.00975000000000037, -0.0024999999999995026, 0.08650000000000091, 0.11900000000000155, 0.06099999999999994, 0.016500000000000625, 0.008749999999999147], zp_timestamp='2025-11-25T01:08:00')
2025-11-25T03:12:23.122 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:12:23.134 [DEBUG] [Thread-201858] [transport.py] [_log()] starting thread (client mode): 0xd319fc70
2025-11-25T03:12:23.134 [DEBUG] [Thread-201858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:12:23.147 [DEBUG] [Thread-201858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:12:23.148 [INFO] [Thread-201858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:12:23.155 [DEBUG] [Thread-201858] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:12:23.155 [DEBUG] [Thread-201858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:12:23.156 [DEBUG] [Thread-201858] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:12:23.156 [DEBUG] [Thread-201858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:12:23.156 [DEBUG] [Thread-201858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:12:23.156 [DEBUG] [Thread-201858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:12:23.156 [DEBUG] [Thread-201858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:12:23.156 [DEBUG] [Thread-201858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:12:23.156 [DEBUG] [Thread-201858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:12:23.156 [DEBUG] [Thread-201858] [transport.py] [_log()] client lang: <none>
2025-11-25T03:12:23.156 [DEBUG] [Thread-201858] [transport.py] [_log()] server lang: <none>
2025-11-25T03:12:23.156 [DEBUG] [Thread-201858] [transport.py] [_log()] kex follows: False
2025-11-25T03:12:23.157 [DEBUG] [Thread-201858] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:12:23.157 [DEBUG] [Thread-201858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:12:23.157 [DEBUG] [Thread-201858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:12:23.157 [DEBUG] [Thread-201858] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:12:23.157 [DEBUG] [Thread-201858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:12:23.157 [DEBUG] [Thread-201858] [transport.py] [_log()] Compression: none
2025-11-25T03:12:23.157 [DEBUG] [Thread-201858] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:12:23.213 [DEBUG] [Thread-201858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:12:23.213 [DEBUG] [Thread-201858] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:12:23.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:12:23.214 [DEBUG] [Thread-201858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:12:23.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:12:23.268 [DEBUG] [Thread-201858] [transport.py] [_log()] userauth is OK
2025-11-25T03:12:23.269 [DEBUG] [Thread-201858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:12:23.269 [DEBUG] [Thread-201858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:12:23.269 [DEBUG] [Thread-201858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:12:23.269 [DEBUG] [Thread-201858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:12:23.287 [INFO] [Thread-201858] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:12:23.287 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:12:23.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:12:23.568 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:24.202 [DEBUG] [Thread-201858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:12:24.202 [DEBUG] [Thread-201858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:12:24.251 [DEBUG] [Thread-201858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:12:24.251 [DEBUG] [Thread-201858] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:12:24.260 [DEBUG] [Thread-201858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:12:24.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:12:24.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:12:24.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-11-25T03:12:24.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:12:24.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:12:24.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:12:24.305 [DEBUG] [Thread-201858] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:12:34.005 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:37.111 [DEBUG] [Thread-201860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:44.036 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:44.048 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:44.445 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:52.240 [DEBUG] [Thread-201861 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:54.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:12:54.331 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:12:54.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-11-25T03:12:54.904 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:12:55.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 12, 49), 11.87, 43.7, 0.0, 22.59, 11.6, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:12:55.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:12:49
2025-11-25T03:12:55.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:12:55.561 [DEBUG] [Thread-201862] [transport.py] [_log()] starting thread (client mode): 0xd0710f40
2025-11-25T03:12:55.562 [DEBUG] [Thread-201862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:12:55.573 [DEBUG] [Thread-201862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:12:55.573 [INFO] [Thread-201862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:12:55.579 [DEBUG] [Thread-201862] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] client lang: <none>
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] server lang: <none>
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] kex follows: False
2025-11-25T03:12:55.580 [DEBUG] [Thread-201862] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:12:55.581 [DEBUG] [Thread-201862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:12:55.581 [DEBUG] [Thread-201862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:12:55.581 [DEBUG] [Thread-201862] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:12:55.582 [DEBUG] [Thread-201862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:12:55.582 [DEBUG] [Thread-201862] [transport.py] [_log()] Compression: none
2025-11-25T03:12:55.582 [DEBUG] [Thread-201862] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:12:55.615 [DEBUG] [Thread-201862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:12:55.618 [DEBUG] [Thread-201862] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:12:55.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:12:55.620 [DEBUG] [Thread-201862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:12:55.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:12:55.622 [DEBUG] [Thread-201862] [transport.py] [_log()] userauth is OK
2025-11-25T03:12:55.622 [DEBUG] [Thread-201862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:12:55.622 [DEBUG] [Thread-201862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:12:55.622 [DEBUG] [Thread-201862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:12:55.622 [DEBUG] [Thread-201862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:12:55.640 [INFO] [Thread-201862] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:12:55.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:12:56.293 [DEBUG] [Thread-201862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:12:56.293 [DEBUG] [Thread-201862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:12:56.295 [DEBUG] [Thread-201862] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:12:56.334 [DEBUG] [Thread-201862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:12:56.334 [DEBUG] [Thread-201862] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:12:56.338 [DEBUG] [Thread-201862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:12:56.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:12:56.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:12:56.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:12:56.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:12:56.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:12:56.368 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:12:56.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:12:56.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:12:56.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:12:56.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.050445 -999.00  +11.70  13.94     48   +1.20 1 1 1 1 1     0    0 9.71 -40.42 ZNESW 18.9 13.9 131.2 20.2 12.2 -24.4 12.1 -23.9 11.8 -22.7 12.1 -23.7
2025-11-25T03:12:56.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:12:56.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:12:56.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.050445
2025-11-25T03:12:56.376 [DEBUG] [Thread-201862] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:12:56.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:12:56.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:12:56.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:12:56.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:12:56.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:12:56.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:12:49', tmtdew=11.87, humidity=43.7, cloud=0.0, wind=22.59, temperature=11.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:12:49', seeing=1.07, atlas_timestamp='2025-11-25T01:12:38.448', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, -0.044749999999998735, 0.02624999999999922, -0.02450000000000152, 0.021000000000000796, 0.005250000000000199, 0.023999999999999133, -0.01624999999999943, 0.022499999999999076, -0.0039999999999995595, 0.0022500000000000853, 0.03049999999999997, 0.08099999999999952, 0.09774999999999956, -0.0015000000000000568, 0.023999999999999133, 0.03575000000000017, 0.04749999999999943, -0.026000000000001577, -0.00975000000000037, 0.08399999999999785, 0.10524999999999807, 0.022250000000001435, 0.047750000000000625, 0.014499999999999957, 0.07750000000000057, 0.03974999999999973, 0.04049999999999976, 0.09450000000000003, 0.0940000000000012, 0.09350000000000236, 0.02800000000000047, 0.04625000000000057], zp_timestamp='2025-11-25T01:11:00')
2025-11-25T03:12:56.493 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:12:56.505 [DEBUG] [Thread-201865] [transport.py] [_log()] starting thread (client mode): 0xd3152320
2025-11-25T03:12:56.505 [DEBUG] [Thread-201865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:12:56.522 [DEBUG] [Thread-201865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:12:56.523 [INFO] [Thread-201865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:12:56.530 [DEBUG] [Thread-201865] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:12:56.530 [DEBUG] [Thread-201865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:12:56.530 [DEBUG] [Thread-201865] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:12:56.530 [DEBUG] [Thread-201865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:12:56.530 [DEBUG] [Thread-201865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:12:56.530 [DEBUG] [Thread-201865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:12:56.530 [DEBUG] [Thread-201865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:12:56.530 [DEBUG] [Thread-201865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] client lang: <none>
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] server lang: <none>
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] kex follows: False
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] Compression: none
2025-11-25T03:12:56.531 [DEBUG] [Thread-201865] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:12:56.588 [DEBUG] [Thread-201865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:12:56.590 [DEBUG] [Thread-201865] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:12:56.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:12:56.591 [DEBUG] [Thread-201865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:12:56.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:12:56.644 [DEBUG] [Thread-201865] [transport.py] [_log()] userauth is OK
2025-11-25T03:12:56.645 [DEBUG] [Thread-201865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:12:56.645 [DEBUG] [Thread-201865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:12:56.645 [DEBUG] [Thread-201865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:12:56.645 [DEBUG] [Thread-201865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:12:56.663 [INFO] [Thread-201865] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:12:56.664 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:12:56.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:12:57.484 [DEBUG] [Thread-201865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:12:57.484 [DEBUG] [Thread-201865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:12:57.532 [DEBUG] [Thread-201865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:12:57.532 [DEBUG] [Thread-201865] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:12:57.541 [DEBUG] [Thread-201865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:12:57.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:12:57.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-11-25T03:12: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') -> 00000000
2025-11-25T03:12:57.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:12:57.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:12:57.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:12:57.583 [DEBUG] [Thread-201865] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:13:05.345 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:05.555 [DEBUG] [Thread-201867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:07.314 [DEBUG] [Thread-201868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:15.763 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:22.470 [DEBUG] [Thread-201869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:26.178 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:27.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:13:27.608 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:13:27.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-11-25T03:13:28.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 13, 22), 11.87, 43.72, 0.0, 22.3, 11.62, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:13:28.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:13:22
2025-11-25T03:13:28.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:13:28.984 [DEBUG] [Thread-201870] [transport.py] [_log()] starting thread (client mode): 0xd317e110
2025-11-25T03:13:28.985 [DEBUG] [Thread-201870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:13:28.986 [DEBUG] [Thread-201870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:13:28.986 [INFO] [Thread-201870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:13:28.990 [DEBUG] [Thread-201870] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:13:28.990 [DEBUG] [Thread-201870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] client lang: <none>
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] server lang: <none>
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] kex follows: False
2025-11-25T03:13:28.991 [DEBUG] [Thread-201870] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:13:28.992 [DEBUG] [Thread-201870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:13:28.992 [DEBUG] [Thread-201870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:13:28.992 [DEBUG] [Thread-201870] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:13:28.992 [DEBUG] [Thread-201870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:13:28.992 [DEBUG] [Thread-201870] [transport.py] [_log()] Compression: none
2025-11-25T03:13:28.992 [DEBUG] [Thread-201870] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:13:29.028 [DEBUG] [Thread-201870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:13:29.032 [DEBUG] [Thread-201870] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:13:29.034 [DEBUG] [Thread-201870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:13:29.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:13:29.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:13:29.039 [DEBUG] [Thread-201870] [transport.py] [_log()] userauth is OK
2025-11-25T03:13:29.040 [DEBUG] [Thread-201870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:13:29.040 [DEBUG] [Thread-201870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:13:29.040 [DEBUG] [Thread-201870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:13:29.040 [DEBUG] [Thread-201870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:13:29.078 [INFO] [Thread-201870] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:13:29.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:13:29.700 [DEBUG] [Thread-201870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:13:29.700 [DEBUG] [Thread-201870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:13:29.702 [DEBUG] [Thread-201870] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:13:29.741 [DEBUG] [Thread-201870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:13:29.741 [DEBUG] [Thread-201870] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:13:29.744 [DEBUG] [Thread-201870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:13:29.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:13:29.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:13:29.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:13:29.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:13:29.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:13:29.772 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:13:29.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:13:29.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:13:29.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:13:29.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.050792 -999.00  +11.70  19.00     48   +1.30 1 1 1 1 1     0    0 9.53 -38.15 ZNESW 15.7 19.0 111.4 24.1 12.2 -24.4 12.1 -24.0 11.8 -22.7 12.1 -23.6
2025-11-25T03:13:29.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:13:29.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:13:29.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.050792
2025-11-25T03:13:29.781 [DEBUG] [Thread-201870] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:13:29.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:13:29.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:13:29.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:13:29.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:13:29.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:13:29.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:13:22', tmtdew=11.87, humidity=43.72, cloud=0.0, wind=22.3, temperature=11.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:13:22', seeing=1.19, atlas_timestamp='2025-11-25T01:13:08.429', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, -0.044749999999998735, 0.02624999999999922, -0.02450000000000152, 0.021000000000000796, 0.005250000000000199, 0.023999999999999133, -0.01624999999999943, 0.022499999999999076, -0.0039999999999995595, 0.0022500000000000853, 0.03049999999999997, 0.08099999999999952, 0.09774999999999956, -0.0015000000000000568, 0.023999999999999133, 0.03575000000000017, 0.04749999999999943, -0.026000000000001577, -0.00975000000000037, 0.08399999999999785, 0.10524999999999807, 0.022250000000001435, 0.047750000000000625, 0.014499999999999957, 0.07750000000000057, 0.03974999999999973, 0.04049999999999976, 0.09450000000000003, 0.0940000000000012, 0.09350000000000236, 0.02800000000000047, 0.04625000000000057], zp_timestamp='2025-11-25T01:11:00')
2025-11-25T03:13:29.882 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:13:29.894 [DEBUG] [Thread-201873] [transport.py] [_log()] starting thread (client mode): 0xd31f6830
2025-11-25T03:13:29.894 [DEBUG] [Thread-201873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:13:29.909 [DEBUG] [Thread-201873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:13:29.910 [INFO] [Thread-201873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:13:29.917 [DEBUG] [Thread-201873] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:13:29.917 [DEBUG] [Thread-201873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:13:29.917 [DEBUG] [Thread-201873] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:13:29.917 [DEBUG] [Thread-201873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:13:29.917 [DEBUG] [Thread-201873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:13:29.917 [DEBUG] [Thread-201873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] client lang: <none>
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] server lang: <none>
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] kex follows: False
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] Compression: none
2025-11-25T03:13:29.918 [DEBUG] [Thread-201873] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:13:29.976 [DEBUG] [Thread-201873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:13:29.977 [DEBUG] [Thread-201873] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:13:29.977 [DEBUG] [Thread-201873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:13:29.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:13:29.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:13:30.032 [DEBUG] [Thread-201873] [transport.py] [_log()] userauth is OK
2025-11-25T03:13:30.032 [DEBUG] [Thread-201873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:13:30.033 [DEBUG] [Thread-201873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:13:30.033 [DEBUG] [Thread-201873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:13:30.033 [DEBUG] [Thread-201873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:13:30.051 [INFO] [Thread-201873] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:13:30.051 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:13:30.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:13:30.866 [DEBUG] [Thread-201873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:13:30.866 [DEBUG] [Thread-201873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:13:30.914 [DEBUG] [Thread-201873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:13:30.914 [DEBUG] [Thread-201873] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:13:30.922 [DEBUG] [Thread-201873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:13:30.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:13:30.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-11-25T03:13:30.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-11-25T03:13:30.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:13:30.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:13:30.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:13:30.957 [DEBUG] [Thread-201873] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:13:36.616 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:37.567 [DEBUG] [Thread-201875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:44.251 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:44.253 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:47.118 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:52.687 [DEBUG] [Thread-201876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:13:57.597 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:00.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:14:00.981 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:14:01.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-11-25T03:14:01.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 13, 55), 11.91, 43.72, 0.0, 21.91, 11.62, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:14:01.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:13:55
2025-11-25T03:14:02.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:14:02.206 [DEBUG] [Thread-201877] [transport.py] [_log()] starting thread (client mode): 0xc9b9e7a0
2025-11-25T03:14:02.208 [DEBUG] [Thread-201877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:14:02.218 [DEBUG] [Thread-201877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:14:02.218 [INFO] [Thread-201877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] client lang: <none>
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] server lang: <none>
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] kex follows: False
2025-11-25T03:14:02.223 [DEBUG] [Thread-201877] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:14:02.224 [DEBUG] [Thread-201877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:14:02.224 [DEBUG] [Thread-201877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:14:02.224 [DEBUG] [Thread-201877] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:14:02.224 [DEBUG] [Thread-201877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:14:02.224 [DEBUG] [Thread-201877] [transport.py] [_log()] Compression: none
2025-11-25T03:14:02.225 [DEBUG] [Thread-201877] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:14:02.260 [DEBUG] [Thread-201877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:14:02.264 [DEBUG] [Thread-201877] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:14:02.265 [DEBUG] [Thread-201877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:14:02.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:14:02.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:14:02.268 [DEBUG] [Thread-201877] [transport.py] [_log()] userauth is OK
2025-11-25T03:14:02.268 [DEBUG] [Thread-201877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:14:02.269 [DEBUG] [Thread-201877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:14:02.269 [DEBUG] [Thread-201877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:14:02.269 [DEBUG] [Thread-201877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:14:02.299 [INFO] [Thread-201877] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:14:02.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:14:02.912 [DEBUG] [Thread-201877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:14:02.912 [DEBUG] [Thread-201877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:14:02.913 [DEBUG] [Thread-201877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:14:02.953 [DEBUG] [Thread-201877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:14:02.953 [DEBUG] [Thread-201877] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:14:02.955 [DEBUG] [Thread-201877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:14:02.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:14:02.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:14:02.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:14:02.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:14:02.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:14:02.976 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:14:02.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:14:02.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:14:02.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:14:02.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.051140 -999.00  +11.60  18.01     48   +1.20 1 1 1 1 1     0    0 9.60 -36.26 ZNESW 16.8 18.0 122.8 22.1 12.2 -24.4 12.1 -23.9 11.8 -22.8 12.1 -23.7
2025-11-25T03:14:02.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:14:02.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:14:02.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.051140
2025-11-25T03:14:02.982 [DEBUG] [Thread-201877] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:14:02.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:14:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:14:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:14:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:14:02.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:14:02.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:13:55', tmtdew=11.91, humidity=43.72, cloud=0.0, wind=21.91, temperature=11.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:13:55', seeing=1.09, atlas_timestamp='2025-11-25T01:13:38.496', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, -0.044749999999998735, 0.02624999999999922, -0.02450000000000152, 0.021000000000000796, 0.005250000000000199, 0.023999999999999133, -0.01624999999999943, 0.022499999999999076, -0.0039999999999995595, 0.0022500000000000853, 0.03049999999999997, 0.08099999999999952, 0.09774999999999956, -0.0015000000000000568, 0.023999999999999133, 0.03575000000000017, 0.04749999999999943, -0.026000000000001577, -0.00975000000000037, 0.08399999999999785, 0.10524999999999807, 0.022250000000001435, 0.047750000000000625, 0.014499999999999957, 0.07750000000000057, 0.03974999999999973, 0.04049999999999976, 0.09450000000000003, 0.0940000000000012, 0.09350000000000236, 0.02800000000000047, 0.04625000000000057], zp_timestamp='2025-11-25T01:11:00')
2025-11-25T03:14:03.065 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:14:03.076 [DEBUG] [Thread-201880] [transport.py] [_log()] starting thread (client mode): 0xc9b9d810
2025-11-25T03:14:03.076 [DEBUG] [Thread-201880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:14:03.093 [DEBUG] [Thread-201880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:14:03.093 [INFO] [Thread-201880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:14:03.101 [DEBUG] [Thread-201880] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:14:03.101 [DEBUG] [Thread-201880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:14:03.101 [DEBUG] [Thread-201880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:14:03.101 [DEBUG] [Thread-201880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:14:03.101 [DEBUG] [Thread-201880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:14:03.101 [DEBUG] [Thread-201880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:14:03.101 [DEBUG] [Thread-201880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:14:03.101 [DEBUG] [Thread-201880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:14:03.101 [DEBUG] [Thread-201880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:14:03.101 [DEBUG] [Thread-201880] [transport.py] [_log()] client lang: <none>
2025-11-25T03:14:03.102 [DEBUG] [Thread-201880] [transport.py] [_log()] server lang: <none>
2025-11-25T03:14:03.102 [DEBUG] [Thread-201880] [transport.py] [_log()] kex follows: False
2025-11-25T03:14:03.102 [DEBUG] [Thread-201880] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:14:03.102 [DEBUG] [Thread-201880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:14:03.102 [DEBUG] [Thread-201880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:14:03.102 [DEBUG] [Thread-201880] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:14:03.102 [DEBUG] [Thread-201880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:14:03.102 [DEBUG] [Thread-201880] [transport.py] [_log()] Compression: none
2025-11-25T03:14:03.102 [DEBUG] [Thread-201880] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:14:03.159 [DEBUG] [Thread-201880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:14:03.159 [DEBUG] [Thread-201880] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:14:03.160 [DEBUG] [Thread-201880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:14:03.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:14:03.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:14:03.220 [DEBUG] [Thread-201880] [transport.py] [_log()] userauth is OK
2025-11-25T03:14:03.220 [DEBUG] [Thread-201880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:14:03.220 [DEBUG] [Thread-201880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:14:03.220 [DEBUG] [Thread-201880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:14:03.220 [DEBUG] [Thread-201880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:14:03.235 [INFO] [Thread-201880] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:14:03.235 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:14:03.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:14:04.085 [DEBUG] [Thread-201880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:14:04.085 [DEBUG] [Thread-201880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:14:04.133 [DEBUG] [Thread-201880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:14:04.133 [DEBUG] [Thread-201880] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:14:04.141 [DEBUG] [Thread-201880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:14:04.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:14:04.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:14:04.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:14:04.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:14:04.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:14:04.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:14:04.174 [DEBUG] [Thread-201880] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:14:05.831 [DEBUG] [Thread-201882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:07.722 [DEBUG] [Thread-201883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:08.054 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:18.526 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:22.810 [DEBUG] [Thread-201884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:28.934 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:34.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:14:34.208 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:14:34.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-11-25T03:14:35.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 14, 28), 11.91, 43.75, 0.0, 22.27, 11.64, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:14:35.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:14:28
2025-11-25T03:14:35.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:14:35.370 [DEBUG] [Thread-201885] [transport.py] [_log()] starting thread (client mode): 0xd3153b50
2025-11-25T03:14:35.371 [DEBUG] [Thread-201885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:14:35.381 [DEBUG] [Thread-201885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:14:35.381 [INFO] [Thread-201885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:14:35.388 [DEBUG] [Thread-201885] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:14:35.388 [DEBUG] [Thread-201885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:14:35.389 [DEBUG] [Thread-201885] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:14:35.389 [DEBUG] [Thread-201885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:14:35.389 [DEBUG] [Thread-201885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:14:35.389 [DEBUG] [Thread-201885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:14:35.389 [DEBUG] [Thread-201885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:14:35.389 [DEBUG] [Thread-201885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:14:35.389 [DEBUG] [Thread-201885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:14:35.389 [DEBUG] [Thread-201885] [transport.py] [_log()] client lang: <none>
2025-11-25T03:14:35.389 [DEBUG] [Thread-201885] [transport.py] [_log()] server lang: <none>
2025-11-25T03:14:35.389 [DEBUG] [Thread-201885] [transport.py] [_log()] kex follows: False
2025-11-25T03:14:35.390 [DEBUG] [Thread-201885] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:14:35.390 [DEBUG] [Thread-201885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:14:35.390 [DEBUG] [Thread-201885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:14:35.391 [DEBUG] [Thread-201885] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:14:35.391 [DEBUG] [Thread-201885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:14:35.391 [DEBUG] [Thread-201885] [transport.py] [_log()] Compression: none
2025-11-25T03:14:35.391 [DEBUG] [Thread-201885] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:14:35.427 [DEBUG] [Thread-201885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:14:35.431 [DEBUG] [Thread-201885] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:14:35.433 [DEBUG] [Thread-201885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:14:35.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:14:35.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:14:35.437 [DEBUG] [Thread-201885] [transport.py] [_log()] userauth is OK
2025-11-25T03:14:35.437 [DEBUG] [Thread-201885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:14:35.437 [DEBUG] [Thread-201885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:14:35.438 [DEBUG] [Thread-201885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:14:35.438 [DEBUG] [Thread-201885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:14:35.464 [INFO] [Thread-201885] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:14:35.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:14:36.117 [DEBUG] [Thread-201885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:14:36.117 [DEBUG] [Thread-201885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:14:36.118 [DEBUG] [Thread-201885] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:14:36.158 [DEBUG] [Thread-201885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:14:36.159 [DEBUG] [Thread-201885] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:14:36.162 [DEBUG] [Thread-201885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:14:36.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:14:36.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:14:36.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:14:36.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:14:36.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:14:36.191 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:14:36.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:14:36.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:14:36.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:14:36.194 [DEBUG] [Thread-201885] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:14:36.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.051487 -999.00  +11.60  13.87     49   +1.20 1 1 1 1 1     0    0 9.65 -39.71 ZNESW 19.2 13.9 109.8 21.3 12.2 -24.4 12.0 -23.9 11.8 -22.8 12.1 -23.7
2025-11-25T03:14:36.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:14:36.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:14:36.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.051487
2025-11-25T03:14:36.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:14:36.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:14:36.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:14:36.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:14:36.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:14:36.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:14:28', tmtdew=11.91, humidity=43.75, cloud=0.0, wind=22.27, temperature=11.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:14:28', seeing=1.08, atlas_timestamp='2025-11-25T01:14:08.477', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, -0.044749999999998735, 0.02624999999999922, -0.02450000000000152, 0.021000000000000796, 0.005250000000000199, 0.023999999999999133, -0.01624999999999943, 0.022499999999999076, -0.0039999999999995595, 0.0022500000000000853, 0.03049999999999997, 0.08099999999999952, 0.09774999999999956, -0.0015000000000000568, 0.023999999999999133, 0.03575000000000017, 0.04749999999999943, -0.026000000000001577, -0.00975000000000037, 0.08399999999999785, 0.10524999999999807, 0.022250000000001435, 0.047750000000000625, 0.014499999999999957, 0.07750000000000057, 0.03974999999999973, 0.04049999999999976, 0.09450000000000003, 0.0940000000000012, 0.09350000000000236, 0.02800000000000047, 0.04625000000000057], zp_timestamp='2025-11-25T01:11:00')
2025-11-25T03:14:36.289 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:14:36.301 [DEBUG] [Thread-201888] [transport.py] [_log()] starting thread (client mode): 0xd317c430
2025-11-25T03:14:36.301 [DEBUG] [Thread-201888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:14:36.316 [DEBUG] [Thread-201888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:14:36.316 [INFO] [Thread-201888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] client lang: <none>
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] server lang: <none>
2025-11-25T03:14:36.324 [DEBUG] [Thread-201888] [transport.py] [_log()] kex follows: False
2025-11-25T03:14:36.325 [DEBUG] [Thread-201888] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:14:36.325 [DEBUG] [Thread-201888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:14:36.325 [DEBUG] [Thread-201888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:14:36.325 [DEBUG] [Thread-201888] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:14:36.325 [DEBUG] [Thread-201888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:14:36.325 [DEBUG] [Thread-201888] [transport.py] [_log()] Compression: none
2025-11-25T03:14:36.325 [DEBUG] [Thread-201888] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:14:36.379 [DEBUG] [Thread-201888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:14:36.379 [DEBUG] [Thread-201888] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:14:36.379 [DEBUG] [Thread-201888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:14:36.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:14:36.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:14:36.436 [DEBUG] [Thread-201888] [transport.py] [_log()] userauth is OK
2025-11-25T03:14:36.436 [DEBUG] [Thread-201888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:14:36.436 [DEBUG] [Thread-201888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:14:36.436 [DEBUG] [Thread-201888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:14:36.436 [DEBUG] [Thread-201888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:14:36.455 [INFO] [Thread-201888] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:14: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-11-25T03:14:36.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:14:37.308 [DEBUG] [Thread-201888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:14:37.309 [DEBUG] [Thread-201888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:14:37.356 [DEBUG] [Thread-201888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:14:37.356 [DEBUG] [Thread-201888] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:14:37.365 [DEBUG] [Thread-201888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:14:37.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:14:37.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-11-25T03:14:37.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-11-25T03:14:37.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:14:37.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:14:37.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:14:37.400 [DEBUG] [Thread-201888] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:14:37.853 [DEBUG] [Thread-201890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:39.353 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:44.455 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:44.456 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:49.777 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:14:52.974 [DEBUG] [Thread-201891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:00.207 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:06.173 [DEBUG] [Thread-201892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:07.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:15:07.426 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:15:07.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-11-25T03:15:08.026 [DEBUG] [Thread-201893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:08.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 15, 1), 11.9, 43.79, 0.0, 22.07, 11.64, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:15:08.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:15:01
2025-11-25T03:15:08.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:15:08.649 [DEBUG] [Thread-201894] [transport.py] [_log()] starting thread (client mode): 0xd319f700
2025-11-25T03:15:08.650 [DEBUG] [Thread-201894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:15:08.657 [DEBUG] [Thread-201894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:15:08.658 [INFO] [Thread-201894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:15:08.663 [DEBUG] [Thread-201894] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:15:08.663 [DEBUG] [Thread-201894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:15:08.663 [DEBUG] [Thread-201894] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:15:08.663 [DEBUG] [Thread-201894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:15:08.663 [DEBUG] [Thread-201894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:15:08.663 [DEBUG] [Thread-201894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:15:08.663 [DEBUG] [Thread-201894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:15:08.663 [DEBUG] [Thread-201894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:15:08.663 [DEBUG] [Thread-201894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:15:08.663 [DEBUG] [Thread-201894] [transport.py] [_log()] client lang: <none>
2025-11-25T03:15:08.664 [DEBUG] [Thread-201894] [transport.py] [_log()] server lang: <none>
2025-11-25T03:15:08.664 [DEBUG] [Thread-201894] [transport.py] [_log()] kex follows: False
2025-11-25T03:15:08.664 [DEBUG] [Thread-201894] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:15:08.664 [DEBUG] [Thread-201894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:15:08.664 [DEBUG] [Thread-201894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:15:08.664 [DEBUG] [Thread-201894] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:15:08.664 [DEBUG] [Thread-201894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:15:08.665 [DEBUG] [Thread-201894] [transport.py] [_log()] Compression: none
2025-11-25T03:15:08.665 [DEBUG] [Thread-201894] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:15:08.696 [DEBUG] [Thread-201894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:15:08.702 [DEBUG] [Thread-201894] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:15:08.705 [DEBUG] [Thread-201894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:15:08.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:15:08.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:15:08.711 [DEBUG] [Thread-201894] [transport.py] [_log()] userauth is OK
2025-11-25T03:15:08.711 [DEBUG] [Thread-201894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:15:08.711 [DEBUG] [Thread-201894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:15:08.712 [DEBUG] [Thread-201894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:15:08.712 [DEBUG] [Thread-201894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:15:08.735 [INFO] [Thread-201894] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:15:08.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:15:09.313 [DEBUG] [Thread-201894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:15:09.313 [DEBUG] [Thread-201894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:15:09.315 [DEBUG] [Thread-201894] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:15:09.353 [DEBUG] [Thread-201894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:15:09.354 [DEBUG] [Thread-201894] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:15:09.357 [DEBUG] [Thread-201894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:15:09.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:15:09.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:15:09.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:15:09.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:15:09.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:15:09.389 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:15:09.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:15:09.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:15:09.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:15:09.391 [DEBUG] [Thread-201894] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:15:09.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.051777 -999.00  +11.60  14.57     49   +1.20 1 1 1 1 1     0    0 9.68 -34.01 ZNESW 14.6 14.6 119.0 21.9 12.2 -24.4 12.0 -24.0 11.8 -22.8 12.1 -23.7
2025-11-25T03:15:09.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:15:09.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:15:09.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.051777
2025-11-25T03:15:09.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:15:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:15:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:15:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:15:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:15:09.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:15:01', tmtdew=11.9, humidity=43.79, cloud=0.0, wind=22.07, temperature=11.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:15:01', seeing=1.08, atlas_timestamp='2025-11-25T01:14:33.533', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, -0.044749999999998735, 0.02624999999999922, -0.02450000000000152, 0.021000000000000796, 0.005250000000000199, 0.023999999999999133, -0.01624999999999943, 0.022499999999999076, -0.0039999999999995595, 0.0022500000000000853, 0.03049999999999997, 0.08099999999999952, 0.09774999999999956, -0.0015000000000000568, 0.023999999999999133, 0.03575000000000017, 0.04749999999999943, -0.026000000000001577, -0.00975000000000037, 0.08399999999999785, 0.10524999999999807, 0.022250000000001435, 0.047750000000000625, 0.014499999999999957, 0.07750000000000057, 0.03974999999999973, 0.04049999999999976, 0.09450000000000003, 0.0940000000000012, 0.09350000000000236, 0.02800000000000047, 0.04625000000000057], zp_timestamp='2025-11-25T01:11:00')
2025-11-25T03:15:09.515 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:15:09.526 [DEBUG] [Thread-201897] [transport.py] [_log()] starting thread (client mode): 0xd319eef0
2025-11-25T03:15:09.526 [DEBUG] [Thread-201897] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:15:09.542 [DEBUG] [Thread-201897] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:15:09.542 [INFO] [Thread-201897] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] client lang: <none>
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] server lang: <none>
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] kex follows: False
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] Compression: none
2025-11-25T03:15:09.550 [DEBUG] [Thread-201897] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:15:09.609 [DEBUG] [Thread-201897] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:15:09.609 [DEBUG] [Thread-201897] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:15:09.610 [DEBUG] [Thread-201897] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:15:09.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:15:09.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:15:09.665 [DEBUG] [Thread-201897] [transport.py] [_log()] userauth is OK
2025-11-25T03:15:09.665 [DEBUG] [Thread-201897] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:15:09.665 [DEBUG] [Thread-201897] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:15:09.666 [DEBUG] [Thread-201897] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:15:09.666 [DEBUG] [Thread-201897] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:15:09.685 [INFO] [Thread-201897] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:15:09.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:15:09.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:15:10.513 [DEBUG] [Thread-201897] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:15:10.513 [DEBUG] [Thread-201897] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:15:10.561 [DEBUG] [Thread-201897] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:15:10.562 [DEBUG] [Thread-201897] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:15:10.571 [DEBUG] [Thread-201897] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:15:10.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:15:10.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-11-25T03:15:10.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-11-25T03:15:10.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:15:10.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:15:10.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:15:10.607 [DEBUG] [Thread-201897] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:15:10.689 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:21.130 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:23.086 [DEBUG] [Thread-201899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:31.577 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:38.225 [DEBUG] [Thread-201900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:40.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:15:40.605 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:15:40.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-11-25T03:15:41.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 15, 35), 11.77, 43.87, 0.0, 22.43, 11.57, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:15:41.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:15:35
2025-11-25T03:15:41.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:15:41.883 [DEBUG] [Thread-201901] [transport.py] [_log()] starting thread (client mode): 0xd317e6b0
2025-11-25T03:15:41.884 [DEBUG] [Thread-201901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:15:41.889 [DEBUG] [Thread-201901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:15:41.889 [INFO] [Thread-201901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] client lang: <none>
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] server lang: <none>
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] kex follows: False
2025-11-25T03:15:41.894 [DEBUG] [Thread-201901] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:15:41.895 [DEBUG] [Thread-201901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:15:41.895 [DEBUG] [Thread-201901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:15:41.895 [DEBUG] [Thread-201901] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:15:41.895 [DEBUG] [Thread-201901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:15:41.895 [DEBUG] [Thread-201901] [transport.py] [_log()] Compression: none
2025-11-25T03:15:41.895 [DEBUG] [Thread-201901] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:15:41.925 [DEBUG] [Thread-201901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:15:41.930 [DEBUG] [Thread-201901] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:15:41.932 [DEBUG] [Thread-201901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:15:41.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:15:41.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:15:41.937 [DEBUG] [Thread-201901] [transport.py] [_log()] userauth is OK
2025-11-25T03:15:41.937 [DEBUG] [Thread-201901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:15:41.938 [DEBUG] [Thread-201901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:15:41.938 [DEBUG] [Thread-201901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:15:41.938 [DEBUG] [Thread-201901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:15:41.965 [INFO] [Thread-201901] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:15:41.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:15:42.009 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:42.523 [DEBUG] [Thread-201901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:15:42.524 [DEBUG] [Thread-201901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:15:42.525 [DEBUG] [Thread-201901] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:15:42.564 [DEBUG] [Thread-201901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:15:42.565 [DEBUG] [Thread-201901] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:15:42.567 [DEBUG] [Thread-201901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:15:42.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:15:42.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:15:42.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:15:42.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:15:42.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:15:42.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:15:42.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:15:42.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:15:42.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:15:42.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.052528 -999.00  +11.60  20.40     49   +1.30 1 1 1 1 1     0    0 9.75 -32.03 ZNESW 19.2 20.4 130.4 22.9 12.2 -24.3 12.1 -23.9 11.7 -22.7 12.1 -23.6
2025-11-25T03:15:42.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:15:42.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:15:42.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.052528
2025-11-25T03:15:42.600 [DEBUG] [Thread-201901] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:15:42.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:15:42.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:15:42.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:15:42.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:15:42.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:15:42.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:15:35', tmtdew=11.77, humidity=43.87, cloud=0.0, wind=22.43, temperature=11.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:15:35', seeing=1.09, atlas_timestamp='2025-11-25T01:15:38.419', atlas_cloud=1, atlas_rain=1, zp_data=[-0.017250000000000654, -0.044749999999998735, 0.02624999999999922, -0.02450000000000152, 0.021000000000000796, 0.005250000000000199, 0.023999999999999133, -0.01624999999999943, 0.022499999999999076, -0.0039999999999995595, 0.0022500000000000853, 0.03049999999999997, 0.08099999999999952, 0.09774999999999956, -0.0015000000000000568, 0.023999999999999133, 0.03575000000000017, 0.04749999999999943, -0.026000000000001577, -0.00975000000000037, 0.08399999999999785, 0.10524999999999807, 0.022250000000001435, 0.047750000000000625, 0.014499999999999957, 0.07750000000000057, 0.03974999999999973, 0.04049999999999976, 0.09450000000000003, 0.0940000000000012, 0.09350000000000236, 0.02800000000000047, 0.04625000000000057], zp_timestamp='2025-11-25T01:11:00')
2025-11-25T03:15:42.714 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:15:42.727 [DEBUG] [Thread-201904] [transport.py] [_log()] starting thread (client mode): 0xd317d180
2025-11-25T03:15:42.727 [DEBUG] [Thread-201904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:15:42.741 [DEBUG] [Thread-201904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:15:42.741 [INFO] [Thread-201904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:15:42.749 [DEBUG] [Thread-201904] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:15:42.749 [DEBUG] [Thread-201904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:15:42.749 [DEBUG] [Thread-201904] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:15:42.750 [DEBUG] [Thread-201904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:15:42.750 [DEBUG] [Thread-201904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:15:42.750 [DEBUG] [Thread-201904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:15:42.750 [DEBUG] [Thread-201904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:15:42.750 [DEBUG] [Thread-201904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:15:42.750 [DEBUG] [Thread-201904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:15:42.750 [DEBUG] [Thread-201904] [transport.py] [_log()] client lang: <none>
2025-11-25T03:15:42.750 [DEBUG] [Thread-201904] [transport.py] [_log()] server lang: <none>
2025-11-25T03:15:42.751 [DEBUG] [Thread-201904] [transport.py] [_log()] kex follows: False
2025-11-25T03:15:42.751 [DEBUG] [Thread-201904] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:15:42.751 [DEBUG] [Thread-201904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:15:42.751 [DEBUG] [Thread-201904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:15:42.751 [DEBUG] [Thread-201904] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:15:42.751 [DEBUG] [Thread-201904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:15:42.751 [DEBUG] [Thread-201904] [transport.py] [_log()] Compression: none
2025-11-25T03:15:42.752 [DEBUG] [Thread-201904] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:15:42.810 [DEBUG] [Thread-201904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:15:42.811 [DEBUG] [Thread-201904] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:15:42.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:15:42.813 [DEBUG] [Thread-201904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:15:42.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:15:42.869 [DEBUG] [Thread-201904] [transport.py] [_log()] userauth is OK
2025-11-25T03:15:42.869 [DEBUG] [Thread-201904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:15:42.869 [DEBUG] [Thread-201904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:15:42.870 [DEBUG] [Thread-201904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:15:42.870 [DEBUG] [Thread-201904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:15:42.888 [INFO] [Thread-201904] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:15: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-11-25T03:15:42.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:15:43.705 [DEBUG] [Thread-201904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:15:43.705 [DEBUG] [Thread-201904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:15:43.753 [DEBUG] [Thread-201904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:15:43.753 [DEBUG] [Thread-201904] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:15:43.761 [DEBUG] [Thread-201904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:15:43.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:15:43.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-11-25T03:15: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') -> 00000000
2025-11-25T03:15:43.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:15:43.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:15:43.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:15:43.794 [DEBUG] [Thread-201904] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:15:44.669 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:44.670 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:52.517 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:15:53.289 [DEBUG] [Thread-201906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:02.941 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:06.459 [DEBUG] [Thread-201907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:08.443 [DEBUG] [Thread-201908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:13.377 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:13.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:16:13.811 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:16:13.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-11-25T03:16:14.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 16, 8), 11.77, 43.87, 0.0, 22.37, 11.61, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:16:14.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:16:08
2025-11-25T03:16:14.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:16:15.109 [DEBUG] [Thread-201909] [transport.py] [_log()] starting thread (client mode): 0xc9b80c10
2025-11-25T03:16:15.110 [DEBUG] [Thread-201909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:16:15.111 [DEBUG] [Thread-201909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:16:15.111 [INFO] [Thread-201909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] client lang: <none>
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] server lang: <none>
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] kex follows: False
2025-11-25T03:16:15.116 [DEBUG] [Thread-201909] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:16:15.117 [DEBUG] [Thread-201909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:16:15.117 [DEBUG] [Thread-201909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:16:15.117 [DEBUG] [Thread-201909] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:16:15.117 [DEBUG] [Thread-201909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:16:15.117 [DEBUG] [Thread-201909] [transport.py] [_log()] Compression: none
2025-11-25T03:16:15.117 [DEBUG] [Thread-201909] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:16:15.143 [DEBUG] [Thread-201909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:16:15.148 [DEBUG] [Thread-201909] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:16:15.150 [DEBUG] [Thread-201909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:16:15.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:16:15.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:16:15.155 [DEBUG] [Thread-201909] [transport.py] [_log()] userauth is OK
2025-11-25T03:16:15.155 [DEBUG] [Thread-201909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:16:15.155 [DEBUG] [Thread-201909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:16:15.155 [DEBUG] [Thread-201909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:16:15.156 [DEBUG] [Thread-201909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:16:15.182 [INFO] [Thread-201909] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:16:15.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:16:15.764 [DEBUG] [Thread-201909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:16:15.765 [DEBUG] [Thread-201909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:16:15.767 [DEBUG] [Thread-201909] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:16:15.806 [DEBUG] [Thread-201909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:16:15.806 [DEBUG] [Thread-201909] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:16:15.810 [DEBUG] [Thread-201909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:16:15.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:16:15.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:16:15.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:16:15.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:16:15.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:16:15.836 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:16:15.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:16:15.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:16:15.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:16:15.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.052818 -999.00  +11.60  19.14     49   +1.40 1 1 1 1 1     0    0 9.70 -31.98 ZNESW 19.1 19.1 126.8 22.2 12.2 -24.5 12.0 -23.9 11.8 -22.6 12.1 -23.7
2025-11-25T03:16:15.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:16:15.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:16:15.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.052818
2025-11-25T03:16:15.845 [DEBUG] [Thread-201909] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:16:15.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:16:15.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:16:15.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:16:15.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:16:15.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:16:15.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:16:08', tmtdew=11.77, humidity=43.87, cloud=0.0, wind=22.37, temperature=11.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:16:08', seeing=0.97, atlas_timestamp='2025-11-25T01:16:03.475', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.044749999999998735, 0.017750000000001265, -0.040500000000001535, 0.009499999999999176, -0.007749999999999702, 0.0009999999999994458, -0.008749999999999147, 0.006000000000000227, -0.0129999999999999, -0.015750000000000597, -0.0030000000000001137, 0.03449999999999953, 0.07824999999999882, -0.023500000000002075, -0.008000000000000895, 0.029249999999999332, 0.015499999999999403, -0.034000000000000696, -0.011750000000001037, 0.07249999999999801, 0.08674999999999855, 0.030250000000000554, 0.020749999999999602, 0.009999999999999787, 0.0365000000000002, 0.016750000000000043, 0.033500000000000085, 0.08800000000000097, 0.0815000000000019, 0.058000000000001606, 0.027499999999999858, 0.03524999999999778], zp_timestamp='2025-11-25T01:13:00')
2025-11-25T03:16:15.956 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:16:15.966 [DEBUG] [Thread-201912] [transport.py] [_log()] starting thread (client mode): 0xc9b81f30
2025-11-25T03:16:15.966 [DEBUG] [Thread-201912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:16:15.981 [DEBUG] [Thread-201912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:16:15.981 [INFO] [Thread-201912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:16:15.989 [DEBUG] [Thread-201912] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:16:15.989 [DEBUG] [Thread-201912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:16:15.989 [DEBUG] [Thread-201912] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:16:15.989 [DEBUG] [Thread-201912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] client lang: <none>
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] server lang: <none>
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] kex follows: False
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] Compression: none
2025-11-25T03:16:15.990 [DEBUG] [Thread-201912] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:16:16.048 [DEBUG] [Thread-201912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:16:16.049 [DEBUG] [Thread-201912] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:16:16.049 [DEBUG] [Thread-201912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:16:16.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:16:16.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:16:16.104 [DEBUG] [Thread-201912] [transport.py] [_log()] userauth is OK
2025-11-25T03:16:16.104 [DEBUG] [Thread-201912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:16:16.104 [DEBUG] [Thread-201912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:16:16.104 [DEBUG] [Thread-201912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:16:16.104 [DEBUG] [Thread-201912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:16:16.123 [INFO] [Thread-201912] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:16:16.123 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:16:16.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:16:16.987 [DEBUG] [Thread-201912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:16:16.987 [DEBUG] [Thread-201912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:16:17.035 [DEBUG] [Thread-201912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:16:17.035 [DEBUG] [Thread-201912] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:16:17.044 [DEBUG] [Thread-201912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:16:17.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:16:17.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-11-25T03:16:17.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-11-25T03:16:17.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:16:17.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:16:17.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:16:17.077 [DEBUG] [Thread-201912] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:16:23.534 [DEBUG] [Thread-201914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:23.806 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:34.233 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:38.681 [DEBUG] [Thread-201915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:44.717 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:44.875 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:44.877 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:47.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:16:47.102 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:16:47.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-11-25T03:16:47.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 16, 40), 11.79, 44.34, 0.0, 22.41, 11.77, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:16:47.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:16:40
2025-11-25T03:16:48.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:16:48.321 [DEBUG] [Thread-201916] [transport.py] [_log()] starting thread (client mode): 0xc9b9c520
2025-11-25T03:16:48.322 [DEBUG] [Thread-201916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:16:48.329 [DEBUG] [Thread-201916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:16:48.329 [INFO] [Thread-201916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:16:48.335 [DEBUG] [Thread-201916] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:16:48.335 [DEBUG] [Thread-201916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:16:48.335 [DEBUG] [Thread-201916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:16:48.335 [DEBUG] [Thread-201916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:16:48.336 [DEBUG] [Thread-201916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:16:48.336 [DEBUG] [Thread-201916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:16:48.336 [DEBUG] [Thread-201916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:16:48.336 [DEBUG] [Thread-201916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:16:48.336 [DEBUG] [Thread-201916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:16:48.336 [DEBUG] [Thread-201916] [transport.py] [_log()] client lang: <none>
2025-11-25T03:16:48.336 [DEBUG] [Thread-201916] [transport.py] [_log()] server lang: <none>
2025-11-25T03:16:48.336 [DEBUG] [Thread-201916] [transport.py] [_log()] kex follows: False
2025-11-25T03:16:48.336 [DEBUG] [Thread-201916] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:16:48.337 [DEBUG] [Thread-201916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:16:48.337 [DEBUG] [Thread-201916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:16:48.337 [DEBUG] [Thread-201916] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:16:48.337 [DEBUG] [Thread-201916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:16:48.338 [DEBUG] [Thread-201916] [transport.py] [_log()] Compression: none
2025-11-25T03:16:48.338 [DEBUG] [Thread-201916] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:16:48.372 [DEBUG] [Thread-201916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:16:48.377 [DEBUG] [Thread-201916] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:16:48.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:16:48.380 [DEBUG] [Thread-201916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:16:48.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:16:48.383 [DEBUG] [Thread-201916] [transport.py] [_log()] userauth is OK
2025-11-25T03:16:48.383 [DEBUG] [Thread-201916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:16:48.383 [DEBUG] [Thread-201916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:16:48.383 [DEBUG] [Thread-201916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:16:48.383 [DEBUG] [Thread-201916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:16:48.402 [INFO] [Thread-201916] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:16:48.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:16:49.014 [DEBUG] [Thread-201916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:16:49.014 [DEBUG] [Thread-201916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:16:49.015 [DEBUG] [Thread-201916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:16:49.056 [DEBUG] [Thread-201916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:16:49.056 [DEBUG] [Thread-201916] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:16:49.058 [DEBUG] [Thread-201916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:16:49.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:16:49.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:16:49.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:16:49.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:16:49.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:16:49.079 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:16:49.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:16:49.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:16:49.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:16:49.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.052818 -999.00  +11.60  19.14     49   +1.40 1 1 1 1 1     0    0 9.70 -31.98 ZNESW 19.1 19.1 126.8 22.2 12.2 -24.5 12.0 -23.9 11.8 -22.6 12.1 -23.7
2025-11-25T03:16:49.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:16:49.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:16:49.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.052818
2025-11-25T03:16:49.086 [DEBUG] [Thread-201916] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:16:49.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:16:49.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:16:49.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:16:49.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:16:49.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:16:49.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:16:40', tmtdew=11.79, humidity=44.34, cloud=0.0, wind=22.41, temperature=11.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:16:41', seeing=1.03, atlas_timestamp='2025-11-25T01:16:03.475', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.044749999999998735, 0.017750000000001265, -0.040500000000001535, 0.009499999999999176, -0.007749999999999702, 0.0009999999999994458, -0.008749999999999147, 0.006000000000000227, -0.0129999999999999, -0.015750000000000597, -0.0030000000000001137, 0.03449999999999953, 0.07824999999999882, -0.023500000000002075, -0.008000000000000895, 0.029249999999999332, 0.015499999999999403, -0.034000000000000696, -0.011750000000001037, 0.07249999999999801, 0.08674999999999855, 0.030250000000000554, 0.020749999999999602, 0.009999999999999787, 0.0365000000000002, 0.016750000000000043, 0.033500000000000085, 0.08800000000000097, 0.0815000000000019, 0.058000000000001606, 0.027499999999999858, 0.03524999999999778], zp_timestamp='2025-11-25T01:13:00')
2025-11-25T03:16:49.176 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:16:49.188 [DEBUG] [Thread-201919] [transport.py] [_log()] starting thread (client mode): 0xd31f4190
2025-11-25T03:16:49.188 [DEBUG] [Thread-201919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:16:49.203 [DEBUG] [Thread-201919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:16:49.203 [INFO] [Thread-201919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] client lang: <none>
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] server lang: <none>
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] kex follows: False
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:16:49.211 [DEBUG] [Thread-201919] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:16:49.212 [DEBUG] [Thread-201919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:16:49.212 [DEBUG] [Thread-201919] [transport.py] [_log()] Compression: none
2025-11-25T03:16:49.212 [DEBUG] [Thread-201919] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:16:49.271 [DEBUG] [Thread-201919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:16:49.272 [DEBUG] [Thread-201919] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:16:49.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:16:49.272 [DEBUG] [Thread-201919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:16:49.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:16:49.329 [DEBUG] [Thread-201919] [transport.py] [_log()] userauth is OK
2025-11-25T03:16:49.329 [DEBUG] [Thread-201919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:16:49.330 [DEBUG] [Thread-201919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:16:49.330 [DEBUG] [Thread-201919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:16:49.330 [DEBUG] [Thread-201919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:16:49.348 [INFO] [Thread-201919] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:16:49.349 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:16:49.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:16:50.205 [DEBUG] [Thread-201919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:16:50.205 [DEBUG] [Thread-201919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:16:50.253 [DEBUG] [Thread-201919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:16:50.253 [DEBUG] [Thread-201919] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:16:50.261 [DEBUG] [Thread-201919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:16:50.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:16:50.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:16: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') -> 00000000
2025-11-25T03:16:50.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:16:50.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:16:50.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:16:50.295 [DEBUG] [Thread-201919] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:16:53.741 [DEBUG] [Thread-201921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:16:55.189 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:05.642 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:06.701 [DEBUG] [Thread-201922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:08.865 [DEBUG] [Thread-201923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:16.074 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:20.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:17:20.320 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:17:20.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-11-25T03:17:21.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 17, 13), 11.76, 44.37, 0.0, 21.9, 11.59, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:17:21.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:17:13
2025-11-25T03:17:21.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:17:21.551 [DEBUG] [Thread-201924] [transport.py] [_log()] starting thread (client mode): 0xd31f6860
2025-11-25T03:17:21.552 [DEBUG] [Thread-201924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:17:21.560 [DEBUG] [Thread-201924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:17:21.560 [INFO] [Thread-201924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] client lang: <none>
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] server lang: <none>
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] kex follows: False
2025-11-25T03:17:21.565 [DEBUG] [Thread-201924] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:17:21.566 [DEBUG] [Thread-201924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:17:21.566 [DEBUG] [Thread-201924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:17:21.566 [DEBUG] [Thread-201924] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:17:21.566 [DEBUG] [Thread-201924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:17:21.566 [DEBUG] [Thread-201924] [transport.py] [_log()] Compression: none
2025-11-25T03:17:21.566 [DEBUG] [Thread-201924] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:17:21.594 [DEBUG] [Thread-201924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:17:21.597 [DEBUG] [Thread-201924] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:17:21.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:17:21.600 [DEBUG] [Thread-201924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:17:21.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:17:21.601 [DEBUG] [Thread-201924] [transport.py] [_log()] userauth is OK
2025-11-25T03:17:21.601 [DEBUG] [Thread-201924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:17:21.602 [DEBUG] [Thread-201924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:17:21.602 [DEBUG] [Thread-201924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:17:21.602 [DEBUG] [Thread-201924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:17:21.619 [INFO] [Thread-201924] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:17:21.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:17:22.220 [DEBUG] [Thread-201924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:17:22.220 [DEBUG] [Thread-201924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:17:22.221 [DEBUG] [Thread-201924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:17:22.261 [DEBUG] [Thread-201924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:17:22.261 [DEBUG] [Thread-201924] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:17:22.263 [DEBUG] [Thread-201924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:17:22.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:17:22.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:17:22.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:17:22.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:17:22.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:17:22.286 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:17:22.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:17:22.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:17:22.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:17:22.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.053223 -999.00  +11.70  17.37     49   +1.40 1 1 1 1 1     0    0 9.55 -37.81 ZNESW 14.9 17.4 125.2 21.4 12.2 -24.3 12.1 -23.9 11.8 -22.8 12.1 -23.7
2025-11-25T03:17:22.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:17:22.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:17:22.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.053223
2025-11-25T03:17:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:17:22.304 [DEBUG] [Thread-201924] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:17:22.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:17:22.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:17:22.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:17:22.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:17:22.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:17:13', tmtdew=11.76, humidity=44.37, cloud=0.0, wind=21.9, temperature=11.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:17:13', seeing=1.11, atlas_timestamp='2025-11-25T01:16:38.467', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.044749999999998735, 0.017750000000001265, -0.040500000000001535, 0.009499999999999176, -0.007749999999999702, 0.0009999999999994458, -0.008749999999999147, 0.006000000000000227, -0.0129999999999999, -0.015750000000000597, -0.0030000000000001137, 0.03449999999999953, 0.07824999999999882, -0.023500000000002075, -0.008000000000000895, 0.029249999999999332, 0.015499999999999403, -0.034000000000000696, -0.011750000000001037, 0.07249999999999801, 0.08674999999999855, 0.030250000000000554, 0.020749999999999602, 0.009999999999999787, 0.0365000000000002, 0.016750000000000043, 0.033500000000000085, 0.08800000000000097, 0.0815000000000019, 0.058000000000001606, 0.027499999999999858, 0.03524999999999778], zp_timestamp='2025-11-25T01:13:00')
2025-11-25T03:17:22.380 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:17:22.392 [DEBUG] [Thread-201927] [transport.py] [_log()] starting thread (client mode): 0xd317cd30
2025-11-25T03:17:22.392 [DEBUG] [Thread-201927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:17:22.406 [DEBUG] [Thread-201927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:17:22.406 [INFO] [Thread-201927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:17:22.413 [DEBUG] [Thread-201927] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] client lang: <none>
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] server lang: <none>
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] kex follows: False
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] Compression: none
2025-11-25T03:17:22.414 [DEBUG] [Thread-201927] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:17:22.472 [DEBUG] [Thread-201927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:17:22.473 [DEBUG] [Thread-201927] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:17:22.473 [DEBUG] [Thread-201927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:17:22.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:17:22.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:17:22.529 [DEBUG] [Thread-201927] [transport.py] [_log()] userauth is OK
2025-11-25T03:17:22.529 [DEBUG] [Thread-201927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:17:22.529 [DEBUG] [Thread-201927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:17:22.529 [DEBUG] [Thread-201927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:17:22.529 [DEBUG] [Thread-201927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:17:22.546 [INFO] [Thread-201927] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:17: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-11-25T03:17:22.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:17:23.431 [DEBUG] [Thread-201927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:17:23.431 [DEBUG] [Thread-201927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:17:23.479 [DEBUG] [Thread-201927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:17:23.479 [DEBUG] [Thread-201927] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:17:23.487 [DEBUG] [Thread-201927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:17:23.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:17:23.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:17:23.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-11-25T03:17:23.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:17:23.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:17:23.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:17:23.522 [DEBUG] [Thread-201927] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:17:23.906 [DEBUG] [Thread-201929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:26.481 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:36.901 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:39.048 [DEBUG] [Thread-201930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:45.087 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:45.089 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:47.366 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:53.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:17:53.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:17:53.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-11-25T03:17:54.109 [DEBUG] [Thread-201931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:17:54.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 17, 46), 11.8, 43.92, 0.0, 22.92, 11.66, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:17:54.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:17:46
2025-11-25T03:17:54.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:17:54.756 [DEBUG] [Thread-201932] [transport.py] [_log()] starting thread (client mode): 0xd317d5d0
2025-11-25T03:17:54.756 [DEBUG] [Thread-201932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:17:54.764 [DEBUG] [Thread-201932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:17:54.764 [INFO] [Thread-201932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:17:54.770 [DEBUG] [Thread-201932] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:17:54.770 [DEBUG] [Thread-201932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:17:54.770 [DEBUG] [Thread-201932] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:17:54.770 [DEBUG] [Thread-201932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:17:54.770 [DEBUG] [Thread-201932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:17:54.770 [DEBUG] [Thread-201932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:17:54.770 [DEBUG] [Thread-201932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:17:54.770 [DEBUG] [Thread-201932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:17:54.770 [DEBUG] [Thread-201932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:17:54.771 [DEBUG] [Thread-201932] [transport.py] [_log()] client lang: <none>
2025-11-25T03:17:54.771 [DEBUG] [Thread-201932] [transport.py] [_log()] server lang: <none>
2025-11-25T03:17:54.771 [DEBUG] [Thread-201932] [transport.py] [_log()] kex follows: False
2025-11-25T03:17:54.771 [DEBUG] [Thread-201932] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:17:54.771 [DEBUG] [Thread-201932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:17:54.772 [DEBUG] [Thread-201932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:17:54.772 [DEBUG] [Thread-201932] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:17:54.772 [DEBUG] [Thread-201932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:17:54.772 [DEBUG] [Thread-201932] [transport.py] [_log()] Compression: none
2025-11-25T03:17:54.772 [DEBUG] [Thread-201932] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:17:54.810 [DEBUG] [Thread-201932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:17:54.816 [DEBUG] [Thread-201932] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:17:54.817 [DEBUG] [Thread-201932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:17:54.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:17:54.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:17:54.823 [DEBUG] [Thread-201932] [transport.py] [_log()] userauth is OK
2025-11-25T03:17:54.823 [DEBUG] [Thread-201932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:17:54.823 [DEBUG] [Thread-201932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:17:54.823 [DEBUG] [Thread-201932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:17:54.823 [DEBUG] [Thread-201932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:17:54.851 [INFO] [Thread-201932] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:17:54.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:17:55.499 [DEBUG] [Thread-201932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:17:55.499 [DEBUG] [Thread-201932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:17:55.502 [DEBUG] [Thread-201932] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:17:55.539 [DEBUG] [Thread-201932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:17:55.539 [DEBUG] [Thread-201932] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:17:55.542 [DEBUG] [Thread-201932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:17:55.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:17:55.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:17:55.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:17:55.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:17:55.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:17:55.569 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:17:55.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:17:55.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:17:55.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:17:55.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.053570 -999.00  +11.70  19.02     49   +1.50 1 1 1 1 1     0    0 9.51 -36.26 ZNESW 19.6 19.0 125.6 24.8 12.2 -24.3 12.1 -23.9 11.7 -22.8 12.1 -23.7
2025-11-25T03:17:55.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:17:55.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:17:55.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.053570
2025-11-25T03:17:55.576 [DEBUG] [Thread-201932] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:17:55.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:17:55.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:17:55.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:17:55.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:17:55.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:17:55.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:17:46', tmtdew=11.8, humidity=43.92, cloud=0.0, wind=22.92, temperature=11.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:17:47', seeing=1.11, atlas_timestamp='2025-11-25T01:17:08.448', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.044749999999998735, 0.017750000000001265, -0.040500000000001535, 0.009499999999999176, -0.007749999999999702, 0.0009999999999994458, -0.008749999999999147, 0.006000000000000227, -0.0129999999999999, -0.015750000000000597, -0.0030000000000001137, 0.03449999999999953, 0.07824999999999882, -0.023500000000002075, -0.008000000000000895, 0.029249999999999332, 0.015499999999999403, -0.034000000000000696, -0.011750000000001037, 0.07249999999999801, 0.08674999999999855, 0.030250000000000554, 0.020749999999999602, 0.009999999999999787, 0.0365000000000002, 0.016750000000000043, 0.033500000000000085, 0.08800000000000097, 0.0815000000000019, 0.058000000000001606, 0.027499999999999858, 0.03524999999999778], zp_timestamp='2025-11-25T01:13:00')
2025-11-25T03:17:55.679 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:17:55.690 [DEBUG] [Thread-201935] [transport.py] [_log()] starting thread (client mode): 0xd3149570
2025-11-25T03:17:55.691 [DEBUG] [Thread-201935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:17:55.708 [DEBUG] [Thread-201935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:17:55.708 [INFO] [Thread-201935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] client lang: <none>
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] server lang: <none>
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] kex follows: False
2025-11-25T03:17:55.716 [DEBUG] [Thread-201935] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:17:55.717 [DEBUG] [Thread-201935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:17:55.717 [DEBUG] [Thread-201935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:17:55.717 [DEBUG] [Thread-201935] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:17:55.717 [DEBUG] [Thread-201935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:17:55.717 [DEBUG] [Thread-201935] [transport.py] [_log()] Compression: none
2025-11-25T03:17:55.717 [DEBUG] [Thread-201935] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:17:55.772 [DEBUG] [Thread-201935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:17:55.773 [DEBUG] [Thread-201935] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:17:55.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:17:55.775 [DEBUG] [Thread-201935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:17:55.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:17:55.829 [DEBUG] [Thread-201935] [transport.py] [_log()] userauth is OK
2025-11-25T03:17:55.829 [DEBUG] [Thread-201935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:17:55.829 [DEBUG] [Thread-201935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:17:55.829 [DEBUG] [Thread-201935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:17:55.829 [DEBUG] [Thread-201935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:17:55.848 [INFO] [Thread-201935] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:17: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-11-25T03:17:55.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:17:56.691 [DEBUG] [Thread-201935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:17:56.691 [DEBUG] [Thread-201935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:17:56.739 [DEBUG] [Thread-201935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:17:56.739 [DEBUG] [Thread-201935] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:17:56.748 [DEBUG] [Thread-201935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:17:56.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:17:56.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-11-25T03:17:56.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-11-25T03:17:56.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:17:56.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:17:56.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:17:56.788 [DEBUG] [Thread-201935] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:17:57.811 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:06.968 [DEBUG] [Thread-201937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:08.224 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:09.164 [DEBUG] [Thread-201938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:18.643 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:24.302 [DEBUG] [Thread-201939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:26.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:18:26.823 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:18:26.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-11-25T03:18:27.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 18, 19), 11.77, 44.0, 0.0, 23.01, 11.59, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:18:27.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:18:19
2025-11-25T03:18:27.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:18:28.052 [DEBUG] [Thread-201940] [transport.py] [_log()] starting thread (client mode): 0xc9b81f30
2025-11-25T03:18:28.052 [DEBUG] [Thread-201940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:18:28.064 [DEBUG] [Thread-201940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:18:28.064 [INFO] [Thread-201940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:18:28.072 [DEBUG] [Thread-201940] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:18:28.072 [DEBUG] [Thread-201940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:18:28.072 [DEBUG] [Thread-201940] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:18:28.072 [DEBUG] [Thread-201940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:18:28.072 [DEBUG] [Thread-201940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:18:28.072 [DEBUG] [Thread-201940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:18:28.073 [DEBUG] [Thread-201940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:18:28.073 [DEBUG] [Thread-201940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:18:28.073 [DEBUG] [Thread-201940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:18:28.073 [DEBUG] [Thread-201940] [transport.py] [_log()] client lang: <none>
2025-11-25T03:18:28.073 [DEBUG] [Thread-201940] [transport.py] [_log()] server lang: <none>
2025-11-25T03:18:28.073 [DEBUG] [Thread-201940] [transport.py] [_log()] kex follows: False
2025-11-25T03:18:28.073 [DEBUG] [Thread-201940] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:18:28.074 [DEBUG] [Thread-201940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:18:28.074 [DEBUG] [Thread-201940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:18:28.075 [DEBUG] [Thread-201940] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:18:28.075 [DEBUG] [Thread-201940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:18:28.075 [DEBUG] [Thread-201940] [transport.py] [_log()] Compression: none
2025-11-25T03:18:28.075 [DEBUG] [Thread-201940] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:18:28.110 [DEBUG] [Thread-201940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:18:28.115 [DEBUG] [Thread-201940] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:18:28.117 [DEBUG] [Thread-201940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:18:28.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:18:28.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:18:28.123 [DEBUG] [Thread-201940] [transport.py] [_log()] userauth is OK
2025-11-25T03:18:28.123 [DEBUG] [Thread-201940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:18:28.123 [DEBUG] [Thread-201940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:18:28.123 [DEBUG] [Thread-201940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:18:28.124 [DEBUG] [Thread-201940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:18:28.152 [INFO] [Thread-201940] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:18:28.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:18:28.787 [DEBUG] [Thread-201940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:18:28.788 [DEBUG] [Thread-201940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:18:28.799 [DEBUG] [Thread-201940] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:18:28.828 [DEBUG] [Thread-201940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:18:28.829 [DEBUG] [Thread-201940] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:18:28.832 [DEBUG] [Thread-201940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:18:28.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:18:28.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:18:28.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:18:28.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:18:28.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:18:28.861 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:18:28.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:18:28.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:18:28.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:18:28.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.053917 -999.00  +11.70  18.19     49   +1.40 1 1 1 1 1     0    0 9.57 -37.57 ZNESW 17.4 18.2 127.4 24.2 12.2 -24.4 12.0 -23.9 11.8 -22.8 12.1 -23.6
2025-11-25T03:18:28.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:18:28.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:18:28.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.053917
2025-11-25T03:18:28.869 [DEBUG] [Thread-201940] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:18:28.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:18:28.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:18:28.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:18:28.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:18:28.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:18:28.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:18:19', tmtdew=11.77, humidity=44.0, cloud=0.0, wind=23.01, temperature=11.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:18:20', seeing=1.12, atlas_timestamp='2025-11-25T01:17:38.429', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.044749999999998735, 0.017750000000001265, -0.040500000000001535, 0.009499999999999176, -0.007749999999999702, 0.0009999999999994458, -0.008749999999999147, 0.006000000000000227, -0.0129999999999999, -0.015750000000000597, -0.0030000000000001137, 0.03449999999999953, 0.07824999999999882, -0.023500000000002075, -0.008000000000000895, 0.029249999999999332, 0.015499999999999403, -0.034000000000000696, -0.011750000000001037, 0.07249999999999801, 0.08674999999999855, 0.030250000000000554, 0.020749999999999602, 0.009999999999999787, 0.0365000000000002, 0.016750000000000043, 0.033500000000000085, 0.08800000000000097, 0.0815000000000019, 0.058000000000001606, 0.027499999999999858, 0.03524999999999778], zp_timestamp='2025-11-25T01:13:00')
2025-11-25T03:18:28.971 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:18:28.984 [DEBUG] [Thread-201943] [transport.py] [_log()] starting thread (client mode): 0xd317de40
2025-11-25T03:18:28.984 [DEBUG] [Thread-201943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:18:29.001 [DEBUG] [Thread-201943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:18:29.001 [INFO] [Thread-201943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:18:29.009 [DEBUG] [Thread-201943] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:18:29.009 [DEBUG] [Thread-201943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:18:29.009 [DEBUG] [Thread-201943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:18:29.009 [DEBUG] [Thread-201943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:18:29.010 [DEBUG] [Thread-201943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:18:29.010 [DEBUG] [Thread-201943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:18:29.010 [DEBUG] [Thread-201943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:18:29.010 [DEBUG] [Thread-201943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:18:29.010 [DEBUG] [Thread-201943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:18:29.010 [DEBUG] [Thread-201943] [transport.py] [_log()] client lang: <none>
2025-11-25T03:18:29.010 [DEBUG] [Thread-201943] [transport.py] [_log()] server lang: <none>
2025-11-25T03:18:29.010 [DEBUG] [Thread-201943] [transport.py] [_log()] kex follows: False
2025-11-25T03:18:29.011 [DEBUG] [Thread-201943] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:18:29.011 [DEBUG] [Thread-201943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:18:29.011 [DEBUG] [Thread-201943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:18:29.011 [DEBUG] [Thread-201943] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:18:29.011 [DEBUG] [Thread-201943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:18:29.011 [DEBUG] [Thread-201943] [transport.py] [_log()] Compression: none
2025-11-25T03:18:29.011 [DEBUG] [Thread-201943] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:18:29.070 [DEBUG] [Thread-201943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:18:29.071 [DEBUG] [Thread-201943] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:18:29.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:18:29.072 [DEBUG] [Thread-201943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:18:29.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:18:29.074 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:29.128 [DEBUG] [Thread-201943] [transport.py] [_log()] userauth is OK
2025-11-25T03:18:29.129 [DEBUG] [Thread-201943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:18:29.129 [DEBUG] [Thread-201943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:18:29.129 [DEBUG] [Thread-201943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:18:29.129 [DEBUG] [Thread-201943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:18:29.148 [INFO] [Thread-201943] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:18:29.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:18:29.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:18:29.968 [DEBUG] [Thread-201943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:18:29.968 [DEBUG] [Thread-201943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:18:30.015 [DEBUG] [Thread-201943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:18:30.016 [DEBUG] [Thread-201943] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:18:30.025 [DEBUG] [Thread-201943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:18:30.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:18:30.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:18:30.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:18:30.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:18:30.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:18:30.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:18:30.060 [DEBUG] [Thread-201943] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:18:39.366 [DEBUG] [Thread-201945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:39.520 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:45.302 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:45.313 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:49.965 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:18:54.489 [DEBUG] [Thread-201946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:00.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:19:00.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:19:00.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T03:19:00.466 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:01.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 18, 53), 11.71, 44.55, 0.0, 21.91, 11.57, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:19:01.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:18:53
2025-11-25T03:19:01.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:19:01.490 [DEBUG] [Thread-201947] [transport.py] [_log()] starting thread (client mode): 0xd317eec0
2025-11-25T03:19:01.491 [DEBUG] [Thread-201947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:19:01.491 [DEBUG] [Thread-201947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:19:01.491 [INFO] [Thread-201947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:19:01.495 [DEBUG] [Thread-201947] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:19:01.495 [DEBUG] [Thread-201947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] client lang: <none>
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] server lang: <none>
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] kex follows: False
2025-11-25T03:19:01.496 [DEBUG] [Thread-201947] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:19:01.497 [DEBUG] [Thread-201947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:19:01.497 [DEBUG] [Thread-201947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:19:01.497 [DEBUG] [Thread-201947] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:19:01.497 [DEBUG] [Thread-201947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:19:01.497 [DEBUG] [Thread-201947] [transport.py] [_log()] Compression: none
2025-11-25T03:19:01.497 [DEBUG] [Thread-201947] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:19:01.533 [DEBUG] [Thread-201947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:19:01.538 [DEBUG] [Thread-201947] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:19:01.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:19:01.542 [DEBUG] [Thread-201947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:19:01.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:19:01.546 [DEBUG] [Thread-201947] [transport.py] [_log()] userauth is OK
2025-11-25T03:19:01.546 [DEBUG] [Thread-201947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:19:01.546 [DEBUG] [Thread-201947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:19:01.546 [DEBUG] [Thread-201947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:19:01.547 [DEBUG] [Thread-201947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:19:01.576 [INFO] [Thread-201947] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:19:01.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:19:02.217 [DEBUG] [Thread-201947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:19:02.217 [DEBUG] [Thread-201947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:19:02.219 [DEBUG] [Thread-201947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:19:02.259 [DEBUG] [Thread-201947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:19:02.259 [DEBUG] [Thread-201947] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:19:02.262 [DEBUG] [Thread-201947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:19:02.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:19:02.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:19:02.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:19:02.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:19:02.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:19:02.292 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:19:02.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:19:02.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:19:02.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:19:02.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.054265 -999.00  +11.70  19.97     49   +1.50 1 1 1 1 1     0    0 9.58 -35.05 ZNESW 21.6 20.0 127.2 22.6 12.2 -24.3 12.1 -23.9 11.8 -22.6 12.1 -23.7
2025-11-25T03:19:02.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:19:02.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:19:02.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.054265
2025-11-25T03:19:02.300 [DEBUG] [Thread-201947] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:19:02.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:19:02.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:19:02.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:19:02.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:19:02.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:19:02.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:18:53', tmtdew=11.71, humidity=44.55, cloud=0.0, wind=21.91, temperature=11.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:18:53', seeing=1.12, atlas_timestamp='2025-11-25T01:18:08.496', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.044749999999998735, 0.017750000000001265, -0.040500000000001535, 0.009499999999999176, -0.007749999999999702, 0.0009999999999994458, -0.008749999999999147, 0.006000000000000227, -0.0129999999999999, -0.015750000000000597, -0.0030000000000001137, 0.03449999999999953, 0.07824999999999882, -0.023500000000002075, -0.008000000000000895, 0.029249999999999332, 0.015499999999999403, -0.034000000000000696, -0.011750000000001037, 0.07249999999999801, 0.08674999999999855, 0.030250000000000554, 0.020749999999999602, 0.009999999999999787, 0.0365000000000002, 0.016750000000000043, 0.033500000000000085, 0.08800000000000097, 0.0815000000000019, 0.058000000000001606, 0.027499999999999858, 0.03524999999999778], zp_timestamp='2025-11-25T01:17:00')
2025-11-25T03:19:02.401 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:19:02.414 [DEBUG] [Thread-201950] [transport.py] [_log()] starting thread (client mode): 0xc9b75630
2025-11-25T03:19:02.414 [DEBUG] [Thread-201950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:19:02.428 [DEBUG] [Thread-201950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:19:02.429 [INFO] [Thread-201950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:19:02.436 [DEBUG] [Thread-201950] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] client lang: <none>
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] server lang: <none>
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] kex follows: False
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] Compression: none
2025-11-25T03:19:02.437 [DEBUG] [Thread-201950] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:19:02.495 [DEBUG] [Thread-201950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:19:02.495 [DEBUG] [Thread-201950] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:19:02.495 [DEBUG] [Thread-201950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:19:02.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:19:02.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:19:02.553 [DEBUG] [Thread-201950] [transport.py] [_log()] userauth is OK
2025-11-25T03:19:02.553 [DEBUG] [Thread-201950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:19:02.553 [DEBUG] [Thread-201950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:19:02.553 [DEBUG] [Thread-201950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:19:02.554 [DEBUG] [Thread-201950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:19:02.575 [INFO] [Thread-201950] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:19:02.576 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:19:02.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:19:03.496 [DEBUG] [Thread-201950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:19:03.496 [DEBUG] [Thread-201950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:19:03.544 [DEBUG] [Thread-201950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:19:03.544 [DEBUG] [Thread-201950] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:19:03.554 [DEBUG] [Thread-201950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:19:03.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:19:03.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-11-25T03:19:03.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:19:03.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:19:03.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:19:03.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:19:03.593 [DEBUG] [Thread-201950] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:19:07.269 [DEBUG] [Thread-201952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:09.563 [DEBUG] [Thread-201953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:10.908 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:21.335 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:24.714 [DEBUG] [Thread-201954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:31.785 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:33.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:19:33.609 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:19:33.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-11-25T03:19:34.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 19, 25), 11.69, 44.58, 0.0, 22.25, 11.52, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:19:34.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:19:25
2025-11-25T03:19:34.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:19:34.849 [DEBUG] [Thread-201955] [transport.py] [_log()] starting thread (client mode): 0xd31499f0
2025-11-25T03:19:34.850 [DEBUG] [Thread-201955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:19:34.860 [DEBUG] [Thread-201955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:19:34.861 [INFO] [Thread-201955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:19:34.866 [DEBUG] [Thread-201955] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:19:34.866 [DEBUG] [Thread-201955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:19:34.866 [DEBUG] [Thread-201955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:19:34.867 [DEBUG] [Thread-201955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:19:34.867 [DEBUG] [Thread-201955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:19:34.867 [DEBUG] [Thread-201955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:19:34.867 [DEBUG] [Thread-201955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:19:34.867 [DEBUG] [Thread-201955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:19:34.867 [DEBUG] [Thread-201955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:19:34.867 [DEBUG] [Thread-201955] [transport.py] [_log()] client lang: <none>
2025-11-25T03:19:34.867 [DEBUG] [Thread-201955] [transport.py] [_log()] server lang: <none>
2025-11-25T03:19:34.867 [DEBUG] [Thread-201955] [transport.py] [_log()] kex follows: False
2025-11-25T03:19:34.867 [DEBUG] [Thread-201955] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:19:34.868 [DEBUG] [Thread-201955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:19:34.868 [DEBUG] [Thread-201955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:19:34.868 [DEBUG] [Thread-201955] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:19:34.868 [DEBUG] [Thread-201955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:19:34.868 [DEBUG] [Thread-201955] [transport.py] [_log()] Compression: none
2025-11-25T03:19:34.868 [DEBUG] [Thread-201955] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:19:34.907 [DEBUG] [Thread-201955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:19:34.912 [DEBUG] [Thread-201955] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:19:34.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:19:34.916 [DEBUG] [Thread-201955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:19:34.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:19:34.920 [DEBUG] [Thread-201955] [transport.py] [_log()] userauth is OK
2025-11-25T03:19:34.921 [DEBUG] [Thread-201955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:19:34.921 [DEBUG] [Thread-201955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:19:34.921 [DEBUG] [Thread-201955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:19:34.921 [DEBUG] [Thread-201955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:19:34.949 [INFO] [Thread-201955] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:19:34.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:19:35.564 [DEBUG] [Thread-201955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:19:35.564 [DEBUG] [Thread-201955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:19:35.576 [DEBUG] [Thread-201955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:19:35.606 [DEBUG] [Thread-201955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:19:35.606 [DEBUG] [Thread-201955] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:19:35.609 [DEBUG] [Thread-201955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:19:35.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:19:35.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:19:35.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:19:35.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:19:35.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:19:35.638 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:19:35.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:19:35.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:19:35.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:19:35.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.054959 -999.00  +11.70  17.96     49   +1.50 1 1 1 1 1     0    0 9.33 -39.69 ZNESW 19.0 18.0 129.2 21.6 12.2 -24.4 12.1 -24.0 11.8 -22.7 12.1 -23.6
2025-11-25T03:19:35.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:19:35.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:19:35.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.054959
2025-11-25T03:19:35.646 [DEBUG] [Thread-201955] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:19:35.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:19:35.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:19:35.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:19:35.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:19:35.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:19:35.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:19:25', tmtdew=11.69, humidity=44.58, cloud=0.0, wind=22.25, temperature=11.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:19:26', seeing=0.98, atlas_timestamp='2025-11-25T01:19:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.044749999999998735, 0.017750000000001265, -0.040500000000001535, 0.009499999999999176, -0.007749999999999702, 0.0009999999999994458, -0.008749999999999147, 0.006000000000000227, -0.0129999999999999, -0.015750000000000597, -0.0030000000000001137, 0.03449999999999953, 0.07824999999999882, -0.023500000000002075, -0.008000000000000895, 0.029249999999999332, 0.015499999999999403, -0.034000000000000696, -0.011750000000001037, 0.07249999999999801, 0.08674999999999855, 0.030250000000000554, 0.020749999999999602, 0.009999999999999787, 0.0365000000000002, 0.016750000000000043, 0.033500000000000085, 0.08800000000000097, 0.0815000000000019, 0.058000000000001606, 0.027499999999999858, 0.03524999999999778], zp_timestamp='2025-11-25T01:17:00')
2025-11-25T03:19:35.750 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:19:35.763 [DEBUG] [Thread-201958] [transport.py] [_log()] starting thread (client mode): 0xc9b81570
2025-11-25T03:19:35.763 [DEBUG] [Thread-201958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:19:35.777 [DEBUG] [Thread-201958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:19:35.777 [INFO] [Thread-201958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:19:35.785 [DEBUG] [Thread-201958] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:19:35.785 [DEBUG] [Thread-201958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:19:35.786 [DEBUG] [Thread-201958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:19:35.786 [DEBUG] [Thread-201958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:19:35.786 [DEBUG] [Thread-201958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:19:35.786 [DEBUG] [Thread-201958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:19:35.786 [DEBUG] [Thread-201958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:19:35.786 [DEBUG] [Thread-201958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:19:35.786 [DEBUG] [Thread-201958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:19:35.786 [DEBUG] [Thread-201958] [transport.py] [_log()] client lang: <none>
2025-11-25T03:19:35.786 [DEBUG] [Thread-201958] [transport.py] [_log()] server lang: <none>
2025-11-25T03:19:35.787 [DEBUG] [Thread-201958] [transport.py] [_log()] kex follows: False
2025-11-25T03:19:35.787 [DEBUG] [Thread-201958] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:19:35.787 [DEBUG] [Thread-201958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:19:35.787 [DEBUG] [Thread-201958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:19:35.787 [DEBUG] [Thread-201958] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:19:35.787 [DEBUG] [Thread-201958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:19:35.787 [DEBUG] [Thread-201958] [transport.py] [_log()] Compression: none
2025-11-25T03:19:35.788 [DEBUG] [Thread-201958] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:19:35.845 [DEBUG] [Thread-201958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:19:35.846 [DEBUG] [Thread-201958] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:19:35.847 [DEBUG] [Thread-201958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:19:35.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:19:35.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:19:35.905 [DEBUG] [Thread-201958] [transport.py] [_log()] userauth is OK
2025-11-25T03:19:35.905 [DEBUG] [Thread-201958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:19:35.905 [DEBUG] [Thread-201958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:19:35.905 [DEBUG] [Thread-201958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:19:35.905 [DEBUG] [Thread-201958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:19:35.924 [INFO] [Thread-201958] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:19:35.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:19:36.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:19:36.760 [DEBUG] [Thread-201958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:19:36.761 [DEBUG] [Thread-201958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:19:36.767 [DEBUG] [Thread-201958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:19:36.768 [DEBUG] [Thread-201958] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:19:36.777 [DEBUG] [Thread-201958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:19:36.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:19:36.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-11-25T03:19:36.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-11-25T03:19:36.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:19:36.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:19:36.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:19:36.815 [DEBUG] [Thread-201958] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:19:39.806 [DEBUG] [Thread-201960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:42.231 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:45.516 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:45.518 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:52.638 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:19:54.950 [DEBUG] [Thread-201961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:03.059 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:06.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:20:06.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:20:06.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-11-25T03:20:07.548 [DEBUG] [Thread-201962 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:07.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 19, 58), 11.62, 44.63, 0.0, 22.73, 11.51, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:20:07.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:19:58
2025-11-25T03:20:08.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:20:08.285 [DEBUG] [Thread-201963] [transport.py] [_log()] starting thread (client mode): 0xd31639a0
2025-11-25T03:20:08.286 [DEBUG] [Thread-201963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:20:08.293 [DEBUG] [Thread-201963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:20:08.293 [INFO] [Thread-201963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:20:08.302 [DEBUG] [Thread-201963] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:20:08.302 [DEBUG] [Thread-201963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:20:08.302 [DEBUG] [Thread-201963] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:20:08.302 [DEBUG] [Thread-201963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:20:08.302 [DEBUG] [Thread-201963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:20:08.302 [DEBUG] [Thread-201963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:20:08.302 [DEBUG] [Thread-201963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:20:08.302 [DEBUG] [Thread-201963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:20:08.302 [DEBUG] [Thread-201963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:20:08.302 [DEBUG] [Thread-201963] [transport.py] [_log()] client lang: <none>
2025-11-25T03:20:08.303 [DEBUG] [Thread-201963] [transport.py] [_log()] server lang: <none>
2025-11-25T03:20:08.303 [DEBUG] [Thread-201963] [transport.py] [_log()] kex follows: False
2025-11-25T03:20:08.303 [DEBUG] [Thread-201963] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:20:08.304 [DEBUG] [Thread-201963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:20:08.304 [DEBUG] [Thread-201963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:20:08.304 [DEBUG] [Thread-201963] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:20:08.304 [DEBUG] [Thread-201963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:20:08.304 [DEBUG] [Thread-201963] [transport.py] [_log()] Compression: none
2025-11-25T03:20:08.304 [DEBUG] [Thread-201963] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:20:08.338 [DEBUG] [Thread-201963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:20:08.342 [DEBUG] [Thread-201963] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:20:08.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:20:08.344 [DEBUG] [Thread-201963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:20:08.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:20:08.346 [DEBUG] [Thread-201963] [transport.py] [_log()] userauth is OK
2025-11-25T03:20:08.347 [DEBUG] [Thread-201963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:20:08.347 [DEBUG] [Thread-201963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:20:08.347 [DEBUG] [Thread-201963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:20:08.347 [DEBUG] [Thread-201963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:20:08.368 [INFO] [Thread-201963] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:20:08.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:20:10.003 [DEBUG] [Thread-201965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:11.039 [DEBUG] [Thread-201963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:20:11.039 [DEBUG] [Thread-201963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:20:11.040 [DEBUG] [Thread-201963] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:20:11.080 [DEBUG] [Thread-201963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:20:11.080 [DEBUG] [Thread-201963] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:20:11.082 [DEBUG] [Thread-201963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:20:11.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:20:11.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:20:11.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:20:11.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:20:11.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:20:11.145 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:20:11.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:20:11.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:20:11.146 [DEBUG] [Thread-201963] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:20:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:20:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.055306 -999.00  +11.70  18.68     49   +1.50 1 1 1 1 1     0    0 9.58 -40.00 ZNESW 20.8 18.7 126.2 23.1 12.2 -24.4 12.1 -23.8 11.8 -22.8 12.1 -23.7
2025-11-25T03:20:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:20:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:20:11.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.055306
2025-11-25T03:20:11.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:20:11.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:20:11.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:20:11.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:20:11.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:20:11.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:19:58', tmtdew=11.62, humidity=44.63, cloud=0.0, wind=22.73, temperature=11.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:19:58', seeing=0.88, atlas_timestamp='2025-11-25T01:19:38.438', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.044749999999998735, 0.017750000000001265, -0.040500000000001535, 0.009499999999999176, -0.007749999999999702, 0.0009999999999994458, -0.008749999999999147, 0.006000000000000227, -0.0129999999999999, -0.015750000000000597, -0.0030000000000001137, 0.03449999999999953, 0.07824999999999882, -0.023500000000002075, -0.008000000000000895, 0.029249999999999332, 0.015499999999999403, -0.034000000000000696, -0.011750000000001037, 0.07249999999999801, 0.08674999999999855, 0.030250000000000554, 0.020749999999999602, 0.009999999999999787, 0.0365000000000002, 0.016750000000000043, 0.033500000000000085, 0.08800000000000097, 0.0815000000000019, 0.058000000000001606, 0.027499999999999858, 0.03524999999999778], zp_timestamp='2025-11-25T01:17:00')
2025-11-25T03:20:11.242 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:20:11.253 [DEBUG] [Thread-201967] [transport.py] [_log()] starting thread (client mode): 0xd31637f0
2025-11-25T03:20:11.254 [DEBUG] [Thread-201967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:20:11.268 [DEBUG] [Thread-201967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:20:11.268 [INFO] [Thread-201967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:20:11.276 [DEBUG] [Thread-201967] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] client lang: <none>
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] server lang: <none>
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] kex follows: False
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] Compression: none
2025-11-25T03:20:11.277 [DEBUG] [Thread-201967] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:20:11.335 [DEBUG] [Thread-201967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:20:11.336 [DEBUG] [Thread-201967] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:20:11.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:20:11.337 [DEBUG] [Thread-201967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:20:11.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:20:11.393 [DEBUG] [Thread-201967] [transport.py] [_log()] userauth is OK
2025-11-25T03:20:11.393 [DEBUG] [Thread-201967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:20:11.393 [DEBUG] [Thread-201967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:20:11.393 [DEBUG] [Thread-201967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:20:11.393 [DEBUG] [Thread-201967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:20:11.408 [INFO] [Thread-201967] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:20:11.408 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:20:11.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:20:12.221 [DEBUG] [Thread-201967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:20:12.221 [DEBUG] [Thread-201967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:20:12.268 [DEBUG] [Thread-201967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:20:12.268 [DEBUG] [Thread-201967] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:20:12.276 [DEBUG] [Thread-201967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:20:12.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:20:12.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-11-25T03:20:12.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-11-25T03:20:12.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:20:12.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:20:12.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:20:12.311 [DEBUG] [Thread-201967] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:20:13.473 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:23.912 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:25.082 [DEBUG] [Thread-201969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:34.378 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:40.228 [DEBUG] [Thread-201970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:42.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:20:42.336 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:20:42.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T03:20:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 20, 31), 11.6, 44.72, 0.0, 22.34, 11.52, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:20:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:20:31
2025-11-25T03:20:43.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:20:43.608 [DEBUG] [Thread-201971] [transport.py] [_log()] starting thread (client mode): 0xd31637f0
2025-11-25T03:20:43.608 [DEBUG] [Thread-201971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:20:43.622 [DEBUG] [Thread-201971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:20:43.622 [INFO] [Thread-201971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] client lang: <none>
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] server lang: <none>
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] kex follows: False
2025-11-25T03:20:43.626 [DEBUG] [Thread-201971] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:20:43.627 [DEBUG] [Thread-201971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:20:43.627 [DEBUG] [Thread-201971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:20:43.627 [DEBUG] [Thread-201971] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:20:43.627 [DEBUG] [Thread-201971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:20:43.627 [DEBUG] [Thread-201971] [transport.py] [_log()] Compression: none
2025-11-25T03:20:43.627 [DEBUG] [Thread-201971] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:20:43.654 [DEBUG] [Thread-201971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:20:43.657 [DEBUG] [Thread-201971] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:20:43.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:20:43.659 [DEBUG] [Thread-201971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:20:43.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:20:43.697 [DEBUG] [Thread-201971] [transport.py] [_log()] userauth is OK
2025-11-25T03:20:43.697 [DEBUG] [Thread-201971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:20:43.697 [DEBUG] [Thread-201971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:20:43.697 [DEBUG] [Thread-201971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:20:43.697 [DEBUG] [Thread-201971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:20:43.725 [INFO] [Thread-201971] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:20:43.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:20:44.329 [DEBUG] [Thread-201971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:20:44.329 [DEBUG] [Thread-201971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:20:44.330 [DEBUG] [Thread-201971] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:20:44.370 [DEBUG] [Thread-201971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:20:44.370 [DEBUG] [Thread-201971] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:20:44.373 [DEBUG] [Thread-201971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:20:44.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:20:44.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:20:44.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:20:44.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:20:44.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:20:44.395 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:20:44.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:20:44.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:20:44.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:20:44.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.055596 -999.00  +11.70  21.02     49   +1.50 1 1 1 1 1     0    0 9.38 -39.80 ZNESW 21.0 21.0 128.0 23.1 12.2 -24.3 12.1 -23.9 11.8 -22.7 12.1 -23.6
2025-11-25T03:20:44.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:20:44.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:20:44.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.055596
2025-11-25T03:20:44.404 [DEBUG] [Thread-201971] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:20:44.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:20:44.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:20:44.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:20:44.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:20:44.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:20:44.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:20:31', tmtdew=11.6, humidity=44.72, cloud=0.0, wind=22.34, temperature=11.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:20:32', seeing=0.86, atlas_timestamp='2025-11-25T01:20:03.494', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.044749999999998735, 0.017750000000001265, -0.040500000000001535, 0.009499999999999176, -0.007749999999999702, 0.0009999999999994458, -0.008749999999999147, 0.006000000000000227, -0.0129999999999999, -0.015750000000000597, -0.0030000000000001137, 0.03449999999999953, 0.07824999999999882, -0.023500000000002075, -0.008000000000000895, 0.029249999999999332, 0.015499999999999403, -0.034000000000000696, -0.011750000000001037, 0.07249999999999801, 0.08674999999999855, 0.030250000000000554, 0.020749999999999602, 0.009999999999999787, 0.0365000000000002, 0.016750000000000043, 0.033500000000000085, 0.08800000000000097, 0.0815000000000019, 0.058000000000001606, 0.027499999999999858, 0.03524999999999778], zp_timestamp='2025-11-25T01:17:00')
2025-11-25T03:20:44.508 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:20:44.520 [DEBUG] [Thread-201974] [transport.py] [_log()] starting thread (client mode): 0xd31621d0
2025-11-25T03:20:44.520 [DEBUG] [Thread-201974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:20:44.535 [DEBUG] [Thread-201974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:20:44.535 [INFO] [Thread-201974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:20:44.543 [DEBUG] [Thread-201974] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:20:44.543 [DEBUG] [Thread-201974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:20:44.544 [DEBUG] [Thread-201974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:20:44.544 [DEBUG] [Thread-201974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:20:44.544 [DEBUG] [Thread-201974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:20:44.544 [DEBUG] [Thread-201974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:20:44.544 [DEBUG] [Thread-201974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:20:44.544 [DEBUG] [Thread-201974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:20:44.544 [DEBUG] [Thread-201974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:20:44.544 [DEBUG] [Thread-201974] [transport.py] [_log()] client lang: <none>
2025-11-25T03:20:44.544 [DEBUG] [Thread-201974] [transport.py] [_log()] server lang: <none>
2025-11-25T03:20:44.545 [DEBUG] [Thread-201974] [transport.py] [_log()] kex follows: False
2025-11-25T03:20:44.545 [DEBUG] [Thread-201974] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:20:44.545 [DEBUG] [Thread-201974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:20:44.545 [DEBUG] [Thread-201974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:20:44.545 [DEBUG] [Thread-201974] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:20:44.545 [DEBUG] [Thread-201974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:20:44.545 [DEBUG] [Thread-201974] [transport.py] [_log()] Compression: none
2025-11-25T03:20:44.545 [DEBUG] [Thread-201974] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:20:44.602 [DEBUG] [Thread-201974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:20:44.603 [DEBUG] [Thread-201974] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:20:44.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:20:44.604 [DEBUG] [Thread-201974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:20:44.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:20:44.661 [DEBUG] [Thread-201974] [transport.py] [_log()] userauth is OK
2025-11-25T03:20:44.661 [DEBUG] [Thread-201974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:20:44.662 [DEBUG] [Thread-201974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:20:44.662 [DEBUG] [Thread-201974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:20:44.662 [DEBUG] [Thread-201974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:20:44.682 [INFO] [Thread-201974] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:20:44.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:20:44.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:20:44.855 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:45.604 [DEBUG] [Thread-201974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:20:45.604 [DEBUG] [Thread-201974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:20:45.652 [DEBUG] [Thread-201974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:20:45.652 [DEBUG] [Thread-201974] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:20:45.660 [DEBUG] [Thread-201974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:20:45.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:20:45.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:20:45.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:20:45.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:20:45.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:20:45.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:20:45.696 [DEBUG] [Thread-201974] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:20:45.718 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:45.719 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:55.293 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:20:55.316 [DEBUG] [Thread-201976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:05.761 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:07.837 [DEBUG] [Thread-201977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:10.477 [DEBUG] [Thread-201978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:15.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:21:15.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:21:15.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-11-25T03:21:16.250 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:16.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 21, 5), 11.58, 44.78, 0.0, 22.44, 11.49, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:21:16.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:21:05
2025-11-25T03:21:16.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:21:17.139 [DEBUG] [Thread-201979] [transport.py] [_log()] starting thread (client mode): 0xd3163cd0
2025-11-25T03:21:17.140 [DEBUG] [Thread-201979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:21:17.152 [DEBUG] [Thread-201979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:21:17.152 [INFO] [Thread-201979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] client lang: <none>
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] server lang: <none>
2025-11-25T03:21:17.158 [DEBUG] [Thread-201979] [transport.py] [_log()] kex follows: False
2025-11-25T03:21:17.159 [DEBUG] [Thread-201979] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:21:17.159 [DEBUG] [Thread-201979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:21:17.159 [DEBUG] [Thread-201979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:21:17.160 [DEBUG] [Thread-201979] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:21:17.160 [DEBUG] [Thread-201979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:21:17.160 [DEBUG] [Thread-201979] [transport.py] [_log()] Compression: none
2025-11-25T03:21:17.160 [DEBUG] [Thread-201979] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:21:17.197 [DEBUG] [Thread-201979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:21:17.203 [DEBUG] [Thread-201979] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:21:17.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:21:17.209 [DEBUG] [Thread-201979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:21:17.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:21:17.212 [DEBUG] [Thread-201979] [transport.py] [_log()] userauth is OK
2025-11-25T03:21:17.212 [DEBUG] [Thread-201979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:21:17.213 [DEBUG] [Thread-201979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:21:17.213 [DEBUG] [Thread-201979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:21:17.213 [DEBUG] [Thread-201979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:21:17.241 [INFO] [Thread-201979] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:21:17.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:21:17.872 [DEBUG] [Thread-201979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:21:17.882 [DEBUG] [Thread-201979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:21:17.883 [DEBUG] [Thread-201979] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:21:17.913 [DEBUG] [Thread-201979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:21:17.913 [DEBUG] [Thread-201979] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:21:17.917 [DEBUG] [Thread-201979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:21:17.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:21:17.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:21:17.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:21:17.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:21:17.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:21:17.948 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:21:17.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:21:17.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:21:17.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:21:17.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.056001 -999.00  +11.70  19.83     49   +1.50 1 1 1 1 1     0    0 9.39 -37.49 ZNESW 17.9 19.8 126.2 23.4 12.2 -24.3 12.1 -23.8 11.8 -22.7 12.1 -23.6
2025-11-25T03:21:17.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:21:17.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:21:17.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.056001
2025-11-25T03:21:17.955 [DEBUG] [Thread-201979] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:21:17.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:21:17.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:21:17.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:21:17.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:21:17.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:21:17.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:21:05', tmtdew=11.58, humidity=44.78, cloud=0.0, wind=22.44, temperature=11.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:21:05', seeing=0.86, atlas_timestamp='2025-11-25T01:20:38.486', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02325000000000088, -0.044749999999998735, 0.017750000000001265, -0.040500000000001535, 0.009499999999999176, -0.007749999999999702, 0.0009999999999994458, -0.008749999999999147, 0.006000000000000227, -0.0129999999999999, -0.015750000000000597, -0.0030000000000001137, 0.03449999999999953, 0.07824999999999882, -0.023500000000002075, -0.008000000000000895, 0.029249999999999332, 0.015499999999999403, -0.034000000000000696, -0.011750000000001037, 0.07249999999999801, 0.08674999999999855, 0.030250000000000554, 0.020749999999999602, 0.009999999999999787, 0.0365000000000002, 0.016750000000000043, 0.033500000000000085, 0.08800000000000097, 0.0815000000000019, 0.058000000000001606, 0.027499999999999858, 0.03524999999999778], zp_timestamp='2025-11-25T01:17:00')
2025-11-25T03:21:18.056 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:21:18.067 [DEBUG] [Thread-201982] [transport.py] [_log()] starting thread (client mode): 0xd31638b0
2025-11-25T03:21:18.067 [DEBUG] [Thread-201982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:21:18.082 [DEBUG] [Thread-201982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:21:18.082 [INFO] [Thread-201982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:21:18.090 [DEBUG] [Thread-201982] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:21:18.090 [DEBUG] [Thread-201982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:21:18.090 [DEBUG] [Thread-201982] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:21:18.090 [DEBUG] [Thread-201982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] client lang: <none>
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] server lang: <none>
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] kex follows: False
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] Compression: none
2025-11-25T03:21:18.091 [DEBUG] [Thread-201982] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:21:18.150 [DEBUG] [Thread-201982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:21:18.151 [DEBUG] [Thread-201982] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:21:18.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:21:18.152 [DEBUG] [Thread-201982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:21:18.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:21:18.208 [DEBUG] [Thread-201982] [transport.py] [_log()] userauth is OK
2025-11-25T03:21:18.209 [DEBUG] [Thread-201982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:21:18.209 [DEBUG] [Thread-201982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:21:18.209 [DEBUG] [Thread-201982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:21:18.209 [DEBUG] [Thread-201982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:21:18.227 [INFO] [Thread-201982] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:21:18.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:21:18.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:21:19.119 [DEBUG] [Thread-201982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:21:19.120 [DEBUG] [Thread-201982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:21:19.171 [DEBUG] [Thread-201982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:21:19.171 [DEBUG] [Thread-201982] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:21:19.181 [DEBUG] [Thread-201982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:21:19.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:21:19.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-11-25T03:21:19.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-11-25T03:21:19.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:21:19.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:21:19.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:21:19.219 [DEBUG] [Thread-201982] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:21:25.583 [DEBUG] [Thread-201984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:26.678 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:37.123 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:40.729 [DEBUG] [Thread-201985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:45.945 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:45.948 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:47.559 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:49.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:21:49.246 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:21:49.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-11-25T03:21:50.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 21, 38), 11.55, 44.88, 0.0, 22.36, 11.54, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:21:50.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:21:38
2025-11-25T03:21:50.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:21:50.975 [DEBUG] [Thread-201986] [transport.py] [_log()] starting thread (client mode): 0xd3163fa0
2025-11-25T03:21:50.976 [DEBUG] [Thread-201986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:21:50.987 [DEBUG] [Thread-201986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:21:50.987 [INFO] [Thread-201986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] client lang: <none>
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] server lang: <none>
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] kex follows: False
2025-11-25T03:21:50.992 [DEBUG] [Thread-201986] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:21:50.993 [DEBUG] [Thread-201986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:21:50.993 [DEBUG] [Thread-201986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:21:50.993 [DEBUG] [Thread-201986] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:21:50.994 [DEBUG] [Thread-201986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:21:50.994 [DEBUG] [Thread-201986] [transport.py] [_log()] Compression: none
2025-11-25T03:21:50.994 [DEBUG] [Thread-201986] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:21:51.031 [DEBUG] [Thread-201986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:21:51.037 [DEBUG] [Thread-201986] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:21:51.039 [DEBUG] [Thread-201986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:21:51.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:21:51.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:21:51.042 [DEBUG] [Thread-201986] [transport.py] [_log()] userauth is OK
2025-11-25T03:21:51.042 [DEBUG] [Thread-201986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:21:51.042 [DEBUG] [Thread-201986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:21:51.042 [DEBUG] [Thread-201986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:21:51.042 [DEBUG] [Thread-201986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:21:51.075 [INFO] [Thread-201986] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:21:51.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:21:51.724 [DEBUG] [Thread-201986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:21:51.732 [DEBUG] [Thread-201986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:21:51.733 [DEBUG] [Thread-201986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:21:51.765 [DEBUG] [Thread-201986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:21:51.765 [DEBUG] [Thread-201986] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:21:51.768 [DEBUG] [Thread-201986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:21:51.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:21:51.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:21:51.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:21:51.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:21:51.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:21:51.787 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:21:51.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:21:51.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:21:51.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:21:51.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.056348 -999.00  +11.70  17.48     49   +1.50 1 1 1 1 1     0    0 9.33 -38.81 ZNESW 17.0 17.5 125.8 21.3 12.2 -24.4 12.0 -23.9 11.8 -22.6 12.1 -23.5
2025-11-25T03:21:51.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:21:51.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:21:51.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.056348
2025-11-25T03:21:51.793 [DEBUG] [Thread-201986] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:21:51.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:21:51.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:21:51.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:21:51.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:21:51.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:21:51.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:21:38', tmtdew=11.55, humidity=44.88, cloud=0.0, wind=22.36, temperature=11.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:21:38', seeing=0.89, atlas_timestamp='2025-11-25T01:21:08.467', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, -0.038750000000000284, 0.011250000000000426, -0.0259999999999998, 0.029500000000000526, 0.04425000000000168, -0.0010000000000012221, -0.005749999999999034, 0.014499999999999957, 0.006000000000000227, -0.015750000000000597, 0.026500000000000412, 0.053000000000000824, 0.08924999999999983, -0.006000000000000227, 0.03799999999999848, 0.024250000000000327, 0.04249999999999865, -0.03300000000000125, -0.00575000000000081, 0.07149999999999856, 0.08174999999999955, 0.03125, 0.019750000000000156, 0.011999999999998678, 0.04049999999999976, 0.016750000000000043, 0.0705000000000009, 0.06300000000000061, 0.053000000000000824, 0.05500000000000149, 0.02800000000000047, 0.05274999999999963], zp_timestamp='2025-11-25T01:20:00')
2025-11-25T03:21:51.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:21:55.818 [DEBUG] [Thread-201989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:21:57.965 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:08.100 [DEBUG] [Thread-201990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:08.367 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:10.970 [DEBUG] [Thread-201991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:18.819 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:26.046 [DEBUG] [Thread-201992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:29.256 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:39.667 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:41.113 [DEBUG] [Thread-201993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:46.165 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:46.178 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:50.103 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:22:56.167 [DEBUG] [Thread-201994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:00.593 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:08.378 [DEBUG] [Thread-201995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:11.037 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:11.239 [DEBUG] [Thread-201996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:21.489 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:26.303 [DEBUG] [Thread-201997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:31.956 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:41.374 [DEBUG] [Thread-201998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:42.389 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:46.390 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:46.392 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:52.807 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:23:56.445 [DEBUG] [Thread-201999 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:03.271 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:03.907 [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-11-25T03:24:08.724 [DEBUG] [Thread-202000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:11.508 [DEBUG] [Thread-202001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:13.720 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:24.145 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:26.592 [DEBUG] [Thread-202002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:33.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:24:33.953 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:24:33.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-11-25T03:24:34.574 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:34.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 24, 24), 11.58, 44.8, 0.0, 23.98, 11.62, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:24:34.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:24:24
2025-11-25T03:24:34.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:24:35.107 [DEBUG] [Thread-202003] [transport.py] [_log()] starting thread (client mode): 0xd3161270
2025-11-25T03:24:35.108 [DEBUG] [Thread-202003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:24:35.121 [DEBUG] [Thread-202003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:24:35.121 [INFO] [Thread-202003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:24:35.125 [DEBUG] [Thread-202003] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] client lang: <none>
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] server lang: <none>
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] kex follows: False
2025-11-25T03:24:35.126 [DEBUG] [Thread-202003] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:24:35.127 [DEBUG] [Thread-202003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:24:35.127 [DEBUG] [Thread-202003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:24:35.127 [DEBUG] [Thread-202003] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:24:35.127 [DEBUG] [Thread-202003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:24:35.127 [DEBUG] [Thread-202003] [transport.py] [_log()] Compression: none
2025-11-25T03:24:35.127 [DEBUG] [Thread-202003] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:24:35.163 [DEBUG] [Thread-202003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:24:35.168 [DEBUG] [Thread-202003] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:24:35.170 [DEBUG] [Thread-202003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:24:35.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:24:35.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:24:35.175 [DEBUG] [Thread-202003] [transport.py] [_log()] userauth is OK
2025-11-25T03:24:35.175 [DEBUG] [Thread-202003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:24:35.176 [DEBUG] [Thread-202003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:24:35.176 [DEBUG] [Thread-202003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:24:35.176 [DEBUG] [Thread-202003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:24:35.217 [INFO] [Thread-202003] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:24:35.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:24:35.851 [DEBUG] [Thread-202003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:24:35.860 [DEBUG] [Thread-202003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:24:35.861 [DEBUG] [Thread-202003] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:24:35.892 [DEBUG] [Thread-202003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:24:35.892 [DEBUG] [Thread-202003] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:24:35.895 [DEBUG] [Thread-202003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:24:35.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:24:35.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:24:35.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:24:35.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:24:35.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:24:35.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:24:35.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:24:35.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:24:35.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:24:35.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.058431 -999.00  +11.70  14.00     49   +1.60 1 1 1 1 1     0    0 9.16 -41.19 ZNESW 15.4 14.0 129.0 19.9 12.2 -24.3 12.0 -23.9 11.8 -22.7 12.1 -23.5
2025-11-25T03:24:35.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:24:35.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:24:35.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.058431
2025-11-25T03:24:35.922 [DEBUG] [Thread-202003] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:24:35.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:24:35.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:24:35.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:24:35.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:24:35.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:24:35.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:24:24', tmtdew=11.58, humidity=44.8, cloud=0.0, wind=23.98, temperature=11.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:24:24', seeing=0.91, atlas_timestamp='2025-11-25T01:24:08.438', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, -0.038750000000000284, 0.011250000000000426, -0.0259999999999998, 0.029500000000000526, 0.04425000000000168, -0.0010000000000012221, -0.005749999999999034, 0.014499999999999957, 0.006000000000000227, -0.015750000000000597, 0.026500000000000412, 0.053000000000000824, 0.08924999999999983, -0.006000000000000227, 0.03799999999999848, 0.024250000000000327, 0.04249999999999865, -0.03300000000000125, -0.00575000000000081, 0.07149999999999856, 0.08174999999999955, 0.03125, 0.019750000000000156, 0.011999999999998678, 0.04049999999999976, 0.016750000000000043, 0.0705000000000009, 0.06300000000000061, 0.053000000000000824, 0.05500000000000149, 0.02800000000000047, 0.05274999999999963], zp_timestamp='2025-11-25T01:20:00')
2025-11-25T03:24:36.008 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:24:36.019 [DEBUG] [Thread-202006] [transport.py] [_log()] starting thread (client mode): 0xd3160880
2025-11-25T03:24:36.019 [DEBUG] [Thread-202006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:24:36.034 [DEBUG] [Thread-202006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:24:36.034 [INFO] [Thread-202006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] client lang: <none>
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] server lang: <none>
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] kex follows: False
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:24:36.042 [DEBUG] [Thread-202006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:24:36.043 [DEBUG] [Thread-202006] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:24:36.043 [DEBUG] [Thread-202006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:24:36.043 [DEBUG] [Thread-202006] [transport.py] [_log()] Compression: none
2025-11-25T03:24:36.043 [DEBUG] [Thread-202006] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:24:36.100 [DEBUG] [Thread-202006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:24:36.101 [DEBUG] [Thread-202006] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:24:36.102 [DEBUG] [Thread-202006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:24:36.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:24:36.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:24:36.158 [DEBUG] [Thread-202006] [transport.py] [_log()] userauth is OK
2025-11-25T03:24:36.159 [DEBUG] [Thread-202006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:24:36.159 [DEBUG] [Thread-202006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:24:36.159 [DEBUG] [Thread-202006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:24:36.159 [DEBUG] [Thread-202006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:24:36.179 [INFO] [Thread-202006] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:24:36.179 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:24:36.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:24:37.004 [DEBUG] [Thread-202006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:24:37.005 [DEBUG] [Thread-202006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:24:37.052 [DEBUG] [Thread-202006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:24:37.052 [DEBUG] [Thread-202006] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:24:37.061 [DEBUG] [Thread-202006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:24:37.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:24:37.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-11-25T03:24:37.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-11-25T03:24:37.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:24:37.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:24:37.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:24:37.099 [DEBUG] [Thread-202006] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:24:41.623 [DEBUG] [Thread-202008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:45.021 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:46.596 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:46.598 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:50.739 [DEBUG] [Thread-195937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:55.466 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:24:56.775 [DEBUG] [Thread-202009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:05.939 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:07.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:25:07.125 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:25:07.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-11-25T03:25:08.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 24, 57), 11.63, 44.8, 0.0, 22.32, 11.61, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:25:08.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:24:57
2025-11-25T03:25:08.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:25:08.699 [DEBUG] [Thread-202010] [transport.py] [_log()] starting thread (client mode): 0xd3162020
2025-11-25T03:25:08.700 [DEBUG] [Thread-202010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:25:08.703 [DEBUG] [Thread-202010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:25:08.703 [INFO] [Thread-202010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] client lang: <none>
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] server lang: <none>
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] kex follows: False
2025-11-25T03:25:08.709 [DEBUG] [Thread-202010] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:25:08.710 [DEBUG] [Thread-202010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:25:08.710 [DEBUG] [Thread-202010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:25:08.710 [DEBUG] [Thread-202010] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:25:08.710 [DEBUG] [Thread-202010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:25:08.710 [DEBUG] [Thread-202010] [transport.py] [_log()] Compression: none
2025-11-25T03:25:08.711 [DEBUG] [Thread-202010] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:25:08.744 [DEBUG] [Thread-202010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:25:08.750 [DEBUG] [Thread-202010] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:25:08.752 [DEBUG] [Thread-202010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:25:08.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:25:08.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:25:08.756 [DEBUG] [Thread-202010] [transport.py] [_log()] userauth is OK
2025-11-25T03:25:08.756 [DEBUG] [Thread-202010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:25:08.756 [DEBUG] [Thread-202010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:25:08.756 [DEBUG] [Thread-202010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:25:08.756 [DEBUG] [Thread-202010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:25:08.775 [INFO] [Thread-202010] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:25:08.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:25:09.064 [DEBUG] [Thread-202012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:10.025 [DEBUG] [Thread-202010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:25:10.025 [DEBUG] [Thread-202010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:25:10.034 [DEBUG] [Thread-202010] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:25:10.066 [DEBUG] [Thread-202010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:25:10.066 [DEBUG] [Thread-202010] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:25:10.069 [DEBUG] [Thread-202010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:25:10.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:25:10.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:25:10.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:25:10.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:25:10.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:25:10.087 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:25:10.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:25:10.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:25:10.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:25:10.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.058778 -999.00  +11.70  20.20     49   +1.50 1 1 1 1 1     0    0 9.08 -42.41 ZNESW 16.9 20.2 123.4 23.6 12.2 -24.3 12.0 -23.8 11.8 -22.6 12.0 -23.4
2025-11-25T03:25:10.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:25:10.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:25:10.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.058778
2025-11-25T03:25:10.099 [DEBUG] [Thread-202010] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:25:10.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:25:10.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:25:10.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:25:10.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:25:10.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:25:10.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:24:57', tmtdew=11.63, humidity=44.8, cloud=0.0, wind=22.32, temperature=11.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:24:57', seeing=0.8, atlas_timestamp='2025-11-25T01:24:38.419', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, -0.038750000000000284, 0.011250000000000426, -0.0259999999999998, 0.029500000000000526, 0.04425000000000168, -0.0010000000000012221, -0.005749999999999034, 0.014499999999999957, 0.006000000000000227, -0.015750000000000597, 0.026500000000000412, 0.053000000000000824, 0.08924999999999983, -0.006000000000000227, 0.03799999999999848, 0.024250000000000327, 0.04249999999999865, -0.03300000000000125, -0.00575000000000081, 0.07149999999999856, 0.08174999999999955, 0.03125, 0.019750000000000156, 0.011999999999998678, 0.04049999999999976, 0.016750000000000043, 0.0705000000000009, 0.06300000000000061, 0.053000000000000824, 0.05500000000000149, 0.02800000000000047, 0.05274999999999963], zp_timestamp='2025-11-25T01:23:00')
2025-11-25T03:25:10.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:25:10.196 [DEBUG] [Thread-202014] [transport.py] [_log()] starting thread (client mode): 0xd31615d0
2025-11-25T03:25:10.196 [DEBUG] [Thread-202014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:25:10.210 [DEBUG] [Thread-202014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:25:10.210 [INFO] [Thread-202014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:25:10.218 [DEBUG] [Thread-202014] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:25:10.218 [DEBUG] [Thread-202014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:25:10.218 [DEBUG] [Thread-202014] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:25:10.218 [DEBUG] [Thread-202014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:25:10.218 [DEBUG] [Thread-202014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:25:10.218 [DEBUG] [Thread-202014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:25:10.218 [DEBUG] [Thread-202014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:25:10.218 [DEBUG] [Thread-202014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:25:10.218 [DEBUG] [Thread-202014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:25:10.219 [DEBUG] [Thread-202014] [transport.py] [_log()] client lang: <none>
2025-11-25T03:25:10.219 [DEBUG] [Thread-202014] [transport.py] [_log()] server lang: <none>
2025-11-25T03:25:10.219 [DEBUG] [Thread-202014] [transport.py] [_log()] kex follows: False
2025-11-25T03:25:10.219 [DEBUG] [Thread-202014] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:25:10.219 [DEBUG] [Thread-202014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:25:10.219 [DEBUG] [Thread-202014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:25:10.219 [DEBUG] [Thread-202014] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:25:10.219 [DEBUG] [Thread-202014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:25:10.220 [DEBUG] [Thread-202014] [transport.py] [_log()] Compression: none
2025-11-25T03:25:10.220 [DEBUG] [Thread-202014] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:25:10.276 [DEBUG] [Thread-202014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:25:10.277 [DEBUG] [Thread-202014] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:25:10.278 [DEBUG] [Thread-202014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:25:10.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:25:10.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:25:10.333 [DEBUG] [Thread-202014] [transport.py] [_log()] userauth is OK
2025-11-25T03:25:10.333 [DEBUG] [Thread-202014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:25:10.333 [DEBUG] [Thread-202014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:25:10.333 [DEBUG] [Thread-202014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:25:10.333 [DEBUG] [Thread-202014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:25:10.352 [INFO] [Thread-202014] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:25:10.353 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:25:10.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:25:11.175 [DEBUG] [Thread-202014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:25:11.175 [DEBUG] [Thread-202014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:25:11.223 [DEBUG] [Thread-202014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:25:11.223 [DEBUG] [Thread-202014] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:25:11.233 [DEBUG] [Thread-202014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:25:11.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:25:11.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:25:11.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:25:11.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:25:11.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:25:11.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:25:11.266 [DEBUG] [Thread-202014] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:25:11.863 [DEBUG] [Thread-202016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:16.409 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:26.834 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:26.992 [DEBUG] [Thread-202017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:37.296 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:41.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:25:41.271 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:25:41.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-11-25T03:25:42.046 [DEBUG] [Thread-202018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:42.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 25, 30), 11.61, 44.85, 0.0, 20.96, 11.62, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:25:42.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:25:30
2025-11-25T03:25:42.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:25:42.448 [DEBUG] [Thread-202019] [transport.py] [_log()] starting thread (client mode): 0xd3162a70
2025-11-25T03:25:42.449 [DEBUG] [Thread-202019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:25:42.462 [DEBUG] [Thread-202019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:25:42.462 [INFO] [Thread-202019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] client lang: <none>
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] server lang: <none>
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] kex follows: False
2025-11-25T03:25:42.466 [DEBUG] [Thread-202019] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:25:42.467 [DEBUG] [Thread-202019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:25:42.467 [DEBUG] [Thread-202019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:25:42.467 [DEBUG] [Thread-202019] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:25:42.467 [DEBUG] [Thread-202019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:25:42.467 [DEBUG] [Thread-202019] [transport.py] [_log()] Compression: none
2025-11-25T03:25:42.467 [DEBUG] [Thread-202019] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:25:42.492 [DEBUG] [Thread-202019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:25:42.497 [DEBUG] [Thread-202019] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:25:42.499 [DEBUG] [Thread-202019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:25:42.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:25:42.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:25:42.504 [DEBUG] [Thread-202019] [transport.py] [_log()] userauth is OK
2025-11-25T03:25:42.504 [DEBUG] [Thread-202019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:25:42.504 [DEBUG] [Thread-202019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:25:42.504 [DEBUG] [Thread-202019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:25:42.504 [DEBUG] [Thread-202019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:25:42.544 [INFO] [Thread-202019] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:25:42.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:25:43.164 [DEBUG] [Thread-202019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:25:43.164 [DEBUG] [Thread-202019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:25:43.174 [DEBUG] [Thread-202019] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:25:43.205 [DEBUG] [Thread-202019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:25:43.205 [DEBUG] [Thread-202019] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:25:43.208 [DEBUG] [Thread-202019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:25:43.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:25:43.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:25:43.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:25:43.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:25:43.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:25:43.227 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:25:43.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:25:43.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:25:43.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:25:43.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.059068 -999.00  +11.70  16.45     49   +1.50 1 1 1 1 1     0    0 9.32 -41.34 ZNESW 16.4 16.4 131.4 22.2 12.2 -24.3 12.0 -23.8 11.7 -22.5 12.1 -23.5
2025-11-25T03:25:43.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:25:43.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:25:43.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.059068
2025-11-25T03:25:43.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:25:43.239 [DEBUG] [Thread-202019] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:25:43.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:25:43.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:25:43.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:25:43.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:25:43.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:25:30', tmtdew=11.61, humidity=44.85, cloud=0.0, wind=20.96, temperature=11.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:25:30', seeing=0.9, atlas_timestamp='2025-11-25T01:25:03.475', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, -0.038750000000000284, 0.011250000000000426, -0.0259999999999998, 0.029500000000000526, 0.04425000000000168, -0.0010000000000012221, -0.005749999999999034, 0.014499999999999957, 0.006000000000000227, -0.015750000000000597, 0.026500000000000412, 0.053000000000000824, 0.08924999999999983, -0.006000000000000227, 0.03799999999999848, 0.024250000000000327, 0.04249999999999865, -0.03300000000000125, -0.00575000000000081, 0.07149999999999856, 0.08174999999999955, 0.03125, 0.019750000000000156, 0.011999999999998678, 0.04049999999999976, 0.016750000000000043, 0.0705000000000009, 0.06300000000000061, 0.053000000000000824, 0.05500000000000149, 0.02800000000000047, 0.05274999999999963], zp_timestamp='2025-11-25T01:23:00')
2025-11-25T03:25:43.315 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:25:43.327 [DEBUG] [Thread-202022] [transport.py] [_log()] starting thread (client mode): 0xd3163ca0
2025-11-25T03:25:43.327 [DEBUG] [Thread-202022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:25:43.343 [DEBUG] [Thread-202022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:25:43.343 [INFO] [Thread-202022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] client lang: <none>
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] server lang: <none>
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] kex follows: False
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:25:43.351 [DEBUG] [Thread-202022] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:25:43.352 [DEBUG] [Thread-202022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:25:43.352 [DEBUG] [Thread-202022] [transport.py] [_log()] Compression: none
2025-11-25T03:25:43.352 [DEBUG] [Thread-202022] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:25:43.407 [DEBUG] [Thread-202022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:25:43.407 [DEBUG] [Thread-202022] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:25:43.407 [DEBUG] [Thread-202022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:25:43.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:25:43.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:25:43.464 [DEBUG] [Thread-202022] [transport.py] [_log()] userauth is OK
2025-11-25T03:25:43.464 [DEBUG] [Thread-202022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:25:43.464 [DEBUG] [Thread-202022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:25:43.464 [DEBUG] [Thread-202022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:25:43.464 [DEBUG] [Thread-202022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:25:43.482 [INFO] [Thread-202022] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:25:43.483 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:25:43.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:25:44.318 [DEBUG] [Thread-202022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:25:44.318 [DEBUG] [Thread-202022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:25:44.365 [DEBUG] [Thread-202022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:25:44.365 [DEBUG] [Thread-202022] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:25:44.374 [DEBUG] [Thread-202022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:25:44.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:25:44.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-11-25T03:25:44.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') -> 00000000
2025-11-25T03:25:44.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:25:44.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:25:44.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:25:44.411 [DEBUG] [Thread-202022] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:25:46.800 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:46.801 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:47.717 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:57.113 [DEBUG] [Thread-202024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:25:58.149 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:08.600 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:09.321 [DEBUG] [Thread-202025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:12.294 [DEBUG] [Thread-202026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:14.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:26:14.437 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:26:14.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-11-25T03:26:15.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 26, 3), 11.61, 44.85, 0.0, 21.97, 11.59, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:26:15.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:26:03
2025-11-25T03:26:15.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:26:15.626 [DEBUG] [Thread-202027] [transport.py] [_log()] starting thread (client mode): 0xd3162620
2025-11-25T03:26:15.626 [DEBUG] [Thread-202027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:26:15.639 [DEBUG] [Thread-202027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:26:15.639 [INFO] [Thread-202027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] client lang: <none>
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] server lang: <none>
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] kex follows: False
2025-11-25T03:26:15.644 [DEBUG] [Thread-202027] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:26:15.645 [DEBUG] [Thread-202027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:26:15.645 [DEBUG] [Thread-202027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:26:15.645 [DEBUG] [Thread-202027] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:26:15.645 [DEBUG] [Thread-202027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:26:15.645 [DEBUG] [Thread-202027] [transport.py] [_log()] Compression: none
2025-11-25T03:26:15.645 [DEBUG] [Thread-202027] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:26:15.675 [DEBUG] [Thread-202027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:26:15.679 [DEBUG] [Thread-202027] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:26:15.680 [DEBUG] [Thread-202027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:26:15.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:26:15.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:26:15.682 [DEBUG] [Thread-202027] [transport.py] [_log()] userauth is OK
2025-11-25T03:26:15.682 [DEBUG] [Thread-202027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:26:15.682 [DEBUG] [Thread-202027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:26:15.682 [DEBUG] [Thread-202027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:26:15.682 [DEBUG] [Thread-202027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:26:15.701 [INFO] [Thread-202027] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:26:15.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:26:16.371 [DEBUG] [Thread-202027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:26:16.371 [DEBUG] [Thread-202027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:26:16.372 [DEBUG] [Thread-202027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:26:16.412 [DEBUG] [Thread-202027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:26:16.412 [DEBUG] [Thread-202027] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:26:16.414 [DEBUG] [Thread-202027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:26:16.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:26:16.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:26:16.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:26:16.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:26:16.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:26:16.432 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:26:16.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:26:16.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:26:16.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:26:16.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.059820 -999.00  +11.60  17.40     49   +1.50 1 1 1 1 1     0    0 9.22 -38.77 ZNESW 15.6 17.4 123.0 23.0 12.2 -24.2 12.0 -23.8 11.8 -22.6 12.0 -23.4
2025-11-25T03:26:16.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:26:16.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:26:16.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.059820
2025-11-25T03:26:16.439 [DEBUG] [Thread-202027] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:26:16.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:26:16.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:26:16.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:26:16.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:26:16.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:26:16.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:26:03', tmtdew=11.61, humidity=44.85, cloud=0.0, wind=21.97, temperature=11.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:26:03', seeing=0.91, atlas_timestamp='2025-11-25T01:26:08.448', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, -0.038750000000000284, 0.011250000000000426, -0.0259999999999998, 0.029500000000000526, 0.04425000000000168, -0.0010000000000012221, -0.005749999999999034, 0.014499999999999957, 0.006000000000000227, -0.015750000000000597, 0.026500000000000412, 0.053000000000000824, 0.08924999999999983, -0.006000000000000227, 0.03799999999999848, 0.024250000000000327, 0.04249999999999865, -0.03300000000000125, -0.00575000000000081, 0.07149999999999856, 0.08174999999999955, 0.03125, 0.019750000000000156, 0.011999999999998678, 0.04049999999999976, 0.016750000000000043, 0.0705000000000009, 0.06300000000000061, 0.053000000000000824, 0.05500000000000149, 0.02800000000000047, 0.05274999999999963], zp_timestamp='2025-11-25T01:23:00')
2025-11-25T03:26:16.525 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:26:16.541 [DEBUG] [Thread-202030] [transport.py] [_log()] starting thread (client mode): 0xd314add0
2025-11-25T03:26:16.541 [DEBUG] [Thread-202030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:26:16.556 [DEBUG] [Thread-202030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:26:16.556 [INFO] [Thread-202030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:26:16.563 [DEBUG] [Thread-202030] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] client lang: <none>
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] server lang: <none>
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] kex follows: False
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] Compression: none
2025-11-25T03:26:16.564 [DEBUG] [Thread-202030] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:26:16.619 [DEBUG] [Thread-202030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:26:16.620 [DEBUG] [Thread-202030] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:26:16.620 [DEBUG] [Thread-202030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:26:16.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:26:16.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:26:16.676 [DEBUG] [Thread-202030] [transport.py] [_log()] userauth is OK
2025-11-25T03:26:16.676 [DEBUG] [Thread-202030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:26:16.676 [DEBUG] [Thread-202030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:26:16.676 [DEBUG] [Thread-202030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:26:16.676 [DEBUG] [Thread-202030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:26:16.689 [INFO] [Thread-202030] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:26: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-11-25T03:26:16.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:26:17.517 [DEBUG] [Thread-202030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:26:17.517 [DEBUG] [Thread-202030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:26:17.565 [DEBUG] [Thread-202030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:26:17.565 [DEBUG] [Thread-202030] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:26:17.573 [DEBUG] [Thread-202030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:26:17.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:26:17.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-11-25T03:26:17.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:26:17.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:26:17.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:26:17.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:26:17.605 [DEBUG] [Thread-202030] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:26:19.039 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:27.404 [DEBUG] [Thread-202032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:29.480 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:39.890 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:42.535 [DEBUG] [Thread-202033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:47.013 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:47.016 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:47.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:26:47.631 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:26:47.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-11-25T03:26:48.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 26, 36), 11.54, 44.92, 0.0, 19.94, 11.49, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:26:48.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:26:36
2025-11-25T03:26:48.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:26:49.074 [DEBUG] [Thread-202034] [transport.py] [_log()] starting thread (client mode): 0xd3148160
2025-11-25T03:26:49.075 [DEBUG] [Thread-202034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:26:49.086 [DEBUG] [Thread-202034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:26:49.087 [INFO] [Thread-202034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:26:49.091 [DEBUG] [Thread-202034] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] client lang: <none>
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] server lang: <none>
2025-11-25T03:26:49.092 [DEBUG] [Thread-202034] [transport.py] [_log()] kex follows: False
2025-11-25T03:26:49.093 [DEBUG] [Thread-202034] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:26:49.093 [DEBUG] [Thread-202034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:26:49.093 [DEBUG] [Thread-202034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:26:49.094 [DEBUG] [Thread-202034] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:26:49.094 [DEBUG] [Thread-202034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:26:49.094 [DEBUG] [Thread-202034] [transport.py] [_log()] Compression: none
2025-11-25T03:26:49.094 [DEBUG] [Thread-202034] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:26:49.132 [DEBUG] [Thread-202034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:26:49.138 [DEBUG] [Thread-202034] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:26:49.140 [DEBUG] [Thread-202034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:26:49.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:26:49.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:26:49.145 [DEBUG] [Thread-202034] [transport.py] [_log()] userauth is OK
2025-11-25T03:26:49.146 [DEBUG] [Thread-202034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:26:49.146 [DEBUG] [Thread-202034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:26:49.146 [DEBUG] [Thread-202034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:26:49.146 [DEBUG] [Thread-202034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:26:49.184 [INFO] [Thread-202034] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:26:49.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:26:49.830 [DEBUG] [Thread-202034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:26:49.830 [DEBUG] [Thread-202034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:26:49.832 [DEBUG] [Thread-202034] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:26:49.872 [DEBUG] [Thread-202034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:26:49.872 [DEBUG] [Thread-202034] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:26:49.876 [DEBUG] [Thread-202034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:26:49.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:26:49.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:26:49.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:26:49.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:26:49.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:26:49.904 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:26:49.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:26:49.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:26:49.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:26:49.907 [DEBUG] [Thread-202034] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:26:49.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.060167 -999.00  +11.60  17.04     50   +1.50 1 1 1 1 1     0    0 9.07 -39.23 ZNESW 18.3 17.0 118.0 21.7 12.2 -24.2 12.1 -23.6 11.8 -22.5 12.1 -23.3
2025-11-25T03:26:49.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:26:49.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:26:49.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.060167
2025-11-25T03:26:49.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:26:49.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:26:49.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:26:49.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:26:49.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:26:49.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:26:36', tmtdew=11.54, humidity=44.92, cloud=0.0, wind=19.94, temperature=11.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:26:36', seeing=0.81, atlas_timestamp='2025-11-25T01:26:38.429', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, -0.038750000000000284, 0.011250000000000426, -0.0259999999999998, 0.029500000000000526, 0.04425000000000168, -0.0010000000000012221, -0.005749999999999034, 0.014499999999999957, 0.006000000000000227, -0.015750000000000597, 0.026500000000000412, 0.053000000000000824, 0.08924999999999983, -0.006000000000000227, 0.03799999999999848, 0.024250000000000327, 0.04249999999999865, -0.03300000000000125, -0.00575000000000081, 0.07149999999999856, 0.08174999999999955, 0.03125, 0.019750000000000156, 0.011999999999998678, 0.04049999999999976, 0.016750000000000043, 0.0705000000000009, 0.06300000000000061, 0.053000000000000824, 0.05500000000000149, 0.02800000000000047, 0.05274999999999963], zp_timestamp='2025-11-25T01:23:00')
2025-11-25T03:26:50.015 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:26:50.028 [DEBUG] [Thread-202037] [transport.py] [_log()] starting thread (client mode): 0xd3163100
2025-11-25T03:26:50.028 [DEBUG] [Thread-202037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:26:50.042 [DEBUG] [Thread-202037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:26:50.042 [INFO] [Thread-202037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:26:50.050 [DEBUG] [Thread-202037] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:26:50.050 [DEBUG] [Thread-202037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:26:50.050 [DEBUG] [Thread-202037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:26:50.050 [DEBUG] [Thread-202037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:26:50.050 [DEBUG] [Thread-202037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:26:50.050 [DEBUG] [Thread-202037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:26:50.050 [DEBUG] [Thread-202037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] client lang: <none>
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] server lang: <none>
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] kex follows: False
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] Compression: none
2025-11-25T03:26:50.051 [DEBUG] [Thread-202037] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:26:50.110 [DEBUG] [Thread-202037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:26:50.110 [DEBUG] [Thread-202037] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:26:50.111 [DEBUG] [Thread-202037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:26:50.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:26:50.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:26:50.169 [DEBUG] [Thread-202037] [transport.py] [_log()] userauth is OK
2025-11-25T03:26:50.169 [DEBUG] [Thread-202037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:26:50.169 [DEBUG] [Thread-202037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:26:50.169 [DEBUG] [Thread-202037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:26:50.169 [DEBUG] [Thread-202037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:26:50.194 [INFO] [Thread-202037] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:26:50.195 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:26:50.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:26:50.381 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:26:51.023 [DEBUG] [Thread-202037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:26:51.023 [DEBUG] [Thread-202037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:26:51.072 [DEBUG] [Thread-202037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:26:51.072 [DEBUG] [Thread-202037] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:26:51.080 [DEBUG] [Thread-202037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:26:51.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:26:51.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-11-25T03:26:51.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-11-25T03:26:51.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:26:51.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:26:51.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:26:51.113 [DEBUG] [Thread-202037] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:26:57.585 [DEBUG] [Thread-202039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:00.819 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:09.523 [DEBUG] [Thread-202040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:11.274 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:12.736 [DEBUG] [Thread-202041 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:21.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:27:21.127 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:27:21.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-11-25T03:27:21.725 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:22.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 27, 9), 11.52, 44.98, 0.0, 19.66, 11.51, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:27:22.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:27:09
2025-11-25T03:27:22.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:27:22.402 [DEBUG] [Thread-202042] [transport.py] [_log()] starting thread (client mode): 0xd3161780
2025-11-25T03:27:22.402 [DEBUG] [Thread-202042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:27:22.414 [DEBUG] [Thread-202042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:27:22.415 [INFO] [Thread-202042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:27:22.419 [DEBUG] [Thread-202042] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] client lang: <none>
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] server lang: <none>
2025-11-25T03:27:22.420 [DEBUG] [Thread-202042] [transport.py] [_log()] kex follows: False
2025-11-25T03:27:22.421 [DEBUG] [Thread-202042] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:27:22.421 [DEBUG] [Thread-202042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:27:22.421 [DEBUG] [Thread-202042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:27:22.422 [DEBUG] [Thread-202042] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:27:22.422 [DEBUG] [Thread-202042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:27:22.422 [DEBUG] [Thread-202042] [transport.py] [_log()] Compression: none
2025-11-25T03:27:22.422 [DEBUG] [Thread-202042] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:27:22.458 [DEBUG] [Thread-202042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:27:22.463 [DEBUG] [Thread-202042] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:27:22.465 [DEBUG] [Thread-202042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:27:22.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:27:22.468 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:27:22.470 [DEBUG] [Thread-202042] [transport.py] [_log()] userauth is OK
2025-11-25T03:27:22.470 [DEBUG] [Thread-202042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:27:22.471 [DEBUG] [Thread-202042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:27:22.471 [DEBUG] [Thread-202042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:27:22.471 [DEBUG] [Thread-202042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:27:22.500 [INFO] [Thread-202042] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:27:22.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:27:23.062 [DEBUG] [Thread-202042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:27:23.062 [DEBUG] [Thread-202042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:27:23.065 [DEBUG] [Thread-202042] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:27:23.104 [DEBUG] [Thread-202042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:27:23.104 [DEBUG] [Thread-202042] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:27:23.108 [DEBUG] [Thread-202042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:27:23.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:27:23.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:27:23.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:27:23.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:27:23.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:27:23.134 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:27:23.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:27:23.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:27:23.136 [DEBUG] [Thread-202042] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:27:23.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:27:23.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.060514 -999.00  +11.60  16.79     49   +1.50 1 1 1 1 1     0    0 9.51 -39.87 ZNESW 14.6 16.8 125.8 24.3 12.2 -24.1 12.0 -23.7 11.7 -22.4 12.1 -23.4
2025-11-25T03:27:23.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:27:23.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:27:23.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.060514
2025-11-25T03:27:23.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:27:23.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:27:23.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:27:23.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:27:23.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:27:23.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:27:09', tmtdew=11.52, humidity=44.98, cloud=0.0, wind=19.66, temperature=11.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:27:10', seeing=0.82, atlas_timestamp='2025-11-25T01:27:08.410', atlas_cloud=1, atlas_rain=1, zp_data=[-0.024250000000000327, -0.038750000000000284, 0.011250000000000426, -0.0259999999999998, 0.029500000000000526, 0.04425000000000168, -0.0010000000000012221, -0.005749999999999034, 0.014499999999999957, 0.006000000000000227, -0.015750000000000597, 0.026500000000000412, 0.053000000000000824, 0.08924999999999983, -0.006000000000000227, 0.03799999999999848, 0.024250000000000327, 0.04249999999999865, -0.03300000000000125, -0.00575000000000081, 0.07149999999999856, 0.08174999999999955, 0.03125, 0.019750000000000156, 0.011999999999998678, 0.04049999999999976, 0.016750000000000043, 0.0705000000000009, 0.06300000000000061, 0.053000000000000824, 0.05500000000000149, 0.02800000000000047, 0.05274999999999963], zp_timestamp='2025-11-25T01:23:00')
2025-11-25T03:27:23.249 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:27:23.261 [DEBUG] [Thread-202045] [transport.py] [_log()] starting thread (client mode): 0xd3161b70
2025-11-25T03:27:23.261 [DEBUG] [Thread-202045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:27:23.276 [DEBUG] [Thread-202045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:27:23.276 [INFO] [Thread-202045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:27:23.284 [DEBUG] [Thread-202045] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:27:23.284 [DEBUG] [Thread-202045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:27:23.284 [DEBUG] [Thread-202045] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:27:23.284 [DEBUG] [Thread-202045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:27:23.284 [DEBUG] [Thread-202045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:27:23.285 [DEBUG] [Thread-202045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:27:23.285 [DEBUG] [Thread-202045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:27:23.285 [DEBUG] [Thread-202045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:27:23.285 [DEBUG] [Thread-202045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:27:23.285 [DEBUG] [Thread-202045] [transport.py] [_log()] client lang: <none>
2025-11-25T03:27:23.285 [DEBUG] [Thread-202045] [transport.py] [_log()] server lang: <none>
2025-11-25T03:27:23.285 [DEBUG] [Thread-202045] [transport.py] [_log()] kex follows: False
2025-11-25T03:27:23.285 [DEBUG] [Thread-202045] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:27:23.286 [DEBUG] [Thread-202045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:27:23.286 [DEBUG] [Thread-202045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:27:23.286 [DEBUG] [Thread-202045] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:27:23.286 [DEBUG] [Thread-202045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:27:23.287 [DEBUG] [Thread-202045] [transport.py] [_log()] Compression: none
2025-11-25T03:27:23.287 [DEBUG] [Thread-202045] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:27:23.343 [DEBUG] [Thread-202045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:27:23.343 [DEBUG] [Thread-202045] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:27:23.343 [DEBUG] [Thread-202045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:27:23.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:27:23.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:27:23.401 [DEBUG] [Thread-202045] [transport.py] [_log()] userauth is OK
2025-11-25T03:27:23.402 [DEBUG] [Thread-202045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:27:23.402 [DEBUG] [Thread-202045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:27:23.402 [DEBUG] [Thread-202045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:27:23.402 [DEBUG] [Thread-202045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:27:23.421 [INFO] [Thread-202045] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:27:23.421 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:27:23.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:27:24.277 [DEBUG] [Thread-202045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:27:24.277 [DEBUG] [Thread-202045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:27:24.324 [DEBUG] [Thread-202045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:27:24.324 [DEBUG] [Thread-202045] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:27:24.332 [DEBUG] [Thread-202045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:27:24.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:27:24.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:27:24.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:27:24.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:27:24.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:27:24.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:27:24.368 [DEBUG] [Thread-202045] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:27:27.801 [DEBUG] [Thread-202047 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:32.190 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:42.650 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:42.944 [DEBUG] [Thread-202048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:47.237 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:47.250 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:53.102 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:27:54.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:27:54.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:27:54.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-11-25T03:27:55.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 27, 43), 11.39, 45.05, 0.0, 23.59, 11.41, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:27:55.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:27:43
2025-11-25T03:27:55.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:27:55.751 [DEBUG] [Thread-202049] [transport.py] [_log()] starting thread (client mode): 0xd3161ba0
2025-11-25T03:27:55.751 [DEBUG] [Thread-202049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:27:55.756 [DEBUG] [Thread-202049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:27:55.757 [INFO] [Thread-202049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:27:55.761 [DEBUG] [Thread-202049] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:27:55.761 [DEBUG] [Thread-202049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:27:55.761 [DEBUG] [Thread-202049] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:27:55.761 [DEBUG] [Thread-202049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:27:55.761 [DEBUG] [Thread-202049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:27:55.762 [DEBUG] [Thread-202049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:27:55.762 [DEBUG] [Thread-202049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:27:55.762 [DEBUG] [Thread-202049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:27:55.762 [DEBUG] [Thread-202049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:27:55.762 [DEBUG] [Thread-202049] [transport.py] [_log()] client lang: <none>
2025-11-25T03:27:55.762 [DEBUG] [Thread-202049] [transport.py] [_log()] server lang: <none>
2025-11-25T03:27:55.762 [DEBUG] [Thread-202049] [transport.py] [_log()] kex follows: False
2025-11-25T03:27:55.762 [DEBUG] [Thread-202049] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:27:55.763 [DEBUG] [Thread-202049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:27:55.763 [DEBUG] [Thread-202049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:27:55.763 [DEBUG] [Thread-202049] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:27:55.763 [DEBUG] [Thread-202049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:27:55.763 [DEBUG] [Thread-202049] [transport.py] [_log()] Compression: none
2025-11-25T03:27:55.763 [DEBUG] [Thread-202049] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:27:55.799 [DEBUG] [Thread-202049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:27:55.803 [DEBUG] [Thread-202049] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:27:55.804 [DEBUG] [Thread-202049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:27:55.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:27:55.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:27:55.807 [DEBUG] [Thread-202049] [transport.py] [_log()] userauth is OK
2025-11-25T03:27:55.807 [DEBUG] [Thread-202049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:27:55.807 [DEBUG] [Thread-202049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:27:55.807 [DEBUG] [Thread-202049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:27:55.807 [DEBUG] [Thread-202049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:27:55.838 [INFO] [Thread-202049] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:27:55.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:27:56.463 [DEBUG] [Thread-202049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:27:56.463 [DEBUG] [Thread-202049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:27:56.464 [DEBUG] [Thread-202049] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:27:56.504 [DEBUG] [Thread-202049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:27:56.505 [DEBUG] [Thread-202049] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:27:56.508 [DEBUG] [Thread-202049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:27:56.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:27:56.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:27:56.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:27:56.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:27:56.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:27:56.534 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:27:56.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:27:56.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:27:56.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:27:56.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.060861 -999.00  +11.60  16.06     50   +1.50 1 1 1 1 1     0    0 9.08 -42.58 ZNESW 18.0 16.1 118.2 22.4 12.2 -23.9 12.0 -23.7 11.7 -22.4 12.0 -23.2
2025-11-25T03:27:56.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:27:56.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:27:56.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.060861
2025-11-25T03:27:56.542 [DEBUG] [Thread-202049] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:27:56.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:27:56.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:27:56.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:27:56.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:27:56.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:27:56.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:27:43', tmtdew=11.39, humidity=45.05, cloud=0.0, wind=23.59, temperature=11.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:27:43', seeing=0.82, atlas_timestamp='2025-11-25T01:27:38.390', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02725000000000044, -0.05074999999999896, 0.01875000000000071, -0.04349999999999987, 0.027999999999998693, 0.024250000000000327, 0.023999999999999133, -0.039749999999997954, 0.032999999999999474, -0.02800000000000047, -0.010749999999999815, -0.005000000000000782, 0.046499999999999986, 0.07225000000000037, -0.038000000000000256, 0.01699999999999946, 0.043250000000000455, 0.0365000000000002, -0.05950000000000166, -0.014750000000001151, 0.08699999999999797, 0.07924999999999827, 0.017250000000000654, 0.010749999999999815, 0.013999999999999346, 0.03550000000000075, 0.0002500000000011937, 0.03950000000000031, 0.1280000000000001, 0.05900000000000105, 0.07600000000000051, 0.023500000000002075, 0.031749999999998835], zp_timestamp='2025-11-25T01:26:00')
2025-11-25T03:27:56.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:27:56.661 [DEBUG] [Thread-202052] [transport.py] [_log()] starting thread (client mode): 0xd31483d0
2025-11-25T03:27:56.661 [DEBUG] [Thread-202052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:27:56.675 [DEBUG] [Thread-202052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:27:56.676 [INFO] [Thread-202052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] client lang: <none>
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] server lang: <none>
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] kex follows: False
2025-11-25T03:27:56.683 [DEBUG] [Thread-202052] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:27:56.684 [DEBUG] [Thread-202052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:27:56.684 [DEBUG] [Thread-202052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:27:56.684 [DEBUG] [Thread-202052] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:27:56.684 [DEBUG] [Thread-202052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:27:56.684 [DEBUG] [Thread-202052] [transport.py] [_log()] Compression: none
2025-11-25T03:27:56.684 [DEBUG] [Thread-202052] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:27:56.745 [DEBUG] [Thread-202052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:27:56.746 [DEBUG] [Thread-202052] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:27:56.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:27:56.747 [DEBUG] [Thread-202052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:27:56.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:27:56.805 [DEBUG] [Thread-202052] [transport.py] [_log()] userauth is OK
2025-11-25T03:27:56.805 [DEBUG] [Thread-202052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:27:56.805 [DEBUG] [Thread-202052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:27:56.805 [DEBUG] [Thread-202052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:27:56.805 [DEBUG] [Thread-202052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:27:56.830 [INFO] [Thread-202052] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:27:56.830 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:27:56.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:27:57.650 [DEBUG] [Thread-202052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:27:57.650 [DEBUG] [Thread-202052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:27:57.699 [DEBUG] [Thread-202052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:27:57.700 [DEBUG] [Thread-202052] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:27:57.709 [DEBUG] [Thread-202052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:27:57.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:27:57.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-11-25T03:27:57.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-11-25T03:27:57.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:27:57.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:27:57.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:27:57.745 [DEBUG] [Thread-202052] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:27:58.051 [DEBUG] [Thread-202054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:03.585 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:09.791 [DEBUG] [Thread-202055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:13.207 [DEBUG] [Thread-202056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:14.024 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:24.463 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:27.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:28:27.781 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:28:27.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-11-25T03:28:28.286 [DEBUG] [Thread-202057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:28.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 28, 16), 11.38, 45.1, 0.0, 22.99, 11.44, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:28:28.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:28:16
2025-11-25T03:28:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:28:29.281 [DEBUG] [Thread-202058] [transport.py] [_log()] starting thread (client mode): 0xd31484c0
2025-11-25T03:28:29.282 [DEBUG] [Thread-202058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:28:29.294 [DEBUG] [Thread-202058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:28:29.294 [INFO] [Thread-202058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] client lang: <none>
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] server lang: <none>
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] kex follows: False
2025-11-25T03:28:29.299 [DEBUG] [Thread-202058] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:28:29.300 [DEBUG] [Thread-202058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:28:29.300 [DEBUG] [Thread-202058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:28:29.300 [DEBUG] [Thread-202058] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:28:29.300 [DEBUG] [Thread-202058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:28:29.300 [DEBUG] [Thread-202058] [transport.py] [_log()] Compression: none
2025-11-25T03:28:29.300 [DEBUG] [Thread-202058] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:28:29.334 [DEBUG] [Thread-202058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:28:29.340 [DEBUG] [Thread-202058] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:28:29.341 [DEBUG] [Thread-202058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:28:29.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:28:29.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:28:29.346 [DEBUG] [Thread-202058] [transport.py] [_log()] userauth is OK
2025-11-25T03:28:29.346 [DEBUG] [Thread-202058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:28:29.346 [DEBUG] [Thread-202058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:28:29.346 [DEBUG] [Thread-202058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:28:29.346 [DEBUG] [Thread-202058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:28:29.374 [INFO] [Thread-202058] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:28:29.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:28:29.961 [DEBUG] [Thread-202058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:28:29.969 [DEBUG] [Thread-202058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:28:29.970 [DEBUG] [Thread-202058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:28:30.002 [DEBUG] [Thread-202058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:28:30.002 [DEBUG] [Thread-202058] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:28:30.005 [DEBUG] [Thread-202058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:28:30.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:28:30.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:28:30.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:28:30.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:28:30.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:28:30.018 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:28:30.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:28:30.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:28:30.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:28:30.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.061209 -999.00  +11.60  18.31     49   +1.50 1 1 1 1 1     0    0 9.07 -39.82 ZNESW 16.6 18.3 123.4 22.9 12.2 -23.9 12.0 -23.6 11.7 -22.5 12.1 -23.2
2025-11-25T03:28:30.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:28:30.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:28:30.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.061209
2025-11-25T03:28:30.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:28:30.036 [DEBUG] [Thread-202058] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:28:30.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:28:30.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:28:30.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:28:30.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:28:30.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:28:16', tmtdew=11.38, humidity=45.1, cloud=0.0, wind=22.99, temperature=11.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:28:16', seeing=0.92, atlas_timestamp='2025-11-25T01:28:08.458', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02725000000000044, -0.05074999999999896, 0.01875000000000071, -0.04349999999999987, 0.027999999999998693, 0.024250000000000327, 0.023999999999999133, -0.039749999999997954, 0.032999999999999474, -0.02800000000000047, -0.010749999999999815, -0.005000000000000782, 0.046499999999999986, 0.07225000000000037, -0.038000000000000256, 0.01699999999999946, 0.043250000000000455, 0.0365000000000002, -0.05950000000000166, -0.014750000000001151, 0.08699999999999797, 0.07924999999999827, 0.017250000000000654, 0.010749999999999815, 0.013999999999999346, 0.03550000000000075, 0.0002500000000011937, 0.03950000000000031, 0.1280000000000001, 0.05900000000000105, 0.07600000000000051, 0.023500000000002075, 0.031749999999998835], zp_timestamp='2025-11-25T01:26:00')
2025-11-25T03:28:30.111 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:28:30.123 [DEBUG] [Thread-202061] [transport.py] [_log()] starting thread (client mode): 0xd3161ed0
2025-11-25T03:28:30.123 [DEBUG] [Thread-202061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:28:30.139 [DEBUG] [Thread-202061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:28:30.139 [INFO] [Thread-202061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:28:30.147 [DEBUG] [Thread-202061] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:28:30.147 [DEBUG] [Thread-202061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:28:30.147 [DEBUG] [Thread-202061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:28:30.147 [DEBUG] [Thread-202061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:28:30.147 [DEBUG] [Thread-202061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:28:30.147 [DEBUG] [Thread-202061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:28:30.147 [DEBUG] [Thread-202061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:28:30.147 [DEBUG] [Thread-202061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:28:30.147 [DEBUG] [Thread-202061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:28:30.148 [DEBUG] [Thread-202061] [transport.py] [_log()] client lang: <none>
2025-11-25T03:28:30.148 [DEBUG] [Thread-202061] [transport.py] [_log()] server lang: <none>
2025-11-25T03:28:30.148 [DEBUG] [Thread-202061] [transport.py] [_log()] kex follows: False
2025-11-25T03:28:30.148 [DEBUG] [Thread-202061] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:28:30.148 [DEBUG] [Thread-202061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:28:30.148 [DEBUG] [Thread-202061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:28:30.148 [DEBUG] [Thread-202061] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:28:30.148 [DEBUG] [Thread-202061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:28:30.148 [DEBUG] [Thread-202061] [transport.py] [_log()] Compression: none
2025-11-25T03:28:30.148 [DEBUG] [Thread-202061] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:28:30.204 [DEBUG] [Thread-202061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:28:30.205 [DEBUG] [Thread-202061] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:28:30.205 [DEBUG] [Thread-202061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:28:30.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:28:30.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:28:30.260 [DEBUG] [Thread-202061] [transport.py] [_log()] userauth is OK
2025-11-25T03:28:30.260 [DEBUG] [Thread-202061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:28:30.260 [DEBUG] [Thread-202061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:28:30.260 [DEBUG] [Thread-202061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:28:30.260 [DEBUG] [Thread-202061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:28:30.274 [INFO] [Thread-202061] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:28:30.274 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:28:30.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:28:31.123 [DEBUG] [Thread-202061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:28:31.124 [DEBUG] [Thread-202061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:28:31.171 [DEBUG] [Thread-202061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:28:31.171 [DEBUG] [Thread-202061] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:28:31.179 [DEBUG] [Thread-202061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:28:31.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:28:31.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-11-25T03:28:31.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-11-25T03:28:31.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:28:31.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:28:31.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:28:31.220 [DEBUG] [Thread-202061] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:28:34.894 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:43.355 [DEBUG] [Thread-202063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:45.351 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:45.726 [DEBUG] [Thread-195937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:47.460 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:47.462 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:55.744 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:28:58.467 [DEBUG] [Thread-202064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:01.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:29:01.246 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:29:01.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-11-25T03:29:02.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 28, 49), 11.41, 44.98, 0.0, 19.41, 11.41, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:29:02.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:28:49
2025-11-25T03:29:02.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:29:03.013 [DEBUG] [Thread-202065] [transport.py] [_log()] starting thread (client mode): 0xd3163970
2025-11-25T03:29:03.014 [DEBUG] [Thread-202065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:29:03.024 [DEBUG] [Thread-202065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:29:03.024 [INFO] [Thread-202065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:29:03.037 [DEBUG] [Thread-202065] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:29:03.037 [DEBUG] [Thread-202065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:29:03.038 [DEBUG] [Thread-202065] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:29:03.038 [DEBUG] [Thread-202065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:29:03.038 [DEBUG] [Thread-202065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:29:03.038 [DEBUG] [Thread-202065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:29:03.038 [DEBUG] [Thread-202065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:29:03.038 [DEBUG] [Thread-202065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:29:03.038 [DEBUG] [Thread-202065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:29:03.038 [DEBUG] [Thread-202065] [transport.py] [_log()] client lang: <none>
2025-11-25T03:29:03.039 [DEBUG] [Thread-202065] [transport.py] [_log()] server lang: <none>
2025-11-25T03:29:03.039 [DEBUG] [Thread-202065] [transport.py] [_log()] kex follows: False
2025-11-25T03:29:03.039 [DEBUG] [Thread-202065] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:29:03.039 [DEBUG] [Thread-202065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:29:03.039 [DEBUG] [Thread-202065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:29:03.040 [DEBUG] [Thread-202065] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:29:03.040 [DEBUG] [Thread-202065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:29:03.040 [DEBUG] [Thread-202065] [transport.py] [_log()] Compression: none
2025-11-25T03:29:03.040 [DEBUG] [Thread-202065] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:29:03.079 [DEBUG] [Thread-202065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:29:03.083 [DEBUG] [Thread-202065] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:29:03.085 [DEBUG] [Thread-202065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:29:03.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:29:03.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:29:03.089 [DEBUG] [Thread-202065] [transport.py] [_log()] userauth is OK
2025-11-25T03:29:03.090 [DEBUG] [Thread-202065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:29:03.090 [DEBUG] [Thread-202065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:29:03.090 [DEBUG] [Thread-202065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:29:03.090 [DEBUG] [Thread-202065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:29:03.116 [INFO] [Thread-202065] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:29:03.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:29:03.855 [DEBUG] [Thread-202065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:29:03.855 [DEBUG] [Thread-202065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:29:03.858 [DEBUG] [Thread-202065] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:29:03.895 [DEBUG] [Thread-202065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:29:03.896 [DEBUG] [Thread-202065] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:29:03.899 [DEBUG] [Thread-202065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:29:03.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:29:03.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:29:03.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:29:03.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:29:03.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:29:03.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:29:03.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:29:03.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:29:03.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:29:03.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.061556 -999.00  +11.60  17.99     50   +1.50 1 1 1 1 1     0    0 9.28 -41.16 ZNESW 14.8 18.0 124.2 22.1 12.2 -24.1 12.0 -23.6 11.8 -22.4 12.0 -23.2
2025-11-25T03:29:03.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:29:03.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:29:03.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.061556
2025-11-25T03:29:03.935 [DEBUG] [Thread-202065] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:29:03.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:29:03.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:29:03.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:29:03.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:29:03.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:29:03.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:28:49', tmtdew=11.41, humidity=44.98, cloud=0.0, wind=19.41, temperature=11.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:28:49', seeing=0.89, atlas_timestamp='2025-11-25T01:28:38.438', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02725000000000044, -0.05074999999999896, 0.01875000000000071, -0.04349999999999987, 0.027999999999998693, 0.024250000000000327, 0.023999999999999133, -0.039749999999997954, 0.032999999999999474, -0.02800000000000047, -0.010749999999999815, -0.005000000000000782, 0.046499999999999986, 0.07225000000000037, -0.038000000000000256, 0.01699999999999946, 0.043250000000000455, 0.0365000000000002, -0.05950000000000166, -0.014750000000001151, 0.08699999999999797, 0.07924999999999827, 0.017250000000000654, 0.010749999999999815, 0.013999999999999346, 0.03550000000000075, 0.0002500000000011937, 0.03950000000000031, 0.1280000000000001, 0.05900000000000105, 0.07600000000000051, 0.023500000000002075, 0.031749999999998835], zp_timestamp='2025-11-25T01:26:00')
2025-11-25T03:29:04.041 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:29:04.053 [DEBUG] [Thread-202067] [transport.py] [_log()] starting thread (client mode): 0xd3162c80
2025-11-25T03:29:04.053 [DEBUG] [Thread-202067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:29:04.067 [DEBUG] [Thread-202067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:29:04.068 [INFO] [Thread-202067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:29:04.075 [DEBUG] [Thread-202067] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:29:04.075 [DEBUG] [Thread-202067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:29:04.075 [DEBUG] [Thread-202067] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:29:04.075 [DEBUG] [Thread-202067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:29:04.075 [DEBUG] [Thread-202067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:29:04.075 [DEBUG] [Thread-202067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] client lang: <none>
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] server lang: <none>
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] kex follows: False
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] Compression: none
2025-11-25T03:29:04.076 [DEBUG] [Thread-202067] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:29:04.132 [DEBUG] [Thread-202067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:29:04.132 [DEBUG] [Thread-202067] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:29:04.133 [DEBUG] [Thread-202067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:29:04.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:29:04.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:29:04.188 [DEBUG] [Thread-202067] [transport.py] [_log()] userauth is OK
2025-11-25T03:29:04.188 [DEBUG] [Thread-202067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:29:04.188 [DEBUG] [Thread-202067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:29:04.188 [DEBUG] [Thread-202067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:29:04.188 [DEBUG] [Thread-202067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:29:04.202 [INFO] [Thread-202067] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:29:04.202 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:29:04.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:29:05.064 [DEBUG] [Thread-202067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:29:05.064 [DEBUG] [Thread-202067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:29:05.112 [DEBUG] [Thread-202067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:29:05.112 [DEBUG] [Thread-202067] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:29:05.120 [DEBUG] [Thread-202067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:29:05.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:29:05.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-11-25T03:29:05.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-11-25T03:29:05.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:29:05.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:29:05.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:29:05.162 [DEBUG] [Thread-202067] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:29:06.205 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:10.117 [DEBUG] [Thread-202069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:13.541 [DEBUG] [Thread-202070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:16.621 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:27.128 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:28.710 [DEBUG] [Thread-202071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:35.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-11-25T03:29:35.185 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-11-25T03:29:35.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-11-25T03:29:36.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 11, 25, 3, 29, 22), 11.37, 45.12, 0.0, 20.36, 11.42, 0, 0, 0, 2, 0, 0),)
2025-11-25T03:29:36.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-11-25 03:29:22
2025-11-25T03:29:36.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-11-25T03:29:36.579 [DEBUG] [Thread-202072] [transport.py] [_log()] starting thread (client mode): 0xd3162980
2025-11-25T03:29:36.580 [DEBUG] [Thread-202072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:29:36.593 [DEBUG] [Thread-202072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-11-25T03:29:36.593 [INFO] [Thread-202072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] client lang: <none>
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] server lang: <none>
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] kex follows: False
2025-11-25T03:29:36.598 [DEBUG] [Thread-202072] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:29:36.599 [DEBUG] [Thread-202072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:29:36.599 [DEBUG] [Thread-202072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:29:36.599 [DEBUG] [Thread-202072] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:29:36.600 [DEBUG] [Thread-202072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:29:36.600 [DEBUG] [Thread-202072] [transport.py] [_log()] Compression: none
2025-11-25T03:29:36.600 [DEBUG] [Thread-202072] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:29:36.632 [DEBUG] [Thread-202072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:29:36.635 [DEBUG] [Thread-202072] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:29:36.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-11-25T03:29:36.637 [DEBUG] [Thread-202072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-11-25T03:29:36.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:29:36.640 [DEBUG] [Thread-202072] [transport.py] [_log()] userauth is OK
2025-11-25T03:29:36.640 [DEBUG] [Thread-202072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:29:36.640 [DEBUG] [Thread-202072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:29:36.640 [DEBUG] [Thread-202072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-11-25T03:29:36.640 [DEBUG] [Thread-202072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:29:36.659 [INFO] [Thread-202072] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:29:36.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:29:37.286 [DEBUG] [Thread-202072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:29:37.286 [DEBUG] [Thread-202072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:29:37.287 [DEBUG] [Thread-202072] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-11-25T03:29:37.327 [DEBUG] [Thread-202072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:29:37.327 [DEBUG] [Thread-202072] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:29:37.330 [DEBUG] [Thread-202072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:29:37.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:29:37.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-11-25T03:29:37.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-11-25T03:29:37.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-11-25T03:29:37.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:29:37.348 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-11-25T03:29:37.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:29:37.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:29:37.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-11-25T03:29:37.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 61004.061556 -999.00  +11.60  17.99     50   +1.50 1 1 1 1 1     0    0 9.28 -41.16 ZNESW 14.8 18.0 124.2 22.1 12.2 -24.1 12.0 -23.6 11.8 -22.4 12.0 -23.2
2025-11-25T03:29:37.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-11-25T03:29:37.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-11-25T03:29:37.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 61004.061556
2025-11-25T03:29:37.355 [DEBUG] [Thread-202072] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:29:37.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-11-25T03:29:37.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-11-25T03:29:37.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-11-25T03:29:37.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-11-25T03:29:37.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-11-25T03:29:37.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-11-25T03:29:22', tmtdew=11.37, humidity=45.12, cloud=0.0, wind=20.36, temperature=11.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-11-25T03:29:22', seeing=0.89, atlas_timestamp='2025-11-25T01:28:38.438', atlas_cloud=1, atlas_rain=1, zp_data=[-0.02725000000000044, -0.05074999999999896, 0.01875000000000071, -0.04349999999999987, 0.027999999999998693, 0.024250000000000327, 0.023999999999999133, -0.039749999999997954, 0.032999999999999474, -0.02800000000000047, -0.010749999999999815, -0.005000000000000782, 0.046499999999999986, 0.07225000000000037, -0.038000000000000256, 0.01699999999999946, 0.043250000000000455, 0.0365000000000002, -0.05950000000000166, -0.014750000000001151, 0.08699999999999797, 0.07924999999999827, 0.017250000000000654, 0.010749999999999815, 0.013999999999999346, 0.03550000000000075, 0.0002500000000011937, 0.03950000000000031, 0.1280000000000001, 0.05900000000000105, 0.07600000000000051, 0.023500000000002075, 0.031749999999998835], zp_timestamp='2025-11-25T01:26:00')
2025-11-25T03:29:37.447 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-11-25T03:29:37.460 [DEBUG] [Thread-202075] [transport.py] [_log()] starting thread (client mode): 0xd31622f0
2025-11-25T03:29:37.460 [DEBUG] [Thread-202075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-11-25T03:29:37.474 [DEBUG] [Thread-202075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-11-25T03:29:37.474 [INFO] [Thread-202075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] === Key exchange possibilities ===
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] client lang: <none>
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] server lang: <none>
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] kex follows: False
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] === Key exchange agreements ===
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-11-25T03:29:37.481 [DEBUG] [Thread-202075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-11-25T03:29:37.482 [DEBUG] [Thread-202075] [transport.py] [_log()] Cipher: aes128-ctr
2025-11-25T03:29:37.482 [DEBUG] [Thread-202075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-11-25T03:29:37.482 [DEBUG] [Thread-202075] [transport.py] [_log()] Compression: none
2025-11-25T03:29:37.482 [DEBUG] [Thread-202075] [transport.py] [_log()] === End of kex handshake ===
2025-11-25T03:29:37.545 [DEBUG] [Thread-202075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-11-25T03:29:37.546 [DEBUG] [Thread-202075] [transport.py] [_log()] Switch to new keys ...
2025-11-25T03:29:37.546 [DEBUG] [Thread-202075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-11-25T03:29:37.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-11-25T03:29:37.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-11-25T03:29:37.575 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:37.604 [DEBUG] [Thread-202075] [transport.py] [_log()] userauth is OK
2025-11-25T03:29:37.604 [DEBUG] [Thread-202075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-11-25T03:29:37.605 [DEBUG] [Thread-202075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-11-25T03:29:37.605 [DEBUG] [Thread-202075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-11-25T03:29:37.605 [DEBUG] [Thread-202075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-11-25T03:29:37.622 [INFO] [Thread-202075] [transport.py] [_log()] Authentication (publickey) successful!
2025-11-25T03:29:37.622 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-11-25T03:29:37.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-11-25T03:29:38.451 [DEBUG] [Thread-202075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-11-25T03:29:38.452 [DEBUG] [Thread-202075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-11-25T03:29:38.499 [DEBUG] [Thread-202075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-11-25T03:29:38.499 [DEBUG] [Thread-202075] [transport.py] [_log()] Secsh channel 0 opened.
2025-11-25T03:29:38.507 [DEBUG] [Thread-202075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-11-25T03:29:38.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-11-25T03:29:38.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-11-25T03:29:38.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-11-25T03:29:38.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-11-25T03:29:38.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-11-25T03:29:38.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-11-25T03:29:38.542 [DEBUG] [Thread-202075] [transport.py] [_log()] EOF in transport thread
2025-11-25T03:29:43.774 [DEBUG] [Thread-202077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:47.674 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:47.676 [DEBUG] [Thread-195095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:47.999 [DEBUG] [Thread-174713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-11-25T03:29:58.459 [DEBUG] [Thread-174713 (handle)] [driver.py] [
[file cut: first 33554432 bytes kept]
[document cut: first 32640975 of 33554432 characters kept]
